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

Lekce 12 - Seznamy ve Scratchi podruhé

V minulé lekci, Seznamy ve Scratchi, jsme si vysvětlili, co je to seznam, a naučili jsme se ho vytvořit, naplnit a vymazat.

V dnešním Scratch tutoriálu se ještě budeme věnovat seznamu. Popíšeme si další bloky pro práci se seznamem a naučíme se například zjistit jeho délku, nahradit v něm konkrétní položku nebo zjistit, zda se v něm konkrétní položka vyskytuje. Nakonec vylepšíme náš projekt s nákupním seznamem a nové bloky pro práci se seznamem si při tom vyzkoušíme 😉

Bloky pro práci se seznamem

Pojďme si tedy nejprve popsat další možnosti práce se seznamem ve Scratchi.

Vložení položky na konkrétní místo

Někdy se stane, že nechceme položku vložit na konec seznamu, ale chceme ji vložit třeba doprostřed nebo na začátek. K tomu slouží blok vlož na v:

Blok vlož na v - Scratch

Chceme-li tedy přidat položku na začátek seznamu, ponecháme v bloku hodnotu indexu 1. Můžeme samozřejmě také zadat jiný index, kterým určíme, na jaké místo má být položka uložena.

Nahrazení položky v seznamu

Někdy se může stát, že budeme chtít změnit název položky v seznamu. To můžeme udělat, stejně jako vložení a smazání položky, buď ručně, nebo programově. Pojďme si ukázat obě varianty.

Nahrazení položky programově

Pokud chceme nahradit položku programově, použijeme k tomu blok nahraď v hodnotou:

Blok nahraď v hodnotou - Scratch

Do bloku nejprve zadáme index prvku, který nahrazujeme, poté nový název položky, jež se na toto místo zapíše.

Připomeňme si, že se seznam ve Scratchi čísluje od 1 😉

Nahrazení položky ručně

Nahrazení vybrané položky mimo běh programu provedeme tak, že na ni klikneme a můžeme začít psát nový název:

Nahrazení položky ručně - Scratch

Když jsme s úpravou hotovi, klikneme někam mimo položku, tím se nová hodnota uloží 😉

Vypsání konkrétního prvku ze seznamu

Kdybychom například dělali závodní hru a potřebovali bychom oznámit jména vítězů, může se nám hodit blok pro výpis konkrétního prvku prvek z:

Blok prvek z - Scratch

Jak asi tušíte, číslo v bloku je pořadí prvku, který chceme vypsat.

Zjištění délky seznamu

Zjistit délku našeho seznamu bychom již dokázali pomocí cyklu. Ten by pokračoval, dokud by nenarazil na konec seznamu, a my bychom počítali, kolikrát proběhl. To je ale zbytečně zdlouhavé a složité řešení 😉 Scratch má totiž přesně k těmto účelům zabudovaný blok délka:

Blok délka - Scratch

Obsahuje seznam položku?

Poslední blok pro práci se seznamem, který nám zbývá, je blok obsahuje. V minulé lekci jsme použili trochu kulišácké řešení. Když jsme chtěli vědět, jestli je nějaká položka v seznamu, zeptali jsme se na její pořadí, a pokud bylo nulové, znamenalo to, že položka neexistuje. To jsme udělali hlavně proto, abychom si zapamatovali, že se seznam čísluje od 1 a že pro neexistující položku se vrátí 0.

Existuje ale i elegantnější řešení. Tím je použití bloku obsahuje:

Blok obsahuje - Scratch

Jak můžeme vidět podle tvaru bloku, vrací hodnotu pravda/nepravda, takže se dá použít v blocích když tak nebo v cyklech 😉

Nákupní seznam

S novými znalostmi o možnostech seznamů pojďme z našeho projektu s nákupním seznamem udělat trochu pokročilejší aplikaci. Nový nákupní seznam bude umět přidávat a odebírat položky podle názvu. Pokud zadaná položka v seznamu již existuje a chceme ji přidat, kočičák nás na to upozorní a položka se znovu nepřidá. Pokud chceme smazat položku, která v seznamu není, položka se samozřejmě nesmaže 🙂

Budeme se také moci kočičáka zeptat, jestli má konkrétní položku v seznamu. Na vyžádání nám kočičák všechny položky ze seznamu přečte. Naučíme ho také vyhledat položku na konkrétním místě v seznamu. A pokud budeme chtít, můžeme kočičáka nechat celý seznam smazat, ale k tomu budeme muset zadat heslo. Kočičák nám také řekne, kolik položek v seznamu je 🙂

Že to vypadá složitě? Ale vůbec není, protože všechno, co je k tomu potřeba, už umíme 😉 Pojďme na to.

Příprava těla programu

Začneme tím, že si vytvoříme proměnnou programBezi a seznam nakupniSeznam. Na plochu si umístíme startovní blok a za něj blok nastav na, který nastaví proměnnou programBezi na hodnotu ANO. Za blok nastav na umístíme blok opakuj dokud nenastane s blokem obsahuje, který má na levé straně hodnotu programBezi a na pravé hodnotu NE:

Začátek programu nákupní seznam - Scratch

Do těla cyklu vložíme otázku Chcete provést další operaci se seznamem? ANO/NE a za ní blok nastav na, který nastaví proměnnou programBezi na odpověď:

Program Nákupní seznam se bude opakovat - Scratch

