Podcast o Základy informatiky a programovania

Základy informatiky a programovania: Komplexný sprievodca

Podcast

Počítačová architektúra: Od bitov k prerušeniam0:00 / 26:19
0:001:00 zostáva
MatejPredstav si, že sedíš na skúške a pristane pred tebou presne táto otázka: „Popíšte Harvardskú architektúru a jej výhody.“ Znie to zložito? Po nasledujúcich pár minútach ti to bude úplne jasné.
NatáliaToto je Studyfi Podcast, kde rozoberáme kľúčové témy pre tvoje skúšky.
Kapitoly

Počítačová architektúra: Od bitov k prerušeniam

Délka: 26 minut

Kapitoly

Harvardská architektúra

Procesor ARM Cortex-M3

Spracovanie inštrukcií

Módy a zásobníky

Prerušenia a výnimky

Dvojrozmerné polia

Vývojové diagramy

Podmienené príkazy

Prepínač Switch

Jazyk počítačov

Medzičlánok Assembly

Pohodlie vyšších jazykov

Rýchlosť vs. pohodlie

MVC v Praxi

Prehľadnosť na prvom mieste

Čo je databáza?

Základné príkazy SQL

Bezpečnosť a SQL Injection

Spájanie tabuliek

Čo vidí používateľ

Cesta používateľa

Zákulisie aplikácie: Admin

Formuláre a dáta

Logika a cykly

Spojenie s databázou

Praktické PHP triky

Zhrnutie a záver

Přepis

Matej: Predstav si, že sedíš na skúške a pristane pred tebou presne táto otázka: „Popíšte Harvardskú architektúru a jej výhody.“ Znie to zložito? Po nasledujúcich pár minútach ti to bude úplne jasné.

Natália: Toto je Studyfi Podcast, kde rozoberáme kľúčové témy pre tvoje skúšky.

Matej: Dobre, Natália, tak čo je to tá Harvardská architektúra?

Natália: Super otázka. V podstate si to predstav tak, že procesor má oddelenú pamäť pre program, teda kód, a oddelenú pamäť pre dáta. Každá má svoju vlastnú zbernicu.

Matej: A prečo je to dôležité?

Natália: Pretože to umožňuje paralelné načítavanie inštrukcií a zároveň prácu s dátami. Výsledkom je oveľa vyšší výkon oproti staršej, Von Neumannovej architektúre. Je to ako mať dve ruky namiesto jednej.

Matej: Okej, to dáva zmysel. Máš nejaký konkrétny príklad, kde sa to využíva?

Natália: Jasné! Skvelým príkladom je procesor ARM Cortex-M3. Je to 32-bitový procesor, čo znamená, že pracuje s 32-bitovými dátami, má 32-bitové registre a dokáže adresovať až 4 gigabajty pamäte.

Matej: Štyri gigabajty? To je dosť miesta.

Natália: Presne tak, vďaka jeho 32-bitovej adresnej zbernici. A áno, využíva práve Harvardskú architektúru.

Matej: A ako presne taký procesor spracováva príkazy, teda inštrukcie?

Natália: Využíva takzvané trojstupňové pipeline spracovanie. Vieš, čo to znamená?

Matej: Znie to ako nejaké potrubie.

Natália: Blízko! Sú to tri kroky, ktoré sa dejú súčasne na rôznych inštrukciách: Fetch, čiže načítanie, potom Decode, dekódovanie, a nakoniec Execute, teda vykonanie. Zvyšuje to efektivitu.

Matej: Fascinujúce. A počul som, že procesor môže pracovať v rôznych módoch. Je to pravda?

Natália: Áno. Má dva hlavné módy: Thread mode pre bežný program a Handler mode pre obsluhu prerušení a výnimiek. Po resete vždy začína v Thread mode.

Matej: A čo tie režimy, privilegovaný a neprivilegovaný?

