|  | Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|  | 
Оператор CASE представляет собой частный случай структуры ВЕТВЛЕНИЕ, когда возникает необходимость выбора одного из нескольких возможных вариантов вычислений в зависимости от значений некоторого выражения (ключа, селектора).
Порядок выполнения оператора Case следующий: вычисляется значение выражения K; полученное значение сравнивается с K1, K2, …, KN; если оно совпадает с одним из этих значений, то управление передается соответствующему оператору и выполнение оператора CASE завершается. Если значение выражения K не совпадает ни с одним из возможных значений, далее все зависит от типа оператора CASE: если он полный (в нем присутствует служебное слово ELSE), то управление передается команде S; в противном случае выполнение оператора завершается.
| Конструкция | ИнтАл | Паскаль | 
|   | Выбрать_По K
 K1: S1
 K2: S2
...  KN: SN  Иначе S
 Конец_Выбора
  
 K – переменная целого типа;
 K1, K2, …, KN – возможные значения переменной К;
 S1, S2, …, SN, S – выполняемые команды | CASE K OF
 K1: S1;
 K2: S2;
...
 KN: SN    ELSE S
 END;
  
 K – выражение, определяющее значение ключа;
 K1, K2, …, KN – возможные значения ключа;
 S1, S2, …, SN, S – выполняемые операторы (простые или составные) | 
Вариант записи, полученный после зачеркивания блока и строк в приведенных выше схемах, соответствует оператору выбора (или, как его еще называют, оператору варианта) в неполной (сокращенной) форме.
Селектор K представляет собой выражение порядкового типа. К порядковому типу относятся целочисленные типы, логический тип и символьный, с которым Вы познакомитесь в разделе 4.
В Паскале допускается использование нескольких возможных значений ключей, разделенных запятой (перечисление значений) или двумя точками “..” (диапазон значений).
 Пример 1. По номеру дня недели требуется определить его название.
 Пример 1. По номеру дня недели требуется определить его название.
Program Day;
Var Num: Byte;
Begin
Writeln ('Введите номер дня недели');
| 
 | 
Case Num of
1: Writeln ('Понедельник');
2: Writeln ('Вторник');
 3: Writeln ('Среда');
 3: Writeln ('Среда');
4: Writeln ('Четверг');
5: Writeln ('Пятница');
6: Writeln ('Суббота');
7: Writeln ('Воскресенье')
Else
Writeln ('Это не номер дня недели')
End;
End.
Пример 2. Составить программу, которая для заданных номеров месяца и года позволит определить количество дней в этом месяце.
Дано: month, year – номера месяца и года.
Найти: kol_days – количество дней в этом месяце.
Связь: 
year – високосный, если year делится без остатка на 4, кроме тех, которые делятся на 100 и не делятся на 400. Например, 1900 год – не високосный, 2000 год – високосный.
Будем считать, что данные корректны.
Program Days;
Var Year: Integer;
month, kol_days: Byte;
Sto: Boolean;
Begin
Write ('Введите номер месяца ');
Readln (month);
Case month of
1, 3, 5, 7, 8, 10, 12: kol_days:= 31;
4, 6, 9, 11: kol_days:= 30;
2: Begin {февраль}
Write ('Введите номер года ');
Readln (Year);
Sto:=(Year mod 100)=0;
if ((Sto=True) and (Year mod 400 =0)) or
((Sto=False) and (Year mod 4=0)) Then
kol_days:= 29
Else kol_days:= 28
End;
End;
Writeln (kol_days);
End.
Пример 3. Составить программу проверки, делится ли заданное натуральное число на 7.
Пусть х – заданное натуральное число. Составим выражение сравнения: x mod 7 =0. Используем это выражение в качестве селектора; его возможные значения: True, False. Ниже приводятся два варианта использования оператора выбора (в полной и неполной формах):
| Program PRIM_3; Var x: LongInt; Begin Write ('Введите натуральное число '); Readln (x); | |
| Case x mod 7 = 0 of True: Writeln ('делится на 7'); False: Writeln ('не делится на 7') | Case x mod 7 = 0 of True: Writeln ('делится на 7') Else Writeln ('не делится на 7') | 
| End; End. | 

1. Какова структура условного оператора? * оператора выбора?
2. Каков порядок выполнения условного оператора? * оператора выбора?

1. Напишите программы решения следующих задач:
1) На экран компьютера выводится текст:

После того как пользователь сделает выбор, необходимо вывести знак препинания, каким должно заканчиваться предложение данного типа.
2) По номеру класса, в котором учится школьник, требуется определить, в школе какого типа он обучается (подготовительная, начальная, базовая, средняя).
3) На экран компьютера выводится текст:

После того как пользователь сделает выбор, необходимо ввести значения требуемых элементов, вычислить площадь и вывести полученный результат.
4) Таблица К. Купера позволяет определить степень физической подготовленности человека в зависимости от суммы очков, набранных им на занятиях по физической культуре за неделю:
| Сумма очков, набранных за неделю | Степень физической подготовленности | |
| Юноша | Девушка | |
| Не менее 75 | Не менее 65 | Превосходно | 
| 51-74 | 41-64 | Отлично | 
| 32-50 | 27-40 | Хорошо | 
| 21-31 | 16-26 | Удовлетворительно | 
| 10-20 | 8-15 | Плохо | 
| Меньшее 10 | Меньше 8 | Очень плохо | 
Программа должна предложить ввести сумму набранных очков, уточнить, кто их набрал (юноша или девушка) и вывести на экран компьютера оценку физической подготовленности.
5) Программа предлагает ввести возраст человека (если необходимо, также его пол) и выводит, к какой группе он относится: дошкольник, ученик, работник, пенсионер.
6) В пятиэтажном доме на каждом этаже по 4 квартиры. Программа должна предложить ввести номер этажа и вывести номера квартир на этом этаже.
7) Программа предлагает ввести число k полных лет человека (от 1 до 120) и вывести фразу: «Вам k лет». Например, при k=3 – «Вам три года», k=18 – «Вам 18 лет», k=101 – «Вам 101 год».
8) Определить наиболее подходящий возраст партнера для вступления в брак. Программа должна запросить данные пользователя: возраст, признак пола (из выведенного на экран меню: 1 – юноша, 2 – девушка) и вывести подходящий возраст партнера, который вычисляется так: возраст девушки равен увеличенной на 7 половине возраста юноши, возраст юноши определяется как удвоенный возраст девушки минус 14.
9) Вывести в римской системе нумерации век, к которому относится заданный год (номер года вводится с клавиатуры).
10) Программа должна предложить выбрать способ вычисления площади круга (по заданному радиусу, или диаметру, или длине окружности), запросить требуемые данные, произвести вычисления и вывести результат на экран.
11) Программа должна предложить ввести текущее время и вывести период суток (день, ночь, утро, вечер, обед).
Дата публикования: 2014-12-08; Прочитано: 743 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
