Bahan Ajar Pemrograman Sistem use C++

43
1 TIPE ARRAY DEFINISI ARRAY DEFINISI ARRAY DEFINISI 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 ARRAY BERDIMENSI SATU ARRAY BERDIMENSI SATU Array berdimensi satu adalah array yang memiliki satu tipe indek atau satu nomor subscript. Pendefinisian Tipe Array Dalam C++ 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 : 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. 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 elemen 0. Gambar Memberikan data pada nomor elemen 3 Untuk menampilkan data : cout<<nilai[0]; //10

Transcript of Bahan Ajar Pemrograman Sistem use C++

Page 1: Bahan Ajar Pemrograman Sistem use C++

1

TIPE ARRAY

DEFINISI ARRAYDEFINISI ARRAYDEFINISI ARRAYDEFINISI 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 SATUARRAY BERDIMENSI SATUARRAY BERDIMENSI SATUARRAY BERDIMENSI SATU

Array berdimensi satu adalah array yang memiliki satu tipe indek atau satu nomor subscript.

Pendefinisian Tipe Array

Dalam C++

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 :

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.

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 elemen 0.

Gambar Memberikan data pada nomor elemen 3

Untuk menampilkan data :

cout<<nilai[0]; //10

Page 2: Bahan Ajar Pemrograman Sistem use C++

2

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

