App Inventor II - Seznami

App Inventor II - Seznami

Avtor: Milan Brumec

Učni cilji: Poznam osnovne programske konstrukte in jih smiselno uporabljam: Prireditveni stavek in spremenljivke, Odločitveni (pogojni) stavek, Seznam, Zanka, Funkcija (procedura).

Uvod

Pogledali si bomo kako app Inventor upravlja s podatki. Naučili se bomo osnov programiranja pri katerih imamo statične podatke, to so taki ki se ne spreminjajo, ter dinamične pri katerih podatke vnese uporabnik. Naučili se bomo kako delati s seznami ter nato še malo raziskovali bolj kompleksne podatkovne strukture kot so seznami seznamov ter nato še kviz program izbirnega tipa.

Veliko programov obdeluje podatkovne sezname. N. pr. Facebook procesira tvoj seznam prijateljev in sezname statusov. Kviz program dela s seznami vprašanj in odgovorov. Igra lahko ima seznam igralcev ali pa seznam dosežkov. V App Inventorju seznam deklariramo z spremenljivko le da z njo namesto enega pomnilnega prostora s spremenljivko imenuješ set odvisnih pomnilnih prostorov. Da spremenljivka vsebuje več vrednosti lahko specificiramo tako, da izberemo naredi seznam (make a list) ali naredi prazen seznam (create empty list) blok.

Na primer spremenljivka phoneNumbers na sliki 1 definira seznam treh vrednosti.

(slika 19_1.png)
Slika 1. seznam phoneNumbers ima dolžino 3 v kateri so tri telefonske številke

Kreiranje seznama

Seznam spremenljivk lahko nastavimo tako da v Block Editor uporabimo initialize global variable block in nato vanj potegnemo make a list blok. Make a list blok lahko najdemo v Lists drawer in ima samo dve vtičnice, ampak lahko vnesemo stevilo vtičnic v seznamu z klikom na modro ikonico tako da dodajamo člene v seznam kot je prikazano na sliki 2.

(slika 19_2.png)
Slika 2. S klikom na modro ikono lahko spreminjamo dolžino seznama

V vtičnico »item« bloka make a list lahko vstavimo katerokoli vrsto podatkov. Za telefonske številke na primer, moramo izbrati podatke tipa text in ne številke, ker telefonske številke vsebujejo tudi vezaje in druge simbole, ki jih ne moremo vstaviti v objekt tipa število. Tako seveda ne moremo nad temi podatki izvajati kakih matematičnih operacij.

Izbira elementa v seznamu

Ko aplikacijo poženemo bomo verjetno morali izbirati elemente iz seznama, na primer, določeno vprašanje v kvizu ali izbrano telefonsko številko iz seznama. Torej, do poljubnega elementa seznama pridemo z indeksiranjem, to je z določanjem pozicije v seznamu. Če ima seznam tri elemente, potem lahko do elementov pridemo z uporabo teh treh indeksov 1, 2 in 3. Da dobimo vrednost določenega elementa uporabimo select list item blok kot kaže slika 3.

(slika 19_3.png)
Slika 3. Izbira drugega elementa iz seznama

Na blok select list item v prvo vtičnico priključimo kateri seznam želimo ter na drugo index elementa ki ga želimo. Za naš primer telefonske številke je vsebina elementa na tej poziciji »333-4444«.

Listanje po seznamu z uporabo Indeksa

V mnogih aplikacijah boste definirali sezname, ter nato dovolili uporabniku da se sprehodi po njem. Prejšnji primer kaže kako pridemo do drugega elementa v seznamu. Kako pa pogledamo naslednjega? Ko listamo po seznamu se vrednost indeksa (trenutne lokacije v seznamu) spreminja. Zato potrebujemo spremenljivko, ki predstavlja to vrednost in to je index, skupno ime za spremenljivko take vrste. Po navadi ji priredimo začetno vrednost 1 (prva pozicija v seznamu) kot je prikazano na sliki 4.

(slika 19_4.png)
Slika 4: Spremenljivki index priredimo vrednost 1

Ko se želi uporabnik prestaviti na naslednji element v seznamu, moramo povečati spremenljivko index za 1. To storimo tako, da ji 1 prištejemo. Ta index nato uporabimo za izbor elementa v seznamu. Kako vse to izgleda vidimo na sliki 5.

(slika 19_5.png)
Slika 5. Povečanje spremenljivke index za 1 in izbira elementa v seznamu

Obrazec za vnos in dinamični podatki

Prejšnja aplikacija je uporabljala statični seznam, katerega je definiral programer (torej ti) in čigar elementi se niso spreminjali vse dokler jih nisi spremenil v bloku samem. Bolj pogosto pa se uporabljajo dinamični podatki; informacije katerih spremembe in dodajanje novih elementov so odvisne od končnega uporabnika, ali pa da so podatki naloženi iz baze podatkov ali kake druge spletne aplikacije. V tem razdelku bomo opisali primer Beležka (NoteTaker) v katero bo uporabnik vnašal zabeležke v obrazec, ter jih nato pregledoval vse za nazaj.

Definiranje dinamičnega seznama

Aplikacije kot so beležnice se začnejo s praznim seznamom. Ko želimo definirati prazen seznam storimo to z create empty list blokom kot kaže slika 6.

(slika 19_11.png)
Slika 6: Blok ki definira dinamičen seznam v naprej ne vsebuje nobenega elementa

Dodajanje elementov

Ko bo nekdo prvič zagnal aplikacijo bo seznam prazen. Ko pa bo vnesel neko besedilo in tapnil Submit, bo nova zabeležka dodana v seznam. Obrazec za vnos je lahko preprost kot je ta na sliki 7.

(slika 19_12.png)
Slika 7: Uporaba obrazca za vnos novega elementa v seznam

Ko uporabnik napiše nek tekst in tapne Submit, bo aplikacija klicala funkcijo add items to list da pripne nov element v seznam kot kaže slika 8.

(slika 19_13.png)
Slika 8: Klicanje funkcije add items to list da dodamo nov zapisek ko tapnemo gumb Submit

Blok add item to list najdete v predalu List drawer. Bodi previden v tem predalu je tudi blok append to list, ampak ta združuje en seznam z drugim.

Odstranjanje elementa iz seznama

Element lahko odstranite z uporabo bloka remove list item kot kaže slika 9.

(slika 19_16.png)
Slika 9: Odstranitev elementa iz seznama

Blok na sliki 9 odstrani drugi element iz seznama. Splošnem si ne želimo odstranjevanja elementov iz seznama ampak želimo le omogočit uporabniku, da lahko določen element odstrani.

Seznam seznamov

Element seznama je lahko katerega koli tipa vključno z števili, besedilom, barvo ali logičnimi vrednostmi (true/false). Prav tako pa je element lahko tudi sam seznam. Taka kompleksna podatkovna struktura je zelo pogosta. Primer uporabe seznamov v seznamu je kviz z več možnimi izbirami.

Da naredimo kviz izbirnega tipa moramo dodati še en seznam, ki bo hranil izbiro za vsak odgovor na vsako vprašanje. To naredimo tako, da ustvarimo tri bloke make a list znotraj bloka make a list kot kaže slika 10.

(slika 19_21.png)
Slika 10: Seznam seznamov je naredimo tako, da v seznam vstavimo seznam kot element.

Spremenljivka answerChoices je seznam s tremi elementi. Če izberete element iz answerChoices dobite seznam. Kako bi zdaj prikazali uporabniku te pripravljene odgovore izbirnega tipa?

0%
0%