VIITMUUTUJA. ARVUTI MÄLU PAINDLIK KASUTAMINE
|
|
- Claribel Dickerson
- 6 years ago
- Views:
Transcription
1 VIITMUUTUJA. ARVUTI MÄLU PAINDLIK KASUTAMINE SISSEJUHATUS Selle teema raames tutvustan ma Teile üht omapärast andmeobjekti VIITMUUTUJAT. Selleks, et järgnevast jutust hästi aru saada, tuleb meelda tuletada teises teemas käsitletud jutt MÄLU kohta. Kõik senivaadeldud andmeobjektid on olnud STAATILISED. Staatiline andmeobjekt tuleb programmis kirjeldada: talle peab andma nime ja tüübi. Programmi täitmise ajaks eraldatakse muutuja väärtuse hoidmiseks teatud osa arvuti mälust ja seotakse muutuja sellega mäluaadressi abil. Muutuja tüüp määrab väärtuse esitamiseks vajaliku mäluhulga ning muutujaga teostatavad operatsioonid. Muutujale viitamiseks kasutatakse tema nime. Programmeerijal pole võimalust muuta nime ja mäluaadressi vahelist seost. VIITMUUTUJA OLEMUS Keeltes Pascal ja C on olemas võimalus tekitada andmeobjekte ka alles programmi täitmise käigus dünaamiliselt. DÜNAAMILISE muutuja seostamiseks mäluaadressiga kasutatakse viitmuutujat. VIITMUUTUJA ehk lühemalt öeldes VIIT on andmeobjekt, millesse saab salvestada mingi teise andmeobjekti mäluaadressi. Viitmuutuja kirjeldamisel peab määrama ka selle poolt viidatava andmeobjekti tüübi. Lisaks dünaamilistele muutujatele võib viit viidata ka harilike muutujate peale. Viitmuutuja väärtus võib olla üks kolmest võimalikust: 1) viit on väärtustamata ja väärtus on juhuslik suurus; 2) väärtuseks on omistatud mäluaadress; 3) väärtuseks on omistatud "TÜHI VÄÄRTUS". Vaatame järgnevat tabelit: Aadress Muutujanimi Tüüp Väärtus A Täisarv B Täisarv VA Viit TÜHI 0009 VB Viit Meil on defineeritud kaks täisarvulist muutujat ja kaks viitmuutujat. Esimesele viidale VA on omistatud väärtuseks "TÜHI", mis tähendab, et see viit ei viita mitte millelegi. Harilikult on selliseks "TÜHJAKS" väärtuseks 0, kuid see sõltub konkreetsest keelest. Teisel viitmuutujal VB on väärtuseks 0003, mis on samal ajal ka muutuja B aadressiks. Sellisel juhul võib öelda, et viit VB viitab muutujale B.
2 Kujutame kirjeldatud muutujaid joonisega: A B < VA VB Milleks on meil vaja viidata "tühjusesse" või teisele muutujale? Asi on nimelt selles, et kasutades viita võib viidatava muutujaga teha neid samu operatsioone, mis on lubatud hariliku muutuja korral. Lisaks sellele on samas programmilõigus viida väärtust muutes võimalik opereerida mitmete erinevate muutujatega. Selleks kasutatakse spetsiaalset viitamise operaatorit. Viitmuutujate olemuse selgitamiseks on kasutatav ka järgmine mudel: 1) kogu arvuti mälu on üks suur massiiv nimega M, mille väikseim indeks on 1; 2) viitmuutuja VM on selle massiivi indeksit hoidev muutuja; 3) meid huvitava mälupesa indeksi väärtuse omistame viidale VM; 4) meid huvitava mälupesa ehk massiivi element on seega M[VM]. VIITMUUTUJA KASUTAMINE Vaatame järgnevalt, kuidas saab viitmuutujat kasutada. Selleks teeme läbi sarnased tegevused keeles Pascal ja C. Keeles QBasic viitmuutujat ei ole. Viitmuutuja kasutamine keeles Pascal Kõigepealt tuleb viitmuutuja deklareerida, kusjuures märk '^' koos tüübinimetusega tähistab viitmuutuja tüüpi. Var lp : ^Integer; ^Integer - viit täisarvu peale Kui tegeletakse viitmuutujale mingi väärtuse omistamisega, siis toimitakse sarnaselt hariliku muutujaga, kuid väärtus peab olema aadress. lp := Nil; Nil - Pascali identifikaator TÜHJA väärtuse tähistamiseks Kui soovitakse omistada viitmuutujale mõne olemasoleva muutuja X aadressi, siis on selleks kaks võimalust: või lp := Addr(X); funktsioon Addr tagastab muutuja X aadressi - aadressi määramise operaator Viitmuutuja kasutamise näiteks kirjutame väikese programmi: Program N8_1_P;
3 Type PInt = ^Integer; defineerime viida tüübi Var A, B : Integer; P : PInt; P viit paigaldatakse muutuja A peale Write('Palun sisesta arv : '); Read(A); Writeln('Tore, sain kätte arvu ',P^); arvu saab kätte ka viida abil Write('Palun sisesta teine arv : '); Read(B); if P^ > B then ehk kui A > B P paigaldame viida muutuja B peale Writeln('Nendest arvudest väiksem on ',P^); end. Nagu näitest näha võis, kasutatakse aadressi järgi viitamiseks viitmuutujat, millele järgneb vahetult märk '^'. Selline programm on muidugi teostatav ka lihtsamalt, kuid see demonstreerib viida kasutamise võimalusi. Dünaamiliste muutujate kasutamine on aga ilma viitmuutujata raske kui mitte lausa võimatu. Aga sellest tuleb juttu allpool. Viitmuutuja kasutamine keeles C Viitmuutujate tähistamine keeles C on mõnevõrra segadusttekitav, sest selleks kasutatakse märki '*', mis langeb kokku korrutamise operaatoriga. Seega on oluline jälgida, et ei tekiks kahemõttelisust ja sinna, kus selline oht on olemas, tuleb panna sulud. Viitmuutuja deklareerimine käib järgmiselt: int *lp; /* lp on viit täisarvu peale */ Tühja väärtuse määramine viidale toimub kas arvu 0 või eeldefineeritud konstandi NULL (mis harilikult on pikk täisarv 0 ehk (long int)(0)) omistamisega: lp = NULL; Olemasoleva muutuja X aadressi omistamine viidale toimub operaatori '&' abil: lp = &X; Ja kirjutame eespool esitatud programmi keele C: /* N8_1_C */ #include <stdio.h> main() int A, B, *P; P = &A; /* viit paigaldatakse muutuja A peale */ printf("palun sisesta arv : "); scanf("%d", &A); /* ka sisestamise funktsioon kasutab aadressi! */ printf("tore, sain kätte arvu %d\n", *P); /* kasutame viita */ printf("palun sisesta teine arv : "); scanf("%d", &B); if (*P > B) /* ehk kui A > B */ P = &B; /* paigaldame viida muutuja B peale */ printf("nendest arvudest väiksem on %d\n", *P); return 0; /* lõpp */
4 MÄLU PAINDLIK KASUTAMINE Ei ole harvad sellised ülesanded, mida saab täita mitmes osas ja millest iga osa vajab suurt hulka mälu. Kui lahendada ülesanne staatiliste muutujatega, see tähendab selliste muutujatega, mille jaoks reserveeriti mälu programmi töö alguses ja nad eksisteerivad kuni programmi lõppemiseni, siis võib meil mälust puudus tulla. Üks võimalik lahendusvariant on selline, et vajaminevad muutujad luuakse vahetult enne seda, kui neid kasutama hakatakse ja siis, kui neid enam vaja ei ole, kaotatakse nad ära. Selliseid muutujaid nimetataksegi DÜNAAMILISTEKS MUUTUJATEKS. Mälu hõivamine Dünaamilise muutuja tekitamine algab muutuja jaoks mälu küsimisega. Mälu võib küsida, andes ette konkreetse arvu (baitides) või andmetüübi. Kui küsitud hulk vaba mälu on veel olemas, siis hõivatakse see ja vastav aadress omistatakse viitmuutujale. Mälu hõivamiseks on programmeerimiskeeles spetsiaalsed funktsioonid. Kindlasti eksisteerib konkreetse suurusega mäluala hõivamise funktsioon. Keeles Pascal on selleks protseduur GETMEM, mille deklaratsioon on järgmine: procedure GetMem(var P: Pointer; Suurus: Word); Kasutades seda protseduuri võib hõivata mälu 'Suurus' arv baite ja aadressi omistada viitmuutujale P. Tüüp 'Pointer' on puhas viidatüüp. Keeles C on selleks funktsioon MALLOC, mille deklaratsioon on järgmine: void *malloc( size_t suurus ); Funktsioon tagastab puhta viidatüüpi (void *) väärtuse 'suurus' arv baite sisaldavale mäluosale. Teine liik mälu hõivamise funktsioone on seotud konkreetse andmetüübiga. Keeles Pascal on selleks protseduur New: procedure New(var P: Pointer); See protseduur uurib järele viida P tegeliku tüübi ja eraldab mälu vastavalt tüübi suurusele. Näiteks täisarvu viida tüübi korral eraldatakse mälu ühe täisarvu hoidmiseks. Keeles C "tüübiga" mäluhõivamist ei ole, see on lisatud keele C++ süntaksile. Võib tekkida küsimus, et "mis saab siis, kui vaba mälu ei ole?". Programmi käitumine sellises situatsioonis sõltub keelest ja translaatori versioonist. Pascali puhul võib ette tulla nii väärtuse 'Nil' tagastamist kui ka veateadet. Keeles C on üldiselt tavaks tagastada tühi väärtus, mida saab sellisel juhul kontrollida ja valida vastav käitumine. Mälu vabastamine Kui dünaamilised muutujad on oma töö teinud, siis on ilus nad ära kaotada ja vabastada nende jaoks hõivatud mälu. Selle jaoks on olemas vastavad protseduurid. Keeles Pascal on nendeks:
5 procedure FreeMem(var P: Pointer; Suurus: Word); procedure Dispose(var P: Pointer ); FreeMem vabastab GetMem'iga hõivatud mälu, kusjuures arv 'Suurus' peab olema sama, ja Dispose vabastab protseduuriga New hõivatud mälu. Keeles C on mälu vabastamiseks funktsioon FREE: void free(void *viit); Vaatame siinkohal samasisulisi näiteprogramme nii Pascalis kui ka C s, kus toimub mälu hõivamine ja vabastamine. Ü l e s a n n e: Sisestada üks rida teksti ja leida reas olevate tühikute arv. Program N8_2_P; Var S : ^String; viitmuutuja i, n : Integer; Writeln('Palun sisesta üks rida teksti:'); GetMem(S, 81); küsime 81 baiti mälu Readln(S^); kasutades viita loeme sellesse mällu sisestatava rea n := 0; n on tühikute loendur, algväärtuseks on 0 For i := 1 to Length(S^) do vaatame kõiki märke reas If S^[i] = ' ' then ja kui märk on tühik n := n + 1; siis suurendame loendurit ühe võrra FreeMem(S, 81); vabastame eelnevalt hõivatud 81 baiti mälu Writeln('Selles reas on ', n, ' tühikut.'); end. /* N8_2_C */ #include <stdio.h> #include <malloc.h> #include <string.h> main() char *S; /* viitmuutuja */ unsigned i, n; /* märgita täisarvud */ printf("palun sisesta üks rida teksti:\n"); S = malloc(81); /* küsime 81 baiti mälu */ if(s == NULL) /* kontrollime, kas mälu saime */ printf("nii palju vaba mälu ei ole!\n"); else /* kui saime mälu, siis */ gets(s); /* sisestame ühe rea teksti */ n = 0; for(i=0; i<strlen(s); i++) /* loeme kokku tühikud */ if(s[i] == ' ') n++; free(s); /* vabastame mälu ja teatame tulemuse */ printf("selles reas on %d tühikut\n", n); return 0; Kes tahab, võib proovida funktsiooni scanf() rea sisestamiseks. Saate kogemuse võrra rikkamaks.
6 TÜÜPILISED KOMISTUSKIVID Ka kõige kogenenumad programmeerijad teevad eksimusi (see on ju inimlik) ja suur osa nendest eksimustest langeb dünaamiliste muutujate kasutamise alale. Püüaks siinkohal üles loetleda tüüpilised komistuskivid, et Te teaksite nende eest hoiduda. 1. Hõivatud mälu ei vabastata. Seda juhtub mitmesugusel viisil: vabastatakse vähem kui hõivati; peale mälu hõivamist ja viidaga seostamist kasutatakse viita teisel otstarbel enne, kui mälu vabastatakse (üldiselt läheb see mittevabastamise kategooria alla); mälu vabastamine jääb üldse ära. Sellise vea tunnuseks on vaba mälu pidev vähenemine, kuni see lõpuks otsa saab. Paljudel juhtudel lõpeb see vastava veateatega. Muide, on täheldatud, et mõningaid laiatarbeprogramme ei saa mitu korda järjest välja kutsuda, sest iga kasutamisega läheb jupp mälu kaduma ja varsti on vaja arvuti algkäivitada. 2. Viitamisel püütakse kasutada väärtustamata või 'tühja' väärtusega viitmuutujat. Sõltub keskkonnast, kuid tulemuseks võib olla veateade "General protection fault" või midagi muud sellesarnast. Selline viga on tüüpiline programmidele, kus ei kontrollita mälu hõivamise õnnestumist. 3. Ei jälgita hõivatud mälu piire ja minnakse "üle ääre". Selline võimalus on viitade kasutamise korral täiesti olemas ja võib põhjustada väga raskesti leitavaid vigu, kuna vea põhjus asub ühes ja tagajärg hoopis teises kohas ning tagajärjed on väga erinevad. 4. Püütakse vabastada mälu, mis on juba vabastatud. See on küll veider viga, aga siiski tuleb seda ette. Tihtipeale on põhjuseks see, et pärast mälu vabastamist ei omistata viidale 'tühja' väärtust ja mingil hilisemal hetkel püütakse vabastamise protseduuri läbi viia sellepärast, et viit ei oma 'tühja' väärtust. DÜNAAMILISED ANDMESTRUKTUURID Eespool toodud näiteprogrammid olid rohkem viitmuutuja ja mäluga opereerimise olemuse selgitamiseks. Selliste lihtsate ülesannete jaoks dünaamilisi muutujaid harilikult ei kasutata. Tegelik vajadus tekib siis, kui hakata kasutama dünaamilisi andmestruktuure. Mis need on? Toome ühe elulise näite. Oletame, et eksisteerib järjekord arsti juurde ja meil on vaja opereerida selle järjekorra andmetega. Iga inimese andmed moodustavad selles järjekorras ühe ühiku. Inimese seisukohast vaadatuna toimub järjekorras olemine niimoodi, et inimene tuleb vastuvõturuumi ja nähes seal teisi inimesi, esitab küsimuse "Kes on viimane?". Seejärel jätab talle vastanud inimese näo meelde ja on valmis järgmisele küsimuse esitajale vastama, et tema ongi viimane selles järjekorras. Pärast seda, kui tema järele tuleb vähemalt üks inimene, jälgib ta ainult seda, millal tema ees olev isik vastu võetakse. Kui see juhtub, siis ta teab, et on nüüd järjekorras esimene. Kui arsti ukse vahelt hõigatakse "Järgmine!", siis on tema kord sisse minna. Kui järjekorda pidada arvuti abil, siis tuleb inimese saabudes küsida tema nimi ja arsti juurde kutsumine toimub nime järgi. Või teine võimalus, igale saabunule antakse number ja sisse
7 kutsutakse numbrite järgi (mis ei pea tingimata olema järjestikulised). Ahel ja järjekord Põhilised probleemid sellise ülesande jaoks programmi kirjutamisel on seotud sellega, et järjekord võib teoreetiliselt olla lõpmatult pikk ja igasugune massiiv võib täis saada. On olemas muidugi füüsiline piir arvuti vaba mälu näol, millest ei saa kuidagi üle ega ümber, kuid olemasoleva mälu optimaalne ärakasutamine on siiski võimalik. Selleks on vaja kasutada andmestruktuuri, mida nimetatakse AHELAKS. Lisades andmestruktuurile mõned tegevused, saab formeerida ühe ahela erikuju JÄRJEKORRA. Mida saab järjekorraga teha? Millised on need tegevused, mis teevad lihtsast ahelast järjekorra? Need tegevused on järjekorda lisamine ja järjekorrast väljavõtmine, kusjuures lisatakse alati järjekorra lõppu ning välja võetakse järjekorra algusest. Teeme mõned joonised: <--- 1 <--- 2 < See on esialgne järjekord. Iga LÜLI selles ahelas "teab", millise lüli järel ta on. Ainult esimene lüli ei ole ühegi teise järel. Lisame sellele järjekorrale ühe lüli juurde (olukord: saabus uus inimene): <--- 1 <--- 2 <--- 3 < Uus lüli lisati järjekorra lõppu. Võtame nüüd järjekorrast ühe lüli välja (olukord: inimene kutsuti arsti juurde): <--- 2 <--- 3 < Selleks, et leida kiiresti järjekorra esimene või viimane lüli, tuleb andmestruktuuril nende asukohad meeles pidada ning iga tegevuse juures tuleb neid kasutada ja vastavalt muuta <--- 2 <--- 3 < ^ ^ esimene viimane Eksisteerib veel üks eriline olukord, mida peab spetsiaalselt käsitlema. See on olek, kus järjekorras ei ole ühtegi inimest järjekord on tühi. Järgnevalt esitan ma programmi, mis aitab pidada järjekorda numbrite abil. Program N8_3_P; Type PLyli = ^Lyli; Järjekorra lüli viidatüüp Lyli = record Kirje järjekorra lüli info hoidmiseks Number : LongInt; Järjenumber Eelmine : PLyli; Viit eelmisele lülile Jarjekord = record Kirje järjekorra info hoidmiseks
8 Esimene : PLyli; Viit järjekorras esimesele Viimane : PLyli; Viit järjekorras viimasele Var JK : Jarjekord; V : Char; LV : PLyli; Viit lülile N : LongInt; JK.Esimene := Nil; Alguses ei ole järjekorras ühtegi lüli JK.Viimane := Nil; Writeln('Alustame järjekorra pidamist'); Repeat Write('Järgmine tegevus [L-Lisada, V-Välja vôtta, Q-Lôpetada]: '); Readln(V); Loeme sisse tegevuse valiku V := UpCase(V); Muudame sisseloetud tähe suureks täheks Case V Of 'L' : Kui oli valitud lisamine New(LV); teeme uue lüli tüüpi dünaamilise muutuja Write('LISAMINE. Palun järgmine number : '); Readln(LV^.Number); loeme sisse uue lüli numbri, LV^.Eelmine := JK.Viimane; "näitame" seni viimast lüli JK.Viimane := LV; ja paneme ta järjekorda viimaseks If JK.Esimene = Nil Then Juhul, kui järjekorras esimest JK.Esimene := LV; ei ole, paneme ta ka esimeseks 'V' : Kui oli valitud väljavõtmine If JK.Esimene <> Nil Then ja kui järjekorras on lülisid, siis ütleme esimese lüli numbri Writeln('VÄLJAVôTMINE. Number on ', JK.Esimene^.Number); If JK.Esimene = JK.Viimane Then Kui esimene on ühtlasi viimane LV := JK.Viimane; siis jätame selle meelde ja JK.Esimene := Nil; kuulutame järjekorra tühjaks JK.Viimane := Nil; end Else Kui aga järjekorras on veel lülisid, siis otsime üles järjekorras teise LV := JK.Viimane; liikudes viimase suunast While LV^.Eelmine <> JK.Esimene Do LV := LV^.Eelmine; ettepoole. JK.Esimene := LV; Paneme teise esimeseks ja LV := LV^.Eelmine; jätame esimese meelde. JK.Esimene^.Eelmine := Nil; Esimesel ei ole eelmist! Dispose(LV); Meeldejäetud lüli vabastame end ja saame mälu tagasi. Else Writeln('VÄLJAVôTMINE. Järjekord on tühi.'); 'Q' : Kui on valitud lõpetamine, siis LV := JK.Viimane; If JK.Esimene <> Nil Then kontrollime, kas järjekord on tühi ja kui ei ole, siis N := 0; While LV <> Nil Do loeme lülid kokku N := N + 1; LV := LV^.Eelmine;
9 ja küsime lõpetamise kinnitust. Write('LôPETAMINE.'); Writeln(' Järjekorda on jäänud veel ',N,' inimest.'); Write('Kas tahad tôesti lôpetada [J/E]? '); Readln(V); V := UpCase(V); If V = 'J' Then Kui kinnitati lõpetamist, siis V := 'Q'; lõpetamise tunnus püsti. If V = 'Q' Then Kui lõpetamine ja LV := JK.Viimane; While LV <> JK.Esimene Do järjekorras on veel lülisid, JK.Viimane := LV^.Eelmine; Dispose(LV); siis tuleb ka need vabastada. LV := JK.Viimane; Dispose(LV); See viimane ka! end Until V = 'Q'; Writeln('Lôpetame järjekorra pidamise'); end. Sama programm keeles C : /* P r o g r a m m i a l g u s */ #include <stdio.h> #include <malloc.h> #include <ctype.h> struct lyli /* kirje järjekorra lüli info hoidmiseks */ int number; /* järjenumber */ struct lyli *eelmine; /* viit eelmisele lülile */ ; struct jarjekord /* kirje järjekorra info hoidmiseks */ struct lyli *esimene; /* viit järjekorras esimesele */ struct lyli *viimane; /* viit järjekorras viimasele */ ; int main() struct jarjekord jk; jk.esimene = NULL; /* alguses ei ole järjekorras ühtegi lüli */ jk.viimane = NULL; int n; struct lyli *lv; /* viit lülile */ printf("alustame järjekorra pidamist\n"); char v; do printf("järgmine tegevus [L-Lisada, V-Välja võtta, Q-Lõpetada]: "); scanf("%s", &v); /* loeme sisse tegevuse valiku */ v = toupper(v); /* muudame sisseloetud tähe suureks täheks */ if (v == 'L') /* kui on valitud lisamine */ lv = (lyli*)malloc(sizeof(struct lyli)); /* teeme uue lüli tüüpi dünaamilise muutuja */ printf("lisamine. Palun järgmine number : "); scanf("%d", &lv->number); /* loeme sisse uue lüli, */ lv->eelmine = jk.viimane; /* "näitame" seni viimast lüli */ jk.viimane = lv; /* ja paneme ta järjekorda viimaseks */
10 */ if (jk.esimene == NULL) /* juhul kui järjekorras esimest ei ole, */ jk.esimene = lv; /* siis paneme ta esimeseks */ else if (v == 'V') /* kui on valitud väljavõtmine */ if (jk.esimene!= NULL) /* ja kui järjekorras on lülisid, */ /* siis ütleme esimese lüli numbri */ printf("väljavõtmine. Number on %d\n", jk.esimene->number); if (jk.esimene == jk.viimane) /* Kui esimene on ühtlasi viimane, */ lv = jk.viimane; /* siis jätame selle meelde */ jk.esimene = NULL; /* kuulutame järjekorra tühjaks */ jk.viimane = NULL; else /* Kui aga järjekorras on veel lülisid, siis /* otsime üles järjekorras teise */ lv = jk.viimane; /* liikudes viimase suunast */ while (lv->eelmine!= jk.esimene) lv = lv->eelmine; /* ettepoole */ jk.esimene = lv; /* paneme teise esimeseks ja */ lv = lv->eelmine; /* jätame esimese meelde */ jk.esimene->eelmine = NULL; /* esimesel ei ole eelmist */ free(lv); /* meeldejäetud lüli vabastame ja saame mälu tagasi */ else printf("väljavõtmine. Järjekord on tühi.\n"); else if (v == 'Q') /* Kui on valitud lõpetamine, siis */ lv = jk.viimane; if (jk.esimene!= NULL) /* kontrollime, kas järjekord on tühi */ /* ja kui ei ole, siis */ n = 0; while (lv!= NULL) /* loeme lülid kokku */ n++; /* suurendame n ühe võrra */ lv = lv->eelmine; printf("lõpetamine."); /* küsime lõpetamisele kinnituse */ printf(" Järjekorda on jäänud veel %d inimest.\n", n); printf("kas tõesti tahad lõpetada [J/E]? "); scanf("%s", &v); v = toupper(v); if (v == 'J') v = 'Q'; if (v == 'Q') /* Kui lõpetamine ja */ lv = jk.viimane; while (lv!= jk.esimene) /* järjekorras on veel lülisid */ jk.viimane = lv->eelmine; free(lv); /* siis tuleb ka need vabastada */ lv = jk.viimane; free(lv); /* see viimane ka */ while (v!= 'Q'); printf("lõpetame järjekorra pidamise");
11 return 0; /* P r o g r a m m i l õ p p */ Pinumälu ehk magasinmälu Teine AHELA eriliik on PINUMÄLU, mida nimetatakse ka MAGASINIKS. See tuleneb sarnasusest automaadi magasiniga. Kes pole magasini näinud, siis selgituseks kõlbab ka selline mündihoidja, millel on vedru all ja kuhu saab münte pealtpoolt sisse panna ja samuti välja võtta. Sellisel "mündimagasinil" ja automaadimagasinil on üks ühine omadus selle mündi või padruni, mis sinna esimesena sisse pandi, saadakse kätte kõige viimasena ja vastupidi. Viimane ese jääb kõige peale ja saadakse esimesena kätte. See on magasini põhimõte. Pinumälu kui andmestruktuur on kasutusel väga mitmete ülesannete lahendamisel. Lihtsaimaks ülesandeks, mille jaoks võib kirjutada programmi, on andmejada ümberpööramise ülesanne. Oletame, et sisestatakse järjest uusi andmeid ning arv 0 tähistab andmejada lõppu. Seejärel on vaja väljastada kõik sisestatu vastupidises järjekorras. Jada liikmete arv ei ole ette teada. /* N8_4_C */ #include <stdio.h> #include <malloc.h> #include <string.h> struct Lyli char *Liige; struct Lyli *Jargmine; ; main() struct Lyli *Pinu, *LV; char S[80]; Pinu = NULL; printf("jada liikmeteks võivad olla suvalised tekstiread.\n"); printf("lõpu tunnuseks on 0.\n\n"); printf("alustan jada sisestamist\n"); do printf(">"); gets(s); /* loeme sisse jada liikme */ if (strcmp(s, "0")) /* kontrollime, ega see pole lõpp */ LV = malloc(sizeof(struct Lyli)); /* võtame lüli jaoks mälu */ if (LV!= NULL) /* kui saime, siis */ /* küsime ka liikme jaoks mälu */ LV->Liige = malloc(strlen(s)+1); if (LV->Liige!= NULL) strcpy(lv->liige, S); /* salvestame liikme info */ LV->Jargmine = Pinu; /* ja paneme lüli kõige "pealmiseks" */ Pinu = LV; else /* kui liikme info jaoks mälu ei jätkunud */ free(lv); /* siis vabastame ka lüli */ LV = NULL;
12 while (strcmp(s, "0") && LV!= NULL); if (LV == NULL) printf("mälu sai otsa.\n"); printf("alustan väljastamist\n"); LV = Pinu; while (LV!= NULL) printf("%s\n", LV->Liige); /* väljastame liikme info, */ Pinu = LV->Jargmine; /* võtame järgmise pealmiseks */ free(lv->liige); /* ja vabastame juba väljastatud lüli */ free(lv); LV = Pinu; printf("see on kõik!\n"); return 0; Selles näites on kasutatud kaheetapilist mäluvõtmist kõigepealt pinumälu lülile ja siis jadaliikme infole. Järgmine joonis annab sellisest struktuurist hea ülevaate: Pinu V > 3 ---> 2 ---> 1 ---> V V V V Info Info Info Info Ja nüüd sama programm keeles Pascal : P r o g r a m m i a l g u s Program N8_4_P; type PLyli = ^Lyli; Lyli = record Liige : ^string; Jargmine : PLyli; var Pinu, LV : PLyli; S : string[80]; Pinu := nil; Writeln('Jada liikmeteks võivad olla suvalised tekstiread.'); Writeln('Lõpu tunnuseks on 0.');writeln; Writeln('Alustan jada sisestamist'); Repeat Write('>');Readln(s); loeme sisse jada liikme If S <> '0' then kontrollime, ega see pole lõpp New(LV); võtame lüli jaoks mälu if LV <> nil then kui saime, siis küsime ka liikme jaoks mälu GetMem(LV^.Liige, length(s)); If LV^.Liige <> nil then LV^.Liige^ := S; salvestame liikme info
13 pealmiseks jätkunud LV^.Jargmine := Pinu; ja paneme lüli kõige Pinu := LV; end else kui liikme info jaoks mälu ei Dispose(LV); siis vabastame ka lüli LV := nil; Until (S = '0') or (LV = nil); If LV = nil then Writeln('Mälu sai otsa!'); Writeln('Alustan väljastamist'); LV := Pinu; While LV <> nil do Writeln(LV^.Liige^); väljastame liikme info, Pinu := LV^.Jargmine; võtame järgmise pealmiseks FreeMem(LV^.Liige, length(lv^.liige^)); ja vabastame juba väljastatud lüli Dispose(LV); LV := Pinu; Writeln('See on kõik.'); end. P r o g r a m m i l õ p p Selle peatüki materjalide peale on "Kodutöö nr. 8"
Puudub protseduur. Protseduuri nimi võib olla valesti kirjutatud. Protseduuri (või funktsiooni) poole pöördumisel on vähem argumente kui vaja.
Puudub protseduur. Protseduuri nimi võib olla valesti kirjutatud. Sub prog1() Msgox "Tere" Sub prog2() a = si(1) Protseduuri (või funktsiooni) poole pöördumisel on vähem argumente kui vaja. a = Sin() Protseduuri
More informationAndmebaasid (6EAP) I praktikum
Andmebaasid (6EAP) I praktikum Mõisteid Server on arvutisüsteem või selles töötav tarkvara, mis pakub teatud infoteenust sellega ühenduvatele klientidele. Klient on tarkvara, mis võimaldab suhelda serveriga.
More informationTabelid <TABLE> Koostanud: Merike Hein
Tabelid Tabelite kasutusvõimalus on HTML'is olemas juba pikka aega. Tabelimärgendite esmaseks kasutusalaks oli muidugi mõista tabelkujul info kuvamine. tähendab siis tabelite joonistamist.
More informationMSDE Upgrade platvormile SQL 2005 Server Express SP4
MSDE Upgrade platvormile SQL 2005 Server Express SP4 NB! Windos XP puhul peab veenduma, et masinas oleks paigaldatud.net Framework vähemalt versioon 2.0!!! NB! Muutke oma SA parool turvaliseks ( minimaalne
More informationWD My Net N600 juhend:
WD My Net N600 juhend: 1) Kui WD My Net N600 seade on ühendatud näiteks Elioni Thomsoni ruuteriga (TG789vn või TG784) või Elioni Inteno DG301a ruuteriga, kus üldiselt on ruuteri Default Gateway sama, nagu
More informationSQL Server 2005 Expressi paigaldamine
SQL Server 2005 Expressi paigaldamine Laadige alla.net Framework 2.0 http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d- 8edd-aab15c5e04f5 Avage http://www.microsoft.com/express/2005/sql/download/default.aspx
More informationInformatsiooni andmeelementide omavaheliste seoste kohta saab, kui vastata järgmistele küsimustele:
Andmestruktuurid Programmid töötlevad andmeid. Neid hoitakse programmi töö jooksul mälus. Andmed pole amorfne arvude ja stringide hulk, vaid neil on omavahel väga olulised struktuursed seosed, mis võivad
More informationTP-Link TL-WR743ND Juhend
TP-Link TL-WR743ND Juhend 1) Ühenda oma arvuti TP-Link ruuteriga üle kaabli (LAN). 2) Kui arvuti ja ruuter said omavahel ühendatud, siis võid minna seadme koduleheküljele (interneti brauseri otsingu reasse
More informationTsüklidirektiivid. Klass Math. Staatilised meetodid. Massiivid. Koostada programm, mis leiab positiivsete paarisarvude summat vahemikus 1 kuni 20.
Harjutustund 3 Tsüklidirektiivid. Klass Math. Staatilised meetodid. Massiivid. Tsüklidirektiivid Vaadake teooriat eelmisest praktikumist. Ülesanne 1 Koostada programm, mis leiab esimeste 20 arvude summat
More informationMälu interfeisid Arvutikomponendid Ergo Nõmmiste
Mälu interfeisid Arvutikomponendid Ergo Nõmmiste Mälu liigid Read-only memory (ROM) Flash memory (EEPROM) Static random access memory (SRAM) Dynamic random access memoty (DRAM) 1 kbaidine mälu vajab 10
More informationXmlHttpRequest asemel võib olla vajalik objekt XDomainRequest
1 2 3 XmlHttpRequest asemel võib olla vajalik objekt XDomainRequest 4 5 6 7 8 https://www.trustwave.com/global-security-report http://redmondmag.com/articles/2012/03/12/user-password-not-sophisticated.aspx
More informationMis on tõene? Tsüklid, failihaldus. if - näited. unless - näited. unless. Merle Sibola. if ($arv > $suur) { #leitakse suurim arv $suur=$arv; } #if
Mis on tõene? Tsüklid, failihaldus Merle Sibola iga string on tõene, välja arvatud "" ja "0" iga number on tõene, v.a. number 0 Iga viide (reference) on tõene Iga defineerimata muutuja on väär. if if (EXPR)
More informationDigitaalne signaal Diskreetimine ja Dirac Delta Digitaalfiltrid. Digitaalne heli. Hendrik Nigul. Mathematics of Sound and Music.
Mathematics of Sound and Music Aprill 2007 Outline 1 Digitaalne signaal 2 3 z-teisendus Mis on heli? Digitaalne signaal Heli on elastses keskkonnas lainena leviv mehaaniline võnkumine. amplituud heli tugevus
More informationAndmebaasi krüpteerimine ja dekrüpteerimine
Andmebaasi krüpteerimine ja dekrüpteerimine Me võime küll asetanud kõikidele andmebaasi objektidele ligipääsuõigused eri kasutajate jaoks, kuid ikkagi võib mõni häkker avada vastava faili lihtsalt failina
More informationKirje. Kirje. Tüpiseeritud fail. CASE-lause. Laiendatud klahvikoodid. 1
Kirje. Tüpiseeritud fail. CASE-lause. Laiendatud klahvikoodid. 1 Kirje Kirje (record) on struktuurne andmetüüp (nagu massiiv) erinevat tüüpi andmete gruppeerimiseks. Kirje koosneb väljadest (field). Iga
More informationM. Kusmin, Programmeerimine II Teema 6 1
M Kusmin, Programmeerimine II Teema 6 1 Teema 6 Dünaamiline mälukasutus Väga sageli pole programmi kirjutamise ajal täpselt teada, kui suuri puhvreid või muid "mälust haaratavaid tükke" programmi töö ajal
More informationLõimed. Lõime mõiste. Lõimede mudelid. Probleemid lõimedega seoses. Pthreads. Solarise lõimed. Windowsi lõimed. FreeBSD lõimed.
Lõimed Lõime mõiste Lõimede mudelid Probleemid lõimedega seoses Pthreads Solarise lõimed Windowsi lõimed FreeBSD lõimed Linuxi lõimed MEELIS ROOS 1 Ühe- ja mitmelõimelised protsessid code data files code
More informationRobot iehit amise j uhend Mikrokont rolleri programmeerimine C keeles Põhiline C keelest
Robot iehit amise j uhend Mikrokont rolleri programmeerimine C keeles Põhiline C keelest Autorid: Alar Ainla Alvo Aabloo Tartu Ülikool Juhendi koostamist on toetanud EITSA SISUKORD SISUKORD 2 SISSEJUHATUS
More informationMilleks tüübid? Mida teeb järgmine programmijupp? x 1 := "Pii siinus on : "; x 2 := ; printx 2 ; print(sin(x 1 ));
Milleks tüübid? Mida teeb järgmine programmijupp? x 1 := "Pii siinus on : "; x 2 := 3.1415926;... printx 2 ; print(sin(x 1 )); Ei tea (loodetavasti siiski mitte midagi väga hullu :-) VARMO VENE 1 Milleks
More information3 ALGORITMI KEERUKUS JA PÕHILISED ANDMESTRUKTUURID
3 ALGORITMI KEERUKUS JA PÕHILISED ANDMESTRUKTUURID Arvutiprogrammid lahendavad mitmesuguseid ülesandeid arvutuste, andmetöötluse ja automaatsete otsuste tegemise alal. Selleks on programmil vaja sooritada
More informationEESTI STANDARD EVS-ISO 11620:2010
EESTI STANDARD EVS-ISO INFORMATSIOON JA DOKUMENTATSIOON Raamatukogu tulemusindikaatorid Information and documentation Library performance indicators (ISO 11620:2008) EVS-ISO EESTI STANDARDI EESSÕNA NATIONAL
More informationTallinna Ülikooli veebipuhvri teenuse kasutamine väljaspool ülikooli arvutivõrku
Tallinna Ülikooli veebipuhvri teenuse kasutamine väljaspool ülikooli arvutivõrku Selleks, et kasutada Tallinna Ülikooli veebipuhvrit väljaspool ülikooli arvutivõrku, tuleb luua ühendus serveriga lin2.tlu.ee
More informationVea haldus ja logiraamat hajutatud süsteemides Enn Õunapuu.
Vea haldus ja logiraamat hajutatud süsteemides Enn Õunapuu enn.ounapuu@ttu.ee Millest tuleb jutt? Kuidas ma näen, millises sammus erinevad protsessid parasjagu on? Kuidas ma aru saan, kas protsess töötab
More informationEESTI STANDARD EVS-ISO/IEC 27003:2011
EESTI STANDARD EVS-ISO/IEC 27003:2011 INFOTEHNOLOOGIA Turbemeetodid Infoturbe halduse süsteemi teostusjuhis Information technology Security techniques Information security management system Implementation
More informationAegridade analüüs Praktikum nr. 1, 2016, SAS tarkvara kasutamisest
Aegridade analüüs Praktikum nr. 1, 2016, SAS tarkvara kasutamisest Andmete lugemine SAS keskkonda. Protseduur sobiva skripti kirjutamiseks on järgmine: 1. Anname andmestikule nime ja alustame sisselugemise
More informationESIMENE OSA - ALGAJATELE
ESIMENE OSA - ALGAJATELE Esimene osa on jõukohane neile, kel on olemas programmeerimise alusteadmised. Täiendava materjalina võib kasutada oma programmeerimiskeele dokumentatsiooni. 1 PROGRAMMIDE SISEMAAILM
More informationProgrammeerimise 2. vaheeksam
Programmeerimise 2. vaheeksam 5. jaanuar 2015, kell 10:00 13:00 1. Fraktal (3p) yl1.py Kõrvaloleval pildil on fraktali 1., 2., 3. ja 4. taseme näidised. Kirjuta rekursiivne funktsioon, mis võtab argumendiks
More informationPuuduvate andmetega toimetulemine SQL-andmebaasides
Sisukord Puuduvate andmetega toimetulemine SQL-andmebaasides 1. Sissejuhatus...1 2. Vastandlikud seisukohad...2 3. NULLide lubamine baastabelis...3 4. Puuduvate andmete esitamine...4 4.1 IS NULL predikaat...6
More informationAndroidi rakenduste ligipääsu õigused
Tallinna Ülikool Digitehnoloogiate Instituut Androidi rakenduste ligipääsu õigused Seminaritöö Autor: Martin Kütt Juhendaja: Jaagup Kippar Autor:...... 2017 Juhendaja:...... 2017 Instituudi direktor:......
More informationObjektorienteeritud programmeerimine. 5. märts, 4. loeng Marina Lepp
Objektorienteeritud programmeerimine 5. märts, 4. loeng Marina Lepp 1 Loeng Möödunud nädalal Klassid. Isendid. Konstruktorid. Sõned. Mähisklassid Praktikum Objektid ja klassid. Muutujate skoobid. Objektide
More informationProgrammeerimine. 2. loeng
Programmeerimine 2. loeng Tana loengus Nimed ja muutujad Baastuubid Litaraalkonstandid Omistamine Aritmeetilised avaldised Funktsioonide rakendamine Standardteegid Muutujad Imperatiivses programmeerimises
More informationSQL Serveri paigaldus. Laadimine:
SQL Serveri paigaldus Laadimine: http://msdn.microsoft.com/vstudio/express/sql/download/ Tasub paigaldada kõige lihtsam versioon (SQL Server 2005 Express Edition SP2). Samalt lehelt saab laadida ka Sql
More informationNAS, IP-SAN, CAS. Loeng 4
NAS, IP-SAN, CAS Loeng 4 Tunniteemad Network Attached Storage IP Storage Attached Network Content Addressed Storage Network Attached Storage Tehnoloogia, kus andmed on jagatud üle võrgu Salvestusvahendile
More informationLühike kokkuvõte Pascal-keele süntaksist 1
Lühike kokkuvõte Pascal-keele süntaksist 1 Sellest osast leiab järgmised mõisted ja teemad Keeltest, kompileerimisest ja Pascali ajaloost identifikaator, programmi struktuur, lihtandmetüübid, konstant,
More informationFUNKTSIONAALNE PROGRAMMEERIMINE. Animatsioonid
Animatsioon on liikuv, ehk ajast sõltuv, graafika Liikumise illusioon saavutatakse sellega, et teatud ajavahemike järel (optimaalseks peetakse 30 freimi sekundis) joonistatakse erineva pildiga uus freim
More informationTurvaline laohaldussüsteem programmeerituna keeles PHP
TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Informaatika eriala Kristjan Robam Turvaline laohaldussüsteem programmeerituna keeles PHP Bakalaureusetöö (6 EAP) Juhendaja: Helle
More informationObjektorienteeritud programmeerimine MTAT (6 EAP) 9. Loeng. H e l le H e i n h e l l e. h ee
Objektorienteeritud programmeerimine MTAT.03.130 (6 EAP) 9. Loeng H e l le H e i n h e l l e. h ein@ut. ee Täna loengus: Erindid Erindite töötlemine Võtmesõnad try, catch, throw, throws, finally, assert
More informationPHP koodimisstandard PSR
Tallinna Ülikool Informaatika Instituut PHP koodimisstandard PSR Seminaritöö Autor : Manuel Vulp Juhendaja : Jaagup Kippar Tallinn 2014 Sisukord Sissejuhatus... 4 1 Mis on koodimisstandard?... 5 2 Miks
More informationObjekt-orienteeritud programmeerimine MTAT (6 EAP) 5. Loeng. H e l l e H e i n h e l l e. h e i e e
Objekt-orienteeritud programmeerimine MTAT.03.130 (6 EAP) 5. Loeng H e l l e H e i n h e l l e. h e i n @ut. e e Täna loengus: Abstraktsed klassid Liidesed Mähisklassid 2 Abstraktsed klassid Meetodit nimetatakse
More informationSissejuhatus Funktsionaalne programmeerimisparadigma
Sissejuhatus Funktsionaalne programmeerimisparadigma Paradigma järgi liigitub funktsionaalne (ingl functional) programmeerimine koos loogilise (ingl logic) programmeerimisega deklaratiivse programmeerimise
More informationABIMATERJAL ROBOOTIKA TÖÖVIHIKULE Algoritmid ja programmeerimine
Raivo Sell, Mikk Leini ABIMATERJAL ROBOOTIKA TÖÖVIHIKULE Algoritmid ja programmeerimine Robootika Kodulabori baasil Kujundus ja küljendus: Raivo Sell Arvutigraafika: Raivo Sell Keeletoimetus: Airi Veber
More informationLühike paigaldusjuhend TK-V201S TK-V401S 1.01
Lühike paigaldusjuhend TK-V201S TK-V401S 1.01 Sisukord Eesti 1 1. Enne alustamist 1 2. Riistvara paigaldamine 2 Technical Specifications 8 Tõrkeotsing 9 Version 05.12.2010 1. Enne alustamist Eesti Pakendi
More informationAndmebaasid kursuse andmemudel
Veebiteenused SyBase SQL Anywhere koostanud Sander Sepp SQL Anywhere on andmebaasi juhtsüsteem, mis sisaldab HTTP veebiserveri funktsionaalsust. Veebiserver võimaldab andmebaasi luua veebiteenuseid. Veebiteenused
More informationObjektorienteeritud programmeerimine
Objektorienteeritud programmeerimine 2. loeng 19. veebruar 2018 Marina Lepp 1 Möödunud nädalal Loeng Sissejuhatus Praktikum Paaristöö, algus Vastlapäev Sõbrapäev Hiina uusaasta 2 Umbes mitu tundi tegelesite
More informationGoogle Earth API juhendmaterjali koostamine
Tallinna Ülikool Informaatika Instituut Google Earth API juhendmaterjali koostamine Seminaritöö Autor: Ronald Kaul Juhendaja: Jaagup Kippar Tallinn 2011 Sisukord Sisukord... 2 Sissejuhatus... 3 1 Juhend
More informationGTK+ raamistiku kasutamine Pythonis PyGl mooduli vahendusel
Tallinna Ülikool Digitehnoloogiate instituut GTK+ raamistiku kasutamine Pythonis PyGl mooduli vahendusel Seminaritöö Autor: Sander Peerna Juhendaja: Inga Petuhhov Tallinn 2016 Autorideklaratsioon Deklareerin,
More informationPädevushaldus RESTful veebiteenuste abil
Tallinna Ülikool Informaatika Instituut Pädevushaldus RESTful veebiteenuste abil Seminaritöö Autor: Eigen Lenk Juhendaja: Mart Laanpere Tallinn 2010 Sisukord Sissejuhatus... 3 1. Muutused veebitarkvara
More informationMTAT OPERATSIOONISÜSTEEMID praktikumid. Kersti Taurus
MTAT.03.008 OPERATSIOONISÜSTEEMID praktikumid Kersti Taurus Mida tehakse praktikumides? Paigaldatakse operatsioonisüsteemid: Windows 7 Professional 64 bit eestikeelne ver. opensuse Linux 11.2 Edasi ülesanded
More informationEstEID Turvakiibi rakenduse kasutusjuhend
EstEID Turvakiibi rakenduse kasutusjuhend Dokumendi versioon: 01.11.2003 1 Sisukord Sisukord... 2 1 Kellele on dokument suunatud... 3 2 Kasutatud lühendid... 3 3 Kaardi äratundmine... 3 4 T=0 või T=1?...
More informationTTÜ informaatikainstituut. Algoritmimine
TTÜ informaatikainstituut Algoritmimine Algoritm on täpne ja ühemõtteline eeskiri antud liiki ülesannete lahendamiseks või tegevuste täitmiseks kindla eesmärgi saavutamisel. Algoritm määrab, milliseid
More informationErik Jõgi. twitter.com/erikjogi twitter.com/codeborne
Disain Erik Jõgi erik@codeborne.com twitter.com/erikjogi twitter.com/codeborne Disain? Miks? Bad code Clean Code A Handbook of Agile Software Craftsmanship Robert C. Martin, 2008 Uncle Bob You know you
More informationMaking Orthophotomosaic about Tartu City with PHOTOMOD Program and Its Geometrical Quality
Making Orthophotomosaic about Tartu City with PHOTOMOD Program and Its Geometrical Quality Natalja LIBA and Ina JÄRVE, Estonia Key words: orthophotomosaic, aerial triangulation, block of imagery, orientation,
More informationCSS i laiendusvõimalused läbi Sass i ning selle kasutamine veebirakenduste loomisel
Tallinna Ülikool Informaatika Instituut CSS i laiendusvõimalused läbi Sass i ning selle kasutamine veebirakenduste loomisel Seminaritöö Autor: Martin Koidu Juhendaja: Jaagup Kippar Tallinn 2012 Autorideklaratsioon
More informationSIDE (IRT 3930) Põhipunktid. Loeng 11 Transpordiprotokollid Teema - infotransport. Teenuse (lingi) demultipleks. Infotransport kliendilt serverini
SIDE (IRT 3930) Loeng 11 Transpordiprotokollid Teema - infotransport Klient- mudel Teenuste jaotus Infotransport klient- seoses Töökindel infoülekanne võrgukihi kaudu ja transpordiprotokollid Põhipunktid
More informationCOBOL Common Business-Oriented Language
COBOL Common Business-Oriented Language Ain Uljas Ajalugu Esmaettekanne 28 mai 1959 Pentagonis peale seda kui American Departement of Defense palus grupil spetsialistidel luua ärivajadusi rahuldav keel,
More informationTTÜ informaatikainstituut. Algoritmimine
TTÜ informaatikainstituut Algoritmimine Algoritm on täpne ja ühemõtteline eeskiri antud liiki ülesannete lahendamiseks või tegevuste täitmiseks kindla eesmärgi saavutamisel. Algoritm määrab, milliseid
More informationRakendustarkvara: R. Sügis 2017, 1. praktikum
Rakendustarkvara: R. Sügis 2017, 1. praktikum 1 Lühike sissejuhatus R on programmeerimiskeel ja -keskkond, mis on arendatud statistiliseks andmetöötluseks. R-i kasutavate inimeste hulk on viimase kümmekonna
More informationJavaScript programmeerimise tüüpvead ja parimad praktikad
Tallinna Ülikool Informaatika Instituut JavaScript programmeerimise tüüpvead ja parimad praktikad Seminaritöö Autor: Kristjan Tammekivi Juhendaja: Andrus Rinde Autor:...,,2014 Juhendaja...,,2014 Instituudi
More informationIPv6 harjutused. Aadressi kuju, kirjaviis, osad, liigid Aadressi saamise viisid
IPv6 harjutused Aadressi kuju, kirjaviis, osad, liigid Aadressi saamise viisid IPv6 aadressi kuju IPv4 32 bitti (4 baidi kaupa) Kuju kümnendarvud 4 kaupa punktidega eraldatud 192.168.252.200 IPv6 128 bitti
More informationVeebilehe loomine HTML5 abil
Tallinna Ülikool Informaatika Instituut Veebilehe loomine HTML5 abil Seminaritöö Autor: Vladimir Vološin Juhendaja: Andrus Rinde Autor:......... 2011 Juhendaja:...... 2011 Tallinn 2011 Sisukord Sissejuhatus...
More information3.1 Tsükkel KORDUV TEGEVUS
3.1 Tsükkel KORDUV TEGEVUS Kui püüda arvuti võimalikke plusse välja tuua, siis üheks oluliseks neist on kahtlemata võime mingeid tegevusi kiiresti ja korduvalt sooritada. Nii saab teha arvutusi, midagi
More informationTARTU ÜLIKOOL. Arvutiteaduse instituut LOODUS- JA TÄPPISTEADUSTE VALDKOND
TARTU ÜLIKOOL Arvutiteaduse instituut LOODUS- JA TÄPPISTEADUSTE VALDKOND Anita Scharonberg CVE-2015-3457 Referaat Juhendaja: Meelis Roos Tartu 2016 SISUKORD 1 Sissejuhatus... 3 2 Turvaauk... 3 3 Turvaaugu
More informationSüsteemprogrammeerimine keeles C
Süsteemprogrammeerimine keeles C C Loeng 2 milles jätkame sisendi ja väljundiga tutvumist, räägime andmetüüpide teisendamisest, tähemärgi andmetüübist, massiividest ja pointeritest ja stringidest ja sellest,
More information2
1 2 3 4 5 St. seotud grupid 6 7 Soovitused: Vältida sidusgruppide tähtsuse järgi järjestamist. Minimeerige üksikute sidusgruppide esiletõstmist. 8 9 10 11 12 Päästeameti avalik veebileht (www.päästeamet.ee)
More informationAPPLE I ÕPPEMATERJAL TABELARVUTUSPROGRAMM NUMBERS
Tallinna Ülikool Informaatika Instituut APPLE I ÕPPEMATERJAL TABELARVUTUSPROGRAMM NUMBERS Seminaritöö Autor: Sandra Saartok Juhendaja: Jaanika Meigas Tallinn 2014 Sisukord SISSEJUHATUS... 3 1 IWORK JA
More informationProgrammeerimine. 3. loeng
Programmeerimine 3. loeng Tana loengus T~oevaartustuup ja loogilised avaldised Hargnemisdirektiivid { Lihtne if-lause { if-else-lause { Uldkujuline if-lause Tsuklidirektiivid { Eelkontrolliga tsukkel {
More informationAndmebaaside varundamine ja taastamine
Andmebaaside varundamine ja taastamine Sybase SQL Anywhere 12 Menüü Pane tähele... 1. Andmebaasist kujutise tegemine ja taastamine 2. Andmebaasist pakitud varukoopia tegemine ja taastamine 3. Andmebaasist
More informationCamunda protsessimootori tutvustus
Tallinna Ülikool Digitehnoloogiate Instituut Camunda protsessimootori tutvustus Seminaritöö Autor: Keio Arula Juhendaja: Jaagup Kippar Autor: Juhendaja: 2015 2015 Instituudi direktor: 2015 Tallinn 2015
More informationNokia E51 kasutamine modemina
Tartu Ülikool Matemaatika-informaatika teaduskond Arvutiteaduse instituut Nokia E51 kasutamine modemina Juhend Koostaja: Allar Tammik Juhendaja: Kersti Taurus Tartu 2008 Sisukord Sissejuhatus...3 Arvuti
More informationJava põhikursuse konspekt
Tallinna Pedagoogikaülikool Informaatika osakond Jaagup Kippar Java põhikursuse konspekt Tallinn 2003 Sissejuhatus Käesolev kirjutis on mõeldud nii iseõppijatele kui abimaterjaliks õpilastele ja õpetajatele.
More informationSemantika, tuubid, loogika ja programmeerimine
Sissejuhatus informaatikasse Semantika, tuubid, loogika ja programmeerimine Varmo Vene Arvutiteaduse Instituut Tartu Ulikool 5. mai 2009. Tsitaat klassikutelt Sissejuhatus Everyone knows that debugging
More informationVeebilehtede loomine, css3
CSS... 3 CSS LINKIMINE HTML DOKUMENDIGA... 4 Välise stiililehe rakendamine... 4 Sisemise stiili rakendamine... 4 Reastiili rakendamine... 5 CSS ÕIGEKIRI... 5 Erinevad selektorid... 6 Elemendi nimega selektorid...
More informationInuaki reptiil minu sees. Erakorralised avastused Maa minevikust, olevikust ja tulevikust
Inuaki reptiil minu sees Erakorralised avastused Maa minevikust, olevikust ja tulevikust I osa See on vestlus Rumeenia naise psühholoog Ariana Hawa ja ebatavalise poisi vahel, kes ütleb, et minevikus kehastus
More information11. Transpordikiht. Side IRT3930 Ivo Müürsepp
11. Transpordikiht Side IRT3930 Ivo Müürsepp Transpordikihi funktsioonid Ühendusele orienteeritud side. Virtuaalne otsekanal alg- ja sihtpunkti vahel. Sõltumatus alumiste kihtide ülesehitusest ja protokollistikust.
More informationReaktiivsed pildid. Piltide definitsioon:
Reaktiivsed pildid Piltide definitsioon: data Picture = Region Color Region Picture Over Picture EmptyPic deriving Show Eesmärk on kirjutada programm, mis hiire vasaku nupu kliki korral toob viidatava
More informationVBA Exceli. Visual Basic for Applications Excel 2010 baasil Erki Savisaar
VBA Exceli Visual Basic for Applications Excel 2010 baasil Erki Savisaar Sisukord Sissejuhatus... 3 1 PROGRAMMIDE LOOMISE ÜLDPÕHIMÕTTED... 4 2 VBA KASUTAMINE EXCELIS... 7 2.1 Turvalisus... 7 2.1.1 Üksikute
More informationTallinna Ülikool Informaatika Instituut. XML rakendused. Jaagup Kippar
Tallinna Ülikool Informaatika Instituut XML rakendused Jaagup Kippar Tallinn 2009 Sisukord XML...3 Ülesanded XMLiga tutvumiseks...5 XSL...5 Käivitamine Java abil...7 Käivitamine Visual Studio abil...8
More informationHTML 5 ja CSS 3 uued võimalused ning nende töökindlus veebilehitsejates
Tallinna Ülikool Informaatika Instituut HTML 5 ja CSS 3 uued võimalused ning nende töökindlus veebilehitsejates Seminaritöö Autor: Anton Birjukov Juhendaja: Jaagup Kippar Tallinn 2012 Sisukord Sissejuhatus...3
More information3.1 Valikulause. Sõnede ja arvude võrdlemine
3.1 Valikulause. Sõnede ja arvude võrdlemine SISSEJUHATUS Elus tuleb teha mitmeid valikuid. Näiteks tuleb abielutseremoonial valida kahe valiku vahel - kas jah või ei. Selles osas vaatame, kuidas valikulausete
More informationAlgoritmikeelte analüüs
TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Arvutitehnika instituut Algoritmikeelte analüüs Ringi pindaladega arvutamise keel Priit Rebina 107362IASMM Tallinn 2011 1 Sisukord 1. Sissejuhatus..3
More informationErkki Moorits Cybernetica AS, Navigatsioonisüsteemide osakond
Programmi kompileerimine ja C eripärad Erkki Moorits Cybernetica AS, Navigatsioonisüsteemide osakond Teemad Programmi kompileerimine, paigutus mälus ja kuidas jõuab programm mällu C keele eripärad Ohtlikud
More informationTallinna Pedagoogikaülikool Haapsalu Kolledž. Rakenduste programmeerimine. Jaagup Kippar
Tallinna Pedagoogikaülikool Haapsalu Kolledž Rakenduste programmeerimine Jaagup Kippar 2004 Sisukord Eessõna...7 Andmebaasid...8 Andmebaasiühenduse loomine...8 Otsene draiver... 11 Servlet...12 Sisestus...
More informationMakrode koostamine. Menüüde koostamine
Makrode koostamine Makrode abil Access lubab automaatselt korrata erinevaid tegevusi ning seega tarbija ei pea kirjutama keerukaid programmi mooduleid. Makro on samasugune Accessi objekt, nagu tabel, päring,
More informationIT infrastruktuuri teenused. Failiserver. Margus Ernits
IT infrastruktuuri teenused Failiserver Margus Ernits margus.ernits@itcollege.ee 1 Failide hoidmine kasutaja arvutis pole tihti mõistlik, kuna Failiserver Arvuti kõvaketta hävimisega kaovad andmed ja nendest
More informationMITME VÄITE ÜHE ANDMEVÄÄRTUSENA ESITAMISE EELISED JA PUUDUSED SQL-ANDMEBAASIDES
TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Informaatikainstituut IDU40LT Maria Ossipova 135215IAPB MITME VÄITE ÜHE ANDMEVÄÄRTUSENA ESITAMISE EELISED JA PUUDUSED SQL-ANDMEBAASIDES Bakalaurusetöö
More informationWindows XP ja varasemates versioonides kasutati arvuti failides otsimiseks Windows Search versiooni 2.
Windows 7 otsingud Windows XP ja varasemates versioonides kasutati arvuti failides otsimiseks Windows Search versiooni 2. Windows 7 kasutab täiustatud otsingut Windows Desktop Search (WDS), mis põhineb
More informationC++11 ja C++03 spetsifikatsioonide võrdlus reaalajas töötava rakenduse loomise abil
Tallinna Ülikool Informaatika Instituut C++11 ja C++03 spetsifikatsioonide võrdlus reaalajas töötava rakenduse loomise abil Seminaritöö Autor: Roman Gorislavski Juhendaja: Inga Petuhhov Tallinn 2012 Sisukord
More informationLEGO Mindstorms NXT robotite programmeerimine NXC keeles
TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKA TEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Nikolai Konovalov LEGO Mindstorms NXT robotite programmeerimine NXC keeles Bakalaureusetöö (6 EAP) Juhendaja:
More informationObjektorienteeritud programmeerimine
Objektorienteeritud programmeerimine 2. loeng 18. veebruar Eno Tõnisson kasutatud ka Helle Heina ja Jüri Kiho materjale 1 Eelmisel nädalal loeng sissejuhatus praktikum paaristööna Asteroid 2012 DA14 möödus
More informationTartu Ülikooli Ideelabori veebikeskkonna arendus Bakalaureusetöö (6 EAP)
TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Informaatika eriala Lauri Laur Tartu Ülikooli Ideelabori veebikeskkonna arendus Bakalaureusetöö (6 EAP) Juhendajad: Uuno Puus, Margus
More informationNäidisrakendusel põhinev Microsoft Silverlight 3 õppematerjal
Tallinna Ülikool Informaatika Instituut Näidisrakendusel põhinev Microsoft Silverlight 3 õppematerjal Microsoft Silverlight 3 Tutorial for Creation of a Data Driven Application Bakalaureusetöö Autor: Ilja
More informationLinuxi võrgutamine. Harjutus 1 Sildamine Linuxis. Kõik vajalik, nagu ikka, Avalik/linuxiadmin-septer
Linuxi võrgutamine Kõik vajalik, nagu ikka, Avalik/linuxiadmin-septer Harjutus 1 Sildamine Linuxis Ettevalmistus. Tee ettevalmistus ära ja jää ootama loengu alguse DEMO ja SELGITUST sama harjutuse kohta.
More informationVeebilehtede loomine, css3
CSS... 4 CSS LINKIMINE HTML DOKUMENDIGA... 5 VÄLISE STIILILEHE RAKENDAMINE... 5 SISEMISE STIILI RAKENDAMINE... 5 REASTIILI RAKENDAMINE... 6 CSS ÕIGEKIRI... 6 EESLIITED... 7 ERINEVAD SELEKTORID... 7 Mistahes
More informationVenni diagrammide õpiprogramm
TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Marko Täht Venni diagrammide õpiprogramm Bakalaureusetöö (9 EAP) Juhendaja: dots. Rein Prank Tartu 2016 Venni diagrammide õpiprogramm Lühikokkuvõte:
More informationInternet ja veebivahendid (HTML,CSS,DHTML) Kursuse konspekt. Autor Jüri PUHANG
Internet ja veebivahendid (HTML,CSS,DHTML) Kursuse konspekt Autor Jüri PUHANG T a l l i n n 2 0 0 7 - 2 - Sisukord: SISSEJUHATUS... 5 1. PEATÜKK - INTERNET... 6 1.1. INTERNETI ÜLDMÕISTED JA ARENGULUGU...
More informationR algajatele, eriti neile kes pole varem programmeerinud
R algajatele, eriti neile kes pole varem programmeerinud Tartu, 9. mai 2006 1 2 3 4 5 6 7 8 9 Kava Mis on R? S keele variant Üldotstarbeline k~orgtaseme programmeerimiskeel le orienteeritud vahendid vektorid
More informationFailide jagamine ilma internetiühenduseta kasutades Android operatsioonisüsteemi
Tallinna Ülikool Digitehnoloogiate Instituut Informaatika õppekava Failide jagamine ilma internetiühenduseta kasutades Android operatsioonisüsteemi Bakalaureusetöö Autor: Teele Pae Juhendaja: Jaagup Kippar
More informationReapõhise ja veerupõhise andmete salvestamise võrdlus kahe SQL-andmebaasisüsteemi näitel Magistritöö
TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Informaatikainstituut Infosüsteemide õppetool Reapõhise ja veerupõhise andmete salvestamise võrdlus kahe SQL-andmebaasisüsteemi näitel Magistritöö Üliõpilane:
More informationSIDE (IRT 3930) Põhipunktid. Loeng 23/2007 Sidevõrkude haldus Teema võrguhaldus. Eeldused võrguhalduseks. Telefonivõrk. Mitmetasemeline andmevõrk
SIDE (IRT 3930) Loeng 23/2007 Sidevõrkude haldus Teema võrguhaldus Põhipunktid Võrguhalduse ülesanded Klient server mudel võrguhalduses Halduse standardimine Arvutivõrkude haldussüsteemid Terminalide ja
More informationAnalüüs äriprotsesside juhtimise tarkvarale
T A R T U Ü L I K O O L MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia Allar Soo Analüüs äriprotsesside juhtimise tarkvarale Bakalaureusetöö (6 EAP) Juhendaja: MSc Vambola Leping
More information