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

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

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

Dr. Fatih AY Tel:

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Ders 5: Temel Kütüphane Fonksiyonlar

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

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

Fonksiyonlar (Altprogram)

BİL-142 Bilgisayar Programlama II

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

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

C PROGRAMLAMA D İ L İ

Dr. Fatih AY Tel: fatihay@fatihay.net

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ü

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

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

Bilgisayar programlama III Fonksiyonlar

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

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.

MATEMATĠKSEL ĠġLEMLER

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı

Eln 1002 Bilgisayar Programlama II

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

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

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

Hafta 13 Fonksiyonlar

ALGORİTMA VE PROGRAMLAMA II

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

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

Yrd. Doç. Dr. Caner ÖZCAN

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

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

C dilinde if-else yapısı

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

HSancak Nesne Tabanlı Programlama I Ders Notları

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

ÜNİTE İÇİNDEKİLER HEDEFLER MATEMATİKSEL METOTLAR. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA. (Math Sınıfı ve Metotları)

Özyineleme (Recursion)

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

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

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

Imports ifadesi, program satırlarının en üstüne (Public Class satırından önce) yazılmalıdır. Aksi halde hata mesajı ile karşılaşılır.

Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek :

Yrd. Doç. Dr. Caner ÖZCAN

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

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

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

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

Programlama Dilleri 1. Ders 5: Göstericiler

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

ALGORİTMA VE PROGRAMLAMA I

Genel Programlama I Ders 5

ALGORİTMA VE PROGRAMLAMA I

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

Diziler (Arrays) Çok Boyutlu Diziler

3. ARİTMETİK FONKSİYONLAR ~ (~ tamsayı)

Bölüm 9. Altprogramlar ISBN

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

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

Göstericiler (Pointers)

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

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

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

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

11- FONKSİYONLAR (FUNCTIONS)

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

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

Genel Programlama I Ders 6

C++ Dersi: Nesne Tabanlı Programlama

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

Genel Programlama II

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

C Programlama Dilininin Basit Yapıları

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2. BÖLÜM (2nci hafta)

BM202 SAYISAL ÇÖZÜMLEME

BİLGİSAYAR PROGRAMLAMA MATLAB

Standart başlık dosyası bazı fonksiyonlar. Karakter Üzerinde İşlem Yapan Fonksiyonlar

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

Sunum İçeriği. Programlamaya Giriş

ELN1001 BİLGİSAYAR PROGRAMLAMA I

3. VERİ GİRİŞ-ÇIKIŞI (4ncü hafta)

Örneğin iki sayının toplamının hesaplayacak bir fonksiyon şöyle tanımlanabilir:

Genel Programlama II

C PROGRAMLAMA D İ L İ

Temel Giriş/Çıkış Fonksiyonları

BLM 111 ALGORİTMA VE PROGRAMLAMA I

PROGRAMLAMAYA GİRİŞ DERS 2

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

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

C PROGRAMLAMA DİLİNE GİRİŞ

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

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

Bilgisayar Programlama MATLAB

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

NESNEYE YÖNELİK PROGRAMLAMA

Fonksiyonlar -Genel Test- A

ÖZYİNELEME RECURSION. Yrd. Doç. Dr. Aybars UĞUR

Transkript:

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

Fonksiyonlar Bir ana program alt programlardan (prosedür, metot, alt yordam veya fonksiyonlardan) oluşabilir. Yapısal programlama dillerinde (Pascal, C, C++, Visual Basic gibi) bu küçük program parçacıklarını ifade eden kod grupları, alt program (sub program), altyordam (subroutine), modül (module), fonksiyon (function), metot (method) veya yordam (procedure) gibi isimlerle adlandırılmaktadır. C/C++ dillerinde bu alt programlar, fonksiyonlardan (functions) oluşurken Java dilinde ise yöntemlerden (metotlardan) oluşur. Yani C/C++ daki fonksiyon Java da metot adını alır diyebiliriz. Fonksiyonlar, belli bir işi gerçekleştirmek için tasarlanmış alt programlardır. Programın daha modüler olmasını sağlarlar.

Fonksiyonlar Kullanım : Birden fazla kez veya birden fazla yerde kullanılacak kodlar için fonksiyonları kullanırız. Fonksyionları kendimiz yazabildiğimiz gibi; C/C++ kütüphaneleri ile gelen hazır fonksiyonları da kullanabiliriz. (sqrt(), printf(), scanf() vb...)

Fonksiyonlar Giriş parametreleri alabilen ve çeşitli işlemler yapıp sonuçta bir takım sonuçlar üreten ve Çıkış değerleri döndürebilen kod parçalarına Fonksiyon diyoruz. Girdiler Parametreler FONKSİON Çıktılar Geri Dönüş Değeri (Return Value)

Fonksiyonlar Fonksiyonların girdilerine Parametreler ya da Argümanlar denir. Bir fonksiyon çalıştığında; Çalışması esnasında belli amaçları yerine getirir. Çalışmasının sonunda bir değeri de kendisini çağıran fonksiyona geri döndürebilir.

