Народна Освіта » Інформатика » Алгоритмы с ветвлениями

НАРОДНА ОСВІТА

Алгоритмы с ветвлениями

1.    Какие выражения называют логичными? Какие значения они могут принимать

2.    Назовите логические операции. Приведите таблицу истинности каждой из них.

3.    Что такое ветвление? Какие виды ветвления вам известны? Чем они отличаются друг от друга?

АЛГОРИТМЫ С ВЕТВЛЕНИЕМ

Вы уже знаете, что алгоритмы могут содержать ветвления. Вы также знаете, что ветвление как фрагмент алгоритма начинается с команды проверки условия и результатом выполнения этой команды может быть либо истина (Да, true), либо ложь (Нет, false). И в зависимости от результата исполнения этой команды будут исполняться те или иные команды.

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

В общем случае блок-схемы ветвлений имеют следующий вид (рис. 6.18 и 6.19):

ВЕТВЛЕНИЯ В OBJECT PASCAL

Команда полного ветвления в языке программирования Object Pascal имеет такой общий вид:

1Клогическое выражение>

Then begin

 

последовательность команд 1> end

Else begin

последовательность команд 2> end;

(англ. if - если, then - то, тогда, else - иначе).

Исполняется эта команда так: вычисляется значение логического выражения; если это значение true, то исполняется последовательность команд 1 и после этого исполняется команда, следующая за ветвлением; если это значение false, то исполняется последовательность команд 2 и после этого исполняется команда, следующая за ветвлением.

Есть в Object Pascal и команда неполного ветвления:

К<логическое выражение>

Then begin

последовательность команд> end;

Исполняется эта команда так: вычисляется значение логического выражения; если это значение true, то исполняется последовательность команд и после этого исполняется команда, следующая за ветвлением; если это значение false, сразу исполняется команда, следующая за ветвлением.

Обращает ваше внимание:

•    если после ключевых слов Then и Else следует только по одной команде, то операторные скобки begin и end можно не ставить;

•    перед Else ставить точку с запятой нельзя.

Рассмотрим задачу, алгоритм решения которой содержит ветвление.

Задача 1. Вычислить значение выражения (a + 2b) / (a - 3b), где a, b -действительные числа.

Поскольку выражение содержит действие деления на выражение, которое может быть равно нулю (например, при a = 3 и b = 1), алгоритм решения этой задачи должен содержать ветвление, в котором будут учтены два возможных случая: значение выражения а - 3Ь равно 0 и значение выражения а - 3Ь не равно 0.

Блок-схема алгоритма решения этой задачи будет выглядеть так (рис. 6.20):

Если записать на языке Object Pascal алгоритм, приведенный на рисунке 6.20, то он будет выглядеть так: a := StrToFloat(Editl.Text); b := StrToFloat(Edit2.Text); x := a—3*b;

If x = 0

Then Labell.Caption := ’Выражение значения не имеет: деление на нуль’ Else begin

y := a+2*b; z : = y/x;

Labell.Caption := FloatToStr(z); end;

Обращаем ваше внимание, что вычисление значения выражения a — 3b можно было бы не выполнять в отдельной команде и не запоминать как значение переменной х, а выполнять непосредственно в команде ветвле-

ния. Также вычисление значения выражения (a + 2b) / (a - 3b) можно записать не двумя командами, а одной. Тогда этот фрагмент проекта будет выглядеть так:

а := StrToFloat(Editl.Text); b := StrToFloat(Edit2.Text);

If a—3*b = 0

Then Labell.Caption := ’Выражение значения не имеет: деление на нуль’ Else begin

z := (a+2*b) /(a-3*b);

Labell.Caption := FloatToStr(z); end;

Рассмотрим задачу, при решении которой в команде ветвления используется конъюнкция.

Задача 2. Вычислить значение заданной функции

\2х -12, если -3 < х < 5,

У = 1

