Использование составных логических условий (связки “и”; “или”)
При записи составных логических условий следует помнить порядок выполнения операций.
Задача 3.
Даны числа X,Y,Z. Проверить, можно ли построить треугольник с данными сторонами.
Решение:
Program Vet3;
Var X,Y,Z:Integer;
Begin
Writeln(’Введите 3 числа’);
Readln(X,Y,Z);
If (X+Y>Z) and (X+Z>Y) and (Y+Z>X) Then
Writeln(’Треугольник существует.’)
Else
Writeln(’Треугольник не существует.’);
End.
Задачи
1. Даны числа А, В, С. Определить есть ли среди них отрицательные числа.
2. По введенной температуре определить здоров человек или болен.
3. Даны числа А, В, С. Определить какое из чисел лежит между двумя другими
4. Даны числа А, В, С. Вывести их на экран упорядоченными по возрастанию.
5. Дана точка M(X,Y). Определить, лежит ли данная точка внутри области D:
a) у б) у в) у г) у y=x
2
D 2 х -2 2 х -3 2 х х
D D -2 D
д) у у=х2 е) у ж) у з) у
2
D х 2 х -2 2 х х
D D -2 D
6.4.Оператор варианта
Case B of
<список меток 1>:S1;
<список меток 2>:S2;
:
<список меток n>:Sn;
[Else S;]
End;
S1, S2,…, Sn – любые операторы в единственном числе;
B – выражение, дающее значение порядкового типа, оно называется переключателем;
<список меток n> - это перечень констант того же типа, что и значение переключателя B. Разделяются запятой или (..).
Примеры:
1..50; 1,2,4; ’a’,’d’;
Выполняется:
1. Вычисляется значение переключателя B;
2. Отыскивается список меток, включающий это значение и выполняется соответствующий оператор;
3. Если значение переключателя не входит ни в один из списков меток, то в случае полной формы операторa Case, выполняется оператор S, а в случае неполной формы управление передается следующему оператору программы.
Здесь перед Else (;) ставится.
Задача 4:
По номеру дня недели вывести соответствующее ему название.
Решение:
Program Vet4;
Var Z:Integer;
Begin
Writeln(’Введите номер дня недели’);
Readln(Z);
Case Z of
1:Writeln(’Понедельник’);
2:Writeln(’Вторник’);
3:Writeln(’Среда’);
4:Writeln(’Четверг’);
5:Writeln(’Пятница’);
6:Writeln(’Суббота’);
7:Writeln(’Воскресенье’);
Else
Writeln(’Дня с таким номером не существует.’);
End;
End.
Задача 5:
По заданному символу определить, является ли он цифрой, латинской буквой или другим знаком.
Решение:
Program Vet5;
Var Z:Char;
Begin
Writeln(’Введите символ’);
Readln(Z);
Case Z of
’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’:Writeln(’Символ - цифра’);
’a’..’z’:Writeln(’Символ – латинская буква’);
Else
Writeln(’Другой знак.’);
End;
End.
Задачи:
1. Определить по введенному номеру месяца, количество дней в нем.
2. Определить, принадлежит ли введенное целое число к десяткам, сотням или тысячам.
3. По номеру квартала определить принадлежащие ему названия месяцев.
4. По номеру четверти координатной плоскости вывести знаки Х и У.
Оператор перехода
Оператор перехода имеет вид:
Goto M;
M- метка. Все метки должны быть описаны в разделе описания меток;
В рассмотренных выше программах операторы выполнялись в том порядке, в каком они были записаны. Изменить этот порядок можно с помощью оператора перехода. Он прерывает естественную последовательность операторов: следом за ним выполняется оператор, помеченный указанной меткой.
Оператор Goto Met; передает управление на оператор с меткой Met.
Пусть программа содержит последовательность операторов:
X:=2; A:=X; Goto Met;
1:A:=A*2; B:=A; Met:Writeln(B);
В этом случае сначала выполняются операторы X:=2; A:=X; затем следует переход к оператору, помеченному меткой Met т.е. к оператору Writeln(B);
Задача 6.
Даны 3 отрицательных числа. Найти предыдущее и следующее значение максимального из этих чисел.
Решение:
Program Vet6;
Label 1;
Var A,B,C:Integer;
Begin
1:Writeln(’Введите отрицательные числа’);
Readln(A,B,C);
If (A>0) or (B>0) or (C>0) Then Goto 1;
{далее задачу решаем самостоятельно}
End;