Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri

Slides:



Advertisements
Benzer bir sunumlar
Nesneye Yönelik Programlama
Advertisements

Fonksiyonlar - Functions
Fonksiyonlar.
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Makine Müh. & Jeoloji Müh.
EKRAN ÇIKTISI.
Değişkenler ve bellek Değişkenler
Göstericiler (Pointers)
Zeynep Çelik Sunar….
Bölüm 2 C Dilinin Temelleri
Altprogramların Uygulanması
Değişken Bildirimleri
Atama ve Girdi/Çıktı Komutları
Bölüm 6 – Metodlar ve Parametreler
4 Kontrol Yapıları: 1.Bölüm.
Metodlar ve Parametreler
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
Bölüm 3 – Yapısal Programlama
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
NESNEYE YÖNELİK PROGRAMLAMA
Fonksiyonlar.
NESNE TABANLI PROGRAMLAMA -METOTLAR-
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
C ile Programlamaya Giriş
Metotlar.
FONKSİYONLAR.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Gelişmiş Envanter Uygulaması.
 2006 Pearson Education, Inc. All rights reserved Kontrol İfadeleri: 2. Bölüm.
© 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
Chapter 8: Advanced Method Concepts
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bölüm 10 - Yapılar, Birlikler, Bit İşleme ve Sayma.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bu derste şunları öğreneceğiz: –CheckBox es kullanımı.
Bölüm 6 - Diziler indeks 6.1 Giriş 6.2 Diziler
Bölüm 7 - Göstericiler İndeks 7.1 Giriş
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Bilgisayar Programlama
Bölüm 4 – C’de Program Kontrolü
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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bölüm 6 - Diziler indeks 6.1Giriş 6.2Diziler 6.3Dizilerin.
Bölüm 8 - Karakterler ve Dizgiler
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar 2.1Giriş.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Faiz Hesaplama Uygulaması Amaçlar Bu derste öğrenilecekler:
© 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.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Tutorial 9 – Araba Ödeme Hesaplaması Uygulaması Bu.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
Görsel C# ile Windows Programlama
1 Yapılandırılmamış programlama Prosedür/Fonksiyon gerekliliği Prosedural Programlama Fonksiyon Tanımlama/Prototip/Çağırma Örnek fonksiyonlar Fonksiyon.
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
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.
Fonksiyonlar.
1 Değişken alanları Geçici değişkenler Birleşik ifadeler(bloklar) ve değişkenler Değişken Depolama Süresi ve Alanı –Local ve global değişkenler –Static.
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Fonksiyonlar ve Diziler
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
C Programlama Dili Bilgisayar Mühendisliği.
C’de Fonsiyonlar Aslı Ergün.
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
Bilgisayar Bilimi Fonksiyonlar-2.
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri 5.3 Math Kütüphanesindeki Fonksiyonlar 5.4 Fonksiyonlar 5.5 Fonksiyon Tanımlamaları 5.6 Fonksiyon Prototipleri 5.7 Öncü (Header) Dosyalar 5.8 Fonksiyonları Çağırma: Değere Göre ve Referansa Göre çağırmak 5.9 Rastgele Sayılar Üretme 5.10 Örnek: Şans Oyunu 5.11 Depolama Sınıfları 5.12 Faaliyet Alanı Kuralları 5.13 Yineleme 5.14 Yineleme kullanımına örnek: Fibonacci Serisi 5.15 Yineleme vs. Tekrar

Bu bölümde öğreneceklerimiz: Amaçlar Bu bölümde öğreneceklerimiz: Fonksiyon adı verilen, küçük parçalarla modüler programların nasıl oluştuğunu anlamak.. C standart kütüphanesinde yaygın olarak kullanılan matematik fonksiyonlarını tanıma Yeni Fonksiyonlar oluşturabilme. Fonksiyonlar arası bilgi geçişi için kullanılan mekanizmaları(yöntemleri) anlama. Rastgele sayı üreterek simülasyon tekniklerini tanıma Kendi kendini çağıran fonksiyonları yazmak ve nasıl kullanılacaklarını anlamak.

