Как на языке паскаль записывается полное и неполное ветвление
Перейти к содержимому

Как на языке паскаль записывается полное и неполное ветвление

  • автор:

Теоретический материал по теме «Полное и неполное ветвление» для языков программирования Паскаль и Питон

Теоретический материал по теме

Черевичкина Ирина

Презентация к уроку информатики по теме «Полное и неполное ветвление» по основам программирования на языке Паскаль или Питон.

Полное и неполное ветвление. Основы программирование Паскаль и Питон_.pptx

Полное и неполное ветвление Основы программирование

Полное и неполное ветвление

Основы программирование
На Паскале и Питоне

Разработчик: Черевичкина И.Н.

Конструкция «Полное ветвление»

Конструкция «Полное ветвление»

IF A>B THEN
Begin D:=A+B end
ELSE
Begin D:=ABS(A+B) end;

Конструкция «Неполное ветвление»

Алгоритмическая конструкция «Ветвление»

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

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

If (условие) THEN
begin действие 1; действие2; end
ELSE
begin действие 3; действие 4; end;

Если (условие), то Блок действий1 , иначе Блок действий_2

if (условие):
действие 1
действие2
else:
действие 3
действие 4

Оператор IF (УСЛОВИЕ).. THEN[…ELSE] —

Оператор IF (УСЛОВИЕ).. THEN[…ELSE] — УСЛОВНЫЙ оператор.

Условия в программировании пишутся при помощи знаков сравнения:

С двух сторон от знака сравнения могут стоять ПЕРЕМЕННЫЕ или ВЫРАЖЕНИЯ (функции или числовые).

Результат сравнения всегда логический: TRUE (Истина) или FALSE (Ложь).

В зависимости от результата условия при ИСТИНЕ оператор выполняет команды веточки THEN, а при ЛЖИ – веточки ELSE, если она есть.

IF A >15 THEN WRITE(‘ЧИСЛО’,A,’>15’)
ELSE WRITE(‘ЧИСЛО ‘,A,’не больше 15’) ;

При А=9 результат ложь

Оператор if (УСЛОВИЕ): .. […else] —

Оператор if (УСЛОВИЕ): .. […else] — УСЛОВНЫЙ оператор.

Условия в программировании пишутся при помощи знаков сравнения:
> — больше
< - меньше
>= — больше, либо равно
!= — не равно
== — равно

С двух сторон от знака сравнения могут стоять ПЕРЕМЕННЫЕ или ВЫРАЖЕНИЯ (функции или числовые).

Результат сравнения всегда логический: TRUE (Истина) или FALSE (Ложь).

В зависимости от результата условия при ИСТИНЕ оператор выполняет команды веточки «Да» (истина), а при ЛЖИ – веточки else, если она есть.

if A >15:
print(‘ЧИСЛО’,A,’>15’)
else:
print(“ЧИСЛО “ ,A,’не больше 15’) ;

Как на языке паскаль записывается полное и неполное ветвление

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

if then
else

Здесь 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

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

Логические операции

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

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)
Вопросы и задания

1. Как программируется на Паскале полное и неполное ветвление?

2. Что такое составной оператор? В каких случаях составной оператор используется в операторе ветвления?

3. Выполните на компьютере все программы, приведенные в данном параграфе.

4. Составьте не менее трех вариантов программы определения наименьшего из трех данных чисел.

5. Составьте программу сортировки по возрастанию значений в трех переменных: А, В, С.

6. Составьте программу вычисления корней квадратного уравнения по данным значениям его коэффициентов.

Условный оператор

обучение PascalABC

Инфоучка

В линейных программах все просто. Команды выполняются последовательно друг за другом. Но, если в задаче необходимо предусмотреть решение в нескольких вариантах, то здесь не обойтись без ветвления ( if then else ). Эта форма действий позволяет выбрать ход решения в зависимости от выполнения условия задачи.

На языке программирования Паскаль ветвление реализуется в виде условного оператора. В этой статье мы разберем как программируется на паскале полное и неполное ветвление.

Условный оператор if (полная форма)

Посмотрите на рисунок ниже. На нем изображена блок-схема полного ветвления. В этом варианте при выполнении условия выполняется команда Оператор 1. Если условие ложно, то выполнится команда Оператор 2. Ниже схемы приведена форма записи этой структуры на языке программирования Паскаль.

условный оператор паскаль

На паскале запись следующая: if [здесь условие] then [команда 1] else [команда 2];

Задание 1. Напишите программу. Целое число М вводится с клавиатуры. Если оно неотрицательное, то увеличить его на 5. В противном случае — заменить числом ноль.

Решение:

program uslop1; var m:integer; begin read(m); if m >= 0 then m:=m+5 else m:=0; write(m); end.

Задание 2. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.

Решение:

program uslop2; var a,b,c,ko,kp:integer; begin read(a,b,c); ko:=0; kp:=0; if a > 0 then kp:=kp+1 else if a < 0 then ko:=ko+1; if b > 0 then kp:=kp+1 else if b < 0 then ko:=ko+1; if c > 0 then kp:=kp+1 else if c < 0 then ko:=ko+1; write(kp,ko); end.

2 вариант
Добавим пояснительный текст в программу для улучшения пользовательского интерфейса.

program uslop2; var a,b,c,ko,kp:integer; begin write('Введите через пробел три целых числа и нажмите Enter'); readln(a,b,c); ko:=0; kp:=0; if a > 0 then kp:=kp+1 else if a < 0 then ko:=ko+1; if b > 0 then kp:=kp+1 else if b < 0 then ko:=ko+1; if c > 0 then kp:=kp+1 else if c < 0 then ko:=ko+1; writeln('Количество положительных чисел = ',kp); write('Количество отрицательных чисел = ',ko); end.

Условный оператор if (неполная форма)

Посмотрите на следующий рисунок внизу. Здесь изображена блок-схема неполного ветвления. В этом варианте при выполнении условия выполняется только команда Оператор 1. Если условие неверно, то программа передаст управление следующей команде, которая будет записана после ветвления.

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

как программируется на паскале полное и неполное ветвление

На pascal запись следующая: if [здесь условие] then [команда 1] ;

Кстати, во втором задании был пример использования неполного ветвления как части полного.

Задание 3. Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.

Решение:

program uslop3; var a:integer; begin write('Введите любое целое число '); readln(a); write('Число ',a); if a > 0 then write(' положительное'); if a < 0 then write(' отрицательное'); if a mod 2 = 0 then write(' чётное'); if a mod 2 <> 0 then write(' нечётное'); if a=0 then write(' нулевое'); end.

Ответы по параграфу 3.4 Программирование разветвляющихся алгоритмов

Учебник по Информатике 8 класс Босова

Задание 2. Как на языке Паскаль записывается полное и неполное ветвление?

Полное ветвление (Выполняются действия как для ветка «да», так и для ветки «нет»):
if then else

Неполное ветвление (Выполнение действия только для ветки «да»):
if then

Задание 3. Является ли условным оператором следующая последовательность символов?

Задание 4. Что такое составной оператор? Для чего он используется в условном операторе?

Составным оператором является конструкция вида:
begin end
которая может стоять в условном операторе и после then и после else.
Такая конструкция используется тогда, когда нужно выполнить последовательность из нескольких операторов.

Задание 5. Используя составной оператор, упростите следующий фрагмент программы:
if a>b then c:=1;
if a>b then d:=2;
if a if a

if a>b then begin c:=1; d:=2 end else begin c:=3; d:=4 end

Задание 6. Дано натуральное трехзначное число. Напишите программу, которая определяет:

а) есть ли среди цифр данного числа одинаковые;

program z_6a; var num, a, b, c: integer; //Исходные данные BEGIN write ('Введите трёхзначное число: '); read (num); a:= num div 100; num:=num-100*a; b:= num div 10; num:=num-10*b; c:= num; if (a=b) or (a=c) or (b=c) then write ('Есть одинаковые цифры') else write ('Нет одинаковых цифр') END.

б) является ли данное число «перевертышем», то есть числом, десятичная запись которого читается одинаково слева направо и справа налево.

program z_6b; var num, a, b, c: integer; //Исходные данные BEGIN write ('Введите трёхзначное число: '); read (num); a:= num div 100; num:=num-100*a; b:= num div 10; num:=num-10*b; c:= num; if a=c then write ('Перевертыш') else write ('НЕ перевертыш') END.

Задание 7. Даны две точки в плоской прямоугольной системе координат. Напишите программу, определяющую, которая из точек находится ближе к началу координат.

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

program z_7; var xA, yA, xB, yB: integer; A, B: real; BEGIN writeln ('Координаты 1-ой точки: '); write ('x='); read (xA); write ('y='); read (yA); writeln ('Координаты 2-ой точки: '); write ('x='); read (xB); write ('y='); read (yB); A:=sqrt(sqr(xA)+sqr(yA)); B:=sqrt(sqr(xB)+sqr(yB)); if A=B then write ('Точки равноудалены') else if A>B then write ('2-я точка ближе') else write ('1-я точка ближе') END.

