Tato tematika je zpracována v Záznamy přednášek: str , 44-61

Rozměr: px
Začít zobrazení ze stránky:

Download "Tato tematika je zpracována v Záznamy přednášek: str , 44-61"

Transkript

1 Obsah 2. přednášky: Terminálový formátovaný výstup Problémy při provádění aritmetických operací Řídicí struktury - úvod Větvení - příkazy if, if-else (else if), switch Cykly - příkazy while, for, do-while Příkazy break a continue Algoritmizace postup řešení jednoduchého problému (ACM) Tato tematika je zpracována v Záznamy přednášek: str , Problém: Je dán počet testovaných případů t (1 t 100) a pro každý takový případ je na samostatném řádku zadáno celé číslo n (-1000 n 1000). Pro všechna zadaná n spočtěte a na samostatném řádku vypište výsledek následujícího úkolu: Vynásobte číslo n 567mi, poté vydělte výsledek 9, přičtěte 7492, pak vynásobte 235, výsledek vydělte 47 a odečtěte 498. Jaká číslice je ve vypočtené hodnotě na řádu desítek? Postup řešení je uveden na konci této přednášky. Přednášky KIV/PPA1, A. Netrvalová, přednáška

2 Terminálový formátovaný výstup terminálový velmi primitivní výstup (obrazovka - txt režim) formátovaný čísla na výstupu automaticky převedena na řetězec číslic v desítkové soustavě 1. Klasický výstup System.out.print(parametr), System.out.println(), System.out.println(parametr) print(parametr) metoda třídy System, pro výstup parametr primitivní typ nebo řetězec funkce - pro každý primitivní typ existuje implicitní konverze na řetězec int i=1; System.out.print ("i = " +i); // i = 1 System.out.println('A'); // i = 1A System.out.println(Math.E); // System.out.println(5); // 5 System.out.println(5.25); // 5.25 System.out.println("Hello world\n"); // "\n" odradkovani // ALE POZOR: prevod na typ prvniho vystupu (tj. na int) System.out.println(5 + i + 'A'); /* = 71 (65=kod pismena A) nutno na zacatek umistit prazdny retezec */ System.out.println("" i + 'A'); // 51A ok! // JESTE jednou POZOR: chci soucet i+2, System.out.println("index = " + i + 2); // ale vypis je 12 nutno uzavrit do zavorek System.out.println("index = " + (i+2)); // 3 ok! Strana 2 (celkem 32)

3 2. Lepší řešení výstupu (od JDK 1.5) Použití metody - System.out.format(parametr) pozor: parametry jsou odděleny, (čárkou) nikoliv + Používat jen, je-li to nutné! Více informací: Záznamy přednášek (str ) + java.util.formatter Základní pravidla: - ve formátovacím řetězci - za znakem % formátovací znaky - kolik je znaků %, tolik dalších parametrů int i = 1, sum = 33; System.out.format("i = %d, suma = %d%n", i, sum); // i = 1, suma = 33 Poznámka: Desetinný oddělovač je závislý na lokalitě pro ČR je to čárka, pro US tečka (viz dále). Výpis celého čísla v desítkové soustavě - používá se %d, např. pro int i = -1234; System.out.format("i = %d%n", i); // i = počet míst lze stanovit, pak se doplňují mezery zleva, tj. zarovnání doprava, např.: System.out.format("i = %7d%n", i); // i = počet míst lze stanovit a zarovnat doleva (zbylé místo se doplní mezerami), např.: System.out.format("i = %-7dahoj%n", i); // i = ahoj - lze vynutit výpis i + znaménka, např. pro int i = 1234; System.out.format("i = %+7d%n", i); // i = vynutí se výpis nevýznamových nul, např.: System.out.format("i = %07d%n", i); // i = vypisuje se i oddělovač řádů, např.: System.out.format("i = %,7d%n", i); // i = Strana 3 (celkem 32)

4 Výpis celého čísla v jiných soustavách - osmičková soustava, např. pro int j = 30; System.out.format("j = %o%n", j); // j = 36 - šestnáctková soustava, např. pro int j = 30; System.out.format("j = %X%n", j); // j = 1E - počet míst lze určit, např.: System.out.format("j = %3X%n", j); // j = 1E - lze vynutit nevýznamové nuly, např. pro: int j = 10; System.out.format("j = %02X%n", j); // j = 0A Výpis znaku - používá se %c, např. pro char c = 'a'; System.out.format("c = %c%n", c); // c = a - lze použít přetypování a lze vypsat více proměnných najednou System.out.format("Znak %c ma ASCII hodnotu: %d%n", c, (int) c); // Znak a ma ASCII hodnotu: 97 Výpis reálného čísla (od verze Java 1.7 všude znak:,) - reálné číslo %f, např. pro double d = ; System.out.format("d = %f%n", d); // d = 1234, výpis ve vědeckotechnické notaci %g, %e např. pro: double d = ; System.out.format("d = %g%n", d); // d = 1234,57 System.out.format("d = %e%n", d); // d = 1,234567e+03 - lze nastavit počet míst celkem (10) a počet míst za desetinným oddělovačem (1), číslo bude zaokrouhleno System.out.format("d = %10.1f%n", d); // d = 1234,6 - lze použít zarovnání doleva, výpis nevýznamových nul, oddělovač řádů apod. stejně jako u celého čísla Strana 4 (celkem 32)

