
- •Технология программирования ветвящихся процессов
- •Программирование простых ветвлений
- •Программирование ветвления с элементарным условием
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Оператор безусловной передачи управления
- •Правила составления и использования
- •Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Полный оператор условного перехода
- •Правила записи и использования
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование ветвлений с составными условиями
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и выполнения логических выражений
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование сложных ветвлений
- •Программирование сложных многоузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Программа по левой условно-линейной схеме
- •Программа по правой условно-линейной схеме
- •Программирование сложных однооузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и использования
- •Программа по левой условно-линейной схеме «множественное ветвление»
- •Программа по центральной условно-линейной схеме «множественное ветвление»
- •Программа по правой условно-линейной схеме «последовательное ветвление на два»
- •Заключение
- •Вопросы для контроля
Составление программы по условно-линейной схеме варианта 1
Условно-линейная схема алгоритма с последовательным расположением ветвей «ДА», «НЕТ», может быть реализована в программу только с использованием полного if.
Вариант программы имеет вид:
/* Задача 4.2. Составное условие. Полный if */
/* Разработал студент гр. А031 Степанов И.Г. */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main( )
{
float x, y;
int n;
scanf(“%5f%5f”, &x, &y);
printf(“\n X=%7.3f Y=%8.3f\n”, x, y);
if( x>0. && y>0. ) /* начало полного оператора if */
n=1; /* ветвь “ДА” */
else
n=234; /* ветвь “НЕТ” */
printf(“\n N=%3d\n”, n);
}
0.0703.000 – данные для проверки ветви 1
12.30-104. – данные для проверки ветви 234
-17.5-8.94 – данные для расчёта
Первые две строки численных значений позволяют проверить работоспособность каждой ветви программы. Третья – задаёт текущие значения, требующие реальной проверки.
Результаты счета представлены в приложении 4.3 (а, б, в).
Составление программы по условно-линейной схеме варианта 2
Условно-линейная схема алгоритма с последовательным расположением ветвей «НЕТ», «ДА», может быть реализована в программу только с использованием структуры из укороченного if и двух goto.
Вариант программы имеет вид:
/* Задача 4.2. Составное условие. Укороченный if */
/* Разработал студент гр. А031 Степанов И.Г. */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main( )
{
float x, y;
int n;
scanf(“%5f%5f”, &x, &y);
printf(“\n X=%7.3f Y=%8.3f\n”, x, y);
if( x>0. && y>0. ) goto M1; /* укороченный оператор if */
n=234; /* ветвь “НЕТ” */
goto M2;
M1: n=1; /* ветвь “ДА” */
M2: printf(“\n N=%3d\n”, n);
}
0.0703.000 – данные для проверки ветви 1
12.30-104. – данные для проверки ветви 234
-17.5-8.94 – данные для расчёта
Первые две строки численных значений позволяют проверить работоспособность каждой ветви программы. Третья – задаёт текущие значения, требующие реальной проверки.
Результаты счета представлены в приложении 4.4 (а, б, в).
Составление программ завершает этап создания программного продукта задачи с одним составным условием.
Предлагаемая технология универсальна и применима для предмашинной подготовки задач с проверкой одного любого составного условия.
-
Программирование сложных ветвлений
Рассмотренные примеры ветвящихся процессов требовали проверки одного взаимоисключающего условия, что приводило к получению в алгоритмах и программах двух вычислительных ветвей. Такой простейший вариант ветвящегося процесса в практике вычислений не является основным.
В большинстве реальных задач требуется проверка нескольких различных условий. Принципиально возможны два типовых варианта:
-
несколько последовательных простых узлов;
-
один сложный узел.
Т
аким
образом, сложные ветвления по критерию
«структура» делятся на многоузловые
(совокупность простых) и одноузловые
(множественные).
Графически классификация представлена на рис. 4.7.
Рис. 4.7. Классификация сложных ветвлений
Общая методика выполнения сложных ветвлений в любом из вариантов рекомендует преобразование заданного условия в последовательность условий (главного и вспомогательных) (рис. 4.8).
Рис. 4.8. Схема последовательного ветвления
Главное – условие, формирующее две основные ветви решения.
Вспомогательное (дополнительное) – условие (подусловие) в одной из ветвей главного или предыдущих вспомогательных условий.
Представленный алгоритм является универсальным и позволяет проверять любое количество взаимоисключающих условий методом последовательного ветвления на два.
-
Внимание! При последовательной проверке взаимоисключающих условий всегда сохраняется закономерность: если количество проверяемых условий N, то число получаемых вычислительных ветвей равно N+1.
Рассмотрим программирование сложных ветвлений подробно.