Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Осалқы программаның сипаттамасы
Процедуралар мен функциялар салыстырмалы тү рде берілген атауы бойынша шақ ырылып орындалатын программаның бө лігі болып табылады. Программа мә тіндегі процедура (функция) атауының кездесуі оның шақ ырылуы деп аталады. Функцияның процедурадан айырмашылығ ы функция денесін қ ұ райтын операторлардың орындау нә тижесінен алынғ ан мә н біреу ғ ана болады жә не ол функция атауына меншіктеледі. Бұ дан кейін функция мен процедураны жалпы атауымен «қ осалқ ы программа» деп атайық. Қ осалқ ы программа орындалмас бұ рын негізгі программаның бө лімінде сипатталуы тиіс. Қ осалқ ы программаны сипаттау дегеніміз оның тақ ырыбы мен денесін кө рсету. Тақ ырыбында программаның аты мен формальды параметрлер тізімі хабарланады. Ал, функция ү шін, мұ нымен қ атар, оның атауына меншіктелген мә ннің типі кө рсетіледі. Қ осалқ ы программаның тақ ырыбынан кейін оның бейнелеу бө лімі мен орындалатын операторлар бө лімі жазылады. Қ осалқ ы программаның бейнелеу бө лімінде тө менгі дең гейдегі қ осалқ ы программа кездесуі мү мкін. Оны жалпы тү рде былай бейнелеуге болады: Қ осалқ ы программа Қ осалқ ы программа А Қ осалқ ы программа А1 Қ осалқ ы программа А2 Қ осалқ ы программа В Қ осалқ ы программа В1 Қ осалқ ы программа В2 ... Кез келген дең гейдегі программа ә детте, тұ рақ тылар, айнымалылар, типтер жә не тө менгі дең гейдегі программалар атауларының жиынтығ ынан тұ руы мү мкін. Қ осалқ ы программаның ішінде сипатталғ ан барлық атаулар сол қ осалқ ы программағ а тә н. Сө йтіп, қ осалқ ы программамен шақ ырылатын операторлар тұ рғ ысынан, қ андай да бір алгоритм орындалатын, «қ орап» тә різді. Мұ ндай орындалу барысында қ осалқ ы программаның ә рбір бө ліктері пайдаланушыдан жасырылғ ан, жеке оларды шақ ыра алмайды. Мысалы, жоғ арыда қ арастырылғ ан мысалдан А жә не В процедураларын шақ ыруғ а болады, олардың ішіндегі А1, А2, В1, В2 процедураларын шақ ыруғ а болмайды. Бұ л айтылғ андар тек қ осалқ ы программаның атауына ғ ана тә н емес, сонымен бірге, ондағ ы хабарланғ ан кез келген типтер, айнымалылар мен белгілер атауларына да тә н. Қ осалқ ы программадағ ы хабарланғ ан барлық атаулар бірегей болуы жә не ол қ осалқ ы программаның атауына сә йкес келмеуі тиіс. Тө менгі дең гейдегі қ осалқ ы программағ а кіру барысында, ондағ ы хабарланғ ан атаулар ғ ана емес, онда жоғ арғ ы дең гейдегі атаулардың бә ріне кіру мү мкіндігі сақ талады. Кез келген қ осалқ ы программа ө зін-ө зі шақ ыра алады, шақ ырудың бұ л тә сілі рекурсия деп аталады. Бізге тө мендегідей жазулар берілсін: Var V1: …; Procedure A; Var V2: …; End {A}; Procedure B; Var V3: …; Procedure B1; Var V4: …; Procedure B11; Var V5: …; ?.. B11 процедурасының V1,..., V5 айнымалылары, B1 процедурасынан V1,..., V4 орталық программадан тек V1 процедурасы шақ ырылады. Кез келген қ осалқ ы программа пайдаланудан бұ рын сипатталу тиіс. Сондық тан В қ осалқ ы программасынан А программасын шақ ыруғ а болады, ал А қ осалқ ы программасынан В қ осалқ ы программасы шақ ырылмайды. Негізгі программада да, қ осалқ ы программа да пайдаланатын объектілерді глобальды деп атайды. Object Pascal тілінде тұ рақ тыларды, айнымалыларды, типтерді, белгілерді, қ осалқ ы программаларды сипаттау пайдаланушының қ алауы бойынша жазыла береді. Мысалы, Var V1: …; Procedure S; Var V2: …; End {S}; Var V3: …; … S процедурасынан V1 жә не V2 айнымалыларына баруғ а болады, бірақ V3-ті пайдалануғ а болмайды, ө йткені бұ л айнымалының сипатталуы программада S процедурасынан кейін орналасқ ан. Қ осалқ ы программадағ ы жергілікті атаулар бұ рын хабарланғ ан глобальды атаулармен сә йкес келе береді. Мұ ндай жағ дайда жергілікті атау глобальды атауды жауып, оғ ан кіру мү мкіндігін шектейді. Мысалы, Var I: integer; Procedure P; Var I: integer; Begin LbOutput.Caption: =IntToStr(i); End {P}; Begin I: =1; P End; Бұ л программа экранғ а не шығ арады? Бір атаулы глобальды айнымалының мә ні 1-ге тең болса да Р процедурағ а кірер алдындағ ы ішкі І айнымалының мә ні анық талмағ ан. Жергілікті айнымалыны глобальды айнымалымен «жауып», экранғ а ішкі айнымалының еркін мә ні шығ ады. Егер Р процедурасынан Var I: integer; жоларын алып тастаса, онда экранғ а глобальды І айнымалысының мә ні, яғ ни 1 шығ ады. Сө йтіп, бір атаулы глобальды жә не жергілікті айнымалылар – бұ лар ә ртү рлі айнымалылар. Қ осалқ ы программа денесіндегі мұ ндай айнымалыны шақ ыру жергілікті айнымалыны шақ ырумен бірдей.
|