4.4. Бағдарлама модульдері және шақырулар.
Бағдарламалық модульдер идентификаторға байланыстырылған мәлімдемелер мен командалар тобы болып табылады және модуль байланыстырылған бағдарламадағы идентификаторды пайдаланып басқа бағдарламамен жұмыс уақытында шақырылуы мүмкін. Бұл бағдарламалық құралды блоктардан ажырататын екі қасиет.
Көптеген бағдарламалау тілдері, мысалы Modula тілдер тобы, бағдарлама модульдерінің кірістірілген декларацияларын қамтамасыз етеді. Кірістірілген ортаны ортақ пайдалану сипаты блоктарға ұқсас: кірістірілген POU-лар өздерінің ата-бабаларының жергілікті және мұраланған орталарын иеленеді, ал бауырлас блоктар өздерінің жергілікті орталарын ортақ пайдаланбайды. Төменде дерексіз синтаксис ережелерінің шектеулі нұсқасы көрсетілген.
<бағдарлама-бірлік> ::= (бағдарлама | функция | процедура)
<идентификатор>
<блок>
::= ‘{‘ [{<декларация>}*] [{<команда>}*] ‘}’
<декларация> ::= <декларация-секвенсер>| <тип-декларация> |
<айнымалы-декларация>
<команда> ::= null | <тапсырма>| <шартты> |
<анықталған-итерация> | <шексіз
итерация> |
<итератор> |
<ішкі бағдарлама-қоңырау>|
‘{‘<блок>’}’ |
<секвенсерлер>
Жоғарыда келтірілген дерексіз синтаксис бағдарлама бірлігі негізгі бағдарлама, функция немесе идентификатормен байланысты процедура болуы мүмкін екенін көрсетеді. Бағдарламаның денесі құрылымдық блок болып табылады. Әртүрлі тілдер әртүрлі резервтелген сөздерді пайдаланады. Мысалы, Lisp функцияны анықтау үшін сақталған «defun» сөзін пайдаланады, ал Scala және Ruby функцияны анықтау үшін сақталған «def» сөзін пайдаланады.
Күрделі есепті шешу үшін бір бағдарлама модулі басқа бағдарлама модулін шақыруы мүмкін. Итеративті құрылым немесе рекурсивті шақыру ішіндегі бағдарлама модуліне сілтеме жасау арқылы бағдарлама модулін бірнеше рет шақыруға болады, бағдарламаның өзіне сілтеме жасау команданың абстракциясы және программалық модуль ішіндегі командалар тізбегінің бөлігі болып табылады. Бағдарлама бірлігін құрастыру әдебиеттер санына байланысты емес; әрбір бағдарлама бірлігі компиляцияға немесе JIT компиляциясына бір рет қана орындалады. JIT компиляциясында бағдарлама модулі кейінірек іздеу үшін бірінші орындалудан кейін кэштеледі.
Бағдарлама арқылы жасалған әрбір қоңыраудың бір бағдарлама блогына бұрынғы шақырулардан өзгеше жеке ортасы бар және жаңа қоңырау өз ортасында жұмыс істейді. Қоршаған орта – жаһандық айнымалылар декларацияларының, жергілікті емес айнымалылардың – егер ағымдағы бағдарлама модулі кірістірілген болса, негізгі бағдарлама модульдерінде жарияланған айнымалылар, жергілікті мәлімдемелер және сілтеме параметрлері.
Достарыңызбен бөлісу: |