Anda di halaman 1dari 8

Ujian Akhir Semester

KUG1C3 (DASAR ALGORITMA DAN PEMROGRAMAN)


Semester Genap Tahun Akademik 2015/2016
Selasa, 24 Mei 2016 (125 menit)
Tim Dosen: DNH, DQU, FSV, PEY, RMB, RSM, SFY, SSD, SYM, UNW, YRM
Ujian ini bersifat tutup buku. Kerjakan Sendiri dengan Baik , Teliti, dan Rapi. Gunakan Pensil.
= Mulailah dengan berdoa =
Kerjakan soal langsung pada kertas ujian ini. Tidak disediakan kertas tambahan. Untuk
perhitungan, gunakan bagian yang kosong di lembar nomor soal yang bersangkutan, tidak pindah
ke lembar kertas nomor lain.
Nama Mahasiswa: NIM: Kls: Ruang: Nilai (oleh dosen)

Salinlah pernyataan berikut: Tanda Tangan Mahasiswa:


Saya tidak melakukan kecurangan dalam ujian ini. Jika saya
melakukan pelanggaran, maka saya bersedia diberi nilai E untuk
semua Mata Kuliah pada Semester ini
.............................................................................................................................. ......................................................
.............................................................................................................................
..............................................................................................................................

SOAL 1: ARRAY (Nilai 25)


Kompetensi: mahasiswa mampu menulis algoritma untuk mengisi, memproses, dan mencetak isi array.

Diberikan data nilai matakuliah KUG1C3 kelas IF39xx sebagai berikut.


Project Mid Exam Fin Exam Weighted
NIM Nama
(30%) (35%) (35%) score
113xxx Mhs_1 76 78 67 ?
113yyy Mhs_2 79 81 78 ?
⁞ ⁞ ⁞ ⁞ ⁞ ⁞
113zzz Mhs_n 81 75 79 ?

Bobot untuk masing-masing komponen nilai project, mid exam, dan final exam berturut-turut adalah 0.3,
0.35, dan 0.35. Perlu dihitung perolehan nilai masing-masing mahasiswa (weighted score).
Tuliskan algoritma untuk melakukan pengisian data mahasiswa beserta nilai-nilainya, dan
penghitungannya sesuai penjelasan di atas. Berikut adalah procedure dan function yang harus Anda
selesaikan.
1. Procedure IsiData(output Mhs: tMhs, nMhs: integer)
2. Procedure HitungWScore(I/O Mhs: tMhs, input nMhs: integer)
3. Tampilkan nilai weighted score masing-masing mahasiswa.

Program HitungNilai
Kamus
Constant N: integer = 60
Type dMhs: < nim, nama : string
Project, Mid, Fin, WScore: real
>
Type tMhs: array[1..N] of dMhs
{Deklarasikan varibel yang diperlukan di bawah ini!}

Procedure IsiData(output Mhs: tMhs, nMhs: integer)


Procedure HitungWScore(I/O Mhs: tMhs, input nMhs: integer)

Halaman 1 dari 7
Nama: …………………………….................... NIM: …………………….......

Algoritma
{Panggil prosedur untuk mengisi data dan menghitung weighted score setiap mahasiswa}

{Tampilkan weighted score setiap mahasiswa}

Procedure IsiData(output Mhs: tMhs, nMhs: integer)


{I.S. Belum terdefinisi data mahasiswa
F.S. Terdefinisi tabel nilai mahasiswa yang terdiri atas: nim, nama, nilai project, mid exam, dan final
exam }

Kamus lokal

Algoritma

Procedure HitungWScore(I/O Mhs: tMhs, input nMhs: integer)


{I.S. Tabel nilai mahasiswa terdefinisi
F.S. Atribut weighted score pada tabel nilai mahasiswa telah terhitung. }

Kamus lokal

Algoritma

Halaman 2 dari 8
Nama: …………………………….................... NIM: …………………….......

SOAL 2: SEARCH (Nilai 30)


Kompetensi: mahasiswa mampu mengimplementasi algoritma search dengan tepat.

Sebuah perpustakaan umum menyediakan loker sebagai tempat penitipan barang bagi para
pengunjungnya. Loker tersebut bisa dipinjam dengan syarat pengunjung memiliki kartu anggota
perpustakaan. Loker tersebut memiliki 100 slot dengan nomor 1 s.d. 100. Untuk memudahkan
pengelolaan, pihak manajemen perpustakaan bermaksud untuk mengkomputerisasi sistem peminjaman
loker yang selama ini masih bersifat manual. Sebagai programmer yang ditugaskan untuk membangun
sistem tersebut, tugas Anda adalah:
a. Buat prosedur RESET_ALL yang akan diaktifkan pada saat perpustakaan mulai dibuka; semua
loker dikosongkan!
b. Buat fungsi FIND_EMPTY untuk mencari loker yang kosong!
c. Buat prosedur USE_LOKER untuk mencatatkan nomor anggota perpustakaan yang melakukan
peminjaman pada loker yang bersesuaian!
d. Buat prosedur RESET_LOKER untuk mengosongkan satu loker tertentu!

