B0B99PRPA Procedurální programování

Podobne dokumenty
B0B99PRPA Procedurální programování. Stanislav Vítek

B0B99PRPA Procedurální programování

Martin Pergel. 26. února Martin Pergel

Úvodní informace. 18. února 2019

TGH01 - Algoritmizace

TGH01 - Algoritmizace

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

Charakteristika jazyka C

ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016

Kristýna Kuncová. Matematika B2 18/19

Reprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

IJC Jazyk C. Petr Peringer peringer AT fit.vutbr.cz. (Verze: ) Božetěchova 2, Brno. Úvod ISO C libc C99 11 Debug C++ Link Opt...

Funkce zadané implicitně. 4. března 2019

Numerické metody 8. května FJFI ČVUT v Praze

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Kristýna Kuncová. Matematika B3

Vybrané kapitoly z matematiky

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Edita Pelantová, katedra matematiky / 16

2 Przygotował: mgr inż. Maciej Lasota

Obsah Atributová tabulka Atributové dotazy. GIS1-2. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie

1 Soustava lineárních rovnic

1. Informace o předmětu, úvod do programování

Cauchyova úloha pro obyčejnou diferenciální rovnici

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

Quick sort, spojové struktury

5. a 12. prosince 2018

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

Numerické metody minimalizace

Matematika (KMI/PMATE)

Kristýna Kuncová. Matematika B2

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Automatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Co nám prozradí derivace? 21. listopadu 2018

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

Podstawy programowania C. dr. Krystyna Łapin

Internet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Funkcja (podprogram) void

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

Matematika 2, vzorová písemka 1

Inverzní Z-transformace

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Co nie powinno być umieszczane w plikach nagłówkowych:

Wstęp do programowania 1

Výzvy, které před matematiku staví

Programowanie Proceduralne

Obsah: CLP Constraint Logic Programming. Úvod do umělé inteligence 6/12 1 / 17

Literatura. Zdroje informací. Tyto slajdy jsou určeny pro předmět ICP na FIT VUT v Brně. Obsahují základní popis jazyka C++ vhodný pro studenty, kteří

IB047. Pavel Rychlý. 21. února

katedra informatiky FEI VŠB-TU Ostrava etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C září / 25

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Programowanie strukturalne i obiektowe

PA152,Implementace databázových systémů 2 / 25

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Operace s funkcemi [MA1-18:P2.1] funkční hodnota... y = f(x) (x argument)

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Univerzita Palackého v Olomouci

Biblioteka standardowa - operacje wejścia/wyjścia

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Języki i metody programowania. Omówienie języków C, C++ i Java

(13) Fourierovy řady

Instrukcje sterujące. Programowanie Proceduralne 1

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Linea rnı (ne)za vislost

Zmienne, stałe i operatory

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

Stavový popis Stabilita spojitých systémů (K611MSAP) Katedra aplikované matematiky Fakulta dopravní ČVUT. čtvrtek 20. dubna 2006

NÁVOD K POUŽITÍ KEZELÉSI KÉZIKÖNYV INSTRUKCJA OBSŁUGI NÁVOD NA POUŽÍVANIE. Česky. Magyar. Polski. Slovensky

Zadání: Vypočítejte hlavní momenty setrvačnosti a vykreslete elipsu setrvačnosti na zadaných

Operacje wejścia/wyjścia odsłona pierwsza

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, / 26

Vlastnosti. Příprava. Czech - 2 -

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, / 37

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Zásuvný modul QGISu. QGIS plugin pro práci s katastrálními daty

GENETICKÉ PROGRAMOVÁNÍ S JAZYKEM BRAINFUCK

PODSTAWY PROGRAMOWANIA W C. Bibliografia W-1. Dr. Inż. Hab. Siergiej Fialko, PK,

Podstawy Programowania.

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Kristýna Kuncová. Matematika B2 18/19. Kristýna Kuncová (1) Vzorové otázky 1 / 36

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

TVL UMP2 NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE

Paralelní implementace a optimalizace metody BDDC

Transkrypt:

