Программа құрушы программалау тілінің операторларын және оларды қолдану ерекшеліктерін қаншалықты жақсы білсе, ол соншалықты аз қате жібереді. Дегенмен қанша жақсы біліп, тәжірибелі болса да, қате кетуі мүмкін.
Кез келген программалау тілінде жазылған программаны дер кезінде реттеп, түзетуге (отладка) болады. Программалау тілінде қателерді түзететін өз құралдары болады. Программалаушылардың өз тілінде программада жіберілген қателерді багтар (ағылшын тілінде – «bug» «жүк»), программа кодын түзетуді – дебаггер (ағылшын тілінде «debugger» – «түзетуші») деп атайды. Python тілінде де қатені жөндеп, программаны жөндейтін, реттейтін өз құралдары бар.
Программадағы қателермен жұмыс кезінде екі түрлі сұрақ туындайды:
Программада осы қателерді қалай анықтауға болады?
Программада осы қателерді біртіндеп орындай отырып, қалай жөндеуге болады?
Программаның жұмыс атқарып тұрған уақыты, оның командалары компьютер процессорының көмегімен бірінен соң бірі ретімен орындалады. Программалаушы программа орындалу кезінде дәл қай уақытта, қай команданың орындалып жатқанын анықтай алмайды. Программаның дұрыс жұмыс істемеу себебін білу үшін, командалардың орындалуының нақты тәртібін білу керек. Оны программада трассировкалау деп атайды.
Программалаушылар программа жазуда 3 түрлі қате жіберуі мүмкін:
1. Синтаксистік;
2. Программаның орындау уақытына байланысты;
3. Алгоритмдік қателер.
Трассировкалау алгоритмі кездесетін қатемен жұмыс жасау ретін білдіреді. Трассировка деп, программаны біртіндеп, қадамдап (step-by-step) орындау процесін айтады.
Синтаксистік қате
1-суреттегі қатеде айнымалы саннан басталған. Мұндай қателерді программа компиляция кезінде бірден көрсетеді. Егер қате дер кезінде жөнделмесе, онда программа жұмысын тоқтатады.
1-сурет
Программаның орындалу уақытына байланысты қате
Қателердің тағы бір түрі программаның орындалу уақытының өтіп кетуімен байланысты (run-time errors). Бұл программаны іске қосу немесе тестілеу уақытында пайда болады. Мысалы, бұл қатенің туындауына себеп болған жағдай, программа компьютерде жоқ input.txt мәтіндік файлын оқуға әрекет жасайды. Бұл файлды таппаған соң қате деп көрсетеді. Программада қате болса, хабарлама беріледі де, тоқтайды.
Екі таңбалы сан берілген. Сол санның цифрларының қосындысы жұп немесе тақ екенін анықтайтын жоба жасайық.
Талдау
Алдыңғы программа құрудағы тәжірибелеріңе сүйеніп, өздерің программа құрастырғанда жіберген қателерді топтаңдар. Оны 1-кестедегі қате түрлерімен салыстыра отырып, талдаңдар. Мысалдар келтіріңдер.
Программалау барысында өз тәжірибеңнен кездескен қандай қателерді айта аласың?
Алгоритмді трассировкалау дегеніміз не?
Программа трассировкасы қалай жүзеге асырылады?
Программа құру барысында жиі кездесетін қателердің түрі қандай?
Программаны трассировкалау не үшін өте маңызды болып саналады?
Тапсырма 1
k мен p аралығындығы цифрларының қосындысын табатын программа құрастыр. Тапсырманы орындау барысында қандай қате жібердің? Назар аудар. Цикл денесінде орналасқан операторлар жұмысын трассировкалау арқылы тексер.
Тапсырма 2
Терминнің сипаттамасын алу үшін сөйлемді дұрыс орналастырыңыз.
Тапсырма 3
Сұраққа дұрыс жауап бер.
Тапсырма 4
Дұрыс салыстырып шық.