BAHASA : MATLAB
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.
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.
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: _________________________________
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);
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: _________________________________
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);
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: _________________________________
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”.
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: _________________________________
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.
……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
% ALGORITMA
UTS KU1072/Pengenalan Teknologi Informasi B NIM: _________________________________
Tanggal: 7 November 2015 Waktu: 120 menit Nama: _________________________________
Halaman 8 dari 10 Kelas: _________________________________
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.
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
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
…………………………………………………………………………………………………………………………………………………………………………………………………………
% 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"
…………………………………………………………………………………………………………………………………………………………………………………………………………
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 ∗ (𝑓(𝑥𝑘𝑖𝑟𝑖 ) + 𝑓(𝑥𝑘𝑎𝑛𝑎𝑛 ) ∗ 𝑑𝑒𝑙𝑡𝑎
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).