Zdravíčko, vítám vás u nového prvního videotutorialu na programovací jazyk C. Tímto videem bych chtěl odstartovat sérii videotutorialů zaměřenou na základy C. Budu se snažit vysvětlovat učivo tak, aby bylo srozumitelné i pro úplné začátečníky v programování. Budu programovat v operačním systému Linux, konkrétně ve Fedorze.
Zdravé kody budu psát v GEDYTu. Překladat a spouštět kody budu v příkazové řádce. Jinak videa zde budou strukturovaný tak, že budu vysvětovat nějakou látku a na konci videa zadám nějaký úkol z probíraného učiva.
Vy si pak úkol můžete zpracovat sami. A na začátku dalšího videa budu úkol řešit. Takže jako první věc, když chceme programovat v C, tak musíme napsat nějaký zdrojový soubor.
Zdrojový soubor obsahuje nějaký kód, který můžeme napsat v nějakém textovém editoru. Já zde budu psát zdrojové kódy v textovém editoru GEDIT. Ale samozřejmě můžete programovat v jiných editorech či psát programy ve vývojových prostředí jako Visual Studio, NetBeans a další. Tady vidíte příklad zdrojového kodu v C. Zdrojové soubory mají obvyklé koncovku.c.
Tento soubor je pojmenovaný první potřídko kód.c. Doporučuji pojmenovat soubory z potřídky bez diakritiky a nepoužívat mezery mezi slovy, protože se s tím pak lépe pracuje v terminálu. Podménem souborů je zobrazena cesta, kde je soubor uložen.
Zdrojový kód je vlastně nějaký text, který obsahuje určitá slova, znaky, které jsou napsány v určitém pořadí tak, aby výslený program dělal to, co od něj chceme. Teď ještě přeskočím od vysvětování tohoto kódu a stročně popíšu několik funkcí textového editoru GEDIT. Jak vlastně otevřít tento textový editor? No, jde to několika způsoby.
Zavřu si tento soubor a mohu zde kliknout na Činnosti. a tady dole nás obrazit aplikace. A zde je textový editor.
Nebo kliknu na činnosti a tady nahoře mohu napsat textový editor nebo get it a ono mi ho to najde. A nebo můžu get it otevřít přes terminál nebo příkazovou řádku. Otevřu si terminál a zde napíšu get it.
čili název programu, který chci spustit, dám mezerník a zde napíšu jméno souboru, který chci vytvořit, takže například ahoj.c a tímto příkazem se mi vytvoří a otevře soubor ahoj.c v geditu. Smáčknu Enter a vidíte, že se mi opravdu vytvořil. Tak, vrátím se zpátky k prvnímu kódu. Zde dole doporučuji si nastavit formatování na C, aby Gedit zvýraznil specifické znaky C. Když si zde zvolím například prostý text, tak ten text bude zobrazen jednou barvou.
Když si zpátky přepnu na C, tak ten text je pěkně barevný. Toto nemá vliv na funkčnost kódu, je to jen vizuální efekt. Spřehojňuje to kód a lépe se v tom programuje.
Další nastavení Geditu se skrývají pod touto ikonou. Zde vyberu možnost předvolby. Zde doporučuji zobrazovat číslo řádků, protože překladač nás potom informuje, na jakém číslo řádků došlo k chybě.
Zde bych si nechal možnost zvýrazněvat aktuální řádek. A další důležitá funkce je zobrazovat odpovídající závorky. Když tuto možnost odškrtnu a kliknu k nějaký závorce, tak se nic nestane. A když tuto možnost zapnu, tak se mi zvýrazní dvě závorky, které k sobě odpovídají.
Jak vidíte, zde závorka začíná, tady je její obsah a zde závorka končí. Když kliknu sem, tak se mi opět zvýrazní závorky. Toto je velice užitečné, zvláště pokud máme několik závorek vnořených do sebe. Tak vidíme, kde závorky začínají a končí. Po případě můžeme vidět, že nám například chybí uzavírající závorka.
Přepnu se na editor Zde si můžu nastavit velikost šířky tabulátoru a další funkce. Ve Fontu a barvě si mohu nastavit font a velikost textu v editoru. Anebo si můžu zvolit jiné barvné schéma editoru.
Opět toto nastavení nemá vliv na funkčnost kódu, jedná se jen o vizuální efekt. A zde si mohu zapnout různé moduly. Teď si pojďme konečně popsat tento program.
Co tento program vlastně dělá? No, nedělá nic jinýho. než vypíše do příkazové řádky slovo ČAU.
Na prvním řádku připojujeme knihovnu s funkcemi. Nejdříve napíšeme křížek, hashtag, hash či výdlu, nebo jak to chcete nazývat. Hned za to napíšeme include, mezeru a mezi špičaté závorky napíšeme jméno knihovny, kterou chceme připojit k našemu programu.
Je to vlastně hlavičkový soubor, který mývá koncovku.hl. Toho je z angličtiny jako header. Tahle knihovna se nazývá standard input output, čili standardní vstup a výstup. Tuhle knihovnu potřebujeme, protože je v ní definovaná funkce printf. kterou dále v kódu používáme.
Dále zde máme hlavní funkci main. Tato funkce je jako první volána při spuštění programu. Funkce main se zapisuje vlastně jako ostatní funkce v C. Na začátku napíšeme typ návratové hodnoty funkce.
V tomto případě zde máme int, tedy integer, celé číslo. To znamená, že funkce main vrátí nějaké celé číslo, v našem případě nulu. Poté napíšeme mezerun a jméno funkce. V našem případě je to hlavní funkce main. Za jménem funkce se do kulatých závorek zapisují parametry funkce.
Zde máme slovíčko void, to znamená, že zde nemáme žádné vstupní parametry. Dále mezi složenými závorkami se nachází tělo metody, tedy obsah té funkce main. A jako první ve funkci main voláme funkci printf. Funkce printf nám umožňuje vytisknout nějaký text do příkazové řádky. Jako jiné funkce či klíčová slova je slovo print z angličtiny a znamená něco vytisknout nebo tisk.
Z tohoto důvodu je dobré mít nějaké zákody angličtiny, bude se vám pak lépe programovat. Tuto funkci voláme tak, jak vidíte. Napíšeme jméno funkce, tedy printf, pak kulaté závorky, do kterých mezi dvojité uvozovky napíšeme nějaký text. V našem případě sau. A nakonec musíme napsat střední.
protože každý příkaz v C musí být zakončen středníkem. No a poslední, co tady máme, je slovíčko return s nulou. Slovo return je količové slovo jazyka C.
Return ukončuje funkci, v našem případě funkci main, a vrací návratovou hodnotu nula. No a proč vrací nulu a ne jiné celé číslo? No protože je to takový zvyk konvence, že program, který skončí pořádku, nebo tak, jak my chceme, tak vrací nulu.
A samozřejmě opět musíme napsat za 0 v středník. Když se spustí kód, tak se vykonávají příkazy ze zhora dolů, tak jak jdou za sebou. To znamená, že se nejprve tady zavolá funkce printf, vytiskne se text do příkazové řádky a potom return ukončí funkci a vrátí 0. Kdybychom měli příkaz return 0 před printem, tak program nic neudělá.
Respektive se spustí a hned se ukončí returnem a vrátí 0. a nic se nevytiskne, protože k tomu printu ani nedojde. A poslední věc k tomuto kódu je štábní úprava. Vlastně jak jsou umístěny jednotlivá slova a znaky v tom textu.
Například druhý, čtvrtý a šestý řádek nemusí být prázdný, mohu je smazat. Na druhou stranu tady můžu mít několik prázdných řádek. Nemá to žádný vliv na funkčnost kódu. nebo printf s returnem nemusí být odsazeny a můžou začínat hned na začátku řádky. Mimochodem u odsazení používám tabulátor, který má šířku 4 mezery.
Tento program by fungoval úplně stejně, kdybych ho přepsal do jednoho řádku. Takže skoro vůbec nezáleží na odsazování třeba jako v Pythonu, ale na druhou stranu nějaké mezery jsou povinné, třeba mezi int a main, nebo mezi ret. Pro přehlednost a čitelnost kódu je rozhodně lepší toto formatování zdrojového kódu, než vůštit kód v jedné řádce. A teď můžeme program přiložit a spustit.
To uděláme za pomoci terminálu. Kliknu na Činnosti a zde vyhledám Terminál. Tady už bliká kurzor a čeká na nějaké příkazy.
Než program přeložíme a spustíme, tak musíme znát několik příkazů pro terminál. Prvním z těchto příkazů je ls. Napíšeme ls a dám Enter.
Ls je zkrátka pro list, tedy česky seznam, soupis ničeho. Tento příkaz nám vypíše obsah aktuálního adresáře. Zde konkrétně vidíte názvy složek.
U tohoto příkazu, jako u mnoha jiných, můžeme používat ještě přepínače. Přepínač je jakoby parametr, argument příkazu. vlastně ovevňuje funkci příkazu.
Například u příkazu ls mohu použít přepínač pomočka l. Napíšu ls mezera pomočka l. Ta pomočka l značí ten přepínač. A dám Enter.
Tím se mi vypíše opět obsah adresáře doplněný o několik informací. Například zde mám datum vytvoření jednotlivých složek. Další užitečním příkaz je clear. Tím si jakoby vyčistím tu příkazovou řádku. Já si opět vypíšu obsah aktuálního adresáře, kde se nacházím.
A já se potřebuji dostat do složky Tutorial jazyk C. Tady si to zavřu a otevřu si soubori znova. tak se vlastně v terminálu nacházím v tomto adresáři. Zde vidíte tyto složky napsány zde. A když se chci dostat do složky Tutorial jazyk C v grafickém prostředí, tak se do ní jednoduše dostanu dvojklikem.
V terminálu musím napsat CD, což je Change Directory, tedy změna adresáře, mezeru a název složky, kam se chci přesunout, tedy T. To T musím napsat velké, protože je zde také velké T. U to a když zmáčknu tabulátor, tak se mi automaticky doplní název.
Dám Enter a přesunul jsem se do složky Tutorial jazyk C. Teď když dám Losl, tak vidím, že zde mám jednu složku se jménem 1 pirmní kód, což odpovídá i grafickému rozhraní. A v této složce mám ten zdrojový kód, takže se musím ještě jednou přesunout v terminálu. Tudíž napíšu zase CD mezera 1. První kód, Enter, Ls.
A vidím, že jsem ve slušce se zdrajovým kódem. Tady jsem se potřeboval dostat kvůli překladu programu. Ještě zmíním nějaké příkazy pro terminál.
Například man, mezera a nějaký příkaz. Například Ls, dám Enter. Nám zobrazí manuálovou stránku pro příkaz Ls. Zde vidíte popis příkazu Ls. Tady je seznam argumentů.
neboli přepínačů, které lze použít s příkazem LSS. Když chci zavřít tento manuál, tak zmašnu klavesu Q. Nebo si mohu zobrazit MAN pro CD.
MAN CD. A opět mi to zobrazí nápovědu pro ten příkaz. Nebo si mohu zobrazit manuál pro manuál. Samozřejmě si můžete příkazy najít na internetu, ale v některých případech se může příkaz man hodit. Teď vidíte, že jsem se přepsal.
Chtěl jsem napsat clear a místo toho jsem napsal celér. Ale terminál, respektive bash, mi oznámil, že příkaz celér nebyl nalezen. A podobný příkaz slovu celér je clear, tudíž se nic nestalo. Teď napíšu clear a příkaz proběhl v pořádku.
Ještě zmíním příkaz povodu. což je Print Working Directory. Tento příkaz nám vypíše absolutní cestu aktuálně používaného adresáře, čili kde se nacházíme. Mimochodem tato cesta je napsána i tady nahoře.
Kdybych chtěl jít o krok zpět, tedy do služky Tutorial jazyk C, tak tomu slouží příkaz cd mezera tečka tečka enter. Teď když si vypíšu cestu aktuálního adresáře pomocí pvd. tak vidím, že jsem opravdu ve služce Tutorial Jazyk C. Mohu si opět vypsat obsah pomocí LSL. Tak přesunu se zpátky do služky se zdravým kódem. Samozřejmě těch příkazů je mnoho a na začátek stačí znát LSL, CD a možná MAN.
A teď už bych konečně mohl přehořit ten program. Mimochodem synonymum pro slovo překladač je kompilátor A přeložit program tež můžeme nazývat skompilovat program. Proč potřebujeme přeložit program? No, protože teď mám zdrojový kód, který je napsaný v nějakým textu. Je vždycky čitelný a my potřebujeme, aby byl čitelný pro počítač.
A toho dosáhneme pomocí překladu kódu. K přeložení programu potřebují překladač. Existuje několik překladačů.
Já většinou používám GCC, ale můžete taky zkusit třeba Clang. Takže napíšu gcc, mezera a název zdrojového souboru, v našem případě první kód.c a dám Enter. Tím se mi program přeložil a vytvořil se spustitelný soubor a.out. Když si vypíšu obsah pomocí ls, tak ho zde vidím.
A teď můžeme spustit tento soubor. Napíšu.lomítko. Ta tečka s lomítkem vlastně představuje relativní cestu k tomu souboru.
A dále napíšu název souboru, který chci spustit bez mezery, tedy a.out. A enter. A vidíte, že se mi zde vypsalo slovo cao.
Ale je to takové skryté v tom terminálu, bylo by lepší, kdyby to slovo cao bylo na samostatném řádku. Takže trošku upravím náš zdrojový kód. Za slovo cao napíšu zpětné lomitko, backslash anglicky a nko. To způsobí odřádkování. To n je zkrátka pro new line, tedy nový řádek.
Ještě taková menší poznámka, když udělám změnu v textovém editoru a neuložím ji, tak se objeví před názvem souboru hvězdička, která mě upozorňuje, že jsem změnil soubor a zatím jsem ho neuložil. Před překladem a zpuštění programu musím soubor uložit. Kliknu tedy na tlčítko Uložit, nebo mohu použít klavesovou zkratku CTRL S. A teď musím znovu zkompilovat program.
Mohu využít historii příkazů terminálu pomocí šipek nahoru a dolu. se přepíná mezi použitými příkazy. Tak, přehořil jsem program a teď ho můžu spustit.
A vidíte, že se vypsalo cao a odřádkovalo se. Také u překladačů mohu používat různé přepínače. Například pomočka vol. Ten přepínač pomočka vol je zkrátka pro warning all, kdy při překladu programu nás bude upozorňovat na nějaké warningy, třeba na nepoužitou proměnu v kódu. Přepínačem POMOČKA O si mohu pojmenovat spustitelný soubor, například na můj program.
A vidíte, že se mi zde vytvořil spustitelný soubor se jménem můj program. Pokud bych ho chtěl smazat za pomoci příkazu v terminálu, tak k tomu slouží příkaz RM. Zkrátka pro remove, tedy odstranit. Napíšu RM mezi R a název souboru, který chci smazat, tedy můj program. A jak vidíte, soubor zde již nemám.
Jen si dávejte pozor na tento příkaz, protože on hned smaže soubor a předem se neptá, zdal jeho chce naopravdu smazat. Teď se jenom zmíním o návratové hodnotě programu, jak ji můžeme zobrazit v terminálu. K tomu slouží příkaz echo který vrací návratovou hodnotu posledního příkazu nebo programu.
Příkaz echo nám vlastně vrací nějaký text. uvedení za tímto příkazem. Například Ahoj.
Vrátil Ahoj a odřádkoval. Nebo nějaký nesmysl. Teď když spustím náš program a kouknu se, jakou návratovou hodnotu vrací, tak vidím, že je to 0. A když ve zdrojovém kódu změním tuto hodnotu na 77, uložím kód, znova ho přiložím, a spustím ho, spustím příkaz echo, tak vidím, že program vrátil hodnotu 77. Ale když znovu spustím příkaz echo doler otazník, tak vidím, že vrátil 0. Ale tuhle 0 nám vrátil příkaz echo doler otazník, který jsme spustili před svýmto příkazem. Jak jsem ji zmiňoval na začátku, ten program, který skončí v pořádku, vrací 0. Kdybych zde zadal nějaký neznámý příkaz a podíval si, jak on...
Vrací hodnotu. Tak vidím, že vrací hodnotu 127. Tuto hodnotu vrací příkazy, které nebyly nalezeny nebo vykonány. Teď schválně udělám ve zdravém kódu nějakou chybu, aby jsme viděli, co se může stát.
Například zde smažu středník. Uložím kód. Přeložím. A vidím, že se mi zde něco vypsalo. Když se program přeloží dopřed, tak se zde nic nevypíše.
Ale teď vidím, že mě překladač upozorňuje, že ve funkci main na řádku 7 očekává, že by měl být středník. Já ten středník dopíšu zpátky a zkusím třeba smazat tady složenou závodku. Uložím a znova přiložím a vidím, že jsem dostal 1, 2, 3, 4 erory.
Teď už to není tak jednoznačná chyba jako předtím. Tím jsem chtěl naznačit, že nějaké chyby najdete s nás. a nad jími strávíte půl dne a pak zjistíte, že vám někde chybí závorka. Tak a teď se dostáváme k zadání úkolu pro vás.
Z probírané látky z tohoto videa. Zadání zní. Napište program, který vypíše do terminálu slovo AHOJ a odřádkuje. Zde vidíte požadovaný výstup na terminálu. Na začátku příštího videa budu ukazovat řešení tohoto úkolu.
Závěrečné schrnutí. Ke spuštění programu potřebujeme zdrojový kód, který je lidsky čitelný. Poté ho pomocí překladače přeložíme do podoby. čitelné počítači a pak ho můžeme spustit. V příštím videu si popíšeme, co je to proměná a jaké jsou datové typy v C.
Děkuji za shlednutí a mějte se, čau.