Anda di halaman 1dari 14

UTS KU1072/Pengenalan Teknologi Informasi B

Tanggal: 5 April 2014


Halaman 1 dari 14

Sem. 2 2013/2014

RUBRIK PENILAIAN
UJIAN TENGAH SEMESTER
KU1072/PENGENALAN TEKNOLOGI INFORMASI B
SEM. 2 2013/2014
HARI, TANGGAL : SABTU, 5 APRIL 2014
SIFAT UJIAN

: INDIVIDUAL DAN CLOSED BOOK

DURASI

: 120 MENIT

BAHASA

: C++

FAK./SEK.

: FTI, FTTM, FITB, FMIPA, SAPPK

PETUNJUK PENGGUNAAN RUBRIK:


1.

2.

3.
4.

5.

Dalam dokumen ini, terdapat 4 soal yang masing-masing memiliki komponen sebagai berikut:
a. Deskripsi Soal
b. Jawaban/alternatif jawaban setiap soal (bisa terintegrasi dengan soal, dalam bentuk teks warna merah)
c. Cara Penilaian
d. Rubrik Penilaian
Tata cara penilaian untuk tiap soal/bagian soal dapat dilihat pada bagian Cara Penilaian. Nilai setiap soal/bagian
soal ditentukan oleh tabel Rubrik Penilaian berdasarkan suatu kriteria tertentu.
Tabel Rubrik Penilaian terdiri atas 3 buah kolom yaitu:
- Indeks : indeks kategori kompetensi mahasiswa, dinyatakan dalam bentuk kumpulan huruf, yang merupakan
perkiraan dari range E (terendah) s.d. A (tertinggi). Ini merupakan versi huruf dari Nilai.
- Nilai : nilai skala 0 s.d. 4 pengganti setiap indeks. Ini merupakan instrumen penilaian utama.
- Deskripsi : deskripsi kriteria yang harus dicapai untuk memperoleh indeks/nilai terkait. Hal ini terkait dengan
kompetensi, kemampuan, atau hal lain yang harus dicapai oleh mahasiswa pada
Cara penilaian dengan menggunakan tabel Rubrik Penilaian adalah sbb:
- Dosen memeriksa pekerjaan mahasiswa pada soal/bagian soal terlebih dahulu dan memberikan tanda pada
semua kesalahan yang terjadi (seperti cara mengoreksi biasa).
- Cocokkan hasil pemeriksaan terhadap jawaban pada soal/bagian soal yang bersangkutan dengan kolom
Deskripsi pada tabel Rubrik Mahasiswa, cari deskripsi yang paling tepat mengambarkan hasil pekerjaan
mahasiswa.
- Berikan nilai skala 0 s.d. 4 yang sesuai dengan Deskripsi yang cocok dengan hasil pekerjaan mahasiswa. Nilai
ini bisa dikonversi menjadi E s.d. A, tetapi untuk mendapatkan nilai akhir tetap menggunakan nilai angka.
Nilai setiap soal/bagian soal adalah dalam skala 0 s.d. 4.
Setelah semua soal diberikan nilai, maka diberikan nilai akhir dengan cara mengalikan setiap nilai soal/bagian soal
setiap nilai dengan bobot masing-masing, yaitu:
a. Soal 1 : 25%
b. Soal 2 : 25%
c. Soal 3 : 25% dengan rincian: soal 3.a. : 12.5% dan soal 3.b. : 12.5%
d. Soal 4 : 25% dengan rincian: soal 4.a. : 12.5% dan soal 4.b. : 12.5%
Dosen penilai dipersilakan memberikan kebijakan-kebijakan yang diperlukan dalam proses penilaian, jika
dirasakan perlu dilakukan penyesuaian Rubrik Penilaian untuk kasus-kasus tertentu demi memberikan penilaian
yang seadil-adilnya kepada seluruh mahasiswa.

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 2 dari 14

Sem. 2 2013/2014

Soal 1. Jawaban singkat [Bobot : 25%]


DESKRIPSI SOAL
Jelaskan maksud instruksi-instruksi dalam bahasa C++ di bawah ini. Instruksi ini bisa muncul di bagian mana pun dari
suatu program.
Contoh soal:
No. Instruksi
1.a. int i;
Contoh cara menjawab:
1.a. Instruksi untuk mendeklarasikan variabel dengan nama i yang ber-type integer.
Berikut adalah instruksi-instruksi yang harus dijelaskan:
No. Instruksi
1.a. const char X = 'E';
1.b. int T[50];
1.c. if((A>=10)||(A<=4))
1.d.
1.e.

