bilgisayar programlama 1hbahtiyar/dersler/icerik/cplusplus-ders10.pdf · bilgisayar programlama 1...

42
Bilgisayar Programlama 1 DERS 10: FONKSİYONLAR DR. HÜSEYİN BAHTİYAR 1

Upload: others

Post on 27-Oct-2019

22 views

Category:

Documents


0 download

TRANSCRIPT

Bilgisayar Programlama 1

DERS 10: FONKSİYONLAR DR. HÜSEYİN BAHTİYAR

1

❖ Program yazarken bir takım işlemleri tekrar tekrar yapmamız gerektiği durumlarla karşılaşırız.

❖ Bu gibi durumlarda aynı işlemi yapacak fonksiyonlar yazarak, işimizi kolaylaştırırız.

❖ C++ da kendi fonksiyonumuzu tanımlarken, fonksiyonun döndürdüğü değişken tipine göre tanımlama yaparız.

❖ Dönüş değeri olmayan fonksiyonları ise void olarak tanımlarız.

Kaydedilen (ve tekrar kullanılan) adımlar

Fonksiyonların tanımlanması

değişken fonksiyon_adı ( parametreler ){

return dönüş_değeri;}

void fonksiyon (int sayi) {......yapılacak işlemler......}

int fonksiyon (int sayi) {......yapılacak işlemler......return sonuc;}

Fonksiyonların tanımlanması

int fonksiyon (int sayi) {......yapılacak işlemler......return sonuc;}

Dönüş türü int olacakParametre -> Fonksiyonu tanımlarken tanımladık.

Fonksiyonun sonucunda dönecek değer Başlangıçta tanımladığımız gibi int dönecek.

Parametre - Argüman Kavramları

❖ Fonksiyon tanımlanırken, yazılan değişkenlere parametre adı verilir.

❖ Fonksiyon çağrılırken gönderilen değere argüman denir.

Fonksiyonların tanımlanması❖ Fonksiyon tanımlanması iki şekilde yapılabilir:

❖ Ana Programdan Önce:...int topla (int X, int Y){ ...}...int main ( ){ ...}

Fonksiyonların tanımlanması❖ Fonksiyon tanımlanması iki şekilde yapılabilir:

❖ Ana Programdan Önce:

❖ Ana Programdan Sonra:

...int topla (int X, int Y){ ...}...int main ( ){ ...}

...int topla (int, int);...main ( ){ ...}...int topla (int X, int Y)

Return komutu

❖ return komutunun iki önemli işlevi vardır.

❖ Eğer fonksiyon void olarak tanımlanmadıysa fonksiyonun geri dönüş değerini döndürür.

❖ Fonksiyonu bitirir.

Örnek: Toplama yapan fonksiyon❖ Örnek olarak iki tamsayı değerini alıp toplama işlemi

yapan ve sonucu döndüren fonksiyon yazalım.

Örnek: Toplama yapan fonksiyon❖ Örnek olarak iki tamsayı değerini alıp toplama işlemi

yapan ve sonucu döndüren fonksiyon yazalım.

topla fonksiyonu int değeri döndürecek

sayi_1 ve sayi_2 parametrelerini kullanacak

Örnek: Toplama yapan fonksiyon❖ Örnek olarak iki tamsayı değerini alıp toplama işlemi

yapan ve sonucu döndüren fonksiyon yazalım.

toplama işlemini yaptık

Örnek: Toplama yapan fonksiyon❖ Örnek olarak iki tamsayı değerini alıp toplama işlemi

yapan ve sonucu döndüren fonksiyon yazalım.

sonucu döndürdük

Örnek: Toplama yapan fonksiyon❖ Örnek olarak iki tamsayı değerini alıp toplama işlemi

yapan ve sonucu döndüren fonksiyon yazalım.

sonucu döndürdük

Örnek: Toplama yapan fonksiyon❖ Örnek olarak iki tamsayı değerini alıp toplama işlemi

yapan ve sonucu döndüren fonksiyon yazalım.

Derleyip Çalıştıralım? Neler oldu??

❖ Fonksiyonumuza argüman gönderelim ve sonucunu ekrana yazdıralım.

Örnek: Toplama yapan fonksiyon

❖ Fonksiyonumuza argüman gönderelim ve sonucunu ekrana yazdıralım.

Örnek: Toplama yapan fonksiyon

❖ Fonksiyonumuzdaki değişkenler ile global değişkenlerin tanım aralıklarını inceleyelim

Örnek: Toplama yapan fonksiyon

main() içerisinde tanımlı

