Anda di halaman 1dari 10

UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________

Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________


Halaman 1 dari 10 Kelas: _________________________________

UJIAN TENGAH SEMESTER


KU1072/PENGENALAN TEKNOLOGI INFORMASI B
SEM. 1 2015/2016

HARI, TANGGAL : SABTU, 7 NOVEMBER 2015

SIFAT UJIAN : INDIVIDUAL DAN CLOSED BOOK

DURASI : 120 MENIT

BAHASA : MATLAB

FAK./SEK. : FTMD (Khusus Kelas 16)

BACALAH PETUNJUK INI SEBELUM UJIAN DIMULAI :

1. JANGAN BUKA HALAMAN BERIKUTNYA SEBELUM UJIAN DIMULAI!

2. SETELAH UJIAN DIMULAI:

a. Cek apakah Anda sudah mendapatkan 10 lembar soal (termasuk lembar ini) yaitu dari halaman 1
s.d. 10. Jika Anda tidak mendapatkan lembar yang benar, tukarkan kepada pengawas.
b. Lembar soal adalah sekaligus lembar jawaban. Tidak disediakan lembar jawaban terpisah.
c. Tuliskan NIM, Nama, dan Kelas, pada tiap lembar soal pada tempat di pojok kanan atas.
d. Baca dulu semua soal berikut semua petunjuknya sebelum mengerjakan. Baca semua
instruksi dengan sebaik-baiknya.
e. Kerjakan dulu soal yang Anda anggap mudah.
f. Tuliskan jawaban soal pada tempat-tempat yang disediakan sesuai instruksi soal. Jika Anda
membutuhkan tambahan tempat untuk menjawab, gunakan halaman-halaman kosong yang ada
pada lembar soal sesuai petunjuk dan jangan lupa menuliskan nomor soal dengan jelas. Jika Anda
membutuhkan lembar corat-coret, gunakan juga halaman-halaman kosong yang tersisa pada pada
lembar soal.

3. Tidak ada pertanyaan untuk semua soal. Buat asumsi sendiri jika ada soal yang menurut Anda tidak jelas
dan tuliskan asumsi Anda bersama jawaban Anda.

SELAMAT MENGERJAKAN. SEMOGA SUKSES. 


UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 2 dari 10 Kelas: _________________________________

Soal 1. Pilihan Jawaban dan Jawaban Singkat [Bobot : 20%]


Soal 1.a. Pilihan Jawaban
Petunjuk:
Beri lingkaran pada huruf pilihan yang benar dan beri tanda silang pada huruf untuk pilihan jawaban yang salah.
Contoh cara menjawab:
1. Dalam kamus suatu program kita dapat mendeklarasikan:
a. Variabel
b. Instruksi pengulangan
c. Instruksi input/output
d. Konstanta

Jawablah semua pertanyaan di bawah ini sesuai petunjuk di atas:


1. Manakah pernyataan yang benar?
a. Berpikir komputasional adalah proses berpikir yang melibatkan cara memformulasikan masalah dan solusinya
yang direpresentasikan dalam bentuk yang dapat diproses oleh komputer.
b. Salah satu teknik dalam berpikir komputasional adalah dekomposisi persoalan.
c. Abstraksi adalah kemampuan menyaring informasi yang tidak diperlukan dalam proses pemecahan masalah.
d. Pemrograman prosedural melibatkan pemecahan masalah dengan mengelompokkan objek-objek sejenis ke
dalam kelas.
2. Manakah pernyataan yang benar?
a. Variabel adalah suatu nama yang digunakan untuk menyimpan suatu nilai bertipe tertentu.
b. 3Orang adalah contoh nama variabel yang baik.
c. Himpunan nilai yang diperbolehkan untuk type data char (character) adalah semua alfabet ‘a’ s.d. ‘z’ dan
‘A’ s.d. ‘Z’
d. Perintah assignment ditandai dengan operator =
3. Perhatikan potongan program berikut:
temp = 10; %temp bertipe integer
if (temp <= 0)
disp(‘padat’);
else if (temp <= 100)
disp(‘cair’);
else
disp(‘gas’);
end
end

