Ana içeriğe atla

C++ try catch, Call by Value, Call by Referans Kullanımı

 

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

*/


Bu blogdaki popüler yayınlar

C++ float double string Aritmatik işlemler

  #include <iostream> using namespace std; //void fonk()  //{ // cout << "Merhaba\n"; //} // //int main()  //{ // cout << "Merhaba C++\n"; // // fonk(); // return 0; //} /* int main()  { //Değişkenler rakam ile başlayamaz //Değişken isimlerinde türkçe karakter olmaz //değişken isimleride boşluk olmaz //Değişken isimlerinde nokta vb karakter olmaz //******************************************** //int ram'da 4 byte yer kaplıyor -2147483648 to 2147483647 //char 1 byte  (ASCII tablosu) //bool 1 byte //float 4 byte //double 8 byte //CPU ramdan byte byte okur //Void herhangi bir return etmiyecekse kendi aldığı değerleri kullanır.Bir değer döndürmez. string isim; isim = "Kaan"; int yas; yas = 22; cout << "Bir zamanlar " << isim << " isminde bir genc varmis." << endl << isim << " " << yas << " yasindaymis." ...

Pointer ve & (ampersant) Konusunu Kavrayalım

  #include <iostream> #include <string> using namespace std; /* int main()  {  int x = 7; cout << "x 'in degeri : " << x << endl; cout << "x 'in RAM deki adresi : " << &x << endl;  // & ile ramdeki ilk adres değeri  000000D3ED4FFCF4 ni bulduk  // int 4 byte oldugundan bu adresde dahil 4 byte 'lik yerin tamamını hesaplar // ama bize  4 byte lik adresin ilk değerini verir. return 0;  } */ /* int main() { // Pointer  ve & (ampersant) Konusunu Kavrayalım int x = 7; int *p = &x; // pointer ile x 'in adres değerini bulma cout << "x 'in degeri : " << x << endl; cout << "x 'in & ile RAM deki adresi : " << &x << endl; //pointer ile gösterimi cout <<"pointer p ile adres degeri : "<< p << endl; cout << "*p ile ( *p = &x) x in pointer degeri : " <...