Platform
Programlama

2. İlk program - C++

İlk programı çalıştıralım.

resul · Editör, Yazar· 17 Temmuz 2026· 4 dk okuma

Başlangıç

Diyelim ki bir kod dosyası yazdınız, derlediniz, bağladınız (link). Tek dosyada g++ bağlayıcıyı senin yerine çağırır; “gerekirse” diye atlanır bir adım değildir. Program açıldığında main fonksiyonunun içini okuyarak başlar. Yani bir giriş-program başlatma kısmı olarak düşünebilirsiniz.

cpp
int main() {
    
    return 0;
}

Yani main fonksiyonu çalışır ve son satırda 0 döndürülür. Peki bu 0 ne anlama gelir? Bu sayı bizim için sorun yok demektir. Yani Program bittiğinde sıfır döner ve sağlıklı şekilde program bitmiş olur bir problem olmadan.

Bir şey yazdırmak (output sistemi)?

Bir çıktı vermek için temel olan şeyi yani ekrana-terminal e bişey yazdırmayı kullanacağız. Ekrana cevap veya bir girdi olarak düşünebileceğiniz şeyi input, bilgisayarın size sunduklarını da output olarak düşünebilirsiniz. Dolayısıyla standart olarak gelen bir kütüphaneden söz edeceğiz: iostream (input output stream). Bu kütüphaneyi projeye dahil etmek için kodun başına #include <iostream> ekleriz.

cpp
#include <iostream>

int main() {
    std::cout << "Merhaba, modern C++\n";
    return 0;
}

İlk çalışan iskelet. Çıktıyı std::cout ile yazarız. "std::" nin ne olduğuna değincem aşağıda

#include ne işe yarar?

Diyelim ki ekrana bişey yazdıracağız. cout kullanmamız gerekir. Bunu kullanmamızı sağlayan şey iostream dir. Dosyanın tepesine #include <iostream> yazıyoruz. Bu, derleyiciye “standart girdi/çıktı bildirimlerini kullan” demek oluyor.

std:: ve using namespace std

İsim uzayları diye bir kavram var. Bu bir çok bağımsız kütüphaneyi birleştirdiğimizde isimsel karışıkların önlenmesi için var. Örneğin cout, C++ standart kütüphanesinin bir parçasıdır ve std isim uzayında bulunur. cout ismini kullanan başka bir kütüphane olabilir. O halde programa cout dediğimizde o harici kütüphanenin mi yoksa std isim uzayını kullanan kütüphanenin cout unu mu kullanacağız sorusu karışıklık yaratır ve derleyicinin kafası (hangi cout u kastediyoruz bilemez) karışır. O yüzden cout kullanacağımız zaman eğer std içindeki cout u kullanacaksak std::cout yazarız. Bu std isim uzayındaki cout u kullan demektir.

cpp
// bunu yap
std::cout << "açık ve güvenli\n";

// bunu yapma
using namespace std;
cout << "kısa ama kirli\n";

Peki bu using namespace std; nedir? bu std::cout yerine doğrudan cout yazabileceğimiz anlamına gelir. Ancak önceden bahsettiğim gibi diğer kütüphane ile karışıklık göstereceğinden using namespace kullanımı tavsiye edilmez. std::cout ile kullanmak daha mantıklıdır.

İsim uzayını her sfeerinde yazmak, alışkanlık edindikten sonra problem yaratmaz.

cpp
#include <iostream>

int main() {
    std::cout << "Merhaba, modern C++\n";
    return 0;
}

Şimdi bu kodu daha rahat anladığınızı düşünüyorum. Ancak cümlenin sonundaki \n kafanızı karıştırmış olabilir. Bu bir alt satıra geç demektir. Bunu kullanmadan bir sürü cout yazarsanız satırlar beklerken birbiri ardına geçmiş cümleler görürsünüz.

\n yerine std::endl gibi bişey de kullanabilirsiniz. Mesela

cpp
#include <iostream>

int main() {
    std::cout << "Merhaba, modern C++" << std::endl;
    return 0;
}

\n daha optimize olduğundan dolayı kullanılır ancak buna burada değinmeyeceğim.

ufak ama önemli bilgi

return 0; C++ta main için anlaşılması zor olabiliyor. Yine de belirtmekte fayda var. “Fonksiyon bir değer üretir” fikri otursun.

Build etmek

Tek dosyada da bağlayıcı (linker) çalışır. İlk dersteki öğretici sadeleştirme burada da geçer: kaynak derlenir, sonra bağlanır; ikisine birlikte kaba bir “build” deriz. g++ main.cpp -o main yazınca sen bağlayıcıyı ayrıca çağırmazsın; g++ sürücü olarak derleyip ardından bağlayıcıyı senin yerine çalıştırır. Asıl iş yine iki adımdır, tek satırda toplanmıştır.

terminal
g++ -std=c++20 main.cpp -o main

Bunu main.cpp nin bulunduğu dosya dizininde açtığın terminalde yazıp çalıştırabilirsin. İlk derste bahsetmiştim ama yine de üstünden geçelim : main.cpp kaydettiğin kaynak dosyadır. -o main çıkan programın adını main yapar. Windows’ta bu dosya main.exe olur. Komut programı çalıştırmaz, sadece üretir. Üretilen dosyayı ister aynı terminalde aynı dizinde ./main yazarsın. Windows’ta ./ yazmadan sadece main.exe yazmayı unutma. İster kendi elinle çalıştırırsın. Ancak kendi eline çalıştırırsan anında kapanır çünkü program görevini tamamladıktan sonra main() fonksiyonu sona erer ve program kapanır. Terminalden çalıştırdığında ise terminal zaten açık olduğu için çıktıyı görebilirsin.

Burada -c yok, görünür bir .o dosyası yok, ikinci bir g++ satırı yok. g++ ara nesne dosyasını kendisi üretir ve bağlar. -c ile durdurmak, birden fazla kod dosyasını ayrı ayrı derleyeceğimiz zaman işimize yarayacak.

Yani

terminal
g++ -std=c++20 main.cpp -o main

main.cpp dosyasını .o çevirip çalıştırılabilir dosya (main.exe windows için) olarak çıkartır. Ancak çalıştırılabilir dosya yerine bir nesne dosyası (.o) isterseniz:

terminal
g++ -std=c++20 -c main.cpp -o main.o

yada

terminal
g++ -std=c++20 -c main.cpp

yazarsınız ve elinize .o dosyası geçer. Artık kaynak dosya olmaksızın yalnızca .o dosyasının olduğu dizinde terminalde

terminal
g++ main.o -o main

yazarsanız nesne dosyasını çalıştırılabilir dosyaya çevirecektir. Bu ders bu kadardı.

Kaynaklar

Editör · Yazarresul
cppprogramlama