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

Составление программы по условно-линейной схеме варианта 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 (а, б, в).

Составление программ завершает этап создания программного продукта задачи с одним составным условием.

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

    1. Программирование сложных ветвлений

Рассмотренные примеры ветвящихся процессов требовали проверки одного взаимоисключающего условия, что приводило к получению в алгоритмах и программах двух вычислительных ветвей. Такой простейший вариант ветвящегося процесса в практике вычислений не является основным.

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

  • несколько последовательных простых узлов;

  • один сложный узел.

Т аким образом, сложные ветвления по критерию «структура» делятся на многоузловые (совокупность простых) и одноузловые (множественные).

Графически классификация представлена на рис. 4.7.

Рис. 4.7. Классификация сложных ветвлений

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

Рис. 4.8. Схема последовательного ветвления

Главное – условие, формирующее две основные ветви решения.

Вспомогательное (дополнительное) – условие (подусловие) в одной из ветвей главного или предыдущих вспомогательных условий.

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

  • Внимание! При последовательной проверке взаимоисключающих условий всегда сохраняется закономерность: если количество проверяемых условий N, то число получаемых вычислительных ветвей равно N+1.

Рассмотрим программирование сложных ветвлений подробно.