Hafta 13 Fonksiyonlar

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

Yrd. Doç. Dr. Caner ÖZCAN

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

Yrd. Doç. Dr. Caner ÖZCAN

Hafta 12 Karakter Tutan Diziler

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

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

Hafta 11 Çok Boyutlu Diziler

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

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

Dr. Fatih AY Tel:

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

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

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

Hafta 4 Döngü Yapıları

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

PROGRAMLAMAYA GİRİŞ DERS 2

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Yrd. Doç. Dr. Caner ÖZCAN

Diziler (Arrays) Çok Boyutlu Diziler

Yrd. Doç. Dr. Caner ÖZCAN

Dr. Fatih AY Tel: fatihay@fatihay.net

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Dr. Fatih AY Tel: fatihay@fatihay.net

Yrd. Doç. Dr. Caner ÖZCAN

Fonksiyonlar (Altprogram)

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

BLM 112- Programlama Dilleri II. Hafta 1 Giriş, Kapsama Kuralları ve Rasgele Sayı Üretimi

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

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

Hafta 5 Algoritma Örnekleri ve Analizi

ALGORİTMA VE PROGRAMLAMA I

Göstericiler (Pointers)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

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

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

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

Özyineleme (Recursion)

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

BİL1001 Bilgisayar Bilimlerine Giriş 1

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

HSancak Nesne Tabanlı Programlama I Ders Notları

ALGORİTMA VE PROGRAMLAMA I

C++ Dersi: Nesne Tabanlı Programlama

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

11- FONKSİYONLAR (FUNCTIONS)

Giriş. ENF102 Jeoloji

10/17/2007 Nesneye Yonelik Programlama 3.1

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

HSancak Nesne Tabanlı Programlama I Ders Notları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

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

Bölüm 9. Altprogramlar ISBN

C++ Dersi: Nesne Tabanlı Programlama

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

BİL-142 Bilgisayar Programlama II

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Nesne Yönelimli Programlama

Bigisayar Programlama

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

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

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

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

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

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

Pointer Kavramı. Veri Yapıları

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

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Programlama Dillerinde Kullanılan Veri Tipleri

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

1 PROGRAMLAMAYA GİRİŞ

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

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

BİLG Dr. Mustafa T. Babagil 1

Lambda İfadeleri (Lambda Expressions)

FONKSIYONLAR(ISLEVLER)

ALGORİTMA VE PROGRAMLAMA II

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

BİLGİSAYAR PROGRAMLAMA

BİL-142 Bilgisayar Programlama II

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

C++ Dersi: Nesne Tabanlı Programlama

Transkript:

BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN

Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar. C standart kütüphanesi zengin bir fonksiyon çeşitliliğine sahiptir. 2

Fonksiyonların Faydaları Fonksiyonları faydaları Böl ve yönet Küçük parçalar veya bileşenlerden program oluştur. Bu küçük parçalara modül denir. Fonksiyonlar bir programı modüler hale getirir. Her bir modül programın kendisinden daha yönetilebilirdir. Yazılımın tekrar kullanılabilirliği Mevcut fonksiyonlarınızı yeni bir program yapımında kullanabilirsiniz Soyutlama iç detaylar gizlenir(kütüphane fonksiyonları) Kod tekrarı önlenir. 3

Fonksiyonlar Fonksiyonlar içinde tanımlanan tüm değişkenler yerel değişkenlerdir Sadece tanımlandıkları fonksiyon içinde geçerlidirler Parametreler Fonksiyonlar ile haberleşmede kullanılan bilgi Yerel değişkendirler Fonksiyon çağırılması Fonksiyon ismini ve argümanlarını (veri) belirt. Fonksiyonlar birtakım işlemler gerçekleştirir. Fonksiyonlar sonuç döndürürler 4

Fonksiyonlar Fonksiyon çağırma analojisi Patron işçiden bir işi yapmasını ister İşçi bilgi toplar, işi yapar ve sonucu patrona bildirir. Bilgi gizleme: patron işin detaylarını bilmez. 5

Fonksiyon Tanımlama Fonksiyon tanımlama formatı: Geri_dönüş_değer_tipi fonksiyon _adı ( parametre-liste ) { tanımlamalar ve ifadeler } Fonksiyon-adı herhangi bir geçerli tanımlayıcı olabilir Geri dönüş değer tipi fonksiyonu çağırana döndürülen sonucun veri tipidir. Geri dönüş değer tipi void ise fonksiyon herhangi bir değer döndürmez. Geri dönüş değer tipi, fonksiyon_adı ve parametre-liste üçlüsü fonksiyon başlığı (header) 6

