Ana içeriğe atla

Kayıtlar

Şubat, 2026 tarihine ait yayınlar gösteriliyor

Stack ve Heap Bellek Yönetimi

  #include <iostream> using namespace std; //Stack ve Heap Bellek Yönetimi // stack Otomatik olarak temizlenir // Heap Delete kullanılmadığı sürece bellekte kalır int main()  { int x, y; // burdaki x ve y normal değişkenler gibi davranır ve satck gibi davranıp bellekten otomatik silinir int* p = new int(5); // p değişkeni geçici olarak yer tutar   // new ile bellek tahsisi yapıldığı zaman delete kullanılmalı delete p; // p değişkeni ram den temizlenir // Aşağıdaki örnekte new kullanılmadığı için delete kullanmaya gerek kalmaz heap ile ilişkili değildir // pointer yer tutucudur ama işi bittikten sonra stack gibi davranır ve otomatik temizlenir int w = 20; p = &w; cout << *p << endl; return 0; }

Pointerlar ile Dinamik Bellek Yönetimi

  #include <iostream> using namespace std; /* int main()  { //Pointer_New_Delete ile Dinamik bellek yönetimi // dinamik olarak yer tahsis edilmesi ve tahsis edilen yerin silinmesi // ram de ayrılmış olan alanın işi bittikten sonra ayrılmış olan yerin ram den silinmesi // Neyi ifade eder !! pointer ile işlenen veri silinmez ise ayrılmış olan yer ram de yer tutmaya devam eder // Sonraki gelen yeni verilere yer açılması için delete komutunu kullanmalıyız // Aksi taktirde yeni gelen veriler ramde yeni yerler tutacağından ramin şişmesine yol açar // Ram de biriken veriler ramin çökmesine sebep olmasın diye ayrılmış yerin boşaltılması delete ile gerçekleşir. int *ptr = new int; *ptr = 5; cout << *ptr << endl; delete ptr; // kod bloğunun görevi bittikten sonra kullanılmalı ptr = NULL; // *ptr değişkenimizin ayrılmış olan alanın artık boş olduğu anlamına gelir if (ptr != NULL) // ptr değişkenimizin içeriği boş değilse ekrana yazdır { // p...

Pointerlar ile Fonksiyonların Kullanımı

  #include <iostream> #include <cmath> using namespace std; /* void replaceValue(int *ptr); int main()  { //Pointerlar ile Fonksiyonların Kullanımı // Pointerlar adress tutar ve bu adresdeki veriyi değiştirebiliriz., // Neden !!! ??? :  ram de fazladan yer kaplamasını engellemiş olur  // sadece pointer ram adresinde işlemi yapar  //böylelikle ram den yer kazanmış oluruz int x = 70; // sabit değer olarak kalacak ama pointer ile değeri değiştiricez cout << "value of variable x is " << x << endl; replaceValue(&x); //19 cout << "value of veriable x after the function is " << x << endl; return 0;  } void replaceValue(int *ptr)  { *ptr = 19; //değerimiz artık 19 oldu cout << "value of veriable x after the function is " << *ptr << endl; cout << endl; cout << "ram deki adress : " << ptr << endl; cout << endl; //Kodun çıktısı...

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 : " <...

Pointerlar ve Array'ler ( dizi ) Arasındaki ilişki

  #include <iostream> using namespace std; int main()  { //Pointerlar ve Array'ler ( dizi ) Arasındaki ilişki //index ===>> 0  1   2 int arr[] = { 8, 12, 20 }; int* p; p = arr; cout << p << endl; // Çıktısı : 00000027576FF5B8 cout << arr << endl; // Çıktısı : 00000027576FF5B8 cout <<"pointer dizinin sifirinci index degeri : "<< * p << endl; // Çıktısı : 8 'dir. Dizilerde herzaman ilk önce dizinin ilk elemanı yer tutar. //Dizinin diğer elemanlarına erişim cout <<"pointer adresine +1 eklendi : "<< * (p + 1) << endl;  // dizinin index 0 olan değeri 8 idi. // index değerini *(p + 1) +1 ekleyerek 1 inci index değeri çıktısı 12 'dir. // pionter adresini ram 'de bir arttırmış olduk. //dizinin son elamanı olan 20 sayısına +2 ekleyelim içeriği 22 olacak //*(p + 2) = 22; //cout << "Dizinin son elemani olan 20 sayisina +2 eklendi : " << ...

Pointerların Kullanımı

  Referencing ( & ): Bir değişkenin adresini almak (Adres sormak). Dereferencing ( * ): Adresteki değere ulaşmak (Kapıyı çalıp içeri girmek). Sanal Tablo'da adres değerleri örnek ram adresleri olarak verilldi. int değişkenleri 4 byte ramde yer kaplar örneğin adress 1000 ise int değişkenin sonraki adres değeri 4 byte artacağından 1004 1008 1012 şeklinde "Memory Alignment" (Bellek Hizalaması) ramde artarak yol alır. Pointerların Fonksiyonlardan farkı :  Fonksiyonlar pointerlara göre daha yavaş çalışır  "kopyalayarak" (Call by Value) alması ve anlık hesaplamaları pointerlar kadar kısa sürede hesaplayamaz. Pointerlar  "pointer/referans kullanarak" (Call by Reference) alması doğrudan RAM CPU aracılığı ile saniyede yüzbinlerce hesaplamayı yaparken fonksiyonlar bukadar büyük hesaplamaları pointer kadar hızlı yapamaz. Pointer ramda yer tutuculuğu özelliği sayesinde hesaplamaları doğrudan yapıp sonuca varır. Fonksiyonlar kendi içinde değişkenleri hesapl...

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

C++ Algoritma ve Hız Testleri Uygulaması

  #include <iostream> #include <string> #include <cmath> #include<chrono>//Algoritmalar arasında performans hızını test etmede kullanılır using namespace std; /* Algoritma Alıştırma * Kullanıcıdan tam sayı değeri alınız * Kullanıcının 1'den girdiği sayıya kadar tüm asal sayıları bulunuz * örn : Kullanıcı 100 girdi ise : Tüm asal sayıları bulunuz * asal sayı sadece kendisine ve 1'e bölünebilen sayıdır. */ /* int main()  {  int sayi; cout << "Lutfen bir sayi giriniz : "; cin >> sayi; for (int i = 1; i <= sayi; i++) //1 asal sayı kabul edilmez : Hersayının kendine bölümü 1 dir. { //if (i == 1) continue; //1 asal sayı kabul edilemdiğinden contiune ile devam ettirebiliriz.Yada int i=1 yerine 2 diyebiliriz //Yani bir sayının bölümünden kalan 0 (sıfır) olmalalıdır. int sayac = 0; //girilen sayılar içinde kalan sıfır ise sayac herzaman sıfırlanır ve bir artar sonraki sayıyı hesaplamak için for (int j = 1; j <=...

C++ ile string işlemleri

  #include <iostream> #include <string> //Başka ideler yada işletim sisteminde hata almamak için dahil edilmeli using namespace std; int main()  {  //C++ ile string işlemleri // length() ile uzunluk karakter sayısını bulma  // eğer string içinde boşluk var ise onuda karakter olarak hesaplar string meyve = "Elma"; cout << "Uzunluk " << meyve.length() << endl; cout << "ilk harf : " << meyve.at(0) << endl; //String'in ilk harfini bulma meyve.append(" suyu"); cout << "Append ile : " << meyve << endl;//meyve stringinin içine append yardımı ile " suyu" ifadesini eklemiş olduk //string birleştirme string yeni = meyve + " guzeldir"; cout << "Birlestirme : " << yeni << endl; //string den karakter alma, //elma suyu güzeldir 'in içinde find yardımı ile aradı npos ile kaçıncı pozisyonda (10) da olduğu...

Dizilerin Fonsksiyonlarda Parametre Olarak Kullanılması

  #include <iostream> using namespace std; //Dizilerin Fonsksiyonlarda Parametre Olarak Kullanılması  //parametre olarak dizi fonksiyonun içine alınması //parametrelerin değiştirilebilmesi için dizinin uzunluğunada ihtiyaç var. /* void diziDegistir(int arr[], int size)//int size ile parametre olarak fonsiyona aldık { for (int i = 0; i < size; i++)  { arr[i] = arr[i] + 1;//Dizinin elemalarını birer arttırma } } /* //Dizinin içindeki herhangi bir elamanın sayısını arttırma void sayiyiArttir(int sayi) //"(int sayi) Pass by Value" (Değer ile Geçme) kuralıdır. Sayiyi arttırmaz sadece sayıyı kopyalar { sayi = sayi + 1; } /* int main()  { int dizi[] = {3, 9, 12, 5, 10, 1, 3}; diziDegistir(dizi, 7);//Dizi tanımını verdikten sonra dizinin uzunluğu verirlir. for (int i = 0; i < 7; i++) { cout << dizi[i] << ", "; } cout << endl; return 0; } */ /* //Dizinin içindeki herhangi bir elamanın sayısını arttırma int main() { ...

C++ Diziler (ARRAY) Tek Boyutlu Diziler

  #include <iostream> using namespace std; //int main()  //{ // //Örenklerle diziler[Array] // //Kullanıcıdan 4 adet sınav notu girmesini isteyiniz // //Bu 4 notu bir dizi[array] içerisinde tutunuz // //Dizideki notların ortalamasını hesaplayınz // //Hesapladığınız ortalamayı ekrana yazdırınız // // double sinavNotlari[4]; //Dizinin tanımlanması // //Kullanıcıdan sınav notlarını alma dizi içinde tutma // for (int i = 0; i < 4; i++)  // { // cout << i + 1 << ". sinav notunu giriniz : "; // cin >> sinavNotlari[i]; // } // //Notların toplamını bulma // double toplam = 0; // // for (int i = 0; i < 4; i++) // { // toplam = toplam + sinavNotlari[i]; // } // //Ortalama Hesaplama // double ortlama = toplam / 4; // // //Sonuc Yazdırma İşlemi // cout << "Sinavlarin toplam ortalamasi : " << ortlama << endl; // // return 0; //} /* int main()  { // Const Kullanımı : const tanımla...