[7 - 8х, для всех других х.

Фрагмент проекта для решения этой задачи будет выглядеть так: x := StrToFloat(Editl.Text);

If (x > —3) and (x < 5)

Then y := 2*x - 12 Else y := 7-8*x;

Labell.Caption := FloatToStr(y);

Рассмотрим, наконец, задачу, при решении которой используется более сложное ветвление.

Задача 3. Даны два числа. Определить, равны ли они. Если нет, то какое из них больше?

Блок-схема алгоритма решения этой задачи будет выглядеть так, как на рисунке 6.21.

В этом алгоритме внутри одного ветвления используется другое ветвление. Вот как выглядит фрагмент соответствующего проекта:

If x = y

Then Labell.Caption := ’Числа равны’

Else If x>y

Then Labell.Caption := ’Первое число больше’

Else Labell.Caption := ’Первое число меньше’;

В общем случае блок-схемы ветвлений будут выглядеть так (рис. 6.22 и 6.23):

Команда полного ветвления в языке программирования Object Pascal будет выглядеть так:

If <логическое выражение>

Then begin

последовательность команд 1> end

Else begin

последовательность команд 2> end;

Исполняется эта команда следующим образом: вычисляется значение логического выражения; если это значение true, то исполняется последовательность команд 1 и после этого исполняется команда, следующая за ветвлением; если это значение false, то исполняется последовательность команд 2 и после этого исполняется команда, следующая за ветвлением.

Есть в Object Pascal и команда неполного ветвления:

If <логическое выражение>

Then begin

последовательность команд> end;

Исполняется эта команда следующим образом: вычисляется значение логического выражения; если это значение true, то исполняется последовательность команд и после этого исполняется команда, следующая за ветвлением; если это значение false, сразу исполняется команда, следующая за ветвлением.

1*. Как выглядит блок-схема полного ветвления? Опишите особенности исполнения такого фрагмента алгоритма.

2*. Как выглядит блок-схема неполного ветвления? Опишите особенности исполнения такого фрагмента алгоритма.

3*. В чем различия в исполнении полного и неполного ветвления?

4°. Как выглядит команда полного ветвления в Object Pascal?

5°. Как выглядит команда неполного ветвления в Object Pascal?

6*. В чем различие исполнения команд полного и неполного ветвления в Object Pascal?

1*. Объясните ход исполнения команды:

If <логическое выражение 1>

Then begin

<команды 1> end

Else If <логическое выражение 2>

Then begin

<команды 2> end

Else begin

<команды 3> end;

2*. Объясните ход исполнения последовательности команд: If <логическое выражение 1>

Then begin

<команды 1> end;

If <логическое выражение 2>

Then begin

<команды 2> end;

3*. Объясните, чем исполнение команды в задании № 1 отличается от исполнения последовательности команд в задании № 2.

4*. Создайте    проект    для    вычисления    значения    выражения

(а + Ь) - с : (а - Ь). Сохраните проект в папке с именем Задание

6.4.4,    созданной в вашей папке.

5*. Создайте    проект    для    вычисления    значения    выражения

а + Ь - с : (а - 2Ь). Сохраните проект в папке с именем Задание

6.4.5,    созданной в вашей папке.

6*. Создайте проект, который определяет меньшее из двух произвольных действительных чисел или выводит сообщение, что числа равны. Сохраните проект в папке с именем Задание 6.4.6, созданной в вашей папке.

7*. Создайте проект, который определяет большее из двух неравных действительных чисел. Сохраните проект в папке с именем Задание 6.4.7, созданной в вашей папке.

8°. Создайте проект, который вычисляет модуль произвольного действительного числа. Сохраните проект в папке с именем Задание 6.4.8, созданной в вашей папке.

9*. Создайте проект, который определяет наименьшее число среди трех неравных чисел. Сохраните проект в папке с именем Задание 6.4.9, созданной в вашей папке.

10*. Приведите примеры правил по украинскому языку, математике, другим предметам, содержащих ветвления.

11*. Приведите примеры жизненных ситуаций, которые можно описать алгоритмом с ветвлением.

12*. Создайте проект, в котором кнопка будет перемещаться на 20 пикселей вправо при наведении на нее курсора. После того как кнопка исчезнет за правой границей окна, она должна появиться у левой ее границы. Сохраните проект в папке с именем Задание 6.4.12, созданной в вашей папке.

13*. Создайте проект для нахождения х из уравнения ах = Ь. Сохраните проект в папке с именем Задание 6.4.13, созданной в вашей папке. 14*. Создайте проект для нахождения х из уравнения ах + Ь = с. Исполните его при:

1) а = 2; Ь = -8; с = 18; 2) а = 20; Ь = 5; с = 5;

3) а = 0; Ь = 12; с = 3; 4) а = 0; Ь = 10; с = 10.

Сохраните проект в папке с именем Задание 6.4.14, созданной в вашей папке.

15*. Создайте проект для определения, можно ли из трех отрезков с заданными длинами образовать треугольник. Сохраните проект в папке с именем Задание 6.4.15, созданной в вашей папке.

16*. Создайте проект, в котором вычисляется значение функции

Г15 - Зх, если -1 < х < 4,

^ [б + 4х, для всех других х.

Сохраните проект в папке с именем Задание 6.4.16, созданной в вашей папке.

 

Это материал учебника Информатика 8 класс Ривкинд

 

Категорія: Інформатика

Автор: admin от 16-10-2016, 02:49, Переглядів: 2842