Алгоритмдер және программалар

Функциялар мен процедуралар

Программаның орындалуы барысында бiр ғана есептеу жұмысын әртүрлi мәндер үшiн бiрнеше рет орындауға тура келедi. Осы бiр есептеу жұмысын программада бiрнеше рет қайталап жазбай, қажеттi кезiнде қолдану үшiн программаның жеке бөлігі ретінде жазып қоюға болады. Қандайда бiр алгоритм бойынша жұмыс жасайтын және өзiне негiзгi программаның кез келген бөлiгiнен қатысуға болатын программаның жекелеген бөлiгiн iшкi программа деп атаймыз. Ішкі программа – бұл арнайы операцияларды орындау үшін қызмет ететін процедуралар мен функциялар.

Барлық программалау тілдеріндегідей Python-да да процедура мен функция бар. Олар стандартты және пайдаланушы өзі анықтайтын стандартты емес топтарға бөлінеді.

Стандартты функциялар мен процедуралар тілдің элементі ретінде өз аттары бойынша алдын ала нақтыланған қызметші сөздермен белгіленеді. Ал стандартты емес функция мен процедураларды әрбір программалаушы өзі жаңа атау беру арқылы анықтайды.

Процедуралар мен функциялардың екеуімен де бірдей нәтижеге жетуге болады. Алайда олардың өзара айырмашылықтары бар. Процедура қажетті операцияларды орындап болған соң, тізімдегі параметрлерге нәтижені қайта жазады. Функция да осы айтылғандарды орындап, оған қосымша нәтижені өзіне меншіктелген мәнге қайтарады. Осылайша, функция – неғұрлым әмбебап нысан болып саналады.

Процедура – белгілі бір әрекеттерді орындау мақсатында алдын ала бекітілген атау бойынша шақырып орындалатын программаның тәуелсіз бөлігі. Процедура параметрлі және параметрсіз болып бөлінеді. Процедура мен функцияларды таныстыру үшін def қызметтік сөзі қолданылады (def – define – анықтау мағынасын береді). Программада процедураны пайдалану үшін процедураның атын нақты немесе параметрлермен бірге жазып шақырады, оны «процедураны шақыру нүктесі» деп атайды. 

Мысал. N саны берілген. Сол санның оң немесе терістігін анықтайтын процедура жаз. Параметрсіз процедура 

def ANIKTAU (): (параметрсіз процедураны таныстырады)

 print («Teris san»)

#Негізгі программа бөлігі

n = int (input (‘Sandy engiz=’))

if n < 0:  

ANIKTAU() (процедураны шақыру)

else:  

print («O san»)

Процедeра — бірнеше іс-әрекетті орындайтын көмекші алгоритм. Python тілінде процедура def қызметші сөзінен басталып, бос не бос емес жақшадан және қос нүктеден тұрады.

• процедура коды негізгі программада шақырылмай тұрып жазылады;

• программада бірнеше процедура болуы мүмкін;

• процедура дұрыс жұмыс істеуі үшін, оны негізгі программадан немесе басқа процедурадан шақыруымыз керек;

• процедура шақырылғанға дейін анықталған болуы керек. Процедураны анықтау қызметтік def сөзінен басталады;

• процедураны шақыру қос жақшаның алдындағы атымен жүзеге асырылады. Мысалы, Err();

• процедураны программа барысында пайдалану кодты қысқартады және программаның тез оқылуын қамтамасыз етеді.

Функция құрылымы

Функция – программаның кез келген жерінде шектеусіз қолдануға болатын программа бөлігі. Функцияның анықтамасын былай нақтылауға болады. Функция – программалау процесінде алдын ала таныстырылған атау бойынша шақырып орындалатын программаның тәуелсіз бөлігі. Функция үш бөліктен: атау, аргумент (параметр), функция денесінен тұрады. Мысалы, қарапайым функцияны қарастырайық:

