Команда ветвления в полной форме на языке программирования ПАСКАЛЬ
Цели и задачи:
- Ввести понятие ветвления.
- Рассмотреть виды ветвлений.
- Показать, как реализуются ветвящиеся алгоритмы на языке программирования Паскаль.
- Рассмотреть задачи с ветвящимися алгоритмами.
Понятие ветвления
Ветвление – форма организации действий, при которой в зависимости от условия выполняется одна, либо другая серия действий (команд, операторов).
Ветвление позволяет менять порядок выполнения команд по результатам проверки некоторого условия.
В команде ветвления в качестве условия может использоваться отношение неравенства между величинами.
Понятие ветвления
Ветвление является структурной командой. Его исполнение происходит в несколько шагов:
- проверка условия (выполнение логического выражения);
- выполнение команд на одной из ветвей.
Синтаксис языка программирования
У каждого человеческого языка есть своя грамматика, включающая в себя правила, по которым должны выстраиваться в цепочку элементы языка, чтобы получилось правильное предложение. Совокупность этих правил образует часть грамматики, называемую СИНТАКСИСОМ.
В языках программирования тоже есть предложения. Такими предложениями являются операторы. Следовательно у языков программирования тоже должен быть свой синтаксис, который описывает правила, по которым записываются операторы языка, и из операторов составляется программа. После того, как человек запускает программу на выполнение, любая среда программирования прежде, чем действительно выполнить её, сначала проверит, нет ли в ней синтаксических ошибок, и если они есть, то программу выполнять не будет, а выдаст сообщение об ошибке.
Пояснение a Меньше или равно Больше a меньше 6 = b b меньше или равно 23 x 5 Больше или равно = x больше 5 Равно y = 8 Не равно y больше или равно 8 c = 10 c равно 10 d 3 d не равно 3 " width="640"
Операции отношения или сравнения
Знак
Наименование
Меньше
Пример
Пояснение
a
Меньше или равно
Больше
a меньше 6
=
b
b меньше или равно 23
x 5
Больше или равно
=
x больше 5
Равно
y = 8
Не равно
y больше или равно 8
c = 10
c равно 10
d 3
d не равно 3
Виды ветвлений:
- неполное ветвление (обход),
- полное ветвление (альтернатива);
- вложенные ветвления;
- ветвление по ряду условий.
Неполное ветвление
К неполным ветвлениям относятся алгоритмы, выполняющие следующую структуру логического выражения: «Если … то …».
Ложь Истина
Условие
Действие
THEN оператор " width="640"
Запись условного оператора на Паскале
Неполная форма оператора If
IF условие THEN оператор
Задача 1
Составьте блок-схему и программу упорядочения значений двух переменных x и y по возрастанию.
y c:=x x:=y y:=c Вывод x,y конец " width="640"
Решение задачи 1
Начало
Ввод x,y
Нет Да
xy
c:=x
x:=y
y:=c
Вывод x,y
конец
y то c:=x x:=y y:=c кв вывод x,y кон " width="640"
Решение задачи 1 (сортировка)
Алгоритм решения задачи:
алг сортировка
вещ x,y,c
нач
ввод x,y
если xy
то c:=x
x:=y
y:=c
кв
вывод x,y
кон
Составной оператор
Этот пример иллюстрирует следующее правило Паскаля:
Если на какой-то из ветвей оператора ветвления находится несколько последовательных операторов, то их нужно записать между служебными словами
begin и end.
Конструкция такого вида:
begin end
называется составным оператором.
y then (условие) begin (начало программы) c:=x; x:=y; y:=c; end; writeln (x,',',y); (выводит) end. (конец программы) обратно " width="640"
Решение задачи (сортировка)
Составим программу:
Program sorting;
var x,y,c: real; (вещественное)
begin (начало программы)
writeln ('Введи два числа');
readln (x,y); ( вызывает переход к следущей строке )
if xy then (условие)
begin (начало программы)
c:=x;
x:=y;
y:=c;
end;
writeln (x,',',y); (выводит)
end. (конец программы)
обратно
Полное ветвление
Полное ветвление - алгоритм, в котором выполняется одно из двух действий, в зависимости от истинности условия.
Ложь Истина
Если условие истинно, то выполняется действие 1, а иначе выполняется действие 2.
Условие
Действие 2
Действие 1
THEN оператор ELSE оператор Внимание! Перед ELSE точка с запятой не ставится! " width="640"
Запись условного оператора на Паскале
Полная форма оператора IF
IF условие THEN оператор ELSE оператор
Внимание! Перед ELSE
точка с запятой не ставится!
Задача 2
Даны два числа a, b. Выберите большее из них.
b c:=a c:=b Вывод с конец " width="640"
Задача 2
начало
Ввод a,b
Нет Да
ab
c:=a
c:=b
Вывод с
конец
b то c:=a иначе с:=b кв вывод c кон " width="640"
Задача 2
Алгоритм выбора большего из двух чисел, реализующий полное ветвление:
алг БИД
вещ a,b,c
нач
ввод a,b
если ab
то c:=a
иначе с:=b
кв
вывод c
кон
b then c:=a else c:=b; writeln (‘Большее число',' ',c:4:2) end. Обратно " width="640"
Задача 2
Составим программу:
program bid;
var a,b,c: real;
begin
writeln ('введите значения переменных a,b');
readln (a,b);
if ab then c:=a else c:=b;
writeln (‘Большее число',' ',c:4:2)
end.
Обратно
Вложенное ветвление
В структуре вложенного ветвления следующая особенность: одна или обе ветви условия могут продолжаться не блоками вычислительных операций или ввода - вывода, а дополнительным блоком условия. Один из видов такого ветвления представлен на рисунке.
Вложенное ветвление
Нет Да
Условие 1
Нет Да
Нет Да
условие 2
условие 3
Действие 2
Действие 4
Действие 1
Действие 3
конец
Задача 3
Определите большее из трех чисел a, b, c.
b Нет Да bc ac d:=c d:=b d:=с d:=а Вывод d конец " width="640"
Задача 3
Начало
Ввод a, b, c
Нет
Да
Нет Да
ab
Нет Да
bc
ac
d:=c
d:=b
d:=с
d:=а
Вывод d
конец
b то если aс то d:=a иначе d:=с кв иначе если bc то d:= b иначе d:=с кв кв вывод d кон " width="640"
Задача 3
Структура этого алгоритма – вложенные ветвления:
алг БИТ
вещ a, b, c, d
нач
ввод a, b, c
если ab
то если aс то d:=a иначе d:=с кв
иначе если bc то d:= b иначе d:=с кв
кв
вывод d
кон
b then if ac then d:=a else d:=b else if bc then d:=b else d:=c; writeln ('Большее число',' ',d) end. Обратно " width="640"
Задача 3
Составим программу, используя вложенные ветвления:
program bit;
var
a,b,c,d: real;
begin
writeln ('введите значения переменных a,b,c');
readln (a,b,c);
if ab
then if ac then d:=a else d:=b
else if bc then d:=b else d:=c;
writeln ('Большее число',' ',d)
end.
Обратно
Сложные логические выражения
Условие, содержащее логические связки (и, или, нет), называется сложным условием.
Условие, не содержащее логических связок, называется простым, или элементарным условием.
С логическими связками (операциями) вы встречались, когда работали с базами данных и электронными таблицами.
3) Значение примера записи x меньше 7 Логическое " ИЛИ " Логическое " НЕ " И (y100) or (yy больше 100 not (x=2) x больше 3 (3ИЛИ НЕ x равно 2 y меньше 10 (y100) " width="640"
Логические операции
Логическая операция
Ее значение
AND
Логическое " И "
Примеры
NOT
OR
(xand (x3)
Значение примера
записи
x меньше 7
Логическое " ИЛИ "
Логическое " НЕ "
И
(y100) or (y
y больше 100
not (x=2)
x больше 3 (3
ИЛИ
НЕ x равно 2
y меньше 10
(y100)
Задача 4
Два прямоугольника заданы длинами сторон. Написать программу, после выполнения которой выясняется, можно ли первый прямоугольник целиком разместить во втором. (Рассмотреть только случай, когда соответствующие стороны прямоугольников параллельны.)
Задача 4
Начало
Ввод длин сторон a1, b1, a2, b2,
Нет Да
a1
или
b1
Размещается 1 во 2
Не размещается 1 во 2
конец
Задача 4
Пользуясь блок-схемой, составим программу, в которой должно быть реализовано полное ветвление и сложное условие (см. блок-схему):
Program Pryamoug;
var
a1, b1, a2, b2 : real;
begin
write ('Введите длину и ширину первого прямоугольника ');
readln (a1, b1);
write ('Введите длину и ширину второго прямоугольника ');
readln (a2, b2);
if ((a1
then writeln('Первый прямоугольник размещается во втором')
else writeln('Первый прямоугольник не размещается во втором')
end.
Ветвление по ряду условий (оператор варианта case)
Условный оператор ( If ) позволяет сделать выбор из двух вариантов: да/нет (истина/ложь). Для организации выбора из нескольких вариантов приходится использовать вложенные условные операторы ( If ), тогда алгоритм и программа могут оказаться очень сложными, или оператор выбора case .
Ветвление по ряду условий (оператор варианта case)
Формат записи оператора case :
сase of
: ;
…
: ;
else
End
Внимание! Единственный случай, когда перед словом ELSE можно ставить точку с запятой (;) это в операторе CASE!
Задача 5
Напишите программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае, если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных.Число должно быть от 1 до 12. Повторите ввод. ».
Задача 5
Program vremya_goda;
var
m:integer;
begin
writeln('Введите номер месяца (число от 1 до 12) m=');
readln (m);
Case m of
1,2,12: writeln ('Время года - зима');
3..5:writeln ('Время года - весна');
6..8:writeln ('Время года - лето');
9..11: writeln ('Время года - осень');
else writeln (‘Ошибка ввода данных.Число должно быть от 1 до 12. Повторите ввод.');
end;
end.
Закрепление материала. Контрольные вопросы:
- Как схематически выглядит алгоритм с неполным ветвлением?
- Как схематически выглядит алгоритм с вложенным ветвлением?
- Как схематически выглядит алгоритм с полным ветвлением?
- Как записывается условный оператор в полной форме?
- Как записывается условный оператор в неполной форме?
- Как записывается общий вид оператора case?
Задача 6
Напишите программу, которая считывает три целых числа (каждое с отдельной строки) и печатает 1, если среди них есть хотя бы одно число, большее удвоенной суммы двух других. Если таких чисел нет, то программа печатает 0. Программа должна выводить только 1 или 0. Известно, что каждое из исходных чисел по абсолютной величине не превосходит 1000.
(b+c)*2)or (b(a+c)*2)or(c(a+b)*2) then writeln(1) else writeln(0); end. Обратно " width="640"
Задача 6 (ДР в формате ЕГЭ)
Program zadacha_6;
var a, b, c : integer;
begin
writeln (‘Введите значение a=');
readln(a);
writeln ('Введите значение b=');
readln(b);
writeln ('Введите значение c=');
readln(c);
if (a(b+c)*2)or (b(a+c)*2)or(c(a+b)*2) then writeln(1) else writeln(0);
end.
Обратно
Домашнее задание
§ 36 читать.
Придумать пример разветвляющегося алгоритма.
Индивидуальные задания:
Составить алгоритм нахождения наименьшего из двух элементов
Составить алгоритм нахождения наименьшего из трёх элементов
Составить алгоритм нахождения наибольшего из двух элементов
Составить алгоритм нахождения наибольшего из трёх элементов
Использованная литература и источники информации
- И.Г. Семакин и др. «Информатика и ИКТ», учебник для 9 класса, БИНОМ, Москва, 2011;
- Житкова О.А. Кудрявцева Е.К. «Справочные материалы по программированию на языке Паскаль», «ИНТЕЛЛЕКТ – ЦЕНТР», Москва, 2005;
- С.Н. Лукин, «Turbo Pascal 7.0», самоучитель для начинающих, «ДИАЛОГ – МИФИ», Москва, 2005;
- С.В. Вольский, П.А. Дмитриев «Turbo Pascal 7.0 для студентов и школьников», Наука и Техника, Санкт-Петербург, 2007;
- Н.Культин «Turbo Pascal 7.0 в задачах и примерах», БХВ – Петербург, Санкт-Петербург, 2005;
- http://yf.kemsu.ru