Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

11
Soal 1. Jawaban singkat Jelaskan maksud instruksi-instruksi dalam bahasa Pascal 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. typedef struct { string NIM; string Nama; string MataKul[100]; } Mahasiswa; 1. b. i = -2; do { cout << i+1 << endl; i = i + 4; } while (i <= 8); 1. c. bool found; 1. d. sum = sum + 1; 1. e. if (temp <= 0) { cout << "padat"; } else if (temp <= 100) { cout << "cair"; } else { cout << "gas"; } Tuliskan penjelasan instruksi-instruksi di atas di bagian kosong di bawah ini dan di halaman kosong sebaliknya (jika perlu). ALTERNATIF JAWABAN: No . Instruksi 1. a. Instruksi untuk mendeklarasikan sebuah tipe bentukan bernama Mahasiswa, di mana tipe bentukan tersebut terdiri atas tiga komponen, yaitu: - komponen pertama bernama NIM, dengan tipe nya adalah String; - komponen kedua bernama Nama, dengan tipe nya adalah String; - komponen ketiga bernama MKul, dengan tipe nya adalah sebuah array berukuran 100, dimulai dari indeks 1 dan berakhir di indeks 100, dengan tipe setiap elemen array adalah String. 1. b. Instruksi yang memberikan assignment nilai pada variabel bernama i, dengan sebuah nilai -2, kemudian melakukan pengulangan MINIMAL satu kali; di dalam pengulangan tersebut program akan menuliskan ke layar diikuti enter (atau pindah baris) nilai i+1, kemudian increment nilai i sebanyak 4; dan pengulangan berhenti saat nilai i

description

pti

Transcript of Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

Page 1: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

Soal 1. Jawaban singkat Jelaskan maksud instruksi-instruksi dalam bahasa Pascal di bawah ini. Instruksi ini bisa muncul di bagian mana pun dari suatu program.

Contoh soal:No. Instruksi1.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. Instruksi1.a. typedef struct {

string NIM; string Nama; string MataKul[100];} Mahasiswa;

1.b. i = -2;do {

cout << i+1 << endl;i = i + 4;

} while (i <= 8);1.c. bool found;1.d. sum = sum + 1;1.e. if (temp <= 0) {

cout << "padat";} else if (temp <= 100) {

cout << "cair";} else {

cout << "gas";}

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

ALTERNATIF JAWABAN:No. Instruksi1.a. Instruksi untuk mendeklarasikan sebuah tipe bentukan bernama Mahasiswa, di mana

tipe bentukan tersebut terdiri atas tiga komponen, yaitu:- komponen pertama bernama NIM, dengan tipe nya adalah String;- komponen kedua bernama Nama, dengan tipe nya adalah String;- komponen ketiga bernama MKul, dengan tipe nya adalah sebuah array berukuran 100, dimulai dari indeks 1 dan berakhir di indeks 100, dengan tipe setiap elemen array adalah String.

1.b. Instruksi yang memberikan assignment nilai pada variabel bernama i, dengan sebuah nilai -2, kemudian melakukan pengulangan MINIMAL satu kali; di dalam pengulangan tersebut program akan menuliskan ke layar diikuti enter (atau pindah baris) nilai i+1, kemudian increment nilai i sebanyak 4; dan pengulangan berhenti saat nilai i sidah lebih besar dari 8. Pada saat instruksi tersebut dijalankan, maka hasi yang diperoleh adalah:-134

1.c. Instruksi untuk mendeklarasikan sebuah variabel bernama found dengan tipe boolean (bool).

1.d. Instruksi berupa assignment nilai kepada variabel sum, penambahan nilai sebanyak 1 terhadap nilai variabel sum sebelumnya.

1.e. Instruksi if-else adalah instruksi kondisional (analisis kasus) dengan aksi-aksi dieksekusi tergantung pada kondisi-kondisi yang ditentukan oleh nilai dari suatu variabel, dalam hal ini variabel temp (bertipe integer/ real).Kondisi pertama adalah temp <= 0. Aksi yang dijalankan jika temp <= 0 adalah mencetak ke layar "padat" melalui instruksiif (temp <= 0) {

cout << "padat";}Kondisi kedua adalah temp > 0 dan tempat <= 100. Aksi yang dijalankan jika adalah mencetak ke layar "cair" melalui instruksi

Page 2: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

} else if (temp <= 100) {cout << "cair";

}Kondisi terakhir dinyatakan dalam instruksi else yang artinya jika bilangan_dua bernilai apapun selain 1 atau 2. Jika temp berada pada rentang nilai > 100, maka aksi yang dilakukan adalah mencetak "gas" melalui instruksielse {

cout << "gas";}

Page 3: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

Soal 2. Hasil Eksekusi Program a. Tuliskan keluaran (apa yang tercetak di layar) dari program-program di bawah ini pada kotak kosong di samping

kanan program. Jika tidak ada yang tertulis di layar, tuliskan: Tidak ada keluaran. Semua komentar program sengaja dihilangkan. Program-program di bawah ini sudah dipastikan lolos kompilasi.

No. Program Keluaran

2.a.#include <iostream>using namespace std;

int main () {const string xx = "indah";const string yy = "menarik";

int a, b, c;

a = 113;b = 72;if (a % 10 > 5) {

cout << xx;c = a;a = b;b = c;if (a % 10 < 5)

cout << "tidak " << yy;else

cout << " tapi " << yy;} else {

cout << "tidak " << xx;c = a;a = b;b = c;if (b % 10 < 5)

cout << " tapi " << yy;else

cout << " tidak" << yy;}return 0;

}

tidak indah tapi menarik

2.b.#include <iostream>using namespace std;

bool tes (int a);

int main () {int i, sum;i = -3;sum = 0;while (i <= 10) {

if (tes(i))sum = sum + 2;

elsesum = sum + 1;

i = i + 4;cout << i << endl;

}cout << sum << endl;return 0;

}bool tes (int a) {

return ((a > -1) && (a < 5));}

159135

2.c.#include <iostream>using namespace std; Tidak ada keluaran.

Page 4: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

No. Program Keluaran

int main () {int x;x = 123; jika di mod hasilnya 3, jadi

tidak masuk ke whilewhile ((x % 10 > 3) && (x > 100)) {

cout << x << " ";x = x - 10;

}return 0;

}

2.d. #include <iostream>using namespace std;

typedef int TTab[5];

int main () {TTab Tab;int i;bool f;

Tab[1] = -3;Tab[2] = 0;Tab[3] = 50;Tab[4] = 100;Tab[5] = 105; seharusnya tidak adaf = false;i = 1;while ((i <= 5) && !f) { if ((Tab[i] > 100) || (Tab[i] < 0)) {

cout << i << Tab[i] << endl;f = true;

} elsei = i + 1;

}if (f) cout << "TRUE" << endl;else cout << "FALSE" << endl;return 0;

}

1-3TRUE

Soal 3. Pangkat dan Array of Float 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 Hasil Pangkat(x,n)X n

1 2 12 0 12 5 324 3 645 1 5

Lengkapilah fungsi Pangkat di bawah ini sesuai spesifikasi di atas. Perhitungan pangkat harus dilakukan dengan menggunakan loop, tidak dengan cara memanggil fungsi/prosedur lain, misalnya dari library.

// ALTERNATIF JAWABAN

Page 5: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

int Pangkat ( int x, int n );

// Tuliskan spesifikasi/penjelasan fungsi di bawah ini (dalam bentuk komentar)

// Fungsi yang menerima dua buah integer, x dan n, dan menghasilkan nilai x // pangkat n

{ // KAMUS LOKAL

int i;int hasil;

// ALGORITMA

if ( n == 0) {hasil = 1;

} else { // n > 0hasil = 1;for (i = 1; i <= n; i++) {

hasil = hasil * x;}

end;return hasil;

end;

b. Di bawah ini adalah sebuah program yang digunakan untuk mengelola sebuah array of bilangan riil, yaitu TF, dan digunakan untuk menuliskan ada berapa banyak bilangan dalam TF yang lebih besar dari suatu nilai riil X dan menuliskan nilai minimum dan 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 menghitung nilai TF yang lebih besar dari X digunakan functionCountLebihBesar, sedangkan untuk mendapatkan nilai minimum dan maksimum dalam TF, digunakan procedure CariMinMax.

Contoh masukan dan keluaran program:Input

(isi variabel program utama) Output(Tertulis di layar, format penulisan bilangan riil bebas)TF XIndeks Nilai

12345678910

02.514.10-24.1021.24.50

4 Banyaknya bilangan > 4 = 4Nilai minimum = -2Nilai maksimum = 21.2

12345678910

012.514.1004.101.24.50

14.5 Banyaknya bilangan > 14.5 = 0Nilai minimum = 0Nilai maksimum = 14.1

Lengkapilah program di bawah ini. Bacalah instruksi yang tertulis dalam komentar dengan baik.

// Program ArrayFloat// Menuliskan ke layar berapa banyak nilai suatu array of float yang lebih besar// dari X dan menuliskan nilai minimum dan maksimum dari elemen array

Page 6: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

#include <iostream>using namespace std;

// KAMUS GLOBAL

// Konstantaconst int NMax = 10;

// Variabel// Deklarasi array of floatfloat TF[NMax];

// Deklarasi fungsi dan prosedur

int CountLebihBesar (float X);// Menghitung banyaknya nilai dalam TF yang lebih besar dari X

void CariMinMax (float * min, float * max);// Menghasilkan nilai minimum dan maksimum dalam TF// I.S.: TF sudah terdefinisi// F.S.: min berisi nilai minimum TF dan max berisi nilai maksimum TF

// ALGORITMA PROGRAM UTAMAint main () {

// Lengkapi dengan deklarasi variabel-variabel lain yang dibutuhkan

int i; int counter; // tidak harus, tergantung algoritmanya float X; float max, min;

// Membaca isi array TF dari pengguna for (i = 0; i < NMax; i++) {

cin >> TF[i]; }

