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

7.2. Променљиве - имена придружена подацима

Имена која смо дали подацима у програмирању се називају променљиве. Податке са којима програм ради можемо груписати у три целине:

  1. Улазни подаци

  2. Привремени подаци - међурезултати

  3. Излазни подаци

Меморисање података

Сваки податак у програму коме дамо име добија свој простор у радној меморији рачунара. Током рада програма он обично више пута мења своју вредност али се чува на истом месту. На крају рада програма сви подаци се бришу а радна меморија се ослобађа да би други програми могли да је користе за своје податке. Вредности улазних података се обично задају на почетку рада програма, а затим их програм обрађује и израчунава излазне податке које представља кориснику као резултате свог рада. Током обраде података могу се меморисати и привремени подаци који нису улазни подаци, а нису ни крајњи резултати програма. Такве податке називамо међурезултати.

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

Када дајемо име било којој променљивој у програму (улазним подацима, међурезултатима или крајњим резултатима) веома је корисно и практично да име променљиве указује (асоцира) на оно што се у њој налази (чува) без обзира на дужину (број карактера - слова) одабраног имена. У великим програмима које ради више људи то се обавезно примењује јер омогућава да гледањем у програмски код брже и лакше сазнамо где се шта налази. Примери лошег имена за променљиву у којој се чува нечији број година били би а, b, x и слично, док би добар одабир био, рецимо, broj_godina.

Збиру смо доделили име zbir, разлици име razlika, а производу име proizvod (уместо zbir и razlika могли смо, на пример, да користимо и имена prvi_cinilac, drugi_cinilac). Иако се на овај начин добија програм који је мало дужи него полазни, он је и мало разумљивији, јер се његовим читањем може јасно видети да се прво тражи израчунавање збира, затим разлике и затим њиховог производа. То се десило пре свега захваљујући пажљивом одабиру имена која смо употребили и веома је важно у програмима користити имена која читаоцу програма дају назнаке шта тај програм заправо израчунава. Рачунар једнако успешно извршава програм ма која имена да употребиш.

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

Променљиве су веома важан концепт о коме ће бити много више речи касније. До тада ћемо их користити на потпуно исти начин као и у математици - само као имена придружена одређеним вредностима.

Имена која користимо смеју да садрже само слова, цифре и подвлаке (знак _) - не смеју да садрже размаке, цртице ни остале интерпункцијске знаке.

Рецимо да има неких правила која се односе на имена (каже се и идентификаторе) која можемо користити. Прво, постоји разлика између великих и малих слова и није исто да ли смо употребили zbir или Zbir. Препоручује се да у именима користимо само слова енглеске абецеде (тзв. ошишану латиницу), бројеве и подвлаку (симбол _), коју ћемо користити да повежемо више речи у једно име. У именима не можемо користити размаке, зарезе и слично, нити име можемо започети цифром. Дозвољена имена су, на пример, x, obim, drugi_sabirak, broj_sekundi, a2, а недозвољена су, на пример, 3d_grafika (јер почиње цифром), prvi sabirak (јер садржи размак) и jezik_c# (јер садржи недозвољени знак #).

    Q-56: Шта од наведеног може бити исправно име променљиве у језику Python? Означи све тачне одговоре.

  • xyZ
  • Било која комбинација слова је у реду.
  • Indijana_Dzons_3
  • Подвлаке се могу користити да повежу више делова у целину.
  • 3stvari
  • Цифра не сме бити први карактер.
  • zdravo-svima
  • Цртице се не смеју користити у склопу имена (цртица тј. минус заправо означава одузимање).

Решавање задатака у општим бројевима

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

Склапање коцкица

Јова склапа играчкице од лего коцкица. Жели да склопи ауто за који су му потребна 4 точка, 8 великих и 4 мале коцке, и један бицикл за који су му потребна 2 точка и 6 малих коцкица. Ако је цена точка 79 динара, цена мале коцке 59, а цена велике коцке 99 динара, напиши програм који израчунава колико је динара потребно Јови да би купио све потребне делове.

Једно могуће решење задатка је да се резултат израчуна формирањем једног сложеног израза.

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

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

Учитавање података при покретању програма

У програмском језику Python и програмским језицима у којима се пишу програми уобичајено је да се подаци задају на почетку програма и у наредним програмима ћемо често користити такав приступ. Међутим, постоје програмски језици у којима текст програма не мора бити доступан пре покретања и у којима није могуће изменити улазне податке пре покретања програма. Стога је честа пракса да се вредности улазних података не уписују у текст програма, већ да се програм напише тако да се приликом његовог покретања од корисника тражи да унесе вредности улазних података. То је могуће урадити и у Python програмима.

Један начин да се затражи од корисника да унесе неки цео број је да се у програму наведе broj = int(input("Unesi broj:")). Ова наредба прво испише на екран текст "Unesi broj:" а затим број који корисник унесе смешта у променљиву broj. Ако желимо да допустимо да се уносе и реални бројеви, тада у програму морамо навести broj = float(input("...")). Уместо променљиве broj, наравно, унети број може да се запамти у било којој другој променљивој. Такође, порука може бити сликовитија и текст Unesi broj између двоструких наводника је могуће променити (на пример, користићемо текст Unesi cenu točka:).

Погледајмо сада како изгледа претходни програм када се напише на тај начин.

Ниске

Приликом учитавања (наредбе input) или исписа (наредбе print) текст који се дословно приказује кориснику наводили смо између наводника. Такав текст назива се ниска или стринг (енг. string, ниска). На пример, ниске су "Zdravo" или "Programski jezik Python.". Уместо двоструких равноправно се могу користити и једноструки наводници (на пример, 'Zdravo'), међутим, да бисмо вас мање збуњивали, ми ћемо увек користити двоструке наводнике.

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

Називи за скупове карактера

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

У језику Python 3 могуће је и имена променљивих написати ћирилицом, али то некада може довести до проблема (ако се, на пример, едитор текста који се користи да се програм откуца не подеси адекватно), тако да ћемо за сваки случај имена променљивих увек писати латиницом, без коришћења српских слова (š, ž, č…).

Текст може бити сачуван и у променљивама, али те подсећамо да се текст мора писати између наводника, као у наредном примеру.

Текст можемо учитати и од корисника, након покретања програма. За то можемо употребити функцију input. На пример, наредни програм пита корисника како се зове, а онда га поздрави.

Приметићете да се приликом учитавања бројева заправо учитава текст (помоћу input), а онда се из учитаног текста одређују бројеви који су тим текстом представљени. Таква претварања (конверзије) текста у број врше се помоћу int и float.

Радом са текстом и нискама ћемо се много детаљније бавити током наредних часова.

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