Natália: Tie súvisia so zásobníkmi. V privilegovanom režime používa hlavný zásobník, MSP. V neprivilegovanom zasa procesný zásobník, PSP. Po resete je to teda Thread mode, privilegovaný režim a používa MSP.

Matej: Super, posledná vec na dnes – prerušenie. Čo to je?

Natália: Predstav si, že varíš a zrazu ti zvoní telefón. Varenie je tvoj program, telefón je prerušenie. Prestaneš variť, vybavíš hovor a vrátiš sa k vareniu.

Matej: To je skvelé prirovnanie! A aký je rozdiel medzi prerušením a výnimkou?

Natália: Jednoduchý. Výnimky vznikajú priamo v procesore, napríklad chyba alebo reset. Prerušenia sú externé požiadavky, zvyčajne od periférií ako časovač alebo klávesnica.

Matej: Super, takže prerušenia a výnimky máme v malíčku. Ale poďme od hardvéru k softvéru. Často sa stretávam s pojmom dvojrozmerné pole v jazyku C. Znie to ako niečo z Matrixu.

Natália: Dobrá predstava! A nie si ďaleko od pravdy. Dvojrozmerné pole si môžeš predstaviť ako tabuľku alebo mriežku... napríklad ako šachovnicu. Máš riadky a stĺpce.

Matej: Okej, šachovnica dáva zmysel. Ako s tým pracujem v kóde? Predpokladám, že na to neexistuje príkaz "daj mi políčko E4".

Natália: To veru nie. Na prechádzanie poľa potrebujeme dva vnorené cykly. Ten vonkajší ide po riadkoch a vnútorný pre každý riadok prejde všetky stĺpce. Je to ako keď kontroluješ lístky v kine – prejdeš jeden rad, sedadlo po sedadle, a potom ideš na ďalší rad.

Matej: Aha! Takže jeden cyklus na riadky, druhý na stĺpce. A ako poviem programu, ktorý prvok presne chcem?

Natália: Úplne jednoducho. Použiješ dva indexy. Prvý pre riadok, druhý pre stĺpec. Napríklad pole je úplne prvý prvok vľavo hore. Kľúčové je pamätať si, že C-čko počíta od nuly.

Matej: To je jasné. Takže vieme ukladať dáta. Ale čo logika? Ako si najlepšie naplánujem, čo má program robiť, skôr než napíšem jediný riadok kódu?

Natália: Výborná otázka! Na to slúžia vývojové diagramy. Je to vlastne grafická mapa tvojho programu. Kreslíš si krabičky a šípky, ktoré znázorňujú jednotlivé kroky a hlavne rozhodnutia.

Matej: Takže niečo ako komiks pre programátorov?

Natália: Presne tak! Ovál je štart a koniec, obdĺžnik je nejaká operácia – napríklad načítaj číslo – a kosoštvorec je rozhodnutie. Každé "áno" alebo "nie" z kosoštvorca ťa pošle inou cestou.

Matej: A ten kosoštvorec potom v kóde zodpovedá čomu?

Natália: Podmienke if. Program sa dostane k bodu, kde sa musí rozhodnúť. Napríklad, je zadané číslo väčšie ako nula? Ak áno, ide jednou cestou. Ak nie, ide druhou. Diagram ti to pomôže vizualizovať.

Matej: Rozumiem. Poďme sa teda pozrieť na tie podmienky. Aký je rozdiel medzi úplným a neúplným podmieneným príkazom?

Natália: Je to jednoduchšie, než sa zdá. Neúplný príkaz má len if. Reaguje iba na jednu situáciu. Napríklad, if (vek >= 18) { ... }. Ak máš 18 a viac, niečo sa stane. Ak menej, program to proste preskočí a ide ďalej.

Matej: A úplný teda rieši aj tú druhú možnosť?