// Menerima masukan X dari keyboard cin >> X;

// Tuliskan di bawah ini: instruksi untuk menuliskan banyaknya nilai TF // yang lebih besar dari X dengan pemanggilan fungsi CountLebihBesar. // Perhatikan format penulisan pada contoh.

counter = CountLebihBesar(X); cout << "Banyaknya Bilangan > " << X << " = " << counter << endl;

// Alternatif: // cout << "Banyaknya bilangan > " << X << " = " << CountLebihBesar(X) << // endl;

// Tuliskan di bawah ini: instruksi untuk menuliskan nilai minimum dan // maksimum TF dengan cara memanggil prosedur CariMinMax dan menuliskan // hasilnya ke layar. Perhatikan format penulisan pada contoh.

CariMinMax(&min, &max); cout << "Nilai minimum = " << min << endl; cout << "Nilai maksimum = " << max << endl;

return 0;}

// Implementasi Fungsi dan Prosedur

Page 7: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

int CountLebihBesar (float X)// Menghitung banyaknya nilai dalam TF yang lebih besar dari X{ // Kamus Lokal, lengkapi dengan deklarasi variabel lokal yang dibutuhkan

int i, count;

// Algoritma

i = 1; count = 0; while (i <= NMax) { if (TF[i] > X) count = count + 1;

i = i + 1; } return count;

}

void CariMinMax (float * min, float * max)// Menghasilkan nilai minimum dan maksimum dalam TF// I.S.: TF sudah terdefinisi// F.S.: min berisi nilai minimum TF dan max berisi nilai maksimum TF{ // Kamus Lokal, lengkapi dengan deklarasi variabel lokal yang dibutuhkan

int i;

// Algoritma

*min = TF[1]; *max = TF[1]; i = 2; while (i <= NMax) { if (TF[i] > *max) *max = TF[i]; if (TF[i] < *min) *min = TF[i]; i = i + 1; }

}

Soal 4. Data Nilai Sebuah kuliah memberikan nilai akhir kepada setiap mahasiswanya dalam bentuk angka dari 0 s.d. 100. Nilai-nilai sebuah kuliah mahasiswa di sebuah kelas disimpan dalam sebuah array of integer. Ada 50 mahasiswa dalam kelas. Contoh data nilai mahasiswa yang disimpan dalam sebuah array (sengaja tidak ditulis lengkap agar ringkas dalam penulisan soal) adalah:

0 100 95 50 77 80 … 401 2 3 4 5 6 … 50

Ditentukan untuk bisa lulus pada mata kuliah tersebut, mahasiswa harus mendapatkan nilai ≥ 55. Terhadap data tersebut, dosen ingin mengetahui beberapa hal, yaitu: berapa banyak mahasiswa yang lulus, berapa banyak mahasiswa yang tidak lulus, dan berapa nilai rata-rata kelas.

Sebuah program digunakan untuk membaca sejumlah data nilai mahasiswa sebuah kelas dari keyboard (masukan pengguna) dan menyimpannya ke sebuah array of integer, misalnya TabNilai, dengan ukuran 50. Pembacaan nilai dihentikan jika seluruh TabNilai penuh. Pada saat memasukkan nilai untuk setiap elemen tabel, harus diperiksa bahwa masukan nilai benar, yaitu antara 0 s.d. 100. Jika masukan nilai salah, maka berikan pesan kesalahan, yaitu “Masukan salah”, dan pembacaan masukan untuk elemen tersebut harus diulangi sampai didapatkan nilai yang benar.

Selanjutnya, program menerima masukan pilihan dari pengguna, yaitu angka 1, 2, atau 3. Jika pilihan = 1, maka program menuliskan ada berapa banyak mahasiswa yang lulus.Jika pilihan = 2, maka program menuliskan ada berapa banyak mahasiswa yang tidak lulus.

Page 8: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

Jika pilihan = 3, maka program menuliskan nilai rata-rata kelas.Jika pengguna memasukkan pilihan selain 1, 2, atau 3, tuliskan ke layar: “Masukan pilihan salah”.

a. Sebuah program pada dasarnya terdiri atas: INPUT, PROSES, OUTPUT. Untuk persoalan di atas, jelaskan apa saja yang menjadi INPUT, apa saja yang menjadi OUTPUT, dan bagaimana PROSES untuk mentransformasi INPUT menjadi OUTPUT. Boleh memanfaatkan flow chart (tidak harus).

