Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Podobné dokumenty
Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

6 Příkazy řízení toku

Řídicí struktury. alg3 1

Algoritmy a datové struktury

Algoritmizace a programování

Algoritmizace a programování

Operátory. Základy programování 1 Tomáš Kühr

Operační systémy. Cvičení 4: Programování v C pod Unixem

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Řídící struktury, if, while, switch

Úvod do programování - Java. Cvičení č.4

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

6. Příkazy a řídící struktury v Javě

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Řídící struktury, if, while, switch

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

1. Téma 03 - Rozhodování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Inovace bakalářského studijního oboru Aplikovaná chemie

Lekce 04 Řídící struktury

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Funkce, podmíněný příkaz if-else, příkaz cyklu for

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Algoritmizace a programování

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Basic256 - úvod do programování Příklady. ing. petr polách

Úvod do programování. Lekce 3

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

C# konzole Podíl dvou čísel, podmínka IF

Příkaz while. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9

Lekce 01 Úvod do algoritmizace

Příkazy if, while, do-while, for, switch

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Základy programování (IZP)

Násobení pomocí sčítání

PROGRAMOVÁNÍ V SHELLU

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Programování v jazyce JavaScript

Martin Flusser. November 1, 2016

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Větvení programů příkaz IF

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Práce se soubory. Základy programování 2 Tomáš Kühr

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Programování v C++ 1, 1. cvičení

Jazyk C# a platforma.net

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Základy algoritmizace a programování

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

C2110 Operační systém UNIX a základy programování

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

- jak udělat konstantu long int: L long velka = 78L;

Skripty - úvod. Linux - skripty 2

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Základy algoritmizace a programování

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

Základy programování (IZP)

Rozklad problému na podproblémy, rekurze

Rozklad problému na podproblémy, rekurze

Algoritmizace. 1. Úvod. Algoritmus

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Programování v jazyce C

Zápis programu v jazyce C#

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Základní stavební prvky algoritmu

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz

Algoritmizace prostorových úloh

Základy algoritmizace a programování

Úvod do programování. Lekce 1

Algoritmizace prostorových úloh

Programovací jazyk C++ Hodina 1

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

ANOTACE vytvořených/inovovaných materiálů

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Funkce, intuitivní chápání složitosti

Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do programování

2. lekce Algoritmus, cyklus Miroslav Jílek

NPRG031 Programování II --- 2/2 Z, Zk

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Transkript:

Větvení a cykly Úvod do programování 1 Tomáš Kühr

Konstrukce if u Příkazy se provádějí pouze při splnění dané podmínky u Podmínka = jakýkoli logický výraz = cokoli celočíselného u Volitelně i příkazy prováděné při nesplnění podmínky (za else) u Typický zápis: if (podmínka) příkazy 1 else příkazy 2

Příklady if if (hodnota < 0) hodnota = -hodnota; zmeneno = 1; else zmeneno = 0; if (hodnota < 0) hodnota = -hodnota; zmeneno = 1; else zmeneno = 0; if (hodnota < 0) hodnota = -hodnota;

If v jiném if u Relativně běžné u Příklad: if (hodnota < 0) printf("záporné"); else if (hodnota > 0) printf("kladné"); else printf("nula"); if (hodnota < 0) printf("záporné"); else if (hodnota > 0) printf("kladné"); else printf("nula");

Konstrukce switch u u u u Větvení podle hodnoty celočíselného výrazu Příkazy pro určitou hodnotu výrazu (tj. pouze podmínky ve tvaru rovnosti) Default větev se provádí, pokud nebyla žádná podmínka splněna Typický zápis: switch (výraz) case hodnota1: příkazy 1 case hodnota2: příkazy 2 default: příkazy

Příklady switch int cislo; char *text; switch (cislo) case 1: text = "Jedna"; case 2: text = "Dva"; default: text = "Nevim"; printf(text); char znak, posunout, novy_znak; int posun = 2; switch (posunout) case 'Y': novy_znak = znak + posun; posunout = 'N'; case 'N': novy_znak = znak; default: printf("chyba!\n");

Switch větev pro více hodnot u Není úplně typické, ale může se hodit u Několik návěstí case za sebou u Větev společná pro více uvedených hodnot u Příklad: switch (cislo) case 1: case 2: text = "Jedna nebo Dva"; default: text = "Nevim";

Příklady složitějšího větvení u Switch v if: if (slovne) switch (cislo) case 1: printf("jedna"); case 2: printf("dva"); case 3: printf("tri"); default: printf("neumim"); stop = 1; else printf("%d\n", cislo);

Příklady složitějšího větvení u If ve switch: switch (akce) case 'n': vysledek = vstup1 * vstup2; case 'd': if (vstup2 == 0) printf("nelze delit nulou.\n"); else vysledek = vstup1 / vstup2; default: printf("neznama akce.\n");

Motivace k cyklům if (n >= 1) printf("1\n"); if (n >= 2) printf("2\n"); if (n >= 3) printf("3\n"); if (n >= 4) printf("4\n"); if (n >= 5) printf("5\n"); u Vypište prvních 5 přirozených čísel printf("1\n"); printf("2\n"); printf("3\n"); printf("4\n"); printf("5\n"); u Vypište prvních n přirozených čísel int n; scanf("%d", &n);

Cyklus while u Opakování bloku příkazů u Dokud je splněna uvedená podmínka u Podmínku píšeme na začátek cyklu u Testuje se na začátku každého průchodu cyklem u Typický zápis: while (podmínka) příkazy

Příklady while cyklu int n, i; scanf("%d", &n); i = 1; while (i <= n) printf("%d\n", i); i++; int prvni, druhe; int vetsi, mensi; vetsi = prvni; mensi = druhe; while (mensi!= 0) int zbytek; zbytek = vetsi % mensi; vetsi = mensi; mensi = zbytek; printf("vysledek je %d. \n", vetsi);

Cyklus for u Složitější konstrukce cyklu u Podporuje nejběžnější způsob použití cyklu u Inicializace řídících proměnných před cyklem u Test podmínky na začátku cyklu u Změny řídících proměnných mezi průchody u Typický zápis: for (inicializace; podmínka; iterace) příkazy

Příklady for cyklu int od, po; scanf("%d", &od); scanf("%d", &po); for (int i = od; i <= po; i++) printf("%d\n", i); int od, krok; scanf("%d", &od); scanf("%d", &krok); for (int i = od; i > 0; i-= krok) printf("%d\n", i);

For vs. while cyklus u Cyklus for lze přepsat pomocí while u For cyklus: for (inicializace; podmínka; iterace) příkazy u Odpovídá: inicializace; while (podmínka) příkazy iterace;

Největší společný dělitel (pomocí for) int prvni, druhe; int vetsi, mensi; for (vetsi = prvni, mensi = druhe ; mensi!= 0; ) int zbytek; zbytek = vetsi % mensi; vetsi = mensi; mensi = zbytek; printf("vysledek je %d. \n", vetsi);

Cyklus do-while u Na rozdíl od předchozích typů cyklu u testuje podmínku až na konci prvního průchodu. u Příkazy v cyklu se tedy vždy minimálně 1 krát vykonají. u Typický zápis: do příkazy while (podmínka);

Příklady cyklu do-while int n, i; scanf("%d", &n); i = 1; do printf("%d\n", i); i++; while (i <= n); int prvni, druhe; int vetsi, mensi; vetsi = prvni; mensi = druhe; do int zbytek; zbytek = vetsi % mensi; vetsi = mensi; mensi = zbytek; while (mensi!= 0); printf("vysledek je %d. \n", vetsi);

Přerušení cyklu u Cykly bývají v reálných programech i složitější u Někdy potřebujeme přerušit cyklus i jinde než na začátku/konci u Často v závislosti na různých podmínkách u Příkazy pro přerušení cyklu: u okamžité vyskočení - u přerušení aktuálního průchodu a přechod k dalšímu - continue; u Vztahují se vždy k "nejbližšímu" cyklu

Příklad přerušení break int cislo; int mocnina; int min = 100; for (cislo = 1; ; cislo++) mocnina = cislo * cislo; if (mocnina > min) printf("%d\n", mocnina);

Příklad přerušení continue int pocet = 5; int mocnina = 1; int cislo = 1; int max = 500; while (mocnina < max) printf("%d, ", mocnina); cislo++; mocnina = cislo * cislo; if ((cislo-1) % pocet!= 0) continue; printf("\n");

Složitější zacyklení u Jeden cyklus může (samozřejmě) být uvnitř druhého cyklu: int pocet = 10; int delka_radku = 3; for (int i = 0; i < pocet; i++) for (int j = 0; j < pocet; j++) printf("%d * %d = %d, \t", i, j, i * j); if ((i * pocet + j + 1) % delka_radku!= 0) continue; printf("\n"); u Příkazy pro přerušení cyklu se týkají vždy toho nejvnitřnějšího cyklu, ve kterém jsou uvedeny.

Větvení programu cvičení 4 Vytvořte program, který po načtení data (den. měsíc. rok) zkontroluje a oznámí, zda daný den skutečně existuje (datum je správně) nebo ne. Roky dovolte zadávat od 1582 po 2017, měsíce 1 až 12 a dny podle skutečného počtu dní v měsíci. V jednodušší variantě můžete počítat s 28 dny v únoru, ve složitější si pak vyhrajte i s přestupnými roky Příklady použití: Zadej datum: 23. 4. 1983 Den existuje. Zadej datum: 29. 2. 2000 Den existuje. Zadej datum: 29. 2. 1900 Den neexistuje.

Cykly cvičení 4 Vytvořte program, který od uživatele načte první člen, diferenci (resp. kvocient) a počet členů aritmetické (resp. geometrické) posloupnosti a poté tuto posloupnost vypíše na obrazovku. Příklad použití pro aritmetickou posloupnost: Zadejte prvni clen: 3 Zadejte diferenci: 2 Zadejte pocet: 5 Posloupnost: 3, 5, 7, 9, 11