Yazdır
Kategori: C #
Gösterim: 353

Fonksiyon (metod) nedir?

Fonksiyonlar kabaca bir programdaki kod fazlalığını azaltan kod parçacıklarıdır.

Örneğin Console.WriteLine bir metoddur işlevi sadece konsola yazdırmaktır. Geri dönüşü yoktur.

Ancak Console.ReadLine ise bir geri dönüşlü metoddur. Yazılan satırdaki veriyi almak için kullanılır. Ve dışarıya veriyi aktarır. 

Bir örnek:

function topla(sayi1,sayi2)
sonuc = sayi1 + sayi2
return sonuc
end

C#'ta fonksiyonlar oluşturulurken 

1-Dönüşü olmayan (Sadece işlem yapan) fonksiyonlar

2-Return(dönüş) olan fonksiyonlar

olarak ikiye ayrılır.

1-Dönüşü olmayan fonksiyonlar

Console.WriteLine kodumuzu ele alalım. Geri dönüşlü değildir. Yani bir veriyi içerisinde işlem yapıp sonucu döndürmez sadece ekrana yazar. Örnekte de anlayacaksınız.

Dönüş olmayan fonksiyonlar void deyimi ile başlar.Örneğin;

void Topla()
{
     int sayi1 = 1;
     int sayi2 = 2;
     int sonuc = sayi1 + sayi2;
}

 

Burada yazdığımız fonksiyon sadece kendi içinde işlemleri yapar dışarıdan bir değişken, veri almaz veya dışarıya bir sonuç vermez sadece kod kalabalığı yapmamak için yazılabilir (Önerim bu şekilde)

Başka örneklere bakalım

void Yenile()
        {
            listBox1.Items.Remove(listBox1.SelectedItem);
            foreach (IniFile.IniSection veri in ini.Sections)
            {
                listBox1.Items.Add(veri.Name);

            }
        }

Örneğin Dosya Gizleyici programında yazmış olduğum bir fonksiyon.

Tabi burada INIFile class ı kullanıldı DİKKAT!  Burada yine dışarıdan alınan bir değişken, veri yok

Tabikide dışarıya verilen bir sonuç ta yok.

2-Return (Dönüşü olan fonksiyonlar)

 Dönüşü olan fonksiyonlar çok geniş bir konudur aslında, geriye dönüşü int, string , bool, list ,array vs vs bir çok değer olabilir.

Biz yine en çok kıullanılan bu 5 örnek için ayrı ayrı örnek yapacağız.

a) INT dönüşlü fonksiyonlar

int Topla(int sayi1,int sayi2)
{
int sonuc = sayi1 + sayi2;
return sonuc;
}

Burada ise yaptığımız şey dışarıdan gelen iki int değerini yine int olan bir sonuc değişkeninde depoladık. Kullanıldığında girilen iki veriyi toplayıp sonucunu döndürecektir.

Örnek kullanımı:

int sayi1 = Convert.ToInt32(Console.ReadLine());
int sayi2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Topla(sayi1,sayi2));

b)String Dönüşlü Fonksiyonlar

String dönüşlü fonksiyonlar ise mantığı tamamen aynıdır string bir fonksiyonun dönüşünün string olarak dönmesidir.

Örneğin:

string Birlestir(string veri1,string veri2)
{
     string sonuc = veri1 + veri2;
     return sonuc;
}

Örneğin burada yaptığımız şey gelen iki veriyi birleştirip birleştirdiğimiz veriyi döndürüyoruz.

Örnek Kullanımı:

textBox1.Text = Birlestir("Night","Mare");

Kodun dönüşü

NightMare

olacaktır

c)Bool Dönüşlü Fonksiyonlar

Dönüşü true veya false olarak dönen fonksiyonlardır.

Örnek:

bool Kontrol(int sayi)
{
if(sayi % 2 == 0)
     return true;
else
     return false;
}

Örneğin burada dışarıdan gelen sayının tek mi yoksa çift mi olduğunu kontrol ettirdik. Çiftse true tekse false değeri dönecek

Örnek Kullanım:

int sayi = Convert.ToInt32(Console.ReadLine());
bool tekcift = Kontrol(sayi);
if(tekcift==true)
Console.WriteLine("Sayı Çift!");
else
Console.WriteLine("Sayı Tek!");

d)Dizi Fonksiyonları

Dizi fonksiyonları kullanıldığında veriyi dizi olarak döndüren fonksiyonlardır.

Örneğin;

int[] Veri(int baslangic,int bitis)
{
            int[] sonuc = new int[bitis-1];
            return sonuc;
}

int türünde bir dizi fonksiyonu oluşturduk. Fonksiyon amacı başlangıç ve biriş sayılarını alarak bu sayılardan bir dizi oluşturmak.

Örnek kullanımı şu şekilde :

int i = 0;
int[] dizi = Veri(1, 9);
foreach(int veri in dizi)
{
     i += 1;
     listBox1.Items.Add(i);
}

Burada i = 0 adlı bir değişken oluşturduk. Ve bir int[] dizisi yazdık. Başlangıç noktası 1, bitiş noktası 9 olmak üzere. Bu diziyi foreach döngüsüne atarsak, bize 8 adet değer döndürecektir.(Dizilerdeki limit veri sayısı)

Bu örnekleri çoğaltabilirsiniz.

e)List Fonksiyonları

List fonksiyonları, list ile oluşturulan ve benim en sıkça kullandığım fonksiyonlardır. Arraydan daha basit, pratik ve stabildir.(Bana göre.)

List fonksiyonunda sayı,sıra,limit kavramı belirtilmediği için her türlü veriyi kolayca sırasız, sınırsız bir şekilde List'e ekleyebilirsiniz.

List kullanımı şu şekildedir.

List< veri türü > degisken = new List < veri türü >();

Bu şekilde anlamayanlar için basitçe bir Klasör tarama fonksiyonu yazdım.

public List<string> FolderFind(string path)
{
   List<string> klasor = new List<string>();
   DirectoryInfo di = new DirectoryInfo(path);
   DirectoryInfo[] getdir = di.GetDirectories();
   foreach(DirectoryInfo veri in getdir)
   {
       klasor.Add(veri.ToString());
   }
   return klasor;
}

Başka bir örnek ise Dosya tarama fonksiyonu

public List<string> FileFind(string path)
{
            List<string> dosyalar = new List<string>();
            DirectoryInfo di = new DirectoryInfo(path);
            FileInfo[] getfiles = di.GetFiles();            
            foreach (FileInfo veri in getfiles)
            {
                dosyalar.Add(veri.ToString());
            }
            return dosyalar;
}