Podcast o Dátové typy a pokročilé programovanie v Scratch
Dátové Typy a Pokročilé Programovanie v Scratch
Podcast
Programovanie v Scratch
Délka: 8 minut
Kapitoly
Úvod do Scratchu
Premenné: Čísla a slová
Zoznamy a logické hodnoty
Vlastné bloky pre poriadok
Práca so súbormi
Mapy a súbory
Vytvárame postavy
Klonovanie vs. Duplikovanie
Komunikácia a udalosti
Od Scratchu k OOP
Postava ako Objekt
Komunikácia a Premenné
Zhrnutie a Záver
Přepis
Tereza: ...počkať, takže celý Scratch vlastne dopredu ani nevie, či do premennej dám číslo alebo text? To je neuveriteľné!
Lukáš: Presne tak. Je to dynamicky typovaný jazyk. Nemusíš mu dopredu hovoriť: „Toto bude číslo!“ On si to zistí sám, keď tam tú hodnotu vložíš.
Tereza: Dobre, toto si musíme rozobrať! Vitajte pri Studyfi Podcast, kde sa dnes s expertom Lukášom pozrieme na programovanie v Scratchi, ktoré je zjavne múdrejšie, ako som si myslela.
Lukáš: Ahojte! A je to hlavne super nástroj na učenie sa základov. Tak poďme na to.
Tereza: Fajn, začnime tými premennými. Čo všetko do nich môžem uložiť?
Lukáš: V podstate dve základné veci: čísla alebo text, ktorému programátori hovoria reťazec alebo anglicky string.
Tereza: Takže napríklad skóre v hre by bolo číslo a meno hráča by bol text?
Lukáš: Presne! S číslami potom môžeš robiť všetky možné matematické operácie – sčítanie, násobenie, porovnávanie... Vieš, nastav skóre na nula, a vždy, keď postava niečo chytí, zmeň skóre o jeden.
Tereza: A čo s textom? Tam asi veľa matematiky neurobím.
Lukáš: To veru nie, ale môžeš napríklad spájať texty. Napríklad spojíš pozdrav „Ahoj “ s menom hráča, ktoré zadal. Alebo zistíš dĺžku slova, či overíš, či odpoveď obsahuje správne písmeno.
Tereza: A čo ak potrebujem uložiť viacero vecí naraz? Napríklad zoznam najvyšších skóre?
Lukáš: Na to slúžia zoznamy. Je to ako nákupný zoznam – usporiadaná zbierka hodnôt. Môžeš do nej pridávať nové položky, mazať staré, alebo zisťovať, čo je na piatej pozícii.
Tereza: To je super praktické. A ešte tu máme logické hodnoty. To znie dosť... logicky.
Lukáš: Áno. Ide o odpovede áno/nie, alebo pravda/nepravda. Používaš ich v podmienkach. Napríklad: AK je skóre väčšie ako 10, POTOM vyhral si. Tá časť „skóre je väčšie ako 10“ je logická hodnota. Buď je to pravda, alebo nie.
Tereza: Dobre, a teraz niečo pre pokročilých. Počula som o vlastných blokoch. Prečo by som si mala vytvárať vlastné bloky?
Lukáš: Hlavne kvôli prehľadnosti a opakovaniu. Predstav si, že chceš v programe desaťkrát nakresliť štvorec. Namiesto toho, aby si desaťkrát kopírovala tie isté štyri príkazy, vytvoríš si jeden vlastný blok s názvom „Štvorec“.
Tereza: A potom už len zavolám ten jeden blok? To šetrí kopu miesta!
Lukáš: Presne. A dokonca mu môžeš dať vstup, napríklad dĺžku strany. Takže raz zavoláš blok „Štvorec“ s dĺžkou 50 a druhýkrát s dĺžkou 100. Jeden blok, veľa možností.
Tereza: A posledná vec na dnes – textové súbory. Dá sa v Scratchi načítať niečo z počítača alebo si tam niečo uložiť?
Lukáš: Určite! Funguje to cez spomínané zoznamy. Môžeš si napríklad pripraviť textový súbor s otázkami pre kvíz, kde každý riadok je jedna otázka.
Tereza: A ten potom naimportujem do zoznamu v Scratchi? Jedným klikom?
Lukáš: Áno, pravým tlačidlom na zoznam a „Importovať“. Každý riadok súboru sa stane jednou položkou zoznamu. A rovnako jednoducho vieš zoznam aj exportovať a uložiť si ho ako textový súbor. Perfektné na ukladanie výsledkov hry.
Tereza: Takže skóre máme v premennej, ale čo sa stane, keď hru vypnem? Všetko je preč, však?
Lukáš: Presne tak. Na to slúžia súbory. Ale pozor, Scratch nevie zapisovať do súboru priamo počas hry.
Tereza: A ako to teda funguje?
Lukáš: Počas hry si ukladáš dáta, napríklad skóre, do zoznamu. A až po skončení hry tento zoznam exportuješ. Každý prvok zoznamu bude jeden riadok v textovom súbore.
Tereza: Chápem. Takže si môžem uložiť rebríček najlepších hráčov. A dá sa to použiť aj naopak? Načítanie dát do hry?
Lukáš: Určite! To je super užitočné. Predstav si, že chceš vytvoriť labyrint. Nemusíš ho stavať z blokov ručne.
Tereza: Počkaj... akože načítaš mapu zo súboru?
Lukáš: Presne tak. V súbore máš riadky plné núl a jednotiek, napríklad '1011', '1100'. Jednotka je stena, nula je chodba. Tvoj program to prečíta a sám ten labyrint vykreslí.
Tereza: Dobre, máme bludisko. Kto sa v ňom bude pohybovať? Potrebujeme postavy!
Lukáš: Jasné. Máš tri možnosti. Buď si vyberieš postavu z knižnice, nakreslíš si vlastnú... alebo si naimportuješ hotovú zo súboru.
Tereza: Moje kresliace schopnosti sú... diskutabilné. Takže asi ostanem pri knižnici. A postava môže mať aj viac kostýmov, však? Aby to vyzeralo, že sa hýbe.
Lukáš: Áno, presne. Zmenou kostýmov vytváraš ilúziu pohybu. Každá postava má svoj vlastný scenár, svoje správanie. Je to ako herec s vlastným textom.
Tereza: Čo ak chcem mať v hre desať rovnakých nepriateľov? Musím každého vytvoriť a naprogramovať zvlášť?
Lukáš: Nemusíš. Tu máme dve cesty. Môžeš postavu duplikovať. To je ako ručné kopírovanie. Vznikne ti nezávislá kópia aj so skriptami, ktorú si môžeš upraviť.
Tereza: A tá druhá cesta?
Lukáš: Klonovanie. To je oveľa mocnejšie. Pomocou programu vytvoríš koľko chceš klonov jednej postavy. Všetky budú robiť to isté, čo im povieš v bloku 'pri štarte klonu'.
Tereza: Takže napríklad padajúce jablká v hre?
Lukáš: Perfektný príklad! Alebo guľky, ktoré strieľaš. Nemusíš mať sto postáv guliek, stačí ti jedna, ktorú klonuješ.
Tereza: A ako tie postavy medzi sebou komunikujú? Keď jedna postava niečo urobí, ako to tá druhá zistí?
Lukáš: Pomocou správ. Jedna postava pošle správu, napríklad 'otvor dvere'. Druhá postava má blok 'po prijatí správy otvor dvere' a vykoná, čo má. Je to ako posielanie SMSiek.
Tereza: To znie jednoducho. Takže celé to funguje na princípe akcií a reakcií?
Lukáš: Presne. Scratch je riadený udalosťami. Program čaká, kým sa niečo stane. Kliknutie na vlajku, stlačenie klávesu, kliknutie na postavu...
Tereza: Takže stlačím šípku doprava a postava sa pohne doprava. Stlačím medzerník a ona skočí.
Lukáš: Áno, na to slúžia bloky v kategórii Udalosti. 'Pri stlačení klávesu', 'pri kliknutí na mňa'. Dokonca vieš zistiť, či sa dotýkaš myši alebo akej farby.
Tereza: Tým sa otvárajú obrovské možnosti pre interaktivitu. To už nie sú len animácie, ale skutočné hry. Je úžasné, ako sa tieto jednoduché bloky spájajú do komplexných systémov. A čo vlastné premenné a bloky, Lukáš? Dajú sa veci ešte viac zjednodušiť?
Tereza: Takže premenné a zoznamy máme za sebou. Ale keď sa na to pozrieme zvrchu, ako presne Scratch súvisí s "naozajstným" programovaním ako je Python?
Lukáš: Skvelá otázka na záver! Scratch je vlastne taká tajná prípravka na objektovo orientované programovanie, alebo OOP. Každá postava v Scratchi... je v podstate objekt.
Tereza: Objekt? Akože... má svoje vlastnosti a správanie?
Lukáš: Presne tak! Premenné, ktoré patria len tej postave, sú jej atribúty. A skripty, ktoré jej hovoria, čo má robiť... to sú jej metódy. Je to ako v Pythone, kde má objekt svoje self.x a metódy ako def pohyb(self):.
Tereza: A čo klony? To sú potom inštancie toho objektu?
Lukáš: Bingo! Vytvoríš klon a on zdedí všetky skripty – teda metódy – od originálu. Ale môže mať vlastné hodnoty premenných, napríklad inú rýchlosť alebo smer.
Tereza: A ako spolu tie objekty-postavy komunikujú? V Pythone by si zavolal metódu iného objektu.
Lukáš: V Scratchi na to máme systém správ! Jedna postava pošle správu, ako keby zakričala "Hej, začni sa hýbať!", a druhá, ktorá na tú správu čaká, spustí svoj skript. Je to veľmi elegantné.
Tereza: Spomínal si premenné pre jednu postavu. To je dôležité, však?
Lukáš: Kľúčové! Pri tvorbe premennej si vyberieš, či platí "pre všetky postavy" – to je globálna premenná, ako napríklad skóre. Alebo len "pre túto postavu", čo je lokálna.
Tereza: Takže každý nepriateľský klon môže mať vlastné životy. To je super.
Lukáš: Presne tak. Scratch ťa vlastne učí základy OOP bez toho, aby si musel písať zložitý kód. Je to ako stavať z Lega namiesto toho, aby si si najprv musel vyrobiť vlastné tehličky.
Tereza: Skvelé prirovnanie! Takže, kľúčový poznatok je, že Scratch nie je len hračka. Je to vizuálny úvod do konceptov, ktoré použijete v jazykoch ako Python.
Lukáš: Absolútne. Je to fantastický odrazový mostík.
Tereza: Ďakujeme, Lukáš, za všetky skvelé vysvetlenia. A vám, milí poslucháči, ďakujeme za pozornosť pri dnešnom dieli Studyfi Podcastu. Dopočutia nabudúce!
Lukáš: Dopočutia!