Anda di halaman 1dari 16

UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN

Tanggal: 19 Desember 2015


Halaman 1 dari 16

RUBRIK PENILAIAN
UJIAN AKHIR SEMESTER
KU1072/PENGENALAN TEKNOLOGI INFORMASI B
SEM. 1 2015/2016

HARI, TANGGAL : SABTU, 19 DESEMBER 2015


SIFAT UJIAN : INDIVIDUAL DAN CLOSED BOOK
DURASI : 120 MENIT
BAHASA : C++
FAK./SEK. : SITH (REKAYASA), FTSL, FTMD (kecuali Kelas 16)

PETUNJUK PENGGUNAAN RUBRIK:

1. 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 (Jika ada)
2. Penggunaan Rubrik Penilaian:
Beberapa soal mengandung 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:
- 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 soal yang bersangkutan.
- 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.
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.
3. Nilai setiap soal/bagian soal adalah dalam skala 0 s.d. 4.
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%
d. Soal 4 : 25% dengan rincian: soal 4.a. : 10% dan soal 4.b. : 15%
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.
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 2 dari 16

Soal 1. Pengantar Teknologi Informasi [Bobot : 25%]


DESKRIPSI PERSOALAN + JAWABAN
Petunjuk:
Beri lingkaran (O) pada huruf pilihan yang benar dan beri tanda silang (X) pada huruf untuk pilihan jawaban yang salah
sesuai pernyataan/pertanyaan. Dalam satu nomor, semua kombinasi dimungkinkan, termasuk benar semua dan salah
semua. Tidak ada pengurangan untuk jawaban yang tidak tepat.

Contoh cara menjawab: Contoh cara mengoreksi jawaban:


Dalam kamus suatu program kita dapat mendeklarasikan: Dalam kamus suatu program kita dapat mendeklarasikan:
a. Variabel a. Variabel
b. Instruksi pengulangan b. Instruksi pengulangan
c. Instruksi input/output c. Instruksi input/output
d. Konstanta d. Konstanta

1. Yang merupakan jenis memory dalam komputer adalah:


a. ROM c. Flash Memory
b. CMOS d. Clash Memory

2. Manakah yang merupakan operasi dasar komputer?


a. Membuka kode enkripsi.
b. Menerima input dari dunia luar melalui perangkat input.
c. Melakukan operasi aritmatika dan logika terhadap informasi.
d. Merakit game.

3. Manakah yang benar?


a. 1 MB = 1000 KB c. 1 byte = 8 bit
b. 1024 byte = 1 KB d. 1 character = 1 byte

4. Yang merupakan contoh protokol pada jaringan komputer adalah:


a. HTTP c. HP
b. FTP d. TCP

5. Manakah yang termasuk perangkat lunak sistem?


a. Pengolah kata c. Game
b. Antivirus d. Sistem operasi

6. Pengaruh penggunaan teknologi komputer pada sektor publishing adalah:


a. Wartawan mendapatkan fakta-fakta melalui internet.
b. Menulis dan mengedit berita di lokasi dan mengirimkan ke redaktur melalui internet.
c. Penggunaan software untuk membuat/mengedit gambar dan tabel.
d. Polling terhadap isu-isu politik dapat dilakukan melalui internet.

7. Istilah yang digunakan untuk kegiatan memonitor tanda-tanda vital pasien dan dokter memantau melalui data yang
dikirimkan via internet adalah:
a. Telekinesis c. Television
b. Telecommuting d. Telemedicine

8. Yang bukan merupakan peran komputer dalam The Automated Factory adalah:
a. Mengontrol kualitas pekerja manusia.
b. Memantau selera konsumen.
c. Tracking inventori secara langsung.
d. Mengatur waktu pemasangan bagian-bagian produk.

9. Fungsi utama dalam perangkat lunak pengolah kata adalah:


a. Pemeriksaan kesalahan ejaan pada dokumen.
b. Modifikasi teks.
c. Membuat animasi.
d. Memberikan formula standar untuk perhitungan statistik.
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 3 dari 16

10. Cara-cara untuk menghindari kekerasan dan kecanduan terhadap teknologi informasi adalah:
a. Sering berkumpul-kumpul di warnet.
b. Menggunakan filtering software untuk konten di internet (khususnya untuk anak-anak).
c. Bergaul dengan teman-teman secara fisik, bukan hanya teman virtual.
d. Mengikuti berbagai kegiatan-kegiatan sosial, seperti unit kegiatan, himpunan, klub, dll.

11. Yang termasuk cara berinternet yang sehat adalah:


a. Membuka dengan bebas link, mail, pop-up, iklan, dll. yang tampak menarik.
b. Memberikan informasi pribadi pada situs media sosial apa pun karena itu adalah hak.
c. Posting gambar dan video pribadi, tidak perlu peduli bagaimana orang lain akan menggunakannya.
d. Tidak perlu terlalu sibuk mengamankan diri dengan memasang antivirus atau personal firewall karena tidak
banyak situs internet yang berbahaya.

12. Yang merupakan perangkat lunak yang dapat digunakan untuk sabotase adalah:
a. Malware c. Trojan horse
b. Virus d. Smadav

13. Yang termasuk tindakan tidak layak di media sosial adalah:


a. Mem-posting sesuatu yang melanggar hukum.
b. Memakai bahasa yang sopan, baik untuk pesan pribadi maupun untuk umum.
c. Menulis status yang tidak baik tentang seseorang yang menurut kita memang layak menerimanya.
d. Sharing mp3 lagu yang di-download hanya untuk pemakaian pribadi, hanya ke teman-teman terdekat dan
terpercaya.

14. Yang disebut edutainment adalah:


a. Mengombinasikan pendidikan dengan hiburan.
b. Mengombinasikan kedokteran dengan kehidupan sosial.
c. Mengombinasikan kehidupan sosial dengan hiburan.
d. Mengombinasikan pendidikan dengan kehidupan sosial.

15. Aturan-aturan di bawah ini yang ada pada netiquette adalah:


a. Flamming (memanas-manasi), trolling (keluar dari topik pembicaraan), atau pun junking (memasang post
yang tidak berguna) saat berforum.
b. Meyakinkan bahwa apa pun yang kita unggah di internet adalah sesuatu yang tidak akan pernah kita sesali di
kemudian hari.
c. Mengunggah/menggunakan karya orang lain tanpa menyebutkan pencipta aslinya.
d. Tidak berkomentar dengan buruk di media sosial tentang orang/kelompok lain supaya orang lain juga tidak
berkomentar buruk tentang diri kita.

16. Saran yang benar terhadap pengiriman e-mail adalah:


a. Subject tidak wajib diisi, boleh dikosongkan kalau isi e-mail pendek.
b. Tidak perlu mencantumkan nama dalam signature, karena sudah jelas dari alamat e-mail pengirim.
c. Signature harus diperhatikan (maksimum 4 baris, identitas jelas). Body e-mail dipisahkan dari signature
dengan -- diikuti return.
d. Perhatikan thread e-mail dan mulai topik baru dengan mengkomposisi e-mail baru.

CARA PENILAIAN
1. Untuk setiap nomor, untuk setiap pilihan jawaban a s.d. d, dinilai sebagai berikut:
Nilai Deskripsi
1 Pilihan jawaban dijawab benar (apakah harus dilingkari/disilang)
0 Pilihan jawaban dijawab salah (harusnya dilingkari malah disilang, atau sebaliknya, atau tidak dijawab
sama sekali)
Untuk 1 soal, karena ada 4 pilihan jawaban, nilai per soal maksimum = 4, nilai per soal minimum = 0.
Nilai total maksimum = 64, minimum = 0.
2. Nilai akhir = nilai total / 16.
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 4 dari 16

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


DESKRIPSI PERSOALAN + JAWABAN

Petunjuk Soal 2.a. s.d. Soal 2.d.


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

No. Program Keluaran


