Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Електронный_лаб_практ_ОПтаАМ_I.doc
Скачиваний:
6
Добавлен:
27.11.2019
Размер:
1.3 Mб
Скачать

1.9. Массивы и записи

Массивом называется упорядоченная совокупность компонентов (элементов) одного из возможных в ТP типов данных. Описание массива задается следующим образом:

VAR <имя массива>: ARRAY [список индексов] OF <тип>;

где <имя массива> — уникальный идентификатор;

<список индексов> — перечисление размерностей массива с ука­занием минимального (начального) и максимального (конечного) значений каждой размерности;

<тип> — любой тип данных, используемых в ТP-программах.

Например:

Var mas: array[1..2,1..3] of integer;

– двухмерный массив размерности 2 на 3 элемента, имеющий имя MAS. Все элементы массива принадлежат к целым числам.

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

Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.

Структура объявления типа записи такова:

TYPE <имя записи> = RECORD

<список полей>

END;

Здесь <имя записи> — правильный идентификатор;

<список полей> — представляет собой последовательность имен полей записи, между которыми ставится символ « ; ».

Например:

TYPE zap = RECORD

fio: STRING;

god_rogd: INTEGER;

END;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя записи, затем точку и имя поля, например: zap.fio или zap.god_rogd.

Вопросы для самопроверки:

  1. Дать определение массива.

  2. Привести описание массива в ТР-программе.

  3. Привести форму обращения к элементу массива.

  4. Дать определение переменной типа запись.

  5. Привести описание переменной типа запись в ТР-программе.

  6. Привести форму обращения к элементу записи.

1.10. Основные операторы

К числу основных операторов языка ТР относятся операторы присваивания, ввода, вывода, условного перехода, циклов, безуслов­ного перехода и выбора варианта.

Оператор присваивания служит для вычисления значений пере­менных. Он обозначается символом := и имеет следующую структуру:

<имя переменной> := <выражение>;

Арифметические выражения, стоящие в правой части оператора присваивания, могут содержать константы, идентификаторы пере­менных, числовые функции.

Для выполнения оператора присваивания необходимо, чтобы все входящие в него переменные были явно объявлены. Кроме того, переменным, входящим в арифметическое выражение, должны быть предварительно присвоены значения, соответствующие их типам.

Оператор выполняется в два действия. Сначала вычисляется зна­чение выражения, стоящего справа от знака присваивания (:=). Потом полученное значение выражения присваивается переменной, стоящей слева от знака присваивания, при этом предыдущее зна­чение этой переменной будет потеряно.

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

READ(<список ввода>);

READLN(<список ввода>);

Список ввода представляет собой последовательность разделенных запятыми имен переменных, значения которых вводятся извне. Вводимые значения отображаются на экране. Отличие операторов READ от READLN заключается в том, что последний после ввода данных из списка осуществляет переход на следующую строку во вводимом файле. Оператор READLN без списка ввода производит лишь пропуск строки во вводимом файле.

Операторы вывода служат для вывода на экран значений выра­жений, переменных, констант и пояснительного текста. Они имеют следующую структуру:

WRITE(<список вывода>);

WRITELN(<список вывода>);

Список вывода представляет собой последовательность разделен­ных запятыми выражений, имен переменных и констант, фрагментов выводимого текста. Текст, который необходимо вывести на экран без каких-либо изменений, заключается в апострофы (символ « ’ »). Опе­раторы WRITE и WRITELN отличаются тем, что последний осущес­твляет вывод элементов списка, начиная с новой строки. Оператор WRITELN без списка вывода производит переход на новую строку.

Вещественные значения переменных и арифметических выра­жений выводятся в виде нормализованных чисел с десятичным порядком (т.е. в форме с плавающей точкой). Если существует необходимость представить значения вещественных переменных и арифметических выражений в форме с фиксированной точкой, в списке вывода указывается их формат:

WRITE(<выражение>:N:M);

здесь N — количество позиций, отводимых под выводимое зна­чение выражения или переменной;

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

Условный оператор (оператор условного перехода) служит для реализации разветвлений вычислительного процесса. Он имеет сле­дующую структуру:

IF <условие> THEN

<оператор 1>

ELSE <оператор 2>;

Условие задается в виде логического выражения, истинность ко­торого влечет выполнение оператора 1, а ложность – оператора 2.

Оператор 1 и оператор 2 могут быть как простыми, так и состав­ными, т.е. состоящими из нескольких простых операторов, огра­ниченных операторными скобками. Составной оператор имеет следующую структуру:

BEGIN

<простой оператор 1>;

· · ·

<простой оператор n>;

END;

Операторы цикла обеспечивают многократное выполнение прос­того или составного оператора, называемого телом цикла.

В языке ТP существуют три разновидности операторов цикла. Первая из них, реализующая цикл по схеме «ОТ И ДО», имеет следующую структуру:

FOR <имя переменной>:=<выражение 1> ТО <выражение 2> DO <оператор>;

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

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

Другой разновидностью оператора цикла является оператор, реализующий цикл по схеме «ДО ТЕХ ПОР, ПОКА» с проверкой условия в начале цикла. Он имеет следующую структуру:

WHILE <условие> DO

<оператор>;

Оператор (как правило, составной) выполняется до тех пор, пока истинно условие, заданное в виде логического выражения. Если при первом обращении к циклу условие не выполняется, то цикл пропус­кается и управление передается следующему оператору программы.

Третьей разновидностью оператора цикла является оператор, реа­лизующий цикл по схеме «ДО ТЕХ ПОР, ПОКА» с проверкой условия в конце цикла. Он имеет следующую структуру:

REPEAT

<группа операторов>

UNTIL <условие>;

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

Оператор безусловного перехода используется для принудительно­го (безусловного) перехода в некоторую точку программы, помечен­ную специальной меткой. Он имеет структуру:

GOTO <метка>;

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

CASE <Селекторное выражение> OF

<метка 1>:<оператор 1>;

<метка 2>:<оператор 2>;

<метка n>:<оператор n>;

END;

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

Вопросы для самопроверки:

  1. Раскрыть понятие оператора присваивания.

  2. Дать характеристику операторов ввода.

  3. Дать характеристику операторов вывода.

  4. Сформулировать правило форматирования вывода.

  5. Раскрыть структуру условного оператора (оператора условного перехода).

  6. Раскрыть структуру оператора цикла FOR.

  7. Раскрыть структуру оператора цикла WHILE.

  8. Раскрыть структуру оператора цикла REPEAT.

  9. Дать характеристику оператора безусловного перехода.

  10. Раскрыть структуру оператора выбора варианта.