Podcast
Questions and Answers
Katera od naslednjih trditev najbolj natančno opisuje pomen spremenljivke v računalništvu?
Katera od naslednjih trditev najbolj natančno opisuje pomen spremenljivke v računalništvu?
- Spremenljivka je konstanta, ki ohranja isto vrednost skozi celoten program.
- Spremenljivka je način za shranjevanje naslovov pomnilnika.
- Spremenljivka je funkcija, ki izvaja matematične operacije.
- Spremenljivka je entiteta, ki lahko vsebuje različne vrednosti skozi izvajanje programa. (correct)
Ali je možno selektivno ažurirati shranljive vrednosti jezika?
Ali je možno selektivno ažurirati shranljive vrednosti jezika?
False (B)
Kaj imenujemo čas med ustvaritvijo in brisanjem spremenljivke?
Kaj imenujemo čas med ustvaritvijo in brisanjem spremenljivke?
življenjska doba
Pri statični dodelitvi se spremenljivki dodeli prostor pred pričetkom ______ programa.
Pri statični dodelitvi se spremenljivki dodeli prostor pred pričetkom ______ programa.
Poveži naslednje načine dodelitve pomnilnika z njihovimi značilnostmi:
Poveži naslednje načine dodelitve pomnilnika z njihovimi značilnostmi:
Kaj je glavna slabost statične dodelitve pomnilnika?
Kaj je glavna slabost statične dodelitve pomnilnika?
Ali ima programer vpliv na življenjsko dobo spremenljivk pri avtomatični dodelitvi?
Ali ima programer vpliv na življenjsko dobo spremenljivk pri avtomatični dodelitvi?
Kje se dodeli prostor spremenljivkam pri dinamični dodelitvi?
Kje se dodeli prostor spremenljivkam pri dinamični dodelitvi?
Lokalna spremenljivka je deklarirana ______ bloka.
Lokalna spremenljivka je deklarirana ______ bloka.
Poveži naslednje tipe spremenljivk z njihovim dosegom:
Poveži naslednje tipe spremenljivk z njihovim dosegom:
Kaj je značilno za spremenljivko kopice?
Kaj je značilno za spremenljivko kopice?
Ali je spremenljivka kopice ustvarjena s predpisano deklaracijo?
Ali je spremenljivka kopice ustvarjena s predpisano deklaracijo?
S čim dostopamo do neimenovane ali anonimne spremenljivke kopice?
S čim dostopamo do neimenovane ali anonimne spremenljivke kopice?
Operacija, ki vrne kazalec na novo ustvarjeno spremenljivko kopice, se imenuje ______.
Operacija, ki vrne kazalec na novo ustvarjeno spremenljivko kopice, se imenuje ______.
Poveži naslednje koncepte z njihovimi definicijami:
Poveži naslednje koncepte z njihovimi definicijami:
Kaj je potencialna težava pri eksplicitnem brisanju spremenljivk kopice?
Kaj je potencialna težava pri eksplicitnem brisanju spremenljivk kopice?
Ali so lokalne spremenljivke trajne spremenljivke?
Ali so lokalne spremenljivke trajne spremenljivke?
Katero lastnost ima trajna spremenljivka?
Katero lastnost ima trajna spremenljivka?
Ukaz je programska fraza, ki jo izvršimo z namenom, da ______ spremenljivke.
Ukaz je programska fraza, ki jo izvršimo z namenom, da ______ spremenljivke.
Poveži naslednje vrste ukazov z njihovimi opisi:
Poveži naslednje vrste ukazov z njihovimi opisi:
Kaj pomeni pravilo 'najprej leva stran' pri prireditvenem ukazu?
Kaj pomeni pravilo 'najprej leva stran' pri prireditvenem ukazu?
Ali pri hkratni prireditvi najprej izračunamo vse reference na spremenljivke in nato vse izraze?
Ali pri hkratni prireditvi najprej izračunamo vse reference na spremenljivke in nato vse izraze?
Kaj se zgodi, če v pogojnem ukazu ni izpolnjen noben pogoj?
Kaj se zgodi, če v pogojnem ukazu ni izpolnjen noben pogoj?
Pri izbirnem ukazu, če ne uporabimo break
v C++ ali Java, se izvajanje prenese na ukaz ______.
Pri izbirnem ukazu, če ne uporabimo break
v C++ ali Java, se izvajanje prenese na ukaz ______.
Poveži OOP koncepte z alternativami izbirnim ukazom:
Poveži OOP koncepte z alternativami izbirnim ukazom:
Kateri od naslednjih jezikov nima switch-case
stavka?
Kateri od naslednjih jezikov nima switch-case
stavka?
Ali lahko izbirni ukazi veljajo za 'čisto implementacijo' z vidika OOP?
Ali lahko izbirni ukazi veljajo za 'čisto implementacijo' z vidika OOP?
Kaj vsebuje iterativni ukaz ali zanka?
Kaj vsebuje iterativni ukaz ali zanka?
V določnih iteracijah uporabljamo ______ spremenljivko.
V določnih iteracijah uporabljamo ______ spremenljivko.
Poveži naslednje koncepte z iterativnimi ukazi:
Poveži naslednje koncepte z iterativnimi ukazi:
Kaj je stranski učinek pri ovrednotenju izraza?
Kaj je stranski učinek pri ovrednotenju izraza?
Ali ovrednotenje izraza v izraznem jeziku ne prinaša stranskega učinka na spremenljivke?
Ali ovrednotenje izraza v izraznem jeziku ne prinaša stranskega učinka na spremenljivke?
Naštej en primer izraznega jezika.
Naštej en primer izraznega jezika.
Obviseli naslov se pojavi, ko kazalec kaže na naslov kjer lokalna spremenljivka ______.
Obviseli naslov se pojavi, ko kazalec kaže na naslov kjer lokalna spremenljivka ______.
V katerih primerih se uporablja preskok?
V katerih primerih se uporablja preskok?
Kateri ukaz uporabljamo za dodelitev izvajalnega prostora spremenljivki v C++?
Kateri ukaz uporabljamo za dodelitev izvajalnega prostora spremenljivki v C++?
Kateri ukaz uporabljamo za sprostitev spomina, ki ga zaseda dinamično dodeljena spremenljivka v C++?
Kateri ukaz uporabljamo za sprostitev spomina, ki ga zaseda dinamično dodeljena spremenljivka v C++?
V Pythonu se lahko uporablja večkratna prireditev.
V Pythonu se lahko uporablja večkratna prireditev.
Flashcards
Kaj je spremenljivka?
Kaj je spremenljivka?
Entiteta, ki vsebuje vrednost, ki jo lahko primerjamo, spreminjamo ali brišemo.
Kaj je pomnilnik?
Kaj je pomnilnik?
Zaporedje lokacij ali celic, kjer se hranijo podatki.
V kakšnem stanju je lahko celica v pomnilniku?
V kakšnem stanju je lahko celica v pomnilniku?
Dodeljena ali alocirana.
Kaj je vsebina celice?
Kaj je vsebina celice?
Signup and view all the flashcards
Kateri so atributi spremenljivke?
Kateri so atributi spremenljivke?
Signup and view all the flashcards
Kaj je sestavljen tip?
Kaj je sestavljen tip?
Signup and view all the flashcards
Kakšna je struktura spremenljivke tipa T?
Kakšna je struktura spremenljivke tipa T?
Signup and view all the flashcards
Kako spreminjamo sestavljene tipe?
Kako spreminjamo sestavljene tipe?
Signup and view all the flashcards
Kaj je statično polje?
Kaj je statično polje?
Signup and view all the flashcards
Kaj je dinamična alokacija polja?
Kaj je dinamična alokacija polja?
Signup and view all the flashcards
Kaj so shranljive vrednosti jezika?
Kaj so shranljive vrednosti jezika?
Signup and view all the flashcards
Kaj je življenjska doba spremenljivke?
Kaj je življenjska doba spremenljivke?
Signup and view all the flashcards
Kateri so načini dodelitve pomnilnika?
Kateri so načini dodelitve pomnilnika?
Signup and view all the flashcards
Kaj je globalna spremenljivka?
Kaj je globalna spremenljivka?
Signup and view all the flashcards
Kaj je spremenljivka kopice?
Kaj je spremenljivka kopice?
Signup and view all the flashcards
Kaj je obviseli naslov?
Kaj je obviseli naslov?
Signup and view all the flashcards
Kaj je ukaz?
Kaj je ukaz?
Signup and view all the flashcards
Kaj je prireditev?
Kaj je prireditev?
Signup and view all the flashcards
Kaj je večkratna prireditev?
Kaj je večkratna prireditev?
Signup and view all the flashcards
Kaj je hkratna prireditev?
Kaj je hkratna prireditev?
Signup and view all the flashcards
Kaj je pogojni ukaz?
Kaj je pogojni ukaz?
Signup and view all the flashcards
Kaj je izbirni stavek (case ali switch)?
Kaj je izbirni stavek (case ali switch)?
Signup and view all the flashcards
Kaj je iterativni ukaz (zanka)?
Kaj je iterativni ukaz (zanka)?
Signup and view all the flashcards
Kaj je iterator?
Kaj je iterator?
Signup and view all the flashcards
Kaj je ovrednotenje izraza (=evaluation)?
Kaj je ovrednotenje izraza (=evaluation)?
Signup and view all the flashcards
Study Notes
Pomnilnik in spremenljivke
- Spremenljivka je temeljna entiteta v računalništvu, ki vsebuje vrednost.
- Vrednosti spremenljivk se lahko primerjajo, spreminajo ali brišejo.
- Pomnilnik je zaporedje lokacij ali celic.
- Vsaka celica pomnilnika je v enem od dveh stanj: dodeljena ali nedodeljena.
- Dodeljena celica ima svojo trenutno vsebino, ki je lahko shranljiva vrednost ali nedefinirana.
- Vsaka spremenljivka je določena z imenom, tipom, naslovom in vrednostjo.
Atributi spremenljivke
- Ime, tip, naslov celice (oz. lokacija) in vrednost (vsebina celice) so atributi spremenljivke.
Sestavljeni tipi
- Vrednost sestavljenega tipa je sestavljena iz več komponent, ki jih je mogoče selektivno obravnavati.
- Spremenljivka sestavljenega tipa ima več komponent (spremenljivk), ki se lahko selektivno ažurirajo.
- Spremenljivka zapisa (record) je n-terica spremenljivk komponent.
- Spremenljivka polja (array) preslikuje množico indeksov v množico spremenljivk.
- Spremenljivka osnovnega tipa zaseda eno celico, sestavljeni tipi pa lahko zasedajo več celic.
- Spremenljivka tipa T ima isto strukturo kot vrednost tipa T.
- Vsaka vrednost tipa "Card" je dvojica, ki jo sestavljata vrednosti tipov "CardSuit" in "CardRank".
- Spremenljivka tipa "Card" je sestavljena iz spremenljivk tipov "suit" in "rank".
- Pri spreminjanju vrednosti sestavljenega tipa ločimo popolno ažuriranje ("total updating") in selektivno ažuriranje ("selective updating").
- Selektivno ažuriranje spremeni nekatere celice komponente spremenljivke, ne pa vseh.
- Polje je preslikava iz množice indeksov v množico spremenljivk, in je mogoče obravnavati kot spremenljivko.
- Programski jeziki imajo različne načine, kako in kdaj je definirana množica indeksov.
- Polja se delijo na statična polja, dinamično alocirana polja in dinamična polja.
Vrste polja
- Statično polje ima množico indeksov določeno že ob prevajanju.
- Statičnega polja mejo indeksov se določi z literali ali izrazi.
- Pri dinamični alokaciji polja se množica indeksov določi med izvajanjem, ko se spremenljivka ustvari.
- Dinamično alociranega polja meje indeksov so določene z izrazi, ki se ovrednotijo ob ustvaritvi.
- Dinamičnega polja meje indeksov se lahko spreminjajo, ko se spremenljivki priredi nova vrednost.
Shranljive vrednosti
- Shranljive vrednosti jezika so tiste, ki so shranjene v eni sami celici in jih ni mogoče selektivno ažurirati.
Življenjska doba spremenljivke
- Spremenljivko se lahko ustvari v nekem trenutku in zbriše kasneje, ko ni več potrebna.
- Življenjska doba je čas med ustvaritvijo in brisanjem spremenljivke.
- Spremenljivka zaseda pomnilnik samo v času svoje življenjske dobe.
- Obstajajo trije načini dodelitve pomnilnika, ki določajo življenjsko dobo: statična, avtomatična in dinamična.
Načini dodeljevanja pomnilnika
- Pri statični dodelitvi se prostor dodeli pred izvajanjem in sprosti po koncu programa.
- Življenjska doba takšne spremenljivke je enaka trajanju programa.
- Fortran, Basic in Cobol uporabljajo samo statično dodelitev.
- Statična dodelitev ne omogoča rekurzije.
- Globalne in statične spremenljivke imajo statično dodelitev.
- Pri avtomatični dodelitvi se prostor dodeli na skladu, na življenjsko dobo programer ne more vplivati.
- Lokalne spremenljivke in parametri abstrakcij imajo avtomatično dodelitev.
- Dinamična dodelitev poteka na kopici, programer lahko vpliva na življenjsko dobo spremenljivke.
- Dinamične spremenljivke (kazalci) imajo dinamično dodelitev.
- Lokalna spremenljivka je deklarirana znotraj bloka in se uporablja samo tam.
- Globalna spremenljivka je deklarirana v najbolj zunanjem bloku programa.
Spremenljivke kopice
- Spremenljivka kopice ("heap variable") se lahko ustvari in zbriše kadаr koli.
- Spremenljivka kopice se ustvari z izrazom/ukazom in je anonimna, dostopamo pa do nje s kazalcem.
- Spremenljivke kopice imenujemo tudi dinamične spremenljivke.
- Za ustvarjanje spremenljivke kopice se uporabi dodelilnik (“allocator"), kot je "new" v C++, ki vrne kazalec.
- Spremenljivka kopice ostane dostopna, dokler nanjo kaže vsaj en kazalec.
- Brisanje spremenljivke kopice je nasprotna operacija dodeljevanja, lahko je implicitno (garbage collection, reference counting) ali eksplicitno.
- Slabosti eksplicitnega brisanja so obviseli kazalci ("dangling references"), pozabljanje brisanja (memory leak) in večkratno brisanje.
- Obviseli kazalec kaže na spremenljivko, ki ne obstaja več.
- Obviselost nastane, ko se naslov lokalne spremenljivke priredi spremenljivki kopice z daljšo življenjsko dobo.
- Trajna spremenljivka ima življenjsko dobo daljšo od izvajanja programa.
- Prehodna spremenljivka ima življenjsko dobo omejeno z izvajanjem programa.
- Lokalne spremenljivke in spremenljivke kopice so prehodne.
Ukazi
- Ukaz je programska fraza, ki se izvrši z namenom ažuriranja spremenljivk.
- Ukazi so lahko osnovni ali sestavljeni iz preprostih ukazov.
- Temeljni ukazi so: preskoki, prireditve, klici procedur, zaporedni ukazi, vzporedni ukazi, pogojni ukazi, iterativni ukazi in bločni ukazi.
- Preskok (skip) je najpreprostejši ukaz, ki ne vpliva na spremenljivke.
- Preskoki se uporabljajo pri pogojnih ukazih (npr.
if E then C else skip
). - Primeri preskokov:
goto
,break
,continue
. - Prireditev ima obliko
V = E
, kjer jeV
referenca na spremenljivko inE
izraz. - Vrednost izraza
E
se priredi spremenljivkiV
. - Pravilo "najprej leva stran" pomeni, da se najprej izračuna referenca spremenljivke
V
in nato izrazE
. - Poznamo večkratno in hkratno prireditev.
- Večkratna prireditev (multiple assignment)
V1 = ... = Vn = E
priredi vrednostE
vsem spremenljivkam V1,..., Vn. - Hkratna prireditev (simultaneous assignment)
V1,..., Vn = E1,..., En
izračuna referenco na spremenljivke V1,..., Vn, nato izrazi E1,..., En, in nato priredi spremenljivke. - Klic procedure ima obliko
P(AP1,..., APn)
, kjer so APi dejanski parametri oz. argumenti. - Dejanski parameter je lahko izraz ali spremenljivka (referenca).
- Učinek klica procedure je ažuriranje spremenljivk preko parametrov in/ali globalnih spremenljivk.
- Vrstni red izvajanja ukazov je pomemben za ažuriranje spremenljivk, določen je s krmilnim tokom ("control flow").
- Zaporedni ukaz ("sequential command") ima obliko
C1 ; C2
, kar pomeni, da se najprej izvršiC1
in natoC2
. - Manj običajni so vzporedni ukazi
C1, C2
, kjer vrstni red ni določen. - Računanje je deterministično, če je zaporedje korakov vnaprej znano; sicer je nedeterministično.
- Pri nedeterminističnem izračunu vrstni red izvajanja ukazov vpliva na rezultat.
- Pogojni ukaz ("conditional command") je sestavljen iz podukazov, od katerih se izvede samo eden.
- Osnovna oblika je
if E then C1 else C2
, kjer se izbereC1
aliC2
glede na vrednost logičnega izrazaE
. - Logičnega "pogoja" ni nujno da ima, izbira se lahko izvede na drug način.
- Ukaz
case
aliswitch
ima oblikocase E of L1: C1; ... Ln: Cn end
, kjer izrazE
vrne rezultat, ki se ujema z enim od literalovLi
, nato se izvedeCi
. - V C++ in Java se izvajanje
case
prenese na naslednji ukazCi+1
, razen če se vstavibreak
. - Z vidika OOP izbirni ukazi niso idealni, alternative so polimorfizem, polja lookup in pattern matching.
- Python in Lua nimajo switch-case stavka.
- Iterativni ukaz ("iterative command") ali zanka ("loop") je sestavljena iz telesa zanke in testa zaključka.
- Test zaključka določa, kdaj se ponavljanje zaključi.
- Razlikujemo med nedoločnimi (število ponovitev ni vnaprej določeno;
while
,repeat
) in določnimi iteracijami (število ponovitev je vnaprej določeno;for
). - Splošnejša oblika zanke je
repeat C1 while E do C2
, kjer seC1
izvede, natoE
preveri, nato se ponavljaC2
inC1
, doklerE
ne velja. - Pri določnih iteracijah se uporablja krmilna spremenljivka ("control variable"), ki zavzame vnaprej določene vrednosti (krmilno zaporedje).
- Za vsako vrednost iz krmilnega zaporedja se enkrat izvede telo zanke.
- Uporablja stavek
for V := E1 to E2 do C
. - Krmilno zaporedje lahko vsebuje tudi vrednosti poljubnega tipa.
- Status krmilne spremenljive se razlikuje glede na jezik.
- Vprašanja glede krmilne spremenljivke so: doseg, vrednost po zaključku, vrednost pri skoku iz zanke in ali je dovoljeno prisojanje.
- Krmilnega stavka za for ni nujno da je, tako se uporablja iterator.
- Glavni namen ovrednotenja izraza je izračun vrednosti.
- Ovrednotenje izraza lahko tudi ažurira spremenljivko (stranski učinek, "side effect").
- Izrazni jezik ("expression-oriented language") ne loči med izrazi in ukazi.
- Izrazni jeziki spodbujajo uporabo stranskih učinkov in ne potrebujejo obeh funkcijskih in proceduralnih abstrakcij.
- Primeri so Rust, Scala, Algol-68, ML in C.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.