Příkazy if, while, do-while, for, switch
|
|
- Daniel Bárta
- před 8 lety
- Počet zobrazení:
Transkript
1 Příkazy if, while, do-while, for, switch BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České vysoké učení technické v Praze xvagner@fit.cvut.cz, vogeljos@fit.cvut.cz 24. října 2016 a 27. října 2016
2 Přehled Řízení výpočtu. Příkaz if. Příkazy cyklu while, do-while, a for. Příkaz switch. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 2/51
3 Řízení výpočtu Řízení výpočtu: sekvence příkazy se provádějí shora dolů,, větvení jeden nebo několik příkazů se provedou jen za splnění určité podmínky, cykly jeden nebo několik příkazů se provádí opakovaně v závislosti na splnění určité podmínky. Implementace: strukturované programování příkazy jsou ve formě bloků, bloky se používají ve větvích a cyklech (C/C++, Java, Pascal,... ), spaghetti code návěští a goto příkazy (původní BASIC). L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 3/51
4 Řízení výpočtu Sequence + If-then - L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 4/51
5 Řízení výpočtu If-then-else + - switch... L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 5/51
6 Řízení výpočtu while, for do-while L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 6/51
7 Řízení výpočtu Složený příkaz sekvence příkazů ve složených závorkách; považuje se za jediný příkaz (z hlediska syntaxe): { a = 10; b = 20; Blok sekvence deklarací a sekvence příkazů ve složených závorkách (blok může být i prázdný): definice funkcí jsou bloky (např. funkce main), deklarace v blocích jsou lokální, proměnné mimo blok neexistují, lokální proměnné zastíní globální proměnné stejného jména, bloky mohou být vnořeny do bloku. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 7/51
8 Globální a lokální deklarace #include <stdio.h> int x = 1, y = 2; /* globální proměnné */ void fun ( void ) { int a = 1; printf ( "fun(): x=%d y=%d a=%d\n", x, y, a ); int main ( void ) { int x = 10; /* lokální x zastíní globální x */ int a = 20; fun ( ); printf ( "main ( ): x=%d y=%d a=%d\n", x, y, a ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 8/51
9 Příkaz if if příkaz má dvě různé formy: if ( podmínka ) příkaz if ( podmínka ) příkaz1 else příkaz2 podmínka je výraz: nula znamená false, nenula true. příklad jak vypočíst minimum dvou proměnných x a y. if ( x < y ) /* if-then-else */ min = x; else min = y; printf ( "Min = %d\n", min ); min = x; /* nebo alternativně, jen if-then */ if ( y < x ) min = y; printf ( "Min = %d\n", min ); L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 9/51
10 Příkaz if Když má být proveden víc než jeden příkaz v podmíněné větvi, je třeba použít blok. Příklad: dány dvě proměnné, jejichž hodnoty je třeba případně zaměnit tak, aby x nebylo větší než y: if ( x > y ) { tmp = x; x = y; y = tmp; Špatné řešení: if ( x > y ) tmp = x; /* větev - pouze tento příkaz */ x = y; y = tmp; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 10/51
11 Příkaz if Dány dvě proměnné x a y, vypočíst max a min. if ( x < y ) { min = x; max = y; else { min = y; max = x; Špatné řešení: if ( x < y ) min = x; max = y; else /* chyba syntaxe: neočekávaný else */ min = y; max = x; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 11/51
12 Příkaz if Jakýkoli příkaz může být vnořen ve větvi if. Tudíž příkaz if lze vnořit do jiného if. Příklad: dána proměnná x, vypočíst znaménko (-1,0,1): if ( x < 0 ) s = -1; else if ( x == 0 ) s = 0; else s = 1; Dány tři proměnné x, y a z, vypočíst maximum: if ( x > y ) if ( x > z ) max = x; else max = z; else if ( y > z ) max = y; else max = z; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 12/51
13 Příkaz if Jakýkoli příkaz může být vnořen ve větvi if. Tudíž příkaz if lze vnořit do jiného if. Příklad: dána proměnná x, vypočíst znaménko (-1,0,1): if ( x < 0 ) s = -1; else if ( x == 0 ) s = 0; else s = 1; Dány tři proměnné x, y a z, vypočíst maximum: if ( x > y ) if ( x > z ) max = x; else max = z; else if ( y > z ) max = y; else max = z; Uvedené zápisy jsou syntakticky správné, kompilátor jim bude rozumět. Pro člověka jsou ale obtížně čitelné. Vhodné formátování zdrojového kódu usnadňuje jeho porozumění. Důležité je zejména zarovnávat bloky. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 12/51
14 Příkaz if Příklad: dána proměnná x, vypočíst znaménko (-1,0,1): if ( x < 0 ) s = -1; else if ( x == 0 ) s = 0; else s = 1; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 13/51
15 Příkaz if Dány tři proměnné x, y a z, vypočíst maximum: if ( x > y ) if ( x > z ) max = x; else max = z; else if ( y > z ) max = y; else max = z; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 14/51
16 Příkaz if Najít druhé maximum... pro dvě proměnné a a b: if ( a > b ) max2 = b; else max2 = a; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 15/51
17 Příkaz if Najít druhé maximum... pro dvě proměnné a a b: if ( a > b ) max2 = b; else max2 = a; pro tři proměnné a, b a c: if ( a > b && b > c ) max2 = b; else if ( a < b && b < c ) max2 = b; else if ( a > c && c > b ) max2 = c; else if ( a < c && c < b ) max2 = c; else if ( b > a && a > c ) max2 = a; else max2 = a; /* 3! = 6 kombinací */ L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 15/51
18 Příkaz if Najít druhé maximum... pro dvě proměnné a a b: if ( a > b ) max2 = b; else max2 = a; pro tři proměnné a, b a c: if ( a > b && b > c ) max2 = b; else if ( a < b && b < c ) max2 = b; else if ( a > c && c > b ) max2 = c; else if ( a < c && c < b ) max2 = c; else if ( b > a && a > c ) max2 = a; else max2 = a; /* 3! = 6 kombinací */ pro čtyři proměnné a, b, c a d: if ( a > b && b > c && c > d ) max2 = b; else... /* 4! = 24 kombinací */... a co, když hodnoty nejsou navzájem různé. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 15/51
19 Příkaz if Nalezení druhého maxima lépe: mějme dvě proměnné: max1 (maximum) a max2 (druhé maximum), inicializace proměnných, nastavit na 0? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 16/51
20 Příkaz if Nalezení druhého maxima lépe: mějme dvě proměnné: max1 (maximum) a max2 (druhé maximum), inicializace proměnných, nastavit na 0? NE: -10, -9, -8 nastavit na první přečtenou hodnotu? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 16/51
21 Příkaz if Nalezení druhého maxima lépe: mějme dvě proměnné: max1 (maximum) a max2 (druhé maximum), inicializace proměnných, nastavit na 0? NE: -10, -9, -8 nastavit na první přečtenou hodnotu? NE: 10, 9, 8 nastavit na první a druhou hodnotu? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 16/51
22 Příkaz if Nalezení druhého maxima lépe: mějme dvě proměnné: max1 (maximum) a max2 (druhé maximum), inicializace proměnných, nastavit na 0? NE: -10, -9, -8 nastavit na první přečtenou hodnotu? NE: 10, 9, 8 nastavit na první a druhou hodnotu? ANO max1 = a > b? a : b; max2 = a < b? a : b; číst další hodnoty (v cyklu): if ( x > max1 ) { max2 = max1; max1 = x; else if ( x > max2 ) max2 = x; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 16/51
23 Příkaz if - i > i < 20 + j = 1 j = 8 if ( i > 0 ) if ( i < 20 ) j = 8; else j = 1; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 17/51
24 Příkaz if - i > i < 20 + j = 1 j = 8 if ( i > 0 ) if ( i < 20 ) j = 8; else j = 1; Špatně, např.: i=-4 L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 17/51
25 Příkaz if - i > i < 20 + j = 1 j = 8 if ( i > 0 ) { if ( i < 20 ) j = 8; else j = 1; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 18/51
26 Příkaz if přestupný rok Země oběhne Slunce za přibližně 365,24219 dne (tropický rok). Rozdíl mezi délkou tropického roku a 365 dny kalendáře kompenzují přestupné roky. Juliánský kalendář (podle Julia Gaia Caesara) vkládal přestupný rok 1x za 4 roky (rok děitelný 4). Průměrná délka Juliánského kalendářního roku je 365,25 dne. V roce 1582 provedl papež Řehoř XIII reformu (Gregoriánský kalendář): pokud je rok dělitelný 400, je přestupný (1600, 2000,... ), jinak, pokud je rok dělitelný 100, není přestupný (1900, 2100,... ), jinak, pokud je rok dělitelný 4, je přestupný (2004, 2008,... ), jinak není přestupný (2001, 2002,... ). Průměrná délka Gregoriánského kalendářního roku je 365,2425 dne, tedy okolo roku 4000 bude potřeba další změna kalendáře. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 19/51
27 Příkaz if přestupný rok Přechod na Gregoriánský kalendář znamenal přeskočit v kalendáři cca 11 dní dne za každých 100 let zpoždění. V různých zemích byl Gregoriánský kalendář zaveden různě: v Čechách a ve Slezsku od ledna 1584, na Moravě od října 1584, v USA od září 1752, L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 20/51
28 Příkaz if přestupný rok Přechod na Gregoriánský kalendář znamenal přeskočit v kalendáři cca 11 dní dne za každých 100 let zpoždění. V různých zemích byl Gregoriánský kalendář zaveden různě: v Čechách a ve Slezsku od ledna 1584, na Moravě od října 1584, v USA od září 1752, v Rusku od února 1918, L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 20/51
29 Příkaz if přestupný rok Přechod na Gregoriánský kalendář znamenal přeskočit v kalendáři cca 11 dní dne za každých 100 let zpoždění. V různých zemích byl Gregoriánský kalendář zaveden různě: v Čechách a ve Slezsku od ledna 1584, na Moravě od října 1584, v USA od září 1752, v Rusku od února 1918, v Řecku od roku 1923 a v Turecku od let 1926/1927. Kuriozity: Češi měli v roce 1584 Velikonoce o 4 týdny dříve než na Moravě (proč o 4 týdny?), v Holandsku neměli v roce 1582 Vánoce, Švédsko chtělo přecházet na nový kalendář plynule 40 let, v Rusku byla říjnová revoluce v listopadu, pravoslavné církve se stále řídí Juliánským kalendářem. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 20/51
30 Příkaz if přestupný rok #include <stdio.h> #include <stdlib.h> int main ( void ) { int year; printf("zadej rok:"); scanf("%d", &year ); printf("rok %d ", year ); if ( year % 4 == 0 && ( year % 100!= 0 year % 400 == 0 ) ) printf("je prestupny\n"); else printf("neni prestupny\n"); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 21/51
31 Příkaz if a efektivita Dána proměnná x, jejíž hodnota je v intervalu Chceme určit počet dekadických cifer. Řešení #1: if ( x < 10 ) digits = 1; else if ( x < 100 ) digits = 2; else if ( x < 1000 ) digits = 3; else if ( x < ) digits = 4; else digits = 5; Řešení #2: if ( x >= ) digits = 5; else if ( x >= 1000 ) digits = 4; else if ( x >= 100 ) digits = 3; else if ( x >= 10 ) digits = 2; else digits = 1; Které řešení je lepší? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 22/51
32 Příkaz if a efektivita Předpokládejme rovnoměrné rozdělení hodnot x z intervalu a uvažujme běhů programu. Řešení #1 provede: rozsah běhů porovnání celkem porovnání/běh Řešení #2 provede: rozsah běhů porovnání celkem porovnání/běh L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 23/51
33 Příkaz if a efektivita Předpokládejme, že hodnoty x nejsou rozděleny rovnoměrně v intervalu , ale například mají Poissonovo rozdělení. Řešení #1 provede: rozsah běhů porovnání celkem , 1.88 porovnání/běh Řešení #2 provede: rozsah běhů porovnání celkem , 3.56 porovnání/běh L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 24/51
34 Příkaz if a efektivita Řešení #2 je skoro čtyřikrát rychlejší (pro rovnoměrné rozdělení), nebo skoro dvakrát pomalejší (Poissonovo rozdělení). Obě řešení jsou špatná z hlediska programování (zdlouhavá, jen pro omezený rozsah hodnot). Celý rozsah nezáporných celých čísel pokrývá řešení: digits = x? (int) log10 ( x ) + 1 : 1; Jednodušší na pochopení je řešení s cyklem while: digits = 1; while ( x >= 10 ) { x /= 10; digits ++; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 25/51
35 Příkaz while Příkaz while má formu: while ( podmínka ) příkaz Příklad: q = x; while ( q >= y ) q -= y; Co je výsledkem tohoto fragmentu kódu? Poznámka: tělo cyklu se nemusí vůbec vykonat. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 26/51
36 Příkaz while Dva nebo více příkazů v těle cyklu musí být obklopeno složenými závorkami (blok): Příklad: q = x; p = 0; while ( q >= y ) { q -= y; p ++; Co je výsledkem tohoto fragmentu kódu? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 27/51
37 Příkaz while Příklad: výpočet faktoriálu: #include <stdio.h> int main ( void ) { int i = 1, f = 1, n; printf ( "Napis prirozene cislo:\n" ); scanf ( "%d", &n ); while ( i < n ) { i = i + 1; f = f * i; printf ( "%d! = %d\n", n, f ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 28/51
38 Příkaz do-while Cyklus do-while je podobný cyklu while. Liší se tím, že podmínka je testována až po vykonání příkazu(ů) v těle cyklu. Příkaz do-while má formu: do statement while ( podmínka ); Příkad faktoriálu: f = 1; i = 0; do { i = i + 1; f = f * i; while ( i < n ); Poznámka: tělo cyklu se vykoná nejméně jednou. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 29/51
39 Příkaz for Cykly bývají často řízeny proměnnou, přičemž je známo: jaká je počáteční hodnota proměnné, jaká je podmínka ukončení cyklu, jak se má měnit hodnota proměnné po každé iteraci. Příklad (faktoriál): f = 1; i = 1; while ( i <= n ) { f = f * i; i = i + 1; Cyklus z předchozího příkladu může být přepsán: f = 1; for ( i = 1; i <= n; i ++ ) f *= i; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 30/51
40 Příkaz for Příkaz for má for obecnou formu: for ( inicializace ; podmínka pokračování cyklu ; změna řídící proměnné ) příkaz Tato syntaxe může být přepsána do formy ekvivalentního cyklu while: inicializace; while ( podmínka pokračování cyklu ) { příkaz; změna řídící proměnné; Nejčastěji je změna řídící proměnné ve tvaru i ++ nebo i --. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 31/51
41 Zpracování sekvencí dat Problém: sečíst čísla ze standardního vstupu. Princip řešení: sum = 0; while ( jsou čísla na vstupu ) { přečíst další číslo; sum += number; Jak zjistit konec vstupu: pevný počet čísel v sekvenci, počet čísel sekvence je dán hodnotou přečtenou před sekvencí, sekvence je zakončena zarážkou (sentinel) zvláštní hodnota, EOF,.... L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 32/51
42 Zpracování sekvencí dat Pevný počet čísel (5 čísel): a 1 a 2 a 3 a 4 a 5 #include <stdio.h> int main ( void ) { int x, sum = 0, i; printf ( "Napis 5 cisel\n" ); for ( i = 0; i < 5; i ++ ) { scanf ( "%d", &x ); sum += x; printf ( "soucet je %d\n", sum ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 33/51
43 Zpracování sekvencí dat Pevný počet čísel (5 čísel): a 1 a 2 a 3 a 4 a 5 #include <stdio.h> int main ( void ) { int x, sum = 0, i; printf ( "Napis 5 cisel\n" ); for ( i = 0; i < 5; i ++ ) { scanf ( "%d", &x ); sum += x; printf ( "soucet je %d\n", sum ); return 0; Jak změnit počet čísel (např. na 6)? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 33/51
44 Zpracování sekvencí dat Pevný počet čísel (5 čísel): a 1 a 2 a 3 a 4 a 5 #include <stdio.h> #define INPUT_LENGTH 5 /* žádný středník po #define */ int main ( void ) { int x, sum = 0, i; printf ( "Napis %d cisel\n", INPUT_LENGTH ); for ( i = 0; i < INPUT_LENGTH; i ++ ) { scanf ( "%d", &x ); sum += x; printf ( "soucet je %d\n", sum ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 34/51
45 Zpracování sekvencí dat Počet dat v sekvenci je dán prvým číslem: n a 1 a 2... a n #include <stdio.h> int main ( void ) { int x, sum = 0, i, n; printf ( "Napis pocet dat v sekvenci\n" ); scanf ( "%d", &n ); for ( i = 0; i < n; i ++ ) { scanf ( "%d", &x ); sum += x; printf ( "soucet je %d\n", sum ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 35/51
46 Zpracování sekvencí dat Sekvence je zakončena zarážkou (hodnota 0): a 1 a , a i 0 #include <stdio.h> int main ( void ) { int x, sum = 0; scanf ( "%d", &x ); while ( x ) { sum += x; scanf ( "%d", &x ); printf ( "soucet je %d\n", sum ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 36/51
47 Zpracování sekvencí dat Sekvence je zakončena zarážkou (EOF): a 1 a 2... a n #include <stdio.h> int main ( void ) { int x, sum = 0; while ( scanf ( "%d", &x ) == 1 ) sum += x; if ( feof ( stdin ) ) printf ( "soucet je %d\n", sum ); else... /* špatný vstup - chyba zpracování */ return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 37/51
48 break a continue Cykly for a while mohou být zakončeny před vstupem do těla cyklu, cyklus do-while může být zakončen po opuštění těla cyklu, je-li třeba zakončit cyklus uvnitř těla cyklu (např. při zjištění chyby), použije se příkaz break: while ( cond1 ) {... if ( cond2 ) break;... příkaz continue startuje novou iteraci těla cyklu. Příklad: zobrazit čísla z intervalu kromě násobků 10: for ( i = 1; i <= 100; i ++ ) { if ( i % 10 == 0 ) continue; printf ( "%d\n", i ); L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 38/51
49 Konečné a nekonečné cykly Algoritmy jsou konečné, tedy cykly musí skončit. Nekonečný cyklus patří k nejčastějším chybám. Hodnota(y) proměnné(ých) podmínky opakování cyklu se musí v těle cyklu měnit: když se hodnoty proměnných v těle cyklu mění, cyklus může skončit, když se hodnoty proměnných v těle cyklu nemění, iterace bud nikdy nenastane, nebo se bude iterovat stále. Triviální příklady: while ( i > 0 ) j = i - 1; double x = 0; int i = -1; while ( i < 0 ) { x = x + sin ( i * 0.6 ); i --; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 39/51
50 Konečné a nekonečné cykly int i =..., n =...; while ( i!= n ) {...; /* nemění se ani i ani n */ i ++; Co musí splňovat i a n, aby se cyklus ukončil? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 40/51
51 Konečné a nekonečné cykly int i =..., n =...; while ( i!= n ) {...; /* nemění se ani i ani n */ i ++; Co musí splňovat i a n, aby se cyklus ukončil? Zřejmě se ukončí pokud i <= n. Ukončí se cyklus pro i > n? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 40/51
52 Konečné a nekonečné cykly int i =..., n =...; while ( i!= n ) {...; /* nemění se ani i ani n */ i ++; Co musí splňovat i a n, aby se cyklus ukončil? Zřejmě se ukončí pokud i <= n. Ukončí se cyklus pro i > n? Uplatní se případně přetečení rozsahu? Změní se něco, pokud i a n budou typu double? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 40/51
53 Konečné a nekonečné cykly int i =..., n =...; while ( i!= n ) {...; /* nemění se ani i ani n */ i ++; Co musí splňovat i a n, aby se cyklus ukončil? Zřejmě se ukončí pokud i <= n. Ukončí se cyklus pro i > n? Uplatní se případně přetečení rozsahu? Změní se něco, pokud i a n budou typu double? Podmínky konečnosti cyklu lze určit téměř vždy (někdy to je velmi obtížné). Konečnost cyklu musí zajistit kontroly předcházející cyklu. Zabezpečený program musí kontrolovat přípustnost vstupních dat. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 40/51
54 Konečné a nekonečné cykly problém 3x + 1 Problém 3x + 1 (Syrakuský problém, Collatzův problém): int n =...; while ( n!= 1 ) { if ( n % 2 == 0 ) n /= 2; else n = 3 * n + 1; n=6 : 6, 3, 10, 5, 16, 8, 4, 2, 1 n=27 : 27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,..., 9232,..., 4, 2, 1 (111 iterací) Otázka: zastaví se tento cyklus pro libovolné n? L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 41/51
55 Programujeme cykly efektivně Příklad zjištění, zda x je prvočíslo: int x =..., isprime = 1, i; for ( i = 2; i <= (int) sqrt ( x ); i ++ ) { if ( x % i == 0 ) isprime = 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 42/51
56 Programujeme cykly efektivně Příklad zjištění, zda x je prvočíslo: int x =..., isprime = 1, i; for ( i = 2; i <= (int) sqrt ( x ); i ++ ) { if ( x % i == 0 ) isprime = 0; Při nalezení prvního dělitele je zbytečné pokračovat ve zkoušení dalších hodnot. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 42/51
57 Programujeme cykly efektivně Příklad zjištění, zda x je prvočíslo: int x =..., isprime = 1, i; for ( i = 2; i <= (int) sqrt ( x ); i++ ) { if ( x % i == 0 ) { isprime = 0; break; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 43/51
58 Programujeme cykly efektivně Příklad zjištění, zda x je prvočíslo: int x =..., isprime = 1, i; for ( i = 2; i <= (int) sqrt ( x ); i++ ) { if ( x % i == 0 ) { isprime = 0; break; Výraz (int)sqrt(x) je počítán v každém cyklu, i když se jeho hodnota nemění. Optimalizující kompilátor to pozná, hloupý kompilátor k tomu donutíme: int max = (int) sqrt ( x ); for ( i = 2; i <= max; i ++ )... L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 43/51
59 Metoda shozeného praporku Testování jedné podmínky pro všechny prvky dané sekvence (všechna sudá, všechna kladná čísla lichá,... ). Nastav praporek indikující splnění podmínky na hodnotu true (1). Procházej sekvenci a pro každý prvek ověř, že je podmínka stále splněna: pokud není splněna, shod praporek, pokud je splněna, nic nedělej. L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 44/51
60 Metoda shozeného praporku Test, zda jsou na vstupu pouze sudá čísla: int x, alleven = 1; /* flag is set */ printf("zadej cisla, 0=konec.\n"); do { scanf("%d", &x); if ( x % 2 == 1 ) alleven = 0; else alleven = 1; while ( x!= 0 ); if ( alleven ) printf("vsechna suda\n"); else printf("alespon jedno liche\n"); L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 45/51
61 Metoda shozeného praporku Test, zda jsou na vstupu pouze sudá čísla: int x, alleven = 1; /* flag is set */ printf("zadej cisla, 0=konec.\n"); do { scanf("%d", &x); if ( x % 2 == 1 ) alleven = 0; else alleven = 1; /* do not restore! */ while ( x!= 0 ); if ( alleven ) printf("vsechna suda\n"); else printf("alespon jedno liche\n"); Nefunguje pro vstup L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 45/51
62 Metoda shozeného praporku Test, zda jsou na vstupu pouze sudá čísla:... int x, alleven = 1; /* flag is set */ printf("zadej cisla, 0=konec.\n"); do { scanf("%d", &x); if ( x % 2 == 1 ) alleven = 0; while ( x!= 0 ); if ( alleven ) printf("vsechna suda\n"); else printf("alespon jedno liche\n"); L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 46/51
63 Metoda shozeného praporku Test, zda jsou na vstupu pouze sudá čísla:... int x, alleven = 1; /* flag is set */ printf("zadej cisla, 0=konec.\n"); do { scanf("%d", &x); if ( x % 2 == 1 ) /* -1 % 2 = -1 */ alleven = 0; while ( x!= 0 ); if ( alleven ) printf("vsechna suda\n"); else printf("alespon jedno liche\n"); Nefunguje pro vstup L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 46/51
64 Metoda shozeného praporku Test, zda jsou na vstupu pouze sudá čísla:... int x, alleven = 1; /* flag is set */ printf("zadej cisla, 0=konec.\n"); do { scanf("%d", &x); if ( x % 2!= 0 ) alleven = 0; while ( x!= 0 ); if ( alleven ) printf("vsechna suda\n"); else printf("alespon jedno liche\n"); L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 47/51
65 Příkaz switch Příkaz switch umožňuje větvení programu na několik větví. Větve jsou identifikovány celočíselnými konstantami. Příkaz switch má obecně tvar: switch ( výraz ) { case const1: příkaz1 break; case const2: příkaz2 break;... case constn: příkazn break; default: příkaz L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 48/51
66 Příkaz switch Příkaz break dynamicky zakončuje větev: switch ( n ) { case 1: printf ( ""*"" ); break; case 2: printf ( ""**"" ); break; case 3: printf ( ""***"" ); break; default: printf ( ""---"" ); Když break chybí, pokračuje se další větví (dokud se nedojde příkaz break nebo na konec příkazu switch): switch ( n ) { case 1: printf ( ""*"" ); /* n==1: ******--- */ case 2: printf ( ""**"" ); case 3: printf ( ""***"" ); default: printf ( ""---"" ); L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 49/51
67 Příkaz switch počet dní od počátku roku #include <stdio.h> int main ( void ) { int d, m, y, n = 0; printf ( ""Napis den mesic a rok:\n"" ); scanf ( "%d%d%d", &d, &m, &y ); switch ( m ) { case 1: n = d; break; case 2: n = 31 + d; break; case 3: n = 59 + d; break;... case 12: n = d; break; default: printf ( "Spatny mesic.\n" ); /*... korekce na přestupný rok... */ printf ( "%d dni od pocatku roku.\n", n ); return 0; L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 50/51
68 Otázky a odpovědi Otázky... L. Vagner, J. Vogel, ČVUT FIT Příkazy, BI-PA1 51/51
Řídící struktury, if, while, switch
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Řídící struktury, if, while, switch BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních
VíceŘídící struktury, if, while, switch
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Řídící struktury,
VíceŘídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
Více3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti
Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace
VíceAlgoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
VíceAlgoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
Více6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VíceFunkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
VíceAlgoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
Více8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
VíceZačínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
VíceOperační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceVětvení a cykly. Úvod do programování 1 Tomáš Kühr
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é
Více2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5
Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou
VíceFunkce, procedury, složitost
Funkce, procedury, složitost BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı
VíceProgramování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
VíceJazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceLogické 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
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
VíceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
VíceAlgoritmy I. Cvičení č. 2, 3 ALGI 2018/19
Algoritmy I Cvičení č. 2, 3 1 ALG I, informace Cvičící RNDr. Eliška Ochodková, Ph.D., kancelář EA439 eliska.ochodkova@vsb.cz www.cs.vsb.cz/ochodkova Přednášející doc. Mgr. Jiří Dvorský, Ph.D., kancelář
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
VíceCykly. Základy programování 1 Martin Kauer (Tomáš Kühr)
Cykly Základy programování 1 Martin Kauer (Tomáš Kühr) Z minula Chary můžete používat jako znaky ale i jako čísla 0-255. Jakou formu vybrat záleží na konkrétní aplikaci. Když pracujete se znaky, používejte
VíceÚvod do programování. Lekce 5
I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í Inovace a zvýšení atraktivity studia optiky reg. č.: CZ.1.07/2.2.00/07.0289 Úvod do programování Lekce 5 Tento projekt je spolufinancován Evropským
VíceProgramovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
VíceVýrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
VíceÚvod do programování. Lekce 3
Úvod do programování Lekce 3 Řízení běhu programu - pokračování /2 příklad: program vypisuje hodnotu sin x dx pro různé délky integračního kroku 0 #include #include // budeme pouzivat funkci
Více2. lekce Algoritmus, cyklus Miroslav Jílek
2. lekce Algoritmus, cyklus Miroslav Jílek 1/36 Algoritmus 2/36 Algoritmus je konečná posloupnost operací, která dává řešení skupiny problémů 3/36 Algoritmus je konečná posloupnost operací, která dává
VíceBI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 7., 9. a 10. listopadu 2017
Pole, Řetězce BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České
VíceJazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory
Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální
VíceZákladní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
VíceEVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
VíceAlgoritmy a datové struktury
Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá
Více1. Téma 03 - Rozhodování
1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice
Více6. Příkazy a řídící struktury v Javě
6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return
VíceKlíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.
Příkazy cyklu v C# Kapitola vysvětluje použití tří typů cyklů for, while a -while a plňuje jejich použití řau příkladů programů v jazyku C#. V jazyku C by šlo pouze k záměně funkcí pro vstup a výstup.
VícePoslední nenulová číslice faktoriálu
Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip
VíceDekompozice problému, rekurze
Dekompozice problému, rekurze BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České
VíceAlgoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner
Algoritmy BI-PA1 Programování a Algoritmizace I. Ladislav Vagner Katedra teoretické informatiky Fakulta informačních technologíı ČVUT v Praze xvagner@fit.cvut.cz 3. října 2016 a 4. října 2016 Kontakt místnost
VíceJazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond
VíceProgramování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
VícePole a Funkce. Úvod do programování 1 Tomáš Kühr
Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně
Více9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek
9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód
VíceProgramovani v Maplu Procedura
Programovani v Maplu Procedura Priklad: procedura, ktera scita 2 cisla: a + 2*b soucet := proc (a, b) local c; # lokalni promenna - existuje a meni se jenom uvnitr procedury c:=a+b; # globalni promenna
VíceFunkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
VíceAlgoritmy. BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel
Algoritmy BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České vysoké
VíceRacionální čísla, operátory, výrazy, knihovní funkce
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Racionální čísla,
VíceTest prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
VíceAlgoritmizace a programování
Algoritmizace a programování Jazyk C funkce České vysoké učení technické Fakulta elektrotechnická A8B14ADP Algoritmizace a programovaní -Jazyk C -Ver.1.00 funkce J. Zděnek 20151 Funkce Funkce - černá (programová)
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VícePascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
Více- jak udělat konstantu long int: L long velka = 78L;
Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L
VíceBI-EP1 Efektivní programování 1
BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Evropský
VíceFunkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr
Funkce pokročilé možnosti Úvod do programování 2 Tomáš Kühr Funkce co už víme u Nebo alespoň máme vědět... J u Co je to funkce? u Co jsou to parametry funkce? u Co je to deklarace a definice funkce? K
VíceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
VíceProgramovací jazyk C++ Hodina 1
Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor
VícePreprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceMartin Flusser. November 1, 2016
ZPRO cvičení 4 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague November 1, 2016 Outline I 1 Outline 2 Cykly 3 Cykly cvičení 4 Rekurze 5 Rekurze
Více1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1
1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
VíceIterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004
Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.
VíceProgramovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct
VíceRacionální čísla, operátory, výrazy, knihovní funkce
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Racionální čísla, operátory, výrazy, knihovní funkce BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík
VíceDynamické datové struktury III.
Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované
VíceZákladní stavební prvky algoritmu
Základní stavební prvky algoritmu Podmínka. Cyklus for, while, do-while. Funkce, metody. Přetěžování. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe 1. část BI-JSC Evropský sociální fond
Více4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady
Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -
VíceMQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Část 2
MQL4 COURSE By Coders guru www.forex-tsd.com -5 Smyčky & Rozhodnutí Část 2 Vítejte v šesté lekci mého kurzu MQL 4. Doufám, že se vám předchozí lekce líbily. V předchozí lekci jsme se bavili o smyčkách.
VícePřednáška 3. Rekurze 1
Paradigmata programování 1 Přednáška 3. Rekurze 1 Michal Krupka KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI Obsah 1 Příklady 2 Rekurzivní procedury a rekurzivní výpočetní proces 3 Další příklady
VíceProgramování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programová realizace DKA typedef enum {q0, q1,... qn,
VíceZáklady algoritmizace a programování
Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
VíceProgramování v jazyce C
Programování v jazyce C Obecné charakteristiky jazyka C: jazyk C je programátorsky přívětivý, obecně použitelný většinou je implementován jako překladač překladač jazyka C je rozsahem malý a lze ho poměrně
VíceAlgoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Algoritmus Daniela Szturcová Tento
VíceObsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program
Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup
VíceAlgoritmizace. 1. Úvod. Algoritmus
1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá
VíceRozklad problému na podproblémy, rekurze
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Rozklad problému
VíceProgramování a algoritmizace 1 2012-2013
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Algoritmy Kdo je
VícePří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
Výraz - syntaxe i sémantika podobné jako v matematice - obsahuje proměnné, konstanty, operátory, závorky, volání funkcí - všechny operátory nutno zapisovat (nelze např. vynechat znak násobení) - argumenty
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Více2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby
VíceProgramování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
VíceAbstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
VíceAlgoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Algoritmus Daniela Szturcová Tento
VíceZákladní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí
02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální
VíceBI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Algoritmy BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České vysoké
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
VíceAlgoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
VíceAbstraktní datové typy, moduly
Abstraktní datové typy, moduly BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních
VíceAlgoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
Vícetype Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;
Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá
VíceSeminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr
Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)
VícePseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla
Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla Použití: - náhodnost při rozhodování např. ve hrách (výběr z více možných stejně dobrých tahů v dané pozici, házecí kostka) - generování
VíceSPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů
SPJA, cvičení 1 ipython, python, skripty základy syntaxe: základní datové typy, řetězce podmínky: if-elif-else, vyhodnocení logických výrazů cykly: for, while kolekce: seznam, n-tice, slovník funkce, list
Více