180 likes | 367 Views
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ě
E N D
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 } elseif (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 anijedna zpodmínek } • Blokyelse if a elsejsounepovinné!
Opakování – řízení toku programu • V podmínkách lze použít následující operátory porovnání (a i b jsouceločíselné proměnné): == test nashodu [(a == b)testuje, zdajsouhodnoty v proměnných stejné] != test na neshodu [(a != b)testuje, zdajsouhodnoty v proměnných rozdílné] > a >= test navětší hodnotu, popř. větší a shodnou [(a >= b)testuje, zda je hodnotav proměnné a větší nebo rovna hodnotě v proměnnéb] < a <= test navětší menší popř. menší a shodnou [(a <= b)testuje, zda je hodnotav 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, zdahodnota 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é avě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; } Cyklujedokud 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