Fonksiyon Tanımlama parametre-liste fonksiyonun çağırılırken aldığı parametreleri tanımlayan, virgülle birbirinden ayrılmış bir listedir. Eğer fonksiyon herhangi bir parametre almıyorsa, parametre listesi void olur. Her bir parametrenin tipi belirtilmelidir. 7

Fonksiyon Tanımlama Kırlangıç parantezler arasındaki Tanımlamalar ve ifadeler fonksiyon gövdesi. Fonksiyon gövdesinin diğer bir adı blok. Değişkenler herhangi bir blok içerisinde tanımlanabilir ve bloklar iç içe olabilir. Bir fonksiyon diğer bir fonksiyonun içerisinde tanımlanamaz. 8

Fonksiyon Tanımlama Çağırılan bir fonksiyondan, fonksiyonun çağırıldığı noktaya kontrolün iade edilmesinin üç yöntemi vardır. Eğer fonksiyon herhangi bir sonuç döndürmüyorsa, Sağ kırlangıç parantez ile kontrol iade edilmiş olunur. Ya da basitçe return; ifadesi çalıştırılır. Eğer fonksiyon bir sonuç döndürüyorsa, return ifade; İfadenin değerini fonksiyonu çağırana döndürür. 9

Fonksiyon Tanımlama 10

Fonksiyon Tanımlama 11

Fonksiyon Prototipi Bir fonksiyonun künyesidir. Eğer fonksiyon tanımlaması çağırımdan sonra ise prototip tanımlanmalıdır. Aşağıdaki prototipe sahip fonksiyon int maximum( int x, int y, int z ); 3 tamsayı parametre alır. Geriye tamsayı döndürür. 12

Fonksiyon Prototipi Bir fonksiyon çağırımı prototipi ile uyuşmuyorsa derleme hatası oluşur. Eğer fonksiyon prototipi ile fonksiyon tanımlaması uyuşmuyorsa da hata oluşur. Fonksiyon prototiplerinin diğer bir önemli özelliği ise argümanların uygun bir veri tipine zorlanmasıdır. Örneğin, matematik fonksiyonu sqrt <math.h> içerisinde yer alan prototipinde double belirtilmiş olsa da integer argümanla da çağırılabilir. Fonksiyon yine de doğru çalışacaktır printf( "%.3f\n", sqrt( 4 ) ); İfadesindeki sqrt( 4 ) doğru bir şekilde değerlendirilir ve 2.000 değeri yazdırılır. 13

Fonksiyon Parametre Terfi Kuralları Genelde, fonksiyon prototipindeki parametre tiplerine tam uymayan argüman değerleri fonksiyon çağırılmadan önce uygun tiplere dönüştürülürler. Eğer C nin terfi kuralları takip edilemez ise bu dönüşümler yanlış sonuçlar doğurabilir. Terfi kuralları veri kaybı yaşamadan bir veri tipinden diğerine dönüşüm kurallarını tanımlar. 14

Fonksiyon Parametre Terfi Kuralları 15

Başlık Header Dosyaları Kütüphane fonksiyonlarının prototiplerini barındırırlar. <stdlib.h>, <math.h>, vs #include <dosya_adı> ile yüklenir. #include <math.h> Özel başlık dosyaları Fonksiyonlar içeren bir dosya oluştur. dosya_adı.h şeklinde isim ile kaydet. Başka dosyalar içerisinde #include dosya_adı.h olarak yükle. Fonksiyonları tekrar kullan. 16

Başlık Header Dosyaları math.h Matematik kütüphanesi ctype.h Karakter özellikleri, küçük büyük harfe çevirme vs. stdio.h Standart giriş / çıkış fonksiyonları stdlib.h Sayıyı metnei metni sayıya dönüştürme, hafıza yönetimi, rasgele sayılar ve bazı diğer faydalı fonksiyonlar. string.h String işlemleri time.h Zaman ve tarih fonksiyonları 17

Matematik Fonksiyonları Matematik kütüphane fonksiyonları Temel matematik hesaplamaları yapar. #include <math.h> Fonksiyonları çağırmak için kullanılacak format FonksiyonAdı( argümanı ); Eğer birden fazla argüman varsa, aralarında virgül kullan Tüm matematik fonksiyonlar double veri tipi döndürür Argümanlar sabit, değişken veya ifade olabilir 18

