İş mantığı
- C++ kursu
- Başlangıç
- Ders 114/116
- 6 dk
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
#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
#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ü
for (Task t : ____) {
cout << t.title << " - " << t.status << endl;
}
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 |