You are on page 1of 40

FONKSİYONLAR

•HAZIR FONKSİYONLAR
•KULLANICI TANIMLI FONKSİYONLAR
•LOCAL , GLOBAL VE STATIC TANIMLI DEĞİŞKENLER VE FONKSİYONLARDAKİ
YERLERİ
•ÖZYİNELEMELİ-RECURSIVE FONKSİYONLAR
•ŞABLON(TEMPLATE) FONKSİYONLAR

1
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Büyük ölçekli yazılımları/programları tek bir parça olarak
geliştirmek hem zordur, hem de yazılım kalitesi açısından
sakıncalıdır. Tek bir parçadan kasıt, binlerce hatta, on
binlerce kod satırlık uzun bir yazılımı/programı sadece
tek bir işlev (main() işlevi vb.) olarak kodlamak anlamına
gelmektedir(bkz:spaghetti coding).

Bu kodlama yaklaşımı; programdaki hataların


yakalanabilmesini, takip edilebilirliğini, test edilebilirliğini
ve okunabilirliğini olumsuz etkileyen, yazılım geliştiriciler
açısından kaliteli bir ürün ortaya çıkmasını engelleyen
olumsuzluklardır.
2
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Yapısal Programlama yaklaşımı; programlama
probleminin tümünü ana problem olarak ele alıp, ana
problemi alt-problemlere bölmek ve bu alt-
problemleri ayrı ayrı çözerek problemin tamamını
çözümlemek anlayışının benimsendiği bir
programlama yöntemidir. Eğer bir alt-problem de
karmaşıksa, onu daha da küçük alt-problemlere
ayrılması, böylece ana problemin daha kolay
çözümlenmesi sağlanır.

3
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Bu yöntem aynı zamanda yukarıdan aşağı(top
down) problem çözme tekniği (diğer adıyla
böl&yönet/divide&conquer) olarak da bilinir.

4
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Yapısal programlama;
böl&yönet/divide&conquer problem çözme
yaklaşımına göre programlar geliştirmeyi
sağlar. Bu programlama sürecinde alt
problemlerden her biri, birer fonksiyon olarak
tasarlanır ve kodlanır.
Yapısal bir dil olarak C Programlama Dili,
fonksiyon olarak adlandırılan alt programların
birleştirilmesi(top down) kavramına dayanır.

5
FONKSİYON NEDİR?
Fonksiyon; belli sayıda giriş verisini kullanarak,
bunları işleyen ve bir sonuç üreten
komutlardan meydana gelen program
parçasıdır.

Fonksiyon olarak tanımlanan her bir program parçası,


alt problemlerden birini çözümlemek amacıyla
tasarlanan ve kodlanan birer alt programdır.

6
FONKSİYON NEDİR?
Her fonksiyonun bir adı ve fonksiyonun gelen
değerleri gösteren girdi parametreleri
(bağımsız değişkenleri) vardır.

7
FONKSİYON NEDİR?
• Fonksiyonların girdilerine parametreler yada
argumanlar denir.
• Bir fonksiyon girdi parametreleri alıp, bir
işleme tabi tutar ve bir sonuç elde eder. Bu
sonuca fonksiyonun çıktısı denilir. Bu çıktı
değeri geri dönüş değeri (return value) olarak
adlandırılır. Bir fonksiyonun kaç girişi olursa
olsun sadece bir çıkışı vardır.

8
FONKSİYON NEDİR?
• Aşağıda tek ve iki parametreli(girişli) iki
fonksiyonun gösterimi verilmiştir.
Tek parametreli
F(x)= sqrt(x) fonksiyonu:

İki parametreli

F(x,y) = fonksiyonu:

9
C PRG.DİLİ HAZIR FONKSİYON
KÜTÜPHANELERİ
• Bir C programı bir yada daha çok fonksiyonun
bir araya gelmesi ile oluşur. C Dilini öğrenmek
için ilk önce fonksiyon oluşturmayı ve onların
diğerleri ile birlikte kullanılmasını öğrenmek
gerekir. Aşağıda C prg. Dili hazır fonksiyon
kütüphanelerinin bazıları yer almaktadır:

10
C PRG.DİLİ HAZIR FONKSİYON
KÜTÜPHANELERİ
1. C DİLİNDE MATEMATİK FONKSİYONLARI
1.1. Üs – Kök – Logaritma Fonksiyonları
1.2. Trigonometrik Fonksiyonlar
1.3. Sayı Fonksiyonları

11
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• C programlama dilinde matematiksel
fonksiyonlar math.h kütüphane dosyasında
bulunurlar.
• Math kütüphanesinde tanımlı fonksiyonların
sayısı oldukça fazladır.

12
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI

13
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI

14
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI

15
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• sin() fonksiyonu : Verilen bir açının sinüs
değerini hesaplar.
• Genel tanımı double sin(double x) şeklinde,
örnek bir kullanımı ise y = sin(x); şeklindedir.
• Bu fonksiyonla ve diğer trigonometrik
fonksiyonlarla ilgili bilinmesi gereken önemli
nokta, fonksiyonların parametre olarak aldığı
açı değerinin derece cinsinden değil radyan
cinsinden verilmesi gerektiğidir.

16
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• cos() fonksiyonu : Bir trigonometri fonksiyonudur.
Radyan cinsinden verilen bir açının kosinüs
değerini hesaplar. Genel tanımı double
cos(double x) şeklinde, örnek bir kullanımı ise
y = cos(x); şeklindedir.
• tan() fonksiyonu : Bir trigonometri
fonksiyonudur. Radyan cinsinden verilen bir
açının tanjant değerini hesaplar. Genel tanımı
double tan(double x) şeklinde, örnek bir
kullanımı ise y = tan(x); şeklindedir.
17
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• asin() fonksiyonu : Sinüs değeri verilen açının
radyan karşılığını bulur.
• Genel tanımı double asin(double x) şeklinde,
örnek bir kullanımı ise y = asin(x); şeklindedir.
• Bu fonksiyonla ilgili dikkat edilmesi gereken nokta
parametre olarak girilecek değerlerin -1 ile +1
arasında olması gerektiğidir. Çünkü açı hangi
değerde olursa olsun sinüsü -1 ile +1 arasındadır.
• Bu durum acos() fonksiyonu için de geçerlidir.
18
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• acos() fonksiyonu : Kosinüs değeri verilen
açının radyan karşılığını bulur.
• Genel tanımı double acos(double x) şeklinde,
örnek bir kullanımı ise y = acos(x); şeklindedir.

• atan() fonksiyonu() : Tanjant değeri verilen


açının radyan karşılığını bulur.
• Genel tanımı double atan(double x) şeklinde,
örnek bir kullanımı ise y = atan(x); şeklindedir.
19
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• sinh() fonksiyonu : Radyan cinsinden verilen açının hiperbolik sinüs
değerini hesaplar.
• Genel tanımı double sinh(double x) şeklinde, örnek bir kullanımı ise
y = sinh(x); şeklindedir.

• cosh() fonksiyonu : Radyan cinsinden verilen açının hiperbolik kosinüs


değerini hesaplar.
• Genel tanımı double cosh(double x) şeklinde, örnek bir kullanımı ise
y = cosh(x); şeklindedir.

• tanh() fonksiyonu : Radyan cinsinden verilen açının hiperbolik tanjant


değerini hesaplar.
• Genel tanımı double tanh(double x) şeklinde, örnek bir kullanımı ise
y = tanh(x); şeklindedir.

20
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI

21
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI

22
C DİLİNDE HAZIR
STRING FONKSİYONLAR

• ARAŞTIRINIZ ?…

23
C DİLİNDE HAZIR
GRAFİK FONKSİYONLAR

ARAŞTIRINIZ ?…

24
C DİLİNDE HAZIR
ÖZEL TANIMLI FONKSİYONLAR
• Yukarıda özetlenen hazır fonksiyonların yanı
sıra, C programlama dili programlama
problemine özel durumları fonksiyon olarak
kodlayabilme olanağı sağlar.
• Böl/Yönet problem çözme tekniğine uygun
program geliştirmede alt problemlerin her biri
birer program parçası olarak Özel Tanımlı
Fonksiyonlarla sağlanır.

25
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
fonksiyon-türü fonksiyon-adı ( girdi-parametre-listesi ) {
yerel-tanımlamalar;
komutlar;
……
…..
return dönüş_değeri;
}

26
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Burada ;
• fonksiyon-türü : fonksiyonun döndüreceği değerin veri türünü
gösterir.
• fonksiyon-adı: fonksiyona verilen bir isimdir.
• girdi-parametre-listesi : fonksiyonun kaç tane girdi parametre
alacağını ve parametrelerin veri türlerini gösterir.
• yerel-tanımlamalar :Fonksiyonun kullanacağı yerel
(local)değişkenlerdir.
• Komutlar: Fonksiyonun işlevini yerine getirmesini sağlayacak
komutlardır.
• return dönüş_değeri: Fonksiyondan elde edilen değerin çağıran
yere gönderilmesini sağlar.

27
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek:
double topla (double x,double y)
{
/*iki ondalıklı sayının toplamını hesaplayıp, sonucu çağıran yere ondalıklı bir sonuç
olarak gönderen fonksiyon*/

double t;
t=x+y;
return t;
}
28
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek:
int kubunu_al (int a) {
/*bir tam sayının küpünü hesaplayıp, sonucu çağıran yere tamsayı bir sonuç olarak
gönderen fonksiyon*/

int k;
k=a*a*a;
return k;
}
29
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek:
int kubunu_al (int a) {
/*bir tam sayının küpünü hesaplayıp, sonucu çağıran yere tamsayı bir sonuç
olarak gönderen fonksiyon*/

return a*a*a;
}

30
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek

31
FONKSİYON TİPLERİ
void Fonksiyonlar:
• DEĞER DÖNDÜRMEYEN FONKSİYONLAR
• GİRDİ PARAMETRESİZ FONKSİYONLAR
void olmayan Fonksiyonlar:
• DEĞER DÖNDÜREN FONKSİYONLAR
• GİRDİ PARAMETRELİ FONKSİYONLAR

32
void Fonksiyonlar

Bir fonksiyon değer döndürmüyorsa veya


parametre içermiyorsa, bu durum fonksiyonda
void yazarak belirtilir.

33
void Fonksiyonlar
Örnek:

34
void Fonksiyonlar
Örnek:

35
Fonksiyon Girdi Parametresi

Bu parametreler değer parametresi (call by value)


veya referans parametresi (call by reference)
olarak kullanılabilir. 36
Değişken Kapsamı-Faaliyet Alanı
Global-Genel Değişkenler
Local-Yerel Değişkenler
Her değişkenin, program içinde hangi bölgelerde
geçerli olduğunu gösteren bir kapsamı (scope)
vardır . Değişkenlere ait değerler ait oldukları
kapsam içinde kullanılabilir.

37
Değişken Kapsamı-Faaliyet Alanı
Örnek:
#include <stdio.h>
void a( void ); /* fonksiyon prototipi*/
void b( void ); /* fonksiyon prototipi */
void c( void ); /* fonksiyon prototipi */
int x = 1; /* global değişken */

38
Değişken Kapsamı-Faaliyet Alanı
Örnek:
int main( )
{
int x = 5; /* main’e yerel değişken */
printf ("main’in faaliyet alanı dışındaki yerel x değişkeni %d olur.\n", x );
{ /* yeni faaliyet alanına başla */
int x = 7;
printf( "main’in faaliyet alanı içindeki yerel x değişkeni %d olur.\n", x );
} /* yeni faaliyet alanını bitir*/

printf( "main’in faaliyet alanı dışındaki yerel x değişkeni %d olur.\n", x );


a( ); /* a automatic yerel x’ e sahiptir.*/
b( ); /* b static yerel x’ e sahiptir. */
c( ); /* c global x kullanır. */
a( ); /* a automatic yerel x’ e tekrar ilk değer atar.*/
b( ); /* static yerel x önceki değerini korur */
c( ); /* global x ‘ de değerinin korur. */

printf( "main içindeki yerel x %d olur.\n", x );


return 0;
}

39
Değişken Kapsamı-Faaliyet Alanı
Örnek:
void a( void ) {
int x = 25; /* a her çağrıldığında ilk değeri atanır */
printf( "\na’ya girildikten sonra yerel x %d olur.\n", x );
++x;
printf( "a’dan çıkmadan önce yerel x %d olur.\n", x ); }

void b( void ) {
static int x = 50; /* sadece static ilk değer atama */
/* b’nin ilk çağırılması */
printf( "\nb’ye girerken static x %d olur.\n", x );
++x;
printf( "b’den çıkarken önce static x %d olur.\n", x ); }

void c( void ) {
//int x = 1;
printf( "\nc’ ye girerken global x %d olur.\n", x );
x *= 10;
printf( "c’ den çıkarken global x %d olur.\n", x ); }

40

You might also like