1 Программирование на языке Паскаль Тема 6. Оператор выбора
2 Оператор выбора Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. CaseOf Общий вид оператора: Case Of { : ;} Else Else end; : Case, Of, Else, end Где: Case, Of, Else, end – служебные слова; Ключ выбора - переменная любого типа (кроме Real или String); Список выбора - одна или более конструкций ; Константа выбора - константа того же типа, что и ; оператор выбора - простой или составной оператор языка Паскаль.
3 Оператор выбора Задача: Ввести номер месяца и вывести количество дней в этом месяце. Решение: Число дней по месяцам: 28 дней – 2 (февраль) 30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь) 31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь) Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца. Можно ли решить известными методами? ?
4 Алгоритм конец выбор ни один вариант не подошел да нет да ошибка Начало ввод M M нет 2 В месяце 28 дней 1,3,5,7, 8,10,12 В месяце 31 день
5 Программа program qq; var M: integer; begin writeln('Введите номер месяца:'); read ( M ); caseof case M of 2: Write(В месяце 28 дней); 4,6,9,11: Writeln(В месяце 30 дней); 1,3,5,7,8,10,12: Writeln(В месяце 31 день) else else Writeln(Неверный номер месяца); end end; end. program qq; var M: integer; begin writeln('Введите номер месяца:'); read ( M ); caseof case M of 2: Write(В месяце 28 дней); 4,6,9,11: Writeln(В месяце 30 дней); 1,3,5,7,8,10,12: Writeln(В месяце 31 день) else else Writeln(Неверный номер месяца); end end; end. Ни один вариант не подошел Ключ выбора Список выбора
6 Оператор выбора Алгоритм работы: 1.Вычисляется или вводится выражение ; 2.Управление передается тому оператору, перед которым стоит константа выбора, равная вычисленному или введенному значению; 3.Если в списке не будет найдена такая константа, управление передается оператору, стоящему за словом Else (часть Else может отсутствовать). Тогда при отсутствии в списке выбора нужной константы оператор выбора просто завершит свою работу.
7 Оператор выбора Особенности: Сaseпосле Сase может быть имя переменной или арифметическое выражение целого типа ( integer ) char или символьного типа ( char ) case i+3 of 1: begin a := b; end; 2: begin a := c; end; end; case i+3 of 1: begin a := b; end; 2: begin a := c; end; end; var c: char;... case c of 'а': writeln('Антилопа'); 'б': writeln('Барсук') else writeln('Не знаю'); end; var c: char;... case c of 'а': writeln('Антилопа'); 'б': writeln('Барсук') else writeln('Не знаю'); end;
8 Оператор выбора Особенности: beginendесли нужно выполнить только один оператор, слова begin и end можно не писать нельзя ставить два одинаковых значения в списке выбора: case i+3 of 1: a := b; 1: a := c; end; case i+3 of 1: a := b; 1: a := c; end; case i+3 of 1: a := b; 2: a := c; end; case i+3 of 1: a := b; 2: a := c; end;
9 Оператор выбора Особенности: значения, при которых выполняются одинаковые действия, можно группировать case i of 1: a := b; 2,4,6: a := c; : a := d; 20,21,25..30: a := e; else writeln('Ошибка'); end; case i of 1: a := b; 2,4,6: a := c; : a := d; 20,21,25..30: a := e; else writeln('Ошибка'); end; перечисление диапазон смесь
10 Что неправильно? case a of 2: begin a := b; 4: a := c; end; case a of 2: begin a := b; 4: a := c; end; case a of 2: a := b 4: a := c end; case a of 2: a := b 4: a := c end; ; case a of 2..5: a := b; 4: a := c; end; case a of 2..5: a := b; 4: a := c; end; case a of 0..2: a := b; 6..3: a := c; end; case a of 0..2: a := b; 6..3: a := c; end; 3..6: case a+c/2 of 2: a := b; 4: a := c; end; case a+c/2 of 2: a := b; 4: a := c; end; case a of 2: a := b; d := 0; 4: a := c; end; case a of 2: a := b; d := 0; 4: a := c; end; begin end;
11 Задания (с защитой от неверного ввода) 1. Ввести номер дня недели и вывести название дня недели Пример: Введите номер дня недели: Вторник 2 2. Ввести номер месяца и номер дня, вывести число дней, оставшихся до Нового года. Пример: Введите номер месяца: 12 Введите день: 25 До Нового года осталось 6 дней. 3. Вывести значение Y если x, если n=1; b, если n=2; Y = b+x, если n=3; 1/x, если n=4 Значения b и х – целые, задать с клавиатуры
12 Задания 4. Ввести номер месяца и вывести название времени года. Пример: Введите номер месяца: 4 весна