Anda di halaman 1dari 126

Penuntun Praktikum

Jurusan Teknik Mesin


Fakultas Teknik - Unsrat
2020
Bagian I

Pemrograman Terstruktur dengan


algoritma pemrograman Matlab

Bagian II

Pemrograman Terstruktur dengan


algoritma pemrograman C++
Bagian I

Pemrograman Terstruktur dengan


algoritma pemrograman MatLab
MODUL I
 Pengenalan MatLab
 Input Output Data Pada MatLab

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:

1. Kemudahan manipulasi struktur matriks.


2. Jumlah routine-routine powerful yang berlimpah yang terus berkembang.
3. Kekuatan fasilitas grafik tiga dimensi yang sangat memadai.
4. Sistem scripting yang memberikan keleluasaan bagi pengguna untuk
mengembangkan dan memodifikasi software untuk kebutuhan sendiri.
5. Kemampuan interface( misal dengan bahasa C, word dan mathematica).
6. Dilengkapi dengan toolbox, simulink, stateflow dan sebagainya, serta mulai
melimpahnya source code di internet yang dibuat dalam matlab( contoh
toolbox misalnya : signal processing, control system, neural networks dan
sebagainya).
Sejak awal pengembangannya, Matlab memperoleh masukkan ribuan
pemakainya. Matlab dikembangkan sebagai bahasa pemrograman sekaligus sebagai
alat visualisasi, yang menawarkan banyak kemampuan untuk menyelesaikan berbagai
kasus yang berhubungan langsung dengan disiplin keilmuan Matematika, seperti
bidang rekayasa teknik, fisika, statistika, komputasi dan modeling.

Dalam lingkungan pendidikan ilmiah Matlab menjadi alat pemrograman


standart bidang Matematika dan Rekayasa. Dalam lingkungan Industri menjadi pilihan
paling produktif untuk riset, pengembangan dan analisa.

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:

Pemrograman dalam Matlab dapat dilakukan dengan 2 cara yaitu: pemrograman


dengan command window dan pemrograman dengan script M-File

2.1. Jendela perintah (Command Window)

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

Dalam command window baris perintah atau program diketikkan langsung


dalam editor command window. Adapun tampilan command window adalah seperti
gambar 1.2.

Page | 2
Gambar 1. 2 Tampilan Command Window
2.2. Jendela ruang kerja (Workspace)

Jendela ini berisi informasi penggunaan variabel di dalam memori Matlab.


Misalkan kita akan menjumlahkan dua buah bilangan, maka pada command window
kita dapat mengetikkan:

>> bilangan1=7
bilangan1 =
7
>> bilangan2=9
bilangan2 =
9
>> hasil=bilangan1+bilangan2
hasil =
16

Maka pada workspace akan menampilkan variable yang sedang digunakan.

Gambar 1.3. Tampilan workspace


Page | 3
Untuk melihat variabel yang aktif saat ini, kita dapat menggunakan perintah
who.

>> who
Your variables are:
bilangan1 bilangan2 hasil

2.3. Jendela history (Command History)

Jendela ini berisi informasi tentang perintah yang pernah dituliskan


sebelumnya. Kita dapat mengambil kembali perintah dengan menekan tombol panah
ke atas atau mengklik perintah pada jendela histori, kemudian melakukan copypaste
ke command window.

Gambar 1.4. Tampilan command history

2.4. Mengunakan MatLab sebagai kalculator

Sebagai contoh perhitungan interaktif sederhana, ketikkan ekspresi yang anda


ingin evaluasi. Mari kita mulai dari awal. Misalnya, anggap anda ingin menghitung,
1 + 2 x 3. Anda mengetiknya di perintah prompt (>>) sebagai berikut,

>> 1+2*3
ans =
7

>> x = 1+2*3
x=
7

Page | 4
>> 4*x
ans =
28.0000

Tabel 1. Daftar operator aritmatika.

2.5. Script M-File

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

Gambar 1.5 Tampilan editor M-File

Langkah-langkah membuat script file pada MATLAB adalah sebagai berikut:

Langkah 1. Klik Tombol Start  Program MATLAB setelah itu akan muncul window
utama Matlab.

Langkah 2. Ketikkan perintah edit di Command Window.

Langkah 3. Ketikkan skrip program di Matlab Editor.

Page | 5
Langkah 4. Klik File SaveAs Masukkan nama file Klik Save

Langkah 5. Ketikkan nama yang sudah disimpan pada langkah 4

Langkah 6. Eksekusi atau Run Script File

2.6. Berhenti dari MATLAB (Quitting Matlab)

Untuk mengakhiri sesi MatLab, ketikkan quit pada Command Window, atau select
File  Exit MATLAB pada desktop main menu.

3. Membaca data (Input)


Perintah input digunakan untuk melakukan permintaan data kepada user agar
menginput data yang diminta oleh program. Perintahnya adalah input. Dalam
pemrograman Matlab ada 2 jenis data input yang umumnya digunakan yaitu data
numerik atau data string (teks)

Bentuk perintah:
Nama_var masukan = input(‘Keterangan’)

• Input Data Numerik/Angka


n = input(‘Masukkan data numerik: ’);
• Input Data String/Teks
x = input(‘Masukkan data string : ’,’s’);
(Input data string menggunakan tambahan simbol s yang berarti data string.)

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 :

Rumus volume balok : V = p.l.t

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:

Hasil Program Latihan 3:

4.2. fprint

Perintah fprint digunakan untuk menampilkan output dengan menggabungkan teks


dan numerik. fprint adalah perintah bahasa C. Bagian output diletakkan dalam tanda
kurung dengan format fprint(output).

Bentuk perintah :

fprintf('Teks %i. \n',i);

Teks : keterangan berupa string

Keterangan terdiri data string & numerik, diapit oleh tanda petik satu (‘)

i : variabel data numerik.

Page | 8
Variabel yang berada dalam tanda petik satu harus diawali tanda %. Sedangkan
variabel i setelah \n tidak diawali dengan tanda %.

\n : perintah untuk pindah baris (enter)

Latihan-4:
Buatlah program untuk menginput sebuah data numeric dan tampilkan hasilnya

Script Program Latihan 4:

Hasil Program Latihan 4:

4.3. sprint

Perintah sprint digunakan untuk menampilkan output data numeric dalam format
string.

Page | 9
Bentuk perintah :

sprintf('%nf',var_output)

n = Bentuk format output tipe data floating point (bilangan decimal)

f = symbol tipe data floating point

Contoh penggunaan sprintf pada command window:

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;

>> disp(sprintf('%0.5f %2.5f',a,b))

0.06667 2.85714

Latihan-5:

Penggunaan sprintf dalam program :

Page | 10
Script Program Latihan 5:

Hasil Program Latihan 5:

Page | 11
MODUL 2
Perulangan dan Kondisional (Control Flow Program)
[Praktikum 2 ~ 3]

Praktikum 2 (Control Flow 1 : Perulangan / Interasi / Looping)

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).

Contoh. Tulislah script dibawah ini pada command window

>>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

Teknik Mesin Unsrat Page | 12


Ini hasil looping 5 kali
>>
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:

Latihan (Iterasi Terbatas (for … end))

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

Teknik Mesin Unsrat Page | 13


Latihan02.m

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.

Contoh. Tulislah script dibawah ini pada command window:

>> 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

Teknik Mesin Unsrat Page | 14


Latihan03.m
Problem: Buatlah program yang dapat menghitung banyaknya jumlah uang yang
disimpan oleh seorang nasabah di Bank Mandiri dengan suku bunga majemuk 0,7%
per bulan untuk jumlah tabungan Rp 1<50 juta dan suku bunga 0,85% per bulan untuk
jumlah tabungan Rp 50 juta<=500 juta.

Script file untuk problem diatas dibuat sebagai berikut:


1. %Bunga Majemuk Tabungan Mandiri 2017
2. x(1) = input('Masukkan Jumlah Uang = ');
3. y = input('Masukkan Bulan = ');
4. z = 1;
5. while z<=y && x(z)<5*10^7
6. z = z+1;
7. a = z-1;
8. x(z)=(x(a)+x(a)*0.007)-12500;
9. end
10. if x(z)>= 50*10^7
11. while z<=y
12. z = z+1;
13. a = z-1;
14. x(z)=(x(a)+x(a)*0.0085)-12500;
15. end
16. end
17. format bank;
18. fprintf ('Uang Nasabah %g Bulan Kemudian adalah Rp ',y),disp(x(z))

Tulislah script di program diatas pada M-file, simpan program tersebut selanjutnya
dijalankan (Run). Jika dijalankan akan diperoleh hasil pada command window sebagai
berikut:

Teknik Mesin Unsrat Page | 15


Praktikum 3 (Control Flow 2 : Kondisional / Percabangan)

3. Kondisional nilai relative ( if … elseif … 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 syarat1
perintah-perintah
elseif syarat2
perintah-perintah
else
perintah-perintah
end

Contoh. Tulislah script dibawah ini pada command window


------------------------------------------------------------------------
>> angka=-4;
>> if angka > 0
disp('nilai nya adalah positif');
else
disp('nilainya adalah negatif');
end
nilainya adalah negative
------------------------------------------------------------------------
>> angka=4;
>> if angka > 0
disp('nilai nya adalah positif');
else
disp('nilainya adalah negatif');
end
nilainya adalah positif
-----------------------------------------

Latihan04.m

Tulislah script di program dibawah pada M-file, simpan program tersebut selanjutnya
jalankan (Run).

Teknik Mesin Unsrat Page | 16


1. % -----------------------------------------------
2. % Program latihan 4
3. % MATLAB Programming
4. % oleh : Teknik Mesin Unsrat
5. % -----------------------------------------------
6. clear all ;
7. clc;
8. disp('-------------------------------------------');
9. disp('Program Latihan 4');
10. disp('-------------------------------------------');
11. uts1 = input ( 'nilai uts1 = ');
12. uts2 = input ( 'nilai uts2 = ');
13. uas = input ( 'nilai uas = ' );
14. na = (uts1*20/100) + (uts2*30/100) + (uas*50/100);
15. disp ([ 'nilai akhir = ' num2str(na)]);
16. if na > 79
17. disp ( ' grade anda = A ' );
18. elseif na <= 80 && na > 70
19. disp ( ' grade anda = B ' );
20. elseif na <= 70 && na > 60
21. disp ( ' grade anda = C ' );
22. elseif na <= 60 && na > 50
23. disp ( ' grade anda = D ' );
24. else
25. disp ( ' grade anda = E ' );
26. end

Selanjutnya program akan dijalankan, hasilnya sebagai berikut:

4. Kondisional Nilai Absolut (switch … case … otherwise … end)


Sintak kondisonal ini hanya dapat digunakan untuk syarat dengan nilai yang tidak
berada dalam interval tertentu, bisa berupa numeric maupun String. Sintak perintah
switch-case adalah sebagai berikut:

switch variable
case value1
perintah-perintah
case value2
perintah-perintah
.
.
.
otherwise
perintah-perintah
end

Teknik Mesin Unsrat Page | 17


Latihan05.m

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

Teknik Mesin Unsrat Page | 18


55. disp ( ' Pilihan anda salah!!! ' )
56. end
Selanjutnya program akan dijalankan, hasilnya sebagai berikut:

Teknik Mesin Unsrat Page | 19


MODUL 3
Array dan Fungsi (Function)
[Praktikum 4]

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)

