- Katılım
- 5 Haz 2025
- Mesajlar
- 21
- Tepkime puanı
- 10
- Puanları
- 3
C++ Öğrenmeye Nereden Başlanmalı?
C++ öğrenmeye başlarken en önemli konu, doğrudan oyun motoru, grafik programlama veya büyük projelere atlamamaktır. C++ oldukça güçlü bir dildir ancak aynı zamanda veri tipleri, bellek yönetimi, pointer, referans, sınıflar ve derleme süreci gibi birçok temel konuyu anlamayı gerektirir.Yeni başlayan biri için en doğru yaklaşım:
Önce temel programlama mantığı → Sonra C++ sözdizimi → Ardından nesne yönelimli programlama → Daha sonra STL ve proje geliştirme
şeklinde ilerlemektir.
C++ Nedir?
C++, genel amaçlı, derlenen ve yüksek performanslı bir programlama dilidir.Özellikle:
- Oyun motorları
- Masaüstü yazılımlar
- Sistem programlama
- Gömülü sistemler
- Finans uygulamaları
- Grafik motorları
- Performans gerektiren yazılımlar
C++ hem düşük seviyeli bellek kontrolü hem de yüksek seviyeli programlama özellikleri sunar.
C++ Öğrenmek Zor mu?
Başlangıçta Python veya JavaScript gibi dillere göre daha zor gelebilir.Çünkü erken aşamada:
- Veri tipleri
- Pointer
- Referans
- Bellek
- Derleyici
- Header dosyaları
Ancak bu zorluk aynı zamanda büyük avantajdır.
C++ öğrenirken bilgisayarın ve programların nasıl çalıştığını daha iyi anlarsınız.
Önce C Öğrenmek Gerekir mi?
Hayır.C++ öğrenmek için önce C bilmek zorunlu değildir.
Hatta hedefiniz doğrudan:
- Oyun geliştirme
- Unreal Engine
- Modern masaüstü yazılım
- C++ uygulamaları
C bilgisi fayda sağlar ancak zorunlu değildir.
Hangi C++ Sürümü Öğrenilmeli?
Eski eğitimlerde:- C++98
- C++03
Yeni başlayan biri mümkün olduğunca modern C++ yaklaşımını öğrenmelidir.
Özellikle:
- C++17
- C++20
- C++23
Başlangıç aşamasında bütün modern özellikleri öğrenmeniz gerekmez.
Önemli olan eski ve gereksiz yöntemlere bağımlı kalmamaktır.
Hangi Programla C++ Yazılır?
Yeni başlayanlar için birkaç iyi seçenek vardır.Visual Studio
Windows kullanıcıları için en rahat seçeneklerden biridir.Kurulum sırasında:
Desktop development with C++
bileşeni seçilebilir.
Visual Studio içerisinde:
- Derleyici
- Debugger
- Kod editörü
- Proje sistemi
Visual Studio Code
Daha hafiftir.Ancak:
- C++ eklentisi
- Compiler
- Build araçları
Bu nedenle tamamen yeni başlayan biri için Visual Studio daha kolay olabilir.
CLion
Profesyonel ve güçlü bir IDE'dir.Ancak ücretli olabilir.
Compiler Nedir?
C++ kodu doğrudan işlemci tarafından çalıştırılmaz.Önce derleyici yani compiler tarafından makine koduna çevrilir.
Yaygın C++ derleyicileri:
- MSVC
- GCC
- Clang
Örneğin Windows'ta Visual Studio genellikle MSVC kullanır.
İlk C++ Programı
Klasik başlangıç örneği:#include <iostream>
int main()
{
std::cout << "Merhaba Dunya!" << std::endl;
return 0;
}
Program ekrana:
Merhaba Dunya!
yazar.
#include Nedir?
Şu satır:#include <iostream>
standart giriş/çıkış araçlarını programa dahil eder.
std::cout
kullanabilmemizin nedeni iostream kütüphanesidir.
main Fonksiyonu Nedir?
C++ programlarının temel başlangıç noktası:int main()
fonksiyonudur.
Program çalıştırıldığında kod buradan başlar.
cout Nedir?
Ekrana veri yazdırmak için:std::cout
kullanılır.
Örneğin:
std::cout << "Merhaba";
ekrana Merhaba yazar.
endl Nedir?
std::endlsatırı sonlandırır ve yeni satıra geçer.
Örneğin:
std::cout << "Bir" << std::endl;
std::cout << "Iki";
çıktı:
Bir
Iki
olur.
Basit durumlarda:
"\n"
da kullanılabilir.
Değişkenler ile Başlayın
C++ öğrenirken ilk önemli konu değişkenlerdir.Örneğin:
int yas = 25;
Burada:
int
veri tipi,
yas
değişken adı,
25
değeridir.
Temel Veri Tipleri
Başlangıçta şu veri tiplerini öğrenmek yeterlidir:int
Tam sayılar:int sayi = 10;
float
Ondalıklı sayılar:float fiyat = 15.5f;
double
Daha hassas ondalıklı değerler:double oran = 3.14159;
char
Tek karakter:char harf = 'A';
bool
Doğru veya yanlış:bool aktif = true;
String Kullanımı
C++ standart kütüphanesinde metin için:std::string
kullanılabilir.
Örneğin:
#include <string>
std::string isim = "Ahmet";
Bu, C dilindeki karakter dizilerine göre başlangıç için daha rahattır.
Kullanıcıdan Veri Alma
std::cinkullanılır.
Örneğin:
#include <iostream>
int main()
{
int yas;
std::cout << "Yasinizi girin: ";
std::cin >> yas;
std::cout << "Yasiniz: " << yas << "\n";
return 0;
}
Matematiksel Operatörler
Başlangıçta:+ Toplama
- Çıkarma
* Çarpma
/ Bölme
% Mod
öğrenilmelidir.
Örneğin:
int a = 10;
int b = 5;
int toplam = a + b;
if / else Öğrenin
Koşullu işlemler programlamanın temelidir.Örneğin:
int yas = 20;
if (yas >= 18)
{
std::cout << "Resitsiniz.\n";
}
else
{
std::cout << "Resit degilsiniz.\n";
}
Karşılaştırma Operatörleri
== Eşittir!= Eşit değildir
> Büyüktür
< Küçüktür
>= Büyük veya eşittir
<= Küçük veya eşittir
Özellikle:
=
ile:
==
karıştırılmamalıdır.
Mantıksal Operatörler
&& VE|| VEYA
! DEĞİL
Örneğin:
if (yas >= 18 && yas <= 65)
{
std::cout << "Kosul saglandi.\n";
}
Döngülere Geçin
Temel değişken ve koşullardan sonra:- for
- while
for Döngüsü
for (int i = 1; i <= 10; i++){
std::cout << i << "\n";
}
while Döngüsü
int i = 1;while (i <= 10)
{
std::cout << i << "\n";
i++;
}
Fonksiyonları Öğrenin
Kod büyüdükçe her şeyi main() içerisine yazmak doğru değildir.Fonksiyonlar kullanılır.
Örneğin:
int topla(int a, int b)
{
return a + b;
}
Kullanımı:
int sonuc = topla(10, 20);
Fonksiyonları Erken Öğrenmek Önemli
Fonksiyon mantığını iyi öğrenmeden:- Class
- Unreal Engine
- Büyük proje
Öncelikle parametre ve return mantığını anlamalısınız.
Dizileri Öğrenin
Klasik C tarzı dizi:int sayilar[5] = {10, 20, 30, 40, 50};
Ancak modern C++ öğrenirken sadece klasik dizilere bağlı kalmamak gerekir.
Daha sonra:
- std::array
- std::vector
std::vector Çok Önemlidir
C++ öğrenen birinin mutlaka öğrenmesi gereken yapılardan biridir.Örneğin:
#include <vector>
std::vector<int> sayilar = {10, 20, 30};
Yeni değer eklemek:
sayilar.push_back(40);
Klasik dizilere göre daha esnek bir yapıdır.
Range-Based for Döngüsü
Modern C++ içerisinde koleksiyonları dolaşmanın rahat yollarından biridir.Örneğin:
for (int sayi : sayilar)
{
std::cout << sayi << "\n";
}
Yeni başlayanların öğrenmesi oldukça faydalıdır.
Referans Nedir?
C++'ın önemli özelliklerinden biridir.Örneğin:
int sayi = 10;
int& referans = sayi;
referans
aynı değişkene başka bir isim gibi davranabilir.
Fonksiyon parametrelerinde çok kullanılır.
Örneğin:
void arttir(int& sayi)
{
sayi++;
}
Pointer Nedir?
Pointer başka bir değişkenin bellek adresini tutar.Örneğin:
int sayi = 10;
int* ptr = &sayi;
Burada:
&sayi
bellek adresidir.
ptr
bu adresi tutar.
Pointer konusu özellikle:
- Bellek yönetimi
- Oyun motorları
- Sistem programlama
- Veri yapıları
Pointer'ı Atlamayın
Bazı yeni başlayanlar pointer zor geldiği için doğrudan atlamak ister.Bu doğru değildir.
Her gün pointer kullanmanız gerekmeyebilir ancak:
- Bellek adresi
- Dereference
- nullptr
nullptr Kullanımı
Modern C++'ta boş pointer için:int* ptr = nullptr;
kullanılabilir.
Pointer'ı kullanmadan önce:
if (ptr != nullptr)
{
// Kullan
}
kontrolü yapılabilir.
Class Nedir?
Temel konuları öğrendikten sonra nesne yönelimli programlamaya geçilebilir.Örneğin:
class Oyuncu
{
public:
int can = 100;
void hasarAl(int miktar)
{
can -= miktar;
}
};
Kullanımı:
Oyuncu oyuncu;
oyuncu.hasarAl(20);
Artık:
oyuncu.can
80 olur.
OOP Nedir?
Object Oriented Programming yani nesne yönelimli programlamadır.Öğrenmeniz gereken temel kavramlar:
- Class
- Object
- Constructor
- Encapsulation
- Inheritance
- Polymorphism
Ancak bunlara temel programlama konuları öğrenilmeden geçilmemelidir.
Constructor Nedir?
Bir nesne oluşturulduğunda çalışan özel fonksiyondur.Örneğin:
class Oyuncu
{
public:
int can;
Oyuncu()
{
can = 100;
}
};
Yeni Oyuncu oluşturulduğunda can değeri otomatik olarak 100 olur.
public ve private Öğrenin
Class içerisindeki verilere erişim kontrolünü sağlar.Örneğin:
class Hesap
{
private:
int bakiye;
public:
void bakiyeAyarla(int miktar)
{
bakiye = miktar;
}
};
Bu yapı Encapsulation mantığının temelidir.
Inheritance Nedir?
Bir class'ın başka bir class'ın özelliklerinden yararlanmasını sağlar.Örneğin:
class Karakter
{
public:
int can = 100;
};
class Savasci : public Karakter
{
public:
int zirh = 50;
};
Savasci
artık can özelliğine de sahiptir.
STL Öğrenin
C++'ın en önemli bölümlerinden biri Standard Template Library yani STL'dir.Özellikle:
- vector
- string
- map
- unordered_map
- set
- algorithm
Her veri yapısını sıfırdan yazmak yerine standart kütüphaneleri kullanmayı öğrenmek modern C++ için önemlidir.
std::map Nedir?
Anahtar ve değer saklamak için kullanılabilir.Örneğin:
#include <map>
#include <string>
std::map<std::string, int> puanlar;
puanlar["Ahmet"] = 100;
puanlar["Mehmet"] = 80;
auto Kullanımı
Modern C++'ta değişken tipinin compiler tarafından çıkarılması için kullanılabilir.Örneğin:
auto sayi = 10;
Burada sayi int olur.
Ancak yeni başlayan biri her şeyi auto yapmamalıdır.
Önce veri tiplerini öğrenmek daha önemlidir.
const Öğrenin
Değişmemesi gereken değerler için kullanılır.Örneğin:
const int maksimumCan = 100;
Daha sonra:
maksimumCan = 200;
yapamazsınız.
C++ kodlarında const kullanımı oldukça önemlidir.
Header ve CPP Dosyalarını Öğrenin
Küçük projede tek dosya yeterlidir.Ancak proje büyüdükçe:
Oyuncu.h
Oyuncu.cpp
main.cpp
şeklinde ayırmak gerekir.
Header dosyalarında genellikle class veya fonksiyon bildirimleri bulunur.
CPP dosyalarında implementasyon yapılır.
Debugger Kullanmayı Öğrenin
C++ öğrenirken sadece:std::cout
ekleyerek hata bulmaya çalışmayın.
Debugger öğrenin.
Breakpoint koyarak programı satır satır çalıştırabilirsiniz.
Bu sayede:
- Değişken değerleri
- Fonksiyon akışı
- Hatanın meydana geldiği satır
Visual Studio bu konuda oldukça kullanışlıdır.
Compiler Warninglerini Kapatmayın
Kod derleniyor diye doğru çalıştığı anlamına gelmez.Compiler:
- Kullanılmayan değişken
- Veri kaybı
- Yanlış dönüşüm
Warningleri görmezden gelmek yerine anlamaya çalışın.
Hata Mesajlarını Okumayı Öğrenin
C++ compiler hataları ilk başta korkutucu görünebilir.Ancak genellikle şu bilgiler bulunur:
- Dosya
- Satır
- Hata türü
Tek bir eksik ; bazen arkasından onlarca hata mesajı oluşturabilir.
İlk Projeler Ne Olmalı?
Temel konuları öğrendikten sonra küçük projeler yapın.Hesap Makinesi
Öğretir:- Değişken
- cin/cout
- switch
- Fonksiyon
Sayı Tahmin Oyunu
Öğretir:- Random
- while
- if/else
Öğrenci Not Sistemi
Öğretir:- Class
- Vector
- Fonksiyonlar
Basit Envanter Sistemi
Öğretir:- Class
- Vector
- String
- Döngüler
Konsol RPG
Öğretir:- OOP
- Class
- Combat sistemi
- Random
Oyun Yapmak İstiyorsanız
C++ öğrenme sebebiniz Unreal Engine ise doğrudan Unreal'a geçmek cazip gelebilir.Ancak önce en azından şu konuları bilmek büyük avantaj sağlar:
- Değişken
- if/else
- Döngü
- Fonksiyon
- Class
- Pointer
- Reference
- Inheritance
Unreal Engine İçin Her C++ Konusu Gerekir mi?
Başlangıçta hayır.Örneğin ileri düzey:
- Template metaprogramming
- Custom allocator
- Çok karmaşık pointer teknikleri
Temeller sağlam olsun yeterlidir.
C++ Öğrenirken Algoritma Gerekli mi?
Evet ama başlangıçta çok ileri gitmek gerekmez.Öncelikle:
- Döngüler
- Diziler
- Arama
- Sıralama mantığı
Daha sonra:
- Stack
- Queue
- Linked List
- Tree
- Graph
Git Kullanmayı Öğrenin
C++ öğrenmeye başladıktan kısa süre sonra Git kullanmak büyük avantaj sağlar.Projelerinizi:
- GitHub
- GitLab
Özellikle proje geliştirirken hata yaptıktan sonra eski sürüme dönebilmek çok faydalıdır.
C++ Öğrenirken Yapılan Yaygın Hatalar
Doğrudan Büyük Projeye Başlamak
Temel bilgiler eksik kalır.Sadece Video İzlemek
Kod yazmadan programlama öğrenilmez.Pointer Konusunu Atlamak
İleri aşamada ciddi eksiklik oluşturur.Her Şeyi Ezberlemek
Standart kütüphane fonksiyonlarını ezberlemek yerine mantığını anlamak gerekir.Eski C++ Eğitimlerine Bağlanmak
Modern C++ tekniklerini öğrenmek daha mantıklıdır.Copy/Paste ile Kod Yazmak
Kod çalışsa bile ne yaptığını anlamayabilirsiniz.Hata Mesajını Okumamak
Compiler ve debugger C++ öğrenirken en önemli yardımcılardır.İlk 4 Haftalık Öğrenme Planı
1. Hafta
- IDE kurulumu
- cout/cin
- Değişkenler
- Veri tipleri
- Operatörler
- if/else
2. Hafta
- for
- while
- Fonksiyonlar
- Diziler
- std::string
3. Hafta
- Pointer
- Reference
- const
- std::vector
4. Hafta
- Class
- Object
- Constructor
- public/private
- Inheritance
Sonraki Aşama
Temellerden sonra:- STL
- Smart Pointer
- Dosya işlemleri
- Exception
- Template
- Lambda
- Algorithm
- Veri yapıları
Burada özellikle modern C++ için Smart Pointer konusu önemlidir.
Smart Pointer Nedir?
Ham pointerlarla dinamik bellek yönetimi yapılabilir.Ancak modern C++'ta birçok durumda:
- std::unique_ptr
- std::shared_ptr
Bunlar belleğin otomatik olarak yönetilmesine yardımcı olur.
Yeni başlayan biri önce klasik pointer mantığını anlamalı, ardından smart pointerlara geçmelidir.
Her Gün Kaç Saat Çalışılmalı?
Süre kişiye göre değişir.Ancak:
Her gün 1 saat kod yazmak
haftada bir gün 7 saat video izlemekten genellikle daha verimlidir.
Önemli olan düzenli pratik yapmaktır.
Örneğin:
30 dakika konu öğrenme
30 dakika uygulama
şeklinde çalışılabilir.
C++ Öğrenme Kontrol Listesi
- C++ derleyicisini kurdum mu?
- İlk programımı çalıştırdım mı?
- Değişkenleri biliyor muyum?
- Veri tiplerini biliyor muyum?
- cin ve cout kullanabiliyor muyum?
- if/else yazabiliyor muyum?
- for ve while kullanabiliyor muyum?
- Fonksiyon oluşturabiliyor muyum?
- Dizi mantığını biliyor muyum?
- std::string kullanabiliyor muyum?
- std::vector kullanabiliyor muyum?
- Pointer nedir biliyor muyum?
- Reference nedir biliyor muyum?
- Class oluşturabiliyor muyum?
- Constructor kullanabiliyor muyum?
- public/private farkını biliyor muyum?
- Inheritance mantığını biliyor muyum?
- Debugger kullanabiliyor muyum?
- Küçük bir proje tamamladım mı?
Sonuç
C++ öğrenmeye başlarken en önemli konu hızlı ilerlemek değil, temelleri doğru sırayla öğrenmektir.Başlangıç için en doğru sıra:
Değişkenler → Koşullar → Döngüler → Fonksiyonlar → Diziler → String → Vector → Pointer → Reference → Class → OOP → STL
şeklinde olabilir.
C++ öğrenmek için önceden C bilmek zorunlu değildir. Hedefiniz doğrudan oyun geliştirme, Unreal Engine veya modern C++ uygulamalarıysa doğrudan C++ ile başlayabilirsiniz.
Ancak doğrudan Unreal Engine gibi büyük bir sisteme girip C++ temellerini atlamak öğrenme sürecini gereksiz yere zorlaştırabilir.
Öncelikle küçük konsol projeleri hazırlayın:
Hesap makinesi → Sayı tahmin oyunu → Öğrenci sistemi → Envanter sistemi → Basit konsol oyunu
şeklinde ilerleyebilirsiniz.
Temel C++ bilgisi oturduktan sonra oyun geliştirme, Unreal Engine, veri yapıları veya sistem programlama gibi istediğiniz alana yönelmek çok daha kolay olacaktır.



