Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I C++ Programming: Program Design Including Data Structures, Third Edition Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
Amaçlar Bu Bölümde: Standart ön tanımlı (predefined) fonksiyonlar tanımlanacak ve program içerisindeki kullanımları araştırılacaktır. Kullanıcı tanımlı fonksiyonlar(user-defined functions) işlenecektir. Gerçek (actual) ve formal parametre içeren değer döndüren fonksiyonlar araştırılacaktır. Kullanıcı tanımlı bir fonksiyonda değer döndürmenin gerçekleştirilmesi örnek verilecektir.
Fonksiyonlar Fonksiyonlar kendi başlarına oluşturulmuş bloklar gibi çalışırlar. Karmaşık programların daha kolay yönetilebilmesi için, programı parçalara ayırır. Fonksiyonların olumlu özellikleri: Programcı programın sadece bir parçası üzerine odaklanabilir, bu parçayı mükemmel olarak yapılandırıp , hatalarını düzeltebilir ve çalıştırabilir. Farklı kullanıcıların bu fonksiyonu allanabilmelerine olanak sağlar. Fonksiyonlar bir programın farklı yerlerinde birden fazla defa kullanılabilir.
Fonksiyonlar Fonksiyonlar: Modüller olarak adlandırılır. Küçük program parçalarıdır. Daha büyük bir programı oluşturmak üzere bir araya getirilirler ve birlikte değerlendirilirler C++ Programming: From Problem Analysis to Program Design, Third Edition
Öntanımlı Fonksiyonlar (Predefined Functions) Cebir, herhangi bir fonksiyonu bir kural olarak ya da fonksiyonun argümanı olarak adlandırılan değerler arasındaki bağımlılığı gösterir; fonksiyonun dönen değeri bu argümanlarla ilişkilidir. Eğer f(x) = 2x + 5 ise , f(1) = 7, f(2) = 9, ve f(3) = 11 Burada : 1, 2, ve 3 argümanları 7, 9, ve 11 bu argümanlara karşılık değerlerdir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Öntanımlı (Predefined) Fonksiyonlar Ön tanımlı bazı fonksiyonlar: sqrt(x) pow(x,y) floor(x) Öntanımlı fonksiyonlar bağımsız kütüphanelerde tanımlıdır. I/O fonksiyonları iostream başlık dosyasında (header) Math fonksiyonları cmath başlık dosyasında (header) tanımlıdır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Power Fonksiyonu (pow) pow(x,y) fonksiyonu xy gösterir. pow(2,3) = 8.0 pow double veri tipinde değer gösterir. x ve y , fonksiyonun parametreleri (ya da argümanlarıdır) pow fonksiyonu iki parametrelidir. C++ Programming: From Problem Analysis to Program Design, Third Edition
sqrt Fonksiyonu sqrt(x) fonksiyonu x >= 0.0 için bir x sayısının kare kökünü hesaplar sqrt(2.25) =1.5 Fonksiyonun double tipinde bir parametresi vardır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Kullanıcı-Tanımlı Fonksiyonlar Void fonksiyonu: Herhangi bir değer döndürmez Değer döndüren fonksiyonlar: Herhangi bir veri tipinde değer döndürür. Her iki tipteki fonksiyonun da kullanılması için: -Doğru başlık dosyasını (header file) içerir. Fonksiyonun ismi bilinir Eğer varsa, parametrelerinin sayını bilinir. Her parametrenin veri tipi bilinir. Fonksiyon tarafından hesaplanmış olan veri tipi bilinir. Buna fonksiyonun tipi denir. C++ Programming: From Problem Analysis to Program Design, Third Edition
Değer Döndüren Fonksiyonlar Değer döndürüldüğü için, bu tür fonksiyonlar tekildir. -Sonraki hesaplama için değer kaydedilir Değer birtakım hesaplamalarda kullanılır. Değer yazdırılır. Değer döndüren bir fonksiyon bir atama (assignment) deyimi ile ya da bir çıktı (output) deyimi ile kullanılır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Değer Döndüren Fonksiyonlar Fonksiyon tanımını oluşturan özellikler: Fonksiyonun ismi Parametrelerin sayısı Her parametrenin veri tipi Fonksiyonun tipi Fonksiyonun gövdesi, diğer bir ifade ile işlemleri gerçekleştiren kod C++ Programming: From Problem Analysis to Program Design, Third Edition
Değer Döndüren Fonksiyon Başlık (Heading): Önceki slayttaki ilk dört özellikler Formal Parametre: Başlıkta bildirilen değişken Gerçek (Actual)Parametre: bir fonksiyona çağrıyı listeleyen değişken veya ifade C++ Programming: From Problem Analysis to Program Design, Third Edition
Değer Döndüren Fonksiyonlar functionType: Fonksiyon tarafından döndürülen değerin tipidir. Çağrılan veri tipi olarak ta adlandırılır C++ Programming: From Problem Analysis to Program Design, Third Edition
Sözdizimi Formal parametre listesinin sözdizimi Fonksiyon çağrısının sözdizimi: Gerçek parametre listesinin sözdizimi C++ Programming: From Problem Analysis to Program Design, Third Edition
Değer Döndüren Fonksiyonlar Değer döndüren bir fonksiyonu çağırmak için -Fonksiyonun ismi parantez içerisindeki gerçek parametreleri ile (eğer varsa )kullanılır. -Gerçek ve formal parametreler arasında bire-bir eşleşme vardır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Değer Döndüren Fonksiyonlar Değer döndüren bir fonksiyon bir ifade içerisinde çağrılır. İfade bir atama deyiminin bir parçası veya bir çıktı deyimi olabilir Bir programdaki fonksiyon çağrısı, fonksiyonun gövdesindeki kodların çalışması ile sonlanır. C++ Programming: From Problem Analysis to Program Design, Third Edition
return Deyimi Fonksiyon değerini hesapladığında, return deyimi ile bu değeri döndürür return deyiminin sözdizimi: return deyimi çalıştırıldığında -fonksiyon sonlanmıştır -kontrol çağıran programa geri döner Bir return deyimi main fonksiyonu içerisinde çalıştırıldığında program sonlanır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Fonksiyon Prototipi Fonksiyon Prototipi : Fonksiyonun gövdesi olmadan fonksiyonun başlığıdır Parametre listesi içerisinde değişken isminin belirlenmesine gerek yoktur. Her parametrenin tipi belirlenmiş olmalıdır. C++ Programming: From Problem Analysis to Program Design, Third Edition
Program Analizi Giriş datası aşağıdaki şekilde verilmiştir. Bu sayıları okuyacağınız değişkenin ismi num olsun 15 20 7 8 28 21 43 12 35 3 Çözüme başlamak için veri setindeki ilk sayıyı okuyun Okuduğunuz ilk sayının en büyük sayı olduğunu kabul ederek max isimli bir değişkene atayın İkinci sayıyı(num) okuyun; bu değişkeni önceden en büyük kabul ettiğiniz max değişkeni ile karşılaştırın ve sonuç daha büyük ise, okuduğunuz ikinci sayıyı max değişkenine atayın.
Program Analizi Bu aşamada(verilen giriş değerlerinden) max iki sayının daha büyüğünü içermektedir. Üçüncü sayıyı okuyun ve bu sayıyı max değişkeni ile karşılaştırarak daha büyük olan sayıyı max değişkenine atayın. Bu noktada , max en büyük ilk üç sayıyı içermektedir. Sonraki sayıyı okuyun ve bu sayıyı max değişkeni ile karşılaştırın , daha sonra sonucu max değişkeninde depolayın. Aynı işlemleri veri setindeki tüm değerler için tekrarlayın
Algoritma Tasarımı İlk sayıyı oku. Tek sayı olduğu için bu sayı en büyük sayı olacaktır. Bu sayıyı max değişkenine atayın. Listedeki diğer tüm sayılar için: - Sonraki sayıyı okuyun Bu değeri num isimli bir değişkende depolayın num ve max değerlerini karşılaştırın. C++ Programming: From Problem Analysis to Program Design, Third Edition
Algoritma Tasarımı Eğer max < num num en büyük sayıdır. O nedenle max değişkenin değeri num olur. Yani, max değişkenin değeri güncellenir. Bunun için num değişkeni max değişkenine atanır. Eğer max >= num ise, num değişkenini göz önüne almayın max değişkeni en büyük sayıdır. Bu sayıyı yazdırılır. C++ Programming: From Problem Analysis to Program Design, Third Edition