УСЛОВНЫЕ ОПЕРАТОРЫ Условные операторы предназначены для выбора к исполнению одного из возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, т.е. отсутствовать). В качестве условий выбора используется значение логического выражения. В Турбо Паскале имеются два условных оператора: if и case. ОПЕРАТОР УСЛОВИЯ IF является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Блок-схема оператора: Нет Да оператор 1 Нет Да выражение выражение оператор 2 оператор Форма записи: а) if <условие> then <оператор1> else <оператор2>; б) if <условие> then <оператор>; Оператор условия if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение выражения есть TRUE (истина), выполняется <оператор1>, указанный после слова THEN (то). Если результат вычисления выражения в условии есть FALSE (ложь), то выполняется <оператор2>. Во втором - если результат выражения TRUE, выполняется <оператор>, если FALSE - оператор, следующий сразу за оператором if. Операторы if могут быть вложенными. Задача. Вывести на экран большее из двух данных целых чисел. Дано: х – первое число у – второе число Найти: какое число больше. Решение: Если х>у, то первое число большее иначе второе число большее. Program bolshee; Var X, Y : Integer; Begin Write(’Введите первое число ’); Readln(X); Write(’Введите второе число ’); Readln(Y); If X>Y Then Writeln(X , ’ > ’, Y) Else Writeln(Y , ’ > ’, X) End. Тестирование: Дано Экран 1) X=5 Y=3 5>3 2) X=1 Y=4 4>1 1 ОПЕРАТОР CASE 1. Часто в ходе работы программы возникает необходимость выбора одного из большого числа вариантов. Это можно сделать двумя способами: 1) с помощью многократного повторения оператора условия IF; 2) используя оператор CASE. 2. Блок-схема оператора CASE: полная краткая S S S1 оператор 1 S1 S2 оператор 2 S2 S3 оператор 3 оператор 1 оператор 2 оператор 3 S3 оператор 3. Форма записи оператора CASE: Полная CASE <выражение> OF <константа 1>:<оператор 1>; <константа 2>:<оператор 2>; ... <константа N>:<оператор N>; ELSE <оператор N+1> END; Краткая CASE <выражение> OF <константа 1>:<оператор 1>; <константа 2>:<оператор 2>; ... <константа N>:<оператор N> END; 4. Замечания: 1) При выполнении оператора CASE всегда выполняется либо один, либо ни одного оператора. 2) Значение выражения обязательно должно принадлежать одному из порядковых типов. 3) Тип константы должен совпадать с типом выражения. 4) Можно задавать не только константы, но и список и диапазон констант. 5) Ветвь ELSE в операторе выбора CASE необязательна. 6) В качестве операторов используются и составные операторы. 2 5. Пример: Напишите программу, которая по номеру дня недели (1– понедельник, 2– вторник и т.д.) определяла бы рабочий это день или выходной. Дано: Х - натуральное число. Найти: является ли это число Х номером дня недели и, если является, выяснить рабочий это день или выходной. Решение: Если данное число равно 1, 2, 3, 4 или 5, то день недели рабочий, если 6 или 7, то выходной. В противном случае мы должны вывести сообщение, что дня недели с таким номером нет. Типы переменных: х – целочисленное, byte. Программа: Program work; Var X: Byte; Begin Write(’Введите номер дня недели: ’); Readln(X); Case X of 1 .. 5 : Writeln(’Это рабочий день ’); 6, 7 : Writeln(’Это выходной! ’); Else Writeln(’Нет такого дня недели ’) End. Дано 1. х=1 2. х=3 3. х=6 4. х=10 Результат 3 Задачи 1. Даны два различных числа. Определить какое из них больше. 2. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае вывести сообщение «M на N нацело не делится». 3. Определить, является ли число А делителем числа В. 4. Дано целое число. Определить: а) является ли оно четным; б) оканчивается ли оно цифрой 7; в) оканчивается ли оно четной цифрой. 5. Даны радиус круга и сторона квадрата. Определить уместится ли круг в квадрате. 6. Дано двузначное число. Определить: а) какая из его цифр больше: первая или вторая; б) одинаковы ли его цифры. 7. Дано двузначное число. Определить: а) кратна ли трем сумма его цифр; б) кратна ли сумма его цифр равна А. 8. Дано двузначное число. Определить: а) является ли сумма его цифр двузначным числом; б) больше ли числа А сумма его цифр. 9. Дано трехзначное число. Определить, какая из его цифр больше: а) первая или последняя; б) первая или вторая; в) вторая или последняя. 10. Дано трехзначное число. Выяснить, является ли оно палиндромом, т.е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево. 11. Определить, является ли число А делителем числа В? А наоборот? 12. Вывести на экран название любой вводимой цифры по-русски и поанглийски. 13. Вывести на экран название n-го дня недели по-русски и по-английски. 14. По номеру дня недели вывести на экран рабочий это день или выходной, считая выходными субботу и воскресенье. 15. По номеру страны из некоторого списка напечатать название ее столицы. 16. По номеру месяца указать, к какому времени года он относится. 17. Вывести на экран название n-го месяца года. 18. По номеру государства из некоторого списка указать континент, на котором оно находится. 19. Вывести значение вводимого числа от 1 до 10 римскими цифрами. 20. По названию буквы указать, какая она: гласная или согласная. 21. По номеру животного из некоторого списка указать, дикое оно или домашнее. 22. По номеру имени из некоторого списка указать его полный вариант. 23. Составить программу - меню, печатающую ваши оценки по математике, физике, информатике за последний месяц. Признак предмета вводится. 24. Составить алгоритм - меню, печатающий расписание уроков в вашем классе в определенный день недели. 25. Составить алгоритм - меню печати названий фильмов в трех - четырех кинотеатрах вашего района. 4