- •Элементы языка pascal
- •1.1 Алфавит
- •1.2 Идентификаторы
- •1.3 Типы данных
- •1.4. Константы. Переменные
- •Структура Pascal-программы
- •Преобразование типов
- •Выражения. Операции
- •2. Операторы
- •2.1. Составной и пустой операторы
- •2.2. Условный оператор
- •2.3. Операторы повторений
- •2.4. Оператор выбора
- •2.5 Метки и операторы перехода
- •3. Массивы
- •Процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
2.4. Оператор выбора
Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметр, по которому осуществляется выбор, служит ключ выбора – любого порядкового типа.
Структура:
Case <ключ выбора> Of <список выбора> [Else <операторы>] End
Список выбора – это одна или более конструкций вида:
<константа выбора> : <оператор>;
Константа выбора – константа того же типа, что и выражение ключ выбора.
Вначале вычисляется значение выражения <ключ выбора>, а затем в последовательности операторов <список выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается оператору, стоящему за Else (часть Else может опускаться – тогда при отсутствии в списке выбора нужной константы ничего не произойдет и оператор выбора завершит работу).
Program Calc;
{Программа вводит два числа и один из знаков + - * / и выводит на
экран результат арифметического действия}
var
operation : char;
x, y, z : real;
stop : boolean; {признак ошибочной операции и останова}
begin
stop:=false;
repeat
Write(‘x,y=’);
ReadLn(x,y);
Write(‘Операция’);
ReadLn(operation);
Case operation of
‘+’ : z:=x+y;
‘-’ : z:=x-y;
‘*’ : z:=x*y;
‘/’ : z:=x/y;
else stop:=true;
end;
if not stop then
WriteLn(‘Результат=’,z);
Until stop
End.
2.5 Метки и операторы перехода
Оператор перехода
Goto <метка>
Метка – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Метка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием. Перед тем как появиться в программе, метка должна быть описана. Описание меток состоит из зарезервированного слова Lable, за которым следует список меток
Lable
Lb1, Lb2;
Begin
…
goto lb1;
…
lb1:
lb2:
…
goto lb2;
Действие оператора Goto состоит в передаче управления соответствующему меченому оператору.
3. Массивы
В Турбо Паскале могут использоваться объекты, содержащие множество однотипных элементов. Это массивы – формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое.
При описании массива необходимо указать общее число входящих в массив элементов и тип этих элементов.
Var
a : array [1..10] of real;
b : array [0..40] of char;
c : array [-2..2] of boolean;
При описании массива используются зарезервированные слова Array Of. За словом Array в квадратных скобках указывается тип-диапазон, с помощью которого компилятор определяет общее число элементов массива. Тип-диапазон задается левой и правой границами изменения индекса массива, так что массив a состоит из 10 элементов, b – из 41, c – из 5. За словом Of указывается тип элементов, образующих массив.
Доступ к каждому элементу массива в программе осуществляется с помощью индекса – целого числа (точнее выражения порядкового типа), служащим своеобразным именем элемента в массиве (если левая граница типа-диапазона равна 1, индекс элемента совпадает с его порядковым номером). При упоминании в программе любого элемента массива сразу за именем массива должен следовать индекс элемента в квадратных скобках.
Var
a : array [1..10] of real;
b : array [0..40] of char;
c : array [-2..2] of boolean;
k : integer;
begin
b[17] :=’F’;
c[-2]:=a[1]>a[2];
for k:=1 to 10 do
a[k]:=0;
…
end.
Индекс не должен выходить за пределы, определенные типом-диапазоном (нельзя использовать a[0], c[40]).
Program Mas;
{Программа создает массив из N случайных чисел, распределенных в
диапазоне от 0 до MAX_VALUE-1, подсчитывает среднее
арифметическое этих чисел, минимальное и максимальное из них}
const
N=1000;
MAX_VALUE=100+1;
Var
m : array [1..N] of integer;
i : integer; {индекс массива}
max, min : integer;
s : real;
begin
{наполняем массив случайными числами}
for i:=1 to N do
m[i]:=random(MAX_VALUE);
{задаем начальное значение переменных}
s:=0;
max:=m[1];
min:=m[1];
{цикл вычисления суммы всех случайных чисел и поиска
минимального и максимального}
for i:=1 to N do
begin
s:=s+m[i];
if m[i]<min then
min:=m[i]
else if m[i]>max then
max:=m[i]
end;
WriteLn(‘Min=’,min,’Max=’,max,’Sred=’,s/N)
End.
Функция random(Max) используется для создания массива и возвращает случайное целое число, равномерно распределенное от 0 до Max-1 (Max – параметр обращения).
Количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления массива не может быть больше 65520 байт. В памяти компьютера элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива.
Var
A:array [1..2,1..2] of integer;
Begin
A[1,1]:=1;
A[2,1]:=2;
A[1,2]:=3;
A[2,2]:=4;
End.
В памяти друг за другом будут расположены байты со значениями 1,3,2,4.
Строка – это одномерный массив символов. К любому символу в строке можно обратиться как к элементу одномерного массива.
Var
St:string;
Begin
If st[5]=’A’ then
End.
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки. Первый значащий символ строки занимает второй байт и имеет индекс 1.