🚀 C++ Programlama Dili Dersi 🚀

ReLU ReLU ReLU ReLU ReLU

📚 İçindekiler

Hafta Haftalık İçerik
📆 Week 3 Değişken ve Veri Tiplerini Tanıyalım
📆 Week 4 Karar Verme Yapılarına Giriş If-Else if-else
📆 Week 5 Döngülere Giriş For Döngüsü & Switch-case
📆 Week 6 Diziler Konusuyla İlgili Örnek Kodlar
📆 Week 7 Fonksiyonlara Giriş ve Örnekler
📆 Week 8 Fonksiyon Pratiği ve Sınıflara (Class) Giriş
📆 Week 9 Sınıflarda (Class) Yapıcı ve Yıkıcı Metodlar

Week 3: Değişken ve Veri Tiplerini Tanıyalım

Bu hafta, C++ programlama dilindeki temel yapı taşlarından olan değişkenleri ve veri tiplerini tanıyacağız. Değişkenler, program içinde bilgi saklama ve işleme yeteneği kazandırır. Ayrıca, temel veri tipleri (int, float, char, vs.) üzerinde çalışarak programlama temellerini oluşturacağız.

#include <iostream>
#include <string>
using namespace std;

int main() {
    // int: Tam sayı
    int tamSayi = 42;

    // float: Ondalıklı sayı (tek hassasiyet)
    float ondalikliSayi = 3.14f;

    // double: Ondalıklı sayı (çift hassasiyet)
    double ciftHassasiyetliSayi = 2.71828;

    // string: Metin dizisi
    string metin = "Merhaba, dünya!";

    // bool: Mantıksal değer (true/false)
    bool dogruMu = true;

    // char: Tek karakter
    char karakter = 'A';

    // Değişken değerlerini ekrana yazdırma
    cout << "Tam Sayı: " << tamSayi << endl;
    cout << "Ondalıklı Sayı: " << ondalikliSayi << endl;
    cout << "Çift Hassasiyetli Sayı: " << ciftHassasiyetliSayi << endl;
    cout << "Metin: " << metin << endl;
    cout << "Mantıksal Değer: " << (dogruMu ? "true" : "false") << endl;
    cout << "Karakter: " << karakter << endl;

    return 0;
}

Week 4: Karar Verme Yapılarına Giriş If-Else if-else

Koşullu ifadelerle çalışmaya başlayacağımız bu hafta, if-else if-else gibi yapıları kullanarak programlara karar verme yeteneği kazandıracağız. Bu yapılar, programlarımızı çeşitli durumlara göre yönlendirmemizi sağlar.

#include <iostream>
using namespace std;

int main() {
    // Kullanıcıdan bir sayı girişi istenir
    cout << "Bir sayı giriniz: ";
    int sayi;
    cin >> sayi;

    // if-else if-else yapısı kullanılarak karar verme
    if (sayi > 0) {
        cout << "Girilen sayı pozitif." << endl;
    } else if (sayi < 0) {
        cout << "Girilen sayı negatif." << endl;
    } else {
        cout << "Girilen sayı sıfır." << endl;
    }

    return 0;
}

Week 5: Döngülere Giriş For Döngüsü & Switch-case

Bu hafta, döngülerin temelini oluşturan for döngüsü ile programlarımızı tekrarlı işlemlere yönlendirmeyi öğreneceğiz. Ayrıca, switch-case yapısı ile farklı durumları ele alarak programlarımızı daha esnek hale getireceğiz.

#include <iostream>

using namespace std; // std isim alanını kullan

int main() {
    // for döngüsü ile sayıları ekrana yazdırma
    cout << "For Döngüsü İle Sayıları Yazdırma:" << endl;
    for (int i = 1; i <= 5; ++i) {
        cout << i << " ";
    }
    cout << endl;

    // Kullanıcının seçtiği sayıya göre switch-case yapısı
    cout << "Bir sayı giriniz (1-3 arasında): ";
    int kullaniciSecimi;
    cin >> kullaniciSecimi;

    switch (kullaniciSecimi) {
        case 1:
            cout << "Birinci durum seçildi." << endl;
            break;
        case 2:
            cout << "İkinci durum seçildi." << endl;
            break;
        case 3:
            cout << "Üçüncü durum seçildi." << endl;
            break;
        default:
            cout << "Geçersiz giriş. 1-3 arasında bir sayı giriniz." << endl;
    }

    return 0;
}

Week 6: Diziler Konusuna Ait Örnek Kodlar

Diziler, benzer tipteki verileri tek bir değişken altında saklamamıza olanak tanıyan önemli bir konsepttir. Bu hafta, dizilerin tanımlanması, elemanlara erişim ve dizilerle ilgili temel işlemleri içeren örnek kodlarla pratik yapacağız.

Dizi Tanımlama ve Elemanlara Erişim

#include <iostream>
using namespace std;

int main() {
    // Dizi tanımlama
    int sayilar[5] = {1, 2, 3, 4, 5};

    // Dizi elemanlarına erişim
    for (int i = 0; i < 5; ++i) {
        cout << "sayilar[" << i << "] = " << sayilar[i] << endl;
    }

    return 0;
}

Dizi Boyutu ve Ortalama Hesaplama

#include <iostream>
using namespace std;

