CodeBlanks Logo Icon CodeBlanks

İş mantığı

Fonksiyonlar ve koşullu mantıkla iş kurallarını yazarsın.

addTask ve listTasks işlevleri

Görev ekleme ve listeleme işlemlerini işlevlere taşıyacağız. addTask işlevi yeni bir Task oluşturup tasks vector'üne ekler. listTasks işlevi ise aralık tabanlı for ile tüm görevleri yazdırır.

İşlevlere parametre vermek kodu esnek kılar; aynı işlevi farklı başlık ve durumlarla çağırabilirsin. vector<Task>& referans parametresi, vector'ü kopyalamadan değiştirmeyi sağlar. Bu derste her iki işlevi de tanımlayıp main içinde kullanacağız.

Aralık for ile listeleme

listTasks işlevinin içinde for (Task t : tasks) döngüsü vector'ün her görevini sırayla t değişkenine kopyalar. Döngü gövdesinde t.title ve t.status ile görevin bilgilerine ulaşırız.

Örnek: for (Task t : tasks) { cout << t.title << " - " << t.status << endl; } satırı her görevi yeni bir satırda yazdırır. Aralık for, vector'ün uzunluğunu bilmeden tüm görevleri dolaşmanın güvenli ve kısa yoludur.

Uygulama addTask ve listTasks ekle

void addTask(vector<Task>& tasks, string title, string status) işlevini tanımla; içinde yeni bir Task oluşturup üyelerine title ve status ata, sonra tasks.push_back(t); ile ekle. void listTasks(const vector<Task>& tasks) işlevini tanımla; aralık for ile her görevi cout << t.title << " - " << t.status << endl; ile yazdır. main içinde printMenu(); çağrısından sonra addTask(tasks, "Ödev", "bekliyor");, addTask(tasks, "Spor", "bekliyor"); ve listTasks(tasks); çağrıları ekle.

Başlangıç kodu

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

struct Task {
    string title;
    string status;
};

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

// addTask ve listTasks işlevlerini tanımla

int main() {
    printMenu();
    vector<Task> tasks;
    // addTask ve listTasks çağrıları ekle
    return 0;
}

Örnek çözüm

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

struct Task {
    string title;
    string status;
};

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

void addTask(vector<Task>& tasks, string title, string status) {
    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");
    addTask(tasks, "Spor", "bekliyor");
    listTasks(tasks);
    return 0;
}

Beklenen çıktı

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

Soru ve cevaplar

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

1 addTask işlevinin vector parametresi nasıl bildirilir?

  • vector<Task> (değerle)
  • vector<Task>* (işaretçi)
  • vector<Task>& (referans) Doğru cevap
  • Task& (referans)

Açıklama: vector<Task>& referansı kopyalamayı önler.

2 Boşluğu doldur: for döngüsü

Soru
for (Task t : ____) {
    cout << t.title << " - " << t.status << endl;
}
Cevap
for (Task t : tasks) {
    cout << t.title << " - " << t.status << endl;
}

Açıklama: Aralık for, tasks vector'ünü dolaşır.

3 İşlevi göreviyle eşleştir

Kavram Anlamı
addTask görev ekler
listTasks görevleri yazdırır
for (Task t : tasks) listeyi dolaşır

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