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

Benzer belgeler
C PROGRAMLAMA D İ L İ

Fonksiyonlar (Altprogram)

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.

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

Koşul doğru olduğu sürece istenilen işlem/işlemlerin tekrarlanmasını sağlayan yapıdır.

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

Temel Giriş/Çıkış Fonksiyonları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

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

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

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

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

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

PROGRAMLAMAYA GİRİŞ DERS 2

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

C Programlama Dilininin Basit Yapıları

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

Diziler (Arrays) Çok Boyutlu Diziler

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

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

NESNEYE YÖNELİK PROGRAMLAMA

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

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

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

Ders 7: Döngüler. Giriş. 7.1 while Döngüsü

Dr. Fatih AY Tel:

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

Bölüm 9. Altprogramlar ISBN

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

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

Fonksiyonlar -Genel Test- A

Pointer Kavramı. Veri Yapıları

ALGORİTMA VE PROGRAMLAMA II

Hafta 13 Fonksiyonlar

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

Dr. Fatih AY Tel: fatihay@fatihay.net

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

HSancak Nesne Tabanlı Programlama I Ders Notları

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

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

C PROGRAMLAMA D İ L İ

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

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

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

ALGORİTMA VE PROGRAMLAMA II

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

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

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

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

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Temel Bilgisayar Programlama

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

Fonksiyonlar - Functions. Örnek. Örneğin. C dilinde 5/13/2011. ENF-102 Jeoloji

C PROGRAMLAMA D İ L İ

C Programlama printf() Fonksiyonu

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

C++ Dersi: Nesne Tabanlı Programlama

BİL-142 Bilgisayar Programlama II

Ders 4: Temel Giriş/Çıkış Fonksiyonları

Bölüm 2 - C ile Programlamaya Giriş

Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

Ders 5: Temel Kütüphane Fonksiyonlar

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

Döngü ve Koşul Deyimleri

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

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

ALGORİTMA VE PROGRAMLAMA I

Genel Programlama II

Program Akış Kontrol Yapıları

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.

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

C Programlama Dilinde Değişkenler

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Bölüm 3 Yapısal Programlama

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

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

C ile Uygulamalar 3 - Cevaplar

Nesne Yönelimli Programlama

Sunum İçeriği. Programlamaya Giriş

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

Programlama Dilleri Laboratuvarı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

8. İŞARETCİLER (POINTERS)

BİLG Dr. Mustafa T. Babagil 1

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

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

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Transkript:

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ Yrd.Doç.Dr. Emel ARSLAN earslan@istanbul.edu.tr

C DİLİNDE FONKSİYONLAR

C DİLİNDE FONKSİYONLAR C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur. Bu özellik bütün yapısal dillerin (C, Fortran, Pascal,...) temelini oluşturur. Yapısal dillere hakim olmak için fonksiyon oluşturmayı ve kullanmayı iyi öğrenmek gerekir.

FONKSİYON KAVRAMI 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 argümanları (bağımsız değişkenleri) vardır. Genel olarak bir fonksiyon şekildeki gibi bir kutu ile temsil edilir:

FONKSİYON KAVRAMI

FONKSİYON KAVRAMI Fonksiyonların girdilerine parametreler yada argümanlar 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. Unutmayın ki, bir fonksiyonun kaç girişi olursa olsun sadece bir çıkışı vardır.

FONKSİYON KAVRAMI C Programlama Dili, kullanıcısına bu türden fonksiyon yazmasına izin verir. C dilinde hazırlanan bir fonksiyonun genel yapısı şöyledir: FonksiyonTipi FonksiyonAdı(argüman listesi) argumanların tip bildirimleri Yerel değişkenlerin bildirimi... fonksiyon içindeki deyimler veya diğer fonksiyonlar... return geri dönüş değeri;

FONKSİYON KAVRAMI Örneğin iki sayının toplamının hesaplayacak bir fonksiyon şöyle tanımlanabilir: /* klasik biçim */ int topla(x,y) int x,y int sonuc; sonuc = x + y; return sonuc;

