Fonksiyonlar - Functions

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 11 Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama
Advertisements

Nesneye Yönelik Programlama
Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
Fonksiyonlar.
Makine Müh. & Jeoloji Müh.
Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
Sistem Analizi ve Planlama
Bölüm 2 C Dilinin Temelleri
Atama ve Girdi/Çıktı Komutları
Bölüm 6 – Metodlar ve Parametreler
Bölüm 2: Program Denetimi
MATLAB’İN SAYI YUVARLAMA FONKSİYONLARI
4 Kare Problemi 4 Kare Problemi Hazır mısın? B A Bu şekle iyi bak
Metodlar ve Parametreler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Elektrik-Elektronik Mühendisliği Bölümü
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
VERİ TABANI ve YÖNETİMİ
Bölüm 10 Yapılar ve Birleşimler
Fonksiyonlar ve Alt Programlar
Bölüm 3 – Yapısal Programlama
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Nesne Tabanlı Programlama
Yapısal Program Geliştirme – if, if-else
Fonksiyonlar.
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Nesneye Yönelik Programlama
Bilgisayar Programlama
C ile Programlamaya Giriş
Paralel Programlamaya Giriş
Metotlar.
FONKSİYONLAR.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Akış Kontrol Mekanizmaları
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyonlar –Programı modüler hale getirir –Yerel değişkenler,
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
Diferansiyel Denklemler
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Bilgisayar Programlama
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
C PROGRAMLAMA FONKSİYONLAR Hazır fonksiyonlar (math, rand) Kullanıcı Tanımlı Fonksiyonlar Değer ile Çağırma.
BM-103 Programlamaya Giriş Güz 2014 (4. Sunu)
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
1 Yapılandırılmamış programlama Prosedür/Fonksiyon gerekliliği Prosedural Programlama Fonksiyon Tanımlama/Prototip/Çağırma Örnek fonksiyonlar Fonksiyon.
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
Fonksiyonlar.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Programlama Dillerinin Prensipleri
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
C’de Fonsiyonlar Aslı Ergün.
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Excel’de VBA Programlama (Visual Basic Application)
Bilgisayar Bilimi Problem Çözme Süreci-2.
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyonlar-2.
NİŞANTAŞI ÜNİVERSİTESİ
Diziler(Arrays).
Sunum transkripti:

Fonksiyonlar - Functions Bu notlar Başkent Üni. Prog. Dilleri I Dersi öğretim görevlisi Hasan Tınmaz’dan alınmıştır.

Giriş Gerçek hayattaki problemleri çözen programlar şu ana kadar üzerinde durulan problem çözümlerinden çok daha büyüktür. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra birleştirmekten geçer. Buna “Böl ve fethet”-”divide and conquer” denir. Böylece yönetmesi daha kolay olacaktır. Zülfü GENÇ

Örnek İşleri bölerek bütün bir işi gerçekleştirmeye güncel bir örnek vermeye çalışalım. Herhangi bir sektörde çalışan büyük bir işletme düşününüz. Bu işletmede bütün işleri gören tek bir bölüm yoktur. Bütün işler uygun bölümlerin sorumluluğundadır. Bütün bu bölümlerde patron tarafından çalıştırılır. Zülfü GENÇ

Örneğin ikinci dereceden bir bilinmeyenli bir denklemin köklerinin hesaplanması işleminde yapılması gerekenler: 1- Diskriminantın hesaplanması, 2- Diskriminantın sonucuna bakarak kök olup olmadığına karar verilmesi 3- Duruma göre köklerin bulunması Zülfü GENÇ

Esas ana problemimiz kök hesabı olduğu halde, bu problemi çözebilmek için daha küçük alt problemlerin (sub problem) çözülmesi gereklidir. Bu bölüme kadar olan yöntemlerle tasarımı yine aynı şekilde düşünülürse bütün çözüm parçacıkları main() fonksiyonu içerisine yazılmalıdır. Böyle olduğunda ana program bloğumuz problemin büyüklüğüne göre uzar, okunabilirliliği azalır, müdahale etmek zorlaşır. Bu türlü büyük programları kendi içerisinde, her biri verilen bir işi çözmek için tasarlanmış alt program (sub program) parçacıklarından yani modüllerden oluşturmak daha mantıklı olacaktır. Zülfü GENÇ

