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.⇛ 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 :
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 :
- Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.
- Parameter aktual adalah variabel yang dipakai dalam pemanggilan fungsi.
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
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 :
Contoh ke-2 Menggunakan fungsi untuk menghitung luas persegi panjang
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 :
Contoh ke-3 Penggunaan fungsi untuk penentuan index nilai mahasiswa
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 >= 65, maka akan menampilkan "B"
Tampilan pada saat nilai n>=55, maka akan menampilkan "C"
Tampilan pada saat nilai n >= 45, maka akan menampilkan "D"
Tampilan pada saat selain nilai yang di-inputkan diatas, maka akan menampilkan "E"
Contoh ke-4 Menghitung luas persegi panjang menggunakan struktur procedure
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 :
Contoh ke-5 Menghitung index nilai mahasiswa menggunakan struktur procedure
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 :
Contoh ke-6
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 :
Tugas
- 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;
} - 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.
Jawaban
1. Program telah diubah menggunakan fungsi dan prosedur.Source code :
2. Menghitung sisi miring segitiga menggunakan prosedur dan fungsi.
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 :
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";
}