Professional Documents
Culture Documents
Apstrakcije UPJP
Apstrakcije UPJP
i
prevodioci
Milica Vučković
Strukturne apstrakcije
Proceduralne apstrakcije
Apstrakcije podataka
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Bazne apstrakcije
Promenljive
Operacija dodeljivanja
broj1 broj2
Vrednost
45 12
1652 2548
int myVar;
myVar
Identifikator
Adresa
Vrednost
Tip
Životni vek (lifetime)
Doseg (scope)
Konektori
Dužina
Case Sensitive
Ključne i rezervisane reči
Case Sensitive
MaxBroj = maxbroj ?
Identifikatori u C, C++, Java i C# su
case sensitive
int myVar;
0x0010
myVar
Primer:
lokalna promenljiva X deklarisana u dva
različita potprograma
myVar = 40;
l-value r-value
Primer
Aritmetičke operacije
Vreme kompajliranja
pr. Povezivanje promenljive sa tipom
Link time
pr. povezivanje poziva sa funkcijama biblioteka
Load time
pr. povezivanje promenljive sa memoriskom celijom (
C static promenljiva)
Vreme izvršenja
povezivanje dinamičkih promenljivih sa
memorijskom ćelijom
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Koncept povezivanja
Dve vrste povezivanja:
Statičko, ako se povezivanje
dogodilo pre izvršenja i ostaje
nepromenjeno do kraja izvršavanja
programa
Dinamičko, ako se povezivanje
dogodilo u vreme izvršenja ili se
može menjati za vreme izvršenja
programa
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Povezivanje tipa sa promenljivom
int x; C++/Java/C#
Nedostaci:
Visoka cena
• dinamička provera tipa
• za promenljivu koja memoriše vrednosti
različitih tipova zahtevaju se različite veličine
memorije
• vreme intrepretacije
Loša detekcije grešaka tipa
Stack-dinamička
Eksplicitna heap-dinamička
Implicitna heap-dinamička
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Statička promenljiva
Povezivanje promenljive sa memorijskom
ćelijom pre početka izvršenja i ostaje vezana
za istu memorijsku ćeliju do kraja izvršenja
programa
void fun() {
static int x;
int y = 0;
…
}
Prednost:
efikasnost (direktno adresiranje)
Nedostaci:
nefleksibilnost (nije podžana rekurzija)
memorija nije deljiva između promenljivih
program main( ) a( ) b( ) c( )
code segments
activation
record for c()
constants
activation record
for b()
heap
activation
record for a()
stack
Nedostaci:
Neefikasno referenciranje (indirektno
adresiranje)
pointer A
heap-dinamička promenljiva
Koriste se za implementaciju
dinamičkih struktura podataka
liste,
stabla,
grafovi
delete ptr1;
Primer
A A B A null B
Primer
A A
C#
Referentne promenljive, implicitna dealokacija
Pointeri (interoperabilnost sa C i C++ kodom)
p
10
20
q 5
5
15 Class Pravougaonik
25 Pravougaonik constructor
5 Pomeri
metoda
8 ...
...
Primer:
Svi stringovi i nizovi u PERL i JavaScript
Promenljiva se povezuje sa
dosegom:
Statički
Dinamički
Primitivnitipovi
Prosti korisnički definisani tipovi
sign bit
11 bits 52 bits
exponent mantissa
sign bit
Unicode
16- bitni kod (256 različitih znakova)
( Java, C# )