полный условный оператор If <условие> Then <оператор 1 > Else <оператор 2>;
неполный условный оператор If <условие> Then <оператор> ;
Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Простые условия записываются в виде равенств или неравенств. Сложные условия составляют из простых с помощью логических операций. Как известно, значением логического выражения является или True, или False. В первом случае выполняется <оператор 1>, во втором — <оператор 2>. В качестве <оператор 1> или < оператор 2> может выступать любой оператор языка программирования Турбо Паскаль, в частности и составной оператор, и условный оператор. В последнем случае получаемая конструкция называется вложенными условными операторами. Допускается запись неполного условного оператора, без ветви Else. В этом случае при значении False никаких действий не производится. В записи условных операторов возникает неоднозначность типа:
If <условие 1> Then <оператор 1> If <условие 2> Then <оператор 2> Else <оператор 3>;
Неясно, к какому оператору If относится ветвь Else. Она (неоднозначность) разрешается по следующему правилу: «Else относится к ближайшему оператору If, у которого еще отсутствует данная ветвь».
2. Экспериментальный раздел работы
1. Разбор оператора можно выполнить на следующем простом примере: вывести на экран наибольшее из двух данных чисел.
Program Му5_1 ;
var
х, у: integer ;
begin
WriteLn (' Введите 2 числа' ) ;
ReadLn (x,y);
If x > y Then WriteLn (x)
Else WriteLn (у);
ReadLn;
End.
Поставьте « ; » после оператора WriteLn(x). Убедитесь, что появилась ошибка «Error 113: Error in statement». Конструкция (оператор) If — Then — Else неделима, поэтому разделитель « ; » недопустим. В случае равенства чисел Ваша программа выводит значение переменной у. Измените программу так, чтобы в этом случае она выводила на экран сообщение «Числа равны».
2. Попробуем найти наибольшее из трех чисел — значения переменных х, у и z. Предположим, что нет равенств, т. е. все числа различны. Прежде чем набирать программу на ПК составьте алгоритм решения данной задачи на бумаге.
Программа определения значения наибольшего из трех чисел имеет вид:
Program Му5_2;
vаг
х, у, z: integer;
begin
WriteLn ( ' Введите три числа через пробел ' );
ReadLn (x, y, z) ;
If ( x > y) And ( x > z) Then WriteLn (x)
Else If (y > x) And ( y > z) Then WriteLn (y)
Else WriteLn (z) ;
{* If x>y Then If x>z Then WriteLn(x)
Else WriteLn(z)
Else If y>z Then WriteLn (y)
Else WriteLn (z); *}
ReadLn;
End.
Вторая версия решения заключена в фигурные скобки (комментарии). Уберите их, включите первую реализацию как комментарий, убедитесь в правильности решения. Измените программу так, чтобы анализировался и случай равенства чисел. Обратите внимание на то, что при написании сложных условий простые условия заключаются в скобки. Это связано с тем, что операции сравнения имеют более низкий приоритет, чем логические операторы.
3. Задания для самостоятельной работы
1. Запишите условный оператор, в котором значение переменной вычисляется по формуле:
а + b, если а — нечетное и а*b, если а — четное.
2. Вычислить значение функции:
х2 + 5, при х > 3
х - 8, при х < 3
3. Вывести на экран номер четверти, которой принадлежит точка с координатами (х,у), при условии, что х и у отличны от 0.
4. Написать программу, подсчитывающий сумму только положительных из трех данных чисел.
5. Даны три числа. Написать программу, подсчитывающий количество четных чисел.
6. Если целое число М делится нацело на целое число N, то вывести на экран частное от деления, в противном случае — сообщение «М на N нацело не делится».
7. Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго по абсолютной величине.
8. Вычислить значение функции:
х - 12, при х > 0
5, при х = 0
х2, при х <0
9. Даны три целых числа, найти среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.
10. Составьте программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.
11. Найти количество положительных (отрицательных) чисел среди четырех целых чисел А, В, С и D.
12. Дано двузначное (трехзначное) число. Написать программу определения:
§ входит ли в него цифра 5;
§ входят ли в него цифры 4 и 7;
§ входят ли в него цифры 3, 5, 7.
13. Даны целые числа х и у. Написать программу определения знака разности х-у. Разность не вычислять. Разрешается сравнивать числа х и у с нулем; а между собой можно сравнивать только модули чисел х и у.
14. Составьте программу, которая из трех введенных с клавиатуры чисел возводит в квадрат положительные, а отрицательные оставляет без изменения.
15. Даны два конверта прямоугольной формы с длинами сторон (a, b) и (c, d). Определить, можно ли один из конвертов вложить в другой?
Дополнительное задание:
1. По заданному году определить название животного из восточного 12 - летнего календарного цикла (кабан, крыса, вол, тигр, кролик, дракон, змея, лошадь, овца, обезьяна, петух, собака).
2. Сколько общих точек у прямой y=kx+b и окружности x2+y2=R2?
3. Составьте программу для определения корней квадратного уравнения (биквадратного уравнения ax4+bx2+c=0).
Контрольные вопросы:
1. Что такое оператор?
2. Чем отличаются простые и структурные операторы?
3. Опишите оператор присваивания, назначение и порядок выполнения.
4. Опишите оператор безусловного перехода, его назначение и особенности применения.
5. Объясните назначение оператора вызова процедуры.
6. В чем особенности пустого оператора? Его назначение?
7. Какие служебные слова могут использоваться при записи условного оператора?
8. Какой тип должно иметь выражение, стоящее в условном операторе между словами if и then?
9. Приведите примеры составных операторов?
10. Какие операторы входят в состав разветвляющихся программ?