2.a. #include <iostream> Tahun kabisat abad
using namespace std; 12/12/2000
typedef struct {
int dd;
int mm;
int yy;
} TTgl;
int main () {
TTgl T;
int d, m, y;
d = 12; m = 12; y = 2000;
if (y <= 0 || m < 1 || m > 12 ||
d < 1 || d > 31) {
cout << "Tidak valid" << endl;
} else {
if ((y % 400 == 0) ||
(y % 100 != 0 && y % 4 == 0)) {
cout << "Tahun kabisat";
if (y % 400 == 0) {
cout << " abad";
}
cout << endl;
} else {
cout << "Bukan tahun kabisat" << endl;
}
T.dd = d; T.mm = m; T.yy = y;
cout << T.dd << "/" << T.mm << "/"
<< T.yy << endl;
}
return 0;
}
2.b. #include <iostream> 100 0
using namespace std; 101 2
int main () { 102 5
const int ganjil = 3; 103 8
const int genap = 2; 104 11
int i, y, sum; 105 14
bool found; 106 17
i = 100;
found = false;
sum = 0;
while (i > 0 && found == false) {
cout << i << " " << sum << endl;
if (i % 10 == 0) {
sum = sum + genap;
} else {
sum = sum + ganjil;
}
if (sum >= 20) {
found = true;
} else {
i++;
}
}
return 0;
}
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 5 dari 16

No. Program Keluaran


2.c. #include <iostream> -5
using namespace std; -2
int FF (int x); 1
void PP (int s); 4
int main () { 7
int i, sum; 10
10
i = -5;
sum = 1;
while (i <= 10) {
PP(i);
if (FF(i) > 1) {
sum = sum + 1;
} else {
sum = sum + 2;
}
i = i + 3;
}
PP(sum);
return 0;
}
int FF (int x) {
if (x % 2 == 0) {
return 5;
} else {
return 0;
}
}
void PP (int s) {
cout << s << endl;
}
2.d. #include <iostream> 0 2468
using namespace std; 2 4 6 8 10
int main () { 4 6 8 10 12
int M[5][5]; 6 8 10 12 14
int NBrs, NKol; 8 10 12 14 16
int i, j;
NBrs = 5; NKol = 5;
for (i=0; i<NBrs; i++) {
for (j=0; j<NKol; j++) {
M[i][j] = 2*(i+j);
}
}
for (i=0; i<NBrs; i++) {
for (j=0; j<NKol; j++) {
cout << M[i][j] << " ";
}
cout << endl;
}
return 0;
}

Petunjuk Soal 2.e.


Semua komentar program sengaja dihilangkan. Program-program di bawah ini sudah dipastikan lolos kompilasi.
Jika isi file nilai1.dat adalah sbb.:

100
50
90
40
80
30
70
20
60
10
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 6 dari 16

0
100
90

Maka tuliskan apa yang diisikan ke file nilai2.dat dan apa yang muncul di layar/monitor berdasarkan program berikut
ini:

No. Program Isi nilai2.dat Keluaran di Layar


2.e. #include<iostream> 100 100
#include<fstream> 90 50
using namespace std; 80 90
70 40
int main() { 60 80
ifstream infile; 30
ofstream outfile; 70
int sum, i, count; 20
int Nilai[10]; 60
10
infile.open("nilai1.dat"); 400
outfile.open("nilai2.dat"); 5

if (infile.eof()) {
cout << "File kosong" << endl;
} else {
for (i=0; i<10; i++) {
infile >> Nilai[i];
cout << Nilai[i] << endl;
}
sum = 0;
count = 0;
for (i=0; i<10; i++) {
if (Nilai[i] > 50) {
sum = sum + Nilai[i];
count++;
outfile << Nilai[i] << endl;
}
}
cout << sum << endl;
cout << count << endl;
}

outfile.close();
infile.close();

return 0;
}

CARA PENILAIAN

1. Untuk setiap nomor, penilaiannya adalah sbb:


Nilai Deskripsi
2 Jawaban benar, tidak ada kesalahan sedikit pun.
1 Jawaban mengarah pada jawaban benar, tapi ada kesalahan kecil, misalnya salah format.
0 Salah total, atau tidak mengerjakan
2. Nilai total maksimum = 10; minimum = 0.
3. Nilai akhir = nilai total / 2,5.
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 7 dari 16

Soal 3. Temperatur Kota dalam Sebulan [Bobot : 25%]


DESKRIPSI PERSOALAN + JAWABAN