Manakah yang benar?


a. temp adalah variabel c. Di layar tertulis cair
b. Nilai yang dapat diisikan pada temp adalah d. Di akhir potongan program, nilai temp = 10
bilangan riil
4. Perhatikan potongan program berikut:
i = -2; %i bertipe integer
flag=true;
while (flag==true)
fprintf(‘%d\n’,i+1);
i = i + 4;
if (i>8)
flag=false;
end
end
Keterangan: Arti dari ‘%d\n’,i+1 adalah: menuliskan i+1 ke layar (%d) lalu memberi satu spasi baris ke
bawah (\n). Ekivalen dengan: disp([num2str(i+1)])
Dari pernyataan di bawah ini, manakah yang benar?
a. Nilai i di akhir potongan program = 4 c. i adalah sebuah konstanta
b. Tercetak di layar: d. cout adalah perintah untuk membaca input dari
-1 keyboard
3
4
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 3 dari 10 Kelas: _________________________________

Soal 1.b. Jawaban Singkat


Perhatikan kamus program di bawah ini:
% Kamus Variabel
persen = 60;
GajiTotal = 0;
GajiPokok = 0;
Tunjangan = 0;
PotGaji = 0;
MID1 = int16(0);
MID2 = int16(0);
urutan = int16(0);
ranking = int16(0);
CC1=’c’;
CC2=’d’;
Message=’pesan’;
found=true;

Berikut ini adalah contoh ekspresi dalam notasi MATLAB untuk kamus di atas. Periksalah apakah ekspresi yang
dituliskan benar. Jika benar, tentukan type hasilnya. Jika salah, berikan komentar mengapa salah. Lihat contoh pada no.
1 dan 2.

No. Ekspresi Jawaban Type Hasil / Komentar


1 urutan – 1 Benar int
2 Message * 4 Salah Message bertype string. Operasi * bukan operasi yang
tepat untuk variabel/data bertype string.
3 CC1 || CC2

4 found && (urutan>100)

5 (persen ^ 2) + GajiTotal +
MID1 * MID2

6 GajiPokok + Tunjangan -
PotGaji
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 4 dari 10 Kelas: _________________________________

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


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. clc
clear all

a = 123;
b = 70;
if (mod(a,10) >= 3)
c = a;
a = b;
b = c;
if (mod(a,5) < 3)
fprintf('%d %d\n',a,b);
else
fprintf('%d %d\n',a,c);
end
else
if (mod(b,10) == 0)
fprintf('%d %d\n',a,b);
else
fprintf('%d %d\n',b,a);
end
end
2.b. clc
clear all

i = -5;
count = 0;
while (i <= 10)
fprintf('%d\n',i);
if (XYZ(i) > 0)
count = count + 2;
else
count = count + 1;
end
i = i + 2;
end
fprintf('%d\n',count);

function hasil = XYZ(a)


hasil = a * a * a + 3 * a + 2;
end
2.c. clc
clear all

found = false;
x = 119;
y = 2;
while (found == false)
if (mod(x,y) == 0)
found = true;
else
x = x - 1;
y = y + 2;
end
end
fprintf('%d %d\n',x,y);
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 5 dari 10 Kelas: _________________________________

No. Program Keluaran


2.d. clc
clear all

Tab = [-3,50,105,101,0,90,105,-3];
i = 1;
x = Tab(i);
c = 0;

while (i < 8)
if (x < Tab(i))
x = Tab(i);
c = 1;
else if (x == Tab(i))
c = c + 1;
end
end
i = i + 1;
end
fprintf('%d %d\n',x,c);

Petunjuk Soal 2.e.


Diberikan kode program seperti di bawah ini. Program ini sudah dipastikan lolos kompilasi. Tuliskan keluaran jika N
diberikan nilai 10.

No. Program Keluaran


2.e. clc
clear all

N = input('');
i = 1;
while (i <= N)
if ((mod(i,2) == 0) || (mod(i,3) == 0))
fprintf('%d\n',i);
i = i + 1;
else
fprintf('%d\n',i);
i = i + 2;
end
end
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 6 dari 10 Kelas: _________________________________

Soal 3. Program Kecil [Bobot : 15%]


Spektrum optik adalah spektrum yang kontinyu sehingga tidak ada batas yang jelas antara satu warna dengan warna
yang lainnya. Meskipun demikian, manusia dapat memberikan batas kira-kira untuk warna-warna spektrum yang
berbeda-beda. Tabel berikut memberikan range panjang gelombang dari suatu warna yang dilihat oleh mata manusia
normal. Data disesuaikan untuk kepentingan soal.

Warna Panjang gelombang (dalam nm)


Ungu 380 - 450
Biru 451 - 495
Hijau 496 - 570
Kuning 571 - 590
Jingga 591 - 620
Merah 621 - 750

Buatlah flowchart dan kode program lengkap dalam MATLAB untuk sebuah program yang menerima masukan
berupa panjang gelombang dalam nm (bertipe integer) dan menuliskan ke layar warna sesuai dengan panjang
gelombangnya sesuai dengan deskripsi di atas. Jika masukan di luar range, dituliskan pesan kesalahan “Warna tidak
terdefinisi”.

Contoh masukan dan keluaran:


Masukan Panjang Gelombang Keluaran
495 Biru
250 Warna tidak terdefinisi

Tuliskan jawaban pada sisa halaman ini dan di halaman kosong baliknya. Jika masih kurang, gunakan halaman
kosong di balik halaman 4 atau 5 (jangan lupa menuliskan nomor soal dengan jelas).
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 7 dari 10 Kelas: _________________________________

Soal 4. Faktorial dan Nilai Mahasiswa [Bobot : 25%]


Soal 4.a. Fungsi Faktorial
Fungsi Faktorial mempunyai parameter input berupa sebuah integer lebih besar atau sama dengan nol, misalnya a, dan
menghasilkan nilai a faktorial (a!) yaitu:
𝑎! = 𝑎 ∗ (𝑎 − 1) ∗ (𝑎 − 2) ∗ … ∗ 1
Berikut adalah contoh masukan (input) dan hasil dari fungsi tersebut.

Input (a) Hasil Faktorial(a) Keterangan


4 24 4! = 4*3*2*1 = 24
5 120 5! = 5*4*3*2*1 = 120
6 720 6! = 6*5*4*3*2*1 = 720
1 1 1! = 1
0 1 0! = 1; kasus khusus

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

……………………………………………… Faktorial ( …………………………………………………………………………………………………………………………………………………)

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

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
% ALGORITMA
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 8 dari 10 Kelas: _________________________________

Soal 4.b. Array of Nilai Mahasiswa


Dua buah array of bilangan integer, yaitu T1 dan T2, digunakan untuk menyimpan data nilai mahasiswa sebuah mata
kuliah: T1 (dengan nilai efektif Neff1) untuk menyimpan nilai semua mahasiswa (baik lulus maupun tidak) dan T2
(dengan nilai efektif Neff2) untuk menyimpan nilai mahasiswa yang lulus saja. T1 dan T2 selalu diisi dari indeks ke-0.
Jika Neff1 = 0, berarti T1 kosong; demikian pula jika Neff2 = 0, berarti T2 kosong.

Program mula-mula menerima masukan sejumlah nilai mahasiswa (asumsi nilai 0 s.d. 100) dan menyimpannya ke T1.
Selanjutnya, program membaca sebuah nilai batas nilai kelulusan, misalnya X (asumsikan 0 <= X <= 100), lalu
menuliskan ke layar ada berapa banyak nilai yang dinyatakan lulus, yaitu yang bernilai > X. Program juga akan
menyalin semua nilai di T1 yang lulus (bernilai > X) ke array T2. Di akhir program, dituliskan ulang daftar nilai yang
lulus yang disimpan di T2. Jika ternyata tidak ada yang lulus (T2 kosong), maka dituliskan “Tidak ada yang lulus”.

