Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ограниченный тип (диапазон)




Перечислимые типы

В 5.7 я говорил о порядковых типах- это те типы, все значения которых можно выстроить по порядку и перечислить от начала до конца. Мы пока знаем, что в Паскале порядковыми типами являются целочисленные типы, символьный тип и логический тип. Кроме того, программист может придумывать собственные порядковые типы. Рассмотрим, например, такую конструкцию:

VAR Month: (january, february, march, april, may, june, july, august, september, october, november, december)

Она означает, что переменная Month может принимать только одно из перечисленных в скобках значений. Например, можно записать Month:= may. Переменная Month является переменной перечислимого типа, который является одним из видов порядковых типов.

Эти значения ни в коем случае не являются строками. Так, нельзя записать Month:= ‘may’. Кроме того, их нельзя вывести на печать, вообще они не могут быть введены в компьютер или выведены из него, например, при помощи операторов Read и Write. Однако, их удобно применять при программировании. Это удобство выяснится из следующего примера.

 

Задача: Известно, сколько дней в каждом месяце года. Сколько дней летом?

 

Сначала запишем программу традиционным способом.

Программа:

CONST dni: array [1..12] of Byte = (31,28,31,30,31,30,31,31,30,31,30,31);
VAR s,i:Integer;
begin
s:=0; {Сумматор летних дней}
for i:=6 to 8 do s:=s+dni[i]; {Летние месяцы - 6,7,8}
WriteLn(s)
end.

Недостаток приведенной программы - не самая лучшая наглядность, к тому же приходится самому на пальцах вычислять номера месяцев начала и конца лета (6 и 8). Паскаль имеет средства повысить наглядность и удобство таких программ. Запишем нашу программу по-новому, с использованием перечислимого типа данных:

TYPE mes = (january, february, march, april, may, june, july, august, september,
october, november, december);
CONST dni: array [january..december] of Byte =
(31,28,31,30,31,30,31,31,30,31,30,31);
VAR s:Integer;
i:mes;
begin
s:=0;
for i:=june to august do s:=s+dni[i];
WriteLn(s)
end.

Пояснения: Основное достижение нашей программы в том, что в операторе for можно написать june to august вместо 6 to 8, а в определении массива dni можно написать array[january..december] вместо array[1..12]. Для этого пришлось определить специальный перечислимый тип mes, перечислив в скобках произвольные имена месяцев, а переменную цикла i задать типом mes, а не Integer.

Синтаксис перечислимого типа:

(имя, имя, имя,...., имя)

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

if i = february then dni[i]:= 29

Задача: Поезд отправляется в путь в 22 часа и находится в пути 10 часов. Во сколько он прибывает на место назначения?

 

Ошибочная программа:

VAR Otpravlenie, Pribitie:Byte;




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.