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



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

Obsah přednášky. Postup při vytváření objektů. Postup při vytváření objektů. Alokace paměti. Inicializace hodnot atributů

6 Příkazy řízení toku

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

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

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

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/

Algoritmizace a programování

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

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

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

Řídicí struktury. alg3 1

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

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

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Programování v jazyce JavaScript

Zápis programu v jazyce C#

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

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.

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

KTE / ZPE Informační technologie

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

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

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

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

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

Algoritmizace a programování

Programování v jazyce JavaScript

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

Programovací jazyk Pascal

ADT/ADS = abstraktní datové typy / struktury

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

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

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

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

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

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

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

ALGORITMIZACE A PROGRAMOVÁNÍ

7. Datové typy v Javě

3 KTE / ZPE Informační technologie

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

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

KTE / ZPE Informační technologie

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

Seminář Java II p.1/43

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

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

Pole a kolekce. v C#, Javě a C++

Výčtový typ strana 67

1. Téma 03 - Rozhodování

Abstraktní datové typy: zásobník

Úvod do programovacích jazyků (Java)

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Pointery II. Jan Hnilica Počítačové modelování 17

Základní stavební prvky algoritmu

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

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

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

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

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

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

VY_32_INOVACE_08_2_04_PR

Algoritmizace a programování

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

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

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

Algoritmizace řazení Bubble Sort

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

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

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

Z. Kotala, P. Toman: Java ( Obsah )

PŘETĚŽOVÁNÍ OPERÁTORŮ

5 Rekurze a zásobník. Rekurzivní volání metody

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Programování v Javě I. Leden 2008

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

Základy programování (IZP)

Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla

Ukazka knihy z internetoveho knihkupectvi

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

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

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

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

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

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

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

IZAPR ZKOUŠKA OTÁZKY

Algoritmizace a programování

POČÍTAČE A PROGRAMOVÁNÍ

Sada 1 - Základy programování

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

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

Algoritmizace a programování

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Spojová implementace lineárních datových struktur

