CodeGym /Kurslar /C# SELF /C#-da funksiyalara (metodlara) giriş

C#-da funksiyalara (metodlara) giriş

C# SELF
Səviyyə , Dərs
Mövcuddur

1. C#-da Funksiyalar/Metodlar

Artıq sən C#-da bir çox komandanı öyrənmisən, yəni kifayət qədər mürəkkəb proqramlar yaza bilirsən. 10, 20, 30 sətr kod — elə də böyük proqram deyil, düzdür?

Amma 100+ sətrlik proqram artıq böyükdür və kodunda baş çıxarmaq bir az çətindir. Bəs çoxlu kod olan proqramları yazmaq və oxumağı necə asanlaşdıra bilərik?

Bəli, burada bizə metodlar (funksiyalar) kömək edəcək.

Bəs metod nədir? Çox sadə desək, metod — unikal adı olan komanda qrupudur. Başqa sözlə, bir neçə komandadan ibarət qrupu birləşdiririk və ona unikal ad veririk. Vəssalam — metod hazırdır.

Tutaq ki, sənin pişik çəkmək üçün kodun var:

Console.WriteLine("  |\\__/,|   (`\\");
Console.WriteLine("  |o_o  |__ _) )");
Console.WriteLine("  (____/   (_/ ");
Pişik çəkmək üçün kod

Bax, bu kod belə çıxış verir:

  |\__/,|   (`\
  |o_o  |__ _) )
  (____/   (_/

Sadəcə bunu ayrıca metoda köçürə bilərsən və istədiyin qədər pişik çəkə bilərsən:

void WriteCat()
{
    Console.WriteLine("  |\\__/,|   (`\\");
    Console.WriteLine("  |o_o  |__ _) )");
    Console.WriteLine("  (____/   (_/ ");    
}

//üç pişik çəkirik
WriteCat();
WriteCat();
WriteCat();
Metoddan istifadə edərək pişiyi təkrar çıxarmaq

Proqram işə düşəndə, hər dəfə WriteCat() komandası işlədikdə, o, WriteCat() metodunun içindəki bütün komandaları icra edəcək. Sadəcə bir neçə komandadan ibarət yeni komanda (metod) yaratdıq.

Funksiyaların mənası nədədir:

  • Proqramı hissələrə bölürlər, hər hissə öz işi ilə məşğul olur.
  • Təkrar istifadəni asanlaşdırır: bir dəfə yazdın, istədiyin qədər istifadə et.
  • Səhv ehtimalını azaldır: funksiyadakı bug-u bir yerdə düzəldirsən.
  • Mürəkkəb əməliyyatlara "ad" verirlər — oxunaqlılıq kəskin artır.

Terminologiya: funksiya, metod, prosedur

C#-da funksiyametod adətən eyni şeyi bildirir, amma kiçik fərqlər var.

  • Metod — klasa və ya obyektə aid olan funksiya (C#-da demək olar ki, hər şey metoddur).
  • Prosedur — heç bir dəyər qaytarmayan funksiya (void-metodlar).
  • Funksiya — geniş mənada, çağırıla bilən, adı olan proqram hissəsi.

Rəsmi olaraq C#-da bunların hamısına metod deyilir, amma haradasa "funksiya" görsən — qorxma!

2. Metodun elan sintaksisi: addım-addım izah

Gəlin ən sadə funksiyanı, klassik "Hello, World!"-ü götürək, sadəcə çıxışı ayrıca metoda verək:

using System;

class Program
{
    static void Main()
    {
        PrintHello();
    }

    static void PrintHello()	// Hello, World! mətnini çıxarırıq
    {
        Console.WriteLine("Hello, World!");
    }
}
Metodun elan və çağırılma nümunəsi

Sintaksisin izahı:

Hissə Nümunə Təsviri
Modifikator
static
Metodun klasa aid olduğunu göstərir (ətraflı — sonra)
Qaytarılan dəyərin tipi
void
Metod heç nə qaytarmır
Metodun adı
PrintHello
Metodu çağırmaq üçün istifadə olunan ad
Parametrlər
()
Argumentlər (boşdur — argument yoxdur)
Metodun gövdəsi
{ ... }
Metod çağırılanda icra olunan kod

Analogiya:
Metodu kofe avtomatı kimi təsəvvür et: pul (argument) atırsan, düyməni basırsan (metodu çağırırsan), avtomat kofe bişirir (metodun gövdəsi), nəticəni verir (qaytarılan dəyər) — və ya heç nə vermir, əgər void-metoddursa!

3. Metodları necə çağırmaq olar

Metodu çağırmaq — sadəcə adını və mötərizəni yazırsan vəssalam:

PrintHello(); // Parametrsiz metod

int sum = Add(2, 3); // Parametrləri və nəticəsi olan metod

Vacibdir: metodu yalnız elan edildikdən sonra (və ya kodda "yuxarıda" yerləşirsə, ya da eyni klasa daxildirsə) çağırmaq olar.

4. Parametrləri olan metodlar

Metoda parametrlər ötürmək olar. Bu, metodun davranışını çevik və hər vəziyyətə uyğun edir. Əslində parametrlər — metodun dəyişənləridir, çağıranda onlara dəyər verilir. Parametrləri metod yaradanda göstərmək lazımdır.

static void Greet(string name)
{
    Console.WriteLine($"Salam, {name}!");
}

// İstifadə:
Greet("Alisa");
Greet("Bob");
Parametri olan metod

Parametrlər — çağıranda metoda ötürdüyün dəyərlərdir.

Hissə Nümunə Təsviri
Parametrin tipi
string
Qəbul olunan dəyərin tipi
Parametrin adı
name
Metodda istifadə üçün ad

Çağırışlar:
Greet("Alisa");name dəyəri "Alisa" olur.

Birkaç parametr

Bir neçə parametri vergüllə ayırıb elan edə bilərsən:

static void PrintSum(int a, int b)
{
    Console.WriteLine($"Cəm: {a + b}");
}

// İstifadə:
PrintSum(5, 7); // Cəm: 12
Bir neçə parametri olan metod

5. Dəyər-parametrləri və istinad-parametrləri

Funksiyanın parametrləri — adi dəyişənlərdir və onlara digər dəyişənlərə aid qaydalar tətbiq olunur.

Yəni yadında saxla: metoda massiv ötürəndə, istinad ötürürsən, yəni metod massivə dəyişiklik edə bilər. Sadə tiplər üçün (int, double) isə dəyər kopyalanır.

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Əsas massivi dəyişir!
}

// İstifadə:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]);	//çıxışda 0 olacaq
Massivin istinadla ötürülməsi — metod əsas məlumatı dəyişir

Əslində burada belə olur:

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Əsas massivi dəyişir!
}

// İstifadə:
int[] a = {1, 2, 3, 4, 5};

//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;

Console.WriteLine(a[0]);	//çıxışda 0 olacaq
Massivin istinadla ötürülməsinə analogiya
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION