Birleştirme
- C kursu
- Başlangıç
- Ders 87/116
- 6 dk
Menü döngüsüyle çalışan bir CLI uygulaması yazarsın.
Birleştirme
Son adımda tüm parçaları birleştirip tam bir yapılacaklar CLI elde ediyoruz. Üç fonksiyon (add_task, list_tasks, complete_task) ve struct Task dizisi birlikte çalışır.
Bu derste üçüncü bir görev ekleyip akışı tamamlayacağız. Böylece ekle, tamamla, liste akışı uçtan uca çalışır.
Menü döngüsü fikri
Gerçek bir CLI uygulamada kullanıcı bir menüden seçim yapar: görev ekle, listele, tamamla veya çık. while ve switch ile bir menü döngüsü kurulabilir.
while (choice != 0) {
switch (choice) {
case 1: count = add_task(tasks, count, title); break;
case 2: list_tasks(tasks, count); break;
case 3: complete_task(tasks, id); break;
}
}Bu derste menü yerine sabit bir akış kullanıyoruz: ekle, tamamla, tekrar ekle, listele.
Uygulama Üçüncü görevi ekle ve akışı tamamla
Aşağıdaki kodda complete_task(tasks, 1); çağrısından sonra count = add_task(tasks, count, "Okuma"); satırını ekle. Böylece üç görevli tam akış çalışır: ekle, ekle, tamamla, tekrar ekle, listele. Çıktı 1 Alışveriş 1, 2 Spor 0 ve 3 Okuma 0 olmalı.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
struct Task {
int id;
char title[50];
int done;
};
int add_task(struct Task tasks[], int count, const char *title) {
tasks[count].id = count + 1;
strcpy(tasks[count].title, title);
tasks[count].done = 0;
return count + 1;
}
void list_tasks(struct Task tasks[], int count) {
for (int i = 0; i < count; i++) {
printf("%d %s %d\n", tasks[i].id, tasks[i].title, tasks[i].done);
}
}
void complete_task(struct Task tasks[], int id) {
tasks[id - 1].done = 1;
}
int main(void) {
struct Task tasks[10];
int count = 0;
count = add_task(tasks, count, "Alışveriş");
count = add_task(tasks, count, "Spor");
complete_task(tasks, 1);
list_tasks(tasks, count);
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
struct Task {
int id;
char title[50];
int done;
};
int add_task(struct Task tasks[], int count, const char *title) {
tasks[count].id = count + 1;
strcpy(tasks[count].title, title);
tasks[count].done = 0;
return count + 1;
}
void list_tasks(struct Task tasks[], int count) {
for (int i = 0; i < count; i++) {
printf("%d %s %d\n", tasks[i].id, tasks[i].title, tasks[i].done);
}
}
void complete_task(struct Task tasks[], int id) {
tasks[id - 1].done = 1;
}
int main(void) {
struct Task tasks[10];
int count = 0;
count = add_task(tasks, count, "Alışveriş");
count = add_task(tasks, count, "Spor");
complete_task(tasks, 1);
count = add_task(tasks, count, "Okuma");
list_tasks(tasks, count);
return 0;
}Beklenen çıktı
1 Alışveriş 1 2 Spor 0 3 Okuma 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Üçüncü görevi ekle
count = add_task(tasks, count, ____); /* üçüncü görevi ekle */
count = add_task(tasks, count, "Okuma"); /* üçüncü görevi ekle */
Açıklama: Üçüncü görevi Okuma başlığıyla ekledin.
2 Fonksiyonları eşleştir
| Kavram | Anlamı |
|---|---|
add_task |
görev ekleme |
list_tasks |
listeleme |
complete_task |
tamamlama |
while |
menü döngüsü |
3 Bir CLI menü döngüsü için en uygun yapı nedir?
- struct tanımı
- sadece printf
- tek bir if
- while döngüsü ile switch Doğru cevap
Açıklama: while döngüsü tekrarı, switch ise seçimi sağlar.