Berikut ini adalah pertanyaan dari test32423 pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas
* mendeteksi jenis segitiga berdasarkan nilai argumen.
* Contoh:
* - 1, 1, 1 -> Segitiga sama sisi
* - 4, 4, 2 -> Segitiga sama kaki
* - 3, 4, 6 -> Segitiga sembarang
*
* Namun fungsi detectTriangle belum berjalan dengan baik karena
* bila ada argumen fungsi yang bukan number, alih-alih error, ia akan mengembalikan "Segitiga sembarang".
* Contoh:
* - 1, false, 1 -> Segitiga sembarang
* - 'a', 3, 5 -> Segitiga sembarang
* - 12, 2, null -> Segitiga sembarang
* Kondisi yang diharapkan:
* - 1, false, 1 -> Argumen kedua harus number
* - 'a', 3, 5 -> Argumen pertama harus number
* - 12, 2, null -> Argumen ketiga harus number
*
* Tugas Anda adalah memperbaiki fungsi detectTriangle agar berjalan dengan kondisi yang diharapkan.
* Pastikan Anda menggunakan teknik Throwing dan Handling Error yah.
*
* TODO 1:
* - Buatlah class ValidationError yang merupakan custom error dengan spesifikasi berikut:
* - Turunan dari class Error
* - Memiliki constructor(message)
* - this.name harus bernilai "ValidationError"
*
* TODO 2:
* - Buatlah fungsi validateNumberInput yang memvalidasi 3 buah input (argumen) dengan spesifikasi berikut:
* - Menerima 3 argumen
* - Bila argumen pertama bukan number:
* - throw ValidationError dengan pesan 'Argumen pertama harus number'
* - Bila argumen kedua bukan number:
* - throw ValidationError dengan pesan 'Argumen kedua harus number'
* - Bila argumen ketiga bukan number:
* - throw ValidationError dengan pesan 'Argumen ketiga harus number'
*
* TODO 3:
* - Panggil fungsi validateInputNumber di dalam fungsi detectTriangle untuk memvalidasi nilai argumen a, b, dan c.
* - pastikan Anda memanggil validaateInputNumber menggunakan try .. catch.
* - bila block catch terpanggil, kembalikan fungsi detectTriangle dengan pesan error yang dibawa fungsi validateInputNumber.
*/
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Jawaban:
// TODO 1
class ValidationError extends Error{
constructor(message){
super(message);
this.name="ValidationError";
}
}
// TODO 2
function validateNumberInput (a, b, c){
try{
if(typeof(a)!=='number')
{throw new ValidationError("Argumen pertama harus number");}
if(typeof(b)!=='number')
{throw new ValidationError("Argumen kedua harus number");}
if(typeof(c)!=='number')
{throw new ValidationError("Argumen ketiga harus number");}
}catch(error){
return `${error.message}`;
}
}
const detectTriangle = (a, b, c) => {
// TODO 3
try{
const check = validateNumberInput(a,b,c);
if(check === undefined){
if (a === b && b === c) {
return 'Segitiga sama sisi';
}
if (a === b || a === c || b === c) {
return 'Segitiga sama kaki';
}
return 'Segitiga sembarang';
}else{
const isi = validateNumberInput(a,b,c);
return isi;
}
}
catch(error){
const isi = validateNumberInput(a,b,c);
return isi;
}
};
console.log(detectTriangle(1,false,1));
console.log(detectTriangle('a', 3, 5));
console.log(detectTriangle(12,2,null));
Penjelasan:
Coba di run
Semoga dengan pertanyaan yang sudah terjawab oleh munirbro dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Tue, 17 Aug 21