Kişiselleştirme Ayarları

16px

C++ Öğrenim Platformu

C++ programlama dilini sıfırdan uzman seviyesine kadar öğrenin. Kapsamlı dersler, interaktif örnekler ve projelerle kendinizi geliştirin.

50+
Ders
100+
Örnek Kod
25+
Proje
10
Kütüphane
Derslere Başla Profilim

Profilim

C++ Dersleri

C++ programlama dilini adım adım öğrenin. Temel kavramlardan başlayarak ileri seviye konulara kadar geniş bir yelpazede dersler.

Temel Bilgiler
Orta Seviye
İleri Seviye

1. Giriş ve Temel Kavramlar

C++ Nedir?

C++, Bjarne Stroustrup tarafından geliştirilmiş güçlü bir programlama dilidir. C dilinin üzerine inşa edilmiş olup nesne yönelimli programlama (OOP) özellikleri eklenmiştir. Sistem programlama, oyun geliştirme, yüksek performanslı uygulamalar gibi birçok alanda kullanılır.

Örnek: Merhaba Dünya
#include <iostream>
using namespace std;

int main() {
    cout << "C++ Öğreniyorum!" << endl;
    return 0;
}

Kod Açıklaması

Bu basit program, C++'da 'Merhaba Dünya' örneğidir. #include <iostream> satırı, giriş/çıkış işlemleri için gerekli kütüphaneyi ekler. using namespace std; ifadesi, standart isim alanındaki fonksiyonları doğrudan kullanmamızı sağlar. main() fonksiyonu programın başlangıç noktasıdır. cout << ifadesi ekrana çıktı vermek için kullanılır. endl ise satır sonu karakteri ekler.

2. Değişkenler ve Veri Tipleri

Değişkenler Nedir?

Değişkenler, programda veri depolamak için kullanılan isimlendirilmiş bellek konumlarıdır. Her değişkenin bir veri tipi vardır ve bu tip, değişkende hangi tür verinin saklanabileceğini belirler. C++'da temel veri tipleri: int (tam sayı), float/double (ondalıklı sayı), char (karakter), bool (mantıksal değer) ve string (metin) şeklindedir.

Örnek: Değişkenler ve Veri Tipleri
#include <iostream>
#include <string>
using namespace std;

int main() {
    int sayi = 10;
    double ondalik = 3.14;
    char karakter = 'A';
    string metin = "Merhaba";
    bool mantiksal = true;
    
    cout << "Sayı: " << sayi << endl;
    cout << "Ondalık: " << ondalik << endl;
    cout << "Karakter: " << karakter << endl;
    cout << "Metin: " << metin << endl;
    cout << "Mantıksal: " << mantiksal << endl;
    
    return 0;
}

Kod Açıklaması

Bu örnekte, farklı veri tiplerinde değişkenler tanımlanmış ve değerleri ekrana yazdırılmıştır. int tipi tamsayıları, double tipi ondalıklı sayıları, char tipi tek karakterleri, string tipi metinleri, bool tipi ise true/false değerlerini saklar. Değişkenler tanımlandıktan sonra cout ile ekrana yazdırılabilir.

5. Diziler ve String İşlemleri

Diziler Nedir?

Diziler, aynı türden birden fazla değeri saklamak için kullanılan veri yapılarıdır. Bellekte ardışık olarak yer alırlar ve indeks numaraları ile erişilirler. C++'da diziler sabit boyutludur ve boyutları derleme zamanında belirlenmelidir. String ise karakter dizileridir ve metin işlemleri için kullanılır.

Örnek: Diziler ve Stringler
#include <iostream>
#include <string>
using namespace std;

int main() {
    // Dizi örneği
    int sayilar[5] = {1, 2, 3, 4, 5};
    
    for (int i = 0; i < 5; i++) {
        cout << "Sayı[" << i << "]: " << sayilar[i] << endl;
    }
    
    // String örneği
    string metin = "C++ Programlama";
    cout << "Metin: " << metin << endl;
    cout << "Uzunluk: " << metin.length() << endl;
    cout << "İlk karakter: " << metin[0] << endl;
    
    // String birleştirme
    string ad = "Ali";
    string soyad = "Yılmaz";
    string tamAd = ad + " " + soyad;
    cout << "Tam Ad: " << tamAd << endl;
    
    return 0;
}

