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

Benzer belgeler
Hafta 13 Fonksiyonlar

Yrd. Doç. Dr. Caner ÖZCAN

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

Hafta 12 Karakter Tutan Diziler

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

Yrd. Doç. Dr. Caner ÖZCAN

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

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

Yrd. Doç. Dr. Caner ÖZCAN

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

Yrd. Doç. Dr. Caner ÖZCAN

Dr. Fatih AY Tel:

Hafta 11 Çok Boyutlu Diziler

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

Yrd. Doç. Dr. Caner ÖZCAN

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

Yrd. Doç. Dr. Caner ÖZCAN

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

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ı

PROGRAMLAMAYA GİRİŞ DERS 2

Dr. Fatih AY Tel: fatihay@fatihay.net

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

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

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

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

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

Diziler (Arrays) Çok Boyutlu Diziler

Fonksiyonlar (Altprogram)

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

Dr. Fatih AY Tel: fatihay@fatihay.net

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

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

ALGORİTMA VE PROGRAMLAMA I

Hafta 4 Döngü Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

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

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

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

Hafta 5 Algoritma Örnekleri ve Analizi

Göstericiler (Pointers)

BİL1001 Bilgisayar Bilimlerine Giriş 1

ALGORİTMA VE PROGRAMLAMA I

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

C++ Dersi: Nesne Tabanlı Programlama

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

Yrd. Doç. Dr. Caner ÖZCAN

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Bigisayar Programlama

Bölüm 9. Altprogramlar ISBN

Özyineleme (Recursion)

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

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

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

Giriş. ENF102 Jeoloji

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)

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ü

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

Yrd. Doç. Dr. Caner ÖZCAN

BİL-142 Bilgisayar Programlama II

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

1 PROGRAMLAMAYA GİRİŞ

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

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

Pointer Kavramı. Veri Yapıları

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

ALGORİTMA VE PROGRAMLAMA II

Bilgisayar Programlama. 1.Hafta

C++ Dersi: Nesne Tabanlı Programlama

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

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

FONKSIYONLAR(ISLEVLER)

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

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

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

Lambda İfadeleri (Lambda Expressions)

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

BİLG Dr. Mustafa T. Babagil 1

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

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

BİL-142 Bilgisayar Programlama II

C++ Dersi: Nesne Tabanlı Programlama

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

Temel Bilgisayar Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

C++ Dersi: Nesne Tabanlı Programlama

BİLGİSAYAR PROGRAMLAMA

Programlama Dillerinde Kullanılan Veri Tipleri

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

C Programlama Dili (MCS116) Ders Detayları

Transkript:

BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/

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 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. 11

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. 12

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. 13

Fonksiyon Parametre Terfi Kuralları 14

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. 15

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ı 16

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 17

Matematik Fonksiyonları 18

Matematik Fonksiyonları 19

Örnek: Kare alan fonksiyon 20

Örnek: Dört İşlem 21

Örnek: Üs alma 22

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. 23

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 ) 24

Dizilerin Fonksiyonlara Gönderilmesi 25

Dizilerin Fonksiyonlara Gönderilmesi 26

Dizilerin Fonksiyonlara Gönderilmesi 27

Dizilerin Fonksiyonlara Gönderilmesi 28

Ç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); 29

Çok Boyutlu Dizileri Fonksiyonlara Gönderme 30

Çok Boyutlu Dizileri Fonksiyonlara Gönderme 31

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ı 32