Hasil Running pada command window

Teknik Mesin Unsrat Page | 20


Latihan07
Dengan menggunakan Matlab, deskripsikan kode – kode Matlab berikut pada Matlab Editor
clc
clear all
close all
close all hidden
%
gunung = struct('Situs',{'Rinjani','Merapi'},...
'Waktu',{2.34},...
'Temperatur',{24 19},...
'Tekanan',{1023 1015},...
'Ketinggian',{2024 2012});
%
G1 = gunung(1);
G2 = gunung(2);

Hasil Running pada command window

Latihan08
Dengan menggunakan Matlab selesaikan sistem persamaan linier (SPL) dengan metode
Eliminasi Gauss-Jordan. Sistem persamaan linier (SPL) adalah sebagai berikut:

Teknik Mesin Unsrat Page | 21


 3 4 2 2  2
 4 9 3 5  8
Koefisien matriks A adalah A    dan vektor B adalah B   
 2 3 7 6  10 
   
 1 4 6 7 2

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);

Teknik Mesin Unsrat Page | 22


57. x(s)=a(s,n);
58. end
59. disp(' method Gauss-Jordan:');
60. a
61. x'

Hasil running kode matlab diatas diperoleh nilai x sebagai berikut:

>> 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 

Dengan menggunakan Matlab command window selesaikanlah


a) Determinan matrik A dan matrik B
b) Ukuran dari matrik A dan matrik B
c) Trace dari matrik A dan matrik B
d) Norm matrik A dan matrik B
e) C=A+B
f) C=A-B
g) C=A*B
h) C = A.* B
i) C = A^2
j) C = A.^2
k) C = A./B
l) C = A\B

Teknik Mesin Unsrat Page | 23


m) C = B/A
n) C = null(A)
o) C = orth (A)
p) C = rref (A)
q) Transpose dari matrik A dan matrik B
r) Invers dari matrik A dan matrik B
s) Nilai eigen dari matrik A dan matrik B
t) Nilai singular dari matrik A dan matrik B
u) Matrik segitiga atas dari matrik A dan matrik B
v) Matrik segitiga bawah dari matrik A dan matrik B
w) Tentukan nilai maksimum dari elemen – elemen matrik A dan matrik B
x) Tentukan nilai minimum dari elemen – elemen matrik A dan matrik B
y) Tentukan jumlah kolom elemen – elemen matrik A dan matrik B
z) Tentukan diagonal dari matrik A dan matrik B

Fungsi dan sub-fungsi pada MATLAB


Latihan10. Menghitung luas lingkaran
calcarea.m
function area = calcarea(rad)
% Fungsi untuk menghitung luas lingkaran
area = pi * rad * rad;

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)

Latihan11. Menghitung volume kerucut

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

Teknik Mesin Unsrat Page | 24


fprintf('Lingkaran dengan jari-jari %.2f,',radius)
fprintf('Luasnya adalah : %.2f\n',area)

Interaksi dengan File Eksternal

Latihan12. Bentuk file data.txt


clear all
close all
close all hidden
%
fid = fopen(‘data.txt’,’w+’);
for i = 1:2:10
fprintf(fid,’%d %d %d\n’,i, i^2, i^3);
end
fclose(fid);

Cara menampilkan data menuliskan load(‘nama_file.txt). Hasil dari program diperoleh file
dengan nama data.txt. sebagai berikut:

>> r = load ('data.txt')

Latihan13. Bentuk file data_suhu.txt


clc
clear all
close all
close all hidden
%
fid = fopen('data_suhu.txt','w+');
for C = 1 : 0.05 : 15
R = 0.8000*C;
F = (1.8000*C + 32.0000);
fprintf(fid,'%8.4g %8.4g %8.4g\n',C, R, F);
end
fclose(fid);

Cara menampilkan data menuliskan load(‘nama_file.txt). Hasil dari program diperoleh file
dengan nama data_suhu.txt. sebagai berikut:

