Upload
sangalank
View
18
Download
1
Embed Size (px)
DESCRIPTION
ITP
Citation preview
Module 03Module 03Structured Structured ProgrammingProgramming
Salengke, Ph. D.Agricultural Engineering, Hasanuddin University
PernyataanPernyataan BersyaratBersyarat(Conditional Statements)(Conditional Statements)
Pernyataan bersyarat memungkinkan MATLAB membuat keputusan.
Proses pengambilan keputusan oleh program sama dengan proses pengambilan keputusan oleh manusia.
Sebuah persyaratan ditetapkan. Apabila persyaratan tersebut terpenuhi maka satu blok aksi akan dilakukan. Jika persyaratan tersebut tidak terpenuhi maka tidak ada aksi yang akan dilakukan atau blok aksi lainnya yang akan dilakukan.
ContohContoh::
Jika saya memperoleh beasiswa,Saya akan kuliah di HarvardSaya akan kuliah di KedokteranSaya akan menjadi dokter terkenal
Sebaliknya,Saya akan tetap tinggal di MakassarSaya akan mencari pekerjaanDan saya akan mengawini gadis desa
Penyataan Bersyarat Dalam Matlab
Pernyataan bersyarat dalam program Matlab dinyatakan dengan menggunakan statemen if.
Contoh blok statemen ifif (ekspressi)
Perintah
...
end
Apabila ekspressi pada statemen if bernilai benar (true) maka perintah dibawahnya akan dieksekusi; tetapi apabila ekspressi tersebut bernilai salah (false) maka program akan mengeksekusi pernyataan setelah statemen end.
Bentuk-bentuk Pernyataan ifif (I have Rp 15 billion)
I will buy Ferraribuild a housetravel around the world
end
if (I have Rp 15 billion)buy Ferraritravel around the world
elsework hardersave some money
end
if (I have Rp 15 billion)I will buy Ferraribuild a dream housetravel around the world
elseif (I have 5 billion)I will buy a housetravel to Africa
elseI will work hardersave some money
end
Flow Chart Flow Chart StatemenStatemen if – end
if (persyaratan)
perintah
end
Pernyataan bersyarat
Perintah
true
false
end
if
ContohContoh StatemenStatemen if if –– endend
% Contoh Program Untuk Penggunaan statemen if – end.% Pengguna diminta memasukkan tiga nilai hasil ujian.% Program ini kemudian menghitung nilai rata-rata.% Apabila nilai rata-rata kurang dari 60 maka pesan:% “Mahasiswa Tidak Lulus Matakuliah” akan ditayangkan.
score = input(‘Masukkan sebagai vektor nilai dari 3 ujian’);Nilai_Rerata = (score(1) + score(2) + score(3))/3;disp(‘Nilai rata-rata Hail Ujian adalah:’)disp(Nilai_Rerata)if (Nilai_Rerata < 60)
disp(‘Mahasiswa Tidak Lulus Matakuliah’)end
StatemenStatemen if – else – end
if (pernyataan bersyarat)
blok perintah 1
else
blok perintah 2
end
Pernyataan Bersyarat
Blok Perintah 1
true
false
end
Blok Perintah 2
if
ContohContoh StatemenStatemen if – else – end% Contoh Program Untuk Penggunaan statemen if – end.% Pengguna diminta memasukkan tiga nilai hasil ujian.% Program ini kemudian menghitung nilai rata-rata.% Apabila nilai rata-rata kurang dari 60 maka pesan:% “Tidak Lulus Matakuliah” akan ditayangkan.% Sebaliknya, pesan: “Lulus Matakuliah” akan ditayangkan.
score = input(‘Masukkan sebagai vektor nilai dari 3 ujian’);Nilai_Rerata = (score(1) + score(2) + score(3))/3;disp(‘Nilai rata-rata Hail Ujian adalah:’)disp(Nilai_Rerata)if (Nilai_Rerata < 60)
disp(‘Tidak Lulus Matakuliah’) else
disp(‘Lulus Matakuliah’)end
Flow chart Flow chart StatemenStatemen if-elseif-else-end
Blok perintah 1
if
true
end
Blok perintah 2
Blok perintah 3
Persyaratan 1
Persyaratan 2
falseelseif
true
false
ContohContoh::% Contoh Penggunaan statemen if-elseif-else-end .% Program menghitung nilai rata-rata dan menetapkan nilai A, B, C, dst.% A (>90), B (>80 dan <= 90), C (>70 dan <=80), D (>60 dan <=70), dan E (<60).% Contoh input nama [‘Gunung Kidul']% Contoh imput nilai ujian [89 95 100]
Nama = input(‘Masukkan nama mahasiswa (sebagai string vector) ');Nilai = input(‘Masukkan tiga nilai ujian (sebagai sebuah vector) ');Nilai_Rerata = (Nilai(1)+Nilai(2)+Nilai(3))/3;fprintf('\n')fprintf(Nama)fprintf('\n')fprintf(‘Nilai Rata-rata = %g',Nilai_Rerata)fprintf('\n')if (Nilai_Rerata > 90)
Nilai_Mutu='A';fprintf(‘Nilai Mutu : A')
elseif (80 < Nilai_Rerata ) & (Nilai_Rerata <=90)Nilai_Mutu='B';fprintf(‘Nilia Mutu : B')
elseif (70 < Nilai_Rerata ) & (Nilai_Rerata <=80)Nilai_Mutu='C';fprintf(‘Nilai Mutu : C')
elseif (60 <= Nilai_Rerata ) & (Nilai_Rerata <= 70)Nilai_Mutu='D';fprintf(‘Nilai Mutu : D')
elseNilai_Mutu='E';fprintf(‘Nilai Mutu : E')
end
Operator Operator HubunganHubungan dandanOperator Operator LogikLogik
Operator Hubungan< Lebih kecil<= Lebih kecil atau sama dengan> Lebih besar>= Lebih besar atau sama dengan== Sama dengan~= Tidak sama dengan
Operator Logik& dan| atau~ tidak
ContohContoh PenggunaanPenggunaan
if (a < b)if (c >= 5)if (a == b)if (a ~= 0)if (a <=5) & (b<=10)if (a <=5) | (b<=10)if (x~=13) | (y<0)if ~(x==y)
LoopLoop Loop merupakan sebuah blok dalam
program yang dieksekusi secara berulang. Setiap pengulangan dalam loop dinamai
pass. Jumlah pass dalam loop dapat bersifat
tetap (fixed), dan dapat juga bersifat floating dimana proses looping hanya akan berakhir apabila sebuah kondisi yang ditetapkan telah tercapai.
Setelah setiap pass, beberapa atau seluruh variabel yang didefinisikan di dalam loop akan memperoleh nilai baru.
Loop dengan format for – end
Format loop for – end digunakan apabila jumlah pass diketahui sejak awal. Sebuah variabe (indeks) digunakan untuki mengontrol proses looping. Struktur umum dari loop for – endadalah:
for k = m:s:p...
end
m adalah nilai k pada pass pertamap adalah nilai k pada pass terakhirs adalah peningkatan nilai k setelah setiap pass
Flowchart Loop Flowchart Loop for for -- endend
Set k=m
Perintah
Naikkan nilai ksebesar s
Perintah setelah statemen end
end
k>p ?true
false
start
ProsedurProsedur LoopingLooping Pada pass pertama, k=m, dan komputer
mengeksekusi semua perintah antara for dan end.
Program kemudian kembali ke statemen foruntuk pass yang kedua. k akan memperoleh nilai baru (k=m+s) dan perintah antara statemen for dan end diekekusi lagi dengan menggunakan nilai k yang baru.
Proses looping akan terus berulang hingga pass yang terakhir dimana k=p
AturanAturan LoopLoop s dapat bernilai positif dan negatif. Apabila s tidak ditulis, maka secara default
nilai step adalah 1. Apabila m = p maka loop akan dieksekusi
satu kali (1 pass). Nilai k seharusnya tidak didefinisikan
dalam loop. Looping akan berhenti ketika nilai k lebih
besar dari nilai p.
ContohContoh:: Ketik pada command window
>> for k=1:3:10x=k^2
endx=
1x=
16x=
49x=
100
>> for k=5:9b=2*kend
b=10
b=12
b=14
b=16
b=18
>> for k=10:2:20a=k/3;end>>
CatatanCatatan Setiap statemen for harus berpasangan dengan
sebuah statemen end. Loop for - end dapat digunakan pada command
window dan dalam file script dan file function. Tanda titik-koma tidak dibuthkan setelah perintah
for k=m:s:p. Untuk menayangkan nilai k pada setiap pass, displai
nilai k sebagai salah satu perintah dalam loop. Loop dapat memuat pernyataan bersyarat serta
perintah Matlab lainnya (misalnya: functions, plots, dll.).
ContohContoh% Program untuk mendemonstrasikan penggunaan loop for – end.% Program ini meminta pengguna memasukkan banyaknya nilai n% kemudian menghitung nilai dari deret: (-1)^n * n/2^n
Jumlah_deret=0;n=input(‘Jumlah bilangan dalam deret : n = ‘);
for k=1:nJumlah_deret = Jumlah_deret+(-1)^k * k/2^k;
end
fpintf(‘\n’)fprintf(‘Hail penjumlahan bilangan dalam deret = ‘)fprintf(‘%g’,Jumlah_deret)
PerintahPerintah break
Perintah break mengakibatkan eksekusi dari sebuah loop dihentikan. Ketika MATLAB menemukan perintah break dalam sebuah loop, MATLAB langsung melompat ke perintah endkemudian mengeksekusi perintah-perintah dibawahnya.
Perintah break umumnya digunakan di dalam perintah bersyarat (statemen if) untuk mengakhiri proses looping jika persyaratan terpenuhi.
ContohContoh% Program untuk mendemonstrasikan penggunaan perintah break.% Data yang dibutuhkan: Investasi awal, sasaran nilai investasi, dan tingkat% pengembalian yang diharapkan. Prgram menghitung jumlah tahun yang% dibutuhkan untuk mencapai sasaran tersebut.
A = input(‘Nilai investasi awal (Rp): ‘);F = input(‘Sasaran nilai investasi (Rp): ‘);R = input(‘Tingkat pengembalian yang diharapkan per tahun (%) ‘);disp( ‘ ‘)
for k=1:100Nilai_akhir_tahun=A*(1+R/100)^k;if (Nilai_akhir_tahun >= F)
fprintf(‘Jumlah Tahun yang dibutuhkan untuk mencapai sasaran = ‘)fprintf(‘%g’,k)break
endendif k = 30
fprintf(‘Dobutuhkan lebih dari 30 Tahun untuk mencapai sasaran’)end
Loop Loop TersarangTersarang (Nested (Nested Loop)Loop)for k=1:3
for n=1:5...end
end
Setiap kali k ditingkatkan 1, loop yang tersarang melakukan looping sebanyak 5 kali dengan nilai n berubah dari 1 hingga 5.
Secara keseluruhan perintah loop akan dieksekusi 15 kali.
k=1 n=1 k=2 n=1 k=3 n=1k=1 n=2 k=2 n=2 k=3 n=2k=1 n=3 k=2 n=3 k=3 n=3k=1 n=4 k=2 n=4 k=3 n=4k=1 n=5 k=2 n=5 k=3 n=5
ContohContoh% Program untuk mendemonstrasikan enggunaan Loop tersarang.% Program ini membuat sebuah matriks yang elemennya bernilai 7 kecuali% elemen yang nomor barisnya sama dengan nomor kolom. Nilai elemen tersebut adalah 1.
matrix=0;n=input(‘Masukkan Jumlah Baris: ’);m=input(‘Masukan Jumlah Kolom: ’);for i=1:n
for j=1:mif(i==j)
matrix(i,j)=1;else
matrix(i,j)=7;end
endenddisp(‘ ‘)disp(‘Matriks Yang Terbentuk: ‘)disp(‘ ‘)disp(matrix)
StrukturStruktur LoopLoop while
Loop while digunakan apabila proses looping hanya bisa dihentikan setelah kondisi (persyaratan) yang ditetapkan telah tercapai, sehingga jumlah pass yang dibutuhkan tidak diketahui dari awal.
Loop while utamanya digunakan apabila proses looping dikehendaki sepanjang kondisi (persyaratan) yang telah ditetapkan masih terpenuhi (bernilai benar).
StrukturStruktur Loop Loop while
while logical expression
.
.statements
end
Ekspressi Logik
Eksekusi loop (update loop variable)
true
false
end
ContohContohSebuah objek ditembakkan dengan kecepatan awal 250 m/det dan sudut penembakan 32o. Tentukan waktu yang dibutuhkan hingga ketinggian objek >= 20 m dari permukaan tanah dan kecepatan objek tersebut <= 200 m/det. Ketinggian dan kecepatan objek tersbut sebagai fungsi dari waktu dapat dinayatakan dengan persamaan berikut:
220
20
20
sin....2
..5.0sin..
tgtgvvv
tgtvh
t
t
ProgramProgram% Program untuk menentukan waktu yang dibutuhkan agar ketinggian h >= 20 m dan % kecepatanv <= 220 m/det.v0 = 250, theta = 32, g = 9.81;v0_x = v0*cos(theta*pi/180); % Komponen horizontal kecepatan awalv0_y = v0*sin(theta*pi/180); % Komponen vertikal kecepatan awalt_tot = 2*v0_y / g % Waktu yang dibutuhkan untuk mencapai tanah
% Hitung arrays untuk waktu, ketinggian, dan kecepatant = [0:t_tot/100:t_tot]; % atau t = linspace(0,t_tot,100);h = v0*t*sin(theta*pi/180) - 0.5*g*t .^2;v = sqrt(v0^2 - 2*g*t*v0_y + g^2 * t .^2);subplot(2,1,1)plot(t,h)xlabel('Waktu (det)')ylabel('Ketinggian (m)')text(5,400,'Ketinggian sebagai fungsi dari kecepatan')subplot(2,1,2)plot(t,v)xlabel('Waktu(det)')ylabel('Kecepatan')text(5,235,'Kecepatan sebagai fungsi Waktu')u = find (h>=20 & v<=220); % Hitung kapan h>=20 dan v<=220t_1 = (u(1)-1)*(t_tot/100) % Hitung Waktunya.t_2 = u(length(u)-1)*(t_tot/100)