duyuruElektroArge.com'a Hoşgeldiniz. Üye Olmak İçin Tıklayın. duyuru





houseForum ana sayfa   iletişimİletişim   bilgiSSS  
kırmızı yeşil mavi
ekleKayıt  anahtarGiriş
evForum ana sayfa goE-Kütüphane goE-Ders goC#
 

  • Reklam

Ders 29 - Fonksiyonlar

C Dili Dersleri - Okan Bilke

Ders 29 - Fonksiyonlar

Mesajgönderen okanbilke » 19 Tem 2015 17:16

Prosedür ve fonksiyonlar bütün bilgisayar dillerinde önemli yer tutmaktadırlar. Sebebi basittir, çok kullanılan kodları özel bir bloğa yazarak, her defasında aynı kodları uygulamanızda yazmazsınız. Bu sayede hem zamandan kazanır, hem de hata yapma şansınızı minimuma indirirsiniz.
Fonksiyonlarla prosedürler arasındaki fark geriye değer döndürme olayıyla açıklansa da aslında olay tam olarak öyle değildir. Öncelikle fonksiyon geriye değer döndürür doğru ama isterseniz prosedürlede uygulamaya istediğiniz kadar değer alabilirsiniz. İlerleyen konularda bu hususlara bolca örnekler verilecektir.

Fonksiyon Tanımlamak
Fonksiyonlar oluşturulma açısından prosedürlere çok benzerler. Prosedürler konusunda dikkat ettiyseniz hiçbir tanesi değişkenlere eşitlenmemiştir. Ama fonksiyonlar bir değişkene (veya dizi değişkene) eşitlenerek direk değer alabilmektedir.
private Double FonksiyonHesapla(int IlkSayi, int SonSayi)
{
//Fonksiyona Ait Kod Bloğu
return Degisken
}

  • Fonksiyonda aynen Procedure gibi Private veya Public'le tanımlanır. (Internal veya Private).
  • Uygulamaya dönüş değeri muhakkak "return" ile belirtilmelidir.
  • Fonksiyona isim verilir. (Bizim örneğimizde FonksiyonHesapla)
  • Fonksiyon adından sonraki parantez içerisinde fonksiyonun kullanacağı parametreler tipleriyle belirtilir.
  • Fonksiyonun geri dönüş değerine ait tip, fonksiyonun isminden hemen önce bildirilmelidir. (Bizim örneğimizde Double)
private Double FonksiyonHesapla(int IlkSayi, int SonSayi)
{
//y=2x*x+5*x+10
Double SonDeger;
SonDeger = 2 * IlkSayi * IlkSayi + 5 * SonSayi + 10;
return SonDeger;
}

private void button1_Click(object sender, EventArgs e)
{
int IlkKatsayi = 10, IkinciKatsayi = 20;
Double SonucDeger;
SonucDeger = FonksiyonHesapla(IlkKatsayi, IkinciKatsayi);
this.Text = "Hesaplanan Sonuc=" + SonucDeger.ToString();
}

Fonksiyonların Aşırı Yüklenmesi
Prosedürlerde olduğu gibi benzer iş gören farklı fonksiyonları aynı isimle (Aşırı Yükleme) farklı farklı bloklarda kodlayabilirsiniz. Yine hangisinin çalışacağına parametrelerin sayısı veya tipleri karar verecektir.
private Double FonksiyonHesapla(int IlkSayi, int SonSayi)
{
//y=2x*x+5*x+10
Double SonDeger;
SonDeger = 2 * IlkSayi * IlkSayi + 5 * SonSayi + 10;
return SonDeger;
}

private Double FonksiyonHesapla(int IlkSayi, int SonSayi, int UcuncuSayi)
{
//y=2x*x+5*x+k
Double SonDeger;
SonDeger = 2 * IlkSayi * IlkSayi + 5 * SonSayi + UcuncuSayi;
return SonDeger;
}

private void button2_Click(object sender, EventArgs e)
{
int IlkKatsayi = 10, IkinciKatsayi = 20, UcuncuKatsayi=30;
Double SonucDeger;
SonucDeger = FonksiyonHesapla(IlkKatsayi, IkinciKatsayi, UcuncuKatsayi);
this.Text = "Hesaplanan Sonuc=" + SonucDeger.ToString();
}

Kodlamaya dikkat edin "FonksiyonHesapla" isminde farklı kod blokları işleten iki adet fonksiyon tanımlanmıştır. İkisi de "Double" tip değer döndürmektedir, fakat birinci fonksiyonun "2" parametresi olmasına karşılık, ikinci fonksiyonun "3" parametresi bulunmaktadır. "C#" parametre sayısına bakarak hangisinin çağrıldığını kendisi belirleyebilecektir.

Dizi Değişkenleri Parametre Olarak Kullanmak
Prosedürlerde olduğu gibi fonksiyonlar içerisinde de dizi değişkenler kullanabiliriz. Aşağıda bu husus örneklendirilmiştir.
private Double ToplamHesapla(int[] Dizi)
{
Double ToplamDeger = 0;
System.Collections.IEnumerator DiziOku = Dizi.GetEnumerator();
while(DiziOku.MoveNext())
{
ToplamDeger += (int)DiziOku.Current;
}
return ToplamDeger;
}

private void button1_Click(object sender, EventArgs e)
{
int[] DiziElemanlari = new int[] { 10, 30, 40, 70 };
Double SonucDeger;
SonucDeger = ToplamHesapla(DiziElemanlari);
this.Text = "Elemanların Toplamı=" + SonucDeger.ToString();
}

Düğmeye tıklandıktan sonra sayfanın başlığına bakacak olursanız gönderilen sayıların toplamının yazdığını göreceksiniz. Şimdi formunuza aşağıdaki tasarımı yapın ve kodları ekleyin.
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add(10);
listBox1.Items.Add(25);
listBox1.Items.Add(30);
listBox1.Items.Add(80);
listBox1.Items.Add(65);
}

private Double ToplamHesapla(int[] Dizi)
{
Double ToplamDeger = 0;
System.Collections.IEnumerator DiziOku = Dizi.GetEnumerator();
while(DiziOku.MoveNext())
{
ToplamDeger += (int)DiziOku.Current;
}
return ToplamDeger;
}

private void button1_Click(object sender, EventArgs e)
{
int[] DiziElemanlari = new int[] { 10, 30, 40, 70 };
Double SonucDeger;
DiziElemanlari = new int[listBox1.Items.Count];
for(int i=0;i<=listBox1.Items.Count-1;i++)
{
DiziElemanlari[i] = Convert.ToInt32(listBox1.Items[i]);
}
SonucDeger = ToplamHesapla(DiziElemanlari);
label1.Text = "Liste Toplamı=" + SonucDeger.ToString();
}

Resim

Bu örneğe dikkat edecek olursanız, listede yer alan tüm değerlerin toplamı alınarak Label kontrolü içerisinde gösterilmiştir.

Rekursive Fonksiyonlar
Fonksiyonun kod bloğu içerisinde kendi kendisini çağırması işlemiyle oluşan yapıya rekursive fonksiyon adı verilir. Bazı durumlarda oldukça kullanışlı olmakla beraber, hız açısından tercih edilmemesi gereken durumlarda söz konusudur. Aşağıdaki faktöriyel hesaplayan foksiyon rekürsif olarak tanımlanmıştır. Tasarımı aşağıdaki şekilde yaptıktan sonra kodlamaya geçiniz.
Resim

private Double FaktoriyelHesapla(int Deger)
{
Double CarpimSonuc=1;
if(Deger>1)
{
CarpimSonuc=Deger*FaktoriyelHesapla(Deger-1);
}
return CarpimSonuc;
}

private void button1_Click(object sender, EventArgs e)
{
int SayiBul;
Double SonucDeger;
SayiBul =Convert.ToInt32(textBox1.Text);
SonucDeger=FaktoriyelHesapla(SayiBul);
label3.Text="Faktöriyel Sonucu="+SonucDeger.ToString();
}

Obeb Hesaplayan Fonksiyon
Matematikte ortak bölenlerin en büyüğü olarak bilinen obeb fonksiyonuna ait kodlama aşağıda verilmiştir. Şu aşamada biraz ağır gelebilir fakat incelenmesi gereken bir fonksiyon olduğu için burada veriyorum. Obeb hesaplayacağız. Öncelikle tasarımımızı aşağıdaki gibi yapalım:
Resim

private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add(8);
listBox1.Items.Add(4);
listBox1.Items.Add(24);
listBox1.Items.Add(48);
}

