
- •Технология программирования ветвящихся процессов
- •Программирование простых ветвлений
- •Программирование ветвления с элементарным условием
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Оператор безусловной передачи управления
- •Правила составления и использования
- •Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Полный оператор условного перехода
- •Правила записи и использования
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование ветвлений с составными условиями
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и выполнения логических выражений
- •Составление программы по условно-линейной схеме варианта 1
- •Составление программы по условно-линейной схеме варианта 2
- •Программирование сложных ветвлений
- •Программирование сложных многоузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Программа по левой условно-линейной схеме
- •Программа по правой условно-линейной схеме
- •Программирование сложных однооузловых ветвлений
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Правила составления и использования
- •Программа по левой условно-линейной схеме «множественное ветвление»
- •Программа по центральной условно-линейной схеме «множественное ветвление»
- •Программа по правой условно-линейной схеме «последовательное ветвление на два»
- •Заключение
- •Вопросы для контроля
Программа по центральной условно-линейной схеме «множественное ветвление»
Особенность центральной условно-линейной схемы – сохранение естественного порядка расчета при последовательном выполнении отдельных условий и нарушение этого порядка, когда условия не выполняются.
Программирование такого варианта требует использования полной структуры «множественный выбор».
-
Внимание! Попытка присвоить значение номера ветви 023 переменной n (n = 023) расценивается ЭВМ как работа с восьмеричным числом (238), поэтому при программировании номер ветви изменен на 320 (n = 320).
/* Множественное ветвление. switch */
#include<stdio.h>
#include<stdlib.h>
main( )
{
float baz, kbaz, st ;
int ball, n;
scanf("%f %f %d", &baz, &kbaz, &ball);
switch(ball)
{
case 0:
case 2:
case 3:
st = 0;
n = 320;
break;
case 4:
st = baz;
n = 4;
break;
case 5:
st = baz + kbaz*baz;
n = 5;
break;
default:
printf("Error");
}
printf("\n baz=%.2f kbaz=%.2f ball=%d ",baz, kbaz, ball);
printf("\n st=%.2f n=%d", st, n);
}
300. 0.25 0
300. 0.25 2
300. 0.25 3
300. 0.25 4
300. 0.25 5
Пять строк численных значений вводимых переменных позволяют проверить все возможные вычислительные ветви (= 0, = 2, = 3, = 4, = 5).
Результаты представлены в приложении 4.8 (а, б, в, г, д).
Внимание! Сообщение «Error» в строке выводимых данных свидетельствует о вводе в качестве балла любого непредусмотренного задачей значения.
Программа по правой условно-линейной схеме «последовательное ветвление на два»
Правая условно-линейная схема по стилю аналогична левой – сохраняет естественный порядок расчета при выполнении каждого условия и нарушает его, когда условия не выполняются. Программирование такого варианта реализуется с помощью полного if.
/* Сложное ветвление. Полный if */
#include<stdio.h>
#include<stdlib.h>
main( )
{
float baz, kbaz, st ;
int ball, n;
scanf("%f %f %d", &baz, &kbaz, &ball);
if(ball < 4)
{
st = 0;
n=320;
}
else
if(ball 5)
{
st = baz;
n = 4;
}
else
{
st = baz + kbaz*baz;
n = 5;
}
printf("\n baz=%.2f kbaz=%.2f ball=%d ",baz, kbaz, ball);
printf("\n st=%.2f n=%d", st, n);
}
300. 0.25 0
300. 0.25 2
300. 0.25 3
300. 0.25 4
300. 0.25 5
Пять строк численных значений вводимых переменных позволяют проверить все возможные вычислительные ветви.
Результаты представлены в приложении 4.9 (а, б, в, г, д).
Предлагаемые варианты реализации простых и сложных ветвящихся вычислительных процессов универсальны и могут использоваться при решении ветвящихся задач любых видов и типов.
-
Заключение
Ветвящийся (разветвляющийся) – вычислительный процесс с выбором одного из возможных вариантов вычислений в зависимости от проверки заданных условий.
Условие – зависимость, формирующая узел ветвления.
Варианты условий – простые, составные, сложные в соответствии с количеством используемых (заданных) логических и арифметических операций.
Узел ветвления – точка преобразования исходной (входной) ветви в несколько формируемых (выходных).
Варианты узлов – простой (две выходные ветви), сложный (три и более выходных ветвей).
Ветвь – каждый из возможных вариантов решения.
Пути реализации ветвящихся процессов – универсальный (последовательным делением на два), частный случай (одноузловое множественное условие).
В универсальном варианте ветвлений число конечных ветвей на единицу больше количества проверяемых условий.
Программные средства – операторы передачи управления (условный и безусловный), структура «множественный выбор».
Использование ветвящихся процессов в чистом виде достаточно редко. Эффективность программирования – наименьшая из всех типовых вычислительных процессов (ветвей много, но в каждом конкретном вычислении требуется только одна).
Значительные перспективы использования в смешанных вычислительных процессах в комплексе с циклами – поиск экстремумов, сортировка и т. п.