Основы программирования на языке Паскаль
Здесь тип season задан перечислением всех констант, которые могут быть занесены в ячейку памяти season. Попытка занести в ячейку season любое другое значение приведет к ошибке – "несоответствие типа".
Если переменных данного типа будет несколько, удобнее и нагляднее вначале определить тип в разделе Туре (описание типа), а затем в разделе Var сосл
аться на этот тип, и машина в Var выделит конкретные ячейки памяти для хранения данных указанного типа.
Например, необходимо определить, что Gi, G2, G3, G4 будут ячейками памяти, в которых могут храниться наименования газов Со, О, N, F, а в ячейках памяти Metall1, Metall2, Metall3 – наименования металлов Fе, Со, Na, Cu, Zn, тогда можно применить описание:
VAR GI, G2, G3, G4: (CO,O,N,F);
Metall1, Metall2, Metall3: (Fe,Co,Na,Cu,Zn).
Можно использовать и другое, более наглядное описание. вначале определить тип Gaz, Met, а затем на них сослаться:
Туре Gaz=(Co, О, N, F);
Met = (Fе, Со, Na, Cu, Zn);
Var GI, G2, G3, G4 : GAZ;
Metall1, Metall2, Metall3, Met;
Особенно удобно применение раздела Туре, если он находится во внешнем блоке, а ссылки на него идут во внутренних блоках (см. раздел "Блоки"). Тогда значительно экономится память, поскольку она может быть практически одной и той же в разных блоках.
При описании переменных перечисляемого типа данные внутри скобок являются константами, которые может принимать описываемая переменная. Над данными такого типа допустимо выполнять операции отношения и логические операции (см. далее). Например, для приведенного выше описания данного season будет истинным высказывание: "winter < spring".
При работе с данными перечисляемого типа можно применять стандартные функции Succ, Рred, Ord.
Succ (аргумент) возвращает значение, следующее за элементом, указанным как аргумент. Если следующего элемента нет (закончились), то это приводит к программному прерыванию (ошибке).
Рred (аргумент) возвращает предыдущее значение из перечня констант, из которых состоит данный тип.
Ord (аргумент) возвращает порядковый номер аргумента в списке констант, перечисленных в описании в виде целого числа. Элементы пронумерованы в порядке 0,1,2, ., т.е. первый элемент имеет номер 0.
Пример:
Туре month = ('jan','fab','mar','apr','may','jun','jul','aug','sep','ocf','nov','dec');
Var a,b,c,d,c,mes: month; f,h,g: integer;
Begin mes: =jul;
a: = Pred (mes); {в a находится 'jun'}
b: = Succ (mes); {в b находится 'aug'}
с: = Pred (pred(mes)); {в с находится 'mау'}
d: = Succ (succ(mes)); {в d находится 'sep'}
e: = Succ (pred(mes)); {венаходится 'jul'}
f: = Ord (mes); {в f находится 6}
h: = Ord (pred(mes)); {в h находится 5}
g: = Ord (succ(mes)); {в g находится 7}
END
Интервальный тип задается диапазоном изменения констант внутри какого-либо уже имеющегося перечисляемого или стандартного типа, кроме вещественного (integer, byte, booban, char). Значение первой константы должно быть меньше значения второй константы диапазона.
Туре
Dni = 1 .31;
Litera = 'a', .,'z',
Var Rabdni,bolndni, vuhod: dni; {могутприниматьзначения 1-31}
im,ident: litera; {могут принимать значения 'A'-'Z'}
Выход за пределы диапазона вызывает программное прерывание.
Допускается задание диапазона именами констант:
Const min = 1; max = 31;
Туре Dni = min…max;
Var rabdni,boldni,vuhoddni:dni;
Для интервального типа также возможно применять функции Succ, Pred, Ord.
3. Разветвляющиеся программы
3.1. Общие положения
До сих пор мы рассматривали линейные программы, алгоритм которых можно было представить в виде блок-схемы (рис. 3.1)
Возможны случаи, когда программа ветвится в зависимости от какого-либо условия (см. рис. 3.2). Ветвление может быть двух направлений: по принципу условие верно – идти по одной ветви, условие ложно – по другой. В этом случае применяется оператор if. возможно ветвление сразу нескольких направлений: если k=l – идти по одной ветви, если k=2 – по другой, k=3 – по третьей и т.д. в этом случае удобнее применять оператор Case.
3.2. Оператор goto, раздел описания меток
Последовательное выполнение операторов в программе может быть нарушено оператором перехода. Общий вид оператора: goto метка; где метка – буква, либо цифра, либо набор букв и цифр, из которых первая – всегда буква, Например, М1, LI, NK. Метка, стоящая после goto, указывает, куда нужно пойти. Достигается это тем, что если в программе находится оператор goto метка; то в этой же программе обязательно имеется какой-либо оператор вида метка: оператор; который считается помеченным, и машина, встретив goto метка; не будет выполнять оператор, записанный после оператора goto метка; а перейдет к выполнению оператора метка: оператор;
Иллюстрация:
а: = b+с;
с: = sgrt (a+exp(b));
goto M1;
z: = x+y;
writeln (z);
M1: S: = P;
В случае, если бы не было оператора goto М1; все операторы выполнялись бы последовательно один за другим. здесь же после оператора с: = . стоит goto М1; следовательно, машина не будет выполнять z:= . и writeln ., а сразу после с: = . перейдет к выполнению оператора М: S: = Р;
Метки, применяемые в программе, должны быть описаны в разделе описания меток, который желательно ставить первым среди описаний. Выглядит раздел так: Label М1, М2, L, NK; т.е. после слова Label перечисляются через запятую все метки, которые будут применяться в данном блоке (программе). Заканчивается описание символом ';'.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности