Notice
This page is located in a preparation section till 16.02.2026.

Lab 01 - Úvodní cvičení

Cíle cvičení

  1. Přihlášení do operačního prostřední a nastavení vývojového prostředí.
  2. Vytvoření jednoduchého skriptu (posloupnosti příkazů) pro práci se soubory.
  3. Formátování zdrojového kódu.
  4. Vytvoření a ideálně odevzdání domácího úkolu HW 00.
  5. Kompilace a spuštění programu.
  6. Návratová hodnota programu a její zpracování v OS.
  7. Operátory a základní datové typy - char, int, float, double.
  8. Formátovaný výstup - printf a fprintf.

Organizace předmětu

Jan Faigl 2025/02/12 17:18

V PRG nepředepisujeme jaké pracovní vývojové prostředí používat. Obecně doporučujeme začínajícím programátorům použít prostředí 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

Seznámení a nastavení prostředí

  • Nastavte si heslo v počítačové učebně (Nastavení hesla) a seznamte se používaným prostředím.

Práce s příkazovou řádkou

    • 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.

Formátování zdrojového programu

Klíčové nastavení editoru je pro formátování zdrojového kódu. V předmětu PRG 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 Programovací prostředí.

Výstup pak může například vypadat následovně.

Nastavení formátování ''clang-format'' v ''gedit''

Kompilace programu a spouštění programu (HW 00)

  • Napište zdrojový kód programu, který vypíše na standardní výstup “Hello PRG!” do souboru main.c
  • Program zkompilujte za pomocí programu clang nebo gcc:
  • Zkompilovaný program spusťte přes příkazem ./main.
    • Jaká je návratová hodnota programu?
    • Jak lze programy spouštět za sebou?
  • Zdrojový kód zazipujte do archivu hw0.zip, například příkazem: zip hw0.zip main.c
    • V archivu nevytvářejte žádné složky.
  • Vytvořený archiv nahrajte do systému BRUTE, viz nebodovaný úkol 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.
Vytvořený program nahrajte do odevzdávacího systému a odevzdejte tak HW 00.
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.

kde můžeme též využít příložena Makefile a vytvořit si zip soubour voláním make zip.

  • Vyzkoušejte změnit návratovou hodnotu a opět vypsat.
  • Vytvořte dvě spustitelné verze programu např. program0 a program1, které budou mít návratovou hodnotu 0 a 1. Využijte přepínač kompilátoru -o, např. kompilací clang program.c -o program0 a clang program.c -o program1.
  • Vyzkoušejte chování a spuštění programu

./program0 && ./program1
./program1 && ./program0
a
./program0 && echo $? && ./program1 && echo $?
./program1 && echo $? && ./program0 && echo $?

a dále pak

./program0 && echo $? && ./program1; echo $?
./program1; echo $? && ./program0 && echo $?

Základní datové typy, standardní výstup

  • základní datové typy - char, int, float, double
  • standardní výstup - printf, fprintf

int printf(const char *format [, arg, ...]);
int fprintf(FILE *stream, const char *format [, arg, ...]);

  • Vyzkoušejte různé formy výpisu znaků a čísel:

char c = 'a';
int i = 1000,j;
float x,y = 3.1415;
 
printf("%c\n",c);
printf("%i\n",c);
 
printf("%d\n",i);
printf("%+5d\n",i);
printf("%x\n",i);
 
printf("%f\n",y);
printf("%10.3f\n",y);
printf("\t%-g\n",y);

  • co bude výsledkem výpisu následujících příkazů?

printf("%6d,%4d",86,1040);
printf("\n");
printf("%12.5e",3.14159265);
printf("\r");
printf("%.4f\n",85.167);

  • vyzkoušejte výpis na standardní výstup (stdout) a standardní chybový výstup (stderr) pomocí funkce fprintf

fprintf(stdout,"Standardní výstup: %d",i);
fprintf(stderr,"Error výstup: %d",i);

  • vyzkoušejte přesměrování výstupů programu do souboru

./main >output.log 2>error.log

courses/b3b36prg/labs/lab01/start.txt · Last modified: 2026/02/12 21:12 by szadkrud