C dilinde bu modüllere fonksiyon (function) adı verilir. Diğer kaynaklarda "işlev" yada " alt yordam" adı ile de kullanılırlar. Fonksiyonu çalıştırma işine çağırma (function call) denir. Her fonksiyon, ismi (function name) ve kendisinden istenen işi gerçekleştirmek için gerekli olan değerler yani parametreler-argümanlar (arguments) ile çağrılırlar. Zülfü GENÇ

Eğer argüman verilirse argümanlar üzerinde işlem yaparak ya da kendi içerisinde farklı işlemler gerçekleştirerek yaptıkları işin sonucunu kendilerini çağıran fonksiyona bildirirler. Bu değere geri dönen değer (return value) adı verilir. Geri dönen değer x in kareköküdür Zülfü GENÇ

Fonksiyonlar bir makineye benzetilebilir. Girdi olarak parametre ile kendisine verilen değeri alır ve üzerinde işlemler yaparak sonuç değeri, yani geri dönecek olan değeri üretir. Zülfü GENÇ

C Programlarında yönetici main() fonksiyonudur. Programın çalışması main () fonksiyonundan başlar. Bu fonksiyon diğer fonksiyonları çağırarak çalıştırır. Zülfü GENÇ

Fonksiyon Kullanmanın Faydaları Kodun gereksiz yere büyümesini engeller: Sıkça tekrarlanan işlemler için bir kere fonksiyon yazıldığında aynı kodlar tekrar yazılmaksızın istenildiği kadar çalıştırılabilirler. Aynı kod parçası gereksiz yere birden fazla yazılmamış olur. Okunabilirliği artırarak algılamayı kolaylaştırır: main fonksiyonu içerisinde, birbirinden ayrılmış sadece kendi işlerini yapan fonksiyonların isimlen bulunur. Detay işlemler fonksiyonların içinde halledilir. Bu programlama tekniğine prosedürel soyutlama (procedural abstraction) adı verilir. Zülfü GENÇ

Fonksiyon Kullanmanın Faydaları (devam) Programın test edilmesini ve hataların bulunmasını kolaylaştırır. Hata araştırılırken aranılması gereken alt program bloğuna bakılır. Yalnız başlarına da istenirse test edilebilirler. Güncelleştirilebilir olmasını ve yeniden kullanabilme kolaylığı sağlar: Modüler olarak yazıldıklarında istenilen projelerde defalarca kullanılabilirler. Zülfü GENÇ

C dilinde iki tür fonksiyon bulunur. Standart fonksiyonlar Math (Matematik) kütüphanesi fonksiyonları, Standart kütüphane (stdlib) fonksiyonları, Kullanıcı tanımlı fonksiyonlar Zülfü GENÇ

Standart fonksiyonlar C dilinin geliştiricileri tarafından programcıların kullanmaları için, önceden yazılmış olan hazır fonksiyonlardır. Hazır fonksiyonlar teknik olarak C dilinin parçası değillerdir. Yalnızca standart hale getirilmişlerdir. Programcı, kullanmak istediği hazır fonksiyon prototiplerinin bulunduğu başlık (header) dosyalarını include önişlemci direktifi ile bildirmek sureti ile kullanabilir. Fonksiyonların kendileri .LIB kütüphane dosyaları içerisindedir. Zülfü GENÇ

Math (Matematik) kütüphanesi fonksiyonları Bu kütüphane içerisinde, matematiksel işlemleri gerçekleştirmek için kullanılan fonksiyonlar bulunur. Bu kütüphane içerisindeki fonksiyonlar double türde değerler alır ve geriye double tipte değerler döndürürler. Zülfü GENÇ

Math (Matematik) kütüphanesi fonksiyonları Zülfü GENÇ

Math (Matematik) kütüphanesi fonksiyonları Zülfü GENÇ

Standart kütüphane (stdlib) fonksiyonları Bu kütüphane içerisinde tür dönüşümleri hafıza yerleştirmeleri ve rastgele sayı üretme fonksiyonları ile yardımcı fonksiyonlar bulunur. Zülfü GENÇ

Rand() 0 ile stdlib içerisinde tanımlı olan RAND_MAX (32767) arasında rastgele bir sayı üretir. Bu sayıyı, belli bir başlangıç değeri üzerinde, bir dizi aritmetik operasyon gerçekleştirerek üretir. Zülfü GENÇ

a=rand( ) İfadesi çalıştığında 0 ile 32767 arasında rastgele bir değer üretilerek a değişkeni içerisine aktarılır. İstenen aralıklarda değer üretmesi için mod (% ) işlemi kullanılır. a= 1 + rand( )%6 ifadesinde 1 ile 6 arasında rastgele bir değer üretilerek a değişkenine aktarılır. Zülfü GENÇ

srand() rand() fonksiyonu belli bir başlangıç değerinden itibaren bir dizi matematiksel işlem sonucu rastgele bir değer üretir. Fakat programın her çalışmasında aynı başlangıç değerini kullanır. Dolayısı ile programın her çalışmasında aynı değer ya da değerler ortaya çıkar. srand() fonksiyonu rand() fonksiyonunun üreteç başlangıç değerini belirlemek için kullanılır. Unsigned tipte bir değer alır ve rastgele sayı üretecinin bu değerden başlayarak çalışmasını sağlar. Zülfü GENÇ

Örneğin; scanf("%d",&a); srand(a); a= 1 + rand() % 6; Yukarıdaki kod parçasında klavyeden girilen bir değer rastgele sayı üretecinin başlangıç değeri olmaktadır. Her defasında yeni bir rastgele değer elde edilmek istenirse klavyeden sürekli değişik bir değer girilmelidir. Zülfü GENÇ

Bu başlangıç değerini kullanıcıya sormak mantıklı olmaz. Her defasında rastgele değişik bir sayının üretilmesi istenirse sürekli değişen bir değeri srand ile başlangıç değeri olarak belirlemek gerekir. Bilgisayarda bulunan ve sürekli değişen değer sistem saatidir. Bunun için time () fonksiyonundan faydalanılabilir. Bu fonksiyon NULL parametresi ile çalıştırıldığında 01.01.1970 ten günümüze kadar olan zamanın, saniye cinsinden değerini geri döndürür. Bu fonksiyon time kütüphanesi içerisindedir. Zülfü GENÇ

