Bilgisayar Programlama
Ders 5
Dr. Fatih AY
Tel: 0 388 225 22 55
[email protected]
www.fatihay.net
Fonksiyonlar
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
 Büyük programlar geliştirmenin en iyi yolu, onu orijinal
programdan daha kolay idare edilebilir küçük program
modüllerine bölmektir. Modüller C’ de fonksiyon olarak
yazılırlar.
 C programları, genellikle programcının yazacağı yeni
fonksiyonlarla, daha önceden C standart kütüphanesi içinde
tanımlanmış fonksiyonların birleştirilmesi ile yazılır.
 C kütüphaneleri genel matematik işlemleri, karakter
işlemleri, giriş/çıkış işlemleri ve diğer birçok önemli işlemi
yerine getiren birçok fonksiyonu içermektedir.
2
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
 Programları daha hızlı ve daha kolay yapmak amacıyla ANSI C
standart kütüphanesi içerisindeki fonksiyonları incelemek
önemlidir.
 ANSI C kütüphanesindeki
taşınırlığı arttırmaktadır.
fonksiyonların
kullanılması
 Örn. printf, scanf, pow fonksiyonları gibi fonksiyonlar
standart kütüphane fonksiyonlarıdır.
3
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
 Fonksiyonlar, fonksiyon çağrıları sayesinde çağırılırlar.
Fonksiyon çağırmak demek fonksiyonu kullanmamız gerektiği
anda onu programa dahil etmek demektir.
 Fonksiyon çağrıları, fonksiyonun ismini ve fonksiyonun
görevlerini yerine getirebilmesi için gerekli olan bilgileri
(argümanlar olarak) içerir.
4
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
 Patron işçiye görev verir ve işin sonunda kendisine rapor
verilmesini ister.
 Patron işçinin görevini nasıl yerine getirdiğini bilmez.
 Uygulama detayları gizlenebildiği için yazılım mühendisliği
kolaylaşır.
Alıştırmalar
main
işçi 1
işçi 4
işçi 2
işçi 3
işçi 5
5
Matematik Kütüphanesi Fonksiyonları
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
argüman listesi
(bağımsız değişkenler)
fonksiyonun ismi
 Fonksiyon Tanımları
Alıştırmalar
printf (“%.2f ”, sqrt(900.0));
Matematik kütüphanesi
fonksiyonunu
math.h
#include<math.h>
6
Fonksiyon
Tanım
Örnek
 Fonksiyonlar
sqrt(x)
x‘in karekökü
sqrt(900.0) 30.0 değerini verir
sqrt(9.0) 3.0 değerini verir
 Matematik Kütüphanesi
Fonksiyonları
exp(x)
ex üstel fonksiyon
exp(1.0) 2.718252 değerini verir
exp(2.0) 7.389056 değerini verir
 Fonksiyon Tanımları
log(x)
x‘in e tabanına göre
logaritması
log(7.389056) 2.0 değerini verir
log(2.718252 ) 1.0 değerini verir
log10(x)
x‘in 10 tabanına göre
logaritması
log10(1.0) 0.0 değerini verir
log10(10.0) 1.0 değerini verir
log10(100.0) 2.0 değerini verir
fabs(x)
x’in mutlak değeri
x>0 ise x değerini verir
x=0 ise 0.0 değerinin verir
x<0 ise –x değerini verir
ceil (x)
x’i kendinden sonraki
ilk tamsayıya atar
ceil(9.2) 10.0 değerini verir
ceil(-9.8) -9.0 değerini verir
Alıştırmalar
7
Fonksiyon
Tanım
Örnek
 Fonksiyonlar
floor(x)
x’i kendinden küçük ilk
tamsayıya atar
floor(9.2) 9.0 değerini verir
floor(-9.8) -10.0 değerini verir
 Matematik Kütüphanesi
Fonksiyonları
pow(x,y)
xy , x üzeri y
pow(2,7) 128.0 değerini verir
pow(9,0.5) 3.0 değerini verir
 Fonksiyon Tanımları
fmod(x,y)
x/y işleminin kalanını
bulur
Fmod(13.657, 2.333) 1.992 değerini
verir
sin(x)
x‘in sinüsünü hesaplar
(x radyan)
sin(0.0) 0.0 değerini verir
cos(x)
x‘in kosinüsünü
hesaplar (x radyan)
cos(0.0) 1.0 değerini verir
tan(x)
x‘in tanjantını hesaplar
(x radyan)
tan(0.0) 0.0 değerini verir
Alıştırmalar
8
Fonksiyon Tanımları
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
main fonksiyonu şu ana kadar yapılan standart kütüphane
işlemlerini yaptırmak için kullanılıyordu.
Alıştırmalar
Kendi fonksiyonumuzu oluşturalım

