modyfikator_dostępu typ_zwracany nazwa_metody ( lista_parametrów ) { instrukcje return wartość; }
modyfikator_dostępu
- np. public
, private
, dostęp z innych klas, ważny w programowaniu obiektowym typ_zwracany
- dowolny typ, klasa, lub void
nazwa_metody
- identycznie jak nazwa zmiennejlista_parametrów
- definiuje typy i nazwy argumentów metody return
przerywa działanie metody i zwraca podaną wartośćpublic class Program { public static void Main() { // definicja funkcji int Suma(int a, int b) { return a+b; } // uruchomienie funkcji int x = Suma(3, 5); }
Dostępna tylko wewnątrz metody Main
- nie potrzba modyfikatora dostepu
public class Program { static int Suma(int a, int b) { return a+b; } public static void Main() { int a = 42; int b = 3; int x = Suma(a, b); x = Program.Suma(a, b); } }
static
- metoda statyczna, nie wymaga utworzenia obiektu klasy, działa jak globalna funkcja klasa.metoda(argumenty)
lub z zakresu klasy Metoda(argumenty)
Zmienne zadeklarowane wewnątrz metody są lokalnie dostępne wyłącznie w jej wnętrzu.
static void X(int a) { int b; // zmienna lokalna a++; b = a; Console.WriteLine($"W metodzie X: a={a} b={b}"); } public static void Main() { int a = 42; int b = 13; X(a); Console.WriteLine($"W metodzie Main: a={a} b={b}"); }
Wyjście
W metodzie X: a=43 b=43 W metodzie Main: a=42 b=13
Napisz metodę o nazwie Silnia
, która wyznaczy wartość silni z podanej liczby całkowitej.
Argumenty metody:
Wartość zwracana:
Napisz program, który korzystając z metody Silnia
wyznaczy silnie dowolnej liczby całkowitej podanej przez użytkownika.
Ile wynosi silnia z 13?
Metoda rekurencyjna - wywołuje sama siebie
Przykład - silnia: $$ n! = (n-1)! \cdot n$$
static int Silnia(int n) { if ( n < 2) return 1; return Silnia(n-1) * n; }
static void Zwiększ(int x) { x++; } public static void Main() { int x = 42; Zwiększ(x); Console.WriteLine($"x={x}"); }
Wynik
x=42
static void Zwiększ(ref int x) { x++; } public static void Main() { int x = 42; Zwiększ(ref x); Console.WriteLine($"x={x}"); }
Wynik
x=43
ref
musi pojawić się w definicji parametrów metody oraz przy wywołaniuTablice są typem referencyjnym, więc metoda ma dostęp do elementów tablicy z argumentu
static void Zwiększ(int [] tablica) { tablica[0]++; } public static void Main() { int [] tablica = { 1, 2, 3}; Zwiększ(tablica); foreach(var x in tablica) Console.WriteLine(x); }
Wynik
2 2 3
out
pozwala określić parametr wyjściowy, dzięki temu można zwrócić dodatkowe wartości z metody static void WczytajLiczbę(out int x) { x = Convert.ToInt32(Console.ReadLine()); } public static void Main() { int x; WczytajLiczbę(out x); Console.WriteLine($"x={x}"); }
out
musi pojawić się w definicji parametrów metody oraz przy jej wywołaniu
Zaimplementuj metodę o nazwie Sortuj()
, która posortuje liczby w tablicy.
Spróbuj samodzielnie wymyslic algorytm sortowania.
Parametry metody:
Wartość zwracana:
Napisz program, który poprosi użytkonika o wprowadzenie $N$ liczb a nastepnie wykorzysta metodę Sortuj()
do posortowania tych liczb i wypisze wynik na ekranie.
Zaimplementuj metodę o nazwie Fibonacci
, która dla podanej liczby całkowitej n
zwraca wartość n
-tego elementu ciągu Fibonacciego, który wyznaczamy ze wzoru:
$$
F_{n}:=\left\{\begin{array}{ll}
0 & \text { dla } n=0 \\
1 & \text { dla } n=1 \\
F_{n-1}+F_{n-2} & \text { dla } n>1
\end{array}\right.
$$
Metoda realizuje następującą specyfikację:
Parametry: liczba całkowita n
Wartość zwracana: wartość elementu n
ciągu Fibonacciego. W przypadku, gdy argument n<0
to wynikiem jest 0.
Uwaga: metoda powinna realizować wyłącznie obliczenie matematyczne, tzn. uruchomienie metody nie powinno generować żadnych komunikatów na konsoli.
Napisz program, który wykorzysta metodę Fibonacci()
do wypełnienia tablicy jednowymiarowej sekwencją pierwszych
elementów ciągu Fibonacciego a następnie wyświetli zawartość tej tablicy na ekranie. Wartość (ilość elementów ciągu) podaje użytkownik na początku działania programu.
Przykład
Ile elementów wypisać? 10 0 1 1 2 3 5 8 13 21 34 55