Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
современный фортран , Бортеньев.pdf
Скачиваний:
272
Добавлен:
26.03.2015
Размер:
2.34 Mб
Скачать

Приложение 3. Дополнительные процедуры

CALL RANDOM Возвращает псевдослучайное вещественное число, большее или равное нулю и меньшее единицы

CALL SEED Изменяет начальную точку генератора псевдослучайных чисел

Пример:

program rnd_seed

 

 

use dflib

 

 

real(4) :: rnd

 

 

integer(4) :: seedvalue = 1025

 

 

call seed(seedvalue)

! Затравка датчика случайных чисел

call random(rnd)

! Первое случайное число

print *, rnd

!

2.303988E-02

call seed(2*seedvalue)

! Новая затравка датчика случайных чисел

call random(rnd)

! Первое случайное число

print *, rnd

!

4.607977E-02

end program rnd_seed

 

 

П.-3.6. Управление датой и временем

Процедуры используются для управления системными датой ивременем.

Процедура

Тип

 

Назначение

CALL GETDAT

Подпрограмма

Возвращает системную дату

 

 

 

 

CALL GETTIM

"

"

системное время

 

 

 

SETDAT

Функция

Установка даты

SETTIM

"

"

времени

 

 

 

 

Пример:

program date_time use dflib

!Год, месяц, число integer(2) :: year, month, date

!Час, минуты, секунды, сотые доли секунд integer(2) :: hours, minutes, seconds, seconds100 logical(4) :: sres

call getdat(year, month, date)

call gettim(hours, minutes, seconds, seconds100)

print *, year, month, date

! 2000

12

15

print *, hours, minutes, seconds, seconds100!

21 12 59 28

sres = setdat(year, month, date + 4_2)

! Изменяем число

sres = settim(hours - 1_2, minutes, seconds, seconds100)! Изменяем час end program date_time

431

О. В. Бартеньев. Современный ФОРТРАН

П.-3.7. Ввод с клавиатуры и генерация звука

Процедуры используются для непосредственного чтения с клавиатуры, минуя систему ввода/вывода Фортрана, и воспроизведения звуковых сигналов. Процедура BEEPQQ - подпрограмма, остальные - функции.

Процедура

Назначение

 

 

CALL BEEPQQ

Воспроизводит сигнал с заданными в миллисекундах

 

продолжительностью и частотой

GETCHARQQ

Возвращает введенный символ

 

 

GETSTRQQ

Читает символьную строку с клавиатуры, используя буфер

 

 

PEEKCHARQQ

Проверяет, была ли нажата какая-либо клавиша консоли

Пример:

program beep_char use dflib

! Частота (в Гц) и продолжительность в миллисекундах сигнала integer(4) :: frequency = 500, duration = 1000

character(1) :: char

character(120) :: string

 

integer(4) :: length

 

logical(4) :: pressed

 

call beepqq(frequency, duration)

! Звуковой сигнал с частотой 500 Гц

print *, 'Shall I stop a program (press Y or N)? '

char = getcharqq( )

 

read *

 

if(char == 'Y' .or. char == 'y') stop 'Program is terminated by a user'

print *, 'Enter a test string '

! Возвращает длину строки string

length = getstrqq(string)

if(length > 0) then

 

print *, trim(string)

 

else

 

print *, 'Missing value'

 

end if

 

pressed = .false.

! Демонстрация функции PEEKCHARQQ

do

! Вывод сообщения продолжается до тех пор,

print *, 'Press any key to EXIT DO-loop' ! пока не нажата какая-либо клавиша

pressed = peekcharqq( )

! Функция вернет .TRUE., если нажата клавиша

if(pressed) exit

! Клавиша нажата - выход из цикла

end do

 

print *, 'Key is pressed'

 

read *

 

end program beep_char

 

432

Приложение 3. Дополнительные процедуры

П.-3.8. Обработка ошибок

Процедуры управляют обработкой критических, приводящих к завершению программы ошибок, и позволяют получить дополнительную информацию о причинах иных ошибок. Процедура GETLASTERRORQQ - функция, остальные - подпрограммы.

Процедура

Назначение

 

 

GETLASTERRORQQ

Возвращает последнюю обнаруженную дополнительной

 

процедурой ошибку

CALL MATHERRQQ

Заменяет обработку ошибок по умолчанию на обработку

 

встроенными функциями

CALL

Устанавливает способ обработки критических ошибок

SETERRORMODEQQ

 

П.-3.9. Аргументы в командной строке

Процедуры используются для работы с параметрами, передаваемыми программе из командной строки.

Процедура

Тип

Назначение

CALL GETARG

Подпрограмма

Возвращает n-й аргумент командной строки

 

 

(команда является аргументом с номером 0)

NARGS

Функция

Возвращает общее число аргументов командной

 

 

строки, включая команду

П.-3.10. Сортировка и поиск в массиве

Процедуры используются для управления хранящимися в массивах данными. Подробно рассмотрены в разд. 6.9.

Процедура

Тип

Назначение

 

 

 

BSEARCHQQ

Функция

Выполняет двоичный поиск заданного элемента

 

 

в отсортированном одномерном массиве,

 

 

содержащем элементы неструктурного типа

CALL SORTQQ

Подпрограмма

Сортирует одномерный массив неструктурного

 

 

типа

П.-3.11. Управление операциями с плавающей точкой

Процедуры используются для контроля выполнения операций с плавающей точкой и управления реакцией системы на ошибки выполнения.

433

О. В. Бартеньев. Современный ФОРТРАН

Процедура

Тип

Назначение

 

 

 

GETCONTROLFPQQ

Функция

Возвращает значение контрольного слова

 

 

процессора операций с плавающей точкой

GETSTATUSFPQQ

"

Возвращает значение статусного слова

 

 

процессора операций с плавающей точкой

CALL LCWRQQ

Подпрограмма

Выполняет то же, что

 

 

и SETCONTROLFPQQ

SCWRQQ

Функция

Выполняет то же, что

 

 

и GETCONTROLFPQQ

CALL

Подпрограмма

Устанавливает значение контрольного

SETCONTROLFPQQ

 

слова процессора операций с плавающей

 

 

точкой

SSWRQQ

Функция

Выполняет то же, что и GETSTATUSFPQQ

434