Anda di halaman 1dari 2

TUGAS BESAR ALGORITMA PEMROGRAMAN TAHUN 2008/2009

Deliverable : file AP08xx.zip berisi folder sourcecode, folder executable file, dan folder laporan. {xx=nomor
kelompok} Dokumen laporan berisi identitas kelompok, deskripsi soal, ide solusi, dan pembagian tugas.
Mailto : edys@undip.ac.id, ekoas@undip.ac.id paling lambat tanggal 30 Juni 2009.
Demonstrasi tugas dapat dilaksanakan tanggal 29 Juni 2009 – 5 Juli 2009.
Penilaian: 30% kebenaran, 30% efisiensi algoritma, 30% dokumentasi, 10% demonstrasi program.

Instruksi Umum:
Prestasi akademik mahasiswa dinilai berdasarkan Indeks Prestasi (IP). IP dihitung dari akumulasi perkalian
nilai mata kuliah dan sks, dibagi dengan total sks. Nilai mata kuliah yang berupa alfabet dikonversi terlebih
dahulu menjadi angka. A=4, B=3, C=2, D=1, E=0.
Contoh: mahasiswa mendapat nilai A(=4) untuk matakuliah 3 sks dan B(=3) untuk matakuliah 2 sks, total 5
sks, maka IP=((4x3)+(3x2))/(3+2)=3,4.

Kerjakan soal berikut sesuai kelompok Anda. Tambahkan asumsi maupun subrutin lain yang relevan.

SOAL A
Diberikan tipe TabNilai sebagai berikut. Buatlah realisasi bahasa C/Pascal untuk setiap subrutin.
Ilustrasi: T=[‘A’,’B’,’B’,’A’,’E’,’C’,’A’,’D’,’C’,’B’], N=10
Type TabNilai = array [1..100] of character[‘A’,’B’,’C’,’D’,’E’]
Procedure SetTabNilai (input/output T:TabNilai, input N:integer)
{I.S.: tabel nilai T kosong, N berisi banyak elemen yang akan dimasukkan}
{F.S.: tabel nilai T terisi sebanyak N elemen}
{Proses: mengisi tabel T sebanyak N elemen dengan masukan keyboard}
Procedure CariNilai (input T:TabNilai, N:integer, X:character, output PX:integer)
{I.S.: tabel nilai T terisi sebanyak N elemen, X adalah nilai yang akan dicari }
{F.S.: PX berisi Posisi X pada tabel T, PX=0 jika tidak ketemu}
{Proses: mencari posisi kemunculan pertama nilai X di tabel T}
function CacahNilai (T:TabNilai, N:integer, X:character)  integer
{Prekondisi: tabel T berisi N elemen, X adalah nilai yang akan dicacah}
{Deskripsi: menghitung banyaknya kemunculan nilai X di tabel T}
function Konversi (C:character)  integer
{mengembalikan hasil konversi nilai huruf menjadi nilai angka, A4, B3, ..., E0}
function Rataan (T:TabNilai, N:integer, S:integer)  real[0,0...4,0]
{Prekondisi: tabel T berisi N elemen, S adalah beban sks mata kuliah}
{Deskripsi: menghitung rataan nilai matakuliah tabel T}
Procedure Urut (input/output T:TabNilai, input N:integer)
{I.S.: tabel nilai T terisi sebanyak N elemen }
{F.S.: tabel nilai T terurut}
{Proses: mengurutkan elemen tabel dari ‘A’ sampai ‘E’}

SOAL B
Diberikan tipe TabNilai sebagai berikut. Buatlah realisasi bahasa C/Pascal untuk setiap subrutin.
Ilustrasi: T=[<’A’,3>,<’B’,3>,<’B’,4>,<’A’,2>,<’D’,2>,<’C’,3>,<’A’,4>], N=7
Type Info = < nilai: character, sks: integer >
Type TabNilai = array [1..100] of Info {daftar nilai yang diraih seorang mahasiswa}
Procedure SetTabNilai (input/output T:TabNilai, input N:integer)
{I.S.: tabel nilai T kosong, N berisi banyak elemen yang akan dimasukkan}
{F.S.: tabel nilai T terisi sebanyak N elemen}
{Proses: mengisi tabel T sebanyak N elemen dengan masukan keyboard}

1
Function Totalsks (T:TabNilai, N:integer)  integer
{Prekondisi: tabel T berisi N elemen}
{Deskripsi: menghitung total sks matakuliah tabel T}
Procedure HitungIP (T:TabNilai, N:integer)  real[0,0...4,0]
{Prekondisi: tabel T berisi N elemen}
{Deskripsi: menghitung indeks prestasi}
Procedure CariNilai (input T:TabNilai, N:integer, X:character, output PX:integer)
{I.S.: tabel nilai T terisi sebanyak N elemen, X adalah nilai yang akan dicari }
{F.S.: PX berisi Posisi X pada tabel T, PX=0 jika tidak ketemu}
{Proses: mencari posisi kemunculan pertama nilai X di tabel T}
function MataKuliahDiulang (T:TabNilai, N:integer)  integer
{Prekondisi: tabel T berisi N elemen}
{Deskripsi: menghitung banyaknya kemunculan nilai ‘D’ dan ‘E’ di tabel T}
Procedure Urut (input/output T:TabNilai, input N:integer)
{I.S.: tabel nilai T terisi sebanyak N elemen }
{F.S.: tabel nilai T terurut}
{Proses: mengurutkan elemen tabel dari ‘A’ sampai ‘E’}

SOAL C
Diberikan tipe TabNilai sebagai berikut. Buatlah realisasi bahasa C/Pascal untuk setiap subrutin.
Ilustrasi: T=[<”Algoritma Pemrograman”,3,’A’>,<”Matematika II”, 3,’D’>,<”ISBD”,3,’A’>, <”Matematika
Diskrit”,3,’B’>,<”Rangkaian Digital”,3,’B’>,<”Pendidikan Agama”,3,’A’>, <”Pendidikan
Kewarganegaraan”,4,’A’>,<”Olahraga”,0,’C’>], N=8
Type Info = < matakuliah: string, sks: integer, nilai: character >
Type TabNilai = array [1..100] of Info {daftar nilai yang diraih seorang mahasiswa}
Procedure SetTabNilai (input/output T:TabNilai, input N:integer)
{I.S.: tabel nilai T kosong, N berisi banyak elemen yang akan dimasukkan}
{F.S.: tabel nilai T terisi sebanyak N elemen}
{Proses: mengisi tabel T sebanyak N elemen dengan masukan keyboard}
Procedure TambahMataKuliah (input/output T:TabNilai, input N:integer, MKBaru:string,
sks:integer, nilai:character)
{I.S.: T terisi N elemen, MKBaru = nama matakuliah baru, sks = sks matakuliah baru,
nilai = nilai matakuliah baru}
{F.S.: tabel nilai T terisi sebanyak N+1 elemen}
{Proses: menambahkan mata kuliah baru + sks + nilai ke dalam T}
Procedure HitungIP (T:TabNilai, N:integer)  real[0,0...4,0]
{Prekondisi: tabel T berisi N elemen}
{Deskripsi: menghitung indeks prestasi}
Procedure UpdateNilai (input/output T:TabNilai, input N:integer, input MK:string, input
nilaiBaru:character)
{I.S.: tabel T berisi N elemen, MK = nama matakuliah, nilaiBaru untuk mengganti}
{F.S.: jika MK ketemu, maka nilai di-update dengan nilaiBaru }
{Proses: mencari MK dalam T, meng-update komponen nilai dengan nilaiBaru}
Procedure SaveFile (input/output T:TabNilai, input N:integer)
{I.S.: tabel T berisi N elemen }
{F.S.: file “nilaiku.dat” terisi data T}
{Proses: mengisi file “nilaiku.dat” dengan data dari TabNilai T}
Procedure LoadFile (input/output T:TabNilai, input N:integer)
{I.S.: file “nilaiku.dat” berisi data T }
{F.S.: TabNilai T terisi data dari file “nilaiku.dat”}
{Proses: mengisi file “nilaiku.dat” dengan data dari TabNilai T}

Selamat mengerjakan.

Anda mungkin juga menyukai