private int ObebBul(int[] DiziDeger)
{
int Deger, Eleman;
int i = 0, j, k;
int[] DiziElemanlar;
bool YonDurumu;
Eleman = DiziDeger.GetUpperBound(0);
DiziElemanlar = new int[Eleman];
while(i <= Eleman-1)
{
DiziElemanlar[i] = DiziDeger[i];
i++;
}
i = 0;
while(i <= Eleman-1)
{
for(j=0;j<=Eleman-1;j++)
{
if(DiziElemanlar[i]>DiziElemanlar[j])
{
Deger = DiziElemanlar[i];
DiziElemanlar[i] = DiziElemanlar[j];
DiziElemanlar[j] = Deger;
}
}
i++;
}
for(i = DiziElemanlar[Eleman-1] ; i >= 2 ; i--)
{
YonDurumu = false;
k = 0;
while(k <= Eleman-1)
{
if(DiziElemanlar[k]%i != 0)
{
YonDurumu = true;
break;
}
k++;
}
if(YonDurumu == false)
{
break;
}
}
return i;
}

private void button1_Click(object sender, EventArgs e)
{
int KacAdet, i = 0;
int[] DiziDeger;
KacAdet = listBox1.Items.Count;
DiziDeger = new int[KacAdet];
while(i<=KacAdet-1)
{
DiziDeger[i] = Convert.ToInt32(listBox1.Items[i++]);
}
label1.Text = "Sayıların Obebi=" + ObebBul(DiziDeger);
}

Uygulamayı çalıştırıp "Hesapla" düğmesine tıklarsanız, sonuç ekran görüntüsü yukarıdaki gibi olacaktır.

Okek Hesaplayan Fonksiyon
Matematikte ortak katların en küçüğü olarak adlandırılan "Okek" fonksiyonuna ait kod bloğu aşağıda verilmiştir. Dikkatle inceleyiniz. Okek buluyoruz.
Resim

Uygulamaya ait kod bloğu aşağıda verilmiştir.
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add(8);
listBox1.Items.Add(4);
listBox1.Items.Add(24);
listBox1.Items.Add(48);
}

private int OkekBul(int[] DiziDeger)
{
int Deger, i = 0, Eleman;
int j = 0, k, OkekBulundu;
int[] DiziElemanlar;
bool Yon;
OkekBulundu = 1;
Eleman = DiziDeger.Length;
DiziElemanlar = new int[Eleman];
while(i<=Eleman-1)
{
DiziElemanlar[i] = DiziDeger[i++];
}
i = 0;
while(i<=Eleman-1)
{
for(j=0;j<=Eleman-1;j++)
{
if(DiziElemanlar[i]>DiziElemanlar[j])
{
Deger = DiziElemanlar[i];
DiziElemanlar[i] = DiziElemanlar[j];
DiziElemanlar[j] = Deger;
}
}
i++;
}
Deger = DiziElemanlar[0];
k = 2;
while(k<=Deger)
{
Yon = false;
for(i=0;i<=Eleman-1;i++)
{
if(DiziElemanlar[i]%k == 0)
{
Yon = true;
DiziElemanlar[i] /= k;
}
}
if(Yon==true)
{
OkekBulundu *= k;
k = 1;
}
k++;
}
return OkekBulundu;
}

private void button1_Click(object sender, EventArgs e)
{
int KacAdet, i = 0;
int[] DiziDeger;
KacAdet = listBox1.Items.Count;
DiziDeger = new int[KacAdet];
while(i<=KacAdet-1)
{
DiziDeger[i] = Convert.ToInt32(listBox1.Items[i++].ToString());
}
label1.Text = "Sayıların Okeki=" + OkekBul(DiziDeger);
}

Uygulamayı çalıştırıp "Hesapla" düğmesine tıklarsanız sonuç ekran görüntüsü yukarıdaki gibi olacaktır.

Dizi Değişken Döndürmek
Fonksiyonlarda tablo yapısına benzer değerleri dizi değişken yardımıyla kolayca uygulamamıza gönderebilirsiniz. Bu olayı "C#" kendi içerisinde bir çok kere kullanmıştır. Mesela aşağıdaki şekilde bir kullanım "ADO.NET" uygulamalarında çokça kullanılmaktadır.
DataRow Satir=DataSet11.Table[0].Rows[0]

Yapılan işlem şudur, tablonun belirtilen indis numaralı satırı "Satir" isimli değişkene aktarılmaktadır.
Byte[] Karakterlerim = System.Text.Encoding.UTF8.GetBytes(textBox1.Text)

Bu kodlamada "GetBytes" metodu sayesinde "TextBox" içerisindeki "String" veri "Byte" dizisi olarak uygulamaya geri gönderilmektedir. Uygulama içerisinde "Byte" dizisi olarak tanımlanan "Karakterlerim" değişkeni bu değerleri direk kullanabilir.
Şimdi bizde buna benzer bir örnek geliştirip, girilen "String" içeriğinin tüm karakterlerini uygulamada "Char" dizi değişkenine aktaracağız.Öncelikte tasarımı aşağıdaki şekilde yapıp kodlamaya geçelim.
Resim

