Website isi beberapa metode menggunakan kumpulan soal

 Kami buat beberapa metode untuk menggunakan kumpulan soal. Berikut link nya : https://galihw.github.io/SoulMath/

Dan ini tampilan screenshootnya : 


Generator Soal Matematika SD

Ketika mengajar, namun mau membahas soal yang sama tapi hanya beda angkanya saja, atau varian lsin dari soal tersebut, bisa menggunakan generator soal ini.

Sudah dikumpulkan database soal sebanyak 403 buah, dan selanjutnya dibuat menggunakan coding berbahasa html dan javascript.

Isinya ada 23 Bab untuk tingkat SD kelas 3, 4, 5, dan 6.

Ini link generator soalnya : https://galihw.github.io/DatabaseSoalSD/GeneratorSoalMatematikaSD.html

Adapun 23 Bab tersebut adalah :

Kelas 3 (total 84)

  1. Bilangan Cacah sampai 1.000 (13)
  2. Kalimat Matematika (12)
  3. Pengukuran Panjang dan Berat (30)
  4. Unsur-Unsur Bangun Datar (14)
  5. Penyajian Data dalam Tabel (15)

Kelas 4 (total 102)

  1. Bilangan Cacah sampai 10.000 (12)
  2. Pecahan (24)
  3. Pola Gambar dan Pola Bilangan (16)
  4. Pengukuran Luas dan Volume (18)
  5. Bangun Datar (16)
  6. Piktogram dan Diagram Batang (16)

Kelas 5 (total 158)

  1. Bilangan Cacah sampai dengan 100.000 (20)
  2. KPK dan FPB (20)
  3. Bilangan Pecahan (20)
  4. Keliling Bangun Datar (20)
  5. Luas Daerah Bangun Datar (20)
  6. Sudut (17)
  7. Membandingkan Ciri-Ciri Bangun Datar (17)
  8. Data (24)

Kelas 6 (total 59)

  1. Pecahan dan Desimal (20)
  2. Rasio (11)
  3. Balok Dan Kubus (18)
  4. Peluang (10)

Mau dibuatkan seperti ini? Email saja ke galih.widosamodra@gmail.com


Galih Widosamodra, S.Si

SoulMathOnline

galih.widosamodra@gmail.com



Generator Soal Matematika SMP

Ketika mengajar, namun mau membahas soal yang sama tapi hanya beda angkanya saja, atau varian lsin dari soal tersebut, bisa menggunakan generator soal ini.

Sudah dikumpulkan database soal sebanyak 333 buah, dan selanjutnya dibuat menggunakan coding berbahasa html dan javascript.

Isinya ada 19 Bab untuk tingkat SMP.

Ini link generator soalnya : https://galihw.github.io/DatabaseSoal/MainGenerator.html

Adapun 19 Bab tersebut adalah :

  1. Himpunan (15)
  2. Teori Bilangan (20)
  3. Aljabar (23)
  4. PLSV (20)
  5. PLDV (13)
  6. Aritmatika Sosial (30)
  7. Perbandingan (20)
  8. Persamaan Garis Lurus (19)
  9. Garis dan Sudut (10)
  10. Segitiga dan Pythagoras (20)
  11. Segiempat (20)
  12. Kesebangunan (20)
  13. Lingkaran (20)
  14. Bangun Ruang (20)
  15. Persamaan Kuadrat (8)
  16. Peluang (10)
  17. Statistika (10)
  18. Fungsi (15)
  19. Barisan dan Deret (20)

Mau dibuatkan seperti ini? Email saja ke galih.widosamodra@gmail.com


Galih Widosamodra, S.Si

SoulMathOnline

galih.widosamodra@gmail.com


Generator - si Database Soal Matematika SMP

Saya sudah membuat Database Soal Matematika SMP dalam bentuk Generator Soal. 
Apa itu Generator Soal? Ini adalah alat untuk menyusun soal matematika SMP sebanyak 20 soal dari database yang sudah tersedia.

Adapun Database itu saya ambil di blog ini, kemudian di ubah menjadi data yang siap di ambil satu per satu soal yang dibutuhkan. (soulmathonline.blogspot.com dan databasesoalsoalmatematika.blogspot.com)

Tersedia 333 soal dari 19 bab yang bisa dipilih.

Untuk apa sih? Bisa untuk bahan ajar bagi guru les privat matematika SMP. Bisa juga untuk bahan latihan soal bagi siswa SMP.

Generator soal nya bisa di buka dimana? ini dia https://galihw.github.io/DatabaseSoal/MainGenerator.html

Tampilan Generator Soal Matematika SMP

Silahkan gunakan bagi yang membutuhkan. 


