Escolar Documentos
Profissional Documentos
Cultura Documentos
Lengkapi kolom Hasil Eksekusi sesuai dengan kode algoritma di kolom Pernyataan (Total Point = 10)
No
Pernyataan
Hasil Eksekusi
K.info
W.next.info
Nil / null
P.info + K.next.info
30
Nama :
-4
NIM :
Kelas :
Ruang :
Page 2 of 6
Soal Bagian II : ESSAY BEBAS
A. ADT (TOTAL POIN = 20)
Terdapat data 100 pelamar kerja pada PT ANGIN RIBUT. Untuk menyimpan data tersebut, akan didefinisikan type data
PELAMAR. Berikut ilustrasi type data PELAMAR :
Nama
PELAMAR
Fulan Fulanah
No Tes
12345
Pendidikan
S1
IPK
3.15
Nilai Tes
a.
90
86
78
Nilai Rata-rata
Buatlah definisi struktur data type PELAMAR (POIN = 5)
84,67
b.
Buatlah function atau procedure (definisi serta implementasi) dengan spesifikasi sebagai berikut :
i) Function untuk membentuk Data Pelamar dari komponen-komponen (5 Point)
Input : Nama, No Tes, Pendidikan, IPK, Nilai Tes Pengetahuan, Nilai Tes Skill, Nilai
Tes Wawancara.
Output : sebuah variabel bertipe PELAMAR
Jawab :
function MakePelamar
(nama:string,notes:integer/string,pendidikan:string,IPK:real,tespeng:integer,tesskill:intege
r, teswwcr:integer) pelamar
Kamus
P : pelamar
Algoritma
P.nama nama
P.notes notes
P.pendidikan pendidikan
P.IPK IPK
P.nilai.tespeng tespeng
P.nilai.tesskill tesskill
P.nilai.teswawancara teswwcr
P.nilai.ratarata 0
P
ii)
iii) Buat sebuah program utama yang di dalamnya terdapat pemanggilan terhadap function dan procedure yang
telah didefinisikan (5 point).
Jawab :
Program TestKerja
Kamus
P : Pelamar
Nama :
NIM :
Kelas :
Ruang :
Page 3 of 6
Nama,no_tes,pddkn : string
IPK, nilaitespeng, nilaitesskill, nilaiteswwcr : integer
Algoritma
Output (masukkan nama pelamar) input (nama)
Output (masukkan nomor tes pelamar) input (no_tes)
Output (masukkan pendidikan pelamar) input (pddkn)
Output (masukkan IPK pelamar) input (IPK)
Output (masukkan nilai tes pengetahuan pelamar) input (nilaitespeng)
Output (masukkan nilai tes skill pelamar) input (nilaitesskill)
Output (masukkan nilai tes wawancara pelamar) input (nilaiteswwcr)
P MakePelamar(nama,notes,pddkn,IPK,nilaitespeng,nilaitesskill,nilaiteswwcr)
SetRataRata(P)
c.
Buat procedure untuk menghapus data seorang pemain, berdasarkan informasi nomor punggung (POIN = 20)
Jawab :
Procedure DelPlayer (input nopunggung:integer,input/output LP:ListPlayer)
{I.S : list TIDAK kosong}
{F.S : pemain dengan nomor punggung sesuai input akan dihapus dari list dan didealokasi}
Kamus
PDel, Prec : address
Found : boolean
Algoritma
{search elemen dengan nopunggung sesuai input}
Prec nil
PDel LP.First
Found false
While (PDel<>Nil) and (not found) do
If (PDel.info.nopunggung = nopunggung) then
Found true
Else
Prec PDel
PDel PDel.next
{PDel = nil or found}
If (found) then
If (PDel= LP.First) then {delete first}
LP.First LP.First.next
Else {delete after}
Nama :
NIM :
Kelas :
Ruang :
Page 4 of 6
Prec.next PDel.next
Dealokasi (PDel)
Else
Output (data yang akan dihapus tidak ditemukan)
d.
Buat function untuk mencari pemain yang paling tinggi badannya. Output berupa nomor punggung pemain yang paling
tinggi. Asumsi List TIDAK kosong. (POIN = 10)
Jawab :
Function SearchMaxTinggi(LP:ListPlayer) integer
Kamus
tempmax : integer
P : address
No_punggung : integer
Algoritma
P LP.First
tempmax 0
While (P <> nil) do
If (tempmax < P.info.tinggi) then
tempmax
P.info.tinggi
No_punggung P.info.nopunggung
P P.next
{P = nil}
No_punggung
Circular list
a.
Buat struktur data (type) untuk kasus tersebut, jika List yang akan digunakan adalah Double-Linked-List (point = 5)
Jawab :
Type ElmtList : <info:integer,
prev:address,
next:address>
address : pointer to ElmtList
Type List : <First:address>
b.
Buat struktur data (type) untuk kasus tersebut, jika List yang akan digunakan adalah Circular-List (point = 5)
Jawab :
Type ElmtList : <info:integer,
next:address>
address : pointer to ElmtList
Type List : <First:address>
c.
Buat procedure untuk menyisipkan sebuah data baru, dengan tetap menjaga keterurutan elemen list. Anda boleh
memilih menggunakan representasi double-linked atau circular, beri keterangan ! (point = 20)
Jawab :
{double-linked}
Nama :
NIM :
Kelas :
Ruang :
Page 5 of 6
If (L.First = nil)then {insert first}
PAlloc.next nil
PAlloc.prev nil
L.First PAlloc
Else {search posisi yang tepat}
P L.First
While (P <> nil) and (angka > P.info) do
P P.next
{P = nil or angka P.info}
If (P <> nil) then {menemukan elemen list dengan P.info angka}
if (P.prev = nil) then
{insert first}
PAlloc.next P
PAlloc.prev nil
L.First PAlloc
Else
{insert before}
P.prev.next PAlloc
PAlloc.prev P.prev
PAlloc.next P
P.prev PAlloc
Else
{kalau berhenti di P = nil, artinya angka yang dimasukkan adalah paling besar dibanding
semua elemen list}
{insert last}
PAlloc.prev P
P.next PAlloc
{circular}
Procedure InsertUrut (input/output L:List,input angka:integer)
Kamus
P,Prec,PAlloc : address
Algoritma
PAlloc Alokasi(angka)
If (PAlloc <> nil) then
If (L.First = nil) then {insert first}
PAlloc.Next PAlloc
L.First PAlloc
Else {search posisi yang tepat}
Prec nil
P L.First
While (P.next <> L.First) and (angka > P.info) do
Prec P
P P.next
{ P.next = L.First) or (angka P.info}
If (Prec = nil) and (angka < P.info) then
{insert first, cari last-nya dulu}
While (P.next <> L.First) do
P P.next
{ P.next = L.First }
PAlloc.next L.First
P.next PAlloc
L.First PAlloc
Else if (P.next = L.First) then
{insert last}
If (angka > P.info) then
PAlloc.next P.next
P.next PAlloc
Else
Else {insert after}
PAlloc.next P
Prec.next PAlloc
First
Nama :
NIM :
List Pegawai
Kelas :
Ruang :
Page 6 of 6
D. MULTI LIST (TOTAL POINT = 35)
Diketahui definisi type multilist dan ilustrasinya sebagai berikut :
type ElmPeg : <NIP: string,
Nama: string,
FirstAnak: adrAnak,
NextPeg: adrPeg>
type ElmAnak : <Nama:string,
NextAnak: adrAnak>
type adrPeg : pointer to ElmPeg
type adrAnak : pointer to ElmAnak
Jawab :
Kamus
PPeg : adrPeg
PAnak : adrAnak
Algoritma
PPeg L
If (PPeg <> nil) then
While (PPeg <> nil) and (PPeg.NIP <> NIPPeg) do
PPeg PPeg.NextPeg
{PPeg = nil or PPeg.NIP = NIPPeg}
If (PPeg <> nil) and (PPeg.NIP = NIPPeg) then
{insert first anak}
PAnak alokasiAnak(NamaAnak)
If (PAnak <> nil) then
PAnak.NextAnak PPeg.FirstAnak
PPeg.FirstAnak PAnak
b. procedure HitungAnak(input L: adrPeg) (poin=15)
{menampilkan jumlah anak setiap pegawai}
{I.S. List pegawai terdefinisi, tidak kosong.
F.S. NIP dan Nama Pegawai beserta jumlah anak yang dimiliki dituliskan ke layar. Jika
pegawai tidak punya anak, tulis jumlah anak = 0}.
Kamus
Jumanak : integer
PAnak : adrAnak
PPeg : adrPeg
Algoritma
PPeg L
While (PPeg <> nil) do
Output (NIP pegawai : ,PPeg.NIP)
Output (Nama pegawai : ,PPeg.Nama)
Jumanak 0
PAnak PPeg.FirstAnak
While (PAnak <> nil) do
Jumanak Jumanak + 1
PAnak PAnak.NextAnak
{PAnak = nil}
Output (jumlah anak pegawai : ,Jumanak)
PPeg PPeg.NextPeg
Nama :
NIM :
Kelas :
Ruang :