Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf

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

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

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

Добавлен: 02.12.2019

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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)

по

возрастанию

значений

первых

элементов

её

столбцов