Содержание
- 2. Назначение процедур Разбиение исходной задачи на подзадачи Устранение дублирования кода Повторное использование написанного кода Библиотеки готовых
- 3. Виды процедур program имя ... contains внутренние процедуры end Головная программа module имя ... contains модульные
- 4. Модульные процедуры Описываются в модулях после оператора contains. Обладают явным интерфейсом. Имеют доступ ко всем объектам
- 5. Внутренние процедуры Описываются в головной программе после оператора contains. Обладают явным интерфейсом. Имеют доступ ко всем
- 6. Внешние процедуры Описываются отдельно от головной программы или в других файлах. Обладают неявным интерфейсом. Обмен данными
- 7. Функции тип function имя_функции (формальные параметры) типы формальных параметров типы внутренних переменных исполняемые операторы имя_функции =
- 8. Функции Пример. Функция представлена тригонометрическим рядом Тип функции – вещественный; формальные параметры – x -вещественный, k
- 9. !************************************************** ! Функция f(x) !************************************************** real function f(x,N) !------------- формальные параметры --------------- real x integer N
- 10. Вызов функции Вызов созданной функции аналогичен вызову стандартной функции program FX real res res = f(0.5,
- 11. Вызов функции Вызов функции без параметров program func2 write(*,*) pi() end !************************************************** ! Функция возвращает число
- 12. Вызов функции При вызове должны соответствовать: 1) тип функции и тип переменной, которой присваивается результат функции
- 13. Подпрограммы subroutine имя_подпрограммы ( формальные параметры ) типы формальных параметров типы внутренних переменных операторы описания исполняемые
- 14. Подпрограммы Подпрограмма печати прямоугольной таблицы символов * * * * * * * * * *
- 15. Подпрограммы !************************************************** ! Подпрограмма печати таблицы символов !************************************************** subroutine table(M,N,CH) !------------- формальные параметры --------------- integer M,N
- 16. Вызов подпрограммы Оператор call вызывает подпрограмму program sub call table(4,7,'*') end !************************************************** ! Подпрограмма печати таблицы
- 17. Внутренние переменные Внутренние переменные доступны и используются внутри процедур. Внутренние переменные получившие инициализацию являются статическими, т.е.
- 18. program static_var call sub() ! M = 1 call sub() ! M = 2 call sub()
- 19. Передача параметров Формальные параметры 1) входные, intent(in) 2) выходные, intent(out) 3) входные/выходные, intent(inout) subroutine sub(a,b,c) integer,
- 20. Вид связи intent(in) Принимают значение от соответствующего фактического параметра и не могут изменяться при выполнении процедуры.
- 21. Вид связи intent(out) Параметры передают свое значение соответствующему фактическому параметру и предназначены для вывода данных из
- 22. Вид связи intent(inout) Параметры могут как принимать значения от фактического параметра, так и передавать данные в
- 23. Optional параметры Атрибут optional устанавливает формальные параметры необязательными. Функция present проверяет присутствие необязательного параметра при вызове
- 24. Optional параметры program param_in real res res = logarithm(144.0,base = 12.0) write(*,*) res CONTAINS real function
- 25. Область видимости *Объекты описанные в головной программе доступны во внутренних процедурах, недоступны во внешних. Объекты описанные
- 26. Область видимости program region integer a, b; integer c, d ... contains ! ------------------------- subroutine sub
- 27. Область видимости program array integer, parameter :: M = 10 integer :: A(M) = [2,4,6,8,9,1,1,1,1,1] call
- 28. Оператор interface Почему при компиляции выдаётся ошибка ? program question write(*,*) middle(3.0,2.0) END real function middle(a,b)
- 29. Оператор interface interface тип имя_функции(формальные параметры) тип формальных параметров конец описания функции end interface Определяет явно
- 30. Оператор interface program question interface real function middle(a,b) real a,b end function middle end interface write(*,*)
- 31. Оператор return program break_function write(*,*) div(3,0) contains integer function div(a,b) integer a,b if (b == 0)
- 32. Процедуры как параметры Универсализация процедур. основная функция функции подставляемые вместо функции fun
- 33. Процедуры как параметры program param_funct external p, q, s write(*,*) f(0.5, p) ! p(x) - фактический
- 34. Процедуры как параметры real function p(x) ! ---------- функция p(x) real x p = sin(x)+x end
- 35. Процедуры как параметры Оператор external объявляет, что перечисленные внешние процедуры передаются как параметры. Если хотим передавать
- 36. Процедуры как параметры Оператор intrinsic объявляет, что перечисленные стандартные процедуры передаются как параметры. program param_funct intrinsic
- 37. Процедуры как параметры program param_funct interface real function p(x) real x end function p end interface
- 38. Рекурсивные процедуры Процедура вызывающая сама себя. recursive – объявление рекурсивной процедуры. Прямая рекурсия proc ---> proc
- 39. Рекурсивный вывод последовательности чисел. program recurse call Number(10) ! contains recursive subroutine Number(N) integer N write(*,*)
- 40. Результирующая переменная, предложение result. program fact write(*,*) factorial(10) contains recursive function factorial(p) result(k) integer, intent(in) ::
- 41. Чистые процедуры Чистые процедуры – процедуры без побочных эффектов program side_effect real :: s = 10.0
- 42. Чистые процедуры Ключевое слово pure объявляет процедуру чистой. Для чистых процедур характерно ① все формальные параметры
- 43. Чистые процедуры В операторе forall используются только чистые процедуры. PROGRAM PURE_FORALL real :: A(10) = -1.0
- 44. Элементные процедуры Элементные процедуры могут иметь в качестве фактических параметров как скаляры так и массивы. Элементные
- 46. Скачать презентацию