Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Самоучитель PascalABC.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.76 Mб
Скачать

Глава 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, что означает «ИЛИ» - то есть, одно из условий должно быть истинно.