Osnovna Škola "Učitelj Tasa", Niš

Home Школа Преузимања Programiranje i programski jezici Tipovi podataka, promenljive, izrazi, funkcije i potprogrami
Преузимања
Up

Tipovi podataka, promenljive, izrazi, funkcije i potprogrami


Tipovi podataka

Kao što znamo, podaci sa kojima rade računari su primarno numerički i to celobrojni. Osim njih, postoje i racionalni brojevi, tačnije brojevi u pokretnom zarezu. Naravno, u memoriji računara su svi podaci predstavljeni u obliku bitova i grupisani u bajtove.

Različiti programski jezici imaju razlčite tipove podataka. Strogo tipizirani jezici i jezici nižeg nivoa imaju tipove koji su bliži načinu rada računara. Sa druge strane, jezici višeg nivoa su "slobodniji" po pitanju tipova i čak ni ne prave razliku između celih brojeva i brojeva u pokretnom zarezu.

Numerički tipovi

Kao što smo rekli, ovo su osnovni tipovi podataka u programiranju (svi ostali tipovi se na jedan ili drugi način svode na brojeve). Osnovna podela je sledeća:
  • celi brojevi
  • brojevi u pokretnom zarezu

Tekstualni tipovi

Ovo je drugi najvažniji tip podataka u programiranju. Praktično nema tog programa koji ne ispisuje neke tekstualne poruke ili nema potrebu rada sa tekstualnim vrednostima.
Svakako sa jednim jedinim znakom malo šta možemo da uradimo, pa je logično da u programiranju postoji i pravi "tekst". Tekstualni podatak se naziva string (prevedeno bi značilo "niska" ili "niz"), i u "starijim" programskim jezicima se definiše kao "niz znakova" - i to bukvalno.

Logički tip

Podatak logičkog tipa može imati samo jednu od dve moguće vrednosti: true (tačno) i false (netačno). Obično ove vrednosti dobijamo kao rezultate relacionih (upoređivanja) ili logičkih operacija (konjukcija, disjunkcija, negacija).

Promenljive 

Promenljive su jedan od osnovnih programerskih koncepata. Bez njih, naši programi ne bi bili baš korisni.

Primer bez korišćenja promenljivih

Da vidimo kako bi izgledao jednostavan algoritam za računanje hipotenuze na osnovu kateta, bez korišćenja promenljivih.

 

Sve što možemo da uradimo je da bukvalno u jednom koraku saberemo kvadrate brojeva 3 i 4, izračunamo koren zbira (za to nam služi funkcija sqrt) i to odmah ispišemo kao rezultat. Ako bismo pravili ovakve programe, bolje da se manemo ćorava posla i da izračunamo šta nam treba pomoću digitrona.

Vidite, ideja pravljenja programa je da on ne funkcioniše samo za jedan jedini slučaj, već da bude primenljiv za različite vrednosti. Naš program je praktično kao "formula" koja se primenjuje na različitim vrednostima.

Ok, šta je onda promenljiva? Najjednostavnije rečeno, promenljiva predstavlja memorijsku lokaciju koja sadrži neku vrednost. Tokom izvršavanja programa ova vrednost se može menjati, pa odatle i naziv "promenljiva".

Promenljiva je praktično "kutija" u kojoj se nalazi "nešto". Ta "kutija" mora imati ime preko koga onda pristupamo vrednosti te promenljive. Umesto da u programu pišemo:

5 + 13

Pisaćemo:

A + B

Što se tumači kao " saberi vrednost promenljive A i vrednost promenljive B ". Da li su vrednosti ove dve promenljive u trenutku sabiranja zaista 5 i 13? Nije ni bitno. Ovo naše "pravilo" (ili stručno "izraz") funkcioniše za bilo koja dva broja.

Promnljive imaju dve veoma značajne uloge u programiranju:

  • u promenljive se smeštaju ulazni parametri - npr. početne vrednosti sa kojima radi naš program
  • u promenljivama se drže međurezultati, kao i finalni rezultati rada programa

Kao što im ime kaže, promenljive tokom izvršavanja programa mogu menjati vrednost. Zavisno od programskog jezika, takođe mogu (ili ne mogu) menjati i tip vrednosti.

Primer sa promenljivama

Pogledajte sada kako izgleda algoritam za računanje hipotenuze. Dodali smo još dva koraka, pa možda izgleda složenije, ali verujte da je ovakav program mnogo bolji.

 

Vidite, ovde računar prvo traži od korisnika da unese dva broja koji se "ubacuju" u promenljive a i b. Onda se na osnovu tih promenljivih računa vrednost hipotenuze koja se ubacuje u promenljivu c. Na kraju se ispisuje vrednost promenljive c.

