Anda di halaman 1dari 25

Nama NIM Kelompok

: Putu Rastika Yogi Swara : 1204505053 :X

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 perubahanperubahan 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 Bangun datar Flowchatnya

i)

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