private Char[] Karakterler(String Veri)
{
Char[] KarakterDizi;
int Adet, i = 0;
Adet = Veri.Length;
KarakterDizi = new Char[Adet];
while(i<=Adet-1)
{
KarakterDizi[i] = Veri[i++];
}
return KarakterDizi;
}

private void button1_Click(object sender, EventArgs e)
{
Char[] Karakter;
String Deger;
Deger = textBox1.Text;
Karakter = Karakterler(Deger);
label2.Text = "İlk Karakter=" + Karakter[0].ToString();
}

Bu aşamadan sonra uygulamanızı çalıştırabilirsiniz. "TextBox1" kontrolü içerisine gireceğiniz metne ait tüm karakterler fonksiyon sayesinde "Karakter" isimli dizi değişkene gönderilecektir. İstediğiniz elemanı indis numarasını kullanarak yazdırabilirsiniz.

Enum Değişkeni Kullanmak
Fonksiyonlarda parametre olarak sadece Class isimleri kullanmak zorunda değilsiniz. Şimdi sizlere Ders 23 - Enum dersinde anlatılmış olan "enum" ifadesinden yaratılmış bir değişkeni fonksiyonlarda nasıl kullanabileceğinizi göstereceğim. İlk olarak sayfanıza 4 adet RadioButton kontrolü, bir adet Label ve bir adet Button kontrolü yerleştirin.
namespace ElektroArge_Ders29
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
enum Mevsimler
{
SonBahar=0,
Kis=1,
IlkBahar=2,
Yaz
}

private String MevsimGoster(Mevsimler Isim)
{
String MevsimAdi = "";
if(Isim==Mevsimler.IlkBahar)
{
MevsimAdi = "Ilk Bahar";
}
else if(Isim==Mevsimler.Kis)
{
MevsimAdi = "Kış";
}
else if(Isim==Mevsimler.SonBahar)
{
MevsimAdi = "Son Bahar";
}
else if(Isim==Mevsimler.Yaz)
{
MevsimAdi = "Yaz";
}
return MevsimAdi;
}
Mevsimler BuMevsim; //Değişken

private void button1_Click(object sender, EventArgs e)
{
if(radioButton1.Checked)
{
BuMevsim = Mevsimler.SonBahar;
}
else if (radioButton2.Checked)
{
BuMevsim = Mevsimler.Kis;
}
else if (radioButton3.Checked)
{
BuMevsim = Mevsimler.IlkBahar;
}
else if (radioButton4.Checked)
{
BuMevsim = Mevsimler.Yaz;
}
String Deger;
Deger = MevsimGoster(BuMevsim); //enum Değişkenle İşlet
label1.Text = "Bulunduğunuz Mevsim=" + Deger;
}
}
}

Resim

Bu aşamadan sonra mevsim ismini seçip "..." düğmesine tıklayabilirsiniz. Ekran görüntüsü yukarıdaki şekilde oluşacaktır.

Struct Değişkeni Kullanmak
Fonksiyon veya prosedürler parametre olarak "Class-Struct-Enum" değişkenlerinin tamamını alabilir, istediğiniz tipte bir değer döndürebilirsiniz. Şimdiki amacımız fonksiyona göndereceğimiz "struct" tipli bir değişkene ait değerleri "ArrayList" Class değişkeni ile geri döndürmek olacaktır. Diğer parametreleri nasıl tanımlıyorsanız "struct" değişkeni fonksiyon içerisinde aynı mantıkla bildirebilirsiniz.
private System.Collections.ArrayList OzellikGoster(UniversiteBilgileri Bilgiler) //struct değişken
{
//Kodlar
return DiziDeger;
}

Öncelikle aşağıda verilen sayfa tasarımını uygulamanız içerisinde oluşturun.
Resim

Programa ait kod bloğu aşağıda verilmiştir. Kodları ekledikten sonra uygulamanızı çalıştırabilirsiniz. Dikkat edin fonksiyon içerisinde birden fazla değeri içerisinde barındıran tek bir "struct" tip değişkeni kullanılmıştır. Bu sayede gönderilen tüm değerler "ArrayList" sınıf değişkeniyle uygulamaya gönderilmektedir.
struct UniversiteBilgileri
{
public String UnIsmi;
public String RektorAdi;
public DateTime KurTarihi;
public int UnYasi;
}