Sebuah program digunakan untuk mengolah hasil pemantauan temperatur suatu kota dalam 1 bulan. Jumlah hari dalam
1 bulan bervariasi antara 28 s.d. 31 hari. Sebagai contoh, hasil pemantauan temperatur kota New York dalam derajat
Fahrenheit pada suatu bulan Mei dari tanggal 1 s.d. 31 disimpan dalam sebuah file of integer bernama temperatur.dat
sebagai berikut:
Asumsikan bahwa file temperatur.dat tidak pernah kosong dan banyaknya data tidak pernah lebih dari 31,
67 lengkapilah kerangka program di bawah ini, termasuk melengkapi fungsi/prosedur yang tersedia, yang
72 melakukan beberapa hal di bawah ini:
74 1. Membaca isi file temperatur.dat dan menuliskan isinya ke dalam array of integer bernama TempF
(dengan nilai efektif sebesar Neff1 dan ukuran maksimum sebeasar NMax = 31).
62
2. Menghitung dan menampilkan rata-rata temperatur dengan memanfaatkan prosedur HitungRerata
56 (lihat spesifikasi di bawah).
66 3. Mengkonversi nilai temperatur dalam derajat Fahrenheit ke derajat Kelvin dan menyimpan hasilnya
65 dalam sebuah array of float bernama TempK (dengan nilai efektif sebesar Neff2 dan ukuran
maksimum sebeasar NMax = 31). Untuk melakukan hal ini, gunakan fungsi KonversiFKeK yang
59
digunakan untuk mengkonversi sebuah nilai temperatur dalam derajat Fahrenheit, misalnya T F,
61 menjadi derajat Kelvin, misalnya TK, dengan memanfaatkan rumus: TK = (TF + 459.67) * 5/9
69 4. Menampilkan isi TempK ke layar.
74
Jika masih kurang, gunakan halaman kosong di balik hlm. 7-9 dengan memberikan keterangan
69 yang jelas.
66
68
58 // Program TemperaturKota
64 // Menerima masukan data temperatur kota dalam sebulan (dalam derajat Fahrenheit)
// yang disimpan dalam file of integer temp.dat,
66 // memindahkan isi file dalam array of integer, menghitung rata-ratanya,
57 // mengkonversi suhu ke derajat Kelvin dan menampilkan suhu dalam derajat Kelvin
68 #include <iostream>
62 #include <fstream>
using namespace std;
59
73 // Konstanta
61 const int NMax = 31;

61 // Deklarasi Prosedur/Fungsi
57
void HitungRerata (int Tab[NMax], int Neff, float * rerata);
58 // Menghitung rata-data nilai yang disimpan dalam Tab (dengan nilai efektif Neff) dan
57 // menyimpannya dalam variabel rerata
// I.S.: Tab dan Neff terdefinisi, tidak kosong
67
// F.S.: rerata berisi rata-rata nilai-nilai yang tersimpan dalam Tab
81
79 float KonversiFKeK (int TF);
// Menghasilkan konversi nilai temperatur F dalam derajat Fahrenheit ke derajat
76 // Kelvin berdasarkan rumus: TK = (TF + 459.67) * 5/9

