Birleştirme
- C++ kursu
- Başlangıç
- Ders 116/116
- 6 dk
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
#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
#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ı
case 1:
addTask(tasks, "Ödev", "bekliyor");
____;
break;
case 1:
addTask(tasks, "Ödev", "bekliyor");
break;
break;
Açıklama: break switch'ten çıkmayı sağlar.