Fonksiyonlar.

Slides:



Advertisements
Benzer bir sunumlar
Diziler.
Advertisements

Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Fonksiyonlar.
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Makine Müh. & Jeoloji Müh.
Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
Göstericiler (Pointers)
Zeynep Çelik Sunar….
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
Bölüm 2 C Dilinin Temelleri
switch - case Yapısı Döngü Yapıları
Bölüm 4 İşlevlerve Modüler Programlama. 1 / 8 İşlev Tanımı /* İşlev açıklama satırı */ ( ) { }
Değişken Bildirimleri
Atama ve Girdi/Çıktı Komutları
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
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
NESNEYE YÖNELİK PROGRAMLAMA
Nesneye Dayalı Programlama
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
Erişim Denetimi, Fonksiyon
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
NESNE TABANLI PROGRAMLAMA -METOTLAR-
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
Paralel Programlamaya Giriş
FONKSİYONLAR.
METOTLAR.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
DÖNGÜLER.
Bilgisayar Programlama
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
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
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
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
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.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
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.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
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 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
FONKSİYONLAR Programlamada fonksiyon kullanmanın en önemli sebebi kodların tekrar edilmesini engellemektir. Örneğin; karekök yada üsalma işlemi yapan bir.
Bölüm 2 C Dilinin Temelleri
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
Bölüm 3 Atama ve Girdi/Çıktı Komutları
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 2 C Dilinin Temelleri
C ile Programlamaya Giriş
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Fonksiyonlar

Fonksiyon nedir? Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten komut grubudur. Her fonksiyonun bir adı ve fonksiyona gelen değerleri gösteren değişkenleri (argümanları) vardır. Genel olarak bir fonksiyonun görevi aşağıdaki şekilde gösterilmiştir.

Fonksiyon tanımlama Fonksiyonların girdilerine parametreler yada argumanlar denir. Bir fonksiyon bu parametreleri alıp bir işleme tabi tutar ve bir değer hesaplar. Bu değer, çıktı veya geri dönüş değeri (return value) olarak adlandırılır. Bir fonksiyonun kaç girişi olursa olsun sadece bir çıkışı vardır. C dilinde hazırlanan bir fonksiyonun genel yapısı şöyledir: DönüşTipi FonksiyonAdı(argüman listesi) argümanların tip bildirimleri { Yerel değişkenlerin bildirimi ... fonksiyon içindeki deyimler veya diğer fonksiyonlar ... return geri dönüş değeri; }

Fonksiyon Tanımlama-2 Dönüş_tipi: fonksiyon tarafından döndürülen değerin tipini belirtir. Bu, int, double gibi bir aritmetik tip veya gösterge olabilir. Dönüş_tipi olarak void anahtar sözcüğü kullanıldığında, fonksiyondan hiçbir değer döndürülmeyeceği belirtilmiş olur. void fonksiyonlar FORTRAN’daki SUBROUTINE’ler veya Pascal’daki procedure’ların karşılığıdır. Fonksiyon_adı: bir tanıtıcı sözcüktür. Argüman Listesi: virgülle ayrılmış ve önüne tipleri yazılmış biçimsel argüman veya parametre isimleri listesidir. Diğer bir fonksiyon tarafından çağrıldığında bu fonksiyona geçirilecek olan argümanların sayısını, sırasını ve tipini belirtir. Aynı zamanda, parametrelere, sadece fonksiyonun gövdesini oluşturan blok’un içinde anlamlı olan, isimler verir. Hiç parametresi olmayan bir fonksiyon da olabilir. Bu durum, parantezler içine void yazılarak açıkça gösterilir. Return: Kontrolün çağırana geri dönmesini sağlar. return deyiminden sonra gelen deyimler yerine getirilmez ve fonksiyon hemen çağrıldığı yere “geri döner”.

int topla( int x, y ) şeklindeki yazım hata verir. Tanımlama Örneği Örneğin iki sayının toplamını hesaplayacak bir fonksiyon şöyle tanımlanabilir: /* 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 (x+y); } int topla( int x, y ) şeklindeki yazım hata verir.

Fonksiyon Çağrılması Bir fonksiyonu ana programdan çağırmak için genellikle bir değişkene değer döndürme şeklinde yapılır.Örneğin öndeki slaytta yer alan fonksiyonu ana programdan çağırmak için şöyle bir tanımlama yapılabilir. toplam=topla(5,4) Bu işlem satırında fonksiyona 5 ve 4 değerleri gönderiliyor. Geri dönen sonuç ise toplam değişkenine aktarılıyor.

Fonskiyon Çağırma şekli

Fonksiyon bildirimi int topla(int, int); şeklinde de yazılabilir. Bir fonksiyonun bildirimi iki türlü yapılır: 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 örneği ... main() int topla(int x, int y) /* fonksiyon */ int topla(int, int); şeklinde de yazılabilir.

Örnek: 2 sayının toplanıp ekrana yazdırılması işleminin fonksiyon yardımıyla yapılması. #include <stdio.h> int topla(int, int); /*** fonksiyon prototipi ***/ main(){ int toplam,a,b; printf("Iki sayi girin : "); scanf("%d %d",&a,&b); /* fonksiyon çağırılıp, a ve b değerleri parametre olarak aktarılıyor.*/ toplam = topla(a,b); printf("%d ve %d nin toplami %d dir.\n", a,b,toplam); getchar(); } /*** fonksiyon tanımlanması ***/ /* Bu fonksiyon iki tamsayıyı toplar */ int topla( int x, int y ){ int sonuc; sonuc = x + y; return sonuc; Programda, klavyeden okunan a ve b değişkenleri fonksiyonuna parametre olarak aktarılmıştır. Bu değişkenlerin isimleri ile topla fonksiyonunda kullanılan değişkenlerin (x ve y) isimleri aynı olması zorunlu değildir. Burada a ve b değişkenleri sırasıyla x ve y değişkenleri yerine konmuştur.

