Anda di halaman 1dari 24

MODUL II

PEMROGRAMAN MODULAR

TUJUAN
Memahami dasar-dasar pemrograman C++.
Memahami konsep variabel lokal dan variabel global dalam pemrograman.
Memahami konsep fungsi dan prosedur dalam pemrograman modular.
Memahami konsep passing by value dan passing by reference dalam
pemrograman dengan fungsi maupun prosedur.
Memahami pengaplikasian pemrograman modular pada C++.

TUGAS PENDAHULUAN
1. Jelaskan tentang konsep variabel lokal dan variabel global serta
perbedaannya.
2. Jelaskan tentang konsep fungsi dan prosedur, perbedaan keduanya, serta
aplikasinya dalam pemrograman dengan C++.
3. Jelaskan tentang konsep passing by value dan passing by reference,
perbedaannya, serta aplikasinya dalam pemrograman dengan Bahasa C++.
4. Buatlah flowchart dan pseudocode (notasi algoritma) dari program pada soal
di bawah ini, lalu lakukan trace terhadap flowchart yang anda buat sehingga
yakin bahwa flowchart tersebut sudah benar.

SOAL
1. Buatlah program untuk menghitung luas dan keliling bangun datar berikut
dengan menggunakan konsep fungsi:
a. Persegi
b. Persegi Panjang
c. Segitiga (termasuk juga segitiga sembarang)
d. Lingkaran
e. Trapesium
f. Jajargenjang
g. Belah Ketupat
h. Layang-layang
2. Buatlah program untuk menghitung volume dan luas permukaan bangun ruang
berikut dengan menggunakan konsep prosedur:
a. Kubus
b. Balok
c. Bola
d. Limas Segitiga (termasuk juga limas segitiga sembarang)
e. Limas Segiempat
f. Prisma Segitiga (termasuk juga prisma segitiga sembarang)

Jawaban

1. Pengertian dan perbedaan konsep variable lokal dan global yaitu:


Variabel lokal adalah variabel yang didefinisikan didalam suatu fungsi dan berlaku
sebagai variabel lokal bagi fungsi variabel hanya dikenal di dalam fungsi dimana
variabel itu didefinsikan dan tidak dikenal oleh fungsi lain. Sedangkan variabel
global adalah variabel yang didefinisikan di luar fungsi manapun sehingga dikenal
oleh semua fungsi. Jadi perbedaan variabel global dikenal di seluruh badan
program dan didefinisikan di dalam program utama. Sedangkan variabel lokal
hanya dikenal di badan program yang mendefinisikannya, di definisikan di
prosedure atau fungsi.

2. Pengertian konsep fungsi dan prosedur, perbedaan keduanya, serta aplikasinya


dalam pemrograman dengan C++ yaitu:
a. Pengertian konsep fungsi dan prosedur adalah
Fungsi merupakan bagian dari kode program yang terpisah dari program
utama. Bagain kode program ini di-execute jika diperlukan untuk melakukan
tindakan khusus dalam program. Fungsi banyak dilibatkan dalam program
dengan tujuan untuk mengurangi duplikasi pengkodean dan untuk
mempermudah pemahaman.
Procedure adalah program yang disimpan dalam database seperti halnya
data dan bagian dari suatu program yang disusun secara terpisah untuk
melakukan suatu tugas khusus atau fungsi tertentu. Prosedur dapat dipanggil
oleh program utamanya ataupun oleh prosedur lain yang juga merupakan
bagian dari program utamanya (yang masih dalam satu kode program).
sebuah program yang mememiliki prosedur biasanya terdiri dari satu atau
lebih prosedur dan satu program utama.
Keuntungan dari pembuatan prosedur
1. Memecah program menjadi lebih sederhana. misalnya diperlukan
proses pencarian berkali kali jika hanya terdiri dari satu program utama
tanpa prosedur maka kode program pencarian akan beberapa kali
ditulis ulang dan hasilnya dapat memperbesar ukuran file.
2. Blok program yang digunakan jelas jika akan digunakan pada program
lain cukup dengan mengkopi yang membutuhkan dan program lain
tersebut tinggal memanggil prosedur tersebut.
b. Perbedaan konsep fungsi dan prosedur adalah
kalau fungsi dia akan mengembalikan suatu nilai pada pemanggilnya dan
menghasilkan nilai keluaran (Output). Sedangkan kalau procedure dia tidak
akan mengembalikan nilai apapun pada fungsi pemanggilnya dan prosedur
tidak menghasilkan nilai, namun hanya merupakan proses di dalamnya.
sedangkan fungsi
c. Aplikasi dalam pemrograman dengan C++.

#include <iostream>
using namespace std;

bool prima(int n) {

int i, jml;
jml = 0 ;
for (i=1;i<=n;i++) {
if (n % i == 0) {
jml ++ ; }
}
if (jml == 2) {
return (true); }
else {
return(false) ; }
}

Int main() {
int j, n, cacah ;
cout << "Masukkan Batas bilangan : " ; cin >> n ;
cout << "Berikut Bilangan itu : " << endl ;
cacah = 0 ;
for (j=1;j<=n;j++) {
if (prima(j) == true) {
cout << j << " " ;
cacah ++ ;
}
}
cout << "\nBanyak bilangan prima adalah : " << cacah << endl ;

return 0;
}
Kode Program 2.1. Contoh Fungsi dalam C++

#include <iostream>
using namespace std;
void penjualan (float a, float b, float c) {
float total, temp ;
temp = b * c ;
total = temp - (a * temp) ;
cout << "Harga Kotor Barang : " << temp << endl ;
cout << "Harga Bersih Barang : " << total << endl ;
}
int main() {
float diskon, harga, jumlah ;
float total, temp ;
cout << "PROGRAM HITUNG HARGA BARANG" << endl ;
cout << "===========================" << endl << endl ;
cout << "Masukkan harga barang : " ; cin >> harga ;
cout << "Masukkan jumlah barang : " ; cin >> jumlah ;
cout << "Masukkan diskon barang : " ; cin >> diskon ;
cout << "\n" ;
penjualan(diskon, harga, jumlah) ;
return 0;
}
Kode program 2.2. Contoh Prosedur

3. Pengertian konsep passing by value dan passing by reference adalah


a. Passing By Value
Bila parameter dikirim secara value (nilai), parameter formal di prosedur akan
berisi nilai yang akan dikirimkan yang kemudian bersifat lokal di prosedur. Bila
nilai parameter formal di prosedur tersebut berubah, tidak akan mempengaruhi
nilai parameter nyata (nilai parameter nyata tetap, tidak berubah). Pengiriman
secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke
parameter formal, yang tidak dikirim balik dari parameter formal ke parameter
nyata. Pengiriman parameter secara nilai ini juga dapat dikatakan dengan
menyalin (copy) nilai variabel dan nilai itu diberikan ke variabel parameter.
Prosedur bekerja pada salinan variabel, sehingga tidak mengubah parameter
aktualnya.
Karakteristik dari Pass by Value:
a) Data yang dikirim dari parameter aktual di blok program utama ke parameter
formal di prosedur adalah nilai dari datanya bukan alamat memori letak dari
datanya.
b) Prosedur/Fungsi yang menerima nilai ini akan menyimpan data tersebut di
alamat memori yang berbeda dari nilai aslinya yang digunakan oleh bagian
program yang memanggil fungsi/prosedur tersebut di blok program utama.
c)Karena terdapat alamat memori yang berbeda, maka perubahan nilai di
fungsi tidak akan merubah nilai asli di bagian program yang memanggil
prosedur/fungsi tersebut.

Contoh aplikasinya dalam pemrograman dengan Bahasa C++.


