import React, { useState } from 'react';
// Fungsi helper untuk merender ekspresi matematika menjadi HTML
const renderMath = (text) => {
let formattedText = text;
let changed = true;
// Mengganti pangkat (misal: 2^3 menjadi 23)
// Menangani angka, variabel, atau ekspresi dalam kurung sebelum pangkat
// Menangani pangkat positif, negatif, atau dalam kurung
// Iterasi untuk menangani pangkat bersarang (misal: (a^m)^n)
while (changed) {
changed = false;
const newText = formattedText.replace(
/([a-zA-Z0-9_().]+)(\^)(\(?[-+]?[a-zA-Z0-9_]+\)?)/g,
(match, base, caret, exp) => {
// Hanya mengganti jika belum dalam tag untuk menghindari duplikasi
// dan memastikan ekspresi di dalam kurung sudah di-render jika ada pangkat di dalamnya
if (!base.includes('') && !exp.includes('')) {
changed = true;
return `${base}${exp}`;
}
return match; // Kembalikan yang asli jika sudah diformat
}
);
if (newText !== formattedText) {
formattedText = newText;
changed = true;
}
}
// Mengganti akar (misal: akar 2 menjadi √2)
formattedText = formattedText.replace(/akar (\d+)/g, '√$1');
// Mengganti akar pangkat n (misal: akar pangkat 5 dari 9 menjadi 5√9)
formattedText = formattedText.replace(/akar pangkat (\d+) dari ([\w\d]+)/g, '$1√$2');
// Mengganti "x" sebagai simbol perkalian
formattedText = formattedText.replace(/ x /g, ' × ');
// Mengganti ":" sebagai simbol pembagian
formattedText = formattedText.replace(/ : /g, ' ÷ ');
// Mengganti pecahan (misal: 1/16 menjadi 1⁄16, atau A / B menjadi A ⁄ B)
// Menggunakan spasi di sekitar slash untuk pecahan yang lebih kompleks agar tidak salah tangkap
formattedText = formattedText.replace(/(\d+)\s*\/\s*(\d+)/g, '$1⁄$2'); // Untuk angka saja
formattedText = formattedText.replace(/ \/ /g, ' ⁄ '); // Untuk slash dengan spasi di sekitarnya
return ;
};
// Komponen Reusable untuk Bagian Topik
const TopicSection = ({ title, material, examples, quizQuestions }) => {
return (
);
};
// Komponen Asesmen Interaktif
const Assessment = () => {
const allAssessmentQuestions = [
{
question: "Hasil dari 2^3 x 2^4 adalah...",
options: ["2^7", "2^12", "4^7", "4^12"],
correctAnswer: "2^7"
},
{
question: "Bentuk sederhana dari akar 72 adalah...",
options: ["6 akar 2", "2 akar 6", "36 akar 2", "2 akar 36"],
correctAnswer: "6 akar 2"
},
{
question: "Bentuk baku dari 0.0000056 adalah...",
options: ["5.6 x 10^(-5)", "5.6 x 10^(-6)", "5.6 x 10^5", "5.6 x 10^6"],
correctAnswer: "5.6 x 10^(-6)"
},
{
question: "Rasionalkan penyebut dari 3 / akar 5",
options: ["(3 akar 5) / 5", "3 akar 5", "(akar 5) / 5", "5 akar 3"],
correctAnswer: "(3 akar 5) / 5"
},
{
question: "Nilai dari (3^2)^3 adalah...",
options: ["3^5", "3^6", "9^3", "6^2"],
correctAnswer: "3^6"
},
{
question: "Tuliskan hasil dari 5^0.",
options: ["0", "1", "5", "Tidak terdefinisi"],
correctAnswer: "1"
},
{
question: "Sederhanakan akar 18 + akar 50.",
options: ["akar 68", "8 akar 2", "7 akar 2", "68"],
correctAnswer: "8 akar 2"
},
{
question: "Tuliskan 125,000,000 dalam bentuk baku.",
options: ["1.25 x 10^7", "1.25 x 10^8", "12.5 x 10^7", "0.125 x 10^9"],
correctAnswer: "1.25 x 10^8"
},
{
question: "Rasionalkan penyebut dari 2 / (3 - akar 2).",
options: ["(6 + 2 akar 2) / 7", "(6 - 2 akar 2) / 7", "2(3 + akar 2)", "2(3 - akar 2)"],
correctAnswer: "(6 + 2 akar 2) / 7"
}
];
const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
const [userAnswers, setUserAnswers] = useState(Array(allAssessmentQuestions.length).fill(null));
const [score, setScore] = useState(0);
const [showResults, setShowResults] = useState(false);
const [quizStarted, setQuizStarted] = useState(false);
const handleAnswerSelect = (selectedOption) => {
const updatedAnswers = [...userAnswers];
updatedAnswers[currentQuestionIndex] = selectedOption;
setUserAnswers(updatedAnswers);
};
const handleNextQuestion = () => {
if (currentQuestionIndex < allAssessmentQuestions.length - 1) {
setCurrentQuestionIndex(currentQuestionIndex + 1);
} else {
calculateScore();
setShowResults(true);
}
};
const calculateScore = () => {
let newScore = 0;
allAssessmentQuestions.forEach((q, index) => {
if (userAnswers[index] === q.correctAnswer) {
newScore++;
}
});
setScore(newScore);
};
const handleRestartQuiz = () => {
setCurrentQuestionIndex(0);
setUserAnswers(Array(allAssessmentQuestions.length).fill(null));
setScore(0);
setShowResults(false);
setQuizStarted(false);
};
const currentQuestion = allAssessmentQuestions[currentQuestionIndex];
return (
Asesmen Akhir
{!quizStarted ? (
Klik "Mulai Asesmen" untuk memulai asesmen akhir. Anda akan menjawab {allAssessmentQuestions.length} soal pilihan ganda.
Skor Anda akan ditampilkan setelah Anda menyelesaikan semua soal.
) : showResults ? (
Asesmen Selesai!
Skor Anda: {score} dari {allAssessmentQuestions.length}
) : (
Soal {currentQuestionIndex + 1} dari {allAssessmentQuestions.length}. {renderMath(currentQuestion.question)}
);
};
function App() {
const [currentPage, setCurrentPage] = useState('home');
const topics = [
{
id: 'exponents-understanding',
title: '1. Memahami Bilangan Berpangkat',
material: `Bilangan berpangkat atau eksponen adalah bentuk perkalian berulang dari suatu bilangan yang sama. Bentuk umum bilangan berpangkat adalah a^n, di mana a disebut basis (bilangan pokok) dan n disebut eksponen (pangkat).
Contoh: 2^3 = 2 x 2 x 2 = 8. Di sini, 2 adalah basis dan 3 adalah eksponen.`,
examples: [
{
question: "Tentukan hasil dari 3^4.",
solution: "3^4 = 3 x 3 x 3 x 3 = 81"
},
{
question: "Tentukan hasil dari (-2)^3.",
solution: "(-2)^3 = (-2) x (-2) x (-2) = 4 x (-2) = -8"
}
],
quizQuestions: [
{
question: "Berapakah hasil dari 5^3?",
options: ["15", "25", "125", "625"],
correctAnswer: "125"
},
{
question: "Nilai dari 10^0 adalah...",
options: ["0", "1", "10", "100"],
correctAnswer: "1"
}
]
},
{
id: 'exponents-properties',
title: '2. Memahami Sifat-Sifat Bilangan Berpangkat',
material: `Bilangan berpangkat memiliki beberapa sifat penting yang memudahkan dalam perhitungan:
1. Perkalian: a^m x a^n = a^(m+n)
2. Pembagian: a^m : a^n = a^(m-n)
3. Pangkat dari Pangkat: (a^m)^n = a^(m x n)
4. Pangkat Nol: a^0 = 1 (untuk a tidak sama dengan 0)
5. Pangkat Negatif: a^(-n) = 1/a^n
6. Perkalian berpangkat: (ab)^n = a^n b^n
7. Pembagian berpangkat: (a/b)^n = a^n / b^n`,
examples: [
{
question: "Sederhanakan 2^5 x 2^3.",
solution: "Menggunakan sifat a^m x a^n = a^(m+n), maka 2^5 x 2^3 = 2^(5+3) = 2^8 = 256"
},
{
question: "Sederhanakan (3^2)^4.",
solution: "Menggunakan sifat (a^m)^n = a^(m x n), maka (3^2)^4 = 3^(2 x 4) = 3^8 = 6561"
}
],
quizQuestions: [
{
question: "Hasil dari x^6 : x^2 adalah...",
options: ["x^8", "x^4", "x^3", "x^12"],
correctAnswer: "x^4"
},
{
question: "Bentuk sederhana dari 4^(-2) adalah...",
options: ["16", "-16", "1/16", "-1/16"],
correctAnswer: "1/16"
}
]
},
{
id: 'exponents-operations',
title: '3. Menyelesaikan Operasi Bilangan Berpangkat',
material: `Untuk menyelesaikan operasi bilangan berpangkat, kita menerapkan sifat-sifat yang telah dipelajari. Penting untuk memperhatikan urutan operasi (PEMDAS/BODMAS) jika ada kombinasi operasi.`,
examples: [
{
question: "Hitunglah nilai dari (2^3 x 3^2)^2.",
solution: "(2^3 x 3^2)^2 = (2^3)^2 x (3^2)^2 = 2^(3 x 2) x 3^(2 x 2) = 2^6 x 3^4 = 64 x 81 = 5184"
},
{
question: "Sederhanakan (5^7 / 5^4) x 5^2.",
solution: "(5^7 / 5^4) x 5^2 = 5^(7-4) x 5^2 = 5^3 x 5^2 = 5^(3+2) = 5^5 = 3125"
}
],
quizQuestions: [
{
question: "Hasil dari (2^2)^3 : 2^4 adalah...",
options: ["2^2", "2^3", "2^4", "2^5"],
correctAnswer: "2^2"
},
{
question: "Nilai dari (3x^2)^3 adalah...",
options: ["3x^6", "9x^6", "27x^6", "27x^5"],
correctAnswer: "27x^6"
}
]
},
{
id: 'radicals-understanding',
title: '4. Memahami Bilangan Bentuk Akar',
material: `Bentuk akar adalah akar dari suatu bilangan rasional yang hasilnya adalah bilangan irasional. Bentuk umum adalah akar pangkat n dari a, di mana n adalah indeks akar dan a adalah radikan. Jika n=2, biasanya ditulis sebagai akar a.
Bentuk akar dapat diubah menjadi bilangan berpangkat pecahan: akar pangkat n dari a^m = a^(m/n).`,
examples: [
{
question: "Ubahlah akar 8 ke bentuk sederhana.",
solution: "akar 8 = akar (4 x 2) = akar 4 x akar 2 = 2 akar 2"
},
{
question: "Ubahlah 3^(2/5) ke bentuk akar.",
solution: "3^(2/5) = akar pangkat 5 dari 3^2 = akar pangkat 5 dari 9"
}
],
quizQuestions: [
{
question: "Bentuk sederhana dari akar 48 adalah...",
options: ["4 akar 3", "3 akar 4", "16 akar 3", "12 akar 4"],
correctAnswer: "4 akar 3"
},
{
question: "Bentuk pangkat pecahan dari akar pangkat 3 dari 7^2 adalah...",
options: ["7^(2/3)", "7^(3/2)", "7^6", "7^(-2/3)"],
correctAnswer: "7^(2/3)"
}
]
},
{
id: 'radicals-operations',
title: '5. Menyelesaikan Operasi Bilangan Bentuk Akar',
material: `Operasi pada bentuk akar meliputi penjumlahan, pengurangan, perkalian, dan pembagian.
1. Penjumlahan/Pengurangan: Hanya bisa dilakukan jika radikan dan indeks akarnya sama. Contoh: a akar c + b akar c = (a+b) akar c.
2. Perkalian: akar a x akar b = akar (ab).
3. Pembagian: akar a / akar b = akar (a/b).`,
examples: [
{
question: "Hitunglah akar 12 + akar 27.",
solution: "akar 12 + akar 27 = akar (4 x 3) + akar (9 x 3) = 2 akar 3 + 3 akar 3 = (2+3) akar 3 = 5 akar 3"
},
{
question: "Hitunglah akar 6 x akar 3.",
solution: "akar 6 x akar 3 = akar (6 x 3) = akar 18 = akar (9 x 2) = 3 akar 2"
}
],
quizQuestions: [
{
question: "Hasil dari 5 akar 2 - 2 akar 2 adalah...",
options: ["3 akar 2", "7 akar 2", "3", "akar 2"],
correctAnswer: "3 akar 2"
},
{
question: "Hasil dari akar 5 x akar 20 adalah...",
options: ["akar 100", "10", "5 akar 4", "25"],
correctAnswer: "10"
}
]
},
{
id: 'radicals-rationalizing',
title: '6. Merasionalkan Penyebut Bentuk Akar',
material: `Merasionalkan penyebut berarti mengubah penyebut yang berbentuk akar menjadi bilangan rasional. Ini dilakukan dengan mengalikan pembilang dan penyebut dengan bentuk sekawan dari penyebut.
1. Bentuk a / akar b: Kalikan dengan akar b / akar b.
2. Bentuk a / (b + akar c): Kalikan dengan (b - akar c) / (b - akar c).
3. Bentuk a / (akar b + akar c): Kalikan dengan (akar b - akar c) / (akar b - akar c).`,
examples: [
{
question: "Rasionalkan penyebut dari 2 / akar 3.",
solution: "(2 / akar 3) x (akar 3 / akar 3) = (2 akar 3) / 3"
},
{
question: "Rasionalkan penyebut dari 4 / (2 + akar 2).",
solution: "(4 / (2 + akar 2)) x ((2 - akar 2) / (2 - akar 2)) = (4(2 - akar 2)) / (2^2 - (akar 2)^2) = (8 - 4 akar 2) / (4 - 2) = (8 - 4 akar 2) / 2 = 4 - 2 akar 2"
}
],
quizQuestions: [
{
question: "Bentuk rasional dari 1 / akar 7 adalah...",
options: ["(akar 7) / 7", "akar 7", "7 akar 7", "1"],
correctAnswer: "(akar 7) / 7"
},
{
question: "Rasionalkan penyebut dari 6 / (akar 5 - 1).",
options: ["(3(akar 5 + 1)) / 2", "3(akar 5 + 1)", "6(akar 5 + 1)", "(6(akar 5 + 1)) / 4"],
correctAnswer: "(3(akar 5 + 1)) / 2"
}
]
},
{
id: 'standard-form',
title: '7. Menulis Bentuk Baku Bilangan',
material: `Bentuk baku (notasi ilmiah) adalah cara menulis bilangan yang terlalu besar atau terlalu kecil agar lebih mudah dibaca. Bentuk umum adalah a x 10^n, di mana 1 <= |a| < 10 dan n adalah bilangan bulat.
Untuk bilangan besar, n positif. Untuk bilangan kecil (desimal), n negatif.`,
examples: [
{
question: "Tuliskan 1,230,000 dalam bentuk baku.",
solution: "Geser koma 6 tempat ke kiri: 1.23 x 10^6"
},
{
question: "Tuliskan 0.000000045 dalam bentuk baku.",
solution: "Geser koma 8 tempat ke kanan: 4.5 x 10^(-8)"
}
],
quizQuestions: [
{
question: "Bentuk baku dari 98,700,000 adalah...",
options: ["9.87 x 10^7", "9.87 x 10^8", "98.7 x 10^6", "0.987 x 10^8"],
correctAnswer: "9.87 x 10^7"
},
{
question: "Bentuk baku dari 0.000123 adalah...",
options: ["1.23 x 10^(-3)", "1.23 x 10^(-4)", "1.23 x 10^4", "12.3 x 10^(-5)"],
correctAnswer: "1.23 x 10^(-4)"
}
]
}
];
return (
Modul ini akan membantu Anda memahami konsep bilangan berpangkat dan bentuk akar,
serta cara menyelesaikan berbagai operasi terkait.
Gunakan navigasi di atas untuk menjelajahi materi, contoh soal, kuis interaktif, dan asesmen akhir.
0 comments :
Posting Komentar