Условный оператор
Очень часто отдельные этапы вычислений выполняются в зависимости от условий (не всегда последовательно).
Формат: IF <условие> THEN
<операторы1>
ELSE
<операторы2>
END IF
IF, THEN, ELSE, END IF – служебные слова.
Оператор можно прочитать так: если выполняется условие, то выполнятся операторы1, иначе выполнятся операторы2.
Условие может быть правдой (истинным) или неправдой (ложным).
Операторы1 – будут выполняться, если условие истинно.
Операторы2 – будут выполняться, если условие ложно.
Условие – это логическое выражение, которое может содержать операции (<, >, =, <>, <=, >=) и логические связки (and, or).
Операция или связка |
Смысл |
Пример |
< |
Меньше |
Если x меньше y, то … IF x < y THEN… |
<= |
Меньше или равно |
Если x меньше или равно y, то … IF x <= y THEN… |
> |
Больше |
Если x больше y, то … IF x > y THEN… |
>= |
Больше или равно |
Если x больше или равно y, то … IF x >= y THEN… |
<> |
Не равно |
Если x не равно y, то … IF x <> y THEN… |
= |
Равно |
Если x равно y, то … IF x = y THEN… |
And |
И |
Если необходимо проверить, чтобы одновременно выполнялись условия: x > y x - y > 5 x + y < 100, то условие будет выглядеть так: IF( x > y) and (x - y > 5) and (x + y < 100) THEN… Если хотя бы одно из условий окажется не верным, то все условие будет считаться ложным. |
Or |
Или |
Если необходимо проверить, чтобы выполнялось хотя бы одно из условий: x > y x - y > 5 x + y < 100,то условие будет выглядеть так: IF( x > y) or (x - y > 5) or (x + y < 100) THEN… Если хотя бы одно из условий окажется верным, то все условие будет считаться истинным. |
Задание: Дано число х. Если данное число больше 10 и не больше 200, то нарисовать в центре экрана красный круг с радиусом, равным этому числу, иначе нарисовать зеленый квадрат со стороной х, левый верхний угол которого располагается в точке с координатами (80, 80).
Решение:
В программе необходимо реализовать следующий алгоритм:
1) Ввести число: х;
2) Проверить условие 10 < x <= 200. Если условие истинно, то нарисовать круг, а иначе – нарисовать квадрат.
Программа:
CLS
PRINT "введите число"
INPUT x
SCREEN 12
IF (x > 10) and (x <= 200) THEN
CIRCLE (320, 240), x, 4
PAINT (320, 240), 4, 4
ELSE
LINE (80, 80) - (80 + x, 80 + x), 2, BF
END IF
END
Задание: Дан четырехзначный номер трамвайного билета. Проверить: счастливый ли он.
Решение:
Пусть х – переменная, в которой будет храниться номер.
В программе необходимо реализовать следующий алгоритм:
1) Ввести номер: х;
2) Найти цифры номера: х1, х2, х3, х4;
3) Найти суммы цифр: s1 = x1 + x2 и s2 = x3 + x4;
4) Если s1=s2, то печатаем «счастливый билет», иначе печатаем «не счастливый билет».
Программа:
CLS
PRINT "введите четырехзначный номер билета"
INPUT x
x4 = x mod 10
x = x \ 10
x3 = x mod 10
x = x \ 10
x2 = x mod 10
x1 = x \ 10
s1 = x1 + x2
s2 = x3 + x4
IF s1 = s2 THEN
PRINT "счастливый билет"
ELSE
PRINT "не счастливый билет"
END IF
END
Особые формы условного оператора
1. Если в случае истинности условия нужно выполнить несколько операторов, а в случае ложности ничего выполнять не надо.
Формат: IF <условие> THEN
<операторы>
END IF
Задание: Дано пятизначное число. Если число четное, то найти сумму его цифр.
Решение:
Пусть х – переменная, в которой будет храниться число, а sum – сумма цифр этого числа.
Число является четным, если при делении на 2 в остатке получается 0.
В программе необходимо реализовать следующий алгоритм:
1) Ввести число: х;
2) Проверить, является ли число четным. Если число четное, то:
а) найти его цифры: х1, х2, х3, х4, х5;
б) найти сумму цифр;
в) вывести результат.
Программа:
CLS
PRINT "введите пятизначное число"
INPUT x
IF x mod 2 = 0 THEN
х5 = x mod 10
x = x \ 10
x4 = x mod 10
x = x \ 10
x3 = x mod 10
x = x \ 10
x2 = x mod 10
x1 = x \ 10
s = x1 + x2 + x3 + x4 + x5
PRINT "сумма цифр данного числа ", sum
END IF
END
2. Если в случае истинности условия нужно выполнить один оператор, и в случае ложности тоже только один оператор, то команду можно записывать в одну строку и не писать служебное слово END IF.
Формат: IF <условие> THEN <оператор1> ELSE <оператор2>
Задание: Дано трехзначное число и цифра k. Если в середине числа 0, то заменить 0 на цифру k, иначе убрать среднюю цифру.
Решение:
Пусть х – переменная, в которой будет храниться число, а y – результат.
В программе необходимо реализовать следующий алгоритм:
1) Ввести число: х;
2) Найти его цифры: х1, х2, х3;
3) Сравнить среднюю цифру с нулем и, в случае истинности сравнения, собрать по разрядам число y из цифр х1, k, х3, а иначе, собрать у из цифр х1 и х3;
4) Вывести результат.
Программа:
CLS
PRINT "введите трехзначное число"
INPUT x
x3 = x mod 10
x = x \ 10
x2 = x mod 10
x1 = x \ 10
IF x2 = 0 THEN y = x1 * 100 + k * 10 + x3 ELSE y = x1 * 10 + x2
PRINT "результат: ", y
END
3. Если в случае истинности условия нужно выполнить один оператор, а в случае ложности ничего выполнять не надо, то команду можно записывать в одну строку и не писать служебное слово END IF.
Формат: IF <условие> THEN <оператор>
Задание: Дано пятизначное число. Посчитать количество нулей в его записи.
Решение:
Пусть х – переменная, в которой будет храниться число, а kol – результат.
В программе необходимо реализовать следующий алгоритм:
1) Ввести число: х;
2) Найти его цифры: х1, х2, х3, x4, x5;
3) Поочередно сравнивать каждую цифру с 0 и, в случае истинности условия, увеличивать переменную kol на 1;
4) Вывести результат.
Программа:
CLS
PRINT "введите пятизначное число"
INPUT x
х5 = x mod 10
x = x \ 10
x4 = x mod 10
x = x \ 10
x3 = x mod 10
x = x \ 10
x2 = x mod 10
x1 = x \ 10
IF x1 = 0 THEN kol = kol + 1
IF x2 = 0 THEN kol = kol + 1
IF x3 = 0 THEN kol = kol + 1
IF x4 = 0 THEN kol = kol + 1
IF x5 = 0 THEN kol = kol + 1
PRINT "в числе ", kol, " нулей"
END
Задание: Дано трехзначное число. Составить из его цифр новое число, расположив цифры в порядке возрастания.
Решение:
Пусть х – данное число, х1, х2, х3 – его цифры, а у - результат. Чтобы составить новое число, необходимо выбрать из х1, х2 и х3 минимальную (min), среднюю (s) и максимальную (max) цифры. Предположим, что х1 является максимальной, т.е. max = x1. Сравним с переменной max следующую цифру. Если x2 > max, то max = x2. Теперь в переменной max будет храниться наибольшее из значений х1 или х2. Сравним с max третью цифру. Если x3 > max, то max = x3. Теперь в переменной max будет храниться наибольшее из значений х1, х2 или х3.
Максимальная цифра найдена. Аналогично найдется и минимальная.
Чтобы найти среднюю цифру, достаточно из суммы всех цифр вычесть минимальную и максимальную.
А теперь из цифр min, s и max соберем по разрядам искомое число у.
В программе необходимо реализовать следующий алгоритм:
1) Ввести число: х;
2) Найти его цифры: х1, х2, х3;
3) Найти максимальную цифру (max);
4) Найти минимальную цифру (min);
5) Найти среднюю цифру (s);
6) Собрать результат (y);
7) Вывести результат.
Программа:
CLS
PRINT "введите трехзначное число"
INPUT x
x3 = x mod 10
x = x \ 10
x2 = x mod 10
x1 = x \ 10
max = x1
IF x2 > max THEN max = x2
IF x3 > max THEN max = x3
min = x1
IF x2 < min THEN min = x2
IF x3 < min THEN min = x3
s = x1 + x2 + x3 - min - max
y = min * 100 + s * 10 + max
PRINT "результат ", у
END
Задания для самостоятельного выполнения
1. Даны два трехзначных числа. Большее из чисел перевернуть, а у меньшего убрать среднюю цифру (Например, а = 479 и b = 328, то результат: a = 974 и b = 38).
2. Даны три числа. Вывести на экран среднее из них.
3. Дано четырехзначное число. Заменить нулем его максимальную цифру.
4. В корзине х кг яблок и у кг груш. Яблоко весит а г, а груша – b г. Каких фруктов больше по количеству?
5. Написать программу, которая по введенному числу делает следующее:
а) если число в промежутке от 1 до 4, то рисует круг соответствующего цвета в соответствующей четверти экрана радиусом 120 пикселей (в центре четверти);
б) если число не входит в вышеуказанный диапазон, то выдает сообщение об этом.