{{indexmenu_n>2}} ====== 2 - Vstup a výstup programu ====== * pro vyučující: [[courses:b0b99prpa:internal:tutorialinstruction:02|]] /* Bude upřesněno před začátkem semestru. */ **Doprovodné materiály pro druhé cvičení:** {{ :courses:b0b99prpa:labs:promenne.pdf |}}{{ :courses:b0b99prpa:labs:operatory.pdf |}} ===== Procvičovaná témata ===== * Kompilace a spouštění programu * Vstup a výstup programu a přesměrování vstup a výstupu programu do souboru * standardní vstup - [[http://www.tutorialspoint.com/c_standard_library/c_function_scanf.htm|scanf]] [[http://www.tutorialspoint.com/c_standard_library/c_function_getchar.htm|getchar]] a standardní výstup - [[http://www.tutorialspoint.com/c_standard_library/c_function_printf.htm|printf]], [[http://www.cplusplus.com/reference/cstdio/fprintf/|fprintf]] * [[https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B|operátory]] a [[courses:b0b99prpa:tutorials:control|řídicí struktury]] ===== Ú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 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 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 ==== 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