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

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

Algoritmizace a programování

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

6 Příkazy řízení toku

Řídicí struktury. alg3 1

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

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

Úvod do programovacích jazyků (Java)

Programovací jazyk Pascal

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

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

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

Objektově orientované programování

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

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

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

Algoritmizace a programování

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

Jazyk C# a platforma.net

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

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

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

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

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

7. Datové typy v Javě

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

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

KTE / ZPE Informační technologie

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

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

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

PSK3-9. Základy skriptování. Hlavička

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

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

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Algoritmy a datové struktury

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

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

Úvod do programování. Lekce 3

Zápis programu v jazyce C#

Programování v jazyce JavaScript

Algoritmizace a programování

Algoritmizace a programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Proměnné a datové typy

Jazyk 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

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Part 1

Výjimky. Tomáš Pitner, upravil Marek Šabo

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

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

Seminář Java II p.1/43

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Textové soubory. alg9 1

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

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

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

Sada 1 - Základy programování

1. Téma 03 - Rozhodování

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

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

Úvod do programování. Lekce 1

Úvod do programovacích jazyků (Java)

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

Algoritmizace a programování

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

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

2) 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.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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ů

URČITÝM ZPŮSOBEM PODOBNÉ

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

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

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Regulární výrazy. Vzory

Programování v Javě I. Leden 2008

Základní stavební prvky algoritmu

Programovací jazyk C++ Hodina 1

8 Třídy, objekty, metody, předávání argumentů metod

Výrazy, operace, příkazy

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

NPRG031 Programování II 1 / :47:55

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Programování v Javě I. Únor 2009

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

Datové typy strana 29

Teoretické minimum z PJV

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Soubor jako posloupnost bytů

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

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

Výčtový typ strana 67

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Základy algoritmizace a programování

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

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

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

VY_32_INOVACE_08_2_04_PR

Transkript:

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 Příkaz je ukončen středníkem ; v Pascalu středník příkazy odděluje, v Javě (C/C++) ukončuje Přiřazení v Javě Operátor přiřazení = (assignment) na levé straně musí být proměnná na pravé straně výraz přiřaditelný (assignable) do této proměnné Rozlišujeme přiřazení primitivních hodnot a odkazů na objekty Přiřazení primitivní hodnoty Na pravé straně výraz vracející hodnotu primitivního typu číslo, logická hodnotu, znak (ale ne např. řetězec) Na levé straně proměnná téhož typu jako přiřazovaná hodnota nebo typu širšího např. int lze přiřadit do long Při zužujícím přiřazení se také provede konverze, ale může dojít ke ztrátě informace např. int -> short Přiřazením primitivní hodnoty se hodnota zduplikuje ("opíše") do proměnné na levé straně. Přiřazení odkazu na objekt Konstrukci = lze použít i pro přiřazení do objektové proměnné: Zivocich z1 = new Zivocich(); Co to udělalo? 1. vytvořilo nový objekt typu Zivocich (new Zivocich()) 2. přiřadilo jej do proměnné z1 typu Zivocich Nyní můžeme odkaz na tentýž vytvořený objekt znovu přiřadit - do z2: Zivocich z2 = z1; Proměnné z1 a z2 ukazují nyní na stejný objekt typu živočich!!! Proměnné objektového typu obsahují odkazy (reference) na objekty, ne objekty samotné!!!

