Post on 03-Jan-2016
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
Nama : Putu Rastika Yogi SwaraNIM : 1204505053Kelompok : X
MODUL II
PEMROGRAMAN MODULAR
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 prosedur1. 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 adalahkalau 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 adalaha. 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 valueusing 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 ReferencePengiriman 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 referenceusing 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 yaitua) Persegi
Flowchatnya
Gambar 4.1. Flowchat Penghitungan dari Persegi
Pseudocode Deklarasi:Sisi: intluas, keliling: realProses :read : sisiluas =sisi*sisikeliling = 4*sisireturn (luas,keliling)
Trace:Input : sisi = 4Proses : Luas = 4*4Keliling = 4*4
Output : “16” “16”b) Persegi Panjang
Flowchatnya
Gambar 4.2. Flowchat Penghitungan dari Persegi Panjang
Pseudocode Deklarasi:p,l: intluas, keliling: realProses :read : p,lluas =p*lkeliling = 2*(p+l)return (luas,keliling)
Trace:Input : p = 4, l=2Proses : Luas = 4*2Keliling = 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: doubleluas, keliling: realProses :read : a,b,cKeliling =a+b+cS= ½ * kelilingLuas = akar(s*(s-a)*(s-b)*(s-c))return (luas,keliling)
Trace:Input : a = 2, b=2 c=2Proses : Keliling = 2+2+2S = ½ *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: doubleluas, keliling: realProses :read : rLuas = 3,14 *r*rKeliling = 2*3,14 * rreturn (luas,keliling)
Trace:Input : r=2Proses : Luas = 3,14 *2*2
Keliling = 2*3,14 * 2Output : “12.56” “12.56”
e) TrapesiumFlowchatnya
Gambar 4.5. Flowchat Penghitungan dari Trapesium
Pseudocode Deklarasi:sSejajar1,sSejajar2,t,s1.s2: doubleluas, keliling: realProses :read : sSejajar1,sSejajar2,t,s1.s2Luas = ½(sSejajar1+ sSejajar2) * tKeliling = sSejajar1+ sSejajar2 + s1 +s2return (luas,keliling)
Trace:Input : sSejajar1=2,sSejajar2=2,t=2,s1=2,s2=2Proses : Luas = ½(2+ 2) * 2
Keliling = 2+ 2 + 2 +2Output : “4 ” “8”
f) Jajargenjang Flowchatnya
Gambar 4.6. Flowchat Penghitungan dari Jajargenjang
Pseudocode Deklarasi:a,t,s1,s2: intluas, keliling: realProses :read : a,t,s1,s2Luas = a * tKeliling =2*(s1 + s2)return (luas,keliling)
Trace:Input : a=2,t=2,s1=3,s2=3Proses :
Luas = 2* 2Keliling =2*(3 + 3)Output : “4 ” “12”
g) Belah Ketupat Flowchatnya
Gambar 4.7. Flowchat Penghitungan dari Belah Ketupat
Pseudocode Deklarasi:d1,d2, sisi: intluas, keliling: realProses :read : d1,d2, sisiLuas = ½ * (d1*d2)Keliling = 4*sisireturn (luas,keliling)
Trace:Input : d1=2,d2=2, sisi=4Proses :
Luas = ½ * (2*2)Keliling = 4*4Output : “2 ” “16”
h) Layang-layangFlowchatnya
Gambar 4.8. Flowchat Penghitungan dari Layang-layang
Pseudocode Deklarasi:d1,d2, sisi1, sisi2: intluas, keliling: realProses :read : d1,d2, sisi1, sisi2Luas = ½ * (d1*d2)Keliling = 2* (sisi1 + sisi2)return (luas,keliling)
Trace:Input : d1=2, d2=3, sisi1 =4, sisi2 = 5Proses :
Luas = ½ * (2*3)Keliling = 2*(4+5)Output : “3 ” “18”
i) Bangun datarFlowchatnya
Gambar 4.9. Flowchat dari Bangun Datar
Pseudocode Deklarasipilih=int
Prosesread (pilih)if pilih =1
input sisipanggil kubus(sisi)
else if pilih =2 input p,lpanggil 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 salahend if
Trace:Input : pilih =1;Proses : input : sisi=4Luas = 4*4Keliling = 4*4Output : “16” “16”
b. Program untuk menghitung volume dan luas permukaan bangun ruang yaitua) Kubus
Flowchatnya
Gambar 4.10. Flowchat Penghitungan dari Kubus
Pseudocode Deklarasi:s: intV, Lp: realProses :V =s*s*sLP = 6*s*sprint(V, Lp)
Trace:Input : s =2Proses : V = 2*2*2Lp = 6*2*2Output : “8” “24”
b) Balok Flowchatnya
Gambar 4.11. Flowchat Penghitungan dari Balok
Pseudocode Deklarasi:p,l,t: intV, Lp: realProses :V =p*l*tLp = 2x((pxl)+(pxt)+(lxt))print (V, Lp)
Trace:Input : p = 4, l=2, t=2Proses : V = 4*2*2Lp = 2x((4x2)+(4x2)+(2x2))Output : “16” “38”
c) Bola
Flowchatnya
Gambar 4.12. Flowchat Penghitungan dari Bola
Pseudocode Deklarasi:r: doubleV, Lp: realProses :V =4/3*3.14*r*r*rLp = 4*3.14*r*rprint (V, Lp)
Trace:Input : r = 4Proses : V = 4/3*3.14*4*4*4Lp = 4*3.14*4*4Output : “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 : doubleV, Lp: realProses :s = ½ (a+b+c)La = akar(s*(s-a) * (s-b) * (s-c))V =La*tLp = La+3*(alas*t)print(V, Lp)
Trace:Input : a=2, b=2, c=2, t=2, alas=2Proses : s = ½(2+2+2)La = akar(3*(3-2) * (3-2) * (3-2))V = akar 3*2Lp = 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 : doubleV, Lp: realProses :La = s*sV =La*tLp = La+4*(alas*t)print(V, Lp)
Trace:Input : a=2, b=2, c=2, t=2, s=3Proses : La = 3*3V = 9*2Lp = 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 : doubleV, Lp: realProses :s = ½ (a+b+c)La = akar(s*(s-a) * (s-b) * (s-c))V =La*tLp = La+(a+b+c)*tprint(V, Lp)
Trace:Input : a=2, b=2, c=2, t=2, s=3Proses : s = ½(2+2+2)La = akar(3*(3-2) * (3-2) * (3-2))V = akar 3*2Lp = akar 3 +(2+2+2)*2Output : “3” “13.73”
g) Bangun ruangFlowchatnya
Gambar 4.15. Flowchat Penghitungan dari Bangun Ruang
Pseudocode Deklarasipilih=int
Prosesread (pilih)if pilih =1panggil 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 salahend if
Trace:Input : pilih =1;Proses : Input : s =2
V = 2*2*2Lp = 6*2*2Output : “8” “24”