Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
интегрирование Глава 4.doc
Скачиваний:
6
Добавлен:
12.11.2018
Размер:
1.08 Mб
Скачать

Программа по центральной условно-линейной схеме «множественное ветвление»

Особенность центральной условно-линейной схемы – сохранение естественного порядка расчета при последовательном выполнении отдельных условий и нарушение этого порядка, когда условия не выполняются.

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

  • Внимание! Попытка присвоить значение номера ветви 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 (а, б, в, г, д).

Предлагаемые варианты реализации простых и сложных ветвящихся вычислительных процессов универсальны и могут использоваться при решении ветвящихся задач любых видов и типов.

    1. Заключение

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

Условие – зависимость, формирующая узел ветвления.

Варианты условий – простые, составные, сложные в соответствии с количеством используемых (заданных) логических и арифметических операций.

Узел ветвления – точка преобразования исходной (входной) ветви в несколько формируемых (выходных).

Варианты узлов – простой (две выходные ветви), сложный (три и более выходных ветвей).

Ветвь – каждый из возможных вариантов решения.

Пути реализации ветвящихся процессов – универсальный (последовательным делением на два), частный случай (одноузловое множественное условие).

В универсальном варианте ветвлений число конечных ветвей на единицу больше количества проверяемых условий.

Программные средства – операторы передачи управления (условный и безусловный), структура «множественный выбор».

Использование ветвящихся процессов в чистом виде достаточно редко. Эффективность программирования – наименьшая из всех типовых вычислительных процессов (ветвей много, но в каждом конкретном вычислении требуется только одна).

Значительные перспективы использования в смешанных вычислительных процессах в комплексе с циклами – поиск экстремумов, сортировка и т. п.