Разветвляющиеся алгоритмы
Цель: Освоить навык составления блок-схем алгоритмов разветвляющегося типа.
Задание: Для поставленных задач (согласно своего варианта) написать математическую модель решения задачи, составить таблицу входных и выходных данных, нарисовать блок-схему. Для задачи № 2 необходимо составить 2 блок-схемы: одну с использованием конструкции полная и (или) не полная развилка.
Задача № 1 (по вариантам)
Вычислить значение функции y от произвольного значения аргумента x. Алгоритм вычисления функции задан в таблице 1.
Таблица 1
Номер задачи | Функция | Условия | Данные | |
Теоретические сведения
Напомним, что алгоритмизация – это процесс разработки алгоритма (плана действий) для решения задачи.
Есть три основных типа алгоритма: линейный, разветвляющийся и циклический. Темой рассмотрения данной лабораторной работы является разветвляющийся алгоритм.
Разветвляющийся алгоритм содержит проверку некоторого логического условия, в зависимости от выполнения или не выполнения которого вычисления могут пойти по разным направлениям.
Для обозначения блоков разветвляющихся алгоритмов служит конструкция развилка.
Конструкция развилка
Есть несколько вариантов развилки: основная - полная развилка (рис. 1,а); неполная развилка (рис. 1,б), ее еще называют «коррекция» и множественный выбор (рисунок 1,в).
В конструкциях (рис. 1,а и 1,б) L - некоторое логическое выражение, которое может принимать одно из двух значений: «истина», если проверяемое условие верно (на схеме - направление «Да») или «ложь», если проверяемое условие неверно (на схеме - направление «нет»). В зависимости от значения L происходит выбор направления движения по схеме. S, S1, S2 - функциональные блоки.
|
Пример логических выражений: a > b; x2 +y2 £ R; a £ t £ b и т.п.
В конструкции на рисунке 1,в под Pi обычно понимается значение какой-либо метки оператора, которому передается управление. В современных алгоритмических языках обязательно есть оператор, позволяющий реализовать эту конструкцию.
Рисунок 1
Примеры выполнения задания
Задача № 1
Постановка задачи:
Вычислить значение F = ,
где m, n, x - заданные числа, y вычисляется по одной из формул:
Таблица входных данных
Переменная | Описание переменной |
M | Число, задаваемое пользователем |
X | Число, задаваемое пользователем |
N | Число, задаваемое пользователем |
Таблица выходных данных
Переменная | Описание переменной |
F | Значение функции |
Блок-схема:
Задача № 2
Постановка задачи:
функция y = f(x) задана графически:
разработать алгоритм, позволяющий определить значения функции для произвольно заданного вещественного х.
Математическая модель:
В данной задаче математическая модель задана в виде графика. Запишем ее в виде формул.
Из графика следует, что вся числовая ось разбита на три части: x< -1, -1£ x £1, x>1.
На полуинтервале x < -1 задана прямая,
паралельная оси х, ее уравнение у = 1.
На интервале -1£ x £1 задана прямая, проходя ходящая через две точки (-1, 1) и (1, 0). Для вычивычисления коэффициентов a и b уравнения
|
прямой y = ax + b, решим систему уравнений:
Итак, получено уравнение прямой:
у = -0,5х + 0,5.
Учитывая, что на полуинтервале х>1
функция не определена, математическую модель можно записать так:
где х - любое вещественное число.
Таблица входных данных
Переменная | Описание переменной |
х | Значение аргумента (задается пользователем) |
Таблица выходных данных
Переменная | Описание переменной |
Х | Аргумент, заданный пользователем |
Y | Значение функции при заданном аргументе |
S | Сообщение «Функция не определена» |
Блок-схема:
Примечание. в этом алгоритме использовали так называемый «флаг» (переменная F). В качестве «флага» в алгоритмах часто используют переменные, которым программист сам присваивает определенные значения. Эти значения придумываются (оговариваются) заранее и вводятся в соответствующих местах программ по мере необходимости.
В данной задаче принято, что «флаг» F будет принимать значение 1, если функция будет определена и F = 0, если функция не определена.
Задача № 3
Постановка задачи:
определить, попадает ли точка с произвольными координатами (х, у) в заштрихованную область:
Математическая модель:
Для решения данной задачи надо, учитывая заданную область, записать условие попадания точки в эту область, то есть построить математическую модель.
точка с заданными координатами
(х, у) попадет в заштрихованную область, если эти координаты будут удовлетворять условиям:
|
Таблица входных данных
Переменная | Описание переменной |
Х | Координата заданной точки по оси X |
Y | Координата заданной точки по оси Y |
Таблица выходных данных
Переменная | Описание переменной |
S1 | Сообщение «Точка попадает в область» |
S2 | Сообщение «Точка не попадает в область» |
Блок-схема:
Контрольные вопросы.
1) Дайте определение алгоритма.
2) Какие виды конструкций развилка вы знаете?
3) Какие основные типы алгоритмов вы знаете?
4) Дайте определение разветвляющегося алгоритма
Требования к оформлению отчета по лабораторной работе:
1 Отчет сдается в распечатанном и в электронном виде.
2 Отчет должен быть выполнен в соответствии с руководящим документом оформления текстовых студенческих работ.
3 В отчете для заданной задачи должны быть приведены:
- постановка задачи
- математическая модель решения задачи
- таблица входных данных
- таблица выходных данных
- блок-схема решения задачи.
4 Файл, содержащий электронную версию отчета должен иметь название в соответствии со следующим шаблоном:
Название группы_Название предмета_ФИО студента_номер лабораторной работы.
Например, для группы 1ПИб-1 для предмета «Информатика» название файла будет выглядеть следующим образом:
ПИб1_Информатика_Иванов А.С._лр5.doc
ПРИЛОЖЕНИЕ А
(обязательное)