From c5fc3c681a58398adf65da134ed1db2ae23a730b Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Wed, 27 Aug 2025 23:09:30 +0700 Subject: [PATCH 01/10] Add JavaScript files for while and for loop exercises --- for.js | 25 +++++++++++++++++++++++++ latihanwhilefor.js | 26 ++++++++++++++++++++++++++ while.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 for.js create mode 100644 latihanwhilefor.js create mode 100644 while.js diff --git a/for.js b/for.js new file mode 100644 index 00000000..c202b7a1 --- /dev/null +++ b/for.js @@ -0,0 +1,25 @@ +//for sebenarnya mirip dengan while +//perbedaannya for lebih ringkas +//for digunakan ketika kita sudah mengetahui jumlah pengulangan +//sedangkan while digunakan ketika kita belum mengetahui jumlah pengulangan +//struktur for +/*for (inisialisasi = 1; let kondisi terminasi; increment/dekrement){ + aksi +}*/ + +for (nilaiA= 1; nilaiA <=5;nilaiA++){ + console.log("Hello World " + nilaiA + "x"); +} +//tugas bisnis angkot dari Sandhika Galih total 10 angkot +//6 angkot beroperasi dengan baik, 4 angkot tidak beroperasi + +let jumlahAngkot = 10; +let angkotBaik= 6; +let noAngkot= 1; +while (noAngkot <= angkotBaik){ + console.log("Angkot No. "+ noAngkot + " beroperasi dengan baik.") +noAngkot++; +} +for (noAngkot = angkotBaik + 1; noAngkot <= jumlahAngkot ; noAngkot++){ + console.log("Angkot No. "+ noAngkot + " tidak beroperasi dengan baik.") +} \ No newline at end of file diff --git a/latihanwhilefor.js b/latihanwhilefor.js new file mode 100644 index 00000000..ec16cf52 --- /dev/null +++ b/latihanwhilefor.js @@ -0,0 +1,26 @@ +//latihan while dan for + +//latihan while +//soal membuat program menampilkan angka mundur dari 10 sampai 1 + +let i=10; +while(i >=1){ + console.log(i); + i--; +} //i adalah variabel yang digunakan untuk menampung angka awal yaitu 10 + +//latihan for +//menampilkan angka ganjil dari 1 sampai 20 + +for (let i = 1; i <=20; i++){ + if (i % 2 !== 0){ + console.log(i) + } +} + +let total = 0; +for (let i = 1; i <= 10; i++) { + total += i; // sama dengan total = total + i +} +console.log("Total:", total); +//output Total: 55 \ No newline at end of file diff --git a/while.js b/while.js new file mode 100644 index 00000000..f308c81c --- /dev/null +++ b/while.js @@ -0,0 +1,46 @@ +//pengulangan WHILE untuk melakukan hal yang sama berulang kali + +while(kondisi){ + aksi +} //selama kondisi bernilai TRUE maka lakukan aksi yang ada di dalam blok {} + +while (true){ + console.log("Hello World") +} //pengulangan diatas akan menghasilkan infinit loop/pengulangan abadi. + +//loop bisa dihentika/dikontrol oleh user +let ulang= true; +while (ulang){ + console.log("Hello World"); + ulang = confirm("mau lagi?") +} //kenapa confirm karena ketika user klik ok maka sama dengan true + +//loop dihentikan oleh program, mau looping berapa kali +//aturannya +let nilaiAwal= 1; +while ("kondisi terminasi"){ //kodisi terminasi kapan loopnya akan berhenti + aksi + + increment / dekrement //increment sama dengan penambahan, dekremen sama dengan pengurangan terhadap nilai awal +} +//contoh loop dihentikan oleh program, mau looping berapa kali +/*let nilaiA = 1; +while (nilaiA <= 10){ + console.log(alert("tekan lagi")); + nilaiA++; +}*/ + +let nilaiA = 1; +while (nilaiA <=5){ + console.log(alert("tekan lagi")); + nilaiA++; +} +//tugas bisnis angkot dari Sandhika Galih +//perbaikan kode agar lebih rapi dari kode sebelumnya + +let jumlahAngkot = 15; +let bisnisAngkot= 1; +while (bisnisAngkot <= jumlahAngkot){ + console.log("Agkot No."+ " "+bisnisAngkot+" "+ "beroperasi dengan baik.") + bisnisAngkot++; +} \ No newline at end of file From 525391e9d06803459888de48ee81cc2138e2b632 Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Fri, 29 Aug 2025 13:53:18 +0700 Subject: [PATCH 02/10] Remove unused JavaScript files for loop and while exercises --- for.js | 25 ------------------------ latihanwhilefor.js | 26 ------------------------- quiz/part1/soal1.js | 42 +++++++++++++++++++++++++++++++++++++++++ while.js | 46 --------------------------------------------- 4 files changed, 42 insertions(+), 97 deletions(-) delete mode 100644 for.js delete mode 100644 latihanwhilefor.js create mode 100644 quiz/part1/soal1.js delete mode 100644 while.js diff --git a/for.js b/for.js deleted file mode 100644 index c202b7a1..00000000 --- a/for.js +++ /dev/null @@ -1,25 +0,0 @@ -//for sebenarnya mirip dengan while -//perbedaannya for lebih ringkas -//for digunakan ketika kita sudah mengetahui jumlah pengulangan -//sedangkan while digunakan ketika kita belum mengetahui jumlah pengulangan -//struktur for -/*for (inisialisasi = 1; let kondisi terminasi; increment/dekrement){ - aksi -}*/ - -for (nilaiA= 1; nilaiA <=5;nilaiA++){ - console.log("Hello World " + nilaiA + "x"); -} -//tugas bisnis angkot dari Sandhika Galih total 10 angkot -//6 angkot beroperasi dengan baik, 4 angkot tidak beroperasi - -let jumlahAngkot = 10; -let angkotBaik= 6; -let noAngkot= 1; -while (noAngkot <= angkotBaik){ - console.log("Angkot No. "+ noAngkot + " beroperasi dengan baik.") -noAngkot++; -} -for (noAngkot = angkotBaik + 1; noAngkot <= jumlahAngkot ; noAngkot++){ - console.log("Angkot No. "+ noAngkot + " tidak beroperasi dengan baik.") -} \ No newline at end of file diff --git a/latihanwhilefor.js b/latihanwhilefor.js deleted file mode 100644 index ec16cf52..00000000 --- a/latihanwhilefor.js +++ /dev/null @@ -1,26 +0,0 @@ -//latihan while dan for - -//latihan while -//soal membuat program menampilkan angka mundur dari 10 sampai 1 - -let i=10; -while(i >=1){ - console.log(i); - i--; -} //i adalah variabel yang digunakan untuk menampung angka awal yaitu 10 - -//latihan for -//menampilkan angka ganjil dari 1 sampai 20 - -for (let i = 1; i <=20; i++){ - if (i % 2 !== 0){ - console.log(i) - } -} - -let total = 0; -for (let i = 1; i <= 10; i++) { - total += i; // sama dengan total = total + i -} -console.log("Total:", total); -//output Total: 55 \ No newline at end of file diff --git a/quiz/part1/soal1.js b/quiz/part1/soal1.js new file mode 100644 index 00000000..bca47536 --- /dev/null +++ b/quiz/part1/soal1.js @@ -0,0 +1,42 @@ +/*## Soal 1: +```js +// Kamu diminta untuk memprogram suatu game sederhana, Proxytia namanya. +// Untuk memulai game itu diperlukan 2 variabel (untuk sekarang), +// yaitu nama dan peran. Variabel peran harus memiliki isi data, +// bila nama kosong, pemain akan diberikan peringatan berupa "nama wajib diisi" +// bila kosong pemain akan diberikan peringatan berupa "Pilih Peranmu untuk memulai game". +// Terdapat 3 peran berbeda yaitu Ksatria, Tabib, dan Penyihir. +// Tugas Anda adalah untuk membuat program yang mengecek isi variabel +// peran serta mengeluarkan respon sesuai isi variabel tersebut. +//ada 4 jenis respons sesuai dengan 3 jenis peran yaitu +//halo Ksatria ${nama} , kamu dapat menyerang dengan senjatamu! +//halo Tabib ${nama} , kamu akan membantu temanmu yang terluka +//halo Penyihir ${nama} , ciptakan keajaiban yang membantu kemenanganmu! +//tapi kayaknya kamu jadi bot aja ya, peran yang kamu pilih ga ada +//tips belajar penggunaan `` (backtick) pada javascript agar +//mudah dalam memasukan variabel ke dalam string +//tapi tanpa backtick juga ga masalah sih yg penting output sesuai + +// algoritma +//isi algoritma mu disini (AWAS KALO GA DI ISI!!!!) +let nama = "", peran = ""; +//code disini gunakan console.log untuk outputnya*/ + +//input +let pengenalan = alert("Tulis namamu bro"), + nama = prompt(""), + pilihperan = alert("Pilih peran: ksatria, tabib, penyihir") + peran = prompt("") + peran = peran.toLowerCase();// agar ridak mempedulikan huruf besar atau kecil pada input string + +if (nama == ""){ + console.log(alert("nama wajib diisi")) +} else if (peran === "ksatria"){ + console.log( alert(`Hallo ${nama} pilih senjatamu untuk menyerang`)) +} else if (peran === "tabib"){ + console.log(alert(`halo Tabib ${nama} , kamu akan membantu temanmu yang terluka`)) +} else if (peran === "penyihir"){ + console.log(alert(`halo Penyihir ${nama} , ciptakan keajaiban yang membantu kemenanganmu!`)) +} else { + alert("tapi kayaknya kamu jadi bot aja ya, peran yang kamu pilih ga ada") +} \ No newline at end of file diff --git a/while.js b/while.js deleted file mode 100644 index f308c81c..00000000 --- a/while.js +++ /dev/null @@ -1,46 +0,0 @@ -//pengulangan WHILE untuk melakukan hal yang sama berulang kali - -while(kondisi){ - aksi -} //selama kondisi bernilai TRUE maka lakukan aksi yang ada di dalam blok {} - -while (true){ - console.log("Hello World") -} //pengulangan diatas akan menghasilkan infinit loop/pengulangan abadi. - -//loop bisa dihentika/dikontrol oleh user -let ulang= true; -while (ulang){ - console.log("Hello World"); - ulang = confirm("mau lagi?") -} //kenapa confirm karena ketika user klik ok maka sama dengan true - -//loop dihentikan oleh program, mau looping berapa kali -//aturannya -let nilaiAwal= 1; -while ("kondisi terminasi"){ //kodisi terminasi kapan loopnya akan berhenti - aksi - - increment / dekrement //increment sama dengan penambahan, dekremen sama dengan pengurangan terhadap nilai awal -} -//contoh loop dihentikan oleh program, mau looping berapa kali -/*let nilaiA = 1; -while (nilaiA <= 10){ - console.log(alert("tekan lagi")); - nilaiA++; -}*/ - -let nilaiA = 1; -while (nilaiA <=5){ - console.log(alert("tekan lagi")); - nilaiA++; -} -//tugas bisnis angkot dari Sandhika Galih -//perbaikan kode agar lebih rapi dari kode sebelumnya - -let jumlahAngkot = 15; -let bisnisAngkot= 1; -while (bisnisAngkot <= jumlahAngkot){ - console.log("Agkot No."+ " "+bisnisAngkot+" "+ "beroperasi dengan baik.") - bisnisAngkot++; -} \ No newline at end of file From 0d73afd260bcd300f43104db66922d4d94e6b4de Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Sat, 30 Aug 2025 13:32:48 +0700 Subject: [PATCH 03/10] Add JavaScript solution for date formatting using switch case --- quiz/part1/soal2.js | 61 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 quiz/part1/soal2.js diff --git a/quiz/part1/soal2.js b/quiz/part1/soal2.js new file mode 100644 index 00000000..fe02c8f6 --- /dev/null +++ b/quiz/part1/soal2.js @@ -0,0 +1,61 @@ +// Kamu akan diberikan sebuah tanggal dalam tiga variabel, yaitu hari, bulan, dan tahun. Disini kamu diminta untuk membuat format tanggal. Misal tanggal yang diberikan adalah hari 1, bulan 5, dan tahun 1945. Maka, output yang harus kamu proses adalah menjadi 1 Mei 1945. + +// Gunakan switch case untuk kasus ini! +// Contoh: +// let hari = 21; let bulan = 1; let tahun = 1945; +// Maka hasil yang akan tampil di console adalah: '21 Januari 1945'; +//tips gunakan keyword ini di google "conditional switch case javascript" +//dan mulailah membaca dan mencontek di stackoverflow xixixi + +/*let tanggal = 12; // assign nilai variabel tanggal disini! (dengan angka antara 1 - 31) +let bulan = "februari"; // assign nilai variabel bulan disini! (dengan angka antara 1 - 12) +let tahun = 2001; // assign nilai variabel tahun disini! (dengan angka antara 1900 - 2200) +code switch case kamu disini*/ + +let tanggal = 12, + bulan = 1, + tahun = 1990; + +namaBulan = ""; +switch (bulan){ + case 1: + namaBulan ="Januari"; + break; + case 2: + namaBulan ==`February`; + break; + case 3: + namaBulan == `Maret`; + break; + case 4: + namaBulan == `April`; + break; + case 5: + namaBulan == `Mei`; + break; + case 6: + namaBulan == `Juni`; + break; + case 7: + namaBulan == `Juli`; + break; + case 8: + namaBulan == `Agustus`; + break; + case 9: + namaBulan == `September`; + break; + case 10: + namaBulan == `Oktober`; + break; + case 11: + namaBulan == `November`; + break; + case 12: + namaBulan == `Desember`; + break; + default: + namaBulan == (`Bulan tidak valid`); +} + +console.log(`${tanggal} ${namaBulan} ${tahun}`) \ No newline at end of file From 56811ab5a637abb5038f83aef7f4c9d96c147696 Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Sun, 31 Aug 2025 12:41:55 +0700 Subject: [PATCH 04/10] Fix switch case assignments in date formatting and add string manipulation exercises --- quiz/part1/soal2.js | 24 ++++++++++++------------ quiz/part2/soal1.js | 17 +++++++++++++++++ quiz/part2/soal2.js | 41 +++++++++++++++++++++++++++++++++++++++++ quiz/part2/soal3.js | 11 +++++++++++ quiz/part2/soal4.js | 31 +++++++++++++++++++++++++++++++ 5 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 quiz/part2/soal1.js create mode 100644 quiz/part2/soal2.js create mode 100644 quiz/part2/soal3.js create mode 100644 quiz/part2/soal4.js diff --git a/quiz/part1/soal2.js b/quiz/part1/soal2.js index fe02c8f6..70b243e5 100644 --- a/quiz/part1/soal2.js +++ b/quiz/part1/soal2.js @@ -22,40 +22,40 @@ switch (bulan){ namaBulan ="Januari"; break; case 2: - namaBulan ==`February`; + namaBulan =`February`; break; case 3: - namaBulan == `Maret`; + namaBulan = `Maret`; break; case 4: - namaBulan == `April`; + namaBulan = `April`; break; case 5: - namaBulan == `Mei`; + namaBulan = `Mei`; break; case 6: - namaBulan == `Juni`; + namaBulan = `Juni`; break; case 7: - namaBulan == `Juli`; + namaBulan = `Juli`; break; case 8: - namaBulan == `Agustus`; + namaBulan = `Agustus`; break; case 9: - namaBulan == `September`; + namaBulan = `September`; break; case 10: - namaBulan == `Oktober`; + namaBulan = `Oktober`; break; case 11: - namaBulan == `November`; + namaBulan = `November`; break; case 12: - namaBulan == `Desember`; + namaBulan = `Desember`; break; default: - namaBulan == (`Bulan tidak valid`); + namaBulan = (`Bulan tidak valid`); } console.log(`${tanggal} ${namaBulan} ${tahun}`) \ No newline at end of file diff --git a/quiz/part2/soal1.js b/quiz/part2/soal1.js new file mode 100644 index 00000000..db6db46e --- /dev/null +++ b/quiz/part2/soal1.js @@ -0,0 +1,17 @@ +//1. Let's Form a Sentence + +// Problem +// Pada tugas ini kamu diminta untuk melakukan penambahan string menggunakan simbol +. +// Disediakan variable word. Tambahkan nilai word satu per satu dengan nilai variable lain +// untuk membentuk sebuah kalimat. Jangan lupa menambahkan spasi di setiap kata, dan +// tampilkan di console hasil penggabungannya! Kamu tidak perlu membuat variable baru! + +let word = 'JavaScript'; +let second = 'is'; +let third = 'awesome'; +let fourth = 'and'; +let fifth = 'I'; +let sixth = 'love'; +let seventh = 'it!'; + +console.log(`${word} ${second} ${third} ${fourth} ${fifth} ${sixth} ${seventh}`) \ No newline at end of file diff --git a/quiz/part2/soal2.js b/quiz/part2/soal2.js new file mode 100644 index 00000000..478d4505 --- /dev/null +++ b/quiz/part2/soal2.js @@ -0,0 +1,41 @@ +// Problem +// Pada tugas ini kamu diminta untuk "memecah" sebuah kalimat dan menampilkan setiap kata didalamnya. +// Untuk soal nomor ini, gunakan akses satu per satu karakter dari string untuk mengambil setiap huruf dalam kata. +// Terasa manual? Tidak apa-apa, kita coba ini dulu untuk saat ini. + +// Hints +// Saat kamu mendapatkan tiap huruf, untuk membentuk setiap kata kamu tinggal menggunakan simbol + untuk membentuk kata +// tersebut! + +let word = 'wow JavaScript is so cool'; +let panjang = word.length; +let aa = word[0], + ba = word[1], + ca = word[2], + da = word[3], + ea = word[4], + fa = word[5], + ga = word[6], + ia = word[7], + ja = word[8], + ka = word[9], + la = word[10], + ma = word[11], + na = word[12], + oa = word[13], + pa = word[14], + qa = word[15], + ra = word[16], + sa = word[17], + ta = word[18], + ua = word[19], + va = word[20], + wa = word[20], + xa = word[21], + ya = word[22], + za = word[23], + ha = word[24]; + + +console.log('First Word: ' +aa+ba+ca+da+ea+fa+ga+ia+ja+ka+la+ma+na+oa+pa+qa+ra+sa+ta+ua+va+wa+xa+ya+za+ha); +//lanjutkan dengan struktur log diatas \ No newline at end of file diff --git a/quiz/part2/soal3.js b/quiz/part2/soal3.js new file mode 100644 index 00000000..7f230acd --- /dev/null +++ b/quiz/part2/soal3.js @@ -0,0 +1,11 @@ +// Problem +// Mirip seperti soal nomor 2, namun kali ini gunakan substring untuk mengambil potongan dari tiap kata! + +let word3= 'wow JavaScript is so cool'; +let aa = word3.substring(0, 3) + ba = word3.substring(3, 14), + ca = word3.substring(14, 17), + da = word3.substring(17, 20), + ea = word3.substring(20, 25); + +console.log('First Word: ' +aa+ba+ca+da+ea); \ No newline at end of file diff --git a/quiz/part2/soal4.js b/quiz/part2/soal4.js new file mode 100644 index 00000000..08577c6c --- /dev/null +++ b/quiz/part2/soal4.js @@ -0,0 +1,31 @@ +/*Soal 4. Breaking Sentence (yet Again) and Count Each Length +js +// Problem +// Mirip seperti soal nomor 3, tapi tampilkan juga panjang kata masing-masingnya!*/ + + +let word4 = 'wow JavaScript is so cool'; +let firstWord4 = word4.substring(0, 3), + secondWord4 = word4.substring(3, 14), + thirdWord4 = word.substring(14, 17), + fourthWord4 = word4.substring(17, 20), + fiveWord4 = word4.substring(20, 25); + +let firstWordwithLength = firstWord4.length, + secondWordwithlength = secondWord4.length, + thirdWordwithlength = thirdWord4.length, + fourthwordwithlength = fourthWord4.length, + fiveWordwithlength = fiveWord4.length; + +console.log( + 'First Word: ' + firstWord4 + ', with length: ' + firstWordwithLength, + '\nSecond Word: ' + secondWord4 + ', with length: ' + secondWordwithlength + + '\nThird Word: ' + thirdWord4 + ', with length: ' + thirdWordwithlength + + '\nFourth Word: ' + fourthWord4 + ', with length: ' + fourthwordwithlength + + '\nFive Word: ' + fiveWord4 + ', with length: ' + fiveWordwithlength +); + + +/*tulis code sesuai dengan keterangan soalnya dan pola example yang ada + +Selamat Mengerjakan 👨🏻‍🌾*/ \ No newline at end of file From 6bff7b7f9ce26719df68d89d7f87daf1ab79fad0 Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Sun, 31 Aug 2025 20:34:53 +0700 Subject: [PATCH 05/10] Add JavaScript exercises for string manipulation and looping concepts --- quiz/part2/{soal1.js => part2soal1.js} | 0 quiz/part2/{soal2.js => part2soal2.js} | 0 quiz/part2/{soal3.js => part2soal3.js} | 0 quiz/part2/{soal4.js => part2soal4.js} | 0 quiz/part3/part3soal5.js | 21 ++++++++++++++++++ quiz/part3/partsoal1.js | 23 ++++++++++++++++++++ quiz/part3/partsoal2.js | 15 +++++++++++++ quiz/part3/partsoal3.js | 23 ++++++++++++++++++++ quiz/part3/partsoal4.js | 30 ++++++++++++++++++++++++++ 9 files changed, 112 insertions(+) rename quiz/part2/{soal1.js => part2soal1.js} (100%) rename quiz/part2/{soal2.js => part2soal2.js} (100%) rename quiz/part2/{soal3.js => part2soal3.js} (100%) rename quiz/part2/{soal4.js => part2soal4.js} (100%) create mode 100644 quiz/part3/part3soal5.js create mode 100644 quiz/part3/partsoal1.js create mode 100644 quiz/part3/partsoal2.js create mode 100644 quiz/part3/partsoal3.js create mode 100644 quiz/part3/partsoal4.js diff --git a/quiz/part2/soal1.js b/quiz/part2/part2soal1.js similarity index 100% rename from quiz/part2/soal1.js rename to quiz/part2/part2soal1.js diff --git a/quiz/part2/soal2.js b/quiz/part2/part2soal2.js similarity index 100% rename from quiz/part2/soal2.js rename to quiz/part2/part2soal2.js diff --git a/quiz/part2/soal3.js b/quiz/part2/part2soal3.js similarity index 100% rename from quiz/part2/soal3.js rename to quiz/part2/part2soal3.js diff --git a/quiz/part2/soal4.js b/quiz/part2/part2soal4.js similarity index 100% rename from quiz/part2/soal4.js rename to quiz/part2/part2soal4.js diff --git a/quiz/part3/part3soal5.js b/quiz/part3/part3soal5.js new file mode 100644 index 00000000..502f6dea --- /dev/null +++ b/quiz/part3/part3soal5.js @@ -0,0 +1,21 @@ +/*## Soal 5. Bintang asteriks +```js +// Problem buatlah bintang seperti berikut +let input = 5 +//hasilnya +//* +//** +//*** +//**** +//***** +// */ + +let input = 5; + +for(i = 1; i <= input; i++){ + let baris = ""; // untuk menyimpan * + for(j = 1; j <= i; j++){ + baris += "*"; //tambah bintang + } +console.log(baris) //mencetak bintang tiap baris +} \ No newline at end of file diff --git a/quiz/part3/partsoal1.js b/quiz/part3/partsoal1.js new file mode 100644 index 00000000..96863a68 --- /dev/null +++ b/quiz/part3/partsoal1.js @@ -0,0 +1,23 @@ +/* ## Soal 1 + +```js +Problem +Pada tugas ini kamu diminta untuk melakukan looping dalam JavaScript dengan menggunakan syntax while. +Untuk membuat tantangan ini lebih menarik, kamu juga diminta untuk membuat suatu looping yang menghitung maju dan +menghitung mundur. Jangan lupa tampilkan di console juga judul 'LOOPING PERTAMA' dan 'LOOPING KEDUA'. +tampilkan output yang menunjukan kalau looping itu maju pada looping pertama dan mundur pada looping kedua */ + +let loop1 = 1, + loop2 = 10; + +//looping maju +while(loop1 <= 10){ + console.log(`looping maju ${loop1}`); + + loop1++; +} +//looping mundur +while(loop2 >= 1){ + console.log(`looping mundur ${loop2}`); + loop2--; +} \ No newline at end of file diff --git a/quiz/part3/partsoal2.js b/quiz/part3/partsoal2.js new file mode 100644 index 00000000..c1a2fdbb --- /dev/null +++ b/quiz/part3/partsoal2.js @@ -0,0 +1,15 @@ +/* ## Soal 2. Melakukan Looping Menggunakan For +```js +// Problem +// Pada tugas ini kamu diminta untuk melakukan looping dalam JavaScript dengan menggunakan syntax for. +// Untuk membuat tantangan ini lebih menarik, kamu juga diminta untuk membuat suatu looping yang menghitung maju dan +// menghitung mundur. Jangan lupa tampilkan di console juga judul 'LOOPING PERTAMA' dan 'LOOPING KEDUA'. +//tampilkan output yang menunjukan kalau looping itu maju pada looping pertama dan mundur pada looping kedua*/ + +for(loopfor = 1; loopfor <= 10; loopfor++){ + console.log(`looping majau ${loopfor}`) +} + +for(loopfor2 = 10; loopfor2 >= 1; loopfor2--){ + console.log(`looping mundur ${loopfor2}`) +} \ No newline at end of file diff --git a/quiz/part3/partsoal3.js b/quiz/part3/partsoal3.js new file mode 100644 index 00000000..afb1bd62 --- /dev/null +++ b/quiz/part3/partsoal3.js @@ -0,0 +1,23 @@ +/* ## Soal 3. Angka Ganjil dan Genap + +```js +// Hint: kamu akan menggunakan kondisional juga di kasus ini. + +// Problem +// Buatlah sebuah perulangan 1 - 100 dengan pertambahan counter sebanyak 1 +// Di dalam perulangan, periksa setiap angka counter: + +// Apabila angka counter adalah angka genap, tuliskan GENAP +// Apabila angka counter adalah angka ganjil, tuliskan GANJIL */ + +let perulangan = 1, + max = 100; + +while(perulangan <= max){ + if(perulangan % 2 == 0){ + console.log(`angka ${perulangan} adalah angka Genap`) + } else{ + console.log(`angka ${perulangan} adalah angka Ganjil`) + } +perulangan++; +} \ No newline at end of file diff --git a/quiz/part3/partsoal4.js b/quiz/part3/partsoal4.js new file mode 100644 index 00000000..4f8412e6 --- /dev/null +++ b/quiz/part3/partsoal4.js @@ -0,0 +1,30 @@ +/*## Soal 4. counter kelipatan +```js +// Buatlah 3 perulangan baru dari 1 - 100, dengan pertambahan counter sebesar 2, 5, dan 9. +// Pada 3 perulangan baru ini periksa setiap angka counter: + +// Apabila bukan kelipatan yang ditentukan tidak perlu menuliskan apa-apa +// Apabila angka counter adalah kelipatan 3 dengan pertambahan 2, kelipatan 6 dengan pertambahan 5, dan kelipatan 10 dengan pertambahan 9, tuliskan: +// "3 kelipatan 3"dan seterusnya. +``` */ + +//kelipatan 3 +for (i = 3; i <= 100; i += 2){ + if(i % 3 == 0){ + console.log(`${i} kelipatan 3`) + } +} + +//kelipatan 6 +for(i = 6; i <= 100; i +=5){ + if(i % 6 == 0){ + console.log(`${i} kelipatan 6`) + } +} + +//kelipatan 10 +for(i = 10; i <= 100; i +=9){ + if(i % 10 == 0){ + console.log(`${i} kelipatan 10`) + } +} \ No newline at end of file From 9e6e60b984edf97ee22c2bdcd0cab8eb3dfe0beb Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Sun, 31 Aug 2025 20:36:39 +0700 Subject: [PATCH 06/10] Add JavaScript exercises for looping concepts using while and for --- quiz/part3/{partsoal1.js => part3soal1.js} | 0 quiz/part3/{partsoal2.js => part3soal2.js} | 0 quiz/part3/{partsoal3.js => part3soal3.js} | 0 quiz/part3/{partsoal4.js => part3soal4.js} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename quiz/part3/{partsoal1.js => part3soal1.js} (100%) rename quiz/part3/{partsoal2.js => part3soal2.js} (100%) rename quiz/part3/{partsoal3.js => part3soal3.js} (100%) rename quiz/part3/{partsoal4.js => part3soal4.js} (100%) diff --git a/quiz/part3/partsoal1.js b/quiz/part3/part3soal1.js similarity index 100% rename from quiz/part3/partsoal1.js rename to quiz/part3/part3soal1.js diff --git a/quiz/part3/partsoal2.js b/quiz/part3/part3soal2.js similarity index 100% rename from quiz/part3/partsoal2.js rename to quiz/part3/part3soal2.js diff --git a/quiz/part3/partsoal3.js b/quiz/part3/part3soal3.js similarity index 100% rename from quiz/part3/partsoal3.js rename to quiz/part3/part3soal3.js diff --git a/quiz/part3/partsoal4.js b/quiz/part3/part3soal4.js similarity index 100% rename from quiz/part3/partsoal4.js rename to quiz/part3/part3soal4.js From db949f2da69eb0bc9c514a92aba2d433ec93180e Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Sun, 31 Aug 2025 22:07:37 +0700 Subject: [PATCH 07/10] Add second input variable for future enhancements in star pattern exercise --- quiz/part3/part3soal5.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quiz/part3/part3soal5.js b/quiz/part3/part3soal5.js index 502f6dea..aaac9dc2 100644 --- a/quiz/part3/part3soal5.js +++ b/quiz/part3/part3soal5.js @@ -10,7 +10,8 @@ let input = 5 //***** // */ -let input = 5; +let input = 5, + input2 = 1; for(i = 1; i <= input; i++){ let baris = ""; // untuk menyimpan * From de566c31d8531cc5388d4455e530a8f35681943d Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Tue, 2 Sep 2025 00:11:15 +0700 Subject: [PATCH 08/10] Fix variable naming and implement descending star pattern in exercise --- quiz/part3/part3soal5.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/quiz/part3/part3soal5.js b/quiz/part3/part3soal5.js index aaac9dc2..f89a5275 100644 --- a/quiz/part3/part3soal5.js +++ b/quiz/part3/part3soal5.js @@ -11,7 +11,7 @@ let input = 5 // */ let input = 5, - input2 = 1; + halo = 1; for(i = 1; i <= input; i++){ let baris = ""; // untuk menyimpan * @@ -19,4 +19,12 @@ for(i = 1; i <= input; i++){ baris += "*"; //tambah bintang } console.log(baris) //mencetak bintang tiap baris +} + +for (a = 5; a >=halo; a--){ + let baris2 = ""; + for (b = 5; b >=halo; b--){ + baris2 -= "*" + } +console.log(baris2) } \ No newline at end of file From 28b0acfae590d039919ed10438af5c959daabff7 Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Mon, 15 Sep 2025 22:08:22 +0700 Subject: [PATCH 09/10] Add functions for basic operations and process sentence in JavaScript exercises --- quiz/part1/soal1.js | 7 ++++++- quiz/part4/soal1fungsi.js | 11 +++++++++++ quiz/part4/soal2fungsi.js | 14 ++++++++++++++ quiz/part4/soal3fungsi.js | 18 ++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 quiz/part4/soal1fungsi.js create mode 100644 quiz/part4/soal2fungsi.js create mode 100644 quiz/part4/soal3fungsi.js diff --git a/quiz/part1/soal1.js b/quiz/part1/soal1.js index bca47536..ddfdcc9a 100644 --- a/quiz/part1/soal1.js +++ b/quiz/part1/soal1.js @@ -19,7 +19,11 @@ // algoritma //isi algoritma mu disini (AWAS KALO GA DI ISI!!!!) +//input nilai berupa string +//proses menjadi peran +//output let nama = "", peran = ""; + //code disini gunakan console.log untuk outputnya*/ //input @@ -27,8 +31,9 @@ let pengenalan = alert("Tulis namamu bro"), nama = prompt(""), pilihperan = alert("Pilih peran: ksatria, tabib, penyihir") peran = prompt("") - peran = peran.toLowerCase();// agar ridak mempedulikan huruf besar atau kecil pada input string + peran = peran.toLowerCase();// agar tidak mempedulikan huruf besar atau kecil pada input string +//proses menjadi peran if (nama == ""){ console.log(alert("nama wajib diisi")) } else if (peran === "ksatria"){ diff --git a/quiz/part4/soal1fungsi.js b/quiz/part4/soal1fungsi.js new file mode 100644 index 00000000..0ba97758 --- /dev/null +++ b/quiz/part4/soal1fungsi.js @@ -0,0 +1,11 @@ +//Soal 1 js +// Tugas 1 +// Buatlah sebuah fungsi bernama shoutOut(), yang mengembalikan nilai berupa "Halo Function!", +// yang kemudian akan ditampilkan di console. + +//bikin fungsinya disini + +function shoutOut () { + return "Halo Function!" +} +console.log(shoutOut()) \ No newline at end of file diff --git a/quiz/part4/soal2fungsi.js b/quiz/part4/soal2fungsi.js new file mode 100644 index 00000000..a9a29e96 --- /dev/null +++ b/quiz/part4/soal2fungsi.js @@ -0,0 +1,14 @@ +//Soal 2 + +// Buatlah sebuah fungsi bernama calculateMultiply(), yang mengembalikan nilai berupa hasil kali dari +// dua parameter yang dikirim. + +//bikin fungsinya disini + +function calculateMultiply(num1, num2) { + return num1 * num2; +} + +let hasilPerkalian = calculateMultiply(2, 4); +console.log(hasilPerkalian); + diff --git a/quiz/part4/soal3fungsi.js b/quiz/part4/soal3fungsi.js new file mode 100644 index 00000000..4a9ca88d --- /dev/null +++ b/quiz/part4/soal3fungsi.js @@ -0,0 +1,18 @@ +//Soal 3 +// Buatlah sebuah fungsi bernama processSentence(), yang akan memproses seluruh parameter yang diinput menjadi +// satu kalimat berikut: +// "Nama saya [Name], umur saya [Age] tahun, alamat saya di [Address], dan saya punya hobby yaitu [hobby]!" + +//bikin fungsinya disini + +let name = "Agus"; +let age = 30; +let address = "Jln. Malioboro, Yogjakarta"; +let hobby = "gaming"; + +function processSentence (name, age, address, hobby) { + return `Nama saya ${name}, umur saya ${age} tahun alamat saya di ${address}, dan saya punya hobby yaitu ${hobby}` +} + +let fullSentence = processSentence(name,age,address,hobby); +console.log(fullSentence); // Menampilkan "Nama saya Agus, umur saya 30 tahun, alamat saya di Jln. Malioboro, Yogjakarta, dan saya punya hobby yaitu gaming!" From c37166cb00e58bdb14fbb6b5b83da9304a2be788 Mon Sep 17 00:00:00 2001 From: maulanarifaidoc Date: Tue, 16 Sep 2025 22:04:13 +0700 Subject: [PATCH 10/10] Add functions for comparing numbers, reversing strings, converting minutes, and counting characters in JavaScript exercises --- quiz/ujian/soal1ujian.js | 24 ++++++++++++++++++++++++ quiz/ujian/soal2ujian.js | 21 +++++++++++++++++++++ quiz/ujian/soal3ujian.js | 22 ++++++++++++++++++++++ quiz/ujian/soal4ujian.js | 27 +++++++++++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 quiz/ujian/soal1ujian.js create mode 100644 quiz/ujian/soal2ujian.js create mode 100644 quiz/ujian/soal3ujian.js create mode 100644 quiz/ujian/soal4ujian.js diff --git a/quiz/ujian/soal1ujian.js b/quiz/ujian/soal1ujian.js new file mode 100644 index 00000000..c318e08a --- /dev/null +++ b/quiz/ujian/soal1ujian.js @@ -0,0 +1,24 @@ +// Soal 1 + +// Problem +// Diberikan sebuah function bandingkanAngka(angka1, angka2) yang menerima dua parameter angka. +// Function akan me-return nilai true jika angka2 lebih besar dari angka1, dan false jika sebaliknya. +// Jika kedua angka bernilai sama, function akan me-return -1. + +function bandingkanAngka(angka1, angka2) { + //code disini + if (angka1 === angka2) { + return -1; + } else if ( angka2 > angka1) { + return true; + } else { + return false; + } +} + + // TEST CASES + console.log(bandingkanAngka(5, 8)); // true + console.log(bandingkanAngka(5, 3)); // false + console.log(bandingkanAngka(4, 4)); // -1 + console.log(bandingkanAngka(3, 3)); // -1 + console.log(bandingkanAngka(17, 2)); // false \ No newline at end of file diff --git a/quiz/ujian/soal2ujian.js b/quiz/ujian/soal2ujian.js new file mode 100644 index 00000000..17b63c9a --- /dev/null +++ b/quiz/ujian/soal2ujian.js @@ -0,0 +1,21 @@ +// Soal 2 + +// Problem +// Diberikan sebuah function balikKata(kata) yang menerima satu parameter berupa string. +// Function akan me-return kata yang dibalik. Contoh, jika kata adalah "John Doe", function akan me-return "eoD nhoJ". + +function balikKata(kata) { + let hasil = ""; + for (let i = kata.length - 1; i >= 0 ; i--) { + hasil += kata[i]; + } + return hasil; + +} + +// TEST CASES +console.log(balikKata('Hello World and Coders')); // sredoC dna dlroW olleH +console.log(balikKata('John Doe')); // eoD nhoJ +console.log(balikKata('I am a bookworm')); // mrowkoob a ma I +console.log(balikKata('Coding is my hobby')); // ybboh ym si gnidoC +console.log(balikKata('Super')); // repuS \ No newline at end of file diff --git a/quiz/ujian/soal3ujian.js b/quiz/ujian/soal3ujian.js new file mode 100644 index 00000000..865f7304 --- /dev/null +++ b/quiz/ujian/soal3ujian.js @@ -0,0 +1,22 @@ +//Soal 3 + +// Problem +// Diberikan sebuah function konversiMenit(menit) yang menerima satu parameter berupa angka yang merupakan ukuran waktu +// dalam menit. Function akan me-return string waktu dalam format jam:menit berdasarkan menit tersebut. +// Contoh, jika menit adalah 63, maka function akan me-return "1:03". + +function konversiMenit(menit) { + let jam = Math.floor( menit / 60); + sisaMenit = menit % 60; + if (sisaMenit < 10){ + sisaMenit = `0${sisaMenit}` + } + return `${jam}:${sisaMenit}` +} + +// TEST CASES +console.log(konversiMenit(63)); // 1:03 +console.log(konversiMenit(124)); // 2:04 +console.log(konversiMenit(53)); // 0:53 +console.log(konversiMenit(88)); // 1:28 +console.log(konversiMenit(120)); // 2:00 diff --git a/quiz/ujian/soal4ujian.js b/quiz/ujian/soal4ujian.js new file mode 100644 index 00000000..495ee81a --- /dev/null +++ b/quiz/ujian/soal4ujian.js @@ -0,0 +1,27 @@ +//Soal 4 + +// Problem +// Diberikan sebuah function xo(str) yang menerima satu parameter berupa string. +// Function akan me-return true jika jumlah karakter x sama dengan jumlah karakter o, dan false jika tidak. + +function xo(str) { + // you can only write your code here! + let hitungX = 0; + let hitungO = 0; + + for (i = 0; i < str.length; i++){ + if (str[i] === "x"){ + hitungX = hitungX + 1; + } else if (str[i] === "o"){ + hitungO = hitungO +1; + } + } + return hitungX === hitungO; +} + +// TEST CASES +console.log(xo('xoxoxo')); // true +console.log(xo('oxooxo')); // false +console.log(xo('oxo')); // false +console.log(xo('xxxooo')); // true +console.log(xo('xoxooxxo')); // true \ No newline at end of file