>> r = load (data_suhu.txt')

Latihan14. Bentuk file data_random.xls


clc
clear all
close all
close all hidden
%
A = rand(10,5);

Teknik Mesin Unsrat Page | 25


[s] = xlswrite(‘data_random.xls’,A)

Hasil dari program diperoleh file dengan nama data_random.xls.

Untuk pembacaan data dilakukan dengan kode sebagai berikut:


clc
clear all
close all
close all hidden
%
A = xlsread(‘data_random.xls’,’sheet1’,’A1:E5’)

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');

Teknik Mesin Unsrat Page | 26


MODUL 4
Visualisasi Data Dengan MATLAB
[Praktikum 5]

4.1. Grafik 2D
Beberapa Fungsi Pengaturan Grafik
Membuat jendela gambar baru dengan perintah:
figure(n)

dimana n adalah integer.

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

Gambar 4.1 Contoh figure dan subplot

Teknik Mesin Unsrat Page | 27


figure(3)
subplot(2, 1, 1)
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

Gambar 4.2 Contoh figure plotting points


Plotting Lines

Teknik Mesin Unsrat Page | 28


Untuk menggambar garis lurus yang bergerak dari (0, 0) ke (1, 2) menggunakan jenis garis
default (solid) dan warna default (biru), instruksi merencanakan adalah

plot([0, 1], [0, 2])

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

Kemudian, instruksi plotnya adalah

x1 = […]; x2 = […];
y1 = […]; y2 = […];
plot([x1; x2], [y1; y2])

dimana [x1; x2] dan [y1; y2] adalah masing-masing array.

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')

Hasil running script adalah:

Gambar 4.3 Contoh figure plotting lines

Latihan16 Untuk gambar a, b, c, dan d dibawah buatlah script programnya.

Teknik Mesin Unsrat Page | 29


Gambar 4.4 plotting points Latihan16

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( )

dimana 0    1  2 . Saat 1  2 , sebuah busur lingkaran digambar. Jika diasumsikan

1  2 , a  1, b  2, dan r  0.5, , maka skrip untuk menggambar lingkaran adalah sebagai


berikut:

theta = linspace(0, 2*pi);


plot(1+0.5*cos(theta), 2+0.5*sin(theta))
axis equal

menghasilkan gambar:

Teknik Mesin Unsrat Page | 30


Gambar 4.4 Contoh figure plotting circle

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:

Gambar 4.5 Contoh figure plotting Six concentric circles.

Teknik Mesin Unsrat Page | 31


Latihan17 Family of parabolas
Persamaan parabola diberikan oleh:
y  a 2  b2
Untuk 5  x  5 dan a  1,2, ,5. Script program adalah:
x = -5:0.2:5; % (1×51)
a = 1:5; % (1×5)
[xx, aa] = meshgrid(x.^2, a.^2); % (5×51)
plot(x, aa-xx, 'k')

menghasilkan gambar:

Gambar 4.6 Family of parabolas.

Persamaan deret diberikan oleh:


N
1
SN  
j 1 ( a  j )
2

Untuk N  1,2, ,10 dan a  1,2, dan 3. Script program adalah:


aa = 1:3; % (1×3)
N = 1:10; % (1×10)
[a, k] = meshgrid(aa, N); % (10×3)
S = cumsum(1./(a+k).^2); % (10×3)
plot(N, S, 'ks-')

menghasilkan gambar:

Teknik Mesin Unsrat Page | 32


Gambar 4.7 Grafik persamaan deret

Plotting Multiple Mathematical Functions pada satu figure

Latihan18 Tiga hubungan matematika


Tiga persamaan matematika diberikan oleh:

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:

Teknik Mesin Unsrat Page | 33


Gambar 4.8 Tiga fungsi berbeda diplot pada rentang yang sama

jika 0  x  3, 1  y  4, dan 2  z  5, maka Script program adalah sebagai berikut:


x = linspace(0, 3, 45);
y = linspace(1, 4, 55);
z = linspace(2, 5, 65);
plot(x, 0.1*x.^2, 'k-', y, cos(y).^2, 'k--', z, exp(-0.3*z), 'k-.')

menghasilkan gambar:

Gambar 4.8 Tiga fungsi berbeda diplot pada rentang yang sama

Mengubah Tampilan Keseluruhan Grafik

Beberapa fungsi dapat digunakan untuk mengubah tampilan dasar grafik. Fungsi tersebut
adalah sebagai berikut:

axis on or axis off [default – on]


box on or box off [default – on]
grid on or grid off [default – off]

Teknik Mesin Unsrat Page | 34


Latihan18
Jika kita mengambil 101 spasi sama nilai, maka skripnya adalah seperti table 4.1 berikut:

Tabel 4.1 Illustration box, grid, dan axis

Function Script Graph

box on th = linspace(0, 2*pi, 101);


grid on x = sin(th);
y = sin(2*th+pi/4);
plot(x, y, 'k-')
box on
grid on

box off th = linspace(0, 2*pi, 101);


grid off x = sin(th);
axis off y = sin(2*th+pi/4);
plot(x, y, 'k-')
box off
grid off
axis off

box off th = linspace(0, 2*pi, 101);


grid off x = sin(th);
axis off y = sin(2*th+pi/4);
plot(x, y, 'k-')
box off
grid off

Grafik untuk Tujuan Khusus

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:

Teknik Mesin Unsrat Page | 35


F    H   e j 

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

function [H, T] = FOm(Om, z)


T = atan2(2*z*Om, 1-Om.^2)*180/pi;
H = 1./sqrt((1-Om.^2).^2+(2*z*Om).^2);
Script semilogx, semilogy, dan loglog ditunjukkan pada tabel 4.2 sebagai berikut

Tabel 4.2 Illustration semilogx, semilogy, dan loglog


Plot
Script Graph
Function

semilogx Om = linspace(0.01, 2, 30);


[H, T] = FOm(Om, 0.05);
stairs(Om, H)

Teknik Mesin Unsrat Page | 36


stem Om = linspace (0.01, 2, 30);
[H, T] = FOm(Om, 0.05);
stem(Om, H)

bar Om = linspace (0.01, 2, 30);


[H, T] = FOm(Om, 0.05);
bar(Om, H, 0.6)

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')

Teknik Mesin Unsrat Page | 37


Grafiknya adalah sebagai berikut:

Gambar 4.9 Ekspresi MATLAB untuk membuat keterangan pada grafik

Modifikasi untuk Script Gambar 4.9


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('Amplitude')
title('Visualization of two intersecting curves')
text(4.8, -0.1, 'x = 4.73')
[a, b] = legend('cos(\itx\rm)', '1/cosh(\itx\rm)', 'Location', 'SouthWest');
set(a(1), 'LineWidth', 2, 'Color', 'y')
set(b(1), 'fontsize', 14, 'Color', 'b')
set(b(2), 'fontsize', 14, 'Color',' r')
Grafiknya adalah sebagai berikut:

Gambar 4.9a Grafik modifikasi Gambar 4.9

Teknik Mesin Unsrat Page | 38


Filling Regions
Latihan 21

Filling regions yaitu dengan menambahkan script program berikut pada script program diatas.

xn = linspace(0, 4.73, 50);


hold on
fill([xn, fliplr(xn)], [1./ cosh(xn), fliplr(cos(xn))], 'c')

Grafiknya adalah sebagai berikut:

Gambar 4.10 Modifikasi dari Gambar 4.9 dengan mengisih area antara dua kurva.

Pie and pie3

Untuk rangkaian fungsi plot tujuan khusus terakhir mempertimbangkan diagram lingkaran,
yang dibuat dengan menggunakan pie dan pie3.

Untuk pie, perintahnya adalah:


pie(d, expl, label)
dan untuk pie3, perintahnya adalah:

pie3(d, expl, label)

Teknik Mesin Unsrat Page | 39


Gambar 4.11 Kata kunci yang menentukan penempatan legend yang ditunjukkan.

Latihan 21

Tabel 4.3 Illustration pie dan pie3

Script Graph-pie Graph-pie3

dat = [39, 10, 1];


pie(dat)
% or pie3( . . . )

dat = [39, 10, 1];


pie(dat, [1, 1, 0])
% or pie3( . . . )

Teknik Mesin Unsrat Page | 40


dat = [39, 10, 1];
pie(dat, [1, 1, 0])
% or pie3( . . . )
colormap('cool')

>> dat = [39, 10, 1];


dat =
100*dat/sum(dat);
A = ['Operational '
num2str(dat(1)) '
%'];
B = ['Initial '
num2str(dat(2)) '
%'];
C = ['R&D '
num2str(dat(3)) '
%'];
colormap('cool')
pie(dat, [1, 1, 0],{A,
B, C}) % or
pie3(…)
clc

Huruf Yunani, Simbol Matematika, Subskrip, dan Superskrip

Tabel 4.4 Huruf Yunani huruf besar dan huruf kecil dan beberapa simbol matematika

Latihan 22

Hitunglah dan plot fungsi persamaan berikut:

g 2  cos  41  e

 11 

untuk   3 dan 1  1  2, dan beri label angka yang sesuai. Script program persamaan diatas
adalah:
1. Om1 = linspace(1, 2); beta = 3;

Teknik Mesin Unsrat Page | 41


2. plot(Om1, cos(4*pi*Om1).*exp(-(1+Om1.^beta)), 'k')
3. title('\itg_{\rm2} \rmversus \Omega_1 for \it\beta \rm= 3')
4. ylabel('\itg_{\rm2}')
5. xlabel('\Omega_1')
6. text(1.2, 0.08, '\itg_{\rm2}\rm=cos(\Omega_1)\ite^{\rm-
(1+\Omega_1^{\it\beta\rm})}')

Grafiknya adalah sebagai berikut:

Gambar 4.12 Plot grafik dengan superscripts, subscripts, and Greek letters

4.2. Grafik 2D dengan Simulink


Latihan23. Selesaikan dua persamaan diferensial berikut dengan Simulink.

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.

Teknik Mesin Unsrat Page | 42


Gambar 4.13 Model blok Simulink.

Hasil Simulasi dapat dilihat pada Gambar di bawah.

Gambar 4.14 Hasil plot Simulink.

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

Teknik Mesin Unsrat Page | 43


dCB
 3(C A  CB )
dt (5.10)
C A (0)  1; CB (0)  0

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.

Gambar 4.15 Hasil plot Simulink.

Gambar 4.16 Pengaturan initial condition

Teknik Mesin Unsrat Page | 44


Klik Start Simulation dan selajutnya klik blok Scope dua kali untuk melihat output simulasi.
Grafik hasil simulasi dari Scope terlihat seperti gambar di bawah.

Gambar 4.17 Hasil plot Simulink

Teknik Mesin Unsrat Page | 45


MODUL 5
BEBERAPA APLIKASI TEKNIK DENGAN KONSEP MATLAB
[Praktikum 6]

5.1. Sistem Kontrol


5.1.1. Kontrol PID
Kontrol mode PID merupakan kombinasi dari mode proportional (P), integral (I) dan
derivative (D). Pada bab ini mahasiswa diharapkan mampu memahami karakteristik dari setiap
Pengontrol P, Pengontrol I, dan Pengontrol D serta bagaimana menggunakannya untuk mendapatkan
respon yang diinginkan dengan menggunakan MATLAB. Sistem yang digunakan adalah sistem
unity feedback. Blok diagramnya adalah sebagai berikut:

Error
or
Actuating
Input signal Output
or + U or
Pengontrol Plant
Reference (R) Controlled
_ variable (Y)
Summing
junction

Gambar 5.1. Sistem Unity Feedback


Keterangan gambar:

Plant = Sistem yang harus dikontrol.


Pengontrol = Menyediakan / memberikan rencana yang mantab, didesain untuk mengontrol
tingkah laku yang menyeluruh dari system tersebut.

Fungsi transfer dari PID Controller dinyatakan sebagai berikut:

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

Teknik Mesin Unsrat Page | 46


dari signal error ini. Sinyal (u) yang telah melewati controller, sekarang sama dengan proporsional
penguatan (Kp) dikalikan ukuran kesalahannya ditambah penguatan integral (Ki) dikalikan ukuran
kesalahan integralnya ditambah penguatan turunan (Kd) dikalikan ukuran kesalahan derivasinya.

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:

Table 5.1. Karakteristik PID Controller

Respon Loop Kesalahan


Waktu Naik Overshoot Waktu Turun
Tertutup Keadaan Tunak
Perubahan
Kp Menurun Meningkat Menurun
Kecil
Ki Menurun Meningkat Meningkat Hilang
Perubahan
Kd Menurun Menurun Perubahan Kecil
Kecil

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.

Contoh. Sistem Massa-demper-pegas

Sebuah benda yang diberikan oleh massa 1 kg, peredam 10 N.s/m, pegas 20 N/m dan masukan 1,
seperti gambar dibawah ini :

Teknik Mesin Unsrat Page | 47


F

Gambar 5.2. Contoh Sistem massa-demper-pegas

Persamaan model dari system dibawah ini adalah:


Mx  bx  kx  F
Ambil transformasi Laplace dari persamaan model:
Ms 2 X (s)  bsX (s)  kX ( s)  F ( s)
Fungsi transfer antara pergeseran X(s) dan masukan F(s) sehingga menjadi:
X (s) 1

F ( s ) Ms  bs  k
2

Kemudian data soal dimasukkan kedalam fungsi transfer sebagai berikut:


X (s) 1
 2
F ( s ) s  10 s  20
Tujuan masalah ini adalah menunjukkan bagaimana Kp, Ki, dan Kd untuk mendapatkan:
• Waktu naik yang cepat
• Minimum overshoot
• Tidak ada kesalahan tunak
Respon langkah terbuka disajikan dalam program command window:
num = 1;
den = [1 10 20];
step (num,den)
hasil respon system adalah sebagai berikut:

Teknik Mesin Unsrat Page | 48


Gambar 5.3. Respon langkah loop terbuka

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:

Teknik Mesin Unsrat Page | 49


Gambar 5.4. Respon langkah loop tertutup

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.

Proportional – Derivative Control


dari table diatas, terlihat jelas bahwa Derivatif controller (Kd) mereduksi baik itu overshoot maupun
waktu turun. Fungsi transfer loop tertutup dari system diatas dengan PD controller adalah sebagai
berikut:

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)

hasil respon system adalah sebagai berikut:

Teknik Mesin Unsrat Page | 50


Gambar 5.5. Respon langkah dengan Proporsional Derricative

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.

Proportional Integral Control


Berdasarkan table 5.1. respon PI Control menunjukkan bahwa I controller (Ki) menurun pada waktu
naik, meningkat pada overshoot dan waktu turun dan menghilangkan kesalahan keadaan tunak.
Sehingga didapatkan fungsi transfer loop-tertutup dengan PI Controller sebagai berikut:

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)

hasil respon system adalah sebagai berikut:

Teknik Mesin Unsrat Page | 51


Gambar 5.6. Respon langkah dengan Proporsional Integral

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)

hasil respon system adalah sebagai berikut:

Teknik Mesin Unsrat Page | 52


Gambar 5.7. Respon langkah dengan PID

Machine Tool Chatter


Getaran machine tool chatter yang ditunjukkan pada Gambar 5.8 dapat dijelaskan oleh
persamaan 5.7 sebagai berikut:

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
 ,
2n
1
Q ,
2 (5.4)
c
  ,
2mn
 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:

Teknik Mesin Unsrat Page | 53


1 K  k1 sin( / )
  0
Q k k 
(5.6)
k
 2  1  1 1   cos( / ) 
k

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:

1. chat = inline('1-w.^2+k1k*(1-u*cos(w/Ob))', 'w', 'u', 'k1k', 'Ob');


2. k1k = 0.0785; Kk = 0.0029; u = 1;
3. Ob = linspace(0.03, 0.35, 300);
4. L = length(Ob); w = zeros(L,1);
5. for n = 1:L
6. w(n) = fzero(chat, [0.8 1.2], [], u, k1k, Ob(n));
7. end
8. xx = -1./(Kk./Ob'+u*sin(w./Ob')./w*k1k);
9. indx = find(xx >= 0);
10. hold on
11. a = axis; a(4) = 50; a(2) = 0.35; axis(a)
12. fill(Ob(indx), xx(indx), 'c')
13. B = sqrt(2)*sqrt(1+k1k-sqrt(1+2*k1k+(k1k^2)*(1-u^2)));
14. Qm = 1./(B-Kk./Ob);
15. ind = find(Ob > 0.05);
16. plot(Ob(ind), Qm(ind), 'k--')
17. xlabel('\Omega')
18. ylabel('Q')
19. text(.22, 40, 'Unstable')
20. text(.15, 5, 'Stable')
21. text(0.02, 10, ['K/k=' num2str(Kk, 5)])
22. text(0.02, 6, ['k_1/k=' num2str(k1k, 5)])
23. box on
24. grid on

