#include <iostream>
using namespace std;
//int main()
//{
// int bolunen, bolen;
// cout << "Lutfen bolunen sayiyi giriniz : ";
// cin >> bolunen;
// cout << "Lutfen bolen sayiyi giriniz : ";
// cin >> bolen;
//
// int sonuc;
//
// try{
// if (bolen == 0)
// throw 99;//Burada throw için herhangi bir tam sayı girilir.örn: negatif sayılar gibi durumlar için çoğaltılabilir
// sonuc = bolunen / bolen;
//
// cout << "Sonuc : " << sonuc;
// }
// catch(int hataKodu){
// cout << "Bolen sayi sifir olmamali !!" << endl;
// }
//
// cout << endl;
// return 0;
//}
/* try catch Kullanımı :
* try catch kullanıcının beklenmedik bir girdi vermesi sonucu
* programın çökmesini engllemek amacı ile kullanılır
* Ayrıca veri tabanı bağlantılarında bağlantının olmaması ve
* işlem sonrasında veri tabanı bağlantısını kapatma veya programın başlangıcında bağlantıyı açma gibi işlemlerde de kullanılır.
* Dosya açma işlemlerinde kullanılabilir
* throw: Programda beklenmedik bir durum oluştuğunda (örneğin sıfıra bölme, geçersiz bir kullanıcı girişi),
* programı o noktada durdurup bir "hata mesajı" veya "hata nesnesi" fırlatmanı sağlar.
*
*/
// Call by Value Kullanımı :
//void degistir(int deger)
//{
// deger = deger * 2;
// cout << "deger " << deger << endl;
//}
//int main()
//{
// int sayi = 5;
// degistir(sayi);
// cout << "Sayi : " << sayi << endl;
// cout << endl;
// return 0;
//}
/*fonksiyonun içine değer *2 olmasına rağmen sayi değerini olduğu gibi ( 5 ) verir.
* Değer atamasını fonskiyona tanımlar ama sayinin değeri değişmez
* atanan değerin değişmesi için fonskiyonun içine cout << "deger " << deger << endl; belirtmemiz gerekir
* Normalde biz cout << "deger " << deger << endl; main içinde tanımlarız ama burada değer dönmesi için fonsksiyonda tanımlanmalı
*/
//Call by Referans yukarıdaki işlemin referans ile tanımlanması
void degistir(int& deger) //& ile yapılacak işleme adres olarak (referans)verilmesidir
{
deger = deger * 2;
//cout << "deger " << deger << endl; //referans sayesinde artık int main içinde kulanabiliriz
}
int main()
{
int sayi = 5;
degistir(sayi);
cout << "Call by Referans & ile Sayi : " << sayi << endl;
cout << endl;
return 0;
}
//Referans ( & ) sayesinde sayının kendisini değişken olarak fonksiyona gönderir doğrudan işlem sonucunu döndürür
/*
* Neden Referans Kullanırız?
Hız: Çok büyük bir veri setini (örneğin 1 milyon satırlık bir listeyi) fonksiyona gönderirken kopyasını çıkarmak bilgisayarı yorar. Referans ise sadece bir "yol tarifi" olduğu için ışık hızında çalışır.
Kalıcı Değişiklik: Fonksiyonun dışındaki veriyi doğrudan güncellemek istediğimizde.
*/