Fonksiyonlar - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

Fonksiyonlar

Description:

Fonksiyon nedir? Fonksiyon, belirli say da verileri kullanarak bunlar i leyen ve bir sonu reten komut grubudur. Her fonksiyonun bir ad ve fonksiyona gelen ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 21
Provided by: emr71
Category:

less

Transcript and Presenter's Notes

Title: Fonksiyonlar


1
Fonksiyonlar
2
Fonksiyon nedir?
  • Fonksiyon, belirli sayida verileri kullanarak
    bunlari isleyen ve bir sonuç üreten komut
    grubudur.
  • Her fonksiyonun bir adi ve fonksiyona gelen
    degerleri gösteren degiskenleri (argümanlari)
    vardir. Genel olarak bir fonksiyonun görevi
    asagidaki sekilde gösterilmistir.

3
Fonksiyon tanimlama
  • Fonksiyonlarin girdilerine parametreler yada
    argumanlar denir. Bir fonksiyon bu parametreleri
    alip bir isleme tabi tutar ve bir deger hesaplar.
    Bu deger, çikti veya geri dönüs degeri (return
    value) olarak adlandirilir. Bir fonksiyonun kaç
    girisi olursa olsun sadece bir çikisi vardir.
  • C dilinde hazirlanan bir fonksiyonun genel yapisi
    söyledir
  • DönüsTipi FonksiyonAdi(argüman listesi)
  • argümanlarin tip bildirimleri
  • Yerel degiskenlerin bildirimi ...
  • fonksiyon içindeki deyimler veya diger
    fonksiyonlar ...
  • return geri dönüs degeri

4
Fonksiyon Tanimlama-2
  • Dönüs_tipi fonksiyon tarafindan döndürülen
    degerin tipini belirtir. Bu, int, double gibi bir
    aritmetik tip veya gösterge olabilir. Dönüs_tipi
    olarak void anahtar sözcügü kullanildiginda,
    fonksiyondan hiçbir deger döndürülmeyecegi
    belirtilmis olur. void fonksiyonlar FORTRANdaki
    SUBROUTINEler veya Pascaldaki procedurelarin
    karsiligidir.
  • Fonksiyon_adi bir tanitici sözcüktür.
  • Argüman Listesi virgülle ayrilmis ve önüne
    tipleri yazilmis biçimsel argüman veya parametre
    isimleri listesidir. Diger bir fonksiyon
    tarafindan çagrildiginda bu fonksiyona
    geçirilecek olan argümanlarin sayisini, sirasini
    ve tipini belirtir. Ayni zamanda, parametrelere,
    sadece fonksiyonun gövdesini olusturan blokun
    içinde anlamli olan, isimler verir. Hiç
    parametresi olmayan bir fonksiyon da olabilir. Bu
    durum, parantezler içine void yazilarak açikça
    gösterilir.
  • Return Kontrolün çagirana geri dönmesini saglar.
    return deyiminden sonra gelen deyimler yerine
    getirilmez ve fonksiyon hemen çagrildigi yere
    geri döner.

5
Tanimlama Örnegi
  • Örnegin iki sayinin toplamini hesaplayacak bir
    fonksiyon söyle tanimlanabilir
  • / 1. yöntem/
  • int topla(x,y)
  • int x,y
  • int sonuc
  • sonuc x y
  • return sonuc

/ 2. yöntem/ int topla(int x,int y) int
sonuc sonuc x y return sonuc
/ 3.yöntem/ int topla(int x,int y) return
(xy)
int topla( int x, y ) seklindeki yazim hata
verir.
6
Fonksiyon Çagrilmasi
  • Bir fonksiyonu ana programdan çagirmak için
    genellikle bir degiskene deger döndürme seklinde
    yapilir.Örnegin öndeki slaytta yer alan
    fonksiyonu ana programdan çagirmak için söyle bir
    tanimlama yapilabilir.
  • toplamtopla(5,4)
  • Bu islem satirinda fonksiyona 5 ve 4 degerleri
    gönderiliyor. Geri dönen sonuç ise toplam
    degiskenine aktariliyor.

