Pomnilnik in spremenljivke

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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?

False (B)

Kaj imenujemo čas med ustvaritvijo in brisanjem spremenljivke?

življenjska doba

Pri statični dodelitvi se spremenljivki dodeli prostor pred pričetkom ______ programa.

<p>izvajanja</p> Signup and view all the answers

Poveži naslednje načine dodelitve pomnilnika z njihovimi značilnostmi:

<p>Statična dodelitev = Prostor se dodeli pred izvajanjem programa in ostane nespremenjen do konca izvajanja. Avtomatična dodelitev = Prostor se dodeli na skladu in programer nima vpliva na življenjsko dobo spremenljivke. Dinamična dodelitev = Prostor se dodeli na kopici, programer pa ima vpliv na življenjsko dobo spremenljivke.</p> Signup and view all the answers

Kaj je glavna slabost statične dodelitve pomnilnika?

<p>Ne omogoča rekurzije in spremenljivka zaseda prostor, čeprav je lahko nedosegljiva. (C)</p> Signup and view all the answers

Ali ima programer vpliv na življenjsko dobo spremenljivk pri avtomatični dodelitvi?

<p>False (B)</p> Signup and view all the answers

Kje se dodeli prostor spremenljivkam pri dinamični dodelitvi?

<p>kopica</p> Signup and view all the answers

Lokalna spremenljivka je deklarirana ______ bloka.

<p>znotraj</p> Signup and view all the answers

Poveži naslednje tipe spremenljivk z njihovim dosegom:

<p>Lokalna spremenljivka = Dosegljiva samo znotraj bloka, kjer je deklarirana. Globalna spremenljivka = Dosegljiva v najbolj zunanjem bloku programa. Spremenljivka kopice = Dosegljiva s kazalcem in živi, dokler nanjo kaže vsaj en kazalec.</p> Signup and view all the answers

Kaj je značilno za spremenljivko kopice?

<p>Lahko jo ustvarimo in zbrišemo v kateremkoli trenutku z izrazom/ukazom. (A)</p> Signup and view all the answers

Ali je spremenljivka kopice ustvarjena s predpisano deklaracijo?

<p>False (B)</p> Signup and view all the answers

S čim dostopamo do neimenovane ali anonimne spremenljivke kopice?

<p>kazalec</p> Signup and view all the answers

Operacija, ki vrne kazalec na novo ustvarjeno spremenljivko kopice, se imenuje ______.

<p>dodelilnik</p> Signup and view all the answers

Poveži naslednje koncepte z njihovimi definicijami:

<p>Obviseli naslov = Kazalec na spremenljivko, ki ne živi več. Implicitno brisanje = Samodejno upravljanje pomnilnika, kot je zbiranje smeti. Eksplicitno brisanje = Ročno sproščanje pomnilnika, ki ga je zasedala spremenljivka.</p> Signup and view all the answers

Kaj je potencialna težava pri eksplicitnem brisanju spremenljivk kopice?

<p>Brisanje spremenljivke, na katero še kažejo drugi kazalci (dangling reference). (B)</p> Signup and view all the answers

Ali so lokalne spremenljivke trajne spremenljivke?

<p>False (B)</p> Signup and view all the answers

Katero lastnost ima trajna spremenljivka?

<p>daljša življenjska doba od izvajanja programa</p> Signup and view all the answers

Ukaz je programska fraza, ki jo izvršimo z namenom, da ______ spremenljivke.

<p>ažuriramo</p> Signup and view all the answers

Poveži naslednje vrste ukazov z njihovimi opisi:

<p>Preskok = Ukaz, ki nima učinka na ažuriranje spremenljivk. Prireditev = Ukaz, ki priredi vrednost izraza spremenljivki. Pogojni ukaz = Ukaz, ki izbere in izvrši samo enega od podukazov glede na logični izraz.</p> Signup and view all the answers

Kaj pomeni pravilo 'najprej leva stran' pri prireditvenem ukazu?

