I. Теоретические сведения
В линейной программе все операторы выполняются последовательно, один за другим. Таким способом можно записывать только очень простые алгоритмы. Для того чтобы в зависимости от конкретных значений исходных данных обеспечить выполнение разных последовательностей операторов, применяются операторы ветвления if и case.
Оператор if обеспечивает передачу управления на одну из двух ветвей вычислений, а оператор case — на одну из произвольного числа ветвей. Рассмотрим сначала задачи с применением оператора if.
1.1 Условный оператор if
Формат оператора:
if выражение then оператор_1 [else оператор_2:]
Сначала вычисляется выражение, которое должно иметь логический тип. Как правило, в выражении используются знаки операций отношения (меньше <, больше >, равно =, не равно <>, меньше или равно <=, больше или равно >=)2. Если требуется проверить несколько условий, их объединяют знаками логических операций and (И), or (ИЛИ), xor (исключающее ИЛИ) и not (отрицание). Примеры логических выражений:
а < 2
(х <> 0) and (у <> 0)
Если выражение имеет значение true, выполняется первый оператор, иначе — второй (рисунок 1). Ветвь else может отсутствовать. После выполнения операторов из соответствующей ветви управление передается оператору, следующему за условным оператором.
Рисунок 1. – Структурная схема условного оператора
Если по какой-либо ветви требуется выполнить не один, а несколько операторов, применяют блок (составной оператор). Блок обрамляется ключевыми словами begin и end:
if а=0 then begin х:=0; у:=0 end
else begin х:=1; у:=2 end;
Внутри условного оператора можно записать еще один условный оператор, например: if а >= b then if а = b then с:= 0 else с:= 1 else с:= 2;
Ключевое слово else всегда считается относящимся к ближайшему слову if, т.е.
if а >= b then if а = b
then с:= 0 else с:= 1
else с:= 2;
Большого количества вложенных условных операторов следует избегать, потому что они делают программу совершенно нечитабельной.
1.2 Оператор case
Оператор варианта (выбора) используется для реализации алгоритмов, имеющих приведенную на рисунке 2 структуру. Решение о том, какой именно оператор выполнить, принимается после анализа значения выражения порядкового типа. Выполняется оператор (простой или составной), записанный после константы, с которой совпало значение выражения.
Рисунок 2. – Структурная схема оператора выбора
Чаще всего после ключевого слова case указывается имя переменной (это частный случай выражения). Если требуется выполнить одни и те же действия для нескольких констант, они записываются либо через запятую, либо с помощью операции диапазона (..).
Формат оператора:
case выражение of
константы_1: оператор_1;
константы_2: оператор_2;
...
константы_n: оператор_n;
[else: оператор]
end;
II. Рабочее задание
1. Разработать алгоритмы с применением невложенных и вложенных базовых структур «ветвление», составить и отладить соответствующие им программы, которые по введенному значению аргумента вычисляют значение функции, заданной в виде графика.
2. Разработать алгоритм, составить, отладить и испытать программу с использованием оператора CASE, которая решает следующую задачу: По введенному k – числу грибов – выводит на экран фразу «Мы нашли в лесу k грибов», причем согласовывает окончание слова «гриб» с числом k.
III. Выполнение работы
Задание 1. Для выполнения данного задания для начала рассмотрим график, показанный на рисунке 3.
Рисунок 3. – График функции
Проанализировав данную зависимость переменной y от x, мы приходим к выводу, что график меняется от -7 до 3 и состоит из пяти составляющих уравнений, объединяющихся в одну систему уравнений:
y =
Опираясь на данную систему уравнений, мы построим блок-схему как показано на рисунке 4.
Рисунок 4. – Блок-схема 1
Теперь, когда мы имеем готовую блок-схему для будущей программы, нетрудно написать сам код (Рисунок 5).
Рисунок 5. – Код программы с оператором ветвления
После этого этапа составим таблицу зависимости y от x по графику, чтобы потом проверить данные непосредственно на самой программе (Таблица 1).
Таблица 1. – Зависимость y от x
x | -5 | -6 | -2 | 2,5 | -9 | |
y | 0,5 | – | -0,5 | – |
Результаты подстановки значений x покажем на рисунке 6.
Рисунок 6. – Результаты y от x
Программа работает. Ошибок не выявлено.
Задание 2. Анализируя задачу: «По введенному k – числу грибов – выводит на экран фразу «Мы нашли в лесу k грибов», причем согласовывает окончание слова «гриб» с числом k.» – мы понимаем, что число k должно быть целым неотрицательным числом и слово «гриб» будет иметь всего три вида окончаний, которые напрямую зависят от числа k.
Составим блок-схему для данной задачи (Рисунок 7).
Рисунок 7. – Блок-схема 2
Имея готовую блок схему, напишем код программы как показано на рисунке 8.
Рисунок 8. – Код программы с оператором выбора
Чтобы испытать программу, подставим вместо k необходимое число, проверим падеж слова «гриб».
Как показала практика, программа работает без ошибок.
Вывод: Таким образом, мы научились программировать разветвляющиеся алгоритмы в среде ПО Pascal ABC.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ
1. Лабораторная работа №2. Программирование разветвляющихся алгоритмов в среде Pascal ABC. URL: file:///G:/информатика/ЛБ%202/ЛР2_Программирование%20разветвляющихся%20алгоритмов%2027%20заданий.pdf (Дата обращения: 24.03.2022). – Текст электронный.