
- •Глава 1 «Знакомство с языком»
- •«Шаблон»
- •«Типы данных»
- •«Первая комбинированная программа»
- •«Первая самостоятельная программа»
- •Глава 2 «Алгоритмические операторы»
- •«Структура типа Линейная или Следование»
- •«Структура типа Ветвление»
- •«Структура типа Цикл»
- •«Цикл со счётчиком»
- •«Цикл с постусловием»
- •«Цикл с предусловием»
- •Глава 3 «Оператор выбора case»
- •«Метки и псевдоциклы с оператором goto»
- •«Операторы деления div и mod»
- •«Рандомные числа»
- •«Некоторые полезные функции и операторы»
- •«Комментарии»
- •«Файлы. Процедуры и функции при работе с файлами»
Глава 2 «Алгоритмические операторы»
В
предыдущей главе Вы познакомились с
основным синтаксисом языка PascalABC. Пришло
время усложнить программы, добавив в
арсенал известных Вам функций так
называемые «Алгоритмические операторы».
Что они собой представляют? Это набор
операторов, служащий для выполнения
какого-либо алгоритма. Например:
Такая структура алгоритма называется «Ветвление». Есть ещё «Линейная или Следование», «Цикл» и «Подпрограмма или Функция или Процедура» - о последнем в следующих главах.
«Следование» - последовательное выполнение команд сверху вниз.
«Ветвление» - Выполнение программы идет по одной из двух, нескольких или множества ветвей. Выбор ветви зависит от условия на входе ветвления и поступивших сюда данных.
«Цикл» - Предполагает возможность многократного повторения определенных действий. Количество повторений зависит от условия цикла.
«Подпрограмма» - Команды, отделенные от основной программы, выполняются лишь в случае их вызова из основной программы (из любого ее места).
Рассмотрим все структуры по порядку в PascalABC.
«Структура типа Линейная или Следование»
Из предыдущей темы приходим к выводу, что данная структура выполняет все действия, стоящие друг после друга. Рассмотрим такой алгоритм:
Данный алгоритм содержит действия, направленные на посадку саженца. Так как все действия стоят в строго определённом порядке, алгоритм выполняется последовательно, то есть, сначала «Выкопать в земле ямку», затем «Опустить в ямку саженец» и так далее до конца.
Э
тот
алгоритм представляет собой следующую
схему:
Начало
Ввести 5 чисел
Записать в C1 сумму A1 и B2
Записать в C2 произведение A2 и B2
Записать в C3 произведение C2 и B3
Вывести на экран C1, C2 и C3
Конец
А теперь представьте, как это будет выглядеть в паскале?
BEGIN
Readln(A1, B1, A2, B2, B3)
C1≔A1+B2
C2≔A2*B2
C3≔C2*B3
Writeln(C1, ‘, ’, C2, ’, ’, C3)
END
Ничего сложного, правда? Осталось лишь объявить переменные оператором VAR и написать полностью программу. Попробуйте. [Задача №2]
Входные данные |
Выходные данные |
1, 2, 3, 4, 5 |
5, 12, 60 |
5, 9, 18, 54, 3 |
59, 972, 2916 |
0, 0, 0, 1, 1 |
1, 0, 0 |
0, 1, 10, 10, 1 |
10, 100, 100 |
«Структура типа Ветвление»
Данная
структура имеет так называемую «развилку»
- условие:
Начало
Условие
Да – выполнить действие 1
Нет – выполнить действие 2
Конец
А теперь на языке PascalABC:
BEGIN
If <условие> then <действие 1> else <действие 2>
END
Итак, мы видим, что появился новый оператор – IF – условный оператор. Синтаксис:
IF <условие> THEN <действие 1> ELSE <действие 2>
Дословно: Если <условие> тогда <действие 1>, иначе <действие 2>.
Пример: IF 2+5=7 THEN writeln(‘Верно!’) ELSE writeln(‘Неверно!’);
Обратите внимание, что точка с запятой перед ELSE не ставится никогда (!), потому что ELSE относится к оператору IF, а точка с запятой означает конец команды. Можно и без второго действия:
IF 2+5=7 THEN writeln(‘Равенство верное!’);
Так же, можно в <действие 1> включить подпрограмму. Подпрограмма – какие-то отдельные действия, заключённые в операторные скобки (begin и end;). Например:
[
BEGIN
<программа>
IF <условие> THEN begin writeln(<текст>); a≔2; end ELSE <команда 2>;
END.
]
После END перед ELSE запятая так же не ставится!
Рассмотрим такой пример:
Н
ачало
Вводим два числа
Первое число больше второго?
Да – вывести первое число на экран
Нет – вывести второе число на экран
Конец
Скорее всего, возник вопрос: «А почему были пропущены операции присвоения?». Я отвечу: «Потому что это лишнее в такой маленькой программе, поэтому мы сразу выведем большее число на экран».
Язык PascalABC:
BEGIN
Writeln(a, b)
If a>b then writeln(a) else writeln(b)
END
В этой задаче есть один нюанс – что, если числа равны? Тогда нужно добавить дополнительное условие в условии:
If a>b then writeln(a) else
If b>a then writeln(b) else Writeln(‘Числа равны’);
Дословно: если a>b, тогда написать `a`, иначе, если b>a, написать `b`, иначе, написать, что числа равны.
Попробуйте выполнить задачу самостоятельно.[Задача №3]
Входные данные |
Выходные данные |
1, 2 |
2 |
145, -90 |
145 |
19, 15 |
19 |
0, 0 |
Числа равны |
Если у Вас всё получилось – Вы молодец!
А теперь, усложним задачу!
Давайте сделаем сравнение трёх чисел?
Входные данные |
Выходные данные |
1, 2, 3 |
3 |
25, -15, 0 |
25 |
0, -1, 0 |
0 |
111, 111, 111 |
Числа равны |
Примечание: в этой задаче вам потребуется следующее усложнение условного оператора IF:
if (<условие 1>) AND (<условие 2>) then writeln(a) …
Вставная конструкция (<условие 1>) AND (<условие 2>) означает, что на экран напечатается `a` лишь в том случае, когда оба условия будут истинны. Существует ещё вставная конструкция вместо AND – OR, что означает «ИЛИ» - то есть, одно из условий должно быть истинно.