Понятия информации, данных и информационных процессов. Устройство и принципы работы персонального компьютера

Страницы работы

Фрагмент текста работы

Поскольку оператор END не может иметь метки, перед ним ставится пустой оператор WRITE(*,*), который приводит к простому пропуску строки.

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

Алгоритм, в котором в зависимости от условия возможны два пути продолжения вычислительного процесса, называется простым разветвляющимся алгоритмом. Алгоритм, в котором в зависимости от выполнения условий возможны несколько путей продолжения вычислительного процесса, называется многоразветвляющимся алгоритмом.

Для программирования сложных разветвлений целесообразно использовать составной оператор IF. В этом случае применяется стиль структурного программирования, программа становится более компактной, хотя и не соответствует классической блок-схеме. 

Составной оператор IF-ELSEIF-ELSE-END IF Структура оператора:

   IF(A¤B) THEN     оператор 1

ELSEIF(C¤D) THEN     оператор 2

   ELSEIF(E¤F) THEN     оператор 3

   ELSE     оператор k

   END IF

Если условие (A¤B) выполняется, то выполняется оператор 1, и управление передается на конец конструкции (END IF). Иначе, если (ELSEIF) выполняется условие (C¤D), то выполняется оператор 2, управление передается на END IF. Если нет, то проверяется следующее условие и т.д. (ELSEIF может быть несколько). Если ни одно из условий не выполнено (ELSE), то выполняется оператор k

Структура ELSEIF может вообще отсутствовать, тогда оператор принимает более простой вид:

   IF(A¤B) THEN     оператор 1

   ELSE     оператор 2    END IF

Пример. Вычислить значение функции

                                                            x2 + bx + c,  если       x < 0;

y =bx + c,         если 0 ≤ x ≤1;

x,             если        x >1

при любых заданных значениях x ,b ,c.

Перед решением задачи целесообразно нарисовать ось x и отложить на ней точки ветвления (рис. 8.). Блоки условного перехода расставляем в порядке расположения точек ветвления и в том же количестве. Проверяемые условия обычно имеют знаки «меньше» или «меньше или равно». Первое проверяемое условие в данном случае x < 0. Если оно не выполнено, вычисление проводится по первой формуле, не имеет смысла проверять обратное условие. Второе проверяемое

условие - x ≤ 1. Если оно выполнено, то вычисление осуществляется по второй формуле. Если оба условия не выполнены, то нет смысла проверять последнее условие, а вычисление проводится по третьей формуле. 

Рис. 8. Точки ветвления

После выполнения действия по одному из разветвлений вычислительный процесс опять сводится в одно русло. 

При построении многоразветвляющегося алгоритма следует пользоваться правилом:

 вначале записываются блоки разветвления, число которых на один меньше, чем количество разветвлений; эти блоки содержат лишь односторонние условия (обычно со знаками «меньше» и «меньше или равно»); двойные условия записывать в блок-схеме и программе нельзя;  затем записываются блоки вычисления в порядке, обратном исходным формулам;   от каждого из блоков вычисления процесс переходит к одному блоку (обычно блоку печати), для этого после каждого блока вычисления (кроме последнего) следует использовать безусловный переход (стрелка на блок-схеме или оператор GOTO в программе);  число проверяемых условий всегда на единицу меньше числа разветвлений.

Приведем блок-схему и два варианта программы. Первый вариант полностью соответствует блок-схеме. При этом блоки вычислений записываются в обратном порядке, а возвращение вычислительного процесса в единое русло (к блоку печати результатов) осуществляется с помощью оператора безусловного перехода GOTO. Более рациональной является запись программы с использованием структурного оператора IF (второй вариант).

Блок-схема                        Программа на Фортране

Первый вариант    

WRITE(*,*) ’Введите b,c,x’

READ(*,*) b,c,x

IF (x.LT.0) GOTO 1 IF (x.LE.1) GOTO 2 y=SQRT(x) GOTO 3

2  y=b*x+c

GOTO 3

1  y=x**2+b*x+c

3  WRITE(*,*)

’b=’,b,’c=’,c,’x=’,x,’y=’,y

END

                                                                     Второй вариант 

WRITE(*,*) ’Введите b,c,x’

READ(*,*) b,c,x IF (x.LT.0) THEN y=x**2+b*x+c ELSE IF (x.LE.1) THEN y=b*x+c ELSE y=SQRT(x) END IF

WRITE(*,*)

’b=’,b,’c=’,c,’x=’,x,’y=’,y

END

Циклический алгоритм

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

1

2

3

4

Рис. 9. Обобщенная схема циклического алгоритма

Для организации цикла определяются переменная цикла (x) и его параметры - начальное и конечное значение переменной цикла и шаг ее изменения (xn, xk, hx). Блоки 1 – 4 называются блоками организации цикла:

1.  Блок начального присвоения (переменной цикла присваивается начальное значение).

2.  Тело цикла - многократно повторяющаяся часть алгоритма, внутри которой переменная цикла не изменяется. Телом цикла может быть любой алгоритм: линейный, разветвляющийся или циклический.

3.  Блок приращения значения переменной цикла (переменная цикла изменяет

Похожие материалы

Информация о работе