C++ Rand() Srand() Time(0) Kullanımı

  #include <iostream> #include <cstdlib> // rand fonsiyonu kütüphanesi için #include <ctime> // time fonksiyonu kütüphanesi için using namespace std; // Örnek 4 Mülakat sorusu : //Bir fonskiyon içinde min ve max dahil rastgele tam sayı üretsin //Fonskiyonumuz : int mulakat_Sayi(int max, int min)  { int mulakat = min + (rand() % (max - min +1)); return mulakat; //Not : Detaylı anlatım alttadır. } int main()  { // rand() //Tek başına kullanıldığında rastgele ürettiği sayıyı değitirmez ilk ürettiği sayıyı üretmeye devam eder. // srand() //başlangıç noktasını belirler // time(0) : saniye cinsinden rastgele sayı üretir // donanım için test verisi üretme ve dosyaya yadırma amaçlı ve oyun geliştirmede kullanılabilir srand(time(0)); // Rastgele sayısını time ile üretiyoruz her çalıştığında farklı sayı üretir cout << "***** rastgele *****" << endl; int rastgele_Sayi = rand(); //Tekbaşına herzaman aynı sayı Çıktı: 41 herzaman aynı o...

Fonksiyonların Aşırı Yüklenmesi Function Overloading

  #include<iostream> using namespace std; //Fonksiyonların Aşırı Yüklenmesi OverLoading //Aşırı Yüklemelerde farklı parametrelerde kullanılmalı //Programın okunabilirliğini ve kontrol yapılarının kolaylığını sağlamak amacı ile kullanılır //Aynı parametre değerlerine sahip OverLoading yapılamaz //Aşırı yükleme de method isimleri aynı kullanılır içerik farklı türde olur //Aynı method ismine farklı türlerde tanımlalamalar olmalı ör: strin int double gibi //Dönüş tipi değeri void olarak yada int olarak tanımlandıysa OverLoading o değer tipine göre yükleme yapar //aynı değer tipini farklı türde ayarlamak için methodun parantezi içine int yada string gibi dönüşüm tipleri belirlenebilir //Aynı Algoritmanın farklı kontrol yapılarını geliştrirlmesi durumunda kullanılır.  // ör:Dil paketleri yönetimi veya aynı fonksiyona sahip farklı matematiksel algoritma yapıları için geliştirlmesinde kolaylık sağlar. void ekranaHataMesajiYaz()  { cout << "Dikkat Programda Hata Olus...

Fonksiyonlar

  #include <iostream> using namespace std; int sayi_topla() //intager (sayısal ifadeler) için fonskiyon tanımlama {     int sayi1 = 2, sayi2 = 3; // Değişkenleri tanımladık     int sonuc;     sonuc = sayi1 + sayi2;     return sonuc;  } string adiniz() //string (metinsel ifadeler) fonksiyon tanımlama {     cout << "Lutfen adinizi giriniz : ";     string name;     cin >> name;     cout << "Adiniz : ";     return name; } //Kullanıcıdan gelen sayıları toplama //fonksiyonlarda sadece işlem yapılması; // sebebi gelen veri akışlarını fonksiyona göre hesaplayıp değeri çıktı main içinde kullanıcıya döndürmesi için //topla fonskiyonu içinde değer döndürmeye çalışırsan  //kullanıcıdan sürekli bir değer bekler değer girdikten sonra sonuc döner //Fonksiyonların amacı gelen veriyi dinamik olarak döndürmesidir. //sonuc olarak dinamik fonksiyon ve hızlı sonuclar için aşağıdak...

Break ve Continue Kullanımı

#include<iostream> using namespace std; int main()  { //for ile sayıyı 10 'a kadar arttır. //break ile 5 olduğunda döngü dursun //continue ile 5 'i görünce atlasın ve devam etsin /* //break ile i nin değeri 5 olunca döngü sonlandırılır. for (int i = 0; i <= 10; i++)  { if (i == 5) { break; // i 5 olduğunda döngüden tamamen çıkar } cout << i <<endl; } */ /* break ile ekran çıktısı 0 1 2 3 4 */ /* //Continue ile 5 değerini yazdırmaz ve döngü 10 olana kadar 5 'i atlar devam eder. //break ile i nin değeri 5 olunca döngü sonlandırılır. for (int i = 0; i <= 10; i++) { if (i == 5) { continue; //Continue ile 5 değerini yazdırmaz } cout << i << endl; } */ /* continue ile Ekran çıktısı : 0 1 2 3 4 6 7 8 9 10 */ return 0; }