Программирование ветвлений на Паскале Оператор ветвления на Паскале
Вид материала | Документы |
- Тема урока: Программирование ветвлений на Паскале, 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 в операторе ветвления может отсутствовать.
Программирование вложенных ветвлений

Запишем на Паскале программу определения большего из трех чисел, блок-схема которой показана на рис. 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. Полная форма разветвляющегося алгоритма.
Полная форма - это форма записи развлетвляющегося алгоритма, в которой предусмотрены команды в ветви "да" и в ветви "нет".
если-то-иначе

Пример

1. Происходит проверка условия.
• Если а>b, то происходит присваивание к переменной "а" значение "а*2", а к переменной "b", значение "1".
• Иначе, т.е. если а<=b, происходит присваивание переменной "b" значение "2*b".
Неполная форма.
Неполная форма - это форма записи разветвляющегося алгоритма, в которой предусмотрены команды только в одной ветви.
если-то

Пример

1). Происходит проверка условия.
• Если x>0, то переменной "y" присваивается значение "sin(x)"
• Иначе, т.е. если x<=0, то действия ветви "да" пропускаются.
2. Разветвляющийся алгоритм можно записать несколькими способами:
• Словесный.
• В виде блок-схем (графический).
• На языке программирования.
Словесный способ.
Словесный способ записи разветвляющихся алгоритмов представляет собой описание последовательных этапов обработки данных. А алгоритм задается в произвольном изложении на естественном языке.
Например:
• Задать два числа.
• Если числа равны, то взять любое из них в качестве ответа и остановиться, иначе продолжить выполнение алгоритма.
• Определить большее из чисел.
• Заменить большее из чисел разностью большего и меньшего из чисел.
• Повторить алгоритм с числа два.
Словесный способ не имеет широкого распространения, т.к. такие описания:
• строго не формализуемы;
• страдают многословностью записей;
• допускают неоднозначность толкования отдельных предписаний.
Машина поймет инструкцию, записанную на языке программирования, а человек наиболее ясно увидит ход решения задачи, если последовательность действий представлена на схеме.
Графический способ.
Графический способ представления разветвляющихся алгоритмов является более компактным и наглядным по сравнению со словесным.
При графическом представлении разветвляющийся алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Блок-схемы и структурограммы Насси Шнейдермана-наиболее распространенные способы графического изображения алгоритмов.
Название символ Обозначение и пример заполнения Пояснение
Пуск — остановка

Начало, конец алгоритма, вход и выход в подпрограмму
Ввод — вывод

Обозначает момент ввода данных в ячейки памяти с указанными именами или момент вывода содержимого указанных ячеек на экран монитора или на принтер.
Процесс (действие)

Вычислительное действие или их последовательность
Решение (условие)

Проверка условий
Блок "решение" используется для обозначения переходов управления по условию. В каждом блоке "решение" должны быть указаны вопрос, условие или сравнение, которые он определяет.
Пример
Запись разветвляющегося алгоритма при помощи языка программирования.
В зависимости от результата проверки условия может быть полная форма разветвляющегося алгоритма или неполная форма.
Полная форма.

IF условиеTHEN Номер строки, с которой начинается описание блока команд или вычислительных действий. ELSE Номер строки, с которой начинается описание блока команд ветви "НЕТ" или вычислительных действий.
Если ветвь содержит несколько команд, то удобнее условие записать так, чтобы команды оказались в ветви "нет", тогда запись выбора в программе будет иметь вид:
Неполная форма.
IF условиеTHEN Номер строки, с которой
продолжается программа
после окончания ветвления.