12. diel - Zoznamy v Scratchi - Dokončenie
V minulej lekcii, Zoznamy v Scratchi , sme si vysvetlili, čo je to zoznam a naučili sme sa ho vytvoriť, naplniť a vymazať.
V dnešnom Scratch tutoriále sa budeme ešte venovať zoznamu. Popíšeme si ďalšie bloky pre prácu so zoznamom a naučíme sa napríklad zistiť jeho dĺžku, nahradiť v ňom konkrétnu položku alebo zistiť, či sa v ňom konkrétna položka vyskytuje. Nakoniec vylepšíme náš projekt s nákupným zoznamom a nové bloky pre prácu so zoznamom si pri tom vyskúšame 😉
Bloky pre prácu so zoznamom
Poďme si teda najskôr popísať ďalšie možnosti práce so zoznamom v Scratchi.
Vloženie položky na konkrétne miesto
Niekedy sa stane, že nechceme vložiť položku na koniec zoznamu, ale chceme ju vložiť napríklad do stredu alebo na začiatok. Na to slúži blok vlož na v:
Ak teda chceme pridať položku na začiatok zoznamu, ponecháme v bloku
hodnotu indexu 1
. Môžeme samozrejme zadať iný index, ktorým
určíme, na aké miesto má byť položka uložená.
Nahradenie položky v zozname
Niekedy sa môže stať, že budeme chcieť zmeniť názov položky v zozname. To môžeme, rovnako ako vloženie a zmazanie položky, urobiť buď ručne alebo programovo. Poďme si ukázať obe varianty.
Nahradenie položky programovo
Pokiaľ chceme nahradiť položku programovo, použijeme k tomu blok nahraď v hodnotou:
Do bloku najskôr zadáme index prvku, ktorý nahrádzame, potom nový názov položky, ktorý sa na toto miesto zapíše.
Pripomeňme si, že sa zoznam v Scratchi čísluje od
1
😉
Nahradenie položky ručne
Nahradenie vybranej položky mimo beh programu vykonáme tak, že na ňu klikneme a môžeme začať písať nový názov:
Keď sme s úpravou hotoví, klikneme niekam mimo položky, tým sa nová hodnota uloží 😉
Vypísanie konkrétneho prvku zo zoznamu
Keby sme napríklad robili závodnú hru a potrebovali oznámiť mená víťazov, môže sa nám hodiť blok pre výpis konkrétneho prvku prvok z:
Ako asi tušíte, číslo v bloku je poradie prvku, ktorý chceme vypísať.
Zistenie dĺžky zoznamu
Zistiť dĺžku nášho zoznamu by sme už dokázali pomocou cyklu. Ten by pokračoval, kým by nenarazil na koniec zoznamu a my by sme počítali, koľkokrát prebehol. To je ale zbytočne zdĺhavé a zložité riešenie 😉 Scratch má totiž presne na tieto účely zabudovaný blok dĺžka:
Obsahuje zoznam položku?
Posledný blok pre prácu so zoznamom, ktorý nám zostáva, je blok
obsahuje. V minulej lekcii sme použili trochu kulišiacke riešenie.
Keď sme chceli vedieť, či je nejaká položka v zozname, spýtali sme sa na
jej poradie a pokiaľ bolo nulové, znamenalo to, že položka neexistuje. To
sme urobili hlavne preto, aby sme si zapamätali, že sa zoznam čísluje od
1
a že pre neexistujúcu položku sa vráti 0
.
Existuje ale aj elegantnejšie riešenie. Tým je použitie bloku obsahuje:
Ako môžeme vidieť podľa jeho tvaru, vracia hodnotu pravda/nepravda, takže sa dá použiť v blokoch keď tak alebo v cykloch 😉
Nákupný zoznam
S novými znalosťami o možnostiach zoznamov poďme z nášho projektu s nákupným zoznamom urobiť trochu pokročilejšiu aplikáciu. Nový nákupný zoznam bude vedieť pridávať a odoberať položky podľa názvu. Pokiaľ zadaná položka v zozname už existuje a chceme ju pridať, mačičák nás na to upozorní a položka sa znovu nepridá. Pokiaľ chceme zmazať položku, ktorá v zozname nie je, položka sa samozrejme nezmaže 🙂
Budeme sa tiež môcť mačičiaka opýtať, či má konkrétnu položku v zozname. Na vyžiadanie nám mačičák všetky položky zo zoznamu prečíta. Naučíme ho tiež vyhľadať položku na konkrétnom mieste v zozname. A pokiaľ budeme chcieť, môžeme mačičiaka nechať celý zoznam zmazať, ale k tomu budeme musieť zadať heslo. Mačičák nám tiež povie, koľko položiek v zozname je 🙂
Že to vyzerá zložito? Ale vôbec nie je, pretože všetko, čo je na to potrebné, už vieme 😉 Poďme na to.
Príprava tela programu
Začneme tým, že si vytvoríme premenou programBezi
a zoznam
nakupniSeznam
. Na plochu si umiestnime štartovací blok a za neho
blok nastav na, ktorý nastaví premennú programBezi
na
hodnotu ANO
. Za blok nastav na umiestnime blok opakuj
pokiaľ nenastane s blokom obsahuje, ktorý má na ľavej strane
hodnotu programBezi
a na pravej hodnotu NE
:
Do tela cyklu vložíme otázku
Chcete provést další operaci se seznamem? ANO/NE
a za ňou blok
nastav na, ktorý nastaví premennú programBezi
na
odpověď
:
Zo skorších lekcií už vieme, že sa tento princíp využíva, aby sa program opakoval a nemuseli sme ho stále zapínať ručne 😉
Poďme ďalej. Teraz pomocou
blokov bublina vypíšeme po sekunde jednotlivé možnosti. Potom
vytvoríme premennú volba
. Za bubliny pridáme otázku s textom
Zadejte číslo operace:
a blok nastav na, ktorý nastaví
premennú volba
na odpověď
:
Teraz za blok, kde
nastavujeme premennú volba
, umiestnime 7 krát blok keď tak
inak a ako posledný vnoríme blok keď tak. Každý ďalší blok
umiestnime do vetvy inak toho predchádzajúceho. Telo potom bude
vyzerať takto:
Do prvého bloku dáme ako podmienku, že voľba je menšia ako
1
alebo väčšia ako 7
a do jeho tela bublinu s
textom Neplatná volba.
:
Teraz do všetkých ostatných podmienok vložíme bloky rovné sa,
ktoré na ľavej strane majú volba
a na pravé čísla od
1
do 7
.
Pridávanie položky
Pre prvú operáciu vytvoríme otázku
Jakou položku chcete přidat?
a za ňou nalepíme blok keď
tak inak. Podmienkou v bloku bude blok obsahuje, ktorý zistí ,
či nakupniSeznam
obsahuje odpověď
. Ak áno, objaví
sa bublina sekúnd Položka na seznamu již je.
. Ak nie,
vložíme blok pridaj k, Ktorý pridá odpověď
do
nákupného zoznamu a za ním bude bublina sekúnd
Položka přidána.
:
Celý kód presunieme do tela voľby 1
. Rovnako budeme
postupovať aj pri ďalších operáciách.
Odstránenie položky
Odstránenie položky bude podobné, takže môžeme predchádzajúci blok
kódu skopírovať 😉 Otázku potom prepíšeme na
Jakou položku chcete odstranit?
. Ak nákupný zoznam položku
obsahuje, tak ju odstránime blokom smaž z, ktorý bude mať vo
vnútri blok poradie v s premennú odpověď
. V bubline
potom vypíšeme Položka byla smazána.
. Ak položka v zozname nie
je, zobrazí sa bublina Položka není na seznamu.
:
Je položka na zozname?
Opäť môžeme vychádzať z predchádzajúceho kódu. Do otázky napíšeme
Zadejte název položky:
. Ak položka existuje, vypíše sa
bublina sekúnd Položka JE na seznamu.
, inak sa vypíše
Položka NENÍ na seznamu.
:
Prečítanie všetkých položiek
Ako ďalší si vytvoríme premennú i
. Ako vieme, pôjde o
riadiacu premennú cyklu 🙂 Pridáme blok nastav na, ktorý nastaví
i
na 1
. Potom umiestnime cyklus opakuj kým
nenastane s podmienkou je väčšia ako. Na ľavej strane
doplníme premennú i
a na pravej blok dĺžka. V tele
cyklu bude bublina s obsahom: blok prvok z, ktorá má v sebe
premennú i
. Nezabudneme pridať blok zmeň o, ktorý
zakaždým zvýši hodnotu i
o 1
:
Výpis položky podľa indexu
Tu opäť doplníme podobné bloky ako pri pridaní a odobratí položky. Do
otázky napíšeme Zadejte index položky:
. V podmienke bude blok
alebo, ktorý naľavo bude mať blok odpověď
menšia
ako 1
a napravo blok odpověď
väčšia
ako dĺžka. Podmienka bude splnená, ak používateľ zadá
neplatný index. Vypíšeme teda o tom správu v prvej bubline. V opačnom
prípade zobrazíme bublinu s blokom prvok z, ktorý obsahuje
odpověď
:
Zmazanie celého zoznamu
Môže sa stať, že budeme chcieť vymazať celý zoznam. Pretože by to ale
bolo nebezpečné, ošetríme to ešte radšej zadaním hesla 😉 Opäť si
požičiame štruktúru blokov z predošlých operácií. Do otázky napíšeme
Zadejte heslo:
. V podmienke využijeme blok rovná sa,
ktorý bude mať na ľavej strane odpověď
a na pravej strane
ľubovoľné heslo, napríklad kočičák
😉 Ak používateľ
zadá rovnaké heslo, vykoná sa blok zmaž všetko z a vypíše sa
bublina Seznam smazán.
, inak sa vypíše text
Neplatné heslo.
:
Vypísanie dĺžky zoznamu
Ako posledný budeme vypisovať dĺžku zoznamu. Vezmeme bublinu, do ktorej
dáme blok spoj. Vľavo doplníme text
V seznamu je položek:
s medzerou na konci a doprava pridáme blok
dĺžka:
Ako posledný presunieme na koniec programu bublinu
Děkuji za použití nákupního seznamu.
. A je hotovo 🙂 Celý
program je opäť na stiahnutie v prílohe lekcie.
V nasledujúcej lekcii, Práca so zvukmi v Scratchi , si popíšeme kartu pre prácu so zvukmi a ukážeme si, ako ich do projektu pridať av aplikácii prehrať.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 8x (45.29 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Scratch