1 / 75

Fonksiyonlar

6. Fonksiyonlar. 6.1 Giriş 6.2 C++ da program bileşenleri 6.3 Math Kütüphane Fonksiyonları 6.4 Çok parametreli Fonksiyon tanımlamaları 6.5 Fonksiyon prototipleri ve Parametre Zorlaması 6.6 C++ Standar t Kütüphanesi Öncü Dosyaları 6.7 Çalışma : Rastgele Sayı Üretimi

pravat
Download Presentation

Fonksiyonlar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6 • Fonksiyonlar

  2. 6.1Giriş • 6.2C++ da program bileşenleri • 6.3 Math Kütüphane Fonksiyonları • 6.4Çok parametreli Fonksiyon tanımlamaları • 6.5Fonksiyon prototipleri ve Parametre Zorlaması • 6.6 C++ Standart Kütüphanesi Öncü Dosyaları • 6.7Çalışma: Rastgele Sayı Üretimi • 6.8Çalışma: Şans oyunu ve enum ‘un tanıtılması • 6.9Hafıza Sınıfları • 6.10Kapsam Kuralları • 6.11Fonksiyon çağrım yığını ve Kayıtları aktif hale getirme. • 6.12Boş parametre listesine sahip fonksiyonlar

  3. 6.13Sıralı Fonksiyonlar • 6.14Referanslar ve Referans Parametreleri • 6.15Varsayılan Parametreler • 6.16Kapsam Ayrıştırma Operatörü • 6.17Yerine Geçmeli Fonksiyonlar • 6.18Fonksiyon Şablonları

  4. 6.1 Giriş • Böl-Parçala-Yönet (Divide/Conquer) Tekniği • Ufak ve basit parçaları(Örn: bileşenler) birleştirerek büyük programların oluşturulması. • Fonksiyonlar • Büyük programların tasarımını, yapım sürecini ve bakımını kolaylaştırır. • C++ Standart Kütüphanesi Math fonksiyonları

  5. 6.2 C++ ‘da program bileşenleri • C++ Standart Kütüphanesi • Aşağıda belirtilen sık kullanılan işlemleri gerçekleştirmek için kullanılan fonksiyonları içerir. • Matematiksel Hesaplamalar • String üzerinde yapılan işlemler • Karakter üzerinde yapılan işlemler • Giriş/Çıkış işlemleri • Hata Kontrol işlemleri • C++ programlama ortamının bir parçasıdır.

  6. 6.2 C++ ‘da program bileşenleri (devamı) • Fonksiyonlar • Diğer dillerde metod, ya da prosedür(yordam) olarak adlandırılırlar. • Programcıların programlarının yapacağı işi anlamlı parçalara bölerek modülerlik kazandırmalarını sağlar. • Fonksiyon gövdesindeki ifadeler sadece bir kere yazılırlar. • Programın çeşitli yerlerinde tekrar kullanılabilirler. • Diğer fonksiyonlardan saklıdır. • Gereksiz yere tekrarlanan koddan kurtarır. • Böl-Parçala-Yut yaklaşımı kullanılır. • Diğer programlarda tekrar kullanılabilirler. • Programcı ya da kullanıcı tarafından tanımlanabilirler.

  7. 6.2 C++ ‘da program bileşenleri (devamı) • Fonksiyon (Devam.) • Fonksiyonlar, fonksiyon çağrımlarıyla işletilirler. • Çağrılmış olan bir fonksiyon ya geriye bir sonuç değeri döndürür ya da sadece çağrılan yere geri döner. • Fonksiyon çağrımları hiyerarşik ilişkiler oluştururlar.

  8. Fig. 6.1| Hiyerarşik patron ve işçi fonksiyonu ilişkisi.

  9. 6.3 Math Kütüphane Fonksiyonu • Genel Fonksiyonlar • Herhangi bir sınıfa ait değildirler. • Öncü dosyalarda prototipleri tanımlanmıştır. • Öncü dosyayı ekleyen her programda kullanılabilirler. • Örnek: <cmath>öncü dosyasındaki sqrt fonksiyonu • sqrt( 900.0 ) • <cmath>kütüphanesindeki fonksiyonlar genel fonksiyonlardır.

  10. Fig. 6.2| Math kütüphanesi fonksiyonları.

  11. 6.4 Çok-parametreli fonksiyon tanımlaması • Birden fazla parametre • Fonksiyonlar görevlerini yerine getirebilmek için genellikle birden fazla bilgiye ihtiyaç duyar. • Fonksiyon prototipinde ve fonksiyonun ilk satırında virgülle ayrılmış bir liste şeklinde belirtilirler.

  12. 6.5 Fonksiyon prototipleri ve Parametre Zorlaması • Fonksiyon Prototipi • Fonksiyon tanımlaması olarak da adlandırılır • Derleyiciye şu bilgileri verir: • Fonksiyonun adı • Fonksiyonun döndürdüğü verinin tipi • Parametre bilgileri • Parametre sayısı • Parametrelerin tipleri • Parametrelerin sırası

  13. 6.5 Fonksiyon prototipleri ve Parametre Zorlaması(devamı) • Fonksiyon İmzası • Fonksiyon prototipinin fonksiyon adını ve parametre tiplerini içeren bir parçası. • Fonksiyonun geriye dönüş tipini belirtmez. • Aynı kapsama alanındaki fonksiyonlar farklı imzaya sahip olmalıdırlar. • Bir fonksiyonun kapsama alanı, programın fonksiyonun tanıtıldığı ve fonksiyona ulaşılabilen bölgesidir.

  14. 6.5 Fonksiyon prototipleri ve Parametre Zorlaması(devamı) • Parametre Zorlaması • Parametre olarak verilen değerlerin, parametre tipine uygun olmasına zorlanması. • Örneğin, parametre tipi double olan bir fonksiyonunun bir int (tamsayı) ile çağrılması • Buna rağmen , fonksiyon doğru çalışacaktır.

  15. 6.5 Fonksiyon prototipleri ve Parametre Zorlaması(devamı) • C++ Tip değiştirme kuralları • Tipler arası değişimin veri kaybına uğramadan nasıl yapılacağını gösterir. • İki veya daha çok veri tipine sahip değerler içeren ifadelere uygulanır. • Bu tip ifadelere karışık-tipli ifadeler de denir. • İfadedeki her değer, ifadenin içindeki “en-yüksek” tipe yükseltilir. • İfadedeki her değer için geçici bir değer oluşturulur ve kullanılır. • Orjinal değerler değişmeden kalırlar.

  16. 6.5 Fonksiyon prototipleri ve Parametre Zorlaması(devamı) • C++ Tip değiştirme kuralları (Devamı) • Tip değişimi , fonksiyona gönderilen değerin tipi ile fonksiyonun parametre tipi farklı olduğunda da oluşur. • Tip değişimi, gönderilen değer parametre değişkene direkt olarak atanıyormuş gibi olur. • Bir değeri daha küçük bir veri tipine çevirme. Örn : long int  int • Büyük ihtimalle veri kaybına yada yanlış sonuçlara yol açacaktır. • Ancak açıkça belirtilerek yapılabilir. • Bir değeri daha küçük bir veri tipindeki değişkene atayarak. (Bazı derleyiciler bu durumda uyarı vereceklerdir.) yada • Cast (Dönüşüm) operatörü kullanılarak.

  17. Fig. 6.6| Temel veri tipleri için yükselme hiyerarşisi.

  18. 6.6 C++ Standart kütüphane öncü dosyaları • C++ Standart kütüphane öncü dosyaları • Herbiri Standart kütüphanenin bir bölümünü içerir. • İlgili fonksiyonların prototipleri. • Çeşitli sınıf tipleri ve fonksiyon tanımlamaları. • Bu fonksiyonlar tarafından kullanılan sabitler. • Derleyiciye, kütüphane ve kullanıcı-tanımlı bileşenler arasında arabirimi nasıl sağlayacağına dair “komut” verin. • .h dosya uzantısına sahip öncü dosyalar. • Eski tip öncü dosyalar. • C++ Standart Kütüphanesinin öncü dosyaları ile tarih oldular.

  19. Fig. 6.7| C++ Standart Kütüphanesi Öncü Dosyaları. (1.Bölüm)

  20. Fig. 6.7| C++ Standart Kütüphanesi Öncü Dosyaları. (2.Bölüm)

  21. Fig. 6.7| C++ Standart Kütüphanesi Öncü Dosyaları. (3.Bölüm)

  22. Fig. 6.7| C++ Standart Kütüphanesi Öncü Dosyaları. (4.Bölüm)

  23. 6.7 Çalışma: Rastgele Sayı Üretme • C++ StandartKütüphane Fonksiyonu :rand • Rastgele sayı üretmek için kullanılır. • Örn: • i = rand(); • 0 ile RAND_MAX arasında işaretsiz bir tamsayı üretir. (RAND MAX: <cstdlib>öncü dosyasında tanımlanmış olan sembolik sabittir.) • Rand fonksiyonunun prototipi <cstdlib>içerisindedir.

  24. 6.7 Çalışma: Rastgele Sayı Üretme(Devamı) • Belirli bir aralıkta tamsayı üretmek için rand ile birlikte mod (%) operatörünü kullanın. • Örnek • rand() % 6; • 0 ile 5 arasında sayı üretir.(5 Dahil) • Bu işlem ölçeklendirme olarak adlandırılır, burada ölçeklendirme birimi 6 dır. • +1 eklenirse sayı aralığı bir sağa kaydırılarak 1ile 6 arası haline getirilir. • 1 + rand() % 6;

  25. Outline fig06_08.cpp (1 of 2) #includeveusing : rand fonksiyonunu kullanabilmek için rand fonksiyonunun çağrılması.

  26. Outline fig06_08.cpp (2 of 2)

  27. Outline fig06_09.cpp (1 of 3) Rand fonksiyonu tarafından üretilen sayının kaydırılması ve ölçeklendirilmesi.

  28. Outline fig06_09.cpp (2 of 3)

  29. Outline fig06_09.cpp (3 of 3) Her sayı yaklaşık olarak 1,000,000 kere gelir.

  30. 6.7 Çalışma: Rastgele Sayı Üretme(devamı) • rand Fonksiyonu • Pseudorandom (aslında rastgele olmayan)sayılar üretir. • Program her çalıştırıldığında üretilen sayılar aynı kalır. • Rastgeleleştirme (Randomizing ) • Programın her çalıştırıldığında farklı sayılar üretmesini sağlar. • C++ Standart Kütüphane Fonksiyonusrand • Parametre olarak bir işaretsiz tamsayı değeri alır. • Bu sayı rand fonksiyonuna farklı rastgele sayılar üretmesi için bir kaynak olarak verilir.

  31. Outline fig06_10.cpp (1 of 2) srandfonksiyonu içinusingifadesi unsigned tipi unsigned int ‘in kısaltılmış halidir. Programın her seferinde farklı rastgele sayılar üretmesi için kaynak değeri srand fonksiyonuna verilir.

  32. Outline fig06_10.cpp (2 of 2) Program çıktısı her farklı kaynak değeri için farklı rastgele sayılar üretildiğini gösteriyor.

  33. 6.7 Çalışma: Rastgele Sayı Üretme(devamı) • Her seferinde farklı kaynak değerini el ile girme zorunluğu olmadan farklı rastgele sayıların üretilmesi. • srand( time( 0 ) ); • Bu ifade bilgisayarın kendi saatini okuyarak elde ettiği sayının kaynak olarak verilmesini sağlar. • Time Fonksiyonu (0 argümanı ile) • Greenwich Mean Time(GMT) ‘a göre 1 Ocak 1970, saat 00:00 tarihinden o ana kadar geçen saniye sayısını döndürür. • time fonksiyonunun prototipi <ctime> öncü dosyası içerisindedir.

  34. 6.7 Çalışma: Rastgele Sayı Üretme(devamı) • Rastgele sayıların kaydırılması ve ölçeklendirilmesi. • İstenilen aralıkta bir rastgele sayı elde edebilmek için aşağıdaki yapıyı kullanın, sayı = kaydırmaDeğeri + rand() % ölçek; • kaydırmaDeğeri istenilen tamsayı aralığının başlangıç sayısıdır. • ölçekistenilen tamsayı aralığının büyüklüğüdür. • Ya da istenilen tamsayı aralığındaki sayıların adedidir.

  35. 6.8 Çalışma: Şans Oyunu ve enum ‘un tanıtılması • Numaralandırma(Enumeration) • Tanımlayıcılar tarafından temsil edilen bir dizi tamsayı sabitidir. • Numaralandırma sabitleri –aksi belirtilmemiş ise- 0 dan başlar ve 1’er artar. • Enum daki tanımlayıcıların eşşiz olması gerekir.Fakat farkli enumlardaki sabitler aynı tamsayı değerini alabilir. • Numaralandırmanın kullanımı • enumanahtar kelimesi • Bir tip adı • Küme parantezleri içerisinde virgüller ile ayrılmış tanımlayıcılar listesi. • Örnek • enum Aylar { OCAK, SUBAT, MART, NISAN };

  36. Outline fig06_11.cpp (1 of 4) timefonksiyonu için#includeveusing Oyun durumunu izlemek için numaralandırma. Kullanıcı-tanımlı numaralandırma tipinde bir değişken tanımlama. Rastgele sayı üretecisine o anın kaynak olarak verilmesi.

  37. Outline fig06_11.cpp (2 of 4) Bir numaralandırma sabitinin oyunDurumu ‘na atanması. Enum tipindeki bir değişkenin bir numaralandırma sabiti ile karşılaştırılması.

  38. Outline fig06_11.cpp (3 of 4) Zar atma görevini yerine getiren fonksiyon.

  39. Outline fig06_11.cpp (4 of 4)

  40. 6.9 Bellek sınıfları (Devam) • İki çeşit statik bellek tanımlayıcısı vardır • Dış tanımlayıcılar • Bütün global değişkenler ve fonksiyon adları gibi • Statik bellek sınıfı olarak tanımlanmış yerel değişkenler • Global değişkenler • Sınıf veya fonksiyon tanımlamalarının dışında tanımlanan değişkenler • Program çalıştığı sürece değerlerini korurlar. • Fonksiyon bildirimleri ve kaynak dosya tanımlamalarında referans olarak kullanılabilirler.

  41. 6.9 Bellek sınıfları (Devam) • Statik yerel değişkenler • Sadece tanımlandıkları fonksiyon içinde kullanılırlar. • Fonksiyonun çağırıldığı noktaya dönüldüğünde değerlerini korurlar • Fonksiyon tekrar çağırıldığında, statik yerel değişken fonksiyonun en son çağırıldığındaki aldığı değeri taşır. • Statik bellek sınıfına ait sayısal değişkenler programcı tarafından bir değer atanmadıysa • O değişkenlere sıfır değeri atanır.

  42. 6.10 Kapsam kuralları • Kapsam • Bir programın tanımlayıcı kısmı • Bir tanımlayıcı için dört kapsam vardır. • Fonksiyon kapsamı • Dosya kapsamı • Blok kapsamı • Fonksiyon-prototip kapsamı

  43. 6.10 Alan kuralları (Devam) • Dosya kapsamı • Fonksiyon ve sınıf dışındaki tanımlayıcılar için • Bildirildiği noktadan dosya sonuna kadar,bütün fonksiyonlarca kullanılan tanımlayıcılar gibi • Global değişkenler,fonksiyon tanımlamaları ve fonksiyon prototipleri ,dosya kapsamına sahip fonksiyonların dışında yer alırlar. • Fonksiyon kapsamı • Etiketler (Sonu iki nokta üst üste ile biten tanımlayıcılar.start: gibi) sadece fonksiyon kapsamını tanımlar. • Fonksiyonların herhangi bir yerinde kullanılabilirler • Fonksiyon bünyesinin dışından referans edilemezler. • Etiketler, fonksiyonların birbirinden sakladıkları yürütmekte oldukları detaylardır.

  44. 6.10 kapsam kuralları (Devam) • Blok kapsamı • Bir blok kapsamına sahip blok içerisinde bildirilen tanımlayıcılar • Blok kapsamı tanımlayıcı bildirimiyle başlar. • Tanımlayıcının bildirildiği blokkapsamı (}) işareti ile sona erer. • Yerel değişkenler ve fonksiyon parametreleri blok kapsamına sahiptirler. • Fonksiyon bünyesi onların kütüğüdür. • Her blok değişken parametreleri içerebilir. • blok kapsamı dışındaki tanımlayıcılar,blok kapsamı içerisindeki tanımlayıcılarla aynı isme sahip olduklarında gizlenebilirler. • Programın çalışmaya başlamasından beri var olsalar bile yerel değişkenler blok kapsamına sahip statik olarak tanımlanırlar. • Bellek süresi tanımlayıcı kapsamını etkilemez

  45. 6.10 kapsam kuralları (Devam) • Fonksiyon-prototip kapsamı • Fonksiyon-prototip parametre listesinde sadece tanımlayıcılar kullanılır • Fonksiyon-prototipinde yer kapsam parametre isimleri derleyici tarafından dikkate alınmazlar. • Fonksiyon-prototip’de kullanılan tanımlayıcılar programın herhangi bir yerinde tekrardan kullanılabilir. • Bununla beraber, tek bir prototipte, özel bir tanımlayıcı yalnız bir kez kullanılır.

  46. Outline fig06_12.cpp (1 of 4) Tüm sınıf ve fonksiyonların dışında genel değişken tanımlanması genel değişken x ‘i gizleyen yerel x degiskeni Blok icindeki x yerel degiskeni, kendisinden daha dis kapsamdaki x’in etkisini yok eder.

  47. Outline fig06_12.cpp (2 of 4) yerelKullan fonksiyonu her cagrildiginda tekrar olusturulup ilk degeri verilen yerel degisken.

More Related