def testfunc (myname):   

print(‘Salem, %s’ % myname)

testfunc(‘Samal’)

Бұл мысалда testfunc – функцияның атауы, ал myname – оның аргументі. Функция денесі def қатарынан кейінгі қатардан басталады. Аргумент – функция жұмысына қатысатын арнайы айнымалы. Программаның орындалу барысында функция жұмысын аяқтаған соң, есептелген мәнді негізгі программаға қайтып алу керек. Функция жұмысын аяқтап, оның мәнін негізгі программаға қайтару үшін Return командасы қолданылады.

Мысал. а, b, c сандарының арасынан үлкенін табатын программа құрастыруда функция қызметін пайдалан

# Үлкенін анықтау функциясы

def Max( m,k,p ):  

max=m  

if max< k:   

max=k  

if max< p:   

max=p  

return max # Негізгі программа коды a= int(input(‘а=’)) b= int(input(‘b=’)) c= int(input(‘c=’)) print (‘En ulkeni=>’,max(a,b,c))

Функция – атауы бар программа барысында шақырылатын программа бөлігі. Функция шақырылғанға дейін анықталған болуы керек.

• Функцияның процедурадан айырмашылығы – мәнді қайтаруында.

• Функция мәнін қайтару үшін return операторы пайдаланылады. 

Python тіліндегі рекурсия

Рекурсия — бұл өз шекарасында бір нәрсені анықтау процесі. Физикалық әлемдегі мысал екі айнаны бір-біріне қаратып қоюға болады. Олардың арасындағы кез келген нысан рекурсивті түрде көрсетіледі.

Рекурсивті функцияның мысалы:

Нәтиже:
The factorial of 3 is 6

Мұнда factorial() рекурсивті функция болып табылады, өйткені ол өзін шақырады. Бұл функцияны оң бүтін санмен шақырғанда, ол санды азайта отырып, өзін рекурсивті шақырады.

Міне, не болатынын кезең-кезеңімен көрсететін сурет:

Біздің рекурсия сан 1-ге дейін азайған кезде аяқталады. Бұл негізгі шарт деп аталады.

Әрбір рекурсивті функцияның рекурсияны тоқтататын негізгі шарты болуы керек, әйтпесе функция өзін шексіз шақырады. Python аудармашысы стек толып кетуіне әкелетін шексіз рекурсияларды болдырмау үшін рекурсия тереңдігін шектейді.

Әдепкі бойынша, ең үлкен рекурсия тереңдігі 1000. Егер шектен асып кетсе, бұл RecursionError нәтижесіне әкеледі.

Рекурсияның артықшылықтары

  •  Рекурсивті функциялар кодты тазартады.
  • Күрделі есепті рекурсияның көмегімен қарапайым ішкі мәселелерге бөлуге болады.
  • Кез келген кірістірілген итерацияны пайдаланудан гөрі рекурсия арқылы реттілік жасау оңайырақ.

Рекурсияның кемшіліктері

  •  Кейде рекурсия логикасын түсіну қиын.
  • Рекурсивті қоңыраулар қымбат (тиімсіз) болып табылады, өйткені олар көп жады мен уақытты алады.
  • Рекурсивті функцияларды жөндеу қиын.

Жолдық операторлар

+ – жолды біріктіру операторы. Мұнда көрсетілгендей басқа жолдардан тұратын жолды қайтарады:

* — оператор жолдың бірнеше көшірмелерін жасайды. Егер s жол болса және n бүтін сан болса, келесі өрнектердің кез келгені s санының біріктірілген n көшірмесінен тұратын жолды қайтарады:

Python сонымен қатар жолдарды басқару үшін пайдалануға болатын мүшелік операторын ұсынады. Егер ішкі жол жолға қосылса, in операторы True мәнін, ал егер ол болмаса, False мәнін қайтарады:

Python аудармашыға енгізілген көптеген функцияларды қамтамасыз етеді.