Böl ve Zaptet (Parçalara ayırma (bölme) ve Bütün elde etme) 5.1 Giriş Böl ve Zaptet (Parçalara ayırma (bölme) ve Bütün elde etme) Çok küçük parçalardan veya bileşenlerden bir program oluşturma Bu çok küçük parçalar modüller olarak adlandırılır Her bir parça orijinal programa göre daha kolay yönetilebilir (programın bütününe göre)

5.2 C de Program Modülleri Fonksiyonlar Fonksiyon çağırma C de modüller Programlar kullanıcı tarafından tanımlanmış fonksiyonlar ile kütüphanedeki fonksiyonları birleştirir C’nin standart kütüphanesi fonksiyonların geniş türlerine sahiptir Fonksiyon çağırma Fonksiyon çağrıları Fonksiyon adı ve argümanları (Veri) tedarik eder Fonksiyon operasyonları veya işlemleri gerçekleştirir Fonksiyon sonucu döndürür. Fonksiyon çağırma analojisi Patron işçiye görevini tamamlamasını söyler (bitip bitmediğini sorar) İşçi bilgileri alır, görevini yapar ve sonucu patrona döndürür Bilgi gizlidir: Patron yapılan işin detaylarını bilmez

5.2 C de Program Modülleri Fig. 5.1 Patron/İşçi arasındaki hiyerarşik ilişki

5.3 Matematik Kütüphanesindeki Fonksiyonlar Math kütüphanesindeki fonksiyonlar Yaygın olarak kullanılan matematiksel hesaplamalar #include <math.h> Çağrılan Fonksiyonları biçimlendirme FonksiyonAdı( argüman ); Eğer çoklu argüman varsa listeleri virgül kullanarak ayır printf( "%.2f", sqrt( 900.0 ) ); Sqrt fonksiyonunu çağırır, girilen değerin karekök’ünü geriye döndürür. Bütün Matematik fonksiyonları verileri “double”olarak geri döndürür. Argümanlar sabit, değişken veya ifade olabilir.

5.3 Math. Kütüphanesinin Fonksiyonları

5.4 Fonksiyonlar Foksiyonlar Fonksiyonların yararları Programı modüler hale getirir. Yerel değişkenler, fonksiyonların içerisinde tanımlanır. Sadece tanımlandığı fonksiyon tarafından bilinir Parametreler Fonksiyonlar arasındaki bilgi alışverişi Yerel değişkenler Fonksiyonların yararları Bölme ve Zaptetme Yönetilebilir program geliştirme Yazılımı yeniden kullanabilme Varolan fonksiyonları yeni programlar için blok olarak inşa etme Soyutlama – içsel detayları gizleme (kütüphane fonksiyonları) Kodları tekrar yazmayı engelleme

Fonksiyon Tanımlama biçimleri 5.5 Fonksiyon Tanımları Fonksiyon Tanımlama biçimleri return-değer-tipi fonksiyon adı( parametre-listesi ) { bildirimler ve ifadeler } Fonksiyon adı: herhangi geçerli tanımlayıcı Veri tipi döndürme: sonucun veri tipi void – fonksiyonlar geriye değer döndürmez Parametre-listesi: parametreleri belirtilmiş, virgülle ayrılmış listedir Her parametrenin tipi belirtilmek zorundadır belirtilmezse int kabul edilir.

Fonksiyon Tanımlama biçimleri (devam) return-değer-tipi fonksiyon adı( parametere-listesi ) { bildirimler ve ifadeler } Bildirimler ve ifadeler: fonksiyonun gövdesi Değişkenler blokların içinde tanımlanabilir (kısıtlanabilir) Fonksiyonlar diğer fonksiyonların içinde tanımlanamaz. Geri dönüş kontrolu Eğer boş değer geri dönüyorsa (hiç bir değer dönmüyorsa) return; veya, sağ paranteze ulaşıncaya kadar Eğer bir değer geri dönüyorsa return ifade(geri dönecek değer);

