- •«Информатика»
- •21. Оператор format
- •Спецификация X
- •Спецификация I
- •Правило:
- •Разделители
- •Спецификация f
- •Особенности набора числовых данных при вводе информации
- •Использование повторителей в операторе format
- •Примечание
- •Вывод по спецификации Fw.D
- •Ввод по спецификации Ew.D
- •Вывод информации по спецификации Еw.D
- •Примечание: При бесформатном выводе данные автоматически выводятся по спецификации е15.7. Ввод и вывод информации по спецификации Gw.D
- •22. Подпрограммы
- •23. Оператор-функция
- •24. Подпрограмма function
- •Правило:
- •Правило:
- •Мини задача 1:
- •If(y1(1).Gt.Y1(2)) write(*,*)'Максимум на левой границе
- •If(y1(100).Gt.Y1(99)) write(*,*)'Максимум на правой границе
- •25. Подпрограмма subroutine.
- •Примечания:
- •26. Способы передачи данных в подпрограмму.
- •If (логическое выражение 1) return 1
- •If (логическое выражение 2) return 2
- •Примечание:
- •27. Передача данных посредством оператора common
- •Правило:
- •28. Использование библиотек стандартных программ (бсп)
- •If(ier.Eq.1) write (6,*)’Нет решения. Проверьте исходные данные’
- •If(ier.Eq.2) write (6,*)’Неверное количество уравнений’
- •29. Графическое моделирование функции
Особенности набора числовых данных при вводе информации
При бесформатном вводе данных вещественного типа при наборе целой константы и нажатии клавиши "ввод" число воспринимается как вещественное. Например:
READ(5,*)A
При вводе числа 17 и нажатии клавиши "ввод" переменной А будет присвоено число 0.1700000Е+02, т.е. вещественное число 17.
При форматном вводе данных без десятичной точки преждевременное нажатие клавиши "ввод" до заполнения форматного поля данными может привести нас к нежелательным результатам. Предположим, по формату F4.1 будем набирать вводимые данные и сразу после набора нажимать клавишу "ввод".
READ(5,3)A
FORMAT(F4.1)
Набираем: 1"ввод". Число А воспримется как 0,1.
Набираем: 11"ввод". Число А воспримется как 1,1.
Набираем: 111"ввод". Число А воспримется как 11,1.
Набираем: 1111"ввод". Число А воспримется как 111,1.
Только последняя введенная информация заполнила поле ввода из 4 позиций и число воспринялось правильно.
Если в поле ввода набирать символ "пробел", то на персональных ЭВМ он не воспринимается. Будем вставлять символы "пробел" при вводе данных для вышеприведенного примера:
Набираем: 2---"ввод". Число А воспримется как 0,2.
Набираем: 2--2"ввод". Число А воспримется как 2,2.
Набираем: 2-22"ввод". Число А воспримется как 22,2.
Набираем: 2-2-"ввод". Число А воспримется как 2,2.
Использование повторителей в операторе format
Повторители рекомендуется использовать в тех случаях, когда форматно вводится или выводится несколько переменных. Используя повторители, строка оператора FORMATполучается короче и нагляднее. Работу с использованием повторителей рассмотрим на примере.
Пример:
READ(5,8) A,B,X,V
8 FORMAT(F4.2,3F5.3)
В этом примере переменная А будет читаться по формату F4.2, а переменныеB,X,Vбудут считываться по форматуF5.3, который из-за повторителя (цифра 3) сработает, как сработала бы следующая строка:
8 FORMAT(F4.2,F5.3, F5.3, F5.3)
В данном примере повторитель (цифра 3) заменил триF5.3.
Кроме того, повторители могут использоваться для группы форматов:
READ(5,9) X,B,C,K,D1,D2,M
9FORMAT(F6.2,2(2F4.2,I3))
повторитель, который обозначает,
что группа в скобках повторяется два раза
Порядок считывания по форматам: Х – по F6.2;B,C– поF4.2;K– поI3;D1,D2 – поF4.2;M– поI3.
Примечание
Если группа форматов заключена в скобки и число повторителей перед скобкой не указано, то группа форматов будет повторяться бесконечное число раз, до тех пор, пока не будет исчерпан список оператора ввода/вывода READ/WRITE.
Все данные должны быть расположены в одной строке. Для перехода на другую строку при вводе (выводе), информации в операторе FORMATв качестве разделителя используется символ “/” – слэш.
Рассмотрим, как можно считывать информацию из нескольких строк на дисплее. Для правильного ввода данных из нескольких строк необходимо:
1) правильно составить строку с оператором FORMAT(правильно расставить символы перехода на другую строку /, правильно выбрать спецификацию ввода/вывода данных –I,F,E,Gв зависимости от типа вводимых данных)
2) подготовить и правильно ввести необходимую информацию.
Примеры считывания из двух строк:
FORMAT(F6.2,2(2F4.2/I3))
В последнем примере необходимо вводить информацию следующим образом:
Если разделитель «/» поставить после I3, т.е.FORMAT(F6.2,2(2F4.2,I3/)), то информацию необходимо будет представить в виде:
При вводе информации суммарная длинна одной строки (одной записи) не может превышать 80 символов.
При выводе информации на печатьсуммарная длинна одной строки может быть 120, 132 или 254 символов, в зависимости от типа принтера.
При выводе информации на экран дисплеядлина одной строки 80 символов.
Если список спецификаций оператора FORMATпо своему количеству больше, чем количество переменных в списке ввода, то используются только первоначальные спецификации из оператораFORMAT, лишние спецификации не используются.
Если список ввода/вывода по своему количеству больше, чем количество спецификаций оператора FORMAT, то после использования всех спецификаций оператор FORMAT повторит свою работу, начиная с первой открывающейся скобки и с новой строки. Это будет повторяться до тех пор, пока не будет исчерпан список ввода/вывода.
Пример:
READ(5,9) X,B,C,K,D1,D2
9 FORMAT(F6.3,F3.1,F4.2,I3)
В данном примере в списке спецификаций оператора FORMATчетыре спецификации (F6.3,F3.1,F4.2,I3), а список ввода содержит 6 переменных (X,B,C,K,D1,D2). Как видно список ввода больше списка спецификаций, поэтому вводимую информацию необходимо подготовить следующим образом: