Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Программалау.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.05 Кб
Скачать

24.Fortran тіліндегі сыртқы және ішкі процедуралар.

Fortran тілінде процедураның екі түрі ажыратылады: сыртқы және ішкі процедуралар. Сыртқы процедура жеке программалық бірлікпен анықталады және жеке компляцияланады. Сыртқы және ішкі процедуралар топтық және арнайы бола алады. Топтық процедураның топтық атау бойынша сілтемеленетін спецификалық нұсқасы бар. Қолданылып отырған спецификалық нұсқа типі, әртүрлілігі және аргументтер рангісі бойынша анықталады. Процедура хост процедурасы маңайында сілтемеленуге болатын басқа да процедуралардан тұрады. Мұндай процедуралар ішкі процкдуралар деп аталады. Ішкі процедура хост процедурасында CONTAINS операторының соңынан анықталады. Оның формасы сыртқы процедураға ұқсас болып келеді. Мысалы:

subroutine external ()

call internal () ! ссылка на процедуру internal

contains

subroutine internal () ! вызываема только из external()

...

end subroutine internal

end subroutine external

25.Fortran тіліндегі модулдер және олардың қолданылуы

Фортран тіліне арнайы программалық бірлік модуль қолданылады. Модульдерде айнымалылар, тұрақтылар, қолданушылық деректер типі және модульдік процедуралар бар, олар осы модульдердің қодану аймағында қолжетімді болады. Модульде аттар PUBLIC немесе PRIVATE операторымен айрықшаландырылады. Модульдердің қолданылуы

  • Common блогының қолданылуысыз бірден көп программада қолданылатын деректерді хабарлау және инициализациялау;

  • Процедуралардың айқын интерфейсін спецификациялау;

  • Туындылы типті деректі анықтау және қайта қолданымды абстрактты деректер типін жасау.

Модульдің формасы:

module-stmt

[use-stmts]

[specification-part]

[module-subprogram-part]

end-stmt

мұндағы

module-stmt MODULE операторы.

use-stmts бір немесе бірнеше USE операторы.

specification-part OPTIONAL немесе INTENT-тен бөлек интерфейстің бәр немесе бірнеше блогы.

module-subprogram part модульдің бір немесе бірнеше процедурасы жүреін CONTAINS.

end-stmt END операторы.

Мысал:

module example

implicit none

integer, dimension(2,2) :: bar1=1, bar2=2

type phone_number !

integer :: area_code,number

end type phone_number

interface !айқын интерфейстер

function test(sample,result)

implicit none

real :: test

integer, intent(in) :: sample,result

end function test

function count(total)

implicit none

integer :: count

real,intent(in) :: total

end function count

end interface

interface swap !топтық интерфейс

module procedure swap_reals,swap_integers

end interface

contains

function swap_reals !процедура-модуль

...

end function swap_reals

function swap_integers !процедура-модуль

...

end function swap_integers

end module example

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]