Главная страница
Навигация по странице:

  • П.-3.3. Работа с системой, дисками и директориями

  • П.-3.4. Управление файлами

  • П.-3.5. Генерация случайных чисел

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

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

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

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

  • 435 Предметный указатель А

  • современный фортран , Бортеньев. О. В. Бартеньев Современный Фортран


    Скачать 2.24 Mb.
    НазваниеО. В. Бартеньев Современный Фортран
    Анкорсовременный фортран , Бортеньев.pdf
    Дата28.05.2018
    Размер2.24 Mb.
    Формат файлаpdf
    Имя файласовременный фортран , Бортеньев.pdf
    ТипДокументы
    #19729
    страница47 из 49
    1   ...   41   42   43   44   45   46   47   48   49
    П.-3.1. Запуск программ
    Выполняет функция RUNQQ; вызывает другую программу и ожидает ее завершения.
    427

    О. В. Бартеньев. Современный ФОРТРАН
    П.-3.2. Управление программой
    Функции RAISEQQ и SIGNALQQ используются для обработки прерываний операционной системы с целью управления исполнением пользовательской программы. Процедура SLEEPQQ - подпрограмма, остальные - функции.
    Процедура
    Назначение
    RAISEQQ
    Передает сигнал прерывания выполняемой программе, моделирующий прерывание операционной системы
    SIGNALQQ
    Управляет обработкой сигналов
    CALL SLEEPQQ
    Задерживает исполнение программы на указанный в миллисекундах промежуток времени
    Пример: program sleep use dflib
    ! Обязательная ссылка на модуль DFLIB print *, 'Before sleep' call sleepqq(500)
    ! Задержка на 500 миллисекунд print *, 'After sleep' end program sleep
    П.-3.3. Работа с системой, дисками и директориями
    Процедуры используются для работы с физическими устройствами, директориями и для идентификации полных имен путей. Процедура
    SETENVQQ - подпрограмма, остальные - функции.
    Процедура
    Назначение
    CHANGEDIRQQ
    Делает указанную директорию текущей или установленной по умолчанию
    CHANGEDRIVEQQ
    Делает указанный диск текущим
    DELDIRQQ
    Удаляет указанную директорию
    GETDRIVESIZEQQ
    Возвращает размер указанного диска
    GETDRIVESQQ
    Возвращает имена имеющихся в системе дисков
    MAKEDIRQQ
    Создает новую директорию с указанным именем
    GETENVQQ
    Получает значение из текущего окружения
    CALL SETENVQQ
    Добавляет новую переменную окружения или устанавливает значение существующей переменной
    SYSTEMQQ
    Выполняет команду путем передачи командной строки интерпретатору команд операционной системы
    Пример:
    428

    Приложение 3. Дополнительные процедуры
    program drive_dir use dflib character(40) :: temp integer(4) :: fres, total, available logical(4) :: sres temp = getdrivesqq( ) print *, trim(temp)
    ! A CDE
    ! Функция GETDRIVESIZEQQ в случае успеха вернет .TRUE. sres = getdrivesizeqq(temp(3:3), total, available)
    ! Общее и свободное число байт на диске C: print '(2i15)', total, available
    ! 1099956224 256737280
    ! Создаем переменную окружения path2 sres = setenvqq('path2=c:\')
    ! строку 'path2=c:\' записываем без пробелов fres = getenvqq('path2', temp) print *, temp
    ! c:\mine temp = 'c:\'
    ! Будем искать рабочую директорию на диске c:\ fres = getdrivedirqq(temp)
    ! Поиск рабочей директории print *, temp
    ! C:\Program Files\ArrayVisualizer\SAMPLES sres = makedirqq('c:\temp2')
    ! Создаем директорию c:\temp2 sres = changedirqq('c:\temp2') ! Делаем директорию c:\temp2 рабочей temp = 'c:\'
    ! Ищем рабочую директорию на диске c:\ fres = getdrivedirqq(temp) print *, temp
    ! c:\temp2 sres = deldirqq('c:\temp2')
    ! Удаляем директорию c:\temp2 end program drive_dir
    П.-3.4. Управление файлами
    Процедуры используются для управления файлами и получения информации, хранящейся о файлах в операционной системе. Процедуры
    PACKTIMEQQ и UNPACKTIMEQQ - подпрограммы, остальные - функции.
    Процедура
    Назначение
    DELFILESQQ
    Удаляет указанные файлы в указанной директории
    FINDFILEQQ
    Ищет указанный файл в директориях, содержащихся в переменной окружения
    FULLPATHQQ
    Возвращает полное имя для указанного файла или директории
    GETDRIVEDIRQQ
    Возвращает текущий диск и путь к текущей директории
    GETFILEINFOQQ
    Возвращает информацию о файлах, имена которых содержат заданную строку
    CALL
    PACKTIMEQQ
    Упаковывает время для использования функцией
    SETFILETIMEQQ
    RENAMEFILEQQ
    Изменяет старое имя файла на новое
    429

    О. В. Бартеньев. Современный ФОРТРАН
    SETFILEACCESSQQ Устанавливает способ доступа к заданному файлу
    SETFILETIMEQQ
    Устанавливает дату изменения для указанного файла
    SPLITPATHQQ
    Выделяет в полном имени файла его 4 компонента
    CALL
    UNPACKTIMEQQ
    Распаковывает упакованное время и дату в отдельные компоненты
    Пример. Открываем файл c:\test.txt как новый, но прежде выполняется попытка его удаления функцией DELFILESQQ. program files use dflib character(40) :: fn = 'c:\test.txt', pathname character(40) :: directory, file character(4) :: drive, extension integer(4) :: ios, fres logical(4) :: sres fres = delfilesqq(fn)
    ! Удаляем файл fn, если он существует sres = setenvqq('path=c:\')
    ! Устанавливаем переменную окружения path
    ! Функция FINDFILEQQ вернет нуль, если файл не найден fres = findfileqq('test.txt', 'path', pathname)
    ! Подсоединяем файл fn к устройству 10 open(10, file = fn, status = 'new', iostat = ios) if(ios == 0) then
    ! ios равен нулю, если файл удалось открыть
    ! Функция FINDFILEQQ возвращает длину полного пути к файлу fres = findfileqq('test.txt', 'path', pathname) print *, 'Full path to file test.txt: ', pathname! C:\test.txt else stop 'Cannot open file c:\test.txt' end if sres = renamefileqq('c:\test.txt', 'c:\test2.txt') ! Изменяем имя файла sres = splitpathqq(pathname, drive, directory, file, extension) print *, 'path = ', trim(pathname), '; drive = ', trim(drive)! path = c:\test.txt; drive = c: print *, 'directory = ', trim(directory), '; file = ', trim(file)! directoty = \; file = test2 print *, 'extension = ', trim(extension)
    ! extension = .txt fres = delfilesqq('c:\test2.txt')
    ! Удаляем файл 'c:\test2.txt' end program files
    П.-3.5. Генерация случайных чисел
    Помимо предусмотренных стандартом подпрограмм (разд. 6.19)
    CALL RANDOM_NUMBER и CALL RANDOM_SEED для получения случайных чисел можно использовать следующие подпрограммы:
    Подпрограмма
    Назначение
    430

    Приложение 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 ' length = getstrqq(string)
    ! Возвращает длину строки 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

    Литература
    1.
    Бартеньев О. В. Visual Fortran: Новые возможности. - М.: Диалог-
    МИФИ, 1999. - 288 с.
    2.
    Он же. Графика OpenGL: программирование на Фортране. - М.: Диалог-
    МИФИ, 2000. - 368 с.
    3.
    Он же. Фортран для профессионалов. Математическая библиотека
    IMSL: Ч.1. - М.: Диалог-МИФИ, 2000. - 448 с.
    4.
    Он же. Фортран для студентов. - М.: Диалог-МИФИ, 1999. - 400 с.
    5.
    Бродин В. Б., Шагурин И. И. Микропроцессор i 486. Архитектура, программирование, интерфейс. - М.: Диалог-МИФИ, 1993. - 240 с.
    6.
    Вельбицкий И. В. Технология программирования. - Киев: Техника,
    1984. - 279 с.
    7.
    Демидович Б. П., Марон И. А. Основы вычислительной математики. -
    М.: Наука, 1966. - 664 с.
    8.
    Лингер Р., Миллс Х., Уитт Б. Теория и практика структурного программирования. - М.: Мир, 1982. - 408 с.
    9.
    Любимский Э. З., Мартынюк В. В., Трифонов Н. П. Программирова- ние. - М.: Наука, 1980. - 608 с.
    10.
    Майерс Г. Искусство тестирования программ. - М.: Финансы и статистика, 1982. - 176 с.
    11.
    Меткалф М., Рид Дж. Описание языка программирования Фортран 90. -
    М.: Мир, 1995. - 302 с.
    12.
    Першиков В. И., Савинков В. М. Толковый словарь по информатике. -
    М.: Финансы и статистика, 1991. - 543 с.
    13.
    Скляров
    В. А.
    Язык
    С++ и объектно-ориентированное программирование. - Минск.: Высш. шк., 1997. - 478 с.
    14.
    Справочник по Автоматизации. - М.: Изд. отд. "Русская Редакция" ТОО
    Channel Trading Ltd., 1998. - 440 с.
    15.
    Фортран 90. Международный стандарт. - М.: Финансы и статистика,
    1998. - 416 с.
    16.
    Холстед М. Начала науки о программах. - М.: Финансы и статистика,
    1981. - 128 с.
    17.
    Шикин Е. В., Боресков А. В. Компьютерная графика. Полигональные модели. - М.: Диалог-МИФИ, 2000. - 464 с.
    435

    Предметный указатель
    А
    Автоматизация · 374
    BSTR-строка · 381
    OLE-массив · 378 варианты · 383 клиент ActiveX · 374 компонент ActiveX · 374 конструктор модулей · 375 объект ActiveX · 374 объекты-наборы · 374
    Алгоритм базовые структуры · 29 блок-схема · 29 интерфейс · 38 линейная схема · 29 метод флажка · 37 объединение условий · 36
    Ассоциирование
    use · 225, 254 памяти · 258 параметров · 226 через носитель · 225, 254
    Б
    Базовые структуры алгоритма блок операторов и конструкций ·
    30 ветвление · 30 цикл · 32
    В
    Ввод/вывод без продвижения · 335 непродвигающийся · См.
    Ввод/вывод без продвижения под управлением именованного списка · 317 под управлением неименованного списка · 16, 321 продвигающийся · См.
    Ввод/вывод с продвижением с продвижением · 335 форматный · 289
    Венгерская нотация · 12
    Внешнее произведение · 147
    Встроенная процедура неэлементная подпрограмма · 172 преобразовывающая функция · 172 справочная функция · 172 элементная · 172
    Выражение · 13 арифметическое · 13, 158 инициализирующее · 167 константное · 15, 167 логическое · 13, 30, 163 операнд · 13 описательное · 168 отношения · 162 производного типа · 13 символьное · 13
    Г
    Глобальные объекты модуля · 224
    Д
    Двоичный порядок · 186
    Дескриптор данных
    B, O, Z · 303
    D · 308
    E · 306
    EN · 308
    ES · 308
    F · 305
    G · 310
    I · 303
    Дескриптор управления
    : · 316
    436

    Предметный указатель
    BN, BZ · 316
    H · 313
    P · 306, 307, 316
    Q · 313
    SP, SS, S · 314
    T, TL, TR · 314
    X · 314
    обратный слеш (\) · 315 слеш (/) · 315 строка · 312
    Дескрипторы преобразований дескрипторы данных · 299, 301 дескрипторы управления · 311
    Е
    Единица памяти · 259 неспецифицированная · 260 текстовая · 259 числовая · 259
    З
    Запись
    CR-поток · 333
    LF-поток · 334 переменной длины · 331 поле записи · 18 поток · 333 сегментированная · 332 текстового последовательного файла · 18 фиксированной длины · 331
    И
    Имя входа · 276 глобальное · 12, 256 конструкции · 204 локальное · 12, 256 модуля · 223 операторное · 257 программы · 221 процедуры · 232 родовое · 173, 246 специфическое · 173, 246 спискаВ/В · 317
    Интерфейс неявный · 239 родовой · 246 явный · 240
    Интерфейс Автоматизации метод · 374 свойство · 374 событие · 374
    К
    Ключевое слово · 172, 243
    Компилятор · 24
    Компоновщик · 24
    Консоль-проект · 6
    Константа буквальная · 10, 56 вещественная · 57 именованная · 10, 61 истина · 59 комплексная · 58 логическая · 59 ложь · 59 повторяющаяся · 63, 323
    СИ · 67 символьная · 59 холлеритовская · 59 целая · 56
    Конструкция · 30
    Коэффициент повторения · 299
    М
    Мантисса · 57, 186
    Массив · 108 автоматический · 131 атрибут и оператор
    ALLOCATABLE · 109, 126 атрибут и оператор
    POINTER · 109 атрибут и оператор
    POINTER · 126 динамический · 108
    437

    О. В. Бартеньев. Современный ФОРТРАН
    заданной формы · 133 инициализация · 109 конструктор · 11 конструктор массива · 119 оператор ALLOCATE · 127 оператор DEALLOCATE · 130 оператор и конструкция
    FORALL · 123 оператор и конструкция
    WHERE · 121 перенимающий размер · 135 перенимающий форму · 134 протяженность · 108 размер · 108 ранг · 11, 108 сечение · 12, 114 согласованные · 108 статический · 108 форма · 108 функция ALL · 140 функция ALLOCATED · 147 функция ANY · 140 функция COUNT · 140 функция CSHIFT · 151 функция DOT_PRODUCT · 144 функция EOSHIFT · 152 функция LBOUND · 147 функция MATMUL · 145 функция MAXLOC · 141 функция MAXVAL · 143 функция MERGE · 148 функция MINLOC · 141 функция MINVAL · 143 функция PACK · 149 функция PRODUCT · 144 функция RESHAPE · 150 функция SHAPE · 148 функция SIZE · 148 функция SPREAD · 151 функция SUM · 144 функция TRANSPOSE · 153 функция UBOUND · 147 функция UNPACK · 150 экстент · См. Массив, протяженность элемент · 113
    Массивоподобная функция · 139
    Машинная бесконечность · 186
    Машинная точность · 188
    Модуль атрибут и оператор
    PRIVATE · 230 атрибут и оператор
    PUBLIC · 230
    Модуль TextTransfer · 17, 413
    Н
    Неявный цикл конструктора массива · 119 оператора DATA · 110 оператора В/В · 297
    О
    Объект данных
    D-форма · 57
    F-форма · 57 автоматический · 69
    Е-форма · 57 константа · 10, 47 массив · 11 переменная · 10, 47 подобъект · 12 скаляр · 11 функция · 47
    Объект модуля · 230
    Оператор выполняемый · 9 невыполняемый · 9 присваивания · 9
    Операция арифметическая · 158 встроенная · 13, 158 двуместная · 13 задаваемая · 166 конкатенации · 70 одноместная · 13
    1   ...   41   42   43   44   45   46   47   48   49


    написать администратору сайта