"Enter"a basıp içeriğe geçin

Fonksiyonlar

Fonksiyonlar

Belli bir işi yapan kod bloklarıdır. Bir değer alabilirler ve sonucunda bir değer döndürebilirler.
Mesela kodumuzda sürekli kullanacağımız bir iş varsa, fonksiyonlar sayesinde kod tekrarını azaltabiliriz.
Metodlar sayesinde kodumuz daha sade ve anlaşılabilir olur. Kodu takip etmemizi kolaylaştırır.

Aslında main de bir fonksiyondur. Kullanacağımız diğer fonksiyonları main fonksiyonunun dışında, public sınıfın içinde tanımlarız.

Fonksiyon 3 bölümden oluşur. İlk bölümde fonksiyonun ismi ve dönüş tipi bulunur. İkinci kısımda fonksiyona yollanacak değerler (parametreler) yazılır. 3. kısım ise fonksiyon bloğudur.

tip isim(gelen değişkenler) {fonksiyon bloğu} formunda yazılırlar.

Fonksiyonu çağırmak için çarpma(i,j); deriz. derleyici çarpma adında ve 2 tane int değer alan fonksiyonu bulup çağırır.

static int fonksiyonun dönüş tipidir. fonksiyon içinde return ile dönecek şeyin tipini belirler. çarpma fonksiyonumuzun adıdır. int a,int b fonksiyona gidecek değerlerin (parametrelerin) tanımıdır. Yani bu fonksiyonun 2 tane int değer alması gerekiyor.

Ancak değerin aslında kendisi gelmez. mesela fonksiyona çarpma(i,j) diyerek i ve j değerlerini yollarsak, int a=i; int b=j; yapar yani değeri yeni bir değere kopyalar. a ve b değerleri fonksiyon bloğu ittikten sonra silinir. Bir fonksiyonda parametre olması zorunlu değildir. Parametre almayacaksa () diyerek kapatırız.

Fonksiyon a*b işlemini yapar ve return ile çağrıldığı yere yollar. Yani çarpma(i,j); olan yere return edilen değer yazılır. Bu durumda int c=15 olur.

return kelimesi döngülerdeki break işlevine de benzer. Fonksiyonda return gördüğünde fonksiyon biter ve blokta başka kod varsa da çalışmaz.

Fonksiyon bloğu

Fonksiyon bloğunda tanımlanan değişkenler sadece o blokta geçerlidir.

a değişkeni main metodunda tanımlıdır. print fonksiyonunun bloğunda kullanamayız.
b değişkeni print metodunun bloğunda tanımlıdır. main metodunda kullanılamaz.
c değişkeni Main class’ının static değişkeni olduğu ve fonksiyonların dışındaki bir blokta tanımlı olduğu için hem main hem print fonksiyonunda kullanılabilir.

 

Switch kullanarak yazdığımız kodu fonksiyona çevirelim:

Fonksiyon kullanmasaydık toplamda 6 kere switch yapısını tekrar yazmamız gerekecekti. Bu da gereksiz kod tekrarı olacaktı. Kodumuz karmaşık ve çirkin görünecekti.
yazdığımız fonksiyon sayesinde switch yapımızı 1 kere kurduk. Artık kaç kere ihtiyacımız olursa olsun kodu tekrar yazmadan fonksiyonu kullanabiliriz.

 

Şimdiye kadar sürekli kullandığımız System.out.println  aslında daha önceden tanımlanmış bir metoddur.
parametre olarak aldığı değeri ekrana basar. Ekrana basmak aslında çok kod gerektiren bir işlemdir. Ancak System.out.println fonksiyonu sayesinde uzun uzun kod yazmadan tek satırda işimizi hallledebiliriz.
Sonuç olarak, fonksiyonlar kod yazmak için olmazsa olmaz değildir. Ama fonksiyonları kullanarak çok daha hızlı şekilde ve düzenli kodlar yazabiliriz. (buradaki hızlı kodun çalışma süresi değil, kodu yazma hızıdır)
Fonksiyonun adını belirlerken yaptığı işleve göre seçmek okunurluğu daha da arttırır.

Aşırı yükleme

Az önce bahsettiğimiz fonksiyon ismi ve aldığı parametreler aslında fonksiyona benzersiz bir imza kazandırırlar. Biz bir fonksiyon çağrısında bulunduğumuzda, çağrı ile uyumlu imzaya sahip fonksiyon gelir.
Aynı imzada 2 fonksiyon olamaz. Ama aynı adda olup farklı tür ve sayıda parametreler alan fonksiyonlar olabilir.

Tanımladığımız fonksiyonların adları aynı olsa da aslında farklı imzaya sahip fonksiyonlardır. çarpma(i,j); ile çağırdığımızda çarpma adında ve 2 tane int değer alan fonksiyonu çağırır. çarpma(i,j,k); dersek yine çarpma adında ama bu sefer 3 tane int alan fonksiyonu çağırır.
İsimleri aynı ama imzaları farklı olan fonksiyonlara aşırı yüklenmiş fonksiyonlar denir.

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir