Upload
staffpengajar
View
109
Download
0
Embed Size (px)
Citation preview
MatlabTutor - sns Hal-1
Algoritma dan Pemrograman – II (4 sks) Dosen: Ir. Sihar, MT. Program studi T. Informatika – Fak. Teknik Bandung 2013
Pengantar Interpreter Menggunakan MATLAB
Referensi: [1] Chapman, S.J. MATLAB Programming for Engineers, second edition. Bookware
Companion Series. 2000. [2] Knight A., Basics of MATLAB and Beyond. CRC Press. 2000. [3] Simamora, S.N.M.P. “Diktat Algoritma dan Pemrograman II”. Program studi T.
Informatika, Fak. Teknik. UTAMA. Bandung. 2012. [4] Simamora, S.N.M.P. “Diktat Konsep Algoritma dan Matematika”. Dept. Sistem
Komputer, Fak. Teknik. ITHB. Bandung. 2002.
Kasus-1 Sebuah var: z1 menampung DEC(1.5), lalu di-tambah-kan dengan DEC(-2.25) lalu di-kali-kan kembali ke bilangan awal. Tampilkan isi z1 terbaru (termutahir). Solusi: Konstruksi-algoritma z1←1.5;
x←z1; z1=z1+(-2.25); tampilkan z1;
Dituliskan Matlab script pada framework M-files sebagai berikut: z1=1.5;
x=z1;
z1=z1+(-2.25);
z1=z1*x;
z1
Kasus-2 Sebuah var: xT digunakan untuk menampung nilai radius sebuah lingkaran, misalkan 3. Tampilkan luas lingkaran tersebut, jika nilainya ditampungkan kembali pada xT. Solusi: Konstruksi-algoritma
xT←3;
xT=pi∗(xT∧2); tampilkan xT; Dituliskan Matlab script pada command line text sebagai berikut: >> xT=3;
>> xT=pi*(xT^2);
>> xT
MatlabTutor - sns Hal-2
xT =
28.2743
>> Kasus-3 Ada enam Bilangan Genap akan ditampilkan secara vertikal, dimana bilangan awal ditetapkan adalah 2. Tuliskan script untuk menyelesaikan persoalan ini. Solusi: Konstruksi-algoritma i←0;
x←2; while(i<6) { tampilkan x; x=x+2; i=i+1; } Dituliskan Matlab script pada framework M-files sebagai berikut: i=0;
x=2;
while(i<6)
disp (x);
x=x+2;
i=i+1;
end Kasus-4
Sebuah var: sns digunakan untuk menampung nilai cosine dari 60o. Tampilkan nilai cosine sudut tersebut tersebut, jika nilainya ditampungkan kembali pada sns. Solusi: Konstruksi-algoritma
2π rad = 360o;
1o = 360
2π rad;
= 180
πrad;
sns←60;
sns=(pi÷180) ∗ sns; sns=cos(sns); tampilkan sns; Dituliskan Matlab script pada command line text sebagai berikut: >> sns=60;
>> sns=(pi/180)*sns;
>> sns=cos(sns);
>> sns
sns =
MatlabTutor - sns Hal-3
0.5000
>> Kasus-5 Sebuah var: zX digunakan untuk menampung nilai-masukan dari end-user. Tampilkan nilai-luaran jika diinstruksikan zX menampilkan hasil-kuadrat dari nilai-masukan tersebut
dimana zX∈Bil.Real. Solusi: Konstruksi-algoritma zX←?;
zX=(zX)2;
tampilkan zX; Dituliskan Matlab script pada framework M-files sebagai berikut: zX=input('Tentukan zX?: ');
zX=zX^2;
disp('Nilai terbaru zX ')
zX Tampilan jalannya program: Tentukan zX?: 2.5 Nilai terbaru zX zX = 6.2500 >>
Kasus-6 Sebuah var: z3 berperan menampung menampung dua belas Bilangan Bulat Positip, dimana dengan range: 1 s.d 12. Tampilkan isi z3 tersebut secara vertikal menggunakan struktur kendali proses for. Solusi: Konstruksi-algoritma for (i=0;i<12;i=i+1) { tampilkan i; }
Dituliskan Matlab script pada framework M-files sebagai berikut: for i=1:12
i
end
Kasus-7 Buatlah tampilan secara konvensional yang menunjukan deret bilangan dengan selisih 0.5 yang dimulai dengan bilangan-awal 3 dan diakhiri dengan bilangan 7. Jika diasumsikan deret bilangan tersebut ditampungkan ke var: xT, maka hindari menggunakan struktur kendali proses do-while atau while.
MatlabTutor - sns Hal-4
Solusi: Konstruksi-algoritma xT=3; for(i=0;i<9;i=i+1) { tampilkan xT;
xT←xT+0.5; }
Dituliskan Matlab script pada command line text sebagai berikut: >> xT=3:0.5:7;
>> xT
Tampilan jalannya program: xT = Columns 1 through 8 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 6.0000 6.5000 Column 9 7.0000 >>
Kasus-8 Sebuah var: z1 menampung lima bilangan yakni: -1.5, 3, 1.5, -3.5, 3. Tampilkan isi z1 tersebut jika direpresentasikan dalam dimensi 1-baris;5-kolom. Solusi: Konstruksi-algoritma z1∈{-1.5,3,1.5,-3.5,3}; for(i=0;i<1;i=i+1) { for(j=0;j<5;j=j+1) { tampilkan z1[i][j]; } }
Dituliskan Matlab script pada command line text sebagai berikut: >> z1=[-1.5 3 1.5 -3.5 3];
>> z1 Tampilan jalannya program: z1 = -1.5000 3.0000 1.5000 -3.5000 3.0000 >>
Kasus-9 Sebuah var: z1 harus menampung DEC(1.5); lakukan proteksi apabila end-user tidak mengetikkan selain yang ditetapkan tersebut. Solusi: Konstruksi-algoritma z1←?;
MatlabTutor - sns Hal-5
jika z1≠1.5, maka { tampilkan “Maaf, out-of-range...”; } selain itu { tampilkan “Yes!”; }
Dituliskan Matlab script pada framework M-files sebagai berikut: z1=input('Ketikkan 1.5: ');
if(z1~=1.5)
disp('Maaf, out-of-range...');
else
disp('Yes!');
end
Tampilan jalannya program: Ketikkan 1.5: 1.2 Maaf, out-of-range... Ketikkan 1.5: 1.5 Yes! >>
Kasus-10 Buatlah model grafik linier pada f(x)=x dengan hubungan absis dan ordinat sebagai berikut:
x 1 2 3 4 5 6 7 8 9
f(x) 16.836 8.164 -2.580 -24.641 -35.950 -90.685 -77.372 -49.847 -173.974
Tuliskan script untuk menyelesaikan persoalan ini. Solusi: Konstruksi-algoritma x={1,2,3,4,5,6,7,8,9}; fx={16.836,8.164,-2.580,-24.641,-35.950,-90.685,-77.372,-49.847,-173.974}; plot(x,fx);
Dituliskan Matlab script pada command line text sebagai berikut: >> x=[1 2 3 4 5 6 7 8 9]; >> fx=[16.836 8.164 -2.580 -24.641 -35.950 -90.685 -77.372 -49.847 -173.974];
>> plot(x,fx)
Tampilan jalannya program:
MatlabTutor - sns Hal-6
Kasus-11 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3, -1.5, -3.5, -3.5. Tampilkan isi zP tersebut jika direpresentasikan dalam dimensi 5-baris;1-kolom. Solusi: Konstruksi-algoritma zP∈{1.5,-3,-1.5,-3.5,-3.5}; for(i=0;i<5;i=i+1) { for(j=0;j<1;j=j+1) { tampilkan zP[i][j]; } }
Dituliskan Matlab script pada command line text sebagai berikut: >> zP=[1.5;-3;-1.5;-3.5;-3.5];
>> zP Tampilan jalannya program: zP = 1.5000 -3.0000 -1.5000 -3.5000 -3.5000 >>
Kasus-10
Buatlah model grafik kontinyu dalam bentuk sine dengan range: 2
π− s.d
2
π dengan selisih
antar-bilangan adalah 0.0001. Solusi: Konstruksi-algoritma
t=[-2
;001.0;2
ππ− ];
x←2∗sin(2∗π∗t); plot(x);
Dituliskan Matlab script pada command line text sebagai berikut: >> t=[-pi/2:0.001:pi/2];
x=2*sin(2*pi*t);
plot(x);
title('Sinyal Kontinyu','FontSize',14)
>> Tampilan jalannya program:
MatlabTutor - sns Hal-7
Kasus-11 Lakukan plotting fungsi: j1(j)=j+1, dimana j dengan range: 0 s.d 9 dan selisih antar-bilangan:0.5. Solusi: Konstruksi-algoritma j=0; while(j<9) { j=j+0.5; j1=j+1; plot(j,j1); } Dituliskan Matlab script pada command line text sebagai berikut: >> j=0:0.5:9;
>> j1=j+1;
>> plot(j,j1)
>> Kasus-12
Sebuah PFK: f(x)=x2−5x+6. Tentukan akar-akar persamaan x1 dan x2 untuk f(x)=0. Solusi: Konstruksi-algoritma f(x)=x
2−5x+6;
f(x)=0;
(x−3)(x−2)=0; x1=3; x2=2; Dituliskan Matlab script pada command line text sebagai berikut: >> solve('x^2-5*x+6=0') Tampilan jalannya program: ans = 3 2 >> Kasus-13 Apabila ditetapkan sejumlah deret bilangan sebagai berikut: U1=2∗1+3;
U2=2∗2+3;
U3=2∗3+3; ...
U15=2∗15+3; Tuliskan pemrograman script untuk menyelesaikan persoalan ini. Solusi: Konstruksi-algoritma n=1; Un=0;
MatlabTutor - sns Hal-8
while(Un<15) {
Un=2∗n+3; n=n+1; tampilkan Un; } Dituliskan Matlab script pada framework M-files sebagai berikut: n=1;
Un=0;
while(Un<15)
Un=2*n+3;
n=n+1;
disp(Un);
end
Kasus-14 Buatlah script untuk menampilkan grouping kurva sinusoidal, misalkan sebanyak tiga gelombang. Solusi: Konstruksi-algoritma x1∈0,0.1,0.2,0.3,...,5,5.1,5.2,...,0.9,1; y1=cos(x1);
x2=1.5∗x1;
y2=2∗cos(x2);
x3=2∗x1;
y3=3∗sin(x3); plot(x1,y1,x2,y2,x3,y3); Dituliskan Matlab script pada framework M-files sebagai berikut: x1 = 0:.1:10;
y1 = cos(x1);
x2 = 1.5*x1;
y2 = 2*cos(x2);
x3 = 2*x1;
y3 = 3*sin(x3);
plot(x1,y1,x2,y2,x3,y3) x1 = 0:.1:10;
y1 = cos(x1);
x2 = 1.5*x1;
y2 = 2*cos(x2);
x3 = 2*x1;
y3 = 3*sin(x3);
plot(x1,y1,x2,y2,x3,y3) Tampilan jalannya program:
MatlabTutor - sns Hal-9
Kasus-15 Sebuah var: zP menampung matriks dengan dimensi/ordo 3x4 sebagai berikut:
zP3x4=
−
−
−
0
2
2
5.1
5.1
5.1
1.0
2.0
5.0
1
2
1
;
Tampilkan isi zP tersebut. Solusi: Konstruksi-algoritma zP[3][4]={ -1,0.5,1.5,2, -2,0.2,1.5,2, -1,0.1,1.5,0 }; for(i=0;i<3;i=i+1) { for(j=0;j<4;j=j+1) { tampilkan zP[i][j]; } } Dituliskan Matlab script pada framework M-files sebagai berikut: zP=[-1 0.5 1.5 2;
-2 0.2 1.5 2;
-1 0.1 1.5 0];
zP zP=[-1 0.5 1.5 2;
-2 0.2 1.5 2;
-1 0.1 1.5 0];
zP Tampilan jalannya program: zP = -1.0000 0.5000 1.5000 2.0000 -2.0000 0.2000 1.5000 2.0000 -1.0000 0.1000 1.5000 0 zP = -1.0000 0.5000 1.5000 2.0000 -2.0000 0.2000 1.5000 2.0000 -1.0000 0.1000 1.5000 0 >>
Kasus-16 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3, -1.5, -3.5, -3.5. Apabila zP dimodelkan dalam bentuk matriks dengan dimensi/ordo 5x1, maka carilah nilai xT bila
ditetapkan statement: xT←zP[2][1]∗1.5; dimana indeks merujuk pada math-based. Solusi: Konstruksi-algoritma zP[1][0]=-3;
xT←zP[1][0]∗1.5; tampilkan xT;
MatlabTutor - sns Hal-10
Dituliskan Matlab script pada framework M-files sebagai berikut: zP=[1.5;-3;-1.5;-3.5;-3.5];
xT=zP(2,1)*1.5;
zP
xT Tampilan jalannya program: zP = 1.5000 -3.0000 -1.5000 -3.5000 -3.5000 xT = -4.5000 >> Kasus-17 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3.5, -1.5, -3, -3.5. Apabila zP dimodelkan dalam bentuk matriks dengan dimensi/ordo 1x5, maka carilah nilai xT bila
ditetapkan statement: xT←zP∗-2; dimana indeks merujuk pada math-based. Solusi: Konstruksi-algoritma
zP∈{1.5,-3.5,-1.5,-3,-3.5};
xT←zP∗(-2); tampilkan xT; Dituliskan Matlab script pada framework M-files sebagai berikut: zP=[1.5 -3.5 -1.5 -3 -3.5];
xT=zP*(-2);
zP
xT Tampilan jalannya program: zP = 1.5000 -3.5000 -1.5000 -3.0000 -3.5000 xT = -3 7 3 6 7 >>
MatlabTutor - sns Hal-11
Kasus-18 Tampilkanlah lima perulangan untuk kata ‘maju’ menggunakan struktur kendali proses for. Solusi: Konstruksi-algoritma for(i=0;i<5;i=i+1) { tampilkan ‘maju’; } Dituliskan Matlab script pada framework M-files sebagai berikut: for i=1:5
fprintf('maju\n');
end Tampilan jalannya program: maju maju maju maju maju >>
Kasus-19 Buatlah tujuh deret Bilangan Ganjil, dengan bilangan awal=-1, dan format tampilan sebagai berikut: Bil-1: _
Bil-2: _
...
Bil-7: _
Solusi: Konstruksi-algoritma x←(-1); for(i=0;i<7;i=i+1) { tampilkan “Bil-”,<i+1>,”: ”,<x>;
x←x+2; tampilkan new_line; } Dituliskan Matlab script pada framework M-files sebagai berikut: x=-1;
for i=1:7
fprintf('Bil-%i',i);
fprintf(': %i',x);
x=x+2;
fprintf('\n');
end Tampilan jalannya program: Bil-1: -1 Bil-2: 1 Bil-3: 3 Bil-4: 5 Bil-5: 7 Bil-6: 9 Bil-7: 11 >>
MatlabTutor - sns Hal-12
Kasus-20 Sebuah var: zP menampung lima bilangan yakni: 1.5, -3.5, -1.5, -3, -3.5. Tampilkan isi zP dengan format sebagai berikut: zP[1]: _ zP[2]: _ ... zP[5]: _ Solusi: Konstruksi-algoritma zP∈{1.5,-3.5,-1.5,-3,-3.5}; for(i=0;i<5;i=i+1) { tampilkan zP[i+1]; } Dituliskan Matlab script pada framework M-files sebagai berikut: clc
clear all
zP=[1.5 -3.5 -1.5 -3 -3.5];
for i=1:5
fprintf('zP[%i',i);
fprintf(']');
fprintf(': %f',zP(i));
fprintf('\n');
end Tampilan jalannya program: zP[1]: 1.500000 zP[2]: -3.500000 zP[3]: -1.500000 zP[4]: -3.000000 zP[5]: -3.500000 >>
Kasus-21 Buatlah tampilan bilangan acak (random) sebanyak lima kali, dimana range bilangan yang ditampilkan: 0 s.d 1. Gunakan struktur kendali proses for dalam penanganan proses looping. Solusi: Konstruksi-algoritma for(i=0;i<5;i=i+1) { x=rand(); tampilkan “Random-”,<i+1>,“: ”; tampilkan x; } Dituliskan Matlab script pada framework M-files sebagai berikut: clc
clear all
for i=1:5
x=rand;
fprintf('Random-%i: %f \n',i,x);
end
MatlabTutor - sns Hal-13
Tampilan jalannya program: Random-1: 0.655741 Random-2: 0.035712 Random-3: 0.849129 Random-4: 0.933993 Random-5: 0.678735 >> Kasus-22 Buatlah tampilan bilangan acak (random) sebanyak lima kali, dimana range bilangan yang ditampilkan: 0 s.d 1000000. Gunakan struktur kendali proses while dalam penanganan proses looping. Solusi: Konstruksi-algoritma i=0; while (i<5) { x=rand();
x=x∗1000000; z=round(x); tampilkan “Random-”,<i+1>,“: ”; tampilkan z; i=i+1; } Dituliskan Matlab script pada framework M-files sebagai berikut: i=0;
while(i<5)
x=rand;
x=x*1000000;
z=round(x);
fprintf('Random-%i: %d \n',(i+1),z);
i=i+1;
end Tampilan jalannya program: Random-1: 438744 Random-2: 381558 Random-3: 765517 Random-4: 795200 Random-5: 186873 >> Kasus-23 Buatlah tampilan enam Bilangan Genap (even-numbers) dimana bilangan-awal=-8, dan struktur kendali proses while digunakan dalam penanganan proses looping. Gunakan format tampilan sebagai berikut: Bil-1: _ Bil-2: _ ... Bil-6: _ Solusi: Konstruksi-algoritma x=-8;
MatlabTutor - sns Hal-14
i=0; while(i<6) { tampilkan “Bil-”,<i+1>,“: ”; tampilkan x;
x←x+1; i=i+1; }
Dituliskan Matlab script pada framework M-files sebagai berikut: x=-8;
i=0;
while(i<6)
z=['Bil-',int2str(i+1),': ',int2str(x)];
disp(z);
x=x+2;
i=i+1;
end Tampilan jalannya program: Bil-1: -8 Bil-2: -6 Bil-3: -4 Bil-4: -2 Bil-5: 0 Bil-6: 2 >>
Kasus-24 Buatlah tampilan lima Bilangan Pecahan (floating-numbers) dengan selisih antar-bilangan adalah 0.5 dan bilangan-awal=-7.5. Tampilan disajikan secara horisontal dan gunakan struktur kendali proses for dalam penanganan proses looping. Solusi: Konstruksi-algoritma for(i=0;i<5;i=i+1) { x=rand(); tampilkan “Random-”,<i+1>,“: ”; tampilkan x; } Dituliskan Matlab script pada framework M-files sebagai berikut: x=-7.5;
for i=1:5
fprintf('%f',x);
fprintf(' ');
x=x+1;
end Tampilan jalannya program: -7.500000 -6.500000 -5.500000 -4.500000 -3.500000 >>
Kasus-25 Sebuah kata “manalu” akan ditampilkan secara terbalik menjadi “ulanam”. Tuliskan pemrograman script untuk menyelesaikan kasus ini jika penanganan perulangan menggunakan struktur kendali proses for dan kata tersebut ditampungkan ke var: s.
MatlabTutor - sns Hal-15
Solusi: Konstruksi-algoritma s∈{‘m‘,’a‘,’n‘,’a‘,’l‘,’u’}; s[0]=‘m’; s[1]=‘a’; s[2]=‘n’; s[3]=‘a’; s[4]=‘l’; s[5]=‘u’; for(i=0;i<3;i=i+1) { x=s[i]; s[i]=s[(6-1)-i]; s[(6-1)-i]=x; }
Dituliskan Matlab script pada framework M-files sebagai berikut: s=['m' 'a' 'n' 'a' 'l' 'u'];
N=length(s);
n=N/2;
fprintf('Kata: ');
for i=1:N
fprintf(s(i));
end
for i=1:n
x=s(i);
s(i)=s((N+1)-i);
s((N+1)-i)=x;
end
fprintf('\nDibalik: ');
for i=1:N
fprintf(s(i));
end
fprintf('\n'); Tampilan jalannya program: Kata: manalu Dibalik: ulanam >>