fig05_03.c (Part 1 of 2)

fig05_03.c (Part 2 of 2) Program çıktısı 1 4 9 16 25 36 49 64 81 100

fig05_04.c (Part 1 of 2)

fig05_04.c (Part 2 of 2) Program çıktısı Uc sayi giriniz: 22 85 17 Maximum : 85 Uc sayi giriniz : 85 22 17 Uc sayi giriniz : 22 17 85

5.6 Fonksiyon Prototipleri Fonksiyon prototipi Fonksiyon adı Parametreler – fonksiyonun içinde tuttuğu değerler Return type – fonksiyonun veri dönüşü tipi (varsayılan int) Eğer fonksiyon tanımı programın içerisinde yer almazsa, prototipe ihtiyaç duyulur Prototip ile fonksiyonlar int maksimum( int x, int y, int z ); 3 integer sayı içerir int değeri döndürür Geçiş kuralları ve dönüşümler Kendinden küçük tiplere dönüşümler hata oluşturabilir.

5.6 Fonksiyon Prototipleri

5.7 Öncü (Header) Dosyalar Öncü Dosyalar Kütüphane fonksiyonları için fonksiyon prototipleri içerir <stdlib.h> , <math.h> , vs... Yükleme... #include <filename> #include <math.h> Öncü dosya düzenleme Fonksiyonlarla dosya oluşturma filename.h olarak kayıt etme. #include "filename.h“ ile başka dosyalara yükleme Fonksiyonları tekrar kullanma.

5.7 Öncü Dosyalar

5.8 Fonksiyon çağırma: Değere Göre ve Referansa Göre Argümanın kopyası fonksiyona gönderir. Kopyayı değiştirmek, orijinal değişkenin değerini etkilemez Fonksiyonun argüman’ı değiştirmeye ihtiyaç duymadığı zaman kullanılmalıdır. Önemli sorunların oluşmasını engeller Referansa göre Orijinal argümanı gönderir. Argümanı değiştirmek, orijinal değişkenin değerini etkiler Sadece güvenilir fonksiyonlar ile kullanılmalı Öncelikle, değere göre çağırma yöntemiyle örnekler yapılacak

5.9 Rasgele Sayılar Üretme rand fonksiyonu yükle <stdlib.h> 0 ve RAND_MAX (en az 32767) arasında sayı “random” geri döndürme. i = rand(); Pseudorandom (sözde rastgele) Öceden sırası belirlenmiş rastgele sayılar Her fonksiyon çağrılmasında aynı dizi tekrar eder. Derecelendirme (Scaling) 1 ile n arasında random sayı alma 1 + ( rand() % n ) rand() % n 0 ile n–1 arasında bir sayı döndürür 1 ile n arasında random sayıya 1 ekleme yapar. 1 + ( rand() % 6) 1 and 6 arasında sayı

fig05_07.c

6 6 5 5 6 5 1 1 5 3 6 6 2 4 2 6 2 3 4 1 Program çıktısı

fig05_08.c (Part 1 of 3)

fig05_08.c (Part 2 of 3)

fig05_08.c (Part 3 of 3) Program Çıktısı Face Frequency 1 1003 2 1017 3 983 4 994 5 1004 6 999

5.9 Rasgele Sayılar Üretme srand fonksiyonu (rastgeleselleştirme) <stdlib.h> Farklı bir sırada rasgele sayılar oluşturulmasını sağlar Unsigned(işaretsiz) tipte bir tamsayıyı argüman olarak kullanır srand( seed ); srand( time( NULL ) );/*yükle <time.h> */ time( NULL ) Program çalıştırıldığı sırada saatin saniye cinsinde oluşturur Çekirdeği rastgeleleştirir.

