Anda di halaman 1dari 18

A.

Rangkuman Hasil Belajar Setiap Lembar Praktikum


1. Lembar Praktikum 1
a. Ringkasan
b. Refleksi
2. Lembar Praktikum 2
a. Ringkasan
b. Refleksi
3. Lembar Praktikum 3
a. Ringkasan
Pada Praktikum yang ketiga, kami mempelajari tentang Analisis Kasus,
Perintah Percabangan, Algoritma Tipe 2 dan Algoritma Tipe 3.
A. Analisis Kasus
Pada suatu langkah tertentu dalam menyusun algoritma, kadang tidak dapat
diikuti langsung dengan langkah berikutnya. Hal ini dikarenakan ada sejumlah
langkah pilihan yang harus diputuskan berdasarkan langkah tertentu tersebut.
Analisis dilakukan mengikuti pola single-entry-single-exit, sebagaimana ciri
penrograman terstruktur. Ada 2 pola analisis kasus yang dikenal, yaitu kasus
tunggal (2 alternatif pilihan yang saling komplementer), dan kasus jamak
(lebih dari 2 kasus alternative pilihan). Syarat analisis kasus adalah gabungan
dari seluruh kombinasi syarat yang terjadi dan setiap syarat harus saling lepas
(tidak beririsan). Untuk kasus tunggal, kedua syarat otomatis dipenuhi.
Namun untuk kasus jamak, harus diupayakan. Kedua syarat tersebut
menjamin bahwa tidak akan ada tumpang-tindih syarat da nada kondisi
“berlubang”. Dengan demikian semua nilai ekspresi memperoleh kepastian 1
langkah yang akan diambil.
B. Perintah Percabangan
Kedua perintah percabangan tersebut adalah IF –THEN-[ELSE] ; dan CASE
OF END;. Format perintah penyimpanan :
a. Percabangan Tunggal : IF < Ekspresi Lojik > THEN <P1> [ELSE P2];
b. Percabangan Jamak : CASE < Ekspresi Ordinal > OF

KO 1 : P1;
KO 2; P2;

……; ….;

[ELSE Px]

END;

C. Algoritma Tipe 2 : Persoalan Genap Gasal


Format Algoritma :
Misal A berisi sebuah bilangan bulat positif, akan dikenali apakah A
genap atau bukan. Maka : A mod 2 = 0 atau A div 2 = A/2 atau 2*(A div 2) =
A
Contoh Pemakaian :
If A mod 2 = 0 then K := ‘genap’ else K := ‘gasal’;
Algoritma ini hanya memanfaatkan 3 jenis operasi pembagian yang dikenal
dalam dunia komputer (pembagian biasa); DIV (pembagian dengan hasil
bulat, berapapun pecahan dibuang); dan MOD (sisa hasil bagi bulat).
D. Algoritma Tipe 3 : Persoalan Minimum Maksimum 1 (Tanpa Array)
Untuk mengenali data terbesar dan data terkecil pada sejumlah berhingga
data, algoritma yang dibutuhkan adalah menggunakan analisis kasus secara
berjenjang. Analisis kasus dilakukan di dalam analisis kasus lain, jika
direalisasikan dalam program, maka membutuhkan sarana percabangan
bersarang (nested branching).
Pola Algoritma : Misal ingin ditentukan manakah yang terbesar dari A1,
A2, A3, …, An. Maka bilangan terbesar yang diperoleh akan disimpan di
dalam variabel B.
 B diisi dengan variabel pertama (A1)
 Bandingkan B dengan isi variabel kedua (A2). Jika B ‘kalah besar’
maka B diberi nilai A2. Jika ‘tidak kalah besar’ maka diamkan isi B.
 Bandingkan B dengan isi variabel ketiga (A3). Bandingkan sama
seperti di atas. Lakukan terus sampai terakhir isi B dibandingkan
dengan isi variabel terakhir (An). Lakukan hal yang sama seperti
perbandingan di atas.
 Setelah itu, nilai B dipastikan terbesar di antara A1, A2, …., An.
b. Refleksi
4. Lembar Praktikum 4
a. Ringkasan
b. Refleksi
5. Lembar Praktikum 5
a. Ringkasan
b. Refleksi
6. Lembar Praktikum 6
a. Ringkasan
b. Refleksi
7. Lembar Praktikum 7
a. Ringkasan
b. Refleksi
8. Lembar Praktikum 8
a. Ringkasan
b. Refleksi
9. Lembar Praktikum 9
a. Ringkasan
b. Refleksi
10. Lembar Praktikum 10
a. Ringkasan

b. Refleksi

11. Lembar Praktikum 11


a. Ringkasan
b. Refleksi
B. Pengembangan Tugas Setiap Lembar Praktikum

1. Tugas Lembar Praktikum 1:

a. Salinan Tugas

 Buatlah program Pascal dari soal latihan yang belum anda selesaikan di atas,
lengkap (sudah dikompilasi-dieksekusi- dan hasil benar) !

b. Strategi :

 Variabel : C1 , C2 , K1 , K2, K3
 Konstanta :-
 Tipe yang dibutuhkan : string
 Perintah Pascal : writeln, readln
 Pola Algoritma :-

c. Teks Program Final

program latprak1;
uses crt;
var C1 , C2 , K1 , K2, K3 : string;
begin
clrscr;
writeln('warna celana favorit pertama ',C1); readln(C1);
writeln('warna celana favorit kedua ',C2); readln(C2);
writeln('warna kemeja favorit pertama ',K1); readln(K1);
writeln('warna kemeja favorit kedua ',K2); readln(K2);
writeln('warna kemeja favorit ketiga ',K3); readln(K3);
writeln('Jadi pasangan celana dan kemeja favorit yang pertama
adalah celana ' ,C1, 'dan kemeja' ,K1);
writeln('Jadi pasangan celana dan kemeja favorit yang pertama
adalah celana ' ,C1, 'dan kemeja' ,K2);
writeln('Jadi pasangan celana dan kemeja favorit yang pertama
adalah celana ' ,C1, 'dan kemeja' ,K3);
writeln('Jadi pasangan celana dan kemeja favorit yang pertama
adalah celana ' ,C2, 'dan kemeja' ,K1);
writeln('Jadi pasangan celana dan kemeja favorit yang pertama
adalah celana ' ,C2, 'dan kemeja' ,K2);
writeln('Jadi pasangan celana dan kemeja favorit yang pertama
adalah celana ' ,C2, 'dan kemeja' ,K3);
readln;

end.

d. Ujicoba Program

2. Tugas Lembar Praktikum 2:

a. Salinan Tugas

 Kembangkan sebuah program Pascal yang dapat menghitung jumlahan hingga


suku ke-N sebuah barisan bilangan Aritmetika dengan suku awal A dan beda B.
Nilai A, B, dan B diinputkan oleh pengguna. Lakukan pemformatan thd output !.

b. Strategi :

 Variabel : a, b, n, sn
 Konstanta :-
 Tipe yang dibutuhkan : integer, real
 Perintah Pascal : write, readln, writeln
 Pola Algoritma :-

c. Teks Program Final

program latprak2;
uses crt;
var a, b, n : integer;
sn : real;
begin
clrscr;
write('Masukkan suku pertama (a) = '); readln(a);
write('Masukkan beda (b) = '); readln(b);
write('Masukkan suku ke n = '); readln(n);

sn := (n/2) * ((2*a) + ((n-1)*b));

writeln('Jadi jumlahan suku ke ' ,n, ' adalah ', sn:2:0);


readln;
end.

d. Ujicoba Program

3. Tugas Lembar Praktikum 3:

a. Salinan Tugas

 Dengan memakai pola algoritma tipe 2 di atas, kembangkan sebuah program


Pascal untuk menentukan umur bulan (dalam satuan hari) jika diketahui
kode_bulan dan tahun (keduanya berupa data integer). Keluaran berupa informasi
nama bulan (bukan kode bulan lagi), tahun, dan usia bulan dalam satuan hari.

b. Strategi :

 Variabel : BL, TH
 Konstanta :-
 Tipe yang dibutuhkan : integer
 Perintah Pascal : write, readln, case of
 Pola Algoritma : if, mod

c. Teks Program Final

program latprak3;
uses crt;
var BL, TH : integer;
begin
clrscr;
write('Masukkan kode bulan '); readln(BL);
write('Masukkan kode tahun '); readln(TH);
case BL of
1 : write('Januari ',TH,' : 31 hari');
2 : if TH mod 4=0 then
begin
writeln('Februari ',TH,' : 29 hari');
end
else
begin
write('Februari ',TH,' : 28 hari');
end;
3 : write('Maret ',TH,' : 31 hari');
4 : write('April ',TH,' : 30 hari');
5 : write('Mei ',TH,' : 31 hari');
6 : write('Juni ',TH,' : 30 hari');
7 : write('Juli ',TH,' : 31 hari');
8 : write('Agustus ',TH,' : 31 hari');
9 : write('September ',TH,' : 30 hari');
10: write('Oktober ',TH,' : 31 hari');
11: write('November ',TH,' : 30 hari');
12: write('Desember ',TH,' : 31 hari');
end;
readln;
end.

d. Ujicoba Program

4. Tugas Lembar Praktikum 5:

a. Salinan Tugas

 Buat sebuah program Pascal untuk menghitung jumlah hari dari awal tahun T1
sampai dengan akhir tahun T2. T1 dan T2 sebarang bilangan bulat positif, masing-
masing mewakili tahun. Cotnh: andai T1 = 2019 dan T2 = 2020, maka program
akan menghitung dan menampilkan jumlah hari yang dimaksud adalah: 731
(bilangan tsb diperoleh dari usia tahun 2019 yaitu 365 ditambah dengan usia tahun
2020 yaitu 366).

b. Strategi :

 Variabel : JH, T1, T2, a, k


 Konstanta :-
 Tipe yang dibutuhkan : integer
 Perintah Pascal : write, readln, writeln, for to do
 Pola Algoritma : if, mod

c. Teks Program Final

program latprak5;
uses crt;
var JH, T1, T2, a, k: integer;
begin
clrscr;
JH := 0;
write('Masukkan tahun yang pertama ',T1); readln(T1);
write('Masukkan tahun yang kedua ',T2); readln(T2);
For a := T1 to T2 do
begin
if a mod 4 = 0 then k:= 366 else k := 365;
JH := JH + k;
end;
Writeln('Jadi jumlah hari dari kedua tahun tersebut adalah ',JH);
readln;
end.

d. Ujicoba Program

5. Tugas Lembar Praktikum 6:


a. Salinan Tugas
 Buat sebuah program Pascal untuk melakukan validasi terhadap data TG-BL-TH
(ketiganya bertipe integer) merupakan data valid dari tanggal (TG) bulan (BL) dan
tahun (TH) !.

b. Strategi :

 Variabel : B, T, TH, UH
 Konstanta :-
 Tipe yang dibutuhkan : integer
 Perintah Pascal : write, readln, writeln, repeat until
 Pola Algoritma : case of, if, mod
b. Teks Program Final

Program latprak6;

uses crt;

var B,T,TH,UH: INTEGER;

begin

clrscr;

REPEAT

write('TANGGAL: ');Readln(T);

write('BULAN: ');Readln(B);

write('TAHUN: ');Readln(TH);

CASE B OF

1,3,5,7,8,10,12: UH := 31;

2 : IF TH MOD 4=0 THEN UH :=29 ELSE UH:= 28;

4,6,9,11:UH:=30;

END;

UNTIL ((T<=UH) and (T>0) and (B>0) AND (B<=12) AND


(TH>=1));

WRITELN ('TRUE');
end.

d. Ujicoba Program

6. Tugas Lembar Praktikum 8:


a. Salinan Tugas
 Buat sebuah program Pascal yang melibatkan: fungsi untuk menilai benar atau
salah terhadap 3 integer positif TG-BL-TH, merupakan tanggal-bulan-tahun yang
benar; dan sebuah prosedur untuk mengirim balik TG2-BL2-TH2 yang merupakan
tanggalbulan-tahun yang valid dan bermakna sebagai 1 hari sesudah TG1-BL1-
TH1.

b. Strategi :

 Variabel : tgl, bln, thn, tgl2, bln2, thn2, ub, K, L, M


 Konstanta :-
 Tipe yang dibutuhkan : integer, Boolean,
 Perintah Pascal : write, writeln, readln, case of,
 Pola Algoritma : function, procedure, if, mod

c. Teks Program Final

program latprak8;
uses crt;
var tgl, bln, thn, tgl2, bln2, thn2 : integer;
function valid (K, L, M:integer): boolean;
var ub : integer;
begin
case bln of
1,3,5,7,8,10,12: ub:=31;
4,6,9,11: ub:= 30;
2: if M mod 4 = 0 then ub := 29 else ub:= 28;
end;
valid := (K>0) and (K<=ub) and (L>0) and (L<13) and (M>0);
end;
procedure tambah (tgl1, bln1, thn1 : integer; var tgl2, bln2, thn2:
integer);
var ub: integer;
begin
case bln of
1,3,5,7,8,10,12: ub:=31;
4,6,9,11: ub:= 30;
2: if thn1 mod 4 = 0 then ub := 29 else ub:= 28;
end;
if tgl1 = ub then
begin
tgl2:=1; bln2:=bln1+1; thn2:=thn1;
begin
bln2:=1; thn2:=thn1+1;
end;
end
else
begin
tgl2:= tgl1+1; bln2:=bln1; thn2:=thn1;
end;
end;
begin
clrscr;
write(' Masukkan tanggal : '); readln(tgl);
write(' Masukkan bulan : '); readln(bln);
write(' Masukkan tahun : '); readln(thn);
if valid (tgl, bln, thn) then
begin
writeln('Valid');
tambah (tgl, bln, thn, tgl2, bln2, thn2);
writeln('Satu hari setelah tanggal tersebut adalah: ',tgl2, ' - '
,bln2, ' - ' ,thn2);
end
else
begin
writeln('Tidak Valid');
end;
readln;
end.

d. Ujicoba Program

7. Tugas Lembar Praktikum 9:


a. Salinan Tugas
 Susunlah program Pascal yang merealisasikan fungsi berikut, secara rekursif
(bukan iterative) function JumlahUsiaTahun (T:integer): integer;
{Menerima integer positip T yang menyatakan tahun setelah tahun 1900}
{Menghasilkan jumlah hari sejak awal tahun sejak 1900 sampai dengan akhir tahun
T}

b. Strategi :

 Variabel : thn, UHAR


 Konstanta :-
 Tipe yang dibutuhkan : integer, longint
 Perintah Pascal : write, writeln, readln
 Pola Algoritma : function, if, mod

c. Teks Program Final

program latprak9;
uses crt;
var thn : longint;
function jumlah (thn: integer): longint;
var UHAR: integer;
begin
if thn mod 4 = 0 then UHAR := 366 else UHAR := 365;
if thn = 1900 then jumlah :=366 else jumlah := jumlah(thn-1)+UHAR;
end;
begin
clrscr;
write('Masukkan tahun: '); readln(thn);
writeln('Maka jumlah hari sejak tahun 1900 adalah ',jumlah(thn));
readln;
end.

d. Ujicoba Program

8. Tugas Lembar Praktikum 10:

a. Salinan Tugas

 Susun program Pascal untuk menampilkan transpose sebuah matriks !.

b. Strategi :

 Variabel : tabel, I, J, K
 Konstanta :-
 Tipe yang dibutuhkan : integer, byte
 Perintah Pascal : write, writeln, readln, for to do
 Pola Algoritma : array,

c. Teks Program Final

program latprak10;
uses crt;
var tabel : array[1..2, 1..2] of integer;
I, J, K: byte;
begin
clrscr;
for i := 1 to 2 do
for j := 1 to 2 do
begin
write('Masukkan elemen ', i,',', j, ' : ');
readln(Tabel[i,j]);
end;
clrscr;
for j := 1 to 2 do
begin
for k := 1 to 2 do
write(Tabel[J,K]:5);
writeln;
end;
writeln('Transpose matriks tersebut : ');
for j := 1 to 2 do
begin
for k := 1 to 2 do
write(Tabel[k,j]:5);
writeln;
end;
end.

d. Ujicoba Program

9. Tugas Lembar Praktikum 11:

a. Salinan Tugas

 Susun program Pascal yang membaca sejumlah berhingga nim dan nama
mahasiswa. Selanjutnya, tampilkanlah input tersebut (nim dan nama) dalam
bentuk tabel urut menurut nim !.

b. Strategi :

 Variabel : NIM, Nama, P, Q, R, x, y


 Konstanta :-
 Tipe yang dibutuhkan : longint, string,
 Perintah Pascal : write, writeln, readln, for to do
 Pola Algoritma : array,

c. Teks Program Final

program latprak11;
uses crt;
var
NIM : array[1..150] of longint;
Nama : array[1..150] of string;
P,Q,R, x: longint;
y: string;
begin
clrscr;
write('Masukkan jumlah mahasiswa :'); readln(P);

for Q:= 1 to P do
begin
write('Masukkan NIM Mahasiswa: '); readln(NIM[Q]);
write('Masukkan Nama Mahasiswa: '); readln(Nama[Q]);
end;

for Q:= 1 to (P-1) do


for R:= (Q+1) to P do
if NIM[Q] > NIM[R] then
begin
x:=NIM[Q];
NIM[Q]:=NIM[R];
NIM[R]:= x;
y:= Nama[Q];
Nama[Q]:=Nama[R];
Nama[R]:= y;
end;
clrscr;
writeln(' Tabel : ');
writeln;
writeln(' NIM Nama Mahasiswa');
for Q:=1 to P do
writeln(' ',NIM[Q],' ',Nama[Q]);
readln;
end.

d. Ujicoba Program
C. Pengembangan Tugas Akhir
Tugas Akhir :
a. Salinan Tugas
 lalala

b. Strategi :

 Variabel : NT, KT, JS, JGM, JGK, AG, Q, R, k, l, gol1, gol2,


x, z, a, b, y
 Konstanta : 10
 Tipe yang dibutuhkan : string, integer
 Perintah Pascal : write, writeln, readln, for to do
 Pola Algoritma : array, if,

c. Teks Program Final

program tugasakhir;
uses crt;
const n = 10;
var NT : array[1..10] of string;
KT, JS, JGM, JGK, AG :array[1..10] of integer;
Q,R,k,l,gol1,gol2,x,z,a,b: integer;
y : string;

begin
clrscr;
for Q:= 1 to 10 do
begin
write('Nama Kesebelasan ',Q,' '); readln(NT[Q]);
KT[Q] := Q;
end;

clrscr;
for Q := 1 to n do
begin
write('Kode Kesebelasan 1 '); readln(k);
write('Kode kesebelasan 2 '); readln(l);

write('Hasil Goal 1:'); readln(Gol1);


write('Hasil Goal 2:'); readln(Gol2);

JGM[k] := JGM[k] +Gol1; JGK[k]:=JGK[k] + Gol2;


JGM[l] := JGM[l] +Gol2; JGK[l]:=JGK[l] + Gol1;

if Gol1>Gol2 then JS[k] := JS[k]+2 else if Gol1<Gol2 then


JS[l]:=JS[l]+2
else
begin
JS[k]:=JS[k]+1; JS[l]:=JS[l]+1;
end;
end;

for Q:=1 to 10 do
AG[Q]:= JGM[Q]-JGK[Q];

for Q:=1 to 9 do
for R:= (Q+1) to 10 do
if JS[Q] < JS[R] then
begin
x:=JS[Q]; JS[Q]:=JS[R]; JS[R]:=x;
y:=NT[Q]; NT[Q]:=NT[R]; NT[R]:=y;
z:=JGM[Q]; JGM[Q]:=JGM[R]; JGM[R]:=z;
a:=JGK[Q]; JGK[Q]:=JGK[R]; JGK[R]:=a;
b:=AG[Q]; AG[Q]:=AG[R]; AG[R]:=b;
end;

for Q:=1 to 9 do
for R:=(Q+1) to 10 do
if(JS[Q]=JS[R]) and (AG[Q]<AG[R]) then
begin
x:=JS[Q]; JS[Q]:=JS[R]; JS[R]:=x;
y:=NT[Q]; NT[Q]:=NT[R]; NT[R]:=y;
z:=JGM[Q]; JGM[Q]:=JGM[R]; JGM[R]:=z;
a:=JGK[Q]; JGK[Q]:=JGK[R]; JGK[R]:=a;
b:=AG[Q]; AG[Q]:=AG[R]; AG[R]:=b;
end;

clrscr;
for Q:=1 to 10 do
writeln(NT[Q],' ',JS[Q],' ',JGM[Q],' ',JGK[Q],' ',AG[Q]);

readln;
end.

end.

d. Ujicoba Program

Anda mungkin juga menyukai