Программирование ветвлений на Паскале Оператор ветвления на Паскале
Вид материала | Документы |
- Тема урока: Программирование ветвлений на Паскале, 61.32kb.
- Контрольная работа по темам «Линейное программирование на Паскале» и«Условный оператор», 4.21kb.
- А. В. Розина программирование на паскале методическое пособие, 480.71kb.
- Программа элективного курса «Алгоритмизация и программирование», 95.38kb.
- Практикум решения задач на ЭВМ содержание текущего и промежуточного контроля, 173.8kb.
- Тема урока: Программирование циклов на Паскале (9 класс, базовый уровень), 46.43kb.
- Конспект лекций по курсу "Алгоритмические языки и программирование". Тема "Множества", 120.08kb.
- Программа элективного курса «Программирование на Паскале», 22.78kb.
- Уроки №5-6 тема: " Программирование ветвящихся алгоритмов. Оператор выбора, 58.01kb.
- Так как текст записанной на Паскале программы не понятен компьютеру, то требуется перевести, 11.15kb.
Программирование ветвлений на Паскале
Оператор ветвления на Паскале
В языке Паскаль имеется оператор ветвления. Другое его название - условный оператор. Формат полного оператора ветвления следующий:
if <логическое выражение> then <оператор1>
else <оператор2>
Здесь if - "если", then - "то", else - "иначе".
Программирование полного и неполного ветвления
Сравните запись алгоритма БИД1 из предыдущего параграфа с соответствующей программой. алг БИД1
вещ А, В, С
нач ввод А, В
если А>В
то С:=А
иначе С:=В
кв
вывод С
кон Program BID1;
var А, В, С : real;
begin readln(А, В);
if A>B
then C:=A
else C:=B;
writeln(С)
end.
Очень похоже на перевод с русского языка на английский. Обратите внимание на следующее отличие: в программе нет специального служебного слова, обозначающего конец ветвления. Здесь признаком конца оператора ветвления является точка с запятой. (Разумеется, оставлять в программе пустую строку совсем не обязательно. Здесь это сделано только ради наглядности.)
Простой формой логического выражения является операция отношения. Как и в АЯ, в Паскале допускаются все виды отношений (ниже указаны их знаки):< (меньше);
> (больше);
<= (меньше или равно); <= (больше или равно);
= (равно);
<> (не равно).
А теперь запрограммируем на Паскале алгоритм БИД2, в котором использовано неполное ветвление.алг БИД2
вещ А, В, С
нач ввод А, В
С:=А
если В > А
то С:=B
кв
вывод С
кон Program BID2;
var А, В, С : real;
begin readln(А, В);
С:=А;
if B>A
then C:=B;
write(С)
end.
Опять все очень похоже. Ветвь else в операторе ветвления может отсутствовать.
Программирование вложенных ветвлений
![](images/1481-nomer-1c59fdcb.png)
Запишем на Паскале программу определения большего из трех чисел, блок-схема которой показана на рис. 3.10. Структура этого алгоритма - вложенные ветвления. Алгоритм на АЯ (БИТ2) приведен в предыдущем параграфе.
Рис. 3.10. Блок-схема алгоритма "БИТ" с вложенными ветвлениями
Program BIT2;
var А, В, С, D: real;
begin readln(А, В, С);
if A>B
then if A>C then D:=A else D:=B
else if B>C then D:=B else D:=C;
writeln(D)
end.
Обратите внимание на то, что перед else точка с запятой не ставится. Вся ветвящаяся часть структуры алгоритма заканчивается на точке с запятой после оператора D:=C.
Составим программу упорядочения значений двух переменных.алг СОРТИРОВКА
вещ X, Y, С
нач ввод X, Y
если X>Y
то С:=Х
X:=Y
Y:=C
кв
вывод X, Y
кон Program SORTING;
var X, Y, С : real;
begin readln(X, Y) ;
if X>Y
then begin С : =X;
X:=Y;
Y:=C
end;
write(X,Y)
end.
Этот пример иллюстрирует следующее правило Паскаля: если на какой-то из ветвей оператора ветвления находится несколько последовательных операторов, то их нужно записывать между служебными словами begin и end. Конструкция такого вида:
begin <Последовательность операторов> end
называется составным оператором. Следовательно, в описанной выше общей форме ветвления <оператор1> и <опера-тор2> могут быть простыми (один) и составными операторами.
Логические операции
Наконец, составим еще один, третий вариант программы определения большего числа из трех.
Program BIT3;
var А,В,С,D: real;
begin readln(А,В,С);
if (A>=B) and (A>=C) then D:=A;
if (B>=A) and (B>=C) then D:=B;
if (C>=A) and (C>=B) then D:=C;
writeln(D)
end.
Нетрудно понять смысл этой программы. Здесь использованы три последовательных неполных ветвления. А условия ветвлений представляют собой сложные логические выражения, включающие логическую операцию and (И). С логическими операциями вы встречались, работая с базами данных и с электронными таблицами.
Напомним, что операция and называется логическим умножением или конъюнкцией. Ее результат - "истина", если значения обоих операндов - "истина". Очевидно, что если А>=В и А>=С, то А имеет наибольшее значение и т. д. В Паскале присутствуют все три основные логические операции:
and - И (конъюнкция), or - ИЛИ (дизъюнкция), not - НЕ (отрицание).
Сложные логические выражения
Обратите внимание на то, что отношения, связываемые логическими операциями, заключаются в скобки. Так надо делать всегда! Например, требуется определить, есть ли среди чисел А, В, С хотя бы одно отрицательное. Эту задачу решает следующий оператор ветвления:
if (A < 0)or(B < 0)or(C < 0)
then write ( 'YES ') else write( 'NO ');
Выражение, истинное для отрицательного числа, может быть записано еще и так:
not ( A >= 0)
Вопросы и задания
1. Как программируется на Паскале полное и неполное ветвление?
2. Что такое составной оператор? В каких случаях составной оператор используется в операторе ветвления?
3. Выполните на компьютере все программы, приведенные в данном параграфе.
4. Составьте не менее трех вариантов программы определения наименьшего из трех данных чисел.
5. Составьте программу сортировки по возрастанию значений в трех переменных: А, В, С.
6. Составьте программу вычисления корней квадратного уравнения по данным значениям его коэффициентов.
1. Определение разветвляющегося алгоритма.
Алгоритмы исполняют в естественном порядке: команда за командой. Однако жизнь весьма разнообразна. А цели все же хочется достичь.
Вот и ученик, собираясь в школу, продумывает следующие действия:
• Если чувствует себя хорошо, то собираетcя в школу
• Иначе - остается дома.
Приведенный алгоритм называется разветвляющимся, он выполняется в зависимости от условия, т.е. от вопроса на который можно ответить "да" или "нет.
Алгоритм ветвления, как и другие алгоритмы, должны обладать следующими свойствами:
• Дискретность, т.е. все решение разбивается на простейшие шаги.
• Понятность, алгоритм должен быть понятен исполнителю.
• Точность, не должно быть неясностей и двусмысленностей.
• Массовость, с помощью одного и того же алгоритма можно решить множество задач.
• Результативность (или конечность) состоит в том, что алгоритм должен приводить к решению задачи за конечное число шагов.
2. Полная форма разветвляющегося алгоритма.
Полная форма - это форма записи развлетвляющегося алгоритма, в которой предусмотрены команды в ветви "да" и в ветви "нет".
если-то-иначе
![](images/1481-nomer-7f2280eb.jpg)
Пример
![](images/1481-nomer-m7612d3c3.jpg)
1. Происходит проверка условия.
• Если а>b, то происходит присваивание к переменной "а" значение "а*2", а к переменной "b", значение "1".
• Иначе, т.е. если а<=b, происходит присваивание переменной "b" значение "2*b".
Неполная форма.
Неполная форма - это форма записи разветвляющегося алгоритма, в которой предусмотрены команды только в одной ветви.
если-то
![](images/1481-nomer-3db39fcb.jpg)
Пример
![](images/1481-nomer-7ab4a3b5.jpg)
1). Происходит проверка условия.
• Если x>0, то переменной "y" присваивается значение "sin(x)"
• Иначе, т.е. если x<=0, то действия ветви "да" пропускаются.
2. Разветвляющийся алгоритм можно записать несколькими способами:
• Словесный.
• В виде блок-схем (графический).
• На языке программирования.
Словесный способ.
Словесный способ записи разветвляющихся алгоритмов представляет собой описание последовательных этапов обработки данных. А алгоритм задается в произвольном изложении на естественном языке.
Например:
• Задать два числа.
• Если числа равны, то взять любое из них в качестве ответа и остановиться, иначе продолжить выполнение алгоритма.
• Определить большее из чисел.
• Заменить большее из чисел разностью большего и меньшего из чисел.
• Повторить алгоритм с числа два.
Словесный способ не имеет широкого распространения, т.к. такие описания:
• строго не формализуемы;
• страдают многословностью записей;
• допускают неоднозначность толкования отдельных предписаний.
Машина поймет инструкцию, записанную на языке программирования, а человек наиболее ясно увидит ход решения задачи, если последовательность действий представлена на схеме.
Графический способ.
Графический способ представления разветвляющихся алгоритмов является более компактным и наглядным по сравнению со словесным.
При графическом представлении разветвляющийся алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Блок-схемы и структурограммы Насси Шнейдермана-наиболее распространенные способы графического изображения алгоритмов.
Название символ Обозначение и пример заполнения Пояснение
Пуск — остановка
![](images/1481-nomer-666d3abd.jpg)
Начало, конец алгоритма, вход и выход в подпрограмму
Ввод — вывод
![](images/1481-nomer-m17f53fc2.jpg)
Обозначает момент ввода данных в ячейки памяти с указанными именами или момент вывода содержимого указанных ячеек на экран монитора или на принтер.
Процесс (действие)
![](images/1481-nomer-16ea1f6b.jpg)
Вычислительное действие или их последовательность
Решение (условие)
![](images/1481-nomer-9884a84.jpg)
Проверка условий
Блок "решение" используется для обозначения переходов управления по условию. В каждом блоке "решение" должны быть указаны вопрос, условие или сравнение, которые он определяет.
Пример
Запись разветвляющегося алгоритма при помощи языка программирования.
В зависимости от результата проверки условия может быть полная форма разветвляющегося алгоритма или неполная форма.
Полная форма.
![](images/1481-nomer-1382dff6.jpg)
IF условиеTHEN Номер строки, с которой начинается описание блока команд или вычислительных действий. ELSE Номер строки, с которой начинается описание блока команд ветви "НЕТ" или вычислительных действий.
Если ветвь содержит несколько команд, то удобнее условие записать так, чтобы команды оказались в ветви "нет", тогда запись выбора в программе будет иметь вид:
Неполная форма.
IF условиеTHEN Номер строки, с которой
продолжается программа
после окончания ветвления.