Natália: Presne. Úplný príkaz má if aj else. Buď si plnoletý, alebo nie si. Program musí vykonať jednu z týchto dvoch vetiev. Nikdy sa nestane, že by nevykonal žiadnu, alebo obe naraz.

Matej: A čo ak mám viac možností? Napríklad známky v škole – jednotka, dvojka, trojka...

Natália: Na to použiješ reťazec else if. Program sa postupne pýta: je známka 1? Ak nie, je známka 2? Ak nie, je známka 3? Vykoná prvú podmienku, ktorá platí, a ostatné preskočí.

Matej: Takže reťaziť else if môže byť pri veľa možnostiach dosť neprehľadné. Existuje nejaká elegantnejšia alternatíva?

Natália: Existuje! Volá sa to prepínač, alebo switch. Je to ideálne, keď porovnávaš jednu premennú s viacerými konkrétnymi hodnotami. Namiesto hromady if-ov máš jednotlivé prípady – case.

Matej: Čiže case 1, case 2 a tak ďalej. A vidím tam aj slovo break. To je dôležité?

Natália: Absolútne kľúčové! Bez príkazu break by program po nájdení zhody pokračoval a vykonal by aj všetky ďalšie case bloky pod ním. Tomu sa hovorí prepadnutie a vie to narobiť peknú šarapatu.

Matej: Takže break je taký záchranca pred chaosom. A čo default?

Natália: Default je poistka. Vykoná sa vtedy, ak sa hodnota nezhoduje so žiadnym case. Nie je povinný, ale je dobrým zvykom ho používať. Takto máš ošetrené aj neočakávané vstupy.

Matej: Perfektné zhrnutie! Takže od polí sme sa dostali až k elegantným prepínačom. Čo nás čaká nabudúce?

Natália: Nabudúce sa pozrieme priamo do srdca stroja. Odhalíme, ako sa z našich nápadov stáva niečo, čomu rozumie procesor. Porozprávame sa o rôznych úrovniach programovacích jazykov.

Matej: Úrovne? To znie ako nejaká videohra. Začíname na leveli jeden a postupne sa zlepšujeme?

Natália: V podstate áno, ale je to trochu naopak. My, ľudia, pracujeme na tých najvyšších a najpohodlnejších úrovniach. No a počítač... ten rozumie len tej najnižšej.

Matej: Takže úplný základ? Čo to znamená?

Natália: Znamená to reč núl a jednotiek. Volá sa to strojový kód. Je to jediný jazyk, ktorému procesor priamo rozumie. Pre človeka je to v podstate nečitateľná zmes, napríklad 01001000 10000011 a tak ďalej.

Matej: Skúsil som sa tak prihovoriť svojmu notebooku, ale asi nerozumel môjmu prízvuku.

Natália: To sa nečudujem. Je to extrémne náročné a nepraktické. Predstav si, že by si sa musel učiť jazyk, ktorý má len dve slová.

Matej: Dobre, takže písať v nulách a jednotkách je... šialenstvo. Aký bol ďalší krok?

Natália: Ďalší krok bol Jazyk symbolických inštrukcií, alebo skrátene JSI, či Assembly. To je už o krôčik bližšie k nám.

Matej: V čom presne?

Natália: Namiesto binárneho kódu používa krátke, zapamätateľné skratky, takzvané mnemotechniky. Napríklad namiesto 10110001 napíšeš MOV. Každá táto skratka zodpovedá presne jednej inštrukcii v strojovom kóde.

Matej: Aha, takže je to taký prekladač... alebo skôr slovník. Je to už použiteľnejšie?

Natália: Je, ale stále je to veľmi nízkoúrovňové a viazané na konkrétny typ procesora. Program v Assembly pre jeden procesor ti na inom proste nepôjde. Na preklad do strojového kódu potom slúži špeciálny program, assembler.

Matej: Takže sa konečne dostávame k jazykom, ktoré poznám aj ja! C, Python, Java...

