TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Ограниченный, перечисляемый типы данных. Оператор варианта

Повторение

  1. Определите значение переменной s после выполнения следующих операторов:
    s:=0; i:=0; While i<5 Do Inc(i); s := s + 1/i;
    s:=0; i:=1; While i>1 Do Begin s := s + 1/i; dec(i); End;
    s:=0; i:=1; Repeat s := s + 1/i; dec(i); Until i<=1;
    s:=0; i:=1; For i:=2 To n Do s := s + 1/i.
  2. Какие вы знаете порядковые типы данных? Какими общими свойствами они обладают?

Ограниченный тип данных

Ограниченный тип данных представляет собой интервал значений порядкового типа, называемого базовым типом. Описание типа задаёт наименьшее и наибольшее значения, входящие в этот интервал.

Например,

Var a: 1..25; ch: 'a' ..'z';

Здесь переменные а и ch могут принимать значения только из указанного интервала; базовым типом для переменой а является целый тип, а для переменной ch - символьный.

Переменная ограниченного типа сохраняет все свойства переменных базового типа.

Для чего вводится ограниченный тип данных? Использование ограниченного типа делает программу наиболее понятной и наглядной. Например, если в программе переменная b может принимать только значения 3, 4, 5, 6, 7, 8, то лучше описать её следующим образом: Var b: 3..8;, чем Var b: Integer; так как в случае выхода значения b за диапазон 3..8 в первом случае будет выдано диагностическое сообщение, которое поможет найти ошибку. Во втором случае будет получен неправильный результат, что затруднит поиск ошибки. Таким образом, второй вариант описания переменной следует использовать в тех случаях, когда диапазон значений заранее неизвестен либо занимает весь допустимый интервал значений для рассматриваемого типа.

Пример 1:

Напишите программу, которая переменной t присваивает значения true, если первая дата предшествует (в рамках года) второй дате, и значение false в противном случае.

Решение

Так как в условии задачи оговаривается, что обе даты должны находится в рамках года, то дата должна задаваться днём и месяцем. Количество любого месяца года не может быть более 31, количество месяцев в году равно 12. Значение переменной t равно true, если номер первого месяца меньше второго, либо значение первого дня меньше второго при условии, что номера месяцев совпали.

Program Example_24;
Var d1, d2 : 1..31;
m1,m2: 1..12;
t:Boolean;
Begin
Write( 'Введите первую дату (день, месяц)');
Readln(d1, m1);
Write( 'Введите вторую дату (день, месяц)');
Readln(d2, m2);
t:=(m1<m2) Or ((m1=m2) And(d1<d2));
Writeln(t);
End.

Задание 1

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

Оператор варианта

В программах очень часто используются операторы Case ... of. Эта конструкция предназначена для замены конструкции из вложенных операторов If...then и применяется для обработки ситуаций с несколькими исходами, т.е. когда условие может принимать более двух значений. Оператор выбора имеет следующий вид:

Оператор варианта
Case <порядковая переменная> Of
<константа1> : <оператор1>;
<константа2> : <оператор2>;
...
<константа n> : <оператор n>;
[ Else <оператор>; ]
End;

Выполнение оператора выбора начинается с вычисления выражения, которое должно принимать значение, принадлежащее порядковому типу. В случае, если результат вычисления равен одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передаётся за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то выполняется оператор, стоящий после else, если он есть, либо управление передаётся на оператор end и выполнение программы продолжается.

Примечание.

  1. Тип констант должен совпадать с типом выражения.
  2. Здесь ветвь else заключена в квадратные скобки, что говорит о том, что эта часть оператора выбора не обязательна.
  3. В этой конструкции перед else стоит точка с запятой.
  4. В качестве оператора может быть и составной оператор.

Пример 2:

Составьте программу, которая определяет, является ли введенный символ гласной или согласной буквой английского алфавита.

Решение

По условию задачи все символы делятся на следующие группы:

* гласные буквы английского алфавита;

* согласные буквы английского алфавита;

* символы, не являющиеся буквами английского алфавита.

Рассмотрим следующую программу:

Program Exampl_25
Var ch:Char;
Begin
Write('Введите символ');
Readln(ch);

Case Upcase(ch); Of
'A','E','I','O','U': Writeln('Это гласная буква английского алфавита');
'A'..'Z': Writeln('Это буква английского алфавита');
Else
Writeln('Этот символ не является буквой английского алфавита');
End.

 

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

Задание 2:

Напишите эту программу, используя условный оператор.

Перечисляемый тип данных

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

Var month: (january, february, marth, april, may, june, jule, august, september, october, november, december);

Упорядоченность элементов перечисляемого типа определяется порядком их следования. Самый левый имеет минимальное значение (значение функции ord для него равно 0), а наиболее правый - максимальное.

Содержание 

На главную страницу
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz