Menu
CoddyTech

Menambahkan Tugas

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 21 dari 68.

challenge icon

Tantangan

Mudah

Setelah membangun dasar pengelolaan tugas, sekarang kamu akan menerapkan fungsionalitas inti untuk menambahkan tugas baru ke sistemmu. Tantangan ini berfokus pada pembuatan fungsi yang memperluas list tugasmu dengan menambahkan tugas baru ke slice yang sudah ada.

Catatan penting: Karena nama tugas dapat berisi spasi (seperti "Buy groceries"), kamu perlu menggunakan bufio.Scanner untuk membaca seluruh baris input. Fungsi fmt.Scanln berhenti membaca pada spasi pertama, sehingga nama tugas yang mengandung spasi akan terpotong. Gunakan bufio.NewScanner(os.Stdin) dan panggil scanner.Scan(), lalu scanner.Text() untuk membaca baris secara lengkap.

Kamu akan menerima dua input:

  • String yang menunjukkan jumlah tugas yang sudah ada (misalnya, "2")
  • String yang berisi nama-nama tugas yang dipisahkan dengan koma (misalnya, "Buy groceries,Call dentist,Finish project")

Tugasmu adalah:

  1. Definisikan struct Task yang sama seperti pada tantangan sebelumnya, dengan field Name (string) dan Completed (bool)
  2. Buat fungsi bernama addTask yang menerima slice berisi struct Task dan nama tugas (string) sebagai parameter
  3. Fungsi addTask harus mengembalikan slice baru dengan tugas yang ditambahkan (tugas baru harus memiliki Completed dengan nilai false)
  4. Gunakan bufio.Scanner untuk membaca baris input dengan benar agar nama tugas yang berisi spasi dapat ditangani
  5. Buat slice awal berisi tugas berdasarkan jumlah tugas yang sudah ada seperti yang ditentukan dalam input pertama:
    • Jika jumlahnya "0", mulai dengan slice kosong
    • Jika jumlahnya lebih besar dari "0", buat placeholder tugas sebanyak jumlah tersebut dengan nama seperti "Existing Task 1", "Existing Task 2", dan seterusnya, semuanya ditandai belum selesai
  6. Urai nama-nama tugas yang dipisahkan koma dari input kedua
  7. Gunakan fungsi addTask untuk menambahkan setiap tugas baru ke slice
  8. Cetak setiap tugas dalam slice akhir dengan format: "Task: [name], Completed: [true/false]"
  9. Cetak jumlah total tugas dengan format: "Total tasks: [count]"

Misalnya, jika kamu memiliki 1 tugas yang sudah ada dan ingin menambahkan "Buy groceries,Call dentist", outputmu harus menampilkan tugas yang sudah ada terlebih dahulu, diikuti oleh dua tugas baru, lalu jumlah totalnya. Tantangan ini melatih manipulasi slice dengan fungsi append dan menunjukkan cara membangun fungsionalitas yang memperluas struktur datamu.

Coba sendiri

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

type Task struct {
	Name      string
	Completed bool
}

// TODO: Buat fungsi addTask di sini

func main() {
	// Buat scanner untuk membaca baris input
	scanner := bufio.NewScanner(os.Stdin)
	
	// Baca jumlah tugas yang sudah ada
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// Baca nama tugas
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO: Selesaikan implementasinya
	// 1. Ubah existingTasksStr menjadi bilangan bulat
	// 2. Buat slice awal berisi tugas yang sudah ada
	// 3. Uraikan taskNamesStr dan tambahkan tugas baru
	// 4. Cetak semua tugas dan jumlah totalnya
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online