B0B99PRPA Procedurální programování Základní řidící struktury Stanislav Vítek Katedra radioelektroniky Fakulta elektrotechnická České vysoké učení v Praze 1/40

Přehled témat Část 1 Programování v C Zdrojové soubory Funkce Hodnoty datových typů Interakce s uživatelem Část 2 Řidící struktury Řídicí struktury Větvení Cykly Část 3 Zadání 2. domácího úkolu 2/40

Část I Zápis programu v C 3/40

I. Zápis programu v C Zdrojové soubory Funkce Hodnoty datových typů Interakce s uživatelem 4/40

Zdrojové soubory programu v C zdrojový soubor s koncovkou.c hlavičkový soubor s koncovkou.h Zdrojové soubory jsou překládány do binární podoby překladačem a vznikají objektové soubory (.o) Z objektových souborů (object files) se sestavuje výsledný program, ve kterém jsou již všechny funkce známy a relativní adresy se nahradí absolutními 5/40

Zdrojové a hlavičkové soubory Rozdělení na zdrojové a hlavičkové soubory umožňuje rozlišit definici a deklaraci, především však podporuje Organizaci zdrojových kódů v adresářové struktuře souborů Modularitu Hlavičkový soubor obsahuje popis co modul nabízí, tj. popis (seznam) funkcí a jejich parametrů bez konkrétní implementace (deklarace funkcí) Konkrétní implementace je pak ve zdrojovém souboru Pokud se modul od posledního překladu nezměnil, není třeba zdrojový kód modulu znova překládat Optimalizace procesu překladu. Znovupoužitelnost Pro využití binární knihovny potřebuje znát její rozhraní, které je deklarované v hlavičkovém souboru Výhodné pro práci na velkých projektech nebo týmech. 6/40

I. Zápis programu v C Zdrojové soubory Funkce Hodnoty datových typů Interakce s uživatelem 7/40

Funkce Funkce tvoří základní stavební blok modulárního jazyka C Modulární program je složen z více modulů/zdrojových souborů. Každý spustitelný program v C obsahuje alespon jednu funkci a to funkci main() Deklarace hlavička funkce (prototyp) navratovy_typ jmeno_funkce(seznam parametru); Deklarace obsahuje informace, které vyžaduje překladač. Definice hlavička funkce a její tělo (sekvence příkazů) navratovy_typ jmeno_funkce(seznam parametru) { // telo funkce } Definice funkce bez předchozí deklarace je zároveň deklarací funkce. 8/40

Vlastnosti funkcí C nepovoluje funkce vnořené do jiných funkcí Jména funkcí se mohou exportovat do ostatních modulů (souborů) Formální parametry funkce jsou lokální proměnné, které jsou inicializovány skutečnými parametry při volání funkce Parametry se do funkce předávají hodnotou C dovoluje rekurzi lokální proměnné jsou pro každé jednotlivé volání zakládány znovu na zásobníku Funkce nemusí mít žádné vstupní parametry, zapisujeme: jmeno_funkce(void) Funkce nemusí vracet funkční hodnotu návratový typ je void 9/40

Struktura modulu 1 #include <stdio.h> /* hlavickovy soubor */ 2 3 #define PI 3.14 /* symbolicka konstanta - makro*/ 4 5 float kruh(int a); /* hlavicka/prototyp funkce */ 6 7 int main(void) /* hlavni funkce */ 8 { 9 int v = 10; /* definice promennych */ 10 float r; 11 r = kruh(v); /* volani funkce */ 12 return 0; /* ukonceni hlavni funkce */ 13 } 14 15 float kruh(int r) /* definice funkce */ 16 { 17 float b = PI*r*r; 18 return b; /* navratova hodnota funkce */ 19 } 10/40

I. Zápis programu v C Zdrojové soubory Funkce Hodnoty datových typů Interakce s uživatelem 11/40

Literály Hodnoty datových typů označujeme jako literály (konstanty) Jazyk C má 6 typů konstant (literálů) Celočíselné Racionální Znakové Řetězcové Výčtové Datový typ enum. Symbolické #define NUMBER 10 Direktivy preprocesoru. 12/40

Literály celočíselných datových typů Zápis čísel dekadický 123 450932 šestnáctkový (hexadecimální) 0x12 0xFAFF (začíná 0x nebo 0X) osmickový (oktalový)) 0123 0567 (začíná 0) unsigned 12345U (přípona U nebo u) long 12345L (přípona L nebo l) unsigned long 12345ul (přípona UL nebo ul) Není-li přípona uvedena, jde o literál typu int 13/40

Literály neceločíselných datových typů Neceločíselné datové typy jsou dané implementací, většinou se řídí standardem IEEE-754-1985 Formát zápisu racionálních literálu: S řádovou tečkou 13.1 Mantisa a exponent 31.4e-3 nebo 31.4E-3 Typ racionálního literálu: double pokud není explicitne urcen float prípona F nebo f long double přípona L nebo l 14/40

Znakové literály Formát znak v jednoduchých apostrofech A, B nebo \n Hodnota znakový literál má hodnotu odpovídající kódu znaku 0 48, A 65 Hodnota znaku mimo ASCII (větší než 127) závisí na překladači. Typ znaková konstanta je typu int Specifikace číselné hodnoty v tabulce znaků (ASCII) hodnota v osmičkové nebo šestnáctkové soustavě, uvozena apostrofy, před vlastní hodnotu zpětné lomítko Pokud neuvedeme na začátku 0, je hodnota interpretována jako číslo v osmičkové soustavě tj. \32 je totéž jako \032, tedy hodnota 32 v osmičkové soustavě (26 v desítkové) Příklad řídící znaky. \110, \07, \0xA3 15/40

Řetězcové literály Formát posloupnost znaků a řídicích znaků (escape sequences) uzavřená v uvozovkách "Retezcova konstanta s koncem radku\n" Řetězcové konstanty oddělené oddělovaci (white spaces) se sloučí do jediné, např. "Retezcová konstanta" "s koncem radku\n" se sloučí do "Retezcova konstanta s koncem radku\n" Typ řetězcová konstanta je uložena v poli typu char a zakoncená znakem \0 a h o j \0 16/40

Konstanty výčtového typu Formát Implicitní hodnoty konstanty výčtového typu zacínají od 0 a každý další prvek má hodnotu o jedničku vyšší Hodnoty mužeme explicitne predepsat enum { SPADES, CLUBS, HEARTS, DIAMONDS }; enum { SPADES = 10, CLUBS, /* hodnota je 11 */ HEARTS = 3, DIAMONDS = 20 }; Typ výčtová konstanta typu int Hodnotu konstanty mužeme použít pro iteraci v cyklu enum {SPADES, CLUBS, HEARTS, DIAMONDS, NUM_COLORS}; for (int i = SPADES; i < NUM_COLORS; ++i) {... } 17/40

Symbolické konstanty Formát konstanta je založena příkazem preprocesoru #define Tzv. neparametrické makro Každý #define musí být na samostatném řádku #define ZAPOCET 1 Vetšinou používáme velká písmena. Symbolické konstanty mohou vyjadřovat konstantní výraz #define MAX_1 ((10*6) - 3) Symbolické konstanty mohu být vnořené #define MAX_2 (MAX_1 + 1) Je-li hodnota výraz, jsou kulaté závorky nutné pro správné vyhodnocení výrazu, např. pro 5*MAX 1 s vnějšími závorkami je 5*((10*6) - 3)=285 vs. 5*(10*6) - 3=297. 18/40

Proměnné s konstantní hodnotou Uvedením kĺıčového slova (modifikátoru) const lze označit proměnnou jako konstantu Překladač kontroluje přiřazení a nedovoĺı hodnotu proměnné nastavit znovu. Příklad const float pi = 3.14159265; Na rozdíl od symbolické konstanty mají konstantní proměnné typ a překladač tak může provádět typovou kontrolu. #define PI 3.14159265 19/40

I. Zápis programu v C Zdrojové soubory Funkce Hodnoty datových typů Interakce s uživatelem 20/40