// PROGRAM UTAMA
int main () {
// KAMUS
// Deklarasi array TempF dan TempK, berikut nilai efektifnya
int TempF[NMax]; int Neff1; // Neff1 adalah nilai efektif TempF;
// Jika Neff1=0, berarti TempF kosong
float TempK[NMax]; int Neff2; // Neff2 adalah nilai efektif TempK;
// Jika Neff2=0, berarti TempK kosong

// Tuliskan di bawah ini: Deklarasi variabel-variabel lain yang dibutuhkan


ifstream infile;
int i, data;
float rata;
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 8 dari 16

// ALGORITMA
// Tuliskan di bawah ini: Bagian program untuk membuka dan membaca isi file temperatur.dat
// dan memindahkan setiap integer ke dalam array of integer TempF dengan nilai efektif
// sebesar Neff1. Jangan lupa untuk menutup file.

infile.open("temperatur.dat");
i = 0;
while (infile >> data) {
TempF[i] = data;
i++;
}
Neff1 = i;
infile.close();

// Tuliskan di bawah ini: Bagian program untuk menghitung rata-rata temperatur dalam
// derajat Fahrenheit berdasarakan isi TempF (dengan nilai efektif Neff1) dan simpan
// hasilnya dalam suatu variabel, lalu tuliskan hasilnya ke layar.
// Gunakan prosedur HitungRerata.

cout << "Temperatur rata-rata dalam derajat Fahrenheit = ";

HitungRerata(TempF, Neff1, &rata);


cout << rata << endl;

// Tuliskan di bawah ini: Bagian program untuk mengkonversi nilai temperatur dalam TempF ke
// derajat Kelvin dan menyimpan hasilnya dalam sebuah array of float bernama TempK (dengan
// nilai efektif sebesar Neff2). Gunakan fungsi KonversiFKeK.

for (i = 0; i < Neff1; i++) {


TempK[i] = KonversiFKeK(TempF[i]);
}
Neff2 = Neff1;

// Tuliskan di bawah ini: Bagian program untuk mencetak semua isi elemen array TempK
// (dengan nilai efektif Neff2) ke layar. Format pencetakan bebas.

cout << "Temperatur harian dalam derajat Kelvin = ";

for (i = 0; i < Neff2; i++) {


cout << TempK[i] << endl;
}

return 0;
}
// Tuliskan kode implementasi prosedur HitungRerata dan fungsi KonversiFKeK berdasarkan
// spesifikasi di bawah ini pada tempat yang disediakan

void HitungRerata (int Tab[NMax], int Neff, float * rerata) {


// Menghitung rata-data nilai yang disimpan dalam Tab (dengan nilai efektif Neff) dan
// menyimpannya dalam variabel rerata
// I.S.: Tab dan Neff terdefinisi, tidak kosong
// F.S.: rerata berisi rata-rata nilai-nilai yang tersimpan dalam Tab

// KAMUS
int i, sum;

// ALGORITMA
sum = 0;
for (i = 0; i < Neff; i++) {
sum = sum + Tab[i];
}
*rerata = (float)sum/(float)Neff;
}
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 9 dari 16

float KonversiFKeK (int TF) {


// Menghasilkan konversi nilai temperatur F dalam derajat Fahrenheit ke derajat Kelvin
// berdasarkan rumus: TK = (TF + 459.67) * 5/9

// KAMUS LOKAL

// ALGORITMA
return ((TF + 459.67) * 5/9);
}

Catatan alternatif solusi:


-Deskripsi kamus program utama ditentukan apakah menggunakan variabel tambahan pada program utama.

CARA PENILAIAN
1. Untuk program utama, ditentukan ada 4 bagian utama yang masing-masing dinilai termasuk kaitannya dengan
deklarasi kamus:
- Buka dan baca file temperatur.dat
- Menghitung rerata temperatur dengan memanggil prosedur HitungRerata
- Mengisi tabel TempK (memanggil fungsi KonversiFKeK)
- Menulis isi tabel TempK
Setiap bagian dinilai dengan Rubrik Penilaian berikut:

Nilai Deskripsi Indeks


4 Sempurna. A
Boleh ada kesalahan yang sangat kecil pada program, misalnya kurang ;
3,5 Bagian program utama seluruhnya ada dan secara umum benar, tetapi masih ada AB
kesalahan-kesalahan minor.
3 Bagian program utama secara umum benar, tetapi ada 1 kesalahan major, misalnya B
deskripsi kamus tidak benar, tapi program sempurna; atau ada kesalahan sintaks yang
parah, tapi solusi sebenarnya benar; atau sebagian besar dikerjakan dan benar, tapi ada
yang tidak dikerjakan sama sekali.
2 Sekitar setengah bagian dari solusi salah dan major. C
1 Sebagian besar solusi salah, tetapi masih ada beberapa hal yang benar. D
0 Tidak mengerjakan atau salah total E

Selanjutnya nilai program utama (NPU) dihitung sbb.: NPU = semua bagian
semua bagian: total nilai semua bagian, maksimum = 16, minimum = 0.
2. Fungsi KonversiFKeK dan prosedur HitungRerata masing-masing dinilai dengan menggunakan Rubrik Penilaian
sbb:

Nilai Deskripsi Indeks


4 Sempurna. A
Boleh ada kesalahan yang sangat kecil pada program, misalnya kurang ;
3,5 Fungsi/prosedur ada dan secara umum benar, tetapi masih ada kesalahan-kesalahan AB
minor.
3 Solusi fungsi/prosedur dan pengulangan dalam program C++ secara umum benar, B
tetapi ada 1 kesalahan major, misalnya deskripsi kamus lokal tidak benar, tapi
program sempurna; atau ada kesalahan sintaks yang parah, tapi solusi sebenarnya
benar
2 Solusi fungsi/prosedur dan pengulangan program C++ ada, tetapi sekitar setengah C
bagian dari solusi salah dan major.
1 Sebagian besar solusi salah, tetapi masih ada beberapa hal yang benar. D
0 Tidak mengerjakan atau salah total E

Selanjutnya nilai fungsi/prosedur (NFP) dihitung sbb.: NFP = semua bagian


semua bagian: total nilai semua bagian, maksimum = 8, minimum = 0.
3. Nilai Akhir (NA) dihitung sbb: NA = (NPU + NFP)/6
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 10 dari 16

Soal 4. XO Game [Bobot : 25%]


XO Game adalah sebuah game yang menggunakan matriks of character 3x3 *) dan dimainkan oleh 2 orang. Satu
orang mengisi elemen matriks dengan huruf X dan lawannya mengisi elemen matriks dengan huruf O secara
bergantian. Elemen yang kosong ditandai dengan (spasi/blank). Berikut ini contoh ilustrasi matriks dalam XO Game:

X O X O X O X X
O O O O O O O
X X X X O X
(1) (2) (3) (4)

Buatlah sebuah program untuk:


a. Mendeklarasikan dan mengisi matriks of character 3x3 dengan (spasi/blank). Gunakan instruksi looping.
b. Mengisi matriks dengan menerima input dari keyboard (pengguna) berupa huruf X, O, atau # (asumsikan
bahwa masukan hanya 3 huruf ini, tidak mungkin yang lain, sehingga tidak perlu diperiksa kebenarannya).
Jika masukan huruf adalah X atau O, maka program dilanjutkan dengan membaca indeks baris, misalnya
i, dan indeks kolom, misalnya j, di mana huruf tersebut akan diletakkan dan mengisi elemen matriks ke [i,j]
dengan huruf yang bersangkutan. Selanjutnya pemasukan huruf diulangi lagi dari awal (lihat contoh di
bawah). Jika pemasukan elemen pada indeks baris dan kolom yang sudah pernah diisi, diisi ulang, maka nilai
yang disimpan adalah yang terakhir dimasukkan pengguna.
Jika masukan huruf adalah #, maka pemasukan data matriks dihentikan.
c. Memeriksa apa matriks sudah penuh atau tidak. Matriks disebut penuh adalah matriks yang tidak lagi mengandung
spasi (atau dengan kata lain, semua elemen matriks berisi nilai X atau O). Jika matriks penuh, maka isi matriks
ditampilkan ke layar (lihat contoh di bawah). Jika matriks belum penuh, maka dituliskan pesan Matriks belum
penuh.

*) Deklarasikan matriks sebagai array 2 dimensi 3x3 (dalam persoalan ini tidak akan ada array dengan ukuran lain).
Dengan demikian indeks baris adalah [0..2] dan indeks kolom adalah [0..2].

Input Output Keterangan


X Matriks belum penuh Sesuai dengan contoh ilustrasi matriks no. 1 di atas.
02
O
11
#
X OXX Sesuai dengan contoh ilustrasi matriks no. 4 di atas.
02 OOO Matriks penuh, dengan demikian ditampilkan isinya.
X XOX Elemen matriks [1,1] diisi 2 kali, yang disimpan adalah
11 yang terakhir dimasukkan.
O
00
O
12
O
11
O
10
X
01
X
20
X
22
O
21
#

