Bagian II
1. Pengenalan MatLab
Matlab adalah singkatan dari Matrix Laboratory, software yang dibuat dengan
menggunakan bahasa ini dibuat oleh The Mathworks.inc. Kekuatan matlab terletak
pada:
2. Memulai MatLab
Setelah melakukan instalasi MatLab pada PC, perhatikan icon MatLab pada
tampilan desktop kemudian doubleclick pada icon tersebut. Selanjutnya akan muncul
tampilan seperti pada Gambar 1.1.
Page | 1
Gambar 1. 1 Tampilan awal MatLab
Pada tampilan awal MatLab, terlihat beberapa jendela yang merupakan bagian
penting di dalam MatLab, antara lain:
Pada command window, semua perintah matlab dituliskan dan diekskusi. Kita
dapat menuliskan perintah perhitungan sederhana, memanggil fungsi, mencari
informasi tentang sebuah fungsi dengan aturan penulisannya (help), demo program,
dan sebagainya. Setiap penulisan perintah selalu diawali dengan prompt ‘>>’. Misal,
mencari nilai sin(30*pi/180), maka pada command window kita dapat mengetikkan:
>> sin(30*pi/180)
ans =
0.5000
Page | 2
Gambar 1. 2 Tampilan Command Window
2.2. Jendela ruang kerja (Workspace)
>> bilangan1=7
bilangan1 =
7
>> bilangan2=9
bilangan2 =
9
>> hasil=bilangan1+bilangan2
hasil =
16
>> who
Your variables are:
bilangan1 bilangan2 hasil
>> 1+2*3
ans =
7
>> x = 1+2*3
x=
7
Page | 4
>> 4*x
ans =
28.0000
Dalam pemrograman dengan script M-File ini maka baris perintah atau program
diketikkan dalam editor M-File. Setelah itu program akan disimpan dengan eksetensi
“.m”. Untuk menampilkan editor tersebut adalah dari menu utama Matlab. Pada menu
utama Matlab pilih menu File-new-M-File maka akan tampil editor seperti
diperlihatkan pada gambar 1.5
Langkah 1. Klik Tombol Start Program MATLAB setelah itu akan muncul window
utama Matlab.
Page | 5
Langkah 4. Klik File SaveAs Masukkan nama file Klik Save
Untuk mengakhiri sesi MatLab, ketikkan quit pada Command Window, atau select
File Exit MATLAB pada desktop main menu.
Bentuk perintah:
Nama_var masukan = input(‘Keterangan’)
4. Perintah Keluaran
4.1. disp
Perintah disp digunakan untuk menampilkan output atau teks dilayar. Bentuk perintah:
disp(‘Keterangan :’)
Latihan-1:
Program untuk melakukan input data string berupa nama, alamat, dan kota.
Page | 6
Latihan-2:
Ketikkan skrip program dibawah ini:
Latihan-3:
Buatlah program untuk menghitung volume sebuah balok.
Pembahasan :
Untuk mendapatkan volume balok, maka ada 3 input data yang perlu dilakukan yaitu
data panjang (p), lebar (l), dan tinggi (t).
Page | 7
Script Program Latihan 3:
4.2. fprint
Bentuk perintah :
Keterangan terdiri data string & numerik, diapit oleh tanda petik satu (‘)
Page | 8
Variabel yang berada dalam tanda petik satu harus diawali tanda %. Sedangkan
variabel i setelah \n tidak diawali dengan tanda %.
Latihan-4:
Buatlah program untuk menginput sebuah data numeric dan tampilkan hasilnya
4.3. sprint
Perintah sprint digunakan untuk menampilkan output data numeric dalam format
string.
Page | 9
Bentuk perintah :
sprintf('%nf',var_output)
1. sprintf('%0.5f',1/15)
Artinya tampilkan hasil dari 1/15 dengan format 5 angka di belakang koma.
>> sprintf('%0.5f',1/15)
ans =
0.06667
2. >> disp(sprintf('%0.5f',1/15))
Artinya tampilkan hasil dari 1/15 dengan format 5 angka di belakang koma.
>> disp(sprintf('%0.5f',1/15))
0.06667
3. disp(sprintf('%0.5f %2.5f',a,b))
Artinya tampilkan nilai dari variabel a dan b dengan format 5 angka di belakang koma.
>> a=1/15;
>> b=20/7;
0.06667 2.85714
Latihan-5:
Page | 10
Script Program Latihan 5:
Page | 11
MODUL 2
Perulangan dan Kondisional (Control Flow Program)
[Praktikum 2 ~ 3]
1. loop for
Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah
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).
>>for n = 1 : 10
x(n)=sin(n*pi/10);
end
>> x
x =
Columns 1 through 7
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
>> for i=1:5
disp('Ini hasil looping 5 kali');
end
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Latihan01.m
Tulislah script di program dibawah pada M-file, simpan program tersebut selanjutnya
dijalankan (Run).
1. % -----------------------------------------------
2. % Program latihan 4
3. % MATLAB Programming
4. % oleh : Teknik Mesin Unsrat
5. % -----------------------------------------------
6.
7.
8. clear all;
9. clc;
10. disp('-------------------------------------------');
11. disp('Program Latihan 4');
12. disp('-------------------------------------------');
13. ndat = input ('batas iterasi = ');
14. for n = 1 : ndat
15. for m = ndat : -1 : 1
16. a (n , m) = n^2 + (5*m);
17. end
18. end
Tulislah script di program dibawah pada M-file, simpan program tersebut selanjutnya
dijalankan (Run).
1. clear all;
2. clc;
3. f=inline('x.^2','x');
4. disp('x x^2');
5. for x=10:20;
6. fx=f(x);
7. disp([num2str(x),' ',num2str(fx)]);
8. End
Setelah anda jalankan program diatas lihatlah hasilnya pada command window. Pada
script program anda masukkan for x=1:100. Jalankan program dan lihatlah hasilnya.
2. loop while
Loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu
jumlah terbatas, 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.
>> x=0;
>> while x<5
disp('Diulang 5 kali');
x=x+1;
end
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Tulislah script di program diatas pada M-file, simpan program tersebut selanjutnya
dijalankan (Run). Jika dijalankan akan diperoleh hasil pada command window sebagai
berikut:
if syarat1
perintah-perintah
elseif syarat2
perintah-perintah
else
perintah-perintah
end
Latihan04.m
Tulislah script di program dibawah pada M-file, simpan program tersebut selanjutnya
jalankan (Run).
switch variable
case value1
perintah-perintah
case value2
perintah-perintah
.
.
.
otherwise
perintah-perintah
end
Tulislah script di program dibawah pada M-file, simpan program tersebut selanjutnya
jalankan (Run).
1. % -----------------------------------------------
2. % Program latihan 5
3. % MATLAB Programming
4. % Oleh : Teknik Mesin Unsrat
5. % -----------------------------------------------
6. clear all;
7. clc;
8. disp('-------------------------------------------');
9. disp('Program Latihan 5');
10. disp('-------------------------------------------');
11. disp ( ' Plihan Rumus Perhitungan ') ;
12. disp ( ' 1. Luas kotak ' ) ;
13. disp ( ' 2. Volume kotak ' ) ;
14. disp ( ' 3. Luas Silinder ' ) ;
15. disp ( ' 4. Volume Silinder ' ) ;
16. disp ( ' ' );
17. pilih=input ( ' pilihan anda ( 1 – 4 ) -> ' );
18. switch pilih
19. %------------------------------------
20. case 1
21. disp ( ' Hitung Luas Kotak ' );
22. disp ( ' ---------------------------- ' );
23. pjg=input ( ' panjang kotak = ' );
24. lbr=input ( ' Lebar kotak = ' );
25. tg=input ( ' tinggi kotak = ' );
26. luas=2*pjg+2*lbr+2*tg;
27. disp ( [ ' luas kotak = ' num2str(luas) ] );
28. %-----------------------------------
29. case 2
30. disp ( ' Hitung Volume Kotak ' );
31. disp ( ' ---------------------------- ' );
32. pjg=input ( ' panjang kotak = ' );
33. lbr=input ( ' Lebar kotak = ' );
34. tg=input ( ' tinggi kotak = ' );
35. vol=pjg*lbr*tg;
36. disp ( [ ' volume kotak = ' num2str(vol) ] );
37. %------------------------------------
38. case 3
39. disp ( ' Hitung Luas Silinder ' );
40. disp ( ' ---------------------------- ' );
41. r=input ( ' jari-jari silinder = ' );
42. tg=input ( ' tinggi silinder = ' );
43. luas=(2*pi*r*tg) + 2*(pi*r^2);
44. disp ( [ ' luas silinder = ' num2str(luas)] );
45. %------------------------------------
46. case 4
47. disp ( ' Hitung Volume Silinder ' );
48. disp ( ' ---------------------------- ' );
49. r=input ( ' jari-jari silinder = ' );
50. tg=input ( ' tinggi silinder = ' );
51. vol=pi*r^2*tg;
52. disp ( [ ' volume silinder = ' num2str(vol) ] );
53. %------------------------------------
54. otherwise
Latihan06
Dengan menggunakan Matlab, deskripsikan kode – kode Matlab berikut pada Matlab Editor
1. clc
2. clear all
3. close all
4. close all hidden
5. %
6. Mahasiswa.Nama = ‘Rudi Sujarwo’;
7. Mahasiwa.NIM = ‘95171041’;
8. Mahasiwa.Prodi = ‘Teknik Mesin’;
9. Mahasiswa(2).Nama = ‘Rudi Sujarwi’;
10. Mahasiwa(2).NIM = ‘95172042’;
11. Mahasiwa(2).Prodi = ‘Teknik Sipil’;
12. Mahasiswa(3).Nama = ‘Rudi Sukarwo’;
13. Mahasiwa(3).NIM = ‘95173043’;
14. Mahasiwa(3).Prodi = ‘Teknik Industri’;
15. Mahasiswa(4).Nama = ‘Rudi Sukarwijo’;
16. Mahasiwa(4).NIM = ‘95175044’;
17. Mahasiwa(4).Prodi = ‘Teknik Lingkungan’;
18. Mahasiswa(5).Nama = ‘Rudi Sukarmanto’;
19. Mahasiwa(5).NIM = ‘95175045’;
20. Mahasiwa(5).Prodi = ‘Teknik Elektro’;
21. %
22. M1 = Mahasiswa(1)
23. M2 = Mahasiswa(2)
24. M3 = Mahasiswa(3)
25. M4 = Mahasiswa(4)
26. M5 = Mahasiswa(5)
Latihan08
Dengan menggunakan Matlab selesaikan sistem persamaan linier (SPL) dengan metode
Eliminasi Gauss-Jordan. Sistem persamaan linier (SPL) adalah sebagai berikut:
Kode Matlab pada Matlab Editor SPL diatas adalah sbagai berikut berikut:
1. disp ('Pemrograman Komputer Teknik Mesin Unsrat');
2. disp ('Metode eliminasi Gauss dan Gauss Jordan menggunakan MATLAB');
3.
4. a = [3 4 -2 2 2
5. 4 9 -3 5 8
6. -2 -3 7 6 10
7. 1 4 6 7 2];
8.
9. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10. % Metode eliminasi Gauss [m,n)=size(a);
11. [m,n]=size(a);
12. for j=1:m-1
13. for z=2:m
14. if a(j,j)==0
15. t=a(j,:);a(j,:)=a(z,:);
16. a(z,:)=t;
17. end
18. end
19. for i=j+1:m
20. a(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
21. end
22. end
23. x=zeros(1,m);
24. for s=m:-1:1
25. c=0;
26. for k=2:m
27. c=c+a(s,k)*x(k);
28. end
29. x(s)=(a(s,n)-c)/a(s,s);
30. end
31. disp(' methode Gauss elimination:');
32. a
33. x'
34. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35. % Metode Gauss-Jordan
36. [m,n]=size(a);
37. for j=1:m-1
38. for z=2:m
39. if a(j,j)==0
40. t=a(1,:);a(1,:)=a(z,:);
41. a(z,:)=t;
42. end
43. end
44. for i=j+1:m
45. a(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
46. end
47. end
48.
49. for j=m:-1:2
50. for i=j-1:-1:1
51. a(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
52. end
53. end
54.
55. for s=1:m
56. a(s,:)=a(s,:)/a(s,s);
>> gauss
Metode eliminasi Gauss dan Gauss Jordan menggunakan MATLAB
Pemrograman Komputer Teknik Mesin Unsrat
Gauss elimination method:
a =
3.0000 4.0000 -2.0000 2.0000 2.0000
0 3.6667 -0.3333 2.3333 5.3333
0 0 5.6364 7.5455 11.8182
0 0 0 -4.6129 -17.0323
ans =
-2.1538
-1.1538
-2.8462
3.6923
Gauss-Jordan method:
a =
1.0000 0 0 0 -2.1538
0 1.0000 0 0 -1.1538
0 0 1.0000 0 -2.8462
0 0 0 1.0000 3.6923
ans =
-2.1538
-1.1538
-2.8462
3.6923
Latihan09
Untuk matrik yang dinyatakan dalam persamaan sebagai berikut:
1 2 3 4 4 5
A 2 1 1 dan B 6 1 2 .
3 2 1 3 5 5
script1.m
% Skrip untuk menghitung luas lingkaran
% Skrip akan meminta user untuk memasukkan jari-jari
radius = input('Masukkan jari-jari :');
% panggil fungsi calcarea()
area = calcarea(radius);
%cetak luas
fprintf('Lingkaran dengan jari-jari %.2f,',radius)
fprintf('Luasnya adalah : %.2f\n',area)
Vol_kerucut.m
function vol = vol_kerucut(radius, height)
% Calculates the volume of a cone
vol = (pi/3) * radius * radius * height;
Script2.m
% Skrip untuk menghitung luas lingkaran
% Skrip akan meminta user untuk memasukkan jari-jari
radius = input('Masukkan jari-jari :');
% panggil fungsi calcarea()
area = calcarea(radius);
%cetak luas
Cara menampilkan data menuliskan load(‘nama_file.txt). Hasil dari program diperoleh file
dengan nama data.txt. sebagai berikut:
Cara menampilkan data menuliskan load(‘nama_file.txt). Hasil dari program diperoleh file
dengan nama data_suhu.txt. sebagai berikut:
Latihan15
Bentuk interaksi dengan file gambar dengan kode sebagai berikut:
%Program interaksi dengan file gambar
clear all;
clc;
disp('Program interaksi dengan file gambar');
disp('step 1 : baca data');
image1 = imread('Hima_Mesin.jpeg');
disp('data sudah tersimpan di variabel image1');
disp('step 2 : tampilkan data');
figure(1)
imshow(image1);
title('Logo Hima Mesin RGB');
disp('step 3 : manipulasi data');
disp('konversi citra rgb ke citra grayscale');
gray(:,:,1) = uint8( round( (double(image1(:,:,1)) +
double(image1(:,:,2)) + double(image1(:,:,3)))/3));
gray(:,:,2) = gray(:,:,1);
gray(:,:,3) = gray(:,:,1);
disp('step 4 : simpan data');
imwrite(gray, 'Logo_Hima_Mesin_Unsrat_grayscale.jpg');
disp('Data telah disimpan!');
figure(2)
imshow('Logo_Hima_Mesin_Unsrat_grayscale.jpg');
title('Logo Hima Mesin grayscale');
4.1. Grafik 2D
Beberapa Fungsi Pengaturan Grafik
Membuat jendela gambar baru dengan perintah:
figure(n)
Kita juga dapat menempatkan beberapa grafik yang dibuat secara independen dalam satu
gambar. Perintah yang digunakan adalah:
subplot(i, j, k)
Gambar 4.1 adalah beberapa contoh bagaimana figure dan subplot dapat dibuat. Perlu dicatat
bahwa jika hanya satu jendela gambar yang dibutuhkan, angka dapat dihilangkan, bahkan jika
subplot digunakan.
Script or function
figure(1)
plotting expressions
figure(2)
subplot(1, 2, 1)
plotting expressions
subplot(1, 2, 2)
plotting expressions
subplot(2, 1, 2)
plotting expressions
figure(4)
subplot(2, 3, 3)
plotting expressions
subplot(2, 3, 2)
plotting expressions
subplot(2, 3, 1)
plotting expressions
subplot(2, 3, 4)
plotting expressions
subplot(2, 3, 5)
plotting expressions
subplot(2, 3, 6)
plotting expressions
Gambar 4.1 Contoh figure dan subplot (lanjutan)
Plotting Points
Untuk menempatkan tanda * merah di lokasi (2, 4), instruksi plottingnya adalah sebagai
berikut:
plot(2, 4, 'r*')
plotting expressions
Untuk menggambar rangkaian garis lurus tidak terhubung yang titik akhirnya adalah (x1n, y1n)
dan (x2n, y2n), kita dapat membuat empat vector sebagai berikut:
x j x j1 x j 2 x jn , j 1, 2
y j y j1 y j 2 y jn , j 1, 2
x1 = […]; x2 = […];
y1 = […]; y2 = […];
plot([x1; x2], [y1; y2])
Untuk menggambarkan bagaimana ekspresi ini digunakan, kita gambarkan empat garis
vertical dari y=0 ke y =cos(x/20) untuk x = 2, 4, 6 dan 8. Scriptnya adalah
x = 2:2:8;
y = [zeros(1, length(x)); cos(pi*x/20)];
plot([x; x], y, 'k')
Plotting Circles
Untuk menggambar lingkaran jari-jari yang pusatnya terletak di () dalam koordinat Cartesian
sistem, kita harus terlebih dahulu mengubah koordinat radial ke koordinat Cartesius
menggunakan persamaan berikut:
x a r cos( )
y b r sin( )
menghasilkan gambar:
Script untuk menggambar Six concentric circles yang radius awalnya 0,5 peningkatan selisih
0,25 dan yang pusatnya ditandai dengan tanda plus adalah:
theta = linspace(0, 2*pi, 50); % (1×50)
rad = 0.5:0.25:1.75; % (1×6)
x = 1+cos(theta') *rad; % (50×6)
y = 2+sin(theta') *rad; % (50×6)
plot(x, y, 'k', 1, 2, 'k+')
axis equal
menghasilkan gambar:
menghasilkan gambar:
menghasilkan gambar:
g1 ( x) 0.1x 2
g 2 ( y ) cos 2 y
g3 ( z ) e 0.3 z
dimana 0 x y z 3.5. Tiga hubungan matematika ini dapat digambar dalam satu figure
dengan tiga. Script program adalah sebagai berikut:
x = linspace(0, 3.5);
plot(x, [0.1*x.^2; cos(x).^2; exp(-0.3*x)], 'k')
hold on
plot(x, cos(x).^2, 'k')
plot(x, exp(-0.3*x), 'k')
atau
x = linspace(0, 3.5);
plot(x, 0.1*x.^2, 'k', x, cos(x).^2, 'k', x, exp(-0.3*x), 'k')
hold on
plot(x, cos(x).^2, 'k')
plot(x, exp(-0.3*x), 'k')
atau
x = linspace(0, 3.5);
plot(x, 0.1*x.^2, 'k')
hold on
plot(x, cos(x).^2, 'k')
plot(x, exp(-0.3*x), 'k')
menghasilkan gambar:
menghasilkan gambar:
Gambar 4.8 Tiga fungsi berbeda diplot pada rentang yang sama
Beberapa fungsi dapat digunakan untuk mengubah tampilan dasar grafik. Fungsi tersebut
adalah sebagai berikut:
MATLAB memiliki Lybrary grafik tujuan khusus yang berlaku untuk berbagai macam
aplikasi. Berikut ini akan digambarkan beberapa dari mereka dengan masing-masing plot satu
atau kedua bagian dari persamaan berikut:
dimana
1
H
1 2
2 2 2
2
tan 1
1 2
dan 1
Latihan19
Pertama-tama kita buat fungsi M-file FOm untuk mewakili persamaan ini sebagai
Label Sumbu dan Kurva, Judul Gambar, Legenda, dan Penempatan Teks
Fungsi yang digunakan untuk memberi label pada dan sumbu serta untuk menempatkan judul
di atas grafik, secara berturut-turut sbagai berikut:
xlabel(s1)
ylabel(s2)
title(s3)
Latihan20
Skrip untuk melakukan operasi pembuatan Label Sumbu dan Kurva, Judul Gambar, Legenda,
dan Penempatan Teks adalah sebagai berikut:
x = linspace(0, 6, 100);
plot(x, cos (x), 'k', x, 1./cosh (x), 'k', [4.73, 4.73], [-1, 1], 'k')
xlabel ('x')
ylabel ('Fungsi Nilai')
title ('Visualisi dari dua Kurva yang berpotongn')
text (4.8, -0.1, 'x = 4.73')
text (2.1, 0.3, '1/cosh(x)')
text (1.2, -0.4, 'cos(x)')
text(4.8, -0.1, 'x = 4.73')
legend('cos(x) ', '1/cosh(x) ', 'Location', 'SouthWest')
Filling regions yaitu dengan menambahkan script program berikut pada script program diatas.
Gambar 4.10 Modifikasi dari Gambar 4.9 dengan mengisih area antara dua kurva.
Untuk rangkaian fungsi plot tujuan khusus terakhir mempertimbangkan diagram lingkaran,
yang dibuat dengan menggunakan pie dan pie3.
Latihan 21
Tabel 4.4 Huruf Yunani huruf besar dan huruf kecil dan beberapa simbol matematika
Latihan 22
g 2 cos 41 e
11
untuk 3 dan 1 1 2, dan beri label angka yang sesuai. Script program persamaan diatas
adalah:
1. Om1 = linspace(1, 2); beta = 3;
Gambar 4.12 Plot grafik dengan superscripts, subscripts, and Greek letters
dC A1
C A0 C A1 (5.7)
dt
dC A2
C A1 C A2 (5.8)
dt
Penyelesaian:
Untuk menyelesaikan kasus di atas, lakukan langkah yang telah dijelaskan di atas sehingga
dihasilkan moel blok Simulink seperti Gambar 4.13.
Latihan24 Dengan Simulink, selesaikanlah persamaan diferensail order biasa berikut dengan
konsentasi A awal 1 mol/L dan kosentrasi awal B adalah nol.
dC A
2C A CB (5.9)
dt
Penyelesaian:
Dengan cara yang sama dengan langkah pada Contoh 1 dihasilkan model blok Simulink seperti
Gambar 4.15.
Selanjutnya klik dua kali pada blok Integrator dan Integrator 1 dan atur initial condition
masing-masing dengan nilai 1 dan 0, seperti ditunjukkan Gambar 4.15.
Error
or
Actuating
Input signal Output
or + U or
Pengontrol Plant
Reference (R) Controlled
_ variable (Y)
Summing
junction
Y ( s) ( K d Ki s Ki s 1) K p
2
(5.1)
R( s ) Ki s
dimana:
Kp = Proportional gain
Ki = Integral gain
Kd = Derrivative gain
Cara kerja dari gambar 5.1. System Unity Feedback diatas adalah Variabel (e)
menggambarkan tracking error, nilai masukan yang berbeda (R), keluaran actual (Y). Signal error
ini akan dikirim ke PID controller, dan controller akan menghitung keseluruhan turunan dan integral
t e(t )
u (t ) K p e(t ) K i e(t )dt K d (5.2)
0 t
Sinyal u(t) akan dikirim ke plant, dan akan mendapatkan keluaran baru y(t). Keluaran baru y(t) ini
akan dikirim kembali ke sensor untuk mencari kesalahan sinyal baru e(t). Controller membawa
kesalahan signal baru tersebut dan menghitung turunan-turunannya dan integral-integralnya sekali
lagi.
Proportional Controller (Kp) akan memberikan efek mengurangi waktu naik, tetapi tidak
menghapus kesalahan keadaan tunak. Integral controller (Ki) akan memberikan efek menghapus
kesalahan keadaan tunak, tetapi berakibat memburuknya respon transient. Derivative controller akan
memberikan efek meningkatnya stabilitas system, mengurangi overshoot dan menaikkan respon
transfer. Efek dari setiap controller (Kp, Kd, Ki) dalam system loop tertutup seperti pada table dibawah
ini:
Dari table diatas terlihat bahwa hubungan korelasi tidak sepenuhnya akurat, karena K p, Ki, dan Kd
saling bebas. Untuk lebih jelasnya, mahasiswa dapat mempelajari pada definisi secara lengkap
disertai dengan respon system dibawah ini dengan menggunakan MATLAB.
Sebuah benda yang diberikan oleh massa 1 kg, peredam 10 N.s/m, pegas 20 N/m dan masukan 1,
seperti gambar dibawah ini :
Dari grafik respon system diatas dapat dianalisa bahwa penguatan DC dari transfer fungsi ‘plant’
adalah 1/20, maka 0.05 adalah nilai akhir dari keluaran pada masukan sebuah langkah. Hal ini
membuat kesalahan keadaan tunak 0.95 sebenarnya cukup besar. Terlebih lagi waktu naik sekitar
satu detik dan waktu tunda sekitar 1.5 detik.
Proportional Control
Dari table diatas terlihat bahwa proportional controller (Kp) mengurangi waktu naik, meningkatkan
overshoot dan mengurangi kesalahan keadaan tunak. Fungsi transfer loop tertutup dari sistem diatas
dengan proportional controller adalah:
X (s) Kp
2
F ( s ) s 10 s (20 Kp )
Tentukan proportional gain (Kp) = 300 dan masukkan pada command window Matlab dibawah ini:
Kp = 300;
num = [Kp];
den = [1 10 20+Kp];
t = 0 : 0.01 : 2;
step (num,den,t)
hasil respon system adalah sebagai berikut:
Dari grafik respon system diatas dapat dianalisa bahwa plot diatas memperlihatkan bahwa
proporsional controller mereduksi waktu naik dan kesalahan keadaan tunak, meningkatkan
overshoot, mengurangi waktu turun dalam skala kecil.
X ( s) Kd s K p
2
F ( s) s (10s K d ) (20 K p )
Tentukan Kp = 300 dan Kd = 10. masukkan pada command window Matlab dibawah ini:
Kp = 300;
Kd = 10;
num = [Kd Kp];
den = [1 10+Kd 20+Kp];
t = 0 : 0.01 : 2;
step (num, den, t)
Dari grafik respon system diatas dapat dianalisa bahwa plot tersebut menunjukkan derivative
controller mereduksi overshoot dan waktu turun dan memberikan efek kecil pada waktu naik dan
kesalahan keadaan tunak.
X ( s) K p s Ki
3
F ( s) s 10s (20 K p ) Ki
2
Tentukan Kp = 30 dan Kd = 70. Masukkan pada command window Matlab dibawah ini:
Kp = 30;
Ki = 70;
num = [Kp Ki];
den = [1 10 20+Kp Ki];
t = 0 : 0.01 : 2;
step (num, den, t)
Dari grafik respon system diatas dapat dianalisa bahwa respon system telah mereduksi Kp karena I
controller juga mereduksi waktu naik dan meningkatkan overshoot seperti yang dilakukan P
controller. Respon diatas menunjukkan bahwa I controller menghilangkan kesalahan keadaan tunak.
PID Controller
Fungsi transfer loop tertutup pada system yang dicontohkan dengan PID Controller adalah:
X (s) K p s 2 Ki
3
F ( s) s (10 K d ) s 2 (20 K p ) K i
Setal beberapa trial dan error dijalankan, penguatan Kp = 50, Ki =50, dan Kd = 50 memberikan respon
yang diinginkan. Masukkan data tersebut pada command window:
Kp = 350;
Ki = 300;
Kd = 50;
num = [Kp Ki];
den = [1 10+Kd 20+Kp Ki]; t = 0 : 0.01 : 2;
step (num, den, t)
d 2 x 1 K dx k k
1 1 x 1 x 1/ 0 (5.3)
d 2 Q k d k k
dimana
N
,
2n
1
Q ,
2 (5.4)
c
,
2mn
n k / m,
Gambar 5.8 Model Machine Tool Chatter dan benda kerja saat berputar
Pada persamaan (5.3), N adalah kecepatan rotasi benda kerja dalam revolusi per detik.
Untuk menentukan kapan chatter dapat terjadi, asumsikan x Ae , maka diperoleh persamaan
karakteristik sebagai berikut:
1 K
1 1 e 0
k1
2 /
(5.5)
Q k k
Untuk menemukan batas stabilitas, tetapkan j dan substitusikan ke Persamaan. (5.5) untuk
dapatkan persamaan sebagai berikut:
Nilai untuk dan kemudian digunakan dalam persamaan (5.6) untuk menentukan nilai-nilai
positif Q yang memenuhi persamaan sebagai berikut:
1 K k1 sin( / )
(5.6)
Q k k
Dalam plot versus Q, kita dapat menunjukkan region yang sistemnya beroperasi stabil atau tidak
stabil. Untuk K / k 0.0029, k1 / k 0.0785, , dan 1, sistem persamaan yang diberikan oleh
persamaan. (5.6) diselesaikan secara numerik menggunakan skrip M-file sebagai berikut:
Eksekusi script M-file menghasilkan Gambar 5.9. Daerah yang teduh atau lobus dalam hal ini
gambar 5.9 adalah wilayah tidak stabil tempat alat mesin chatter dapat terjadi.
dC A1
C A0 C A1 (5.7)
dt
dC A2
C A1 C A2 (5.8)
dt
Penyelesaian:
Untuk menyelesaikan kasus di atas, lakukan langkah yang telah dijelaskan di atas sehingga
dihasilkan moel blok Simulink seperti Gambar 5.10.
Contoh 2. Dengan Simulink, selesaikanlah persamaan diferensail order biasa berikut dengan
konsentasi A awal 1 mol/L dan kosentrasi awal B adalah nol.
dC A
2C A CB (5.9)
dt
Penyelesaian:
Dengan cara yang sama dengan langkah pada Contoh 1 dihasilkan model blok Simulink seperti
Gambar 5.11.
Selanjutnya klik dua kali pada blok Integrator dan Integrator 1 dan atur initial condition masing-
masing dengan nilai 1 dan 0, seperti ditunjukkan Gambar 5.11.
1.1. Pendahuluan
Visual C++ adalah komponen dari Microsoft Visual Studio untuk mengembangkan
program C++. Versi gratis dari Visual Studio dapat diunduh. Bagian ini akan
memperkenalkan cara membuat proyek, membuat program, kompilasi dan menjalankan
program dalam Visual Studio C ++.
Gambar 1.7 File type, Name, and location untuk membuat file.
Latihan01:
Tuliskan Kode program berikut ini pada Visual Studio C++.
//*-------------------------------------------------------*
//* contoh 1 : inisialisasi variabel dengan *
//* nilai konstan *
//*--------------------------------------------------------*
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
int jumlah = 10; // inisialisasi
Hasil eksekusi
Latihan02:
Tuliskan Kode program berikut ini pada Visual Studio C++.
//*-------------------------------------------------------------*
//* Contoh 2 : Contoh Inisialisasi variabel dengan *
//* suatu ungkapan *
//*----------------------------------------------------------*
#include <iostream>
#include <conio.h>
#include <iostream>
using namespace std;
void main()
{
system("cls");
cout << "Isi duaphi = " << duaphi << '\n';
_getch();
Hasil eksekusi
Pada materi ini, kita akan mempelajari tentang struktur program dari C++. Stuktur
dari program C++ mencakup komponen-komponen seperti file header, deklarasi variabel,
int main(), pernyataan output dan lain sebagainya.
Latihan03:
Tuliskan Kode program berikut ini pada Visual Studio C++.
#include <stdio.h>
#include <conio.h>
#include <iostream>
int main()
{
std::cout << "Selamat datang di Algoritma dan Pemrograman" <<
std::endl;
std::cout << "Ada yang bisa dibantu ? " <<
std::endl;
_getch();
return 0;
}
Latihan04:
Tuliskan Kode program berikut ini pada Visual Studio C++.
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
cout << "\"Selamat Datang\"\n";
cout << "\tMahasiswa/i Teknik Mesin 2019\ ? "<< endl;
cout << "\'Di Universitas Sam Ratulangi Manado\'" << endl;
_getch();
return 0;
}
Latihan05:
Tuliskan Kode program berikut ini pada Visual Studio C++.
#include <stdio.h>
#include <conio.h>
#include <iostream>
namespace ns1 {
int n = 3;
float m = 2.5;
int k = 2;
double R = n*m*k;
}
namespace ns2 {
float n = 4.0;
int m = 2;
double k = 3.0;
double R = n*m*k;
}
int main(){
int Square;
int Product;
using namespace ns2;
Square = n*n + m*m;
Product = ns1::k * ns2::m;
cout << "Square = " << Square << ", \t Product = " << Product << endl;
cout << " R = " << ns1::R << endl; cout << " R = " << ns2::R << endl;
_getch();
return 0;
}
Output adalah sebagai berikut
Latihan06:
Tuliskan Kode program berikut ini pada Visual Studio C++.
#include<conio.h>
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int a;
a = 2019;
char Tugas_saya[30] = "Sedang Belajar C++";
cout << "Saya ini " << Tugas_saya << endl;
cout << "Angkatan " << a << endl;
_getch();
}
Output adalah sebagai berikut
2. Buatlah sebuah Script program untuk menampilkan Hasil eksekusi sebuah kalimat
sebagai berikut:
Nama : (Nama Anda)
NIM : (NIM Anda)
Jurusan : Teknik Mesin
Universitas : Sam Ratulangi
Kota : Manado
int main()
{
int main(){
cout << "1. Bahasa Pemrograman C++ dirancangan untuk" << endl;
cout << "A.PFC B.PBO C.CFP D.PBA" << endl;
cout << "Jawabanya adalah " << jwb << endl;
_getch();
return 0;
}
int main(){
int sisi;
sisi = 10;
cout << "Pesergi memiliki sisi sebesar " << sisi << endl;
cout << "dan luas persegi adalah " << sisi*sisi << endl;
_getch();
return 0;
}
Latihan11
Berikut ini contoh program C++ menggunakan tipe data float:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
luas = phi*r*r;
cout << "Diketahui lingkaran berdiameter " << r << " cm" << endl;
cout << "luas lingkaran adalah " << luas << " cm^2" << endl;
_getch();
return 0;
}
3.1.5. Double
double adalah tipe data untuk numerik yang digunakan untuk data berupa angka pecahan
yang nilai decimalnya dua kali lebih banyak.
Latihan12
Berikut ini contoh program C++ menggunakan tipe data double:
#include <conio.h>
int main(){
Latihan13
Berikut ini contoh program C++ menggunakan tipe data bool:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
3.1.7. Wchar_t
wchar_t adalah tipe data untuk numerik yang digunakan untuk data berupa angka
pecahan yang nilai decimalnya dua kali lebih banyak.
Latihan14
Berikut ini contoh program C++ menggunakan tipe data wchar_t:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
cout << "Bansa Korea (char) : " << korean << endl;
cout << "Tulisan Korea (wchar_t) : " << hangul << endl;
_getch();
Latihan15
int main() {
system("cls");
_getch();
return 0;
}
Latihan16
Contoh program (mendeklarasikan beberapa variabel dengan tipe data berbeda):
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
system("cls");
_getch();
return 0;
}
3.2. Variabel
Berbeda dengan pendeklarasian variabel di bahasa pemrograman lain, dalam C++
sebelum mendeklarasikan variabel, hal pertama yang harus dideklarasikan adalah tipe data
yang akan digunakan untuk menampung data. Format penulisannya adalah sebagai berikut:
int main(){
// inisialisasi variabel :
int a, b; int hasil;
// proses :
a = 5;
b = 2;
a = a + 1; hasil = a - b;
// cetak hasilnya :
cout << hasil;
// menghentikan program :
_getch();
return 0;
}
Latihan18
Contoh program (inisialisasi variabel dengan nilai konstan):
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main() {
int a = 100;
int b = 200;
_getch();
}
A + B = 300
Latihan19
Contoh program (inisialisasi variabel yang disertai penugasan nilai):
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main() {
_getch();
//return 0;
}
Pemberian inisialisasi terhadap suatu variabel dengan menggunakan ungkapan juga dapat
diperkenenkan. Sebagai contoh :
float duaphi = 2 * 3.14;
Latihan20
Contoh program (inisialisasi variabel dengan suatu ungkapan):
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main() {
float duaphi = 2 * 3.14;
system("cls"); //clrscr(); //Clearing the Screen
cout << "Isi duaphi = " << duaphi;
_getch();
//return 0;
}
Pembuatan variabel tidak selalu di bagian awal program, tapi boleh dimana saja sebelum
dipanggil atau dioperasikan.
Latihan20
Contoh program:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void main() {
system("cls"); // Membersihkan layar
float p;
cout << "Masukkan nilai Panjang (m) = "; cin >> p;
float l; cout << "Masukkan nilai Lebar (m) = "; cin >> l;
_getch();
//return 0;
}
Latihan21
Contoh program mendeklarasikan variabel:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
system("cls");
_getch();
return 0;
}
3.3. Konstanta
Berbeda dengan variabel, konstanta merupakan wadah yang dapat menyimpan nilai
tetap selama eksekusi program. Untuk membedakan dengan variabel maka nama konstanta
harus menggunakan huruf capital. C++ menyediakan 2 cara untuk membuat konstanta:
Menggunakan #define
Contoh:
Latihan22
Contoh program:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
system("cls");
const float PHI = 3.13;
float jari2, luas, keliling;
cout << "Masukkan nilai Jari-jari : ";
cin >> jari2;
luas = 0.5 * PHI * jari2 * jari2;
keliling = 2 * PHI * jari2;
cout << "Luas Lingkaran : " << luas << endl;
_getch();
return 0;
}
3.4. Operator
Operasi merupakan pengolahan yang dapat dilakukan terhadap sebuah atau beberapa
data. Dalam bahasa C operasi hanya dapat dilakukan terhadap data sejenis (tipe data yang
sama). Jika operasi diberlakukan terhadap data tidak sejenis umumnya akan menghasilkan
keluaran yang tidak sesuai. Simbol atau tanda yang digunakan untuk suatu operasi tertentu
dinamakan operator, sedangkan data (variabel atau konstanta) yang dioperasikan disebut
operan.
Berdasarkan jumlah operan maka operator dibagi atas:
Unary operator; operasi yang dilakukan hanya melibatkan satu operan.
Binary operator, operasi yang dilakukan melibatkan dua operan.
Ternary operator, operasi yang dilakukan melibatkan tiga operan.
Berdasarkan jenis operasinya maka operator dalam bahasa C terbagi atas:
Operator aritmatika
Operator relasi
Operator logika
Operator pengolahan bit (bitwise)
Selain operator di atas bahasa C juga menyediakan operator khusus lainnya, yaitu:
Operator cast
Operator penugasan
Operator bersyarat
Operator sizeof
Latihan23
Contoh program: Operator Increment setelah Operan
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
_getch();
return 0;
}
Latihan24
Contoh program: Operator Increment sebelum Operan
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
_getch();
return 0;
}
int main() {
int x, y;
x = 9 % 2;
y = 102 % 7;
printf("x = %d\n", x);
printf("y = %d", y);
_getch();
return 0;
}
Operator relasi banyak digunakan untuk penyeleksian kondisi dengan statemen if, do-while
dan while-do.
Latihan26
Contoh program: Program Operator %
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 3;
printf("%d", a > b); // 5 > 3
printf("\n%d", a >= b + 2); // 5 >= 3+2
printf("\n%d", a - 2 == 2 - b); // 3-2 == 2-3
printf("\n%d", a / 2 <= b - 1); // 5/2 <= 3-1
printf("\n%d", b * 2 < b / 2); // 3*2 < 3/2
_getch();
return 0;
}
Latihan27
Contoh program: Program Operator Logika
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
_getch();
return 0;
}
Catatan : untuk XOR akan menghasilkan nilai 1 jika nilai-nilai yang dibandingkan
berbeda (contoh 1 XOR 0 akan bernilai 1, sedangkan 1 XOR 1 akan bernilai 0).
Latihan28
Contoh program: Program Operator Bitwise
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
int a=5, b=7; /*konversi desimal ke bentuk biner(bit) 5 --> 101, 7-->
111 */
printf("%d & % d = %d\n", a, b, a&b); // bit 101 & bit 111
printf("%d | % d = %d\n", a, b, a | b); // bit 101 | bit 111
printf("%d ^ % d = %d\n", a, b, a^b); // bit 101 ^ bit 111
printf("%d >> 2 = %d\n", a, a >> 2); /* bit 101 digeser ke kanan
2 posisi bit */
printf("%d << 1 = %d", b, b<<1);/*bit 111 digeser ke kiri 1 posisi bit */
_getch();
return 0;
}
Operator bersyarat akan menghasilkan satu dari dua pilihan. Misalnya x = y? nilai1: nilai2;
Pertama ekspresi x= y akan diperiksa apakah bernilai benar atau salah, jika bernilai benar
maka ekspresi nilai1 akan dievaluasi dan nilainya akan diberikan kepada x, jika salah maka
ekspresi nilai2 yang akan dievaluasi dan nilainya diberikan kepada x.
Latihan29
Contoh program: Program Operator Cast
int main() {
min = n1<n2 ? n1 : n2;
printf("Nilai yang lebih kecil dari %d dan %d = %d", n1, n2, min);
max = n1>n2 ? n1 : n2;
printf("\nNilai yang lebih besar dari %d dan %d = %d", n1, n2,
max); _getch();
return 0;
}
Latihan30
Contoh program: Program Operator Sizeof
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
long big;
printf("\"big\" is %u bytes\n", sizeof(big));
printf("a short is %u bytes\n", sizeof(short));
printf("a double is %u bytes\n", sizeof(double));
_getch();
return 0;
}
Latihan31
Konversi Suhu
Rumus konversi suhu dari celcius ke fahrenheit dan reamur dapat di tulis sebgai berikut:
tF = 9/5 * tC + 32
tR = 4/5 * tC
Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
//Deklarasi variabel
double tc, tf, tr;
_getch();
return 0;
}
Hasil konversi
Derajat Fahrenheit : 232
Derajat Reamur : 160
Latihan32
Konvrersi satuan panjang
Konversi satuan panjang dari yard, kaki dan inchi ke meter menggunakan standar berikut
ini :
1 yard = 3 kaki= 0,9144 meter.
1 kaki = 12 inchi = 30,48 centimeter = 0,3048 meter.
1 inchi = 25,4 milimeter = 0,025 meter.
Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
//Deklarasi variabel
double yard, kaki, inchi, meter;
//Menghitung konversi
meter = 0.9144*yard + 0.3048*kaki + 0.0254*inchi; cout << endl;
_getch();
return 0;
}
Latihan33
Operator Binary
Program berikut ini memberi gambaran penggunaan operator binary yang terdiri atas
operator aritmatika penjumlahan, pengurangan, perkalian dan pembagian untuk bilangan
bulat.
Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
//Deklarasi variabel
int A, B;
_getch();
return 0;
}
Latihan34
Sisa bagi bilangan Bulat (modulo)
Dalam bahasa C++, sisa bagi dilambangkan dengan operator %. Misalnya 7%3=1 (7 dibagi
3 dapat 2 sisa 1). Dalam bahasa pascal menggunakan perintah Mod, misalnya 7 mod 3=1.
Berikut ini adalah contoh program penggunaan operator % untuk menghitung konversi dari
detik ke jam, menit, dan detik. Masukan dari program ini adalah waktu dalam satuan detik,
kemudian akan dikonversikan ke dalam satuan jam, menit dan detik. Misalnya jika
dimasukkan 3700 detik maka akan tampil 1 jam 1 menit 40 detik.
Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
//Deklarasi variabel
int detik, menit, jam, sisajam;
Fungsi putch(int x) akan menampilkan karakter ASCII (American Standard Code for
Information Interchange) dari nilai x ke layar monitor tanpa
memindahkan letak kursor ke baris berikutnya.
Fungsi putchar(char) akan menampilkan karakter tanpa memindahkan letak kursor ke baris
berikutnya.
Fungsi puts(char *s) akan menampilkan string dan menambahkan karakter newline
(memindahkan letak kursor ke baris berikutnya).
int main()
{
char kata1[10] = "Algoritma", kata2[12] = "Pemrograman";
char kar1 = '1', kar2 = 'A';
int kode = 165;
puts(kata1); /* hanya dapat menampilkan 1 argumen, jika menggunakan statemen
puts(kata1, kata2); akan menimbulkan kesalahan */
puts(kata2);
putchar(kar1);
putchar(kar2); /* putchar(kar1, kar2); akan menimbulkan kesalahan */
_putch(kode); /* akan menampilkan karakter ASCII dari nilai 165*/
Hasil eksekusi
Penggunaan fungsi puts() dan putchar() relatif sederhana karena tidak diperlukan
format, tetapi fungsi ini tidak dapat menampilkan bentuk yang rumit dan hanya dapat
menggunakan satu argumen saja.
int main() {
_getch();
return 0;
}
Hasil eksekusi
scanf()
Fungsi pustaka scanf() digunakan untuk menginput data berupa data numerik, karakter
dan string secara terformat.
int main() {
int bil;
char kar, nama[10];
float pecah;
Hasil eksekusi
Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat
digunakan untuk memasukkan data numerik. Penulisan fungsi gets() harus diakhiri dengan
penekanan tombol enter. Fungsi gets() akan menyebabkan kursor secara otomatis akan
pindah baris, fungsi gets() tidak memerlukan penentu format.
int main()
{
_getch();
return 0;
}
Hasil Eksekusi
getchar()
Fungsi getchar() digunakan untuk membaca data yang bertipe karakter, penggunaan
fungsi getchar harus diakhiri dengan penekanan tombol enter. Karakter yang dimasukkan
akan terlihat pada layar dan pergantian baris akan dilakukan secara otomatis tanpa
int main()
{
char c;
printf("Masukkan sebuah karakter : ");
c = getchar();
printf("Karakter yang dimasukkan adalah %c", c);
_getch();
return 0;
}
Hasil Eksekusi
getche()
Fungsi getche() digunakan untuk memasukkan sebuah karakter dari keyboard , fungsi
getche() tidak menggunakan argumen. Nilai karakter yang dimasukkan tidak memerlukan
penekanan tombol enter. Fungsi getche() tidak menyebabkan pemindahan kursor ke baris
baru, karakter yang dimasukkan akan ditampilkan di layar. Prototype fungsi getche() ada
pada file judul conio.h, sehingga file judul conio.h harus disertakan.
int main()
{
char c;
printf("Masukkan sebuah karakter ");
c = _getche();
printf("\nKarakter yang dimasukkan adalah %c", c);
_getch();
return 0;
}
gets ()
int main()
{
char warna[10];
printf("Masukkan warna favorit anda : ");
gets_s(warna);
printf("Warna favorit anda adalah %s", warna);
_getch();
return 0;
}
Hasil Eksekusi
5.1. Pernyataan If
Pada bentuk if, pernyataan hanya akan dijalankan kalau kondisi bernilai benar. Yang
terpenting dari bagan alur diatas adalah kondisinya. Kodisilah yang menentukan apakah
sebuah pernyataan program akan dieksekusi atau tidak
Bentuk if-then
Jika ada lebih dari satu statemen yang harus dilaksanakan maka harus
digunakan tanda ( { ) dan (}).
Bentuk:
if (kondisi)
{ statemen-1;
….
statemen-n;
int main() {
Hasil Eksekusi
Pada pernyataan diatas “Lulus” tidak selalu ditampilkan tergantung kepada nilai yang
dimasukkan pada saat program dijalankann. Tetapi pernyataan “Nilai anda = ....” akan
selalu ditampilkan karena tidak tergantung kepada kondisi if.
Bentuk umum untuk statemen if-else dalam bahasa C adalah sebagai berikut:
if (kondisi)
statement;
else
statemen;
Hasil Eksekusi
if (kondisi_1)
statemen;
else
if(kondisi_2)
statemen;
else
if (kondisi_n)
statemen;
else
statemen;
……
Teknik Mesin Unsrat Page | 99
Latihan 44 Latihan Program if-bersarang
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
int Jumlah_Buku;
float harga;
printf("Jumlah Buku : ");
scanf_s("%d", &Jumlah_Buku);
if (Jumlah_Buku >= 50)
{
harga = Jumlah_Buku * 0.8 * 2500;
scanf_s("\nTotal harga : %.2f", harga);
}
else
if (Jumlah_Buku >= 35)
{
harga = Jumlah_Buku * 0.85 * 2500;
printf("\nTotal harga : %.2f", harga);
}
else
if (Jumlah_Buku >= 20)
{
harga = Jumlah_Buku * 0.9 * 2500;
printf("\nTotal harga : %.2f", harga);
}
else
{
harga = Jumlah_Buku * 2500;
printf("\nTotal Harga : %.2f", harga);
}
_getch();
return 0;
}
Hasil Eksekusi
switch (<ekspresi>)
{ case <nilai_1>: statemen_1;
break;
…….
case <nilai_n> : statemen_n;
break;
default: statemen_default;
}
Jawab:
Suatu bilangan dikatakan bilangan genap jika habis dibagi 2. dengan demikian algoritma
pengecekan bilangan genap atau ganjil dapat dituliskan sebagai berikut:
1. Masukkan bil.
2. jika (bil habis dibagi 2 ) maka kerjakan baris 3; jika tidak kerjakan baris 4.
3. tulis ’Bilangan genap’. Selesai.
4. tulis ’Bilangan ganjil’. Selesai.
Latihan program dalam C untuk mengecek suatu bilangan termasuk bilangan ganjil atau
genap:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
Hasil Eksekusi
Jawab:
Algoritma untuk menampilkan hari dapat dituliskan sebagai berikut:
1. Masukkan x.
2. Jika (x = 0) Tulis ’Minggu’. Selesai.
3. Jika (x = 1) Tulis ’Senin’. Selesai.
4. Jika (x = 2) Tulis ’Selasa’. Selesai.
5. Jika (x = 3) Tulis ’Rabu’. Selesai.
6. Jika (x = 4) Tulis ’Kamis’. Selesai.
7. Jika (x = 5) Tulis ’Jumat’. Selesai.
8. Jika (x = 6) Tulis ’Sabtu’. Selesai.
9. Tulis ’Hari tidak Valid’
Latihan program dalam C untuk mengecek suatu bilangan termasuk bilangan ganjil atau
genap:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
Hasil Eksekusi
False
Kondisi
True
Pernyataan …..;
Pernyataan …..;
Blok Perulangan (dapat
berisi banyak statement)
Kondisi di increment
Pernyataan for dengan kondisi numerik yang menaik (increment). Pada looping yang
berbentuk seperti ini terdapat pernyataan increment atau penambahan yang berbentuk
sebagai berikut: Kondisi = Kondisi + n, dimana n adalah bilangan yang bernilai positif,
sebagai Latihan pernyataan berikut: j = j + 1; atau j++;
int main() {
_getch();
return 0;
}
Hasil Eksekusi
Bentuk umum pernyataan nested for dalam bahasa C adalah sebagai berikut:
Teknik Mesin Unsrat Page | 105
for (inisialisasi_1; kondisi_1; increment/decrement_1)
{
for (inisialisasi_2; kondisi_2; increment/decrement_2)
{ Blok for
Blok for ke-1
ke-2 (blok
instruksi-instruksi; (blok diluar)
didalam
} for ke-1)
instruksi-instruksi;
}
int main() {
int x, y;
for (x = 1; x <= 3; x++)
{
for (y = 1; y <= 2; y++)
{
printf("%d %d ", x, y); /*perintah ini dilakukan selama kondisi
y masih terpenuhi*/
printf("\n");
}
}
_getch();
return 0;
}
Hasil Eksekusi
int main() {
int x, y;
for (x = 1; x <= 3; x++)
{
for (y = 1; y <= 2; y++)
{
printf("%d %d ", x, y); /*perintah ini dilakukan selama kondisi
y masih terpenuhi*/
printf("\n");
}
}
_getch();
return 0;
}
Hasil Eksekusi
int main() {
_getch();
return 0;
}
Hasil Eksekusi
int main() {
int j;
j = 1;
do {
printf("%d ", j);
j = j + 1;
} while (j > 10);
_getch();
return 0;
}
Hasil Eksekusi
int main() {
Perintah ini akan menyebabkan proses
for (int v = 1; v <= 10; v++) menghentikan perulangan pada saat v
{ bernilai sama dengan 5. Sehingga
if (v == 5)
program hanya mencetak nilai 1
break;
hingga 4.
printf("%d ", v);
}
_getch();
return 0;
}
Hasil Eksekusi
int main() {
Perintah ini akan menyebabkan proses melewati
for (int v = 1; v <= 10; v++) proses perulangan pada saat v bernilai sama
{ dengan 5, tetapi kemudian proses melanjutkan ke
if (v == 5)
iterasi berikutnya. Sehingga program hanya
break;
mencetak nilai 1 hinga 4 dan nilai 6 hingga 10.
printf("%d ", v)
}
_getch();
return 0;
}
Hasil Eksekusi
Salah satu metode perancangan program yang baik adalah menggunakan konsep
modular atau sering disebut dengan pemrograman modular. Dengan metode ini suatu
masalah dipecah menjadi beberapa masalah yang lebih kecil (ke dalam modul-modul).
Dengan membagi masalah menjadi beberapa modul, maka masalah tersebut akan menjadi
lebih sederhana, sehingga program dapat lebih mudah disusun dan dipahami. Dalam bahasa
C modul direalisasi dengan fungsi, dalam bahasa Pascal sub program terbagi dua jenis yaitu
prosedur dan fungsi.
Manfaat lain dari pemrograman modular adalah software reusabilty. Fungsi yang
dibuat satu kali diharapkan dapat digunakan oleh program lain, sehingga penulisan program
(proses coding)lebih efektif.
int main()
{
char kata1[10] = "Algoritma", kata2[12] = "Pemrograman";
Teknik Mesin Unsrat Page | 110
char kar1 = '1', kar2 = 'A';
int kode = 165;
puts(kata1); /* hanya dapat menampilkan 1 argumen, jika menggunakan statemen
puts(kata1, kata2); akan menimbulkan kesalahan */
puts(kata2);
putchar(kar1);
putchar(kar2); /* putchar(kar1, kar2); akan menimbulkan kesalahan */
_putch(kode); /* akan menampilkan karakter ASCII dari nilai 165*/
_getch();
return 0;
}
Penjelasan
Penjelasan
_getch();
return 0;
}
Penjelasan
Penjelasan
Penjelasan
Penjelasan
Penjelasan
Penjelasan
void tampil(void);
int i = 25; /* variabel global */
void main()
{
system("cls");
printf("Nilai variabel i dalam fungsi main() adalah %i\n\n", i);
tampil();
i = i * 4; /* nilai i yang dikali 4 adalah 25 (global) bukan 10 */
printf("\nNilai variabel i dalam fungsi main() sekarang adalah %i\n\n", i);
_getch();
Penjelasan
return fn;
}
Penjelasan
Penjelasan
Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan
tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen array
ditunjukkan oleh suatu index. Dilihat dari dimensinya array dapat dibagi menjadi Array
dimensi satu, array dimensi dua dan array multi-dimensi. Setiap elemen array dapat diakses
melalui indeks. Dalam bahasa C indeks dimulai dari 0 (nol). Itu berarti dengan menggunakan
array jika kita ingin menyimpan lima nilai bertpe data int kita tidak perlu mendeklarasikan
lima variabel yang berbeda dengan tipe data int, kita cukup mendeklarasikan satu variabel
array dengan tipe data int.
Sebagai contoh, sebuah array yang dapat menampung lima bilangan bulat yang diberi
nama Nilai maka dapat digambarkan sebagai berikut:
Penjelasan
Penjelasan
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <cstdio>
#define max 100
using namespace std;
int main()
{
int baris, kolom, matriks[2][3];
// Input elemen array
for (baris = 0; baris<2; baris++)
{
for (kolom = 0; kolom<3; kolom++)
{
printf("matriks[%i][%i]: ", baris + 1, kolom + 1);
scanf_s("%i", &matriks[baris][kolom]);
}
printf("\n");
}
// Tampilkan elemen Array
printf("Isi array : \n");
for (baris = 0; baris<2; baris++)
{
for (kolom = 0; kolom<3; kolom++)
{
printf("%5.0i", matriks[baris][kolom]);
}
printf("\n");
}
_getch();
Penjelasan
_getch();
return 0;
}
Penjelasan