- •1. Константы
- •2. Типы констант
- •3. Переменные
- •4. Типы переменных
- •5. Операторы описания
- •6. Арифметические операции
- •7. Расположение текста программы на экране дисплея
- •4 Write (*,*) ’ Введите значения сторон треугольника a, b, c ’
- •9. Арифметический оператор if
- •8. Технология прохождения фортран – программ на эвм
- •Оператор, следующий после if арифметического должен иметь метку;
- •If арифметический не может быть последним оператором в цикле do.
- •4 Write (*,*) ’ Введите значения сторон треугольника a, b, c ’
- •8 Write (*,*) ’ Площадь треугольника равна нулю ’
- •9 Write (*,*) ’ Такой треугольник не существует ’
- •10. If логический
- •11. Табулирование функции
- •12. Оператор цикла do
- •3 Write(6,*)’Введите переменные a,b,c’
- •13. Массивы
- •Работа с массивами
- •14. Ввод массивов
- •15. Вывод массивов
- •16. Конструкция if then–else – end if
- •17. Оператор data
- •По очерёдности следования;
- •По типу данных;
- •Количество переменных не должно превышать количество констант
- •19. Ввод двумерного массива
- •20. Оператор format
- •20.1. Спецификация X
- •20.2. Спецификация I
- •20.3 Разделители
- •20.4. Формат f
- •20.5 Использование повторителей в операторе format
- •20.6 Вывод по спецификации Fw.D
- •20.8. Вывод информации по спецификации Еw.D
- •20.8 Ввод и вывод информации по спецификации Gw.D
- •Подпрограммы
- •21. Оператор-функция
- •22. Подпрограмма-функция (function)
- •23. Подпрограмма subroutine.
- •24. Способы передачи данных в подпрограмму.
- •If (логическое выражение 1) return 1
- •If (логическое выражение 2) return 2
- •25. Передача данных посредством оператора common
Оператор, следующий после if арифметического должен иметь метку;
If арифметический не может быть последним оператором в цикле do.
Если в качестве условия имеется неравенство, то его необходимо привести к виду, при котором происходит сравнивание выражения с нулём.
x2 + c >y → x2 + c – y > 0
С учётом этого доработаем Программу № 1, где при помощи IF арифметического проверим условие: если самая длинная сторона больше чем полупериметр, то треугольник не существует.
С Программа № 2 – Вычисление площади треугольника при помощи
С IF арифметического
4 Write (*,*) ’ Введите значения сторон треугольника a, b, c ’
READ (*, *) A, B, C
C Блок проверки правильности введенных данных
IF (A) 4, 4, 20
Проверка введенных исходных данных: сторона треугольника не может быть отрицательной или равна нулю.
20 IF (B) 4, 4, 21
21 IF (C) 4, 4, 22
Вместо этих трех операторов лучше использовать один IF (AMIN1(A,B,C)) 4, 4, 22
С Конец блока проверки правильности введённых данных
22 P = ( A + B + C ) / 2
IF (AMAX1 ( A , B , C ) – P ) 6, 8, 9
Встроенные функции АМIN1, АМАХ1 из списка переменных, перечисленных в скобках, выбирают минимальное (максимальное) число. Последний оператор обозначает: если максимальная из сорон равна полупериметру, то управление передается на метку 8. Если максимальная из сторон меньше полупериметра, то идем на метку 6 и вычисляем площадь. А иначе идем на метку 9.
8 Write (*,*) ’ Площадь треугольника равна нулю ’
GO TO 4
6 S = SQRT ( P*(P-A)*(P-B)*(P-C) )
WRITE (*,*) ’ Площадь S = ’, S
GO TO 4
9 Write (*,*) ’ Такой треугольник не существует ’
PAUSE
Оператор PAUSE или PAUSE ‘текст’ служит для приостановки выполнения программы на экране до любого нажатия на клавиатуру. Он позволяет посмотреть данные, полученные при выполнении программы до завершения программы по оператору STOP.
STOP
END
Описание работы программы:
Вначале выводится приглашение ко вводу сторон треугольника А,В,С. После их ввода с клавиатуры происходит присваивание этих чисел переменным А,В,С соответственно. Затем следует блок проверки, в котором проверяется, чтобы не было введено отрицательное число (если введено отрицательное число, то управление передастся на метку 4 – метку оператора приглашения к вводу). После блока проверки вычисляется значение полупериметра Р. Проверка на корректность введенных данных и возможность существования треугольника с такими сторонами осуществляется при помощи условия: IF(AMAX1 (A,B,C)–P) 6,8,9.
10. If логический
Записывается в виде:
IF ( <логическое выражение> ) <выполняемый оператор>
Пример:
IF ( A . GT . B ) Y = SIN(X)
Если А больше В, то Y присвоить значение sin(x).
В качестве выполняемых операторов могут быть:
1) Операторы присваивания типа Х=3.5;
2) Операторы ввода – вывода информации READ,WRITE;
3) Оператор перехода GO TO;
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*sin x, то напечатать a,b,x
IF (A+B.GE.C .AND. C.GT.2.*SIN(X)) WRITE (5, *) A, B, X
IF логический работает следующим образом:
1). Определяется логическое выражение, стоящее в скобках. Это логическое выражение может быть истинно и иметь значение .TRUE. или может быть ложным и иметь логическое значение .FALSE.. Если логическое выражение в скобках истинно, то выполняется выполняемый оператор, стоящий за скобками оператора IF. Если логическое выражение в скобках ложно, то выполняемый оператор не выполняется. Как в первом, так и во втором случае после IF логического выполняется следующий за ним по тексту программы оператор, за исключением случая, когда логическое выражение истинно, а выполняемым оператором является GO TO. (Пример: IF(A.GT.0.) GO TO 7).
Задача:
Вычислить значение
в зависимости от данных условий.
Преобразуем неравенство x > 2b к виду сравнения с нулем x – 2b > 0
С Программа № 3 с IF арифметическим
REAL LAM
В этой строке переменная LAM описывается как переменная вещественного типа.
Если не сделать этого описания, а использовать в программе переменную LAM, то из-за несоответствия типов (LAM – целого типа, а используется как вещественного)будет возникать ошибка. У этой переменной не может быть дробной части.
WRITE (5,*)’Введите значения 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 (5,*) ’ Вычисленное значение Лямбда= ’ , LAM
PAUSE
STOP
END
70% ошибок у программистов возникает из-за несоответствия типов переменных. Ошибки вроде и пустяковые, но из-за них может не заработать даже абсолютно правильно составленная программа. И на устранение ошибки может уйти достаточно много времени.
Как и многие программы, эта программа может быть составлена большим количеством разных способов. Приведём другой способ решения этой же задачи.
С Программа № 4 с использованием IF логического
REAL LAM
Вместо описания имена LAM как вещественного типа можно задать другое имя, которое не будет начинаться на буквы I,J,K,L,M,N, например ALAM
WRITE (5,*) ’ Введите значения 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 (5,*) ’ Вычисленное значение Лямбда= ’ , LAM
END
Лучше ещё ввести новую переменную и присвоить ей выражение 2.*В и далее использовать эту переменную:
A=2.*B
IF(X.GT.A) LAM=SIN(X)
Кстати, вместо первого оператора IF ( X.GT.2.*B ) LAM=SIN(X) можно просто записать LAM=SIN(X) . Проанализируйте программу и убедитесь, что она будет работать правильно. Проанализируйте, что произойдет, если таким же образом заменить последний IF.
