2 - Vstup a výstup programu

  • pro vyučující: 02

Doprovodné materiály pro druhé cvičení: promenne.pdfoperatory.pdf

Procvičovaná témata

Úkoly

Kompilace a spouštění programu

  • Vytvořte program “Ahoj PRPA”, který uložte do souboru program.c v domovském adresáři, např. ~/prp/lab02.

#include <stdio.h>
 
int main(void)
{
   printf("Ahoj PRPA!\n");
 
   return 0;
}

  • Program zkompilujte a spusťte. Zobrazte návratovou hodnotu, např. z interpreteru příkazů (shell) příkazem echo $?.
  • 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
  • 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 $?

  • Program rozšiřte o násobný výpis textové zprávy

#include <stdio.h>
 
int main(void)
{
   printf("Ahoj PRPA!\n");
   printf("Ahoj PRPA!\n");
   printf("Ahoj PRPA!\n");
   printf("Ahoj PRPA!\n");
 
   return 0;
}

Vyzkoušejte kompilaci a spuštění programu, např.

clang program.c && ./a.out 

nebo

clang program.c -o program && ./program 

Standardní formátovaný 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í formátovaný 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

Příklady k procvičení

1. Výpočet přepony pravoúhlého trojúhelníka

Napište program, který ze standardního vstupu načte dvě čísla reprezentující odvěsny pravoúhlého trojúhelníka a vypočítá délku přepony. V programu vyuzijte funkci sqrt, ktera je definovana v hlavickovem souboru math.h. Pri kompilaci pak pouzijte volbu -lm pro prilinkovani spravne knihovny.

Před spuštěním programu si vytvořte textový soubor, který přesměrujte na vstup programu. Volání a interakce s programem vypadá následovně:

$ echo "4 3" > data
$ ./trojuhelnik < data
Prepona trojuhelnika je 5.

2. Získání celé a desetinné části reálného čísla

Napište program, který načte ze standardního vstupu reálné číslo, vypočítá celou a desetinnou část a vypíše ji na obrazovku.

Volání programu vypadá následovně

$ ./cislo 
8.3343
Cela cast: 8
Desetinna cast: 0.334300

courses/b0b99prpa/labs/lab02.txt · Last modified: 2019/10/03 21:04 by viteks