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

1 - Úvodní cvičení

Procvičovaná témata

  • Seznámení s 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

Práce s příkazovou řádkou

Úkoly

  • Procvičte si práci v příkazové řádce
    • Ve svém domovském adresáři si založte složku prga a složku lab01
    • Ve složce lab01 vytvořte soubor se jménem prvni_program_v_c.c
    • Celou složku lab01 přesuňte ze domovského adresáře do složky prga
    • Přejmenujte prvni_program_v_c.c na main.c

Ú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
    • 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 jako nebodovaný úkol HW0.

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

Základní datové typy

  • Zjistěte jakou velikost mají základní datové typy?

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

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/bab36prga/labs/lab01.txt · Last modified: 2021/02/16 13:31 by slamajak