Demikian
SoulMathOnline.blogpsot.com
galih.widosamodra@gmail.com

Les Privat Online Matematika - Bu Endah

Untuk saat ini, les privat online matematika sama Bu Endah saja ya. Levelnya SD dan SMP saja. Untuk SMA tidak diadakan dulu.
Nomor kontak 08986989406

Demikian, 
SoulMathOnline

Cuman Goceng - Latihan Soal Matematika

Cuman Goceng (Rp5.000 per bab - 10 paket)

Soal latihan matematika SMP


Lynkid nya :

Bab 1 Himpunan

link http://lynk.id/galihwidosamodra/nzjl64z9186k

Bab 2 Teori Bilangan

link http://lynk.id/galihwidosamodra/x5y9z1j71xdy

Bab 3 Aljabar

link http://lynk.id/galihwidosamodra/pljozn99x7dk

Bab 4 Persamaan Linier Satu Variabel (PLSV)

link http://lynk.id/galihwidosamodra/grw861jj6jqm

Bab 5 Persamaan Linier Dua Variabel (PLDV)

link http://lynk.id/galihwidosamodra/g952g6qepqk4

Bab 6 Aritmatika Sosial

link http://lynk.id/galihwidosamodra/xxj47d2k0xxr

Bab 7 Perbandingan

link http://lynk.id/galihwidosamodra/xk71wnk2ww85

Bab 8 Persamaan Garis Lurus

link http://lynk.id/galihwidosamodra/z20qn1jp1e9j

Bab 9 Garis dan Sudut

link http://lynk.id/galihwidosamodra/r4y8vn5j0rzk

Bab 10 Segitiga dan Pythagoras

link http://lynk.id/galihwidosamodra/3wxj716yjw1j

Bab 11 Segiempat

link http://lynk.id/galihwidosamodra/v8qg9zzl9e1z

Bab 12 Kesebangunan

link http://lynk.id/galihwidosamodra/rv604yg3ngvn

Bab 13 Lingkaran

link http://lynk.id/galihwidosamodra/e7y6ngp9r24p

Bab 14 Bangun Ruang

link http://lynk.id/galihwidosamodra/0dp9y5g95y0e

Bab 15 Persamaan Kuadrat

link http://lynk.id/galihwidosamodra/786o5jdpm98o

Bab 16 Peluang

link http://lynk.id/galihwidosamodra/y762qkd1kqno

Bab 17 Statistika

link http://lynk.id/galihwidosamodra/dn0zq3vp1qdp

Bab 18 Fungsi

link http://lynk.id/galihwidosamodra/04r2g9p8gwmx

Bab 19 Barisan dan Deret

link http://lynk.id/galihwidosamodra/9wg0zkx6zm8n

Code 6 - Gambar besar dipotong jadi 4 buah - tampilkan 1 buah

Pertemuan#06 - Membuat sebuah soal bangun ruang dimana ada 4 pilihan dalam 1 gambar sprite

  1. Bagian pendukung :
    1. Mendapatkan sebuah angka acak
function RandomAngkaAtoB(a,b){ var r = a+Math.ceil(Math.random() * b); return r; }
    1. Mengacak isi sebuah array
function RandomMyArray(Arr){ for (var i=0; i<Arr.length; i++){ var r = Math.floor(Math.random() * Arr.length); var a = Arr[i]; Arr[i] = Arr[r]; Arr[r] = a; } return Arr }
    1. Mendapatkan nomor urut jawaban benar
function NoJawabanBenar(Arr, jwb){ for (var i=0; i<Arr.length; i++){ if (Arr[i]==jwb){ return i; break; } } }
    1. Mendapatkan huruf jawaban
function GetABCD(no){ var ABCD = ["A","B","C","D"] return ABCD[no] }
    1. Mendapatkan Data soal
function MyFungsi6(){ var pil = RandomAngkaAtoB(-1,4); var arrSalah = [32, 28, 24, 20 ] var ArSisi = [pil]; var benar = arrSalah[pil]; do{ var arrSalah = RandomMyArray(arrSalah); var ff1 = arrSalah[0]==benar || arrSalah[1]==benar || arrSalah[2]==benar; }while(ff1); return [ArSisi,benar,arrSalah]; }
    1. Memasukkan gambar ke canvas