5 Výpis řetězce - používá se %s, např. pro String s = "Ahoj lidi"; System.out.format("s = %s%n", s); // s = Ahoj lidi - řetězec lze vypsat velkými písmeny System.out.format("s = %S%n", s); // s = AHOJ LIDI - lze stanovit šířku výpisu, výpis bude zarovnán doprava System.out.format("s = %11s %n", s); // s = Ahoj lidi - výpis lze zarovnat i doleva System.out.format("s = %-11s %n", s); // s = Ahoj lidi Příklad (program + výstup): public class FormatovaniVystupu { public static void main(string [] args) { System.out.format("nova radka%n"); int i = -1234; System.out.format("i = %d%n", i); System.out.format("i = %7d%n", i); System.out.format("i = %-7d%n", i); System.out.format("i = %+7d%n", i); System.out.format("i = % 7d%n", i); System.out.format("i = %07d%n", i); System.out.format("i = %, 7d%n", i); char c = 'a'; System.out.format("c = %c%n", c); System.out.format("c = %3c%n", c); System.out.format("c = %C%n", c); System.out.format("c = %c%n", c); System.out.format("c = %c%n", 65);... pokračování na dalším slidu Strana 5 (celkem 32)

6 double d = ; System.out.format("d = %f%n", d); System.out.format("d = %g%n", d); // zmena v java 1.7 System.out.format("d = %e%n", d); // zmena v java 1.7 System.out.format("d = %10.1f%n", d); System.out.format("d = %-10.1f%n", d); int j = 30; System.out.format("j = %o%n", j); System.out.format("j = %x%n", j); System.out.format("j = %X%n", j); System.out.format("j = %3X%n", j); System.out.format("j = %#x%n", j); String s = "ahoj lidi"; System.out.format("s = %s %n", s); System.out.format("s = %S %n", s); System.out.format("s = %11s %n", s); System.out.format("s = %-11s %n", s); System.out.format("s = %.3s %n", s); System.out.format("s = %11.3s %n", s); System.out.format("Pivo \"lezak\" ma 12%%%n"); System.out.format("Znak 'backslash' je \\%n"); j = 30; System.out.format("%d = %o = %X%n", j, j, j); System.out.format("%1$d = %1$o = %1$X%n", j); System.out.format("%d = %<o = %<X%n", j); String zformatovanyretezec = String.format ("%6d", 123); System.out.println(zformatovanyRetezec); String hexcislo = "1A"; int cislo = Integer.parseInt(hexCislo, 16); System.out.format("%s H = %d D = %o O%n", hexcislo, cislo, cislo); System.out.println("konec"); Strana 6 (celkem 32)

7 nova radka i = i = i = i = i = i = i = c = a c = a c = A c = a c = A d = 1234, d = // od verze 1.7: 1234,57 d = e+03 // od verze 1.7: 1,234567e+03 d = 1234,6 d = 1234,6 j = 36 j = 1e j = 1E j = 1E j = 0x1e s = ahoj lidi s = AHOJ LIDI s = ahoj lidi s = ahoj lidi s = aho s = aho Pivo "lezak" ma 12% Znak 'backslash' je \ 30 = 36 = 1E 30 = 36 = 1E 30 = 36 = 1E 123 1A H = 26 D = 32 O konec Od verze Java 1.7 se u formátů reálných čísel v System.out.format() zobrazuje vždy desetinná čárka. Strana 7 (celkem 32)

