PPA1 – 5.cvičení Pavel Bžoch
Zápočtový test Píše se 1.11. od 14:50 Na courseware a na dveřích UU409 je rozdělení (podle prvního písmene příjmení) Test bude do cca 16:00 – počítejte s tím! V testu budou okruhy do 5. přednášky včetně a do 6. cvičení včetně Vše od začátku semestru až do polí (včetně)
Odevzdání příkladů Od minulého cvičení je na courseware zadání domácích úloh Pokud příklad úspěšně odevzdáte na validátor do 14 dnů od konání cvičení, máte 1 bod za každý příklad. Za pozdější odevzdání máte 0,5 bodu. Všechny příklady jsou kontrolovány na shodnost! Při 1. výskytu shodného příkladu dostáváte automaticky 0,5 bodu ze všech příkladů -> musíte odevzdat všechny příklady. Zároveň musíte přepracovat shodné příklady. Při případném jakémkoli dalším výskytu shodnosti ztrácíte možnost získat zápočet. Stane se jak „zdroji“ příkladů, tak „opisovači“ či „opisovačům“ Viz courseware – Problémy a řešení
Opakování – náhodný generátor Náhodné generování čísel Random rd = new Random(); int a = rd.nextInt(N); Do proměnné a uloží náhodné číslo z intervalu <0, N) Pokud chceme generovat z jiného intervalu např. <1, N>, pak musíme generování upravit: int a = rd.nextInt(N) +1;
Opakování – řízení toku programu Příkaz if , else if, else if (podmínka){ //příkazy se provedou, když je podmínka splněna } else if (podmínka2){ //příkazy se provedou, když není splněna podmínka, ale je splněna podmínka2 else{ //příkazy se provedou, když není splněna ani jedna z podmínek Bloky else if a else jsou nepovinné!
Opakování – řízení toku programu V podmínkách lze použít následující operátory porovnání (a i b jsou celočíselné proměnné): == test na shodu [(a == b) testuje, zda jsou hodnoty v proměnných stejné] != test na neshodu [(a != b) testuje, zda jsou hodnoty v proměnných rozdílné] > a >= test na větší hodnotu, popř. větší a shodnou [(a >= b) testuje, zda je hodnota v proměnné a větší nebo rovna hodnotě v proměnné b] < a <= test na větší menší popř. menší a shodnou [(a <= b) testuje, zda je hodnota v proměnné a menší nebo rovna hodnotě v proměnné b]
Opakování – řízení toku programu Pro spojení podmínek lze využít logické spojky && logické A [(a > 5 && a < 10) test, zda hodnota v proměnné a je větší než 5 a současně menší než 10] || logické nebo [(a < 5 || a > 10) test, zda hodnota v proměnné a je menší než 5 nebo větší než 10] ! negace výroku [!(a < 5 || a > 10) test, zda hodnota v proměnné a větší nebo rovna 5 a zároveň menší nebo rovna 10. Alternativně lze zapsat takto (a >= 5 && a <= 10)]
Cyklus while Cyklus probíhá dokud je podmínka splněná Podmínka se testuje na začátku obrátky cyklus nemusí proběhnout ani jednou Struktura cyklu: while (podmínka) { příkazy; }
Cyklus do-while Cyklus probíhá dokud je podmínka splněná Podmínka se testuje na konci obrátky cyklus proběhne alespoň jednou Struktura cyklu: do { příkazy; } while (podmínka);
Cyklus for Cyklus probíhá daný počet obrátek na základě hodnoty řídící proměnné (i) Řídící proměnná se testuje na začátku obrátky cyklus nemusí proběhnout ani jednou Struktura cyklu: for (iniciace; podmínka; příkaz obrátky) iniciace – příkaz, který se provede jednou před cyklováním podmínka – podmínka, kdy cyklus běží příkaz obrátky – příkaz, který se provede na konci každé obrátky (před testem podmínky)
Cyklus for Např: for (int i=0; i < hranice; i++) { příkazy; } Cykluje dokud v i je hodnota menší než hodnota v proměnné hranice
Statické metody, parametry I Dosud pouze programy s jednou metodou – main() Každá třída může obsahovat deklarace více metod Metody se můžou volat v jiných metodách třídy nebo i v metodách jiné třídy Podobně jako jsme volali metody třídy Math Metody jsou dostupné v celé třídě bez ohledu na pořadí jejich deklarace
Statické metody, parametry II Deklarace statických metod začíná klíčovým slovem static Může mu předcházet modifikátor určující viditelnost metody z jiných tříd Tím se zatím nebudeme zabývat Hlavička metody vypadá následovně: static typNavratoveHodnoty nazevMetody(typ1 param1, …) Pak následuje tělo metody uzavřené v { }
Statické metody, parametry III Metoda nemusí mít žádný parametr, může jich mít více (oddělené čárkou) Při deklaraci uvádíme jména parametrů, se kterými pak pracujeme v těle metody (tzv. formální parametry) – včetně typů parametrů Když metodu voláme, dosazujeme tam proměnné nebo konstanty – skutečné parametry – bez typů parametrů Pokud voláme statickou metodu jiné třídy, musí jí předcházet název třídy a tečka (.)
Statické metody, parametry IV Metoda může vracet návratovou hodnotu Např. Math.sin(x) vrátí sinus proměnné x (desetinné číslo) Typ návratové hodnoty musí být uveden před názvem metody v její deklaraci Pokud metoda nic nevrací, uvádí se void Metoda vrací hodnotu uvedenou za slovíčkem return v těle metody Pokud metoda nic nevrací, return; se dá použít pro ukončení metody
Statické metody, parametry V Příklad metody, která vrací hodnotu static int secti(int a, int b){ int c = a + b; return c; } Příklad metody, která nic nevrací static void odradkuj() { System.out.println();
Statická proměnná třídy Proměnná/konstanta dostupná v celé třídě Všechny metody ji mohou využívat, mohou s ní pracovat Je dostupná i v případě, že je definovaná až po metodě, ve které ji využíváme Pokud není přiřazena hodnota, má automaticky hodnotu 0, nebo 0.0, nebo null v závislosti na jejím typu Příklad v StatALokProm.pdf (1. příklad)
Lokální proměnná metody Příklad v StatALokProm.pdf (2. příklad) Proměnná/konstanta dostupná pouze v metodě, kde je deklarována Je dostupná až od místa v kódu, kde je deklarována, před deklarací ji nelze využívat Pokud není přiřazena hodnota, nemá žádnou implicitní hodnotu – může v ní být cokoliv (v závislosti na typu) Volání lokální proměnné do níž nebyla přiřazena hodnota skončí chybou překladu