b. Buatlah program untuk persoalan di atas dalam Bahasa Pascal.

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

Alternatif Soal 3.a.INPUT :

1. Sekumpulan data nilai mahasiswa (nilai bertype integer), disimpan dalam array of integer (TabNilai). Pemrosesan input adalah dengan memanfaatkan loop mulai dari indeks pertama TabNilai (1) s.d. indeks terakhir TabNilai (50) untuk membaca isi tiap elemen TabNilai dari keyboard. Pada saat memasukkan nilai untuk setiap elemen tabel, harus diperiksa bahwa masukan nilai benar, yaitu antara 0 s.d. 100. Jika masukan nilai salah, maka berikan pesan kesalahan, yaitu “Masukan salah”, dan pembacaan masukan untuk elemen tersebut harus diulangi sampai didapatkan nilai yang benar.

2. Pilihan menu dari pengguna, berupa nilai integer 1, 2, 3 atau yang lain.OUTPUT:

1. Berapa banyak mahasiswa yang lulus2. Berapa banyak mahasiswa yang tidak lulus3. Nilai rata-rata kelas4. Pesan kesalahan (jika ada kesalahan pilihan menu): “Masukan pilihan salah”.

PROSES (transformasi dari INPUT menjadi OUTPUT):Setelah didapatkan data input berupa TabNilai dan pilihan menu, maka:

1. Jika pilihan menu = 1, maka disiapkan counter bernilai 0. counter dipakai untuk menampung banyaknya nilai yang dinyatakan lulus. Selanjutnya dilakukan loop (traversal) terhadap setiap elemen TabNilai dari indeks 1 s.d. 50. Untuk setiap elemen diperiksa apakah elemen tersebut bernilai >= 55. Jika ya, maka counter ditambah 1 nilainya (di-increment). Jika tidak, tidak dilakukan apa pun. Setelah seluruh elemen diperiksa, dituliskan ke layar nilai counter yang menyatakan berapa banyak mahasiswa yang lulus.

2. Jika pilihan menu = 2, maka disiapkan counter bernilai 0. counter dipakai untuk menampung banyaknya nilai yang dinyatakan tidak lulus. Selanjutnya, dilakukan loop (traversal) terhadap setiap elemen TabNilai dari indeks 1 s.d. 50. Untuk setiap elemen diperiksa apakah elemen tersebut bernilai < 55. Jika ya, maka counter ditambah 1 nilainya (di-increment). Jika tidak, tidak dilakukan apa pun. Setelah seluruh elemen diperiksa, dituliskan ke layar nilai counter yang menyatakan berapa banyak mahasiswa yang tidak lulus.

3. Jika pilihan menu = 1, maka disiapkan sum bernilai 0. sum dipakai untuk menampung banyaknya nilai yang nilai total seluruh elemen. Selanjutnya, dilakukan loop (traversal) terhadap setiap elemen TabNilai dari indeks 1 s.d. 50. Untuk setiap elemen, sum ditambahkan dengan nilai elemen saat itu. Setelah seluruh elemen dikunjungi, dilakukan perhitungan rata-rata dengan cara membagi sum dengan 50 dan hasilnya ditampilkan ke layar.

4. Jika pilihan menu selain 1, 2, atau 3, maka dituliskan ke layar “Masukan pilihan salah”.

Alternatif Soal 3.b.

// Program DataNilai// Mengelola data nilai mahasiswa dalam array of integer

#include <iostream>using namespace std;

int main () {// KAMUSconst int NMax = 10; //Tidak harus menggunakan konstantaint TabNilai[NMax];int i, count, sum;int X;int pil;

// ALGORITMA

Page 9: Rubrik Penilaian KU1072 UTS Sem1 1415 CPP 221114

// Pemrosesan Inputfor (i=0; i<NMax; i++) {

cin >> X;while (X < 0 || X > 100) {

cout << "Masukan salah" << endl;cin >> X;

}TabNilai[i] = X;

}cout << "Masukkan pilihan menu = ";cin >> pil;

// Proses dan Outputswitch (pil) {

case 1 : count = 0; for (i = 0; i < NMax; i++) {

if (TabNilai[i] >= 55) {count++;

} } cout << "Mahasiswa yang lulus = " << count << endl; break;

case 2 : count = 0; for (i = 0; i < NMax; i++) {

if (TabNilai[i] < 55) {count++;

} } cout << "Mahasiswa yang tidak lulus = " << count << endl;

break;case 3 : sum = 0;

for (i = 0; i < NMax; i++) { sum = sum + TabNilai[i];

} cout << "Rata-rata kelas = " << (float)sum/(float)NMax << endl;

break;default : cout << "Masukan pilihan salah " << endl;

}return 0;

}