a. Buatlah flowchart untuk persoalan di atas (flowchart boleh tidak detil, yang penting menggambarkan penyelesaian
persoalan dengan jelas). Lengkapi flowchart dengan kamus dan penjelasan-penjelasan yang diperlukan.
b. Buatlah program untuk persoalan di atas dalam Bahasa C++. Program yang dibuat harus merupakan program
lengkap yang mengandung judul, spesifikasi, kamus, dan algoritma dan harus sesuai dengan flowchart.

Tuliskan jawaban pada sisa halaman ini dan di halaman kosong baliknya. Jika masih kurang, gunakan halaman
kosong di balik halaman 1-4 (jangan lupa menuliskan nomor soal dengan jelas).
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 11 dari 16

Soal 4.a. (BOBOT : 10%)

ALTERNATIF SOLUSI

Flowchart:

Program XOGame Algoritma - General


// Membaca isi matriks berupa nilai X dan O
// dari pengguna sampai pengguna mengetikkan
Mulai
#
// Menentukan apakah matriks penuh atau tidak
// dan menuliskan matriks ke layar jika penuh
Inisialisasi elemen M dengan spasi
Kamus
char M[3][3]; // Matriks

// Kamus tambahan - untuk algoritma detil


int i, j; // indeks Matriks M
bool ispenuh; // True jika M penuh Input elemen M dengan X dan O sampai pengguna mengetikkan #
char cc; // character yang dibaca

Memeriksa apakah M penuh atau tidak

true false

M penuh

Cetak isi M output(Matriks belum penuh)

Selesai

Algoritma - Detil
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 12 dari 16

Mulai

Inisialisasi elemen M dengan spasi

Penelusuran
i=0
per baris M

false i<3

true

Penelusuran
per kolom M j=0

false j<3

true
M penuh
true false
M[i][j] =

j=j+1

i=i+1

Input elemen M
input(CC)

false CC != #

true

input(i,j)

M[i][j] = CC

input(CC)

A
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 13 dari 16

Memeriksa apakah M penuh

Pencarian per baris M


ispenuh = true
i=0

ispenuh==true && i<3


false

true
Pencarian
per kolom M j=0

ispenuh==true && j<3


false

j=j+1
true

false M[i][j]==

true

ispenuh = false

false ispenuh==true

true

i=i+1

true ispenuh==true false

B Output (Matriks belum


penuh)

C Selesai
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 14 dari 16

Penulisan elemen M dengan spasi

Penelusuran
i=0
per baris M

i<3
false

true

Penelusuran
per kolom M j=0

false j<3

true
M penuh
true false
output(M[i][j])

j=j+1

i=i+1

Catatan Alternatif Solusi:


- Tingkat kedetilan algoritma dengan flowchart bisa bervariasi (tidak harus seglobal/sedetil contoh di atas). Yang
penting dapat menggambarkan proses yang ada dengan urutan yang benar.
- Alternatif solusi termasuk: penggunaan fungsi/prosedur dan pemanfaatan jenis loop yang berbeda.
- Alternatif untuk algoritma pencarian (searching) untuk menyatakan M penuh atau tidak adalah dengan
memanfaatkan teknik counting (menghitung berapa banyak elemen M yang X/O atau berapa banyak yang spasi,
sebagaimana dibahas di kuliah).

CARA PENILAIAN
Cocokkan hasil koreksi dengan Rubrik Penilaian di bawah ini.

RUBRIK PENILAIAN
Nilai Deskripsi Indeks
4,1 Flowchart detil dan sempurna A+
4 Sempurna, termasuk menuliskan spesifikasi program dengan baik (dalam bentuk komentar) A
Boleh ada kesalahan yang sangat kecil pada program, misalnya kurang ;
3,5 Deskripsi solusi dengan flowchart secara umum benar, tetapi masih ada kesalahan-kesalahan AB
sintaks minor, termasuk tidak lengkap menuliskan kamus dan spesifikasi.
3 Deskripsi solusi dengan flowchart secara umum benar, tetapi ada 1 kesalahan major, misalnya B
deskripsi kamus tidak, tapi program sempurna atau ada kesalahan sintaks yang banyak tapi
solusi secara umum benar.
2,5 Deskripsi solusi dengan flowchart secara umum benar, tetapi ada beberapa kesalahan yang BC
sifatnya major, misalnya tidak ada kamus sama sekali, atau kesalahan sintaks yang cukup
parah.
2 Sekitar setengah bagian dari solusi salah, tapi sintaks masih cukup baik. C
1,5 Sekitar setengah bagian dari solusi salah dan ada kesalahan sintaks yang parah. CD
1 Sebagian besar solusi salah, tetapi masih ada beberapa hal yang benar. D
0,5 Hanya ada 1 bagian yang dikerjakan dan benar DE
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 15 dari 16