private System.Collections.ArrayList OzellikGoster(UniversiteBilgileri Bilgiler)
{
System.Collections.ArrayList DiziDeger;
DiziDeger = new System.Collections.ArrayList();
DiziDeger.Add(Bilgiler.UnIsmi);
DiziDeger.Add(Bilgiler.RektorAdi);
DiziDeger.Add(Bilgiler.KurTarihi);
DiziDeger.Add(Bilgiler.UnYasi);

return DiziDeger;
}

private void button1_Click(object sender, EventArgs e)
{
UniversiteBilgileri YeniDeger; //Struct Değişken
YeniDeger.UnIsmi = textBox1.Text;
YeniDeger.RektorAdi = textBox2.Text;
YeniDeger.KurTarihi = Convert.ToDateTime(textBox3.Text);
YeniDeger.UnYasi = Convert.ToInt32(textBox4.Text);
System.Collections.ArrayList YeniDizi;
YeniDizi = new System.Collections.ArrayList();
YeniDizi = OzellikGoster(YeniDeger);
for (int i = 0; i <= YeniDizi.Count - 1; i++)
{
listBox1.Items.Add(YeniDizi[i].ToString());
}
}

Resim

Program çalıştırıldıktan sonraki ekran görüntüsü yukarıda verilmiştir. Şunu söyleyebilirsiniz. Biz bu örneği aslında daha basit kodlarla yapabilirdik fakat buradaki konunun daha iyi anlaşılması için bu kodu böyle yaptık.

Kullanıcı Tanımlı Sınıfları Parametre Değişkeni Olarak Kullanmak
Programcı kendi yazmış olduğu sınıfı fonksiyona parametre olarak gönderebilir. Bu işlem "struct" ifadeden pek farklı değildir. Aynı örneği "class" olarak yapacağız.
class UniversiteBilgileri // Bu sefer sınıf olarak tanımladık
{
public String UnIsmi;
public String RektorAdi;
public DateTime KurTarihi;
public int UnYasi;
}

private System.Collections.ArrayList OzellikGoster(UniversiteBilgileri Bilgiler)
{
System.Collections.ArrayList DiziDeger;
DiziDeger = new System.Collections.ArrayList();
DiziDeger.Add(Bilgiler.UnIsmi);
DiziDeger.Add(Bilgiler.RektorAdi);
DiziDeger.Add(Bilgiler.KurTarihi);
DiziDeger.Add(Bilgiler.UnYasi);

return DiziDeger;
}

private void button1_Click(object sender, EventArgs e)
{
UniversiteBilgileri YeniDeger = new UniversiteBilgileri();
YeniDeger.UnIsmi = textBox1.Text;
YeniDeger.RektorAdi = textBox2.Text;
YeniDeger.KurTarihi = Convert.ToDateTime(textBox3.Text);
YeniDeger.UnYasi = Convert.ToInt32(textBox4.Text);
System.Collections.ArrayList YeniDizi;
YeniDizi = new System.Collections.ArrayList();
YeniDizi = OzellikGoster(YeniDeger);
for (int i = 0; i <= YeniDizi.Count - 1; i++)
{
listBox1.Items.Add(YeniDizi[i].ToString());
}
}

"YeniDeger" isimli değişken (class değişkeni) "struct" yapısından farklı olarak new komutuyla kesinlikle yaratılmak zorundadır.

IEnumerator İnterface Tipli Değer Döndürmek
Fonksiyonlardan "IEnumerator" tipli değer döndürmek bazı durumlarda gerçekten çok işinize yarayacaktır. Bu sayede uygulama içerisinde tanımlayacağınız bir "IEnumerator" değişkeni ile tüm dizi elemanlarını elde edebilirsiniz. Bir fonksiyonun "IEnumerator" değer döndürmesi birden fazla değerin aynı anda uygulamaya gönderilmesi anlamını taşır. Yani bir nevi dizi değişken döndürmek gibidir. Böyle durumlarda "return" komutunun başına "yield" parametresi eklenmelidir. Aşağıdaki örnek uygulamayı dikkatlice takip ediniz.
Resim

private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add(30);
listBox1.Items.Add(15);
listBox1.Items.Add(20);
listBox1.Items.Add(45);
listBox1.Items.Add(40);
listBox1.Items.Add(5);
}

