Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

Program ili softver (software) predstavlja niz instrukcija računaru ili nekom računarski zasnovanom

uređaju kako da izvrši određeni zadatak. Razvoj softvera podrazumeva upotrebu posebnih alata kao što
su programski jezici.
Računar ili računarska mašina (Computing Machinery) je programabilni uređaj koji automatizovano
izvršava niz aritmetičkih ili logičkih operacija.
Univerzalni računar (Computer) koji može da izvršava bilo kakva računanja, osmišljen je u 19. a
realizovan u 20. veku. Prvi programabilni (mehanički) računar (Analitycal Engine), osmislio je početkom
19. veka Čarls Bebidž, a prvi program za taj računar napisala je Ada Bajron i po njoj je nazvan prvi
programski jezik Ada (1980).
Univerzalna Tjuringova mašina je teorijski uređaj koji manipuliše simbolima na beskonačnoj traci u
skladu sa tabelom pravila i može da simulira svaki računarski algoritam.
Većina savremenih računara zasnivaju se na modelu realizacije računara koji je izložio Džon fon Nojman.
Taj računar ima sledeće komponente:
 Memorija (Random access memory, RAM) koja se sastoji od registara kojima se može direktno
pristupiti radi čitanja ili upisa instrukcija i podataka.
 Procesor koji se sastoji od upravljačke i aritmetičko-logičke jedinice i on čita i izvršava instrukcije
programa.
 Ulazno-izlazna jedinica koja ostvaruje vezu računara sa okolinom.
Prva automatizovana obrada velikog obima podataka realizovana je prilikom popisa stanovništva u SAD-
u 1890. godine gde se vreme trajanja obrade sa 10 godina smanjilo na 6 nedelja.
Računarski program je skup naredbi u nekom programskom jeziku za izvršenje određenog zadatka na
računaru. Programi koje kreiraju programeri nazivaju se izvorni programi ili izvorni kod (source code).
Algoritam je opis konačnog broja koraka koje treba izvršiti za zadani ulaz da se proizvede traženi rezultat
za konačno vreme. Nezavisan je od programskog jezika u kom će se realizovati i može se opisati na
različite načine, npr. kao tekst u prirodnom jeziku (narativni opis), strukturni tekst (pseudokod) ili kao
grafički prikaz, npr. pomoću dijagrama toka (flowchart) ili UML dijagrama.
Programski jezik je formalno definisan jezik za pisanje programskog koda u obliku niza naredbi koje
računar prevodi i izvršava. Programi u binarnom jeziku procesora nazivaju se mašinski programi ili
mašinski kod (machine code), a da bi se neki program mogao izvršiti potrebno ga je prevesti iz izvornog
koda u mašinski kod. Programi se mogu prevoditi pre njihovog izvršavanja što se naziva kompilacija pri
čemu je potrebo program prevesti za svaki tip procesora, kao i posedovati posebne verzije prevodioca
(kompajlera). Takvi su na primer C, C++. Mogu se prevoditi u toku njihovog izvršavanja što se naziva
interpretacija, a takav prevodilac naziva se interpreter, a takvi su npr. Java, Python, PHP, C#. Prevođenje
se može izvršiti direktno u mašinski jezik ili u neki međukod (bytecode). Međukod se izvršava pomoću
virtuelne mašine koja se na određenom računaru instalira samo jednom za sve programe prevedene u
odgovarajući međukod. Osnovna verzija prevodioca za jezik Python prevodi programe u međukod i
izvršava se pomoću virtuelne mašine. Naziva se Cpython jer je napisana u jeziku C.

Vrste programskih jezika


Prema nivou apstrakcije računara, programski jezici niskog nivoa dele se na:
 mašinski jezici, sastoje se od binarno kodiranih instrukcija procesora,
 asambleri, koji koriste simbolički zapis mašinskih instrukcija i adresa.