Nilai Deskripsi Indeks


0 Tidak mengerjakan atau salah total E

Soal 4b
Alternatif Program C++ (Berdasarkan Flowchart Detil)
// Program XOGame
// Mendeklarasikan sebuah matriks of char 3x3
// Mengisi matriks dengan nilai X atau O berdasarkan masukan pengguna
// Pembacaan dihentikan jika pengguna memasukkan #
// Jika matriks penuh, dituliskan isi matriks.
// Jika matriks belum penuh, dituliskan pesan "Matriks belum penuh"

#include <iostream>
using namespace std;

int main () {
// KAMUS
char M[3][3];
char cc;
bool ispenuh;
int i, j;

// ALGORITMA
// Inisialisasi matriks dengan space
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
M[i][j] = ' ';
}
}

// Input isi matriks sampai pengguna mengetikkan #


cin >> cc;
while (cc != '#') {
cin >> i >> j;
M[i][j] = cc;
cin >> cc;
} // cc = #

// Memeriksa apakah matriks penuh dengan teknik searching


ispenuh = true;
i = 0;
while (i < 3 && ispenuh) { // atau: while (i < 3 && ispenuh == true) {
j = 0;
while (j < 3 && ispenuh) { // atau: while (j < 3 && ispenuh == true) {
if (M[i][j] == ' ') {
ispenuh = false;
} else {
j++;
}
}
if (ispenuh) {
i++;
}
}

// Mencetak isi matriks atau mencetak pesan matriks belum penuh


if (!ispenuh) { // Matriks belum penuh; atau: ispenuh == false
cout << "Matriks belum penuh" << endl;
} else { // Matriks penuh
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
cout << M[i][j] << " ";
}
cout << endl;
}
}
UAS KU1072/Pengenalan Teknologi Informasi B RUBRIK PENILAIAN
Tanggal: 19 Desember 2015
Halaman 16 dari 16

return 0;
}

CARA PENILAIAN
Cocokkan hasil koreksi dengan Rubrik Penilaian di bawah ini.

RUBRIK PENILAIAN
Nilai Deskripsi Indeks
4 Sempurna, sesuai dengan flowchart. A
Boleh ada kesalahan yang sangat kecil pada program, misalnya kurang ;
3,5 Deskripsi solusi secara umum benar dan sesuai dengan flowchart, tetapi masih ada kesalahan- AB
kesalahan sintaks minor, termasuk tidak lengkap menuliskan kamus dan spesifikasi.
Deskripsi solusi benar sempurna atau secara umum benar, tetapi tidak sesuai dengan flowchart
atau flowchart tidak ada.
Catatan: Penilaian berikutnya tidak mempertimbangkan apakah sesuai dengan flowchart atau tidak
3 Deskripsi solusi secara umum benar, tetapi ada 1 kesalahan major, misalnya deskripsi kamus B
tidak, tapi program sempurna; atau ada kesalahan sintaks yang banyak tapi solusi secara umum
benar.
2,5 Deskripsi solusi secara umum benar, tetapi ada beberapa kesalahan yang sifatnya major, BC
misalnya tidak ada kamus sama sekali; atau kesalahan sintaks yang cukup parah.
2 Sekitar setengah bagian dari solusi salah, tapi sintaks masih cukup baik. C
1,5 Sekitar setengah bagian dari solusi salah dan ada kesalahan sintaks yang parah. CD
1 Sebagian besar solusi salah, tetapi masih ada beberapa hal yang benar. D
0,5 Hanya ada 1 bagian yang dikerjakan dan benar DE
0 Tidak mengerjakan atau salah total E

Anda mungkin juga menyukai