Скачиваний:
109
Добавлен:
21.01.2014
Размер:
2.38 Mб
Скачать

4. Контрольные вопросы

  1. Назначение и синтакис оператора: LINE INPUT ?

  2. Назначение и синтакис функций: LCASE, UCASE, LTRIM$, RTRIM$, SPACE$, STRING$, INSTR, LEFT$, RIGHT$, MID$, HEX$, OCT$, STR$, VAL, LEN.

Вопросы по процедуре выполнения индивидуального задания.

5. Библиографический список

  1. Бобровский С. Программирование на языке QBASIC для школьников и студентов. — М.: Десс; Инфорком-Пресс, 1999. - 208 с.

  2. Зельднер Г.А. Программируем на языке QuickBASIC 4.5. - М: ABF, 1996. - 432 с.

  3. Введение в программирование на языке Microsoft BASIC: Учебное пособие / Ю.Я. Максимов, С.В. Осипов, А.В. Потемкин, Щ.С. Симоненков. - М.: ”Диалог-МИФИ”,1991. - 176 с.

Министерство образования

Российской Федерации

Тульский государственный университет

Кафедра “Инструментальные и метрологические системы”

Информатика

ЛАБОРАТОРНАЯ РАБОТА 9

Организация работы с массивами

для студентов очного обучения

Тула 2000 г.

1. Цель и содержание работы

Целью работы является знакомство с организацией программ, работающих с массивами.

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

2. Порядок выполнения работы

  1. Изучить теоретическую часть.

  2. Получить задание у преподавателя.

  3. Выполнить задание.

  4. Оформить отчет.

  5. Защитить работу.

3. Теоретическая часть

Доступ к элементам структуры осуществляется по имени ее составляющих. В одних случаях это значительно повышает наглядность исходных текстов и упрощает процесс программирования, но имеется немало ситуаций, когда надо организовать обработку больших объемов данных одного типа, при этом создавать структуры с сотнями и тысячами полей неразумно. Поэтому в дополнение к структурам в языки программирования введено понятие массива, сложного типа данных, доступ к элементам которого происходит по их положению, по номеру или индексу. Например, можно описать массив, состоящий из тысячи элементов численного типа, и затем обратиться к десятому или сотому элементу по его номеру.

При описании массива обычно указывается его размер (число элементов) или верхняя и нижняя границы диапазон, в рамках которого можно обращаться к элементам массива.

Группу однотипных переменных удобно представлять в виде массива переменных. Отдельные переменные массива - элементы. Каждый элемент имеет порядковый номер(числовое выражение целого типа) - индекс. Число индексов определяющих элемент массива - размерность массива (одно(вектор) или двухразмерный (матрица)). Количество элементов в массиве - размер массива (по умолчанию принимается равным 10 элементам). Каждый массив, используемый в программе должен быть заранее объявлен оператором DIM(если размер массива не предполагается изменять) REDIM(если размер массива будет изменятся). При объявлении массива можно указывать границы его размерностей (верхнюю и нижнюю).

Переменные-массивы

Тип

Описание

Ограничения

Пример

ЛЮБОЙ

Правила использования массива, такие же как и для переменной.

Мax размер - 65535 байт;

Мax число размерностей - 8;

Мax номер индекса - 32768

DIM А (30 TO 60)

DIM B (30)

DIM С (30, 60)

Операторы описания

CONST

Оператор

Описывает одну или несколько символьных констант.

