Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2019
Просмотров: 3188
Скачиваний: 1
скобках
после
имени
массива
номера
(
индекса
)
элемента
.
Массив
перед
использованием
необходимо
объявить
с
помощью
оператора
DIM
.
После
объявления
все
элементы
числового
массива
принимают
значение
,
равное
0,
а
символьного
массива
−
значение
пустой
строки
(“ ”).
При
объявлении
массива
указывается
номер
(
индекс
)
его
последнего
элемента
или
диапазон
значений
индекса
.
Это
число
может
быть
заранее
неизвестно
.
Тогда
оно
задается
в
виде
переменной
или
выражения
целого
типа
.
Важно
только
чтобы
к
моменту
выполнения
оператора
объявления
массива
,
значение
этой
переменной
или
выражения
было
известно
.
Если
указывается
номер
последнего
элемента
,
то
номер
первого
или
принимается
по
умолчанию
равным
0,
или
устанавливается
предшествующим
объявлению
оператором
OPTION BASE
.
Например
,
если
бы
оператору
DIM a(42)
предшествовал
оператор
OPTION BASE 1
,
то
объявленный
массив
содержал
бы
элемен
-
ты
от
a(1)
до
a(42)
.
У
массива
,
заданного
в
виде
диапазона
DIM a(22:44)
,
имеются
элементы
от
a(22)
до
a(44)
.
Массивы
могут
быть
двумерными
,
т
.
е
.
представлять
матрицу
.
В
этом
случае
в
операторе
объявления
определяется
количество
элементов
по
ка
-
ждой
размерности
.
Например
,
DIM a(5,6)
определяет
матрицу
,
содер
-
жащую
пять
строк
и
шесть
столбцов
.
Для
работы
с
массивами
удобно
использовать
циклические
програм
-
мы
.
Например
,
программа
,
присваивающая
элементам
двумерной
матрицы
A(2,3) (
три
строки
и
четыре
столбца
)
значения
из
оператора
DATA
,
имеет
вид
:
DATA 1,2,3,4,5,6,7,8,9,10,11,12
DIM a(2,3)
FOR i=0 TO 2
FOR j=0 TO 3
READ A(i,j)
NEXT j, i
Для
вывода
на
экран
полученной
матрицы
A(i,j
) (
в
виде
матрицы
),
необходимо
использовать
два
оператора
NEXT
,
так
как
между
ними
дол
-
жен
помещаться
пустой
оператор
,
переводящий
курсор
в
начало
текущей
строки
.
FOR i=0 TO 2
FOR j=0 TO 3
PRINT A(i,j),
NEXT j
NEXT i
REM
Результат
выполнения
программы
:
REM
1
2
3
REM
4
5
6
REM
7
8
9
REM
10
11
12
2.10.
Организация
работы
с
дисковой
памятью
в
TURBO BASIC
Для
организации
работы
с
дисковой
памятью
используется
понятие
файла
.
Файл
−
это
набор
данных
на
диске
,
который
можно
создать
,
к
кото
-
рому
можно
осуществить
доступ
для
чтения
или
для
записи
данных
,
и
ко
-
торый
,
наконец
,
можно
уничтожить
.
Всякий
файл
должен
иметь
имя
,
кото
-
рое
состоит
из
двух
частей
,
разделенных
точкой
:
имя
файла
.
расширение
.
Имя
файла
−
это
последовательность
симво
-
лов
,
которая
содержит
до
8
произвольных
символов
(
букв
,
цифр
,
знаков
(, ), {, }, @, #, $,
%
, ^, &, !, -, _, /, ~
).
Расширение
содержит
до
3
произвольных
символов
.
В
имени
и
в
расшире
-
нии
файла
не
могут
использоваться
пробелы
.
Для
однозначной
идентифи
-
кации
файлов
необходимо
полностью
указать
спецификацию
файла
−
имя
диска
,
путь
и
имя
файла
.
Если
файл
находится
на
диске
и
в
каталоге
по
умолчанию
,
то
достаточно
указать
лишь
его
имя
.
В
TB
различают
последовательные
,
прямые
и
двоичные
файлы
.
Пря
-
мые
файлы
представляют
собой
последовательность
записей
,
к
которым
можно
обращаться
в
произвольном
порядке
.
Двоичные
файлы
−
это
просто
последовательность
байтов
,
в
которых
хранится
информация
.
В
данной
ра
-
боте
рассматриваются
лишь
последовательные
файлы
,
которые
представ
-
ляют
собой
последовательность
записей
(
строк
символов
),
разделенных
между
собой
символами
“
возврата
каретки
”
или
“
перевода
строки
” (RC /
LF).
Каждая
запись
формируется
операцией
вывода
в
файл
.
Преимущество
последовательных
файлов
−
это
возможность
работы
с
ними
с
помощью
обычных
текстовых
редакторов
.
Основным
ограничением
при
работе
с
ни
-
ми
является
только
лишь
последовательный
доступ
к
данным
.
При
откры
-
тии
файла
можно
прочитать
первую
запись
,
затем
вторую
и
т
.
д
.
При
этом
,
после
чтения
первой
записи
повторить
эту
операцию
уже
нельзя
,
не
закрыв
и
не
открыв
заново
файл
,
а
для
того
чтобы
прочитать
,
скажем
10000-
ю
за
-
пись
,
необходимо
прочитать
все
предыдущие
.
Таким
образом
,
последова
-
тельные
файлы
удобны
при
обработке
из
программы
,
только
если
обраба
-
тываются
все
или
почти
все
записи
файла
.
Общая
схема
работы
с
файлом
следующая
:
−
файл
открывается
(
оператором
OPEN
)
с
указанием
режима
работы
с
ним
(
INPUT
−
для
ввода
,
APPEND
−
для
вывода
путем
добавления
,
OUTPUT
−
для
вывода
в
начало
с
уничтожением
содержимого
файла
,
если
он
уже
существовал
);
−
осуществляется
последовательный
доступ
к
файлу
:
если
этот
файл
для
чтения
,
то
используется
оператор
INPUT #
,
если
же
этот
файл
для
вывода
,
то
оператор
PRINT #
или
PRINT USING #
;
−
файл
закрывается
с
помощью
оператора
CLOSE
.
Файл
может
быть
несколько
раз
открыт
для
чтения
,
что
позволяет
обращаться
к
различным
местам
файла
.
Оператор
OPEN
для
открытия
последовательных
файлов
имеет
сле
-
дующий
формат
:
OPEN “
спецификация
файла
” FOR
режим
AS #
номер
файла
режим
−
это
одно
из
ключевых
слов
INPUT
,
OUTPUT
или
APPEND
;
номер
файла
−
произвольное
число
,
рассматриваемое
как
номер
файла
.
Оператор
CLOSE
для
закрытия
последовательных
файлов
имеет
следующий
формат
:
CLOSE [ [ #]
номер
файла
[, [#]
номер
файла
]]
номер
файла
−
номер
файла
,
объявленный
в
операторе
OPEN
.
Оператор
закрывает
файл
,
разрывая
связь
между
файлом
на
диске
и
его
номером
.
Если
аргумент
в
операторе
CLOSE
отсутствует
,
то
закрыва
-
ются
все
открытые
файлы
.
Оператор
INPUT #
для
чтения
записи
из
последовательного
файла
имеет
следующий
формат
:
INPUT #
номер
файла
,
список
переменных
номер
файла
−
произвольное
число
,
рассматриваемое
как
номер
файла
;
список
переменных
−
последовательность
разделенных
запя
-
тыми
числовых
или
символьных
переменных
.
Данные
в
читаемой
записи
должны
соответствовать
типам
переменных
.
Оператор
PRINT #
для
вывода
записи
в
последовательный
файла
имеет
следующий
формат
:
PRINT #
номер
файла
, [USING v$;]
список
выражений
[;]
номер
файла
−
произвольное
число
,
рассматриваемое
как
номер
файла
;
список
выражений
−
последовательность
разделенных
запятыми
или
точками
с
запятой
числовых
или
символьных
выражений
,
значения
ко
-
торых
выводятся
.
Оператор
PRINT #
выводит
запись
в
последовательный
файл
по
-
добно
тому
,
как
это
делает
оператор
при
выводе
на
экран
.
Конст
-
рукция
USING
позволяет
управлять
форматом
выводимых
значений
.
2.11.
Примеры
программ
обработки
массивов
2.11.1.
Набрать
программу
для
формирования
и
вывода
на
экран
матрицы
размерности
9
на
9,
значения
элементов
которой
взяты
из
файла
DANNIE.DAT
,
находящегося
на
диске
D
в
каталоге
TBAS
,
начиная
с
10
за
-
писи
.
OPTION BASE 1 : DIM a(9,9)
OPEN “D:\TBAS\DANNIE.DAT” FOR INPUT AS #1
FOR j=0 TO 9
INPUT #1, i
NEXT j
FOR i=0 TO 9
FOR j=0 TO 9
INPUT #1, A(i, j )
PRINT USING “####.#”;A(i, j);
NEXT j
NEXT i
2.11.2.
Добавить
в
первую
программу
строки
,
реализующие
ал
-
горитм
преобразования
матрицы
A(i, j)
в
матрицу
B(i, j)
,
путем
за
-
мены
строк
и
столбцов
местами
.
Вывести
в
файл
с
именем
REZULT.DAT
в
текущем
каталоге
значения
элементов
преобразованной
матрицы
.
DIM B(9,9) : OPEN “REZULT.DAT” FOR OUTPUT AS #2
FOR i=1 TO 9
FOR j=1 TO 9
B(i, j)=A(j, i)
PRINT #2, USING “####.#”; B(i, j);
NEXT
j
PRINT #2
NEXT i
CLOSE #1, #2
2.11.3.
Дописать
в
программу
строки
для
определения
и
вывода
на
экран
монитора
суммы
элементов
матрицы
A(i, j)
по
строкам
:
FOR i=1 TO 9
s=0
FOR j=1 TO 9
S=S+A(i, j)
NEXT j
PRINT “S=“;
PRINT USING “####.#”; S
NEXT i
2.11.4.
Самостоятельно
добавить
в
программу
строки
для
вы
-
числения
и
вывода
на
экран
произведения
элементов
матрицы
B(i,j)
по
столбцам
.
2.11.5.
Дописать
в
программу
строки
для
перестановки
строк
матрицы
B(i,j)
по
убыванию
значений
первых
элементов
её
строк
.
Вы
-
вести
на
экран
полученную
матрицу
:
FOR i=1 TO 9
MAX=B(i,1)
‘
Нахождение
наибольшего
первого
элемента
в
строках
‘
матрицы
и
номера
этой
строки
imax
FOR k=i TO 9
IF B(k,1)>=MAX THEN MAX=B(k,1)
imax=k
NEXT k
FOR j=1 TO 9
‘
Вывод
на
экран
текущей
строки
imax
PRINT USING “####.#”;B(imax,j);
‘
Исключение
этой
строки
из
дальнейшего
анализа
SWAP B(imax,j),B(i,j)
NEXT j
NEXT i
2.11.6.
Добавить
в
программу
строки
для
перестановки
столб
-
цов
матрицы
A(i,j)
по
возрастанию
значений
первых
элементов
её
столбцов
.