Natália: Presne tak. To sú vyššie programovacie jazyky. A tu je ten kľúčový rozdiel — sú navrhnuté tak, aby boli blízke ľudskej reči. Sú čitateľné a zrozumiteľné.

Matej: A jeden príkaz asi neurobí len jednu vec, však?

Natália: Správne. Jeden riadok v Pythone, napríklad print("Ahoj"), sa v pozadí preloží na desiatky, možno stovky inštrukcií strojového kódu.

Matej: A ako prebieha ten preklad? Spomínala si assembler pre JSI. Čo sa používa tu?

Natália: Máme dve hlavné metódy. Prvou je kompilátor. Ten zoberie celý tvoj kód naraz, preloží ho do strojového kódu a vytvorí spustiteľný súbor. Takto funguje napríklad jazyk C.

Matej: A tá druhá?

Natália: Druhou je interpret. Ten kód neprekladá dopredu. Číta ho a vykonáva riadok po riadku, za behu. Takto funguje napríklad Python alebo PHP. Je to flexibilnejšie, ale zvyčajne o niečo pomalšie.

Matej: Dobre, takže... prečo vôbec ešte niekto používa tie nižšie jazyky, keď sú vyššie tak pohodlné?

Natália: Skvelá otázka. Všetko je to o kompromise medzi rýchlosťou a pohodlím. Strojový kód a Assembly sú bleskovo rýchle. Niet tam žiadnej vrstvy navyše, procesor to vykonáva priamo. Preto sa používajú tam, kde je rýchlosť absolútne kritická. Napríklad v ovládačoch zariadení alebo v jadre operačného systému.

Matej: A vyššie jazyky?

Natália: Tie obetujú kúsok výkonu za obrovskú výhodu — prenositeľnosť a rýchlosť vývoja. Kód napísaný v Pythone môžeš spustiť na Windowse, na Macu, na Linuxe... takmer bez úprav. Pri Assembly by si musel napísať tri rôzne programy.

Matej: Chápem. Takže kľúčový poznatok je, že si vyberáš nástroj podľa práce. Nepôjdeš kopať jamu s lyžičkou, aj keď sa pohodlne drží.

Natália: Perfektná analógia! Presne tak. Strojový kód je jazyk procesora, JSI ho robí čitateľnejším a vyššie jazyky sú najbližšie nám, ľuďom. Ale všetky cesty nakoniec vedú do Ríma... teda k strojovému kódu.

Matej: Super. Mám v tom oveľa jasnejšie. Keď už teda vieme, v čom písať, poďme sa pozrieť na to, kde to vlastne píšeme.

Natália: Presne tak. A to "kde" nie je len o textovom editore. Je to hlavne o štruktúre, alebo ak chceš, o architektúre nášho kódu. Najznámejšia je MVC.

Matej: MVC? To znie ako nejaká tajná skratka ministerstva.

Natália: Je to skratka pre Model-View-Controller. Predstav si to ako recept na uprataný kód. Má tri hlavné zložky a dnes sa pozrieme na tú poslednú – Controller.

Matej: Dobre, Controller. Čo presne robí?

Natália: Controller je taký dirigent orchestra. Prijíma požiadavky od používateľa, napríklad kliknutie na tlačidlo. Potom povie Modelu, aby pripravil správne dáta a nakoniec ich pošle do View, aby sa zobrazili. Je to riadiaca vrstva.

Matej: Okej, to dáva zmysel. Takže v praxi... Kliknem na "Zobraziť profil". Čo sa stane?

Natália: Super príklad. Tvoj klik zachytí Controller. Ten povie: "Hej, Model, daj mi dáta pre profil číslo 123." Model ich vytiahne z databázy a vráti ich Controlleru.

Matej: A Controller ich len prepošle ďalej?

Natália: Presne tak. Podá ich vrstve View a povie: "Na, tu máš dáta, zobraz ich pekne." A ty uvidíš svoj profil. Každý má svoju jasne danú úlohu.