Program SistemPeminjamanLoker
Kamus
constant nMax: integer = 100
Type TabelLoker: array [1..nMax] of string
TabLoker: TabelLoker
exit: boolean
menu, noLoker: integer
noAnggota: String
Procedure RESET_ALL (input T: TabelLoker)
Function FIND_EMPTY (T: TabelLoker, nMax: integer)  integer
Procedure USE_LOKER (input/output T: TabelLoker, input noAnggota: String, input
noLoker: integer)
Procedure RESET_LOKER (input/output T: TabelLoker, input noLoker: integer)
Algoritma
{Memanggil prosedur RESET_ALL}
RESET_ALL
exit  FALSE
while NOT exit do
output (‘1. Peminjaman Loker’)
output(‘2. Pengembalian Loker’)
output(‘3. Keluar’)
input (menu)
case (menu) of
1: {Memanggil fungsi FIND_EMPTY,
return value disimpan di variabel noLoker}
noLoker  FIND_EMPTY (TabLoker)
if noLoker = 0 then
output (‘Loker penuh’)
else
input(noAnggota)
{Memanggil prosedur USE_LOKER}
USE_LOKER (TabLoker, nUsed, noAnggota, noLoker)
2: input(noLoker)
{Memanggil prosedur RESET_LOKER}
RESET_LOKER (TabLoker, noLoker)
else
exit  TRUE

Halaman 3 dari 8
Nama: …………………………….................... NIM: …………………….......

Procedure RESET_ALL (inout/output T: TabelLoker)


{IS: sembarang
FS: terdefinisi semua loker kosong}
Kamus

Algoritma

Function FIND_EMPTY (T: TabelLoker, nMax: integer)  integer


{Mencari loker yang kosong; RETURN nomor loker kosong yang ditemukan pertama kali;
jika tidak ada loker yang kosong, RETURN 0}
Kamus

Algoritma

Halaman 4 dari 8
Nama: …………………………….................... NIM: …………………….......

Procedure USE_LOKER (input/output T: TabelLoker, input noAnggota: String, input


noLoker: integer)
{IS: Loker tidak penuh. Terdefinisi nomor anggota yang akan meminjam dan nomor loker
yang akan dipinjam.
FS: Nomor anggota terekam pada loker yang bersesuaian}
Kamus

Algoritma

Procedure RESET_LOKER (input/outputT: TabelLoker, input noLoker: integer)


{IS: Terdefinisi nomor loker yang akan dikosongkan.
FS: Terdefinisi sebuah loker dengan nomor noLoker kosong}
Kamus

Algoritma

SOAL 3 [20]: SORTING (Nilai 20)


Kompetensi: mahasiswa mampu mengidentifikasi perubahan nilai variable pada program

Perhatikan algoritma di bawah ini


Program Tracing
Kamus
Tab : array [1..10] of integer
i,j,x : integer
Algoritma
Tab[1]  4; Tab[2]  6
Tab[3]  7; Tab[4]  1
Tab[5]  9; Tab[6]  0
Tab[7]  3; Tab[8]  8
Tab[9]  2; Tab[10]  5

for i  2 to 10 do
x  Tab[i]
j  i - 1
while j > 0 and Tab[j] < x do
Tab[j+1]  Tab[j]
j  j - 1
Tab[j+1]  x

Halaman 5 dari 8
Nama: …………………………….................... NIM: …………………….......

Tulislah isi Array Tab, ketika nilai i =6 dan nilai j tepat sebelum berubah menjadi 1.

SOAL 4: SORTING / MERGING ARRAY (nilai 25)


Kompetensi: Mahasiswa dapat mengimplementasikan algoritma sorting dan membuat algoritma
merging 2 array terurut.

1. Terdapat dua buah array yang berisi bilangan bilangan integer positif dan negative. Banyaknya
data pada kedua array tersebut bervariasi dan isi datanya masih belum terurut. Dari kedua array
itu akan dilakukan beberapa proses sebagai berikut:
a. Buatlah algoritma untuk mengurutkan array diatas secara descending menggunakan metode
Insertion Sort.
Procedure Selection Sort (input/output ArrayReal: array of real)
Kamus local:

Algoritma:

Halaman 6 dari 8
Nama: …………………………….................... NIM: …………………….......

b. Dari kedua array yang telah diurutkan, buatlah procedure untuk mencari elemen-elemen yang
sama di kedua tabel dan menempatkannya di array ke-3.
Contoh:
Array1 dan array2 setelah diurutkan:

Procedure Irisan_Array (input array1, array2: array of real, output array3)


Kamus local:

Algoritma:

Halaman 7 dari 8
Nama: …………………………….................... NIM: …………………….......

SOAL 5: MESIN KARAKTER (nilai 25)


Kompetensi: Mahasiswa mampu membuat algoritma pemrosesan teks pada.

Buat program untuk membaca sebuah pita mesin karakter, mendapatkan kata pertama dan terakhir dan
mengecek apakah kedua kata tersebut sama atau tidak.

Program KataPertama
Kamus
Constant Mark : character = ‘.’
Constant Blank : character = ‘ ’

Procedure START {terdefinisi, tidak perlu dibuat}


{Mesin siap dioperasikan. Pita disiapkan untuk dibaca. Karakter pertama yang ada pada pita
posisinya adalah pada jendela
I.S. : Sembarang
F.S. : CC adalah karakter pertama pada pita}

Procedure ADV {terdefinisi, tidak perlu dibuat}


{Pita dimajukan satu karakter
I.S. : karakter pada jendela = CC, CC ≠ ‘.’
F.S. : CC adalah karakter berikutnya dari CC yang lama, mungkin Mark}

Procedure ignoreBlank {terdefinisi, tidak perlu dibuat, lihat di bawah}


{I.S. CC adalah sembarang
F.S. CC ≠ blank, mungkin CC = Mark }
Algoritma

Halaman 8 dari 8

Anda mungkin juga menyukai