Volání metody Metoda objektu je vlastně procedura/funkce, která realizuje svou činnost primárně s proměnnými objektu. Volání metody určitého objektu realizujeme: identifikaceobjektu.názevmetody(skutečnéparametry) identifikace objektu, jehož metodu voláme. (tečka) název metody, jíž nad daným objektem voláme v závorách uvedeme skutečné parametry volání (záv. může být prázdná, nejsou-li Návrat z metody parametry) Buďto automaticky posledním příkazem v těle metody nebo explicitně příkazem return návratováhodnota způsobí ukončení provádění těla metody a návrat, přičemž může být specifikována návratová hodnota typ skutečné návratové hodnoty musí korespondovat s deklarovaným typem návratové hodnoty Řízení toku programu v těle metody Příkaz (neúplného) větvení if if (logický výraz) příkaz platí-li logický výraz (má hodnoty true), provede se příkaz Příkaz úplného větvení if - else if (logický výraz) příkaz1 else příkaz2 platí-li logický výraz (má hodnoty true), provede se příkaz1 neplatí-li, provede se příkaz2 Větev else se nemusí uvádět Cyklus s podmínkou na začátku Tělo cyklu se provádí tak dlouho, dokud platí podmínka obdoba while v Pascalu v těle cyklu je jeden jednoduchý příkaz while (podmínka) příkaz; nebo příkaz složený while (podmínka) { příkaz1; příkaz2; příkaz3; Tělo cyklu se nemusí provést ani jednou - pokud už hned na začátku podmínka neplatí

Doporučení k psaní cyklů/větvení Větvení, cykly: doporučuji vždy psát se složeným příkazem v těle (tj. se složenými závorkami)!!! jinak hrozí, že se v těle větvení/cyklu z neopatrnosti při editaci objeví něco jiného, než chceme, např.: while (i < a.length) System.out.println(a[i]); i++; i Pišme proto vždy takto: while (i < a.length) { System.out.println(a[i]); i++; Příklad použití "while" cyklu Dokud nejsou přečteny všechny vstupní argumenty: int i = 0; while (i < args.length) { "přečti argument args[i]" i++; Dalším příkladem je použití while pro realizaci celočíselného dělení se zbytkem: Celočíselné dělení se zbytkem Cyklus s podmínkou na konci Tělo se provádí dokud platí podmínka (vždy aspoň jednou) obdoba repeat v Pascalu (podmínka je ovšem interpretována opačně) Relativně málo používaný - je méně přehledný než while Syntaxe: do { příkaz1; příkaz2; příkaz3; while (podmínka); Příklad použití "do-while" cyklu Dokud není z klávesnice načtena požadovaná hodnota: String vstup = ""; float cislo; boolean nacteno; // vytvoř reader ze standardního vstupu BufferedReader in = new BufferReader(new InputStream(System.in)); // dokud není zadáno číslo, čti do { vstup = in.readline(); try { cislo = Float.parseFloat(vstup); nacteno = true; catch (NumberFormatException nfe) { nacteno = false; while (!nacteno); System.out.println("Nacteno cislo "+cislo);

Načítej, dokud není zadáno číslo Cyklus "for" obecnější než for v Pascalu, podobně jako v C/C++ De-facto jde o rozšíření while, lze jím snadno nahradit Syntaxe: for (počáteční operace; vstupní podmínka; příkaz po každém průchodu) příkaz; anebo (obvyklejší, bezpečnější) for (počáteční operace; vstupní podmínka; příkaz po každém průchodu) { příkaz1; příkaz2; příkaz3; Příklad použití "for" cyklu Provedení určité sekvence určitý počet krát for (int i = 0; i < 10; i++) { System.out.println(i); Vypíše na obrazovku deset řádků s čísly postupně 0 až 9 Pět pozdravů nebo Výpis prvků pole objektů "for" cyklem Doporučení k psaní for cyklů Používejte asymetrické intervaly (ostrá a neostrá nerovnost): podmínka daná počátečním přiřazením i = 0 a inkrementací i++ je neostrou nerovností, zatímco opakovací podmínka i < 10 je ostrou nerovností -> i už nesmí hodnoty 10 dosáhnout! Vytvarujte se složitých příkazů v hlavičce (kulatých závorkách) for cyklu - je lepší to napsat podle situace před cyklus nebo až do jeho těla Někteří autoři nedoporučují psát deklaraci řídicí proměnné přímo do závorek cyklu for (int i = 0; ale rozepsat takto: int i; for (i = 0; potom je proměnná i přístupná ("viditelná") i mimo cyklus - za cyklem, což se však ne vždy hodí. Vícecestné větvení "switch - case - default" Obdoba pascalského select - case - else Větvení do více možností na základě ordinální hodnoty Syntaxe: switch(výraz) { case hodnota1: prikaz1a; prikaz1b;

prikaz1c; break; case hodnota2: prikaz2a; prikaz2b; break; default: prikazda; prikazdb; Je-li výraz roven některé z hodnot, provede se sekvence uvedená za příslušným case. Sekvenci obvykle ukončujeme příkazem break, který předá řízení ("skočí") na první příkaz za ukončovací závorkou příkazu switch.vícecestné větvení Vnořené větvení Větvení if - else můžeme samozřejmě vnořovat do sebe: _vnější) { 1) { else { else { 2) { else { Vnořené větvení (2) Je možné "šetřit" a neuvádět složené závorky, v takovém případě se else vztahuje vždy k nejbližšímu neuzavřenému if, např. znovu předchozí příklad: _vnější) 1) else // vztahuje se k nejbližšímu if // s 1) else // vztahuje se k prvnímu if, // protože je v tuto chvíli // nejbližší neuzavřené 2) else // vztahuje se k 2) Tak jako u cyklů - tento způsob zápisu nelze v žádném případě doporučit!!! Vnořené větvení

Řetězené "if - else if - else" Někdy rozvíjíme pouze druhou (negativní) větev: 1) { else 2) { else 3) { else { Neplatí-li podmínka1, testuje se podmínka2, neplatí-li, pak podmínka3 neplatí-li žádná, provede se příkaz za posledním - samostatným - else. Opět je dobré všude psát složené závorky!!! Řetězené if Příkazy "break" Realizuje "násilné" ukončení průchodu cyklem nebo větvením switch Syntaxe použití break v cyklu: for (int i = 0; i < a.length; i++) { if(a[i] == 0) { break; // skoci se za konec cyklu if (a[i] == 0) { System.out.println("Nasli jsme 0 na pozici "+i); else { System.out.println("0 v poli neni"); použití u switch jsme již vidělivícecestné větvení "switch - case - default" Příkaz "continue" Používá se v těle cyklu. Způsobí přeskočení zbylé části průchodu tělem cyklu for (int i = 0; i < a.length; i++) { if (a[i] == 5) continue; System.out.println(i); Výše uvedený příklad vypíše čísla 1, 2, 3, 4, 6, 7, 8, 9, nevypíše hodnotu 5. Řízení průchodu cyklem pomocí "break" a "continue" "break" a "continue" s návěštím Umožní ještě jemnější řízení průchodu vnořenými cykly pomocí návěští můžeme naznačit, který cyklus má být příkazem break přerušen nebo tělo kterého cyklu má být přeskočeno příkazem continue. Návěští Doporučení k příkazům break a continue Raději NEPOUŽÍVAT, ale jsou menším zlem než by bylo goto (kdyby v Javě existovalo), protože

nepředávají řízení dále než za konec struktury (cyklu, větvení). Toto však již neplatí pro break a continue na návěští! Poměrně často se používá break při sekvenčním vyhledávání prvku