Matej: A aký bol svet predtým? Pred týmto... uprataným receptom?

Natália: Bol to taký divoký západ. Hovoríme tomu klasické PHP, kde bolo všetko v jednom obrovskom súbore. Kód pre databázu, logika, HTML... všetko zmiešané dokopy.

Matej: To znie ako... špagety.

Natália: Presne! Preto sa tomu hovorí "špagetový kód". Pri malom webe to nevadí, ale pri väčšom je to nočná mora. Nevieš, kde čo zmeniť. Zmeníš jednu vec a pokazíš desať ďalších.

Matej: Takže, aby sme to zhrnuli... Aká je hlavná výhoda MVC oproti tomuto... kulinárskemu neporiadku?

Natália: Kľúčový poznatok je toto: MVC rozdeľuje aplikáciu na tri samostatné vrstvy. Model pracuje s dátami, View ich zobrazuje a Controller ich prepája. Vďaka tomu je kód oveľa prehľadnejší ako v klasickom PHP, kde je všetko na jednom mieste.

Matej: Super, takže menej špagiet, viac poriadku. To beriem. Vďaka za vysvetlenie! Teraz, keď máme štruktúru, čo tak pozrieť sa na nástroje, ktoré nám s tým pomôžu?

Natália: Presne tak, Matej. A tým najdôležitejším nástrojom v našom arzenáli je databáza. Predstav si ju ako takú inteligentnú skriňu na dáta. Bez nej by naša aplikácia mala pamäť ako zlatá rybka.

Matej: Takže žiadne ukladanie do textových súborov, ako som to robil na základnej? To znie ako pokrok.

Natália: Absolútne. Profesionálne aplikácie potrebujú štruktúru. A na komunikáciu s touto našou inteligentnou skriňou používame jazyk, ktorý sa volá SQL.

Matej: SQL... To je ten, čo vyzerá ako anglické vety? Počul som, že je to celkom priamočiare.

Natália: Je to tak. Sú tam štyri základné operácie, ktoré musíš poznať. SELECT, INSERT, UPDATE a DELETE. Je to ako... čítanie, písanie, prepisovanie a vymazávanie v zošite.

Matej: Dobre, to dáva zmysel. Takže SELECT je na čítanie? Akože „vyber mi všetkých používateľov“?

Natália: Presne. Povieš SELECT meno, email FROM pouzivatelia. A bum, máš zoznam. Ak chceš pridať nového žiaka, použiješ INSERT. Tam povieš, do ktorých stĺpcov a aké hodnoty chceš vložiť.

Matej: A čo ak niekto spraví chybu v mene? Tam prichádza UPDATE?

Natália: Bingo. Ale tu je kľúčová vec — klauzula WHERE. S ňou povieš, ktorý PRESNE záznam chceš zmeniť. Napríklad WHERE id = 1. Ak ju zabudneš... zmeníš mená VŠETKÝM používateľom v tabuľke.

Matej: Fúha. To znie ako recept na katastrofu. Predpokladám, že to isté platí pre DELETE.

Natália: Ešte horšie! Zabudnuté WHERE pri príkaze DELETE je ako stlačiť tlačidlo na sebadeštrukciu celej tabuľky. Všetky dáta sú preč. Navždy.

Matej: Dobre, takže pravidlo číslo jedna: dvakrát meraj a raz maž, ale VŽDY s klauzulou WHERE. Chápem.

Natália: A keď už hovoríme o bezpečnosti... Musíme sa chrániť pred útokmi. Ten najznámejší sa volá SQL Injection.

Matej: Znie to ako niečo z lekárskeho prostredia.

Natália: Skôr ako keby ti niekto do tvojej vety prepašoval vlastné slová a úplne zmenil jej význam. Útočník môže cez formulár poslať škodlivý kód, ktorý by mohol napríklad vymazať celú databázu.