/* 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 : "; cin>>nilai[0]; cout<<"Nilai 2 : "; cin>>nilai[1]; cout<<"Nilai 3 : "; cin>>nilai[2]; 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(); }

Page 3: Bahan Ajar Pemrograman Sistem use C++

3

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]) //menampilkan data for(i=0;i<5;i++) write(nilai[3]) }

Program

/* 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;

Page 4: Bahan Ajar Pemrograman Sistem use C++

4

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.

#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]; } //nilai pertama array dianggap sebagai //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

Page 5: Bahan Ajar Pemrograman Sistem use C++

5

ARRAY BERDIMENSI BANYAKARRAY BERDIMENSI BANYAKARRAY BERDIMENSI BANYAKARRAY 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.

Penggambaran elemen array :

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.

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.

Gambar Memberikan data pada baris 2, kolom 3

Untuk menampilkan data :

cout<<matrik[1][2]; //23

cout<<matrik[2][3]; //23

Page 6: Bahan Ajar Pemrograman Sistem use C++

6

contoh program menghitung penjumlahan dua matrik. Syarat penjumlahan dua matrik adalah bahwa kedua matrik mempunyai ordo yang sama :

#include <iostream.h> #include <conio.h> void main() { int a[10][10], b[10][10], c[10][10]; int brs,klm; clrscr(); 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]; } } for(int i=0;i<brs;i++) //input matrik B { for(int j=0;j<klm;j++) { cout<<" Matrik B["<<i<<"]["<<j<<"] = "; cin>>b[i][j]; } } for(int i=0;i<brs;i++) //menjumlahkan matrik A dengan B { for(int j=0;j<klm;j++) { c[i][j]=a[i][j]+b[i][j]; } } clrscr(); cout<<"Matrik A"<<endl; //menampilkan matrik A for(int i=0;i<brs;i++) { for(int j=0;j<klm;j++) { cout<<a[i][j]<<" "; } cout<<endl; } cout<<"\nMatrik B"<<endl; //menampilkan matrik B for(int i=0;i<brs;i++) { for(int j=0;j<klm;j++) { cout<<b[i][j]<<" "; } cout<<endl; } cout<<"\nMatrik C hasil penjumlahan"<<endl; for(int i=0;i<brs;i++) //menampilkan matrik C { for(int j=0;j<klm;j++) { cout<<c[i][j]<<" "; } cout<<endl; } getch();

Page 7: Bahan Ajar Pemrograman Sistem use C++

7

}

Contoh program menghitung perkalian dua matrik. Syarat perkalian dua matrik adalah bahwa jumlah baris matrik kedua sama dengan jumlah kolom matrik pertama.

#include <iostream.h>

#include <conio.h>

void main()

{

int a[20][20], b[20][20], c[20][20];

int brsa, klmabrsb, klmb;

cout<<"Baris matrik a : ";

cin>>brsa;

cout<<"Klm mtrik a Brs b : ";

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

}

//perkalian dua matrik

for(int i=0;i<brsa;i++)

for(int j=0;j<klmb;j++)

{

c[i][j]=0;

for(int k=0;k<klmabrsb;k++)

c[i][j]=c[i][j]+a[i][k]*b[k][j];

}

clrscr();

Page 8: Bahan Ajar Pemrograman Sistem use C++

8

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

{

for(int j=0;j<klmb;j++)

cout<<c[i][j]<<" ";

cout<<endl;

}

getch();

}

Page 9: Bahan Ajar Pemrograman Sistem use C++

9

STRING

Konstanta string

Konstanta string ditulis dengan awalan dan akhiran tanda petik ganda (“), contoh :

“Tes”

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

Contoh program :

#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

Page 10: Bahan Ajar Pemrograman Sistem use C++

10

Menyalin string

Menyalin string berbeda dengan menyalin bilangan. Dalam c++ untuk menyalin string digunakan fungsi strcpy().

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

char teks1[20];

char teks2[30];

cout<<"Masukkan teks 1 : ";

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.

Contoh :

#include <iostream.h>

#include <conio.h>

#include <ctype.h>

void main()

{

char teks1[20];

char teks2[30];

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

Page 11: Bahan Ajar Pemrograman Sistem use C++

11

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 :

#include <iostream.h>

#include <conio.h>

void main()

{

char teks[50]= "Jangan bersedih, Bajaj pasti berlalu";

cout<<strlen(teks);

getch();

}

Hasil eksekusi :

36

Menggabungkan string dengan strcat()

Contoh program :

#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 :

Belajar C++ memang mudah Semudah membalik tank baja

Page 12: Bahan Ajar Pemrograman Sistem use C++

12

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

Page 13: Bahan Ajar Pemrograman Sistem use C++

13

Jadi contoh diatas dapat ditulis :

void tampilkan_judul ()

{

cout << “PT. Maju Mundur” << endl;

cout << “Jl. Buntu No. 76” << endl;

cout << “Yogyakarta” << endl;

return;

}

Contoh program :

#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

==========================

Page 14: Bahan Ajar Pemrograman Sistem use C++

14

Argumen fungsi

Argumen fungsi adalah nilai bawaan yang akan disertakan saat pemanggilan fungsi.

Contoh :

#include <iostream.h>

#include <conio.h>

void cetak(int jum);

void main()

{

clrscr();

cetak(10);

getch();

}

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 :

#include <iostream.h>

#include <conio.h>

void hapus()

{

clrscr();

Page 15: Bahan Ajar Pemrograman Sistem use C++

15

}

void henti()

{

getch();

}

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

void cetak(int klm, int brs, char *teks)

{

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.

Page 16: Bahan Ajar Pemrograman Sistem use C++

16

• Variabel hanya dikenal pada fungsi yang mendefinisikan.

• Inisialisasi oleh pemrogram akan dikerjakan setiap kali fungsi dipanggil

Contoh program :

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

Contoh program :

#include <iostream.h>

Page 17: Bahan Ajar Pemrograman Sistem use C++

17

#include <conio.h>

int nilai = 50; // Variabel eksternal

void tambah(); // Prototipe fungsi

void main()

{

clrscr();

cout << nilai << endl;

tambah();

cout << nilai << endl;

tambah();

cout << nilai << endl;

getch();

}

// Definisi fungsi

void tambah ()

{

nilai ++ ; // Variabel eksternal dinaikkan

}

Hasil eksekusi :

50

51

52

Contoh program :

int nilai = 50; // Variabel eksternal

void tambah(); // Prototipe fungsi

void main()

{

clrscr();

cout << nilai << endl;

tambah();

cout << nilai << endl;

tambah();

cout << nilai << endl;

getch();

}

// Definisi fungsi

void tambah ()

{

extern nilai;

Page 18: Bahan Ajar Pemrograman Sistem use C++

18

nilai ++ ; // Variabel eksternal dinaikkan

}

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.

Contoh program :

#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

Page 19: Bahan Ajar Pemrograman Sistem use C++

19

Fungsi Dengan Nilai Balik

Adalah fungsi yang memberikan nilai balik ke pemanggil fungsi.

Contoh :

// Prototipe funsi

long kuadrat (long l);

-------------------------------------

// Definisi fungsi

long kuadrat(long l)

{

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.

Contoh program :

#include <iostream.h>

#include <iomanip.h>

#include <conio.h>

long kuadrat(long l); // prototipe fungsi

void main()

{

clrscr();

for ( long bil = 200; bil < 2000; bil+= 200 )

cout << setw(8) << bil

<< setw(8) << kuadrat(bil) << endl;

getch();

}

// Definisi fungsi

long kuadrat(long l)

{

return( l * l );

}

Hasil eksekusi :

200 40000

400 160000

600 360000

800 640000

1000 1000000

1200 1440000

1400 1960000

1600 2560000

1800 3240000

Page 20: Bahan Ajar Pemrograman Sistem use C++

20

Contoh program yang mengandung fungsi tanpa nilai balik dan fungsi dengan nilai balik :

#include <iostream.h>

#include <conio.h>

#include <string.h>

void judul();

char tanya();

void isi();

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

{

judul();

isi();

getch();

}

void judul()

{

cetakc(1,"DAFTAR NILAI");

cetakc(2,"PRODI TEKNIK INFORMATIKA");

cetak(4,4,"=========================================================================");

cetak(5,4,"|");

cetak(5,7,"No");

cetak(5,10,"|");

cetak(5,14,"NIM");

cetak(5,21,"|");

cetak(5,27,"N A M A");

cetak(5,44,"|");

cetak(5,46,"UTS");

cetak(5,50,"|");

cetak(5,52,"UAS");

cetak(5,56,"|");

cetak(5,58,"TUGAS");

Page 21: Bahan Ajar Pemrograman Sistem use C++

21

cetak(5,64,"|");

cetak(5,66,"NILAI HRF");

cetak(5,76,"|");

cetak(6,4,"=========================================================================");

}

void isi()

{

int nim,uts,uas,tugas,tot; char nama[15],maxnm[15],minnm[15];

float rata, maxnil,minnil,ratkelas,totrat;

char jawab;

static int i = 1;

maxnil=0;minnil=100;totrat=0;

do

{

gotoxy(4,6+i);cout<<"|";

gotoxy(7,6+i);cout<<i;

gotoxy(10,6+i);cout<<"|";

gotoxy(12,6+i);cin>>nim;

gotoxy(21,6+i);cout<<"|";

gotoxy(23,6+i);cin>>nama;

gotoxy(44,6+i);cout<<"|";

gotoxy(46,6+i);cin>>uts;

gotoxy(50,6+i);cout<<"|";

gotoxy(52,6+i);cin>>uas;

gotoxy(56,6+i);cout<<"|";

gotoxy(58,6+i);cin>>tugas;

gotoxy(64,6+i);cout<<"|";

tot=uts+uas+tugas;

rata=tot/3;

totrat=totrat+rata;

ratkelas=totrat/i;

if (rata>maxnil)

{

maxnil=rata;

strcpy(maxnm,nama);

}

if (rata<minnil)

{

minnil=rata;

strcpy(minnm,nama);

}

gotoxy(69,6+i);cout<<huruf(rata);

gotoxy(76,6+i);cout<<"|";

jawab=tanya();

Page 22: Bahan Ajar Pemrograman Sistem use C++

22

if (jawab=='t')

{

gotoxy(4,7+i);

cout<<"=========================================================================";

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;

}

i++;

}while(jawab!='t');

}

char tanya()

{

char jw;

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.

Contoh program :

#include <iostream.h>

Page 23: Bahan Ajar Pemrograman Sistem use C++

23

#include <conio.h>

int x = 50; // Variabel eksternal

void main()

{

double x; // Definisi variabel lokal

clrscr();

x = 5.678901234; // Variabel lokal yang diberi nilai

cout << x << " " << ::x << endl;

::x = 77; // Variabel eksternal yang diberi nilai

cout << x << " " << ::x << endl;

getch();

}

Hasil eksekusi :

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.

Contoh program :

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

Page 24: Bahan Ajar Pemrograman Sistem use C++

24

getch();

}

Hasil eksekusi :

i = 10

r = 1

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. Contoh :

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

r ++ ;

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

Page 25: Bahan Ajar Pemrograman Sistem use C++

25

sekembalinya dari pemanggilan fungsi. Sedangkan pengiriman argumen berdasar referensi yaitu argumen yang dikirimkan dimaksudkan untuk diubah sekembalinya dari pemanggilan fungsi.

#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 : 10

Nilai 2 sesudah tukar : 20

Page 26: Bahan Ajar Pemrograman Sistem use C++

26

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 :

#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

Page 27: Bahan Ajar Pemrograman Sistem use C++

27

Nilai 1 dalam tukar : 20

Nilai 2 dalam tukar : 10

Nilai 1 sesudah tukar : 20

Nilai 2 sesudah tukar : 10

Array sebagai argumen fungsi

Array dapat juga berkedudukan sebagai parameter dalam argumen fungsi :

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

}

}

for(int i=0;i<br;i++) //input matrik B

{

for(int j=0;j<kl;j++)

{

cout<<" Matrik B["<<i<<"]["<<j<<"] = ";

cin>>mat_b[i][j];

}

}

jumlah(mat_a,mat_b,mat_c,br,kl);

clrscr();

Page 28: Bahan Ajar Pemrograman Sistem use C++

28

cout<<"Matrik A"<<endl; //menampilkan matrik A

for(int i=0;i<br;i++)

{

for(int j=0;j<kl;j++)

{

cout<<mat_a[i][j]<<" ";

}

cout<<endl;

}

cout<<"\nMatrik B"<<endl; //menampilkan matrik B

for(int i=0;i<br;i++)

{

for(int j=0;j<kl;j++)

{

cout<<mat_b[i][j]<<" ";

}

cout<<endl;

}

cout<<"\nMatrik C hasil penjumlahan"<<endl;

for(int i=0;i<br;i++) //menampilkan matrik C

{

for(int j=0;j<kl;j++)

{

cout<<mat_c[i][j]<<" ";

}

cout<<endl;

}

getch();

}

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

}

}

}

Page 29: Bahan Ajar Pemrograman Sistem use C++

29

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.

Contoh program :

#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 menerima bermacam-macam tipe dan memberikan nilai balik yang bervariasi pula.

Contoh program :

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

Page 30: Bahan Ajar Pemrograman Sistem use C++

30

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 :

Jika n = 1 maka Xn = X

Selain itu : Xn = X * Xn – 1

Contoh program :

#include <iostream.h>

#include <conio.h>

long int pangkat ( int x, int n);

void main()

{

int x, y;

clrscr();

cout << "Menghitung x ^ y "<< endl;

cout << "x = " ;

Page 31: Bahan Ajar Pemrograman Sistem use C++

31

cin >> x ;

cout << "y = " ;

cin >> y ;

cout << x << " ^ " << y << " = "

<< pangkat(x, y) << endl;

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

y = 4

3 ^ 4 = 81

Page 32: Bahan Ajar Pemrograman Sistem use C++

32

MENGENAL POINTER

Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel biasa. Dengan

kata lain pointer adalah variabel yang berisi alamat memori sebagai nilainya dan berbeda dengan variabel

biasa yang berisi nilai tertentu.

Mengetahui Alamat variabelMengetahui Alamat variabelMengetahui Alamat variabelMengetahui Alamat variabel

Alamat dari variabel dapat diketahui dengan menambahkan operator alamat berupa simbol & di depan nama

variabel.

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

int a = 11;

float b = 12.4;

double c = 12.23456;

cout<<"Isi Variabel :"<<endl;

cout<<"a = "<<a<<endl;

cout<<"b = "<<b<<endl;

cout<<"c = "<<c<<endl;

cout<<"\nAlamat Variabel :"<<endl;

cout<<"a = "<<&a<<endl;

cout<<"b = "<<&b<<endl;

cout<<"c = "<<&c<<endl;

getch();

}

Output :

Isi Variabel :

a = 11

b = 12.4

c = 12.2346

Page 33: Bahan Ajar Pemrograman Sistem use C++

33

Alamat Variabel :

a = 0x0012ff88

b = 0x0012ff84

c = 0x0012ff7c

Mendefinisikan Variabel Pointer

Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut :

- tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabel bukan pointer. - nama_variabel adalah nama variabel pointer - * adalah operator memori yang fungsinya untuk mengembalikan nilai variabel pada alamatnya

yang ditentukan oleh operand. Supaya suatu variabel menunjuk ke variabel lain, mula-mula harus diisi dengan alamat dari variabel

yang hendak ditunjuk.

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

int var_int = 55; // Variabel bukan pointer

int *poin_int; // Variabel pointer

clrscr();

poin_int = &var_int; // Pointer menunjuk ke vint

cout << "Alamat var_int = " << &var_int << endl;

cout << "poin_int = " << poin_int << endl;

getch();

}

Output : Alamat var_int = 0x0012ff88 poin_int = 0x0012ff88

Pada program diatas :

cout << "poin_int = " << poin_int << endl;

ternyata menampilkan isi pointer itu sendiri, bukan isi dari variabel vint.

Mengakses Nilai yang ditunjuk Pointer

Berdasarkan contoh program diatas, nilai dari var_int dapat diakses melalui poin_int setelah pernyataan :

poin_int = &var_int

dijalankan. Caranya dengan melibatkan operator “tak langsung”. Operator ini berupa simbol “ * “ dan

diletakkan di depan nama variabel pointer.Contoh

*poin_int

tipe_data *nama_variabel

Page 34: Bahan Ajar Pemrograman Sistem use C++

34

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

int var_int = 60; // Variabel bukan pointer

int *poin_int; // Variabel pointer

clrscr();

poin_int = &var_int; // Pointer menunjuk ke vint

cout << " Nilai yang ditunjuk oleh pint = "

<< *poin_int << endl;

getch();

}

Output:

Nilai yang ditunjuk oleh pint = 60

Pointer void

Untuk membuat pointer yang tidak bertipe yakni dengan meletakkan kata kunci pada void pada bagian penentu tipe pointer. Contoh :

void *ptr;

Merupakan pernyataan untuk mendefinisikan ptr sebagai variabel pointer void.

Suatu pointer void adalah pointer yang dapat menunjuk ke sembarang tipe data. Misalnya, Anda dapat mengatur agar pointer ini menunjuk ke tipe data int, tetapi di saat lain diperlukan untuk menunjuk data bertipe float.

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

void *ptr; // Pointer tak bertipe

int vint = 45;

float vfl = 17.5;

ptr = &vint; // menunjuk ke int

cout << "Nilai yang ditunjuk oleh ptr = "

<< *(int *)ptr << endl;

ptr = &vfl; // menunjuk ke float

cout << "Nilai yang ditunjuk oleh ptr = "

Page 35: Bahan Ajar Pemrograman Sistem use C++

35

<< *(float *) ptr << endl;

getch();

}

Output :

Nilai yang ditunjuk oleh ptr = 45

Nilai yang ditunjuk oleh ptr = 17.5

Dari program diatas bahwa variabel pointer ptr dapat menunjuk ke tipe int ataupun float.

Pointer dapat pula digabungkan dengan array, karena pada umumnya antara pointer dan array mempunyai kesamaan.

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

int tgl_lahir[] = {28, 11, 1982 };

int *poin_tgl;

poin_tgl = tgl_lahir; // ptgl menunjuk ke array

cout << "Nilai yang ditunjuk poin_tgl : "

<< *poin_tgl << endl;

cout << "Nilai dari tgl_lahir[0] : "

<< tgl_lahir[0] << endl;

getch();

}

Output :

Nilai yang ditunjuk poin_tgl : 28

Nilai dari tgl_lahir[0] : 28

Setelah penugasan poin_tgl = tgl_lahir ptgl akan menunjuk ke elemen pertama (tgl_lahir[0]) dari array tgl_lahir.

Untuk mengakses semua tanggal dapat dilakukan dengan perintah :

for (int i=0;i<3;i++)

cout<<*(poin_tgl+i)<<endl;

Array Pointer

Page 36: Bahan Ajar Pemrograman Sistem use C++

36

Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh :

char *namahari[7];

merupakan pernyataan untuk mendefinisikan array namahari yang berisi 7 buah elemen berupa pointer. Pointer ini menunjuk ke data bertipe char.

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

char *namahari[] = {"Senin", "Selasa", "Rabu", "Kamis",

"Jumat","Sabtu", "Minggu"};

for (int i = 0; i < 7; i++)

cout << namahari[i] << endl;

getch();

}

Output :

Senin

Selasa

Rabu

Kamis

Jumat

Sabtu

Minggu

Pointer Menunjuk PointerPointer Menunjuk PointerPointer Menunjuk PointerPointer Menunjuk Pointer

Suatu pointer bisa menunjuk ke pointer lain

ptr2 ptr1 Var_x

Untuk membentuk rantai seperti gambar diatas diperlukan pendefinisian sebagai berikut :

int var_x; //Variabel bertipe int

int *ptr1; //Variabel pointer yg menunjuk ke data bertipe int

int **ptr2; //Variabel pointer yg menunjuk ke pointer int

Pointer menunjuk ke pointer

Page 37: Bahan Ajar Pemrograman Sistem use C++

37

Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa :

ptr1 = &var_x;

Sedangkan supaya ptr2 menunjuk ke ptr1, diperlukan perintah :

ptr2 = &ptr1;

Contoh :

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

int var_x = 2345;

int *ptr1; //pointer ke variabel bukan pointer

int **ptr2; //pointer ke pointer

cout << "var_x = " << var_x << endl;

//penugasan alamat

ptr1 = &var_x;

ptr2 = &ptr1;

//Mengakses nilai var_x melalui ptr1

cout << "*ptr1 = " << *ptr1 << endl;

//Mengakses nilai var_x melalui ptr2

cout << "**ptr2 = " << **ptr2 << endl;

getch();

}

Output :

var_x = 2345

*ptr1 = 2345

**ptr2 = 2345

Pointer Dan FungsiPointer Dan FungsiPointer Dan FungsiPointer Dan Fungsi

Pointer biasa digunakan di dalam argumen fungsi kalau nilai argumen dimasudkan untuk diubah di dalam fungsi.

Pointer Sebagai Argumen FungsiPointer Sebagai Argumen FungsiPointer Sebagai Argumen FungsiPointer Sebagai Argumen Fungsi

#include <iostream.h>

#include <conio.h>

void ubah_nilai(int &x);

void main()

{

clrscr();

Page 38: Bahan Ajar Pemrograman Sistem use C++

38

int pinokio = 80;

cout << "Nilai mula-mula untuk pinokio : "

<< pinokio << endl;

ubah_nilai(pinokio);

cout << "Nilai untuk pinokio sekarang : "

<< pinokio << endl;

getch();

}

//Definisi fungsi

void ubah_nilai(int &x)

{

x = 95;

}

Output :

dengan menuliskan & didepan argumen fungsi, nilai argumen dapat diubah didalam fungsi. hal serupa dapat diimplentasikan didalam pointer sebagai berikut :

#include <iostream.h>

#include <conio.h>

void ubah_nilai(int *x);

void main()

{

clrscr();

int pinokio = 80;

cout << "Nilai mula-mula untuk pinokio : "

<< pinokio << endl;

ubah_nilai(&pinokio);

cout << "Nilai untuk pinokio sekarang : "

<< pinokio << endl;

getch();

}

//Definisi fungsi

void ubah_nilai(int *x)

{

*x = 95;

}

Page 39: Bahan Ajar Pemrograman Sistem use C++

39

Perbedaan :

� Fungsi ubah_nilai() didefinisikan sebagai judul berupa void ubah_nilai(int *x) � Pada saat fungsi dipanggil argumen perlu ditulis dengan awalan & (&pinokio) � Prototipe fungsi disesuaikan dengan definisi fungsi : void ubah_nilai(int *x); � Didalam fungsi ubah_nilai(), tanda * perlu diberikan di depan nama argumen : *x=95;

Page 40: Bahan Ajar Pemrograman Sistem use C++

40

STRUKTUR

Struktur bermanfaat untuk mengelompokkan sejumlah data dengan tipe yang berlainan. Apabila

suatu struktur telah dideklarasikan, struktur ini dapat dgunakan untuk mendefinisikan suatu

variabel.

Suatu struktur juga dapat mengandung struktur yang lain dan anggota struktur dapat diakses menggunakan bentuk :

Varibel_struktur.nama_anggota

Contoh program lengkap yang melibatkan pendeklarasian dan pendefinisian variabel struktur dan juga pengaksesan terhadap anggota variabel struktur dapat dilihat dibawah ini :

#include <iostream.h>

#include <conio.h>

void main()

{

struct data_tanggal // Pendeklarasian

{

int tahun;

int bulan;

int tanggal;

};

data_tanggal tanggal_lahir // Pendefinisian struktur

// Pengaksesan anggota struktur

tanggal_lahir.tangal = 28;

tanggal_lahir.bulan = 11;

tanggal_lahir.tahun = 1982;

cout << tanggal_lahir.tanggal << ‘ / ’

<< tanggal_lahir.bulan << ‘/ ’

<< tanggal_lahir.tahun << endl;

}

Hasil eksekusi :

Pada program diatas tanda titik diantara nama variabel dan nama anggota menyatakan penugasan untuk memberikan nilai 28 ke anggota tanggal pada variabel struktur tanggal_lahir.

Pemberian nilai terhadap suatu struktur dapat dilakukan dengan bentuk :

var1 = var2;

sepanjang kedua variabel adalah variabel struktur bertipe sama.

28/11/1982

Page 41: Bahan Ajar Pemrograman Sistem use C++

41

Contoh program :

#include <iostream.h>

#include <conio.h>

void main()

{

struct data_tanggal // Pendeklarasian

{

int tahun;

int bulan;

int tanggal;

};

data_tanggal tgl1, tgl2 ; // Pendefinisian struktur

// Penugasan per anggota

tgl1.tanggal = 28;

tgl1.bulan = 11;

tgl1.tahun = 1982;

// Penugasan antaranggota struktur

tgl1 = tgl2;

cout << tgl2.tanggal << ‘ / ’

<< tgl2.bulan << ‘ / ’

<< tgl2.tahun << endl;

}

Hasil eksekusi :

Array struktur

#include <iostream.h>

#include <conio.h>

void main()

{

struct mahasiswa

{

int nim;

char nama[30][30];

};

int jml;

mahasiswa mhs[25];

cout<<"Berapa jumlah siswa : ";

28/11/1982

Page 42: Bahan Ajar Pemrograman Sistem use C++

42

cin>>jml;

for(int i = 0;i < jml; i++)

{

cout<<"Nim : ";cin>>mhs[i].nim;

cout<<"Nama : ";cin>>mhs[i].nama[i];

}

for(int i = 0;i < jml; i++)

{

cout<<"Nim : "<<mhs[i].nim<<endl;

cout<<"Nama : "<<mhs[i].nama[i]<<endl;

}

getch();

}

#include <iostream.h>

#include <conio.h>

void main()

{

struct mahasiswa

{

int nim;

char nama[30][1];

int nilai[3];

int tot;

};

int jml;

mahasiswa mhs[25];

mahasiswa tmp;

cout<<"Berapa jumlah siswa : ";

cin>>jml;

for(int i = 0;i < jml; i++)

{

mhs[i].tot = 0;

cout<<"Nim : ";cin>>mhs[i].nim;

cout<<"Nama : ";cin>>mhs[i].nama[i];

for(int j = 0; j<3; j++)

{

cout<<"Nilai "<<(j+1)<<" : ";

cin>>mhs[i].nilai[j];

mhs[i].tot = mhs[i].tot + mhs[i].nilai[j];

Page 43: Bahan Ajar Pemrograman Sistem use C++

43

}

}

clrscr();

for(int i = 0;i < jml; i++)

{

cout<<"Nim : "<<mhs[i].nim<<endl;

cout<<"Nama : "<<mhs[i].nama[i]<<endl;

cout<<"Total : "<<mhs[i].tot<<endl<<endl;;

}

getch();

}