{{indexmenu_n>1}} ====== 1 - Úvodní cvičení ====== Seznámení s počítačovou učebnou, [[courses:b0b36prp:tutorials:services|ownCloud]] a [[https://cw.felk.cvut.cz/upload/|BRUTE]]. * pro vyučující: [[courses:b0b36prp:internal:tutorialinstruction:01|]] ===== Organizace předmětu ===== * prezentace: {{courses:b0b36prp:b0b36prp-lec00-slides.pdf|}} * zkrácená verze: {{courses:b0b36prp:b0b36prp-lec00-handout.pdf|}} * zkrácená verze 2x2: {{courses:b0b36prp:b0b36prp-lec00-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:b0b36prp:b0b36prp-lec00-handout-3x3.pdf|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2023/09/25 09:47// * Aktualizace, děkanský den 20.11.2023: --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2023/09/25 09:47// ===== Cíle cvičení ===== - Přihlášení do operačního prostřední a nastavení vývojového prostředí. - Vytvoření jednoduchého skriptu (posloupnosti příkazů) pro práci se soubory. - Formátování zdrojového programu. - Kompilace programu a spouštění programu. V PRP nepředepisujeme jaké [[https://cw.fel.cvut.cz/b221/courses/b0b36prp/tutorials/start?animal=b221#pracovni_prostredi|pracovní vývojové prostředí používat]]. Obecně doporučujeme začínajícím programátorům použít prostředí [[courses:b0b36prp:tutorials:devel:vscode|VS Code]], případně nakonfigurovaný editor ''gedit'' nebo ''vim''. Určitě je také možné použít komplexní prostředí jako je např. CLion. Nicméně jeho konfigurace a prozkoumání všech možností, může velmi rychle překročit časovou dotaci předmětu. ===== Úkoly ===== * Nastavte si heslo v počítačové učebně [[https://www.felk.cvut.cz/labpass/|(Nastavení hesla)]] a seznamte se používaným prostředím ===== Práce s příkazovou řádkou ===== * [[courses:b0b36prp:labs:lab01:cmd| Procvičte si práci v příkazové řádce]] a vypracujete úkoly. * Ve svém domovském adresáři si založte složku ''my_prg'' a složku ''lab01''. * Ve složce ''lab01'' vytvořte soubor se jménem ''program.c''. * Celou složku ''lab01'' přesuňte ze domovského adresáře do složky ''prg''. * Přejmenujte ''program_c'' na ''main.c''. ==== Úkoly ==== * Vygenerujete soubor s náhodnými celými čísly, využijte přesměrování standardního výstupu do souboru, ++ např. kombinací programů seq a shuf| % seq 1 1 10 > numbers.txt % shuf numbers.txt > random.txt ++. * Zajistěte, že jsou v souboru opakující se hodnoty, ++ např. přidáním do souboru| % shuf numbers.txt >> random.txt ++. * S využitím přesměrování výstupu hodnoty uspořádejte do nového souboru, ++ např. nástrojem sort | % sort -n random.txt > sorted.txt % wc sorted.txt 20 20 42 sorted.txt ++. * Odstraňte duplicitní hodnoty, ++ např. nástrojem uniq | % uniq sorted.txt > sorted-u.txt % wc sorted-u.txt 10 10 21 sorted-u.txt ++. * Porovnejte původní soubory s čísly, např. soubor ''numbers.txt'' a ''sorted-u.txt'' ++ příkazem diff | % diff numbers.txt sorted-u.txt > /dev/null % echo $? 0 ++. Vypište návratovou hodnotu posledního volaného příkazu ''echo $?''. * Podobně porovnejte původní soubor s čísly s randomizovaným pořadím, ++ např. | % diff numbers.txt sorted-u.txt > /dev/null % echo $? 1 ++. * Jednotlivé příkazy shrňte ve skriptu, který vygeneruje soubory s náhodnými uspořádanými hodnotami celých čísel. ===== Formátování zdrojového programu ===== Klíčové nastavení editoru je pro formátování zdrojového kódu. V předmětu PRP je preferováno formátování nástrojem clang-format a nastavením stylu: {BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux} Formátování zdrojového kódu pak provedete např. následovně: clang-format -style='{BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux}' muj_kod.c > formatovany_kod.c V případě použití vývojového prostředí VS Code lze lokálně nastavit formátování vytvořením souboru ''.clang-format'', viz [[courses:b0b36prp:tutorials:devel:vscode|Programovací prostředí]]. ++++ Výstup pak může například vypadat následovně. | {{:courses:b0b36prp:labs:vscode-clangformat2.png?400|}} {{:courses:b0b36prp:labs:vscode-clangformat.png?400|}} {{:courses:b0b36prp:labs:vscode-clang_format10.png?400|}} ++++ ++++ Nastavení formátování ''clang-format'' v ''gedit'' | * Stáhněte si nastavení pro textový editor **gedit**: {{:courses:b0b36prp:labs:setup_gedit.zip|}}. === === wget https://cw.fel.cvut.cz/wiki/_media/courses/b0b36prp/labs/setup_gedit.zip ==== ==== * Rozbalte jej, prohlédněte obsah a nainstalujte (=spusťte). === === unzip setup_gedit.zip cat setup_gedit.sh gedit setup_gedit.sh ./setup_gedit.sh ==== ==== ++++ ==== Úkoly ==== * Nastavete si formátování použitého editoru nebo vývojového prostředí. ===== Úvod do programování v jazyce C ===== ==== ==== // example program in C #include int main() { puts("Hello PRP!"); return 0; } ==== Překlad programu ==== Překlad na spustitelný soubor provádíme z příkazové řádky příkazem clang -Wall -pedantic -std=c99 main.c -o main případně gcc -Wall -pedantic -std=c99 main.c -o main ==== Spuštění programu ==== Program spouštíme z příkazové řádky příkazem ./main ++++ Spuštění program ve VS Code | V prostředí VS Code může vypadat interaktivní práce tak, že si stáhneme soubor domácího úkolu v prohlížeči do adresáře ''~/Downloads'' a dále vše řešíme už jen z VS Code s využitím integrovaného terminálu. {{:courses:b0b36prp:labs:vscode-hw00.png?800|}} kde můžeme též využít příložena ''Makefile'' a vytvořit si ''zip'' soubour voláním ''make zip''. {{:courses:b0b36prp:labs:vscode-hw00zip.png?800|}} ++++ ==== Úkoly ==== * Do souboru ''main.c'' napište zdrojový kód programu, který vypíše na standardní výstup **"Hello PRP!"**. * Program zkompilujte a spusťte. * Zdrojový kód zazipujte do archivu **''main.zip''**, například pomocí příkazu: **"''zip main.zip main.c''"**. * Vytvořený archiv nahrajte do [[https://cw.felk.cvut.cz/brute|Upload systému]], viz úkol [[courses:b0b36prp:hw:hw00|HW00]]. * Dále je možné využít proměnnou prostředí ''$?'' a vyzkoušet si různé návratové hodnoty programu a řetězení kompilace a spuštění programu, včetně např. podmíněného spuštění programu v závislosti na úspěchu kompilace programu. {{:courses:b0b36prp:labs:vscode-lab01-return_value.png?800|}}