29
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: Nama : Putu Rastika Yogi Swara NIM : 1204505053 MODUL II PEMROGRAMAN MODULAR

Tugas Pendahuluan 2

Embed Size (px)

Citation preview

Page 1: Tugas Pendahuluan 2

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

Page 2: Tugas Pendahuluan 2

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.

Page 3: Tugas Pendahuluan 2

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 ;

Page 4: Tugas Pendahuluan 2

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

Page 5: Tugas Pendahuluan 2

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.

Page 6: Tugas Pendahuluan 2

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

Page 7: Tugas Pendahuluan 2

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)

Page 8: Tugas Pendahuluan 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

Page 9: Tugas Pendahuluan 2

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

Page 10: Tugas Pendahuluan 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

Page 11: Tugas Pendahuluan 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 :

Page 12: Tugas Pendahuluan 2

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 :

Page 13: Tugas Pendahuluan 2

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 :

Page 14: Tugas Pendahuluan 2

Luas = ½ * (2*3)Keliling = 2*(4+5)Output : “3 ” “18”

i) Bangun datarFlowchatnya

Page 15: Tugas Pendahuluan 2

Gambar 4.9. Flowchat dari Bangun Datar

Pseudocode Deklarasipilih=int

Page 16: Tugas Pendahuluan 2

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

Page 17: Tugas Pendahuluan 2

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

Page 18: Tugas Pendahuluan 2

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

Page 19: Tugas Pendahuluan 2

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”

Page 20: Tugas Pendahuluan 2

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”

Page 21: Tugas Pendahuluan 2

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”

Page 22: Tugas Pendahuluan 2

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”

Page 23: Tugas Pendahuluan 2

g) Bangun ruangFlowchatnya

Gambar 4.15. Flowchat Penghitungan dari Bangun Ruang

Page 24: Tugas Pendahuluan 2

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”