3. Tipovi Podataka Flashcards
Tipovi podataka i provera tipova
Tip podataka odredjuju sledeci elementi:
• skup vrednosti koje mogu biti predstavljene
• format registrovanih podataka
• skup operacija koje se nad podatkom mogu izvrsavati
Provera tipova (type checking) podrazumeva da se pre izvrsenja bilo koje operacije vrsi provera da li su operandi koji u njoj ucestvuju odgovarajuceg tipa. • Primer: operacije (+ - / *) mogu da se izvode samo nad operandima numerickog tipa
Zavisno od tog, kada su informacije o tipu promenljivih poznate, programske jezike delimo na dva tipa:
• programske jezike sa statickom tipizacijom
• programske jezike sa dinamickom tipizacijom
Statička i dinamicka tipizacija
Provera tipova (type checking) podrazumeva da se pre izvrsenja bilo koje operacije proveri da li su operandi koji ucestvuju u njoj odgovarajuceg tipa. • Primer: operacije (+ - / *) mogu da se izvrse samo nad operandima koji su numerickog tipa
Zavisno od tog, kada su informacije o tipu promenljivih poznate, programske jezike smo podelili na 2 tipa:
• programske jezike sa statickom tipizacijom
• programske jezike sa dinamickom tipizacijom
• Staticka tipizacija
Tipovi promenljivih su konstantni za sve vreme izvrsenja programa i poznati u toku prevodjenja. Kod njih svaka promenljiva mora biti deklarisana pre njenog koriscenja. Provera tipa se vrsi samo u toku prevodjenja programa. Jezici sa standardnom tipizacijom su C,C++,C#,Java itd..
• Dinamicka tipizacija
Tipovi promenljivih su poznati tek u vreme izvrsenja programa i mogu se menjati u toku izvrsenja. Promenljive se ne deklarisu u programu i provera tipova se vrsi i u toku izvrsenja programa. Jezici sa dinamickom tipizacijom su PHP, Pyhton, JavaScript itd…
C: int a,b; a=10; b=5; b=a+b;
Pyhton: a=10; b=5; b=a+b; a=”Danas”;
Poredjenje:
• Staticka : Provera tipova je efikasnija i sigurnija
• Dinamicka: Provera tipova u toku izvrsenja programa sto ga usporava. Zahteva pamcenje tipova promenljivih u toku izvrsenja sto zauzima veci memorijski prostor, medjutim koriscenje promenljivih je fleksibilnije
Prednost se daje statickoj tipizaciji.
Slaba tipizacija
U slucaju jezika sa slabim tipovima podataka informacija o tipu koristi se i korektna je samo na masinskom nivou. Ovakav koncept podrazumeva sledece mogucnosti:
• Operacija koja se od strane masine prihvati kao korektna na nivou izvornog koda programa moze da bude potpuno nekorektna. char c; c=4;
• Koncept slabih tipova podrazumeva odredjeni automatizam u transformaciji tipova podataka prilikom operacije dodeljivanja izmedju dva razlicita tipa. real x; int y; x=y;
• Koncept slabih tipova nekad omogucava postizanje odredjenih efekata naredbama koje imaju drugu namenu. i=((k shl 12) or 1);
Ocigledno je da koncept slabih tipova dopusta puno slobode kod zapisivanja izraza u naredbama dodeljivanja, medjutim cena te slobode je nejasan program sa skrivenim informacijama, bez mogucnosti kontrole i koriscenja informacije o tipu u fazi kompajliranja programa.
Jaka tipizacija
Koncept jakih tipova podrazumeva nekoliko osnovnih principa:
• Tip podatka odredjuju sledeci elementi: Skup vrednosti, Format registrovanih podataka, Skup operacija koje se mogu izvrsavati nad podacima, Skup funkcija za konverzije
• Sve definicije tipa moraju da budu javne, eksplicitne. Nisu dozvoljene implicitne deifnicije tipova.
• Objektu, kao tip entiteta, se definise samo jedan tip
• Dozvoljeno je dodeljivanje vrednosti samo odgovarajuceg tipa
• Dozvoljene su samo operacije obuhvacene tipom
• Tip je zatvoren u odnosu na skup operacija koje obuhvata. Ove operacije se mogu primenjivati samo nad operandima istog tipa. Mesoviti izrazi nisu dozvoljeni
• Dodeljivanje vrednosti razlicitog tipa i operacije nad razlictim operandima je moguce samo uz javnu upotrebu funkcija za konverziju tipa. Koncept jakih tipova povecava pouzdanost, dokumentarnost i jasnocu programa.
Ekvivalentnost tipova
• Strukturna ekvivalentnost
2 tipa su ekvivalentna ako mogu da predstave isti skup vrednosti
• Eksplicitna (imenovana ekvivalentnost)
2 tipa su ekvivalentna ukoliko su identična