• Tidak ada hasil yang ditemukan

Pemrograman Struktural TI

N/A
N/A
Protected

Academic year: 2017

Membagikan "Pemrograman Struktural TI"

Copied!
31
0
0

Teks penuh

(1)

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

(2)

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)

(3)

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,

(4)

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

(5)

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 : ";

(6)

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])

(7)

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

}

(8)

//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.

(9)

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;

(10)

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;

(11)

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++)

{

(12)

cout<<endl; }

(13)

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

(14)

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() {

(15)

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 :

(16)

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;

(17)

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

(18)

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

(19)

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;

(20)

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;

(21)

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

(22)

{

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() {

(23)

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;

(24)

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.

(25)

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

(26)

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

(27)

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

(28)

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++)

(29)

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

(30)

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 :

(31)

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

Gambar

Gambar Gambaran array dimensi satu dalam C++
Gambar Memberikan data pada nomor elemen 3
Gambar Gambaran array dimensi 2 dalam C++

Referensi

Dokumen terkait

(pertanyaan dari mahasiswa yang harus dijawab oleh dosen) baik secara lisan atau tertulis untuk memperluas dan memperdalam penguasaan materi perkuliahan tersebut Penutup

Kegiatan pembelajaran remedial dengan pemanfaatan tutor sebayamelalui belajar kelompok untuk menjawab pertanyaan yang diberikan guru terkait materi kondisi geologi

Pengadilan HAM dibentuk berdasarkan Undang-Undang Republik Indonesia Nomor 26 tahun 2000. Pengadilan HAM adalah pengadilan khusus terhadap pelanggaran HAM berat yang

Berdasarkan gambar penampang tersebut terlihat bahwa terdapat dua batas antara lapisan aluvium dan formasi Kabuh, dan juga terlihat adanya fenomena dorongan

Dari keempat penyebab tingkat kerusakan bangunan tersebut, ada dua hal yang bisa diupayakan untuk mengurangi jumlah korban akiba t gempa bumi yaitu meningkatkan

Infomedia Nusantara Divisi Call Center Medan selalu berupaya untuk menjaga kualitas pelayanan dari karyawan yang biasa disebut caroline officer agar selalu dapat

Tugas dari rumah detensi imigrasi ( RUDENIM ) Kota Pekanbaru ialah melaksanakan sebagian tugas pokok dan fungsi Kementerian Hukum dan Hak Asasi Manusia di

Berdasarkan hasil penelitian Christine (2010) penambahan larutan NaCl 2% dan larutan garam dapur Dolphin ® menunjukkan setting time yang lebih singkat dibandingkan dengan tanpa