#include <iostream>//passing by value
using namespace std;
void foo(int y){
cout << "y = " << y << endl;
y = 6;
cout << "y = " << y << endl;
}
int main()
{
int x = 5;
cout << "x = " << x << endl;
foo(x);
cout << "x = " << x << endl;
return 0;
}
Kode Program 3.1. Passing By Value pada C++
b. Pass By Reference
Pengiriman parameter secara reference (acuan), maka perubahan-
perubahan yang terjadi pada nilai parameter formal di prosedur akan
memperngaruhi nilai parameter nyata. Parameter-parameter ini disebut
dengan variabel parameter serta dideklarasikan di deklarasi prosedur
dengan menggunakan kata cadangan Var.
Karakteristik dari Pass by Reference :
a) Pada saat pengiriman nilai, yang dikirim dari parameter aktual di blok
program utama ke parameter formal di prosedur adalah alamat letak
dari nilai datanya bukan.
b) Prosedur/Fungsi yang menerima nilai ini akan menggunakan alamat
memori yang sama dengan nilai aslinya yang digunakan oleh bagian
program yang memanggil fungsi/prosedur tersebut di blok program
utama. Karena menggunakan alamat memori yang sama, maka
perubahan nilai di prosedur/fungsi akan merubah nilai asli di bagian
program yang memanggil prosedur/fungsi tersebut.

Contoh aplikasinya dalam pemrograman dengan Bahasa C++.


#include <iostream>//passing by reference
using namespace std;
void tambahSatu(int &y)
{
y++;
}
int main(){
int x = 5;
cout << "x = " << x << endl;
tambahSatu(x);
cout << "x = " << x << endl;
return 0;
}

Kode Program 3.1. Passing By Reference pada C++

c. Perbedaan pass by value dengan pass by reference


Jika menggunakan konsep passing by value maka isi atau nilai dari variable
yang ada di parameter main akan di copy ke parameter dari fungsi
pemanggil. Sehingga jika ada perubahan pada parameter pemanggil tidak
mengubah parameter main. Sedangkan menggunakan konsep passing by
reference maka yang di lewatkan bukan nilainya melainkan
alamat(reference) dari nilai tertentu yang di lewatkan, jadi jika ada
perubahan terhadap nilai oleh fungsi pemanggil maka nilai pada parameter
main pun ikut berubah.
4a. Program menghitung luas dan keliling dari bangun datar yaitu
a) Persegi
Flowchatnya

Gambar 4.1. Flowchat Penghitungan dari Persegi

Pseudocode
Deklarasi:
Sisi: int
luas, keliling: real
Proses :
read : sisi
luas =sisi*sisi
keliling = 4*sisi
return (luas,keliling)

Trace:
Input : sisi = 4
Proses :
Luas = 4*4
Keliling = 4*4
Output : 16 16
b) Persegi Panjang
Flowchatnya

Gambar 4.2. Flowchat Penghitungan dari Persegi Panjang

Pseudocode
Deklarasi:
p,l: int
luas, keliling: real
Proses :
read : p,l
luas =p*l
keliling = 2*(p+l)
return (luas,keliling)

Trace:
Input : p = 4, l=2
Proses :
Luas = 4*2
Keliling = 2*(4+2)
Output : 8 16

c) Segitiga (termasuk juga segitiga sembarang)


Flowchatnya

Gambar 4.3. Flowchat penghitungan dari segitiga

Pseudocode
Deklarasi:
a,b,c,s: double
luas, keliling: real
Proses :
read : a,b,c
Keliling =a+b+c
S= * keliling
Luas = akar(s*(s-a)*(s-b)*(s-c))
return (luas,keliling)

Trace:
Input : a = 2, b=2 c=2
Proses :
Keliling = 2+2+2
S = *6
Luas = akar(3*(3-2)*(3-2)*(3-2))
Output : 6 akar3

d) Lingkaran
Flowchatnya

Gambar 4.4. Flowchat Penghitungan dari Lingkaran

Pseudocode
Deklarasi:
r: double
luas, keliling: real
Proses :
read : r
Luas = 3,14 *r*r
Keliling = 2*3,14 * r
return (luas,keliling)

Trace:
Input : r=2
Proses :
Luas = 3,14 *2*2
Keliling = 2*3,14 * 2
Output : 12.56 12.56
e) Trapesium
Flowchatnya

Gambar 4.5. Flowchat Penghitungan dari Trapesium

Pseudocode
Deklarasi:
sSejajar1,sSejajar2,t,s1.s2: double
luas, keliling: real
Proses :
read : sSejajar1,sSejajar2,t,s1.s2
Luas = (sSejajar1+ sSejajar2) * t
Keliling = sSejajar1+ sSejajar2 + s1 +s2
return (luas,keliling)

Trace:
Input : sSejajar1=2,sSejajar2=2,t=2,s1=2,s2=2
Proses :
Luas = (2+ 2) * 2
Keliling = 2+ 2 + 2 +2
Output : 4 8

f) Jajargenjang
Flowchatnya

Gambar 4.6. Flowchat Penghitungan dari Jajargenjang

Pseudocode
Deklarasi:
a,t,s1,s2: int
luas, keliling: real
Proses :
read : a,t,s1,s2
Luas = a * t
Keliling =2*(s1 + s2)
return (luas,keliling)

Trace:
Input : a=2,t=2,s1=3,s2=3
Proses :
Luas = 2* 2
Keliling =2*(3 + 3)
Output : 4 12

g) Belah Ketupat
Flowchatnya

Gambar 4.7. Flowchat Penghitungan dari Belah Ketupat

Pseudocode
Deklarasi:
d1,d2, sisi: int
luas, keliling: real
Proses :
read : d1,d2, sisi
Luas = * (d1*d2)
Keliling = 4*sisi
return (luas,keliling)

Trace:
Input : d1=2,d2=2, sisi=4
Proses :
Luas = * (2*2)
Keliling = 4*4
Output : 2 16
h) Layang-layang
Flowchatnya

Gambar 4.8. Flowchat Penghitungan dari Layang-layang

Pseudocode
Deklarasi:
d1,d2, sisi1, sisi2: int
luas, keliling: real
Proses :
read : d1,d2, sisi1, sisi2
Luas = * (d1*d2)
Keliling = 2* (sisi1 + sisi2)
return (luas,keliling)

Trace:
Input : d1=2, d2=3, sisi1 =4, sisi2 = 5
Proses :
Luas = * (2*3)
Keliling = 2*(4+5)
Output : 3 18
i) Bangun datar
Flowchatnya
Gambar 4.9. Flowchat dari Bangun Datar
Pseudocode
Deklarasi
pilih=int
Proses
read (pilih)
if pilih =1
input sisi
panggil kubus(sisi)
else if pilih =2
input p,l
panggil persegi panjang(p,l)
else if pilih =3
input : a, b, c
panggil segitiga sembarang (a,b,c)
else if pilih =4
input : r
panggil lingkaran (r)
else if pilih =5
input : sSejajar1,sSejajar2,t,s1,s2
panggil trapesium (sSejajar1,sSejajar2,t,s1,s2)
else if pilih =6
input : a,t,s1,s2
panggil jajargenjang(sSejajar1,sSejajar2,t,s1,s2)
else if pilih =7
input : d1,d2, sisi
panggil belahketupat(d1,d2, sisi)
else if pilih =8
input : d1,d2, sisi1,sisi2
panggil layanglayang(d1,d2, sisi1,sisi2)
else
print :input pilih salah
end if

Trace:
Input : pilih =1;
Proses :
input : sisi=4
Luas = 4*4
Keliling = 4*4
Output : 16 16

b. Program untuk menghitung volume dan luas permukaan bangun ruang yaitu
a) Kubus
Flowchatnya
Gambar 4.10. Flowchat Penghitungan dari Kubus

Pseudocode
Deklarasi:
s: int
V, Lp: real
Proses :
V =s*s*s
LP = 6*s*s
print(V, Lp)

Trace:
Input : s =2
Proses :
V = 2*2*2
Lp = 6*2*2
Output : 8 24

b) Balok
Flowchatnya
Gambar 4.11. Flowchat Penghitungan dari Balok

Pseudocode
Deklarasi:
p,l,t: int
V, Lp: real
Proses :
V =p*l*t
Lp = 2x((pxl)+(pxt)+(lxt))
print (V, Lp)

Trace:
Input : p = 4, l=2, t=2
Proses :
V = 4*2*2
Lp = 2x((4x2)+(4x2)+(2x2))
Output : 16 38

c) Bola
Flowchatnya

Gambar 4.12. Flowchat Penghitungan dari Bola

Pseudocode
Deklarasi:
r: double
V, Lp: real
Proses :
V =4/3*3.14*r*r*r
Lp = 4*3.14*r*r
print (V, Lp)

Trace:
Input : r = 4
Proses :
V = 4/3*3.14*4*4*4
Lp = 4*3.14*4*4
Output : 66.98 200.96
d) Limas Segitiga (termasuk juga limas segitiga sembarang)
Flowchatnya

Gambar 4.13. Flowchat Penghitungan dari Limas Segitiga

Pseudocode
Deklarasi:
a,b,c,t,s,alas : double
V, Lp: real
Proses :
s = (a+b+c)
La = akar(s*(s-a) * (s-b) * (s-c))
V =La*t
Lp = La+3*(alas*t)
print(V, Lp)

Trace:
Input : a=2, b=2, c=2, t=2, alas=2
Proses :
s = (2+2+2)
La = akar(3*(3-2) * (3-2) * (3-2))
V = akar 3*2
Lp = akar 3 +3*(2*2)
Output : 3 13.73
e) Limas Segiempat
Flowchatnya

Gambar 4.14. Flowchat Penghitungan dari Limas Segiempat

Pseudocode
Deklarasi:
a,b,c,t,s : double
V, Lp: real
Proses :
La = s*s
V =La*t
Lp = La+4*(alas*t)
print(V, Lp)

Trace:
Input : a=2, b=2, c=2, t=2, s=3
Proses :
La = 3*3
V = 9*2
Lp = 9+4*(2*2)
Output : 18 25
f) Prisma Segitiga (termasuk juga prisma segitiga sembarang)
Flowchatnya

Gambar 4.15. Flowchat Penghitungan dari Prisma Segitiga

Pseudocode
Deklarasi:
a,b,c,t,s : double
V, Lp: real
Proses :
s = (a+b+c)
La = akar(s*(s-a) * (s-b) * (s-c))
V =La*t
Lp = La+(a+b+c)*t
print(V, Lp)

Trace:
Input : a=2, b=2, c=2, t=2, s=3
Proses :
s = (2+2+2)
La = akar(3*(3-2) * (3-2) * (3-2))
V = akar 3*2
Lp = akar 3 +(2+2+2)*2
Output : 3 13.73
g) Bangun ruang
Flowchatnya

Gambar 4.15. Flowchat Penghitungan dari Bangun Ruang


Pseudocode
Deklarasi
pilih=int

Proses
read (pilih)
if pilih =1
panggil kubus()
else if pilih =2
panggil balok()
else if pilih =3
panggil bola()
else if pilih =4
panggil limassegitiga()
else if pilih =5
panggil limassegiempat ()
else if pilih =6
panggil prismasegitiga()
else
print :input pilih salah
end if

Trace:
Input : pilih =1;
Proses :
Input : s =2
V = 2*2*2
Lp = 6*2*2
Output : 8 24