Условный оператор позволяет реализовать ветвление в программе, т.е. выбор последовательности действий в зависимости от некоторого условия.
Структура простого условного оператора
IF <условие> THEN P1 ELSE P2 ;
<следующий оператор> ;
где IF, THEN, ELSE – зарезервированные слова, а P1, P2 – операторы.
Условие – это логическое выражение, которое может принимать два значения: “ДА” – если условие верно (истинно), и “НЕТ” – , если условие неверно (ложно).
Логическое выражение состоит из:
- операндов (констант, переменных, функций);
- знаков сравнения (=, >, <, <=, >=, < > );
- логических операций OR (логическое или), AND (логическое и), NOT (отрицание);
- круглых скобок (при необходимости).
Условный оператор работает по следующему алгоритму:
· в начале вычисляется логическое выражение;
· если результат есть TRUE (истина), то выполняется оператор P1,после него выполняется следующий оператор, а оператор P2 пропускается;
· если результат есть FALSE (ложь), то выполняется оператор P2, после него выполняется следующий оператор, а оператор P1 пропускается;
· часть условного оператора начинающаяся с ELSE может отсутствовать (в зависимости от задачи).
Обратите внимание на то, что в THEN- и ELSE- части стоит только один оператор. Чтобы решить задачу, в которой по выполнению или невыполнению условия нужно совершить не одно, а несколько действий используется составной условный оператор.
Структура составного условного оператора
IF <условие> THEN
Begin
<группа операторов 1>
End
ELSE
Begin
< группа операторов 2>
End ;
<следующий оператор> ;
В операторные скобки Begin End можно заключить любое количество операторов. Знак "точка с запятой" не ставится перед служебным словом ELSE, но операторы в группах, естественно, отделяются друг от друга этим знаком.
Пример выполнения работы:
Условие: Ввести Х. Вычислить значение Y SIN X , если X>1 Y= COS X , если X<=1 | Составление программы: Var x, y: Real; Begin Readln(x); If x>1 Then Y:=Sin(x) Else Y:=Cos(x); Writeln ('Значение Y=', Y); End. |
Условие: Ввести два числа. Если первое число больше, то оба увеличить в 3 раза, в противном случае оба числа обнулить. | Var x, y: Integer; Begin Readln(x,y); If x>y Then Begin X:=X*3; Y:=Y*3; End Else Begin X:=0; Y:=0; End; Writeln(x,y); End. |
Очень часто приходиться выбирать путь решения задачи не из двух, а из нескольких возможных вариантов. В программировании такой вариант можно реализовать с помощью нескольких условных операторов.
IF <Условие1> THEN P1
ELSE
IF <Условие2> THEN P2
ELSE
IF <Условие3> THEN P3
ELSE
P4;
Алгоритм работы такой конструкции следующий:
§ если Условие1 истинно, то выполняется оператор Р1 (или блок операторов), следующих за конструкцией THEN, в противном случае этот блок пропускается;
§ если Условие1, следующее за оператором IF ложно, то анализируется Условие2, следующее за ELSE IF.
§ если оно истинно, то выполняется оператор Р2 (или блок операторов), следующих за THEN, а остальные операторы пропускаются.
§ операторы, следующие за последним ELSE, выполняются лишь в том случае, если ложны все условия в конструкциях IF.
Любая встретившаяся часть ELSE принадлежит ближайшей к ней части THEN условного оператора. Условные операторы IF в такой конструкции называются вложенными.
Пример выполнения работы:
Условие: Вычислить значение функции Y SIN X , если X<0 Y= COS X , если 0<=X<=1 TG X , если X>1 | Составление программы: Var X,Y: Real; Begin Readln(X); If X<0 Then Y:=SIN(X) Else If X>1 Then Y:=SIN(X)/COS(X) Else Y:=COS(X); Writeln('Значение функции Y=',Y); End. |
Контрольные вопросы
· Как работает и когда используется простой условный оператор If?
· Как работает и когда используется составной условный оператор If?
· Назначение операторных скобок при записи условного оператора?
· В каких случаях используются вложенные структуры условного оператора?
· Какой тип должно иметь выражение, следующее за IF ?
Варианты к лабораторной работе №4
(ваш номер по журналу соответствует номеру варианта)
№ | Задания | |||||||
x<=1 | ||||||||
Ввести X и Y. Меньшее из этих чисел заменить их полусуммой, а большее - их удвоенным произведением | ||||||||
Ввести двузначное число. Определить входит ли в него цифра 3 | ||||||||
x<1,3 x=1,3 x>1,3 | ||||||||
Ввести два числа. Если оба числа положительны, найти их сумму, в противном случае найти их произведение. | ||||||||
Ввести двузначное число. Определить входит ли в него цифры 7 или 5 | ||||||||
x>1,2 x=1,2 x<1,2 | ||||||||
Ввести два числа. Вывести первое число, если оно больше второго, и оба, если это не так. | ||||||||
Ввести четырехзначное число. Определить совпадают ли в нем первая и последняя цифры | ||||||||
Даны три числа. Найти пары кратных. (например, 12, 6, 4. 12 кратно 6, 12 кратно 4) | ||||||||
Ввести трехзначное число. Определить совпадают ли в нем первая и вторая цифры | ||||||||
x<=1 1<x<=2 x>2 | ||||||||
Ввести двузначное число. Определить, является ли сумма его цифр четной или нет | ||||||||
Ввести трехзначное число. Определить содержит ли оно две одинаковых цифры | ||||||||
Ввести три числа. Вычислить ||a-b|-c|, не используя стандартные функции. Вывести результат | ||||||||
Ввести четыре числа. Вывести два наибольших числа | ||||||||
Ввести трехзначное число. Вывести «да», если оно содержит только цифры 1, 2,0 | ||||||||
bx<1 bx=1 bx>1 | ||||||||
Даны числа A, B, C, D. Если A £ B £ C £ D, то каждое число заменить наибольшим из них; если A>B>C>D, то числа не изменять; в противном случае все числа заменить их квадратами | ||||||||
Ввести трехзначное число. Определить содержит ли оно цифры 1, 2 или 3 | ||||||||
Ввести два числа. Найти квадрат меньшего числа и куб большего | ||||||||
Ввести трехзначное число. Определить содержит ли оно цифры <5 | ||||||||
Дано двузначное число. Определить является ли суммы его цифр двузначным числом | ||||||||
Ввести трехзначное число. Определить входит ли в него цифра 7 | ||||||||
X<0 X>=0 | ||||||||
Ввести число от 0 до 1000. Определить количество цифр в числе | ||||||||
Ввести четырехзначное число. Определить симметрично ли оно | ||||||||
X<= | ||||||||
Ввести три числа. Найти сумму двух из них, которые не являются min | ||||||||
Ввести двузначное число. Определить совпадают ли в нем первая и вторая цифры | ||||||||
X > 10 X<=10 | ||||||||
Ввести номер дня недели. Вывести одно из сообщений: «рабочий день», «суббота», «воскресенье» | ||||||||
Ввести трехзначное число Вывести «да, если оно состоит из цифр 7,8,9 | ||||||||
Ввести четырехзначное число Вывести «да», если оно содержит две цифры 5 | ||||||||
Ввести четыре числа. Вывести максимальное | ||||||||
x>1 x=1 x<1 | ||||||||
Дано двузначное число. Определить является ли суммы его цифр двузначным числом | ||||||||
Ввести два двузначных числа Вывести «да», если числа состоят из одинаковых цифр и не равны между собой | ||||||||
x>2 | ||||||||
Ввести дату дня (день, месяц, год). Вывести дату следующего дня | ||||||||
Ввести трехзначное число Вывести «да», если оно содержит две одинаковые цифры | ||||||||
t<0,1 t=0,1 t>0,1 | ||||||||
Ввести два числа – интервал. Вывести сообщение, попадает ли третье число в заданный двумя первыми числами интервал. | ||||||||
Ввести четырехзначное число. Определить совпадают ли в нем первая и вторая цифры | ||||||||
X>=12 X<12 | ||||||||
Ввести числа A,B,C,D. Выяснить, можно ли прямоугольник со сторонами a,b уместить внутри прямоугольника со сторонами c,d так, чтобы каждая из сторон одного прямоугольника была параллельна или перпендикулярна каждой стороне второго прямоугольника | ||||||||
Ввести четырехзначное число. Вывести «да», если все его цифры различны | ||||||||
X>=3 x < 3 x=3 | ||||||||
Ввести два числа. Разделить меньшее на большее | ||||||||
Ввести трехзначное число Вывести «да», если оно содержит хотя бы одну четную цифру | ||||||||
X=20 X 20 | ||||||||
Ввести двузначное число. Определить входит ли в него цифры 2 или 4 | ||||||||
Ввести три числа. Вывести то из чисел, которое не является max и min | ||||||||
X>-10 X<=-10 | ||||||||
Даны два числа. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то заменить числа нулями | ||||||||
Ввести трехзначное число Вывести «да», если оно содержит все одинаковые цифры | ||||||||
x 1 | ||||||||
Даны три числа. Вывести те из них, которые принадлежат интервалу [1,3] | ||||||||
Ввести четырехзначное число. Определить совпадают ли в нем вторая и последняя цифры | ||||||||
Ввести трехзначное число. Вывести «Да», если оно содержит две одинаковых цифры | ||||||||
Ввести два двузначных числа. Вывести цифру (цифры), если они содержится в обоих числах | ||||||||
Ввести координаты центров для двух окружностей и их радиусы. Определить, пересекаются ли окружности | ||||||||
Если сумма трех чисел x, y, z меньше единицы, то наименьшее из трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений | ||||||||
Ввести два двузначных числа. Вывести «да», если числа состоят из одинаковых цифр | ||||||||
X 100 X=100 | ||||||||
Ввести номер года. Определить является ли он високосным (год високосный, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400, например, 1700, 1800 и 1900 – невисокосные годы, 2000 – високосный). | ||||||||
Ввести два двузначных числа. Вывести «да», если ни одна цифра первого числа не содержится во втором | ||||||||
10<X<20 в остальных случаях | ||||||||
Даны координаты двух точек. Определить какая из них находится дальше от начала координат | ||||||||
Ввести трехзначное число Вывести «да», если все цифры кратны 3 | ||||||||
0<x<10 в остальных случаях | ||||||||
Ввести координаты точки. Определить, в какой координатной четверти она находится. | ||||||||
Ввести трехзначное число Вывести «да», если оно содержит две цифры 5 | ||||||||
x<0 0<=X<=10 X>10 | ||||||||
Ввести три числа. Вывести сообщение «да», если числа введены в порядке возрастания, в противном случае вывести «нет». | ||||||||
Ввести трехзначное число. Вывести «да», если все его цифры четны | ||||||||
-2<X<2 в остальных случаях | ||||||||
Задан радиус круглой металлической заготовки. Определить, можно вырезать из нее две прямоугольные пластины с размерами AxB, CxD | ||||||||
Ввести четырехзначное определить является ли оно перевертышем | ||||||||
i<4 i>6 | ||||||||
Ввести стороны двух прямоугольников. Определить, у какого из них больше площадь | ||||||||
Ввести двузначное число. Определить входит ли в него цифры 0 или 8 | ||||||||
-5<X<12 в остальных случаях | ||||||||
Даны числаA, B, C . Удвоить эти числа, если A ³ B ³ C, и заменить их абсолютными значениями, если это не так | ||||||||
Ввести трехзначное число. Вывести «да», если вторая цифра больше других | ||||||||
x<1,4 x=1,4 x>1,4 | ||||||||
Ввести стороны прямоугольника и радиус круга. Определить, поместится ли круг внутри прямоугольника | ||||||||
Ввести трехзначное число. Определить совпадают ли первая и последняя цифра числа | ||||||||
ЛАБОРАТОРНАЯ РАБОТА № 4а
Тема:Использование оператора выбора в программе на TurboPascal 7.0
Цель работы:Изучение возможностей использования альтернативного выбора в программах. Овладение практическими навыками использования оператора выбора в программах
Пояснения к работе
Оператор выбора CASE может быть использован вместо условного оператора, если требуется сделать выбор более чем из двух возможностей
Оператор выбора CASE позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит селекторное выражение – выражение порядкового типа (целочисленный, логический, символьный).
CASE <селекторное выражение> OF
M1 P1;
M2 P2;
Mn Pn;
ELSE оператор
END;
Следующий оператор;
где М1, М2, Мn –метки, P1,P2,Pn –операторы.
Оператор выбора выполняется следующим образом.
· сначала вычисляется селекторное выражение;
· затем выполняется оператор, метка варианта которого равна текущему значению селектора;
· после этого происходит выход из оператора CASE на следующий оператор;
· если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE;
· если ветвь ELSE отсутствует, то управление передается следующему за CASE оператору.
Пример выполнения работы:
Условие: Составить программу, которая анализирует человека по возрасту и относит к одной из четырех групп: дошкольник, ученик, работник, пенсионер. | Составление программы: Var vozr: Integer; Begin Writeln('Какой возраст человека ?'); Readln(vozr); Case vozr Of 1..6 : Writeln('Это - дошкольник'); 7..17 : Writeln('Это - ученик'); 18..60: Writeln('Это - работник'); 60..100: Writeln('Это - пенсионер'); End; End. |
Контрольные вопросы
· Когда используется оператор выбора CASE?
· Как работает оператор выбора CASE?
· Какой тип должно иметь селекторное выражение?
· Какая часть оператора выбора может отсутствовать?
Варианты к лабораторной работе №4а
(ваш номер по журналу соответствует номеру варианта)
№ | Задание |
Составить программу, позволяющую получить словесное описание школьных отметок (1-плохо, 2-неудовлетворительно, 3-удоволетворительно, 4-хорошо, 5-отлично). | |
Имеется пронумерованный список деталей 1) шуруп 2) винт 3) гвоздь 4) гайка 5) болт. Написать программу, которая по номеру детали выводит на экран её название. | |
Написать программу, которая бы по введённому номеру единицы измерения (1-миллиграм, 2-грамм, 3-килограмм, , 4-центнер, 5-тонна) и масса M выводит соответствующее значение массы в килограммах. | |
Написать программу, которая бы по введённому номеру единицы измерения (1-децеметр, 2-километр, 3-метр, 4-миллиметр, 5-сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах. | |
Написать программу, которая по данному натуральному числу от 1 до 12 (номеру месяца) выдаёт все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то: 1 января - Новый год, 7 января – Рождество. | |
Составить программу, которая при вводе одного из символов: y или Y выводит на экран слово “Да”, а при вводе n или N – слово “Нет” | |
Написать программу, которая выдавала бы на экран словесное представление числа в диапазоне от 0 до 9 (0-нуль, 1-единица и т.д.). | |
Написать программу, которая по номеру месяца выдавала название следующего за ним месяца (при m=1 получаем февраль, 4-май) | |
Составить программу, которая анализирует студента по его оценкам и выводит на экран одно из сообщений: “Вы учитесь плохо”, “Вы учитесь посредственно” и т.д. | |
Составить программу, которая в зависимости от порядкового номера дня недели (1, 2, …7) выводит на экран его название. | |
Дано целое число k(1<=k<=365). Определить, каким будет K-й день года: субботой, воскресеньем или рабочим днем, если 1 января – понедельник. | |
Ввести возраст ребенка. Вывести в какой отряд пионерского лагеря он попадет, если известен принцип распределения: с 6 до 7 лет - 5 отряд; с 7 до 9 лет - 4 отряд; с 9 до 11 лет - 3 отряд; с 11 до 13 - 2 отряд с 13 до 15 (включительно) - 1 отряд. | |
Ввести число ( от 1 до 4) если число = 1 то вывести окружность, если - 2, то вывести квадрат, если - 3, вывести ромб, если - 4, вывести параллелограмм. | |
Ввести число от 0 до 1000000. Определить количество цифр в числе. | |
Номер студенческой группы обозначается трехзначным числом. Первая цифра номера обозначает факультет. 1 – экономический, 2 – юридический, 3 – информатика, 4 – исторический. Ввести номер группы, вывести название факультета. | |
Ввести возраст ребенка. Вывести в какой отряд пионерского лагеря он попадет, если известен принцип распределения: с 6 до 7 лет - 1 отряд; с 7 до 9 лет - 2 отряд; с 9 до 11 лет - 3 отряд; с 11 до 13 - 4 отряд с 13 до 15 (включительно) - 5 отряд. | |
Ввести время в часах. Определить время суток (ночь, утро, день, вечер). | |
Составить программу, которая анализирует студента по его оценкам и выводит на экран одно из сообщений: “Вы учитесь плохо”, “Вы учитесь посредственно” и т.д. | |
Ввести число от 0 до 10000. Определить количество цифр в числе | |
Написать программу, которая выдавала бы на экран словесное представление числа в диапазоне от 0 до 9 (0-нуль, 1-единица и т.д.) | |
Номер студенческой группы обозначается трехзначным числом. Вторая цифра номера обозначает факультет. 1 – экономический, 2 – юридический, 3 – информатика, 4 – исторический. Ввести номер группы, вывести название факультета. | |
Дано целое число k(1<=k<=365). Определить, каким будет K-й день года: субботой, воскресеньем или рабочим днем, если 1 января – понедельник. | |
Составить программу, которая в зависимости от порядкового номера дня недели (1, 2, …7) выводит на экран его название. | |
Написать программу, которая по данному натуральному числу от 1 до 12 (номеру месяца) выдаёт все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то: 1 января - Новый год, 7 января – Рождество. | |
Ввести число от 0 до 1000. Определить количество цифр в числе | |
Имеется пронумерованный список деталей 1) шуруп 2) винт 3) гвоздь 4) гайка 5) болт. Написать программу, которая по номеру детали выводит на экран её название. | |
Ввести число ( от 1 до 4) если число = 1 то вывести окружность, если - 2, то вывести квадрат, если - 3, вывести ромб, если - 4, вывести параллелограмм. | |
Ввести время в часах. Определить время суток (ночь, утро, день, вечер). | |
Написать программу, которая по номеру месяца выдавала название следующего за ним месяца (при m=1 получаем февраль, 4-май). | |
Составить программу, позволяющую получить словесное описание школьных отметок (1-плохо, 2-неудовлетворительно, 3-удоволетворительно, 4-хорошо, 5-отлично). | |
Написать программу, которая бы по введённому номеру единицы измерения (1-миллиграм, 2-грамм, 3-килограмм, , 4-центнер, 5-тонна) и масса M выводит соответствующее значение массы в килограммах. |
ЛАБОРАТОРНАЯ РАБОТА № 5
Тема:Использование оператора цикла в программе на TurboPascal 7.0
Цель работы:Изучение возможностей использования оператора, реализующего цикл с параметром. Овладение практическими навыками использования оператора FOR
Пояснения к работе
Циклический алгоритм называют циклом. Различают три типа цикла:
· цикл с параметром (используется, когда заранее известно количество повторений);
· цикл ПОКА (с предусловием);
· цикл ДО (с постусловием).
Оператор цикла служит для организации выполнения циклических процессов (таких, когда одни и те же действия многократно повторяются).