Ovakav program će korisniku izračunati dužinu hipotenuze za bilo koje dve katete, a ne samo ako su njihove dužine 3 i 4.

Nazivi promenljivih

Svaki programski jezik ima određena pravila za zadavanje imena promenljivih. Neka opšta pravila, sa kojima (gotovo) sigurno nećemo pogrešiti su:

  • naziv promenljive se sastoji iz slova engleske abecede i cifara
  • naziv mora počinjati slovom

Neki programski jezici (u stvari većina) dozvoljavaju korišćenje "donje crte" u nazivu (_) promenljive.

Isto tako, programski jezici kao što su Pascal i Basic ne razlikuju velika i mala slova u nazivima. Za njih su "prom", "Prom" i "PROM" jedno te isto. Sa druge strane, jezici koji "potiču" iz C-a (C++, C#, Java, JavaScript, PHP...) razlikuju velika i mala slova, pa kod njih moramo biti dodatno oprezni da ne pogrešimo u kucanju.

Što naši programi budu veći i složeniji, promenljivama ćemo češće davati imena koja nešto "znače". Ovo nam jako pomaže kada tražimo greške u programu, ili prosto pokušavamo da razumemo sopstveni program od pre dva meseca. To znači da je mnogo bolje ime za promenljivu visinaObjekta nego prosto v.

Oblast važenja

Oblast važenja je prilično važna tema kada se govori o promenljivama. Suštinski, promenljive mogu imati ali i nemati vrednost ("važe" ili ne "važe") u celom programu.

Najčešće se oblast važenja vezuje za potprograme. Konkretno, postoje globalne promenljive koje važe uvek i svuda, ali i lokalne koje važe samo u određenom delu programa - funkciji ili proceduri.

Izrazi u programiranju

Izraz je u programiranju bilo koja ispravna kombinacija operanda povezanih operatorima. Različiti programski jezici posmatraju izraze na drugačiji način, a ovde ćemo vam dati neka osnovna objašnjenja.

Osnovni elementi iz kojih se sastoje izrazi su operandi i operatori. Operandi su vrednosti, dok operatori predstavljaju operacije koje se vrše.
5 + 2
U navedenom primeru, "literali" 5 i 2 predstavljaju operande, a znak operacije + je operator.

Izraz može biti sve - počev od jednog jedinog operanda, pa do bilo koje ispravne  kombinacije.

x // izraz od jednog operanda
x + sin(y) - 15 // izraz sa pozivom funkcije
+ / a 9 // neispravan izraz

Operandi

Operandi su nosioci vrednosti, tačnije podaci koji učestvuju u izrazu. Operand predstavlja objekat nad kojim se vrši operacija. Umesto suvoparnih definicija, da vidimo šta može biti operand:
  • literal - konstantna, bukvalna vrednost
  • konstanta - veoma slično literalu, samo što se umesto bukvalne vrednosti navodi njeno ime
  • promenljiva - memorijaska lokacija koja sadrži neku vrednost

Operatori

Operatori su prosto operacije koje se vrše u izrazu. Svaki programski jezik ima svoj skup operatora.

Operatori su najčešće simboli, poput +, -, *, /, &, =... Ali isto tako mogu biti i ključne reči kao div, mod, new...

Vrste operatora

Operatore najpre delimo prema tipu operacije, odnosno "šta rade" sa operandima. Tako imamo nekoliko značajnih grupa operatora...
  • Aritmetički - ovo su matematičke operacije poput sabiranja, oduzimanja, množenja... Operandi su numerički i rezultat operacije bude numerička vrednost.
  • Relacioni - upoređivanja vrednosti (manje, veće, jednako...). Operandi koji se upoređuju bi trebali da budu istih tipova (ili bar uporedivih), a rezultat je logičkog tipa.
  • Logički - ovi operatori predstavljaju logičke operacije (AND, OR, NOT) i služe za kreiranje kompleksnijih logičkih izraza.
Operatore koje ćemo koristiti pri radu u programu flowgorithm možete pogledati na stranici http://www.flowgorithm.org/documentation/operators.htm

Prioritet operatora

Kao što znamo iz matematike, neke operacije imaju prednost nad drugima. Npr. prvo se obavljaju operacije množenja i deljenja, a tek onda sabiranja i oduzimanja.

Prioritet operatora se uvek definiše u programskom jeziku, tako da se uvek tačno zna koje operacije se izvršavaju pre, a koje posle.

Naravno, ako se neki delovi izraza grupišu unutar zagrada, oni će imati veći prioritet nad ostatkom izraza. Sledeća dva izraza imaju drugačiju vrednost, upravo zahvaljujući promeni prioriteta izvršavanja operacija.

5 + x * 2
(5 + x) * 2

Pozivi funkcija

U izrazima, pored operatora i operanda, mogu učestvovati i pozivi funkcija, koji se onda sa ostalim operandima povezuju operatorima.

Ako poziv funkcije posmatrate kao operand, nećete pogrešiti. Pošto funkcija (uobičajeno) vraća vrednost, ona je takođe nosilac vrednosti, kao literal ili promenljiva.

Ako već hoćemo da idemo "u sitna crevca", posebno ako posmatramo neke modernije programske jezike, mogli bismo reći da je naziv funkcije operand, dok su zagrade koje se navode posle naziva operator poziva funkcije.

Ovo ima smisla u jezicima poput JavaScripta gde je funkcija istovremeno i objekat, pa tako njen naziv predstavlja referencu.

Ono što je nama bitno je da funkcija u izrazu treba da vrati neku vrednost, koja se onda koristi u izrazu. Funkcija može imati jedan ili više parametara (odvojenih zarezom), a svaki parametar (što u stvari zavisi od izvođenja funkcije) treba da ima vrednost, odnosno može ponovo predstavljati čitav izraz.

5 + sqrt(x+3) * y    // poziv funkcije u izrazu 

Korišćenje funkcija u izrazima

Da se podsetimo - funkcije takođe mogu učestvovati u izrazima. Druga bitna stvar je da funkcije vraćaju vrednost (iako to nije pravilo). Funkcija se uvek poziva tako što se navede naziv funkcije i odmah potom lista parametara u zagradi (parametri se još nazivaju i "argumenti").

funkcija(parametri)
Funkcija može imati jedan ili više parametara koji se onda odvajaju zarezima. Neke funkcije uopšte nemaju parametre, ali i kod njih moraju da se navedu zagrade.

fun(param)  // funkcija sa jednim parametrom
fun(param1, param2, ...)  // funkcija sa više parametara
fun()   // funkcija bez parametara
Programski jezici obično dolaze "napakovani" brojnim bibliotekama funkcija koje programeri mogu koristiti. Zahvaljujući tome, vreme programiranja se jako skraćuje - jednostavno, ne moramo raditi nešto što je neko već napravio.

Parametri (uobičajeno) moraju imati vrednost. Svaki parametar može biti literal, promenljiva, ponovo poziv neke funkcije ili čitav izraz. U najstriktnijem smislu, moramo zadati tačno onoliko parametara koliko se traži i to tako da pazimo da njihove vrednosti budu odgovarajućih tipova. Funkcija vraća samo jednu vrednost.
 
Ugrađene funkcije u programu flowgorithm možete pogledati na stranici http://www.flowgorithm.org/documentation/intrinsic-functions.htm

Potprogrami 

Potprogrami su izdvojeni delovi programa koji se izvršavaju po pozivu. Potprogrami se najčešće kreiraju kao korisničke funkcije.

U programiranju često dolazimo u situaciju da nam se deo programa ponavlja na više različitih mesta. Idealno bi bilo da taj deo programa nekako izdvojimo i samo ga pozivamo kada nam zatreba. Ovaj problem je veoma dobro poznat u programiranju i rešava se korišćenjem potprograma.

Generalno, postoje dve vrste potprograma - procedure i funkcije. Procedure su klasični potprogrami. Kada napravimo proceduru, praktično, kao  da smo dodali novu naredbu našem programskom jeziku. Dakle, procedura se pozove, izvrši se i to je to. Sa druge strane, funkcije rade sve to isto, s tim što još i vraćaju rezultat.
Inače, treba da znamo da programski jezici dolaze sa velikim brojem već pripremljenih ugrađenih funkcija (nekad su "spakovane" u pakete ili biblioteke, nekad dolaze kao metodi objekata), koje programerima olakšavaju život. Ipak, što naš program bude kompleksniji, moraćemo sve više da pravimo sopstvene funkcije. Da bi se naši potprogrami razlikovali od ugrađenih funkcija, nazivamo ih korisničke funkcije.
Već smo pomenuli da potprograme koristimo da u njih smestimo deo programa koji se ponavlja više puta. Tako programiramo brže, naš program postaje "čistiji", a samim tim i lakše ispravljamo greške.
Korišćenjem potprograma se jako olakšava podela posla. Na ovaj način više programera može raditi na istom programu - prosto, svako piše svoje potprograme i tako program postaje modularan. Najbolje od svega je što iste potprograme možemo ponovo koristiti za neke druge programe.

 

Powered by Phoca Download