Matej: Takže ako sa bránime? Nejaký bodyguard pre naše príkazy?

Natália: V podstate áno. A ten bodyguard sa volá prepare. Miesto toho, aby sme dáta od používateľa vkladali priamo do príkazu, použijeme zástupné symboly. Až potom bezpečne doplníme dáta. Tým zaistíme, že sa žiadny škodlivý kód nevykoná.

Matej: Super, bezpečnosť máme. Ale čo ak sú dáta rozdelené vo viacerých tabuľkách? Napríklad máme žiakov v jednej a zoznam tried v druhej.

Natália: Výborná otázka. Práve preto máme rôzne typy kľúčov. Každý žiak má svoj unikátny PRIMARY KEY, napríklad ID. A v tabuľke žiakov máme aj FOREIGN KEY — cudzí kľúč, ktorý odkazuje na ID triedy v druhej tabuľke.

Matej: Aha, takže to je to prepojenie. Ako ich ale potom zobrazím spolu? Aby som videl meno žiaka aj názov jeho triedy naraz.

Natália: Na to slúži príkaz JOIN. Konkrétne LEFT JOIN. Ten vezme každý riadok z ľavej tabuľky — v našom prípade žiakov — a pripojí k nemu zodpovedajúci riadok z pravej tabuľky, teda z tried.

Matej: A prečo práve LEFT JOIN? Je v tom nejaký háčik?

Natália: Je. Slovo LEFT zaručí, že sa nám zobrazia VŠETCI žiaci, aj tí, ktorí z nejakého dôvodu ešte nemajú priradenú triedu. Pri nich by sa namiesto názvu triedy zobrazila hodnota NULL. Obyčajný JOIN by takých žiakov úplne preskočil.

Matej: Rozumiem. Takže s LEFT JOIN máme istotu, že nikoho nestratíme. To je naozaj silný nástroj. Databázy sú vlastne celkom logické, keď sa nad tým človek zamyslí.

Natália: Presne tak! Sú základným kameňom takmer každej modernej aplikácie. Keď zvládneš prácu s dátami, máš v rukách obrovskú moc.

Matej: Paráda. Takže vieme, ako dáta bezpečne uložiť a spravovať. Čo ďalej? Ako zariadime, aby s nimi mohol používateľ reálne pracovať na stránke?

Natália: Skvelá otázka, Matej. Tu prichádza na rad to, čomu hovoríme „frontend“. Je to vlastne všetko, čo používateľ vidí a s čím interaguje na obrazovke.

Matej: Takže to je tá vizuálna časť... samotná webstránka?

Natália: Presne tak. A každá dobrá stránka má tri základné časti. Hore je hlavička, alebo „header“. Tam nájdeš logo, hlavné menu a tlačidlá na prihlásenie či registráciu.

Matej: Jasné, to je navigácia. Aby som sa nestratil.

Natália: Presne! Potom v strede je hlavný obsah. Ten sa mení podľa toho, kde práve si. Či si na domovskej stránke, v profile alebo čítaš článok.

Matej: A čo je úplne dole? Tam sú zvyčajne tie veci písané malým písmom.

Natália: Áno, to je pätička, alebo „footer“. Tam patria kontaktné údaje, meno autora a odkazy na sociálne siete. A áno, aj tie zmluvné podmienky, ktoré nikto nečíta.

Matej: Dobre, takže štruktúra je jasná. Ako sa ale z anonymného návštevníka stane reálny používateľ?

Natália: Celé to začína registráciou. Musí byť jednoduchá a intuitívna. Ale systém si musí dať pozor na pár vecí.

Matej: Akých napríklad?

Natália: No, systém kontroluje, či už email neexistuje, či si si nezvolil nejakú nadávku ako meno, alebo či si vyplnil všetky povinné polia. Nechceme predsa v databáze neporiadok.

Matej: To dáva zmysel. A čo sa stane potom?

