Back to Top

Lekcja 6 – Funkcje czyli Metody

Funkcje

Wyobraź sobie, że chcesz sprawdzić, czy użytkownik jest pełnoletni. Wiemy już jak to zrobić.

int age = 20;
if (age >= 18)
{
	Console.WriteLine("Jest pełnoletni");
}

Miejsc w systemie, w którym chcemy wyświetlić dane w zależności od wielu użytkownika, może być całkiem sporo. W każdym miejscu wstawiamy więc stosowną instrukcję if.

Teraz przenosimy firmę za granicę i okazuje się, że tam, aby osoba mogła zostać uznana za pełnoletnią, musi mieć 19 lat. Co robimy? W każdym miejscu musimy zmienić warunek z 18 na 19. Czy da się zniwelować ten problem? Tak.

Wystarczy skorzystać z funkcji. Funkcja to zestaw instrukcji, które posiadają nazwę. Funkcję deklarujemy raz, a korzystamy z niej wiele razy. Dzięki temu nie powtarzamy kodu, a ewentualnie zmiany czy poprawki błędów robimy w jednym miejscu.

Funkcja Main

Blok kodu, do którego do tego momentu wpisywaliśmy nasz kod to właśnie funkcja, którą w języku c# nazywamy metodą. Metoda Main jest wywoływana automatycznie przez aplikację. Dlaczego metoda, a nie funkcja? Ponieważ C# to język obiektowy, który nie pozwala na deklarowanie funkcji poza klasą – czym jest klasa dowiesz się na kursie. Funkcje, które są zadeklarowane w klasie nazywamy metodami.

Metoda

class MainClass
{
    public static void Main (string[] args)
    {
    }
    
    static void CheckAge()
    {
    }
}

Zadeklarowaliśmy metodę o nazwie CheckAge. Jak deklarujemy metody?

Używamy słowa kluczowego static oraz void, następnie podajemy nazwę metody, dwa nawiasy okrągłe oraz parę nawiasów klamrowych. W nawiasach klamrowych podajemy instrukcje, które zostaną wykonane zawsze kiedy wywołamy funkcję.

class MainClass
{
    public static void Main (string[] args)
    {
         CheckAge();
         CheckAge();
    }
    
    static void CheckAge()
    {
         int age = 20;
         if (age >= 18)
         {
	        Console.WriteLine("Jest pełnoletni");
         }
    }
}

Teraz metoda CheckAge sprawdza, czy wiek przechowywany w zmiennej age jest większy bądź równy 18. W metodzie Main wywołaliśmy metodę CheckAge dwa razy, a więc napis zobaczymy dwukrotnie.

Parametry

Metoda CheckAge sprawdza wiek, ale jest on ciągle zapisany na sztywno w ciele metody. Zawsze sprawdza zmienną age.

Metody mogą przyjmować tzw. parametry czy wartości, na których będzie pracować. Parametry deklarujemy w nawiasach okrągłych, podając typ i nazwę parametru.

class MainClass
{
    public static void Main (string[] args)
    {
         CheckAge(10);
         CheckAge(30);
    }
    
    static void CheckAge(int age)
    {
         if (age >= 18)
         {
	        Console.WriteLine("Jest pełnoletni");
         }
    }
}

Dzięki parametrom metoda może być bardziej uniwersalna i możemy sprawdzać inną liczbę przy każdym wywołaniu metody. Kiedy metoda ma zadeklarowany parametr, przy wywołaniu metody musimy podać wartość w jego miejsce.

Wartość Zwracana

Nasza metoda ma jeszcze jedną wadę – przyjmuje parametr, ale nie zwraca żadnej informacji o tym, czy wiek podany w parametrze jest większy, czy nie.

class MainClass
{
    public static void Main (string[] args)
    {
         CheckAge(10);
         int result = CheckAge(30);
    }
    
    static int CheckAge(int age)
    {
         if (age >= 18)
         {
	        Console.WriteLine("Jest pełnoletni");
         }
         return 18 - age;
    }
}

Aby metoda mogła zwracać dane, musimy zadeklarować jej typ zwracany. Typ zwracany wstawiamy w miejsce słowa kluczowego void. W tym przypadku będziemy zwracać informację ile lat brakuje testowanej osobie do uzyskania pełnoletności.

Podczas wywołania metody, możemy (ale nie musimy) odebrać informacji zwrotnej od metody. Jeśli jednak chcemy je odebrać, wywołanie przypisujemy do zmiennej tak jak zwykłą wartość.

Zadanie 1

Utwórz metodę o nazwie Show, która wyświetli dowolny napis w konsoli. Metodę wywołaj w metodzie Main.

Zadanie 1

Rozwiązanie zadania 1

Zadanie 2

Utwórz metodę o nazwie Sum, która przyjmuje dwa parametry typu int o nazwach x i y. Metoda powinna zwracać sumę parametrów. Zwracany typ również powinien być typu int.

W metodzie Main wywołaj metodę Sum, podając dwie dowolne wartość, a zwrócony wynik przypisz do zmiennej i wyświetl na ekranie.

Zadanie 2

Rozwiązanie zadania 2

Zadanie 3

Utwórz metodę o nazwie Calc, która przyjmie 3 parametry, dwa typu int o nazwach z i y oraz trzeci typu string, który przyjmie typ operacji do wykonania.

Typem operacji będzie mogła być wartość:

  • dodawanie

  • odejmowanie

  • mnożenie

  • dzielenie

Metoda powinna sprawdzać wpisany tekst w zależności o typu operacji, wykonać ją i zwrócić wynik. Dla wywołania int result = Calc(3, 4, "mnożenie"); metoda ma zwrócić 12.

W metodzie Main, wynik przypisz do zmiennej i wyświetl w konsoli.