Teleksov teÄaj MO: ZadnjiÄ smo |Nspoznali osnovne tipe podatkov, ki jih uporablja- mo v raÄunalnikih. Omenili smo zapise Boolovih spre- menljivk, celoĹĄtevilske po- datke, realna ĹĄtevila, zapis besedila in polja (eno, dvo in veÄ dimenzionalna). Da- nes si oglejmo ĹĄe sklad, vrsto in seznam. Sklad Ko smo se pogovarjali o naboru instrukcij, smo omenili instrukciji PUSH in POP ter povedali, da ju uporabljamo za obravnava- nje podatkovne strukture SKLAD (angl. STACK). Za obravnavanje sklada po- trebujemo v pomnilniku dovolj prostora, da bomo lahko zapisali vse podatke, ki jih mislimo najveÄ hkrati shraniti na sklad, in pa skla- dovni kazalec (angl. Stack Pointer). Denimo, da smo v po- "mnilniku rezervirali dovolj prostora in definirali skla- dovni kazalec. ShematiÄno bi to predstavili s skico 1. Skladovni kazalec SP za zaÄetnike â OSNOVE RAÄUNALNIĹ TVA | Teleksov teÄaj za zaÄetnike â ZnaÄilno za sklad je, da vsak podatek, ki ga zapiĹĄe- mo v sklad, zapiĹĄemo na vrh sklada, in vsak podatek, ki ga vzamemo s sklada, pre- beremo z vrha sklada. Tako preberemo vedno zadnji podatek, ki je bil zapisan na sklad. Temu principu pravi- jo v angleĹĄÄini LIFO (Last In First Out): zadnji not, prvi ven. Postopek zapisovanja na sklad (operacija PUSH) po- teka po naslednjem pravilu: naslov v skladovnem kazal- Cu poveÄaj za ena in zapiĹĄi podatek na pomnilniĹĄko lo- kacijo, ki jo kaĹže skladovni kazalec. POMNILNIK TEK5 | VRH PODATEK5 | VRH a (ZAÄETEK SKLADA) Teleksov teÄaj za zaÄe... Postopek branja je ravno nasproten: preberi podatek iz pomnilniĹĄke lokacije, ki jo kaĹže skladovni kazalec, in zmanjĹĄaj naslov v skla- dovnem kazalcu za ena. Zanimivo je brisanje po- datkov s sklada. Pri tem ni potrebno v resnici zbrisati podatka, temveÄ le' zmanj- ĹĄati vrednost naslova v skla- dovnem kazalcu za ena. Do podatkov, ki so na naslovih nad trenutno vrednostjo skladovnega kazalca, na- mreÄ nimamo dostopa. Skladovni . kazalec lahko pokaĹže na te naslove ĹĄele takrat, ko zapiĹĄe nanje nove vrednosti z operacijo PUSH (takrat pa zbriĹĄe prejĹĄnjo vsebino). V naslednjem primeru bomo najprej na sklad zapi- sali pet podatkov. Stanje po zapisu je prikazano na na- slednji skici pod (a). Nato bomo prebrali en podatek in stanje bo skicirano pod (b). Nazadnje bomo s skla- da zbrisali zgornji podatek (Äeprav bo podatek ĹĄe ve- dno zapisan v pomnilniku, pa ne bomo mogli veÄ do njega) in to stanje bo zapi- sano. na skici (c). Na koncu bomo ĹĄe zapisali nov poda- tek na sklad (skica d). Ĺ e' enkrat OpiĹĄimo doga- | janja na skladu v naĹĄem pri- ki meru. Najprej zapiĹĄemo na sklad ĹĄtevila 3, 5, 1, 9, 4 (skica a). Preberimo s skla- da podatek (to je 4: sedaj je na skladu le ĹĄe 3, 5, 1, 9), kar je na skici b. ZbriĹĄimo s sklada en podatek (to je 9; sedaj je na skladu le ĹĄe 3, 5, 1), kar je na skici c. Skla- dovni kazalec vedno kaĹže na zadnji vnos, ki je ĹĄe na skladu: ZapiĹĄimo na sklad ĹĄtevilo 7 â skica (d). aĹĄe vpraĹĄanje, strokovnjakov odgovor - VaĹĄe vpr PiĹĄe: Tom Erjavec 9 Da je sklad prazem, ugo- tovimo tako,da preverimo vrednost skladovnega ka- zalca. Äe je vrednost 0 ali. manj kot 0 (Äe sklada nismo zaÄeli na naslovu $, potem zaÄetni naslov), potem je sklad prazen oziroma smo Ĺže zaĹĄli pod dovoljeni obseg sklada. z Äe bi Ĺželeli na. sklad spravljati polja podatkov, , potem bi morali postopek ud) 4 zapisovanja nekoliko spre- meniti. Zgornji primer velja le za podatke, ki gredo v eno pomnilniĹĄko lokacijo. Äe bi hoteli na sklad zapiso- vati denimo besede, dolge do 10 znakov, bi morali vsakiÄ, ko bi zapisovali ozi- roma brali s sklada, narediti na skladovnem za |, torej bi bilo pravilo naslednje: h Pisanje: poveÄaj skladov- ni kazalec za 10 in zapiĹĄi kazalcu . | besedo. Branje: preberi besedo in | zmanjĹĄaj skladovni kazalec | za 10. ; Vrsta Vrsta angl. gucuc) je po- datkovna struktura, pri ka- - | teri podatke vedno vpisuje- mo (dodajamo) na zaÄetku n beremo (odvzemamo) na koncu. Za ta namen potre- bujemo dva kazalca. Tiste- ga, ki kaĹže na zaÄetek vrste, imenujemo SPREDAJ,