Ú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í předchozího příkazu. P1 P2 2
Sekvence (posloupnost) Sekvence -příklad (Algoritmus na výpočet průměru dvou daných celých čísel) public class DruhyProgram { public static void main(string[] args) { int scit1 = 5; int scit2 = 2; int prumer = (scit1+ scit2) / 2; System.out.println( Prumer je: prumer); 3
Podmínka (selekce, větvení) Selekce - provedení dalšího kroku je podmíněno splněním podmínky. Podmínka úplná: if (logický_výraz) příkaz1; else příkaz2; P1 + Podm - P2 4
Selekce (podmínka, větvení) Podmínka neúplná: if (logický_výraz) příkaz; Podm + P - 5
Cyklus Cyklus je část algoritmu, která je opakovaně prováděna po splnění určité podmínky (řídící podmínka cyklu). Opakující se kroky nazýváme tělo cyklu. Dva typy cyklů: indukční tělo cyklu se provede po splnění řídící podmínky cyklu nebo dojde k předání řízení za tělo cyklu (cyklus s testem před vykonáním těla cyklu, cyklus s testem za tělem cyklu), iterační -počet opakování těla cyklu závisí na hodnotě řídící proměnné cyklu. 6
Cyklus Cyklus s podmínkou před vykonáním těla cyklu - u tohoto cyklu dochází k ukončení v případě, že podmínka není splněna. Tělo cyklu se nemusí vykonat ani jednou. while (logický_výraz) { tělo cyklu Podm + P1 Pn - 7
Cyklus Cyklus -1.příklad int i = 1; while (i <= 10) { // příkazy i++; 8
Cyklus Cyklus s podmínkou za tělem cyklu -tělo cyklu provede minimálně jednou, protože k prvnímu testování podmínky dojde až po prvním průchodu tělem cyklu. do { tělo cyklu while (logický_výraz) + P1 Pn Podm - 9
Cyklus Cyklus -2.příklad int i = 1; do { // příkazy i++; while (i <= 10); 10
Cyklus Cyklus s pevným počtem opakování for (výraz_start; výraz_stop; výraz_iter) { tělo cyklu 11
Cyklus Cyklus -3.příklad for (int i = 1; i <= 10; i++) { // příkazy for (int i = 2; i <= 100; i += 2) { // příkazy 12
Switch Příkaz switch na základě hodnoty výrazu provádí příslušnou větev příkazu, výraz musí být typu char, byte, short nebo int. Syntaxe: switch (výraz) { case konstanta1: příkaz1; break; case konstanta2: příkaz2; break; case konstanta3: příkaz3; break; case konstanta4: příkaz4; break; //... default: příkaz; 13
... public static void main(string[] args) { switch (ctiznak()) { case 'a' : case 'b' : case 'c' : System.out.print("1"); break; case 'd' : System.out.print("2"); break; default : System.out.print("3"); break; 14
Příkazy break a continue Příkazy break a continue ovlivňují průběh zpracování příkazů v rámci cyklu (příkaz break se používá i v příkazu switch). výsledkem použití příkazu break bude skok za konec tohoto cyklu, continue způsobí, že je přeskočen zbytek těla cyklu a znovu se testuje podmínka cyklu (provede se iterace cyklu). 15
Příkaz return Příkazy return ukončí provádění metody, v metodě main() ukončí return provádění celého programu. Pomocí return se také vrací nějaká hodnota, viz povídání o metodách. 16
Pole Pole je posloupnost prvků stejného DT. Jedinou operací nad DT pole je přístup k jednotlivým prvkům pole pomocí indexu, tj. celého čísla, které udává pozici prvku v poli. Pole má jen jeden identifikátor (jméno). U pole v Javě se podobně jako u objektů rozlišuje deklarace pole od vytvoření instance pole (alokace pole). Deklarace jednorozměrného pole: typ[ ] jmenopole typ jmenopole[ ] Rozsah pole při deklaraci neuvádíme, deklarací pouze vytváříme proměnnou (odkaz) na pole. Několik příkladů deklarace pole: int[ ] poleint; String[ ] dnyvtydnu; String[ ] args; 17
Pole Před prvním použitím je nutné přidělit poli paměť pomocí operátoru new: poleint = new int[20]; Příklad: public class Pole1 { public static void main(string[] args) { int n = 20; int[] poleint = new int[n]; for (int i = 0; i < poleint.length; i++) { poleint[i] = i + 1; System.out.print(poleInt[i] + " "); 18
Dvourozměrné pole public class Pole2 { public static void main(string[] args) { int m = 5, n = 4; int[][] a = new int[m][n]; System.out.println("Pocet radek pole: " + a.length); System.out.println("Pocet sloupcu pole: " + a[0].length); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { a[i][j] = i * 10 + j; System.out.print(a[i][j] + " "); System.out.println(); 19
Objekt Objekt představuje souhrn dat (atributů) a činností (operací), které od něj můžeme žádat. Každý objekt má určité rozhraní, prostřednictvím kterého komunikuje s jinými objekty. Když vytváříme program v objektovém jazyce, nepopisujeme jednotlivé objekty, ale třídy objektů. Objekt je diskrétní entita s jasně definovaným rozhraním, které zapouzdřuje stav a chování. Stav objektu je určen hodnotami atributů objektu v určitém okamžiku. Chování objektu je dáno operacemi, které můžeme s objektem provádět. 20
Třída Třída (class) je definuje jak bude objekt vypadat, obecný popis operací a stavu objektů. Třída je souborem proměnných a podprogramů. V proměnných (lepší a ekvivalentní jsou označení členské proměnné, datové členy nebo datové atributy) je uložen stav objektu. Podprogramům se říká metody, manipulují s členskými proměnnými a mění tak stav objektu. Metody popisují schopnosti (vlastnosti) objektu. Objekt je datový prvek vytvořený podle vzoru třídy. Říká se, že objekt je instance třídy. Balík (package) = knihovna tříd 21
Příklad public class Point { double x; double y; public static void main(string[] args){ Point a = new Point(); Point b = new Point(); a.x = 1.0; a.y = 1.0; b.x = 4.0; b.y = 5.0;.. a b 1.0 1.0 4.0 5.0 22
Pole Pole objektů = pole referencí na objekty Point[] a = new Point[N]; for(int i = 0; i < N; i++) a[i] = new Point(); 0 1 2 3 4 1.7 1.0 3.5 2.0 4.0 5.0 6.0 1.9 7.2 6.3 23