{{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|}}