Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011 Soal A - 1 SOAL A Buatlah sebuah program untuk menampilkan sejumlah bilangan / angka. Kumpulan angka tersebut pada posisi ganjil memiliki selisih 2. Sedangkan pada posisi genap merupakan kelipatan 3. LIHAT CONTOH BERIKUT INI: 3 10 3 12 6 14 9 16 12 18 15 20 2 Kriteria program: 1. Program akan meminta input batas bawah dan batas atas. Program juga akan meminta input jumlah angka yang akan ditampilkan. 2. Syarat: batas bawah HARUS lebih kecil dari batas atas. Jika tidak dipenuhi, program akan meminta kembali nilai batas bawah dan batas atas. 3. Syarat: jumlah bilangan yang ditampilkan MINIMAL 3. Jika jumlah bilangan kurang dari 3, maka program akan meminta kembali input jumlah bilangan yang hendak ditampilkan. 4. Untuk langkah 5-8 hanya dikerjakan dalam 1 looping. 5. Angka ke-1 merupakan nilai batas bawah, angka ke-3,5,7,9,11,… (ganjil) memiliki selisih 2 dari bilangan posisi ganjil sebelumnya (lihat contoh di atas). 6. Angka ke-2 selalu mulai dari angka 3. Angka ke-4,6,8,10,12,… (genap) merupakan bilangan kelipatan 3. 7. Bilangan/angka dalam kumpulan tersebut, yang merupakan bilangan ganjil diberi warna CYAN (yang diberi warna biru, dicontohkan dengan di BOLD), angka lainnya berwarna WHITE. 8. Angka / bilangan yang ditampilkan sejumlah input yang diinginkan ATAU sampai batas atas, kalau jumlahnya tidak mencukupi keluar peringatan bahwa angka yang ditampilkan tidak mencukupi permintaan. Bobot masing-masing: no. 1 – 4,7 – 8 maks 10; no. 5 – 6 maks 20 Perintah untuk memberi warna sebelum perintah write adalah textcolor(cyan), textcolor(white) atau textcolor(lightgray) Contoh Input: BB = 10; BA = 20; n = 8 (angka yang dibold + underline adalah angka yang harus berwarna biru) 10 3 12 6 14 9 16 12 BB = 5; BA = 14; n = 10 (angka yang dibold + underline adalah angka yang harus berwarna biru) 5 3 7 6 9 9 11 12 13 15 Langkah-langkah : 1. Input batas bawah, batas atas dan nilai n 2. Ulangi langkah 1 sampai batas bawah lebih kecil daripada batas atas 3. Ulangi langkah 1 dan 2 sampai n lebih besar daripada 3 4. Angka posisi ganjil dimulai dari batas bawah dan ditambah 2 dari angka posisi ganjil sebelumnya 5. Tulis sampai angka posisi ganjil lebih besar daripada batas atas 6. Pertama kali akan ditulis angka batas bawah, tetapi karena angka posisi ganjil sudah ditambah 2 terlebih dahulu (yang ditulis pertama akan menjadi batas bawah +2) maka dilakukan sedikit perbaikan dengan mengganti angka posisi ganjil dimulai dari batas bawah -2. 7. Angka posisi genap dimulai dari 3 dan ditambah 3 dari angka posisi genap sebelumnya
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal A - 1
SOAL A
Buatlah sebuah program untuk menampilkan sejumlah bilangan / angka. Kumpulan angka
tersebut pada posisi ganjil memiliki selisih 2. Sedangkan pada posisi genap merupakan kelipatan 3.
LIHAT CONTOH BERIKUT INI:
3
10 3 12 6 14 9 16 12 18 15 20
2
Kriteria program:
1. Program akan meminta input batas bawah dan batas atas. Program juga akan meminta input jumlah
angka yang akan ditampilkan.
2. Syarat: batas bawah HARUS lebih kecil dari batas atas. Jika tidak dipenuhi, program akan meminta
kembali nilai batas bawah dan batas atas.
3. Syarat: jumlah bilangan yang ditampilkan MINIMAL 3. Jika jumlah bilangan kurang dari 3, maka
program akan meminta kembali input jumlah bilangan yang hendak ditampilkan.
4. Untuk langkah 5-8 hanya dikerjakan dalam 1 looping.
5. Angka ke-1 merupakan nilai batas bawah, angka ke-3,5,7,9,11,… (ganjil) memiliki selisih 2 dari
bilangan posisi ganjil sebelumnya (lihat contoh di atas).
6. Angka ke-2 selalu mulai dari angka 3. Angka ke-4,6,8,10,12,… (genap) merupakan bilangan kelipatan
3.
7. Bilangan/angka dalam kumpulan tersebut, yang merupakan bilangan ganjil diberi warna CYAN (yang
diberi warna biru, dicontohkan dengan di BOLD), angka lainnya berwarna WHITE.
8. Angka / bilangan yang ditampilkan sejumlah input yang diinginkan ATAU sampai batas atas, kalau
jumlahnya tidak mencukupi keluar peringatan bahwa angka yang ditampilkan tidak mencukupi
2. Ulangi langkah 1 sampai batas bawah lebih kecil daripada batas atas
3. Ulangi langkah 1 dan 2 sampai n lebih besar daripada 2
4. Nilai angka pertama adalah batas bawah dan bertambah 3 dari angka sebelumnya
5. Tulis angka sampai angka lebih besar daripada batas atas. Angka tidak ditulis jika sudah melebihi
batas atas.
6. Pertama kali akan ditulis angka batas bawah, tetapi karena angka posisi ganjil sudah ditambah 2
terlebih dahulu (yang ditulis pertama akan menjadi batas bawah +3) maka dilakukan sedikit
perbaikan dengan mengganti angka posisi ganjil dimulai dari batas bawah -3.
7. Setelah menulis angka, counter ditambah 1
Ulangi sampai counter sama dengan n atau angka lebih besar daripada batas atas
8. Sebelum angka ditulis, cek terlebih dahulu apakah angka merupakan bilangan prima atau bukan
9. Bila bukan prima, cek juga apakah ganjil atau genap. Jika ganjil diberi warna cyan, jika genap diberi
warna grey
10. Bila counter kurang dari n tulis angka yang ditampilkan tidak mencukupi
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal B - 2
Langkah 1 : Input batas bawah, batas atas dan nilai n
program UTS_B;uses crt;var bb,ba : integer;
n : byte;
beginclrscr;
write('Input Batas Bawah : '); readln(bb);write('Input Batas Atas : '); readln(ba);write('Input n : '); readln(n);
readkey;end.
Langkah 2 : Ulangi langkah 1 sampai batas bawah lebih kecil daripada batas atas
program UTS_B;uses crt;var bb,ba : integer;
n : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : '); readln(bb);write('Input Batas Atas : '); readln(ba);write('Input n : '); readln(n);
until bb<ba:
readkey;end.
Langkah 3 : Ulangi langkah 1 dan 2 sampai n lebih besar daripada 2
program UTS_B;uses crt;var bb,ba : integer;
n : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
readkey;end.
Langkah 4 : Nilai angka pertama adalah batas bawah dan bertambah 3 dari angka sebelumnya
program UTS_B;uses crt;var bb,ba,angka : integer;
n : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal B - 3
angka:=bb;angka:=angka+3;
readkey;end.
Langkah 5 : Tulis angka sampai angka lebih besar daripada batas atas. Angka tidak ditulis jika
sudah melebihi batas atas.
program UTS_B;uses crt;var bb,ba,angka : integer;
n,counter : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;
angka:=bb;repeat
angka:=angka+3;if angka <= ba then write(angka,' ');
until (angka >= ba);
readkey;end.
Langkah 6 : Pertama kali akan ditulis angka batas bawah, tetapi karena angka p sudah
ditambah 3 terlebih dahulu (yang ditulis pertama akan menjadi batas bawah +3) maka dilakukan
sedikit perbaikan dengan mengganti angka dari batas bawah -3.
program UTS_B;uses crt;var bb,ba,angka : integer;
n : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;
angka:=bb-3;repeat
angka:=angka+3;if angka <= ba then write(angka,' ');
until angka >= ba;
readkey;end.
Langkah 7 : Setelah menulis angka, counter ditambah 1
program UTS_B;uses crt;var bb,ba,angka : integer;
n,counter : byte;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal B - 4
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;
angka:=bb-3;repeat
angka:=angka+3;if angka <= ba thenbegin
write(angka,' ');inc(counter);
end;until angka >= ba;
readkey;end.
Langkah 8 : Ulangi sampai counter sama dengan n atau angka lebih besar daripada batas atas
program UTS_B;uses crt;var bb,ba,angka : integer;
n,counter : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;angka:=bb-3;repeat
angka:=angka+3;if angka <= ba thenbegin
write(angka,' ');inc(counter);
end;until (angka >= ba) or (counter=n);
readkey;end.
Langkah 9 : Sebelum angka ditulis, cek terlebih dahulu apakah angka merupakan bilangan
prima atau bukan. Kalau prima ganti textcolor menjadi white
program UTS_B;uses crt;var bb,ba,angka,pembagi : integer;
n,counter : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal B - 5
angka:=bb-3;repeat
angka:=angka+3;pembagi := 1;
repeatinc(pembagi);
until (angka mod pembagi = 0) or (pembagi = angka - 1);
if (pembagi = angka - 1) or (angka=2) then textcolor(white) elsetextcolor(lightgray);
if angka <= ba thenbegin
write(angka,' ');inc(counter);
end;until (angka >= ba) or (counter=n);
readkey;end.
Langkah 10 : Bila bukan prima, cek juga apakah ganjil atau genap. Jika ganjil diberi warna cyan,
jika genap diberi warna grey
program UTS_B;uses crt;var bb,ba,angka,pembagi : integer;
n,counter : byte;
beginclrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;
angka:=bb-3;repeat
angka:=angka+3;pembagi := 1;
repeatinc(pembagi);
until (angka mod pembagi = 0) or (pembagi = angka - 1);
if (pembagi = angka - 1) or (angka=2) then textcolor(white) elseif (angka mod 2 = 1) then textcolor(cyan) elseif (angka mod 2 = 0) then textcolor(lightgray);
if angka <= ba thenbegin
write(angka,' ');inc(counter);
end;until (angka >= ba) or (counter=n);
readkey;end.
Langkah 11 : Bila counter kurang dari n tulis angka yang ditampilkan tidak mencukupi
program UTS_B;uses crt;var bb,ba,angka,pembagi : integer;
n,counter : byte;
begin
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal B - 6
clrscr;
repeatwrite('Input Batas Bawah : ');readln(bb);write('Input Batas Atas : ');readln(ba);write('Input n : ');readln(n);
until (bb<ba) and (n>=2);
clrscr;
angka:=bb-3;repeat
angka:=angka+3;pembagi := 1;
repeatinc(pembagi);
until (angka mod pembagi = 0) or (pembagi = angka - 1);
if (pembagi = angka - 1) or (angka=2) then textcolor(white) elseif (angka mod 2 = 1) then textcolor(cyan) elseif (angka mod 2 = 0) then textcolor(lightgray);
if angka <= ba thenbegin
write(angka,' ');inc(counter);
end;until (angka >= ba) or (counter=n);
writeln;if counter < n then write('Angka yang diinginkan tidak mencukupi');readkey;
end.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal C - 1
SOAL C
Untuk memecahkan persamalahan akar kuadrat ada beberapa algoritma yang dapat digunakan.
Ada sebuah algoritma yang dikenal dengan metode bagi dua. Pada soal UTS kali ini, permasalahan yang
diberikan sudah sangat jelas, yaitu: menerapkan algoritma bagi dua ini ke dalam suatu persamaan.
Persamaan f(x) = x2 – 4x + 3
Algoritma program yang harus dibuat adalah sebagai berikut:
1. Tentukan nilai e=10-5
2. Input nilai m dan n
3. x0=x1
4. Hitung nilai x1 merupakan nilai tengah dari m dan n
5. Jika nilai f(x1) bernilai 0 maka akarnya adalah x1 dan selesai.
6. Jika | x1-x0 | lebih kecil dari e maka akarnya adalah x1 dan selesai
7. Jika nilai f(x1)*f(n) lebih besar dari 0 maka n=x1. Jika tidak maka m=x1.
8. Ke langkah 3
9. Program akan memunculkan pertanyaan, “APAKAH ANDA AKAN MENGULANG PROGRAM?” dan
Anda harus menjawab dengan menekan tombol Y atau T (baik huruf kapital maupun huruf kecil).
Jika Anda menekan Y, maka program akan mengulang ke langkah 2. Jika Anda menekan T, maka
program akan berakhir.
10. Efek pada nomor 9 (jika menekan tombol) tidak akan berfungsi jika tombol yang ditekan bukan
tombol Y atau T (misalnya A, b, d, Z).
Bobot untuk masing-masing langkah adalah 10 poin. Total nilai maksimum 100 poin.
Untuk menguji, masukkan nilai m = 15 dan n=2 harus keluar angka 3.000000
Untuk menyelesaikan soal-soal dengan algoritma yang telah diberikan, sebaiknya Anda memahami
kegunaan dari algoritma tersebut. Algoritma tersebut adalah algoritma mencari akar dari sebuah fungsi
dengan metoda bagi dua. Akan tetapi, Anda bisa membuat program dengan tidak perlu mengerti
kegunaannya yaitu dengan cara membuat program selangkah demi selangkah untuk semua langkah
yang ada pada algoritma tersebut.
Langkah 1-4.
Untuk soal perhitungan matematika seperti ini, tipe variabel yang digunakan semuanya bertipe Real
dengan nama yang sama pada algoritma.
Program Soalc;Uses Crt;Var e,m,n,x0,x1:real;
Beginclrscr;{1}e:=0.00001; {1}Write('Masukkan Batas Bawah ');Readln(n); {2}Write('Masukkan Batas Atas ');Readln(m);x0:=x1; {3}x1:=(m+n)/2; {4}Readkey;
End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal C - 2
Langkah 5-7.
Agar penulisan program yang berkaitan dengan fungsi tidak salah, bisa digunakan variabel a,b,c bertipe
real untuk menulis/menghitung nilai fungsi yang diinginkan. Pada langkah 5 dan 6, ada pernyataan
Selesai. Untuk keperluan ini digunakan variabel bertipe boolean dengan nama selesai.
Program Soalc;Uses Crt;Var e,m,n,x0,x1,a,b,c,fx1,akar:real;
selesai:boolean;
Beginclrscr; a:=1;b:=-4;c:=3; {untuk penghitungan nilai fungsi}selesai:=false; {nilai awal agar program tidak langsung berhenti}
e:=0.00001; {1}Write('Masukkan Batas Bawah ');Readln(n); {2}Write('Masukkan Batas Atas ');Readln(m);x0:=x1; {3}x1:=(m+n)/2; {4}
fx1:=a*sqr(x1)+b*x1+c;if fx1= 0 then {5}beginakar := x1; selesai:=true;
end;if abs(x1-x0)=0 then {6}beginakar := x1; selesai:=true;
end;fn:=a*sqr(n)+b*n+c;if fn*fx1>0 then n:=x1 else m:=x1; {7}
Readkey;End.
Langkah 8.
Pada langkah 8, penghitungan kembali ke langkah 3 kalau tidak selesai. Untuk keperluang ini diperlukan
suatu perintah pengulangan. Pengulangan yang dipakai adalah repeat until karena kriteria penghentian
program tidak pasti ( langkah 5 dan langkah 6 ). Tips : looping repeat until suatu perintah dengan
kriteria penghentian tidak pasti, dan agar program tidak HANG , Anda bisa menambahkan perintah until
menjadi Until selesai or keypressed;
Program Soalc;Uses Crt;Var e,m,n,x0,x1,a,b,c,fx1,akar,fn:real;
selesai:boolean;
Beginclrscr; a:=1;b:=-4;c:=3; {untuk penghitungan nilai fungsi}selesai:=false; {nilai awal agar program tidak langsung berhenti}
e:=0.00001; {1}Write('Masukkan Batas Bawah ');Readln(n); {2}Write('Masukkan Batas Atas ');Readln(m);repeatx0:=x1; {3}x1:=(m+n)/2; {4}fx1:=a*sqr(x1)+b*x1+c;if fx1= 0 then {5}beginakar := x1; selesai:=true;
end;if abs(x1-x0)=0 then {6}beginakar := x1; selesai:=true;
end;fn:=a*sqr(n)+b*n+c;If fn*fx1>0 then n:=x1 else m:=x1;{7}
until selesai; {8}
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Pada langkah 9 dan 10 ada pengulangan mulai dari langkah 1-8, dengan kriteria penghentian jika
jawab=’T’ atau jawab=’t’.
Program Soalc;Uses Crt;Var e,m,n,x0,x1,a,b,c,fx1,akar,fn:real;
selesai:boolean;jwb:char;
Beginclrscr; a:=1;b:=-4;c:=3; {untuk penghitungan nilai fungsi}selesai:=false; {nilai awal agar program tidak langsung berhenti}repeat {10}e:=0.00001; {1}Write('Masukkan Batas Bawah ');Readln(n); {2}Write('Masukkan Batas Atas ');Readln(m);repeatx0:=x1; {3}x1:=(m+n)/2; {4}fx1:=a*sqr(x1)+b*x1+c;if fx1= 0 then {5}beginakar := x1; selesai:=true;
end;if abs(x1-x0)=0 then {6}beginakar := x1; selesai:=true;
end;fn:=a*sqr(n)+b*n+c;If fn*fx1>0 then n:=x1 else m:=x1;{7}
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal D - 1
SOAL D
Untuk memecahkan persamalahan akar kuadrat ada beberapa algoritma yang dapat digunakan.Ada sebuah algoritma yang dikenal algoritma Newton-Rhapson. Pada soal UTS kali ini, permasalahanyang diberikan sudah sangat jelas, yaitu: menerapkan algoritma Newton-Rhapson ini ke dalam suatupersamaan. Tidak perlu khawatir jika Anda belum mengenal algoritma Newton-Rhapson ini karenaalgoritma akan diberikan.
Algoritma program yang harus dibuat adalah sebagai berikut:1. Tentukan nilai e=10-4
2. Inputlah masing-masing koefisien untuk persamaan tersebut.3. Tentukan nilai x1=20;4. x0=x15. Hitung nilai x1= x0 – (f(x0)/f’(x0)).6. Jika nilai f(x1) bernilai 0 maka akarnya adalah x1 dan selesai.7. Jika | f(x1)-f(x0) | lebih kecil dari e maka akarnya adalah x1 dan selesai8. Ke langkah 3.9. Program akan memunculkan pertanyaan, “APAKAH ANDA AKAN MENGULANG PROGRAM?” dan
Anda harus menjawab dengan menekan tombol Y atau T (baik huruf kapital maupun huruf kecil).Jika Anda menekan Y, maka program akan mengulang ke langkah 2. Jika Anda menekan T, makaprogram akan berakhir.
10. Efek pada nomor 9 (jika menekan tombol) tidak akan berfungsi jika tombol yang ditekan bukantombol Y atau T (misalnya A, b, d, Z).
Bobot untuk masing-masing soal adalah 10 poin. Total nilai maksimum 100 poin.
Untuk menguji, masukkan nilai a = 1, b = -4, dan c = 3 seharusnya memberikan hasil 3.Untuk menguji, masukkan nilai a = 1, b = 1, dan c = -6 seharusnya memberikan hasil 2.Untuk menguji, masukkan nilai a = 1, b = -5, dan c = 6 seharusnya memberikan hasil 3.
Untuk menyelesaikan soal-soal dengan algoritma yang telah diberikan, sebaiknya Anda memahami
kegunaan dari algoritma tersebut. Algoritma tersebut adalah algoritma mencari akar dari sebuah fungsi
dengan metoda bagi dua. Akan tetapi, Anda bisa membuat program dengan tidak perlu mengerti
kegunaannya yaitu dengan cara membuat program selangkah demi selangkah untuk semua langkah
yang ada pada algoritma tersebut.
Langkah 1-4.
Untuk soal perhitungan matematika seperti ini, tipe variabel yang digunakan semuanya bertipe Real
dengan nama yang sama pada algoritma.
Program Soald;Uses Crt;Var e,a,b,c,x0,x1:real;
Beginclrscr;e:=0.00001; {1}Write('Masukkan Koefisien A = ');Readln(a); {2}Write('Masukkan Koefisien B = ');Readln(b);Write('Masukkan Koefisien C = ');Readln(c);x1:=20; {3}x0:=x1; {4}Readkey;
End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal D - 2
Langkah 5-7.
Pada langkah 5 dan 6, ada pernyataan Selesai. Untuk keperluan ini digunakan variabel bertipe boolean
dengan nama selesai.
Program Soald;Uses Crt;Var e,a,b,c,x0,x1,fx0,f1x0,fx1,akar:real;
selesai:boolean;
Beginclrscr;e:=0.00001; {1}selesai:=false;{agar program tdk langsung berhenti ketika ada loop}
Write('Masukkan Koefisien A = ');Readln(a); {2}Write('Masukkan Koefisien B = ');Readln(b);Write('Masukkan Koefisien C = ');Readln(c);x1:=20; {3}x0:=x1; {4}
Pada langkah 8, penghitungan kembali ke langkah 4 kalau tidak selesai. Untuk keperluang ini diperlukan
suatu perintah pengulangan. Pengulangan yang dipakai adalah repeat until karena kriteria penghentian
program tidak pasti ( langkah 5 dan langkah 6 ). Tips : looping repeat until suatu perintah dengan
kriteria penghentian tidak pasti, dan agar program tidak HANG , Anda bisa menambahkan perintah until
menjadi Until selesai or keypressed;
Program Soald;Uses Crt;Var e,a,b,c,x0,x1,fx0,f1x0,fx1,akar:real;
selesai:boolean;
Beginclrscr;e:=0.00001; {1}selesai:=false; {agar program tdk langsung berhenti ketika ada loop}Write('Masukkan Koefisien A = ');Readln(a); {2}Write('Masukkan Koefisien B = ');Readln(b);Write('Masukkan Koefisien C = ');Readln(c);x1:=20; {3}repeatx0:=x1; {4}
Pada langkah 9 dan 10 ada pengulangan mulai dari langkah 1-8, dengan kriteria penghentian jika
jawab=’T’ atau jawab=’t’.
Program Soald;Uses Crt;Var e,a,b,c,x0,x1,fx0,f1x0,fx1,akar:real;
selesai:boolean;jwb:char;
Beginclrscr;repeat {10}e:=0.00001; {1}selesai:=false;{agar program tdk langsung berhenti ketika ada loop}Write('Masukkan Koefisien A = ');Readln(a); {2}Write('Masukkan Koefisien B = ');Readln(b);Write('Masukkan Koefisien C = ');Readln(c);x1:=20; {3}repeatx0:=x1; {4}
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal E - 1
SOAL E
Buatlah program untuk menampilkan bilangan PRIMA dari mulai batas bawah hingga batas atas ATAU
sebanyak n buah. Bila jumlah bilangan prima antara batas bawah dan batas atas tidak mencukupi n buah,
maka keluar peringatan “JUMLAH BILANGAN TIDAK MENCUKUPI”.
Kemudian, bilangan prima pada posisi urutan genap, diberi warna CYAN.
Kriteria program:
1. Program akan meminta input batas bawah dan batas atas. Program juga akan meminta input jumlah
bilangan (n) yang hendak ditampilkan.
2. Syarat: batas bawah HARUS lebih kecil dari batas atas. Jika tidak dipenuhi, program akan meminta
kembali nilai batas bawah dan batas atas.
3. Syarat: jumlah bilangan yang ditampilkan MINIMAL 2. Jika jumlah bilangan kurang dari 2, maka
program akan meminta kembali input jumlah bilangan yang hendak ditampilkan.
4. Program hanya dikerjakan dalam 1 looping.
5. Program dapat menampilkan bilangan prima antara batas bawah dan batas atas ATAU sesuai jumlah.
6. Angka / bilangan yang ditampilkan sejumlah input yang diinginkan ATAU sampai batas atas, kalau
jumlahnya tidak mencukupi keluar peringatan bahwa angka yang ditampilkan tidak mencukupi
permintaan.
7. Angka/bilangan pada posisi GENAP diberi warna CYAN.
CONTOH: (ket: yang di-BOLD + UNDERLINE adalah angka yang diberi warna CYAN)
BB = 6; BA = 20; n=6
7 11 13 17 19
Jumlah Tidak Mencukupi
BB = 6; BA = 20; n=3
7 11 13
Tips : Program dibuat bertahap mulai dari sekedar menguji suatu bilangan prima atau bukan lalu
disesuaikan hingga menjadi sesuai permintaan soal. Setelah setiap langkah selesai, program
sebaiknya dijalankan untuk menguji apakah program telah benar sampai tahap itu sebelum
lanjut ke tahap berikutnya.
Langkah-langkah:
1. Buat program untuk menguji apakah suatu bilangan prima atau bukan.
2. Perbaiki program untuk menampilkan n buah bilangan prima.
3. Perbaiki program untuk menginput batas atas dan bawah serta menguji batas atas harus lebih besar
daripada batas bawah.
4. Tambahkan perintah dan kondisi untuk menampilkan n prima antara batas atas dan bawah.
5. Tambahkan perintah untuk menampilkan prima pada posisi genap dengan warna CYAN
6. Tambahkan perintah untuk menampilkan peringatan “JUMLAH BILANGAN TIDAK MENCUKUPI” jika
bilangan prima antara batas bawah dan batas atas kurang dari n buah.
Program dalam satu box ke box lainnya menunjukkan langkah-langkah pembuatan program. Tambahan
perintah dari langkah sebelumnya diberi warna biru dan perubahan perintah diberi warna merah.
Langkah 1 : Buat program untuk menguji apakah suatu bilangan prima atau bukan
Program Soal_E;Uses CRT;Var
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal E - 2
x : byte; {bilangan yang diuji}y : byte; {pembagi}Prima : Boolean; {status Prima true/false}
BeginTextColor(7);ClrScr;writeln('Bilangan yang diuji : '); readln(x);Prima := False;if (x = 2) then Prima:=Trueelse
beginy := 1;Repeat
inc(y);Until (x mod y =0) OR (y = x-1);if (x mod y <> 0) then Prima := True;
end;if Prima then Write('Prima') else write('Bukan prima');
End.
Langkah 2 : Perbaiki program untuk menampilkan n buah bilangan prima
Program Soal_E;Uses CRT;Var
n : byte; {jumlah}i : byte; {counter}x : byte; {bilangan yang diuji}y : byte; {pembagi}Prima : Boolean; {status Prima true/false}
BeginTextColor(7);ClrScr;{Input n buah bil yang ingin ditampilkan dan pengulangan sampai n>=2}Repeat
Write('Input Bilangan yang ditampilkan: '); readln(n);if (n<2) then Writeln('Jumlah MINIMAL 2');Writeln;
Until (n>=2);{Tampilkan n buah bilangan prima}i:=0; x := 2; {nilai x yang semula diinput diubah menjadi 2 karena
bilangan prima terkecil adalah 2}
RepeatPrima := False;if (x = 2) then Prima:=Trueelse
beginy := 1;Repeat
inc(y);Until (x mod y =0) OR (y = x-1);if (x mod y <> 0) then Prima := True;
end;
if Prima thenbegin
inc(i); Write(x:4);end;
inc(x); {Bilangan yang diuji ditambah 1 untuk pengujianberikutnya}
Until (i=n); {Pengulangan sampai jml bil prima (var i) sebanyak n}End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal E - 3
Langkah 3 & 4 :
Langkah 3: Perbaiki program untuk menginput batas atas dan bawah serta menguji batas
atas harus lebih besar daripada batas bawah.
Langkah 4: Perbaiki program yang semula menampilkan n buah bilangan prima menjadi
perintah untuk menampilkan bilangan-bilangan prima antara batas atas dan bawah.
Program Soal_E;Uses CRT;Var
bb,ba : byte; {batas atas dan batas bawah}n : byte; {jumlah}i : byte; {counter}x : byte; {bilangan yang diuji}y : byte; {pembagi}Prima : Boolean; {status Prima true/false}
BeginTextColor(7);ClrScr;{Langkah 3: Input batas atas dan bawah serta pengulangan untuk
memastikan bb<ba}Repeat
Write('Input Batas Bawah: '); readln(bb);Write('Input Batas Atas : '); readln(ba);if (bb>=ba) then Writeln('Batas Bawah HARUS LEBIH KECIL dari BatasAtas');Writeln;
Until (bb < ba);{Input n buah bil yang ingin ditampilkan dan pengulangan sampai n>=2}Repeat
Write('Input Bilangan yang ditampilkan: '); readln(n);if (n<2) then Writeln('Jumlah MINIMAL 2');Writeln;
Until (n>=2);i:=0;x := bb; {Langkah 4: bilangan pertama yang diuji diubah dari semula 2
menjadi batas bawahnya}Repeat
Prima := False;if (x = 2) then Prima:=Trueelse
beginy := 1;Repeat
inc(y);Until (x mod y =0) OR (y = x-1);if (x mod y <> 0) then Prima := True;
end;if Prima then
begininc(i); Write(x:4);
end;inc(x); {Bilangan yang diuji ditambah 1 untuk pengujianberikutnya}
Until (x>ba) OR (i=n); {Langkah 4: Tambahan kondisi x>ba untukmemastikan pengujian hanya dilakukan sampai x>ba}
End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal E - 4
Langkah 5 & 6 :
Langkah 5: Tambahkan perintah untuk menampilkan prima pada posisi genap dengan
warna CYAN
Langkah 6: Tambahkan peruntah untuk memberi peringatan “JUMLAH BILANGAN TIDAK
MENCUKUPI” jika bilangan prima antara batas bawah dan batas atas < n buah.
Program Soal_E;Uses CRT;Var
bb,ba : byte; {batas atas dan batas bawah}n : byte; {jumlah}i : byte; {counter}x : byte; {bilangan yang diuji}y : byte; {pembagi}Prima : Boolean; {status Prima true/false}
BeginTextColor(7);ClrScr;{Input batas atas dan bawah serta pengulangan untuk memastikan bb<ba}Repeat
Write('Input Batas Bawah: '); readln(bb);Write('Input Batas Atas : '); readln(ba);if (bb>=ba) then Writeln('Batas Bawah HARUS LEBIH KECIL dari BatasAtas');Writeln;
Until (bb < ba);{Input n buah bil yang ingin ditampilkan dan pengulangan sampai n>=2}Repeat
Write('Input Bilangan yang ditampilkan: '); readln(n);if (n<2) then Writeln('Jumlah MINIMAL 2');Writeln;
Until (n>=2);i:=0;x := bb;Repeat
Prima := False;if (x = 2) then Prima:=Trueelse
beginy := 1;Repeat
inc(y);Until (x mod y =0) OR (y = x-1);if (x mod y <> 0) then Prima := True;
end;if Prima then
begininc(i);{Langkah 5: prima pada posisi genap diberi warna CYAN}if (i mod 2 = 0) then TextColor(Cyan)
else TextColor(LightGray);Write(x:4);
end;inc(x); {Bilangan yang diuji ditambah 1 untuk pengujianberikutnya}
Until (x>ba) OR (i=n);{Langkah 6: memunculkan pesan jika jumlah bilangan prima antara batas-
batas kurang dari n buah}writeln;if (i<n) then Writeln('Jumlah Tidak Mencukupi');Readln;TextColor(7);
End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal F - 1
SOAL F
Buatlah program untuk menampilkan bilangan yang merupakan kelipatan 3 mulai dari batas bawah
hingga batas atas ATAU sebanyak n buah. Bila jumlah bilangan antara batas bawah dan batas atas tidak
mencukupi n buah, maka keluar peringatan “JUMLAH BILANGAN TIDAK MENCUKUPI”.
Kemudian, bilangan pada posisi urutan PRIMA, diberi warna CYAN.
Kriteria program:
1. Program akan meminta input batas bawah dan batas atas. Program juga akan meminta input jumlah
bilangan (n) yang hendak ditampilkan.
2. Syarat: batas bawah HARUS lebih kecil dari batas atas. Jika tidak dipenuhi, program akan meminta
kembali nilai batas bawah dan batas atas.
3. Syarat: jumlah bilangan yang ditampilkan MINIMAL 2. Jika jumlah bilangan kurang dari 2, maka
program akan meminta kembali input jumlah bilangan yang hendak ditampilkan.
4. Program hanya dikerjakan dalam 1 looping.
5. Program dapat menampilkan bilangan prima antara batas bawah dan batas atas ATAU sesuai jumlah.
6. Angka / bilangan yang ditampilkan sejumlah input yang diinginkan ATAU sampai batas atas, kalau
jumlahnya tidak mencukupi keluar peringatan bahwa angka yang ditampilkan tidak mencukupi
permintaan.
7. Angka/bilangan pada posisi GENAP diberi warna CYAN.
Bobot: no. 1,2,3,4: 10 poin. No. 5,6,7: 20 poin. Total nilai maksimum 100 poin.
CONTOH: (ket: yang di-BOLD + UNDERLINE adalah angka yang diberi warna CYAN)
BB = 6; BA = 20; n=6
6 9 12 15 18
Jumlah Tidak Mencukupi
BB = 6; BA = 20; n=3
6 9 12
Tips : Program dibuat bertahap mulai dari menampilkan n buah bilangan kelipatan 3 lalu disesuaikan
hingga menjadi sesuai permintaan soal. Setelah setiap langkah selesai, program sebaiknya
dijalankan untuk menguji apakah program telah benar sampai tahap itu sebelum lanjut ke tahap
berikutnya.
Langkah-langkah:
1. Cari pola untuk bilangan kelipatan 3.
2. Buatlah program untuk menampilkan n buah bilangan kelipatan 3
3. Input batas atas dan batas bawah beserta pengecekan kondisinya
4. Perbaiki program sehingga dapat menampilkan n buah bilangan kelipatan 3 antara batas bawah dan
batas atas
5. Tambahkan perintah untuk mengecek posisi prima
6. Tambahkan perintah untuk menampilkan bilangan pada posisi prima dengan warna CYAN
7. Tambahkan perintah untuk menampilkan peringatan “JUMLAH BILANGAN TIDAK MENCUKUPI” jika
bilangan kelipatan 3 antara batas bawah dan batas atas kurang dari n buah
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal F - 2
Program dalam satu box ke box lainnya menunjukkan langkah-langkah pembuatan program. Tambahan
perintah dari langkah sebelumnya diberi warna biru dan perubahan perintah diberi warna merah.
Langkah 1 & 2:
Langkah 1: Cari pola untuk bilangan kelipatan 3.
Langkah 2: Buatlah program untuk menampilkan n buah bilangan kelipatan 3
Program Soalf;Uses Crt;Var N,i,j,pembagi,angka:byte;
Beginclrscr;
{Langkah 2: input n buah bilangan yang diinginkan dan pengecekan kondisinyadimana n minimal 2}Repeat
Write('Masukkan Jumlah '); Readln(n);if (n<2) then Writeln('Jumlah MINIMAL 2');
Until n>=2;
{Langkah 2: menampilkan n buah buah bilangan kelipatan 3}i:=1; {Variable i mewakili posisi bilangan}Repeat
angka:= 3*i; {Langkah 1: Pola bilangan kelipatan 3}write(angka:4);inc(i); {Posisi bilangan ditambah 1}
Until (i>n); {pengulangan sampai kondisi dimana i>n sehingga tampil n buahbilangan kelipatan 3}readkey;End.
Langkah 3 & 4:
Langkah 3: Input batas atas dan batas bawah beserta pengecekan kondisinya;
Langkah 4: Perbaiki program sehingga dapat menampilkan n buah bilangan kelipatan 3 antara
batas bawah dan batas atas
Program Soalf;Uses Crt;Var BB,BA,N,i,j,pembagi,angka:byte;
Beginclrscr;
{Langkah 3 : Input batas bawah dan atas beserta pengecekan kondisinya}Repeat
{Perintah input batas bawah dan batas atas}Write('Masukkan Batas Bawah '); Readln(BB);Write('Masukkan Batas Atas '); Readln(BA);{Tampilkan pesan jika input batas bawah bernilai lebih besar atau sama
dengan batas atas}if (bb>=ba) then Writeln('Batas Bawah HARUS LEBIH KECIL dari Batas Atas');Writeln;
Until (BA>BB) and (bb mod 3=0); {kondisi sampai batas bawah lebih kecil daribatas atas dan batas bawah harus kelipatan 3}
{input n buah bilangan yang diinginkan dan pengecekan kondisinya dimana nminimal 2}Repeat
Write('Masukkan Jumlah ');Readln(n);if (n<2) then Writeln('Jumlah MINIMAL 2');
Until n>=2;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal F - 3
{Langkah 4: menampilkan n buah bilangan kelipatan 3 antara batas bawah danbatas atas}i:=1; {Variable i mewakili posisi bilangan}Repeat
angka:=bb+3*(i-1); {Pola bilangan disesuaikan karena sekarang dimulai daribatas bawah}
write(angka:4);inc(i); {Posisi bilangan ditambah 1}
Until (i>n) or (angka>=ba); {kondisi ditambah dengan angka>=ba karenapengulangan akan berhenti setelah angka melebihi batasatas}
Readkey;End.
Langkah 5, 6, & 7:
Langkah 5: Tambahkan perintah untuk mengecek posisi prima
Langkah 6: Tambahkan perintah untuk menampilkan bilangan pada posisi prima dengan warna
CYAN
Langkah 7: Tambahkan perintah untuk menampilkan peringatan “JUMLAH BILANGAN TIDAK
MENCUKUPI” jika bilangan kelipatan 3 antara batas bawah dan batas atas kurang dari n buah
Program Soalf;Uses Crt;Var BB,BA,N,i,j,pembagi,angka:byte;
Beginclrscr;
{Langkah 3 : Input batas bawah dan atas beserta pengecekan kondisinya}Repeat
{Perintah input batas bawah dan batas atas}Write('Masukkan Batas Bawah ');Readln(BB);Write('Masukkan Batas Atas ');Readln(BA);{Tampilkan pesan jika input batas bawah bernilai lebih besar atau sama
dengan batas atas}if (bb>=ba) then Writeln('Batas Bawah HARUS LEBIH KECIL dari Batas Atas');Writeln;
Until (BA>BB) and (bb mod 3=0); {kondisi sampai batas bawah lebih kecil daribatas atas dan batas bawah harus kelipatan 3}
{input n buah bilangan yang diinginkan dan pengecekan kondisinya dimana nminimal 2}
RepeatWrite('Masukkan Jumlah ');Readln(n);if (n<2) then Writeln('Jumlah MINIMAL 2');
Until n>=2;
{menampilkan n buah bilangan kelipatan 3}
i:=1; {Variable i mewakili posisi bilangan}Repeat
angka:=bb+3*(i-1); {Pola bilangan kelipatan 3}{Langkah 5: Pengujian posisi prima atau bukan}pembagi:=1;For j:=2 to i doif i mod j = 0 then inc(pembagi);
{Langkah 6: Warna CYAN untuk bilangan pada posisi prima dan LightGrayuntuk posisi lainnya}
if pembagi=2 then textcolor(cyan) {Posisi Prima}else textcolor(lightgray); {Posisi Bukan Prima}
write(angka:4);inc(i);
Until (i>n) or (angka>=ba); {pengulangan sampai kondisi}
{Langkah 7: tampilkan pesan jika jumlah tidak mencukupi}Writeln;textcolor(lightgray);If i<n then writeln('Tidak mencukupi permintaan!');readkey;
End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal G - 1
SOAL G
Buatlah program untuk menginput sebuah kalimat, kemudian program akan
mengurutkan karakter-karakter huruf dari kalimat tersebut mulai dari huruf besar secara
ASCENDING, kemudian huruf-huruf kecil secara ASCENDING pula, kemudian angka-angka
secara ascending pula.
Kriteria program:
1. Program akan meminta input berupa sebuah kalimat.
2. Kalimat yang diinput harus terdiri dari MINIMAL 5 digit dan MAKSIMAL 50 digit. Jika tidak
memenuhi syarat tersebut, program akan meminta user untuk menginput kalimat sampai
benar.
3. Program dapat mengurutkan dan menampilkan huruf mulai dari A – Z.
4. Program dapat mengurutkan dan menampilkan huruf mulai dari a – z.
5. Program dapat mengurutkan angka mulai dari 0 – 9.
6. Program akan memunculkan pertanyaan, “APAKAH ANDA AKAN MENGULANG
PROGRAM?” dan Anda harus menjawab dengan menekan tombol Y atau T (baik huruf
kapital maupun huruf kecil). Jika Anda menekan Y, maka program akan mengulang ke
bagian input kalimat kembali. Jika Anda menekan T, maka program akan berakhir.
7. Efek pada nomor 6 (jika menekan tombol) tidak akan berfungsi jika tombol yang ditekan
bukan tombol Y atau T (misalnya A, b, d, Z).
Bobot: no. 1,2,6,7: 10 poin; no. 3,4,5: 20 poin. Total nilai keseluruhan: 100.
CONTOH:
Kalimat: Prokom Unpar 2010
PUakmnoopr0012
Langkah-langkah Pengerjaan:
1. Menentukan variabel yang harus digunakan.
2. Membuat perintah input kalimat.
3. Memasang error trapping jika kalimat tersebut kurang dari 5 digit atau lebih dari 50 digit.
4. Menguji karakter dari ‘A’ sampai ‘Z’ dan membandingkannya dengan karakter-karakter dari kalimat
tersebut.
5. Menguji karakter dari ‘a’ sampai ‘z’ dan membandingkannya dengan karakter-karakter dari kalimat
tersebut.
6. Menguji karakter dari ‘0’ sampai ‘9’ dan membandingkannya dengan karakter-karakter dari kalimat
tersebut.
7. Memasang pertanyaan “Anda akan mengulang kembali?” dan program HANYA bereaksi jika yang
ditekan adalah huruf ‘Y’ atau ‘T’ saja (baik huruf kecil maupun kapital).
8. Mengulang langkah 2 – 7 HINGGA jawaban pada langkah 7 adalah ‘T’.
LANGKAH 1
Dengan ketentuan soal tersebut ada beberapa variabel yang diperlukan, antara lain:
1. Variabel untuk kalimat dengan panjang maksimal 50 digit → kal : String[50]
2. Variabel untuk mewakili 1 karakter dari kalimat tersebut untuk diuji → hrf : String[1]
3. Variabel penguji untuk ‘A’ – ‘Z’, ‘a’ – ‘z’, ‘0’ – ‘9’ → x : Char
4. Variabel untuk indeks karakter ke-? dari kalimat → i : byte (karena maksimal panjang kalimat 50
digit, sedangkan byte bisa untuk 0 – 255)
5. Variabel untuk INPUT TOMBOL KEYBOARD → tmbl : Char
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal G - 2
Langkah 1
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
LANGKAH 2
Membuat perintah input kalimat, yang penting adalah perintah READLN(variabel)
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Write('Kalimat: '); readln(kal);
End.
LANGKAH 3
Pada langkah ini, kita membutuhkan perintah LENGTH untuk menghitung panjang dari sebuah String
karena error trapping yang diminta pada soal adalah panjang dari kalimat yang diinput oleh user. Karena
keinginan soal adalah mengulang perintah input sampai kondisinya terpenuhi, maka digunakan perintah
REPEAT...UNTIL...
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
End.
LANGKAH 4
Pada langkah ini, kita membutuhkan penguji karakter ‘A’ – ‘Z’ dan kita butuh huruf mulai dari pertama
hingga huruf paling akhir dari kalimat tersebut untuk dibandingkan. Jika ditemukan, maka program akan
menampilkan huruf tersebut.
Program Soal_G;Uses CRT;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal G - 3
Varkal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘A’ to ‘Z’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;End.
LANGKAH 5
Sama seperti langkah 4, hanya diganti ‘a’ – ‘z’
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘A’ to ‘Z’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘a’ to ‘z’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;End.
LANGKAH 6
Sama seperti langkah 4 dan 5, tapi yang diuji ‘0’ – ‘9’
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal G - 4
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘A’ to ‘Z’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘a’ to ‘z’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘0’ to ‘9’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;End.
LANGKAH 7
Untuk meminta input berupa tombol keyboard, perintah yang digunakan adalah READKEY dengan
variabel penampung input tersebut harus bertipe CHAR. Perintah tersebut harus diulang sampai tombol
yang ditekan tersebut berkapital ‘Y’ atau ‘T’.
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘A’ to ‘Z’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘a’ to ‘z’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘0’ to ‘9’ Do
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal G - 5
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;
Repeattmbl := readkey;tmbl := UPCASE(tmbl); {huruf kecil / besar, jadi kapital}
Until (tmbl = ‘Y’) OR (tmbl = ‘T’); {berhenti sampai ‘Y’ atau‘T’}End.
LANGKAH 8
Mengulang langkah 2 – 7 HINGGA jawaban pada tombol keyboard bernilai ‘T’.
Langkah 2 dimulai dari mengetik CLRSCR. Jadi kita pasang REPEAT sebelum perintah CLRSCR, dan pasang
UNTIL setelah LANGKAH 6 SELESAI.
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginREPEAT
ClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘A’ to ‘Z’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘a’ to ‘z’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘0’ to ‘9’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;
Repeattmbl := readkey;tmbl := UPCASE(tmbl); {huruf kecil / besar, jadi kapital}
Until (tmbl = ‘Y’) OR (tmbl = ‘T’); {berhenti sampai ‘Y’ atau‘T’}
UNTIL (tmbl = ‘T’);End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal H - 1
SOAL H
Buatlah program untuk menginput sebuah kalimat, kemudian program akan mengurutkan
karakter-karakter huruf dari kalimat tersebut mulai dari huruf besar secara DESCENDING, kemudian
huruf-huruf kecil secara DESCENDING pula, kemudian angka-angka secara ASCENDING.
Kriteria program:
1. Program akan meminta input berupa sebuah kalimat.
2. Kalimat yang diinput harus terdiri dari MINIMAL 5 digit dan MAKSIMAL 50 digit. Jika tidak memenuhi
syarat tersebut, program akan meminta user untuk menginput kalimat sampai benar.
3. Program dapat mengurutkan dan menampilkan huruf mulai dari Z – A.
4. Program dapat mengurutkan dan menampilkan huruf mulai dari z – a.
5. Program dapat mengurutkan angka mulai dari 0 – 9.
6. Program akan memunculkan pertanyaan, “APAKAH ANDA AKAN MENGULANG PROGRAM?” dan
Anda harus menjawab dengan menekan tombol Y atau T (baik huruf kapital maupun huruf kecil).
Jika Anda menekan Y, maka program akan mengulang ke bagian input kalimat kembali. Jika Anda
menekan T, maka program akan berakhir.
7. Efek pada nomor 6 (jika menekan tombol) tidak akan berfungsi jika tombol yang ditekan bukan
tombol Y atau T (misalnya A, b, d, Z).
Bobot: no. 1,2,6,7: 10 poin; no. 3,4,5: 20 poin. Total nilai keseluruhan: 100.
CONTOH:
Kalimat: Prokom Unpar 2010
UPrrpoonmka0012
Langkah-langkah Pengerjaan:
1. Menentukan variabel yang harus digunakan.
2. Membuat perintah input kalimat.
3. Memasang error trapping jika kalimat tersebut kurang dari 5 digit atau lebih dari 50 digit.
4. Menguji karakter dari ‘Z’ sampai ‘A’ dan membandingkannya dengan karakter-karakter dari kalimat
tersebut.
5. Menguji karakter dari ‘z’ sampai ‘a’ dan membandingkannya dengan karakter-karakter dari kalimat
tersebut.
6. Menguji karakter dari ‘0’ sampai ‘9’ dan membandingkannya dengan karakter-karakter dari kalimat
tersebut.
7. Memasang pertanyaan “Anda akan mengulang kembali?” dan program HANYA bereaksi jika yang
ditekan adalah huruf ‘Y’ atau ‘T’ saja (baik huruf kecil maupun kapital).
8. Mengulang langkah 2 – 7 HINGGA jawaban pada langkah 7 adalah ‘T’.
LANGKAH 1
Dengan ketentuan soal tersebut ada beberapa variabel yang diperlukan, antara lain:
1. Variabel untuk kalimat dengan panjang maksimal 50 digit → kal : String[50]
2. Variabel untuk mewakili 1 karakter dari kalimat tersebut untuk diuji → hrf : String[1]
3. Variabel penguji untuk ‘A’ – ‘Z’, ‘a’ – ‘z’, ‘0’ – ‘9’ → x : Char
4. Variabel untuk indeks karakter ke-? dari kalimat → i : byte (karena maksimal panjang kalimat 50
digit, sedangkan byte bisa untuk 0 – 255)
5. Variabel untuk INPUT TOMBOL KEYBOARD → tmbl : Char
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal H - 2
Langkah 1
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
LANGKAH 2
Membuat perintah input kalimat, yang penting adalah perintah READLN(variabel)
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Write('Kalimat: '); readln(kal);
End.
LANGKAH 3
Pada langkah ini, kita membutuhkan perintah LENGTH untuk menghitung panjang dari sebuah String
karena error trapping yang diminta pada soal adalah panjang dari kalimat yang diinput oleh user. Karena
keinginan soal adalah mengulang perintah input sampai kondisinya terpenuhi, maka digunakan perintah
REPEAT...UNTIL...
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
End.
LANGKAH 4
Pada langkah ini, kita membutuhkan penguji karakter ‘Z’ – ‘A’ dan kita butuh huruf mulai dari pertama
hingga huruf paling akhir dari kalimat tersebut untuk dibandingkan. Jika ditemukan, maka program akan
menampilkan huruf tersebut.
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal H - 3
i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘Z’ downto ‘A’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;End.
LANGKAH 5
Sama seperti langkah 4, hanya diganti ‘z’ – ‘a’
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘Z’ downto ‘A’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘z’ downto ‘a’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;End.
LANGKAH 6
Sama seperti langkah 4 dan 5, tapi yang diuji ‘0’ – ‘9’
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
Begin
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal H - 4
ClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘Z’ downto ‘A’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘z’ downto ‘a’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘0’ to ‘9’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;End.
LANGKAH 7
Untuk meminta input berupa tombol keyboard, perintah yang digunakan adalah READKEY dengan
variabel penampung input tersebut harus bertipe CHAR. Perintah tersebut harus diulang sampai tombol
yang ditekan tersebut berkapital ‘Y’ atau ‘T’.
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘Z’ downto ‘A’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘z’ downto ‘a’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘0’ to ‘9’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;
Repeattmbl := readkey;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal H - 5
tmbl := UPCASE(tmbl); {huruf kecil / besar, jadi kapital}Until (tmbl = ‘Y’) OR (tmbl = ‘T’); {berhenti sampai ‘Y’ atau
‘T’}End.
LANGKAH 8
Mengulang langkah 2 – 7 HINGGA jawaban pada tombol keyboard bernilai ‘T’.
Langkah 2 dimulai dari mengetik CLRSCR. Jadi kita pasang REPEAT sebelum perintah CLRSCR, dan pasang
UNTIL setelah LANGKAH 6 SELESAI.
Program Soal_G;Uses CRT;Var
kal : String[50];hrf : String[1];
x : Char;i : byte; {huruf ke}
tmbl : Char;
BeginREPEAT
ClrScr;Repeat
Write('Kalimat: '); readln(kal);Until (Length(kal) >= 5) AND (Length(kal) <= 50);
For x := ‘Z’ downto ‘A’ DoFor i := 1 to Length(kal) Do
Beginhrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘z’ downto ‘a’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;For x := ‘0’ to ‘9’ Do
For i := 1 to Length(kal) DoBegin
hrf := Copy(kal,i,1);if (hrf = x) then WRITE(x);
End;
Repeattmbl := readkey;tmbl := UPCASE(tmbl); {huruf kecil / besar, jadi kapital}
Until (tmbl = ‘Y’) OR (tmbl = ‘T’); {berhenti sampai ‘Y’ atau‘T’}
UNTIL (tmbl = ‘T’);End.
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal I - 1
SOAL I
Buatlah program untuk menginput batas bawah dan batas atas bilangan. Kemudian program
juga akan meminta input jumlah bilangan yang ditampilkan. Kemudian program meminta input faktor
pertama dan faktor kedua.
Kriteria program:
1. Program akan meminta input batas bawah dan batas atas dengan syarat batas bawah lebih kecil dari
batas atas.
2. Program akan meminta input banyaknya bilangan dengan syarat minimal 2.
3. Program akan meminta input faktor pertama dan kedua dengan syarat kedua faktor tidak sama dan
lebih kecil dari batas bawah.
4. Langkah 5-7 dibuat dalam 1 looping.
5. Program.akan menampilkan angka di antara batas bawah dan batas atas yang merupakan kelipatan
dari faktor pertama dan kedua.
6. Program dapat menampilkan bilangan antara batas bawah dan batas atas ATAU sesuai jumlah.
7. Angka / bilangan yang ditampilkan sejumlah input yang diinginkan ATAU sampai batas atas, kalau
jumlahnya tidak mencukupi keluar peringatan bahwa angka yang ditampilkan tidak mencukupi
permintaan.
8. Jika tidak ada bilangan yang merupakan faktor dari bilangan pertama dan kedua, maka ditampilkan
tidak ada bilangan yang memenuhi syarat.
Bobot: no. 1,2,3,7: 15 poin; no. 4,5,6,8: 10 poin. Total nilai keseluruhan: 100.
CONTOH:
BB=40; BA=60; n=2;Faktor1 = 2; Faktor2 = 3
Output: 42 48
BB=40; BA=60; n=10;Faktor1 = 2; Faktor2 = 3
Output: 42 48 54 60
Tidak mencukupi permintaan
BB=40; BA=60; n=10;Faktor1 = 13; Faktor2 = 17
Tidak ada yang memenuhi syarat
Langkah-langkah:
1. Buat proses input batas bawah dan batas atas.
program soal_i;
uses crt;
var bawah, atas: integer;
begin
clrscr;
write('Masukkan batas bawah: '); readln(bawah);
write('Masukkan batas atas: '); readln(atas);
readkey;
end.
2. Lakukan proses pengulangan peng-input-an batas bawah dan batas atas (sampai terpenuhi
kondisi batas bawah lebih kecil dari batas atas)
program soal_i;
uses crt;
var bawah, atas: integer;
Solusi dan Penjelasan UTS Prokom Semester Genap 2010/2011
Soal I - 2
begin
clrscr;
repeat
write('Masukkan batas bawah: '); readln(bawah);
write('Masukkan batas atas: '); readln(atas);
until bawah<atas;
readkey;
end.
3. Buat proses input banyaknya bilangan yang ingin ditampilkan (n).