Matematik Fonksiyonları 19

Matematik Fonksiyonları 20

Saklama Sınıfları Nesne kendi bloğu içinde oluşturulur ve yok edilir auto: yerel değişkenler için ön tanımlıdır auto double x, y; register: değişkeni yüksek hızlı kaydedicilere yerleştirmeye çalışır register int counter= 1; 21

Saklama Sınıfları Statik Saklama Değişken tüm programın çalışması sürecinde var olur. Ön tanımlı değeri sıfırdır. static: fonksiyonlar içinde tanımlanan yerel değişkenlerdir. Fonksiyon sonlandıktan sonra değişken değeri saklanır Sadece tanımlandıkları fonksiyonda geçerlidirler 22

Saklama Sınıfları Dosya kapsama alanı Bir fonksiyon dışında tanımlanan bir tanımlayıcı dosya kapsama alanına sahiptir. Böyle bir tanımlayıcı tanımlandıkları noktadan itibaren dosya sonuna kadar tüm fonksiyonlar içinde geçerlidir Global değişkenler, fonksiyon tanımlamaları hep dosya kapsama alanına sahiptir. 23

Saklama Sınıfları Blok Alanı Blok içinde tanımlanan tanımlayıcılar Blok alanı tanımlandığı noktadan başlar sağ kırlangıç paranteze kadar devam eder. Değişkenler, yerel değişkenler ve fonksiyonlar için kullanılır. Dış bloklar eğer iç blokta aynı isimle değişken varsa iç bloktan gizlenirler. 24

Saklama Sınıfları 25

Saklama Sınıfları 26

Saklama Sınıfları 27

Saklama Sınıfları 28

Örnek: Kare alan fonksiyon 29

Örnek: Dört İşlem 30

Örnek: Üs alma 31

Dizilerin Fonksiyonlara Gönderilmesi Bir diziyi bir fonksiyona parametre olarak göndermek için parantez kullanmadan sadece dizinin ismi belirtilir. int myarray [ 24 ]; myfunction ( myarray, 24); Char dizilerinin aksine diğer türdeki diziler her hangi bir sonlandırma karakteri içermezler. Bu sebeple fonksiyonlara dizideki eleman sayısıda parametre olarak gönderilir ki, fonksiyon uygun sayıda eleman üzerinde işlem yapsın. 32

Dizilerin Fonksiyonlara Gönderilmesi Dizilerin fonksiyonlara gönderilmesi referans ile çağırma işlemidir (call by reference). Dizinin adı aslında ilk elemanının adresidir. Fonksiyon böylece dizinin ilk elemanının hafıza nerede olduğunu bilir. Orijinal hafıza bölgesinde işlem yapılır. Dizideki her hangi bir elemanın fonksiyona gönderilmesi ise değer ile çağırmadır (call by value). Fonksiyona herhangi bir indisteki elemanın değeri gönderilir myarray [3] Bir int dizi ve bir int değeri parametre olarak alan fonksiyon prototipi; void myarray (int [ ], int ) 33

Dizilerin Fonksiyonlara Gönderilmesi 34

Dizilerin Fonksiyonlara Gönderilmesi 35

Dizilerin Fonksiyonlara Gönderilmesi 36

Dizilerin Fonksiyonlara Gönderilmesi 37

Çok Boyutlu Dizileri Fonksiyonlara Gönderme Tek boyutlu dizileri fonksiyona göndermekten farklı değildir. Her bir boyut için köşeli parantez kullanın, ilk boyut hariç diğerleri için büyüklük belirtin. void writematrice (int [ ] [ 4 ], int rownumber); Bu tanımlama 4 sütuna sahip her matris için farklı satır numaralarına sahip olsalar da geçerli olur. void writematrice (int [ ] [ 3 ] [ 4 ], int rownumber); 38

Çok Boyutlu Dizileri Fonksiyonlara Gönderme 39

Çok Boyutlu Dizileri Fonksiyonlara Gönderme 40

Kaynaklar Doç. Dr. Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık, 12. Baskı, 2015. J. G. Brookshear, Computer Science: An Overview 10th Ed., Addison Wisley, 2009. Kaan Aslan, A dan Z ye C Klavuzu 8. Basım, Pusula Yayıncılık, 2002. Paul J. Deitel, C How to Program, Harvey Deitel. Bayram AKGÜL, C Programlama Ders notları 41