/*l-6 arasında 5tane rastgele sayı üreten program */ ÖRNEK: 1 ile 6 arasında rastgele 5 adet sayı üretip ekrana yazdıran programı yazınız. /*l-6 arasında 5tane rastgele sayı üreten program */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main( ) { int x, i; srand(time(NULL)); for( i=1 ; i<=5 ; i++ ) { x=1 + rand() %6; printf(“%d, ", x ); } return 0; Zülfü GENÇ

1 ile 49 arasında ekrana rastgele 6 adet sayı yazan program. /*1-49 arasında 6 tane rastgele sayi üreten program */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main( ) { int x, i; srand(time(NULL)); for( i=1 ; i<=5 ; i++ ){ x=1 + rand()% 49; printf(“%d, ”,x); } return 0; Zülfü GENÇ

Ekran Çıktısı 6, 1, 4, 1, 5, Çıktıda görüldüğü gibi çıkan bir sayı tekrar çıkabilir. Eğer programdaki srand satırı silinirse programın her defasında aynı sayı serisini ürettiği görülecektir. Zülfü GENÇ

Kullanıcı Tanımlı Fonksiyonlar Bu bölüme kadar üzerinde durulan fonksiyonlar C dilinde hazır olarak kullanılan standart fonksiyonlardır. Programcı kendi fonksiyonlarını oluşturarak kullanabilir. Bu tür fonksiyonlara kullanıcı tanımlı fonksiyonlar (user defined functions) denilir. Zülfü GENÇ

Fonksiyon tanımlanması (definition) aşağıdaki gibidir. Zülfü GENÇ

Parametre ve geri dönüş değeri olmayan fonksiyonlar Bu tür fonksiyonlar, çağıran (caller) fonksiyondan ne bir değer alırlar ne de geriye bir değer döndürürler. Geriye dönüş değeri olmadığı için fonksiyonun türü kısmına void ifadesi yazılır. Fonksiyonun türü aynı zamanda geriye dönüş değerinin türüdür. Burada dikkat edilmesi gereken nokta, fonksiyon türü yazmak zorunlu olmadığı için ; hiçbir tür tanımlaması yapılmadığında fonksiyon türünün olmadığı ve geriye değer döndürmediği anlamına gelmediğidir. Fonksiyon türü yazılmadığında derleyici int olarak varsayar. Bu türde bir değer döndürmesini bekler. Zülfü GENÇ

ÖRNEK: Ekrana "Merhaba" yazan fonksiyon void f (void) { printf (“Merhaba”); } ya da void f ( ) { printf (“Merhaba”); } Zülfü GENÇ

ÖRNEK: Ekrana aşağıdaki ev figürünü çizen fonksiyonları main() fonksiyonu ile birlikte yazınız. Zülfü GENÇ

PROBLEM PARÇALARI 1. Çatının çizilmesi 1.1. İki kenarın çizilmesi 1.2. Tabanın çizilmesi 2. Gövdenin çizilmesi 3. Yolun çizilmesi Zülfü GENÇ

… Çatı çizme karışık bir iş olarak düşünülüp iki adet iş parçasına bölünmüştür. atının çizilmesi için ikizkenar çiziminin ve taban çizme işlemlerinin gerçekleşmesi gerekir. Diyagram olarak aşağıdaki gibi gösterilebilir. Zülfü GENÇ

… main fonksiyonu yani programın ana fonksiyonu problemi çözecek olan üç fonksiyonu çağıracaktır. Böylece ev figürü ekrana çizilmiş olacaktır. Burada main fonksiyonu çağıran (caller), diğer üç fonksiyon ise main tarafından çağrılan (called) fonksiyondur. Aynı şekilde çatıçiz fonksiyonu da ikikenarçiz ve tabanciz fonksiyonlarını çağıran fonksiyondur. Zülfü GENÇ

Adım adım programı yazalım – 1. /* Bu program ekrana bir ev figürü çizer*/ #include <stdio.h> /*Çatının iki kenarını çizen fonksiyon*/ void ikikenar_ciz() { /*Bir adet \ yazmak için \\ yazılması gerekir*/ printf(" /\\ \n"); printf(" / \\ \n"); printf("/ \\ \n"); } /*Çatının tabanını çizen fonksiyon*/ void taban_ciz() printf("-----------\n"); /*Çatıyı çizen fonksiyon*/ void cati_ciz() ikikenar_ciz(); taban_ciz(); Zülfü GENÇ

Adım adım programı yazalım – 2. /*Gövdeyi çizen fonksiyon*/ void govde_ciz() { printf("----------- \n"); printf("| | \n"); } /*Yolu çizen fonksiyon*/ void yolu_ciz() printf(" \\ \\ \n"); printf(" \\ \\ \n"); Zülfü GENÇ

Adım adım programı yazalım – 3. int main() { cati_ciz(); govde_ciz(); yolu_ciz(); return 0; } Zülfü GENÇ

Derleyici, derleme esnasında programı yukarıdan aşağı doğru derler. Fakat program main fonksiyonundan itibaren çalışmaya başlar, main fonksiyonunun ilk çağırdığı fonksiyon çatıçiz fonksiyonudur. Program işleyişi bu satırı gördüğü anda çatıçiz fonksiyonuna dallanır, çatıçiz fonksiyonu içerisinde ise ikikenarçiz fonksiyonu çağrılmaktadır buradan da ikikenarçiz fonksiyonuna dallanır, ikikenarçiz fonksiyonu blok sonu işaretine ( } ) kadar çalışır. Fonksiyon bittiğinde, program işleyişi çağıran fonksiyonun kaldığı noktadan itibaren devam eder. Zülfü GENÇ

… Kalınan nokta ikikenarçiz çağrıldıktan sonraki nokta olan tabançiz fonksiyonun çağrılacağı satırdır. Bu ifadeyi gördükten sonra program işleyişi tabançiz fonksiyonuna dallanır. Bu fonksiyonun çalışması bittiğinde program işleyişi çağrılan noktaya geri döner. İşleyiş devam ettirilir ve çatıçiz fonksiyonu sona erer. Dönülmesi gereken nokta çatıçiz fonksiyonunun çağrıldığı ifadeden sonra gelen ifadedir. Burası main fonksiyonundaki gövdeçiz fonksiyonunun çağrıldığı satırdır. Zülfü GENÇ

… Diğer fonksiyonlarda aynı şekilde çağrılıp çalıştırılır. Burada dikkat edilmesi gereken nokta her çağrılan fonksiyonun çalışması bittikten sonra program işleyişinin kendisini çağıran fonksiyonda kalınan noktadan devam etmesidir. Zülfü GENÇ

Zülfü GENÇ

… Fonksiyonların sağladığı en büyük avantajlardan biri de kodun gereksiz yere büyümesini engellemektir. Sıkça tekrarlanan işlemler için bir kere fonksiyon yazıldığında aynı kodlar tekrar yazılmaksızın istenildiği kadar çalıştırılabilirler. Aynı kod parçası gereksiz yere birden fazla yazılmamış olur. Zülfü GENÇ

Bir tane yerine beş tane ev çizmek gerekseydi, yapılacak iş ev çizen fonksiyonları aşağıdaki gibi 5 kere çağıran yapıyı kurmak olacaktır: Zülfü GENÇ

Fonksiyonlar main () fonksiyonunun üzerinde bilerek tanımlanmışlardır. C programlama dilinde fonksiyon tanımlamaları istenilen yerde yapılabilir, main () üstünde olmuş ya da altında olmuş önemli değildir. Bu tanımlama biçimini görene kadar şimdilik çağrılan fonksiyon çağıran fonksiyonun üzerinde yazılmalıdır denebilir. Burada dikkat edilecek diğer bir nokta "bir fonksiyon ilerisinde başka bir fonksiyon tanımlaması" yapılamayacağıdır. Zülfü GENÇ

Parametre Alıp Geriye Değer Döndürmeyen Fonksiyonlar Bu tür fonksiyonlar çağıran (caller) fonksiyondan bir ya da birden fazla parametre (argument) alır ve bunlar üzerinde çeşitli işlemler gerçekleştirirler. Burada çağıran fonksiyondan çağrılan fonksiyona doğru bilgi akışı söz konusudur. Gönderilen değer girdi parametresi (input argument) olarak değerlendirilir. Zülfü GENÇ

Parametre Alıp Geriye Değer Döndürmeyen Fonksiyonlar Bu tür fonksiyonlar çağrılırken fonksiyona gönderilecek olan değerler ya da değerlen tutan değişkenler fonksiyon parantezinin içerisine yazılır. Bu değerleri karşılayan değişkenlerde fonksiyon tanımlama kısmında parantezler içerisinde belirtilir. Gönderilen değerler, karşılayan değişkenler içerisine kopyalanılırlar. Değerler birebir olarak gönderilirler. Yani birinci sırada gönderilen değeri karşılayan değişken ilk sırada, ikinci gönderilen değişkeni karşılayan değişken ikinci sırada yazılmalıdır. Gönderilenler ile karşılayanların sayısı eşit olmalıdır. Zülfü GENÇ

ÖRNEK : Kendisine gönderilen tamsayı değerin tek ya da çift olup olmadığını ekrana yazan fonksiyonu main () fonksiyonu ile beraber yazınız. Bu soruda anahtar kelimeler "kendisine gönderilen" kelimeleridir. Bunlar fonksiyonun parametre alacağını gösterir. Kaç adet parametre alacağı sorunun kendisinden çıkarılır. Burada parametre sayısı birdir. Zülfü GENÇ

Zülfü GENÇ

… Fonksiyona istenirse bir değişken istenirse de sabit bir değer gönderilebilir. Gönderilen değeri karşılayan fonksiyon tanımında parantezler içerisine yazılan sayi değişkenidir. Gönderilen değerler bu değişken içerisine kopyalanır, sayi değişkeninin içerisine önce klavyeden girilen i değişkeni içerisindeki değer gönderilir ve değişkenin içerisindeki değer sayi değişkeni içerisine kopyalanacaktır. Aynı şekilde gönderilen 5 değeri de ilk çağrılma bittikten sonra tekrar gönderilecektir. Zülfü GENÇ

Program çalıştırıldığında çıktısı aşağıdaki gibi olur: Zülfü GENÇ

Burada bilgi akışı şekildeki gibidir. Zülfü GENÇ

Parametre Alıp Geriye Değer Döndüren Fonksiyonlar Bu tür fonksiyonlar çağıran (caller) fonksiyondan bir ya da birden fazla parametre (argument) alır ve bunlar üzerinde çeşitli işlemler gerçekleştirerek geriye bir değer döndürürler. Geriye değer döndürmek için kullanılan komut return komutudur. return [geridönüş değeri]; Genel kullanımda da görüldüğü gibi geri dönüş değeri isteğe bağlıdır, return komutu hem fonksiyonu sonlandırmak hem de geriye değer döndürmek amacı ile kullanılır. return komutu çalıştığı anda fonksiyon çalışması sonlanır. Zülfü GENÇ

ÖRNEK: Kendisine gönderilen iki tamsayı değerin toplamını geri döndüren fonksiyonu örnek bir main fonksiyonu ile beraber yazınız. Zülfü GENÇ

Kod: Zülfü GENÇ

Çıktı: 3 ve 5 sayıları topla fonksiyonuna gönderilir ve iki sayının toplamı sonuç değişkenine aktarılır. Sonuç değişkenin değeri de return komutu ile geri döndürülür. Bu fonksiyon aşağıdaki gibi de yazılabilir. Zülfü GENÇ

Parametre akış türleri Fonksiyonlara değerler gönderilirken iki adet yöntemle gönderilirler. Bu yöntemler şimdilik kısaca geçilecektir. Daha sonraki konularda kıyaslamalı olarak anlatılacaktır. Zülfü GENÇ

Değerle çağır (call by value) Bu yöntemle çağıran fonksiyondan gönderilen değerler, çağırılan fonksiyondaki parametrelerin içerisine kopyalanırlar. Kopyaların değiştirilmesi orijinal değerleri etkilemez. Şu ana kadar verilen bütün fonksiyon örneklerinde kullanılan yöntem budur. Zülfü GENÇ

Bağlantılı çağır (call by reference) Bu yöntemde değerlerin, kopyalandığı değişkenlerin değiştirilmesi orijinal değerleri etkiler. Bu akış yöntemini ilerleyen konularda göreceğiz. Zülfü GENÇ

Fonksiyon prototipleri (Function Prototype) Bu bölüme kadar olan örnekler de fonksiyonlar, çağıran fonksiyonların üstünde olacak şekilde yazıldı. Çünkü derleyicinin, fonksiyon çağrılarında fonksiyonların geriye döndürecekleri değerlerin tiplerini çağrılma satırından önce bilmesi gerekir. Derleme işlemi yukarıdan aşağı doğru yapıldığı için fonksiyonlar üste yazıldığında geri dönüş tipi önceden bilinir. Fakat fonksiyonlar, çağıran fonksiyonların altında da tanımlanabilir. Zülfü GENÇ

Fonksiyon prototipleri (Function Prototype) Programların yazımında önce main() fonksiyonunun yazılması ve daha sonra diğer fonksiyonların yazılması pratikte yazım kolaylıkları sağlar. Dolayısı ile fonksiyonu çağırmadan önce fonksiyonun aldığı parametreler ile geri dönüş değerini derleyiciye bildirmek amacı ile fonksiyon prototipleri kullanılır. Zülfü GENÇ

Fonksiyon prototipleri (Function Prototype) Fonksiyon prototiplerinde sadece fonksiyonun tipi, adı ve aldığı parametrelerin tipi yazılır. Parametre isimleri yazılmak zorunda değildir. Yazılırsa derleyici bu isimleri göz ardı eder. İsim yazmak yalnızca okunabilirliği artırır. Zülfü GENÇ

Yukarıda yazılan fonksiyon prototip ile birlikte şekildeki gibi yazılabilir. Zülfü GENÇ

Kaynakça: Programlamayı C ile öğreniyorum (2. Baskı), M. Yorulmaz, S. Yorulmaz, 2005, Ankara Zülfü GENÇ