Belum masuk. Progresmu tidak tersimpan.

Masuk
Ruang Materi
Masuk

Perencana Jadwal Belajar

Bangun sendiri dari brief di bawah. Semua pemeriksaan lolos berarti proyekmu selesai, salah satu syarat sertifikat Computational Thinking: Berpikir Komputasional dari Nol.

Brief

Apa yang dibangun

Ujian sudah dekat dan kamu punya beberapa mata pelajaran dengan jumlah bab berbeda. Bangun perencana jadwal belajar kecil yang membagi semua bab ke beberapa hari secara bergiliran. Proyek ini memakai keempat pilar CT.

Data masukan

Setiap mata pelajaran berupa objek. Ada informasi yang tidak relevan untuk jadwal (guru, warna sampul), dan perencanamu harus mengabaikannya:

const daftarMapel = [
  { nama: "Matematika", jumlahBab: 3, guru: "Pak Budi" },
  { nama: "IPA", jumlahBab: 2, warnaSampul: "hijau" }
];

Fitur wajib

  1. Dekomposisi: pecahMateri(mapel) memecah satu mata pelajaran menjadi array bab, misalnya ["Matematika bab 1", "Matematika bab 2", "Matematika bab 3"].
  2. Abstraksi: semuaMateri(daftarMapel) menggabungkan bab dari semua mata pelajaran (berurutan) menjadi satu array, hanya memakai nama dan jumlahBab.
  3. Pola: hariUntuk(i, jumlahHari) mengembalikan nomor hari (mulai dari 1) untuk materi ke-i (mulai dari 0), bergiliran: 1, 2, ..., jumlahHari, lalu kembali ke 1. Petunjuk: i % jumlahHari + 1.
  4. Algoritma: susunJadwal(daftarMapel, jumlahHari) mengembalikan array berisi jumlahHari array. Array pertama berisi materi hari 1, dan seterusnya.
  5. ringkasJadwal(jadwal) mengembalikan array teks seperti "Hari 1: 3 materi".

Contoh hasil

susunJadwal(daftarMapel, 2);
// [
//   ["Matematika bab 1", "Matematika bab 3", "IPA bab 2"],
//   ["Matematika bab 2", "IPA bab 1"]
// ]

ringkasJadwal(susunJadwal(daftarMapel, 2));
// ["Hari 1: 3 materi", "Hari 2: 2 materi"]

Langkah yang disarankan

Kerjakan dan uji satu fungsi dulu sebelum lanjut ke fungsi berikutnya. susunJadwal sebaiknya memanggil semuaMateri dan hariUntuk, bukan menghitung ulang semuanya. Untuk membuat array berisi beberapa array kosong, buat [] lalu push([]) sebanyak jumlah hari.

Latihan kode: Perencana Jadwal Belajar

Lengkapi lima fungsi perencana jadwal belajar sesuai brief: pecahMateri, semuaMateri, hariUntuk, susunJadwal, dan ringkasJadwal.