Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Blok vlož na v - Scratch

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:

Blok nahraď v hodnote - Scratch

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:

Nahradenie položky ručne - Scratch

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:

Blok prvok z - Scratch

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:

Blok dĺžka - Scratch

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:

Blok obsahuje - Scratch

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:

Začiatok programu nákupný zoznam - Scratch

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ěď:

Program Nákupný zoznam sa bude opakovať - Scratch

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ěď:

Program Nákupný zoznam má možnosť voľby - Scratch

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:

Program Nákupný zoznam má bloky pre prípady - Scratch

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.:

Program Nákupný zoznam má ošetrenú neplatnú voľbu - Scratch

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.:

Program Nákupný zoznam pridáva položky - Scratch

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.:

Program Nákupný zoznam odoberá položky - Scratch

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.:

Program Nákupný zoznam vie, čo je na zozname - Scratch

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:

Program Nákupný zoznam číta celý zoznam - Scratch

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ěď:

Program Nákupný zoznam číta prvok z konkrétneho indexu - Scratch

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.:

Program Nákupný zoznam maže celý zoznam na heslo - Scratch

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:

Program Nákupný zoznam hovorí počet položiek v zozname - Scratch

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é 7x (45.29 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Scratch

 

Predchádzajúci článok
Zoznamy v Scratchi
Všetky články v sekcii
Scratch
Preskočiť článok
(neodporúčame)
Práca so zvukmi v Scratchi
Článok pre vás napísal PDoctor
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity