Warning
This page is located in archive. Go to the latest version of this course pages.

1 - Úvodní cvičení

  • Seznámení s počítačovou učebnou, ownCloud a BRUTE.
  • Práce v příkazové řádce
  • Úvod do programování v jazyce C
  • Základní datové typy, standardní vstup a výstup
  • pro vyučující: 01

Počítačová učebna a příkazová řádka

Úkoly

  • nastavte si heslo v počítačové učebně (Nastavení hesla) a seznamte se používaným prostředím
  • procvičte si práci v příkazové řádce
    • Ve svém domovském adresáři si ve složce Documents založte složku prg a v ní podsložku lab01
    • Ve složce lab01 vytvořte soubor se jménem notes.txt
    • Celou složku prg přesuňte ze složky Documents do domovského adresáře
    • Přejmenujte notes.txt na my_notes.txt
    • Stáhněte si nastavení pro textový editor gedit: setup_gedit.zip

wget https://cw.fel.cvut.cz/wiki/_media/courses/b3b36prg/labs/setup_gedit.zip

  • rozbalte ho a nainstalujte (=spusťte)

unzip setup_gedit.zip
./setup_gedit.sh

Úvod do programování v jazyce C

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

Úkoly

  • Do souboru main.c napište zdrojový kód programu, který vypíše na standardní výstup “Hello PRG!”
  • Program zkompilujte a spusťte
  • Zdrojový kód zazipujte do archivu main.zip, například příkazem: zip main.zip main.c
  • V archivu nevytvářejte žádné složky.
  • Vytvořený archiv nahrajte do systému BRUTE, viz nebodovaný úkol HW00.

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

  • základní datové typy - char, int, float, double
  • standardní vstup - scanf getchar

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

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

  • řídicí struktury - if

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

  • řídicí struktury - for

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

Úkoly

Standardní výstup

  • 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

Standardní vstup

  • vyzkoušejte načtení vstupu:

1-20.3-4.0e3

  • Příkazem:

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

  • zamyslete se nad chováním příkazu scanf na základě formátovacího řetězce.
  • vyzkoušejte načtení vstupů ” 9/ 16” a “ 9 / 16” pomocí formátovacího řetězce “%d/%d”
  • vyzkoušejte přesměrování vstupu programu

./main <input.log

Jednoduchý automat na mince

  • Napište program, který pro zadanou částku (v celých korunách) vypíše nejmenší počet mincí (20, 10, 5, 2, 1), ze kterých se dá daná částka složit.
  • Rozšiřte program tak, aby vypisoval pouze použité mince.
  • Nechte program vypsat vloženou částku i v jiných měnách.
courses/b3b36prg/labs/lab01.txt · Last modified: 2018/02/06 17:18 (external edit)