Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt-T2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
433 Кб
Скачать
☆

20.8 Ввод и вывод информации по спецификации Gw.D

Спецификация G является универсальной для ввода и вывода переменных:

    1. целого типа

    2. вещественного типа.

Для переменных целого типа формат Gw.d соответствует и работает как формат Iw.

Для переменных вещественного типа при вводе информации, она может быть представлена, как по формату Fw.d, так и по формату Еw.d. То есть, если информацию вводить без десятичной или с десятичной точкой, то спецификация G будет полностью работать как формат F. Если информацию вводить с плавающей запятой, то спецификация G будет работать, как формат Е. Если вводить информацию для переменной целого типа (I, J, K, L, M, N), то спецификация G будет работать как формат I.

Вывод переменных целого типа осуществляется как и по спецификации Iw.

Пример:

WRITE (5,10) M

10 FORMAT ( 1X, G8.2 )

Е сли М=1235, то выведет: 1235, то есть сработает по формату I8.

При выводе данных вещественного типа по спецификации Gw.d если число может быть выведено по такому - же формату Fw.d то происходит вывод данных как по формату Fw.d, но если число не может быть выведено по этому формату, то оно будет сделана попытка вывести его как по формату Ew.d. Но при этом действует правило, как и при выводе по спецификации Е, w-d 7.

Пример:

WRITE(6,10) A

10 FORMAT(1X,G8.2)

Ч исло 16.879 по этому формату выведет: 16.88

ч исло –389.456 выведет: – 3 8 9.46

число –33924.1621 нельзя вывести по формату F8.2, поэтому будет сделана попытка вывести число по формату Е8.2. Но это число нельзя вывести и по формату E8.2, так как w-d=6 и на экран выведутся символы “ ”. Однако на некоторых ЭВМ стоит гашение незначащего нуля и на этих ЭВМ число –33924.1621 по формату G8.2 всё-таки выведется -.34Е+05.

При вводе – выводе информация форматная строка может присутствовать в операторах READ и WRITE вместо метки оператора FORMAT. Она записывается в виде текстовой констант.

Предыдущий пример может быть переписан проще и короче без оператора FORMAT :

WRITE (6,’(1X,G8.2)’)A

Запись операторов ввода – вывода с оператором FORMAT длиннее, но позволяет несколько раз использовать один и тот же оператор FORMAT, обращаясь к нему из разных мест программы.

Задача. Распечатать в таблицу значения массивов А и В, размерностью 10, и массив С, каждый элемент которого является результатом сложения элементов массивов А и В.

======================================

| N | Массив А | Массив В | Массив С |

DIMENSION A(10),B(10),C(10)

READ(5,*) A

DO 1 I=1,10

WRITE (6,2) I

2 FORMAT ( 1X , ' Введите элемент по формату F5.3 B( ' , I2 , ' )= ' \ )

Символ \ (обратный слэш) отменяет переход на новую строку по окончании работы оператора FORMAT

1 READ(5,3) B(I)

3 FORMAT(F5.3)

DO 4 I=1,10

4 C(I)=A(I)+B(I)

C Вывод шапки таблицы

WRITE(6,7)

7 FORMAT(1X,34('=')/1X,'| N | МАССИВ А | МАССИВ В | МАССИВ С |')

DO 8 I=1,10

8 WRITE(6,10) I,A(I),B(I),C(I)

10 FORMAT (1X, 38 ('-') / 1X , ' | ', I2 ,' | ', 3 ( F9.3 ,' | ') )

Выводится линия из символов -, затем осуществляется переход на другую строку, печатается номер цикла и по одному значению элементов трех массивов А,В,С.

WRITE (6,11)

11 FORMAT (1X , 34 (' = ') )

Конец таблицы подчеркнули двойной чертой

END