structured programming

29
Module 03 Module 03 Structured Structured Programming Programming Salengke, Ph. D. Agricultural Engineering, Hasanuddin University

Upload: sangalank

Post on 24-Dec-2015

19 views

Category:

Documents


1 download

DESCRIPTION

ITP

TRANSCRIPT

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)