Table of Contents

Lab 01 - Úvodní cvičení

Organizace předmětu

Jan Faigl 2024/02/14 16:03

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 programu.
  4. Kompilace programu a spouštění programu.
  5. Základní datové typy, standardní vstup a výstup.
V PRGA 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.

Práce s příkazovou řádkou

Formátování zdrojového programu

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

// example program in C
#include <stdio.h>
 
int main()
{
    printf("Hello PRGA!\n");
    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

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.

Úkoly

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

int scanf(const char *format [, address, ...]);
int getchar(void);

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

if( podmínka ){
    příkaz1
} else {
    příkaz2
}

for( inicializace ; podmínka ; změna){
    příkaz
}

Úkoly

Základní datové typy

printf("Size of int: %lu\n", sizeof(int));

Standardní výstup

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);

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

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

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

Standardní vstup

1-20.3-4.0e3

int r = scanf("%d%d%f%f",&i,&j,&x,&y)

./main <input.log

Jednoduchý automat na mince