Algo - D3 Adriansyah 32220084 Mi 2022
Algo - D3 Adriansyah 32220084 Mi 2022
ALGORITMA
ADRIANSYAH
32220084
KESAN :
1.Saya senang belajar algoritma karena algoritma mengajarkan dasar - dasar
pemograman untuk dapat memahami bagaimana suatu program itu dapat
dibangun mulai dari yang paling sederhana hingga yang paling rumit.
2.Selama belajar algoritma saya bisa belajar untuk berfikir logis dan slalu
menimbangkan permasalahan dan berfikir dengan tenang .
3. Cara belajar nya santai
4. Cara belajar yang sangat pahami dan santai untuk berfikir
SARAN :
1. Saya sebagai mahasiswa membutuhkan bimbingan
2. Kami selaku mahasiswa berharap bisa mengajari dengan sabar, karena saya masih
beradaftasi dengan algoritma. masalah, jadi sering-sering lah berlatih.
3. Dalam notasi algoritma model yang paling efisian digunakan adalah poseudocode.
4. Untuk pelajaran praktikum inin dilakukan secara offline biar mudah di pelajari dan
di pahami.
KATA PENGANTAR
PEMBUKA : Kami senantiasa memanjatkan puji dan syukur ke hadirat Allah SWT
yang telah mengajarkan kepada manusia dengan perantaraan pena. IlmuNya meliputi
apa yang ada di bumi dan yang ada di langit dan yang ada diantaranya. Sholawat dan
salam semoga terucurah kepada junjungan dan teladan alam Nabi Muhammad SAW.
Kami berharap kelembutan dan keberkahan ilmu Allah SWT dilimpahan kepada kami
sehingga memberikan manfaat dan memberikan petunjuk menuju jalan kebenaran
yang diridhoi. Dengan karuniaNya pula, kami mengembangkan model laporan atau
jawaban kinerja manager agar dapat memberikan manfaat sesuai dengan harapan dan
tujuan.
ISI : Sajian laporan dan jawaban merupakan resume eksekutif agar sistematis,
sederhana, dan mudah dipahami dan dipelajari. Selanjutnya dapat dikembangan ke
arah yang lebih baik.
PENUTUP : Akhir kata, laporan ini dapat memberikan karakter yang baik Kami
menyadari kinerja ini tentunya tidak sempurna dan ideal, banyak kekurangan sehingga
memerlukan kritik dan penyempurnaan yang berkesinambungan. Untuk itu, kami
sangat terbuka dengan segala saran dan kritik pada buku ini agar menjadi lebih baik di
masa mendatang menyesuaikan jamannya. Harapan kami semoga karya ini dapat
memberikan manfaat sesuai dengan maksud dan tujuannya.
10,January 2023
Penyusun
Adriansya
h
DAFTAR ISI
2.Jumlah data input kustomisasi, maksimal N = 50 agar bisa tampil di layar tanpa
scroll. Hal ini membutuhkan Setting batasan indeks terlebih dulu
3.Data yang diinput hanya NIM, NAMA, jumlah KEHADIRAN, nilai UTS, nilai UAS
dan bisa untuk simulasi data otomatis. (petunjuk : gunakan buah 3 Array/Tabel)
B : 85 > NA >= 70
C : 70 > NA >= 55
D : 55 > NA >= 40
E : 40 > NA >= 0
1.2 ALGORITMA
DESKRIPSI PROBLEM
Judul : Menentukan Indeks Mutu
Input : Nilai,Uas,Uts,Kehadiran
Proses : (30/100*uts)+(40/100*uas)
+(20/100*tgs) Output : A/B/C/D/E
KAMUS DATA
Constanta = // Tidak Ada
Variable = : UTS,UAS,HDR,NA : REAL :
INTEGER
ALGORITMA
begin
writeln;
write('Jumlah Data : '); readln(N);
writeln;
for i:=1 to N do
begin
with
maha
siswa
[i] do
write('NIM : '); readln(NIM);
begin
write('Nama Mahasiswa : '); readln(NAMA);
writeln('In
write('Jumlah Kehadiran [1-16] : '); readln(KEHADIRAN);
put
Data
write('Nilai UTS : '); readln(UTS);
ke-',i)
write('Nilai : '); readln(UAS);
;
UAS writeln;
end;
END. end menu;end;
SOURCE CODE
{program kasus 1;}
uses crt;
{ Kamus Data}
type
datamahas
iswa =
record
NIM: string[15];
NAMA: string[30];
KEHADIRAN: integer;
UTS: integer;
UAS:
integer; NA:
real;
INDEKS:
string[2];
end;
{ALGORTIMA}
var
N,i,j,no,cek : integer;
writeln('|
|'); writeln;
write('>>> Pilih Menu Nomor = '); readln(no);
end;
procedure isi_data;
begin
writeln;
write('Jumlah Data : '); readln(N);
writeln;
for i:=1 to N do
begin
with mahasiswa[i] do
begin
writeln('Input Data ke-',i);
writeln;
end;
end;
menu;
end;
SCREENSHOOT
BAB II
PEMBAHASAN DAN JAWABAN SOAL-1
2.1 KASUS-1
A. PROBLEM :
Buatlah algoritma dan program Pascal yang dapat menerima input 3 buah bilangan
Real sekaligus, kemudian menampilkan hasil perhitungan yang berupa penjumlahan
dan perkalian ketiga bilangan tersebut.
B.ALGORITMA :
DESKRIPSI PROBLEM
Judul : MENCARI
BILANGAN REAL
Input : Masukkan Nilai
A&B
Proses : PERKALIAN & TAMBAHAN
Output : TERCETAK BILANGAN REAL
Type = REAL
KAMUS DATA
Variabl : A,B,C,D
Constanta = // TIDAK ADA
e
ALGORITMA
begin
clrscr
;
write('Masukkan Nilai A = ');readln(a);
write('Masukkan nilai B = ');readln(b);
c:=
A+B;
d:= A*B;
write('Hasil tambahan = ',c:1:2);
write('Hasil perkalian = ',d:2:3);
readln;
end.
END.
SOURCE CODE
{program tipe_data_real;}
uses crt;
{KAMUS_DATA}
var
a,b,c,d : real;
begin
clrscr;
write('Masukkan Nilai A =
');readln(a); write('Masukkan nilai B =
');readln(b); c:= A+B;
d:= A*B;
write('Hasil tambahan =
',c:1:2); write('Hasil perkalian =
',d:2:3); readln;
end.
SCREENSHOOT
BAB III
PEMBAHASAN DAN JAWABAN SOAL-2
2.2 KASUS-2
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat menampilkan hasil perhitungan
untuk menentukan Luas (LS) dan Keliling (KS) Segitiga Sama Sisi dengan panjang sisi
(S) berjenis real yang diinput dari keyboard.
B.ALGORTIMA
DESKRIPSI PROBLEM
Judul : Program mencari_luas_dan_keliling
Input : kata “Panjang sisi?’”
Proses : meng input luas segitiga dan keliling segitiga
Output : terinput hasil luas segitiga dan keliling
segitiga
KAMUS DATA
Program sgitiga_sama_sisi
used CRT;
Type SkopeHitungan -
Real;
Var: S,Luas,
keliling,SkopeHitungan.
ALGORITMA
Begin
Output(input panjang sisi-7');
readln(S) Luas-½*S*√((S² - ½S)²)
Keliling 3*SOutputln('luas segitiga sama sisi-',Luas)Outputln('keliling segitiga
sama sisi-', keliling) End.
SOURCE CODE
program segitiga_sama_sisi;
uses crt;
var // Alas: Integer;
tinggi: Integer;
luas: Integer;
keliling: Integer;
begin
writeln('program mencari luas dan keliling segitiga sama sisi');
writeln;
write('masukan alas segitiga : ');
readln(alas);
writeln;
write('masukan tinggi segitiga : ');
readln(tinggi);
writeln;
keliling:= 3*alas;
writeln('hasi : ');
writeln;
writeln('luas segitiga : ',1/2*tinggi*alas);
writeln;
writeln('keliling segitiga : ',keliling);
readln;
end.
SCREENSHOOT
BAB IV
PEMBAHASAN DAN JAWABAN SOAL-3
2.3 KASUS-3
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat menampilkan hasil perhitungan
untuk menentukan Luas (LSS) dan Keliling (KSS) Segitiga Siku-Siku dengan panjang
sisi siku-sikunya X dan Y berjenis real yang diinput dari keyboard.
SOURCE CODE
program segitiga_siku_siku;
uses crt;
var // a: Integer;
b: Integer;
t: Integer;
luas: Integer;
keliling: Integer;
begin
clrscr;
WriteLn
;
writeln('Luas dan keliling segitiga siku
siku'); WriteLn(' -');
writeln;
write('masukan alas segitiga :
'); readln(a);
writeln;
write('masukan tinggi segitiga :
'); readln(t);
writeln;
writeln('input unutuk
keliling'); WriteLn;
Write('Masukan Nilai bidang miring :
'); Readln(b);
keliling:= a + b + t;
WriteLn('==============');
writeln('HASIILL : ');
WriteLn('==============')
;
writeln;
writeln('luas segitiga : ', 1 / 2 * a *
t); writeln;
WriteLn('==================');
WriteLn;
writeln('keliling segitiga : ',
keliling); readln;
SCREENSHOOT
end.
BAB V
PEMBAHASAN DAN JAWABAN SOAL-4
2.4 KASUS-4
A.PROBLEM
Membuat AGORITMA dan PROGRAM PASCAL yang dapat menampilkan hasil
perhitungan untuk menentukan Luas (LL) dan Keliling (KL) Lingkaran dengan
diameter D berjenis real yang diinput dari keyboard.
B.ALGORITMA
PROBLEM:
Judul : menampilkan hasil perhitungan untuk menentukan luas dan
keliling Input : masukan dimeter lingkaran
Proses : pi*r*r = 2*pi*r
: luas lingkaran dan keliling lingkaran
Outpu
t DATA:
KAMUS
Uses wincrt;
Constant pi=3.14
a ;
Variable r:integer
;
Luas,keliling :re
al;
ALGORITMA :
Writeln (‘hitung keliling dan luas lingkaran’);
Write (‘diameter : ‘); readln (r);
Luas := Pi * r*r ;
Keliling :=2* PI * r;
Writeln (‘luas : ‘,luas:2:2);
Writeln (‘keliling : ‘,keliling:2:2);
END
SOURCE CODE
program Lingkaran;
uses crt;
{KAMUS DATA}
var
jari_jari: Integer;
jari_jari2: Integer;
luas: Integer;
keliling: Integer;
{ALGORITMA}
begin
clrscr;
WriteLn
writeln;
readln(jari_jari);
writeln;
write('Masukan Nilai jari jari lingkaran : ');
readln(jari_jari2)
; writeln;
luas :=
jari_jari *
jari_jari2;
keliling := 2 * jari_jari *
WriteLn('
'); writeln;
writeln('luas
Lingkaran : ',
luas ,'π');
writeln
WriteLn
writeln
('keliling
Lingkara
n : ',
keliling ,
'π');
readln;
end.
SCREENSHOOT
BAB VI
PEMBAHASAN DAN JAWABAN SOAL-5
2.5 KASUS-5
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat menampilkan hasil perhitungan
untuk menentukan 3 jenis Jarak Tempuh (S1, S2, S3) dan Rata-rata Jarak Tempuhnya,
dengan masukan dari keyboard berupa Kecepatan (V1, V2, V3) dan Waktu Tempuh
(T1, T2, T3) yang berjenis real
Proses:s1 := t1*v1;
s2 := t2*v2;
s3 :=
t3*v3;
r := (v1-v2-
v3)/(t1-t2-
t3);
Output :
Tercetak nilai
jarak tempuh dan
rata-rata
KAMUS DATA:
begin
SOURCE CODE
program menghitung_jarak_dan_ratarata;
uses crt;
t1,t2,t3 : real;
s1,s2,s3 :
real;
r : real;
begin
clrscr;
');readln(t2);
write('masukan waktu tempuh ke 3 : ');readln(t3);
writeln;
writeln('HASIL :');
WRITELN;
s1 := t1*v1; s2 := t2*v2;
s3 := t3*v3;
r := (v1-v2-v3)/(t1-t2-
t3);
writeln('Jarak Tempuh
ke-1
= ',s1:2:0,' km');
readln;
km'); writeln('Jarak Tempuh ke-3 =
end.',s3:2:0,' km');
B.ALGORITMA
SKEMA ALGORITMA
PROBLEM:
KAMUS DATA:
Uses crt;
Constanta //tidak ada
Variable bil:integer;
ALGORITMA:
Begin
Else
Writeln (‘bilangan
ganjil’);
EnD.
SOURCE CODE
program ganji lgenap_positif negativ_nol;
uses crt;
var
x :
Integer;
begin
clrs
cr;
writ
e
('ma
suka
n
angk
a :
');
read
ln
(x);
if (x > 0) and (x mod 2= 0) then
writeln ('bilangan genap positif')
else if (x < 0) and (x mod 2= 0) then
writeln ('bilangan genap negatif')
else if (x > 0) and (x mod 1 = 0) then
writeln ('bilangan ganjil positif')
else if (x < 0) and (x mod 1 = 0) then
writeln ('bilangan ganjil negatif')
SCREENSHOOT
BAB VIII
PEMBAHASAN DAN JAWABAN SOAL-7
2.7 KASUS-7
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat menentukan transaksi pembayaran
dengan masukan “Jumlah Pembelian dalam Rp.” dan “Jenis Konsumen dengan angka 1
atau 2 (1. Pelangan; 2. Non-pelanggan)”. Dengan ketentuan jika Konsumen adalah
pelanggan maka dapat potongan 10% dan non-pelanggan tidak dapat potongan. Dan
jika jumlah transaksi per 1 juta akan mendapat cashback 30 ribu untuk pelanggan dan
15 ribu untuk non-pelanggan. Jadi jika transaksi 2 juta maka cashback 60 ribu dan 30
ribu, dan seterusnya. (CATATAN : output Hari, Tanggal, dan Waktu diambil dari sistem
komputer)
B.ALGORITMA
SKEMA ALGORITMA
PROBLEM:
o Judul:transaksi pembayaran
o Input:jumlah pembeli,jenis konsumen
o Proses:if then-if else then
o Output:
KAMUS DATA:
ALGORITMA:
begin
IF (JK = 1) THEN
ELSE BEGIN
IF (JK = 2) THEN
END;
IF (JT = 1) THEN
ELSE BEGIN
IF (JK = 2) THEN
END.
SOURCE CODE
program menentukan_harga;
uses crt;
var
jk : real; jt : real;
jmt : real;
bp :real;
begin
clrscr;
writeln('program harga');
');readln(jk); writeln;
writeln('=========================');
begin
if (jk = 1) then
exit;
end;
be
gin
if (jk = 1) then
bp := 0/100*jt
bp := 10/100*jt
end;
begin
if
(j
k
=
1)
th
en
writeln('besar potongan : Rp
',bp:2:0);
en
d;
b
e
g
i
n
end;
begin
if (jk = 1)
then jmt := jt-
bp
else if (jk = 2)
then jmt := jt - bp;
end;
begin
if (jk = 1) then
SCREENSHOOT
BAB IX
PEMBAHASAN DAN JAWABAN SOAL-8
2.8 KASUS-8
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat menerima masukan sebuah bilangan
integer(X)antar 0 s/d 9 lalu menampilkan tulisan teks bilangan tersebut, dengan
ketentuan :-Jika X> 9 atau X < 0 maka ditampilkan “Salah entri : ketik bilangan
0 ..9”- Jika X = 0 maka ditampilkan “nol”; -Jika X = 1 maka ditampilkan “satu”; -Jika
X = 2 maka ditampilkan “dua”; - dan seterusnya sampai jika X = 9 maka ditampilkan
“sembilan”
B.ALGORITMA
SKEMA ALGORITMA
PROBLEM:
KAMUS DATA:
variabel : x :
integer
ALGORITMA:
begin
SCREENSHOOT
BAB X
PEMBAHASAN DAN JAWABAN SOAL-9
2.9 KASUS-9
A.PROBLEM
Buatlah algoritma dan program Pascal yang menentukan NILAI AKHIR (NA) dan Nilai
INDEK MUTU (IM) suatu matakuliah dengan 4 variabel nilai yaitu nilai UTS, UAS,
TUGAS, dan KEHADIRAN masing-masing skala 0 - 100, dengan ketentuan sebagai
berikut :
•NA = 30% UTS + 40% UAS + 20% TUGAS + 10% KEHADIRAN.
•Jumlah KEHADIRAN maksimum 16, jadi jika kehadiran =10 maka nilai KEHADIRAN
dihitung (10/16) x 100
Ketentuan konversi NA ke IM dirumuskan sebagai berikut :
-Jika NA> 100 atau NA < 0 maka ditampilkan “Salah nilai”
-Jika NA< = 100 atau NA > 80 maka ditampilkan IM = “nilai A”
-Jika NA< = 80 atau NA > 65 maka ditampilkan IM = “nilai B”
-Jika NA< = 65 atau NA > 50 maka ditampilkan IM = “nilai C”
-Jika NA< = 50 atau NA > 40 maka ditampilkan IM = “nilai D”
-Jika NA< 40 maka ditampilkan IM = “nilai E”
PROBLEM:
ALGORITMA:
BEGIN
while (i < 1) do
begin
write('Masuka
n nilai UTS
:
');readln(uts);
if (uts > -1) and (uts < 101) then i := 1
else writeln('Error,(Masukan nilai 1-
100)');
end;
begin
Write('Masukan nilai UAS :
');readln(uas); if (uas > -1) and (uas <
101)then i := 1
else writeln('Error,(Masukan nilai 1-
100)'); end;
begin
Write('Masukan nilai Tugas :
');readln(tgs); if (tgs > -1) and (tgs <
101)then i := 1 else writeln('Error,
(Masukan nilai 1-100)');
end;
na := (30/100*uts)+(40/100*uas)
+(20/100*tgs); writeln('>> Nilai akhir :
',na:2:0,' <<');
begin
if (na >= 0) and (na <
40)then writeln('E')
else
begin
i
f
(na
>=
40)
and
(na
<
else begin
if (na >= 80) and (na <= 100)then
writeln('A')
end.
SOURCE CODE
program menentukan_nilai_akhir_semester;
uses crt;
var
uts : real;uas :
real; kd : real;
begin
clrscr;
');readln(uts);
na := (30/100*uts)+(40/100*uas)+(20/100*tgs)+(10/16*kd);
writeln('=');
begin
if (na>100)
then
writeln('NILA
I YANG ANDA
MASUKAN
SALAH')
ELSE IF (na<=100) and (na>=80) THEN
end
SCREENSHOOT
BAB XI
PEMBAHASAN DAN JAWABAN SOAL-10
2.10 KASUS-10
A.PROBLEM
Buatlah algoritma dan program Pascal yang bisa mencetak bilangan dari AWAL
sampai dengan AKHIR, AWAl < AKHIR. Dimana AWAl dan AKHIR diinput
dari keyboard. Sehingga menjadi deret aritmetika dengan pertumbuhan +1.
Dilustrasikan pada gambar di bawah.
Input AWAL = ? <enter> contoh = 3
Input AKHIR = ? <enter> contoh = 24
>> Hasil PROSES :
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24
B.ALGORITMA
PROBLEM:
47
ALGORITMA:
Begin
Clrscr
;
Writeln('PROGRAM DERET ARITMATIKA ');
Writeln('=========================');
writeln;
Write('Input Awal : '); readln(awal);
Write('Input Akhir : '); readln(akhir);
Writeln;
Writeln('==========');
Writeln(' HASIL ');
Writeln('==========')
;
Writeln;
FOR deret := awal To akhir Do
SOURCE
END. CODE
program Deret_Aritmatika;
{Input : Deret aritmatika}
{Proses : Mencetak deret aritmatik}
{Output : Tercetak deret aritmatika}
{KAMUS DATA}
uses crt;
type Bil = integer;
var awal,akhir,deret,angka : Bil;
{ALGORITMA}
Begin
48
Clrscr;
Writeln('PROGRAM DERET ARITMATIKA ');
Writeln('=========================');
writeln;
Write('Input Awal : '); readln(awal);
Write('Input Akhir : '); readln(akhir);
Writeln;
Writeln('==========');
Writeln(' HASIL
');
Writeln('==========');
Writeln;
FOR deret := awal To akhir Do
begin
Write(awal , ' ');
angka := awal + 1;
awal := angka;
end;
readln;
SCREESHOOT
end.
49
BAB XII
PEMBAHASAN DAN JAWABAN SOAL-11
2.11 KASUS-11
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat mencetak sejumlah
barisan bilangan yang merupakan kelipatan dari bilangan tertentu misal N.
Input Barisan Kelipatan N = ? <enter> contoh = 3
Input Banyaknya barisan yang dicetak = ? <enter> contoh = 15
>> Hasil PROSES :
3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45
B.ALGORITMA
PROBLEM :
o Judul :Program bilangan kelipatan
o Input :Bilangan kelipatan
oProses :Mencetak bilangan kelipatan
o :Tercetak bilangan kelipatan
Outpu
KAMUS DATA:
t // tidak ada
Constanta
uses crt;
Type Bil = integer;
var
kel,jumlah,hasil,baris
an : Bil;
ALGORITMA :
Begin
clrscr;
Writeln('PROGRAM BILANGAN KELIPATAN');
Writeln('===========================');
50
Writeln;
write('Input Barisan Kelipatan : '); readln(kel);
write('Input Banyaknya barisan yang dicetak : '); readln(barisan);
writeln;
Writeln('==========');
Writeln(' HASIL ');
Writeln('==========')
;
Writeln;
FOR jumlah := kel To barisan Do
begin
write(kel , ' ');
hasil := kel + kel;
kel := hasil;
end;
readln;
end.
SOURCE CODE
program bilangan_kelipatan;
{KAMUS DATA}
uses crt;
51
{ALGORITMA}
Begin
clrscr;
Writeln('===========================');
Writeln;
');
readln(barisan);
writeln;
Writeln('==========');
Writeln(' HASIL
');
Writeln('==========');
Writeln;
begin
kel := hasil;
end;
readln;
end.
52
SCREENSHOOT
53
BAB XIII
PEMBAHASAN DAN JAWABAN SOAL-12
2.12 KASUS-12
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat mencetak sejumlah barisan
bilangan FIBONACCI tertentu misal sebanyak N. Bilangan Fibonacci
adalah bilangan yang nilainya merupakan penjumlahan 2 buah bilangan
sebelumnya
Input Banyaknya barisan Fibonacci yang dicetak = ? <enter> contoh = 15
>> Hasil PROSES :
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
B.ALGORITMA
PROBLEM :
o Judul : Program mencetak_bilangan_fibonacci
o Input : Banyak bilangan fibonacci
Proses
o : Mencetak bilangan fibonacci
o : Tercetak bilangan Fibonacci
Outpu
KAMUS DATA:
o t
Constanta // tidak ada
o Type Bil = integer;
o Var N,i,j,k,l : Bil;
ALGORITMA:
Begin
clrscr;
Writeln('PROGRAM SISTEM BILANGAN FIBONACCI');
Writeln('==================================');
Writeln;
Write('Input banyaknya barisan Fibonacci yang dicetak : ');
readln(N); 54
Writeln;
Writeln('============')
;
Writeln(' HASIL ');
Writeln('============')
;
Writeln
; k :=
1;
l := 0;
FOR i := 1 to N do
begin
write(k , ' ');
j := k + l;
l := k;
k := j;
end;
readln
; end.
SOURCE CODE
program
Readln; mencetak_bilangan_fibonacci;
{Input
end. : Banyak bilangan fibonacci}
{KAMUS DATA}
uses crt;
55
var N,i,j,k,l : Bil;
{ALGORITMA}
Begin
clrscr;
Writeln('==================================');
Writeln;
Writeln;
Writeln('============');
Writeln(' HASIL
');
Writeln('============');
Writeln;
k := 1;
l := 0;
FOR i := 1 to N do
begin
j := k + l;
l := k;
k := j;
end;
readln;
end. 56
Readln;
end.
SCREENSHOOT
57
BAB XIV
PEMBAHASAN DAN JAWABAN SOAL-13
2.13 KASUS-13
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat mencetak rata-rata
dari serangkaian bilangan sebanyak tertentu yang diinput dari keyboard
Input Banyaknya Bilangan, N = ? <ENTER>
Input Bilangan ke-1 = ? <enter>
Input Bilangan ke-2 = ? <enter>
:
Input Bilangan ke-N = ? <enter>
>>
>> Rata-rata bilangan = ...
B.ALGORITMA
PROBLEM :
o Judul :
Program
menghitun
g_rata_rat
a
o Input :
Menghitu
ng nilai
rata rata
o Proses:
Mencetak
nilai rata
rata
oOutput: Tercetak nilai rata rata
KAMUS DATA:
o Constanta // tidak ada
o var
n, x, i, tot : integer; 58
rata : real;
ALGORITMA:
begin
writeln;
write('Masukkan jumlah bilangan : ');readln(n);
writeln;
writeln('Masukkan Bilangan : ');
tot := 0;
for i := 1 to n do
begin
write('Bilangan ke-',i,' :');readln(x);
tot := tot + x;
end;
rata := tot/n;
writeln;
writeln('Total Bilangan : ',tot:6);
writeln('Rata-rata :
',rata:6:2);
read
key;
end.
begi
n
writeln('Program Menghitung Rata-rata');
clrscr
writeln('====================');
;
writeln;
write('Masukkan jumlah bilangan : ');readln(n);
writeln;
writeln('Masukkan Bilangan : ');
tot := 0;
59
for i := 1 to n do
begin
write('Bilangan ke-',i,' :');readln(x);
tot := tot + x;
end;
rata := tot/n;
writeln;
writeln('Total Bilangan : ',tot:6);
writeln('Rata-rata :
',rata:6:2);
read
key;
end.
SOURCE CODE
Program menghitung_rata_rata;
uses crt;
var
n, x, i, tot : integer;
rata : real;
begin
clrscr;
writeln('====================');
writeln;
tot := 0;
for i := 1 to n do
begin
tot := tot + x;
end;
rata := tot/n;
writeln;
writeln('Rata-rata :
',rata:6:2);
readkey;
end.
SCREENSHOOT
61
BAB XV
PEMBAHASAN DAN JAWABAN SOAL-14
2.14 KASUS-14
A.PROBLEM
Buatlah algoritma dan program Pascal yang dapat menghitung
akumulasi, faktorial, dan polinom tertentu dengan kriteria dan ilustrasi
program sbb :
a) Y = Akumulasi = 1 + 2 + 3 + 4 + … + N
b) Y = Faktorial = N! = 1 * 2 * 3 * … * N
c) Y = Polinom = X + 3X4 + 5X6 + 7X8 + … + …X(N)
>> AKUMULASI & FAKTORIAL
Input N = ? <enter>
>> Hasil Akumulasi = 1 + 2 + 3 + … + N = ….
>> Hasil Faktorial = 1 x 2 x 3 x … x N = ….
>>
>> POLINOM Y
Input X = ? <enter>
Input N = ?
<enter>
>> Hasil Polinom
Y = ….
B.ALGORTIMA
PROBLEM :
o Judul:prog
ram_Men
ghitung_a
kumulasi_
faktorial_
dan_polin
om
o Input:Nila
iN
o Proses:Me
ncetak
nilai N
oOutput:tercetak nilai N 62
KAMUS DATA:
o type Bil = integer
ovar akumu,faktor,N,polinom,no,hasil : integer
clrscr;
Writeln('PROGRAM MENGHITUNG AKUMULASI,FAKTORIAL DAN
POLINOM');
Writeln('===============================================
===
=');
Writeln;
Write('Input N : ');
readln(N); Writeln;
Writeln('=========');
Writeln(' HASIL ');
Writeln('=========')
;
Writel
n; no :=
1;
FOR akumu := 1 to N
do begin
write(no , ' ');
no := no + 1;
end;
SOURCE CODE
readln; Menghitung_akumulasi_faktorial_dan_polinom;
program
{input :Nilai N}
end.
{Proses : Mencetak Nilai N}
{Output : Tercetak Nilai N}
{KAMUS DATA}
uses crt;
63
type Bil = integer;
var akumu,faktor,N,polinom,no,hasil : integer;
{ALGORITMA}
begin
clrscr;
Writeln('PROGRAM MENGHITUNG AKUMULASI,FAKTORIAL DAN
POLINOM');
Writeln('==========================================
=========')
;
Writeln;
Write('Input N : ');
readln(N); Writeln;
Writeln('=========');
Writeln(' HASIL
');
Writeln('=========');
Writel
n;
no := 1;
FOR akumu := 1 to N
do begin
write(no , '
'); no := no +
1;
end;
readln;
end.
64
SCREENSHOOT
65
BAB XVI
PEMBAHASAN DAN JAWABAN SOAL-15
2.15 KASUS-15
A.PROBLEM
Diketahui file teks integer bernama ’FileInt.Txt’ berisi data 100, 90, 75, 55,
49,
80, 70, 65, 55, 68, 98, 90, 100, 25, 35, 45, 65, 75, 85, 100. (buatkan terlebih
dulu)Buatlah algoritma dan program Pascal yang dapat menampilkan isi
data dari file ’FileInt.Txt’dan hitunglah rata-rata dari data tersebut.
>> HASIL PEMBACAAN DATA
100, 90, 75, 55, 49, 80, 70, 65, 55, 68, 98, 90, 100, 25, 35, 45, 65, 75, 85, 100.
>>
>> HASIL PERHITUNGAN RATA-RATA = ….
B.ALGORITMA
PROBLEM :
o Judul:ME
NGINPUT
NILAI
RATA
RATA
o Input:ME
NGINPUT
NILAI
o Proses:M
ENCETA
K NILAI
oOutput:TERCETAK NILAI
KAMUS DATA:
o type Bil = integer
o var,DATA,FILE
TEXT,NOMOR: integer
66
ALGORITMA:
{* Pendefinisian File Teks = TEXT Sederhana INTEGER *}
{* Memahami konsep MARK pada isi file teks *}
{* Operasi : Input-Proses-output *}
Var F : FILE_TEXT;
X : DATA;
No : Nomor;
SOURCE CODE
{ ===== PROGRAM_INPUT_NILAI; ===== }
Program IPO_untuk_Akses_FILE;
{* Pendefinisian File Teks = TEXT Sederhana INTEGER *}
{* Memahami konsep MARK pada isi file teks *}
{* Operasi : Input-Proses-output *}
Var F : FILE_TEXT;
X : DATA;
No : Nomor;
71
SCREENSHOOT
72
BAB XVII
PEMBAHASAN DAN JAWABAN SOAL-16
2.16 KASUS-16
A.PROBLEM
Diketahui file teks huruf bernama ’FileChr.Txt’
berisi data ’A’, ’C’, ’B’, ’F’, ’Z’, ’X’, ’A’, ’B’, ’D’, ’E’, ’F’, ’C’, ’A’,
’B’,’A’,’G’, ’A’, ’H’, ’A’, ’P’, ’A’,
’B’,’A’,’G’ . (buatkan terlebih dulu) Buatlah
algoritma dan program Pascal
yang dapat menampilkan isi data dari file ’FileChr.Txt’
>> HASIL PEMBACAAN DATA
dan menghitung berapa banyaknya data dan berapa banyaknya huruf ’A’
‟A‟, ‟C‟, ‟B‟, ‟F‟, ‟Z‟, ‟X‟, ‟A‟, ‟B‟, ‟D‟, ‟E‟, ‟F‟, ‟C‟, ‟A‟, ‟B‟,‟A‟,‟G‟, ‟A‟,
dalam data tersebut.
‟H‟, ‟A‟, ‟P‟, ‟A‟, ‟B‟,‟A‟,‟G‟.
>>
>> HASIL PERHITUNGAN
- Banyak huruf dalam file = ….
- Banyak huruf A ada …. buah
B.ALGORITMA
PROBLEM :
o Judul:PRO
GRAM
RECORD
o Input :
INPUT
NILAI N
o Proses :
MENCET
AK
NILAI N
oOutput : TERCETAK NILAI
KAMUS DATA:
o type Bil = integer,STRING
o var,,FILE
TEXT,NOMOR,NIM,NAM
A: integer 73
ALGORITMA
BEGIN
ClrScr;
{------------------------<<< Check Keberadaan/Pembuatan File >>> }
Assign(F,'FData2.txt');
{$i-}
Reset(F);
If(IOResult<>0) Then Rewrite(F);
{$i+}
Var F : FILE_TEXT;
Xn : NIM; XNm:NAMA;
XNl:NILAI;
No : Nomor;
');
');
SCREENSHOOT
77
BAB XVIII
PEMBAHASAN DAN JAWABAN SOAL-17
2.17 KASUS-17
A.PROBLEM
Buatlah algoritma dan program Pascal yang bisa
menampilkan matriks (N x N) berikut ini secara otomatis
INPUT MATRIKS (N x N), N ganjil, N = ? <enter> contoh = 5
>> Matriks Segitiga Atas Matriks Segitiga Bawah
1 2 3 4 5 5 5 5 5 5
1 3 4 5 4 4 4 4 4
1 4 5 3 3 3 3 3
1 5 2 2 2 2 2
1 1 1 1 1 1
B.ALGORITMA
PROBLEM :
o Judul:
PROGRA
M
MATRIK
o Input :
INPUT
NILAI N
o Proses :
MENCET
AK
NILAI N
oOutput : TERCETAK NILAI
KAMUS DATA:
o type Bil = ARRAY
o var: atrikI,matrikII : data,baris,kolom,pil : integer;procedure isimatrik
var i,j : integer;
ALGORITMA
writeln('Penentuan ORDO MATRIK 78
I');
write('Masukan banyak baris matrik I = ');readln(baris);
write('Masukan banyak kolom matrik I = ');readln(kolom);
for i:=1 to baris do
begin
gotoxy(j*10,i*5);
readln(matrikI[i,j])
; end;
SOURCE CODE
program matrik;
uses crt;
{Kamus
Data}
type data =
array[1..10,1..
10] of integer;
var matrikI,matrikII : data;
baris,kolom,pil : integer;
procedure isimatrik;
var i,j : integer;
{ALGORITMA}
begin
writeln('Penentuan ORDO MATRIK I');
write('Masukan banyak baris matrik I = ');readln(baris);
write('Masukan banyak kolom matrik I = ');readln(kolom);
for i:=1 to baris do
for j:=1 to kolom do
begin
gotoxy(j*10,i*5);
readln(matrikI[i,j])
;
end; 79
clrscr
;
writel
write('Masukan banyak baris matrik II = ');readln(baris);
write('Masukan banyak kolom matrik II = ');readln(kolom);
for i:=1 to baris do
for j:=1 to kolom do
begin
gotoxy(j*10,i*5);
readln(matrikII[i,j])
; end;
end;
procedure jumlahmatrik(m1,m2 : data);
var hasil : data;
i,j : integer;
begin
for i:=1 to
baris do
for j:=1 to kolom do
begin hasil[i,j]:=m1[i,j]
+m2[i,j]; end;
clrscr;
writeln('Hasil Penjumlahan
MATRIK'); for i:=1 to baris do
for j:=1 to kolom
do begin
gotoxy(j*10,i*5);
write(hasil[i,j]);
end;
end;
80
procedure kurangmatrik(m1,m2 : data);
var hasil : data;
i,j : integer;
begin
for i:=1 to
baris do
for j:=1 to kolom
do begin
hasil[i,j]:=m1[i,j]-
m2[i,j]; end;
clrscr;
writeln('Hasil Penjumlahan
MATRIK'); for i:=1 to baris do
for j:=1 to kolom
do begin
gotoxy(j*10,i*5);
write(hasil[i,j]);
end;
end;
{procedure kalimatrik(m1,m2 : data);}
var hasil : data;
i,j,z : integer;
begin
for i:=1 to
baris do
for j:=1 to kolom
do begin
hasil[i,j]:=0;
lxxxi
for z:=1 to baris do
hasil[i,j]:=hasil[i,j]+matrikI[i,z]*matrikII[z,j];
end;
clrscr;
writeln('Hasil Penjumlahan MATRIK');
for i:=1 to baris do
for j:=1 to kolom do
begin
gotoxy(j*10,i*5);
write(hasil[i,j]);
end;
end.
begi
nwriteln(' MENU ');
writeln('(1) Penjumlahan Matrik ');
writeln('(2) Pengurangan ');
Matrik writeln('(3) Perkalian ');
Matrik('Pilihan =
write ');readln (pil);
clrscr;
case pil of
1 : begin
isimatrik;
jumlahmatrik(matrikI,matrikII)
; end;
2 : begin
isimatrik
;
kurangmatrik(matrikI,matrikII)
82
; end;
3 : begin
isimatrik
;
kalimatrik(matrikI,matrikII)
; end;
end;
SCREENSHOOT
end.
83
BAB XIX
PEMBAHASAN DAN JAWABAN SOAL-18
2.18 KASUS-18
A.PROBLEM
Buatlah algoritma dan program Pascal yang bisa menampilkan menginput
matriks ukuran N x M dengan perpindahan kursor dari kiri ke kanan , sbb :
INPUT MATRIKS (N x M)
N = ? <enter> M = ? <enter> contoh = 3 dan 5
>> Input :
B.ALGORITMA
PROBLEM :
o Judul:
PROGRA
M
MATRIK
o Input :
INPUT
NILAI N
o Proses :
MENCET
AK
NILAI N
oOutput : TERCETAK NILAI
KAMUS DATA:
o type Bil = ARRAY
o var: atrikI,matrikII : data,baris,kolom,pil : integer;procedure isimatrik
var i,j : integer;
ALGORITMA
writeln('Penentuan ORDO MATRIK 84
I');
write('Masukan banyak baris matrik I = ');readln(baris);
write('Masukan banyak kolom matrik I = ');readln(kolom);
for i:=1 to baris do
begin
gotoxy(j*10,i*5);
readln(matrikI[i,j])
; end;
SOURCE CODE
program matrik;
uses crt;
{Kamus
Data}
type data =
array[1..10,1..
10] of integer;
var matrikI,matrikII : data;
baris,kolom,pil : integer;
procedure isimatrik;
var i,j : integer;
{ALGORITMA}
begin
writeln('Penentuan ORDO MATRIK I');
write('Masukan banyak baris matrik I = ');readln(baris);
write('Masukan banyak kolom matrik I = ');readln(kolom);
for i:=1 to baris do
for j:=1 to kolom do
begin
gotoxy(j*10,i*5);
readln(matrikI[i,j])
;
end; 85
clrscr
;
writel
write('Masukan banyak baris matrik II = ');readln(baris);
write('Masukan banyak kolom matrik II = ');readln(kolom);
for i:=1 to baris do
for j:=1 to kolom do
begin
gotoxy(j*10,i*5);
readln(matrikII[i,j])
; end;
end;
procedure jumlahmatrik(m1,m2 : data);
var hasil : data;
i,j : integer;
begin
for i:=1 to
baris do
for j:=1 to kolom do
begin hasil[i,j]:=m1[i,j]
+m2[i,j]; end;
clrscr;
writeln('Hasil Penjumlahan
MATRIK'); for i:=1 to baris do
for j:=1 to kolom
do begin
gotoxy(j*10,i*5);
write(hasil[i,j]);
end;
end;
86
procedure kurangmatrik(m1,m2 : data);
var hasil : data;
i,j : integer;
begin
for i:=1 to
baris do
for j:=1 to kolom
do begin
hasil[i,j]:=m1[i,j]-
m2[i,j]; end;
clrscr;
writeln('Hasil Penjumlahan
MATRIK'); for i:=1 to baris do
for j:=1 to kolom
do begin
gotoxy(j*10,i*5);
write(hasil[i,j]);
end;
end;
{procedure kalimatrik(m1,m2 : data);}
var hasil : data;
i,j,z : integer;
begin
for i:=1 to
baris do
for j:=1 to kolom
do begin
hasil[i,j]:=0;
lxxxvii
for z:=1 to baris do
hasil[i,j]:=hasil[i,j]+matrikI[i,z]*matrikII[z,j];
end;
clrscr;
writeln('Hasil Penjumlahan MATRIK');
for i:=1 to baris do
for j:=1 to kolom do
begin
gotoxy(j*10,i*5);
write(hasil[i,j]);
end;
end.
begi
nwriteln(' MENU ');
writeln('(1) Penjumlahan Matrik ');
writeln('(2) Pengurangan ');
Matrik writeln('(3) Perkalian ');
Matrik('Pilihan =
write ');readln (pil);
clrscr;
case pil of
1 : begin
isimatrik;
jumlahmatrik(matrikI,matrikII)
; end;
2 : begin
isimatrik
;
kurangmatrik(matrikI,matrikII)
88
; end;
3 : begin
isimatrik
;
kalimatrik(matrikI,matrikII)
; end;
end;
SCREENSHOOT
end.
89
BAB XX
PEMBAHASAN DAN JAWABAN SOAL-19
2.19 KASUS-19
A.PROBLEM
Buatlah algoritma dan program Pascal penjumlahan dan pengurangan dua
matriks (N x M) dengan data otomatis menggunakan ilustrasi berikut :
INPUT UKURAN MATRIKS (N x M) : N = ? <enter> M = ? <enter>
>> Matriks A : Matriks B :
Matriks A + B : Matriks A - B :
B.ALGORITMA
PROBLEM :
o Judul:
PERKALI
AN
MATRIXS
o Input :
INPUT
NILAI
o Proses :
o MENCET
var: m1 :array[1..20, 1..20] of longint; m2 :array[1..20, 1..20] of
longintAK m3 :array[1..20, 1..20] of longint; n :array[1..2] of integer;
NILAI
m :array[1..2] of
oOutput
integer;
: TERCETAK NILAI
KAMUS DATA:
o type Bil = INTEGER 90
ALGORITMA
clrscr;
for k := 1 to 2 do begin;
write('banyak baris matriks ke-', k, ' : ');
readln(m[k]);
write('banyak kolom matriks ke-', k, ' : ');
readln(n[k]);
end;
if (n[1] <> m[2]) then
writeln('tidak bisa dikalikan!')
else begin
writeln('matriks pertama : ');
y := 6;
for i := 1 to m[1] do begin
x := 8;
for j := 1 to n[1] do begin
gotoxy(x,y);
readln(m1[i,j]);
x := x + 8;
end;
91
SOURCE CODE
program perkalian_matriks;
uses crt;
var
m1 :array[1..20, 1..20] of longint;
m2 :array[1..20, 1..20] of longint;
m3 :array[1..20, 1..20] of longint;
n :array[1..2] of integer;
m :array[1..2] of integer;
i, j, x, y, k,L :
integer;
begin
clrscr;
for k := 1 to 2 do begin;
write('banyak baris matriks ke-', k, ' : ');
readln(m[k]);
write('banyak kolom matriks ke-', k, ' : ');
readln(n[k]);
end;
if (n[1] <> m[2]) then
writeln('tidak bisa dikalikan!')
else begin
writeln('matriks pertama : ');
y := 6;
for i := 1 to m[1] do begin
x := 8;
for j := 1 to n[1] do begin
92
gotoxy(x,y);
readln(m1[i,j]);
x := x + 8;
end;
y := y + 1;
end;
end;
writeln('proses perkalian');
y := y + 1;
for i := 1 to m[1] do begin
x := 2;
for j := 1 to n[2] do begin
m3[i,j] := 0;
for l := i to n[1] do
begin; 93
m3[i,j] := m3[i,j] + (m1[i,l] * m2[l,j]);
gotoxy(x,y);
write(m1[i,l], ' . ', m2[l,j]);
if l < n[1] then begin
write(' + ');
end;
x := x + 12;
end;
x := x + 15;
end;
y := y + 1;
end;
y := y + 1;
for i := 1 to m[1] do begin
x := 2;
for j := 1 to n[2] do begin
for l := 1 to n[1] do begin;
gotoxy(x,y);
write(m1[i,l] * m2[l,j]);
if l < n[1] then begin
write(' + ');
end;
x := x + 12;
end;
94
x := x + 15;
end;
y := y + 1;
end;
writeln;
writeln('perkalian matriks : ');
for i := 1 to m[1] do begin
for j := 1 to n[2] do
write(m3[i,j]:8);
writeln;
end;
end;
readln;
end.
SCREENSHOOT
95
BAB XXI
PEMBAHASAN DAN JAWABAN SOAL-20
2.20 KASUS-20
A.PROBLEM
Buatlah algoritma dan program Pascal perkalian dua matriks (N x M)
dengan data otomatis menggunakan ilustrasi berikut
>>INPUT UKURAN MATRIKS-1 (M x R) : M = ? <enter> R = ? <enter>
>>INPUT UKURAN MATRIKS-2 (R x N) : R = otomatis N = ? <enter>
>> Matriks-1 : Matriks -2 :
Matriks A x B : Matriks B x A :
B.ALGORTIMA
PROBLEM :
o Judul:
PERKALI
AN
MATRIXS
o Input :
INPUT
NILAI
o Proses :
o MENCET
var: m1 :array[1..20, 1..20] of longint; m2 :array[1..20, 1..20] of
longintAK m3 :array[1..20, 1..20] of longint; n :array[1..2] of integer;
NILAI
m :array[1..2] of
oOutput : TERCETAK NILAI
integer;
KAMUS DATA:
o type Bil = INTEGER
96
ALGORITMA
clrscr;
for k := 1 to 2 do begin;
write('banyak baris matriks ke-', k, ' : ');
readln(m[k]);
write('banyak kolom matriks ke-', k, ' : ');
readln(n[k]);
end;
if (n[1] <> m[2]) then
writeln('tidak bisa dikalikan!')
else begin
writeln('matriks pertama : ');
y := 6;
for i := 1 to m[1] do begin
x := 8;
for j := 1 to n[1] do begin
gotoxy(x,y);
readln(m1[i,j]);
x := x + 8;
end;
97
SOURCE CODE
program perkalian_matriks;
uses crt;
var
m1
:
arr
ay[
1..
20,
1..
20
]
of
i, j, x, y, k,L :
lon integer;
begingin
t; clrscr;
m2
for k:array[1..20, 1..20] of longint;
:= 1 to 2 do begin;
m3 write('banyak
:array[1..20, baris
1..20]matriks
of longint;
ke-', k, ' : ');
n :array[1..2] of integer;
readln(m[k]);
m :array[1..2] ofkolom
write('banyak integer;
matriks ke-', k, ' : ');
readln(n[k]);
end;
if (n[1] <> m[2]) then
writeln('tidak bisa dikalikan!')
else begin
writeln('matriks pertama : ');
y := 6;
for i := 1 to m[1] do begin
x := 8;
xcvii
i
for j := 1 to n[1] do begin
gotoxy(x,y);
readln(m1[i,j]);
x := x + 8;
end;
y := y + 1;
end;
end;
writeln('proses perkalian');
y := y + 1;
for i := 1 to m[1] do begin
x := 2;
for j := 1 to n[2] do begin
m3[i,j] := 0;
xci
x
for l := i to n[1] do begin;
m3[i,j] := m3[i,j] + (m1[i,l] * m2[l,j]);
gotoxy(x,y);
write(m1[i,l], ' . ', m2[l,j]);
if l < n[1] then begin
write(' + ');
end;
x := x + 12;
end;
x := x + 15;
end;
y := y + 1;
end;
y := y + 1;
for i := 1 to m[1] do begin
x := 2;
for j := 1 to n[2] do begin
for l := 1 to n[1] do begin;
gotoxy(x,y);
write(m1[i,l] * m2[l,j]);
if l < n[1] then begin
write(' + ');
end;
x := x + 12;
c
end;
x := x + 15;
end;
y := y + 1;
end;
writeln;
writeln
('perkal
ian
matriks
: ');
for i := 1 to m[1] do begin
for j := 1 to n[2] do
write(m3[i,j]:8);
writeln;
end;
end;
SCREENSHOOT
re
adln;
end.
10
1
SOAL-3 : KASUS GAME
Buatkan program Pascal yang dapat menebak 4 warna dengan skenario dan
ketentuan berikut :
(1) Mula-mula program akan membuat 4 warna secara berurutan secara
random dan disembunyikan. Misalkan W1. W2, W3, dan W4.
(Warna-warna W mungkin sama mungkin tidak). Warna-warna yang
digunakan 10 warna dikodekan sebagai berikut :
1=Merah, 2= Putih, 3=Hitam,4=kuning, 5=Hijau, 6=Biru, 7=Coklat,
8=Ungu, 9=Pink, 10=cyan
10
2
Ilustrasi : Tampilan awal GAME:
1=Merah, 2= Putih, 3=Hitam, 4=kuning,
5=Hijau, 6=Biru, 7=Coklat, 8=Ungu,
9=Pink, 10=cyan ( misal = 2 3 4 5 )
Tebakan-1 : ? <enter> ? <enter> ? <enter> ? <enter> -
Tebakan-2 : ... ... .. ..
Tebakan-3 : ... ... .. ..
Tebakan-4 : ... ... .. ..
Tebakan-5 : ... ... .. ..
Komentar
Input ke-1 :
1=Merah, 2= Putih, 3=Hitam, 4=kuning,
5=Hijau, 6=Biru, 7=Coklat, 8=Ungu,
9=Pink, 10=cyan ( misal = 2 3 4 5 )
Tebakan-1 : 1<enter> 3 <enter> 6 <enter> 9 <enter> 25 %benar
Tebakan-2 : ... ... .. ..
Tebakan-3 : ... ... .. ..
Tebakan-4 : ... ... .. ..
Tebakan-5 : ... ... .. ..
Komentar
10
3
A.PROBLEM
PROBLEM :
KAMUS DATA:
={‘merah’,’putih’,’hitam’,’kuning’,’hijau’,'
biru','coklat','ungu','pink','cyan');
Type nomor : string;
bilangan : byte;
karakter : char;
Variable :
o score,t1,t2,t3,t4,y,w1,w2,w3,w4 :byte;
o x,ulang :karakter;
o tebak1,tebak2,tebak3,tebak4 :boolean;
ALGORITMA:
BEGIN;
gotoxy(60,2); writeln('1=merah');
gotoxy(60,3); writeln('2=putih');
gotoxy(60,4); writeln('3=hitam');
gotoxy(60,5); writeln('4=kuning');
gotoxy(60,6); writeln('5=hijau');
gotoxy(60,7); writeln('6=biru');
gotoxy(60,8); writeln('7=coklat');
10
4
gotoxy(60,9); writeln('8=ungu');
gotoxy(60,10);writeln('9=pink');
gotoxy(60,11);writeln('10=cyan');
gotoxy(2,15); writeln('tebakan-1:');
gotoxy(2,16); writeln('tebakan-2:');
gotoxy(2,17); writeln('tebakan-3:');
gotoxy(2,18); writeln('tebakan-4:');
gotoxy(2,19); writeln('tebakan-5:');
gotoxy(2,20); writeln('Komentar');
score:=0;
for y:=1 to 4 do
begin
randomize;
w1:=random(10);
w2:=random(10);
w3:=random(10);
w4:=random(10);
nowarna:=warna[
w1];
gotoxy(14,13);w
rite('?');
nowarna:=warna[
w2];
{Input :tebak t1.t2.t3.t4}
gotoxy(19,13);w
{Proses :pengulangan repeat until,traversal,instruksi if
rite('?');
then,randomize}
nowarna:=warna[
{Output w3];
:Persentase benar salah tebakan}
gotoxy(24,13);w
{---KAMUS rite('?');
DATA---}
uses crt;nowarna:=warna[
const w4];gotoxy(29,1
3);write('?');
warna:
end;
array[1..
10] of
SOURCE
string CODE 10
Program Tebak_warna; 5
=('merah'
,'putih',
'hitam','
kuning','
hijau',
'biru','coklat','ungu','pink','cyan');
type nomor = string;
bilangan = byte;
karakter =
char; :nomor;
var nowarna
score,t1,t2,t3,t4,y,w1,w2,w3,w4 :byte;
x,ulang :karakter;
tebak1,tebak2,tebak3,tebak4 :boolean;
{---ALGORITMA---}
begin
repeat
clrscr;
gotoxy(60,2); writeln('1=merah');
gotoxy(60,3); writeln('2=putih');
gotoxy(60,4); writeln('3=hitam');
gotoxy(60,5); writeln('4=kuning');
gotoxy(60,6); writeln('5=hijau');
gotoxy(60,7); writeln('6=biru');
gotoxy(60,8); writeln('7=coklat');
gotoxy(60,9); writeln('8=ungu');
gotoxy(60,10);writeln('9=pink');
gotoxy(60,11);writeln('10=cyan');
gotoxy(2,15); writeln('tebakan-1:');
gotoxy(2,16); writeln('tebakan-2:');
gotoxy(2,17); writeln('tebakan-3:');
gotoxy(2,18); writeln('tebakan-4:');
gotoxy(2,19); writeln('tebakan-5:');
gotoxy(2,20); writeln('Komentar');
score:=0;
for y:=1 to 4 do
begin
randomize;
10
6
w1:=random(10);
w2:=random(10);
w3:=random(10);
w4:=random(10);
nowarna:=warna[
w1];
gotoxy(14,13);w
rite('?');
nowarna:=warna[
w2];
gotoxy(19,13);w
rite('?');
nowarna:=warna[
w3];
gotoxy(24,13);w
rite('?');
nowarna:=warna[w4];gotoxy(29,13);write('?');
end;
gotoxy(14,15);
readln(t1);{//I}
if(t1=w1)then{//P}
begin
gotoxy(34,15
);
score:=score+25;
write('B');
gotoxy(14,
13);
write(w1);
tebak1:=true;
end
else
gotoxy(19,13);
begin
gotoxy(34, cvii
15);
write('S');
tebak1:=false;
end;
write(w2);
tebak2:=true;
end else
begin
gotoxy(37,15);
write('S');
tebak2:=false;
end;
gotoxy(24,15);
readln(t3);
if(t3=w3)then
begin
gotoxy(41,15);
score:=score+25;
write('B');
gotoxy(24,13);
write(w3);
tebak3:=true;
end else
begin
gotoxy(41,15);
write('S');
tebak3:=false;
end;
gotoxy(29,15);
readln(t4);
if(t4=w4)then
begin
gotoxy(45,
15);
score:=score+25;
write('B');
gotoxy(29,13);
write(w4);
cviii
tebak4:=true;
end else
begin
gotoxy(45,1
5);
write('S');
tebak4:=false;
end;
gotoxy(48,15);write('=',score,'%');
{//Percobaan Ke-2}
if(tebak1=false)
then begin
gotoxy(14,16);
readln(t1)
;
if(t1=w1)then
begin
gotoxy(34,16)
;
score:=score+25;
write('B');
gotoxy(14,13);
write(w1);
tebak1:=true;
end
else
begin
gotoxy(34,1
6);
write('S');
tebak1:=false;
end;
end;
if(t2=w2)then
if(tebak2=false)then
cix
begin
gotoxy(19,1
6);
readln(t2);
begin
gotoxy(37,16);
score:=score+25;
write('B');
gotoxy(19,13);
write(w2);
tebak2:=true;
end else
begin
gotoxy(37,16);
write('S');
tebak2:=false;
end;
end;
if(tebak3=false)
then begin
gotoxy(24,1
6);
readln(t3);
if(t3=w3)then
begin
gotoxy(41,16)
;
score:=score+25;
write('B');
gotoxy(24,13);
write(w3);
tebak3:=true;
end
else
begin
gotoxy(41,1
end; 6);
write('S');
cx
tebak3:=false;
end;
if(tebak4=false) then
begin
gotoxy(29,16);
readln(t4);
if(t4=w4)then
begin
gotoxy(45,16);
score:=score+25;
write('B');
gotoxy(29,13);
write(w4);
tebak4:=true;
end else
begin
gotoxy(45,16
);
write('S');
tebak4:=false;
end;
gotoxy(48,16);
write('=',score,'%');
end;
{//Percobaan ke-3}
if(tebak1=false)
then begin
gotoxy(14,17);
readln(t1)
;
if(t1=w1)then
begin
gotoxy(34,17)
;
score:=score+25;
write(w1);
write('B');
cxi
gotoxy(14,13);
tebak1:=true;
end else
begin
gotoxy(34,1
7);
write('S');
tebak1:=false;
end;
end;
if(tebak2=false)t
hen begin
gotoxy(19,1
7);
readln(t2);
if(t2=w2)t
hen begin
gotoxy(37,17)
;
score:=score+25;
write('B');
gotoxy(19,13);
write(w2);
tebak2:=true;
end
else
begin
gotoxy(37,1
7);
write('S');
tebak2:=false;
end;
end;
begin
if(tebak3=false)
cxii
then begin
gotoxy(24,17
);
readln(t3);
gotoxy(41,17);
score:=score+25;
write('B');
gotoxy(24,13);
write(w3);
tebak3:=true;
end else
begin
gotoxy(41,17
);
write('S');
tebak3:=false;
end;
end;
if(t
ebak4=f
alse)
then
begi
n
gotoxy(29,1
7);
readln(t4);
if(t4=w4)then
begin
gotoxy(45,17)
;
score:=score+25;
write('B');
gotoxy(29,13);
write(w4);
tebak4:=true;
end
else
write('=',score,'%');
begin
gotoxy(45,1
cxiii
7);
write('S');
tebak4:=false;
end;
{//Percobaan ke-4}
if(tebak1=false) then
begin
gotoxy(14,18);
readln(t1);
if(t1=w1)then
begin
gotoxy(34,18);
score:=score+25;
write('B');
gotoxy(14,13);
write(w1);
tebak1:=true;
end else
begin
gotoxy(34,18);
write('S');
tebak1:=false;
end;
end;
if(tebak2=false)t
hen begin
gotoxy(19,1
8);
readln(t2);
if(t2=w2)t
hen begin
gotoxy(37,18)
;
score:=score+25;
write('B');
tebak2:=true;
gotoxy(19,13);
cxiv
write(w2);
end else
begin
gotoxy(37,18);
write('S');
tebak2:=false;
end;
end;
if(tebak3=false)
then begin
gotoxy(24,18
);
readln(t3);
if(t3=w3)then
begin
gotoxy(41,18);
score:=score+25;
write('B');
gotoxy(24,13
); write(w3);
tebak3:=true;
end else
begin
gotoxy(41,18
);
write('S');
tebak3:=false;
end;
end;
if(tebak4=false)
then begin
gotoxy(29,18);
readln(t4)
gotoxy(45,18);
;
cxv
if(t4=w4)then
begin
score:=score+25;
write('B');
gotoxy(29,13);
write(w4);
tebak4:=true;
end else
begin
gotoxy(45,18);
write('S');
tebak4:=false;
end;
gotoxy(48,18);
write('=',score,'%');
end;
{//Percobaan ke-5}
if(tebak1=false)
then begin
gotoxy(14,1
9);
readln(t1);
if(t1=w1)then
begin
gotoxy(34,19)
;
score:=score+25;
write('B');
gotoxy(14,13);
write(w1);
tebak1:=true;
end
else
begin
end; gotoxy(34,1
9);
cxvi
write('S');
tebak1:=false;
end;
if(tebak2=false)then
begin
gotoxy(19,19);
readln(t2);
if(t2=w2)then
begin
gotoxy(37,19);
score:=score+25;
write('B');
gotoxy(19,13);
write(w2);
tebak2:=true;
end else
begin
gotoxy(37,19);
write('S');
tebak2:=false;
end;
end;
if(tebak3=false)
then begin
gotoxy(24,19
);
readln(t3);
if(t3=w3)then
begin
gotoxy(41,19);
score:=score+25;
write('B');
gotoxy(24,13);
write(w3);
tebak3:=true;
cxvii
end else
begin
gotoxy(41,19);
write('S');
tebak3:=false;
end;
end;
if(tebak4=false)
then begin
gotoxy(29,1
9);
readln(t4);
if(t4=w4)then
begin
gotoxy(45,19)
;
score:=score+25;
write('B');
gotoxy(29,13);
write(w4);
tebak4:=true;
end
else
begin
gotoxy(45,1
9);
write('S');
tebak4:=false;
end;
gotoxy(48,19);
write('=',score,'%');
end;
if(score=100)t cxviii
hen begin
gotoxy(29,1
4);
writeln('Oke,Anda berhasil menebak semua warna');
begin
gotoxy(29,20); writeln('MAAF TEBAKAN ANDA: GAGAL!!!');
end;
gotoxy(19,20);
writeln(score,'% OK');
gotoxy(19,21);
write('Mau main lagi?(y/t)');
read(ulang);
until(ulang='T')or(ulang='t');
readln;
end.
SCREENSHOOT
119
PENUTUP
Assalamualaikum wr,wb
Dengan selesainya laporan tengah semester dan ujian akhir semester tahun
ajaran 2022, kami ucapkan terima kasih kepada semua pihak yang telah
membatu dalam membuat laporan, terutama kepada bapak dosen yang telah
membatu dan membimbing saya selama mata kuliah belajar, dan kepada orang
tua yang selalu memberi dukungan dan motivasi untuk semangat dan
menjalankan dengan ikhlas.
Saya mengucapkan terima kasih kepada semua orang yang telah membantu
saya dalam menyelesaikan laporan manager tengah semester dan ujian akhir
semester.
Saya sadar bahwa laporan ini masih kurang sempurna karena itu saya
mengharapkan kritik dan saran dari bapak selaku dosen pengampu algoritma,
serta bimbingan yang lebih membangun lagi. Untuk itu juga saya meminta
maaf apabila ada kesalahan kata kata dan pengetikan karena kami masih
dalam tahap pembelajaran.
Laporan ini di buat berdasarkan materi yang telah di terima selama mata kuliah
dilaksanakan.
Wassalamualaikum wr, wb
120
BIODATA
Nama : ADRIANSYAH
Agama : Islam
Golongan darah :B
Status : Mahasiswa
Kewarganegaraan : Imdonesia
Hobby : BERENANG
RIWAYAT PENDIDIKAN
NO PENDIDIKAN LULUSAN
121