7
Fonskiyon Çagirma sekli
8
Fonksiyon bildirimi
  • Bir fonksiyonun bildirimi iki türlü yapilir
  • Ana programdan önce
  • ...
  • int topla(int x,int y) / fonksiyon /
  • ...
  • ...
  • main()
  • ...
  • Ana programdan sonra Bu durumda fonksiyon
    prototipi ana programdan önce bildirilmelidir.
  • .. int topla(int x, int y) / fonksiyon örnegi
  • ... main()
  • ...
  • ...
  • int topla(int x, int y) / fonksiyon /
  • ...

int topla(int, int) seklinde de yazilabilir.
9
Örnek 2 sayinin toplanip ekrana yazdirilmasi
isleminin fonksiyon yardimiyla yapilmasi.
  • include ltstdio.hgt
  • int topla(int, int) / fonksiyon prototipi
    /
  • main()
  • int toplam,a,b
  • printf("Iki sayi girin ")
  • scanf("d d",a,b)
  • / fonksiyon çagirilip, a ve b degerleri
    parametre olarak aktariliyor./
  • toplam topla(a,b)
  • printf("d ve d nin toplami d dir.\n",
    a,b,toplam)
  • getchar()
  • getchar()
  • / fonksiyon tanimlanmasi /
  • / Bu fonksiyon iki tamsayiyi toplar /
  • int topla( int x, int y )
  • int sonuc
  • sonuc x y
  • return sonuc

Programda, klavyeden okunan a ve b degiskenleri
fonksiyonuna parametre olarak aktarilmistir. Bu
degiskenlerin isimleri ile topla fonksiyonunda
kullanilan degiskenlerin (x ve y) isimleri ayni
olmasi zorunlu degildir. Burada a ve b
degiskenleri sirasiyla x ve y degiskenleri yerine
konmustur.
10
Örnek Faktöriyeli fonksiyonda hesaplayan program.
  • include ltstdio.hgt
  • int fakt (int n)
  • int i 1,top1
  • while (iltn)
  • top i
  • i
  • return top
  • main()
  • int sayi 4
  • printf("d! d\n", sayi, fakt(sayi))
  • getchar()

Fonksiyon asagidaki sekilde de yazilabilir. int
fakt (int n) int i n while (--n) i n
return i
11
Dizinin Fonksiyona Gönderilmesi
  • Fonsiyonun bildirimi
  • int fonk(int a5) //yada int fonk(int a)
  • islemler
  • Dizinin gönderilmesi
  • int dizi5
  • fonk(dizi)

12
5 elemanli bir dizinin elamanlarinin toplamini
fonksiyon yardimiyla hesaplayan program
Eger dizinin boyutu fonksiyona gönderilmeyip,
fonksiyonda boyutu hesaplanirsa kod asagidaki
gibi yazilir. include ltstdio.hgt int topla (int
sayi) int toplam0,i for(i0iltsizeof(sa
yi)i) toplamsayii return
toplam main() int sayi5
4,3,2,5,6 printf("d", topla(sayi))
getchar()
  • include ltstdio.hgt
  • int topla (int sayi,int eleman_sayi)
  • int toplam0,i
  • for(i0ilt5i)
  • toplamsayii
  • return toplam
  • main()
  • int sayi5 4,3,2,5,6
  • int eleman_sayi5
  • printf("d", topla(sayi,eleman_sayi))
  • getchar()

13
Örnek
  • 5 elemanli bir dizi içindeki en büyük elemani bir
    fonksiyon yardimiyla, en küçük elemani baska bir
    fonksiyon yardimiyla bulup, bulunan bu en büyük
    ve en küçük elemanlari da 3. bir fonksiyon
    yardimiyla ekrana yazan program.