cout << A;
void Tukar_Nilai (float *A, float *B);
i = 0;
while (i != 5) {
cout<<i<<endl;
i = i + 1;
}

Tuliskan penjelasan instruksi-instruksi di atas di bagian kosong di bawah ini dan di halaman kosong sebaliknya
(jika perlu).

ALTERNATIF JAWABAN
No.
1.a.
1.b.
1.c.

1.d.

1.e.

Instruksi
Instruksi untuk mendeklarasikan sebuah konstanta bernama X yang ber-type char
(character) yang mempunyai harga E.
Instruksi untuk mendeklarasikan sebuah variabel bernama T sebagai sebuah array
dengan elemen ber-type integer dengan ukuran 50 buah elemen, indeks dari 0 s.d. 49.
Instruksi kondisional (analisis kasus) dengan kasus yaitu apakah A (sebuah variabel
ber-type numerik, misalnya integer) bernilai lebih dari atau sama dengan 10 atau
kurang dari atau sama dengan 4. Jika ya, dituliskan ke layar nilai A melalui
perintah cout << A. Jika tidak, tidak dilakukan apa-apa.
Instruksi untuk mendeklarasikan sebuah prosedur dengan nama Tukar_Nilai yang
memiliki dua buah parameter yaitu parameter A dan B yang bertype float (bilangan
riil). Parameter A dan B sama-sama merupakan parameter yang memungkinkan untuk
input sekaligus output karena di-pass sebagai reference.
Instruksi pengulangan dengan memanfaatkan while. Pengendali pengulangan adalah
variabel i (bertype integer) yang diinisialisasi dengan nilai 0 melalui instruksi i
= 0. Dengan while, sebelum masuk ke badan pengulangan, kondisi pengulangan
diperiksa dahulu yaitu dalam hal ini perintah i != 0 (apakah i tidak sama dengan
0). Jika iya, baru masuk ke badan pengulangan. Badan pengulangan berisi perintah 1)
menuliskan isi variabel i ke layar (perintah cout<<i<<endl) dan 2) meng-increment
atau menambah 1 nilai variabel i (perintah i = i + 1). Setelah itu kembali ke awal
pengulangan while dengan memeriksa kondisi pengulangan. Pengulangan dihentikan
setelah nilai setelah perintah i = i + 1 menyebabkan nilai i menjadi = 5.
Dalam instruksi ini, badan pengulangan dieksekusi sebanyak 5 kali berdasarkan
pemeriksaan terhadap nilai i, yaitu dari i=0 s.d. i=4. Dengan demikian, di layar
akan tertulis:
0
1
2
3
4

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 3 dari 14

Sem. 2 2013/2014

CARA PENILAIAN
1.

Berikan penilaian untuk setiap butir soal 1.a s.d. 1.e di atas. Jawaban untuk setiap butir soal tidak harus persis
sama, tetapi benar. Setiap butir soal dinilai sebagai berikut:
Nilai
Deskripsi
2
Jawaban benar (boleh kurang sedikit, tapi jawaban seluruhnya benar/tidak ada kesalahan)
1
Jawaban masih ada kesalahan, tapi mengarah pada jawaban yang benar
0
Mengerjakan, tapi salah total, atau tidak mengerjakan
Catatan:
Dosen dipersilakan memberikan nilai pertengahan, misalnya 0.5 atau 1.5 jika memang dirasa diperlukan.

2.

Jumlahkan/total nilai semua butir soal di atas untuk mendapatkan Nilai Total. Nilai Total maksimum = 10; Nilai
Total minimum = 0.

3.

Cocokkan Nilai Total dengan deskripsi kriteria Rubrik Penilaian di bawah untuk mendapatkan indeks dan nilai
soal. Mohon diperhatikan penilaian khusus untuk Nilai Total = 0.
Jika ada nilai pertengahan, dipersilakan untuk membuat kebijakan bagaimana cara memindahkannya ke
indeks/nilai berdasarkan rubrik di bawah ini.

RUBRIK PENILAIAN
Indeks
A
AAB
B
BC
C
CD+
D
DE+
E

Nilai
4
3.75
3.5
3
2.5
2
1.75
1.5
1
0.75
0.5
0

Deskripsi Kriteria
Nilai Total = 10
Nilai Total = 9
Nilai Total = 8
Nilai Total = 7
Nilai Total = 6
Nilai Total = 5
Nilai Total = 4
Nilai Total = 3
Nilai Total = 2
Nilai Total = 1
Nilai Total = 0, tapi masih mengerjakan (walaupun hanya 1 butir soal, tapi harus cukup signifikan)
Nilai Total = 0, dan tidak mengerjakan

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 4 dari 14

Sem. 2 2013/2014

Soal 2. Hasil Eksekusi Program [Bobot : 25%]


DESKRIPSI SOAL + JAWABAN
Keterangan: Jawaban ditulis di kotak di sebelah kanan dengan huruf merah dicetak tebal
a. Tuliskan keluaran (apa yang tercetak di layar) dari program-program di bawah ini pada kotak kosong di samping
kanan program. Jika tidak ada keluaran, tuliskan: Tidak ada keluaran. Semua komentar program sengaja
dihilangkan. Program-program di bawah ini sudah dipastikan lolos kompilasi.
No.
2.a.

Program

Keluaran

#include <iostream>
using namespace std;
typedef struct {
string Nama;
int NIM;
int nilai;
} Mhs;
int main()
{
Mhs M;
M.Nama = "Amir"; M.NIM = 999; M.nilai = 50;
if (M.nilai > 50) {
cout << M.Nama << "/" << M.NIM << " lulus" << endl;
if (M.nilai > 80)
cout << "sangat memuaskan" << endl;
else
cout << "memuaskan" << endl;
} else {
cout << M.Nama << "/" << M.NIM << " tak lulus" << endl;
if (M.nilai > 40)
cout << "ambil ujian khusus" << endl;
else
cout << "ulang tahun depan" << endl;
}
return 0;
}

Amir/999 tak lulus


ambil ujian khusus

2.b.

#include <iostream>
using namespace std;

1
3

2.c.

int main () {
int i = 1;
while((i % 5) != 0) {
cout << i << endl;
i = i + 2;
}
return 0;
}
#include <iostream>
using namespace std;
long f1(int a, int b);
int main()
{
int a, b;
a = 2; b = 4;
cout << "f1(" << a << ","<< b << ") = " << f1(a,b);
return 0;
}
long f1(int a, int b)
{
int hasil = 1;
for (int i = 1; i <= b; i++)
{
hasil = hasil * a;
}
return hasil;
}

f1(2,4) = 16

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 5 dari 14
b.
No.
2.d.

Sem. 2 2013/2014

Tuliskan keluaran (apa yang tercetak di layar) dari program di bawah ini jika i = 0 dan j = 10 pada kotak kosong di
samping kanan program. Semua komentar program sengaja dihilangkan. Program sudah dipastikan lolos kompilasi.
Program

Keluaran

#include <iostream>
using namespace std;

i = 4 j = 20

int main () {
int i, j, k;
cin >> i; cin >> j;
do
{
j*=2;
i+=4;
k = i + j;
} while (j < i && k > j);
cout << "i = " << i << " j = " << j ;
return 0;
}

c.
No.
2.e.

Tuliskan keluaran (apa yang tercetak di layar) dari program di bawah ini jika angka = 20 pada kotak kosong di
samping kanan program. Semua komentar program sengaja dihilangkan. Program sudah dipastikan lolos kompilasi.
Program

Keluaran

#include <iostream>
using namespace std;

2 adalah aku3 adalah aku5


adalah aku7 adalah aku11
adalah aku 13 adalah aku17
adalah aku19 adalah aku

int main()
{
int i, j, angka;
bool aku;
cin >> angka;
for (i = 2; i < angka; i++)
{
aku = true;
for (j=2; j <= i/2; j++)
if((i % j) == 0) aku = false;
if (aku)
cout << i << " adalah aku";
}
return 0;
}

CARA PENILAIAN
1.

Berikan penilaian untuk setiap butir soal 2.a s.d. 2.e di atas. Jawaban setiap butir soal harus sama persis, tidak
boleh salah sedikit pun. Penilaian untuk setiap butir soal:
Nilai
Deskripsi
2
Jawaban benar, sama persis seperti pada jawaban di atas.
1
Jawaban secara umum benar, tetapi ada kesalahan formatting, misalnya harus ganti baris tapi tidak
ditulis demikian, atau sebaliknya; atau ada kesalahan hanya yang sangat minor.
0
Salah total, atau tidak mengerjakan.

2.

Jumlahkan/total nilai semua butir soal di atas untuk mendapatkan Nilai Total. Nilai Total maksimum = 10; Nilai
Total minimum = 0.
Cocokkan Nilai Total dengan deskripsi kriteria pada Rubrik Penilaian di bawah untuk mendapatkan indeks dan
nilai soal. Mohon diperhatikan penilaian khusus untuk Nilai Total = 0.

3.

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 6 dari 14

Sem. 2 2013/2014

RUBRIK PENILAIAN
Indeks
A
AAB
B
BC
C
CD+
D
DE+

Nilai
4
3.75
3.5
3
2.5
2
1.75
1.5
1
0.75
0.5

Deskripsi Kriteria
Nilai Total = 10
Nilai Total = 9
Nilai Total = 8
Nilai Total = 7
Nilai Total = 6
Nilai Total = 5
Nilai Total = 4
Nilai Total = 3
Nilai Total = 2
Nilai Total = 1
Nilai Total = 0, tapi masih mengerjakan (walaupun hanya 1 butir soal, tapi harus cukup
signifikan)
Nilai Total = 0, dan tidak mengerjakan

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 7 dari 14

Sem. 2 2013/2014

Soal 3. Fungsi Pangkat dan Array of Float [Bobot : 25%]


Keterangan:
- Soal 3.a dan soal 3.b dinilai terpisah. Masing-masing bobotnya adalah 12.5%
- Jawaban untuk soal 3.a. dan 3.b ditulis inline dengan teks soal dengan teks merah dan tebal.

Soal 3.a (Bobot : 12.5%)


DESKRIPSI SOAL + ALTERNATIF JAWABAN
a.

Fungsi Pangkat mempunyai parameter input berupa dua buah integer, misalnya x dan n, dan menghasilkan xn.
Untuk menyederhanakan persoalan, diasumsikan x adalah bilangan positif (x>0) dan n adalah bilangan positif atau
0 (n0). Berikut adalah contoh masukan (input) dan hasil dari fungsi tersebut.
Input
x

Hasil Pangkat(x,n)
n

1
2
2
4
5

2
0
5
3
1

1
1
32
64
5

Lengkapilah fungsi Pangkat di bawah ini sesuai spesifikasi di atas.