hasil running sistem diatas adalah sebagai berikut:

Teknik Mesin Unsrat Page | 54


Gambar 5.9 Grafik stabilitas Machine Tool Chatter untuk
K / k  0.0029, k1 / k 0.0785, dan   1. Chatter diharapkan terjadi di daerah
teduh(warna biru) yang ditandai tidak stabil pada gambar. Diantara lobus stabilitas,
serta di bawah lobus stabilitas, operasi pemotongan diharapkan stabil.

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.

5.2. Aplikasi dengan Simulink


Persamaan Diferensial

Contoh 1. Selesaikan dua persamaan diferensial berikut dengan Simulink.

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.

Teknik Mesin Unsrat Page | 55


Gambar 5.10 Model blok Simulink untuk Contoh 1.

Hasil Simulasi dapat dilihat pada Gambar di bawah.

Gambar 5.10 Hasil plot Simulink untuk Contoh 1.

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

Teknik Mesin Unsrat Page | 56


dCB
 3(C A  CB )
dt (5.10)
C A (0)  1; CB (0)  0

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.

Gambar 5.11 Hasil plot Simulink untuk Contoh 1.

Gambar 5.12 Pengaturan initial condition

Teknik Mesin Unsrat Page | 57


Klik Start Simulation dan selajutnya klik blok Scope dua kali untuk melihat output simulasi. Grafik
hasil simulasi dari Scope terlihat seperti gambar di bawah.

Gambar 5.13 Hasil plot Simulink untuk Contoh 2

5.3. Membuat Graphical User Interfaces (GUI)


5.3.1. Membuat Layout

Teknik Mesin Unsrat Page | 58


Bagian II

Pemrograman Terstruktur dengan


algoritma pemrograman C++
MODUL I
VISUAL STUDIO C++

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 ++.

1.2. Memulai dengan Visual Studio C++


Visual Studio C ++ mudah dipasang. Jika Anda butuh bantuan instalasi, dapat merujuk
ke situs-situs web pendamping yang tersedia. Selanjutnya, jika Anda telah menginstal
Visual Studio Ultimate 2013. Anda dapat meluncurkan Visual Studio C++ dari tombol Start
Windows dengan memilih Visual Studio 2013 untuk Desktop. Antarmuka (user interface)
Visual Studio C++ 2013 akan muncul, seperti yang ditunjukkan pada Gambar 1.1.
Antarmuka Visual Studio C++ adalah single window untuk melakukan pengeditan,
kompilasi, debugging, dan menjalankan program.

Gambar 1.1 User interface Visual Studio C++ 2013

Teknik Mesin Unsrat Page | 59


1.3. Membuat Proyek
Untuk membuat program C++ pada Visual Studio C++, Anda harus terlebih dahulu
membuat proyek. Proyek seperti pemegang yang mengikat semua file bersama. Berikut
langkah-langkah untuk membuat proyek:
1. Pilih File  New Project untuk menampilkan New Project Window, seperti yang
ditunjukkan pada Gambar 1.2.
2. Pilih C ++ di bawah Templat dan pilih Win32 Console Application di kolom tengah. Ketik
pemrogramankomputer di bidang Name dan C:\Pemrograman C++\ (Folder bisa anda
buat sendiri) di bidang Location. Klik OK untuk menampilkan Win32 Application Wizard
window, seperti yang ditunjukkan pada Gambar 1.3.
3. Klik Next untuk menampilkan jendela pengaturan aplikasi, ditunjukkan pada Gambar 1.4.
4. Pilih Console application di bagian Jenis aplikasi dan periksa Empty project di bagian
Opsi tambahan. Klik Finish untuk membuat proyek. Anda akan melihat proyeknya
bernama pemrogramankomputer di Solution Explorer, seperti yang ditunjukkan pada
Gambar 1.5.

Gambar 1.2 User interface project sebelum membuat program

Teknik Mesin Unsrat Page | 60


Gambar 1.3 Win32 Application Wizard untuk membuat project pada Win32 applications.

Gambar 1.4 Pengaturan Win32 Application Wizard untuk mengatur aplikasi

Teknik Mesin Unsrat Page | 61


Gambar 1.5 Proyek yang dibuat untuk C++ console applications

1.4. Membuat Program C++


Setelah Anda membuat proyek, Anda dapat membuat program di dalamnya. Berikut
ini adalah langkah-langkah untuk membuat program C ++ pada Visual Studio.
1. Klik kanan pada pemrogramankomputer (project1) Solution Explorer untuk
menampilkan konteks menu. Pilih Add, Add New Item dari konteks menu
pemrogramankomputer (project1) (lihat Gambar 2.6) untuk menampilkan Item Add
New Window, seperti yang ditunjukkan pada Gambar 2.7.
2. Pilih Code dibawah Visual C++ pada kolom kiri dan C++ File (.cpp) pada kolom
tengah. Tuliskan SelamatDatang.cpp pada Name dan C:\Pemrograman
C++\pemrogramankomputer\pemrogramankomputer\ pada Location. Klik Add untuk
membuat file seperti ditunjukkan pada Gambar 2.8.
3. Ketikkan kode untuk SelamatDatang.cpp seperti yang ditunjukkan pada Gambar 2.9

Teknik Mesin Unsrat Page | 62


Gambar 1.6 Add New Item window dari konteks menu project.

Gambar 1.7 File type, Name, and location untuk membuat file.

Teknik Mesin Unsrat Page | 63


Gambar 1.8 SelamatDatang.cpp yang dibuat dalam project.

Gambar 1.9 Sourse code SelamatDatang.cpp yang diketik.

1.5. Compiling a C++ Program


Setelah membuat program, Anda dapat mengompilasinya. Anda dapat melakukannya
dengan memilih Bangun Build, Compile, atau tekan Ctrl+F7, atau pilih Compile pada
konteks menu SelamatDatang.cpp, seperti ditunjukkan pada Gambar 1.10.

Teknik Mesin Unsrat Page | 64


Gambar 1.10 Compile command untuk mengcompile program

1.6. Running a C++ Program


Untuk menjalankan program, tekan Ctrl + F5. Anda akan melihat hasilnya ditampilkan
di jendela DOS, seperti yang ditunjukkan pada Gambar 1.11.

Gambar 1.11 Output yang ditunjukkan DOS window

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

Teknik Mesin Unsrat Page | 65


float harga_per_unit = 17.5; // inisialisasi
system("cls");
cout << "Isi Jumlah = "
<< jumlah << '\n';
cout << " Isi harga per per unit = "
<< harga_per_unit << '\n';
_getch();
}

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()
{

float duaphi = 2*3.14; //inisialisasi dengan ungkapan

system("cls");
cout << "Isi duaphi = " << duaphi << '\n';
_getch();

Hasil eksekusi

Teknik Mesin Unsrat Page | 66


MODUL 2
STRUKTUR PROGRAM C++

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;
}

Output adalah sebagai berikut

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;
}

Teknik Mesin Unsrat Page | 67


Output adalah sebagai berikut

Latihan05:
Tuliskan Kode program berikut ini pada Visual Studio C++.
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

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

Teknik Mesin Unsrat Page | 68


Latihan06:
Tuliskan Kode program berikut ini pada Visual Studio C++.
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void LuasPersegi()
{
int panjang, lebar;
cout << "Masukkan panjang: "; cin >> panjang;
cout << "Masukkan lebar: "; cin >> lebar;
cout << "Luas persegi: " << panjang*lebar;
}
int main()
{
LuasPersegi();
_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

Teknik Mesin Unsrat Page | 69


Tugas 1 (Praktikum C++)

1. Kerjakan kembali Latihan01 sampai dengan Latihan07.

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

Teknik Mesin Unsrat Page | 70


MODUL 3
KONSEP TIPE DATA, VARIABEL, KONSTANTA dan OPERATOR

3.1. Tipe Data


Tipe data dasar pada C++ meliputi :
3.1.1. void (Kosong)
void adalah tipe data yang tidak bertipe karena mempunyai ukuran 0 byte biasanya
digunakan untuk tipe data kosong seperti membuat fungsi.
Latihan08
Berikut ini contoh program C++ menggunakan tipe data void:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{

cout << " Hello World !!!!" << endl;


_getch();
return 0;
}

3.1.2. Char (Karakter)


char adalah tipe data untuk karakter yang sering digunakan untuk tipe data yang
menggunakan huruf dan angka sebagai datanya.
Latihan09
Berikut ini contoh program C++ menggunakan tipe data char:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){

char jwb[2] = "B";

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;
}

Teknik Mesin Unsrat Page | 71


3.1.3. Int (Integer)
int adalah tipe data untuk numerik yang sering digunakan untuk data berupa angka.
Latihan10
Berikut ini contoh program C++ menggunakan tipe data int:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){

int sisi;
sisi = 10;
cout << "Pesergi memiliki sisi sebesar " << sisi << endl;
cout << "dan luas persegi adalah " << sisi*sisi << endl;

_getch();
return 0;
}

3.1.4. Float (Floating point)


float adalah tipe data untuk numerik yang digunakan untuk data berupa angka pecahan.

Latihan11
Berikut ini contoh program C++ menggunakan tipe data float:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){

float phi = 3.14, luas;


int r = 20;

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>

Teknik Mesin Unsrat Page | 72


#include <stdio.h>
#include <iostream>
using namespace std;

int main(){

double diskon = 0.02;


int harga = 100000;
cout << "Potongan harga Rp." << harga << endl;
cout << "mendapatkan diskon sebesar 2%" << endl;
cout << "menjadi Rp." << diskon*harga << endl;
_getch();
return 0;
}

3.1.6. Bool (Boolean)


bool adalah tipe data untuk numerik yang digunakan untuk data berupa angka pecahan
yang nilai decimalnya dua kali lebih banyak.

Latihan13
Berikut ini contoh program C++ menggunakan tipe data bool:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main(){

bool log = false;


cout << "jika kondisi salah maka bilangan bool adalah " << log++ << endl;
cout << "jika kondisi benar maka bilangan bool adalah " << log << endl;
_getch();
return 0;
}

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(){

char korean[10] = "hangug-eo";


wchar_t hangul[6] = L"hangul";

cout << "Bansa Korea (char) : " << korean << endl;
cout << "Tulisan Korea (wchar_t) : " << hangul << endl;

_getch();

Teknik Mesin Unsrat Page | 73


return 0;
}

Latihan15

Contoh program (menentukan ukuran memori dari tipe data):


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

system("cls");

cout << "Ukuran char : " << sizeof(char) << endl;


cout << "Ukuran int : " << sizeof(int) << endl;
cout << "Ukuran long : " << sizeof(long) << endl;
cout << "Ukuran float : " << sizeof(float) << endl;
cout << "Ukuran double : " << sizeof(double) << endl;
cout << "Ukuran long double : " << sizeof(long double) << endl;

_getch();
return 0;
}

Hasil eksekusi program


kuran char : 1
Ukuran int : 4
Ukuran long : 4
Ukuran float : 4
Ukuran double : 8
Ukuran long double : 8

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");

char kar1 = 66;


char kar2 = 'A';
char kar3[30] = "Teknik Mesin Unsrat, Manado";
cout << "Isi kar1 = " << kar1 << '\n';
cout << "Isi kar2 = " << kar2 << '\n';
cout << "Isi kar3 = " << kar3 << '\n';
int bil_int1 = 32767; int bil_int2 = 32768;
int bil_int3 = -1; unsigned int bil_int4 = -1;
cout << "Isi bil_int1 = " << bil_int1 << '\n';
cout << "Isi bil_int2 = " << bil_int2 << '\n';
cout << "Isi bil_int3 = " << bil_int3 << '\n';
cout << "Isi bil_int4 = " << bil_int4 << '\n';
float bil_f1 = 1.23e2; float bil_f2 = 123.0;
cout << "Isi bil_f1 = " << bil_f1 << '\n';
cout << "Isi bil_f2 = " << bil_f2 << '\n';
float bil_f3 = 3.14F;
double bil_d1 = 56.0123456789123456789123456789;

Teknik Mesin Unsrat Page | 74


long double bil_ld = 56.0123456789123456789123456789;
cout << setprecision(20); // mengatur presisi tampilan
cout << "Isi bil_f3 = " << bil_f3 << '\n';
cout << "Isi bil_d1 = " << bil_d1 << '\n';
cout << "Isi bil_ld = " << bil_ld << '\n';

_getch();
return 0;
}

Hasil eksekusi program


Isi kar1 = B
Isi kar2 = A
Isi kar3 = Teknik Mesin Unsrat, Manado
Isi bil_int1 = 32767
Isi bil_int2 = 32768
Isi bil_int3 = -1
Isi bil_int4 = 4294967295
Isi bil_f1 = 123
Isi bil_f2 = 123
Isi bil_f3 = 3.1400001049041748
Isi bil_d1 = 56.012345678912347
Isi bil_ld = 56.012345678912347

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:

Tipe_data pengenal = nilai ;


Sebagai contoh :
int a;
float nomor;
atau dapat juga pemberian nilai awal untuk variable dilakukan pada saat deklarasi sebagai
berikut:
int a=10;
char s=’a’;
Jika hendak mendeklarasikan beberapa variabel sekaligus dengan tipe data yang sama, dapat
dilakukan dengan 2 cara, yaitu :
int a;
int b;
int c;
atau dapat disederhanakan dengan deklarasi :
int a,b,c;

Teknik Mesin Unsrat Page | 75


Latihan17

Contoh program (inisialisasi variabel dengan nilai konstan):


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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;
}

Hasil eksekusi program

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;

cout << "A + B = " << a + b;

_getch();
}

Hasil eksekusi program

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() {

Teknik Mesin Unsrat Page | 76


int jumlah = 10; // inisialisasi
float harga_per_unit = 17.5; // inisialisasi
system("cls"); //clrscr(); //Clearing the Screen
cout << "Isi Jumlah = "
<< jumlah << '\n';
cout << " Isi harga per per unit = "
<< harga_per_unit << '\n';

_getch();
//return 0;
}

Hasil eksekusi program


Isi Jumlah = 10
Isi harga per per unit = 17.5

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;
}

Hasil eksekusi program


Isi Jumlah = 10
Isi harga per per unit = 17.5

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;

Teknik Mesin Unsrat Page | 77


float L = p * l;
cout << "Luas persegi panjang : " << L << " m^2";

_getch();
//return 0;
}

Hasil eksekusi program


Masukkan nilai Panjang (m) = 100
Masukkan nilai Lebar (m) = 95
Luas persegi panjang : 9500 m^2

Latihan21
Contoh program mendeklarasikan variabel:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

system("cls");

int A; //mendeklarasikan variabel


A = 5;
cout << "Contoh melakukan pre-increment \n";
cout << "Nilai A awal adalah : " << A << endl;
cout << "Nilai ++A adalah :" << ++A << endl;
cout << "Nilai A akhir adalah:" << A << endl;
cout << '\n' << endl;
cout << "Contoh melakukan pre-decrement \n";
cout << "Nilai A awal adalah : " << A << endl;
cout << "Nilai --A adalah :" << --A << endl;
cout << "Nilai A akhir adalah:" << A << endl;
cout << '\n' << endl;
//mengubah nilai A menjadi 10
A = 10;
cout << "Contoh melakukan post-increment \n";
cout << "Nilai A awal adalah : " << A << endl;
cout << "Nilai A++ adalah :" << A++ << endl;
cout << "Nilai A akhir adalah:" << A << endl;
cout << '\n' << endl;
cout << "Contoh melakukan post-decrement \n";
cout << "Nilai A awal adalah : " << A << endl;
cout << "Nilai A-- adalah :" << A-- << endl;
cout << "Nilai A akhir adalah:" << A << endl;
cout << '\n' << endl;

_getch();
return 0;
}

Hasil eksekusi program


Contoh melakukan pre-increment
Nilai A awal adalah : 5
Nilai ++A adalah :6
Nilai A akhir adalah:6

Contoh melakukan pre-decrement


Nilai A awal adalah : 6
Nilai --A adalah :5
Nilai A akhir adalah:5

Teknik Mesin Unsrat Page | 78


Contoh melakukan post-increment
Nilai A awal adalah : 10
Nilai A++ adalah :10
Nilai A akhir adalah:11

Contoh melakukan post-decrement


Nilai A awal adalah : 11
Nilai A-- adalah :11
Nilai A akhir adalah:10

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 keyword const


Contoh:

const float phi = 3.14;

 Menggunakan #define
Contoh:

#define phi = 3.14;

Keuntungan menggunakan #define apabila dibandingkan dengan const adalah kecepatan


kompilasi, karena sebelum kompilasi dilaksanakan, kompiler pertama kali mencari symbol
#define (oleh sebab itu mengapa # dikatakan prepocessor directive) dan mengganti semua
phi dengan nilai 3.14.

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;

Teknik Mesin Unsrat Page | 79


cout << "Keliling Lingkaran : " << keliling;

_getch();
return 0;
}

Hasil eksekusi program


Masukkan nilai Jari-jari : 10
Luas Lingkaran : 156.5
Keliling Lingkaran : 62.6

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

3.4.1. Operator aritmatika


Operator aritmatika yang disediakan oleh bahasa C disajikan pada tabel 3.1.

Tabel 3.1 Operator Aritmatika dalam Bahasa C:

Operator Arti Tipe data


+ Penjumlahan (bilangan bulat atau bilangan pecahan)

Teknik Mesin Unsrat Page | 80


- pengurangan (bilangan bulat atau bilangan pecahan)
* perkalian (bilangan bulat atau bilangan pecahan)
/ pembagian (bilangan bulat atau bilangan pecahan)
% modulo (bilangan bulat)
++ increment (bilangan bulat)
-- decrement (bilangan bulat)

Latihan23
Contoh program: Operator Increment setelah Operan
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

int B = 5, A; //variabel B diberi nilai awal = 5


A = B++; /*nilai B diberikan terlebih dahulu ke A,
hingga A bernilai 5, lalu B ditambahkan dengan 1,
nilai B sekarang sama dengan 6 */
printf("A = %d\n", A);
printf("B = %d", B);

_getch();
return 0;
}

Hasil eksekusi program


A = 5
B = 6

Latihan24
Contoh program: Operator Increment sebelum Operan
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

int B = 5, A; //variabel B diberi nilai awal = 5


A = ++B; /* nilai B dijumlahkan terlebih dahulu dengan 1,
sehingga B bernilai 6, lalu diberikan ke A sehingga A
sekarang bernilai 6*/
printf("A = %d\n", A);
printf("B = %d", B);

_getch();
return 0;
}

Hasil eksekusi program


A = 6
B = 6

Teknik Mesin Unsrat Page | 81


Latihan25
Contoh program: Program Operator %
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

int x, y;
x = 9 % 2;
y = 102 % 7;
printf("x = %d\n", x);
printf("y = %d", y);

_getch();
return 0;
}

Hasil eksekusi program


x = 1
y = 4

3.4.2. Operator Relasi


Jenis operator relasi yang dapat digunakan dalam bahasa C disajikan pada tabel 3.2.

Tabel 3.2 Operator Relasi dalam Bahasa C

Operator Arti Contoh Nilai


< lebih kecil dari 5<3 0
<= lebih kecil atau sama dengan 5<=5 1
> lebih besar dari 4>4 0
>= lebih besar atau sama dengan 4>=4 1
== sama dengan (3+2) ==(4+1) 1
!= tidak sama dengan (5 + 2) != (5 – 2) 1

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

Teknik Mesin Unsrat Page | 82


printf("\n%d", a*b != b*a); // 5*3 != 3

_getch();
return 0;
}

Hasil eksekusi program


1
1
0
1
0
0

3.4.3. Operator Logika


Operator-operator logika yang disediakan pada bahasa C disajikan pada tabel 3.3, dan
Tabel 3.4.
Tabel 3.3 akan menyajikan tabel hasil perbandingan logika.
Operator Fungsi Contoh Hasil Penjelasan
! NOT !(5>4) 0 (salah) Fungsi NOT digunakan untuk membalik hasil logika.
&& AND (3 >= 3) && (2 != (4/2)) 0 (salah) Fungsi AND akan memberikan nilai benar (1) jika kedua
nilai logika yang dibandingkan bernilai benar (1).
|| OR (3 >= 3) || (2 != (4/2)) 1(benar) Fungsi OR akan memberikan nilai benar (1) jika salah
satu nilai logika yang dibandingkan bernilai benar (1).

Tabel 3.4 Operator Logika dalam Bahasa C.


A B !B A&&B A||B
1 1 0 1 1
1 0 1 0 1
0 1 0 0 1
0 0 1 0 0

Latihan27
Contoh program: Program Operator Logika
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

printf("%d", ! (5 > 4));


printf("\n%d", (3 >= 3) && (2 != (4/2)));
printf("\n%d",(3 >= 3) || (2 != (4/2)));

_getch();
return 0;
}

Hasil eksekusi program

Teknik Mesin Unsrat Page | 83


0
0
1

3.4.4. Operator Bitwise


Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di
memori. Operator bitwise dan artinya disajikan pada Tabel 3.5.

Tabel 3.5 Operator Logika dalam Bahasa C.


Operator Fungsi Contoh Penjelasan
& AND A&B AND bitwise dari A dan B
| OR A|B OR bitwise dari A dan B
^ XOR A^B XOR bitwise dari A dan B
~ Complement ~A Mengubah bit 0 menjadi 1, dan sebaliknya
>> 1 Shift right A >> 2 Bit-bit dari A digeser ke kanan sebanyak 2 posisi bit
<< Shift left B << 1 Bit-bit dari B digeser ke kiri sebanyak 1 posisi bit

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;
}

Hasil eksekusi program


5 & 7 = 5
5 | 7 = 7
5 ^ 7 = 2
5 >> 2 = 1
7 << 1 = 14

3.4.5. Operator Koma

Teknik Mesin Unsrat Page | 84


Operator koma digunakan untuk memisahkan sederetan variabel dalam sebuah
deklarasi, memisahkan argument fungsi, menyatukan dua ekspresi menjadi sebuah
pernyataan, dan memungkinkan pemberian lebih dari satu ekspresi pada inisialisasi nilai
awal.
Contoh pemakaian operator koma :
float x,y,z; //operator koma digunakan untuk memisahkan 3 variabel dalam sebuah
deklarasi.
int a= 5, b=7; // operator koma digunakan untuk memisahkan pemeberian nilai awal dari
dua variabel.
x = y, y = z, z = x; // operator koma digunakan untuk menyatukan tiga ekspresi menjadi
satu pernyataan.
a = (b=3, b+2); /* operator koma digunakan untuk menggabungkan beberapa ungkapan
dengan proses yang berurutan dari ungkapan sebelah kiri koma kemudian
ke ungkapan disebelah kanan koma */

3.4.6. Operator Cast


Bentuk umum dari operator bersyarat adalah sebagai berikut:

Kondisi ? ekspresi1: ekspresi2;

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

Teknik Mesin Unsrat Page | 85


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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;
}

Hasil eksekusi program


Nilai yang lebih kecil dari 10 dan 5 = 5
Nilai yang lebih besar dari 10 dan 5 = 10

3.4.7. Operator sizeof


Operator sizeof digunakan untuk mengetahui ukuran dari operannya dalam satuan
byte. Operator size of hanya memerlukan satu operan sehingga termasuk dalam operator
unary.

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;
}

Hasil eksekusi program


"big" is 4 bytes
a short is 2 bytes
a double is 8 bytes

3.4.8. Cotoh-contoh Operator Lainnya

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

Teknik Mesin Unsrat Page | 86


Alagoritma dari program konversi ini adalah sebagi berikut:
1. Masukkan derajat celcius
2. tF = 9/5 * tC + 32
3. tR = 4/5 * tC
4. Tampilkan tF
5. Tampilkan tR

Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

//Deklarasi variabel
double tc, tf, tr;

//Memasukkan data derajat celcius


cout << "Memasukkan derajat celcius : "; cin >> tc;

//Konversi suhu dari celcius ke fahrenheit dan reamur


tf = ((9 / 5)*tc) + 32;
tr = 0.8*tc;

//Menampilkan hasil konversi


cout << endl;
cout << "Hasil konversi" << endl;
cout << "Derajat Fahrenheit : " << tf << endl;
cout << "Derajat Reamur : " << tr << endl;

_getch();
return 0;
}

Hasil eksekusi program


Memasukkan derajat celcius : 200

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.

Teknik Mesin Unsrat Page | 87


Alogoritma dari program ini adalah sebagai berikut:
1. Masukkan satuan panjang meter
2. Meter 0.9144 * yard + 0.3048 * kaki + 0.0254 * inchi
3. Tampilkan meter

Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

//Deklarasi variabel
double yard, kaki, inchi, meter;

//Memasukkan nilai yard, kaki dan inchi


cout << "Memasukkan satuan yard : "; cin >> yard;
cout << "Memasukkan satuan kaki : "; cin >> kaki;
cout << "Memasukkan satuan inchi : "; cin >> inchi;

//Menghitung konversi
meter = 0.9144*yard + 0.3048*kaki + 0.0254*inchi; cout << endl;

//Menampilkan hasil konversi


cout << yard << " Yard, " << kaki << " Kaki, " << inchi << " Inchi
setara dengan " << meter << " meter" << endl;

_getch();
return 0;
}

Hasil eksekusi program


Memasukkan satuan yard : 6
Memasukkan satuan kaki : 3
Memasukkan satuan inchi : 4

6 Yard, 3 Kaki, 4 Inchi setara dengan 6.5024 meter

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;

Teknik Mesin Unsrat Page | 88


// Input bilangan pertama ke variabel A dan bilangan kedua ke B
cout << "Masukkan bilangan pertama : "; cin >> A;
cout << "Masukkan bilangan kedua : "; cin >> B;

//Proses perhitungan dan menampilkan


cout << "Penjumlahan bilangan pertama dan kedua : " << A + B << endl;
cout << "Pengurangan bilangan pertama dan kedua : " << A - B << endl;
cout << "Perkalian bilangan pertama dan kedua : " << A*B << endl;
cout << "Pembagian bilangan pertama dan kedua : " << A / B << endl;

_getch();
return 0;
}

Hasil eksekusi program


Masukkan bilangan pertama : 7
Masukkan bilangan kedua : 4
Penjumlahan bilangan pertama dan kedua : 11
Pengurangan bilangan pertama dan kedua : 3
Perkalian bilangan pertama dan kedua : 28
Pembagian bilangan pertama dan kedua : 1

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.

Algortima dari proses konversi ini adalah:


1. Masukkan satuan waktu detik
2. Jam ⇐ detik dibagi 3600, karena 1 jam = 3600 detik. Hasil perhitungan ini adalah
bilangan bulat.
3. sisajam ⇐ detik modulo 3600, akan menghasilkan sisa dari perhitungan Langkah 2.
4. menit ⇐ sisajam dibagi 60
5. sisamenit ⇐ sisajam modulo 60
6. detik ⇐ sisamenit, karenan sisa menit merupakan satuan terkecil yang dapat dikatakan
sebagai detik.
7. Tampilkan jam, menit, detik.

Teknik Mesin Unsrat Page | 89


Catatan:
1 jam 60 menit = 3600 detik

Source code:
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

//Deklarasi variabel
int detik, menit, jam, sisajam;

//Input satuan waktu detik


cout << "Masukkan waktu dalam detik : "; cin >> detik; cout << endl;

//Proses konversi dari detik ke jam, menit dan detik


jam = detik / 3600;

//Menghasilkan bilangan bulat sisa


sisajam = detik % 3600; //Sisa bagi atau modulo

//Menit adalah sisa dari perhitungan di atas


menit = sisajam / 60;

//Detik adalah sisa dari perhitung di atas


detik = sisajam % 60;

//Menampilkan hasil operasi


cout << "Waktu tersebut setara dengan " << jam << " Jam, " <<
menit << " menit, " << detik << " detik" << endl;
_getch();
return 0;
}

Hasil eksekusi program


Masukkan waktu dalam detik : 5005

Waktu tersebut setara dengan 1 Jam, 23 menit, 25 detik

Teknik Mesin Unsrat Page | 90


MODUL 4

INSTRUKSI MASUKAN DAN KELUARAN

4.1. Instruksi Keluaran


Bahasa C menggunakan fungsi-fungsi untuk menampilkan keluaran atau hasil proses
program. Prototype dari fungsi-fungsi keluaran berada di file judul (header file) stdio.h dan
conio.h.
Fungsi-fungsi pustaka yang umum digunakan untuk menampilkan hasil yang
prototype-nya berada di file judul stdio.h adalah printf(), putchar(), puts(), fprintf().
Sedangkan fungsi yang prototype-nya berada di file conio.h adalah fungsi putch(), getche(),
clrscr() dan fungsi gotoxy().

4.1.1. Menampilkan hasil tidak terformat


Untuk menampilkan hasil tidak terformat dapat menggunakan fungsi standar putch(),
putchar() dan puts(). Tidak terformat dalam hal ini adalah lebar dan bentuk dari
tampilannya tidak dapat diatur. Fungsi putchar() digunakan untuk menampilkan nilai
karakter tidak terformat dan fungsi puts() digunakan untuk menampilkan nilai string tidak
terformat.

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).

Latihan 35 Program Puts, Putchar dan Putch


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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*/

Teknik Mesin Unsrat Page | 91


_getch();
return 0;

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.

4.1.2. Menampilkan hasil terformat


Untuk menampilkan hasil terformat dapat digunakan fungsi printf(). Fungsi printf()
digunakan untuk menampilkan semua jenis data (numeric dan karakter) yang dapat diatur
formatnya karena fungsi ini dapat menggunakan kode-kode format.

Latihan 36 Program Fungsi printf()


#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

char kata[12] = "Bahasa C++";


int a = 456, b = -789;
float c = 0.123;
printf("%15s\n", kata); /* 20 tempat lebar rata kanan */
printf("%d %07d %+5d", a, a, b); /* minimum selebar 7 digit rata kanan, blank
disi dengan 0 */
printf("\n%08.5f", c); /* 8 digit dengan 5 digit di belakang koma,
blank diganti dengan 0 */
printf("\n%-13.2f", c); /* 13 digit dengan 2 digit di belakang
koma,rata kiri */
printf("\n%.3e %.3E", c, c); /* 3 digit dibelakang koma menggunakan bentuk
Exponen */

_getch();
return 0;
}

Hasil eksekusi

Teknik Mesin Unsrat Page | 92


4.2. Instruksi Masukan
Dalam bahasa C proses memasukkan suatu data bisa menggunakan beberapa fungsi
pustaka yang telah tersedia. Beberapa fungsi pustaka yang bisa digunakan adalah sebagai
berikut:

 scanf()

Fungsi pustaka scanf() digunakan untuk menginput data berupa data numerik, karakter
dan string secara terformat.

Latihan 37 Program Fungsi scanf()


#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

int bil;
char kar, nama[10];
float pecah;

printf("Masukkan sebuah karakter : ");


scanf_s("%c", &kar); /* membaca sebuah karakter */
printf("Masukkan sebuah bilangan bulat : ");
scanf_s("%d", &bil); /* membaca sebuah bilangan bulat */
printf("Masukkan sebuah bilangan pecahan : ");
scanf_s("%f", &pecah); /* membaca sebuah bilangan float */
printf("\nNilai variable yang Anda masukkan adalah :\n");
printf("Bilangan Bulat = %d\n", bil);
printf("Karakter = %c\n", kar);
printf("Bil. Pecahan = %f\n", pecah);
_getch();
return 0;
}

Hasil eksekusi

Teknik Mesin Unsrat Page | 93


 gets()

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.

