p2 Flashcards
Na koje dvije skupine smo podijelili programske jezike
Imperativne i funkcionalne
kako se dijele imperaivni programski jezici
na objektno orjentirane i proceduralne
sta je program u sirem smislu
sekvenca stejtmenta zapisanih u formi izjava odn stejtmenta
Koju mogucnost nudi c++ kao jedini od oop jezika
rucnu manipulaciju memorijom
razlika izmedju imperativnih i funkcionalnih programskih jezika
razlika lezi u teorijama na kojima su napisani ti jezici
imperativni na teoriji turing machine, a funkcionalni na land-art teoriji
ooprogramski jezici sadrze IZJAVE koje omogucavaju kreiranje i manipulaciju nad…
IZJAVE nam omogucavaju kreiranje i manipulaciju nad OBJEKTIMA i KLASAMA
sta je objekt
objekt je koncept/kompozicija u oop koji objedinjuje stanja i ponasanja
sta je stanje objekta
stanje objekta podrazumjeva PODATKE O OBJEKTU
sta je ponasanje objekta
to su funkcije koje manipuliraju nad objektom odn njegovim stanjem te ih nazivamo MODULI
kako objekti pomazu rjesavanju nekog problema
izmedju skupine kreiranih objekata dolazi do interakcije usljed koje se dolazi do rjesenja problema
sta su klase
klase predstavljaju specifikacije odnosno kalupe na osnovu kojih se formiraju objekti sa istim osobinama i moze ih se kreirati proizvoljan broj
klasa je kalup za kreiranje objekata
da
obzirom na definiciju klase, kako mozemo shodno tome definisati i objekat
mozemo reci da je objekat instanca klase
kakvu formu izjava ima c++
forma izjava u c++ se organizira kao forma izjava u c programskom jeziku
gdje pocinje a gdje zavrsava stejtment odn izjava
izjava pocinje od pojave slova i zavrsava se ;
koje je prvo gramaticko pravilo u c++
izjava pocinje od pojave slova i zavrsava se ;
sta u kodu naznacava // i sta to znaci
// oznacava pocetak jednolinijskog komentara
odnosno tekst nakon // predstavlja linijski komentar
komentar ne potpada pod gramaticka pravila c++ odn mogu se pisati slobodnim govorom jer kompajler taj tekst (iza //) ne prevodi u masinac
komentari sluze za pojasnjavanje koda ali se generalno ne smatraju dobrom praksom
sta zapravo kompajler radi pri analizi stejtmenta
on pronalazi i prepoznaje vrijednosti i u datom kontekstu odredjuje kojeg je tipa data vrijednost
postoje li tipovi iz c u c++
da. svi tipovi iz c postoje i u c++ i cine PRIMITIVNE TIPOVE
koje tipove poznajemo u c++
char, int, double, niz char, bool
kako se zapisuje int broj u kompajleru
int se zapisuje u 32 bita
pri cemu se koristi komplement dvojke i u obzir se uzima predznak
koja je min i max vr inta
min: -(2^31), a max (2^31)-1
kako se zapisuje double broj u kompajleru
double se zapisuje u 64 bita
koristi se IEEE(754) double precision
mantisa, exp itd maybe ponovi
kako se zapisuje char u kompajleru
char se zapisuje u 8 bita
svakom simbolu engleskog alfabeta je dodjeljena decimalna vrijednost cijom konverzijom u bin brojni sistem dobijemo vrijednost koja odgovara datom simbolu u ASCII tabeli
kao takav obzirom da je jedan karakter u pitanju ogranicava se sa jendostrukim navodnicima ‘ ‘
bool u c++
ovaj tip ima tacno 2 vrijednosti TRUE=1 i FALSE=0
i iako su ima samo 2 vrijednosti koje se npr mogu predstaviti promjenom vr 1 bita, on koristi 8 bita jer su kondenzatori u ramu grupisani u celije po 8 bita na kojima se operira vrijednostima
da li su skupovi u c++ neograniceni
ne, SVI skupovi u c++ su ograniceni
sta je string u c++
U C++ NE POSTOJI STRING postoji samo i iskljucivo NIY KARAKTERA koji se ozacava sa dvostrukim navodnim znacima “ “
da li je gramaticki ispravno ‘alejna’
ne, jer se niz karaktera ogranicava sa dvostrukim navodnicima, a jedan karakter jednostrukim
sta su izrazi
jednostavne operacije (mat, alg, poredjenje)
to su stejtmenti odn izjave koje kada se izvrse daju neku vrijednost
kako se formira izraz
koristenjem operatora, tu ucestvuju i vrijednosti i drugi izrazi (operandi)
kako se vrsi kompozicija jednostavnijih izraza u kompleksne
kompozicija jednostavnijih izraza u kompleksne se vrsi u skladu sa matematickim pravilima npr prioritet i asocijativnost
kakvi mogu biti operatori pri formiranju izraza
unarni, (1 operand) binarni (2 operanda-uzima se jedan lijevo, jedan desno), ternarni
S TIME DA OPERANDI MORAJU BITI ISTI TIP VRIJEDNOSTI
objasni prioritet ()
zagrada ima najvisi prioritet izvrsenja. ond izraz u zagradi se izvrsava prvi. ako postoji vise zagrada prioritet ima najvise ugnijezdena zagrada
asocijativnost sa +
+ je lijevo asocijativan, sto znaci ukoliko imamo npr 3 operanda, po pravilu asocijativnosti sa + mozemo operande sa lijeve strane staviti u zagradu i sa njima sabrati treci
postoje li izjave u c++ koje ne proizvode vrijednosti
da
ako imamo izraz u kom su operandi razlicitog tipa vrijednosti sta ce se desiti
c++ kao i c vrsi promociju tipova u izrazima
da li u izrazima iskljucivo figuriraju decimalne vrijednosti operanada
ne, postoje i alternativni nacini za specifikaciju vrijednosti npr 0x5A
operator cast
unaran operator
vrsi formatiranje jednog tipa vrijednosti u drugi
sitaksa je takva da se u zagradi navede tip, a nakon tog vrijendost koja se transformira npr (double)5
postoje li i kako rade izrazi bez operatora
da
u njima figurira samo vrijednost nekog tipa
procesoru se da ta vrijednost i ta ista vrijednost se vrati nazad
sta je iterpreter
program koji uzima stejtment SAMO JEDAN prevodi ga u masinac i izvrsava se na procesoru nakon cega se dobije vracena vrijednost tog stejtmenta
UZIMA LINIJU PO LINIJU
izvrsava se pritiskom entera
i vraca istu vrijednost nazad ako mu je data bez operacija
koja je razlika izmedju ‘a’ i ‘a’;
‘a’ je vrijednost tipa char
‘a’; je stejtment
! operator
bang
unarni
vrijednost se navodi u sufiksu odn nakon
npr !true==false
Definisi promociju
konverzija vrijednosti iz skupa sa manje informacija u skup sa vise informacija pri cemu NEMA GUBITAKA INFORMACIJA
npr int u double = 32 bita u 64 bita
Definisi demociju
konverzija vrijednosti iz skupa sa vise informacija u skup sa manje informacija pri cemu MOZE DOCI DO GUBITAKA
npr int u char= 32 bita u 8 bita
da li operatiri i izrazi mijenjanju vrijednsti
NE, operatori i izrazi ne mijenjaju vrijednosti oni PROIZVODE nove vrijednosti
ukoliko su vrijednosti u instrukciji razlicitih tipova sta se desava
kompajler IMPLICITNO ubacuje CAST operator kod vrijednosti koja ima tip sa skupom manje informacija u skup sa vise informacija
implicitno se vrsi konverzija
koji operator ima veci prioritet + ili cast
cast
na koji nacin se ostvaruje komunikacija izmedju programa i memorije
putem varijable
sta se moze sacuvati u varijablu
vrijednost koja nastane kao rezultat izraza, pocetna vrijednost…
sta je jedna celija u ramu
8 bita
tam je kontinualna sekvenca memorijskih celija u koje se mogu smjestiti vrijednosti bilo kog tipa
varijabla predstavlja
komunikaciju izmedju programa i memorije
sta je varijabla sama po sebi
IMENOVANI region memorje koji dodjeljuje SISTEM kada se u programu izvrse izjave koje predstavljaju definiciju varijable
sintaksa definicije varijable
tip_var ime_var;
zasto definicija var nije izraz
jer procesor ne vraca nikakvu informaciju vec se samo izdvoji dio memorije za tu var
zasto je potrebno navesti tip var u definiciji i kakvo ime treba biti
tip var je neophodan pri definiciji kako bi se oznacilo koliko memorije ce se koristiti za spremanje vrijednosti te varijable i kakve ce se vrijednosti spremati u nju, a ime treba biti smisaono i vezano za upotrebu var
koji tip izjave je definicija var
definicija var spada u izjave koje nazivamo DEKLARACIJE
izjava odn deklaracija kada se izvrsi ne proizvodi vrijednost vec se proizvodi simbol
nakon definicije var koje su mogucnosti rada sa istom
moze se koristiti za
1. pisanje u region memorije koji kontrolise varijabla i
2. citati iz regiona memorije koji kontrolise varijabla
kako se pise u varijablu odn region memorije koji ona kontrolise
koristi se binarni operator dodjeljivanja =
sa jedne strane imenovani reg mem odn var, a sa druge vrijednost koja se sprema u taj region
ukoliko tip definisane var ne odgovara vrijednosti koja se zapisuje u tu varijablu, sta ce se desiti
kompajler implicitno vrsi cast operaciju i pretvara izraz odn vrijednost sa desne strane operatora dodjeljivanja u tip vrijednosti koji odgovara tipu varijable
kako se cita iz regiona memorije kojim upravlja varijabla
pomocu IZRAZA koji sadrzi ime te varijable
gdje se moze definisati var u c++
moze se definisati bilo gdje u programu ali je dobra praksa da se ista definise sto blize mjestu upotrebe jer zapravo mjesto definicije ima veiki uticaj na odvijanje programa
sta je inicijalizacija
postavljanje pocetne vrijednosti varijable u region memorije koji ona kontrolise
ukoliko ne izvrsimo inicijalizaciju varijable da li to znaci da se u regionu koji ona kontrolise ne nalazi nikakva vrijednost
ne, u regionu koji var kontorlise se nalazi vrijednost i bez inicijalizacije te varijable medjutim mi ne mozemo znadi koja je to vrijednost jer je proizvoljna
na koja tri nacina je moguce izvrsiti inicijalizaciju pri deklaraciji
sa SIMBOLOM = (nije operator vec simbol jer je sastavni dio izraza)
i sa zagradama () i {}
kako je asocijativan operator =
desno asocijativan