Standardní vstup a výstup Program spuštěný v prostředí operačního systému má přístup ke znakově orientovanému standardnímu vstupu (stdin) a výstupu (stdout) Jsou to prostředky operačního systému. Prostřednictvím stdout a stdin program komunikuje s uživatelem U MCU probíhá komunikace jinými prostředky (např. sériový port). Funkce definované v knihovně <stdio.h> putchar() výstup (tisk) znaku getchar() vstup (načtení) znaku printf() výstup formátovaného textu scanf() vstup formátovaného textu Funkce jsou součástí standardní knihovny, nikoliv jazyka C. 21/40

Formátovaný výstup printf() Na rozdíl od putc() umí tisknout obsah proměnných různých datových typů Argumentem funkce je textový řídicí řetězec formátování výstupu Řídicí řetězec formátu je uvozen znakem % Znakové posloupnosti (nezačínající %) se vypíší tak jak jsou uvedeny Důležité řídicí řetězce pro výpis hodnot proměnných char %c Bool %i, %u int %i, %x, %o float %f, %e, %g, %a double %f, %e, %g, %a je možné specifikovat počet vypsaných míst, zarovnání, atd. 22/40

1 #include <stdio.h> 2 3 int main(void) 4 { 5 6 int i = a ; Formátovaný výstup příklad 7 int h = 0x61; /* sestnactkova soustava */ 8 int o = 0141; /* osmickova soustava */ 9 10 printf("i: %i h: %i o: %i c: %c\n", i, h, o, i); 11 printf("oct: \141 hex: \x61\n"); 12 13 return 0; 14 } 23/40

Formátovaný vstup scanf() Číselné hodnoty ze standardního vstupu lze načíst funkcí scanf() Argumentem je textový řídicí řetězec podobně jako jako printf() Je nutné předat adresu paměťového místa pro uložení hodnoty 1 #include <stdio.h> 2 3 int main(void) 4 { 5 int i; 6 7 printf("zadej hodnotu int: "); 8 scanf("%i", &i); /* operator & vraci adresu promenne i */ 9 10 printf("zadal jsi %in", i); 11 12 return 0; 13 } 24/40

Řídicí struktury Větvení Cykly Část II Řídicí struktury 25/40

Řídicí struktury Větvení Cykly II. Řídicí struktury Řídicí struktury Větvení Cykly 26/40

Řídicí struktury Větvení Cykly Řídicí struktury Části programu, které předepisují způsob provedení dílčích příkazů Základní druhy řídících struktur posloupnost postupné provedení příkazů větvení provedení příkazů v případě splnění podmínky cyklus opakované provedení, dokud je splněna podmínka Budeme používat složený příkaz a blok pro posloupnost příkazy if a switch (přepínač) pro větvení příkazy while, do a for pro cyklus 27/40

Řídicí struktury Větvení Cykly Složený příkaz a blok Složený příkaz posloupnost příkazů { } // vymezení složeného příkazu složenými závorkami printf("no. of steps \%i\n", steps); Blok posloupnost definic proměnných a příkazů ovlivňuje rozsah platnosti proměnných pojmenovaný blok základ procedur a funkcí { int steps = 10; printf("no. of steps \%i\n", steps); } steps += 1; //nelze - mimo rozsah platnosti bloku Definice alokace paměti podle konkrétního typu proměnné. Rozsah platnosti proměnné je lokální v rámci bloku. 28/40

Řídicí struktury Větvení Cykly II. Řídicí struktury Řídicí struktury Větvení Cykly 29/40

Řídicí struktury Větvení Cykly Podmíněný příkaz if Umožňuje větvení programu na základě podmínky Má dva tvary: if (podminka) prikaz1 else prikaz2 if (podminka) prikaz podminka logický výraz, jehož hodnota je logického typu false (hodnota 0) nebo true (hodnota různá od 0) prikaz příkaz, složený příkaz nebo blok Příkaz je zakončen stredníkem ; Příklad varianty zápisu zjištění menší hodnoty z x a y: (a) (b) (c) int min = y; if (x < y) min = x; int min = y; if (x < y) min = x; int min = y; if (x < y) { min = x; } 30/40

