PROGRAMLAMADA FONKSİYONLAR
9. Sınıflar bilgisayar programlama dersi. Problem çözme süreci konusunun 4. Bölümü. Önceden tanımlı fonksiyonlar, fonksiyon oluşturma ve fonksiyonları kullanma.
Problem Çözme Süreci – 4
Problem çözme sürecinin bu bölümünde fonksiyonları tanıtacağız ve örnekler vereceğiz.
Programlama dillerinde iki çeşit fonksiyondan söz edebiliriz; hazır fonksiyonlar ve sonradan oluşturulan fonksiyonlar.
Hazır fonksiyonlar, programı yazdığımız programlama dilinin derleyicisi ile birlikte gelen ve bizzat o programlama dilini yazanların hazırlayarak programcıların hizmetine sundukları kodlardır. Bu fonksiyonlar bizim birçok işlemi her seferinde tekrar yazmamamızı sağlar. Örneğin, karekök ve üs alan fonksiyonlar, veritabanı bağlantıları, dosya okuma ve dosyaya yazma kodları bazıları çok uzun olan ve her seferinde her programcının aynı işlemleri ve yapması ve aynı kodları yazması gereken işlemlerdir. İşte programlama dilini yazanlar, bu fonksiyonları kendileri yazarak programcıları büyük bir külfetten kurtarmışlardır. Bu fonksiyonlar genellikle bir kütüphane sınıfında tanımlı fonksiyonlar şeklindedir.
C++ programlama dilinde bazı fonksiyonlara ve kullanımlarına bir göz atalım. Tabii örnek olması açısından birkaç tane vereceğiz. C++ programlama dilinin yüzlerce bu şekil fonksiyonları vardır.
double kok;
double us;
kok = 5;
us=3;
double uslu_sayi;
uslu_sayi= pow(kok,us);
cout<<uslu_sayi<<endl;
Yukarıda "uslu_sayi=pow(kok,us)" satırına dikkat ediniz.
"pow" fonksiyonu C++ dilinde kuvvet alma fonksiyonudur. Bu fonksiyona iki değer gönderdik; bunların 1. Cisi taban, ikincisi üstür. Fonksiyonun hesaplaması kokus şeklindedir. Bu fonksiyon aynı zamanda C++ nın matematiksel bir fonsiyonudur. Matematik hesapları yapan fonksiyonlar matematiksel fonksiyon olarak adlandırılır.
Pekii biz bu fonksiyon olmadan üslü sayıları hesaplayamazmıydık. Hesaplardık, aşağıdaki gibi bir kod yazmamız gerekirdi.
int main()
{
double kok;
double us;
kok = 5;
us=3;
double uslu_sayi;
uslu_sayi=Kuvvet(kok,us);
cout<<uslu_sayi<<endl;
return 0;
}
double Kuvvet(double taban, double kuvvet)
{
double sonuc=1;
for(int i=0; i<kuvvet; i++)
{
sonuc=sonuc*taban;
}
return sonuc;
}
Görüldüğü gibi üs alan bir fonksiyon yazdık, bu fonksiyona taban ve üssü gönderince sonucu alıyoruz. Burada "Kuvvet" ve "pow" fonksiyonlarına gönderdiğimiz kok ve us değişkenlerine fonksiyonun parameterleri denir. Kuvvet fonksiyonu iki adet double veri tipinde parametre almaktadır.
return sonuç;
Yukarıdaki ifade fonksiyonun döndürdüğü değeri ifade ediyor. Kuvvet fonksiyonu bir dizi işlem yaparak bir sonuç bulmakta ve bu sonucu döndürmektedir.
Bu kodu her seferinde yazmak sıkıcı olacaktır. Ama kendi kütüphanemizi oluşturursak, her seferinde yazmak zorunda kalmazdık.
Ama C++ dilini yazanlar bunu kendileri halletmiş.
Sanırız programlamada, hazır fonksiyonların ne işe yaradığını anladınız.
Şimdi birkaç örnek daha verelim.
Matematikte bir sayının karekökünü hesaplamayı biliyorsunuz. Bu hesaplama C++ ile aşağıdaki gibi yapılır.
double kok_ici=16;
double koklu_sayi;
koklu_sayi=sqrt(kok_ici);
cout<<koklu_sayi<<endl;
Bu kodlar 16’nın karekökünü ekrana yazdırır.
C++ dilinde length fonksiyonu bir dizinin eleman sayısını verir. string veri tipinin tuttuğu kelimeler bir karakter dizisidir. Aşağıda metin1 ve metin2 değişkenlerine “orta” ve “ogretim” kelimeleri atanmış daha sonra bu kelimeler birleştirilerek metin3 değişkenine yazılmıştır. Length() fonksiyonu ile bu değişkenin karakter sayısı alınarak ekrana yazdırılmıştır.
string metin1="Orta";
string metin2="Ogretim";
string metin3 = metin1 + " "+metin2;
int karakter_sayisi=metin3.length();
cout<<karakter_sayisi<<endl;
Dizi Fonksiyonları
1’den n’ye kadar olan sayıları bir değişkende tutmak ve istediğimiz biçimde kullanabilmek için bu sayıları dizi değişkenlere atarız. Dizi değişkenler her sayıyı bir indis numarası ile bellekte saklarlar.
Örneğin; 0, 2, 5, 9, 15, 65 sayılarını bir tek değişkende tutalım. Daha sonra bu sayılardan 5 ile 65’i toplayalım.
int dizi_degisken[]={0, 2, 5, 9, 15, 65 };
int toplam=dizi_degisken[2]+dizi_degisken[5];
cout<<toplam<<endl;
Yukarıdaki 3 satır ekrana 70 yazacaktır.
Dönüştürme Fonksiyonları
Bu fonksiyonlar; date, string, int, double tipi değişkenleri birbirine dönüştürmede kullanılan fonksiyonlardır. Her programlama dilinin kendine özgü dönüştürme fonksiyonları vardır.
İstatistiksel Fonksiyonlar
Maksimum, minimum gibi değerleri veren fonksiyonlardır.
Yardımcı Fonksiyonlar
Program dışındaki verilere erişim sağlayan fonksiyonlardır.
Aşağıda C++ ile örnek bir uygulama verilmiştir. Bu uygulamada birçok fonksiyon bir arada kullanılmıştır.
#include <iostream>
#include <math.h>
#include <string.h>
#include <sstream>
#include <stdio.h>
using namespace std;
double Kuvvet(double, double);
int main()
{
double kok;
double us;
kok = 5;
us=3;
double uslu_sayi;
//Üs Alma Fonksiyonu
uslu_sayi=pow(kok,us);
cout<<"5 in 3. Kuvveti = "<<uslu_sayi<<endl;
//Burada Üs Alma Fonksiyonunu Kendimiz Yazdık
kok=10;
us=4;
uslu_sayi=Kuvvet(kok,us);
cout<<"10'un 4. Kuvveti = "<<uslu_sayi<<endl;
double kok_ici=16;
double koklu_sayi;
//Karekök Alma Fonksiyonu
koklu_sayi=sqrt(kok_ici);
cout<<" 16 nin Karekoku = "<<koklu_sayi<<endl;
string metin1="Orta";
string metin2="Ogretim";
string metin3 = metin1 + " "+metin2;
//Karakter Sayısını Öğrenme
int karakter_sayisi=metin3.length();
cout<<"Metnin Karakter Sayisi = "<<karakter_sayisi<<endl;
//Dizi Tanımlama
int dizi_degisken[]={0, 2, 5, 9, 15, 65 };
int toplam=dizi_degisken[2]+dizi_degisken[5];
int dizi_uzunluk;
cout<<"Dizinin 3. ve 6. Elemanlarinin Toplami ="<<toplam<<endl;
string deger1;
string deger2;
deger1="21";
deger2="9";
int sayi1, sayi2;
std::istringstream(deger1)>>sayi1;
std::istringstream(deger2)>>sayi2;
int toplam2=sayi1+sayi2;
cout<<"Toplam = "<<toplam2<<endl;
int neg_sayi=-78;
//Mutlak Değer Alma
int mutlak_deger=abs(neg_sayi);
cout<<"-78 in mutlak degeri ="<<mutlak_deger<<endl;
return 0;
}
double Kuvvet(double taban, double kuvvet)
{
double sonuc=1;
for(int i=0; i<kuvvet; i++)
{
sonuc=sonuc*taban;
}
return sonuc;
}
Programlamada Veri Türleri
Operatörler ve Kullanımları
SANATSAL BİLGİ
30/12/2017