fig05_09.c (Part 1 of 2)

fig05_09.c (Part 2 of 2) Program Çıktısı Enter seed: 67 6 1 4 6 2 1 6 1 6 4 Enter seed: 867 2 4 6 1 6 1 1 3 6 2

Barbut(craps) similasyonu Kurallar 5.10 Örnek: Şans Oyunu Barbut(craps) similasyonu Kurallar İki zar atılır (toplamına bakılır) İlk atışta 7 veya 11 ise oyuncu kazanır. İlk atışta 2, 3, veya 12 ise oyuncu kaybeder. İlk atışta 4, 5, 6, 8, 9, 10 ise oyuncunun puanı olarak saklanır. Kazanmak için ilk atışta aldığı puanı, tekrar atması gerekir. Kendi puanını atmadan önce 7 gelirse kaybeder.

fig05_10.c (Part 1 of 4)

fig05_10.c (Part 2 of 4)

fig05_10.c (Part 3 of 4)

fig05_10.c (Part 4 of 4)

Program Çıktısı Atilan zarlar 5 + 6 = 11 Oyuncu kazandi Puaniniz 5 Atilan zarlar 6 + 2 = 8 Atilan zarlar 2 + 1 = 3 Atilan zarlar 3 + 2 = 5 Atilan zarlar 1 + 1 = 2 Oyuncu kaybetti Atilan zarlar 1 + 4 = 5 Atilan zarlar 3 + 4 = 7 Program Çıktısı

Depolama sınıfı belirteçleri 5.11 Depolama Sınıfları Depolama sınıfı belirteçleri Depolama süresi – objenin hafızada kalma süresi Faaliyet alanı – objenin programda referans edildiği yer Bağlama – objenin hangi kaynak dosyada geçerli olacağını belirler (dahası bölüm 14’de) Otomatik depolama Objeler bildirildikleri bloklar içerisinde oluşturulur ve yok edilir auto: yerel değişkenler için varsayılan auto double x, y; register: yerel deişkenleri yüksek hızdaki register’lara koymaya çalışır. Otomatik değişkenler için kullanılabilir register int counter = 1;

5.11 Depolama Sınıfları Statik Depolama Bütün programın işlenmesi esnasında varolan değişkenler static: fonksiyonun içinde tanımlanan yerel değişkenler Fonksiyondaki işlem bittikten sonra değerini saklar Sadece ait olduğu fonksiyon tarafından bilinir extern: global değişkenler ve fonksiyonlar için varsayılan Herhangi bir fonksiyon tarafından bilinir

5.12 Faaliyet Alanı Kuralları Dosya faaliyet alanı Fonksiyonun dışında tanımlanmış tanıtıcı tüm fonksiyonlar tarafında bilinir Global değişkenler, fonksiyon tanımları ve fonksiyon prototipleri için kullanılır Fonksiyon faaliyet alanı Fonksiyonun gövdesi içerisinde referans edilebilir Sadece etiketler için kullanılabilir (start:, case: , etc.)

5.12 Faaliyet alanı kuralları Blok faaliyet alanı Tanıtıcı bloğun içerisinde tanımlanır Blok faaliyet alanı tanımlamada başlar, küme parantezine(}) ulaşıldığında sona erer. Değişkenler, fonksiyon parametreleri, fonksiyonların yerel değişkenleri için kullanılır Dış bloktaki tanıtıcı iç bloktaki tanıtıcıyla aynı isme sahip ise, dış bloktaki tanıtıcı iç blok sona erene kadar saklanır Fonksiyon prototipi faaliyet alanı Parametre listesindekiler için kullanılır

fig05_12.c (Part 1 of 3)

fig05_12.c (Part 2 of 3)

fig05_12.c (Part 3 of 3)

