package gotowe.p06_funkcje.teoria;

public class Funkcje3_Wynik {

    // Funkcja może zwrócić wynik:
    static int liczba() {
        return 13;
    }

    static int dodaj(int x, int y) {
        return x + y;
    }

    static String napis() {
        return "Hello world";
    }

    static String powitanie(String imie) {
        return "Witaj " + imie + ", miło Cię poznać";
    }

    // Funkcja może zawierać wiele instrukcji return w różnych miejscach. Np. w zależości od warunku zwróć jedno lub drugie.
    // Kompilator Javy sprawdza jednak, czy funkcja zwraca wynik w każdej sytuacji.
    static int roznicaBezwzgledna(int x, int y) {
        if(x >= y) {
            return x - y;
        } else {
            return y - x;
        }
    }

    public static void main(String[] args) {
        liczba();
        // Czy liczba 13 wypisze się na ekran? NIE

        // To, że funkcja zwraca wynik, oznacza, że np. można ten wynik zapisać na zmienną:
        int wynik = liczba();
        System.out.println("Funkcja zwróciła wynik " + wynik); // dopiero tutaj

        wynik = dodaj(13, 12);
        System.out.println("Dodawanie zwróciło wynik " + wynik);

        String napis;
        napis = powitanie("Ala");
        System.out.println("Powitanie 1: " + napis);
        napis = powitanie("Karol");
        System.out.println("Powitanie 2: " + napis);

        String s = "Ola";
        napis = powitanie(s);
        System.out.println("Powitanie 2: " + napis);
    }

}
