CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan bir final uygulaması yazarsın.

Switch ile menü birleştirme

Son derste tüm parçaları birleştirip menüden bir seçim simüle edeceğiz. switch deyimi, choice değişkeninin değerine göre uygun dalı çalıştırır; her dal bir menü seçeneğine karşılık gelir.

Bu derste printMenu(); çağrısından sonra switch (choice) yapısı ekleyeceğiz. case 1: ekleme, case 2: listeleme, case 3: çıkış olacak. Böylece uygulamanın tüm akışını tek bir yerde görmüş olursun.

Switch deyiminin akışı

switch deyimi bir tam sayı değeri alır ve uygun case dalına atlar. Her dalın sonunda break; yazmak, diğer dalların çalışmasını önler. default: dalı hiçbir case'e uymayan değerler için yedek olarak kullanılır.

switch (choice) {
    case 1: addTask(...); break;
    case 2: listTasks(...); break;
    case 3: return 0;
    default: cout << "geçersiz";
}

Burada choice 1, 2 veya 3 olduğunda ilgili dal çalışır. break ile switch'ten çıkılır; return 0 ise doğrudan programı bitirir. Bu yapı, menü uygulamalarının temelidir.

Uygulama Switch ile menüyü birleştir

printMenu(); çağrısından sonra vector<Task> tasks; ve addTask(tasks, "Ödev", "bekliyor"); ekle. Sonra int choice = 2; ile seçimi simüle et. switch (choice) aç; case 1: dalında addTask(tasks, "Spor", "bekliyor"); break;; case 2: dalında listTasks(tasks); break;; case 3: dalında cout << "Çıkış" << endl; break; yaz. default: dalında cout << "Geçersiz" << endl; ekle.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
using namespace std;

struct Task {
    string title;
    string status;
};

class InvalidTaskException : public std::exception {
public:
    const char* what() const noexcept override {
        return "geçersiz görev";
    }
};

void printMenu() {
    cout << "1 - Ekle" << endl;
    cout << "2 - Listele" << endl;
    cout << "3 - Çıkış" << endl;
}

void addTask(vector<Task>& tasks, string title, string status) {
    if (title.empty()) throw InvalidTaskException();
    Task t;
    t.title = title;
    t.status = status;
    tasks.push_back(t);
}

void listTasks(const vector<Task>& tasks) {
    for (Task t : tasks) {
        cout << t.title << " - " << t.status << endl;
    }
}

int main() {
    printMenu();
    // tasks ve addTask çağrısı, switch ile menü birleştir
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
using namespace std;

struct Task {
    string title;
    string status;
};

class InvalidTaskException : public std::exception {
public:
    const char* what() const noexcept override {
        return "geçersiz görev";
    }
};

void printMenu() {
    cout << "1 - Ekle" << endl;
    cout << "2 - Listele" << endl;
    cout << "3 - Çıkış" << endl;
}

void addTask(vector<Task>& tasks, string title, string status) {
    if (title.empty()) throw InvalidTaskException();
    Task t;
    t.title = title;
    t.status = status;
    tasks.push_back(t);
}

void listTasks(const vector<Task>& tasks) {
    for (Task t : tasks) {
        cout << t.title << " - " << t.status << endl;
    }
}

int main() {
    printMenu();
    vector<Task> tasks;
    addTask(tasks, "Ödev", "bekliyor");
    int choice = 2;
    switch (choice) {
        case 1:
            addTask(tasks, "Spor", "bekliyor");
            break;
        case 2:
            listTasks(tasks);
            break;
        case 3:
            cout << "Çıkış" << endl;
            break;
        default:
            cout << "Geçersiz" << endl;
    }
    return 0;
}

Beklenen çıktı

1 - Ekle
2 - Listele
3 - Çıkış
Ödev - bekliyor

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Menü öğesini dalıyla eşleştir

Kavram Anlamı
1 - Ekle case 1
2 - Listele case 2
3 - Çıkış case 3

2 switch (choice) yapısında case 2 neyi çağırır?

  • listTasks Doğru cevap
  • addTask
  • printMenu
  • throw

Açıklama: case 2 listeleme için listTasks'ı çağırır.

3 Boşluğu doldur: break çağrısı

Soru
case 1:
    addTask(tasks, "Ödev", "bekliyor");
    ____;
    break;
Cevap
case 1:
    addTask(tasks, "Ödev", "bekliyor");
    break;
    break;

Açıklama: break switch'ten çıkmayı sağlar.

Başlangıç bölümündeki tüm dersler