Natália: Po úspešnej registrácii ti príde aktivačný email. Klikneš na odkaz a ten ťa presmeruje naspäť na stránku, ale už ako prihláseného používateľa. A vtedy sa ti odomkne úplne nový svet.

Matej: Získam prístup k svojmu profilu a môžem začať používať všetky funkcie aplikácie.

Natália: Presne. Vidíš svoj obsah, svoje nastavenia... Je to tvoj osobný priestor.

Matej: Dobre, ale čo ak niekto začne robiť problémy? Alebo ak treba niečo v systéme opraviť? Kto to riadi?

Natália: Na to slúži admin rozhranie. Predstav si to ako riadiace centrum celej aplikácie. Je to špeciálna, skrytá časť stránky, kam sa bežný používateľ nikdy nedostane.

Matej: Takže aj keby som poznal adresu, napríklad stranka.sk/admin, nepustí ma to dnu?

Natália: Vôbec nie. Pri každom načítaní tej stránky server overí, či si administrátor. Ak nie, smola. Je to prísne strážené.

Matej: A čo všetko môže taký admin robiť?

Natália: Prakticky všetko. Vidí všetkých používateľov, môže upravovať a mazať akýkoľvek obsah. Má v rukách kľúče od celého kráľovstva. Preto je táto rola taká dôležitá.

Matej: Páni. To je veľká zodpovednosť. Čo ak omylom niečo dôležité vymaže?

Natália: Dobrý systém sa proti tomu chráni. Pred každým mazaním sa zobrazí potvrdzovacie okno: „Naozaj to chcete vymazať?“. Bez potvrdenia sa nič nestane.

Matej: A ako systém vie, či som admin alebo bežný používateľ, keď sa prihlasujem cez ten istý formulár?

Natália: Po zadaní mena a hesla sa systém pozrie do databázy. Tam je pri tvojom mene uložená tvoja „rola“. Ak je rola „admin“, presmeruje ťa do admin rozhrania. Ak „používateľ“, ideš na bežnú stránku.

Matej: Fascinujúce. Takže databáza je vlastne mozog, ktorý rozhoduje, kto kam môže ísť a čo môže robiť. To je základ celej logiky, však?

Natália: Trafil si klinec po hlavičke! A presne o tejto logike, o tom, ako sa spájajú dáta s tým, čo vidíš, si povieme nabudúce viac.

Matej: Trafil som klinec po hlavičke! Takže nabudúce je teraz? Poďme sa pozrieť na tú logiku v praxi. Ukážeš mi nejaké kúzla v PHP?

Natália: Presne tak, Matej. Žiadne čakanie. Dnes sa pozrieme na to, ako PHP oživuje webové stránky. A začneme niečím, čo každý pozná — formulármi.

Matej: Myslíš tie políčka, kam píšem meno a heslo?

Natália: Presne tie. Formulár je ako poštár. Zbierie dáta od teba a odnesie ich na server. Na to používa dve metódy: GET a POST.

Matej: Aký je v tom rozdiel?

Natália: Predstav si to takto. GET kričí tvoju objednávku cez celú kaviareň. Všetci ju vidia v adrese stránky. Je to fajn na vyhľadávanie, ktoré chceš zdieľať.

Matej: A POST?

Natália: POST je diskrétny lístoček, ktorý podáš baristovi. Dáta sú skryté. Ideálne na heslá a citlivé údaje. Vieš, kde to hneď využijeme?

Matej: Netuším.

Natália: V jednoduchej kalkulačke! Vytvoríš formulár s dvoma políčkami na čísla a tlačidlom. Keď ho odošleš metódou POST, PHP na serveri zoberie tie čísla, spočíta ich, a pošle ti naspäť výsledok.

Matej: Chápem. Takže PHP je ten mozog, ktorý robí výpočty. A ako sa rozhoduje? Používa tie logické operátory, o ktorých si hovorila?

