Логический условный оператор IF.


Логический условный оператор предназначен для пропуска или выполнения одного указанного в нем оператора в зависимости от истинности некоторого условия. Логический оператор IF имеет формат: IF (L) S

где L – логическое выражение;

S – любой оператор Фортрана, кроме оператора цикла DO и логического IF.

Логический оператор IF выполняется следующим образом: сначала проверяется истинность логического выражения L, содержащегося в скобках в формате оператора. Если значение логического выражения истинно (.TRUE.), то следующим выполняется оператор S. Если ложно (.FALSE.), то оператор S пропускается, и управление передается следующему в записи программы оператору.

 

Пример 1: Функция f (x) задана Соответствующий фрагмент программы

соотношением: и блок-схема на (рис. 4, б) ):

IF (X.GE.1) Y=X*X IF (X.LT.1) Y=1.

 

 

       
   


нет да нет да

 

а) б)

Рис. 4

Пример 2: Вычислить функцию Z по одной из следующих формул:

 

 

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

IF (X .LT. Y) GO TO 10

10 Z=X*X - Y*Y

GO TO 20

IF (X .EQ. Y) GO TO 30

30 Z=X * X + Y * Y

GO TO 20

IF (X .GT. Y) Z =X-Y

20 PRINT 5, Z

5 FORMAT (3X,’Z=’,F8.2)

 

 

2.7 пример выполнения задания в работе № 2 (состоит из двух частей)

Тема: Операторы передачи управления.

Цель: Составить тексты программ для вычисления значений функций, с использованием условного арифметического и условного логического операторов.

Ход работы: Ocoбoе внимание в работе следует обратить на составление фрагмента программы по математической записи вычислений и, наоборот, - на построение по фрагменту программы соответствующей ему блок-схемы и математической записи вычислений. При этом необходимо рационально использовать возможности арифметического и логического IF, а также иметь в виду, что оператор, следующий за GO TO, должен быть снабжен меткой.

Пример 1:

 

ПО ФРАГМЕНТУ ПРОГРАММЫ 1) ПОСТРОИТЬ БЛОК-СХЕМУ (рис 5) И ДАТЬ МАТЕМАТИЧЕСКУЮ ЗАПИСЬ ПРОЦЕССА 2).

ФРАГМЕНТ ПРОГРАММЫ 1)

IF (X-4.) 1, 1, 2 1 IF (X) 3, 4, 4 3 Y=X-9 GO TO 7 4 Y=4. *X-9 GO TO 7 2 Y=3.*X-5 7 PRINT *, ’Y= ’, Y

БЛОК-СХЕМа

 
 


нет

 

да

нет

 
 


Результат выполнения примера 1: да

2) МАТЕМАТИЧЕСКая ЗАПИСЬ

ПРОЦЕССА

       
 
Данный фрагмент программыреализует вычисление Yпо формулам:     затем к полученному значению y прибавляется х2.
   
 

 


 

       
   
 
 

 


 

Рис. 5

 

Задания к лабораторной работе № 2

Составить программы вычисления значений функций Y и Z, предусмотрев в них форматный вывод данных и результатов расчетов. Просчитать несколько раз с такими исходными данными, при которых выполнялись бы все условия в задании варианта.

 

Вариант № 1

1.1. используя условный арифметический оператор

 

 

1.2. используя условный логический оператор

 

Вариант № 2

1.1. используя условный арифметический оператор



 

1.2. используя условный логический оператор

 

Вариант № 3

1.1. используя условный арифметический оператор

 

1.2. используя условный логический оператор

 

 

Вариант № 4

1.1. используя условный арифметический оператор

 

1.2. используя условный логический оператор

 

 

Вариант № 5

1.2. используя условный арифметический оператор

1.2. используя условный логический оператор

Вариант № 6

1.2. используя условный арифметический оператор

1.2. используя условный логический оператор

Вариант № 7

1.3. используя условный арифметический оператор

 

1.2. используя условный логический оператор

 

 

Вариант № 8

 

1.3. используя условный арифметический оператор

 

 

1.2. используя условный логический оператор

 

 

РАЗДЕЛ III.Лабораторная работа № 3

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

Рассмотрим пример циклического алгоритма, когда некоторые его пункты выполняются многократно. Например, требуется найти сумму n чисел. Пусть n = 3. Тогда программу можно представить в следующем виде:

       
   
*продолжение SUM 1 READ *, X S = S + X PRINT *, ' ВВЕД. ЗНАЧ. X ' READ *, X S = S + X PRINT *, ‘СУММА S =’ , S END  
 
PROGRAM SUM1 S = 0 PRINT*, 'ВВЕД. ЗНАЧ. X ' READ *, X S = S + X PRINT *, 'ВВЕД. ЗНАЧ. X’
 


 

 

В этой программе операторы ввода и присваивания повторяются три раза. Но если бы нужно было сложить 100 чисел, то эти операторы следовало бы повторить 100 раз. Естественно, возникает желание избежать стократного повторения операторов. Это можно сделать, составив программу таким образом, чтобы нужная группа операторов использовалась неоднократно. Это можно сделать, например, так:

 
 
*продолжение SUM2 S = S + A K = K + 1 IF (K . LT. N) GO TO 1 PRINT 5, N, S 5 FORMAT (10X, ‘СУММА ‘,I 3, *‘ЧИСЕЛ S =’, F10.4 END  


PROGRAM SUM2

S = 0

K = 0

PRINT *,’ВВЕДИТЕ ЧИСЛО СЛАГАЕМЫХ N’

READ (5,*) N

1 PRINT *, ’ВВЕДИТЕ СЛАГАЕМОЕ A’

READ (5, *) A

 

 

Пример 2:

Пусть надо вычислить сумму некоторого ряда: S = x1 + x2 + …+ x n. Если зафиксировать число n, то все этапы вычисления можно записать в виде линейного алгоритма. Например, для n=6 алгоритм вычисления суммы ряда можно представить так:

 

1. S положить равным 0.

2. S сложить с x1; сумму S + x1, считать новым значением S.

3. S сложить с x2; сумму S + x2 считать новым значением S,

и т.д. до сложения S с x6.

 

Эту запись можно усовершенствовать – вместо слов «считать новым значением» или «положить равным» можно писать символ =. Тогда рассмотренный алгоритм будет выглядеть следующим образом:

 
 
5. S =S +x4 6. S =S +x5 7. S =S +x6 8. Стоп  


1. S =0

2. S =S +x1

3. S =S +x2

4. S=S +x3

 

Здесь все действия выполняются последовательно одно за другим и не

более чем по одному разу, т.е. алгоритм, является линейным. В п. 1 переменной S присваивается значение, равное нулю, и к моменту выполнения п.2 S=0. Поэтому в п. 2, где текущее значение S складывается с x1, результат становится новым значением S. В п. 3 это новое значение S складывается с x2, в результате чего S становится равным сумме x1 и x2. В п. 4 S становится равным сумме трех слагаемых x1, x2 и x3 и т.д.

Легко заметить, что в пп. 2 –7 выполняются одинаковые действия. В каждом

пункте переменной S присваивается значение, равное суме текущего значения S и значения очередного слагаемого x2, которое определяется значением индекса i, изменяющегося в нашем примере от 1 до 6. Учитывая сказанное, алгоритм вычисления суммы ряда можно записать короче:

 

1. S: =0. 4. S: =S + x .

2. i: =0. 5. Если i < 6, то перейти к п.3.

3. i: =i + 1. 6. Стоп.

 

В пунктах 1 и 2 присваивается начальное значение искомой сумме S и индексу i. Эти пункты и п. 6 выполняются по одному разу. А п.п. 3, 4 и 5 выполняются многократно, в данном случае шесть раз. Эти многократно выполняемые пункты образуют так называемый цикл. Особо важно то обстоятельство, что количество пунктов в цикле совершенно не зависит от количества повторений этих действий. Если бы нам надо было вычислить , то запись алгоритма осталась бы неизменным, за исключением п.5, в котором значение і сравнилось бы не с числом 6, а с числом 1000. В этом случае п.п. 3-5 выполнялись бы уже 1000 раз.

На этих примерах был продемонстрирован способ записи алгоритма,

который можно было бы назвать словесно-формульным.

Представим теперь в виде блок – схемы рассмотренный алгоритм вычисления суммы ряда (рис.6):

 
 

 

 


4) S: = S + x .

 

 
 


да нет

 

 

Рис. 6









Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su не принадлежат авторские права, размещенных материалов. Все права принадлежать их авторам. Обратная связь