Kod Açıklaması

Bu örnekte, 5 elemanlı bir integer dizisi tanımlanmış ve for döngüsü kullanılarak elemanları ekrana yazdırılmıştır. Ayrıca string sınıfı kullanılarak metin işlemleri gösterilmiştir. String sınıfının length() metodu stringin uzunluğunu verirken, + operatörü stringleri birleştirmek için kullanılır. Stringler dizi gibi davrandığı için indeks operatörü [] ile karakterlere erişilebilir.

7. Nesne Yönelimli Programlama (OOP)

Nesne Yönelimli Programlama Nedir?

Nesne Yönelimli Programlama (OOP), gerçek dünyadaki varlıkları ve ilişkileri modellemek için kullanılan bir programlama paradigmasıdır. OOP'nin dört temel prensibi vardır: encapsulation (kapsülleme), inheritance (kalıtım), polymorphism (çok biçimlilik) ve abstraction (soyutlama). C++'da sınıflar (classes) kullanılarak OOP uygulanır. Sınıflar, nesnelerin şablonlarıdır ve veri üyeleri (attributes) ile üye fonksiyonlardan (methods) oluşur.

Örnek: Sınıf ve Nesneler
#include <iostream>
#include <string>
using namespace std;

// Sınıf tanımı
class Ogrenci {
private:
    string ad;
    int yas;
    double notOrtalamasi;
    
public:
    // Kurucu fonksiyon (constructor)
    Ogrenci(string a, int y, double n) {
        ad = a;
        yas = y;
        notOrtalamasi = n;
    }
    
    // Getter ve Setter fonksiyonları
    string getAd() {
        return ad;
    }
    
    void setAd(string a) {
        ad = a;
    }
    
    int getYas() {
        return yas;
    }
    
    void setYas(int y) {
        if (y > 0) {
            yas = y;
        }
    }
    
    double getNotOrtalamasi() {
        return notOrtalamasi;
    }
    
    void setNotOrtalamasi(double n) {
        if (n >= 0 && n <= 100) {
            notOrtalamasi = n;
        }
    }
    
    // Diğer fonksiyonlar
    void bilgileriGoster() {
        cout << "Ad: " << ad << endl;
        cout << "Yaş: " << yas << endl;
        cout << "Not Ortalaması: " << notOrtalamasi << endl;
    }
};

int main() {
    // Nesne oluşturma
    Ogrenci ogr1("Ali", 20, 85.5);
    Ogrenci ogr2("Ayşe", 19, 92.3);
    
    // Nesneleri kullanma
    ogr1.bilgileriGoster();
    cout << endl;
    ogr2.bilgileriGoster();
    
    return 0;
}

Kod Açıklaması

Bu örnekte, Ogrenci adında bir sınıf tanımlanmıştır. Sınıfın private bölümünde ad, yas ve notOrtalamasi değişkenleri bulunur. Public bölümünde ise kurucu fonksiyon (constructor), getter/setter fonksiyonları ve bilgileriGoster fonksiyonu yer alır. Kurucu fonksiyon, nesne oluşturulduğunda otomatik olarak çağrılır ve nesnenin başlangıç değerlerini atar. Getter fonksiyonları private değişkenlerin değerlerini döndürürken, setter fonksiyonları bu değişkenlere değer atar. Encapsulation prensibi sayesinde verilere kontrollü erişim sağlanır.

Çıktı İşlemleri

C++'da ekrana veri yazdırma ve formatlama işlemleri.

Temel Çıktı İşlemleri

Çıktı İşlemleri Nedir?

C++'da çıktı işlemleri, programın kullanıcıya bilgi sunmasını sağlar. Temel çıktı işlemleri için iostream kütüphanesi kullanılır. cout nesnesi ekrana veri yazdırmak için kullanılırken, endl manipülatörü satır sonu ekler. Formatlı çıktı için iomanip kütüphanesi kullanılabilir.

