cakir
New member
- Katılım
- 7 May 2006
- Mesajlar
- 10,807
- Reaction score
- 0
- Puanları
- 0
Arkadaşlar Ufakda Olsa Algoritma Mantığı Açısından,
Procedure Ve Functions'lardan Bahetmek İstiyorum.
İlk Önce Ufak Bir Tanım İle Başlayalım,
Procedure Nedir Ne İş Yapar.
Procedure :
Yazdığımız Program İçerisinde Kodlarımız Procedure Geldiğinde Procedure Tarafından İşletilecek Kodlar Bloğudur Yani Geriye Bir Değer Döndürmeyen Yapılardır,
Muhakkak Suretle void Olarak Declare Edilir'ler.
Functions : Procedurler İle Aynı İşi Yapan Yalnız Geriye Değer Döndüren Yapılardır,
Mesela int,double,string,DataTable veya object Gibi.
Procedure Ve Functions Aynı Yapılardır Aslında Tek Farkları,
Procedure'lerin void Olarak Declare Edilmesi,
Fucntion'ların Geriye Değer Döndürmesi.
İki Yapıyıda Basit Birer Örnek İle Mantığını Anlamak Açısından Yapalım.
// Procedure
public void EkranaYaz()
{
MessageBox.Show("Merhaba Dünya");
}
// Function
public string EkranaYaz()
{
string yazici = "Merhaba Dünya";
return yazici;
}
// Form Load Event'ı
protected void Page_Load(object sender, Eventargs e)
{
// Procedure Kullanımı.
EkranaYaz();
// Function Kullanımı.
string eleman = EkranaYaz(); //Geriye string Döndüren Function
MessageBox.Show(eleman);
}
Yukarıdaki İki Örnek'de Aslında Aynı İşi Yapıyor,
Biri Procedure Olarak,
Diğeri Fucntion Olarak,
Söylemek İstediğim Başka Birşey'de Elinizden Ğeldiğince Kullandığınız Event'lara
Fazla Kod Yazmamanız,
Yani Evenlarınızda Fazla Kod Kalabalığı Oluşturmayın.
Evenlarınız İçerisinde Mümkün Olduğunca Procedure Kullanmaya Bakın,
Procedure Kullanmanız Okunabilirliği Ve Kod Karmaşıklığından Sizi Kurtaracaktır.
Örnek Vermek Gerekirse.
// Bir Buton Varsayalım Ve Butona Tıklandığında Yapmamız Gereken İşler Olsun Mesela.
using System.Windows.Forms;
using System.Data.SqlClient;
proected void Button_Click(object sender, Eventargs e)
{
string Baglanti = "Server=.; Database=Northwind; Integrated Security=true";
using(SqlConnection cn = new SqlConnection(Baglanti))
{
string strSELECT = "SELECT * FROM Products";
SqlCommand com = new SqlCommand(strSELECT,cn);
DataTable = dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(com);
cn.Open();
da.Fill(dt);
cn.Close();
// Projemizde Bir GridView Olduğunu Varsayalım Ve Veritabanından Gelen
// Verilerimizi GridView Bağlayalım.
GridView1.Datasource = dt;
}
}
Mesela Yukarıdaki Örnekte Button Click Olayına Bu Kadar Kod Yazmamızın Bir Anlamı Yok,
Button Click Olayında Başka Bir İş Daha Yaptığımızı Varsayalım,
Hayde Bakalım Yazdığımız Kodların Altından Yazmaya Devam Yani Kod Kalabalığı Okunabilirlik Azalmış Durumda Bütün Kodlar İç İçe Geçmiş Durumda,
En Önemlisi İse Button Click Olayındaki Bu Kodları Başka Bir Yerde Daha Kullanmak İstediğimizi Varsayalım Haydi Bu Kadar Kodu Baştan Bir Daha Yaz Yada Kopyala Yapıştır Kod Kalabalığına Devam Okunabiirlik Sıfır Peki Biz Böyle Yapmak Yerine Bir procedure Oluştursaydık Ve Bu Kodların Lazım Olduğu Heryerde Bu Procedure Çağırsaydık Ne Olurdu.
O Zaman Çok Daha Güzel Olurdu.
Örnek :
public void Doldur_GridView()
{
string Baglanti = "Server=.; Database=Northwind; Integrated Security=true";
using(SqlConnection cn = new SqlConnection(Baglanti))
{
string strSELECT = "SELECT * FROM Products";
SqlCommand com = new SqlCommand(strSELECT,cn);
DataTable = dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(com);
cn.Open();
da.Fill(dt);
cn.Close();
// Projemizde Bir GridView Olduğunu Varsayalım Ve Veritabanından Gelen
// Verilerimizi GridView Bağlayalım.
GridView1.Datasource = dt;
}
}
proected void Button_Click(object sender, Eventargs e)
{
Doldur_GridView();
}
İşte Aradaki Fark Arkadaşlar.
Bundan Sonra Doldur_GridView(); Nerede Size Lazım Olursa Bu Şekilde Çağırıp Kullanabilirsiniz.
Aradaki Farkı Kıyaslamak Ve Değerlendirmek Size Kalmış.
İnşaallah Fırsat Buldukça C# Altında Böyle Yazılar Yazmaya Devam Edeceğim.
Özellikle Anlatmamı İstediğiniz Konu Var İse Bu Başlık Altıntan Yazabilirsiniz,
Müsait Olduğum Zamanlar Cevap Yazacağım,
Lütfen Yardım İstekleriniz Kişisel Olmasın Mesala Hocam Bana Hesap Makinası Kodları Verirmisin,Yada Bana Şöyle Birşey Yazarmısın V.b Gibi Yazılara Cevap Vermeyeceğim.
Anlatmamı İstediğiniz Herhangi Bir Konu Olursa Buraya Yazabilirsiniz Elimden Geldiğince Cevap Vermeye Çalışacağım.
Procedure Ve Functions'lardan Bahetmek İstiyorum.
İlk Önce Ufak Bir Tanım İle Başlayalım,
Procedure Nedir Ne İş Yapar.
Procedure :
Yazdığımız Program İçerisinde Kodlarımız Procedure Geldiğinde Procedure Tarafından İşletilecek Kodlar Bloğudur Yani Geriye Bir Değer Döndürmeyen Yapılardır,
Muhakkak Suretle void Olarak Declare Edilir'ler.
Functions : Procedurler İle Aynı İşi Yapan Yalnız Geriye Değer Döndüren Yapılardır,
Mesela int,double,string,DataTable veya object Gibi.
Procedure Ve Functions Aynı Yapılardır Aslında Tek Farkları,
Procedure'lerin void Olarak Declare Edilmesi,
Fucntion'ların Geriye Değer Döndürmesi.
İki Yapıyıda Basit Birer Örnek İle Mantığını Anlamak Açısından Yapalım.
// Procedure
public void EkranaYaz()
{
MessageBox.Show("Merhaba Dünya");
}
// Function
public string EkranaYaz()
{
string yazici = "Merhaba Dünya";
return yazici;
}
// Form Load Event'ı
protected void Page_Load(object sender, Eventargs e)
{
// Procedure Kullanımı.
EkranaYaz();
// Function Kullanımı.
string eleman = EkranaYaz(); //Geriye string Döndüren Function
MessageBox.Show(eleman);
}
Yukarıdaki İki Örnek'de Aslında Aynı İşi Yapıyor,
Biri Procedure Olarak,
Diğeri Fucntion Olarak,
Söylemek İstediğim Başka Birşey'de Elinizden Ğeldiğince Kullandığınız Event'lara
Fazla Kod Yazmamanız,
Yani Evenlarınızda Fazla Kod Kalabalığı Oluşturmayın.
Evenlarınız İçerisinde Mümkün Olduğunca Procedure Kullanmaya Bakın,
Procedure Kullanmanız Okunabilirliği Ve Kod Karmaşıklığından Sizi Kurtaracaktır.
Örnek Vermek Gerekirse.
// Bir Buton Varsayalım Ve Butona Tıklandığında Yapmamız Gereken İşler Olsun Mesela.
using System.Windows.Forms;
using System.Data.SqlClient;
proected void Button_Click(object sender, Eventargs e)
{
string Baglanti = "Server=.; Database=Northwind; Integrated Security=true";
using(SqlConnection cn = new SqlConnection(Baglanti))
{
string strSELECT = "SELECT * FROM Products";
SqlCommand com = new SqlCommand(strSELECT,cn);
DataTable = dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(com);
cn.Open();
da.Fill(dt);
cn.Close();
// Projemizde Bir GridView Olduğunu Varsayalım Ve Veritabanından Gelen
// Verilerimizi GridView Bağlayalım.
GridView1.Datasource = dt;
}
}
Mesela Yukarıdaki Örnekte Button Click Olayına Bu Kadar Kod Yazmamızın Bir Anlamı Yok,
Button Click Olayında Başka Bir İş Daha Yaptığımızı Varsayalım,
Hayde Bakalım Yazdığımız Kodların Altından Yazmaya Devam Yani Kod Kalabalığı Okunabilirlik Azalmış Durumda Bütün Kodlar İç İçe Geçmiş Durumda,
En Önemlisi İse Button Click Olayındaki Bu Kodları Başka Bir Yerde Daha Kullanmak İstediğimizi Varsayalım Haydi Bu Kadar Kodu Baştan Bir Daha Yaz Yada Kopyala Yapıştır Kod Kalabalığına Devam Okunabiirlik Sıfır Peki Biz Böyle Yapmak Yerine Bir procedure Oluştursaydık Ve Bu Kodların Lazım Olduğu Heryerde Bu Procedure Çağırsaydık Ne Olurdu.
O Zaman Çok Daha Güzel Olurdu.
Örnek :
public void Doldur_GridView()
{
string Baglanti = "Server=.; Database=Northwind; Integrated Security=true";
using(SqlConnection cn = new SqlConnection(Baglanti))
{
string strSELECT = "SELECT * FROM Products";
SqlCommand com = new SqlCommand(strSELECT,cn);
DataTable = dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(com);
cn.Open();
da.Fill(dt);
cn.Close();
// Projemizde Bir GridView Olduğunu Varsayalım Ve Veritabanından Gelen
// Verilerimizi GridView Bağlayalım.
GridView1.Datasource = dt;
}
}
proected void Button_Click(object sender, Eventargs e)
{
Doldur_GridView();
}
İşte Aradaki Fark Arkadaşlar.
Bundan Sonra Doldur_GridView(); Nerede Size Lazım Olursa Bu Şekilde Çağırıp Kullanabilirsiniz.
Aradaki Farkı Kıyaslamak Ve Değerlendirmek Size Kalmış.
İnşaallah Fırsat Buldukça C# Altında Böyle Yazılar Yazmaya Devam Edeceğim.
Özellikle Anlatmamı İstediğiniz Konu Var İse Bu Başlık Altıntan Yazabilirsiniz,
Müsait Olduğum Zamanlar Cevap Yazacağım,
Lütfen Yardım İstekleriniz Kişisel Olmasın Mesala Hocam Bana Hesap Makinası Kodları Verirmisin,Yada Bana Şöyle Birşey Yazarmısın V.b Gibi Yazılara Cevap Vermeyeceğim.
Anlatmamı İstediğiniz Herhangi Bir Konu Olursa Buraya Yazabilirsiniz Elimden Geldiğince Cevap Vermeye Çalışacağım.