Pemrograman Modular C++ Disertai Contoh, Tugas dan Jawaban - TeachMeSoft

Pemrograman Modular C++ Disertai Contoh, Tugas dan Jawaban

Pemrograman Modular C++ Disertai Contoh, Tugas dan Jawaban


Materi

Pemrograman modular menggunakan perancangan program menyerdehanakan persoalan didalam program dengan memecah atau membagi persoalan tersebut menjadi sub-sub persoalan yang lebih kecil agar mudah diselesaikan. Secara umum dikenal dua cara yang dapat digunakan untuk memecahkan persoalan dalam modul-modul, yaitu dengan menggunakna struktur fungsi dan prosedur.

struktur fungsi dan prosedur

⇛ Programmer-Defined Function
Adalah function yang dibuat oleh programer sendiri. Fuction ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan untuk penggunaannya.

⇛ Struktur Function
1. Function Prototype
Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :
  • Tipe keluaran fungsi
  • Jumlah parameter
  • Tipe dari masing-masing parameter

Salah satu keuntungan pemakaian prototipe, kompiler akan melakukan konversi antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama atau akan menunjukkan kesalahan jika jumlah parameter dalam definisi dan saat pemanggilan berbeda.
Contoh prototipe fungsi :
Contoh prototipe fungsi


long kuadrat (long 1);
Pada contoh pertama, fungsi kuadrat ( ) mempunyai argumen/parameter bertipe long dan nilai balik bertipe long.

void gratis ( );
pada contoh kedua , fungsi gratis ( ) tidak memiliki argumen/ parameter dan nilai
baiknya tidak ada (void).

double maks (double x, double y)
Pada contoh ketiga, fungsi maks( ) mempunyai dua buah argumen/parameter, dengan masing-masing argumen bertipe double.

Function Definition
tipe_data nama_fungsi (argument 1, argument 2, argument ...)
{
  Variabel_lokal;
  Statement_1;
  Statement_2;
  . . .
  return (variabel);
}

2. Parameter Fungsi
Terdapat dua macam parameter fungsi, yaitu :
  1. Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.
  2. Parameter aktual adalah variabel yang dipakai dalam pemanggilan fungsi.

Bentuk penulisan parameter formal dan parameter aktual.
Bentuk penulisan parameter formal dan parameter aktual

Prosedur
Prosedur adalah sederetan instruksi yang diberi nama, dan melakukan tujuan tertentu. Seperti halnya pada fungsi, prosedur bekerja dengan mekanisme pemanggilan-pengembalian (call-return mechanism).

Struktur umum deklarasi prosedur adalah sebagai berikut :
void nama_procedure (<daftar_parameter_input>, <daftar_parameter_output>)
{
    /* instruksi */
}

Untuk penulisan parameter input-output dengan menambahkan karakter "&" pada tipe datanya. Misalnya int & n.

⇛ Variabel Lokal dan Variabel Global
Variabel Lokal
Variabel lokal adalah variabel yang dideklarasikan didalam fungsi atau procedur. Variabel ini hanya dapat dikenali didalam fungsi atau procedure itu sendiri. Variabel lokal tidak dapat dipanggil, diakses dan diubah oleh prosedur atau fungsi yang lain, bahkan oleh program utama sekalipun.

Variabel Global
Variabel global adalah variabel yang didefinisikan dalam program utama dan dapat digunakan di program utama maupun sub-sub program lainya. Nilai dari variabel ini dapat dipanggil, diakses dan diubah oleh prosedur atau fungsi apapun yang terdapat dalam  program tersebut.



Contoh Program


Contoh ke-1 Menghitung luas segitiga
Diketahui algoritma menghitung luas segitiga sebagai berikut.
1. Mulai
2. Masukan panjang (p), tinggi (t)
3. Hitung luas (L) ⇦ 0.5 p*t
4. Tampilkan L
5. Selesai

Implementasi program untuk menghitung luas persegi tanpa menggunakan fungsi berikut ini :
Source Code :
#include <iostream>

using namespace std;

main (){
int p,t; //Variabel lokal
int luas; //Variabel lokal

cout<<"==========================================="<<endl;
cout<<"| |"<<endl;
cout<<"| MENCARI LUAS SEGITIGA |"<<endl;
cout<<"| |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Panjang : ";cin>>p;
cout<<"Masukan Tinggi : ";cin>>t;

//Melakukan perhitungan
luas=0.5*p*t;

//Menampilkan hasil perhitungan
cout<<"==========================================="<<endl;
cout<<"| Jadi, Luas Segitiga Adalah : "<<luas<<endl;
cout<<"==========================================="<<endl;
}
Run program :
Latihan 1. Menghitung Luas Segitiga


Contoh ke-2 Menggunakan fungsi untuk menghitung luas persegi panjang
Diketahui algoritma fungsi hitung luas persegi sebagai berikut.
1. Mulai
2. Hitung luas (L) ⇦ p*l
3. Tampilkan L
4. Selesai

Algoritma pemanggilan fungsi hitLuas
1. Mulai
2. Masukkan panjang (p), lebar (l)
3. Panggil hitungLuas
4. Tampilkan L
5. Selesai

Implementasi program untuk menghitung luas persegi menggunakan fungsi
Source Code :
#include <iostream>

using namespace std;

int hitungLuas(int p, int l){
int luas; //Variabel lokal
luas = p*l; //melakukan perhitungan
return luas;

}

main (){
int pj,lb;
int luasUtama;

cout<<"==========================================="<<endl;
cout<<"| |"<<endl;
cout<<"| MENCARI LUAS PERSEGI PANJANG |"<<endl;
cout<<"| |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Panjang : ";cin>>pj;
cout<<"Masukan Lebar : ";cin>>lb;

luasUtama=hitungLuas(pj, lb);

//Menampilkan hasil perhitungan
cout<<"==========================================="<<endl;
cout<<"| Jadi, Luas Segitiga Adalah : "<<luasUtama<<endl;
cout<<"==========================================="<<endl;
}
Run program :
Latihan 2. Menggunakan fungsi untuk menghitung luas persegi panjang


Contoh ke-3 Penggunaan fungsi untuk penentuan index nilai mahasiswa
Contoh yang lain untuk penggunaan fungsi adalah penentuan index nilai mahasiswa dimana inputannya adalah nilai dengan skala 0 - 100 dan menghasilkan index A, B, C, D dan E, dengan algoritma fungsi getIndex sebagai berikut.
1. Mulai
2. Masukan nilai (n)
3. Cek jika n >= 75 maka nilai huruf (inx) ⇦ A jika tidak, cek jika n> = 65 maka nilai huruf (inx) B jika tidak, cek jika n >= 55 maka nilai huruf (inx) C jika tidak, cek jika n >= 45 maka nilai huruf (inx) D jika tidak , nilai huruf (inx) E
4. Selesai

Algoritma pemanggilan fungsi getIndex
1. Mulai
2. Masukan nilai
3. Panggil getIndex
4. Tampilkan nilai_indek
5. Selesai

Implementasi program
Source Code :
#include <iostream>

using namespace std;

string getIndex(int n){
string inx; //Variabel lokal

if (n>=75) inx="A";
else if (n>=65) inx="B";
else if (n>=55) inx="C";
else if (n>=45) inx="D";
else inx="E";

return inx;
}

main (){
int nilai;

cout<<"==========================================="<<endl;
cout<<"| |"<<endl;
cout<<"| MENENTUKAN INDEKS NILAI MAHASISWA |"<<endl;
cout<<"| |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Nilai Mahasiswa : ";cin>>nilai;

cout<<"==========================================="<<endl;
cout<<"| Index Nilai Mahasiswa Adalah : "<<getIndex(nilai)<<endl;
cout<<"==========================================="<<endl;
}

Run program :
Tampilan pada saat nilai  n >= 75, maka akan menampilkan "A"
Tampilan pada saat nilai  n >= 75, maka akan menampilkan "A"

Tampilan pada saat nilai  n >= 65, maka akan menampilkan "B"
Tampilan pada saat nilai  n >= 65, maka akan menampilkan "B"

Tampilan pada saat nilai  n>=55, maka akan menampilkan "C"
Tampilan pada saat nilai  n>=55, maka akan menampilkan "C"

Tampilan pada saat nilai  n >= 45, maka akan menampilkan "D"
Tampilan pada saat nilai  n >= 45, maka akan menampilkan "D"

Tampilan pada saat selain nilai yang di-inputkan diatas, maka akan menampilkan "E"
Tampilan pada saat selain nilai yang di-inputkan diatas, maka akan menampilkan "E"


Contoh ke-4 Menghitung luas persegi panjang menggunakan struktur procedure
Kembali pada contoh sebelumnya (menghitung luas persegi panjang), kita juga dapat mengubahnya menjadi procedure dengan algoritma yang sama pada latihan 2, seperti pada contoh dibawah ini:
Source Code :
#include <iostream>

using namespace std;

void hitungLuas(int p, int l, int& luas){
luas=p*l;

}

main (){
int pj, lb; //Variabel lokal
int luasUtama; //Variabel lokal

cout<<"==========================================="<<endl;
cout<<"| |"<<endl;
cout<<"| LUAS PERSEGI PANJANG (PROCEDURE) |"<<endl;
cout<<"| |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Panjang: ";cin>>pj;
cout<<"Masukan Lebar : ";cin>>lb;

hitungLuas(pj, lb, luasUtama);

cout<<"==========================================="<<endl;
cout<<"| Luas Persegi Panjang Adalah : "<<luasUtama<<endl;
cout<<"==========================================="<<endl;
}
Run program :
Latihan 4. Menghitung luas persegi panjang menggunakan procedure


Contoh ke-5 Menghitung index nilai mahasiswa menggunakan struktur procedure
Selanjutnya kita akan mengubah kode pada contoh fungsi untuk menghitung index nilai mahasiswa diatas menjadi struktur procedure dengan bentuk algoritma yang sama pada latihan 3 seperti berikut :
Source Code :
#include <iostream>

using namespace std;

string inx; //Variabel global

string getIndex(int n){

if (n>=75) inx="A";
else if (n>=65) inx="B";
else if (n>=55) inx="C";
else if (n>=45) inx="D";
else inx="E";
}

main (){
int nilai;

cout<<"==========================================="<<endl;
cout<<"| |"<<endl;
cout<<"| INDEKS NILAI MAHASISWA (PROCEDURE) |"<<endl;
cout<<"| |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Nilai Mahasiswa : ";cin>>nilai;

getIndex(nilai);

cout<<"==========================================="<<endl;
cout<<"| Index Nilai Mahasiswa Adalah : "<<inx<<endl;
cout<<"==========================================="<<endl;
}


Run program :
Latihan 5. Menghitung index nilai mahasiswa menggunakan struktur procedure


Contoh ke-6
Algoritma memanfaatkan unit.
1. Mulai
2. Panggil file unit1.h yang mempunyai 2 fungsi yaitu luasPersegi dan luasLingkaran
3. Masukkan lebar (l), panjang (p)
4. Panggil luasPersegi
5. Tampilkan luasPersegi
6. Masukkan jari-jari (r)
7. Pangggil luasLingkaran
8. Tampilkan luasLingkaran
9. Selesai

Isi file dengan nama uni1.h dengan kode sebagai berikut :
Source Code :
#include <iostream>
#define Phi 3.14

using namespace std;

void luasPersegi (int p, int l, int& luas){
luas=p*l;
}

float luasLingkaran(int r){
float ls;
ls=Phi*r*r;
return ls;
}

Selanjutnya buat program utama dengan nama prog-6.cpp dengan kode sebagai berikut :
Source Code :
#include <D:\Teachmeelectro.com\C++\Genap\1. Pemgrograman Modular\Latihan\Latihan6\unit1.h>

main(){
int pj,lb, jari; //Variabel lokal
int luasP; //Variabel lokal
float luasL;

cout<<"==========================================="<<endl;
cout<<"| LUAS PERSEGI PANJANG |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Panjang : ";cin>>pj;
cout<<"Masukan Lebar : ";cin>>lb;

luasPersegi(pj, lb, luasP);

cout<<"==========================================="<<endl;
cout<<"| Luas Persegi Panjang Adalah : "<<luasP<<endl;
cout<<"==========================================="<<endl<<endl<<endl;



cout<<"==========================================="<<endl;
cout<<"| LUAS LINGKARAN |"<<endl;
cout<<"==========================================="<<endl;
cout<<"Masukan Jari-jari Lingkaran : ";cin>>jari;

luasL=luasLingkaran(jari);

cout<<"==========================================="<<endl;
cout<<"| Luas Lingkaran Adalah : "<<luasL<<endl;
cout<<"==========================================="<<endl<<endl<<endl;

}

Run program :
Latihan 6



Tugas

  1. Ubahlah program dibawah ini menggunkna fungsi dan prosedur.
    #include <iostream>

    using namespace std;

    main(){
    int jari;
    long int luas;
    double phi=3.14;

    cout<<"Masukkan jari-jari : ";cin>>jari;

    luas=phi*jari*jari;

    cout<<endl;
    cout<<"Luas LIngkaran adalah : "<<luas;
    }
  2. Buatlah algoritma dan program yang mengandung fungsi untuk menghitung sisi miring dari suatu segitiga siku-siku, menggunakan fungsi dan prosedur. Masukan dari program ini adalah panjang sisi bagian A dan Panjang sisi bagian B. Panjang sisi bagian C adalah akar dari kuadrat panjang sisi A ditambah dengan kuadrat panjang sisi bagian B. Teori ini dikenal dengan theorema phytagoras yang juga dapat diaplikasikan untuk menghitung tinggi suatu gedung.
    theorema phytagoras  C++




Jawaban

1. Program telah diubah menggunakan fungsi dan prosedur.
Source code :
#include <iostream>
#define phi 3.14

using namespace std;

double j; //Variabel Global

//Procedure
void input(){
cout<<"Masukan nilai jari-jari: ";cin>>j;
cout<<"---------------------------------------------\n";
}

//Function
double luasLingkaran(){
double luas; //Variable Lokal
luas=phi*j*j; //Melakukan Proses Perhitungan
return luas; //Mengembalikan nilai
}

main(){
cout<<"=============================================\n";
cout<<"|| ||\n";
cout<<"|| MENGHITUNG LUAS LINGKARAN ||\n";
cout<<"|| ||\n";
cout<<"|| Procedure & Function ||\n";
cout<<"=============================================\n";
input(); //Memanggil Procedure

//Menampilkan hasil dan memanggil fungsi
cout<<"Luas Lingkaran Adalah : "<<luasLingkaran();cout<<endl;
cout<<"---------------------------------------------\n";
}


Run program :
Menghitung Luas LIngkaran dengan prosedur dan Fungsi


2. Menghitung sisi miring segitiga menggunakan prosedur dan fungsi.
Source code :
#include <iostream>
#include <math.h>

using namespace std;

int A,B; //Variabel Global

//procedure
void input(){
//Meng-input nilai
cout<<"Masukan Panjang Sisi A : ";cin>>A;
cout<<"Masukan Panjang Sisi B : ";cin>>B;
cout<<"---------------------------------------------\n";
}

//Function
double SisiMiring(){
double sisi_miring; //Variable Lokal
sisi_miring=sqrt((A*A)+(B*B)); //Melakukan perhitungna
return sisi_miring;
}

main(){
cout<<"=============================================\n";
cout<<"|| ||\n";
cout<<"|| ||\n";
cout<<"|| MENGHITUNG SISI MIRING ||\n";
cout<<"|| SEGITIGA SIKU-SIKU ||\n";
cout<<"|| ||\n";
cout<<"|| Procedure & Function ||\n";
cout<<"=============================================\n";
double hasil; //Variabel Lokal
input(); //Memanggil Procedure
hasil = SisiMiring(); //Memanggil Fungsi

//Menampilkan hasil ke layar
cout<<"Jadi sisi miring (C) : "<<hasil<<endl;
cout<<"---------------------------------------------\n";
}


Run program :
Menghitung sisi miring segitiga menggunakan prosedur dan fungsi.







Disqus comments