Prednáška č. 9 | Základy algoritmizácie a programovania (2017/2018)
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Prednáška nadväzuje na tému reťazcov a rieši nedostatky funkcie scanf pri práci s textom obsahujúcim medzery, pričom ako alternatívu spomína funkciu fgets. Ako motivačný príklad slúži unixový príkaz tr (translate), ktorý pomocou dvoch množín znakov rovnakej dĺžky nahrádza znaky z prvej množiny zodpovedajúcimi znakmi z druhej – demonštruje sa to na prevode malých písmen na veľké aj na implementácii Cézarovej šifry. Následne sa študenti pokúšajú naprogramovať vlastnú obdobu nástroja tr v jazyku C: načítajú prvú skupinu znakov pomocou scanf s %s do poľa, pričom sa zdôrazňuje potreba overiť, že sa v nej znaky neopakujú (inak by preklad bol nejednoznačný). Na kontrolu unikátnosti znakov sa navrhuje dvojitý cyklus for podobný princípu bubble sortu, kde sa každý znak porovnáva so všetkými nasledujúcimi. Vyučujúci zároveň upozorňuje na aktuálne zadania (Hangman, PS5/PS6) a ich súvislosť s náplňou skúšky typu A.
- - Nedostatok scanf pri načítaní reťazcov s medzerami – riešenie pomocou fgets alebo špeciálneho formátu scanf.
- - Unixový príkaz tr prekladá znaky z prvej množiny na zodpovedajúce znaky z druhej množiny podľa indexu.
- - Na tr možno demonštrovať jednoduchý prevod veľkých/malých písmen aj Cézarovu šifru s posunom.
- - Implementácia vlastného tr v C: načítanie prvej skupiny znakov (set1) do poľa pomocou scanf("%s", set1).
- - Nutnosť overiť, že znaky v set1 sa neopakujú, inak by bol preklad nejednoznačný.
- - Kontrola opakovania znakov pomocou vnoreného cyklu for (princíp podobný bubble sortu) a funkcie strlen.
- - Upozornenie na súvis so zadaniami PS5/PS6 (Hangman) a prípravu na skúšku typu A, kde sa vyžaduje písanie funkcií podľa zadanej špecifikácie.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky