7. FONKSİYONLAR. Dönüş_Tipi Fonksiyon_Adı (tip giriş_parametreleri);



Benzer belgeler
8. İŞARETCİLER (POINTERS)

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

BÖLÜM 4 FONKSİYONLAR. Fonksiyonlar programların etkinliğini, kolay yazılmasını, anlaşılmasını ve bellekte daha az yer kaplamasını sağlayan bloklardır.

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

Fonksiyonlar (Altprogram)

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

Algoritma ve Programlama: Karar Yapıları ve Döngüler

BİLG Dr. Mustafa T. Babagil 1

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

11- FONKSİYONLAR (FUNCTIONS)

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

int printf (const char *format [, argument,...]);

Fonksiyonlar -Genel Test- A

Sınav tarihi : Süre : 60 dak.

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

4.Hafta BİL Soruların Çözümleri

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

5. BÖLÜM (10ncu ve 11nci hafta)

Bölüm 9. Altprogramlar ISBN

Dr. Fatih AY Tel: fatihay@fatihay.net

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

Ders 6: Karşılaştırma Deyimleri

STRİNG DİZİLER(KATARLAR)

C dilinde if-else yapısı

Özyineleme {\} /\ Suhap SAHIN Onur GÖK

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Döngü ve Koşul Deyimleri

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

Hafta 13 Fonksiyonlar

Diziler (Arrays) Çok Boyutlu Diziler

Hafta 11 Çok Boyutlu Diziler

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

Adım Adım C. Dr. Hidayet Takcı

Eln 1002 Bilgisayar Programlama II

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

Programlama Dilleri 1. Ders 5: Göstericiler

Programlama Dilleri Laboratuvarı

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

PROGRAMLAMAYA GİRİŞ DERS 2

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

NOT: Bu kodlar çeşitli internet siteleri, üniversite siteleri ve ders kitaplarından derlenerek hazırlanmıştır.

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

Temel Giriş/Çıkış Fonksiyonları

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

C PROGRAMLAMA D İ L İ

Bil 101 Bilgisayar Yazılımı 1 Çözümlü Sorular Timur Karaçay

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

Bil Hafta Çalışma Soruları (Yanıtlar)

2. Dereceden Denklemin Köklerini Bulan Program

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

BÖLÜM 10: FONKSİYONLAR

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

C PROGRAMLAMA D İ L İ

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

Dr. Fatih AY Tel:

Özyineleme (Recursion)

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

Genel Programlama I Ders 5

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

Döngü blokunda tek bir deyim varsa {} yazılmayabilir.

C++ Dersi: Nesne Tabanlı Programlama

BİL-142 Bilgisayar Programlama II

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

9. YAPILAR (STRUCTURES) & BİRLİK (UNION)

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

Adım Adım C-II. Eksik kalmış konular

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Kocaeli Üniversitesi Bilgisayar Mühendisliği Programlama 2 Dersi Final Sınavı. A Grubu

C++ Dersi: Nesne Tabanlı Programlama

BÖLÜM 7: DÖNGÜ KONTROL YAPILARI

DERSİN WEB SİTESİ:

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

C Programlama printf() Fonksiyonu

C ile Uygulamalar 4 - Cevaplar

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Transkript:

1 7. FONKSİYONLAR C/C++ programlama dilinin temelini fonksiyonlar oluşturmaktadır. C/C++ programı fonksiyon ile çalışmasına başlar ve fonksiyon ile çalışmasını bitirir. Bu olmazsa olmaz fonksiyonun ismi main dir. Karmaşık programları düzenlemek ve basitleştirmek için program daha basit küçük program parçalarına bölünebilir. Daha sonra bu bloklar birleştirilerek tam çözüm elde edilebilir. Bir fonksiyon veya bir alt program belirli bir işi yapmak için oluşturulan küçük program parçalarıdır. Fonksiyon ve alt programlara aynı zamanda procedure de denmektedir. Fonksiyonlar çağrıldığı yere geri dönerler. Programlarda fonksiyon tanımlamanın birçok avantajı vardır. Birçok yerde aynı kodları kullanmanız gerektiğinde bunları her seferinde yeniden yazmak yerine bu kodları bir fonksiyonda tanımlayıp kullanacağınız yerden bunu çağırmanız yeterlidir. Örneğin Programınızda birçok yerde faktöriyel hesabı yapmanız gerekiyorsa her defasında faktöriyel hesaplayacak kodu yazmaktansa bu işlemi bir fonksiyonda yaptırıp gerekli yerlerden bu fonksiyona çağrı yapabilirsiniz. Bir fonksiyon bildirimi global olarak yapılır, fonksiyon gövdesi tanımlanan yerde yazılabileceği gibi main den sonrada yazılabilir. Bir fonksiyon bildirimi şöyle yapılır;. Dönüş_Tipi Fonksiyon_Adı (tip giriş_parametreleri); void f1(void); // tanımlaması fonksiyonun girdi (argüman) olarak herhangi bir değişken almadığını geri dönüş (return) değerinin olmadığını tanımlar. int f2(void); //f2 fonksiyonu argüman almaz ve geri dönüş tipi int dir. Geri dönş değeri fonksiyonun çağrıldığı yere, return deyimiyle yapılmaktadır. f3(float ); // f3 fonksiyonun geri dönüş değeri belirtilmemiş bu durumda derleyici geri dönüş değerini int olarak algılar ve ona göre davranır. main fonksiyonunu tanımlarken void main kullanmazsak derleyicinin verdiği uyarı mesajını hatırlayınız. f3 fonksiyonu argüman olark float bir değer almaktadır.

2 Örnek1: Fonksiyon bildirimi ve kullanımı. void f1(void); //fonksiyon bildirimi, geri dönüş değeri ve argüman yok. void f2(void) printf ("Teknik Eğitim Fakultesi\n"); f3(); // f3 fonksiyonuna cagrı yapılıyor //Bildirim ve fonksiyon gövdesi yazılıyor void f3(void); void main (void) printf ("program baslıyor\n"); f1(); // f1 fonksiyonuna cagrı yapılıyor f2(); // f3 fonksiyonuna cagrı yapılıyor printf ("program sonu\n"); getche (); void f1() //Fonksiyon gövdesi yazılıyor printf ("Gazi Üniversitesi\n"); void f3() //Fonksiyon gövdesi printf ("Elektrik Eğitimi\n"); Örnek2: Sayıların karelerinin fonksiyon ile buldurulması #include<stdio.h> baslik ();//fonksiyon tanımına dikkat ediniz. int kare (int index); bitis(); int toplam; main () int index; baslik (); // baslik fonksiyonuna cağrı yapılıyor for (index=0;index<8;index++) kare (index); // bitis (); getche (); baslik () toplam =0; printf("kare programını baslığı\n"); //herhangi bir değer geri döndürme

3 int kare(int rakam) int karesi; karesi=rakam*rakam; toplam+=karesi; printf ("%d nin karesi= %d\n",rakam,karesi); bitis() printf("karelerin toplam=%d",toplam); //Ornek3: r1 ve r2 direnclerinin seri ve paralel esdegerinin bulunmasi #include <iostream.h> float seri (float r1, float r2) float esdeger; esdeger=r1+r2; return esdeger; float paralel(float r1, float r2) float esdeger; esdeger=(r1*r2)/(r1+r2); return esdeger; float r1,r2,sec; cout<<"\n r1 ve r2 direnclerini giriniz"; cin>>r1>>r2; cout<<"\n 1-Seri esdegeri icin\n 2-Paralel esdegeri icin"; cout<<"\n Seciminiz...:"; cin>>sec; if(sec==1) cout<<"\n seri esdegeri="<<seri(r1,r2)<<"ohm"; else if(sec==2) cout<<"\n pararlel esdegeri="<<paralel(r1,r2)<<"ohm"; else cout<<"\n Tanimsiz islem"; Örnek4: Decimal sayının binary sayıya dönüştürülmesi void cevir(int value) int set=0; int x[50]; while(value!=0) x[set]=(value%2); value/=2; set++; set--; for(;set>=0;set--) printf("%d", x[set]);