Örnek: Temel Çıktı İşlemleri
#include <iostream>
#include <iomanip>  // Formatlama için
using namespace std;

int main() {
    // Basit çıktı
    cout << "Merhaba Dünya!" << endl;
    
    // Değişkenlerle çıktı
    int yas = 25;
    string isim = "Ahmet";
    cout << isim << " " << yas << " yaşında." << endl;
    
    // Formatlı çıktı
    double pi = 3.14159;
    cout << fixed << setprecision(3);  // 3 ondalık basamak
    cout << "Pi: " << pi << endl;
    
    // Tablo formatında çıktı
    cout << left << setw(15) << "İsim" << setw(10) << "Yaş" << endl;
    cout << setw(15) << "Ali" << setw(10) << 20 << endl;
    cout << setw(15) << "Ayşe" << setw(10) << 22 << endl;
    
    return 0;
}

Kod Açıklaması

Bu örnekte, çeşitli çıktı işlemleri gösterilmiştir. Basit çıktı için cout ve endl kullanılmıştır. Değişkenlerle çıktı için << operatörü kullanılarak değişken değerleri ekrana yazdırılmıştır. Formatlı çıktı için iomanip kütüphanesindeki setprecision ve fixed manipülatörleri kullanılarak ondalık sayıların hassasiyeti ayarlanmıştır. Tablo formatında çıktı için setw manipülatörü kullanılarak sütun genişlikleri belirlenmiştir. left manipülatörü ise metinleri sola hizalar.

C++ Operatörleri

C++ programlama dilinde kullanılan operatörler ve işlevleri.

Aritmetik Operatörler

Aritmetik Operatörler Nedir?

Aritmetik operatörler, matematiksel işlemler yapmak için kullanılır. Toplama (+), çıkarma (-), çarpma (*), bölme (/) ve mod alma (%) operatörlerini içerir. Ayrıca artırma (++) ve azaltma (--) operatörleri de bulunur. Bu operatörler sayısal veri tipleri (int, float, double vb.) ile kullanılır.

Örnek: Aritmetik Operatörler
#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 3;
    
    cout << "a = " << a << ", b = " << b << endl;
    cout << "Toplama: " << a + b << endl;     // 13
    cout << "Çıkarma: " << a - b << endl;     // 7
    cout << "Çarpma: " << a * b << endl;      // 30
    cout << "Bölme: " << a / b << endl;       // 3
    cout << "Mod: " << a % b << endl;         // 1
    
    // Artırma ve azaltma operatörleri
    int c = 5;
    cout << "c = " << c << endl;
    cout << "c++: " << c++ << endl;  // Sonradan artırma: 5
    cout << "c: " << c << endl;      // 6
    cout << "++c: " << ++c << endl;  // Önceden artırma: 7
    cout << "c: " << c << endl;      // 7
    
    return 0;
}

Kod Açıklaması

Bu örnekte, temel aritmetik operatörler ve artırma/azaltma operatörleri gösterilmiştir. Toplama, çıkarma, çarpma, bölme ve mod alma işlemleri yapılmıştır. C++'da integer bölme işlemi sonucu tam sayıdır (ondalık kısım atılır). Artırma (++) ve azaltma (--) operatörleri ön ek (prefix) ve son ek (postfix) olarak kullanılabilir. Ön ek kullanımında değer önce artırılır/azaltılır sonra kullanılır, son ek kullanımında ise değer önce kullanılır sonra artırılır/azaltılır.

C++ Kütüphaneleri

C++'da sık kullanılan standart kütüphaneler ve işlevleri.

iostream

Giriş/çıkış işlemleri için temel kütüphane. cin ve cout nesnelerini içerir.

Örnek Kullanım
#include <iostream>
using namespace std;

int main() {
    int sayi;
    cout << "Bir sayı girin: ";
    cin >> sayi;
    cout << "Girdiğiniz sayı: " << sayi;
    return 0;
}

string

