Strings | Základy algoritmizácie a programovania (2024/2025)
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 sa venuje reťazcom v jazyku C ako poliam znakov ukončeným špeciálnym znakom s ASCII kódom nula, tzv. terminátorom. Na príklade implementácie Cézarovej šifry je ukázané, ako sa pomocou ASCII tabuľky prevádzajú znaky abecedy na ich poradie, ako sa aplikuje posun pomocou operácie modulo 26 a ako sa výsledok spätne prevádza na znak. Ďalej sa preberá inicializácia reťazcov pomocou apostrofov, rozdiel medzi dĺžkou reťazca a veľkosťou poľa, ako aj práca s reťazcami uloženými v pamäti len na čítanie (read-only), kde nesprávny zápis spôsobí chybu segmentation fault. Predstavená je aj funkcia strlen z knižnice string.h na zistenie dĺžky reťazca, vrátane upozornenia na neefektívne opakované volanie tejto funkcie v podmienke cyklu for a jej nahradenie vlastnou implementáciou my_strlen.
- - Reťazec je pole znakov ukončené znakom s ASCII kódom nula (terminátor, \0).
- - Implementácia Cézarovej šifry: posun znakov abecedy o zadaný počet pozícií.
- - Výpočet poradia písmena v abecede odpočítaním ASCII kódu znaku 'A' (resp. 'a').
- - Použitie operácie modulo 26 na zabezpečenie cyklického prechodu na začiatok abecedy.
- - Rozdiel medzi dĺžkou reťazca a veľkosťou poľa (veľkosť poľa = dĺžka reťazca + 1 pre terminátor).
- - Reťazce v read-only pamäti nemožno meniť, inak nastane chyba segmentation fault.
- - Funkcia strlen() z knižnice string.h slúži na zistenie dĺžky reťazca; jej opakované volanie v podmienke cyklu je neefektívne, preto sa odporúča vlastná optimalizovaná implementácia.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky