PHP
Proje sonu - Yapılacaklar listesi
Tüm parçaları birleştirip çalışan yapılacaklar listesini tamamlarsın.
Proje sonu - Yapılacaklar listesi
Uygulama neredeyse tamam: görev ekledin, listeledin ve birini tamamladın. Son adım, kullanıcıya özet göstermek. "Tamamlanan: 1/3" gibi bir satır, listenin durumunu tek bakışta verir.
Bunun için countDone adında bir fonksiyon yazacağız. Görev dizisini gezip done değeri true olanları sayacak ve bir int döndürecek. Sonra bu sayıyı toplam görev sayısıyla (count($tasks)) birleştirip özet satırını yazdıracağız.
countDone ve özet satırı
Fonksiyon imzası function countDone(array $tasks): int. Gövdede önce $done = 0 ile bir sayacı sıfırlarız. Sonra foreach ($tasks as $task) ile tüm görevleri gezeriz; $task["done"] true ise $done++ ile sayacı bir artırırız.
Fonksiyondan dönen değeri $done = countDone($tasks) ile alırız. Toplam görev sayısı count($tasks) ile gelir. Özet satırı echo "Tamamlanan: " . $done . "/" . count($tasks); şeklinde yazılır.
Uygulama countDone fonksiyonunu yaz ve özet satırını yazdır
countDone fonksiyonunu tanımla: imza function countDone(array $tasks): int. Gövdede önce $done = 0; yaz; sonra foreach ($tasks as $task) ile gez; if ($task["done"]) ise $done++. Fonksiyon return $done; ile bitmeli. Fonksiyondan sonra $done = countDone($tasks); ve echo "Tamamlanan: " . $done . "/" . count($tasks); satırını ekle (satır sonuna \n koyma). Çıktının son satırı Tamamlanan: 1/3 olur.
Örnek çözümü göster
function countDone(array $tasks): int. Gövde: $done = 0; foreach ($tasks as $task) { if ($task["done"]) { $done++; } } return $done;. Sonra $done = countDone($tasks); echo "Tamamlanan: " . $done . "/" . count($tasks);
Örnek çözüm:
<?php
// Görev dizisini başlat ve ilk görevi ekle
$tasks = [];
$tasks[] = ["title" => "Ekmek al", "done" => false];
echo "Görev sayısı: " . count($tasks) . "\n";
// addTask fonksiyonunu tanımla ve iki görev daha ekle
function addTask(array $tasks, string $title): array {
$tasks[] = ["title" => $title, "done" => false];
return $tasks;
}
$tasks = addTask($tasks, "Süt al");
$tasks = addTask($tasks, "Çöpü at");
echo "Görev sayısı: " . count($tasks) . "\n";
// listTasks fonksiyonunu yaz ve çağır
function listTasks(array $tasks): void {
foreach ($tasks as $i => $task) {
$mark = "[ ]";
if ($task["done"]) {
$mark = "[x]";
}
echo ($i + 1) . ". " . $task["title"] . " " . $mark . "\n";
}
}
listTasks($tasks);
// completeTask fonksiyonunu yaz ve 1. görevi tamamla
function completeTask(array $tasks, int $index): array {
if (isset($tasks[$index])) {
$tasks[$index]["done"] = true;
}
return $tasks;
}
$tasks = completeTask($tasks, 0);
listTasks($tasks);
// countDone fonksiyonunu yaz ve özet satırını yazdır
function countDone(array $tasks): int {
$done = 0;
foreach ($tasks as $task) {
if ($task["done"]) {
$done++;
}
}
return $done;
}
$done = countDone($tasks);
echo "Tamamlanan: " . $done . "/" . count($tasks);
Proje tamamlandı
Yapılacaklar listesi uygulaması tamamlandı. Beş dersin sonunda şunları yaptın:
- görevleri ilişkisel dizi olarak ekledin
addTask ile yeni görev ekleyen fonksiyon yazdınforeach ile listeyi numaralandırıp yazdırdıncompleteTask ile görev tamamlama işaretledincountDone ile tamamlanan sayısını hesaplayıp özet yazdırdın
Bu yapı gerçek uygulamalarda da aynı çalışır: görev yöneticisi, alışveriş listesi, adım takibi. Sıradaki bölümlerde nesne yönelimli programlama ve veritabanı ile listeyi kalıcı hale getireceksin.
Kendini test et
-
Proje sonunda özet satırı neden yazdırırız?
- Çünkü renkli çıktı gerekir
- Çünkü kullanıcı ilerlemeyi tek bakışta görmek ister
- Çünkü listTasks çalışmaz
- Çünkü done anahtarı silinmeli
Cevabı göster
Çünkü kullanıcı ilerlemeyi tek bakışta görmek ister — Doğru. "Tamamlanan: 1/3" gibi özet, kullanıcıya listenin durumunu hemen gösterir.
-
Proje parçalarını eşle
- addTask
- görev ekler
- listTasks
- görevleri listeler
- completeTask
- görevi tamamlar
- countDone
- tamamlananı sayar
-
Sayacı sıfırla
$done ____;
Cevabı göster
$done = 0;
Sıradaki ders: str_replace() ile değiştirme