Задание 8. Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторон. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний).

program z_8; var a, b, c: integer; BEGIN write ('a>>'); readln(a); write ('b>>'); readln(b); write ('c>>'); readln(c); //Проверяем, существует ли такой треугольник if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then begin if (a=b) and (a=c) and (b=c) then writeln ('Треугольник равносторонний') else if (a<>b) and (a<>c) and (b<>c) then writeln('Треугольник разносторонний') else writeln ('Треугольник равнобедренный'); end else writeln ('Треугольник со сторонами ', a,', ', b,', ', c,' не существует'); END.

Задание 9. Имеются данные о количестве полных лет трех призеров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призера.

Задание 10. Напишите программу, определяющую, лежит ли точка A на прямой y=kx+l, над ней или под ней.

Сначала вводим данные для переменных: k, l, xA, yA (два последних это координаты точки A). Затем в уравнение y=kx+l подставим вместо «x» значение переменной xA и найдем значение «y» при заданной xA. Далее мы сравниваем значение «y» и «yB» и делаем вывод, где находится точка относительно прямой, на ней, над ней или под ней.

program z_10; var y, k, l, xA, yA: integer; BEGIN write ('k>>'); read(k); write ('l>>'); read (l); write ('xA>>'); read(xA); write ('yA>>'); read(yA); y:= k*xA+l; if yA=y then writeln('Точка лежит НА прямой') else if yA>y then writeln('Точка лежит НАД прямой') else writeln('Точка лежит ПОД прямой') END.

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

program z_11; var x, y, t: integer; BEGIN write ('x>>'); readln(x); write ('y>>'); readln (y); if x>y then begin t:=x; x:=y; y:=t; end; writeln ('x=', x, '; y=', y) END.

Задание 12. Дан условный оператор:
if a else if a>5 then c:=2
else c:=3
Какое значение имеет переменная «a», если в результате выполнения условного оператора переменной «c» присваивается значение 3?

В нашем случае сработало третье условие. В первой условии значение переменной «a» меньше 5, а во втором больше 5. Значит переменная «а» равна 5. Ответ: a=5

Задание 13. Напишите программу, вычисляющую значение функции:

program z_16b; var x, y: integer; BEGIN write ('x>>'); readln(x); if xthen y:=-1 else if x=0 then y:=0 else y:=1; writeln ('y=', y) END.

Задание 14. Составьте программу для решения задачи №21 к параграфу 2.4 (определение дня недели).

program z_14; var chislo: integer; y: string; BEGIN writeln('Введите число января 2011 года:'); readln(chislo); writeln (chislo, ' января 2011 года: '); chislo:=chislo mod 7; if chislo=3 then y:=('Понедельник'); if chislo=4 then y:=('Вторник'); if chislo=5 then y:=('Среда'); if chislo=6 then y:=('Четверг'); if chislo=0 then y:=('Пятница'); if chislo=1 then y:=('Суббота'); if chislo=2 then y:=('Воскресенье'); writeln (y) END.

Задание 15. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введенным координатам двух полей (k, l) и (m, n) определяет, имеют ли эти поля один цвет.

Сумма координат соседних (т.е. имеющих общую сторону) полей на шахматной доске отличается на 1. Следовательно, если сумма координат некоторого поля является четным числом, то сумма координат всех его соседних полей будет нечетным числом и наоборот. Вместе с тем соседние поля всегда имеют разный цвет.

program z_15; var k, l, m, n: integer; BEGIN writeln('Координаты 1-го поля:'); readln (k, l); writeln('Координаты 2-го поля:'); readln (m, n); if (k+l) mod 2 = (m+n) mod 2 then writeln ('Поля одного цвета') else writeln ('Поля разного цвета') END.

Задание 16. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а (а – случайное число, меньшее 100). Ответ пользователя проверяется и комментируется.

program z_16; var a, b: integer; BEGIN randomize; a:=random(100); writeln ('Дополните до 100 число ', a); readln (b); if a+b=100 then writeln ('Молодец!') else writeln ('Ошибка!') END.

Решение заданий из учебника Информатика 8 класс Босова, параграф 3.4 Программирование разветвляющихся алгоритмов. Условный оператор, составной оператор, многообразие способов записи ветвлений, многообразие способов записи ветвлений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *