Примеры:
PRINT*, ″WWOD M,N ″ ! вывод на экран текстовой подсказки для ввода
PRINT*, z, y ! Вывод только значений переменных z и y
PRINT*, ″ Z= ″, z, ″ Y= ″, y ! Вывод значений переменных z и y с пояснением
! Вывод значения корня квадратного из числа 2 с пояснением:
PRINT*, " SQRT( 2.0 ) =", SQRT( 2.0 )
Перечислим некоторые рекомендации по организации ввода-вывода:
-
Каждый оператор вывода формирует одну запись.
-
Не рекомендуется в одном операторе вывода задавать длинный список вывода, лучше использовать в таких случаях несколько операторов вывода.
-
Для поясняющих текстов (длиной до 256 символов) отводится столько места, сколько указано в символьной константе, текст прижимается к левому краю. Поэтому рекомендуется в конце и начале текста добавлять пробелы для улучшения вида.
Перед оператором ввода рекомендуется записывать вспомогательный оператор вывода, в котором помещается строка подсказки, поясняющая, какие величины и в каком порядке должны быть введены.
Оператор присваивания
Одним из наиболее распространенных шагов алгоритмов в математических задачах является вычисления по формулам. Результатам вычислений по формулам часто присваивают свои обозначения (имена переменных), чтобы пользоваться ими в дальнейшем.
Для записи операции присваивания будем в дальнейшем использовать символ = (не следует путать его с обычным знаком равенства).
Операцию присваивания будем также использовать для явного задания начальных значений величин и переприсваивания значений.
Шаг алгоритма, в котором описывается вычисление по формулам или осуществляется явное задание значений, будем называть присваиванием. В блок-схеме такой шаг алгоритма изображается с помощью блока обработки. В Фортран – программе его заменяет арифметический оператор присваивания.
Арифметический оператор присваивания
Это выполняемый оператор, с помощью которого проводятся вычисления по формулам, задаются начальные значения, осуществляется «пересылка» значений из одной ячейки памяти в другую (переприсваивание значений).
Общий вид этого оператора: x = АВ,
где x – имя переменной (простой или с индексами), АВ - арифметическое выражение (правая часть формулы), = знак присваивания.
Для компьютера этот оператор - указание о выполнении следующих действий:
1) вычислить значение арифметического выражения (АВ) в правой части оператора при текущих значениях входящих в него переменных;
2) привести значение полученного результата к типу переменной, находящейся в правой части оператора;
3) присвоить переменой, находящейся в правой части оператора, вычисленное и приведенное к типу переменной значение результата.
Примеры
-
PROGRAM PR_1
INTEGER:: J=2
REAL :: A=3.4, F=5.25, B=9.7
A=F ! значение переменной F присваивается переменной A
J=B ! значение переменной B присваивается переменной J
PRINT*, “A=”,A,” F=”,F,” J=”,J ! вывод результатов на экран
END
В результате выполнения программы, на экране увидим следующий результат:
A=5.25 F=5.25 J=9
-
-
PROGRAM PR_2
INTEGER:: J=2, I
REAL :: A=3.3, F=5.25, B
B=J*A+F
! переменной B присваивается результат вычисления ! выражения J*A+F , преобразованного к вещественному типу
PRINT*, “B=”, B ! вывод результата на экран
I=J*A+F
! переменной I присваивается результат вычисления ! выражения J*A+F , преобразованного к целому типу
PRINT*, “ I=”, I ! вывод результата на экран
END
В результате выполнения программы, на экране увидим следующий результат:
B=11.85
I=11
Рассмотрим примеры программ, составленных на основе линейного алгоритма.
Пример 3. Рассчитать значение величины t по следующей формуле
, для значений x=0.2, , , d = x + b.
Блок-схема алгоритма:
Программа примера 3:
PROGRAM PRIMER3
X=0.2
B=SQRT(10.75)
C=LOG10(B+1)
D=X+B
Z=X*X
Y=Z*X
T=(B*Z-SIN(Z)) / (Y+C*D*(Y*Z)**(1./7.))
PRINT*,” T=”,T
END
Обратите внимание, что в этой программе дополнительно введены переменные Z и Y, чтобы несколько раз не вычислять повторяющиеся в формуле для t выражения. Плюс операция возведения в степень здесь заменена операцией умножения, на которую компьютер тратит меньше времени, чем на возведение в степень. В принципе, вы можете использовать операцию возведения в степень, и на небольших программах это не является существенным. Однако, если программа сложная и содержит несколько тысяч операторов со сложными вычислениями, то рекомендуется, где это возможно, заменить операцию возведения в степень операцией умножения, что уменьшит затраты компьютера и увеличит скорость выполнения программы.
Пример 4. Составить программу вычисления площади вписанной в треугольник окружности , радиус , где – периметр треугольника.
Исходными данными задачи являются стороны треугольника a, b, c. Составьте блок-схему алгоритма самостоятельно.
Программа примера 4:
program primer_4
parameter (pi=3.14159) !оператор задания констант
print*, “ Vvedite a, b, c” ! вывод поясняющего текста на экран
read*, a,b,c ! ввод длин сторон треугольника
p=a+b+c ! вычисление периметра треугольника
r=sqrt((p – a)*(p – b)*(p – c))/p) ! вычисление радиуса, вписанной окружности
s=pi*r**2 ! определение площади окружности
print*,” s=”,s ! вывод результата
end
В указанном примере число π имеет имя pi, поскольку в Фортране можно использовать только латинские буквы.
Вопросы к Лекции 3:
-
Какова структура программы на Фортране?
-
Для чего используются подпрограммы?
-
Что содержит основная Фортран-программа (MAIN)?
-
Изобразите схематично общую структуру программы на Фортране.
-
Что такое подпрограмма?
-
Что хранится в библиотеках стандартных программ?
-
Дайте определение оператора.
-
Что называется исполняемыми операторами?
-
Какие операторы называют неисполняемыми?
-
Какие операторы относятся к операторам обработки информации?
-
Для чего нужны комментарии в программе?
-
Что называют алгоритмом линейной структуры?
-
Какая последовательность действий характерна для программы, реализующей линейный алгоритм?
-
Как записывается оператор начала программы? Обязателен ли он?
-
Запишите оператор конца программы в общем виде. Обязателен ли этот оператор при написании программы?
-
Для чего используется оператор ввода? Как правильно он записывается?
-
Как выглядит общий вид оператора вывода на экран?
-
Для чего в записи операторов ввода/вывода используется символ звездочка *?
-
Как можно разделять переменные при вводе их значений с клавиатуры?
-
Какой порядок ввода переменных должен соблюдаться?
-
Какие данные можно выводить с помощью оператора ввода?
-
Для каких целей предназначен оператор вывода?
-
Как можно вывести текст на экран компьютера?
-
Запишите оператор вывода двух переменных a=4.5, k=3.
-
Как оформить оператор вывода двух переменных a=4.5, k=3 с пояснительным текстом?
-
Какие правила рекомендованы для правильного оформления операторов ввода/вывода?
-
Что называется оператором присваивания?
-
Что представляет собой арифметический оператор присваивания?
-
Запишите общий вид оператора присваивания.
-
Какие действия должен выполнить компьютер в результате выполнения оператора присваивания?
-
К какому типу приводится результирующее значение переменной, полученное в результате вычисления арифметического выражения?
-
Почему в программе часто заменяют, где возможно, операцию возведения в степень операцией умножения?