8 Jak tedy zobrazit ve formátovaném výstupu desetinnou tečku? Použijeme třídu Formatter (obdobně jako Scanner) Výpis se pak volá stejně jako System.out.format, jen místo System.out se použije objekt Formatteru import java.util.*; public class PouzitiFormatter { // import java.util.formatter; Formatter f = new Formatter(System.out, Locale.US); //US //Formatter f = new Formatter(System.out); //CZ public static void main(string [] args){ double d = ; f.format("d = %f%n", d); f.format("d = %g%n", d); f.format("d = %e%n", d); f.format("d = %10.1f%n", d); f.format("d = %-10.1f%n", d); f.close(); // nutno uzavrit Výpisy - v US lokalizaci: d = d = d = e+03 d = d = V CZ lokalizaci (tj. bez nastavení lokalizace): d = 1234, d = 1234,57 d = 1,234567e+03 d = 1234,6 d = 1234,6 Strana 8 (celkem 32)

9 Problémy při provádění arit. operací Důvod - zobrazení čísel, zaokrouhlování, Vysvětlení viz kódování. 1. Přetečení a podtečení (čísla, exponentu) Je-li výsledná absolutní hodnota: větší než max. zobrazitelná dojde k přetečení menší než min. zobrazitelná dojde k podtečení přetečení podtečení přetečení -max -min 0 +min +max Náprava pokud lze - zvětšit rozsah (změnit datový typ) 2. Porovnání dvou reálných čísel double x, y; x == y!! takto NE!!! upravit prostřednictvím <=, >= if (x == y) nahradit if (Math.abs(x - y) < ε) kde: ε absolutní chyba porovnání 3. Problém zaokrouhlení Nevhodným řazením operací s řádově odlišnými hodnotami čísel, opakováním výpočtů v cyklech, atd. může docházet i k výrazným numerickým chybám System.out.println("" + (1.2E E100)); System.out.println("" + ( )); System.out.println("" + (( ) + 1.)); // = 0.9 double s = 0; for (int i=0; i<10000; i++) s += ; System.out.println("" + s); // = E Strana 9 (celkem 32)

10 Řídicí struktury - úvod - složený příkaz (sekvence) - blok příkazů - větvení sekvence (selekce) - podmínky - opakování sekvencí (iterace) - cykly 1. Blok n příkazů P1 P2 Pn { Zápis v jazyce JAVA { P 1 ;. P. n ; int cislo1 = 0; int cislo2 = 3; int sum = cislo1 + cislo2; 2. Větvení programu Zápis v jazyce JAVA Blok příkazů Blok příkazů podmínka Blok příkazů 2 + podmínka - if (PODMÍNKA) { BLOK PŘÍKAZŮ 1; else { BLOK PŘÍKAZŮ 2; int cislo = -5; boolean prirozene; if (cislo > 0) { prirozene = true; cislo = cislo -1; else { prirozene = false; cislo = cislo +1; Strana 10 (celkem 32)

11 3. Příkaz výběru z více možností 2,4,6,8 selektor 1,3,5,7,9.. 0 Příkaz 1 Příkaz 2 Příkaz N část else.. Zápis v jazyce JAVA switch (VÝRAZ) { case HODNOTA1: PŘÍKAZ1; break;... case HODNOTA_N: PŘÍKAZ_N; break; default: PŘÍKAZ_DEF; break; switch (cislo) { case 0: System.out.println( nula ); break; case 2: case 4: case 6: case 8: System.out.println( suda cislice ); break; default: System.out.println( licha cislice,zaporne cislo,cislo >9 ); break; Strana 11 (celkem 32)

12 Java 1.7 je možno použít řetězec v příkazu switch Scanner sc = new Scanner (System.in); System.out.print("Zadej den v tydnu: "); String denvtydnuarg = sc.nextline(); String typdne; switch (denvtydnuarg) { case pondeli : typdne = Zacatek tydne ; System.out.println( Typ dne( + denvtydnuarg + ): + typdne); break; case utery : case streda : case ctvrtek : typdne = Den uprostred tydne ; System.out.println( Typ dne( + denvtydnuarg + ): + typdne); break; case patek : typdne = Konec pracovniho tydne ; System.out.println( Typ dne( + denvtydnuarg + ): + typdne); break; case sobota : case nedele : typdne = Vikend ; System.out.println( Typ dne( + denvtydnuarg + ) : + typdne); break; default: System.out.println( Spatne zadany den: + denvtydnuarg); break; Poznámka: Typ String viz třída String (bude v 6. (7) přednášce) Strana 12 (celkem 32)

13 4. Cyklus se známým počtem opakování pro i 1. n Zápis v jazyce JAVA Blok příkazů 5. Cyklus s podmínkou na začátku podmínka + Blok příkazů - int sum = 0; for (int i = 0; i<10; i++) { sum = sum + i; int max = 5; int sum = 0; while (sum < max) { sum = sum + 1; for(int i = 1; i<=n; i++) { BLOK PŘÍKAZŮ; Zápis v jazyce JAVA while (PODMÍNKA) { BLOK PŘÍKAZŮ; 6. Cyklus s podmínkou na konci Blok příkazů podmínka + - Zápis v jazyce JAVA do { BLOK PŘÍKAZŮ; while (PODMÍNKA); int prvni = 4; int druhe = 8; do { int zbytek = prvni % druhe; prvni = druhe; druhe = zbytek; while(druhe!= 0); Strana 13 (celkem 32)

14 Větvení - příkazy if, if-else (else if), switch - realizuje více variant dalšího postupu Ilustrační příklad (pozor na strukturu zápisu) if (x > 5){ // prikaz IF System.out.println(x + " > 5"); if (x > 5){ // prikaz IF-ELSE System.out.println(x + " > 5"); else { System.out.println(x + " <= 5"); if (x > 5){ // prikaz ELSE-IF System.out.println(x + " > 5"); else { if (x < 5) { System.out.println(x + " < 5"); else { System.out.println(x + " = 5"); switch (x) { // prepinac case 0: case 1: case 2: case 3: case 4: System.out.println(x + " : x < 5"); break; case 5: System.out.println(x + " :x = 5"); break ; case 6: case 7: case 8: case 9: System.out.println(x + " : x > 5"); break ; default: System.out.println(x + " :x neni cislice!"); break; Strana 14 (celkem 32)

15 Příklad: import java.util.*; /** * Precte tri strany trojuhelnika a vypocita obsah, pokud * strany tvori trojuhelnik */ public class Trojuhelnik { private static Scanner sc = new Scanner(System.in); public static void main(string[] args) { sc.uselocale(locale.us); System.out.print("Zadej stranu a: "); double a = sc.nextdouble(); System.out.print("Zadej stranu b: "); double b = sc.nextdouble(); System.out.print("Zadej stranu c: "); double c = sc.nextdouble(); if (((a+b)>c) && ((b+c)>a) && ((a+c)>b))) { double s =(a + b + c)/2; double obsah =Math.sqrt(s*(s-a)*(s-b)*(s-c)); System.out.println("O = " + obsah); else { System.out.println("Strany netvori trojuhelnik."); Zadej stranu a:3 Zadej stranu b:4 Zadej stranu c:5 O = 6.0 Poznámka: Ternární výraz: promenna = podminka? vyraz1 : vyraz2; (používá se málo) int a = 2, b = 4; int vetsi = (a>b)? a : b; Strana 15 (celkem 32)

16 Při používání příkazu if (ve všech modifikacích) dochází velmi často k chybám (nejen v gramatice, ale i v logice). Příklad chybného použití Zadání: Máme dvě celočíselné proměnné x a y. Pokud bude x=0, zvětšíme x o 1. Pokud bude y=0, zvětšíme y o 1. Pokud budou hodnoty x a y zároveň nula, obě snížíme o 1. (Pro x=0 a y=0 nebude příklad vlevo fungovat!) int x = 0; // CHYBNE!!! int y = 0; if (x == 0){ x++; // x = 1 System.out.println("x=" + x); if (y == 0){ y++; // y = 1 System.out.println("y=" + y); if (x == 0 && y == 0){ /* nezabere x nebo y uz není 0 */ x--; y--; System.out.print ("x=" + x); System.out.println (", y=" + y); Více informací a příkladů v Záznamech přednášek! int x = 0; int y = 0; // SPRAVNE if (x == 0 && y == 0){ x--; y--; System.out.print("x=" + x); System.out.println(", y=" + y); else { if (x == 0) { x++; System.out.println("x=" + x); else { if (y == 0) { y++; System.out.println("y=" + y); /* vyreseno pouzitim ELSE IF a prehozenim poradi podminek */ Strana 16 (celkem 32)

17 Cykly - příkazy while, for, do-while - realizuje opakování sekvence kódu - problém nekonečného cyklu Pojmy - hlavička a tělo cyklu - proměnná cyklu - podmínka ukončení cyklu Příklady použití cyklů a vznik nekonečných cyklů final int KONST = 5; int a = 0; while(a < KONST) { // a se musi v cyklu menit! a++; // vypusteni predchozi radky = nekonecny cyklus System.out.println(" " + a); for (int i = 3; i < KONST; i++) { // nerovnost plati stale // i-- zpusobi nekonecny cyklus a--; System.out.println(" " + a); int sum = 0; a = 3; // a = 0; zpusobi nekonecny cyklus do { System.out.println("sum=" + sum); sum += a; while (sum < KONST); // a = 0 sum se nemeni Strana 17 (celkem 32)

18 Dostupnost proměnné cyklu for mimo cyklus /* misto for(int i=0;... pouzit jen for(i=0;... a nad cyklem deklarovat: int i;, ale pouzivat uvazene a obezretne! */ int i; for (/*int */ i = 0; i < 3; i++) { System.out.println ("i = " + i); // dostupna uvnitr cyklu System.out.println ("i = " + i); // i vne cyklu DOSTUPNA! Pozor na chybu při změně proměnné cyklu v těle cyklu for! int suma = 0; for (int i = 0; i < 7; i++) { i = i*3; // není ok, hodnotu promenne nemenit!!! suma = suma + i; System.out.println("i=" + i + ", suma=" + suma); Vnořené cykly for (int i = 1; i < 3; i++) { for (int j = 1; j < 3; j++) { System.out.println (i + " " + j); for (int i = 1; i < 3; i++) { int j = 1; while (j < 4) { j++ System.out.println (i + " " + j); Více proměnných cyklu for(int i = 0, j = 1; i < 10 && j!= 11; i++, j++){ System.out.println (i + " " + j); // nepouzivat neprehledne! i=0, suma=0 i=3, suma=3 i=12, suma= Strana 18 (celkem 32)

19 Typické použití jednotlivých typů cyklů 1. cyklus for Spočtěte součet n prvních přirozených čísel int n = 5; int suma = 0; for (int i = 1; i <= n; i++) { suma += i; // n*(n+1)/2.0 suma = cyklus while Sčítejte zadaná čísla, dokud není zadána 0. Scanner sc = new Scanner(vstup); String vstup = " "; int sum = 0; int cislo; while((cislo = sc.nextint())!= 0) { sum += cislo; sum = cyklus do Vypisujte zadaná čísla a výpis ukončete prvním číslem větším než max. int max = 7, zadano; // vstup - pokracuje z predchoziho prikladu do { zadano = sc.nextint(); System.out.print(" " + zadano); while(zadano <= max); Strana 19 (celkem 32)

20 Další ukázky Příklad: postupné sčítání zadávaných čísel 1. varianta // postupne scitani, // ukonci scitani jakmile je soucet >= zadane sume System.out.print("Zadej sumu: "); int zadanasuma = sc.nextint(); int postupnysoucet = 0; while(postupnysoucet < zadanasuma) { System.out.print("Zadej cislo: "); postupnysoucet += sc.nextint(); System.out.println("soucet = " + postupnysoucet); Zadej sumu: 5 Zadej cislo:3 Zadej cislo:4 soucet = 7 2. varianta // postupne scitani, dokud je zadavano cislo int postupnysoucet = 0; System.out.print("Zadej cislo: "); while(sc.hasnextint()) { // testuje, je-li na vstupu cislo postupnysoucet += sc.nextint(); System.out.println("soucet = " + postupnysoucet); System.out.print("Zadej cislo: "); Zadej cislo:2 Zadej cislo:4 Zadej cislo:x soucet = 6 Strana 20 (celkem 32)

21 Praktický příklad 1: NSD Klempíř má rozstříhat pás plechu o rozměrech x [cm] a y [cm] na co největší čtverce tak, aby nevznikl žádný odpad. Vypočítejte velikost strany jednoho čtverce. Řešením je výpočet největšího společného dělitele NSD přirozených čísel a, b je číslo d takové, že: - čísla a i b jsou dělitelná číslem d - d je největší číslo splňující předchozí podmínku Hledání NSD: matematika - rozklad na prvočinitele Př.: x = 380 = = y = 60 = NSD ( 380; 60 ) = = 20 příliš složité (hledání a testování prvočísel), programování používá tzv. Eukleidův algoritmus. Eukleidés, Euklides (325 př. n. l. 260 př. n. l) - řecký matematik a geometr. Většinu života strávil v Alexandrii v Egyptě. Jednoduché řešení odečítáním: vstup: a,b opakuj dokud a b od většího z čísel a, b odečti menší a výsledek ulož tam, kde bylo větší číslo výstup: a (nebo b, je to jedno, neboť a = b) Strana 21 (celkem 32)

22 Odstranění opakovaného odečítání (např. a>>b) - nahradit operací modulo (zbytek po celočíselném dělení). Výpočet je pak ukončen, pokud b = 0! Eukleidův algoritmus: 1. najdi: zbytek z - operace a%b 2. přesun: a b, b z 3. testuj: b 0 pokračuj: 1. b = 0 a je NSD konec import java.util.*; // cyklem while // Nejvetsi spolecny delitel dvou prirozenych. cisel public class NsdCyklusWhile { private static Scanner sc = new Scanner(System.in); public static void main(string[] args) { System.out.print("Zadej a: "); int a = sc.nextint(); System.out.print("Zadej b: "); int b = sc.nextint(); System.out.print("NSD(" + a + "," + b + ") = "); while (b!= 0) { int zbytek = a % b; a = b; b = zbytek; System.out.println(a); Příklad: 6 4 z = 2 a = 4 b = 2 z = 0 a = 2 b = 0 NSD = a = 2 Zadej a: 12 Zadej b: 8 NSD(12, 8) = 4 Strana 22 (celkem 32)

23 // cyklem do //. System.out.print("NSD(" + a+ "," + b + ") = "); do { int zbytek = a % b; a = b; b = zbytek; while(b!= 0); System.out.println(a); //. Zadej a: 36 Zadej b: 24 NSD(36,24) = 12 I následujícím způsobem - využitím cyklu for lze algoritmus realizovat, ale rozhodně to není typická realizace! // cyklem for //. System.out.print("NSD(" + a + "," + b + ") = "); for(; b!= 0;) { int zbytek = a % b; a = b; b = zbytek; System.out.println(a); //. Zadej a: 17 Zadej b: 7 NSD(17,7) = 1 Strana 23 (celkem 32)

24 Praktický příklad 2: Fibonacciho posloupnost 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... Již dříve (před Fibonaccim) indičtí učenci Gopāla (1135?), Hemacandra (1150?) - obdobná posloupnost (1,2,3,5,8,13,...) Leonardo Fibonacci (Filius Bonaccii) Leonardo z Pisy (1180? ) Liber Abaci [1202] uveřejněna úloha: Sčítání králíků Kolik párů králíků se rozmnoží z jediného páru za jeden rok? Platí následující předpoklady: - každý pár zplodí každý měsíc nový pár - nový pár začíná rodit ve věku 1 měsíce - králíci neumírají E. Léger (1837) - využití Fibonacciho posloupnosti ke studiu efektivity Eukleidova algoritmu (viz sl. 13). Pokud čísla a, b nejsou větší než F k pak krok č. 2 proběhne nejvýše k+1-krát. Zlatý řez (Feidias - Φ - sochy, poměr Φ:1) Simon Jacob (1564): F n+1 /F n = ½(1+ 5 ) = Φ Strana 24 (celkem 32)

25 Fibonacciho posloupnost: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... f0 = 0, f1 = 1, f2 = f0 + f1, f3 = f1 + f2,... Obecně: f(0) = 0, f(1) = 1, f(i) = f(i-2) + f(i-1) pro i = 2, 3, 4,... public class FibonacciCyklemVypis { private static Scanner sc = new Scanner(System.in); public static void main(string args[]) { System.out.print("Zadej n: "); int n = sc.nextint(); int f0 = 0, f1 = 1; System.out.println("f" " = " + f0); if(n >= 1){ System.out.println("f" " = " + f1); for(int i=2; i<n; i++){ int f2 = f0 + f1; System.out.println("f" + i + " = " + f2); f0 = f1; f1 = f2; // pro prvních 10 clenu, nulou pocinajic Zadej n: 10 f0 = 0 f1 = 1 f2 = 1 f3 = 2 f4 = 3 f5 = 5 f6 = 8 f7 = 13 f8 = 21 f9 = 34 Strana 25 (celkem 32)

26 Praktický příklad 3: Výpočet třetí odmocniny * Spočteme reálny kořen binomické rovnice x 3 - a = 0, kde a je číslo, jehož třetí odmocninu hledáme. Použijeme vzorec Newtonovy metody: x[i+1]=x[i]-f(x[i])/f '(x[i]) pro i=1,2,..., kde f(x)= x 3 - a. Iterační vzorec je pak: x2 = x1 + (a/(x1) 2 - x1)/3 Výpočet končí, když (x2-x1) < import java.util.*; public class TretiOdmocnina { private static Scanner sc = new Scanner(System.in); public static void main (String []arg) { final double EPS = 1e-5; // sc.uselocale(locale.us); System.out.print("Zadej cislo: "); double zadanecislo = sc.nextdouble(); double x1, x2 = zadanecislo; do { x1 = x2; x2 = x1 + (zadanecislo/(math.pow(x1,2)) - x1)/3; while (Math.abs(x2-x1)>EPS); System.out.println("Spocteno(" + zadanecislo + ") = " + x2); System.out.println ("Java-fce(" + zadanecislo + ") = " + Math.cbrt(zadaneCislo)); Zadej cislo: 27 Spocteno(27.0) = 3.0 Java-fce(27.0) = 3.0 Strana 26 (celkem 32)

27 Příkazy break a continue int suma = 0; int cislo = 2; do { cislo ++; suma += cislo; System.out.print("cislo = " + cislo); System.out.println(", suma = " + suma); // break predcasne ukonceni cyklu // pokracuje se vypisem na poslední radce if (suma >= 6) { break; while (cislo < 5); konec: 4, 7 System.out.println("konec: " + cislo + ", " + suma); cislo = 3, suma = 3 cislo = 4, suma = 7 int suma = 0; // continue predcasne ukonceni iterace // a pokracovani nasledujici iteraci int cislo = 0; do { cislo++; System.out.print(" cislo = " + cislo); if (cislo == 2) { continue; suma += cislo; // uz se neprovedou a prechod na do System.out.println(", suma = " + suma); while (cislo < 4); System.out.println("konec: " + cislo + ", " + suma); cislo = 1, suma = 1 cislo = 2 cislo = 3, suma = 4 cislo = 4, suma = 8 konec: 4, 8 Strana 27 (celkem 32)

28 Jak na problém z úvodu přednášky? použijeme znalosti z přednášek (minulé a dnešní) problém rozdělíme na podproblémy Je dán počet testovaných případů t (1 t 100) a pro každý takový případ je na samostatném řádku zadáno celé číslo n (-1000 n 1000). Pro zadané n spočtěte a na samostatném řádku vypište výsledek následujícího úkolu: Vynásobte číslo n 567-mi, poté vydělte výsledek 9, přičtěte 7492, pak vynásobte 235, výsledek vydělte 47 a odečtěte 498. Začátek čti n v n * 567 / 9 v (v ) * 235 načti n v n * 567 / 9 v (v ) * 235 v v/ vypiš v v v/ vypiš v Konec int n = sc.nextint(); int v = n * 567 / 9; v = v ) * 235; v = v / ; System.out.println(v); Jaká číslice je ve vypočtené hodnotě na řádu desítek? Strana 28 (celkem 32)

29 Vydělíme a použijeme operaci modulo např. (123/10) % 10 = 2 Začátek čti n v n * 567 / 9 v (v ) * 235 načti n v n * 567 / 9 v (v ) * 235 v v/ v v/10 mod 10 vypiš v v v/ v v/ 10 mod 10 vypiš v Konec int n = sc.nextint(); int v = (n * 567 / ) * 235 / ; v = v/10 % 10; System.out.println(v); Je to ale ok? n = 200 n = 50 n = -50 n = ok 1 ok 1 ok -3??? není ok! Strana 29 (celkem 32)

30 Co je tedy ještě třeba? - udělat absolutní hodnotu z výsledku Začátek čti n v n * 567 / 9 v (v ) * 235 v v/ načti n v n * 567 / 9 v (v ) * 235 v v/ v v/10 mod 10 v v vypiš v v v/ 10 mod 10 v v vypiš v Konec int n = sc.nextint(); int v = (n * 567 / ) * 235 / ; v = v/10 % 10; v = Math.abs(v); System.out.println(v); n = ok!!! Strana 30 (celkem 32)

31 Co nám ještě chybí? - cyklus pro jednotlivé testované případy Začátek čti t ne t >0 ano čti n v n * 567 / 9 v (v ) * 235 v v/ v v/10 mod 10 opakuj t-krát načti n v n * 567 / 9 v (v ) * 235 v v/ v v /10 %10 v v vypiš v vypiš v Konec t t -1 Strana 31 (celkem 32)

32 int t = sc.nextint(); for (int i = 0; i<t; i++) { int n = sc.nextint(); int v = (n * 567 / ) * 235 / ; v = Math.abs(v/10 %10); System.out.println(v); // t pocet testovanych pripadu Nyní už můžete samostatně doplnit zbytek programu a prakticky ověřit. KDE? Řešení je možno automaticky validovat na: Co je nutno udělat? - registrace - přečíst zadání (11547 Automatic Response) - napsat celý zdrojový kód - odevzdat zdrojový kód - třída (i zdrojový soubor) musí mít jméno Main! - kontrola validace, obdržíte i validační Strana 32 (celkem 32)

Tato tematika je zpracována v Záznamy přednášek: str

Tato tematika je zpracována v Záznamy přednášek: str Obsah 2. přednášky: Číselné soustavy Kódování Datové typy a Java Deklarace proměnné Výraz, přiřazení, příkaz Operátory Konverze typu Základní matematické funkce Terminálový formátovaný vstup a výstup Tato

Více

Tato tematika je zpracována v Záznamy přednášek: str. 12, 14 23, 34-43

Tato tematika je zpracována v Záznamy přednášek: str. 12, 14 23, 34-43 Obsah 2. přednášky: Číselné soustavy Kódování Přehled datových typů Přehled a použití operátorů Generátor náhodných čísel Terminálový formátovaný vstup a výstup Grafický nástroj Drawing Tool Algoritmizace

Více

Algoritmizace a programování. Terminálový vstup a výstup

Algoritmizace a programování. Terminálový vstup a výstup Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem

Více

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

3. 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íce

Algoritmizace a programování

Algoritmizace 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íce

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

Ú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íce

Řídicí struktury. alg3 1

Ří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íce

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

3 KTE / ZPE Informační technologie

3 KTE / ZPE Informační technologie 3 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Komentáře

Více

8. 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 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íce

4.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

4.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íce

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

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 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

Jazyk C# a platforma.net

Jazyk 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íce

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na obrazovku zpomaluje tím, že zobrazíme okno (proužek) o stavu

Více

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

for (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íce

Začí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ů 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íce

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

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h> 9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

5. přednáška - Rozklad problému na podproblémy

5. přednáška - Rozklad problému na podproblémy 5. přednáška - Rozklad problému na podproblémy Obsah přednášky: Rozklad problému na podproblémy. Rekurze. Algoritmizace (Y36ALG), Šumperk - 5. přednáška 1 Rozklad problému na podproblémy Postupný návrh

Více

Úvod do programování. Lekce 3

Ú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íce

1. Téma 03 - Rozhodování

1. 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íce

Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické Jak v Javě příkazy, operace a výrazy BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické Literály Konstanty Komentáře Přiřazovací příkaz Typové konverze Příkazy výstupu Formátovaný výstup

Více

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

6. 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íce

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

- 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íce

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 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 formátovanému výstupu,

Více

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

Více

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

1. 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íce

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

Více

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

C# konzole Podíl dvou čísel, podmínka IF C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci

Více

6 Příkazy řízení toku

6 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íce

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

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

1. 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íce

Tato tematika je zpracována v Záznamy přednášek: str

Tato tematika je zpracována v Záznamy přednášek: str Obsah 10. přednášky: Souvislosti Složitost - úvod Výpočet časové složitosti Odhad složitosti - příklady Posuzování složitosti Asymptotická složitost - odhad Přehled technik návrhů algoritmů Tato tematika

Více

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

Čísla a číselné soustavy.

Čísla a číselné soustavy. Čísla a číselné soustavy. Polyadické soustavy. Převody mezi soustavami. Reprezentace čísel. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK.

Více

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

Úvod do programovacích jazyků (Java)

Ú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íce

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

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

2.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íce

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

Operátory. Základy programování 1 Tomáš Kühr Operátory Základy programování 1 Tomáš Kühr Operátory a jejich vlastnosti Základní konstrukce (skoro) každého jazyka Z daných operandů vytvoří výsledek, který je možné dále využívat Arita udává počet operandů

Více

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

Vě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íce

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

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice Řídicí příkazy V této kapitole se seznámíte s příkazy, které řídí postup provádění programu Příkazy řízení programu se řadí do třech kategorií: příkazy výběru, kam patří příkazy if a switch, příkazy iterace,

Více

Formátové specifikace formátovací řetězce

Formátové specifikace formátovací řetězce 27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

Obsah 10. přednášky: Jak bude probíhat zkouška?! Podrobné informace:

Obsah 10. přednášky: Jak bude probíhat zkouška?! Podrobné informace: Obsah 10. přednášky: Kódování dat - terminologie Rozdělení kódů Kódování čísel Kódování znaků Dynamické programování* Příklad řešení úlohy ACM* Úloha pro zájemce* efektivita algoritmu Tato tematika je

Více

Programovací jazyk Pascal

Programovací 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íce

9. přednáška - třídy, objekty

9. přednáška - třídy, objekty třída String a její použití kolekce, typované kolekce 9. přednáška - třídy, objekty Algoritmizace (Y36ALG), Šumperk - 9. přednáška 1 Třída String Objekty knihovní třídy String jsou řetězy znaků Od ostatních

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových

Více

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

Algoritmizace 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íce

Základy algoritmizace a programování

Zá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íce

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 7 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň - ternární

Více

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

Č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íce

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg

Více

Programy na PODMÍNĚNÝ příkaz IF a CASE

Programy na PODMÍNĚNÝ příkaz IF a CASE Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak

Více

Programování v jazyce JavaScript

Programová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íce

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

Zá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íce

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

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Textové řetězce V jazyce C neexistuje typ proměnné, který by byl určen výhradně pro ukládání textu V jazyce C používáme

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Algoritmizace a programování

Algoritmizace 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íce

Architektury počítačů

Architektury počítačů Architektury počítačů IEEE754 České vysoké učení technické, Fakulta elektrotechnická A0M36APO Architektury počítačů Ver.1.20 2014 1 Fractional Binary Numbers (zlomková binární čísla / čísla v pevné řádové

Více

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

Programová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íce

Algoritmizace a programování

Algoritmizace 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íce

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

Pascal. 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

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

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr) Operátory Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační poznámky Formátujte kód přehledně! Pomůžete sobě i mně. Spusťte si vaše programy a zkuste různé vstupy! Pokud program nedává správné

Více

Lekce 01 Úvod do algoritmizace

Lekce 01 Úvod do algoritmizace Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním

Více

Algoritmy a datové struktury

Algoritmy 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íce

Úvod do programování 7. hodina

Úvod do programování 7. hodina Úvod do programování 7. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Znaky Vlastní implementace

Více

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová

Více

Řetězce a řídicí struktury

Řetězce a řídicí struktury Řetězce a řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 3: Řetězce a řídicí

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝ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íce

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

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

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 5 Cykly - cyklus nebo také smyčka je řídicí struktura programu, která opakovaně provádí posloupnost příkazů - opakování i ukončení cyklu je řízeno nějakou podmínku - cyklus se skládá z posloupnosti příkazů

Více

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Středoškolská technika 2017 Setkání a prezentace prací středoškolských studentů na ČVUT PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Vojtěch Pchálek Střední škola technická Kouřílkova 8, Přerov ANOTACE Bratr, který

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

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

Klíč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íce

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

Ú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íce

Tato tematika je zpracována v Záznamy přednášek: str Problém: Proveďte jednoduchou analýzu zadaného textu (četnost výskytu písmen).

Tato tematika je zpracována v Záznamy přednášek: str Problém: Proveďte jednoduchou analýzu zadaného textu (četnost výskytu písmen). Osah 5. přednášky: Pole - motivace Deklarace, vytvoření, inicializace pole Mechanismus vytváření pole, reference Pole jako parametr či návratová hodnota Změna pole daného parametrem Kopie polí Pole reprezentující

Více

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

Obsah. 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

Programová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 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íce

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

Cykly. 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

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 04. Datové typy, operace, logické operátory Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

Více

2. Základy jazyka. Proměnné. Základy jazyka

2. Základy jazyka. Proměnné. Základy jazyka 2. Základy jazyka Napíšeme si první jednoduchý program v Javě, na kterém si vysvětlíme základy jazyka. Bude to program, který sečte dvě celá čísla a výsledek zobrazí na konzoli. public class PrvniProgram

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu 1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu

Více

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Java Cvičení 01.  CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Java Cvičení 01 http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Příklady - Porovnání Co kód vypíše? package cz.cuni.mff.java.example01.tests; public class Test01

Více

Část 1 Soubory a vytvoření projektu. Řetězce a řídicí struktury. Část 2 Připomínka (NSD) Část 3 Textové řetězce, operátory a načítání vstupu

Část 1 Soubory a vytvoření projektu. Řetězce a řídicí struktury. Část 2 Připomínka (NSD) Část 3 Textové řetězce, operátory a načítání vstupu Část 1 Soubory a vytvoření projektu Řetězce a řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR1 Programování 1 Jan Faigl, 2015

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů ÚVODNÍ ZNALOSTI datové struktury správnost programů analýza algoritmů Datové struktury základní, primitivní, jednoduché datové typy: int, char,... hodnoty: celá čísla, znaky, jednoduché proměnné: int i;

Více

Rozklad problému na podproblémy

Rozklad problému na podproblémy Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních

Více

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody 4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty

Více

Poslední nenulová číslice faktoriálu

Poslední 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íce

Řetězce a řídicí struktury

Řetězce a řídicí struktury Řetězce a řídicí struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 3: Řetězce a řídicí

Více

Regulární výrazy. Vzory

Regulární výrazy. Vzory Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO

Více

Textové soubory. alg9 1

Textové soubory. alg9 1 Textové soubory Textový soubor je posloupnost znaků členěná na řádky každý znak je reprezentován jedním bytem, jehož obsah je dán nějakým kódováním znaků členění na řádky je závislé na platformě a obvykle

Více

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více