private IEnumerator GeriYolla(int[] Dizi)
{
for (int i = 0; i <= Dizi.Length - 1; i++)
{
for (int j = i + 1; j <= Dizi.Length - 1; j++)
{
int Deger;
if(Dizi[i]>Dizi[j])
{
Deger = Dizi[i];
Dizi[i] = Dizi[j];
Dizi[j] = Deger;
}
}
}

for (int i = 0; i <= Dizi.Length - 1; i++)
{
yield return Dizi[i];
}
}

private void button1_Click(object sender, EventArgs e)
{
int[] YeniDizi = new int[listBox1.Items.Count];
for (int i = 0; i <= YeniDizi.Length - 1; i++)
{
YeniDizi[i] = Convert.ToInt32(listBox1.Items[i]);
}
IEnumerator DiziOku = GeriYolla(YeniDizi);
while(DiziOku.MoveNext())
{
listBox2.Items.Add(DiziOku.Current.ToString());
}
}

Resim

Yapılan işlem, rastgele elemanlara sahip bir dizi, fonksiyona gönderilerek sıralı halde geri getirilmektedir.

ICollection Interface Tipli Değer Döndürmek
Bir fonksiyonda "ICollection" interface tipli değer döndürmek, fonksiyondan dizi değişken ismi döndürmek gibidir. Bu sayede uygulamadan tüm elemanlarına "foreach" döngüsüyle erişebilirsiniz. Tüm kod aşağıda verilmiştir. Dikkatlice inceleyiniz. Kodu ekledikten sonra uygulamanızı çalıştırırsanız, Listede yer alan tüm elemanlar fonksiyon sayesinde sıralı halde uygulamaya geri gönderilecektir.
private ICollection TopluAl(int[] Dizi)
{
for (int i = 0; i <= Dizi.Length - 1; i++)
{
for (int j = i + 1; j <= Dizi.Length - 1; j++)
{
int Deger;
if (Dizi[i] > Dizi[j])
{
Deger = Dizi[i];
Dizi[i] = Dizi[j];
Dizi[j] = Deger;
}
}
}
return Dizi;
}

private void button1_Click(object sender, EventArgs e)
{
int[] YeniDizi = new int[listBox1.Items.Count];
for (int i = 0; i <= YeniDizi.Length - 1; i++)
{
YeniDizi[i] = Convert.ToInt32(listBox1.Items[i].ToString());
}
foreach(int Eleman in TopluAl(YeniDizi))
{
this.Text = "Elemanların Sıralı Olarak Gösterimi:";
MessageBox.Show(Eleman.ToString());
}
}

Metodlara Açıklama Balonları Eklemek
Kod yazarken kolaylık olması bağlamında "C#" sizlere fonksiyonlar hakkında yanına bir baloncuk çıkararak yardımcı olur.
Resim

Yukarıdaki ekran görüntüsünü elde edebilmek için aşağıdaki kod satırlarını kullanmamız gerekecektir. Mouse ile faktoriyel isimli fonksiyonu aktifleştirdiğiniz zaman sağ tarafında fonksiyonun parametreleriyle beraber ismi ve ne işe yaradığı (Eklediğiniz metin) karşınıza çıkacaktır.
/// <summary>
/// Sayının Faktöriyelini Hesaplar
/// </summary>
/// <param name="Deger"></param>
/// <returns></returns>
private Double faktoriyel(int Deger)
{
double Sonuc = 1;
for (int i = 2; i <= Deger; i++)
{
Sonuc *= Deger;
}
return Sonuc;
}

private void button1_Click(object sender, EventArgs e)
{
int Sayi = 10;
double Hes;
Hes = faktoriyel(Sayi);
this.Text = Hes.ToString();
}

"Summary" xml tagı kullanılarak fonksiyonun işlevi programcıya aktarılmıştır. İşlemi gerçekleştiren tag aşağıda ayrıca verilmiştir.
/// <summary>
/// Sayının Faktöriyelini Hesaplar
/// </summary>
/// <param name="Deger"></param>
/// <returns></returns>

"///" ile başlayan taglar ile bu tür işlemlerinizi kolayca gerçekleştirebilirsiniz. Tagı eklerken editör "Enter" tuşundan sonra size bayağı yardımcı olacaktır.
okanbilke@gmail.com
Kullanıcı avatarı
okanbilke
Site Kurucusu
Site Kurucusu
 
Mesajlar: 721
Beğendiklerim: 0 mesaj
Beğenilenlerim: 0 mesaj
Kayıt: 15 Mar 2013 13:09
Konum: Ankara

Reklam

Dön C#

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: SemrushBot [Bot] ve 1 misafir


  • Reklam