Transkript:

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 - dokončení Úvod do tříd a objektů jednorozměrná vícerozměrná Druhy chyb v programech 2 Příkaz for neúplný Neúplný příkaz for lze ze syntaktického hlediska používat Neúplné cykly for nepodporují dobrou čitelnost a pochopení zdrojového kódu V takových případech je v takových případech využít jiný typ cyklu for (int i = 0; i < 10) { System.out.println(i); i++; int i = 0; while (i < 10 ) { System.out.println(i); i++; Příkaz for příklady for (int i = 0, j = 0; ( i < 10 ) && (j < 1 0); i+ +, j+ +) { System.out.println("i = " + i + " j = " + j); for ( ; ; ) { // je to mozne, ale nepouzivat System.out.println(" nekonecny cyklus"); int i = 3; for ( ; i < 10 ; ) { // podobne jako cyklus while System.out.println(" i = " + i++); 3 4 Příkaz for příklady Inkrementace nemusí být vždy o hodnotu jedna for (int i = 0; i < 21; i += 5 ) { System.out.println("i = " + i); Cyklus for each (enhanced for loop) O d Java 1.5 Usnadňuje průchod kolekcemi, poli apod. Pouze dvě části v deklaraci cyklu, nikoliv tři for (deklarace : vyraz) { Deklarace Nová proměnná kompatibilního typu s prvky pole platná v bloku V ýraz Musí představovat pole nebo kolekci pro procházení Příklad při probírání polí 5 6 1

Vnořování cyklů Lze používat cykly v cyklech a jedná se o poměrně běžnou záležitost Příklad: Vytiskněte tabulku malé násobilky for (int i = 1; i < 16; i++) { for (int j = 1; j < 16; j++) { System.out.format("%6d", i * j); System.out.println(""); Příkazy break, continue Použití: např. práce s maticemi 7 8 Příkazy break, continue Příkaz break umožňuje ukončit cyklus v libovolném místě těla cyklu Pokračuje se dalším příkazem po ukončeném cyklu V případě vnořených cyklů ukončí jen nejbližší cyklus Standardně nepoužívat tímto způsobem (špatně napsaná podm.) for (int i = 1; i < 16; i++) { for (int j = 1; j < 16; j++) { System.out.format("%6d", i * j); if (j == 5) { break; System.out.println(""); 9 Příkazy break, continue Příkaz continue ukončí aktuální iteraci cyklu Pokračuje se iterací další v y nucení nového v y hodnocení podmínky for (int i = 0; i < 9; i ++) { if (i == 5) { continue; System.out.println("i = " + i); 10 Break, continue Continue v cyklech s nezn. počtem opakování přechod na podmínku cyklu V cyklu for se provede inkrementace a poté se testuje podmínka Ty to příkazy použív at v e v ýjimečných a opodstatněný ch případech Rozhodně nepoužív at následujícím sty lem (minulý ak. rok - studenti) while (true) { if ( cislo == 13) { break; Formátovaný výstup 11 12 2

Formátovaný výstup System.out.print("text"); V ý pis textu, kurzor zůstáv á na stejném řádku System.out.println("text"); V ý pis textu + odřádkování, kurzor se přesouv á na další řádek System.out.printf(format, polozky); format text se znaky pro formátov ání textu polozky hodnoty pro dosazení Formátovaný výstup System.out.printf("Cislo Pi = %6.3f", Další možnosti formátování %[modifikator][sirka][.presnost]konverze konv erze pov inný parametr celé číslo d, o, x (dekadicky, oktalově, hexa) desetinný zápis f, e vědecký zápis s exponentem šířka počet sázený ch míst, zarov nání v pravo.přesnost počet desetinný ch míst modifikátor další v lastnosti, např. + (znaménko), - (zarov nání v levo), 0 (doplnění čísla zlev a nulami) %n- přechod na další řádek 13 14 Formátovaný výstup - příklady System.out.printf("Cislo Pi = %6.3f %n", System.out.printf("Cislo Pi = %8.3f %n", System.out.printf("Cislo Pi = %6.5e %n", Třídy, objekty System.out.printf("Cislo = %d %n", cislo); System.out.printf("Cislo = %d %n", -33); 15 16 Třídy Třída je programová jednotka tvořená množinou identifikátorů, které mají třídou definovaný význam Třída je zdrojem metod popisujících řešení problému rozkladem na podproblémy Třída je popisem strukturovaného datového typu obsahuje datov é prv ky potřebné pro objekt (stav objektu) množinu metod pro práci s datov ými prvky (mění stav objektu) Java třídy, objekty Jazyk Java je objektově orientovaný Až na výjimky je vše v jazyce jazyce objekt (jednou výjimkou jsou již uvedené prim. datové typy) Objekty jsou pokročilejší datový typ než primitivní datové typy Objekty interně využívají prim. datové typy a jiné objekty pro uchování dat atributy objektů (instanční proměnné) Metody vykonávají operace nad daty Správně navržené třídy by měly být jasně definované a snadno využitelné i v jiných aplikacích 17 18 3

Java třídy, objekty Je nezbytné odlišovat třídy a objekty Třída obsahuje kód napsaný programátorem Třída je předpis (šablona) pro vytváření objektů JVM na základě definované třídy vytváří při běhu programu objekty (instance třídy) Mnoho objektů může být vytvořeno na základě jedné třídy Třídy, objekty příklad Deklarace referenční proměnné a vytváření objektů Jakého typu má být referenční proměnná Student objekt Deklarace referenční proměnné Student studentnovak Vytvoření objektu = new Student(); Příklad: Třída: Student O bjekty (ref. prom.): studentnovak, studentnovy... studentnovak referenční proměnná Vazba mezi referenční proměnnou a objektem 19 20 Java referenční datový typ Referenční datový typ odkazuje na objekt v paměti (nepracujeme přímo s pamětí, proto nepoužíváme označení ukazatele) Proměnná, která slouží pro přístup k objektu Při deklaraci proměnné tohoto ty pu definujeme, na objekty jakého typu může proměnná odkazovat (nelze dále měnit) Třídy, atributy, metody syntaktická pravidla 21 22 Syntaxe třídy Příklad: [modifikator] class <JmenoTridy> { <atributy> <konstruktory> <metody> publi c cl ass Stud ent { i nt z namk apro gram ovan i = 1; v oid vyho dnot Znam ku() { i f (z namk apro gram ovan i == 1) { S yste m.ou t.pr intl n("s tud ent ma z namk u vy born e"); els e... Atributy Základní syntaxe [modifikator] <typ> <identifikator> [ = < inic. hodnota>]; public c lass Obdelnik { int delka ; int sirka ; boolean jezobrazen; String oznaceni ; Přístup k atributům tečková notace obdelnik1.delka = 5; 23 24 4

Metody Základní syntaxe [modifikator] <navratovy_typ> <nazev> ([parametry]) { prikaz1; prikaz2;... public v oid nastavznamku(int znamka) { znamkaprogramovani = znamka; Volání metod tečková notace, argumenty studentnovak.nastavznamku(1); 25 26 Jednorozměrného pole Referenční proměnné - alokace místa pro referenční proměnnou primitivních datových typů double[] polerealnychcisel; char[] poleznaku; referenčních datových typů Student[] polestudentu; je objekt Vytvoříme jej pomocí operátoru new Počet prvků pole nelze měnit Jednorozměrné pole double[] pole = new double[10]; pole pole[3] pole[4] pole[5] pole[0] pole[1] pole[6] pole[2] pole[7] pole[8] pole[9] 5.5 4.5 3.3 4 34.3 34 45.5 124 85.2 1 Prvek na indexu 5 Vytvoření objektu a alokace místa pro prvky Hodnota prvku 27 28 Jednorozměrné pole Deklarace ref. proměnné typu pole datovytyp[] pole; datovytyp pole[]; //povoleno, ale nedoporucuje se Vytváření objektů typu pole pole = new datovytyp[pocetprvku]; pole = new double[10]; pole[0] odkazuje na prv ní prv ek pole pole[9] odkazuje na poslední prv ek pole Jednorozměrné pole datovytyp[] pole = new datovytyp[pocetprvku]; Příklad: double[] pole = new double[10]; datovytyp pole[] = new datovytyp[pocetprvku]; // tento styl neni doporuceny Příklad: double pole[] = new double[10]; Počet prvků pole musí být stanoven při vytváření pole. 29 30 5

Vytvoření objektu typu pole Pev ně daný počet prv ků Počet prv ků nelze měnit Počet prvků pole Zjištění pomocí atributu objektu length Standardní hodnoty prvků pole Č íselné primitiv ní typy 0 C har '\u0000' Boolean false double[] pole = new double[10]; pole.length 31 32 indexy Zabezpečují přístup k prvkům První prvek pole Index 0 Poslední prvek pole (pole.length 1) Proměnná typu pole s indexem Stejný způsob práce jako s jakoukoliv jinou proměnnou pole[2] = pole[0] + pole[1]; double pole[] = new double[10]; Indexy prv ků 0 9 Přístup k prvkům pole indexy pole[index]; 33 34 deklarace i inicializace v jednom kroku double[] pole ={1.9, 2.9, 3.4, 3.5; Musí bý t v jednom kroku, ekvivalentní k násl. kódu double[] pole = new double[4]; inicializace Inicializace hodnot při průchodu polem Scanner sc = new Scanner(System.in); System.o ut.pr int("napis " + pole.length + " hodnot: "); pole [i] = input.nextdouble (); pole[0] = 1.9; pole[1] = 2.9; pole[2] = 3.4; pole[3] = 3.5; Inicializace hodnot pole náhodnými čísly pole [i] = Math.random() * 100; 35 36 6

zákl. algoritmy Součet všech prvků pole double soucet = 0; soucet = soucet + pole[i]; //soucet += pole[i] Vyhledání prvku s největší hodnotou double m ax = pole[0]; for (int i = 1; i < pole.length; i++) { if ( pole[i] > max) { max = pole[i]; zákl. algoritmy Náhodné promíchání prvků // generovani nahodneho indexu j int index Nah = (int)(math.random() * pole.length ); // zamena prvku pole [i] za pole [j] double docasny = pole[i]; pole [i] = pole[indexnah]; pole [indexnah] = temp; 37 38 Vícerozměrná pole Deklarace datovyty p[][] refpromenna; Vytvoření objektu refprome nna = new datovytyp[10][10]; Kombinace dekl. a inicializace datovyty p[][] refpromenna = new datovytyp [10][10]; Alternativa (nedoporučuje se) datovyty p refpromenna[][] = new datovytyp [10][10]; Vícerozměrná pole matice int[][] matice = new int [3][]; matice[0 ] = new int [2]; matice[0 ][0] = 6; matice[0 ][1] = 7; matice[1 ] = new int [3]; matice[1 ][0] = 9; matice[0 ] 6 7 0 1 null 0 1 2 9 8 5 0 1 2 matice[1 ] 39 40 7