Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
64
Добавлен:
02.05.2014
Размер:
868.35 Кб
Скачать

10. If логический

Записывается в виде:

If(логическое выражение) выполняемый оператор

Пример:

IF(A.GT.B) Y=SIN(X) Если А больше В то Y присвоить значение sin(x)

В качестве выполняемых операторов могут быть:

1). Операторы присваивания типа Х=3.5;

2). Операторы ввода – вывода информации READ,WRITE;

3). Оператор перехода GOTO;

4). Оператор вызова подпрограммы CALL;

5). Оператор PAUSE.

В логических выражениях происходит сравнение значений двух выражений или переменных. Эти выражения разделяются операцией отношения.

Операции отношения соответствуют математическим обозначениям:

.GT. >

.GE.

.EQ. =

.NE.

.LE.

.LT.<

Рассмотрим, что значит выражение:

IF(A.GT.B) Y=SIN(X)

Это означает: если А больше В, то Yприсваивается синус от Х. Затем после этого оператора будет выполнятся следующий за ним. Если А не больше В, то оператор присваиванияY= игнорируется и выполняется оператор, следующий послеIF.

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

Логические операторы:

.AND. – логическое ‘И’

.OR. – логическое ‘ИЛИ’

.NOT. – логическое ‘НЕТ’

Пример:

если a+b≥с>2*sinx, то напечататьa,b,x

IF(A+B.GE.C.AND.C.GT.2.*SIN(X)) WRITE(6, *) A,B,X

IFлогический работает следующим образом:

1). Определяется логическое выражение, стоящее в скобках. Это логическое выражение может быть истинно и иметь значение .TRUE. или может быть ложным и иметь логическое значение .FALSE.. Если логическое выражение в скобкахистинно, то выполняется выполняемый оператор, стоящий за скобками оператораIF. Если логическое выражение в скобкахложно, то выполняемый оператор не выполняется. Как в первом, так и во втором случае послеIFлогического выполняется следующий за ним по тексту программы оператор, за исключением случая, когда логическое выражение истинно, а выполняемым оператором являетсяGOTO. (Пример:IF(A.GT.0.)GOTO7).

Задача: Вычислить значение в зависимости от данных условий.

Преобразуем неравенство x > 2bк виду сравнения с нулем

x – 2b > 0

x = 2b -> x - 2b = 0

x < 2b -> x - 2b < 0

С Программа № 3 с IF арифметическим

REAL LAM

В этой строке переменная LAM описывается как переменная вещественного типа.

Если не сделать этого описания, а использовать в программе переменную LAM, то из-за несоответствия типов (LAM – целого типа, а используется как вещественного) будет возникать ошибка. У этой переменной не может быть дробной части.

WRITE(6,*)’Введите значения x,b

READ(5,*) X,B

IF(X-2.*B) 4,7,8 Сравниваем условие и переходим на одну из меток

8 LAM=SIN(X)

GO TO 10

7 LAM=0.

GO TO 10

4 LAM=COS(X)

10 WRITE(6,*)’Вычисленное значение Лямбда=’,LAM

PAUSE

STOP

END

70% Ошибок у программистов возникает из-за несоответствия типов переменных!.

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

Как и все программы, эта программа может быть составлена большим количеством разных способов. Приведём другой способ решения этой же задачи.

С Программа № 4 с использованием IF логического

REAL LAM Вместо описания имена LAM как вещественного типа можно задать другое имя, которое не будет начинаться на буквы I,J,K,L,M,N, например ALAM

WRITE(6,*)’Введите значения x,b

READ(5,*) X,B

IF(X.GT.2.*B) LAM=SIN(X)

IF(X.EQ.2.*B) LAM=0.

IF(X.LT.2.*B) LAM=COS(X)

WRITE(6,*)’Вычисленное значение Лямбда=’,LAM

PAUSE

STOP

END

Лучше ещё ввести новую переменную и присвоить ей выражение 2.*В и далее использовать эту переменную:

……….

A=2.*B

IF(X.GT.A) LAM=SIN(X)

Кстати, вместо первого оператора IF(X.GT.2.*B) LAM=SIN(X) можно просто записать LAM=SIN(X) . Проанализируйте программу и убедитесь, что она будет работать правильно. Проанализируйте, что произойдет, если таким же образом заменить последний оператор IF.

Соседние файлы в папке Программирование на Фортране