Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.12.2019

Просмотров: 3188

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

скобках

 

после

 

имени

 

массива

 

номера

  (

индекса

элемента

Массив

 

перед

 

использованием

 

необходимо

 

объявить

 

с

 

помощью

 

оператора

 

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

так

 

как

 

между

 

ними

 

дол

-

жен

 

помещаться

 

пустой

 

оператор

 

PRINT

переводящий

 

курсор

 

в

 

начало

 

текущей

 

строки

.

 

FOR i=0 TO 2 

FOR j=0 TO 3 

PRINT A(i,j), 

NEXT j 

PRINT 


background image

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-

ю

 

за

-

пись

необходимо

 

прочитать

 

все

 

предыдущие

Таким

 

образом

последова

-

тельные

 

файлы

 

удобны

 

при

 

обработке

 

из

 

программы

только

 

если

 

обраба

-

тываются

 

все

 

или

 

почти

 

все

 

записи

 

файла

Общая

 

схема

 

работы

 

с

 

файлом

 

следующая


background image

 

файл

 

открывается

 (

оператором

 

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$;] 

список

 

выражений

[;] 

номер

 

файла

 

 

произвольное

 

число

рассматриваемое

 

как

 

номер

 

файла

список

 

выражений

 

 

последовательность

 

разделенных

 

запятыми

 


background image

или

 

точками

 

с

 

запятой

 

числовых

 

или

 

символьных

 

выражений

значения

 

ко

-

торых

 

выводятся

Оператор

 

PRINT #

 

выводит

 

запись

 

в

 

последовательный

 

файл

 

по

-

добно

 

тому

как

 

это

 

делает

 

оператор

 

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 

PRINT 

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 

PRINT #2  

NEXT i  

CLOSE #1, #2 


background image

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 

PRINT 

NEXT i 

2.11.6.

 

Добавить

 

в

 

программу

 

строки

 

для

 

перестановки

 

столб

-

цов

 

матрицы

 

A(i,j)

 

по

 

возрастанию

 

значений

 

первых

 

элементов

 

её

 

столбцов