Professional Documents
Culture Documents
•HAZIR FONKSİYONLAR
•KULLANICI TANIMLI FONKSİYONLAR
•LOCAL , GLOBAL VE STATIC TANIMLI DEĞİŞKENLER VE FONKSİYONLARDAKİ
YERLERİ
•ÖZYİNELEMELİ-RECURSIVE FONKSİYONLAR
•ŞABLON(TEMPLATE) FONKSİYONLAR
1
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Büyük ölçekli yazılımları/programları tek bir parça olarak
geliştirmek hem zordur, hem de yazılım kalitesi açısından
sakıncalıdır. Tek bir parçadan kasıt, binlerce hatta, on
binlerce kod satırlık uzun bir yazılımı/programı sadece
tek bir işlev (main() işlevi vb.) olarak kodlamak anlamına
gelmektedir(bkz:spaghetti coding).
3
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Bu yöntem aynı zamanda yukarıdan aşağı(top
down) problem çözme tekniği (diğer adıyla
böl&yönet/divide&conquer) olarak da bilinir.
4
YAPISAL PROGRAMLAMA VE
FONKSİYONLAR
Yapısal programlama;
böl&yönet/divide&conquer problem çözme
yaklaşımına göre programlar geliştirmeyi
sağlar. Bu programlama sürecinde alt
problemlerden her biri, birer fonksiyon olarak
tasarlanır ve kodlanır.
Yapısal bir dil olarak C Programlama Dili,
fonksiyon olarak adlandırılan alt programların
birleştirilmesi(top down) kavramına dayanır.
5
FONKSİYON NEDİR?
Fonksiyon; belli sayıda giriş verisini kullanarak,
bunları işleyen ve bir sonuç üreten
komutlardan meydana gelen program
parçasıdır.
6
FONKSİYON NEDİR?
Her fonksiyonun bir adı ve fonksiyonun gelen
değerleri gösteren girdi parametreleri
(bağımsız değişkenleri) vardır.
7
FONKSİYON NEDİR?
• Fonksiyonların girdilerine parametreler yada
argumanlar denir.
• Bir fonksiyon girdi parametreleri alıp, bir
işleme tabi tutar ve bir sonuç elde eder. Bu
sonuca fonksiyonun çıktısı denilir. Bu çıktı
değeri geri dönüş değeri (return value) olarak
adlandırılır. Bir fonksiyonun kaç girişi olursa
olsun sadece bir çıkışı vardır.
8
FONKSİYON NEDİR?
• Aşağıda tek ve iki parametreli(girişli) iki
fonksiyonun gösterimi verilmiştir.
Tek parametreli
F(x)= sqrt(x) fonksiyonu:
İki parametreli
F(x,y) = fonksiyonu:
9
C PRG.DİLİ HAZIR FONKSİYON
KÜTÜPHANELERİ
• Bir C programı bir yada daha çok fonksiyonun
bir araya gelmesi ile oluşur. C Dilini öğrenmek
için ilk önce fonksiyon oluşturmayı ve onların
diğerleri ile birlikte kullanılmasını öğrenmek
gerekir. Aşağıda C prg. Dili hazır fonksiyon
kütüphanelerinin bazıları yer almaktadır:
10
C PRG.DİLİ HAZIR FONKSİYON
KÜTÜPHANELERİ
1. C DİLİNDE MATEMATİK FONKSİYONLARI
1.1. Üs – Kök – Logaritma Fonksiyonları
1.2. Trigonometrik Fonksiyonlar
1.3. Sayı Fonksiyonları
11
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• C programlama dilinde matematiksel
fonksiyonlar math.h kütüphane dosyasında
bulunurlar.
• Math kütüphanesinde tanımlı fonksiyonların
sayısı oldukça fazladır.
12
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
13
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
14
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
15
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• sin() fonksiyonu : Verilen bir açının sinüs
değerini hesaplar.
• Genel tanımı double sin(double x) şeklinde,
örnek bir kullanımı ise y = sin(x); şeklindedir.
• Bu fonksiyonla ve diğer trigonometrik
fonksiyonlarla ilgili bilinmesi gereken önemli
nokta, fonksiyonların parametre olarak aldığı
açı değerinin derece cinsinden değil radyan
cinsinden verilmesi gerektiğidir.
16
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• cos() fonksiyonu : Bir trigonometri fonksiyonudur.
Radyan cinsinden verilen bir açının kosinüs
değerini hesaplar. Genel tanımı double
cos(double x) şeklinde, örnek bir kullanımı ise
y = cos(x); şeklindedir.
• tan() fonksiyonu : Bir trigonometri
fonksiyonudur. Radyan cinsinden verilen bir
açının tanjant değerini hesaplar. Genel tanımı
double tan(double x) şeklinde, örnek bir
kullanımı ise y = tan(x); şeklindedir.
17
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• asin() fonksiyonu : Sinüs değeri verilen açının
radyan karşılığını bulur.
• Genel tanımı double asin(double x) şeklinde,
örnek bir kullanımı ise y = asin(x); şeklindedir.
• Bu fonksiyonla ilgili dikkat edilmesi gereken nokta
parametre olarak girilecek değerlerin -1 ile +1
arasında olması gerektiğidir. Çünkü açı hangi
değerde olursa olsun sinüsü -1 ile +1 arasındadır.
• Bu durum acos() fonksiyonu için de geçerlidir.
18
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
• acos() fonksiyonu : Kosinüs değeri verilen
açının radyan karşılığını bulur.
• Genel tanımı double acos(double x) şeklinde,
örnek bir kullanımı ise y = acos(x); şeklindedir.
20
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
21
C DİLİNDE HAZIR MATEMATİK
FONKSİYONLARI
22
C DİLİNDE HAZIR
STRING FONKSİYONLAR
• ARAŞTIRINIZ ?…
23
C DİLİNDE HAZIR
GRAFİK FONKSİYONLAR
ARAŞTIRINIZ ?…
24
C DİLİNDE HAZIR
ÖZEL TANIMLI FONKSİYONLAR
• Yukarıda özetlenen hazır fonksiyonların yanı
sıra, C programlama dili programlama
problemine özel durumları fonksiyon olarak
kodlayabilme olanağı sağlar.
• Böl/Yönet problem çözme tekniğine uygun
program geliştirmede alt problemlerin her biri
birer program parçası olarak Özel Tanımlı
Fonksiyonlarla sağlanır.
25
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
fonksiyon-türü fonksiyon-adı ( girdi-parametre-listesi ) {
yerel-tanımlamalar;
komutlar;
……
…..
return dönüş_değeri;
}
26
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Burada ;
• fonksiyon-türü : fonksiyonun döndüreceği değerin veri türünü
gösterir.
• fonksiyon-adı: fonksiyona verilen bir isimdir.
• girdi-parametre-listesi : fonksiyonun kaç tane girdi parametre
alacağını ve parametrelerin veri türlerini gösterir.
• yerel-tanımlamalar :Fonksiyonun kullanacağı yerel
(local)değişkenlerdir.
• Komutlar: Fonksiyonun işlevini yerine getirmesini sağlayacak
komutlardır.
• return dönüş_değeri: Fonksiyondan elde edilen değerin çağıran
yere gönderilmesini sağlar.
27
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek:
double topla (double x,double y)
{
/*iki ondalıklı sayının toplamını hesaplayıp, sonucu çağıran yere ondalıklı bir sonuç
olarak gönderen fonksiyon*/
double t;
t=x+y;
return t;
}
28
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek:
int kubunu_al (int a) {
/*bir tam sayının küpünü hesaplayıp, sonucu çağıran yere tamsayı bir sonuç olarak
gönderen fonksiyon*/
int k;
k=a*a*a;
return k;
}
29
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek:
int kubunu_al (int a) {
/*bir tam sayının küpünü hesaplayıp, sonucu çağıran yere tamsayı bir sonuç
olarak gönderen fonksiyon*/
return a*a*a;
}
30
ÖZEL TANIMLI FONKSİYON
NASIL TANIMLANIR?
Örnek
31
FONKSİYON TİPLERİ
void Fonksiyonlar:
• DEĞER DÖNDÜRMEYEN FONKSİYONLAR
• GİRDİ PARAMETRESİZ FONKSİYONLAR
void olmayan Fonksiyonlar:
• DEĞER DÖNDÜREN FONKSİYONLAR
• GİRDİ PARAMETRELİ FONKSİYONLAR
32
void Fonksiyonlar
33
void Fonksiyonlar
Örnek:
34
void Fonksiyonlar
Örnek:
35
Fonksiyon Girdi Parametresi
37
Değişken Kapsamı-Faaliyet Alanı
Örnek:
#include <stdio.h>
void a( void ); /* fonksiyon prototipi*/
void b( void ); /* fonksiyon prototipi */
void c( void ); /* fonksiyon prototipi */
int x = 1; /* global değişken */
38
Değişken Kapsamı-Faaliyet Alanı
Örnek:
int main( )
{
int x = 5; /* main’e yerel değişken */
printf ("main’in faaliyet alanı dışındaki yerel x değişkeni %d olur.\n", x );
{ /* yeni faaliyet alanına başla */
int x = 7;
printf( "main’in faaliyet alanı içindeki yerel x değişkeni %d olur.\n", x );
} /* yeni faaliyet alanını bitir*/
39
Değişken Kapsamı-Faaliyet Alanı
Örnek:
void a( void ) {
int x = 25; /* a her çağrıldığında ilk değeri atanır */
printf( "\na’ya girildikten sonra yerel x %d olur.\n", x );
++x;
printf( "a’dan çıkmadan önce yerel x %d olur.\n", x ); }
void b( void ) {
static int x = 50; /* sadece static ilk değer atama */
/* b’nin ilk çağırılması */
printf( "\nb’ye girerken static x %d olur.\n", x );
++x;
printf( "b’den çıkarken önce static x %d olur.\n", x ); }
void c( void ) {
//int x = 1;
printf( "\nc’ ye girerken global x %d olur.\n", x );
x *= 10;
printf( "c’ den çıkarken global x %d olur.\n", x ); }
40