CodeBlanks Logo Icon CodeBlanks

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

main.c
#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

main.c
#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

Soru
count = add_task(tasks, count, ____);  /* üçüncü görevi ekle */
Cevap
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.

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