<p>Najprej se izračuna referenca spremenljivke na levi strani. (B)</p> Signup and view all the answers

Ali pri hkratni prireditvi najprej izračunamo vse reference na spremenljivke in nato vse izraze?

<p>True (A)</p> Signup and view all the answers

Kaj se zgodi, če v pogojnem ukazu ni izpolnjen noben pogoj?

<p>izvede se else veja/ukaz</p> Signup and view all the answers

Pri izbirnem ukazu, če ne uporabimo break v C++ ali Java, se izvajanje prenese na ukaz ______.

<p>naslednji</p> Signup and view all the answers

Poveži OOP koncepte z alternativami izbirnim ukazom:

<p>Polimorfizem = Omogoča različno izvajanje iste metode glede na tip objekta. Polja Lookup = Uporaba slovarjev ali tabel za preslikavo vrednosti na funkcije. Pattern matching = Primerjanje vrednosti s predlogami za izbiro ustreznega izvajanja.</p> Signup and view all the answers

Kateri od naslednjih jezikov nima switch-case stavka?

<p>Python (B)</p> Signup and view all the answers

Ali lahko izbirni ukazi veljajo za 'čisto implementacijo' z vidika OOP?

<p>False (B)</p> Signup and view all the answers

Kaj vsebuje iterativni ukaz ali zanka?

<p>telo zanke in test zaključka zanke</p> Signup and view all the answers

V določnih iteracijah uporabljamo ______ spremenljivko.

<p>krmilno</p> Signup and view all the answers

Poveži naslednje koncepte z iterativnimi ukazi:

<p>Določne iteracije = Število ponovitev telesa zanke je vnaprej določeno. Nedoločne iteracije = Število ponovitev telesa zanke ni vnaprej določeno. Iterator = Omogoča prehod čez elemente zbirke podatkov.</p> Signup and view all the answers

Kaj je stranski učinek pri ovrednotenju izraza?

<p>Ažuriranje spremenljivke poleg izračuna vrednosti izraza. (C)</p> Signup and view all the answers

Ali ovrednotenje izraza v izraznem jeziku ne prinaša stranskega učinka na spremenljivke?

<p>False (B)</p> Signup and view all the answers

Naštej en primer izraznega jezika.

<p>Rust/Scala</p> Signup and view all the answers

Obviseli naslov se pojavi, ko kazalec kaže na naslov kjer lokalna spremenljivka ______.

<p>ne obstaja več</p> Signup and view all the answers

V katerih primerih se uporablja preskok?

<p>Predvsem pri pogojnih ukazih. (C)</p> Signup and view all the answers

Kateri ukaz uporabljamo za dodelitev izvajalnega prostora spremenljivki v C++?

<p>new (A)</p> Signup and view all the answers

Kateri ukaz uporabljamo za sprostitev spomina, ki ga zaseda dinamično dodeljena spremenljivka v C++?

<p>delete (C)</p> Signup and view all the answers

V Pythonu se lahko uporablja večkratna prireditev.

<p>True (A)</p> Signup and view all the answers

Flashcards

Kaj je spremenljivka?

Entiteta, ki vsebuje vrednost, ki jo lahko primerjamo, spreminjamo ali brišemo.

Kaj je pomnilnik?

Zaporedje lokacij ali celic, kjer se hranijo podatki.

V kakšnem stanju je lahko celica v pomnilniku?

Dodeljena ali alocirana.

Kaj je vsebina celice?

Trenutna vsebina dodeljene celice, ki je lahko shranljiva vrednost ali nedefinirana.

Signup and view all the flashcards

Kateri so atributi spremenljivke?

Ime, tip, naslov celice in vrednost.

Signup and view all the flashcards

Kaj je sestavljen tip?

Vrednost sestavljenega tipa sestoji iz komponent, ki jih lahko selektivno obravnavamo.

Signup and view all the flashcards

Kakšna je struktura spremenljivke tipa T?

Spremenljivka tipa T je definirana z isto strukturo kot vrednost tipa T.