Programski jezici visokog nivoa apstrakcije su:
 proceduralni, koji opisuju realizaciju postupaka ili algoritama (C, C++, Java, C#, Python),
 neproceduralni, koji ne opisuju postupak, već traženi rezultat (Prolog, SQL).
Procedualni programski jezici mogu biti:
 klasični, kao što su Pascal i C,
 funkcionalni, kao što su LISP i F#,
 objektivno orijentisani, kao što su C++, Java, C# i Python.

Sintaksa i sistematika programskih jezika

Sintaksa je skup znakova i prihvatljivih nizova tih znakova. Sintaksa se najčešće preciznije definiše
skupom pravila za generisanje ili prepoznavanje ispravnih nizova zadataka, npr. formalnim gramatikama
ili automatima. Formalna gramatika se može precizno opisati npr. notacijom koja se naziva Bakusova
normalna forma (BNF) ili grafički, pomoću sintaksnih dijagrama.
Sistematika se bavi smislom sintaktički ispravnih nizova znakova.
Proces razvoja programa (programiranje)
Programiranje je prevođenje nekog algoritma u računarski program u nekom konkretnom programskom
jeziku.
Objektno orijentisano programiranje rešenje nekog problema predstavlja pomoću skupa objekata i opisa
njihovih svojstava i ponašanja koji međusobno komuniciraju slanjem i primanjem poruka.
Proces rešavanja problema uz pomoć računara se sastoji iz više faza. Prva faza je analiza problema, koja
omogućava da se dizajnira računarsko rešenje, koje se zatim implementira u nekom programskom jeziku
i na kraju se testira kako bi se pre praktične upotrebe uklonile greške u funkcionisanju.
Dizajniranje ili projektovanje računarskog rešenja sastoji se od izbora i opisa struktura podataka i
algoritama kojima se rešava problem, na proceduralni ili objektno-orijentisan način.
Razvoj i implementacija algoritma
Dizajn algoritma je složen kreativni proces koji se sastoji od:
1. razumevanje i definisanje problema koji treba rešiti,
2. izgradnja neke vrste modela problema,
3. izbora metode rešavanja i
4. provere ispravnosti i preciznog opisa motoda rešavanja
Algoritam se može implementirati u različitim programskim jezicima pri čemu ga je potrebno
dokumentovati npr. u vidu komentara u kodu programa.
Testiranje programa
Univerzalni računar može da izvrši svaki algoritam. Proces prevođenja algoritma u kod određenog
programskog jezika može biti podložan greškama. Greške mogu biti:
 sintaksne greške tj. greške u načinu pisanja naredbi programskog jezika koje otkriva prevodilac i
 semantičke greške (logičke, greške u smislu), koje treba da otkrije programer u toku pisanja
programa.
Programski jezik Python
Python je objektno-orijentisan interpretativni programski jezik opšte namene. Autor je holandski
programer Gvido van Rosum ranih devedesetih godina. Python je dobio naziv po britanskoj
humorističkoj TV seriji „Leteći cirkus Montija Pajtona“ a razvojno okruženje IDLE takođe nosi ime po
člana grupe (Eric Idle). Prva verzija Pythona pojavila se 1994. godine, a trenutno se istovremeno koriste 2
verzije, a verzija 2 se prvi put pojavila 2000. godine i trenutno se i dalje koristi. Nova nekompatibilna
verzija 3 pojavila se 2008. godine. Programi razvijeni za verziju 2 nisu kompatibilni za verziju 3 ali postoje
alati za konverziju programa iz verzije 2 u verziju 3.
Važna izdanja Pythona:
 Python 1 – 1994.
 Python 2 – 2000.
 Python 3 – 2008.
 Python 3.4 – 2014.
 Python 3.5 – 2015.
 Python 3.6 – 2016.
 Python 3.7 – 2018.
 Python 3.8 – 2019.
Python je jednostavan ali se oslanja i na kvalitetne programske biblioteke. Proširuju mogućnost jezika
nakon što se uključe u program naredbom import.
Najvažniji razlozi za popularnost Pythona su:
 jednostavna sintaksa i veoma čitljiv kod,
 velike programske mogućnosti i široka upotreba,
 koriste ga velike svetske kompanije i organizacije (Google, Yahoo, NASA, YouTube...)
 jezik je otvorenog koda, besplatan i ima dobru korisničku podršku
Osnovni elementi jezika Python
Program u jeziku Python je niz naredbi čiji je delimiter kraj linije teksta. Uvlačenje (indentacija) ima
posebnu ulogu u pisanju programa i takođe služi kao delimiter u složenim naredbama. Program je case
sensitive, tj. u naredbama se razlikuju velika i mala slova (npr. naredbe Print i print se međusobno
razlikuju).
Komentar
Komentari su proizvoljni tekst koji prevodilac zanemaruje, ali predstavljaju važan deo programskog koda.
Razlikuju se dve vrste:
 komentari u jednoj liniji koje počinju znakom „#“, a završavaju oznakom kraja linije programa
(npr #Komentar u jednoj liniji),
 višelinijski komentari koji omogućavaju unos teksta između dve programske linije i počinju i
završavaju se sa tri uzastopna znaka navoda.
Promenljive i izrazi
Promenljive u Python-u se ne deklarišu i nemaju unapred određen tip, već je tip svake promenljive
određen vrednošću koja joj se dodeli. Tip vrednosti promenljive se može ispitati pomoću funkcije type().
Osnovni tipovi i strukture podataka
Tip podataka čini skup vrednosti i skup operatora koji se mogu primeniti na te vrednosti. Mogu biti celi i
decimalni brojevi kao i logičke vrednosti npr. (int 2; float 2.0; bool 1)
Tip bool je podtip tipa int, pa logičke vrednosti istinitosti imaju celobrojnu interpretaciju npr. (True==1 i
False==0).
Osnovne strukture su stringovi, liste i n-torke.
Stringovi su nizovi znakova čija se pozicija u nizu računa od nule. Elementi se mogu brojati i unazad,
počevši od poslednjeg elementa u nizu koji ima indeks -1).
Liste su sekvence ili nizovi podataka podataka, kojima mogu biti različitog tipa i kojima se može
pristupati pomoću indeksa, tj. podataka o njihovom redosledu u nizu.
Struktura n-torke je takođe namenjena za predstavljanje nizova ili sekvenci objekata različitog tipa, ali
se, za razliku od liste, ne može menjati.
Rečnik je struktura kod koje se elementima, koji takođe mogu biti bilo kog tipa, ne pristupa prema
numeričkom indeksu, već pomoću nenumeričke informacije, koja se naziva ključ (npr. <broj
indeksa>:<podaci> )
Grananje i ponavljanje
Grananje(selekcija) služi za izbor delova programa koji se izvršavaju samo pod određenim uslovima, npr.

Naredbe koje se uslovno izvršavaju uvučene su za isti broj mesta u odnosu na početak naredbe if. Koristi
se uvlačenje za 4 mesta (indentacija)

Kod ponavljanja (iteracije) najjednostavnija je naredba for, koja izvršava skup naredbi zadani broj puta,
po jednom za svaku vrednost iz zadanog skupa, npr.

Interaktivni ulaz-izlaz
Program pomoću funkcije input () postavlja pitanje korisniku, a pomoću funkcije print () vrši se ispis
podataka na računaru. Kada se putem tastature unese odgovor i potvrdi tasterom enter, uneseni tekst
se vraća kao rezultat izvršavanja funkcije, npr.
Proceduralni ili imerativni programi sastoje se od niza naredbi:
 različite deklaracije (npr. definicije konstanti ili tipova i strukture promenljivih)
 naredbe za dodelu vrednosti promenljivoj, pri čemu vrednost može biti izračunata na osnovu
nekog izraza (formule)
 naredbe grananja (selekcije), kojima se menja redosled izvršavanja niza naredbi
 naredbe ponavljanja (iteracije), kojima se izabrani niz naredbi ponavlja više puta
 definicije funkcija ili procedura (potprograma)
 naredbe za ulaz-izlaz podataka, za interakciju sa korisnikom računara (tastatura, ekran) ili rad sa
fajlovima.
Program u jeziku Python je niz naredbi, koje mogu biti u jednoj ili više logičkih linija programa. Logička
linija programa se može sastojati od jedne ili više fizičkih linija, koje završavaju oznakom kraja linije
teksta.
Sintaksa nekog jezika dozvoljava i pisanje više kratkih naredbi u jednoj fizičkoj liniji, odvojenih znakom ;
Posebnu ulogu ima ulačenje teksta programa ili indentacija, koja služi za definisanje blokova naredbi u
funkcijamam klasama i naredbama grananja i ponavljanja. Uvlačenje se postiže unosom niza parnih
mesta (4 mesta) ili pomoću tabulatora.
Promenljive i dodela vrednosti
Promena (variable) je naziv za vrednost zapamćenu u memoriji računara, koja se može menjati. Nazivi
promenljivih u jeziku Python mogu se formirati od malih i velikih slova, znaka „_“ i brojeva, ali prvi znak
mora biti slovo ili znak „_“. Imena se moraju razlikovati od rezervisanih reči jezika Python, koje su za
verziju 3.
Naredba dodele vrednosti
Naredba dodele vrednosti ima složenu sintaksu, ali je najčešći oblik u kom se koristi: <promenljiva> =
<izraz>. Jezik Python dozvoljava višestruke dodele vrednosti u jednoj naredbi, npr:

Nakon prve naredbe vrednosti promenljivih su a=1, b=2, c=3. Nakon druge naredbe, sve promenljive
imaju vrednost 0. Tip vrednosti promenljive može se ispisati funkcijom type(), npr. type(x) daje rezultat
<class „float“>, a type(ime) daje <class „str“>.
Oblast definisanosti promenljivih
Oblast definisanosti neke promenljive (scope) predstavlja deo programa u kome je vrednost promenljive
definisana i može se koristiti. Ukoliko vrednost neke promenljive nije definisana, sistem dojavljuje grešku
izvršavanja.
Kompleksni brojevi
Kompleksna vrednost u jeziku Python može se kreirati pomoću funkcije complex(x,y), iz biblioteke
cmath. Vrednost realnog i imaginarnog broja su svojstva .real i .imag. Osim osnovnih računskih
operacija, za rad s kompleksnim brojevima se mogu koristiti i druge funkcije npr. conjugate(), polar(),
rect(), exp(), log(), itd.
Izrazi
Izrazi su pravilna kombinacija vrednosti (konstanti), promenljivih, funkcija i operatora. Rezultat može biti
numerički, nenumerički ili logički (koji je u stvari podtip tipa int)
Operatori
Operatori u jeziku Python definisani su za određen tip vrednosti na koje se mogu primeniti. U odnosu na
broj argumenata operatori mogu biti unarni (jedan argument) i binarni (dva argumenta).
Aritmetički operatori su:
+ - sabiranje numeričkih vrednosti i unarni operator predznaka
- - oduzimanje numeričkih vrednosti i unarni operator predznaka
* - množenje numeričkih vrednosti
/ - deljenje numeričkih vrednosti koje proizvodi decimalni rezultat
// - celobrojno deljenje kojim se decimalni deo rezultata odbacuje
** - stepenovanje ili eksponenciranje
% - ostatak deljenja ili modul
Relacioni operatori su:
< - manje od
<= - manje ili jednako
>- veće od
>= - veće ili jednako
== - jednako
!= - različito(nije jednako)
Ponavljanje (iteracija)
 for je naredba za ponavljanje bloka naredbi unapred poznati broj puta
 while je naredba za ponavljanje bloka naredbi sve dok važi neki logički uslov, gde broj
ponavljanja nije unapred poznat
Korisničke funkciije
To su imenovane grupe naredbi koje izvršavaju određeni zadatak i mogu se upotrebiti više puta i tako
skratiti tok programa. Funkcije mogu da imaju parametre, čije vrednosti mogu da se zadaju prilikom
svakog pokretanja. One ne moraju da vraćaju neku vrednost kao rezultat. Takve funkcije, nakon izvršenja
osnovnog zadatka, za povratak koriste naredbu return bez povratne vrednosti.
Ulaz-izlaz
U Pythonu, naredbe za interaktivni ulaz i izlaz realizovane su kao ugrađene funkcije input() i print() i uvek
vraćaju neku vrednost kao rezultat izvršavanja.
 naredba input() kao rezultat izvršavanja vraća string koji je interaktivno uneo korisnik,
 naredba print() kao rezultat vraća vrednost None.
Format ispisa podataka se preciznije može zadati korišćenjem funkcije format, gde je podatak string ili
broj, a specifikacija formata je string koji detaljnije opisuje način ispisa podataka, npr. dužinu, tip
vrednosti i poravnanje. Za string se navodi znak s, za celi broj d, a za decimalni broj se koriste f ili e.
Izrazi
Izrazi u proceduralnim programskim jezicima opisuju računanja koja proizvode jedinstvenu vrednost,
koja se može dodeliti promenljivoj ili koristiti kao vrednost argumenta neke funkcije. Izrazi predstavljaju
ispravne kombinacije vrednosti, promenljivih, funkcija i operatora. Nakon izračunavanja (evaluacije)
izrazi daju rezultat određenog tipa koji se može koristiti u drugim naredbama. Rezultat može biti
numerički, nenumerički ili logički. Redosled operacija prilikom izračunavanja izraza zavisi od tipa
vrednosti i upotrebljenih operatora. Svi operatori istog prioriteta evaluiraju se s leva na desno, dok
zagrade menjaju redosled evaluacije.
Operatori
Operatori su simboli koji označavaju operacije koje se mogu izvršiti nad jednim ili više operanada.
Najčešće se koriste unarni operatori, koji imaju jedan operand, i binarni operatori koji vrše operacije nad
dva operanda. Prema vrsti računanja i tipovima operanada, operatori se dele na:
 aritmetički operatori (+, -, /, //, **, *, %)
 operatori poređenja (<, <=, >, >=, ==, !=)
 specijalni operatori uz dodelu vrednosti (+, -, /, //, **, *, %)
 logički operatori (not, and, or)
 operatori za rad sa bitovima (~, &, ^, |, <<, >>)
 operatori pripadnosti (in, not in)
 operatori identifikacije (is, is not)
Aritmetički operatori
+ - sabiranje numeričkih vrednosti i unarni operator predznaka
- - oduzimanje numeričkih vrednosti i unarni operator predznaka
* - množenje numeričkih vrednosti
/ - deljenje numeričkih vrednosti koje proizvodi decimalni rezultat
// - celobrojno deljenje kojim se decimalni deo rezultata odbacuje
** - stepenovanje ili eksponenciranje
% - ostatak deljenja ili moful
Operatori + i * se pored numeričkih mogu koristiti i u nenumeričkim vrednostima odnosno stringovima
gde operator + označava spajanje stringova, a * u kombinaciji sa brojem označava ponavljanje stringa.
Operatori poređenja
< - manje od
<= - manje ili jednako
>- veće od
>= - veće ili jednako
== - jednako
!= - različito(nije jednako)
Rezultat poređenja dve vrednosti pomoću relacionih operatora je logička vrednost, True ili False.
Pokušaj upotrebe jednog znaka jednakosti za poređenje vrednosti prouzrokuje grešku izvršavanja.
Logički operatori
not- unarni operator negacije,
and- binarni operator logičko I,
or- binarni operator logičko ILI.
Operand 1 Operand 2 and or

True True True True

True False False True

False True False True

False False False False


Ako bilo koji operand operatora I (and) ima vrednost False, rezultat je False. Takođe, ako bilo koji od
operanada operatora ILI (or) ima vrednost True, rezultat je True.
Operatori za rad s bitovima
~ - negacija na nivou bita (bitwise NOT), unarna operacija
& - operacija I nad bitovima (bitwise AND)
^ - operacija ekskluzivno ILI nad bitovima (bitwise XOR)
| - operacija ILI nad bitovima (bitwise OR)
<< - pomeranje bitova ulevo određen broj mesta (shift left)
>> - pomeranje bitova udesno određen broj mesta (shift right)
Operacije nad bitovima koriste se npr. u kriptologiji, kodiranju i dekodiranju, kao i za rad sa određenim
uređajuma i protokolima. Binarni prikaz sadržaja može se dobiti ugrađenom funkcijom bin(), koja može
da prikaže efekte izvršavanja binarnih operatora.
Operatori pripadnosti
in – proverava pripadnost neke vrednosti zadanom nizu vrednosti (stringova, listi, n-torki)
not in – negacija pripadnosti nekom nizu vrednosti
Operatori identifikacije
is – proverava da li dve promenljive pokazuju na isti objekat u memoriji
is not – daje suprotnu vrednost provere identičnosti objekta
Operatori identifikacije proveravaju identitete objekata: x is y daje True ako je u pitanju isti objekat,
odnosno ista memorijska adresa.
Prioritet opratora

Zaokruživanje
Zaokruživanje decimalnih vrednosti vrši se ugrađenom funkcijom round(), koja zaokružuje broj na zadani
broj decimala. Ukoliko se broj decimala ne navede, zaokruživanje se vrši na celi broj. Funkcija round()
zaokružuje na najbliži broj zadane preciznosti. Poseban vid zaokruživanja na celi broj je prosto
odbacivanje decimalnog dela, to se postiže ugrađenom funkcijom int().
Upravljanje tokom izvršavanja programa: grananje i ponavljanje
Za realizaciju nekog algoritma dovoljna su tri načina upravljanja redosledom izvršavanja pojedinih
programa algoritma:
 sekvencijalno izvršavanje, jedan korak za drugim
 uslovno izvršavanje, gde naredni korak zavisi od određenih uslova
 ponavljanje, gde se određeni niz koraka izvršava više puta
Grananje (selekcija)
Naredba grananja omogućava izbor na osnovu logičkog uslova sledećeg bloka naredbi koji će se izvršiti.
Blokovi naredbi u Pythonu označeni su uvlačenjem (indentacijom). Grananje nije ograničeno na
ispitivanje jednog logičkog uslova, već se selekcija bloka naredbi može izvršiti na osnovu niza logičkih
uslova. Logički uslov je izraz koji nakon evaluacija proizvodi logičku vrednost (True ili False).
U proceduralnim programskim jezicima se u programu može realizovati prema logičkoj vrednosti (dve
alternative) ili na osnovu vrednsoti nekog drugog tipa (više od dve alternative). Jezik Python podržava
grananja prema logičkom uslovu, odnosno nizu povezanih logičkih uslova (if...elif...else).
Ponavljanje (iteracija)
Naredba ponavljanja omogućava višestruko izvršavanje određenog bloka naredbi. Broj ponavljanja može
biti unapred određen (naredba for) ili se može postaviti logički uslov za izvršavanje ponavljanja (naredba
while). Logički uslov naredbe while se proverava pre prvog izvršavanja bloka naredbi i mmora biti istinit
pre početka njenog izvršavanja da se blok naredbi izvrši najmanje jednom.
Naredbe za prekid ponavljanja
U Pythonu definisane su posebne naredbe za prekid ponavljanja. Naredba break i continue omogućavaju
prekid ponavljanja na dva načina. Naredba break terminira petlju, tako da se izvršavanje programa
nastavlja od prve sledeće naredbe. Naredba continue terminira samo tekuću iteraciju petlje u kojoj se
izvršava, tako da program i dalje nastavlja rad u petlji, ali od sledeće iteracije.
Obrada izuzetaka
U svakom programu mogu se pojaviti nepredviđene greške, kao što su npr. greške izvršavanja koje
nastaju zbog pogrešnog unosa podataka. U takvom slučaju, sistem dojavljuje poruku o grešci i terminira
program. Sistemska poruka je tehničke prirode i najčešće je potpuno nerazumljiva krajnjem korisniku.
Zbog toga je razvijen poseban sistem obrade ovakvih greški, koje se pojavljuju u toku izvršavanja
programa i nazivaju se izuzeci (exceptions).
Funkcije u jeziku Python
Korisničke funkcije su imenovane grupe naredbi koje izvršavaju određeni zadatak. Funkcije
omogućavaju:
 višestruku upotrebu dela programskog koda i time skraćenje dužine programa i
 bolju organizaciju koda programa njegovom podelom na manje celine, koje je lakše razumeti
Funkcije mogu ali ne moraju da kao rezultat vrate određenu vrednost. Dekompozicija programskog koda
u manje celine neophodna je prilikom razvoja kvalitetnog softvera, da se obiman programski kod podeli
na manje i razumljivije celine.
Definicija korisničke funkcije
Definicija funkcije sastoji se od zaglavlja, koje čine naziv funkcije i lista parametara i tela funkcije, koje
čine naredbe grupisane radi izvršenja nekog zadatka. Promenljive u listi parametara koje preuzimaju
aktuelne vrednosti iz poziva funkcije su parametri, a same vrednosti koje se prenose u funkciji prilikom
njene upotrebe su argumenti funkcije. Izvršavanje funkcije završava se poslednjom naredbom ili
naredbom return a rad programa se nastavlja od prve sledeće naredbe iza poziva funkcije. Glavni deo
programa često se odvaja u posebnu funkciju, koja se u praksi obično naziva main().
Upotreba funkcije
Funkcija se poziva prema svom nazivu, uz navođenje liste aktuelnih argumenata. Prilikom svakog
aktiviranja funkcije, koja kao programski kod postoji u jednom primerku, različiti aktuelni parametri
funkcije iz svakog poziva čuvaju se u posebnoj sistemskoj strukturi, tzv. steku poziva (call stack).
Argumenti se koriste obrnutim redom od redosleda uključivanja u strukturu stek.
Argumenti funkcije
Aktuelni argumenti se korisničkoj funkciji mogu prenositi po poziciji tj. redosledu ili prema njihovom
nazivu. Prilikom izvršavanja proceduralnih programa, prenos argumenata funkciji može se vršiti po
vrednosti ili po referenci. Prenos po vrednosti znači da se funkciji prenosi trenutna frednost promenljive
ili rezultata računanja nekog izraza, dok prenos po referenci znači da se funkciji prenosi samo informacija
o njenom položaju. Kada je aktuelni argument promenljiva, prenos po referenci omogućava funkciji da
pristupi promenljivoj i promeni njenu vrednost, dok prenos po vrednosti funkciji prenosi samo kopiju
trenutne vrednosti promenljive, koja je smeštena u sistemski stek poziva. Prenos argumenata u Pythonu
vrši se po vrednosti (pass-by-value).
Varijabilna lista argumenata
Jezik Python pomoću oznake * u listi parametara omogućava prenos dodatnih argumenata u pozivu
funkcije. Dodatni argumenti koriste se samo po poziciji u promenljivoj <dodatni par> koja ima strukturu
tipa fiksne liste, odnosno n-torke. Ako nema dodatnih argumenata, vrednost ove promenljive je prazna
n-torka.
Prostor imena i oblast važenja promenljivih
Prostor imena (namespace) je preslikavanje između naziva objekata i samih objekata, npr. promenljivih i
funkcija. U jeziku Python postoje ugrađeni (built-in), globalni i lokalni objekti. Dostupnost ili oblast
definisanosti (scope) promenljive predstavlja deo programa u kome je promenljiva definisana i može se
koristiti. Lokalne promenljive nastaju i dostupne su samo u okviru funkcije u kojoj se koriste. Nakon
završetka rada funkcije, lokalne promenljive više nisu dostupne. Globalne promenljive, definisane u
glavnom programu, imaju globalnu dostupnost i mogu se koristiti iz svake funkcije. Globalnu
dostuppnost imaju i ugrađeni (built-in) objekti.
Anonimne funkcije
Anonimna ili lambda funkcija je funkcija koja nema naziv, jer se definiše i koristi samo u određenom
kontekstu. Funkcija kao rezultat vraća evaluacije izraza. Anonimne fukcije imaju ograničenu,
funkcionalnu formu, tako da ne mogu da sadrže naredbe grananja ni ponavljanja, osim uslovnih izraza.

You might also like