String işlemleri için kütüphane. Metin manipülasyonu sağlar.

Örnek Kullanım
#include <string>
using namespace std;

int main() {
    string str = "Merhaba";
    cout << str.length(); // 7
    cout << str.substr(0, 3); // Mer
    return 0;
}

vector

Dinamik dizi işlemleri için kütüphane. Boyutu değişebilen diziler sağlar.

Örnek Kullanım
#include <vector>
using namespace std;

int main() {
    vector<int> sayilar = {1, 2, 3};
    sayilar.push_back(4); // [1, 2, 3, 4]
    cout << sayilar.size(); // 4
    return 0;
}

algorithm

Algoritma işlemleri için kütüphane. Sıralama, arama gibi işlemler sağlar.

Örnek Kullanım
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    vector<int> sayilar = {5, 2, 8, 1};
    sort(sayilar.begin(), sayilar.end()); // [1, 2, 5, 8]
    return 0;
}

cmath

Matematiksel işlemler için kütüphane. Trigonometri, logaritma gibi fonksiyonlar içerir.

Örnek Kullanım
#include <cmath>
using namespace std;

int main() {
    cout << sqrt(16); // 4
    cout << pow(2, 3); // 8
    cout << sin(3.14/2); // ~1
    return 0;
}

fstream

Dosya işlemleri için kütüphane. Dosya okuma ve yazma işlemleri sağlar.

Örnek Kullanım
#include <fstream>
using namespace std;

int main() {
    ofstream dosya("veri.txt");
    dosya << "Merhaba Dosya!";
    dosya.close();
    return 0;
}

Projeler ve Ödevler

Öğrendiklerinizi pekiştirmek için pratik yapabileceğiniz projeler ve ödevler.

Kolay

1. Basit Hesap Makinesi

Kullanıcıdan iki sayı ve bir işlem operatörü alan (+, -, *, /) ve sonucu gösteren bir program yazın.

İpucu
// Kullanıcıdan iki sayı ve operatör al
// Operatöre göre işlem yap
// Sonucu ekrana yazdır
Kolay

2. Fibonacci Dizisi

Kullanıcıdan bir sayı alan ve o sayıya kadar Fibonacci dizisini yazdıran bir program yazın.

İpucu
// Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, ...
// Her sayı kendinden önceki iki sayının toplamıdır
Orta

3. Sayı Tahmin Oyunu

Bilgisayarın rastgele bir sayı tuttuğu ve kullanıcının bu sayıyı tahmin etmeye çalıştığı bir oyun yazın.

İpucu
// Rastgele sayı üretmek için rand() fonksiyonunu kullanın
// Kullanıcıya yönlendirmeler verin (daha büyük/daha küçük)
// Tahmin sayısını takip edin
Orta

4. Öğrenci Not Hesaplama

Öğrenci bilgilerini ve notlarını kaydedip ortalamasını hesaplayan bir program yazın.

İpucu
// Sınıf (class) kullanın
// Öğrenci bilgilerini saklayın
// Not ortalamasını hesaplayın
// Dosyaya kaydetme özelliği ekleyin
Zor

5. Banka Hesap Yönetimi

Hesap açma, para yatırma, para çekme ve bakiye sorgulama işlemlerini yapabilen bir banka uygulaması yazın.

İpucu
// Nesne yönelimli programlama kullanın
// Her hesap için bir sınıf oluşturun
// İşlem geçmişini saklayın
// Dosya işlemleri ile kalıcılık sağlayın

Kodlama Topluluğu

Kod Paylaşım

Kodunuzu toplulukla paylaşın ve geri bildirim alın

Canlı İşbirliği

Gerçek zamanlı olarak birlikte kod yazın

Kod İnceleme

Diğer geliştiricilerin kodlarını inceleyerek öğrenin

C++ Kod Editörü

Aşağıdaki editörde C++ kodunuzu yazabilir ve terminalde çıktısını görebilirsiniz.

C++ Kod Editörü
1
Terminal Çıktısı
$ Kodu çalıştırmak için 'Kodu Çalıştır' butonuna tıklayın...