FONKSİYON KAVRAMI /* modern biçim */ int topla(int x,int y) int sonuc; sonuc = x + y; return sonuc; /* modern biçim */ int topla(int x,int y) return (x+y);

FONKSİYON KAVRAMI Bu örnekte, fonksiyonun kimlik kartı ve kutu gösterimi şöyledir: Fonksiyon tipi: int Fonksiyon adı : topla parametreler : x ve y geri dönüş değeri: x+y

FONKSİYON KAVRAMI Her üç program parçasında da return (geri dönüş) deyimi kullanılmaktadır. Bu deyim C programlama dilinin anahtar sözcüklerinden biridir ve fonksiyon içerisinde sonucu, kendisini çağıran yere göndermek için kullanılır. Yani topla fonksiyonu herhangi bir programın içerisinde kullanıldığında, fonksiyonun üreteceği sonuç return deyiminden sonra belirtilen değişken veya işlem olacaktır.

FONKSİYON KAVRAMI Örneğin fonksiyon: main()... int t;... t = topla(9,6);... şeklinde kullanılırsa, t değişkenine 9+6=15 değeri atanır.

FONKSİYON KAVRAMI Ana programdan, main() fonksiyonundan, isteğe göre birden çok fonksiyon çağırmak mümkündür. Bir fonksiyonun çağırılması demek, o fonksiyonun geri dönüş değerinin ana programda kullanılması demektir. Birden çok fonksiyonun main() tarafından nasıl çağrıldığını temsil eden blok diyagram aşağıda gösterilmiştir.

FONKSİYON BİLDİRİMİ Bir fonksiyonun bildirimi iki türlü yapılır: Ana programdan önce Ana programdan sonra

FONKSİYON BİLDİRİMİ Ana programdan önce:... int topla (int x,int y) /* fonksiyon */...... main()...

FONKSİYON BİLDİRİMİ Ana programdan sonra: Bu durumda fonksiyon örneği (function prototype) ana programdan önce bildirilmelidir.... int topla (int x, int y); /* fonksiyon örneği */... main()...... int topla(int x, int y) /* fonksiyon */...

FONKSİYON BİLDİRİMİ Bir C programı içinde, yazmış olduğunuz fonksiyonlar genellikle bu iki tipte kullanılır. İkinci kullanımda fonksiyon prototipi mutlaka bildirilmelidir. Aksi halde bir hata mesajı ile karşılaşılır. Fonksiyon prototipinde argüman isimlerinin yazılması zorunlu değildir. Sadece argüman tiplerini belirtmek de yeterlidir. Yukarıdaki topla fonksiyona ait prototip: int topla(int x, int y); şeklinde yazılabileceği gibi int topla(int, int); şeklinde de yazılabilir.

FONKSİYON BİLDİRİMİ /* iki sayıyı toplar ve sonucu ekranda gösterir */ #include <stdio.h> int topla(int, int); /*** fonksiyon prototipi ***/ int 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); /* topla(a,b) = a + b değeri toplam değişkenine atanması*/ printf("%d ve %d nin toplami %d dir.\n", a,b,toplam); return 0;

FONKSİYON BİLDİRİMİ /*** fonksiyon tanımlanması ***/ /* Bu fonksiyon iki tamsayıyı toplar */ int topla( int x, int y ) int sonuc; sonuc = x + y; return sonuc;

FONKSİYON BİLDİRİMİ Bu programın çıktısı şu şekildedir : İki sayi girin : 5 12 gibi sayılar girilir. 5 ve 12 nin toplami 17 dir. şeklinde çıktı oluşur.

FONKSİYON BİLDİRİMİ 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. toplam = topla(a,b); satırında toplam adlı tamsayı değişkenine topla fonksiyonunun dönüş değeri (a + b değeri) atanmıştır.