Return komutu Fonksiyonun geriye döndüreceği değeri oluşturan komuttur. Aynı zamanda fonksiyonu sonlandıran komuttur. Örnek return tanımlamaları; return; //fonksiyonun geri dönüş değeri yok, fonk. sonlandırır return 6; //fonksiyonun geri dönüş değeri sabit (6) return a++; //fonksiyonun geri dönüş değeri değişken (a+1) return (a*b); //parantez kullanmayabilirsiniz! return (a%2)? 0: 1; //a nın 2 ye bolunmesine göre geriye 0 //yada 1 değerlerini döndürüyor return fakt(); /*fonksiyonun geri dönüş değeri, başka bir fonksiyonun geri dönüş değeri*/

Fonksiyon Tanımlama Fonksiyonları parametreli veya parametresiz fonksiyonlar olarak sınıflandırabiliriz. Parametreli fonksiyonlar geriye değer döndüren fonksiyonlardır. Parametresiz fonksiyonlar ise geriye bir değer döndürmezler. Parametresiz fonksiyonlar, sadece komutları işlerken, parametreli fonksiyonlar işletilen komutlara ek olarak geriye bir değer gönderirler yani bir sonuç üretirler. Esasında herhangi bir değer geriye döndürmeyen (dönüş tipinde void deyimi olan) fonksiyonlara alt program da denebilir. Geriye dönüş değeri return deyiminin yanında belirtilir. Ayrıca return deyimi, fonksiyonun icrasını sonlandırmak amacıyla da kullanılabilir.

Fonksiyon Tanımlama Geri dönüşsüz ve Parametresiz fonksiyon tanımlaması void fonksiyon_ismi () İfade ve işlemler-1; İfade ve işlemler-1; Geriye değer döndüren ve Parametreli fonksiyon tanımlaması Dönüş Tipi fonksiyon_ismi ( Parametreler ) İfade ve işlemler-1; İfade ve işlemler-1; return (değişken veya değeri) Geriye bir değer döndürülmeyecekse void terimi kullanılır.

Fonksiyonlar Bir fonksiyon çalışması sonunda onu çağıran fonksiyona dönüşünde return ile değer gönderir. Geri Dönüş Değeri bir değişkene atanabilir veya doğrudan aritmetik işlemlerde kullanılabilir. Örneğin; x = fonk(); burada önce fonk isimli fonksiyon çalıştırılır; çalışma sonunda elde edilen değer x değişkenine atanır.

Örnek Uygulama-1: Fonksiyonların Tanımlanması void imza() //Parametresiz ve geriye değer döndürmeyen bir fonksiyon printf("b. Cobanoglu, SAU\n"); int yas(int yil) //Parametreli ve geriye değer döndüren bir fonksiyon return yil-1974;

Örnek Uygulama-1: (Devam) Fonksiyonların Çağrılması Fonksiyon çağırma operatörü olarak () kullanılır. int main() imza(); printf ("Yas..: %d", yas(2013));

Örnek Uygulama-2: #include<stdio.h> #include<conio.h> //Menu fonksiyonu void menu() printf("\n[0].topla\n"); printf("\n[1].cikar\n"); printf("\n[2].carp\n"); printf("\n[3].bol\n"); //Hesapla fonksiyonu int Hesapla(int a, int b, int op) if(op==0) return a+b; else if(op==1) return a-b; else if(op==2) return a*b; else return a/b; //Ana program int main() int a,b,o; double sonuc; menu(); printf("\niki sayi giriniz..:\n"); scanf ("%d %d",&a,&b); printf("\nsecimini gir..:\n"); scanf ("%d",&o); sonuc=hesapla(a,b,o); printf("\nsonuc=%g", sonuc ); getch();

Örnek Uygulama-3: #include <stdio.h> #include <conio.h> int faktoriyel(int n) int i,f=1; for (i=n; i>=1; i--) f=f*i; return f; int main(void) int n; printf(" Faktoriyeli alinacak sayi..: "); scanf ("%d",&n); printf ("%d!=%d",n,faktoriyel(n)); getch();

Başlık dosyaları (Header Files) Yrd.Doç.Dr.Bülent Çobanoğlu