Signup and view all the flashcards

Kako spreminjamo sestavljene tipe?

Razlikujemo med popolnim in selektivnim ažuriranjem vrednosti sestavljenega tipa.

Signup and view all the flashcards

Kaj je statično polje?

Polje spremenljivk, kjer se množica indeksov določi v času prevajanja.

Signup and view all the flashcards

Kaj je dinamična alokacija polja?

Polje spremenljivk, pri katerih se množica indeksov določi v času izvajanja.

Signup and view all the flashcards

Kaj so shranljive vrednosti jezika?

Vrednosti, ki so shranjene v eni sami celici in jih ni možno selektivno ažurirati.

Signup and view all the flashcards

Kaj je življenjska doba spremenljivke?

Čas med ustvaritvijo in brisanjem spremenljivke.

Signup and view all the flashcards

Kateri so načini dodelitve pomnilnika?

Načini dodelitve pomnilnika: statična, avtomatična in dinamična dodelitev.

Signup and view all the flashcards

Kaj je globalna spremenljivka?

Globalna spremenljivka je deklarirana v najbolj zunanjem bloku programa.

Signup and view all the flashcards

Kaj je spremenljivka kopice?

Spremenljivka kopice se ustvari z izrazom/ukazom in je dosegljiva s kazalcem.

Signup and view all the flashcards

Kaj je obviseli naslov?

Kazalec na spremenljivko, ki ne obstaja več.

Signup and view all the flashcards

Kaj je ukaz?

Operacija, ki jo izvršimo z namenom, da ažuriramo spremenljivke.

Signup and view all the flashcards

Kaj je prireditev?

Prireditev je ukaz, ki ima obliko V = E, kjer se izraz E priredi spremenljivki V.

Signup and view all the flashcards

Kaj je večkratna prireditev?

V večkratni prireditvi se vrednost izraza E priredi vsem spremenljivkam V1, ..., Vn.

Signup and view all the flashcards

Kaj je hkratna prireditev?

V hkratni prireditvi se vrednosti n izrazov hkratno priredijo n spremenljivkam.

Signup and view all the flashcards

Kaj je pogojni ukaz?

Sestavljen je iz podukazov, od katerih se izbere in izvrši samo eden.

Signup and view all the flashcards

Kaj je izbirni stavek (case ali switch)?

Stavek, ki omogoča izbiro med več možnostmi glede na vrednost.

Signup and view all the flashcards

Kaj je iterativni ukaz (zanka)?

Ukaz (ali zanka), ki se ponavlja, dokler je pogoj izpolnjen.

Signup and view all the flashcards

Kaj je iterator?

Iterator je iterativni ukaz, ki za vsako vrednost iz krmilnega zaporedja enkrat izvrši telo zanke.

Signup and view all the flashcards

Kaj je ovrednotenje izraza (=evaluation)?

Cilj ovrednotenja izraza je, da dobimo vrednost; lahko ima tudi stranski učinek na spremenljivke.

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 je V referenca na spremenljivko in E izraz.
  • Vrednost izraza E se priredi spremenljivki V.
  • Pravilo "najprej leva stran" pomeni, da se najprej izračuna referenca spremenljivke V in nato izraz E.
  • Poznamo večkratno in hkratno prireditev.
  • Večkratna prireditev (multiple assignment) V1 = ... = Vn = E priredi vrednost E 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ši C1 in nato C2.
  • 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 izbere C1 ali C2 glede na vrednost logičnega izraza E.
  • Logičnega "pogoja" ni nujno da ima, izbira se lahko izvede na drug način.
  • Ukaz case ali switch ima obliko case E of L1: C1; ... Ln: Cn end, kjer izraz E vrne rezultat, ki se ujema z enim od literalov Li, nato se izvede Ci.
  • V C++ in Java se izvajanje case prenese na naslednji ukaz Ci+1, razen če se vstavi break.
  • 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 se C1 izvede, nato E preveri, nato se ponavlja C2 in C1, dokler E 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.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser