3. Lekce - funkce

Funkce/metody
Opakování

Funkce / Metody

Funkce je kousek programu/kódu, kterému přiřadíme jména a můžeme opakovaně chtít aby se tento kousek programu. Tomu říkáme že funkci voláme. Taková funkce může mít navíc takzvané parametry, tedy proměnné, které mohou při každém volání funkce nabívat různých hodnot.

V jazyce Java se tyto funkce správně nazývají metody. Každá funkce pak má návratovou hodnotu. to znamená nějaký výsledek (číslo, řetězec) který můžeme uložid to nějaké proměnné. Výsledkem funkce může být také nic prázná hodnota. To se značuje datovým typem void.

Funkce mohou složit pro opakované volání programu, ale také pro rozdělení a zjednodušení programu, aby byl lépe přehledný.

public static dadovy_typ_návratové_hodnoty jmenoFunkce (seznam_parametrů) {
/*
* program funkce - kód
* někdy označovaný jako tělo funkce/metody
*
* */
}

public static void main(String[] args) {
sayHello();
}

/**
* Jednoduchá funkce, která nemá žádné parametry
* návratová hodnota je void. Takže nic.
*/
public static void sayHello() {
System.out.println("Ahoj, jakse máš.");
System.out.println("================");
}

Čekání x milisekund

try {
Thread.sleep(100);
} catch (InterruptedException e) {
}

Operace modulo

╔════════════════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
║ počítadlo │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 29 │ 30 ║
╟────────────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────╢
║ pocitadlo % 10 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 ║
╚════════════════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝
╔════════════════════════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
║ počítadlo │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 29 │ 30 ║
╟────────────────────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────╢
║ požadovaná pozice │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ 1 │ 2 │ 3 ║
╟────────────────────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────╢
║ pocitadlo % 18 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 │ 12 ║
╟────────────────────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────╢
║ 9 - pocitadlo % 18 │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ -1 │ -2 │ -3 │ -4 │ -5 │ -6 │ -7 │ -8 │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ -1 │ -2 │ -3 ║
╟────────────────────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────╢
║ abs(9 -pocitadlo % 18) │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ 1 │ 2 │ 3 ║
╚════════════════════════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝

Animace hvězdičky

Vytvořte program, který umožní animovat hvězdičku pomocí opakovaného výpisu jednoho řádku a záměnou pozice.

Použijde znak '\r' pro návrat na začátek řádku. V eclipsu je třeba změnit nastavení. Nutno zaškrtnout volbu Windows -> Preferences -> Run/Debug -> Console -> Interpret ASCII control characters.

Použijte kód Čekání x milisekund na zpomalení výpisu třeba po 20 milisekundách.

Operátor module se dá použít pro posun hvězdičky a posléze její návrat na začátek.

Rozšířené úkoly

  • Pokuste se aby se hvězdička na konci řádku odrážele zpět.
  • Přidejte @ a animujte ho jako další znak vedle hvězdičky.
  • Animujte * a @ inou rychlostí. Pokuste se změnit rychlost vykreslování se zpožděním 1ms. A měňte pozici hvězdičky a zavináče jen v případě násobku nějakého čísla. Například pozici hvězdičky jen co 10 vykreslení. Pozici zavináče měňte například co 15 vykreslení. Můžete zase použít operaci modulo (%).

Funkce příklady

public static void main(String[] args) {
int suma = secti(10, 58);
System.out.println(suma);

System.out.println(secti(-5, 76));

vypisNaPozici(20, '_', 7, '@');

System.out.println("4^7=" + mocnina(4, 7));

int vysledek = mocnina(4, 7);
System.out.println("4^7=" + vysledek);
}

public static int secti(int a, int b) {
return a + b;
}

public static int mocnina(int zaklad, int exponent) {
if(exponent == 0) {
return 1;
}
int result = zaklad;
for (int i = 1; i < exponent; i++) {
result = result * zaklad;
}
return result;
}

public static void vypisNaPozici(int delka, char znakPrazdny,
int pozice, char znak ) {
for (int i = 0; i < delka; i++) {
if(i == pozice) {
System.out.print(znak);
} else {
System.out.print(znakPrazdny);
}
}
}