FONKSİYON BİLDİRİMİ Program daha kısa şöyle yazılabilirdi: topla fonksiyonunun ana programda kullanılması /*iki sayıyı toplar ve sonucu ekranda gösterir */ #include <stdio.h> int topla(int x, int y) return (x+y); int main(void) int toplam,a,b; printf("iki sayi girin : "); scanf("%d %d",&a,&b); toplam = topla(a,b); printf("%d ve %d nin toplami %d dir.\n", a, b, toplam); return 0;

GERİ DÖNÜŞ DEĞERLERİ return anahtar sözcüğünün iki önemli işlevi vardır: fonksiyonun geri dönüş değerini oluşturur fonksiyonu sonlandırır Bu deyiminden sonra bir değişken, işlem, sabit veya başka bir fonksiyon yazılabilir. Örneğin: return (a+b/c); /* parantez kullanmak zorunlu değil */ return 10; /* değişken kullanmak mecbur değil */ return topla(a,b)/2.0; /* önce topla fonksiyonu çalışır */

GERİ DÖNÜŞ DEĞERLERİ Bir fonksiyonda birden çok geri dönüş değeri kullanılabilir. Fakat, ilk karşılaşılan return deyiminden sonra fonksiyon sonlanır ve çağrılan yere bu değer gönderilir. Örneğin aşağıdaki harf fonksiyonunda beş tane return deyimi kullanılmıştır. char harf(int not) if( not>=0 && not<50 ) return 'F'; if( not>=50 && not<70 ) return 'D'; if( not>=70 && not<80 ) return 'C'; if( not>=80 && not<90 ) return 'B'; if( not>=90 ) return 'A';

GERİ DÖNÜŞ DEĞERLERİ Bu fonksiyon kendisine parametre olarak gelen 0-100 arasındaki bir notun harf karşılığını gönderir. Aslında geri gönderilen değer bir tanedir. Eğer bu fonksiyon aşağıdaki gibi çağrılırsa: char HarfNotum;... HarfNotum = harf(78);... HarfNotum değişkenine 'C' değeri (karakteri) atanır.

GERİ DÖNÜŞ DEĞERLERİ /* Bir fonksiyonda iki return deyimi */ #include <stdio.h> int artik_yil(int); /* fonksiyon prototipi */ void main() int yil; printf("bir yil girin: "); scanf("%d",&yil); if( artik_yil(yil) ) printf("%d artik yil\n",yil); else printf("%d artik yil degil\n",yil); /* yil artıl yıl ise 1 aksi halde 0 gönderir */ int artik_yil(int yil) if( yil % 4 == 0 && yil % 100!= 0 yil % 400 == 0 ) return 1; else return 0;

GERİ DÖNÜŞ DEĞERLERİ Bu programda bildirilen artik_yil fonksiyonu, kendisine parametre olarak gelen bir tamsayıyı yıl bilgisi olarak kabul eder. Eğer yıl artık yıl ise 1 aksi halde 0 gönderir. Programda iki tane return deyimi kullanıldığına dikkat ediniz.

GERİ DÖNÜŞ DEĞERLERİ Bu fonksiyonun çıktısı aşağıdaki gibidir : Bir yil girin: 1996 girer örneğin 1996 Sonuçta ekrana ; 1996 artik yil yazacaktır. Buraya kullanıcı sorgulamak istediği yılı

VOID FONKSİYONLAR Bir fonksiyonun her zaman geri dönüş değerinin olması gerekmez. Bu durumda return deyimi kullanılmayabilir. Eğer return anahtar kelimesi yoksa, fonksiyon ana bloğu bitince kendiliğinden sonlanır. Böyle fonksiyonların tipi void (boş, hükümsüz) olarak belirtilmelidir. Bu tip fonksiyonlar başka bir yerde kullanılırken, herhangi bir değişkene atanması söz konusu değildir, çünkü geri dönüş değeri yoktur. Ancak, void fonksiyonlara parametre aktarımı yapmak mümkündür.