Řídicí struktury Větvení Cykly II. Řídicí struktury Řídicí struktury Větvení Cykly 31/40

Řídicí struktury Větvení Cykly Tvar příkazu while (podminka) prikaz Příkaz cyklu while Průběh cyklu 1. Vyhodnotí se výraz podminka 2. Pokud podminka!= 0, provede se příkaz prikaz, jinak cyklus končí 3. Opakování vyhodnocení výrazu prikaz Řídicí výraz vyhodnocení na začátku cyklu cyklus se nemusí provést ani jednou aktualizace v těle cyklu, jinak je cyklus nekonečný 32/40

Řídicí struktury Větvení Cykly Tvar příkazu Příkaz cyklu do - while do prikaz while (podminka); Průběh cyklu 1. Provede se příkaz prikaz 2. Vyhodnotí se výraz podminka 3. Pokud podminka!= 0, cyklus se opakuje Řídicí výraz vyhodnocení na konci cyklu cyklus se provede vždy alespoň jednou aktualizace v těle cyklu, jinak je cyklus nekonečný 33/40

Řídicí struktury Větvení Cykly Příkaz cyklu for Cyklus je často řízen proměnnou, pro kterou je stanoveno: jaká je počáteční hodnota jaká je koncová hodnota (podmínka pro provedení těla cyklu) jak změnit hodnotu proměnné po každém provedení těla cyklu Příklad: int f = 1; int i = 1; while (i<=n) { f = f*i; i = i+1; } // počáteční hodnota řídící proměnné // řídící výraz // tělo cyklu // změna řídící proměnné Cykly tohoto druhu lze zkráceně předepsat příkazem for: int f = 1; for (int i=1; i<=n; i=i+1) f=f*i; 34/40

Řídicí struktury Větvení Cykly Tvar příkazu Příkaz cyklu for for (inicializace; podminka; zmena) prikaz Odpovídá cyklu while ve tvaru: inicializace; while (podminka) { prikaz; zmena; } Příklad for (int i = 0; i < 10; ++i) { printf("i = %i\n", i); } Změnu řídicí proměnné lze zapsat operátorem inkrementace ++ nebo dekrementace --, lze též použít zkrácený zápis přiřazení, např. +=. 35/40

Řídicí struktury Větvení Cykly Správný zápis Příkaz cyklu for příklady for (i = 0; i < 10; i++) for ( ; a < 4.0; a += 0.2) for ( ; i < 10; ) for ( ; ; i++) /* Nekonecny cyklus */ for ( ; ; ) /* Nekonecny cyklus, ekv. while(1) */ Nesprávné použití for ( ) /* Chybi stredniky */ for (i = 1, i == x, i++) /* Carky misto stredniku */ for ( x < 4 ) /* Chybi stredniky */ 36/40

Část III Zadání domácího úkolu 37/40

Zadání 2. domácího úkolu (HW02) Téma: První cyklus Motivace: Automatické načítání vstupních dat Cíl: Využití cyklu jako základní programového konstrukce pro hromadné zpracování dat. Zadání: https://cw.fel.cvut.cz/wiki/courses/b0b99prpa/hw/hw02 Zpracování libovolně dlouhé posloupnosti celých čísel Výpis načtených čísel Výpis statistiky vstupních čísel Počet načtených čísel; Počet kladných a záporných čísel a jejich procentuální zastoupení na vstupu Četnosti výskytu sudých a lichých čísel a jejich procentuální zastoupení na vstupu Průměrná, maximální a minimální hodnota načtených čísel Termín odevzdání: 27.10.2018, 23:59:59 38/40

Diskutovaná témata Shrnutí přednášky 39/40

Diskutovaná témata Programování v jazyce C Interakce s uživatelem Funkce Hodnoty proměnných Řidící struktury Větvení Cykly Diskutovaná témata Příště: řidící struktury podrobněji 40/40

Diskutovaná témata Programování v jazyce C Interakce s uživatelem Funkce Hodnoty proměnných Řidící struktury Větvení Cykly Diskutovaná témata Příště: řidící struktury podrobněji 40/40