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

15.2. Учитавање и обрада листе

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

Просек учитаних оцена

Напиши програм који учитава број оцена ученика, а затим и појединачне оцене (сваку у посебном реду) и на крају одређује и исписује просечну оцену тог ученика.

Елементе у листу можемо учитати тако што на почетку кренемо од празне листе (листе []), а затим у петљи учитавамо један по један елемент и додајемо га у листу методом append.

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

Трајање путовања

Трајање путовања зависи од брзине и растојања. Претпоставимо да у 8.35 крећемо из Београда до Новог Сада и да треба да пређемо пут од 93,38 km. Напиши скрипт који израчунава када ћеш стићи у Нови Сад ако се крећеш просечном брзином од a) 120 km/h, b) 110 km/h и c) 100 km/h.

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

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

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

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

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

Једна важна поука овог задатка је да разлика у брзини од целих 20 km/h - што је разлика између опуштене вожње и јурцања по ауто-путу уз кршење прописа, а често може бити и разлика између живота и смрти - на овој релацији додаје свега 10 минута. Дакле, опрезном вожњом се не губи много времена, али се много добија.

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