9
10
Birden ona kadar olan tam sayıların karesini alan kare
fonksiyonunu kullanan program tanımlanmıştır.
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
kare fonksiyonu, main altındaki printf ifadesi içinden
çağırılmıştır.
printf (“%d”, kare(x));
kare fonksiyonu, x değerinin kopyasını y parametresi
sayesinde alır. Daha sonra y*y hesabını yapar. Sonuç, main
içindeki printf fonksiyonuna döndürülür ve printf sonucu
yazdırır.
Bu süreç, for sayesinde 10 kez tekrarlanır.
11
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
kare fonksiyonunun tanımı, kare’nin bir y tamsayısı
beklediğini gösterir. Fonksiyon isminden önceki int anahtar
kelimesi, kare’nin sonucunun yine bir tamsayı olarak
döndürüleceğini gösterir.
kare içindeki return ifadesi hesaplamanın sonucunu çağırıcı
fonksiyona döndürür.
int kare (int);
fonksiyon prototipdir. Parantezin içindeki int, derleyiciye kare
fonksiyonunun çağırıcı fonksiyondan bir tamsayı beklediğini
bildirir. Fonksiyon isminin solundaki int ise derleyiciye, kare
fonksiyonunun kendini çağıran bir fonksiyona bir tamsayı
sonucu döndüreceğini bildirir.
12
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
Derleyici, kare fonksiyonu çağırıldığında fonksiyonun ilk
hali(prototipi) ile karşılaştırma yaparak, çağrının doğru tipte
dönüş değerine sahip oluşunu, doğru sayıda argüman ve
doğru argüman tipleri kullanmasını ve argümanların doğru
sırada oluşlarını kontrol eder.
 Fonksiyon Tanımları
Alıştırmalar
geri dönüş tipi fonksiyonun ismi (parametre listesi)
{
bildirimler
ifadeler
}
13
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
Parametre listesi, fonksiyon çağırıldığında fonksiyonun
alacağı parametrelerin bildirimlerini içeren, virgüllerle
ayrılmış bir listedir. Eğer fonksiyon bir herhangi bir değer
almıyorsa parametre listesi void olur. Her parametre için
(eğer tipi int değilse) parametre tipi ayrı ayrı belirtilmelidir.
Eğer tip belirtilmezse int olarak algılanacaktır.
 Fonksiyon Tanımları
Alıştırmalar
geri dönüş tipi fonksiyonun ismi (parametre listesi)
{
bildirimler
ifadeler
}
14
15
sqrt fonksiyonu
double olarak
belirlenmiştir!!
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
ALIŞTIRMALAR
1. 25 sayısının karekökünü hesaplatan kodu yazınız.
printf("%.1f",sqrt(25));
2. e sayısının 4. kuvvetini bulan kodu yazınız.
printf("%.3f",exp(4));
3. ln(3.4743) değerini hesaplatan kodu yazınız.
printf("%.3f",log(3.4743));
4. log (1453) değerini hesaplatan kodu yazınız.
printf("%.3f",log10(1453));
5. -43.2 ve 67.45 sayılarının mutlak değerlerini tek
duyarlılıkla yazdıran kodu yazınız.
printf("%.3f",fabs(-43.2));
6. -5.3 sayısını -5 çıkartan kodu yazdırınız.
printf("%.3f",ceil(-5.3));
7. -5.3 sayısını -6 çıkartan kodu yazınız.
printf("%.3f",floor(-5.3));
16
ALIŞTIRMALAR
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
8. 54.34 sayısının değerini hesaplayan kodu yazınız.
printf("%.3f",pow(5,4.34));
9. sin(30) değerini hesaplayan kodu yazınız.
printf("%.3f",sin(30));
10. cos(30) değerini hesaplayan kodu yazınız.
printf("%.3f",cos(30));
11. tan(30) değerini hesaplayan kodu yazınız.
printf("%.3f“,tan(30));
12. printf("%.2f",ceil(-7.65)); komutunun çıktısı ne olur?
-7.00
13. printf("%.2f",floor(-9.63)); komutunun çıktısı ne olur?
-10.00
17
 Döngüler
 break ve continue
 Mantık Operatörleri
Eşitlik ve Atama
Operatörleri
 Örnekler ve Ödevler
Ödev 1: Kullanıcıdan alınan sayıların faktöriyelini hesaplayan ve
bunları yazdıran bir program yapınız.
18
19
Örnek: Aşağıdaki deseni ekrana çizdiren bir program yazınız.
 Döngüler
 break ve continue
 Mantık Operatörleri
Eşitlik ve Atama
Operatörleri
 Örnekler ve Ödevler
20
21
Ödev 2: Aşağıdaki deseni ekrana çizdiren bir program yazınız.
 Döngüler
 break ve continue
 Mantık Operatörleri
Eşitlik ve Atama
Operatörleri
 Örnekler ve Ödevler
22
Örnek: Aşağıdaki program parçacığı ne yapar?
23
24
Ödev 3: Bir firma müşterilerine 5 çeşit ürün satmaktadır. Bu
ürünlerin perakende fiyatları aşağıdadır.
 Döngüler
 break ve continue
 Mantık Operatörleri
Eşitlik ve Atama
Operatörleri
 Örnekler ve Ödevler
Ürün
No
Perakende
Fiyatı
1
250 TL
2
375 TL
3
432 TL
4
490 TL
5
515 TL
1. Ürün numarası
2. Bir günde yapılan satış miktarı
özelliklerini kullanıcıdan alan ve switch yapısını kullanarak her ürünün
toplam perakende fiyatını ve satış yapılan bütün ürünlerin toplam
perakende fiyatını hesaplayan ve ekrana yazdıran bir program
25
yazdırın.
 Fonksiyonlar
 Matematik Kütüphanesi
Fonksiyonları
 Fonksiyon Tanımları
Alıştırmalar
5. DERSİN SONU
26
Download

Ders 5 (01.04.2015) - Yrd.Doç.Dr.Fatih AY