ja nii edasi kuni ahela lõpuni. Ahela viimases elemendis on tühiviit, mis annabki märku ahela lõpust. Tavaliselt kasutatakse ahela hoidmiseks viita selle esimesele elemendile. Rohkem pole vaja, sest esimeselt elemendilt saame liikuda kõigi teisteni. Ahelat kui andmestruktuuri iseloomustavad järgmised omadused: Ahela pikkus ei ole fikseeritud. See võimaldab ahela abil realiseerida muutuva suurusega andmestruktuure ka keeltes, kus massiivi pikkus tuleb määrata juba programmi kirjutamise ajal. Ahela elemendi leidmine tema indeksi järgi on üsna kulukas. Üldjuhul tuleb selleks alustada ahela algusest ja liikuda vastav arv kordi ühelt elemendilt teisele. Seega on i. elemendi leidmise ajakulu Q(i). Ahela elemendi väärtuse väljavahetamine (ahela elemendi andmeväljale uue väärtuse omistamine) on tavaline omistamistehe ja selleks tehtava töö
kulutuste märkimisväärset kasvu. [http://eur-lex.europa.eu/LexUriServ/LexUriServ.do? uri=COM:2005:0565:FIN:ET:HTML] (8.06.08) Rakendamine Praeguse arendusetapi eesmärgiks on luua GMESi teabeteenuste kasutajate tugev baas. See tähendab vajaduste kindlakstegemist ning selle tagamist, et osutatavad teenused on usaldusväärsed ja tulemuslikud. Väljakutseks jääb saavutada andmekogumissüsteemide parem koostalitusvõime, ühtlustada andmestruktuure ja kasutajaliideseid ning edendada nende standardimist, ületada poliitilised tõkked andmete jagamisel, luua kvaliteedi tagamise mehhanismid, saavutada eri allikatest ja eri tasanditelt pärit andmete liitmine ning pakkuda uuenduslikke ja kasutajasõbralikke teenuseid, mis on tasuvad ja jätkusuutlikud. Need arengusuunad peaksid saama sidusa ja ühtse raamprogrammi osaks, ilma et minetataks detsentraliseeritud juhtimise ja investeeringute paremad küljed. Välja
ja nii edasi kuni ahela lõpuni. Ahela viimases elemendis on tühiviit, mis annabki märku ahela lõpust. Tavaliselt kasutatakse ahela hoidmiseks viita selle esimesele elemendile. Rohkem pole vaja, sest esimeselt elemendilt saame liikuda kõigi teisteni. Ahelat kui andmestruktuuri iseloomustavad järgmised omadused: Ahela pikkus ei ole fikseeritud. See võimaldab ahela abil realiseerida muutuva suurusega andmestruktuure ka keeltes, kus massiivi pikkus tuleb määrata juba programmi kirjutamise ajal. Ahela elemendi leidmine tema indeksi järgi on üsna kulukas. Üldjuhul tuleb selleks alustada ahela algusest ja liikuda vastav arv kordi ühelt elemendilt teisele. Seega on i. elemendi leidmise ajakulu Q(i). Ahela elemendi väärtuse väljavahetamine (ahela elemendi andmeväljale uue väärtuse omistamine) on tavaline omistamistehe ja selleks tehtava töö
liikuda esimeselt elemendilt teisele, teiselt kolmandale ja nii edasi kuni ahela lõpuni. Ahela viimases elemendis on tühiviit, mis annabki märku ahela lõpust. Tavaliselt kasutatakse ahela hoidmiseks viita selle esimesele elemendile. Rohkem pole vaja, sest esimeselt elemendilt saame liikuda kõigi teisteni. Ahelat kui andmestruktuuri iseloomustavad järgmised omadused: Ahela pikkus ei ole fikseeritud. See võimaldab ahela abil realiseerida muutuva suurusega andmestruktuure ka keeltes, kus massiivi pikkus tuleb määrata juba programmi kirjutamise ajal. Ahela elemendi leidmine tema indeksi järgi on üsna kulukas. Üldjuhul tuleb selleks alustada ahela algusest ja liikuda vastav arv kordi ühelt elemendilt teisele. Seega on i. elemendi leidmise ajakulu Q(i). Ahela elemendi väärtuse väljavahetamine (ahela elemendi andmeväljale uue väärtuse omistamine) on tavaline omistamistehe ja selleks tehtava töö maht (kui element on juba
pop(); return "Magasin: " + System.out.println(stack); stack.toString(); stack.push("C"); } System.out.println(stack); } stack.push("D"); System.out.println(stack); } Magasin: [A] Veel andmestruktuure } Magasin: [A, B] Magasin: [A] Collection kogum; hierarhia juur Magasin: [A, C] Set hulk; ei ole korduvaid elemente Magasin: [A, C, D] SortedSet järjestatud hulk; kasvavas järjekorras List list; võib olla korduvaid elemente; järjekord oluline Queue järjekord; harilikult FIFO; järjekord oluline
siis see põhjustab piiranguid mälupöördustel, nn pudelikaela nähtus („von Neumann bottleneck“). Puudub selgelt avalduv erisus mälus säilitatava info – andmete ja käskude vahel. See, kas tegemist on andmete või käskudega, tuvastatakse programmi töötluse käigus alles protsessoris. Kaasaegsetes kõrgkeeltes on kasutusel erinevaid andmestruktuure, kuid klassikalise (Princetoni) arvuti mälukorralduses tuginetakse vaid ühemõõtmelistele struktuuridele (mälupesad), mistõttu tuleb erineva struktuuriga andmeid lineariseerida, et neid oleks mälus võimalik säilitada. Mälus säilitatav informatsioon ei sisalda teavet selle kohta, millise andmetüübiga on tegemist. Andmetüüpide tuvastamine toimub läbi programmiloogika.
'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
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 77 / 115 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
08 - PHP - Massiivid (Ülesanne 5) Teemad mis on massiiv massiivi loomine assotatiivne print_r massiivi funktsioonid Sissejuhatus Siiani oleme lisanud igale muutujale ainult ühe väärtuse. Näiteks $nimi='Mari'. Nüüd kui oleks vaja veel nimesid muutujates hoida, siis peaksime tegema juurde muutujaid. Näiteks $nimi2,$nimi3 jne. Mis siis kui neid muutujaid oleks vaja sada ja rohkem? Siinkohal tulebki meile appi programmeerimise üks olulisemaid andmestruktuure massiivid. Vaatame selles peatükis, mis see on, kuidas massiivi väärtusi väljastada, lisada juurde ning kas on olemas mugavad funktsioonid paremaks tulemuseks. Mis on massiiv (array) Massiiv on muutuja, mis hoiab endas hulka samatüüblisi väärtusi. Väärtusteks võivad olla nii tekstid, arvud kui ka teine massiiv. Viisakas on massiivile anda nimi mitmuses. Loome näiteks nimede massiivi ja vanuste massiivi. ? 1 $nimed = array('mari', 'kati', 'juhan', 'miku', 'uku');
5 5 10 15 20 25 30 35 40 45 50 6 6 12 18 24 30 36 42 48 54 60 7 7 14 21 28 35 42 49 56 63 70 8 8 16 24 32 40 48 56 64 72 80 9 9 18 27 36 45 54 63 72 81 90 10 10 20 30 40 50 60 70 80 90 100 Lisalugemist Fibonacci jada (www) - inglise keeles 5.1 Massiivid Üks olulisemaid andmestruktuure programmeerimises on massiivid ehk järjendid. Massiiv on indekseeritud elementide hulk, kus iga elemendil ehk väärtusel on oma unikaalne indeks ehk võti. Võtmeteks sobivad täisarvud ja sõned, väärtusteks - ükskõik mis tüüpi andmed (lihttüübid, massiivid, objektid jne.). PHP-s on olemas tavalised massiivid (võtmed on täisarvud) ja assotsiatiivsed massiivid (võtmed on sõned)
painters. It's as if mathematicians, physicists, and architects all had to be in the same department. ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 3 Kordamine -Mis on informaatika? •Informaatika on teadus, mille jaotame tinglikult kolmeks .arvutiteadus e teoreetiline informaatika .programmeerimine .Infotehnoloogia ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 4 Teoreetiline informaatika •Uurib: .Algoritme .Andmestruktuure .Keerukust .Jagatud arvutusi .Paralleelarvutusi .Integraalskeemide ehitust .Masinõppimist .Krüptograafiat ITK 2007, Kalev Pihl Sissejuhatus informaatikasse 5 .Kvantarvutusi .Juhuslikkust .Automaate .Programmi semanikat .Informatsiooniteooriat .Arvuteooriat .Jms . Programmeerimine •Programmeerimine on eelkõige protsess, mis vajab loogikat. •Pidevalt tegeletakse koodi kirjutamise automatiseerimisega, ehk “kirjelduse” kompileerimisega, mis eeldab aga, et
keeled ei ole tegelikult üldse keerulised, pealegi saab vajadusel alati arendust teenusena sisse osta, kasvõi valitud süsteemi arendaja enda käest. Suurem mure on sisuline ja puutub siinsesse õpikusse: kui kõik teed näiteks andmestruktuuri otsustamisel on lahti, siis peab terminoloog sisuliselt väga hästi teadma, mida ta teeb. Kogemus näitab, et üldiselt ei teata, vaid lisaks terminoloogile ja arendajale läheb tarvis ka vahendajat nende vahel, kes oskaks andmestruktuure soovitada, umbes nagu käesolevas peatükis kirjeldatud. Tehniline mõistelisus 131 Termeki Algselt termbases.eu nime all arendatud süsteem, mida EKI saab tänu Eesti Keeleressursside Keskusele pakkuda tasuta kõigi eesti keelt sisaldavate terminibaaside tegemiseks.1 Töötab brauseris, st kliendiplatvormist sõltumatu. Baasi struktuur on mõistepõhine ja kolmetasemeline (mõiste, keel, termin). Taseme piires võimalik andmevälju kohandada.
alati kas ühe või kaks astet edasi? Näiteks kolmeastmelisest trepist on võimalik üles minna kolme moodi: või , neljaastmiselisest viit moodi jne. Üllatavalt palju rakendatakse Fibonacci arve viimasel ajal informaatikas: nende abil üritatakse tekitada juhuslikke arve, leida uusi otsingualgoritme ning luua isegi 136 andmestruktuure. Kahtlustatakse, et Fibonacci jada on kasutatud ka muusika kom- poneerimiseks ning hoolikas loodusvaatleja leiab Fibonacci jadaga seotud spiraale ja mustreid ka kosutaval matkal. jada Lisaks selgub, et Fibonacci järjestikuste liikmete suhe läheneb ühele kindlale arvule. Veelgi enam, see arv pole mingi suvaline arv, vaid niinimetatud kuldlõike suhtarv