BAHAN AJAR
PEMROGRAMAN STRUKTURAL
KODE MATA KULIAH :
SEMESTER
: 2
SKS
: 3 SKS
DOSEN PENGAMPU : Eko Riswanto, S.T., M.Cs
PROGRAM STUDI TEKNIK INFORMATIKA
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN ILMU KOMPUTER
EL RAHMA
BAB 1
KONSEP PEMROGRAMAN TERSTRUKTUR
Pemrograman Terstruktur merupakan suatu tindakan untuk membuat program yang berisi
instruksi-instruksi dalam bahasa komputer yang disusun secara logis dan sistematis supaya
mudah dimengerti, mudah dites, dan mudah dimodifikasi.
Pemrograman terstruktur adalah bahasa pemrograman yang mendukung pembuatan program
sebagai kumpulan prosedur. Prosedur-prosedur ini dapat saling memanggil dan dipanggil dari
manapun dalam program dan dapat mengunakan parameter yang berbeda-beda untuk setiap
pemanggilan. Bahasa pemrograman terstruktur adalah pemrograman yang mendukung abstraksi
data, pengkodean terstruktur dan kontrol program terstruktur. Sedangkan Prosedur adalah bagian
dari program untuk melakukan operasi-operasi yang sudah ditentukan dengan menggunakan
parameter tertentu.
Sejarah Metodologi Pemrograman
Pemrograman terstruktur pertama kali diungkapkan oleh Prof Edsger Djikstra dari Universitas
Eindhoven sekitar tahun 1965. Dalam papernya, Djikstra mengusulkan peniadaan perintah
GOTO pada pemrograman terstruktur. Berbeda dengan pendapat HD Millis yang
mengungkapkan bahwa pemrograman terstruktur tidak tergantung pada ada tidaknya GOTO
tetapi lebih pada struktur program itu sendiri. Dari pernyataan keduanya, memberikan gambaran
tidak adanya definisi yang jelas untuk pemrograman terstruktur. Tetapi dapat digaris bawahi
bahwa pemrograman terstruktur merupakan suatu proses untuk mengimplementasikan urutan
langkah untuk menyelesaikan suatu masalah dalam bentuk program.
Alasan Pemrograman Terstruktur ialah
1.
Krisis metode pengembangan
2.
Kemampuan tenaga programmer tertinggal
3.
Sulitnya modifikasi program jika ada kesalahan atau perubahan
4.
Sulitnya modifikasi kode program karena tidak terstruktur dengan baik
Manfaat Pemrograman Terstruktur
1.
Dapat menangani program yang besar dan komplek
2.
Dapat menghindari konflik internal team
3.
Membagi kerja team berdasarkan modul-modul program yang sudah dirancang
4.
kemajuan pengerjaan sistem dapat dimonitor dan dikaji
Ciri – ciri Program Terstruktur (Good Program)
2.
Run efficiently (program menjadi sederhana / tidak rumit)
3.
Be easy to read and understand (mudah dibaca dan ditelusuri)
4.
Be easy to debug (program mudah ditelusuri kesalahannya)
5.
Be easy to modify (program mudah dimodifikasi)
Tujuan dari pemrograman terstruktur adalah
1.
Meningkatkan kehandalan suatu progam,
2.
Program mudah dibaca dan ditelusuri,
3.
Menyederhanakan kerumitan program,
4.
Pemeliharaan program, dan
5.
Peningkatkan produktivitas pemrograman.
Pemrograman terstruktur bercirikan:
1.
mengandung teknik pemecahan yang tepat dan benar,
2.
memiliki algoritma pemecahan masalah yang sederhana, standar dan efektif,
3.
memiliki struktur logika yang benar dan mudah dipahami,
4.
terdiri dari 3 struktur dasar yaitu urutan, seleksi dan perulangan,
5.
menghindari penggunaan GOTO,
6.
biaya pengujian rendah, Source Program penterjemah Machine Languages Komputer dan
Pemrograman
7.
memiliki dokumentasi yang baik,
BAB 2
TIPE ARRAY
Definisi Array
Array adalah tipe data yang dapat menampung sejumlah elemen dengan tipe yang sama.
Pengaksesan elemen array dapat dilakukan dengan menyebutkan nama array dan indeks atau
nomor elemennya. Dalam pemrograman array dapat dibedakan menjadi array berdimensi satu
dan array berdimensi banyak.
Array Berdimensi Satu
Array berdimensi satu adalah array yang memiliki satu tipe indek atau satu nomor subscript.
Pendefinisian Tipe Array
Bentuk :
tipe_data nama_variabel_array[jumlah_elemen_array];
Contoh :
int nilai[5];
didefnisikan sebuah variabel array dengan nama nilai yang mempunyai lima buah elemen.
Penggambaran elemen array :
0 1 2 3 4
Elemen array
Nomor elemen Array Nilai
Gambar Gambaran array dimensi satu dalam C++
Dalam C++ nomor elemen dari array selalu diawali dengan 0 (nol). Penomoran elemen diberikan
secara otomatis oleh C++, sehingga yang kita berikan pada saat pendefinisian array hanya jumlah
elemennya saja.
Operasi Pada Array
nilai[0] = 10;
Memasukkan data 10 pada array nilai nomor elemen 0.
10
0 1 2 3 4
Gambar Memberikan data pada nomor elemen 0 nilai[3] = nilai[0];
memasukkan data pada array nilai nomor elemen 3 dengan data yang ada pada array nilai nomor
10 10
0 1 2 3 4
Gambar Memberikan data pada nomor elemen 3
Untuk menampilkan data :
cout<<nilai[0]; //10
cout<<nilai[3]; //10
Contoh program :
Algoritmik
Pseudocode Input_Data_Array
// Akan dimasukkan 5 data dalam array dan mencetaknya
//DEKLARASI int nilai[5]
//DESKRIPSI {
//membaca data read(nilai[1]) read(nilai[2]) read(nilai[3]) read(nilai[4]) read(nilai[5])
//menampilkan data write(nilai[1]) write(nilai[2]) write(nilai[3]) write(nilai[4]) write(nilai[5]) }
Program 2.1
/*
contoh program array dimensi satu */
#include <iostream.h> #include <conio.h>
void main() {
clrscr(); //menghapus layar int nilai[5];
cout<<"Masukkan lima data nilai"<<endl; cout<<"========================"<<endl; cout<<"Nilai 1 : ";
cout<<"Nilai 4 : "; cin>>nilai[3]; cout<<"Nilai 5 : "; cin>>nilai[4]; cout<<endl;
cout<<"Data nilai yang anda masukkan"<<endl; cout<<"1 2 3 4 5"<<endl; cout<<"============================="<<endl; cout<<nilai[0]<<" ";
cout<<nilai[1]<<" "; cout<<nilai[2]<<" "; cout<<nilai[3]<<" ";
cout<<nilai[4]<<" "<<endl; getch();
}
Hasil eksekusi :
Masukkan lima data nilai ======================== Nilai 1 : 89
Nilai 2 : 90 Nilai 3 : 75 Nilai 4 : 55 Nilai 5 : 95
Data nilai yang anda masukkan 1 2 3 4 5 ============================= 89 90 75 55 95
Dalam pengisian data ke dalam elemen array secara berulang dapat dilakukan dengan for.
Contoh program diatas akan diganti pemasukkan datanya dengan menggunakan for :
Algoritmik
Pseudocode Input_Data_Array_dengan_for
// Akan dimasukkan 5 data dalam array dan mencetaknya
//DEKLARASI int i;
int nilai[5]
//DESKRIPSI {
//membaca data for(i=0;i<5;i++) read(nilai[i])
Program 2.2
/*
contoh program array dimensi satu dengan for */
#include <iostream.h> #include <conio.h>
void main() {
clrscr(); //menghapus layar int nilai[5];
cout<<"Masukkan lima data nilai"<<endl; cout<<"========================"<<endl; for (int i = 0; i < 5; i++)
{
cout<<"Nilai ke "<<(i+1)<<" : "; cin>>nilai[i];
}
cout<<endl;
cout<<"Data nilai yang anda masukkan"<<endl; cout<<"1 2 3 4 5"<<endl; cout<<"============================="<<endl; for (int i = 0; i < 5; i++)
{
cout<<nilai[i]<<" "; }
getch(); }
Contoh program mencari nilai terbesar dan nilai terkecil dari sejumlah data yang dimasukkan
dalam variabel array.
Program 2.3
#include <iostream.h> #include <conio.h>
void main() {
int jum;
int nilai[20];
cout<<"Jumlah data : "; cin>>jum;
for (int i=0;i<jum;i++) {
cout<<"Data ke - "<<(i+1)<<" : "; cin>>nilai[i];
}
//data terkecilk dan data terbesar
int min; min=nilai[0]; int maks;
maks = nilai[0];
for(int i=0;i<jum;i++) {
if (nilai[i] < min) min = nilai[i]; if (nilai[i] > maks) maks = nilai[i]; }
cout<<"Nilai Terkecil : "<<min<<endl; cout<<"Nilai Terbesar : "<<maks<<endl; getch();
}
Hasil Eksekusi :
Jumlah data : 5 Data ke - 1 : 8 Data ke - 2 : 6 Data ke - 3 : 9 Data ke - 4 : 4 Data ke - 5 : 5 Nilai Terkecil : 4 Nilai Terbesar : 9
Array Berdimensi Banyak
Array berdimensi banyak adalah array yang memiliki lebih dari satu tipe indek atau lebih dari
satu nomor subscript, misalnya memiliki dua, tiga dan seterusnya.
Pendefinisian Tipe Array
Dalam C++
Bentuk :
tipe_data nama_variabel_array[jumlah_elemen_baris] [jumlah_elemen_kolom];
Contoh :
int matrik[3][4];
didefnisikan sebuah variabel array dimensi dua dengan nama matrik yang mempunyai 3 elemen
baris dan 4 elemen kolom.
0
2 1
3 2 1 0
Elemen baris
Elemen kolom
Gambar Gambaran array dimensi 2 dalam C++
Operasi Pada Array
matrik[1][2] = 23;
Memasukkan data 23 pada array matrik baris 1 dan kolom 2.
23 0
2 1
3 2 1 0
Gambar Memberikan data pada baris 1, kolom 2
matrik[2][3] = matrik[1][2];
memasukkan data pada array matrik baris 2, kolom 3 dengan data yang ada pada array matrik
baris 1, kolom 2.
23
23 0
2 1
3 2 1 0
Gambar Memberikan data pada baris 2, kolom 3
Untuk menampilkan data :
cout<<matrik[1][2]; //23
cout<<matrik[2][3]; //23
contoh program menghitung penjumlahan dua matrik. Syarat penjumlahan dua matrik adalah
bahwa kedua matrik mempunyai ordo yang sama :
Program 2.4
#include <iostream.h> #include <conio.h> void main()
{
int a[10][10], b[10][10], c[10][10]; int brs,klm;
cout<<"Masukan jumlah Baris : "; cin>>brs;
cout<<"masukan Jumlah kolom : "; cin>>klm;
for(int i=0;i<brs;i++) //input matrik A
{
for(int j=0;j<klm;j++)
{
cout<<" Matrik A["<<i<<"]["<<j<<"] = "; cin>>a[i][j];
cout<<" Matrik B["<<i<<"]["<<j<<"] = "; cin>>b[i][j];
cout<<"Matrik A"<<endl; //menampilkan matrik A for(int i=0;i<brs;i++)
cout<<"\nMatrik B"<<endl; //menampilkan matrik B for(int i=0;i<brs;i++)
cout<<"\nMatrik C hasil penjumlahan"<<endl;
Contoh program menghitung perkalian dua matrik. Syarat perkalian dua matrik adalah bahwa
jumlah baris matrik kedua sama dengan jumlah kolom matrik pertama.
Program 2.5
cin>>klmabrsb;cout<<"Klm matrik b : "; cin>>klmb;
//input matrik A
cout<<"Masukkan matrik A"<<endl; for(int i=0;i<brsa;i++)
for(int j=0;j<klmabrsb;j++) {
cout<<"Matrik A["<<i<<"]["<<j<<"] : "; cin>>a[i][j];
}
cout<<"Masukkan matrik B"<<endl; for(int i=0;i<klmabrsb;i++) for(int j=0;j<klmb;j++) {
cout<<"Matrik B["<<i<<"]["<<j<<"] : "; cin>>b[i][j];
cout<<"\nIsi matrik A"<<endl; for(int i=0;i<brsa;i++)
{
for(int j=0;j<klmabrsb;j++) cout<<a[i][j]<<" "; cout<<endl;
}
cout<<"\nIsi matrik B"<<endl; for(int i=0;i<klmabrsb;i++) {
for(int j=0;j<klmb;j++) cout<<b[i][j]<<" "; cout<<endl;
}
cout<<"\nIsi matrik C"<<endl; for(int i=0;i<brsa;i++)
{
cout<<endl; }
BAB 3
STRING
Konstanta string
Konstanta string ditulis dengan
awalan dan akhiran tanda petik ganda (“), contoh :
“Tes”
“A”
„A‟
konstanta string diatas disimpan dalam memori secara berurutan dengan susunan :
T e s \0
Pada karakter terakhir terdapat karakter NULL (\0) yang berfungsi sebagai pengakhir string.
Variabel string
Variabel string adalah variabel yang digunakan untuk menyimpan data string. Misalnya :
char nama[20];
merupakan pernyataan untuk mendefinisikan variabel string dengan panjang maksimal 20
(termasuk NULL). Pernyataan diatas tidak lain digunakan untuk mendefinisikan array bertipe
karakter.
Memasukkan data dari keyboard
Untuk memasukkan data dari keyboard digunakan cin, tetapi pada cin yang biasa kita gunakan
tidak dapat digunakan untuk membaca spasi. Untuk mengatasinya dapat kita gunakan fungsi
getline().
Program 3.1
#include <iostream.h> #include <conio.h>
void main() {
char nama[20]; char alamat[30];
cout<<"Masukkan nama : "; cin.getline(nama,sizeof(nama)); cout<<"Masukkan alamat : ";
cin.getline(alamat,sizeof(alamat));
cout<<"\nNama anda : "<<nama<<endl; cout<<"Alamat anda : "<<alamat<<endl; getch();
}
Hasil eksekusi :
Masukkan nama : Joko Purnomo
Masukkan alamat : Jl. Kaliurang km 10
Nama anda : Joko Purnomo
Alamat anda : Jl. Kaliurang km 10
Menyalin string
Menyalin string berbeda dengan menyalin bilangan. Dalam c++ untuk menyalin string digunakan
Program 3.2
cin.getline(teks1,sizeof(teks1)); strcpy(teks2,teks1);
cout<<"Isi teks 2 : "<<teks2<<endl; getch();
}
Hasil eksekusi :
Masukkan teks 1 : Tes salin teks Isi teks 2 : Tes salin teks
toupper() dan tolower()
Fungsi toupper() berguna untuk memperoleh huruf kapital dari suatu huruf kecil, sedangkan
tolower() berguna untuk memperoleh huruf kecil dari suatu huruf kapital.
Program 3.3
cout<<"Masukkan huruf kecil : "; cin.getline(teks1,sizeof(teks1)); for(int i=0;i<teks1[i];i++)
teks1[i]=toupper(teks1[i]); cout<<"Isi teks 1 : "<<teks1<<endl; cout<<"MASUKKAN HURUF KAPITAL : "; cin.getline(teks2,sizeof(teks2)); for(int i=0;i<teks2[i];i++)
teks2[i]=tolower(teks2[i]); cout<<"Isi teks 2 : "<<teks2<<endl; getch();
}
Hasil eksekusi :
Masukkan huruf kecil : ngetes Isi teks 1 : NGETES
MASUKKAN HURUF KAPITAL : NYOBA Isi teks 2 : nyoba
Menghitung panjang string dengan strlen()
Contoh program :
Program 3.4
#include <iostream.h> #include <conio.h>
void main() {
getch(); }
Hasil eksekusi : 36
Menggabungkan string dengan strcat()
Program 3.5
#include <iostream.h> #include <conio.h>
void main() {
char teks1[30]= "Belajar C++ memang mudah "; char teks2[30]= "Semudah membalik tank baja"; cout<<strcat(teks1,teks2);
getch(); }
Hasil eksekusi :
BAB 4
F U N G S I
Fungsi adalah sebuah blok pernyataan yang berisi sejumlah pernyataan yang dikemas dalam
sebuah nama yang dapat dipanggil beberapa kali dibeberapa tempat dalam program.
Tujuan pembuatan fungsi :
Memudahkan dalam mengembangkan program, karena program dipecah menjadi
program-program yang lebih kecil.
Menghemat ukuran program, ini akan terasa kalau ada beberapa deretan instruksi yang sama
digunakan pada beberapa tempat didalam program.
Deklarasi/prototipe fungsi
Deklarasi / prototipe sebuah fungsi berupa :
Nama fungsi
Tipe nilai balik fungsi
Jumlah dan tipe argumen
Format deklarasi untuk fungsi yang menghasilkan nilai balik :
Tipe Nama_fungsi(daftar_parameter);
Format deklarasi untuk fungsi yang tidak menghasilkan nilai balik :
void Nama_fungsi(daftar_parameter);
Definisi fungsi
Setiap fungsi yang dipanggil didalam program harus didefinisikan terlebih dahulu yang letaknya
bisa dimana saja. Khusus untuk fungsi yang disediakan oleh sistem, definisi sebenarnya sudah
ada dalam pustaka yang disebut file header.
Fungsi tanpa Nilai Balik
Adakalanya suatu fungsi tidak perlu memiliki nilai balik. Misalnya fungsi yang hanya
dimasudkan untuk menampilkan suatu keterangan saja. Pada fungsi seperti ini, tipe nilai balik
fungsi yang diperlukan adalah void.
Contoh :
void tampilkan_judul () {
cout << “PT. Maju Mundur” << endl; cout << “Jl. Buntu No. 76” << endl; cout << “Yogyakarta” << endl;
pada contoh fungsi diatas, tidak ada pernyataan return, mengingat fungsi tidak memiliki nilai
balik. Namun penggunaan pernyataan return secara eksplisit juga diperkenankan. Dalam hal ini
digunakan berbentuk :
return
Jadi contoh diatas dapat ditulis :
void tampilkan_judul() {
cout << “PT. Maju Mundur” << endl; cout << “Jl. Buntu No. 76” << endl; cout << “Yogyakarta” << endl;
return; }
Program 4.1
#include <iostream.h> #include <conio.h>
//prototipe fungsi void garis();
void tampilkan_judul();
//fungsi utama void main() {
clrscr();
tampilkan_judul(); garis();
getch(); }
//definisi fungsi void garis() {
cout<<"=========================="<<endl; }
void tampilkan_judul () {
cout << "PT. Maju Mundur" << endl; cout << "Jl. Buntu No. 76" << endl; cout << "Yogyakarta" << endl;
return; }
Hasil eksekusi :
PT. Maju Mundur Jl. Buntu No. 76 Yogyakarta
==========================
Argumen fungsi
Argumen fungsi adalah nilai bawaan yang akan disertakan saat pemanggilan fungsi.
Program 4.2
void cetak(int jum);
void cetak(int jum) {
for(int i = 1; i <= jum; i++)
cout<<i<<". Teks ini tercetak 10 kali"<<endl; }
Hasil eksekusi :
1. Teks ini tercetak 10 kali 2. Teks ini tercetak 10 kali 3. Teks ini tercetak 10 kali 4. Teks ini tercetak 10 kali 5. Teks ini tercetak 10 kali 6. Teks ini tercetak 10 kali 7. Teks ini tercetak 10 kali 8. Teks ini tercetak 10 kali 9. Teks ini tercetak 10 kali 10. Teks ini tercetak 10 kali
Pada contoh diatas pada fungsi cetak mempunyai argumen fungsi bernama jum bertipe int. Pada
pemanggilan fungsi cetak harus disertai dengan jumlah argumen yang akan diberikan pada saat
fungsi dipanggil.
cetak(10);
Contoh program yang mengandung fungsi untuk mencetak teks ditengah layar dan mencetak teks
pada koordinat tertentu :
Program 4.3
//prototipe fungsi mencetak pada koordinat tertentu void cetak(int klm, int brs, char *teks);
//prototipe fungsi mencetak pada tengah layar void cetakc(int brs, char *teks);
void main() {
hapus();
cetakc(1,"TULISAN INI TERCETAK DI TENGAH LAYAR"); cetakc(2,"====================================");
cetak(3,4,"Tulisan ini tercetak pada baris 4 kolom 3"); henti();
}
//definisi fungsi
gotoxy(klm,brs);cout<<teks; }
void cetakc(int brs, char *teks) {
gotoxy(40-strlen(teks)/2,brs);cout<<teks; }
Hasil eksekusi :
TULISAN INI TERCETAK DI TENGAH LAYAR ====================================
Tulisan ini tercetak pada baris 4 kolom 3
Lingkup variabel
Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel
yang hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel
yang dapat diakses oleh semua fungsi.
Variabel Otomatis
Variabel yang didefinisikan di dalam suatu fungsi berlaku sebagai variabel lokal bagi fungsi.
Artinya, variabel tersebut hanya dikenal didalam fungsi tempat variabel didefinisikan. Sifat dari
variabel otomatis adalah :
Variabel akan diciptakan pada saat fungsi dipanggil dan variabel akan sirna pada saat
fungsi berakhir.
Variabel hanya dikenal pada fungsi yang mendefinisikan.
Inisialisasi oleh pemrogram akan dikerjakan setiap kali fungsi dipanggil
Program 4.4
#include <iostream.h> #include <conio.h>
void coba(); // Prototipe fungsi void main()
{
int x = 22; // Variabel lokal pada main() double y = 2.22;
clrscr();
cout << "Pada fungsi main() : x = " << x << " y = " << y << endl;
coba(); // Panggil fungsi alpha cout << "Pada fungsi main() : x = " << x << " y = " << y << endl;
getch(); }
// Definisi fungsi alpha()
void coba() {
int x = 20; // Variabel lokal pada coba() double y = 3.14;
cout << "Pada fungsi coba() : x = " << x << " y = " << y << endl;
Hasil ekseskusi :
Pada main() : x = 22 y = 2.22 Pada coba() : x = 20 y = 3.14 Pada main() : x = 22 y = 2.22
Variabel Eksternal
Variabel eksternal adalah variabel yang didefinisikan diluar fungsi manapun. Variabel ini dikenal
juga sebagai variabel global, sebab variabel ini dikenal disemua fungsi.
Program 4.5
// Definisi fungsi void tambah () {
nilai ++ ; // Variabel eksternal dinaikkan }
Hasil eksekusi :
50
// Definisi fungsi void tambah () {
extern nilai;
Variabel Statis
Variabel eksternal maupun otomatis dapat berkedudukan sebagai variabel statis. Suatu variabel
statis mempunyai sifat :
-
Jika variabel lokal berdiri sebagai variabel statis, maka :
-
Variabel tetap hanya dapat diakses pada fungsi yang mendefinisikannya
-
Variabel tidak hilang saat eksekusi fungsi berakhir
-
Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program dijalankan.
-
Jika variabel eksternal dijadikan sebagai variabel statis,variabel ini dapat diakses oleh semua
file yang didefinisikan pada file yang sama dengan variabel eksternal tersebut.
Program 4.7
#include <iostream.h> #include <conio.h>
void saya_ingat(); // Prototipe fungsi void main()
{
int mana = 50; clrscr(); saya_ingat(); saya_ingat(); saya_ingat();
cout << " main() : mana = " << mana << endl; getch();
}
// Pada fungsi berikut
// mana didefinisikan sebagai variabel statis void saya_ingat()
{
static int mana = 77; // variabel statis mana ++; // Naikkan sebesar 1
cout << " Saya_ingat () : mana = " << mana << endl; }
Hasil eksekusi :
Saya_ingat () : mana = 78 Saya_ingat () : mana = 79 Saya_ingat () : mana = 80 main() : mana = 50
Fungsi Dengan Nilai Balik
Adalah fungsi yang memberikan nilai balik ke pemanggil fungsi.
Contoh :
// Prototipe funsi
long kuadrat (long l);
---
// Definisi fungsi
{
return(l * l);
}
Pernyataan return di dalam fungsi digunakan untuk memberikan nilai balik fungsi. Pada contoh
diatas, fungsi kuadrat() memberikan nilai balik berupa nilai kuadrat dari argumen.
Program 4.8
#include <iostream.h> #include <iomanip.h> #include <conio.h>
long kuadrat(long l); // prototipe fungsi
void main()
// Definisi fungsi
long kuadrat(long l) {
return( l * l ); }
Hasil eksekusi :
200 40000
Contoh program yang mengandung fungsi tanpa nilai balik dan fungsi dengan nilai balik :
Program 4.9
char huruf(float rat);
void cetak(int a, int b, char *tek) {
gotoxy(b,a);cout<<tek; }
void cetakc(int a, char *teks) {
gotoxy(40-((strlen(teks)/2)),a);cout<<teks; }
void main() {
isi(); getch(); }
void judul() {
cetakc(1,"DAFTAR NILAI");
cetakc(2,"PRODI TEKNIK INFORMATIKA");
cetak(4,4,"=================================================================
cetak(5,66,"NILAI HRF"); cetak(5,76,"|");
int nim,uts,uas,tugas,tot; char nama[15],maxnm[15],minnm[15]; float rata, maxnil,minnil,ratkelas,totrat;
jawab=tanya();
gotoxy(4,8+i);cout<<"Jumlah data : "<<i;
gotoxy(4,9+i);cout<<"Rata kelas : "<<ratkelas; gotoxy(4,10+i);cout<<"Nilai tertinggi : "<<maxnil; gotoxy(30,10+i);cout<<"Nama : "<<maxnm;
gotoxy(4,11+i);cout<<"Nilai terendah : "<<minnil; gotoxy(30,11+i);cout<<"Nama : "<<minnm;
}
cetak(3,20,"Input data lagi[Y/T]? : "); cin>>jw;
gotoxy(20,3);clreol(); return(jw);
}
char huruf(float rat) {
if (rat>80)
return('A'); else if (rat>70)
return('B'); else if (rat>60)
return('C'); else if (rat>50)
return('D'); else
return('E'); }
Operator Resolusi Lingkup
Pada C++ terdapat operator dua buah tanda titik dua ( :: ). Operator ini disebut operator resolusi
lingkup (scope resolution). Kegunaanya untuk mengakses variabel yang didefinisikan diluar
suatu fungsi.
5.6789 50 5.6789 77
Referensi
Referensi digunakan untuk memberikan nama alias dari variabel. Bentuk pendeklarasiannya :
int &ref = nama_variable ;
Tanda & mengawali nama referensi.
Setelah pendeklarasian seperti diatas, ref menjadi nama alias dari nama_variabel. Penggubahan
nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri atau melalui
referensi ref, sebagaimana dapat dilihat pada contoh dibawah ini.
Program 4.11
#include <iostream.h> #include <conio.h> void main()
{
int i ;
int &r = i; // Deklarasi referensi clrscr();
i =10;
cout << "i = " << i << endl; cout << "r = " << r << endl; r = 55;
cout << "i = " << i << endl; cout << "r = " << r << endl; getch();
}
Hasil eksekusi :
i = 10 r = 10 i = 10 r = 55
Tampak bahwa pengubahan nilai terhadap i maupun r memberikan efek sama.
Operator juga bekerja pada suatu variabel maupun referensinya dengan efek yang sama.
Program 4.12
#include <iostream.h> #include <conio.h> void main()
{
int i = 55;
int &r = i; // Referensi clrscr();
cout << "i = " << i << " r = " << r <<endl; i ++ ;
cout << "i = " << i << " r = " << r << endl; getch();
}
Hasil eksekusi :
i = 55 r = 55 i = 56 r = 56 i = 57 r = 57
Operator ++ pada i maupun r akan mengubah nilai keduanya, karena i dan r menyiratkan
memori yang sama.
Dalam fungsi pengiriman argumen dapat bersifat berdasar nilai dan berdasar referensi.
Pengiriman argumen berdasarkan nilai yaitu argumen yang dikirimkan dimaksudkan tidak untuk
diubah sekembalinya dari pemanggilan fungsi. Sedangkan pengiriman argumen berdasar
referensi yaitu argumen yang dikirimkan dimaksudkan untuk diubah sekembalinya dari
pemanggilan fungsi.
Program 4.13
#include <iostream.h> #include <conio.h>
void tukar(int a, int b);
void main() {
int nil1,nil2; cout<<"Nilai 1 : "; cin>>nil1;
cout<<"Nilai 2 : "; cin>>nil2;
cout<<"Nilai 1 sebelum tukar : "<<nil1<<endl; cout<<"Nilai 2 sebelum tukar : "<<nil2<<endl;
tukar(nil1,nil2);
cout<<"Nilai 1 sesudah tukar : "<<nil1<<endl; cout<<"Nilai 2 sesudah tukar : "<<nil2<<endl; getch();
}
void tukar(int a, int b) {
int tmp; tmp = a; a = b; b = tmp;
cout<<"Nilai 1 dalam tukar : "<<a<<endl; cout<<"Nilai 2 dalam tukar : "<<b<<endl; }
Hasil eksekusi :
Nilai 1 : 10 Nilai 2 : 20
Nilai 1 dalam tukar : 20 Nilai 2 dalam tukar : 10 Nilai 1 sesudah tukar : 10 Nilai 2 sesudah tukar : 20
Pada contoh diatas fungsi tukar memiliki dua argumen fungsi yang pengirimannya berdasar nilai
karena sekembali dari pemanggilan fungsi argumen yang dikirimkan nilainya tetap. Sehingga
fungsi tukar diatas tidak menghasilkan nilai sesuai dengan yang diharapkan yaitu menukar kedua
nilai yang dikirimkan. Untuk mengatasi permasalahan diatas maka argumen pada fungsi tukar
dikirimkan secara referensi :
Program 4.14
#include <iostream.h> #include <conio.h>
void tukar(int &a, int &b);
void main() {
int nil1,nil2; cout<<"Nilai 1 : "; cin>>nil1;
cout<<"Nilai 2 : "; cin>>nil2;
cout<<"Nilai 1 sebelum tukar : "<<nil1<<endl; cout<<"Nilai 2 sebelum tukar : "<<nil2<<endl;
tukar(nil1,nil2);
cout<<"Nilai 1 sesudah tukar : "<<nil1<<endl; cout<<"Nilai 2 sesudah tukar : "<<nil2<<endl; getch();
}
void tukar(int &a, int &b) {
int tmp; tmp = a; a = b; b = tmp;
cout<<"Nilai 1 dalam tukar : "<<a<<endl; cout<<"Nilai 2 dalam tukar : "<<b<<endl; }
Hasil eksekusi : Nilai 1 : 10 Nilai 2 : 20
Nilai 1 sebelum tukar : 10 Nilai 2 sebelum tukar : 20 Nilai 1 dalam tukar : 20 Nilai 2 dalam tukar : 10 Nilai 1 sesudah tukar : 20 Nilai 2 sesudah tukar : 10
Array sebagai argumen fungsi
Program 4.15
#include <iostream.h> #include <conio.h>
const int brs = 10; const int klm = 10;
void jumlah(int a[brs][klm],int b[brs][klm],int c[brs][klm], int jbr, int jkl);
void main() {
int mat_a[brs][klm], mat_b[brs][klm], mat_c[brs][klm]; int br,kl;
clrscr();
cout<<"Masukan jumlah Baris : "; cin>>br;
cout<<"masukan Jumlah kolom : "; cin>>kl;
for(int i=0;i<br;i++) //input matrik A
{
for(int j=0;j<kl;j++)
{
cout<<" Matrik A["<<i<<"]["<<j<<"] = "; cin>>mat_a[i][j];
cout<<" Matrik B["<<i<<"]["<<j<<"] = "; cin>>mat_b[i][j];
} }
jumlah(mat_a,mat_b,mat_c,br,kl);
clrscr();
cout<<"Matrik A"<<endl; //menampilkan matrik A for(int i=0;i<br;i++)
cout<<"\nMatrik B"<<endl; //menampilkan matrik B for(int i=0;i<br;i++)
void jumlah(int a[brs][klm],int b[brs][klm],int c[brs][klm],int jbr, int jkl)
{
for(int i=0;i<jbr;i++)
{
for(int j=0;j<jkl;j++)
{
c[i][j]=a[i][j]+b[i][j]; }
} }
Inline Function
Inline function dengan cukup menyisipkan kata-kata inline didepan tipe nilai balik fungsi dalam
pendefinisian fungsi. Contoh :
inline int jumlah (int x, int y)
{
return(x + y);
}
inline function disarankan dipakai pada fungsi yang sering dipanggil dan ukurannya kecil (terdiri
satu atau dua pernyataan), terutama jika dilibatkan pada pernyataan pengulangan proses (while,
for dan do-while). Misalnya pada bentuk seperti berikut :
for (int i = 1; i < 100; i++)
cout << i << “.” << jumlah (i, 2 * i) << endl;
jika fungsi jumlah() tidak ditulis sebagai inline function, proses tersebut akan menjadi relatif
lambat.
Program 4.16
#include <iostream.h> #include <conio.h>
// Definisi fungsi sebagai inline inline int jumlah(int x, int y) {
return(x + y ); }
void main() {
clrscr();
for (int i = 1; i < 100; i ++ )
cout << i << " . " << jumlah(i, 2 * i) << endl; getch();
}
Function Overloading
Function Overloading atau Overloading terhadap fungsi memungkinkan sebuah fungsi dapat
Program 4.17
#include <iostream.h> #include <conio.h> // Prototipe fungsi int kuadrat (int i); long kuadrat(long l); double kuadrat(double d); void main()
{
cout << kuadrat(2) << endl; cout << kuadrat(66666) << endl; cout << kuadrat(1.2) << endl; getch();
}
// Definisi fungsi int kuadrat (int i) {
return(i * i); }
long kuadrat (long l) {
return(l * l); }
double kuadrat (double d) {
return(d * d); }
Hasil eksekusi :
4
149388260 1.44
Rekursi
Fungsi dalam C++ dapat dipakai secara rekursi, artinya suatu fungsi dapat memanggil fungsi
yang merupakan dirinya sendiri. Penerapan rekursi diantaranya untuk menghitung nilai :
Xn
Dengan n merupakan bilangan bulat positif. Solusi dari persoalan ini berupa :
getch(); }
long int pangkat(int x, int n) {
if (n == 1 ) return(x); else
return(x * pangkat(x, n - 1)); }
Hasil elsekusi :
Menghitung x ^ y x = 3