4 printf("\n"); int sayi; clrscr(); printf ("\n Bir tam sayı giriniz:"); scanf("%d",&sayi); cevir(sayi); Örnek5: Üç sayını büyüğünü veren program int max(int s1,int s2,int s3) if(s1>s2&&s1>s2) return s1; else if(s2>s3)return s2; else return s3; clrscr(); printf("%d\n",max(1,2,3)); printf("%d\n",max(-10,20,3)); printf("%d\n",max(-1,-2,-3)); Örnek6: Bir sayının faktöriyelini fonksiyon ile hesaplatan programı yazınız. Örnek 7: Kombinasyon hesabını yapan program //C(n,r)=n!/(r!*(n-r)!) kombinasyon int fak (int a); int n,r; float c; puts ("kombinasyon hesab:"); puts("c(n,r)=n!/(r!*(n-r)!)\n"); printf ("n'in degerini giriniz...\n"); scanf ("%d",&n); printf ("r'in degerini giriniz...\n"); scanf ("%d",&r); c=(float)fak(n)/(fak(r)*fak(n-r)); printf("c=%5.2f\n",c); int fak (int a)

5 int i,fa; fa=1; if(a<0) else if (a==0) return 1; else for (i=1;i<=a;i++) fa*=i; return (fa); Örnek 8: Dizi içerisinde verilen sayıların en küçüğünün bulunması. Dizinin fonksiyona gönderilmesi pointer konusunda işlenecektir. //x[] ile verilen sayıların min bulur #include <conio.h> int k; int min(int a,int b) k=(a<b)?a:b; return k; int x[]=2,3,0,5,6,10; int i,enkucuk; k=x[0]; for (i=1;i<6;i++) enkucuk=min(k,x[i]); printf ("en kucuk sayı=%d",enkucuk); getche (); Örnek 9: Bir işlevin köklerinden birini Newton yönetimi ile bulan prg. ( x 2-4 ) //Newton Rahpson debklemin köklerini f(x)=x0-f(x0)/f(x') şeklinde bulur #include <math.h> double fn(double); double fnt(double); double x,x0; double hata = 0.0001; /* izin verilen hata */ x = 8; /* başlangıç değeri */ do x0 = x; x = x0 - fn(x0)/fnt(x0); while (fabs(x-x0)>hata); printf ("Sonuç = %f\n", x);

6 printf ("Fonksiyonun köklerinden biri f(x) = %f\n", fn(x)); double fn(double x) /* işlevin değeri */ return x*x-4; //fonksiyon double fnt(double x) /* işlevin türevinin değeri */ return 2*x; //fonksiyonun türevi 7.2.Özyineleme (Recursive) Fonksiyonlar Fonksiyonları kullanırken buraya kadar diğer fonksiyonlardan çağrı yaptık. Hâlbuki fonksiyon kendi kendini de çağırabilir. Bu tür fonksiyonlara özyinelemeli (recursive) fonksiyon adı verilir. Fonksiyon çağrıldığı yere geri döneceğine göre bu recursive fonksiyonların geri dönüşü yine çağrıldığı satır olacaktır. Örnek10: Recursive fonksiyon kullanımı #include <conio.h> f1(int rakam); int index; index =8; f1(index); printf("ana fonksiyon\n"); f1(int rakam) rakam--; printf ("%d\n",rakam); if(rakam!=0) //fonksiyon kendisini çağrıyor. f1(rakam); //printf("%d\n",rakam); açıklamayı iptal edip çalıştırın Örnek 11: Faktoriyel hesabının recursive fonksiyon ile bulunması #include <stdlib.h> #include <conio.h> faktor (int n)

7 int fakt; if(n==1) return 1; fakt=n*faktor(n-1); printf("f=%d\n", fakt); int n=3; printf ("f=%d\n",faktor(n));; KAYNAKLAR Şevki DEMİRBAŞ, Oğuz ÜSTÜN ve Nihat ÖZTÜRK, Beltek kursu ders notları, Gazi Üniversitesi Pektaş H., C Dili Kullanarak Bilgisayar Programlama, KOU EHM, Ders Notları.