int main() {
    // Dizi tanımlama
    double notlar[] = {75.5, 80.0, 90.5, 85.0, 88.5};

    // Dizi boyutunu ogrenme
    int dizininBoyutu = sizeof(notlar) / sizeof(notlar[0]);

    // Dizi elemanlarına erişim ve toplam hesaplama
    double toplam = 0.0;
    for (int i = 0; i < dizininBoyutu; ++i) {
        cout << "notlar[" << i << "] = " << notlar[i] << endl;
        toplam += notlar[i];
    }

    // Ortalama hesaplama ve ekrana yazdırma
    double ortalama = toplam / dizininBoyutu;
    cout << "Not Ortalaması: " << ortalama << endl;

    return 0;
}

Week 7: Fonksiyonlara Giriş ve Örnekler

Fonksiyonlar, kodunuzu modüler hale getirmenizi sağlayan ve belirli görevleri yerine getiren bloklardır. Bu hafta, fonksiyonların tanımlanması, çağrılması ve örneklerle pratiği üzerinde duracağız. Fonksiyonlar, kodun okunabilirliğini artırır ve tekrar kullanılabilirlik sağlar.

Temel Fonksiyon Tanımlama ve Çağrılma

#include <iostream>
using namespace std;

// Fonksiyon tanımı
void selamla() {
    cout << "Merhaba! Bu bir fonksiyon." << endl;
}

int main() {
    // Fonksiyon çağrısı
    selamla();

    return 0;
}

Parametreli Fonksiyon ve Çağrılma

#include <iostream>
using namespace std;

// Parametreli fonksiyon tanımı
void kareAlVeYazdir(int sayi) {
    int kare = sayi * sayi;
    cout << sayi << " sayısının karesi: " << kare << endl;
}

int main() {
    // Parametreli fonksiyon çağrısı
    kareAlVeYazdir(5);
    kareAlVeYazdir(8);

    return 0;
}

Fonksiyonlardan Değer Döndürme

#include <iostream>
using namespace std;

// Fonksiyon tanımı
int topla(int x, int y) {
    return x + y;
}

int main() {
    // Fonksiyon çağrısı ve değeri kullanma
    int sonuc = topla(3, 4);
    cout << "Toplam: " << sonuc << endl;

    return 0;
}

Week 8: Fonksiyon Pratiği ve Sınıflara (Class) Giriş

Bu hafta, fonksiyonları daha derinlemesine anlamlandırarak pratiğini yapacak ve C++ dilindeki sınıflara (class) giriş yapacağız. Sınıflar, nesne yönelimli programlamanın temelini oluşturur ve veri yapısını daha organize bir şekilde yönetmemizi sağlar.

#include <iostream>
using namespace std;

// MatematikIslemleri adlı sınıfın tanımlanması
class MatematikIslemleri {
public:
    // Sınıf içindeki fonksiyonlar (üye fonksiyonlar)
    int topla(int x, int y) {
        return x + y;
    }

    int carp(int x, int y) {
        return x * y;
    }

    double bol(double x, double y) {
        // y değeri 0'dan farklı mı kontrolü. Eğer sıfır değilse bölme işlemi gerçekleşmeli.
        if (y != 0.0) {
            return x / y;
        }
        // y değeri 0'a eşitse (Bir sayının sıfıra bölünmesi sonucunda) tanımsızlık ortaya çıkar ve hata oluşur.
        else {
            cerr << "Hata: Sıfıra bölme!" << endl;
            return 0.0;
        }
    }
};

int main() {
    // MatematikIslemleri sınıfından bir nesne oluşturulması
    MatematikIslemleri hesapMakinesi;

    // Sınıfın fonksiyonlarını kullanma
    int toplamSonucu = hesapMakinesi.topla(5, 3);
    cout << "Toplam: " << toplamSonucu << endl;

    int carpimSonucu = hesapMakinesi.carp(4, 6);
    cout << "Çarpım: " << carpimSonucu << endl;

    double bolumSonucu = hesapMakinesi.bol(9.0, 3.0);
    std::cout << "Bölüm: " << bolumSonucu << endl;

    return 0;
}

Week 9: Sınıflarda (Class) Yapıcı ve Yıkıcı Metodlar

C++ dilinde constructor (kurucu fonksiyon) bir nesnenin oluşturulduğu anı temsil eden özel bir fonksiyondur. Bir sınıf tanımlandığında, bu sınıfa ait bir constructor tanımlanabilir ve bir nesne oluşturulduğunda otomatik olarak çağrılır. Constructor, sınıfın üye değişkenlerini başlatmak ve diğer başlangıç işlemlerini gerçekleştirmek için kullanılır.

Deconstructor (yıkıcı fonksiyon) ise bir nesne yok edildiğinde çağrılan bir özel fonksiyondur. Sınıfın ömrü sona erdiğinde, deconstructor bellek yönetimi ve diğer temizlik işlemlerini gerçekleştirmek için kullanılır. Deconstructor, sınıfın bellek ve kaynak yönetimini düzgün bir şekilde tamamlamasına yardımcı olur. Örnek kullanım:

#include <iostream>

class MyClass {
public:
    // Constructor
    MyClass() {
        std::cout << "Constructor çağrıldı!" << std::endl;
    }

    // Deconstructor
    ~MyClass() {
        std::cout << "Deconstructor çağrıldı!" << std::endl;
    }
};

int main() {
    // Nesne oluşturulduğunda constructor çağrılır
    MyClass myObject;

    // Program sona erdiğinde deconstructor çağrılır
    return 0;
}