Z dřívějších lekcí již víme, že se tento princip využívá, aby se program opakoval a nemuseli jsme ho pořád zapínat ručně 😉

Pojďme dál. Nyní pomocí bloků bublina vypíšeme po sekundě jednotlivé možnosti. Poté vytvoříme proměnnou volba. Za bubliny přidáme otázku s textem Zadejte číslo operace: a blok nastav na, který nastaví proměnnou volba na odpověď:

Program Nákupní seznam má možnost volby - Scratch

Teď za blok, kde nastavujeme proměnnou volba, umístíme sedmkrát blok když tak jinak a jako poslední vnoříme blok když tak. Každý další blok umístíme do větve jinak toho předchozího. Tělo potom bude vypadat takto:

Program Nákupní seznam má bloky pro případy - Scratch

Do prvního bloku dáme jako podmínku, že volba je menší než 1 nebo větší než 7, a do jeho těla bublinu s textem Neplatná volba.:

Program Nákupní seznam má ošetřenou neplatnou volbu - Scratch

Teď do všech ostatních podmínek vložíme bloky rovná se, které na levé straně mají volba a na pravé straně čísla od 1 do 7.

Přidávání položky

Pro první operaci vytvoříme otázku Jakou položku chcete přidat? a za ní nalepíme blok když tak jinak. Podmínkou v bloku bude blok obsahuje, který zjistí, jestli nakupniSeznam obsahuje odpověď. Pokud ano, objeví se bublina sekund Položka na seznamu již je.. Pro případ, že seznam odpověď neobsahuje, vložíme blok přidej k, který přidá odpověď do nákupního seznamu. Za ním bude bublina sekund Položka přidána.:

Program Nákupní seznam přidává položky - Scratch

Celý kód přesuneme do těla volby 1. Stejně budeme postupovat i u dalších operací.

Odstranění položky

Odebrání položky bude podobné, takže můžeme předchozí blok kódu zkopírovat 😉 Otázku potom přepíšeme na Jakou položku chcete odstranit?. Pokud nákupní seznam položku obsahuje, tak ji odstraníme blokem smaž z, který bude mít uvnitř blok pořadí ve s proměnnou odpověď. V bublině pak vypíšeme Položka byla smazána.. Pokud položka v seznamu není, zobrazí se bublina Položka není na seznamu.:

Program Nákupní seznam odebírá položky - Scratch

Je položka na seznamu?

Opět můžeme vycházet z předchozího kódu. Do otázky napíšeme Zadejte název položky:. Pokud položka existuje, vypíše se bublina sekund Položka JE na seznamu., jinak se vypíše Položka NENÍ na seznamu.:

Program Nákupní seznam ví, co je na seznamu - Scratch

Přečtení všech položek

Jako další si vytvoříme proměnnou i. Jak víme, půjde o řídicí proměnnou cyklu 🙂 Přidáme blok nastav na, který nastaví i na 1. Potom umístíme cyklus opakuj dokud nenastane s podmínkou je větší než. Na levé straně doplníme proměnnou i a na pravé blok délka. V těle cyklu bude bublina s obsahem: blok prvek z, která má v sobě proměnnou i. Nezapomeneme přidat blok změň o, který pokaždé zvýší hodnotu i o 1:

Program Nákupní seznam čte celý seznam - Scratch

Výpis položky podle indexu

Zde opět doplníme podobné bloky jako u přidání a odebrání položky. Do otázky napíšeme Zadejte index položky:. V podmínce bude blok nebo, který bude mít nalevo blok odpověď menší než 1 a napravo blok odpověď větší než délka. Podmínka bude splněna, pokud uživatel zadá neplatný index. Vypíšeme o tom tedy zprávu v první bublině. V opačném případě zobrazíme bublinu s blokem prvek z, který obsahuje odpověď:

Program Nákupní seznam čte prvek z konkrétního indexu - Scratch

Smazání celého seznamu

Může se stát, že budeme chtít vymazat celý seznam. Protože by to ale bylo nebezpečné, ošetříme to ještě raději zadáním hesla 😉 Opět si vypůjčíme strukturu bloků z předešlých operací. Do otázky napíšeme Zadejte heslo:. V podmínce využijeme blok rovná se, který bude mít na levé straně odpověď a na pravé straně libovolné heslo, například kočičák 😉 Pokud uživatel zadá stejné heslo, provede se blok smaž všechno z a vypíše se bublina Seznam smazán., jinak se vypíše text Neplatné heslo.:

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

Vypsání délky seznamu

Jako poslední budeme vypisovat délku seznamu. Vezmeme bublinu, do které dáme blok spoj. Vlevo doplníme text V seznamu je položek: s mezerou na konci a doprava přidáme blok délka:

Program Nákupní seznam říká počet položek v seznamu - Scratch

Jako poslední přesuneme na konec programu bublinu Děkuji za použití nákupního seznamu.. A je hotovo 🙂 Celý program je opět ke stažení v příloze lekce.

V následujícím cvičení, Řešené úlohy k 11.-12. lekci Scratche, si procvičíme nabyté zkušenosti z předchozích lekcí.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 7x (45.29 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch

 

Předchozí článek
Seznamy ve Scratchi
Všechny články v sekci
Scratch
Přeskočit článek
(nedoporučujeme)
Řešené úlohy k 11.-12. lekci Scratche
Článek pro vás napsal PDoctor
Avatar
Uživatelské hodnocení:
6 hlasů
Aktivity