Program Output main’deki ana blok değişkeni x= 5 iç bloktaki yerel x değişkeni 7   yerel() fonksiyonuna girerken x in değeri 25 yerel() fonksiyonundan cikmadan önce x’in değeri 26 statikYerel() fonksiyonuna girerken x=50 statikYerel() fonksiyonundan cikarken x=51 genel() fonksiyonuna girerken x=1 genel() fonksiyonuna cikarken x=10 statikYerel() fonksiyonuna girerken x=51 statikYerel() fonksiyonundan cikarken x=52 genel() fonksiyonuna girerken x=10 genel() fonksiyonuna cikarken x=100 main’deki yerel x=5 Program Output

Yineleme Fonksiyonları Kendi kendini çağıran fonksiyonlar Temel durumda çözülebilir Bir problemi parçalara ayırır Ne yapacağını bildiği parça Ne yapacağını bilmediği parça Ne yapacağını bilmediği parça orijinal probleme benzer Fonksiyon ne yapacağını bilmediği parçayı çözmek için kendisinin bir kopyasını başlatır. En sonunda temel durum çözülür Tıkalı yerleri yakalar, yukarı doğru çalışır ve bütün problemi çözer

5.13 Yineleme Örnek: faktoriyel Dikkat!!! 5! = 5 * 4 * 3 * 2 * 1 Dikkat!!! 5! = 5 * 4! 4! = 4 * 3! ... Faktoriyel yineleme ile de cözülebilir Temel durumu çöz (1! = 0! = 1) sonra yerine koy 2! = 2 * 1! = 2 * 1 = 2; 3! = 3 * 2! = 3 * 2 = 6;

5.13 Yineleme

fig05_14.c (Part 1 of 2)

fig05_14.c (Part 2 of 2) 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = 5040 8! = 40320 9! = 362880 10! = 3628800

5.14 Yineleme kullanımına örnek: Fibonacci Serisi Her sayı kendinden önceki iki sayının toplamıdır Yinelemeyle çözülebilir: fib( n ) = fib( n - 1 ) + fib( n – 2 ) fibonacci fonksiyonu için kod long fibonacci( long n ) { if (n == 0 || n == 1) // temel durum return n; else return fibonacci(n - 1) + fibonacci(n – 2); }  

5.14 Yineleme kullanımına örnek: Fibonacci Serisi Yineleme Setinin Fibonacci fonksiyonunu çağırması f( 3 ) f( 1 ) f( 2 ) f( 0 ) return 1 return 0 return +  

fig05_15.c (Part 1 of 2)

fig05_15.c (Part 2 of 2) Program Output Bir sayi giriniz: 0 Fibonacci( 0 ) = 0 Bir sayi giriniz: 1 Fibonacci( 1 ) = 1 Bir sayi giriniz: 2 Fibonacci( 2 ) = 1 Bir sayi giriniz: 3 Fibonacci( 3 ) = 2 Bir sayi giriniz: 4 Fibonacci( 4 ) = 3

Program Output (continued) Bir sayi giriniz: 5 Fibonacci( 5 ) = 5 Bir sayi giriniz: 6 Fibonacci( 6 ) = 8 Bir sayi giriniz: 10 Fibonacci( 10 ) = 55 Bir sayi giriniz: 20 Fibonacci( 20 ) = 6765 Bir sayi giriniz: 30 Fibonacci( 30 ) = 832040 Bir sayi giriniz: 35 Fibonacci( 35 ) = 9227465 Program Output (continued)

5.14 Yineleme kullanımına örnek: Fibonacci Serisi

Her ikisi de sonsuz döngüye sahip olabilir Denge 5.15 Yineleme vs. Tekrar Tekrarlama Tekrar : döngü yapısı Yineleme: tekrarlı fonksiyon çağırır Sınır Tekrar: döngü koşul şartı yanlış oluncaya.. Yineleme: temel durum gerektirir Her ikisi de sonsuz döngüye sahip olabilir Denge İyi yazılım mühendisliği(yineleme) ve performans(tekrar) arasında seçim yapmak…

5.15 Yineleme vs. Tekrar