CONST имя = выражение [, имя = выражение] ...

  • имя - имя константы. Допустимыми символами являются: A-Z, 0-9 и точка;

  • выражение - выражение , присваиваемое константе(%,&,!,#,$). Выражение может состоять из буквальных констант (например 1.0), других констант, любых арифметических и логических знаков операций, исключая возведение в степень (^) или одной строки литералов. Нельзя использовать конкатенацию (сложение символьных строк) и функции с параметрами, такие как SIN или CHR$.

  • Константы описаные в процедурах SUB или FUNCTION, - локальные для данной SUB или FUNCTION. Константа описаная в главном модуле является глобальной.

  • Константы нужно определять только один раз во всем модуле.

  • Константы нельзя изменять.

CONST ТАВS=9, YES=-1, NO=0

DEFтип

Оператор

Устанавливают тип данных по умолчанию для переменных, функций DEF FN и процедур FUNCTION.

DEFINT обл_букв;

DEFLNG обл_букв;

DEFSNG обл_букв;

DEFDBL обл_букв;

DEFSTR обл_букв.

  • обл_букв - буква или область букв. QBasic устанавливает тип данных по умолчанию для переменных, функций DEF FN и процедур FUNCTION, имена которых начинаются с указанной буквы, в следующем порядке:

  1. DEFINT тип данных по умолчанию - целый

  1. DEFLNG тип данных по умолчанию - длинное целое

  1. DEFSNG тип данных по умолчанию - одинарной точности

  1. DEFDBL тип данных по умолчанию - двойной точности

  1. DEFSTR тип данных по умолчанию - символьный

  • Суффикс типа данных (%, &, !, # или $) всегда имеет преимущество над операторами DEFтип.

  • Одинарная точность - тип данных по умолчанию, если вы не указали операторов DEFтип.

  • После указания в программе оператора DEFтип QBasic автоматически вставляет соответствующий оператор DEFтип в каждую создаваемую процедуру.

DEFDBL A-Z ‘ Устанавливает тип данных по умолчанию двойной точности.

DIM

REDIM

Операторы

DIM описывает массив или указывает тип данных для переменных не массива.

REDIM описывает или изменяет размер динамического массива, стирая все предыдущие значения.

DIM [SHARED] переменная [(индекс)] [AS тип]

[,переменная [(индекс)] [AS тип]]...

REDIM [SHARED] переменная (индекс) [AS тип]

[,переменная (индекс) [AS тип]]...

  • SHARED - указывает, что переменные используются совместно всеми процедурами SUB или FUNCTION в модуле;

  • переменная - имя переменной массива;

  • индекс - размеры массива в следующем виде:

[низ TO] верх [,[низ TO] верх]...

  1. низ - нижняя граница индекса массива. По умолчанию нижняя граница равна нулю.

  1. верх - верхняя граница;

  • AS тип - описывает тип данных массива или переменной (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных, описанный пользователем).

  • DIM описывает либо статические, либо динамические массивы.

Если область хранения массива не была описана в $STATIC, $DYNAMIC или COMMON, массивы, размер которых был задан в числах, являются статическими, а массивы, размер которых был задан в переменных - динамическими. Оператор обнуляет все элементы числовых массивов, а символьным - присваивает значение пустой строки. Без описания оператором верхняя граница каждой размерности не должна превышать 101. Массив определяется оператором до обращения к его элементам.

  • REDIM всегда описывает динамические массивы.

Область хранения статического массива выделяется при запуске программы и остается постоянной. Область хранения динамического массива выделяется при работе программы.

DIM A(49, 49) ‘ Ключевое слово ТО дает возможность указывать отрицательные

DIM A(-49 ТО 49) ’ границы

REDIM A(19, 14,12) ‘ Можно изменять только границы, но не число размерностей.

'

LBOUNDUBOUNDФункции

Возвращает верхнюю или нижнюю границу (наименьший или наибольший доступный индекс) для указанного размера массива.

LBOUND(массив [,размер%])

UBOUND(массив [,размер%])

  • массив - имя массива;

  • размер% - указывает размер массива, верхняя или нижняя граница которого возвращаются. Используйте 1 для первого размера, 2 - для второго размера и т.д. Значение по умолчанию равно 1.

  • LBOUND возвращает нижнюю границу для указанного размера массива.

Нижняя граница массивов по умолчанию равна 0 (оператор OPTION BASE =0 или отсутствует) или 1 (оператор OPTION BASE =1).

Массивы описанные с ключевым словом ТО в операторе DIM могут иметь любое целое значение в качестве нижней границы.

Для одноразмерного массива (вектора) размерность можно не указывать.

  • UBOUND возвращает верхнюю границу для указанного размера массива.

DIM ims%(1 TO 3, 2 TO 7)

PRINT LBOUND(ims%, 1), UBOUND(ims%, 2)

TYPE

Оператор

Определяет тип данных, содержащий один или несколько элементов.

TYPE тип_пользов

имя_элемента AS тип

[имя_элемента AS тип]

END TYPE

  • тип_пользов - имя определяемого типа данных. Имя может быть длиной до 40 символов и должно начинаться с буквы. Допустимые символы: A-Z, 0-9 и точка (.);

  • имя_элемента - элемент типа данных определенных пользователем;

  • тип - Тип элемента (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных (запись), определенный пользователем).

  • Используйте DIM, REDIM, COMMON, STATIC или SHARED для создания переменной определенного пользователем типа данных (причем в главном модуле).

TYPE Card

Suit AS STRING * 9

Value AS INTEGER

END TYPE

COMMON Оператор

Определяет глобальные переменные, которые могут быть использованы совместно между модулями или в цепочке программ.

COMMON [SHARED] [/имя_блока/] переменные

  • SHARED - обозначает, что переменные совместно используются всеми процедурами SUB и FUNCTION;

  • имя_блока - идентификатор блока (до 40 знаков) для разделения только определенных переменных. Если у блока есть имя, он считается именованным;

  • переменные - одна или несколько переменных для совместного использования:

перемен[( )] [AS тип] [, перемен[( )] [AS тип]]...

  • перемен - имя переменной Basic. Имя переменной может быть длиной до 40 символов и должно начинаться с буквы. Допустимые символы: A-Z, 0-9 и точка (.).

  • тип - тип данных переменной (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных, определенный пользователем)..

  • Оператор выделяет место для переменных в общей области памяти.

  • Ему могут предшествовать следующие операторы: COMMON; CONST; DATA; DECLARE; DEFтип; DIM; OPTION BASE; REM; SHARED; STATIC; TYPE…END TYPE; Все метакоманды.

  • Статические и динамические массивы размещаются в COMMON путем указания имени массива с пустыми скобками. Если массив не был специально описан в предыдущем операторе DIM, как статический, то переменная массива в операторе COMMON является динамическим массивом. Его размеры должны быть установлены позже оператором DIM или REDIM.

  • Если программа совместно использует блок COMMON с процедурой в библиотеке пользователя, то вызываемая программа не может увеличить размер блока.

  • При передаче управления другой программе (EXE_файлу) через CHAIN (“по цепочке”), с помощью оператора COMMON или именованного блока COMMON невозможно передать глобальные переменные ? Существуют следующие пути решения вопроса:

  1. Компилировать программу с опцией “Requiring BRUN45.EXE”;

  2. Передавать параметры через временный дисковый файл;

  3. Использовать межпрограмный 16-байтный буфер.

СOMMON U, V, H ‘ Неименованный

U = 10: V = 7: H = 3

DIM J (4) ‘ Именовванный

COMMON /Group/ J ( )

J (1) = 20: J (2) = 27: J (3) = 17: J (4) = 18:

DATA

READ

RESTORE

Операторы

DATA указывает значения для чтения последующими операторами READ.

READ считывает эти значения и присваивает их переменным.

RESTORE позволяет READ заново считать значения в указанном операторе DATA.

DATA константа [,константа]...

READ переменные

RESTORE [строка]

  • константа - одна или несколько числовых или строковых констант, указывающих данные для чтения. Строковые константы, содержащие запятые, двоеточия, пробелы, должны быть заключены в кавычки (" ");

  • переменные - одна или несколько переменных, разделенных запятой, которым присваиваются значения данных. Имя переменной может быть до 40 символов длиной и должно начинаться с буквы. Допустимые символы: A-Z, 0-9 и точка (.);

  • строка - метка или номер строки оператора DATA. Если строка опущена, следующий оператор READ считывает значения из оператора DATA, стоящего в программе первым.

  • Типы данных и переменных должны соответствовать.

  • Операторы DATA могут быть введены только на модульном уровне. Они не могут использоваться в процедурах.

  • Оператором READ могут считыватся только отдельные элементы переменных пользовательского типа.

  • Если список переменных больше, чем список данных, выдается сообщение об ошибке “Оut of DATA”, если же короче, то следующий оператор READ начинает читать первый непрочитанный элемент. Данные не прочитанные никакими READ - игнорируются

FOR h% = 1 TO 3

READ C%, J$

PRINT C%, J$

RESTORE

NEXT h%

DATA 1, "Повторить"