VOID FONKSİYONLAR /* Basit bankamatik simulasyonu. İstenen para miktarını 20, 10 ve 5'lik birimlere böler ve sonucu ekrana gösterir. */ #include <stdio.h> void bankamatik(int para) int a,yirmilik,onluk,beslik; a = para; if(a%5==0) yirmilik = a/20; a -= yirmilik*20; onluk = a/10; a -= onluk*10; beslik = a/5; a -= beslik*5; printf("\nyirmilik = %d",yirmilik); printf("\nonluk = %d",onluk); printf("\nbeslik = %d\n",beslik); else printf("girilen miktar 5 YTL ve katlari olmali!\a\n"); /* return deyimi yok!*/ int main() int miktar; printf("cekilecek para miktari (YTL) = "); scanf("%d",&miktar); bankamatik(miktar); /* fonksiyon bir değişkene atanmamış! */ return 0;

VOID FONKSİYONLAR Programda void fonksiyona örnek olarak bankamatik fonksiyonu ve kullanımı gösterilmiştir. Bu fonksiyon kendisine parametre olarak gelen YTL cinsinden para miktarını 20, 10 ve 5 YTL'lik birimler halinde hesaplar. Girilen miktar 5 YTL'nin bir katı değilse, ekrana uygun bir mesaj gönderir. bankamatik fonksiyonu bir dizi hesap yapmasına rağmen geriye hiç bir değer göndermez.

VOID FONKSİYONLAR ÇIKTI ÇIKTI Cekilecek para miktari = 135 Yirmilik = 6 Onluk = 1 Beslik = 1 Cekilecek para miktari = 456 Girilen miktar 5 YTL ve katlari olmali!

VOID FONKSİYONLAR void anahtar sözcüğü C'ye sonradan dahil edilmiştir. Standart C'de (ANSI C) bu deyimin kullanılması zorunlu değildir. Ancak bu deyim okunabilirliği arttırmaktadır. Örneğin: void bankamatik(int para) bankamatik(int para)...... şeklindeki kullanımlar geçerli ve aynı anlamdadır.

VOID FONKSİYONLAR /*Basit bir kutu çizen fonksiyon */ #include <stdio.h> void kutu_ciz( int satir, int sutun ) int sut; for ( ; satir > 0; satir--) for (sut = sutun; sut > 0; sut--) printf("x"); printf("\n"); int main() kutu_ciz(8,35); return 0;

VOID FONKSİYONLAR Bu fonksiyonun çıktısı aşağıdaki gibi olur : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

FONKSİYON PARAMETRELERİ Fonksiyon parametreleri (argümanları) klasik ve modern olmak üzere iki türlü tanımanabilir. Örneğin aşağıdaki fonksiyon kendisine parametre olarak gelen tamsayının faktoriyelini gönderir. Bu fonksiyonun parametresi (n): /* klasik biçim */ int faktoriyel(n) int n int i=1, f=1; while(i<=n) f *= i++; return f; /* modern biçim */ int faktoriyel(int n) int i=1, f=1; while(i<=n) f *= i++; return f;

FONKSİYON PARAMETRELERİ Bir fonksiyona parametre aktarım yapılması zorunlu değildir. Parametresiz bir fonksiyon da tanımlamak mümkündür. Bu durumda argümanlar kısmı ya boş bırakılır ya da bu kısma void yazılır. Örneğin standard C'de stdlib.h kütüphanesinde tanımlı rand fonksiyonu şöyle tanımlanmıştır: int rand(void);

FONKSİYON PARAMETRELERİ Son olarak, ne parametresi ne de geri dönüş değeri olan bir fonksiyon aşağıdaki gibi 2 ayrı şekilde tanımlanabilir: void mesaj_yaz() printf("hata olustu!..\n"); void mesaj_yaz(void) printf("hata olustu!..\n");