❖ Fonksiyonumuzdaki değişkenler ile global değişkenlerin tanım aralıklarını inceleyelim

Örnek: Toplama yapan fonksiyon

topla() içerisinde tanımlı

Örnek void fonksiyonu❖ Her çağırdığımızda ekrana nasilsin? yazdıracak

fonksiyonu tanımlayalım.

Örnek void fonksiyonu❖ Her çağırdığımızda ekrana nasilsin? yazdıracak

fonksiyonu tanımlayalım.Dönüş değeri yok o yüzden void

olarak tanımladık

Örnek void fonksiyonu❖ Her çağırdığımızda ekrana nasilsin? yazdıracak

fonksiyonu tanımlayalım.Dönüş değeri yok o yüzden void

olarak tanımladık

ekrana nasilsin yazdı

Örnek void fonksiyonu❖ Her çağırdığımızda ekrana nasilsin? yazdıracak

fonksiyonu tanımlayalım.Dönüş değeri yok o yüzden void

olarak tanımladık

ekrana nasilsin yazdı

Fonksiyonu sonlandırdık.

❖ main kısmını yazalım

Örnek void fonksiyonu

❖ main kısmını yazalım

Örnek void fonksiyonu

Merhabanasilsin nasilsin

gule gule

Örnek Celcius to Fahrenheit❖ 3. Dersimizde yazdığımız Cel->Fah programını,

fonksiyon ile yazmaya çalışalım?

❖ Santigrad derece cinsinden verilmiş bir sıcaklığı Fahrenheit birimine çevirmek istediğimizde bu sayıyı 1.8 ile çarptıktan sonra 32 eklememiz gerekmektedir.

❖ Formülümüz: F = C * 1.8 +32.00

❖ C++’da klavyeden girilen bir sıcaklığı Fahrenheit cinsine çeviren program yazınız.

Örnek Celcius to Fahrenheit

Örnek Celcius to FahrenheitFonksiyonu tanımladım double celcius parametresi ile işlem

yapacak sonucu double döndürecek.

Özyineli Fonksiyonlar❖ Bazı özel durumlarda fonksiyonların kendini tekrar çağırıp aynı işlemi

tekrar yapmasını sağlamak isteriz.

❖ Bu şekilde yazılan fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir.

❖ Özyineli fonksiyon yazarken dikkat etmemiz gereken birkaç önemli özellik vardır.

❖ Başlangıç değeri.

❖ Bitiş değeri

❖ Adım sayısı

❖ Yukarıdaki kurallara dikkat ederek tanımlamazsak, fonksiyonumuz yanlış çalışabilir.

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.

sayi parametresini aldı

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.

1 den büyük mü kontrol etti

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.

büyükse sayi ile çarptı ve sayi-1 hesaplaması için faktoriyel fonksiyonunu tekrar çağırdı.

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.

değilse 1 döndürdü 0! =11! = 1

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.5 için düşünelim

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.5 için düşünelim

5 * faktoriyel(4)

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.5 için düşünelim

5 * faktoriyel(4)

5 *4 * faktoriyel(3)

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.5 için düşünelim

5 * faktoriyel(4)

5 *4 * faktoriyel(3)

5 *4 *3* faktoriyel(2)

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.5 için düşünelim

5 * faktoriyel(4)

5 *4 * faktoriyel(3)

5 *4 *3* faktoriyel(2)

5 *4 *3* 2* faktoriyel(1)

Özyineli Fonksiyonlar❖ Özyineli fonksiyon yapısını kullanarak faktoriyel

fonksiyonu yazalım.5 için düşünelim

5 * faktoriyel(4)

5 *4 * faktoriyel(3)

5 *4 *3* faktoriyel(2)

5 *4 *3* 2* faktoriyel(1)

5 *4 *3* 2*1

Örnek-Ödev❖ hacim isimli bir fonksiyonumuz olsun

❖ Fonksiyonumuz double alıp double döndürsün klavyeden girilen değerleri alıp,

❖ Numarasının son iki rakamı 1-10 arası olan öğrenciler KÜRENİN HACMİNİ V=4/3 pi r^3

❖ Numarasının son iki rakamı 11-20 arası olan öğrenciler SİLİNDİRİN HACMİNİ V = pi r^2 h

❖ hesaplayıp ekrana sonucu yazdıran program yazsın.

Kaynaklar!http://www.cplusplus.com/doc/tutorial/ !www.py4e.com !C++ How to program (Deitel) !Ferhat Özok Bilgisayar Programlama I ders notları

42