Қолданушы процедуралары
Программаңда бір фрагментті («*» жолын шығару секілді) үш-төрт рет қайта-қайта көшіріп жазғаныңды байқадың ба? Ыңғайсыз әрі қате жіберу оңай емес пе? Дәл осы мәселені шешу үшін «процедура» деген ұғым бар. Бүгін код қайталанудан құтылып, программаны ықшам әрі оқуға оңай етудің жолын үйренеміз.
Ресейлік ғалым В.Ф.Очков ішкі программаны әдемі теңеумен түсіндірген: «Ішкі программа — бірнеше рет айтылатын ән қайырмасы, ал ән мәтінінде оны тек БІР РЕТ жазады». Яғни, әннің қайырмасын әр шумақтан кейін толық қайта жазудың орнына, оны бір жерге жазып қойып, қажет кезде «қайырма» деп көрсете саласың.
Ішкі программа — белгілі бір тапсырманы шешетін, негізгі программаның кез келген жерінен атымен бірнеше рет шақыруға болатын, программаның тәуелсіз бөлігі.
Ішкі программаның екі түрі бар — олардың айырмашылығы «нәтиже қайтара ма, жоқ па» дегенде:
| Түрі | Сипаттамасы |
|---|---|
| Процедура | Белгілі бір әрекет орындайды (мыс. экранға шығару), нәтижені МӘН ретінде қайтармайды |
| Функция | Процедура сияқты әрекет орындайды, БІРАҚ есептелген нақты мәнді нәтиже ретінде қайтарады (математикалық функцияға ұқсас) |
Тағы бір жіктелу бар — «кім жазды» дегенге қарай: стандартты (жүйелік) ішкі программалар — тілдің өзінде дайын тұрады (мыс. print()), ал стандартты емес (қолданушы) — программашының өзі жазатын жаңа ішкі программа.
Python-да процедура (немесе функция) def (ағылшынша *define* — анықтау) кілттік сөзінен басталады, содан кейін атауы, жақшалар (керек болса параметрлермен) және қос нүкте жазылады. Процедура «денесі» ШЕГІНІСПЕН (отступпен) жазылады.
def арқылы АНЫҚТАЛҒАН болуы керек. Python жоғарыдан төменге қарай оқитындықтан, әлі анықталмаған процедураны шақыру қатеге әкеледі.Процедураны шақыру үшін негізгі программада оның атын жақшамен бірге жазу керек — бұл орын шақыру нүктесі деп аталады. Программа осы жолды оқыған сәтте процедураның ішіндегі код орындала бастайды.
Берілді: N саны берілген.
Табу керек: N санының теріс екенін анықтайтын параметрсіз процедура.
def ANIKTAU():
print("Teris san")
# Негізгі программа бөлігі
n = int(input('Sandy engiz='))
if n < 0:
ANIKTAU()
else:
print("Ong san") Жауабы: n мәні теріс болса — «Teris san», оң болса — «Ong san» шығады.
Берілді: «*» таңбасынан тұратын жол программада үш рет қайталанады.
Табу керек: осы фрагментті процедура түрінде рәсімдеу.
def starline():
print("*" * 20)
starline()
print("Title: Program 1")
starline()
print("The end")
starline() Жауабы:
********************
Title: Program 1
********************
The end
******************** Берілді: тіктөртбұрыштың ұзындығы мен ені.
Табу керек: ауданы мен периметрін есептейтін екі процедура.
Неге екі бөлек процедура жазамыз? Ауданды есептеу мен периметрді есептеу — екі бөлек тапсырма, оларды бөлек процедураға бөлу кодты түсінікті әрі қайта пайдалануға оңай етеді.
def audan(k, p):
print('audan=', k * p)
def perimetr(k, p):
print('perimetr=', 2 * (k + p))
# Негізгі программа бөлігі
a = int(input('Uzyndygyn engiz='))
b = int(input('Enin engiz='))
audan(a, b)
perimetr(a, b) Жауабы: енгізілген a мен b мәндеріне сәйкес аудан мен периметр экранға шығады.
audan(k, p) екі параметрмен анықталған болса, оны шақырғанда да міндетті түрде екі мән беру керек: audan(a, b).def арқылы анықталуы керек.- Ішкі программа — код қайталанудан құтқаратын, атымен бірнеше рет шақырылатын программа бөлігі.
- Процедура — әрекет орындайды, нәтижені қайтармайды; функция — нәтижені мән ретінде қайтарады.
- Python-да процедура
defсөзінен басталады, денесі шегіныспен жазылады. - Процедура шақырылмас бұрын анықталуы керек, шақырудағы параметр саны анықтамадағымен сәйкес болуы керек.