- •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
Работа с массивами
14. Ввод массивов
Предположим, что в программе описаны массивы:
DIMENSION A(10),B(10),C(20),D(4,3)
Существуют 3 способа ввода массивов:
Первый способ ввода массивов:
READ (5,*) A
Означает ввести все числовые значения массива А в том количестве, сколько их описано в операторе DIMENSION.
Недостатки такого ввода:
необходимо вводить числа до тех пор, пока массив не заполнится ;
если вводятся несколько массивов, то сначала полностью заполнится первый массив, затем без предупреждения будут заполняться остальные массивы:
программа не начнёт выполняться, пока не будут введены все элементы массивов.
Достоинство: Самый простой способ записи ввода массивов.
Числа с клавиатуры можно вводить:
в строчку – через пробел или запятую;
нажимая «Enter» после каждого введённого числа.
Если имеется массив из 10 элементов, а при вводе в строке будет введено больше 10 элементов, то ЭВМ проигнорирует все лишние числа. Если же, наоборот, будет введено меньше 10 элементов, то ЭВМ будет ожидать ввода остальных чисел.
Второй способ ввода массивов:
READ (5,*) ( A(I) , I = 1, 10 )
Здесь ввод массива осуществляется при помощи неявного цикла DO, где I изменяется от 1 до 10 с шагом 1
Достоинство: таким способом можно ввести весь массив целиком или часть этого массива, что весьма удобно использовать в программе, когда необходимо массив заполнить не полностью, а частично.
Недостаток: нет возможности задавать количество вводимых элементов (т.к. это количество указывается в программе как постоянная величина) и для того, чтобы можно было ввести любое количество необходимо делать изменения в программе.
Третий способ ввода массивов:
READ (5,*) N
READ (5,*) ( A(I) , I = 1, N )
или аналогичное: READ (5,*) N , ( A(I) , I = 1, N )
Сначала вводится число N, обозначающее количество вводимых элементов массива, а затем вводится N–ное количество элементов массива.
Достоинства:
используя такой ввод массивов, можно создать программы не для конкретных случаев, а для разных, когда количество данных и сами данные задаёт пользователь;
данный способ позволяет ввести только необходимое количество элементов при любых размерах массивов.
Ограничение: значение N не должно превышать размерность массива.
15. Вывод массивов
При выводе массивов используются 4 способа:
Первый способ вывода массива:
WRITE(6,*) A
При бесформатном (упрощенном) выводе массива А на экран дисплея выведутся значения всех элементов массива, количество которых было описано в операторе DIMENSION. В каждой строке печатается по 5 чисел в виде:
-0.1234567Е-01
т.е. с точностью до 7 знаков после запятой.
Недостатки:
выводятся все элементы массива и при большой размерности массива первые элементы выведутся на экран, но будут недоступными для просмотра, т.к. сдвинутся при выводе остальных элементов;
при выводе массива не выводятся никакие пояснения (ни имени массива, ни порядкового номера элемента массива);
при выводе нескольких массивов будет непонятно, где закончился первый и начался второй массив.
Достоинство: простота использования.
Второй способ вывода массива:
WRITE(6,*) (A(I),I=1,N) , где N – заданно ;
Достоинства:
позволяет вывести только часть массива;
количество выводимых элементов задаётся пользователем;
Недостатки:
нет никаких пояснений к выводимым числам (имя массива и порядковый номер);
элементы выводятся на экран по 5 чисел в каждую строку..
Третий способ вывода массива:
WRITE(6,*) (‘A(’,I,’)=’,A(I),I=1,N)
Здесь используется неявный цикл типа DO, по которому происходит вывод имени массива с помощью текстовой константы, а за ним в скобках указывается номер выведенного элемента и через знак ‘=’ само численное значение элемента массива:
А(…1)=число А(…2)=число и т.д.
Недостаток: весь массив будет разбросан по экрану дисплея.
Достоинство: имеется возможность каких либо пояснений.
Четвёртый способ вывода массива:
В этом способе используется внешний цикл DO.
DO 18 I=1,N
18 WRITE(6,*) ’A(‘,I,’)=’,A(I)
Этот способ отличается от предыдущих трёх способов тем, что вместо неявного используется внешний цикл DO. В этом цикле оператор WRITE срабатывает N-ное количество раз и соответственно печатает N-ное количество строк. В каждой строке печатается текстовая константа с именем массива и символом ”(”, номер цикла, затем печатается текстовая константа “)=” и потом числовое значение элемента массива.
Способ вывода массива в два столбца:
DO 28 I=1,N,2
28 WRITE (5,*) ’A(‘,I,’)=’,A(I),’ A(‘,I+1,’)=’,A(I+1)
Примечание: если N нечетное количество элементов массива, то последнее выведенное число не будет относиться к массиву А и может оказаться совершенно случайным числом, извлеченным из памяти ЭВМ.
Задача. Найти сумму элементов одномерного массива.
Основной блок программы запишется в виде:
S=0.
DO 30 I=1,N
30 S=S+A(I)
Вначале обнуляется ячейка S памяти ЭВМ, в которой будет содержаться значение суммы. Затем по циклу суммируется первое значение S (это 0) с первым элементом массива А и записывается в ячейку S. На втором цикле к ячейке S, в которой содержится 0+А(1) добавляется А(2) и записывается в S, и так до N-ного элемента массива.