Latihan 38 Program Fungsi gets()


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{

int B = 5, A; //variabel B diberi nilai awal = 5


A = B++; /* nilai B diberikan terlebih dahulu ke A,
sehingga A bernilai 5, lalu B ditambahkan dengan 1,
nilai B sekarang sama dengan 6 */
printf("A = %d\n", A);
printf("B = %d", B);

_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

Teknik Mesin Unsrat Page | 94


penekanan tombol enter. Fungsi getchar tidak menggunakan argument, tetapi langsung
memberikan hasil karakter yang dimasukkan.

Latihan 39 Program Fungsi getchar()


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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.

Latihan 40 (Program Operator %)


#include <conio.h> /* prototype getche() berada pada file header ini */
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
char c;
printf("Masukkan sebuah karakter ");
c = _getche();
printf("\nKarakter yang dimasukkan adalah %c", c);
_getch();
return 0;
}

Teknik Mesin Unsrat Page | 95


Hasil Eksekusi

 gets ()

Fungsi gets() mengembalikan sekumpulan karakter dari standar input dan


menyimpannya di variabel yang ditentukan.

Latihan 41 Program Fungsi gets ()


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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

Teknik Mesin Unsrat Page | 96


MODUL 5
PERCABANGAN

Dalam pembuatan algoritma atau program untuk memecahkan masalah adakalanya


kita dihadapi beberapa kondisi atau keadaaan, kondisi tersebut biasanya menentukan hasil
akhir dari proses yang akan didapat. Misalnya untuk menentukan kelulusan seorang siswa
berdasarkan nilai. Jika nilai siswa lebih dari atau samadengan 50 maka siswa tersebut
dinyatakan lulus, sebaliknya jika nilai siswa tersebut di bawah 50 maka tidak lulus, dan
seterusnya.
Kondisi merupakan hal yang menentukan didalam mengambil keputusan mengenai
tindakan yang diambil. Didalam pemrograman kondisi dikenal dalam bentuk IF, CASE
ataupun yang setara.

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

Bentuk: if (kondisi) statement;

Jika ada lebih dari satu statemen yang harus dilaksanakan maka harus
digunakan tanda ( { ) dan (}).

Bentuk:

if (kondisi)
{ statemen-1;
….
statemen-n;

Latihan 42 Latihan Penggunaan if


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

Teknik Mesin Unsrat Page | 97


float nilai;
printf("Masukkan nilai : ");
scanf_s("%f", &nilai);
if (nilai > 50) /*jika nilai di atas 50 maka akan mencetak kata Lulus */
printf("Lulus");
printf("\n Nilai anda = %.2f", nilai);
_getch();
return 0;
}

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.

5.2. Pernyataan If....else


Pernyataan if..else digunakan untuk menguji sebuah kondisi. Bila kondisi yang diuji
terpenuhi, program akan menjalankan pernyataan-pernyataan tertentu; dan bila kondisi yang
diuji salah, program akan menjalankan pernyatan-pernyataan yang lain.

 Bentuk umum untuk statemen if-else dalam bahasa C adalah sebagai berikut:

if (kondisi)
statement;
else
statemen;

Latihan 43 Latihan Penggunaan if-else


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
Teknik Mesin Unsrat Page | 98
float nilai;
printf("Masukkan nilai : ");
scanf_s("%f", &nilai);
if (nilai > 50)
{
printf("Anda Lulus");
}
else
{
printf("Anda tidak lulus");
}
printf("\n Nilai anda = %.2f", nilai);
_getch();
return 0;
}

Hasil Eksekusi

5.3. Pernyataan if..else if (if bersarang)


Dalam kasus-kasus tertentu, sebuah konstruksi if dan else dapat terdapat bentuk
bersarang (nested). Bentuk bersarang merupakan Latihan bentuk dari sebuah atau beberapa
buah pernyataan if dan else yang terdapat didalam bentuk if dan else yang lainnya. Nested
IF dan ELSE merupakan pernyataan yang lebih rumit dibandingkan dengan pernyataan IF
dan ELSE sederhana.

 Bentuk umum pernyataan if..else dalam Bahasa C adalah sebagai berikut:

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

5.4. Pernyataan switch-case


Pernyataan switch-case digunakan untuk menyederhanakan struktur pemilihan
dengan banyak kondisi.

Teknik Mesin Unsrat Page | 100


 Bentuk umum dalam bahasa C:

switch (<ekspresi>)
{ case <nilai_1>: statemen_1;
break;
…….
case <nilai_n> : statemen_n;
break;
default: statemen_default;
}

Latihan 45 (Soal Latihan)


Tulislah algoritma dan program yang menampilkan ’Genap’ jika suatu bilangan adalah
bilangan genap atau ‘Ganjil’ jika bilangan tersebut adalah bilangan ganjil. Nilai masukan
adalah bilangan bulat, yaitu x, dimana 0 ≤ x ≤ 65535. keluaran dari program ini adalah
’Bilangan Genap’ atau ’Bilangan ganjil’.

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() {

int bil; /*deklarasi variabel bil */


printf("Masukkan suatu bilangan bulat sembarang: ");
scanf_s("%d", &bil);
if (bil % 2 == 0)
printf("Bilangan genap");
else
printf("Bilangan ganjil");
_getch();
return 0;
}

Hasil Eksekusi

Teknik Mesin Unsrat Page | 101


Latihan 46 (Soal Latihan)
Tulislah algoritma dan program yang meminta masukan bilangan bulat dari pengguna. Jika
pengguna memasukkan 0, program menampilkan ’Minggu’; jika pengguna memasukkan 1,
program menampilkan ’Senin’, dan seterusnya sampai dengan ’Sabtu’. Jika pengguna
memasukkan nilai di luar jangkauan 0 sampai dengan 6, program menuliskan ’Hari tidak
Valid’.

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() {

unsigned int x; /*deklarasi variabel x */


printf("Masukkan bilangan bulat (0 - 6): ");
scanf_s("%d", &x);
Teknik Mesin Unsrat Page | 102
switch (x)
{
case 0: printf("Minggu"); break;
case 1: printf("Senin"); break;
case 2: printf("Selasa"); break;
case 3: printf("Rabu"); break;
case 4: printf("Kamis"); break;
case 5: printf("Jumat"); break;
case 6: printf("Sabtu"); break;
default: printf("Hari tidak Valid");
_getch();
return 0;
}

Hasil Eksekusi

Teknik Mesin Unsrat Page | 103


MODUL 6
PERULANGAN

Dalam pembuatan algoritma atau program untuk memecahkan masalah adakalanya


kita dihadapi beberapa kondisi atau keadaaan, kondisi tersebut biasanya menentukan hasil
akhir dari proses yang akan didapat. Misalnya untuk menentukan kelulusan seorang siswa
berdasarkan nilai. Jika nilai siswa lebih dari atau samadengan 50 maka siswa tersebut
dinyatakan lulus, sebaliknya jika nilai siswa tersebut di bawah 50 maka tidak lulus, dan
seterusnya.

Pengulangan digunakan untuk menjalankan satu atau beberapa pernyataan sebanyak


beberapa kali. Proses yang berulang adalah suatu urut-urutan pernyataan yang akan
dieksekusi terus menerus selama kondisi yang disyaratkan terpenuhi. Pengulangan proses
merupakan suatu kemampuan yang dimiliki oleh semua compiler bahasa pemrograman.
Terdapat banyak jenis pengulangan proses, tetapi paling tidak akan dibahas dua buah bentuk
jenis pengulangan :
1. FOR. Pengulangan dengan besarnya nilai integer sebagai kondisi (biasanya
berbentuk for)
2. WHILE. Pengulangan dengan kondisi pernyataan boolean (biasanya berbentuk
while)

Gambaran Flowchart dari perulangan adalah sebagai berikut:

Kondisi = nilai awal Perulanagn akan berhenti


saat nilai akhir terpenuhi

False
Kondisi

True
Pernyataan …..;
Pernyataan …..;
Blok Perulangan (dapat
berisi banyak statement)

Kondisi di increment

Teknik Mesin Unsrat Page | 104


6.1. Pernyataan for
Pernyataan dengan for biasanya digunakan untuk pernyataan yang sudah ditentukan
jumlah pengulangannya.

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++;

 Bentuk umum pernyataan for dalam bahasa C adalah sebagai berikut:

for (inisialisasi nilai_awal; kondisiPembatas_perulangan; increment/decrement)


{
instruksi-instruksi;
}

Latihan 47. Bentuk for


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

for (int j = 1; j <= 4; j = j + 1)


{
printf("%d\n", j);
}

_getch();
return 0;
}

Hasil Eksekusi

6.2. Pernyataan for bersarang


Pernyataan for dapat dituliskan di dalam pernyataan for lagi. Hal semacam ini sering
disebut dengan pernyataan for bersarang (nested for).

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;
}

Latihan 48 Bentuk nested for


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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

6.3. Pernyataan while


Pernyataan pengulangan ini biasanya digunakan bila belum diketahui pasti berapa
banyak akan dilakukan pengulangan pernyataan-pernyataan. Berakhirnya pengulangan ini
ditentukan oleh suatu kondisi. Bila kondisi sudah tidak terpenuhi maka pengulangan akan
berakhir. Dengan kata lain, selama kondisi masih terpenuhi, pengulangan akan terus
dilakukan.
Bentuk umum pernyataan while dalam bahasa C adalah sebagai berikut:
while(kondisi)
{
instruksi;
}

Teknik Mesin Unsrat Page | 106


Latihan 49. Bentuk while
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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

6.4. Penyataan do-while


Pernyataan pengulangan do-while hampir sama dengan pernyataan pengulangan
while, dan biasanya digunakan bila jumlah pengulangan belum dapat ditentukan pada saat
program ditulis.
Struktur do-while digunakan untuk melaksanakan (do) statemen atau blok statemen
selama (while) kondisi yang diseleksi pada while tidak terpenuhi. Sintaks dari struktur ini
adalah sebagai berikut:
Bentuk umum pernyataan do-while dalam bahasa C adalah sebagai berikut:
do {
instruksi;
}
while(kondisi);

Latihan 50. Bentuk do-while1


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

Teknik Mesin Unsrat Page | 107


int j;
j = 1;
do { // akan dikerjakan statemen-statemen di bawah ini
printf("%d ", j);
j = j + 1;
} while (j < 10); /*Pengecekan kondisi, jika masih terpenuhi maka perulangan
akan dilanjutkan, jika tidak keluar dari blok perulangan */

_getch();
return 0;
}

Hasil Eksekusi

Latihan 51. Bentuk do-while2


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() {

int j;
j = 1;
do {
printf("%d ", j);
j = j + 1;
} while (j > 10);
_getch();
return 0;
}

Hasil Eksekusi

6.5. Penyataan break dan continue


Pernyataan break akan menyebabkan proses keluar dari statemen berikut ini: for,
while, do-while, switch.
Pernyataan continue menyebabkan proses mengabaikan instruksi selanjutnya dan

Teknik Mesin Unsrat Page | 108


melanjutkan proses iterasi berikutnya pada statemen for, while, do-while.

Latihan 52. Penggunaan break dalam for.


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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

Latihan 53. Penggunaan continue dalam for.


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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

Teknik Mesin Unsrat Page | 109


MODUL 7
FUNGSI

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.

Keuntungan menggunakan modul:


1. Rancangan top-down dengan pendekatan divide-and-conquer, program besar
dapat dibagi menjadi modulmodul yang lebih kecil;
2. Dapat dikerjakan oleh beberapa orang dengan koordinasi yang lebih mudah;
3. Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan kesalahan
dapat dilokalisasi dalam satu modul;
4. Modifikasi dapat dilakukan tanpa mengganggu program secara keseluruhan;
5. Mempermudah dokumentasi

Sifat-sifat modul yang baik adalah:


1. Fan-in yang tinggi: makin sering suatu modul dipanggil oleh pengguna makin
tinggi nilai fan-in.
2. Fan-out yang rendah: makin sedikit (spesifik) tugas yang dilakukan oleh suatu
modul, makin rendah nilai fenout.
3. Self-contained: kemampuan memenuhi kebutuhannya sendiri

Latihan 54 Fungsi operasi aritmatika


#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

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;
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 55 Fungsi pangkat dan fungsi akar


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;

double pangkat(float x, float y);


double akar(float bil);
void main(void)
{
float x, y;
printf("Masukkan x : "); scanf_s("%f", &x);
printf("Masukkan y : "); scanf_s("%f", &y);
printf("\n%.2f Pangkat %.2f = %.2f", x, y, pangkat(x, y));
printf("\n%.2f Pangkat %.2f = %.2f", y, x, pangkat(y, x));
printf("\n");
printf("\n%.2f akar dua = %.4f", x, akar(x));
printf("\n%.2f akar dua = %.4f", y, akar(y));
}
double pangkat(float x, float y)
{
return pow(x, y);
}
double akar(float bil)
{
return sqrt(bil); _getch();
return 0;
}

Teknik Mesin Unsrat Page | 111


Tampilkan hasil eksekusi kode diatas dan jelaskan!
Hasil eksekusi

Penjelasan

Latihan 56 Pemanggilan Fungsi oleh main()


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;

int addition(int a, int b)


{
int r;
r = a + b;
return (r);
}
int main()
{
int z;
z = addition(5, 3);
printf("Hasilnya %d", z);

_getch();
return 0;
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Teknik Mesin Unsrat Page | 112


Latihan 57 Pemanggilan fungsi yang didefinisikan sebelum fungsi utama
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;
float kali(float x, float y)
{
return(x * y);
}
float segitiga(float als, float tg)
{
return(kali(als, tg) / 2);
} //fungsi kali dipanggil oleh fungsi segitiga
float persegi(float p, float l)
{ return(kali(p, l)); } //fungsi kali dipanggil oleh fungsi persegi
void cetakLuas(float nilai)
{
printf("Hasil = %.3f\n", nilai);
}
void main(void)
{
float a = 10.5, b = 2.4;
cetakLuas(segitiga(a, b)); /* fungsi cetakLuas dipanggil dua kali, parameter
cetakLuas(persegi(a, b)); yang dikirim adalah
nilai balik dari fungsi segitiga dan persegi */
_getch();
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 58 Pemanggilan fungsi yang didefinisikan sesudah fungsi utama


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;
float segitiga(float als, float tg);
float persegi(float p, float l);
float kali(float x, float y)
{
return (x*y);
}
void cetakLuas(float nilai)

Teknik Mesin Unsrat Page | 113


{
printf("Hasil = %.3f\n", nilai);
}
void main(void)
{
float a = 10.5, b = 2.4;
cetakLuas(segitiga(a, b));
cetakLuas(persegi(a, b));
}
float segitiga(float als, float tg)
{
return(kali(als, tg) / 2);
}
float persegi(float p, float l)
{
_getch();
return(kali(p, l));
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 59 Program Call by Value


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;
void tukar(int x, int y); /* pendeklarasian fungsi */
void main()
{
int a, b;
a = 20; b = 30;
printf("Nilai sebelum pemanggilan fungsi\n");
printf("a = %i b = %i\n\n", a, b); // a dan b sebelum pemanggilan fungsi
tukar(a, b); /* pemanggilan fungsi tukar() */
printf("Nilai setelah pemanggilan fungsi\n");
printf("a = %i b = %i\n\n", a, b); // a dan b setelah pemanggilan fungsi
_getch();
}
void tukar(int x, int y) /* Pendefinisian fungsi tukar() */
{
int temp; /* variabel sementara */
temp = x;
x = y;
y = temp;

Teknik Mesin Unsrat Page | 114


printf("Nilai di dalam fungsi tukar()\n");
printf("x = %i y = %i\n\n", x, y);
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 60 Program Call by Refference_1


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;
void duplicate(int& a, int& b, int& c)
{
a*= 2;
b*= 2;
c*= 2;
}
int main()
{
int x = 1, y = 3, z = 7;
printf("Sebelum pemanggilan fungsi duplicate\n");
printf("x= %d y= %d z= %d\n");
printf("\nSetelah pemanggilan fungsi duplicate\n");
duplicate(x, y, z);
printf("x= %d y= %d z= %d");
_getch();
return 0;
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Teknik Mesin Unsrat Page | 115


Latihan 61 Program Call by Refference_2
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;

void duplicate(int* a, int* b, int* c)


{
*a *= 2;
*b *= 2;
*c *= 2;
}
int main()
{
int x = 1, y = 3, z = 7;
printf("Sebelum pemanggilan fungsi duplicate\n");
printf("x= %d y= %d z= %d\n");
printf("\nSetelah pemanggilan fungsi duplicate\n");
duplicate(&x, &y, &z);
printf("x= %d y= %d z= %d");
_getch();
return 0;
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 62 Variabel Global dan Variabel Lokal


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
using namespace std;

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();

Teknik Mesin Unsrat Page | 116


}
void tampil(void)
{
int i = 10; /* variabel lokal */
printf("Nilai variabel i dalam fungsi tampil() adalah %i\n\n", i);

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 63 Program Fibonacci dengan Iteratif


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <cstdio>
using namespace std;

int fibo(int n);


int main()
{
int x;
printf("Menampilkan deret Fibonacci\n");
printf("Batas suku bilangan ke : ");
scanf_s("%d", &x);
printf("Deret ke %d = %d", x, fibo(x));
printf("\n\nDeret fibonacci : \n");
for (int i = 1; i <= x; i++)
printf("%d ", fibo(i)); /* Pemanggilan deret Fibonacci sebanyak x kali
*/
return 0;
}
int fibo(int n)
{
int fb1, fb2, fn, i;
if (n == 1) return 1;
if (n == 2) return 1;
fb1 = 1; fb2 = 1;
for (i = 3; i <= n; i++)
{
fn = fb1 + fb2;
fb2 = fb1;
fb1 = fn;
}

return fn;
}

Teknik Mesin Unsrat Page | 117


Tampilkan hasil eksekusi kode diatas dan jelaskan!
Hasil eksekusi

Penjelasan

Latihan 64 Program Fibonacci dengan Rekursif


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <cstdio>
using namespace std;
int fibo(int n);
int main()
{
int x;
printf("Menampilkan deret Fibonacci\n");
printf("Batas suku bilangan ke : ");
scanf_s("%d", &x);
printf("Deret ke %d = %d", x, fibo(x));
printf("\n\nDeret fibonacci : \n");
for (int i = 1; i <= x; i++)
printf("%d ", fibo(i)); /* Pemanggilan deret Fibonacci sebanyak x kali */
_getch;
return 0;
}
int fibo(int n)
{
if (n == 1)
return 1;
else if (n == 2) return 1;
else
return fibo(n - 2) + fibo(n - 1);
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Teknik Mesin Unsrat Page | 118


MODUL 8
ARRAY

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:

Latihan 65 Array dengan ukuran


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int index, nilai[10];
system("cls");
printf("Input nilai 10 mahasiswa\n"); /* input nilai mahasiswa */
for (index = 0; index < 10; index++)
{
printf("Mahasiswa %i : ", index + 1);
scanf_s("%i", &nilai[index]);
}
/* tampilkan nilai mahasiswa */
printf("\nNilai mahasiswa yang telah diinput\n");
for (index = 0; index < 10; index++)
{
printf("%5.0i", nilai[index]);
}
_getch();
}

Teknik Mesin Unsrat Page | 119


Tampilkan hasil eksekusi kode diatas dan jelaskan!
Hasil eksekusi

Penjelasan

Latihan 66 Jumlah elemen array ditentukan pengguna


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <cstdio>
#define max 100
using namespace std;
int main()
{
int n, index, nilai[max];
system("cls");
printf("Input banyaknya mahasiswa:");/*Input jumlah elemen array sesungguhnya */
scanf_s("%i", &n);
printf("\n"); /* input nilai mahasiswa */
for (index = 0; index < n; index++)
{
printf("Mahasiswa %i : ", index + 1);
scanf_s("%i", &nilai[index]);
}
/* tampilkan nilai mahasiswa */
printf("\nNilai mahasiswa yang telah diinput\n");
for (index = 0; index < n; index++)
{
printf("%5.0i", nilai[index]);
}
_getch();
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Teknik Mesin Unsrat Page | 120


Latihan 67 Program input matriks
/* Program menginput nilai(bilangan) ke dalam array
dimensi dua dan menampilkannya */

#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();

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Latihan 68 Program Array Sebagai Parameter


#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <cstdio>

Teknik Mesin Unsrat Page | 121


#define max 100
using namespace std;

void inputArray(int arg[], int pjng) /* fungsi Input elemen array */


{
for (int i = 0; i< pjng; i++){
printf("Masukkan arr[%d]: ", i + 1);
scanf_s("%d", &arg[i]);
}
}
void kaliArray(int arg[], int pjng) /* fungsi mengalikan elemen array dengan 2 */
{
for (int n = 0; n<pjng; n++)
arg[n] *= 2;
}
void cetakArray(int arg[], int pjng) /* fungsi cetak elemen array */
{
for (int n = 0; n<pjng; n++)
printf("%4.0d", arg[n], " ");
printf("\n");
}
int main()
{
int bnyk, arr[100];
printf("Program Array sebagai Argumen dalam Fungsi\n");
printf("Masukkan jumlah elemen : ");
scanf_s("%d", &bnyk);
inputArray(arr, bnyk); /* Pengiriman array ke parameter dalam fungsi */
kaliArray(arr, bnyk);
cetakArray(arr, bnyk);

_getch();
return 0;
}

Tampilkan hasil eksekusi kode diatas dan jelaskan!


Hasil eksekusi

Penjelasan

Teknik Mesin Unsrat Page | 122

Anda mungkin juga menyukai