Садржај
1. Робот Карел - Линијски програми и бројачка петља
2. Робот Карел - Условна петља и гранање
3. Робот Карел - Задаци за вежбање
4. Корњача графика - Линијски програми и петље
5. Корњача графика - Гранање, угнежђене петље, функције, торке и листе
6. Корњача графика - Задаци за вежбање
9. Израчунавања - Коришћење и дефинисање функција
10. Израчунавања - Задаци за вежбање
13. Контрола тока - Задаци за вежбање
16. Откривање и исправљање грешака и коришћење дебагера

7.3 Тестирање и дебаговање програма

Аутоматско тестирање програма

У програмирању је веома важно да програми које напишеш увек дају тачне резултате. Најчешћи начин да се провери коректност програма је да се он покрене на већем броју унапред припремљених тест примера (у којима су дате различите вредности улазних параметара) и да се провери да ли на њима даје очекиване резултате. Ако програм на њима исправно ради, веома је вероватно да ће исправно радити и на свим другим примерима. Трудили смо се да у наставку омогућимо аутоматско тестирање на што већем броју задатака. Један такав је и наредни.

Марко је прочитао књигу за три дана. Првог дана је прочитао 100 страна. Другог дана је прочитао 17 страна више него првог, а трећег два пута више него другог. Колико та књига има страна? Напиши програм који то одређује, а ради исправно и када је број страна прочитаних првог дана другачији.

Програм је у тренутном облику неисправан (увек исписује нулу).

Притисни дугме Тест и видећеш да резултати који се добију нису једнаки оним очекиваним, а приказаће ти се поља црвене боје, што указује на грешке.

Поправи претходни програм тако што ћеш изменити само оне редове који су обележени (иза наредбе стоји коментар # popravi ovaj red*) - остале редове не дирај. Када завршиш, поново притисни дугме Тест. Ако је све у реду, приказаће ти се три поља зелене боје. Наиме, када притиснеш то дугме, програм се тестира на основу неколико унапред припремљених тестова. Програм се неколико пута пушта испочетка (за сваки тест по једном), али тако да се уместо вредности 100, променљивој prvi_dan додељују неке друге вредности (у овом конкретном примеру покушава се са вредностима 84, 122 и 153). Након тога, програм који си написао израчунава укупан број страна и резултат који је твој програм израчунао се пореди са стварним бројем страна књиге за тај тест (за улаз 84 стварни број страна је 387, за улаз 122 стварни број страна је 539, а за улаз 153 стварни број страна је 663). Ако се та два броја поклапају, на том случају за ту почетну вредност се приказује зелена боја, а ако не, приказује се црвена боја.

Извршавање корак по корак - дебаговање

Корисна техника која помаже да се боље разуме неки програм, али и да се уоче и исправе евентуалне грешке у програму, јесте то да се програм извршава корак по корак, тј. да се извршава једна по једна његова наредба, при чему се након сваке извршене наредбе прати вредност променљивих у програму.

Извршавање програма корак по корак уз праћење вредности свих међурезултата назива се дебаговање (требљење од бубица) и веома је важна техника за откривање грешака у програмима. У старим рачунарима који су били велики као читава соба, дешавало се да мољци и сличне бубе уђу у рачунар и проузрокују неки квар. Од тада се све грешке у програмима називају багови, тј. бубице (енг. bugs).

Илуструјмо ову могућност на сајту Петље кроз наредни, једноставни, пример.

Воћњак са јабукама

Пера је засадио 380 стабала јабуке. Ђура је засадио 142 стабла јабука више од Пере, а Мика је засадио два пута више стабала од Пере. Колико су стабала засадили укупно?

Исправи следећи програм тако да исправно израчунава колико су стабала засадили укупно (програм треба исправно да ради и ако се број стабала које је засадио Пера промени).

Притисни сада дугме Корак по корак. Оно ти пружа могућност да програм извршаваш корак по корак. Дугметом Forward извршаваш наредну наредбу (ону обележену црвеном стрелицом). Наредба која је претходно извршена обележена је светло-плавом стрелицом. У делу Frames можеш видети вредности свих до сада израчунатих резултата, док у прозору тога можеш видети излаз програма (резултате одштампане наредбом print).

И у овом задатку је омогућено аутоматско тестирање, па дугметом Тест провери да ли је твоје решење тачно.

Дебаговање у окружењу IDLE

Напредније програме нећеш писати на сајту Петље, већ на свом рачунару у специјализованом развојном окружењу (програму) за писање програма, какво је Python IDLE. Таква окружења такође омогућавају извршавање програма корак по корак, уз праћење вредности променљивих, тј. дебаговање. Детаљан опис како се ово ради дат је у последњој лекцији овог курса.

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+