// ALTERNATIF 1
int Pangkat ( int x, int n )
// Tuliskan spesifikasi/penjelasan fungsi di bawah ini (dalam bentuk komentar)
// Menghasilkan x pangkat n, dengan asumsi x > 0 dan n >= 0
{

// KAMUS LOKAL
int i, p;
// ALGORITMA
i = 1;
p = 1;
while (i <= n) {
p = p * x;
i++;
} // i = n
return p;

}
// ALTERNATIF 2
int Pangkat ( int x, int n )
// Tuliskan spesifikasi/penjelasan fungsi di bawah ini (dalam bentuk komentar)
// Menghasilkan x pangkat n, dengan asumsi x > 0 dan n >= 0
{

// KAMUS LOKAL
int i, p;
// ALGORITMA
if (n == 0) {
p = 1;
} else {
i = 1;
p = 1;
do {
p = p * x;
i++;
} while (i <= n);
}
return p;

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 8 dari 14

Sem. 2 2013/2014

}
// ALTERNATIF 3
int Pangkat ( int x, int n )
// Tuliskan spesifikasi/penjelasan fungsi di bawah ini (dalam bentuk komentar)
// Menghasilkan x pangkat n, dengan asumsi x > 0 dan n >= 0
{

// KAMUS LOKAL
int i, p;
// ALGORITMA
p = 1;
for (i = 1; i <= n; i++) {
p = p * x;
}
return p;

CARA PENILAIAN
1.
2.

Alternatif jawaban lain diperbolehkan, asal memberikan hasil yang sama seperti alternatif jawaban di atas.
Nilai diberikan berdasarkan deskripsi kriteria pada Rubrik Penilaian di bawah ini.

RUBRIK PENILAIAN
Catatan:
Dipersilakan membuat indeks dan nilai tambahan untuk rubrik penilaian ini jika dirasa memang diperlukan untuk
membuat penilaian yang lebih presisi.
Indeks
A
AB

Nilai
4
3.5

C
D

2
1

E+
E

0.5
0

Deskripsi Kriteria
Secara keseluruhan benar, boleh ada kesalahan-kesalahan sintaks minor, misalnya kurang ;
Alternatif:
- Header fungsi (tipe hasil dan parameter) dan algoritma benar, tetapi tidak menuliskan
spesifikasi/penjelasan sama sekali
- Header fungsi (tipe hasil dan parameter) ada kesalahan minor, tapi sisa program benar
(termasuk ada spesifikasi)
Alternatif:
- Header (tipe hasil dan parameter) salah total/tidak dikerjakan, tetapi bagian algoritma benar
- Header (tipe hasil dan parameter) benar, tetapi ada kesalahan pada sebagian kecil bagian
algoritma
Header (tipe hasil dan parameter) benar, tetapi bagian algoritma sebagian besar salah
Alternatif:
- Masih ada bagian fungsi yang benar, walaupun sebagian besar salah
- Hanya mengerjakan bagian spesifikasi/penjelasan dari fungsi
Mengerjakan, tapi salah total
Tidak mengerjakan

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 9 dari 14

Sem. 2 2013/2014

Soal 3.b (Bobot : 12.5%)


DESKRIPSI SOAL + ALTERNATIF JAWABAN
b.

Di bawah ini adalah sebuah program yang digunakan untuk mengelola sebuah array yang digunakan untuk
menyimpan sejumlah nilai bilangan riil (float), yaitu TF, dan digunakan untuk menuliskan isi TF yang lebih besar
dari suatu nilai riil X dan menuliskan nilai maksimum yang tersimpan dalam TF. TF dideklarasikan sebagai
variabel global, artinya nama TF dikenali di semua bagian program, baik di main program, maupun di
prosedur/fungsi. Untuk menuliskan nilai TF yang lebih besar dari X digunakan prosedur TulisLebihBesar,
sedangkan untuk mendapatkan nilai maksimum dalam TF, misalnya x, digunakan fungsi CariMax.

Contoh masukan dan keluaran program:


Input
(isi variabel program utama)
TF
X
Indeks
Nilai
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

0
2.5
14.1
0
-2
4.1
0
21.2
4.5
0
0
12.5
14.1
0
-2
4.1
0
1.2
4.5
0

Tertulis di layar

Lebih besar dari 4:


14.1
4.1
21.2
4.5
Nilai maksimum: 21.2

-1

Lebih besar dari 4 :


0
12.5
14.1
0
4.1
0
1.2
4.5
0
Nilai maksimum: 14.1

Lengkapilah program di bawah ini. Bacalah instruksi yang tertulis dalam komentar dengan baik.
// Program ArrayFloat
// Menuliskan ke layar nilai suatu array of float yang lebih besar dari X dan
// Menuliskan nilai terbesar ke layar
#include <iostream>
using namespace std;
// KAMUS GLOBAL
// Konstanta
const int NMax = 10;
// Deklarasi array of float
float TF[NMax];
// Deklarasi fungsi dan prosedur
void TulisLebihBesar(float X);
// Menuliskan nilai-nilai dalam TF yang lebih besar dari X
// I.S. : TF sudah terisi, X terdefinisi
// F.S. : Isi TF yang lebih besar dari X tertulis ke layar
float CariMax();
// Menghasilkan nilai maksimum (terbesar) dalam TF
int main () {
// KAMUS, lengkapi dengan deklarasi variabel-variabel yang dibutuhkan
int i;
int X;

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 10 dari 14

Sem. 2 2013/2014

// ALGORITMA
// Membaca isi array TI dari pengguna
for (i=0; i<NMax; i++)
cin >> TF[i];
// Menerima masukan X dari keyboard
cin >> X;
// Tuliskan di bawah ini ini: instruksi untuk menuliskan nilai-nilai TF yang lebih
// besar dari X dengan pemanggilan prosedur TulisLebihBesar
cout << "Lebih besar dari " << X << ": " << endl;
TulisLebihBesar(X);
// Tuliskan di bawah ini ini: instruksi untuk menuliskan nilai maksimum TF
// dengan cara memanggil fungsi CariMax dan menuliskan hasilnya ke layar
// Catatan: kode bisa lebih dari satu baris
cout << "Nilai maksimum: ";
cout << CariMax() << endl;
return 0;
}
// REALISASI PROSEDUR
void TulisLebihBesar(float X)
// Menuliskan nilai-nilai dalam TF yang lebih besar dari X
// I.S. : TF sudah terisi, X terdefinisi
// F.S. : Isi TF yang lebih besar dari X tertulis ke layar
{
// KAMUS LOKAL
int i;
// ALGORITMA
for (i=0; i<NMax; i++) {
if (TF[i]>X) {
cout << TF[i] << endl;
}
}
}
float CariMax()
// Menghasilkan nilai maksimum (terbesar) dalam TF
{
// KAMUS LOKAL
int i;
float max;
// ALGORITMA
max = TF[0];
i = 1;
while (i < NMax) {
if (TF[i] > max)
max = TF[i];
i++;
} // i = NMax
return max;
}

CARA PENILAIAN
1.

Program dibagi menjadi 3 elemen utama:


a. Algoritma program utama (20%)
b. Implementasi prosedur TulisLebihBesar (40%)
c. Implementasi fungsi CariMax (40%)
Masing-masing elemen dihitung dengan menggunakan Rubrik Penilaian yang berbeda di bawah ini sehingga
dihasilkan nilai-nilai berikut:

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 11 dari 14

2.

Sem. 2 2013/2014

- p nilai algoritma program utama


- q nilai implementasi prosedur TulisLebihBesar
- r nilai implementasi fungsi CariMax
Nilai akhir untuk soal 3.b. dihitung dengan cara sbb. = p * 20% + q * 40% + r * 40%

RUBRIK PENILAIAN
Catatan:
Dipersilakan membuat indeks dan nilai tambahan untuk rubrik penilaian ini jika dirasa memang diperlukan untuk
membuat penilaian yang lebih presisi.

Algoritma Program Utama (p)


Indeks
A
B
C

Nilai
4
3
2

E+
E

0.5
0

Deskripsi
Secara keseluruhan benar, boleh ada kesalahan-kesalahan sintaks minor, misalnya kurang ;
Deskripsi kamus kurang atau salah, bagian yang lain benar.
Salah satu dari perintah memanggil prosedur TulisLebihBesar atau fungsi CariMax salah
total/tidak dikerjakan, yang lainnya (di luar deklarasi kamus) benar.
Kesalahan total termasuk kesalahan pemanggilan parameter.
Hanya deklarasi kamus yang benar, perintah untuk memanggil prosedur TulisLebihBesar dan
fungsi CariMax salah total/tidak dikerjakan.
Mengerjakan, tapi salah total.
Salah total/tidak dikerjakan.

Implementasi Prosedur TulisLebihBesar (q)


Indeks
A
B

Nilai
4
3

C
D
E+
E

2
1
0.5
0

Deskripsi Kriteria
Secara keseluruhan benar, boleh ada kesalahan-kesalahan sintaks minor, misalnya kurang ;
Alternatif:
- Tidak ada deklarasi kamus, tetapi algoritma benar
- Ada kesalahan minor pada bagian algoritma, tapi kamus lokal benar
Ada kesalahan pada sebagian dari algoritma.
Masih ada bagian algoritma yang benar, walaupun sebagian besar salah.
Mengerjakan, tapi salah total
Tidak mengerjakan

Implementasi Fungsi CariMax (r)


Indeks
A
B

Nilai
4
3

C
D
E+
E

2
1
0.5
0

Deskripsi Kriteria
Secara keseluruhan benar, boleh ada kesalahan-kesalahan sintaks minor, misalnya kurang ;
Alternatif:
- Tidak ada deklarasi kamus, tetapi algoritma benar
- Ada kesalahan minor pada bagian algoritma, tapi kamus lokal benar
Ada kesalahan pada sebagian dari algoritma.
Masih ada bagian algoritma yang benar, walaupun sebagian besar salah.
Mengerjakan, tapi salah total
Tidak mengerjakan

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 12 dari 14

Sem. 2 2013/2014

Soal 4. Data Nilai [Bobot : 25%]


Keterangan:
Soal 4.a dan soal 4.b dinilai terpisah. Masing-masing bobotnya adalah 12.5%

DESKRIPSI SOAL
Sebuah kuliah memberikan nilai akhir kepada setiap mahasiswanya dalam bentuk indeks yaitu A, B, C, D, dan
E. Nilai-nilai sebuah kuliah mahasiswa di sebuah kelas disimpan dalam sebuah array of character. Ada 50 mahasiswa
dalam kelas. Contoh data nilai mahasiswa yang disimpan dalam sebuah array (sengaja tidak ditulis lengkap agar
ringkas dalam penulisan soal) adalah:
A

50

Untuk keperluan evaluasi, sering kali dosen kelas perlu mengetahui berapa banyak mahasiswa yang mendapatkan suatu
nilai tertentu, yaitu nilai A, B, C, D, atau E.
Sebuah program digunakan untuk membaca sejumlah data nilai mahasiswa sebuah kelas dari keyboard (masukan
pengguna) dan menyimpannya ke sebuah array of character, misalnya TabNilai, dengan ukuran 50. Pembacaan nilai
dihentikan jika seluruh TabNilai penuh.
Selanjutnya, program menerima masukan sebuah nilai A, B, C, D, atau E dari pengguna dan menuliskan ke
layar berapa banyak kemunculan nilai tersebut dalam TabNilai. Ada kemungkinan pengguna salah mengentri pada
tahap ini, yaitu memasukkan nilai selain A, B, C, D, atau E. Jika pengguna salah mengentri, tuliskan pesan
kesalahan ke layar Masukan salah.
a.
b.

Jelaskan langkah-langkah untuk pembuatan program di atas dalam bahasa Anda sendiri. Jelaskan apa saja yang
harus dideklarasikan dalam kamus dan bagaimana langkah-langkah algoritmanya.
Buatlah programnya dalam Bahasa C++.

Tuliskan jawaban Anda pada sisa halaman ini dan sebaliknya. Program yang dibuat sedapat mungkin
merupakan program lengkap yang mengandung judul, spesifikasi, kamus, dan algoritma.

Soal 4.a (Bobot : 12.5%)


ALTERNATIF JAWABAN
Langkah-langkah pembuatan program:
1. Deklarasi kamus:
a. Konstanta (opsional):
- Sebuah konstanta untuk menda, misalnya NMax
b. Variabel yang dibutuhkan adalah:
- Sebuah array of character dengan ukuran 50 buah, misalnya TabNilai.
- Variabel bertype integer sebagai pencacah untuk traversal/penelusuran array TabNilai melalui
indeksnya, misalnya i.
- Variabel untuk menampung sebuah character yang akan dihitung jumlah kemunculannya di TabNilai,
misalnya X.
- Variabel untuk menampung hasil perhitungan jumlah kemunculan X di TabNilai, misalnya count.
2. Langkah-langkah algoritma:
a. Mengisi seluruh elemen TabNilai dengan pembacaan nilai character dari keyboard. Pembacaan dihentikan
jika TabNilai sudah penuh. Setiap character yang dimasukkan ke array diasumsikan adalah salah satu dari
A, B, C, D, atau E. Variabel i digunakan untuk penelusuran indeks array TabNilai dari indeks ke-0
s.d. NMax.
b. Membaca sebuah nilai character dari keyboard dan ditampung dalam variabel X.
c. Jika nilai X adalah salah satu dari A, B, C, D, atau E maka:
i. Hitung jumlah kemunculan X di TabNilai melalui penelusuran setiap elemen TabNilai. Terlebih
dahulu count diinisialisasi dengan nilai 0. Untuk setiap kali loop, jika elemen TabNilai bernilai = X,
maka count di-increment (ditambah 1). Jika tidak, maka tidak dilakukan apa pun.
ii. Tuliskan jumlah kemunculan X di TabNilai ke layar.
d. Jika nilai X bukan salah satu dari A, B, C, D, atau E maka tuliskan pesan kesalahan Masukan
salah.

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 13 dari 14

Sem. 2 2013/2014

CARA PENILAIAN
1.
2.
3.

Struktur penulisan algoritma di atas tidak harus persis seperti tersebut di atas (bahkan boleh kamus dan algoritma
dicampur), namun esensinya tetap menunjukkan adanya deklarasi kamus dan langkah-langkah algoritma yang
urutannya sesuai yang diharapkan.
Catatan khusus: konstanta NMax tidak harus ada karena tidak diminta eksplisit di soal.
Nilai diberikan berdasarkan deskripsi kriteria pada Rubrik Penilaian di bawah ini.

RUBRIK PENILAIAN
Catatan:
Dipersilakan membuat indeks dan nilai tambahan untuk rubrik penilaian ini jika dirasa memang diperlukan untuk
membuat penilaian yang lebih presisi.
Indeks
A

Nilai
4

AB

3.5

BC

2.5

C
D
E+
E

2
1
0.5
0

Deskripsi Kriteria
Secara keseluruhan algoritma benar dan lengkap, mengandung deklarasi kamus yang diperlukan
dan langkah urutan algoritma juga benar.
Ada pernyataan-pernyataan yang salah atau tidak lengkap (kesalahan minor), tetapi secara umum
langkah-langkah yang dituliskan masih tepat.
Alternatif:
- Tidak menuliskan deklarasi kamus yang diperlukan, tapi algoritmanya secara umum benar.
- Deklarasi kamus lengkap dan benar, tetapi ada satu bagian algoritma yang tidak
dikerjakan/salah total
Alternatif:
- Tidak menuliskan deklarasi kamus yang diperlukan, ada satu bagian algoritma yang tidak
dikerjakan/salah total, tapi bagian algoritma lainnya secara umum benar.
- Deklarasi kamus lengkap dan benar, tetapi ada dua atau tiga bagian algoritma yang tidak
dikerjakan/salah total.
Sekitar separuh dari deskripsi kamus dan algoritma salah total/tidak dikerjakan.
Hanya sebagian kecil dari kamus dan algoritma yang dikerjakan dengan benar.
Mengerjakan, tapi salah total.
Tidak mengerjakan

Soal 4.b (Bobot : 12.5%)


ALTERNATIF JAWABAN
// Program DataNilai
// Mengelola data nilai mahasiswa dalam array of character
#include <iostream>
using namespace std;
int main () {
// KAMUS
const int NMax = 50; //Tidak harus menggunakan konstanta
char TabNilai[NMax];
int i, count;
char X;
// ALGORITMA
for (i=0; i<NMax; i++) {
cin >> TabNilai[i];
}
cout << "Masukkan sebuah index nilai: ";
cin >> X;
if (X == 'A' || X == 'B' || X == 'C' || X == 'D' || X == 'E') {
count = 0;
for (i=0; i<NMax; i++) {
if (TabNilai[i] == X)
count++;
}
cout << "Mahasiswa yang mendapat nilai " << X << " ada " << count << endl;
} else { // X bukan A, B, C, D, atau E
cout << "Masukan salah" << endl;
}
}

UTS KU1072/Pengenalan Teknologi Informasi B


Tanggal: 5 April 2014
Halaman 14 dari 14

Sem. 2 2013/2014

CARA PENILAIAN
1.
2.

Alternatif penyelesaian program dengan cara lain dipersilakan, asalkan sesuai dengan algoritma di soal 3.a.
Nilai diberikan berdasarkan deskripsi kriteria pada Rubrik Penilaian di bawah ini.

RUBRIK PENILAIAN
Catatan:
Dipersilakan membuat indeks dan nilai tambahan untuk rubrik penilaian ini jika dirasa memang diperlukan untuk
membuat penilaian yang lebih presisi.
Indeks
A
AB

Nilai
4
3.5

BC

2.5

C
D
E+
E

2
1
0.5
0

Deskripsi Kriteria
Program benar dan lengkap, boleh ada kesalahan sintaks minor, misalnya kurang ;
Ada kesalahan minor pada program yang menyebabkan program tidak sempurna, tapi secara
umum program masih benar.
Alternatif:
- Tidak menuliskan deklarasi kamus yang diperlukan, tapi algoritmanya secara umum benar.
- Deklarasi kamus lengkap dan benar, tetapi ada satu bagian algoritma yang tidak
dikerjakan/salah total
Alternatif:
- Tidak menuliskan kamus yang diperlukan, ada satu bagian algoritma yang tidak
dikerjakan/salah total, tapi bagian algoritma lainnya secara umum benar.
- Deklarasi kamus lengkap dan benar, tetapi ada dua atau tiga bagian algoritma yang tidak
dikerjakan/salah total.
Sekitar separuh dari seluruh program salah total/tidak dikerjakan.
Hanya sebagian kecil dari kamus dan algoritma yang dikerjakan dengan benar.
Mengerjakan, tapi salah total.
Tidak mengerjakan

Anda mungkin juga menyukai