Natália: Presne! Máme tri hlavné. „AND“, čiže „a zároveň“, vyžaduje, aby platili obe podmienky. Napríklad, máš viac ako 18 A ZÁROVEŇ máš vodičák. Inak auto nešoféruješ.

Matej: Jasné. A ďalší?

Natália: Potom je tu „OR“, čiže „alebo“. Tam stačí jedna podmienka. Povedzme, že na zľavu ti stačí byť študent ALEBO dôchodca. A posledný je „NOT“, ktorý všetko otočí. Použiješ ho, keď chceš zistiť, či niečo neplatí. Napríklad, ak používateľ NIE JE prihlásený, zobraz mu prihlasovací formulár.

Matej: To znie logicky. A čo ak chcem niečo opakovať viackrát? Nemusím to písať stokrát, však?

Natália: Samozrejme, že nie. Na to máme cykly. Cyklus for použiješ, keď presne vieš, koľkokrát sa má niečo zopakovať. Napríklad vypísať čísla od 1 do 5.

Matej: A keď neviem presný počet?

Natália: Na to je cyklus while. Ten beží, dokým platí nejaká podmienka. A nakoniec foreach, ten je ideálny na prechádzanie zoznamov. Povieš mu: „pre každé meno v tomto zozname urob toto“.

Matej: Super. A všetky tie mená a dáta sú uložené... v databáze, však? Ako sa s ňou PHP rozpráva?

Natália: Je to jednoduchšie, ako si myslíš. V PHP povieš: „Pripoj sa k tejto databáze, tu máš meno a heslo.“ Je to jediný riadok kódu. Ak sú údaje správne, spojenie je nadviazané.

Matej: A potom si môžem pýtať dáta?

Natália: Áno. Pošleš databáze SQL príkaz, napríklad „daj mi mená a emaily všetkých používateľov“. Databáza ti pošle tabuľku s výsledkami a ty si ju pomocou cyklu foreach pekne po riadkoch vypíšeš na stránku.

Matej: Wow. Takže vieme spracovať formuláre, robiť rozhodnutia, opakovať príkazy a baviť sa s databázou. To znie ako superschopnosť.

Natália: A vieš, čo je na tom najlepšie? Môžeš s tým robiť skvelé veci. Napríklad, z rodného čísla vieš na pár riadkov zistiť pohlavie. Stačí sa pozrieť na číslo mesiaca. Ak je väčšie ako 50, je to žena.

Matej: To je geniálne jednoduché! A čo niečo z finančného sveta?

Natália: Žiaden problém. Môžeme si naprogramovať kalkulačku sporenia. Zadáme, že 50 rokov odkladáme 50 eur mesačne pri 4% úroku. Cyklus for prejde všetkých 600 mesiacov a v každom pripočíta vklad a úrok. Vďaka zloženému úročeniu na konci uvidíš obrovské číslo.

Matej: Takže, aby som to zhrnul... PHP je jazyk, ktorý beží na serveri. Dokáže spracovať dáta z formulárov, riadiť logiku pomocou podmienok a cyklov, a hlavne, komunikovať s databázou, aby vytvoril dynamický obsah pre každého používateľa na mieru.

Natália: Povedal si to dokonale. Od jednoduchej kalkulačky až po zložitý systém sporenia, PHP je neuveriteľne mocný nástroj. A hlavne, je to základ, na ktorom stojí obrovská časť dnešného internetu.

Matej: Natália, ďakujem ti veľmi pekne. Myslím, že si nám všetkým otvorila dvere do sveta programovania a ukázala, že to nie je žiadna mágia, ale logické a fascinujúce remeslo.

Natália: Rada som pomohla, Matej. A vám, milí poslucháči, ďakujeme, že ste boli s nami. Dúfam, že vás tieto informácie motivovali. Majte sa pekne!

Matej: Dopočutia nabudúce!