Dart Programlama Dilinde Fonksiyonlar ve Özellikleri
Dart dilinde fonksiyonlar, diğer pek çok nesne programlama dilinde olduğu gibi benzer bir mantıkta kullanılmaktadır.
Dart Programlama Dilinde Fonksiyonlar
Matematikle biraz haşır neşirseniz muhtemel fonksiyonlarla alakalı bir şeyler duymuşsunuzdur. Nasıl ki matematik dilinde fonksiyonlar sayesinde girdi alınan değişkenlerden bir çıktı oluşması sağlanıyorsa programlamada da fonksiyonlar benzer bir mantıkta kullanılmaktadır.
Programlama dillerinde fonksiyonlar, genel olarak belirli bir amaç için oluşturulmuş, tekrar tekrar kullanılabilen ve mantıksal bütünlük gösteren kod blokları şeklinde tanımlanabilir.
Fonksiyonlar, herhangi bir belirli görevi gerçekleştirme anlamına gelen ifadeler kümesini oluşturmaya ve daha sonra programın herhangi bir yerinden çağırarak programın tamamını, o program için belirli bir görevi yerine getiren alt birimlere bölmeyi kolaylaştırır. Böylece modüler yaklaşımı geliştirir ve kodun yeniden kullanılabilirliğini artırır. Fonksiyonların avantajlarını maddeler halinde derlersek:
- Programın modülerliğini arttırır.
- Kodların yeniden kullanılabilirliğini sağlar.
- Ekip içinde görev paylaşımı kolaylaşacağı için geliştirmeyi hızlandırır.
- Bağlantıyı azaltır ve bu da hata yakalama gibi amelilikleri azaltır.
- Kod tekrarlarını azaltır.
Peki fonksiyonu nasıl kullanabiliriz sorusunu cevaplamadan önce fonksiyonların tabiri caizse kendilerine ait bir yaşam alanı vardır. Fonksiyon basit bir şekilde adlandırılır ve çalışabilmesi için kullanılacağı yerde çağrılır.
Dart’ta Parametresiz ve Parametreli Fonksiyonlar
Fonksiyonlar kendi aralarında da gruplandırılmaktadır. Alt başlıklar halinde fonksiyon tiplerini inceleyelim.
Parametresiz (Değer Almayan) Fonksiyonlar
Parametresiz (değer almayan) fonksiyonlar çağrıldığı yerden herhangi bir değer almaz.
void main()
{
kareAlan();
}
kareAlan()
{
int kenar = 5;
int alan = kenar*kenar;
print ("Karenin Alanı: $alan");
}
Çıktı: Karenin Alanı: 25
Yukarıdaki örnekte basitçe fonksiyonun kullanımı gösterilmiştir. Adını kareAlan olarak tanımladığımız fonksiyonumuza karenin alanını bulan kodları yazdık. Ancak fark edileceği üzere fonksiyonu çalıştırabilmek için main fonksiyonu içinde fonksiyonumuzu çağırmamız gerekiyor.
Parametreli (Değer Alan) Fonksiyonlar
Parametreli (değer alan) fonksiyonlar çağrıldığı yerden değer alır.
void main()
{
kareAlan(6);
}
kareAlan(int kenar)
{
int alan = kenar*kenar;
print ("Karenin Alanı: $alan");
}
Çıktı: Karenin Alanı: 36
Dart’ta void ve return İfadeleri
Fonksiyonlar değer döndüren (return) ve değer döndürmeyen (void) olarak iki farklı şekilde değerlendirilir.
Değer Döndürmeyen Fonksiyonlar (void)
Bu tarz fonksiyonlar, ana fonksiyon (main) ya da başka fonksiyonlar tarafından çağrıldığında içerisine yazılmış olan kodlar çalıştırılır ancak çağrıda bulunan fonksiyona herhangi bir değer döndürmez.
void main()
{
topla (); //parametre almayan
carp (2, 5, 10); //parametre alan
}
topla ()
{
int x = 5, y = 10, z = 15;
print ("Sayıların Toplamı: ${x + y + z}");
}
carp (int a, int b, int c)
{
print ("Sayıların çarpımı: ${a*b*c}");
}
Çıktı:
Sayıların Toplamı: 30
Sayıların çarpımı: 100
Yukarıdaki örneğimizde topla ve carp fonksiyonları oluşturulmuş ve ana fonksiyon (main) içerisinde de bu fonksiyonlar çağrılarak çalıştırılmıştır. Ancak ilgili işlem tamamlandıktan sonra ana fonksiyona herhangi bir değer aktarılması mümkün değildir.
Değer Döndüren Fonksiyonlar (return)
Bu tarz fonksiyonlar da ise, fonksiyon tarafından üretilen değer return ifadesi ile çağrıda bulunan ana fonksiyon (main) ya da başka fonksiyonlara döndürülmekte ve bu değer orada kullanılmaktadır.
void main()
{
var toplama = topla (); //parametre almayan
var carpma = carp (2, 5, 10); //parametre alan
print ("Sayıların toplamı: $toplama");
print ("Sayıların çarpımı: $carpma");
}
topla ()
{
int x = 5, y = 10, z = 15;
return (x + y + z);
}
carp (int a, int b, int c)
{
return (a*b*c);
}
Çıktı:
Sayıların Toplamı: 30
Sayıların çarpımı: 100
Yukarıdaki örneğimizde topla ve carp fonksiyonları oluşturulmuş ve ana fonksiyon (main) içerisinde de bu fonksiyonlar çağrılarak çalıştırılmıştır. Ancak fonksiyonlarımızın içerisinde return ifadesi kullanıldığı için ilgili işlem tamamlandıktan sonra ana fonksiyona bir değer aktarımı söz konusu olmaktadır. Bu değeri de kullanabilmek adına fonksiyonlarımız ana fonksiyon içerisinde toplama ve carpma değişkenlerine atanmıştır.
Her ne kadar Dart’ta void ve return ifadeleri olan fonksiyonları yukarıdaki gibi sorunsuz kullanabilsek de bu fonksiyonları veri tiplerine göre adlandırmak daha sağlıklı olacaktır. Yani yukarıdaki kodlarımızı buna uygun yazarsak eğer:
void main()
{
topla (); //parametre almayan
carp (2, 5, 10); //parametre alan
}
void topla ()
{
int x = 5, y = 10, z = 15;
print ("Sayıların Toplamı: ${x + y + z}");
}
void carp (int a, int b, int c)
{
print ("Sayıların çarpımı: ${a*b*c}");
}
void main()
{
var toplama = topla (); //parametre almayan
var carpma = carp (2, 5, 10); //parametre alan
print ("Sayıların toplamı: $toplama");
print ("Sayıların çarpımı: $carpma");
}
int topla ()
{
int x = 5, y = 10, z = 15;
return (x + y + z);
}
int carp (int a, int b, int c)
{
return (a*b*c);
}
Fark edileceği üzere return deyimi ile bir fonksiyonun çağrıldığı noktaya bir değer döndürmesi sağlanır. Ayrıca belirtmek gerekir ki bir fonksiyonda sadece bir tane return ifadesi olabilir.