Senin, 20 Mei 2013

Kontrol Program



Tujuan
  • Memahami logika alur program
  • Mampu menggunakan sintaks kontrol program dalam pemrograman


Teori dasar dan Praktikum

Matlab bisa berlaku seperti bahasa pemrograman C ataupun pascal yang mempunyai struktur kontrol program. Biasanya pemrograman dengan matlab memerlukan lebih dari satu baris dan memungkinkan untuk didokumentasikan dalam m-file, control program ini digunakan untuk memperbaiki tampilan atau membuat tampilan sesuai yang kita inginkan. Dalam bagian ini dibahas sebagian kontrol program yang diperlukan dalam pemrograman menggunakan matlab. Operator logika yang digunakan dalam pemrograman MATLAB adalah sebagai berikut:

Simbol
Operasi
Kurang dari
<=
Kurang dari atau sama dengan
Lebih dari
>=
Lebih dari atau sama dengan
==
Sama dengan
~=
Tidak sama dengan

Berikut ini adalah kontrol program yang digunakan dalam MATLAB:
1.   for loops
Loop for meungkinkan sekelompok perintah diulang sebanyak suatu umlah yang tetap. Bentuk umum dari loop for adalah :
for x= array
statement
end
untuk tiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam iterasi ke-n dalam loop, x = array(:,n). Contoh,
  1. tulislah script ini adalam command window

>> for n=0:10
x(n+1)=sin(pi*n/10)
end

keluarannya:
x =
Columns 1 through 7
0    0.3090    0.5878    0.8090    0.9511    1.0000    0.9511
Columns 8 through 11
0.8090    0.5878    0.3090    0.0000

  1. Tulislah script ini di command window

>>for i=1:5
disp('Ini hasil looping 5 kali')
end

Keluarannya:
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali

  1. Tulislah script di command window
>> H=zeros(5);
>> for k=1:5
for l=1:5
H(k,l)=1/(k+l-1)
end
end

Keluarannya:
H =

    1.0000    0.5000    0.3333    0.2500    0.2000
    0.5000    0.3333    0.2500    0.2000    0.1667
    0.3333    0.2500    0.2000    0.1667    0.1429
    0.2500    0.2000    0.1667    0.1429    0.1250
    0.2000    0.1667    0.1429    0.1250    0.1111

2.   While loops
loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah, tetapi loop while mengerjakan sekelompok perintah yang diulang secara tidak terbatas Bentuk umum loop while adalah
while ekpresi
statement
end
semua elemen yang dieksekusi diantara while dan end dan harus bernilai benar

  1. Tulis script ini di command window
>> q=pi
>> while q>0.01
q=q/2
end

Keluarannya:
q = 1.5708
q = 0.7854
q = 0.3927
q = 0.1963
q = 0.0982
q = 0.0491
q = 0.0245
q = 0.0123
q = 0.0061


  1. Tulislah script ini di command windows
>> x=0;
>> while x<5
disp('diulang sampai 5 kali');
x=x+1;
end

Keluarannya:
diulang sampai 5 kali
diulang sampai 5 kali
diulang sampai 5 kali
diulang sampai 5 kali
diulang sampai 5 kali

3.   Konstruksi loop : if-else-end
Seringkali sederetan perintah harus dikerjakan dengan didasarkan pada hasil tes rasional. Dalam bahasa pemrograman, logika ini dikerjakan dengan variasi kontruksi if-else-end. Bentuk paling sederhana kontruksi if-else-end adalah :

If ekpresi
Pertintah
End

Konstruksi ini digunakan jika hanya ada satu alterntif. Dua atau lebih alternative memerlukan konstruksi:

If ekspresi
Perintah (dievaluasi jika ekspresi adalah benar)
Else
Perintah (dievaluasi jika ekspresi adalah salah)
end

  1. Buatlah script di bawah ini pada editor m-file. Simpan dengan nama file FirstMovie.m
%script file firstmovie
%Graphs of y=sin(kx) over the interval [0,pi],
%where k= 1,2,3,4,5
m=moviein(5);
x=0:pi/100:pi;
for i=1:5
    h1_line=plot(x,sin(i*x));
    set(h1_line,'lineWidth',1.5,'color','m');
    grid;
    title('Sine Function sin(kx), k=1,2,3,4,5');
    h=get(gca,'title');
    set(h,'FontSize',12);
    xlabel('x');
    k=num2str(i);
    if i>1
        s=strcat('sin(',k,'x)');
    else
        s='sin(x)';
    end
    ylabel(s);
    h=get(gca,'ylabel');
    set(h,'FontSize',12);
    m(:,i)=getframe;
    pause(2)
end
movie(m);

4.   Switch Case loop
Switch membandingkan ungkapan input dengan masing-masing nilai case. Sekali kesesuaian ditemukan, switch melaksanakan perintah yang berkaitan. Dalam contoh berikut, angka bilangan bulat acak dari deretan {1,2,3,…,10} dihasilkan. Jika x=1 atau x=2, maka pesan probabilitas =20% dihasilkan. Script file fswitch menggunakan switch sebagai alat untuk menangani semua kasus yang disebutkan di atas.

  1. Buatlah script di bawah ini pada editor m-file. Simpan dengan nama file fswitch.m

%Script file fswitch
x=ceil(10*rand);
switch x
    case{1,2}
        disp('Peluang = 20%');
    case{3,4,5}
        disp('Peluang = 30%');
    otherwise
        disp('Peluang = 50%');
end

  1. Jalankan file di atas dengan menekan F5. Untuk mengetahui kecenderungan peluang masing-masing nilai. Uji kode di atas dengan menggunakan script di bawah ini. Tulis pada command window
>> for k=1:10
fswtich
end

Maka keluarannya:

Peluang = 50%
Peluang = 20%
Peluang = 30%
Peluang = 50%
Peluang = 50%
Peluang = 30%
Peluang = 50%
Peluang = 20%
Peluang = 30%
Peluang = 50%

Catatan: Penggunaan tanda kurung kurawal { }setelah kata case menciptakan apa yang disebut dengan cell array bukan deret atau dimensi, yang memerlukan pemakaian tanda kurung besar.

Berikut adalah fungsi-fungsi MATLAB baru yang digunakan dalam file fswitch.m:
  • rand, yang secara seragam menyebarkan angka-angka acak dalam interval (0,1)
  • ceil, pembulatan pada angka tak terbatas.
  • Disp, menampilkan rangkaian/deter di layar.
Tugas.
1.      Buatlah program untuk mengkonversi suhu dalam Fahrenheit ke dalam derajat Celcius. Rumus yang digunakan adalah . Tampilkan hasil konversi dari Fahrenheit ke Celcius dari 0 sampai 100 Farrenheit dengan skala perubahan adalah 5 derajat. Simpan dengan nama file f2c.m

2.      Tulislah program di bawah ini simpan dengan nama file input.m dan jelaskan!
 
sum=0;
cnt=0;
val=input('Enter a number (end in 0) : ');
while (val~=0)
    sum=sum+val;
    cnt=cnt+1;
    val=input('Enter a number (end in 0) : ');
end
if (cnt > 0)
    fprintf('%d num entered. Sum=%g. Mean=%g.\n',cnt,sum,sum/cnt);
end
 
3.      Tulislah program di bawah ini simpan dengan nama file umur.m dan jelaskan!

age=input('Masukan berapa umur anda: ');
if ((age < 0)|(age >= 120))
    disp('Error');
elseif (age < 1)
    disp('Anda masih Bayi');
elseif (age < 13)
    disp('Masa Anak-anak');
elseif (age < 18)
    disp('Beranjak Remaja');
elseif (age < 60)
    disp('Sudah Dewasa');
else
    disp('Sudah Tua');
end

Tidak ada komentar:

Posting Komentar