function Gambar6(nmcanvas,Arr){ const canvas = document.getElementById(nmcanvas); const ctx = canvas.getContext("2d"); // menambahkan image pada canvas // let base_image = new Image(); base_image.src = "Gambar6.png"; base_image.onload = function () { ctx.drawImage(base_image, 0, 0-Arr[0]*142,base_image.width, base_image.height); } return 0; }
-------------------------------------------
  1. Bagian utama :
    1. Program Utama
function GetSoal6(){ const MyData = MyFungsi6(); var ArSisi=MyData[0]; var benar=MyData[1]; var arrSalah=MyData[2]; const DrawPGL = Gambar6("myCanvas6",ArSisi); var ss ss = "Gambar di atas adalah mainan anak-anak yang berbentuk balok. <br>Tersusun dari kubus-kubus satuan yang kongruen. <br>Jika seluruh permukaan balok tersebut di cat, banyaknya kubus satuan yang terkena cat pada dua sisinya saja ada ... "; var Ar = []; // jawaban Ar[0] = benar; Ar[1] = arrSalah[0]; Ar[2] = arrSalah[1]; Ar[3] = arrSalah[2]; var jawab = Ar[0]; Ar = RandomMyArray(Ar); var noBenar = NoJawabanBenar(Ar, jawab); var textSoal = ss+" <p>A. "+Ar[0]+" buah<br>B. "+Ar[1]+" buah<br>C. "+Ar[2]+" buah<br>D. "+Ar[3]+" buah</p>"; var textJawab = jawab+"</p>"; var ArFix = []; ArFix.push(textSoal); ArFix.push(GetABCD(noBenar)); return ArFix; }
    1. Nomor soal dan kalimat sebelum gambar
document.write("<p>6. Perhatikan gambar!<p>");
    1. Menyiapkan canvas untuk gambar
<canvas id="myCanvas6" width="190" height="142" style="border:0px solid grey;"> </canvas>
    1. Mencetak soal
var ss ss = GetSoal6(); document.write("<p>"+ss[0]+"</p>"); document.write("Jawaban : "+ss[1]);
-------------------------------------------

Code 5 - Gambar semua - kecuali kunci

Pertemuan#05 - Membuat sebuah soal pecahan berikut gambar pecahan untuk soal dan jawaban

  1. Bagian pendukung :
    1. Mendapatkan sebuah angka acak
function RandomAngkaAtoB(a,b){ var r = a+Math.ceil(Math.random() * b); return r; }
    1. Mengacak isi sebuah array
function RandomMyArray(Arr){ for (var i=0; i<Arr.length; i++){ var r = Math.floor(Math.random() * Arr.length); var a = Arr[i]; Arr[i] = Arr[r]; Arr[r] = a; } return Arr }
    1. Mendapatkan nomor urut jawaban benar
function NoJawabanBenar(Arr, jwb){ for (var i=0; i<Arr.length; i++){ if (Arr[i]==jwb){ return i; break; } } }
    1. Mendapatkan huruf jawaban
function GetABCD(no){ var ABCD = ["A","B","C","D"] return ABCD[no] }
    1. Mendapatkan Data soal
function MyFungsi5(){ do{ var a1 = RandomAngkaAtoB(3,10); var a2 = RandomAngkaAtoB(3,9); var b1 = RandomAngkaAtoB(0,5); var b2 = RandomAngkaAtoB(0,5); var aafix1 = a2; var aafix2 = a1; var aafix3 = a1*b2-a2*b1; }while(aafix3<1 || b1==b2**2 || b1==b2) var benar = [a1,a2,b1,b2,"–",aafix1,"+",aafix2,"–",aafix3]; var salah1 = [a1,a2,b1,b2,"–",aafix1,"+",aafix2,"+",aafix3]; var salah2 = [a1,a2,b1,b2,"–",aafix1,"–",aafix2,"+",aafix3]; var salah3 = [a1,a2,b1,b2,"–",aafix1,"–",aafix2,"–",aafix3]; var salah4 = [a1,a2,b1,b2,"+",aafix1,"+",aafix2,"–",aafix3]; var salah5 = [a1,a2,b1,b2,"+",aafix1,"–",aafix2,"+",aafix3]; arrsalah = [salah1,salah2,salah3,salah4,salah5]; arrsalah = RandomMyArray(arrsalah); return [a1,a2,b1,b2,benar,arrsalah]; }
    1. Memasukkan gambar ke canvas
function Gambar5(nmcanvas,ss,arr,ar1,ar2,ar3,ar4){ const canvas = document.getElementById(nmcanvas); const ctx = canvas.getContext("2d"); // menambahkan image pada canvas // let base0_image = new Image(); let base1_image = new Image(); base0_image.src = "Gambar5-0.png"; base1_image.src = "Gambar5-0abcd.png"; base0_image.onload = function () { ctx.drawImage(base0_image, 0, 0,base0_image.width, base0_image.height); base1_image.onload = function () { var Abjad = ["A","B","C","D"]; for(var i=0;i<4;i++){ var yy = 110+50*i; ctx.drawImage(base1_image, 0, yy,base1_image.width, base1_image.height); ctx.font = "16px Times New Roman"; ctx.textAlign = "left"; ctx.fillText(Abjad[i],0,yy+30); } InsertText(arr); } } function InsertText(arr){ ctx.font = "16px Times New Roman"; ctx.textAlign = "left"; ctx.fillText(ss,0,80); ctx.textAlign = "center"; ctx.fillText(arr[0],35,15); ctx.fillText("x² \u2212 "+arr[2],35,40); ctx.fillText(arr[1],125,15); ctx.fillText("x \u2212 "+arr[3],125,40); var Abjad = ["A","B","C","D"]; var arrPil = [ar1,ar2,ar3,ar4] var ynext = 90; for(i=0;i<4;i++){ ctx.font = "16px Times New Roman"; ctx.textAlign = "center"; //mengubah min jadi simbol min if(arrPil[i][4]=="–") ctx.fillText(arrPil[i][4]+""+arrPil[i][5]+"x² "+arrPil[i][6]+" "+arrPil[i][7]+"x "+arrPil[i][8]+" "+arrPil[i][9],100,ynext+50*i+40); else ctx.fillText(""+arrPil[i][5]+"x² "+arrPil[i][6]+" "+arrPil[i][7]+"x "+arrPil[i][8]+" "+arrPil[i][9],100,ynext+50*i+40); ctx.fillText("(x² \u2212 "+arrPil[i][2]+")(x \u2212 "+arrPil[i][3]+")",100,ynext+50*i+65); } } return 0; }
-------------------------------------------
  1. Bagian utama :
    1. Program Utama
function GetSoal5(){ const MyData = MyFungsi5(); //[a1,a2,b1,b2,benar,arrsalah]; var a1=MyData[0]; var a2=MyData[1]; var b1=MyData[2]; var b2=MyData[3]; var benar=MyData[4]; var arrsalah=MyData[5]; var Ar = []; Ar[0] = benar; Ar[1] = arrsalah[0]; Ar[2] = arrsalah[1]; Ar[3] = arrsalah[2]; var ss //15. Tentukan bentuk sederhana dari (8 / x^2-4) - (2 / x-1) ! ss = "Tentukan bentuk sederhana dari bentuk aljabar di atas! "; var jawab = Ar[0]; Ar = RandomMyArray(Ar); var noBenar = NoJawabanBenar(Ar, jawab); var textSoal = ss+" <p>A. "+Ar[0]+"<br>B. "+Ar[1]+"<br>C. "+Ar[2]+"<br>D. "+Ar[3]+"</p>"; var ArFix = []; ArFix.push(textSoal); ArFix.push(GetABCD(noBenar)); const soal = Gambar5("myCanvas5",ss,[a1,a2,b1,b2],Ar[0],Ar[1],Ar[2],Ar[3]); return ArFix; }
    1. Menyiapkan canvas untuk gambar
<canvas id="myCanvas5" width="400" height="320" style="border:0px solid grey;"> </canvas>
    1. Mencetak soal
var ss ss = GetSoal5(); document.write("<br>"+"Jawaban : "+ss[1]+"<br>");
-------------------------------------------

Code 3 - Untuk teks di atas gambar

Pertemuan#03 - Membuat sebuah soal bangun ruang untuk mencari luas permukaan bangun ruang berikut gambar ilustrasi

  1. Bagian pendukung :
    1. Mendapatkan sebuah angka acak
function RandomAngkaAtoB(a,b){ var r = a+Math.ceil(Math.random() * b); return r; }
    1. Mengacak isi sebuah array
function RandomMyArray(Arr){ for (var i=0; i<Arr.length; i++){ var r = Math.floor(Math.random() * Arr.length); var a = Arr[i]; Arr[i] = Arr[r]; Arr[r] = a; } return Arr }
    1. Mendapatkan nomor urut jawaban benar
function NoJawabanBenar(Arr, jwb){ for (var i=0; i<Arr.length; i++){ if (Arr[i]==jwb){ return i; break; } } }
    1. Mendapatkan huruf jawaban
function GetABCD(no){ var ABCD = ["A","B","C","D"] return ABCD[no] }
    1. Memecah n-digit angka menjadi array
function SplitString(ff){ var gg = new Array(); var strff = ""+ff; var len = strff.length; for (var i=0; i<len; i++){ gg.push(strff.substr(i,1)); } return gg; }
    1. Membuat angka ribuan menjadi ada titik seperti 1234 menjadi 1.234
function StringRibuan(str){ var strfix = ""; var arfix = new Array(); var StrArray = SplitString(str); for (var i=0; i<StrArray.length; i++){ arfix.push(StrArray[i]); } var ct = 0; var m = 0; var n = 0; var ctmax = StrArray.length; var arct = new Array(); for (var i=StrArray.length-1; i>=0; i--){ ct++; ctmax--; if(ct==3){ ct = 0; m++; arct.push(3); } } var n = StrArray.length - 3*arct.length; var iter=-1; strfix=""; for (var i=0; i<n; i++){ iter++; strfix += arfix[iter]; } if (n>0) strfix += "."; for (var i=0; i<m; i++){ for (j=0; j<3; j++){ iter++; strfix += arfix[iter]; } strfix += "."; } var leng = strfix.length; strfix = strfix.substr(0, leng-1); return strfix }
    1. Mendapatkan Data soal
function MyFungsi3(){ var pyth = [[4,3,5],[12,5,13],[6,8,10],[24,7,25],[8,15,17]]; var pil = RandomAngkaAtoB(-1,5); var dd = RandomAngkaAtoB(2,9); var aa = dd+pyth[pil][0]; do{ var bb = RandomAngkaAtoB(2,4); var cc = pyth[pil][2]; var tt = pyth[pil][1]; }while(bb==cc); var luas = 2*(aa+dd)/2*tt + dd*bb + aa*bb + bb*cc + bb*tt; var luas1 = (aa+dd)/2*tt + dd*bb + aa*bb + bb*cc + bb*tt; var luas2 = 2*(aa+dd)/2*tt + dd*bb + aa*bb + bb*cc; var luas3 = 2*(aa+dd)/2*tt + dd*bb + aa*bb + bb*tt; var luas4 = 2*(aa+dd)*tt + dd*bb + aa*bb + bb*cc + bb*tt; var ArSisi = [aa,bb,cc,dd]; var benar = luas; var salah1 = luas1; var salah2 = luas2; var salah3 = luas3; var salah4 = luas4; var arrSalah = [salah1,salah2,salah3,salah4]; arrSalah = RandomMyArray(arrSalah); return [ArSisi,benar,arrSalah]; }
    1. Memasukkan gambar ke canvas
function Gambar3(nmcanvas,Arr){ const canvas = document.getElementById(nmcanvas); const ctx = canvas.getContext("2d"); // menambahkan image pada canvas // let base_image = new Image(); base_image.src = "Gambar3.png"; base_image.onload = function () { ctx.drawImage(base_image, 0, 0,base_image.width, base_image.height); InsertText(Arr); } function InsertText(Arr){ ctx.font = "bold 12px Times New Roman"; ctx.textAlign = "center"; ctx.fillText(Arr[0]+" cm",105,190); ctx.fillText(Arr[1]+" cm",225,193); ctx.fillText(Arr[2]+" cm",213,97); ctx.fillText(Arr[3]+" cm",123,30); } return 0; }
-------------------------------------------
  1. Bagian utama :
    1. Program Utama
function GetSoal3(){ const MyData = MyFungsi3(); var ArSisi=MyData[0]; var benar=MyData[1]; var arrSalah=MyData[2]; const DrawPGL = Gambar3("myCanvas3",ArSisi); var ss ss = "Luas permukaan bangun tersebut adalah ... "; var Ar = []; // jawaban Ar[0] = benar; Ar[1] = arrSalah[0]; Ar[2] = arrSalah[1]; Ar[3] = arrSalah[2]; Ar[0] = StringRibuan(Ar[0]); Ar[1] = StringRibuan(Ar[1]); Ar[2] = StringRibuan(Ar[2]); Ar[3] = StringRibuan(Ar[3]); var jawab = Ar[0]; Ar = RandomMyArray(Ar); var noBenar = NoJawabanBenar(Ar, jawab); var textSoal = ss+" <p>A. "+Ar[0]+" cm²<br>B. "+Ar[1]+" cm²<br>C. "+Ar[2]+" cm²<br>D. "+Ar[3]+" cm²</p>"; var ArFix = []; ArFix.push(textSoal); ArFix.push(GetABCD(noBenar)); return ArFix; }
    1. Nomor soal dan kalimat sebelum gambar
document.write("<p>4. Perhatikan bangun prisma trapesium siku-siku berikut!<p>");
    1. Menyiapkan canvas untuk gambar
<canvas id="myCanvas3" width="277" height="215" style="border:0px solid grey;"> </canvas>
    1. Mencetak soal
var ss ss = GetSoal3(); document.write("<p>"+ss[0]+"</p>"); document.write("Jawaban : "+ss[1]);
-------------------------------------------

Code 4 - Untuk beberapa macam kumpulan jawaban

Pertemuan#04 - Membuat sebuah soal himpunan untuk mencari kalimat yang merupakan himpunan

  1. Bagian pendukung :
    1. Mendapatkan sebuah angka acak
function RandomAngkaAtoB(a,b){ var r = a+Math.ceil(Math.random() * b); return r; }
    1. Mengacak isi sebuah array
function RandomMyArray(Arr){ for (var i=0; i<Arr.length; i++){ var r = Math.floor(Math.random() * Arr.length); var a = Arr[i]; Arr[i] = Arr[r]; Arr[r] = a; } return Arr }
    1. Mendapatkan nomor urut jawaban benar
function NoJawabanBenar(Arr, jwb){ for (var i=0; i<Arr.length; i++){ if (Arr[i]==jwb){ return i; break; } } }
    1. Mendapatkan huruf jawaban
function GetABCD(no){ var ABCD = ["A","B","C","D"] return ABCD[no] }
    1. Mendapatkan Data soal
function MyFungsi4(){ //Kumpulan-kumpulan berikut ini yang merupakan himpunan adalah ... //jawaban: berparas cantik/berkacamata/berbadan pendek/berbadan tinggi var arr0 = ["Kumpulan siswi berkacamata","Kumpulan siswi cantik","Kumpulan siswi berbadan pendek","Kumpulan siswi berbadan tinggi"]; var arr1 = ["Kumpulan buku berwarna merah","Kumpulan buku tebal","Kumpulan buku tipis","Kumpulan buku bagus"]; var arr2 = ["Kumpulan bilangan prima","Kumpulan bilangan besar","Kumpulan bilangan kecil","Kumpulan bilangan penting"]; var arr=[arr0,arr1,arr2]; var a1,a2,a3,a4,a5; a1 = RandomAngkaAtoB(-1,3); var benar = arr[a1][0]; var salah1 = arr[a1][1]; var salah2 = arr[a1][2]; var salah3 = arr[a1][3]; var arrSalah = [salah1,salah2,salah3]; return [a1,benar,arrSalah]; }
-------------------------------------------
  1. Bagian utama :
    1. Program Utama
function GetSoal1(){ const MyData = MyFungsi4(); //[a0,a1,a2,a3,benar,arrSalah]; var a0=MyData[0]; var a1=MyData[1]; var a2=MyData[2]; var a3=MyData[3]; var benar=MyData[4]; var arrSalah=MyData[5]; //1. Sekelompok siswa terdiri dari 25 orang. //Terdapat 14 orang gemar berenang, //15 orang gemar sepakbola, //dan yang tidak gemar keduanya 5 orang. //Banyak siswa yang gemar keduanya adalah ... var Ekskul = NamaEkskul(); var ss ss = "Sekelompok siswa terdiri dari "+a0+" orang. "; ss += "Terdapat "+a1+" orang gemar "+Ekskul[0]+", "; ss += ""+a2+" orang gemar "+Ekskul[1]+", "; ss += "dan yang tidak gemar keduanya "+a3+" orang. "; ss += "Banyak siswa yang gemar keduanya adalah ... "; var Ar = []; // jawaban Ar[0] = benar; Ar[1] = arrSalah[0]; Ar[2] = arrSalah[1]; Ar[3] = arrSalah[2]; var jawab = Ar[0]; Ar = RandomMyArray(Ar); var noBenar = NoJawabanBenar(Ar, jawab); var textSoal = ss+" <p>A. "+Ar[0]+"<br>B. "+Ar[1]+"<br>C. "+Ar[2]+"<br>D. "+Ar[3]+"</p>"; var ArFix = []; ArFix.push(textSoal); ArFix.push(GetABCD(noBenar)); return ArFix; }
    1. Mencetak soal
var ss ss = GetSoal4(); document.write("<p>"+ss[0]+"</p>"); document.write("Jawaban : "+ss[1]);
-------------------------------------------

Code 2 - Untuk teks dan gambar

Pertemuan#02 - Membuat sebuah soal lingkaran untuk mencari keliling persegi berikut gambar ilustrasi

  1. Bagian pendukung :
    1. Mendapatkan sebuah angka acak
function RandomAngkaAtoB(a,b){ var r = a+Math.ceil(Math.random() * b); return r; }
    1. Mengacak isi sebuah array
function RandomMyArray(Arr){ for (var i=0; i<Arr.length; i++){ var r = Math.floor(Math.random() * Arr.length); var a = Arr[i]; Arr[i] = Arr[r]; Arr[r] = a; } return Arr }
    1. Mendapatkan nomor urut jawaban benar
function NoJawabanBenar(Arr, jwb){ for (var i=0; i<Arr.length; i++){ if (Arr[i]==jwb){ return i; break; } } }
    1. Mendapatkan huruf jawaban
function GetABCD(no){ var ABCD = ["A","B","C","D"] return ABCD[no] }
    1. Mendapatkan Data soal
function MyFungsi2(){ var dia = 14*RandomAngkaAtoB(0,4); var kelO = 22/7*dia; var kel1 = dia*4; var kel2 = dia*2; var kel3 = dia/2; var kel4 = dia; var kel5 = dia/2; var kel6 = dia*8; var ArSisi = [kelO]; var benar = kel1; var salah1 = kel2; var salah2 = kel3; var salah3 = kel4; var salah4 = kel5; var salah5 = kel6; var arrSalah = [salah1,salah2,salah3,salah4,salah5]; do{ arrSalah = RandomMyArray(arrSalah); var ff1 = arrSalah[0]==benar || arrSalah[1]==benar || arrSalah[2]==benar; var ff2 = arrSalah[0]==arrSalah[1] || arrSalah[0]==arrSalah[2]; var ff3 = arrSalah[1]==arrSalah[2]; }while(ff1 || ff2 || ff3); return [ArSisi,benar,arrSalah]; }
    1. Memasukkan gambar ke canvas
function Gambar2(nmcanvas,Arr){ const canvas = document.getElementById(nmcanvas); const ctx = canvas.getContext("2d"); // menambahkan image pada canvas // let base_image = new Image(); base_image.src = "Gambar2.png"; base_image.onload = function () { ctx.drawImage(base_image, 0, 0,base_image.width, base_image.height); } return 0; }
-------------------------------------------
  1. Bagian utama :
    1. Program Utama
function GetSoal2(){ const MyData = MyFungsi2(); var ArSisi=MyData[0]; var benar=MyData[1]; var arrSalah=MyData[2]; const DrawPGL = Gambar2("myCanvas2",ArSisi); var ss ss = "Perhatikan gambar! <br>"; ss += "Keempat sisi persegi disinggung oleh sebuah lingkaran seperti gambar. <br>" ss += "Jika keliling lingkaran "+ArSisi[0]+" cm, maka keliling persegi adalah ..."; var Ar = []; // jawaban Ar[0] = benar; Ar[1] = arrSalah[0]; Ar[2] = arrSalah[1]; Ar[3] = arrSalah[2]; Ar[0] = StringRibuan(Ar[0]); Ar[1] = StringRibuan(Ar[1]); Ar[2] = StringRibuan(Ar[2]); Ar[3] = StringRibuan(Ar[3]); var jawab = Ar[0]; Ar = RandomMyArray(Ar); var noBenar = NoJawabanBenar(Ar, jawab); var textSoal = ss+" <p>A. "+Ar[0]+" cm<br>B. "+Ar[1]+" cm<br>C. "+Ar[2]+" cm<br>D. "+Ar[3]+" cm</p>"; var textJawab = jawab+"</p>"; var ArFix = []; ArFix.push(textSoal); ArFix.push(GetABCD(noBenar)); return ArFix; }
    1. Menyiapkan canvas untuk gambar
<canvas id="myCanvas2" width="172" height="170" style="border:0px solid grey;"> </canvas>
    1. Mencetak soal
var ss ss = GetSoal2(); document.write("<p>"+ss[0]+"</p>"); document.write("Jawaban : "+ss[1]);
-------------------------------------------

Code 1 - Untuk teks saja

Pertemuan#01 - Membuat sebuah soal himpunan untuk mencari banyak siswa yang gemar kedua ekstrakulikuler

  1. Bagian pendukung :
    1. Mendapatkan sebuah angka acak
function RandomAngkaAtoB(a,b){ var r = a+Math.ceil(Math.random() * b); return r; }
    1. Mengacak isi sebuah array
function RandomMyArray(Arr){ for (var i=0; i<Arr.length; i++){ var r = Math.floor(Math.random() * Arr.length); var a = Arr[i]; Arr[i] = Arr[r]; Arr[r] = a; } return Arr }
    1. Mendapatkan nomor urut jawaban benar
function NoJawabanBenar(Arr, jwb){ for (var i=0; i<Arr.length; i++){ if (Arr[i]==jwb){ return i; break; } } }
    1. Mendapatkan huruf jawaban
function GetABCD(no){ var ABCD = ["A","B","C","D"] return ABCD[no] }
    1. Mendapatkan nama ekskul acak
function NamaEkskul(){ var Ekskul = ["berenang", "sepakbola", "pencak silat", "komputer", "bola voli", "bola basket", "panahan", "pramuka", "catur", "menari", "PMR"]; Ekskul = RandomMyArray(Ekskul); return Ekskul; }
    1. Mendapatkan Data soal
function MyFungsi1(){ //1. Sekelompok siswa terdiri dari 25 orang. //Terdapat 14 orang gemar berenang, //15 orang gemar sepakbola, //dan yang tidak gemar keduanya 5 orang. //Banyak siswa yang gemar keduanya adalah ... var a0,a1,a2,a3,a4,a5; var arDari = ["≤","≥"]; arDari = RandomMyArray(arDari); do{ a0 = 25; a1 = RandomAngkaAtoB(10,6); a2 = RandomAngkaAtoB(10,6); a3 = RandomAngkaAtoB(2,9); a4 = (a1+a2)-(a0-a3); }while (a1==a2 || a4<3) var soal = a1+"x + "+a2+" "+arDari[0]+" "+a4; var benar = a4; var salah1 = a4+1; var salah2 = a4+2; var salah3 = a4+3; var salah4 = a4-1; var salah5 = a4-2; var salah6 = a4-3; var arrSalah = [salah1,salah2,salah3,salah4,salah5,salah6]; arrSalah = RandomMyArray(arrSalah); return [a0,a1,a2,a3,benar,arrSalah]; }
-------------------------------------------
  1. Bagian utama :
    1. Program Utama
function GetSoal1(){ const MyData = MyFungsi1(); //[a0,a1,a2,a3,benar,arrSalah]; var a0=MyData[0]; var a1=MyData[1]; var a2=MyData[2]; var a3=MyData[3]; var benar=MyData[4]; var arrSalah=MyData[5]; //1. Sekelompok siswa terdiri dari 25 orang. //Terdapat 14 orang gemar berenang, //15 orang gemar sepakbola, //dan yang tidak gemar keduanya 5 orang. //Banyak siswa yang gemar keduanya adalah ... var Ekskul = NamaEkskul(); var ss ss = "Sekelompok siswa terdiri dari "+a0+" orang. "; ss += "Terdapat "+a1+" orang gemar "+Ekskul[0]+", "; ss += ""+a2+" orang gemar "+Ekskul[1]+", "; ss += "dan yang tidak gemar keduanya "+a3+" orang. "; ss += "Banyak siswa yang gemar keduanya adalah ... "; var Ar = []; // jawaban Ar[0] = benar; Ar[1] = arrSalah[0]; Ar[2] = arrSalah[1]; Ar[3] = arrSalah[2]; var jawab = Ar[0]; Ar = RandomMyArray(Ar); var noBenar = NoJawabanBenar(Ar, jawab); var textSoal = ss+" <p>A. "+Ar[0]+"<br>B. "+Ar[1]+"<br>C. "+Ar[2]+"<br>D. "+Ar[3]+"</p>"; var ArFix = []; ArFix.push(textSoal); ArFix.push(GetABCD(noBenar)); return ArFix; }
    1. Mencetak soal
var ss ss = GetSoal1(); document.write("<p>"+ss[0]+"</p>"); document.write("Jawaban : "+ss[1]);
-------------------------------------------

Coding Html

Berisi coding html yang bisa kalian coba sendiri.

Saat ini ada 6 tipe :
  1. Tipe 1 - acak angka link
  2. Tipe 2 - gambar saja link
  3. Tipe 3 - gambar dan angka link
  4. Tipe 4 - acak data soal link
  5. Tipe 5 - gambar semua kecuali kunci link
  6. Tipe 6 - gambar besar dipotong jadi 4 buah - tampilkan 1 buah link

Untuk formatnya ada 2 Model yang bisa digunakan :

  1. Model 1: Menggunakan teks saja
<!DOCTYPE html> <html> <head> <script type="text/javascript"> (Pendukung) </script> </head> <body> <div id="NamaId"> <script type="text/javascript"> (Utama) </script> <script type="text/javascript"> (Cetak) </script> </div> </body> </html>
  1. Model 2: Menggunakan gambar
<!DOCTYPE html> <html> <head> <script type="text/javascript"> (Pendukung) </script> </head> <body> <div id="NamaId"> <script type="text/javascript"> (Utama) </script> <canvas id="NamaCanvas" width="999" height="999" style="border:0px solid grey;"> </canvas> <script type="text/javascript"> (Cetak) </script> </div> </body> </html>

Gambarnya, bisa di simpan sesuai nama:

1. Gambar2.png

2. Gambar3.png

3. Gambar5-0.png

4. Gambar5-0abcd.png

5. Gambar6.png

Semoga bermanfaat