p6 Flashcards
sta je cin i sta se tu nalazi
cin je globalna varijabla u koji se smjesta objekat tipa isteram
sta»_space; u cin omogucava
da koristimo rightshift kao operator koji nam omogucava unos sa tastature
objasni rad»_space; i cina
kada se pokrene egzekucijaa programa on ceka unos sa tastature –> tada radi line discipline terminala odnosno linijski editor teksta koji ceka da upisemo tekst u terminal
> > u pozadini poziva funkcionalnost koja to omogucava
editovanje traje dok korisnik ne unese enter i right shift dobije cijelu liniju teksta dok se ne unere enter iskljucujuci /n
sta je carrat
linija koja oznacava poziciju kursora i ona se moze mijenjati strelicama na tastaturi lijevo i desno a nezeljeni teskt je moguce izbrisati backspaceom
to se zove rudamentarno editovanje
sta se desi kada pri egzekuciji programa unesemo tekst i pritisnemo enter
kada se udari enter kompletna linija teksta se unese u jedan dio memorije koji nazivamo buffer (NE IDE DIREKTNO U VARIJABLU) i u njemu se tada nalaze svi uneseni kaarakteri
U PROGRAMU POSTOJI SAMO 1 ULAAZNI BUFFER
sta je parsiranje
pronalazenje i transformacija neceg nizeg stepena uredjenosti u visi stepen urednjenost
ko vrsi parsiranje i kako
parsiranje vrsi»_space; operator tako sto pocinje aalizirati tekst iz buffera. pozicionira se na sami pocetak linije teksta i skrenira buffer do prve pozicije na kojoj se NE naalazi prazno mjesto. kada nadje prvo mjesto koje nije prazno ond na kom se nalazi neki karkter to kopira i nastavlja dalje da konzumira liniju teksta DO praznog mjesta
Odnosno»_space; cita tekst iz buffera i kopira u varijablu uzimajuci u obzir njen tip sve do prvog praznog mjesta ili nevalidnog karaktera
> > ignorise prazna mjesta ako ih je vise, ali cim dodje do prvog obustavlja konzumiranje teksta i parsiranje u var
ukoliko unos teksta sa tastature bude vise rijeci sta ce se desiti
prva rijec nakon parsiranja ce biti smjestena u varijablu a ostatak rijeci biti ce spremljen u ulaznom bufferu pa pri ponovnom ucitavanju teksta u neku drugu var ucitati ce se tekst iz ulaznog buffera odnosno terminl nece traziti unos teksta iako mozda postoji cin
sta right shif konzumira
tekst iz ulaznog buffera ali ne sav tekst vec tekst do prvog nevalidnog karajtera odn praznog mjesta
kako se invalidiraju string i vector
obzirom da sting uzima bilo kakav tekst ukljucujuci i cifre i spec karaktere (jer sve to ima ASCII vrijednot) cin se ne moze invalidirati nekim posebnim karakterom vec samo enterom ili EOF karakterom
dok je kod vektora moguce invalidirati cin sa karakterom koji se razlikuje po tipu od tipa vrijednosti njegovh elemenata!!! odnosno ili prazan karakter ili neko slovo koje bi u kombinaciji sa prethodnim unosom dali nevalidan unos
ako se desi greska pri unosu sta se nalazi u va
ako je unos INVALIDIRAN (npr ako kod vec int pokusavamo unositi sova konstantno) vrijednost u varijabli ce biti proizvoljna
konverzija cin u bollean i sta to znaci
cin iako objekat moze da se konvertuje u tip bool pri cemu ce se konvertovati u true ako je posljednji unos bio validan a u false ako je posljednji unos bio neuspjesan
da li je moguce unositi vrijednosti u vise var odjednom
da cin»_space; x»_space; y
kao i za cout
sta ukoliko je posljednji unos bio neuspjesan
ne moze se vise unositi karakteri putem»_space; te je potrebno vartiti sve bite na interno stanje odn originalne postavke i koristimo
cin.clear()
nakon tog se cin u kodu tretira kao da je zadnji unos bio uspjesan
kako se moze ispitati da li je unos bio uspjesan
if(cin»var)
{
//
//
}
ako je uspjesan unos izvrsice se stejtmenti unutar if bloka
sta se desi sa input bufferom pri terminaciji programa
brise se sve iz njega
sta je ctrl+D
EOF karakter
terminira unos i cin je tada settovan na false
ko procesira uneseni tekst u linijski editor
program NE KOMPAJLER
direktiva za sortiranje
incc algorithm
koji algoritam se koristi za sortiranje odn koja fja i kko
fja sort koja radi za bilo koji kontejner i sortira pomocu prozora nad elementima kontejnera
kojoj je potrebno proslijediti dva parametra gdje pocinje vektor odnosno prozor nad prvim elementom koi se moze odrediti preko fje begin(v); i i drugi parametar je prozor iza zadnjeg elementa koji je izvan kontejnera koji se dobije koristenjem end(v); metode
sortira se od begin do end ukljucujuci begin ali ne i end
[p, k)
sintaksa sort alg i kako se izvrsava nad vectorom v
sort(begin(v), end(v));
pri cemu se prvo pozovu begin i end metode zatim sort
sta predstavlja
uslov ? izraz1 : izraz2;
to je jedan ternarni operator (uzima 3 operanda) koji se koristi za jednostavne usovne izraze i vraca najveci tip info koji figurira u izrazu stoga neovisno koji se izraz vrati mora biti istog tipa ili eventualno mora se moci implicitno kovertovati iz tog u drugi tip
redoslijed izvrasavanja
uslov ? izraz1 : izraz2;
prvo se izvrsi uslov koji vrati neku vrijednost
ta vrijednost se konvertuje u boolean
ako je true izvrsi se izraz 1 i vraca se vrijednost tog izraza, a ako je false ivrsi se izraz 2 i vraca se vrijednost tog izraza
definiranje korisnickih tipova
koristi se typedef postojeci_tip novi_tip
najjedn nacin za napraviti novi tip je oristiti vec postojeci
koristi se novo imr kao sinonim za vec postojeci tip i to ime se dalje moze koristiti u bilo kojoj izjavi na mjestu tipa
referenc
tip& refvae{var};
reference su nova imena za vec postojece varijable samim time MORAJU se inicijalizirati pri definiciji pomocu neke var i tipovi te var i reference na tu var MORAJU biti isti
memorija reference
referenca nema svoj komad memorije vec gleda na isti komad memorije kao i varijabla kojom je inicijalizirana - samim tie-me predstavlja druo ime za tu varijablu stoga bio kakva operacija nad referencom ima direktan utjecaj na varijablu na ciju memorijsku lokaciju referenca pokazuje
ako pomocu neke var inicijaliziramo drugu var koja nije i koja jest referenca koja je razlika
ako nije referenca - alociraj drugu memoriju za datu varijablu i u nju uploaduj vrijednosti iz prve varijable = kao rez imamo 2 var u memoriji koje cuvaju istu vrijednost (tipovi mogu biti razliciti pod uslovom da je moguca implicitna koverzija)
ako jest referenca - mora se inicijalizirati i tipovi moraju biti isti = ez je da se ne stvara nova varijabla vec se postojecoj da drgo ime, pa referenca pokazuje na memorijsku lokaciju i cita ili pise u nju = novo ime za tu var
mozemo li inicijalizirati novu referencu vec postojecom
da i ima isti efekat kao inicijalizacija nove ref na original
sta je fja
imenovani blok koda koji se po potrebi moze pozivati i izvrsavati vise puta
prednost funkcija
bolja organizacija programa jer reducira ponavljanja
olaksava eventualne promjene u kodu
lakse razumjevanje programa
upotreba koda u drugim projektima
sintaksa definicjie fje
povratni_tip ime_fje (lista_parametara) {
//
//
//
return izraz;
}
kompajler kada vidi fju sta radi
prevede i provjerava gramatiku, ukoliko je sintaksicki tacna zapamti ime tog bloka zbog eventualnog poziva fje
kako vrsimo poziv fje i sta to ima za posljedicu
ime_fje (lista_argumenata)
izvrsi se blok fje i vrati se vrijednost koja se sracuna kod return stejtmenta i koja ima tip povratnog tipa fje
sta su parametri
Lok var u bloku fje koje ce biti inicijalizirane prosljedjenim argumentima pri pozivu fje
oni se daju u listi parametara koje je potrebno prethodno specificirati kao i njihpv tip
sta su argumenti
Vrijednosti koje prosljedjujemo pri pozivu fje kojima ce se inicijaliziraati parametir u bloku fje
mora se dati arg za svaki parametar u fji, mora biti jednak broj ali ne mora biti isti tip ukoliko je moguca implicitna konverzija
argument moze biti i izraz, pa ce se pri pozivu prvo izvrsiti izrazi (nije specificirano kojim redoslijedom) pa ce se sa povratnim vrijednostima pozvati fja
povratni tip fje
nakom izvrsenja fje on vraca vrijednost izraza u return sejtmentu konvertovanog u povratni tip fje i po izvrsenju vrijednost tog tipa se vraca na mjesto poziva fje
PARAMETRI koji su bili inicijalizirani u tijelu fje tada nestaju
return stejtment
uzrokije momentalno napustanje bloka fje, a povratna vrijednost koja se dobije izvrsenjem ovog izraza se vraca na mjesto poziva fje ali ima tip specificiran kao povratni tip fje
tada se procesor vraca u blok odakle je fja pozvana
ako je fja void
ne mora imati return stejtment
da li je mogue izostaviti povratni tip fje odnosno koristiti auto
jeste, tada kompajler sam zakljucuje povratni tip na osnovu tipa vrijednosti koji se vrati izvrsenjem return stejtmenta
s tim da ako postoji vise return stejtmenta svi moraju vracati isti tip vrijednosti otherwise ce nastati error
alternativna verzija definicije fje sa klj auto
auto imefje (lista_parametara) -> povtip {
//
//
//
return iraz;
}
povtip ne mora biti specificiran na verzijama c++ poslije verzije c++11