Условные операторы позволяют выбирать для выполнения те или иные части программы в зависимости от некоторых условий. Если, например, в программе используются вещественные переменные x и z, и на каком-то этапе решения задачи требуется вычислить z=max(x, y), то желаемый результат получается в результате выполнения либо оператора присваивания z:=x, либо оператора присваивания z:=y. Поскольку значения переменных x и y заранее неизвестны, а определяются в процессе вычислений, то в программе необходимо предусмотреть оба эти оператора присваивания. Однако на самом деле должен выполниться один из них. Поэтому в программе должно содержаться указание о том, в каком случае надо выбирать для исполнения тот или иной оператор присваивания.
Это указание естественно сформулировать с использованием отношения x>y. Если это отношение при текущих значениях x и y справедливо (принимает значение true), то для исполнения должен выбираться оператор z:=x; в противном случае для исполнения должен выбираться оператор z:=y (при x=y безразлично, какой оператор выполнять, так что выполнение оператора z:=y в этом случае даст правильный результат).
Pascal ABC.NET | Урок 3 | Условные операторы if, then, else
Для задания подобного рода разветвляющихся вычислительных процессов в языках программирования существуют условные операторы. Рассмотрим полный условный оператор Паскаля:
if B then S1 else S2
Здесь if (если), then (то) и else (иначе) являются служебными словами, В – логическое выражение, а S1 и S2 – операторы.
Выполнение такого условного оператора в Паскале сводится к выполнению одного из входящих в него операторов S1 или S2: если заданное в операторе условие выполняется (логическое выражение В принимает значение true), то выполняется оператор S1, в противном случае выполняется оператор S2.
Алгоритм решения упомянутой выше задачи вычисления z= max( x, y) можно задать в виде условного оператора Паскаля
if x>y then z:= x else z:= y
При формулировании алгоритмов весьма типичной является такая ситуация, когда на определенном этапе вычислительного процесса какие-либо действия надо выполнить только при выполнении некоторого условия, а если это условие не выполняется, то на данном этапе вообще не нужно выполнять никаких действий. Простейшим примером такой ситуации является замена текущего значения переменной х на абсолютную величину этого значения: если x=0, то текущее значение х должно остаться без изменений, т.е. на данном этапе вообще не надо выполнять каких-либо действий.
В подобных ситуациях удобна сокращенная форма записи условного оператора в Паскале:
if B then S
Правило выполнения сокращенного условного оператора Паскаля достаточно очевидно: если значение логического выражения В есть true, то выполняется оператор S; в противном случае никаких иных действий не производится.
В языке программирования Паскаль в условном операторе между then и else, а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении) заданного условия надо выполнить некоторую последовательность действий, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки begin. end (это важно!). Если, например, при x< y надо поменять местами значения этих переменных, то условный оператор будет записан следующим образом в Паскале:
[Pascal] — Конструкция IF THEN ELSE | Урок №3
Наличие сокращенной формы условного оператора Паскаля требует большой осторожности при использовании. Например, условный оператор
if B1 then if B2 then S1 else S2
допускает, вообще говоря, две разные трактовки:
- какполный условный оператор Паскалявида
- каксокращенный условный оператор Паскалявида
Источник: studfile.net
Вложенные операторы If в Pascal
Добрый день, товарищи! в сегодняшней публикации мы снова окунемся в конструкцию If , но на этот раз в ее более сложный вариант исполнения. Мы разберем не задачу, а пример программы, демонстрирующий работу оператора выбора в Pascal.
1. Пример кода и листинг
Так выглядит наш сегодняшний пример
Для того, чтобы вы могли попробовать работу этого кода я дам листинг (программистский термин, если коротко — то это просто код программы), пожалуйста скопируйте его в свое приложение Паскаля.
var a,b:integer;
write(‘Первое число: ‘);
write(‘Второе число: ‘);
if (a < 10) and (b >10) then
if (a < 5) or (b >15) then
writeln(‘Вариант 1. a < 5 ИЛИ b >15’)
writeln(‘Вариант 2. a < 10 И b >10’);
if (a = b) or ((a > 10) and (b < 10)) then
writeln(‘Вариант 3. а = b ИЛИ (а > 10 И b < 10)’)
writeln(‘Вариант 4. (а < 10 И b < 10) ИЛИ (а >10 И b > 10) И (a ≠ b)’);
Уже на скриншоте видно, что структура кода несколько сложнее наших предыдущих программ. Это не страшно, в коде не так сложно разобраться, и сейчас я поясню о нем более подробно.
2. Разбираемся, что происходит
Подразумевается, что код уже у вас перед глазами)
Объявляем две переменные, пользователь вводит их. А вот далее начинаются условия. Эта программа состоит из главного If а так же вложенного условия, давайте посмотрим, как программа будет работать.
Первые два варианта
Здесь мы задаем условие для введенных пользователем чисел. Предположим он вводит 3 и 14. Первая конструкция If выполняется, так как 3 меньше 10 И 14 больше 10.
Смотрим дальше — a у нас равняется 3, 3 меньше 5, условие верно. Но b равна 14, а это меньше 15. Вывод — условие не выполняется, так? Нет, не так. В этих конструкциях присутствуют логические операции И и ИЛИ, и если в первом случае необходимо, чтобы верны были оба условия первого If ‘a, в случае же операции ИЛИ необходимо чтобы хотя бы одно условие выполнялось, что и делает (b > 15).
Вариант первый. а = 3, b = 14
Синтаксические условности, такие как begin . end внутри Ифа, отсутствие точки с запятой перед else и условия конструкции, экранированные скобками разбирались в предыдущих статьях об операторе If , поэтому сейчас останавливаться на них я не буду. Вот ссылка на предыдущую статью, где подробнее написано об этом:
Если же второе условие не выполнится — нам выпадет второй вариант развития событий.
Например, если a = 6, b = 14
3. Вторая часть — else
Вторые два варианта
Если наш главный If оказался ложным — в дело вступает оператор else .
Первое условие будет выполнено, если а будет равно b :
Источник: dzen.ru
Язык программирования Pascal. Ветвление
Операции отношения
=, , =, <>
– возвращают значение типа boolean (true или false)
Выражение отношения – два выражения,
связанных операцией отношения.
Семантика:
— Вычисляются значения выражений;
— Проверяется истинность отношения
Например:
a:=1; b:=2;c:=3;
2*a>=b+c
соответствует 2≥5 значение FALSE
3. Условный оператор if…then…else полная форма
Синтаксис:
if
then
else ;
Семантика:
1. Вычисляется значение
2. Если истинно (TRUE), то
выполняется оператор1, иначе выполняется оператор2.
Пример:
If2. Дано целое число N.
Если оно положительное, то
прибавить к нему 1; если
отрицательно вычесть из него 2.
Вывести полученное число.
program if_2;
var n: integer;
begin
write (‘введите целое число n=’);
readln (n);
if n>0
then n:=n+1
else n:=n-2;
writeln (‘n=’,n);
end.
4. Условный оператор if…then… краткая форма (обход)
Синтаксис:
if then ;
Семантика:
1. Вычисляется значение
2. Если оказывается истинным
(TRUE), то выполняется оператор1, иначе переход к
следующему оператору.
Пример:
If6. Даны два числа. Вывести
большее из них
program a_max_b;
var a,b,max : real;
begin
writeln (‘введите числа a и b’);
readln (a,b);
writeln (‘a=’,a,’ b=’,b);
max:=b;
if a>b then max:=a;
writeln (‘max=’,max);
end.
5. Условный оператор
• Если в ветвях необходимо выполнить
несколько операторов то используется
составной оператор (блок — begin…end).
Пример
If9. Даны две переменные A,
B. Поместить в A меньшее
из значений, а в B —
большее. Вывести новые
значения переменных A и B.
program aib;
var a,b,v:real;
begin
writeln (‘введите числа a и b’);
readln(a,b);
writeln (‘a=’,a,’ b=’,b);
if a>b then begin v:=a; a:=b; b:=v; end;
writeln (‘a=’,a,’ b=’,b);
end.
6. Решение задач на ветвление
Задача 1. Дано целое число. Если оно положительное, то удвоить его;
если отрицательное, то вычесть из него 2; если нулевое, то заменить
его на 10. Вывести полученное число .
Задача 2. Даны три числа. Найти наименьшее из них.
Задача 3. Даны координаты точки, не лежащие на OX и OY.
Определить номер координатной четверти для точки.
Задача 4. Для данного вещественного x найти значение функции f(х)
Задача 5. Для данного вещественного x найти значение функции f(х).
Задача 6. Программа проверки знания таблицы умножения.
Использовать функцию Random(х).
7. Решение задач на ветвление
Задача 1. Дано целое
program if_2;
var
число. Если оно
n: integer;
положительное, то
begin
удвоить его; если
write(‘введите целое число n=’);
отрицательное, то
readln(n);
вычесть из него 2; если if n>0
нулевое, то заменить егоthen n:=2*n
else
на 10. Вывести
begin
полученное число .
if n=0
then n:= n+10
else n:=n-2;
end;
writeln (‘n=’,n);
end.
8. Решение задач на ветвление
Задача 2. Даны три числа.
Найти наименьшее из них.
program if_2;
var x,y,z,min :real;
begin
writeln (‘введите три числа x y z’);
readln(x,y,z);
writeln (‘x=’,x,’ y=’,y,’ z=’,z);
min:=x;
if min>y then min:=y;
if min>z then min:=z;
writeln (‘min=’,min);
end.
9. Решение задач на ветвление
Задача 3. Даны
координаты точки, не
лежащие на OX и OY.
Определить номер
координатной четверти
для точки.
program XOY;
var x,y :real;
n: integer;
begin
writeln (‘введите координаты точки x y’);
readln(x,y);
writeln (‘x=’,x,’ y=’,y);
if x>0 then begin
if y>0 then n:=1
else n:=4;
end
else begin
if y>0 then n:=2
else n:=3;
end;
writeln (‘четверть n=’,n);
end.
10. Решение задач на ветвление
Задача 4. Для данного
вещественного x
найти значение
функции f(х)
program f_sin ;
var
x,f: real;
begin
write(‘введите x=’);
readln(x);
if x>0
then f:=2*sin(x)
else f:=6-x;
writeln (‘f(‘,x,’)=’,f);
end.
11. Решение задач на ветвление
Задача 5. Для
данного
вещественного x
найти значение
функции f(х).
program finctian ;
var
x,f: real;
begin
write(‘введите x=’);
readln(x);
if x then f:=-x
else begin if x>=2
then f:=4
else f:=x*x
end;
writeln (‘f(‘,x,’)=’,f);
end.
12. Логические операции and, or, not
• Логические операции — применяют к операндам
типа boolean, они возвращают значение типа
boolean
– бинарные операции and, or и xor, унарная not,
• Логическое выражение – имеют тип boolean.
Not — логическое отрицание
And – логическое умножение
Or — логическое сложение
Xor – или-не, строгое или.
a
b
a and b
a or b
a xor b
not a
0
0
0
0
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
0
13. Вычисление составной функции
По значению x вычислить
значение составной
функции y, заданной в
виде графика
program calc_function_1;
var x, y : real;
begin
writeln(‘ Введите значение аргумента’);
readln(x);
if x < -2 then y := 0;
if (x >= -2) and (x < -1) then y := -x — 2;
if (x >= -1) and (x < 1) then y := x;
if (x >= 1) and (x < 2) then y := -x + 2;
if x >= 2 then y := 0;
writeln(‘Для x = ‘, x, ‘ y = ‘, y);
end.
14. Задачи на логические выражения
• If28. Дан номер года. Определить количество дней в
этом году, учитывая, что обычный год насчитывает
365 дней, а високосный — 366 дней. Високосным
считается год, делящийся на 4, за исключением тех
годов, которые делятся на 100 и не делятся на 400
(например, годы 300, 1300 и 1900 не являются
високосными, а 1200 и 2000 — являются).
• If29. Дано целое число. Вывести его строку-описание
вида «отрицательное четное число», «нулевое
число», «положительное нечетное число» и т. д.
• If30. Дано целое число, лежащее в диапазоне 1–999.
Вывести его строку-описание вида «четное
двузначное число», «нечетное трехзначное число»
и т. д.
15. Задачи на логические выражения
If28. Дан номер года. Определить
количество дней в этом году,
учитывая, что обычный год
насчитывает 365 дней, а високосный
— 366 дней. Високосным считается
год, делящийся на 4, за исключением
тех годов, которые делятся на 100 и
не делятся на 400 (например,
годы 300, 1300 и 1900 не являются
високосными, а 1200 и 2000 —
являются).
Дано:
N – год (integer)
Найти: число дней D
Делится на 4
N mod 4 =0
Делится на 100
N mod 100 =0
Не делится на 400
program god;
var N,D:integer;
begin
writeln (‘введите год’);
readln (N);
D:=365;
if (N mod 4=0) and not ((N mod 100=0)
and (N mod 400<>0)) then D:=366;
writeln(‘в году ‘, N, ‘ число дней=’,D);
end.
N mod 400 <>0
(N mod 4=0) and not((N mod 100=0) and (N mod 400<>0))
16. Задачи на логические выражения
If29. Дано целое число. Вывести
его строку-описание вида
«отрицательное четное
число», «нулевое число»,
«положительное нечетное
число» и т. д.
Дано: N – целое
Найти:словесное описание
Отрицательное четное
(N <0) and (N mod 2=0)
Отрицательное нечетное
(N<0) and (N mod 2<>0)
Нулевое
N=0
Положительное четное
(N>0) and (N mod 2=0)
Положительное нечетное
(N>0) and (N mod 2<>0)
program god;
var N:integer;
begin
write (‘введите N=’);
readln (N);
if (N <0) and(N mod 2=0)
then writeln (‘отрицательное четное’);
if (N<0) and(N mod 2<>0)
then writeln (‘отрицательное нечетное’);
if (N=0)
then writeln (‘нулевое’);
if (N>0) and(N mod 2=0)
then writeln (‘положительное четное’);
if (N>0) and(N mod 2<>0)
then writeln (‘положительное нечетное’);
end.
17. Задачи на логические выражения
If30. Дано целое число, лежащее в
диапазоне 1–999. Вывести его
строку-описание вида «четное
двузначное число», «нечетное
трехзначное число» и т. д.
Дано: N – целое (1-999)
Найти:словесное описание
Цифра четная
(N <10) and (N mod 2=0)
Цифра нечетная
(N<10) and (N mod 2<>0)
Двухзначное четное
(10
Двухзначное нечетное
(100)
Трехзначное четное
(N>100) and (N mod 2=0)
Трехзначное нечетное
(N>100) and (N mod 2<>0)
program god;
var N:integer;
begin
write (‘введите N=’);
readln (N);
if (N <10) and(N mod 2=0)
then writeln (‘цифра четная’);
if (N<10) and(N mod 2<>0)
then writeln (‘цифра нечетная’);
if (10
then writeln (‘двухзначное четное’);
if (100)
then writeln (‘двухзначное нечетное’);
if (N>100) and (N mod 2=0)
then writeln (‘трехзначное четное’);
if (N>100) and (N mod 2<>0)
then writeln (‘трехзначное нечетное’);
end.
18. Задачи на логические выражения
Заданы координаты точки
(x,y). Определить, где
находится точка.
Начало
Program v16_1;
Ввод х, y
Var x,y:real;
begin
writeln(‘Введите координаты точки:’);
Точка в
Да
первой
(x>0) and (y>0)
write(‘x= ‘);readln(x);
четверти
write(‘y=
‘);readln(y);
Не
Дано: (x,y) — координаты
т
Точка во
if (x>0) and (y>0) then Даwriteln(‘Точка
Найти: четверть
второй
(x<0) and (y>0)
четверти
находится
в
первой
четверти’);
Решение:
Не
т
if (x<0) and (y>0) then
writeln(‘Точка
(x>0) and (y>0) в первой четверти
Точка в
Да
третьей
находится во (x <0)
второй
and (y <0) четверти’);
(x<0) and (y>0) во второй четверти
четверти
if
(x <0)
and
(y <0)
then
writeln(‘Точка
Не
(x <0) and (y<0) в третьей четверти
т
Точка в
(x>0) and (y <0) в четвертой четверти находится в третьей четверти’);
Да
четвертой
(x>0) and (y <0)
четверти
if
(x>0)
and
(y <0)
then
writeln(‘Точка
(x=0) or (y=0) на оси координат
Не
находится в четвертой
четверти’);
т
Точка на
Да
оси
if (x=0) or (y=0)
then
writeln(‘Точка
(x=0) or
(y=0)
координат
находится на оси координат’);
Не
т
end.
Конец
Источник: ppt-online.org