Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_лекции_Саладаев.doc
Скачиваний:
55
Добавлен:
03.05.2015
Размер:
15.75 Mб
Скачать

10.7.Массивы в qbasic

 

Под массивом понимают объединение переменных одного типа в единую структуру. Обращение к отдельным элементам в массиве осуществляется по индексу. Допустим, в программе необходимо 20 переменных для запоминания стоимостей каких-то товаров artprl,..artpr20. Переменные можно объявитьследующим образом:

 

Dim artpi1!, artpr2!,......artpr20!

 

Ввод данныхвыглядит так: INPUT "Artpri ",artpr1! INPUT "Artpr 20 ",anpr20!

Перечень подобных примеров можно продолжить (вывод наименований товаров, суммирование цен, стирание старых цен и т.п.). Значительно удобнее в подобных случаях вместо 20 отдельных полей данных использовать массив из 20 элементов и отдельный элемент идентифицировать с помощью числового индекса. Причем индекс может изменятся, например, как переменная цикла. Массив объявляется командой DIM:DIM [SHARED] Переменная [Размерность]

В отличие от объявления простых переменных появляется новая спецификация — размерность. В ней указывается максимальное значение индекса массива.

Пример: DIM artlkel$(1 T0 20) DIM prels%(5 TO 10) DIM alter%(18 T0 65) '20 строковых элементов 1...20 '6 Integer-элементов 5...10 '48 Integer-элементов 18...65 В программе для выбора элемента из массива используется индекс.

Пример: PRINT preis%(5) 'Выбор элемента массива с индексом 5

При программировании вышеописанного примера отчетливо видны преимущества применения массивов.  

Пример: 'Упражнение с использованием массива DIM artpr!(1 TO 20) 'массив цен DIM 1% 'индекс-переменная CLS 'Ввод цен для 20 наименований товаров FOR i%-1 T0 20 PRINT "Ввести стоимость "; 1%; "-го товара"; 'Ввод в элемемент массива с индексом 1% INPUT "",artpr(l%) NEXT I % 'Вывод 20 наименований CLS 'Вывод в строку 'суммы, количества, среднего значения, Max, Min

До сих пор мы рассматривали одномерные массивы. Но в QBASIC массив может иметь несколько индексов. Например, использование второго индекса позволяет обрабатывать двумерные таблицы. Трехмерный массив можно представить как куб. Можно описать массивы с четырьмя, пятью и более индексами. Максимально допустимое число индексов для одного массива — 255.

Пример: 'Использование трехмерных массивов DIM zahl%(1 TO 10, 4 ТО 16, 6 ТО 30) zahl%(1,5,23)=13 PRINTzahl%(1,523)

10.8.Функции и процедуры, определенные пользователем

 

1. Собственные функции

В предшествующих главах Вы познакомились с некоторыми встроенными функциями QBASIC (например, MID$ или SQR). Теперь рассмотрим составление собственных функций.

Вернемся к математической функции INT. INT — имя функции. Этим именем определяются некоторые программные действия, невидимые программисту, и которые инициализируются автоматически с появлением в программе имени функции. Иначе говоря, функцию можно понимать как группу операторов в программе, объединенных под именем функции. С помощью заключенного в круглые скобки аргумента (сравни INT (3.34)) в подпрограмму, инициируемую именем функции, передаются конкретные данные. Над этими данными производятся некоторые преобразования, и результат, как правило, возвращается в основную программу.

Чтобы вызвать из программы собственную функцию, нужно указать ее имя. Последний символ имени функции определяет тип возвращаемого значения.

Пример: STRICH$()-Возвращаемое значение - строка RUNDEN%()-Возвращаемое значение - число типa INTEGER WURZEL! ()-Возвращаемое значение — число типа SINGLE В QBASIC пользовательские функции объявляются при вводе ключевого слова FUNCTION и следующего за ним имени функции. В этом случае редактор автоматически генерирует новое программное окно, в котором нет ничего, кроме операторов, ограничивающих тело функции:FUNCTION Имя_функции END FUNCTION В пространство между ограничивающими ключевыми словами вносят операции QBASIC, обеспечивающие выполнение необходимых действий. Чтобы вернуться в главную программу, надо нажать клавишу F2. На экране появляется поле списков со всеми BIBL.BAS и сохраните его под новым именем ("Save as..."). Если Вы будете составлять свою программу в этом файле, из нее можно вызывать все процедуры и функции файла BIBL.BAS.

Покажем созданиефункции извлечения корня.Функция должна извлекать из числа корень любой степени. Начнем с главной программы:

'Главная программа для функции извлечения корня DIM argument!, wurz% CLS DO INPUT "Ввести аргумент: ", argument! INPUT "Ввести степень корня: ", wurz% LOOP WHILE argument! < 0 PRINT PRINT wurzel!(argument!, wurz%) 'Конец главной программыСоставим шаблон функции: FUNCTION wurzel! (argument!, wurz%) END FUNCTION

Извлечение корня из аргумента можно представить функцией возведения аргумента в степень, обратную степени корня. Функция извлечения корня любой степени имеет следующий вид:

FUNCTION wurzel! (argument!, wurz%) wurzell = argument! ^ (1 / wurz%) END FUNCTION Рассмотрим синтаксис определения функции в программе более детально:FUNCTION Имя_функции (Параметр_1 [, Параметр_2]...) [STATIC] [Оператор]... Имя_функции = Выражение END FUNCTION

Имя_функции- Имя функции; последний символ обязательно определяет тип возвращаемого значения (%,&,!, #или $).

Параметр- Параметр, который передается функции при вызове.STATIC- Если в теле функции объявляются локальные переменные, то они сохраняют свои значения в промежутке между вызовами функции.Выражение- Возвращаемое значение

Смысл опции STATIC разъясним на небольшом примере. Составим главную программу для вызова функции zlen:

'Главная программа PRINT "Длина 'test' "; zlen%("test") PRINT "Длина 'test' "; zlen%("test")

Функцию zlen объявим следующим образом:

FUNCTION zlen%(text$) DIMi% i%-i%+LEN(text$) zlen%-i% END FUNCTION

После запуска программы дважды получим на экране сообщение "Длина 'тест' 4". Изменим заголовок функции: FUNCTION zlen% (text$) STATIC

После первого запуска программы получаем сначала значение длины 4, затем 8. Так как при объявлении функции используется ключевое слово STATIC, то значение локальной переменной i% сохраняется после окончания выполнения функции. Поэтому при последующих вызовах к значению переменной i% добавляется число 4, и при втором обращении к функции возвращаемое значение уже не 4, а 8.