Profilim
C++ Dersleri
C++ programlama dilini adım adım öğrenin. Temel kavramlardan başlayarak ileri seviye konulara kadar geniş bir yelpazede dersler.
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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
1. Basit Hesap Makinesi
Kullanıcıdan iki sayı ve bir işlem operatörü alan (+, -, *, /) ve sonucu gösteren bir program yazın.
// Kullanıcıdan iki sayı ve operatör al
// Operatöre göre işlem yap
// Sonucu ekrana yazdır
2. Fibonacci Dizisi
Kullanıcıdan bir sayı alan ve o sayıya kadar Fibonacci dizisini yazdıran bir program yazın.
// Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, ...
// Her sayı kendinden önceki iki sayının toplamıdır
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.
// 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
4. Öğrenci Not Hesaplama
Öğrenci bilgilerini ve notlarını kaydedip ortalamasını hesaplayan bir program yazın.
// Sınıf (class) kullanın
// Öğrenci bilgilerini saklayın
// Not ortalamasını hesaplayın
// Dosyaya kaydetme özelliği ekleyin
5. Banka Hesap Yönetimi
Hesap açma, para yatırma, para çekme ve bakiye sorgulama işlemlerini yapabilen bir banka uygulaması yazın.
// 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.