14
Cevap
  • main()
  • int sayi5 4,3,2,5,6
  • int eb,ek
  • ebenb(sayi)
  • ekenk(sayi)
  • yaz(eb,ek)
  • getchar()getchar()
  • include ltstdio.hgt
  • int enb(int sayi)
  • int bulsayi0,i
  • for(i1ilt5i)
  • if(bulltsayii)
  • bulsayii
  • return bul
  • int enk(int sayi)
  • int bulsayi0,i
  • for(i1ilt5i)
  • if(bulgtsayii)
  • bulsayii
  • return bul
  • int yaz(x,y)

15
Özyinemeli(Recursive) Fonksiyonlar
  • Fonksiyonlar tekrarlama yapilarina göre temel
    olarak iki türlü düsünülebilir. Buna göre bir
    fonksiyonun içinde yine kendisinden bir parça
    bulunuyorsa bu fonksiyonlara özyinelemei
    (recursive) fonksiyon denilirken, fonksiyonun
    kendisini tekrar etmemesi durumunda döngülü
    (iterative) fonksiyon ismi verilir.Teorik olarak
    bütün döngülü (iterative) fonksiyonlar
    özyinelemeli (recursive) fonksiyon olarak
    yazilabilir (tersi de dogrudur).

16
Özyinemeli(Recursive) Fonksiyonlar
  • En basit açiklama yöntemi olarak faktoriyel
    hesaplama fonksiyonu gösterilebilir.faktoriyel()
    x0 ise sonuç sifirdirx1 ise sonuç birdirxn
    için ise sonuç n çarpi fonksiyon(n-1) dir.Bu
    örnekteki gibi girilen deger sifir yada bir
    olmadigi sürece fonksiyon sifir yada bir ile
    karsilasana kadar düzenli olarak n sayisindan bir
    çikartarak kendisini çagirmaktadir.

17
Klavyeden girilen sayiya kadar olan sayilari
recursive fonksiyon yardimiyla toplayan program
  • includeltstdio.hgt
  • includeltconio.hgt
  • int topla(int a)
  • if(a1)
  • return 1
  • return a topla(a-1)
  • main()
  • int sayi
  • printf("sayi giriniz")
  • scanf("d",sayi)
  • printf("sayilarin toplamid",topla(sayi))
  • getchar() getchar()

18
Bir sayinin faktöriyelini recursive fonksiyon ile
bulan program
  • int fakt(int n)
  • if (n0)
  • return 1
  • return nfakt(n-1)
  • main()
  • int sayi4
  • printf("d", fakt(sayi))
  • getchar()

19
ÖrnekKendini çagiran fonksiyon kullanarak,
kullanicidan alinan bir sayi kadar tek sayilarin
toplamini bulan program. Örnegin kullanici 4
girerse 1 3 5 7 nin toplamini bulup ekrana
yaziyor.
  • includeltstdio.hgt
  • includeltconio.hgt
  • int topla(int n)
  • return ((n1) ? 1 (2n-1)topla(n-1))
  • main()
  • int sayi
  • printf("sayi giriniz")
  • scanf("d",sayi)
  • printf("Tek sayilarin toplamid",topla(sayi
    ))
  • getchar() getchar()

20
Klavyeden girilen bir metin içerisindeki büyük
harfleri recursive fonksiyon ile yazan program
  • includeltstdio.hgt
  • includeltconio.hgt
  • includeltstring.hgt
  • recursive (char,int,int)
  • main()
  • char dizi40,ptr
  • int i,adet,x
  • ptrdizi
  • printf("\n Bir Karakter Katari Giriniz \n\n
    ")
  • gets(ptr)
  • adetstrlen(ptr)
  • x0
  • printf("\n\n Girilen Metindeki Buyuk Harfler
    gt ")
  • recursive(ptr,adet,x)
  • getch()

recursive(char ptr_1,int adet1,int i )
if(adet10) return 1
if(isupper(ptr_1i)) printf("c",ptr_1i
) recursive(ptr_1,adet1-1,i1)
Write a Comment
User Comments (0)
About PowerShow.com