Untuk menghitung banyaknya nilai yang lebih besar dari X digunakan fungsi CountLebihBesar, sedangkan untuk
menyalin isi T1 ke T2, digunakan fungsi CopyNilai, dan untuk menuliskan isi array ke layar digunakan fungsi
PrintArray.

Contoh masukan dan keluaran program:


Input Output
T1 Neff1 X Tertulis Di Layar T2 Neff2
Index Nilai Index Nilai
1 7 10 55 Banyaknya nilai yang lulus = 2 1 100 3
2 0 Daftar nilai yang lulus = 2 73
3 3 100 3 90
4 12 73
5 100 90
6 25
7 73
8 11
9 90
10 8
1 7 10 50 Banyaknya nilai yang lulus = 0 0
2 0 Tidak ada yang lulus
3 3
4 12
5 10
6 25
7 7
8 11
9 9
10 8

Tugas Anda: Buatlah kode implementasi dari fungsi CountLebihBesar, fungsi CopyNilai, dan fungsi PrintArray
serta melengkapi program utama dengan cara melengkapi program di bawah ini. Implementasi fungsi/prosedur
dituliskan di halaman kosong di balik hlm. 6, 7, atau 8 dengan menuliskan header/definisi fungsi/prosedur dengan jelas
(spesifikasi tidak perlu ditulis ulang). Baca instruksi yang dituliskan sebagai komentar dengan cermat.

%% Program NilaiMahasiswa
%% Menerima masukan daftar nilai mahasiswa suatu kuliah, menyimpannya dalam
%% suatu array of integer T1, membaca batas nilai lulus, menghitung berapa
%% banyak nilai yang lulus, dan menyimpan daftar nilai lulus dalam array of
%% integer T2, serta menampilkan isinya

function CountLebihBesar = fungsi(Tab[NMax], Neff, X)


% Menghasilkan nilai elemen Tab (dengan nilai efektif Neff) yang lebih besar
% dari X
% Tuliskan implementasinya di balik 7, 8, atau 9. Jangan lupa tulis header.
end
function CopyNilai (Tab1[NMax], Neff1, Tab2[NMax], Neff2, X)
% Menyalin nilai elemen Tab1 (dengan nilai efektif Neff1) yang lebih besar dari
% X ke Tab2 (dengan nilai efektif Neff2)
% I.S. Tab1 dan Neff1 terdefinisi. Tab1 mungkin kosong (Neff1 = 0).
% F.S. Tab2 dan Neff2 berisi nilai Tab1 yang lebih besar dari X. Jika tidak ada
% nilai yang lebih besar dari X, Tab2 kosong (Neff2 = 0).
% Tuliskan implementasinya di balik 7, 8, atau 9. Jangan lupa tulis header.
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 9 dari 10 Kelas: _________________________________

end
function PrintArray (Tab[NMax],Neff)
% Mencetak semua elemen Tab berderet ke bawah (setiap elemen dipisahkan sebuah
% enter)
% I.S. Tab dan Neff terdefinisi. Tab mungkin kosong (Neff = 0).
% F.S. Jika Tab tidak kosong, semua elemen Tab tertulis berderet ke bawah dari
% elemen pada indeks terkecil. Jika Tab kosong, tidak menuliskan apa pun.
% Lihat contoh penulisan tabel T2 pada contoh.
% Tuliskan implementasinya di balik 7,8, atau 9. Jangan lupa tulis header.
end
% PROGRAM UTAMA
% ALGORITMA
% Membaca isi array T1 dari pengguna
% Masukan Neff1 diasumsikan benar yaitu 0 s.d. 100
Neff1=input('Masukkan nilai efektif T1 [0..100] = ');
disp('Masukkan elemen T1 = ');
for (i = 1: Neff1)
T1(i)=input('');
end

% Menerima masukan batas nilai kelulusan X


X=input('Masukkan batas kelulusan = ')

% Tuliskan di bawah ini: Instruksi untuk menuliskan banyaknya nilai T1 yang


% lebih besar dari X dengan memanfaatkan fungsi CountLebihBesar
disp('Banyaknya nilai yang lulus = ')

…………………………………………………………………………………………………………………………………………………………………………………………………………
% Tuliskan di bawah ini: Instruksi untuk menyalin nilai-nilai dalam T1 yang
% lebih besar dari X ke T2 dengan memanggil prosedur CopyNilai

…………………………………………………………………………………………………………………………………………………………………………………………………………
% Tuliskan di bawah ini: Instruksi untuk mencetak nilai-nilai dalam T2
% dengan prosedur PrintArray jika T2 tidak kosong (Neff2>0). Jika T2 kosong,
% tuliskan "Tidak ada yang lulus"

…………………………………………………………………………………………………………………………………………………………………………………………………………

% Tuliskan kode implementasi fungsi CountLebihBesar, prosedur CopyNilai, dan


% prosedur PrintArray sesuai definisi di atas di halaman kosong di balik halaman
% 7, 8, atau 9. Jangan lupa menuliskan header/definisi fungsi/prosedur, tetapi
% spesifikasi tidak perlu dituliskan ulang.
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 10 dari 10 Kelas: _________________________________

Soal 5. Luas Area di Bawah Kurva [Bobot : 25%]


Menghitung luas area di bawah suatu kurva yang dibentuk dengan suatu fungsi dapat dilakukan menggunakan
pendekatan numerik. Pendekatan numerik akan memotong-motong area dengan interval tertentu, kemudian dihitung
luas setiap segmen area dengan menggunakan rumus trapesium secara berulang-ulang dan semua luas segmen
dijumlahkan untuk mendapatkan luas total area di bawah kurva.

Diketahui sebuah kurva yang dibentuk dengan fungsi: f(x)=x2+1 dengan ilustrasi seperti gambar di bawah ini. Untuk
menghitung luas trapesium suatu segmen di bawah kurva antara xkiri dengan xkanan dengan interval sebesar delta
digunakan rumus: 𝑙𝑢𝑎𝑠_𝑠𝑒𝑔𝑚𝑒𝑛 = 0.5 ∗ (𝑓(𝑥𝑘𝑖𝑟𝑖 ) + 𝑓(𝑥𝑘𝑎𝑛𝑎𝑛 ) ∗ 𝑑𝑒𝑙𝑡𝑎

Sebuah program melakukan beberapa hal berikut secara berturut-turut:


- Menerima masukan rentang area di bawah kurva f(x)=x2+1 yang akan dihitung, yaitu nilai x paling kiri (x1) dan x
paling kanan (x2). Syarat: x1 < x2.
- Menerima masukan interval untuk perhitungan suatu segmen area, misalnya delta. Syarat: delta > 0.
- Periksa apakah masukan x1, x2, dan delta benar sesuai dengan syarat-syarat di atas. Jika sudah sesuai, lanjutkan
dengan langkah di bawah ini. Jika tidak sesuai, diberikan pesan kesalahan: “Masukan tidak tepat” dan diulangi
pembacaan masukan x1, x2, dan delta sampai didapatkan masukan yang sesuai syarat.
- Menghitung dan menampilkan luas area di bawah kurva dalam rentang antara x1 dan x2 dengan interval sebesar
delta. Mengingat delta mungkin tidak membagi habis rentang antara x1 s.d. x2, maka jika hal ini terjadi, dilakukan
pembulatan ke atas, yaitu luas segmen terakhir (segmen paling kanan) dihitung tetap dengan interval delta
sehingga x yang kanan pada segmen terakhir akan melebihi x2.

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 MATLAB. 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, 2, atau 3 (jangan lupa menuliskan nomor soal dengan jelas).

Anda mungkin juga menyukai