Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Паскаль-переплет.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
626 Кб
Скачать
☆

§11. Оператор варианта выбора

Сase <порядковая переменная> of

<константа 1>: <оператор 1>;

<константа 2>: <оператор 2>;

......

<константа n>: <оператор n>;

[Else <оператор >; ]

end;

Если порядковая переменная равна одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передается за пределы оператора выбора. Если значение переменной не совпадает ни с одной константой, то выполняется оператор, стоящий после Else, если он есть, либо управление передается на оператор, следующий за End.

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

Решение :

Разделим все символы на три группы :

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

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

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

Program ех4;

var ch : char;

begin

Writeln(‘Введите символ’);

Readln(ch);

Case ch of

‘a’,’e’,’i’,’o’,’u’ : writeln(‘Это гласная’);

‘a’...’z’ : Writeln(‘это согласная’);

else writeln(‘это не английский алфавит’);

end;

end.

Задача 2. Мастям игральных карт условно присвоены следующие порядковые номера: «пики»-1, «трефы»-2, «бубны»-3, «червы»-4. По заданному номеру масти m (1m4) определить название соответствующей масти.

Program mast;

var m:integer;

begin

write(‘введите номер масти’); readln(m);

case m of

1 : writeln(‘пики’);

2 : writeln(‘трефы’);

3 : writeln(‘бубны’);

4 : writeln(‘червы’)

else writeln(‘вы ввели неправильный номер’);

end;

end.

§12. Типы определенные пользователем Раздел описания типов

В языке Паскаль все данные, используемые программой, должны принадлежать к какому-либо заранее известному типу данных.

Тип данных определяет:

  1. формат представления данных в памяти ЭВМ;

  2. множество допустимых значений;

  3. множество допустимых операций.

Все простые типы можно разделить на стандартные и пользовательские. Стандартные типы данных рассматривались в задании1.

Пользовательские типы объявляются в разделе описания типов, который открывается словом Type.

Type

week=(sunday, monday, tuesday, wednesday, thursday,

friday, satufday);

work_week=monday..friday;

day=1..31;

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

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

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

Например,

Var month(january, february, march, april, may, june, july, august, september, october, november, december);

Порядок элементов перечисляемого типа определяется порядком их следования в описании. Левый имеет минимальное значение.

В любом порядковом типе для каждого значения, кроме первого, существует предшествующее значение, и для каждого значения, кроме последнего, существует последующее значение. В языке Паскаль имеются стандартные функции, которые позволяют определять предшествующее и последующее значения для заданного значения:

функция Pred(x) определяет значение, предшествующее х;

функция Ord(x) возвращает порядковый номер величины х;

функция Succ(x) определяет значение, следующее за х.

К переменным перечисляемого типа можно применять операции сравнения. Так, например, february<november.

Задача 3.Вычислить значения :

а) Ord(august);

б) Ord(succ(september));

в) Pred(Pred(december)).

Задача 4. Имеются описания :

var x,y : (winter, spring, summer, autumn);

t : (cold, warm);

а) Допустимы ли присваивания :x:=spring; t:=warm: t:=hot; y:=x; y:=t;

б) Вычислить значения выражений :

spring<summer;

autumn<winter;

Succ(spring);

Pred(autumn);

Ord(spring);

winter<=summer;

spring<>warm;

Pred(spring);

Pred(cold);

Pred(autumn) + Ord(cold);

в) Допустим ли оператор цикла с заголовком : For x:=spring To autumn Do

Задача 5. Даны описания следующих переменных :

VAR m, m1: (january, february, march, april, may, june, july, august,

september, october, november, december);

k: 1..maxint; n: 1..12;

Присвоить переменной m1:

а) название месяца, следующего за месяцем m;

б) название k-го месяца после месяца n.

Задача 6. Имеются описания :

VAR d: ‘0’..’9’; k: 0..9; n: integer;

а) Какие значения может принимать переменная d ? Каков ее базовый тип? Допустимы ли присваивания : d:=’7’; d:=’a’; d:=7 ?

б) Какие значения может принимать переменная k ? Каков ее базовый тип ? Допустимы ли присваивания : k:=5; k:=10; k:=-0: k:=’5’ ?

в) Есть ли ошибки в операторе :

if k+n>7*k then k:=abs(n) mod 10

else d:=chr(k+Ord(‘0’) ?