UJIAN TENGAH SEMESTER GANJIL TAHUN 2012 – 2013 STMIK AMIKOM YOGYAKARTA Mata Ujian Kelas Sifat Jurusan Hari dan Tanggal Waktu Dosen Pengampu
: : : : : : :
Algoritma dan Pemrograman 12-S1TI-12 s/d 14 Open Book (Close Laptop) S1 Teknik Informatika Senin, 05 November 2012 10.30 – 12.10 (100 menit) Sidiq Wahyu, S.T., M.Kom.
Berdoalah sebelum mengerjakan soal (soal terdiri dari pilihan ganda dan esai) Bacalah soal dengan teliti, jangan tergesa – gesa Kerjakanlah dahulu soal yang dianggap paling mudah Hanya lembar jawaban saja yang dikumpulkan Boleh dikerjakan soal esai nya dulu
a. Pilihan Ganda (15 Soal, nilai Maksimal 30) 1. Di bawah ini termasuk tipe data numerik adalah a. Char dan String b. Float dan String c. Integer dan Float
d. Boolean dan Integer
2. Di antara nilai – nilai berikut ini yang termasuk tipe data Char adalah a. ‘1’, ‘2’, ‘3’, ‘4’, ‘5’ b. “1, 2, 3, 4, 5” c. 1, 2, 3, 4, 5 d. “12345” 3. Perhatikan pernyataan berikut ini: 2 + 3 * (6 – (6 – 8 / 2)) – (7 % 5) * 7 Berapakah nilai dari pernyataan di atas jika di run menggunakan compiler? a. 126 b. 0 c. 9 d. 231 4. Perhatikan tabel berikut ini A B NOT A OR B true true ...(x)
NOT (A AND NOT B) ...(y)
NOT A XOR B ...(z)
Nilai untuk x, y, dan z masing – masin adalah a. true, false, true b. false, true, true c. false, false, false
d. true, true, true
5. Berikut ini adalah notasi – notasi yang digunakan untuk menuliskan algoritma a. kalimat deskriptif, flow chart, pseudopodia b. kalimat deskriptif, flow chart, pseudochart c. pseudocode, flow chart, kalimat deskriptif d. programming language, flow chart
6. Perhatikan potongan notasi algoritma berikut: ... 1. Masukkan isi ember A ke ember C 2. Masukkan isi ember B ke ember A 3. Masukkan isi ember C ke ember B Notasi tersebut termasuk a. kalimat deskriptif b. flow chart
c. pseudocode
d. programming language
c. 2 dan 9
d. 2 dan 14
7. Perhatikan potongan pseudocode berikut ini DEKLARASI A,B,C,D: Integer ALGORITMA A ← 5 B ← 2 C ← A / B D ← A + C * 2 Nilai C dan D masing – masing adalah a. 2.5 dan 15 b. 2.5 dan 25
8. Berikut ini termasuk dalam struktur kontrol keputusan a. IF, IF ELSE, WHILE b. IF, SWITCH, WHILE c. FOR, WHILE, DO WHILE d. IF, IF ELSE, SWITCH 9. Perhatikan potongan pseudocode berikut x ← 3 y ← 5 IF (x < y AND (x + 2) < y) = false THEN x ← x + y y ← y – x END IF z ← x + y Berapakah nilai z? a. 5 b. 8 c. 10 d. 0
10. Perhatikan potongan pseudocode berikut
SWITCH x CASE 4: Write(‘Sangat’) CASE 3: Write(‘Memuaskan’) BREAK CASE 2: Write(‘Cukup’) BREAK CASE 0: Write(‘Sangat’) CASE 1: DEFAULT: Write(‘Kurang’) END SWITCH Bila x bernilai 5, maka outputnya adalah (PERHATIKAN LETAK BREAK) a. Sangat Memuaskan b. Sangat c. Kurang d. (tidak ada output) atau press any key to continue 11. Perhatikan potongan pseudocode berikut x ← false DO x ← NOT x WHILE x Berapa kalikah terjadi perulangan? a. tidak terjadi perulangan b. perulangan tidak berhenti c. 1 kali d. 2 kali Untuk soal nomor 12 s/d 15, perhatikan pseudocode berikut ini PROGRAM Min {Mencari nilai terkecil dari 5 input bilangan} DEKLARASI Min, i, n: Integer ALGORITMA Min ← 0 FOR i ← 0 TO 4 Read(n) IF n < Min THEN Min ← n END IF END FOR Write(Min) 12. Variabel manakah yang digunakan untuk menampung input?
a. Min
b. i
13. Berapa kalikah terjadi perulangan? a. 5 b. 4
c. n
d. Integer
c. 1
d. 0
14. Bila diberikan input: 5, 3, -2, 8, 1 maka nilai Min adalah a. 1 b. -2 c. 0
d. 8
15. Bila diberikan input: 4, 1, 5, 2, 1 maka nilai Min adalah a. 1 b. 0 c. 5
d. 4
b. Soal Esai (3 Soal, nilai maksimal 70) 16. Perhatikan dengan baik program di bawah ini (soal tentang tipe data, variabel, operator, & input-output standar) : (nilai 20) #include <stdio.h> int main() { int a, b, c, d; printf("Masukkan bilangan 1 :\n");scanf("%d", &a); printf("Masukkan bilangan 2 :\n");scanf("%d", &b); printf("a = %d\nb = %d\n", a, b); // operasi logika printf("a > b : %d\n", a > b); printf("a < b : %d\n", a < b); printf("a == b : %d\n", a == b); printf("a != b : %d\n", a != b); c = a == b; printf("c : %d\n", c); printf("!c : %d", !c); return 0; } Tampilkan dengan runtut outputnya mulai dari awal program sampai akhir program. Disertai dengan komentar penjelasan program akan lebih baik. 17. Perhatikan dengan baik program di bawah ini (soal tentang struktur kontrol keputusan, tipe data, variabel, operator, & input-output standar): (nilai 20) #include <stdio.h>
int main() { float ipk; printf("Nilai IPK : "); scanf("%f",&Ipk); if(ipk >= 2.00 & ipk <=2.75) { printf("Lulus Memuaskan"); } else if(ipk > 2.75 & ipk <=3.50) { printf("Lulus Sangat Memuaskan"); } else if (ipk > 3.50 & ipk <=4.00) { printf("Lulus dengan Pujian(Cumlaude)"); else if { printf("Data IPK tidak valid"); } getch(); } a. Program diatas merupakan program yang digunakan untuk apa? b. Jika program diatas di run, maka akan terjadi error, ada berapa banyak jumlah error nya?? c. Tunjukkan letak error program diatas, dan lengkapi/revisi script nya supaya jika dijalankan, tidak ada error lagi d. Setelah program diperbaiki dan bisa di run, jika kita masukkan nilai IPK 2 (bukan 2.00), kirakira outputnya apa (Ingat, type data ipk adalah FLOAT)? 18. Perhatikan dengan baik program di bawah ini (soal tentang struktur kontrol perulangan, hati-hati, soal ini berbeda dengan saat latihan soal di kelas): (nilai 30) #include <stdio.h> int main() { int i, j, t; printf("-- Program bangun datar matematika --\n"); printf("tinggi: "); scanf("%d", &t); // struktur for bersarang for(i = 1; i <= t; i++) { for(j = t-i; j >= 1; j--) { printf(" "); } for(j = 1; j <= i; j++) {
printf("*"); } printf("\n"); } return 0; } a. Teman-teman tentu tahu (seperti yang sudah dicoba saat praktikum di lab), jika program diatas dijalankan (dengan masukan tingginya 6) maka outputnya adalah segitiga siku-siku bergambar * seperti gambar berikut :
Jika kita tambahkan 3 perulangan lagi di sebelum script printf seperti berikut (PERHATIKAN EKSPRESI DI DALAM TANDA () MILIK FOR, ADA YANG SAMA DENGAN FOR LAINNYA, ITU KUNCINYA UNTUK MENJAWAB SOAL INI): #include <stdio.h> int main() { int i, j, t; printf("-- Program bangun datar matematika --\n"); printf("tinggi: "); scanf("%d", &t); // struktur for bersarang for(i = 1; i <= t; i++) { for(j = t-i; j >= 1; j--) { printf(" "); } for(j = 1; j <= i; j++) { printf("*"); } // kita tambahkan 3 for di bawah ini (hati-hati, //soal ini berbeda dengan saat latihan soal di kelas) for(j = t-i; j >= 1; j--) { printf("#"); } for(j = 1; j <= i; j++) { printf("@"); }
for(j = 1; j <= i; j++) { printf("*"); } // penambahan for cukup sampai disini printf("\n"); } return 0; } Outputnya menjadi seperti apa (menjadi bangun datar apa)?? Silahkan masukkan tinggi sesuai keinginan kalian (tidak harus 6). Dan gambarkan outputnya! b. Kenapa bisa muncul output seperti jawaban yang sudah digambarkan pada pertanyaan a?? Jelaskan dengan singkat namun runtut! c. Dengan memodifikasi script diatas, kita bisa membuat bangun datar apa lagi? Sebutkan saja bangun datarnya (kalau mau digambarkan juga lebih baik)!
c. Tuliskan kesulitan Anda dalam belajar Algoritma dan Pemrograman.
Nilai UTS = Nilai soal pilihan ganda (maksimal 30) + Nilai soal esai (maksimal 70) = maksimal 100
Semoga sukses ya!