chr(n) функциясы берілген бүтін сан үшін таңба мәнін қайтарады.

chr() ord() функциясына қарама-қарсы әсер етеді. Егер n сандық мәні берілсе, chr(n) n таңбасын көрсететін жолды қайтарады:

len(s) функциясы жолдың ұзындығын қайтарады.

len(s) s жолындағы таңбалар санын қайтарады:

Python сонымен қатар жолдан ішкі жолды »жол тілім» деп аталатын шығару мүмкіндігін береді. Егер s жол болса, s[m:n] пішінінің өрнегі m позициясынан басталып, n позициясына дейінгі s бөлігін қайтарады, бірақ n орнына дейін:

Екінші индекс нәтижеге қосылмаған таңбаны көрсетеді. Жоғарыдағы мысалдағы «n» таңбасы. Бұл аздап түсініксіз болып көрінуі мүмкін, бірақ нәтиже s[m:n] өрнегі n — m айырмашылығы болатын ішкі жолды қайтарады, бұл жағдайда 5 — 2 = 3.

Бірінші индексті өткізіп жіберсеңіз, кесінді жолдың басынан басталады. Осылайша, s[:m] = s[0:m]:

Python тілінде файлдармен жұмыс істеу

Файлды ашу

file_variable = open(файл_аты, режим, кодтау)
Файлдық айнымалы – файлдық нысанға сілтеме жасайтын айнымалының аты

Файл атауы файл атауын көрсететін жолдың литералы болып табылады

Mode – файл ашылатын қатынас режимін (оқу, жазу, т.б.) көрсететін жол литералы.

Кодтау — кодтау түрі (мысалы, мәтіндік файлдармен жұмыс істеу кезінде UTF-8)

Режимдер
r: оқы

  • Ағын оқу режимінде ашылады
  • Ағынмен байланысты файл болуы және оқуға болатын болуы керек, әйтпесе open() функциясы ерекше жағдайды шығарады

w: жазба

  • Ағын жазу режимінде ашылады
  • Ағынмен байланысты файлдың болуы қажет емес. Егер ол жоқ болса, ол жасалады. Бар болса, ол нөлдік ұзындыққа кесіледі (өшіріледі). Егер жасау мүмкін болмаса (мысалы, жүйе рұқсаттарына байланысты), open() функциясы ерекше жағдайды шығарады.

a: қосымша жазу

  • Ағын қосу режимінде ашылады
  • Ағынмен байланысты файлдың болуы қажет емес. Егер ол жоқ болса, ол жасалады. Бар болса, виртуалды жазу басы файлдың соңында орнатылады (файлдың алдыңғы мазмұны өзгеріссіз қалады)

r+: оқу және жаңарту

  • Ағын оқу және жаңарту режимінде ашылады
  • Ағынмен байланысты файл болуы және жазылуы керек, әйтпесе open() функциясы ерекше жағдайды шығарады
  • Жіп үшін оқуға және жазуға рұқсат етілген

w+: жазу және жаңарту

  • Ағын жазу және жаңарту режимінде ашылады
  • Ағынмен байланысты файлдың болуы қажет емес. Егер ол жоқ болса, ол жасалады. Файлдың алдыңғы мазмұны өзгеріссіз қалады
  • Жіп үшін оқуға және жазуға рұқсат етілген

Файлды ашқаннан кейін файлмен операцияларды орындау үшін файлдық объектінің әдістері қолданылады

Көшіру
file_variable.write(жол_мәні)
Файлдық айнымалы – файлдық нысанға сілтеме жасайтын айнымалы

Жолдың мәні — файлға жазылатын таңбалар тізбегі

Файл жазу үшін ашық болуы керек, әйтпесе қате орын алады

Файлмен жұмыс істегеннен кейін файл нысанының close() әдісін пайдалану керек

Бұл әрекет бағдарлама мен файл арасындағы байланысты үзеді.