Как сделать разветвление в паскале

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Презентация "Алгоритмы с ветвлениями. Их реализация на языке программирования Паскаль" краткий теоретический материал по теме "Алгоритмическая конструкция Ветвление. Программирование ветвлений на языке программирования Паскаль" и примеры решения основных типов задач по данной теме.

ВложениеРазмер
algoritmy_s_vetvleniyami.pptx 223.8 КБ

Предварительный просмотр:

Подписи к слайдам:

Цели и задачи: Ввести понятие ветвления. Рассмотреть виды ветвлений. Показать, как реализуются ветвящиеся алгоритмы на языке программирования Паскаль. Рассмотреть задачи с ветвящимися алгоритмами.

Понятие ветвления Ветвление – форма организации действий, при которой в зависимости от условия выполняется одна, либо другая серия действий (команд, операторов). Ветвление позволяет менять порядок выполнения команд по результатам проверки некоторого условия. В команде ветвления в качестве условия может использоваться отношение неравенства между величинами.

Понятие ветвления Ветвление является структурной командой. Его исполнение происходит в несколько шагов: проверка условия (выполнение логического выражения); выполнение команд на одной из ветвей.

Операции отношения или сравнения Знак Наименование Пример Пояснение Больше x > 5 x больше 5 >= Больше или равно y >= 8 y больше или равно 8 = Равно c = 10 c равно 10 <> Не равно d <> 3 d не равно 3

Виды ветвлений: неполное ветвление ( обход) , полное ветвление (альтернатива); вложенные ветвления; ветвление по ряду условий.

Запись условного оператора на Паскале Неполная форма оператора If IF THEN

Задача 1 Составьте блок-схему и программу упорядочения значений двух переменных x и y по возрастанию.

Решение задачи 1 Начало Ввод x,y x>y конец c:=x x:=y y:=c Вывод x,y Нет Да

Решение задачи 1 (сортировка) Алгоритм решения задачи: алг сортировка вещ x,y,c нач ввод x,y если x>y то c : =x x:=y y:=c кв вывод x,y кон

Составной оператор Этот пример иллюстрирует следующее правило Паскаля: Если на какой-то из ветвей оператора ветвления находится несколько последовательных операторов, то их нужно записать между служебными словами begin и e nd. Конструкция такого вида: begin end называется составным оператором.

Решение задачи (сортировка) Составим программу: Program sorting; var x,y,c:real ; begin writeln (' Введи два числа'); readln ( x,y ); if x>y then begin c :=x; x :=y; y:=c; end; writeln ( x,',',y ); end. обратно

Полное ветвление Полное ветвление - алгоритм , в котором выполняется одно из двух действий, в зависимости от истинности условия . Ложь Истина Если условие истинно, то выполняется действие 1, а иначе выполняется действие 2. Условие Действие 2 Действие 1

Запись условного оператора на Паскале Полная форма оператора I F IF THEN ELSE Внимание! Перед ELSE точка с запятой не ставится!

Задача 2 Даны два числа a, b . Выберите большее из них.

Задача 2 a >b c:=b c :=a начало Ввод a,b В ы вод с конец Нет Да

Задача 2 Алгоритм выбора большего из двух чисел, реализующий полное ветвление: алг БИД вещ a,b,c нач ввод a,b если a>b то c : =a иначе с:= b кв вывод c кон

Задача 2 Составим программу: program bid; var a,b,c : real ; begin writeln ( ' введите значения переменных a,b '); readln ( a,b ); if a>b then c :=a else c :=b; writeln (‘ Большее число',' ', c:4:2) end. Обратно

Вложенное ветвление В структуре вложенного ветвления следующая особенность: одна или обе ветви условия могут продолжаться не блоками вычислительных операций или ввода - вывода , а дополнительным блоком условия. Один из видов такого ветвления представлен на рисунке.

Вложенное ветвление Условие 1 конец условие 2 Действие 2 Действие 1 условие 3 Действие 3 Действие 4 Нет Да Нет Да Нет Да

Задача 3 Определите большее из трех чисел a, b, c .

Задача 3 Начало Ввод a , b , c a >b конец b >c a>c d:=c d:=b d:= с d:= а Нет Да Нет Да Нет Да Вывод d

Задача 3 Структура этого алгоритма – вложенные ветвления: алг БИТ вещ a , b , c, d нач ввод a, b, c если a>b то если a> с то d:=a иначе d:= с кв иначе если b>c то d:= b иначе d:= с кв кв вывод d кон

Задача 3 Составим программу, используя вложенные ветвления: program bit; var a,b,c,d : real ; begin writeln ( ' введите значения переменных a,b,c '); readln ( a,b,c ); 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. Обратно

Сложные логические выражения Условие, содержащее логические связки (и, или, нет ), называется сложным усло­вием. Условие, не содержащее логических связок, называется простым, или элементарным условием. С логическими связками (операциями) вы встречались, когда работали с базами данных и электронными таблицами.

Логические операции Логическая операция Ее значение Примеры записи Значение примера AND Логическое " И " (x 3) x меньше 7 И x больше 3 (3 100) or (y 100) NOT Логическое " НЕ " not (x=2) НЕ x равно 2

Задача 4 Два прямоугольника заданы длинами сторон. Написать программу, после выполнения которой выясняется, можно ли первый прямоугольник целиком разместить во втором. (Рассмотреть только случай, когда соответствующие стороны прямоугольников параллельны.)

Задача 4 Начало Ввод длин сторон a 1 , b 1 , a2, b 2 , a 1

Задача 4 Пользуясь блок-схемой, составим программу, в которой должно быть реализовано полное ветвление и сложное условие (см. блок-схему): Program Pryamoug ; var a1, b1, a2, b2 : real; begin write ('Введите длину и ширину первого прямоугольника '); readln (a1, b1); write ('Введите длину и ширину второго прямоугольника '); readln (a2, b2); if ((a1 of : ; … : ; else End Внимание! Единственный случай, когда перед словом ELSE можно ставить точку с запятой (;) это в операторе CASE!

Задача 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.

Задача 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 читать. Придумать пример разветвляющегося алгоритма. Индивидуальные задания: Составить алгоритм нахождения наименьшего из двух элементов Составить алгоритм нахождения наименьшего из трёх элементов Составить алгоритм нахождения наибольшего из двух элементов Составить алгоритм нахождения наибольшего из трёх элементов

При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор. Его общий вид:

Для записи неполных ветвлений используется неполная форма условного оператора:

Слова if — then — else переводятся с английского языка на русский как если — то — иначе, что полностью соответствует записи ветвления на алгоритмическом языке.

В качестве условий используются логические выражения:

  • простые — записанные с помощью операций отношения;
  • сложные — записанные с помощью логических операций.


Пример 1. Запишем на языке Паскаль рассмотренный в п. 2.4.2 (пример 8) алгоритм определения принадлежности точки х отрезку [а, b].


Дополните эту программу так, чтобы её выполнение приводило к присваиванию переменной у значения большей из четырёх величин а, b, с и d.

Оператор ветвления на Паскале

image

В языке Паскаль имеется оператор ветвления. Другое его название — условный оператор.

Формат полного оператора ветвления следующий:

if then else

Программирование полного и неполного ветвления

Сравните запись алгоритма БИД 1 на алгоритмическом языке с соответствующей программой на Паскале.

image

Очень похоже на перевод с русского языка на английский. Обратите внимание на следующее отличие: в программе нет специального служебного слова, обозначающего конец ветвления. Здесь признаком конца оператора ветвления является точка с запятой. (Разумеется, оставлять в программе пустую строку совсем не обязательно. Здесь это сделано только ради наглядности.)

Простой формой логического выражения является операция отношения. Как и в АЯ, в Паскале допускаются все виды отношений (ниже указаны их знаки):

image

А теперь запрограммируем на Паскале алгоритм БИД2, в котором использовано неполное ветвление.

image

Опять всё очень похоже. Ветвь else в операторе ветвления может отсутствовать.

Запишем на Паскале программу определения большего из трех чисел, блок-схема которой показана на рис. 2.6. Структура этого алгоритма — вложенные ветвления. Алгоритм на АЯ (БИТ2) приведен в предыдущем параграфе.

image

Составим программу упорядочения значений двух переменных.

image

Этот пример иллюстрирует следующее правило Паскаля: если на какой-то из ветвей оператора ветвления находится несколько последовательных операторов, то их нужно записывать между служебными словами begin и end. Конструкция такого вида:

begin end

называется составным оператором. Следовательно, в описанной выше общей форме ветвления и могут быть простыми и составными операторами.

Тест предназначен для обобщающего повтроения в 8 классе по теме "Алгоритмическая конструкция повтроение".

Одной из основных алгоритмических структур является ветвление (альтернатива).

Если условие выполняется, то будет выполнена инструкция "1", если нет, то - инструкция "2". Несмотря на то, что в схеме присутствуют два действия, выполнено будет только одно, так как условие либо ложно, либо истинно. Третьего не дано. Такая схема позволяет решать задачи, в которых в зависимости от сложившихся обстоятельств требуется совершить то или иное действие. Нет никакого сомнения, что число задач такого рода огромно. Более того, очень сложно придумать реально значимое задание, алгоритм выполнения которого содержал бы в себе простое прямое следование команд. Даже примитивный пример, взятый из курса математики, как вы увидите, не может быть решен без использования ветвления. Итак, необходимо вычислить значение выражения y=1/x. Вам известно, что данная функция не всегда имеет значение, то есть не для всех значений аргумента существует значение результата. Наша задача так составить алгоритм, чтобы исполнитель ни в коем случае не встал в тупик, даже при получении нуля в качестве аргумента. Сформулировать это на естественном языке не трудно:

1. Получить значение x.

2. Если x=0, то сообщить, что выражение значения не имеет, иначе - вычислить y как 1/x.

Таким образом используется приведенная выше алгоритмическая структура. Она может быть выражена простыми словами:

Как это записать на Паскале? Да точно так же, только по-английски.

Формат условного оператора на языке Паскаль:

Обратите внимание на то, что в Then- и Else- части стоит только один оператор. Но что делать, чтобы решить задачу, в которой по выполнению или невыполнению условия нужно совершить не одно, а несколько действий? Здесь приходит на помощь уже известный вам составной оператор. В операторные скобки можно заключить любое количество операторов.

Вариант условного оператора в этом случае:

Знак "точка с запятой" не ставится перед служебным словом Else, но операторы в группах, естественно, отделяются друг от друга этим знаком.

Теперь поговорим об условиях. В программах на языке Паскаль условия представляют собой выражения, значением которых является величина логического (Boolean) типа. Это может быть как просто переменная указанного типа, так и сложная последовательность высказываний, связанных логическими операциями.

В простых условиях могут применяться знаки операций сравнения: >(больше), (не равно), >=(больше или равно), =(D1*(45-2))

Приведем пример решения еще одной задачи: "Из двух чисел выбрать наибольшее".

На первый взгляд решение очевидно, но оно не столь тривиально, как кажется.

Writeln('Введите два числа');

If A>B Then C:=A Else C:=B; B, то результат - A, иначе результат - B>

Еще один классический пример: "По заданным коэффициентам решить квадратное уравнение". Эта задача сложнее, поэтому перед тем как писать программу составим алгоритм, записав его в виде блок-схемы.Сначала вводим коэффициенты, затем вычисляем дискриминант. Теперь возникает две возможности: либо отсутствие действительных корней в случае отрицательного дискриминанта, либо эти корни можно все-таки вычислить и вывести на экран в случае неотрицательного дискриминанта (случай равенства дискриминанта нулю входит сюда же, корней - два, только они одинаковые J).

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

Var A, B, C, D, X1, X2: Real;

Writeln ('Введите коэффициенты квадратного уравнения');

>= больше или равно

Имеют один и тот же приоритет и соединяют два выражения одного и того же типа. Результатом любой операции сравнения является значение TRUE или FALSE.

ЛОГИЧЕСКИЕ ОПЕРАЦИИ:: NOT - НЕ; AND - И; OR - ИЛИ

ПОРЯДОК ВЫПОЛНЕНИЯ ОПЕРАЦИЙ:

1. - (унарный минус, т.е. отрицание числа) NOT

2. * / DIV MOD AND

Оператор ветвления (условный оператор)

If условие THEN

где условие - логическое выражение (т.е. в него обязательно входит знак отношения, и можно определить, истинно выражение или ложно)

оператор1 - любой оператор Паскаля; этот оператор исполняется, когда условие истинно;

оператор2 - любой оператор Паскаля, в том числе и условный; этот оператор исполняется, когда условие ложно.

При выполнении этого оператора сначала вычисляется значение условия.

Если условие истинно (true), то выполняется оператор после слова THEN, а оператор2 пропускается;

если условие ложно (false), то оператор1 пропускается, а выполняется оператор после слова ELSE.

else write ('Решений нет');

Операторы 1 и 2 могут быть любыми, в том числе и условными. В этом случае их называют вложенными.

В условном операторе после слов THEN и ELSE можно помещать по несколько операторов. В этом случае их надо объединить в СОСТАВНОЙ оператор, который начинается словом BEGIN и заканчивается словом END; (на конце не точка, а точка с запятой!)

Составить программу, которая перераспределит заданные значения x, y так, что в х окажется большее значение, а в y - меньшее.

write ('Введите два числа: ');

writeln ('Точка принадлежит кольцу');

else writeln ('Точка не принадлежит кольцу');

Раздел: Информатика, программирование
Количество знаков с пробелами: 11335
Количество таблиц: 1
Количество изображений: 3

Похожие работы

. в профессиональном программировании. Широкой популярностью Паскаля среди программистов способствовали следующие причины: - Благодаря своей компактности, удачному первоначальному описанию Паскаль оказался достаточно лёгким для обучения. - Язык программирования Паскаль . Отображает фундаментальные и наиболее важные концепции (идеи) алгоритмов в очевидной и легко воспринимаемой форме, что .

. Output — окно, в которое будут выводиться результаты исполнения программы. Размер окна Output можно отрегулировать клавишами перемещения курсора после нажатия Control + F5 или мышью, как описано ранее. Окно отладки программ Watch может быть открыто пунктом меню Watch или Add watch. В каждой строчке окна может быть задана некоторая переменная или выражение. В процессе выполнения программы текущее .





. условий взаимной уравновешенности системы сил является одной из основных задач статики. На основе изложенной в первой главе курсовой работы алгоритм конструкции языка программирования Паскаль составим и решим ряд задач по прикладной механике. Сформулируем задачу по статике первому разделу прикладной механики. Задача. Найти центр тяжести тонкого круглого однородного стержня изогнутого по дуге .

. ячейка, а имя переменной превращается в адрес ячейки. Появление этого адреса происходит в результате работы специального оператора языка (NEW), однако его значение в большинстве случаев не используется при программировании на алгоритмических языках типа Паскаль. Условимся считать, что адрес ячейки, которая будет хранить переменную А, есть А. Или, другими словами, А - это общее имя переменной и .

К операторам, позволяющим из нескольких возможных вариантов выполнения программы (ветвей) выбрать только один, относятся
if и case.
Т.е. эти операторы позволяют изменить естественный порядок выполнения операторов программы.
Формат:
if then
else ;
Пример:
if a>=b then Max:=a else Max:=b;
В операторе if по обеим ветвям (then и else) может выполняться только один оператор!
При необходимости выполнения нескольких требуется использовать операторные скобки begin-end.

Пример задачи на операторы ветвления в паскале. Ввести два целых числа и вывести на экран наибольшее из них.
Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.
Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).
program qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
if a > b then max:=a else max:=b;
writeln ('Наибольшее число ', max);
end.
Сложные условия
Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических
операций:
•not – НЕ (отрицание, инверсия)
•and – И (логическое умножение, конъюнкция,
одновременное выполнение условий)
•or – ИЛИ (логическое сложение, дизъюнкция,
выполнение хотя бы одного из условий)
•xor – исключающее ИЛИ (выполнение только
одного из двух условий, но не обоих)
Простые условия (отношения)
>= = <>
Порядок выполнения (приоритет = старшинство)
•выражения в скобках
•not
•and
•or, xor
• , >=, =, <>
Особенность – каждое из простых условий обязательно заключать в скобки.
Оператор выбора case
Оператор case позволяет сделать выбор между несколькими вариантами.
Оператор варианта состоит
Øиз выражения, называемого селектором,
Øи списка операторов, каждый из которых отмечен константой того же типа, что и селектор.
Селектор должен относиться только к порядковому типу данных, но не к типу longint.
Селектор может быть переменной или выражением.
Список констант может задаваться как явным перечислением, так и интервалом или их объединением. Повторение констант не
допускается.
Тип переключателя и типы всех констант должны быть совместимыми.
Формат:
Case of
: ;
. . .
: ;
[else ]
end
Выполнение оператора case происходит следующим образом:
1)вычисляется значение селектора;
2)полученный результат проверяется на принадлежность к тому или иному списку констант;
3)если такой список найден, то дальнейшие проверки уже не производятся, а выполняется оператор, соответствующий
выбранной ветви, после чего управление передается оператору, следующему за ключевым словом end, которое закрывает всю
конструкцию case;
4)если подходящего списка констант нет, то выполняется оператор, стоящий за ключевым словом else; если else-ветви нет,
то не выполняется ничего.
В операторе ветвления case по всем ветвям может выполняться только один оператор!
При необходимости выполнения нескольких требуется использовать операторные скобки begin-end.
Пример:
case Index mod 4 of
0 : x:= y*y + 1;
1 : x:= y*y – 2*y;
2, 3 : x:= 0
end;

А теперь, после прочтения статьи, попробуйте написать какую-нибудь простенькую программу на паскале использующую операторы ветвления:)

Читайте также: