2.7. Раздел описания типов

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

Пусть нам нужна переменная с именем season (сезон года). она может принимать значения winter (зима), spring (весна), summer (лето), autumn (осень), другие значения она принимать не может. Тогда нужно сделать следующее описание:

Var season: (winter, spring, summer, autumn).

Здесь тип 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.


 


Информация о работе «Основы программирования на языке Паскаль»
Раздел: Информатика, программирование
Количество знаков с пробелами: 168304
Количество таблиц: 7
Количество изображений: 26

Похожие работы

Скачать
274963
85
0

... ячейка, а имя переменной превращается в адрес ячейки. Появление этого адреса происходит в результате работы специального оператора языка (NEW), однако его значение в большинстве случаев не используется при программировании на алгоритмических языках типа Паскаль. Условимся считать, что адрес ячейки, которая будет хранить переменную А, есть А. Или, другими словами, А - это общее имя переменной и ...

Скачать
11632
0
1

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

Скачать
47594
1
0

... , тем не менее, использование программ с перекрытиями снимает это ограничение. Два библиотечных модуля TURBO3 и GRAPH3 введены для совместимости с ранней версией 3.0 системы Турбо Паскаль. 2 Объекты Базовым в объектно-ориентированном программировании является понятие объекта. Объект имеет определённые свойства. ...

Скачать
17572
2
0

... выбрать режим Quit <Alt>-<X>, после чего нажать либо <Enter>, либо комбинацию <Alt>-<X>. ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ Функциональные клавиши используются для управления средой Турбо Паскаля. Они обозначаются F1, F2,..., F12 и располагаются в самом верхнем ряду клавиатуры. С каждой из этих клавиш связывается некоторая команда меню. Действие почти всех функциональных ...

0 комментариев


Наверх