Örnek: Faktöriyeli fonksiyonda hesaplayan program. #include <stdio.h> int fakt (int n) { int i = 1,top=1; while (i<=n) top *= i; i++; } return top; main(){ int sayi = 4; printf("%d! = %d\n", sayi, fakt(sayi)); getchar(); Fonksiyon aşağıdaki şekilde de yazılabilir. int fakt (int n) { int i = n; while (--n) i *= n; return i; }

Dizinin Fonksiyona Gönderilmesi Fonsiyonun bildirimi int fonk(int a[5]) //yada int fonk(int a[]) { işlemler} Dizinin gönderilmesi int dizi[5] fonk(dizi)

5 elemanlı bir dizinin elamanlarının toplamını fonksiyon yardımıyla hesaplayan program Eğer dizinin boyutu fonksiyona gönderilmeyip, fonksiyonda boyutu hesaplanırsa kod aşağıdaki gibi yazılır. #include <stdio.h> int topla (int sayi[]) { int toplam=0,i; for(i=0;i<=sizeof(sayi);i++) toplam+=sayi[i]; return toplam; } main(){ int sayi[5] = {4,3,2,5,6}; printf("%d", topla(sayi)); getchar(); #include <stdio.h> int topla (int sayi[],int eleman_sayi) { int toplam=0,i; for(i=0;i<5;i++) toplam+=sayi[i]; return toplam; } main(){ int sayi[5] = {4,3,2,5,6}; int eleman_sayi=5; printf("%d", topla(sayi,eleman_sayi)); getchar();

Örnek 5 elemanlı bir dizi içindeki en büyük elemanı bir fonksiyon yardımıyla, en küçük elemanı başka bir fonksiyon yardımıyla bulup, bulunan bu en büyük ve en küçük elemanları da 3. bir fonksiyon yardımıyla ekrana yazan program.

Cevap main(){ int sayi[5] = {4,3,2,5,6}; int eb,ek; eb=enb(sayi); ek=enk(sayi); yaz(eb,ek); getchar();getchar(); } #include <stdio.h> int enb(int sayi[]) { int bul=sayi[0],i; for(i=1;i<5;i++) if(bul<sayi[i]) bul=sayi[i]; return bul; } int enk(int sayi[]) if(bul>sayi[i]) int yaz(x,y) printf("En büyük=%d\nEn Küçük=%d",x,y);

Özyinemeli(Recursive) Fonksiyonlar Fonksiyonlar tekrarlama yapılarına göre temel olarak iki türlü düşü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 yazılabilir (tersi de doğrudur).

Özyinemeli(Recursive) Fonksiyonlar En basit açıklama yöntemi olarak faktoriyel hesaplama fonksiyonu gösterilebilir. faktoriyel() { x=0 ise sonuç sıfırdır x=1 ise sonuç birdir x=n için ise sonuç n çarpı fonksiyon(n-1) dir. } Bu örnekteki gibi girilen değer sıfır yada bir olmadığı sürece fonksiyon sıfır yada bir ile karşılaşana kadar düzenli olarak n sayısından bir çıkartarak kendisini çağırmaktadır.

Klavyeden girilen sayıya kadar olan sayıları recursive fonksiyon yardımıyla toplayan program #include<stdio.h> #include<conio.h> int topla(int a){ if(a==1) return 1; return a+ topla(a-1); } main() { int sayi; printf("sayı giriniz"); scanf("%d",&sayi); printf("sayıların toplamı:%d",topla(sayi)); getchar(); getchar();

Bir sayının faktöriyelini recursive fonksiyon ile bulan program int fakt(int n) { if (n==0) return 1 ; return n*fakt(n-1); } main(){ int sayi=4; printf("%d", fakt(sayi)); getchar();

Örnek:Kendini çağıran fonksiyon kullanarak, kullanıcıdan alınan bir sayı kadar tek sayıların toplamını bulan program. Örneğin; kullanıcı 4 girerse; 1 3 5 7 nin toplamını bulup ekrana yazıyor. #include<stdio.h> #include<conio.h> int topla(int n) { return ((n==1) ? 1 : (2*n-1)+topla(n-1)); } main() { int sayi; printf("sayı giriniz"); scanf("%d",&sayi); printf("Tek sayıların toplamı:%d",topla(sayi)); getchar(); getchar(); }

Klavyeden girilen bir metin içerisindeki büyük harfleri recursive fonksiyon ile yazan program #include<stdio.h> #include<conio.h> #include<string.h> recursive (char*,int,int); main() { char dizi[40],*ptr; int i,adet,x; ptr=dizi; printf("\n Bir Karakter Katari Giriniz \n\n "); gets(ptr); adet=strlen(ptr); x=0; printf("\n\n Girilen Metindeki Buyuk Harfler ==> "); recursive(ptr,adet,x); getch(); } recursive(char *ptr_1,int adet1,int i ) { if(adet1==0) return 1; if(isupper(ptr_1[i])) printf("%c",ptr_1[i]); recursive(ptr_1,adet1-1,i+1); }