Matematiksel Fonksiyonlar Fonksiyon Açıklama Örnek fabs( x ) x sayısının mutlak değerini verir. abs( -23.7 ) = 23.7 ceil( x ) x sayısını bir üst tamsayıya dönüştürür. Sonuç double türdedir. ceil(9.2) = 10.0 ceil(-9.8) = -9.0 floor( x ) x sayısını bir alt tamsayıya dönüştürür. Sonuç double türdedir. floor(9.2) = 9 floor(-9.8) = -10 round(x) x sayısını en yakın tamsayıya tamamlar. Sonuç int ya da long türdedir round(9.2) = 9 round(9.8) = 10 rint(x) x sayısını en yakın tamsayıya tamamlar. Sonuç double türdedir. rint(9.2) = 9.0 rint(9.8) = 10.0 cos( x ) x in radyan cinsinden trigonometrik kosinüsünü hesaplar. cos(0.0) =1.0 sin(x) x in radyan cinsinden trigonometrik sinüsünü hesaplar. sin(0.0) =0.0 tan(x) x in radyan cinsinden trigonometrik tanjantını hesaplar. tan(1.0)=1.557040724 acos(x) x in radyan cinsinden kosinüsünün tersini hesaplar. x,1 den büyük ise NaN sonucunu üretir. acos(1.0) =0.0 asin(x) x in radyan cinsinden sinüsünün tersini hesaplar. x,1 den büyük ise NaN sonucunu üretir. asin(1.0) =1.570796 atan(x) x in radyan cinsinden arc tanjantını hesaplar. atan(45) =1.54857776 exp( x ) Doğal logaritma parametresi olan e'nin üstel değerini (e x ) hesaplar. exp(1.0) =2.71828182 log( x ) e tabanına göre x in logaritmasını alır log(2.71828182)=1.0 max( x, y ) x ve y nin büyük olanını verir. max(2.0, 4.0)=4.0 min( x, y ) x ve y nin küçük olanını verir. max(2.0, 4.0)=2.0 pow( x, y ) x in y inci kuvvetini verir. pow(2,3)=8.0 sqrt( x ) X in kara kökünü verir sqrt( 9.0 ) = 3.0 M_PI rand() Pi sayısını verir 0 ile RAND_MAX arasında rastgele sayı üretir. (stdlib.h kütüphanesine ihtiyaç duyar) srand (time(0)); fonksiyonu ile sürekli değeri değişen sayılar üretir. 1+rnd()*6 // 1 ile 6 arasında sayi üretir

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

Özyineleme (Recursion) Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyinelemeli (recursive) fonksiyonlar adı verilir. Orijinal problemin küçük parçalarını çözmek için, bir alt programın kendi kendini çağırmasını sağlayarak, tekrarlı işlemlerin çözümüne farklı bir bakış açısı getirir. Özyinelemeli fonksiyonlar algoritma tasarımını basitleştirir ancak tekrarlı yapılara göre fonksiyon çağırma sayısı arttığı için bellek alanı da artar. Özyineleme, en genel anlamıyla bir yapının kendi kendine atıfta bulunmasıdır. Özellikle matematik ve bilgisayar biliminde kullanılır. Özyinelemeli fonksiyonu anlamak için Faktöriyel fonksiyonunu tekrar incelersek; verilen pozitif bir n tamsayısı için n faktöriyel, n! şeklinde gösterilir ve n ile 1 arasındaki tüm tamsayıların çarpımına eşittir. n!=n (n-1) (n-2) (n-3).. 1

Örnek: Özyineleme (Faktöriyel) #include <stdio.h> #include <conio.h> int faktoriyel(int n) if (n <= 1) return n; else return (n* faktoriyel(n-1)); int main(void) printf("faktoriyeli alinacak sayi..: "); scanf ("%d",&n); printf ("%d", faktoriyel(n)); getch();

Örnek: Özyineleme (Recursion) #include <stdio.h> #include <conio.h> int topla(int n) if (n <= 1) return n; else return (n + topla(n-1)); int main(void) int n; printf("n! sayilarinin toplami..: "); scanf ("%d", &n); printf ("%d", topla (n)); getch();

Her elemanı kendisinden önceki iki elemanın toplamı şeklinde ifade edilen fibonacci serisinin n. eleman değerini özyinelemeli fonksiyon ile bulan programı yazınız. #include <stdio.h> #include <conio.h> int fibonacci(int n) int fib; if (n == 0 n ==1) fib = n; else fib = fibonacci(n - 1) + fibonacci(n - 2); return fib; int main(void) printf("kacinci eleman..:"); int n; scanf("%d",&n); printf("%d.eleman:%d",n,fibonacci(n)); getch();

Örnek : 0 dan 90º ye kadar açıların 5 er derecelik aralarla sinüslerini hesaplayacak ve yazdıracak programı yazınız. Sin x fonksiyonunun x=a noktasındaki Taylor serisine açılımını kullanarak hesaplayacağız. Serinin ilk 15 terimi alınmıştır (n=15 ) Yrd.Doç.Dr.Bülent Çobanoğlu

Rasgele sayi üretimi #include <stdio.h> #include <conio.h> int main() int n,sayi; //0 ile 50 arasında 10 adet rasgele sayi for (n=1; n<=10; n++) sayi=rand()%50; printf ("%d ",sayi); getch(); //her çalışmada farklı sayilar çıkması için #include <stdio.h> #include <conio.h> #include <time.h> int main() int n,sayi; srand (time(null)); for (n=1; n<=10; n++) sayi=rand()%50; printf ("%d ",sayi); getch();

Sayı Tahmin Oyunu 1 ile 99 arasında bilgisayarın tuttuğu sayıya göre kullanıcıyı yönlendiren ( daha küçük sayı giriniz veya daha büyük sayı giriniz biçiminde) ve kaç defa da sayıyı bulduğunu ekranda gösteren bir sayı tahmin oyunu programını yazınız.