modul pemograman terstruktur dengan c · lingkup materi pemrograman terstruktur : 1. komsep...
Embed Size (px)
TRANSCRIPT

0
MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C ++
OlehRusnedi AG, S.Kom
FAKULTAS ILMU KOMPUTERUNIVERSITAS SUBANG
TAHUN 2010

1
DASAR PEMROGRAMAN C++
A. TUJUAN
1. Menjelaskan tentang beberapa tipe data dasar (jenis dan jangkauannya)
2. Menjelaskan tentang Variabel
3. Menjelaskan tentang konstanta
4. Menjelaskan tentang berbagai jenis operator dan pemakaiannya
Lingkup Materi Pemrograman Terstruktur :
1. Komsep Pemrograman Terstruktur.Jenis-jenis bahasa pemrograman, Proses penyelesaian masalahStruktur program dalam C++
2. Variabel dan Tipe Data3. Instruksi I/O4. Konstanta5. Operator aritmatik dan beberapa fungsi built in6. Percabangan If
Switch7. Perulangan : While dan Do While8. Fungsi : dengan return value, tanpa return value9. Array10. Character sequence11. Pointer dan Memori dinamis12. Tipe struct13. User defined type (dengan menggunakan tipe yang ada)
Referensi:1. www.cplusplus.com/doc/tutorial2. www.cprogramming.com3. Pemrograman Terstruktur dengan C++
B. DASAR TEORI
1. Tipe Data Dasar
Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel.
Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat
diubah-ubah selama eksekusi berlangsung, Data berdasarkan jenisnya dapat dibagi menjadi
lima kelompok, yang dinamakan sebagai tipe data dasar. Kelima tipe data dasar adalah:
Bilangan bulat (integer)
Bilangan real presisi-tunggal

2
Bilangan real presisi-ganda
Karakter
Tak-bertipe (void), keterangan lebih lanjut tentang void dijelaskan dalam Bab
Selanjutnya.
Kata-kunci yang berkaitan dengan tipe data dasar secara berurutan di antaranya adalah
int (short int, long int, signed int dan unsigned int), float, double, dan char. Tabel 2-1
memberikan informasi mengenai ukuran memori yang diperlukan dan kawasan dari
masing-masing tipe data dasar.
Tabel 1.Ukuran memori untuk tipe data
Untuk tipe data short int, long int, signed int dan unsigned int, maka ukuran memori yang
diperlukan serta kawasan dari masint-masing tipe data adalah sebagai berikut :
Tabel 2. Ukuran memori untuk tipe data int
Catatan :
Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis
mesin yang digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda
dengan mesin 32 bit).
2 Variabel
2.1 Aturan Pendefinisan Variabel
Aturan penulisan pengenal untuk sebuah variabel, konstanta atau fungsi yang
didefinisikan oleh pemrogram adalah sebagai berikut :
Pengenal harus diawali dengan huruf (A..Z, a..z) atau karakter garis bawah ( _).

3
Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah atau tanda
dollar ($).
Panjang pengenal boleh lebih dari 31 karakter, tetapi hanya 31 karakter pertama
yang akan dianggap berarti. Pengenal tidak boleh menggunakan nama yang
tergolong sebagai kata-kata cadangan (reserved words) seperti int, if, while
dan sebagainya.
2.2 Mendeklarasikan Variabel
Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang ada
padanya dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang akan
digunakan dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di
sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya.
Bentuk umum deklarasi variabel:
Pada pendeklarasian varibel, daftar-variabel dapat berupa sebuah variabel atau
beberapa variabel yang dipisahkan dengan koma.
Contoh:
int var_bulat1;
float var_pecahan1, var_pecahan2;
2.3 Memberikan Nilai ke Variabel
Untuk memberikan nilai ke variabel yang telah dideklarasikan, maka bentuk umum
pernyataan yang digunakan adalah :
Contoh:
int var_bulat = 10;
double var_pecahan = 10.5;
2.4 Inisialisasi Variabel
Adakalanya dalam penulisan program, setelah dideklarasikan, variabel langsung diberi
nilai awal. Sebagai contoh yaitu variabel nilai :

4
int nilai;
nilai = 10;
Dua pernyataan di atas sebenarnya dapat disingkat melalui pendeklarasian yang disertai
penugasan nilai, sebagai berikut :
int nilai= 10;
Cara seperti ini banyak dipakai dalam program C, di samping menghemat penulisan
pernyataan, juga lebih memberikan kejelasan, khususnya untuk variabel yang perlu diberi
nilai awal (diinisialisasi).
3 Konstanta
Konstanta menyatakan nilai yang tetap. Berbeda dengan variabel, suatu konstanta tidak
dideklarasikan. Namun seperti halnya variabel, konstanta juga memiliki tipe. Penulisan
konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing.
1. Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik
tunggal, contohnya : ‘A’ dan ‘@’.
2. Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tak
mengandung bagian pecahan, contohnya : –1 dan 32767.
3. Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa
titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e),
contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5
(maksudnya 2,1 x 105 ).
4. Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan
tanda petik-ganda (“), contohnya :“Pemrograman Dasar C”.
4 Operator
Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk
melakukan sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai,
memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai. Sebagian
operator C tergolong sebagai operator binary, yaitu operator yang dikenakan terhadap dua
buah nilai (operand).
Contoh :
a + b

5
Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua
operandnya (yaitu a dan b). Karena operator penjumlahan melibatkan dua operator ini
tergolong sebagai operator binary.
-c
Simbol - (minus) juga merupakan operator. Simbol ini termasuk sebagai operator unary,
yaitu operator yang hanya memiliki sebuah operand (yaitu c pada contoh ini).
4.1. Operator Aritmatika
Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah :
* perkalian
/ pembagian
% sisa pembagian
+ penjumlahan
- pengurangan
Adapun operator yang tergolong sebagai operator unary.
- tanda minus
+ tanda plus
Contoh pemakaian operator aritmatika misalnya untuk memperoleh nilai diskriminan dari
suatu persamaan kuadrat : D = b2 – 4ac
/* File program : diskrim.cMenghitung diskriminan pers kuadrat ax^2 + bx + c = 0 */# include <stdio.h>main(){float a,b,c,d;a = 3.0f;b = 4.0f;c = 7.0f;d = b*b-4*a*c;printf(“Diskriminan =%f\n”,d);}
Contoh eksekusi :
Diskriminan = -84.000000
Operator yang telah dituliskan di atas, yang perlu diberi penjelasan lebih lanjut adalah
operator sisa pembagian. Beberapa contoh berikut kiranya akan memperjelas makna dari
operator ini .
Sisa pembagian bilangan 7 dengan 2 adalah 1 (7 % 2 1)
Sisa pembagian bilangan 6 dengan 2 adalah 0 (6 % 2 0)

6
Sisa pembagian bilangan 8 dengan 3 adalah 1 (8 % 3 2)
Kegunaan operator ini diantaranya bisa dipakai untuk menentukan suatu bilangan bulat
termasuk ganjil atau genap, berdasarkan logika : “Jika bilangan habis dibagi dua (sisanya nol),
bilangan termasuk genap. Sebaliknya, termasuk ganjil”.
4.2. Operator Penurunan dan Penaikan
Masih berkaitan dengan operasi aritmatika, C menyediakan operator yang disebut sebagai
operator penaikan dan operator penurunan, yaitu :
++ operator penaikan
operator penurunan
Operator penaikan digunakan untuk menaikkan nilai variabel sebesar satu. Penempatan
operator terhadap variabel dapat dilakukan di muka atau di belakangnya, contohnya :
x = x+1;
y = y+1;
Bisa ditulis menjadi :
++x;
--y;
atau :
x++;
y--;
bergantung pada kondisi yang dibutuhkan oleh pemrogram. Di bawah ini adalah contoh yang
akan menunjukkan perbedaan pemakaian dan hasil dari ++x dengan x++ (atau pemakaian
y-- dengan –-y).
/* File program : pre_post.cContoh penggunaan pre & post Increment operator */#include <stdio.h>main(){int count = 0, loop;loop = ++count; /* count=count+1; loop=count; */printf("loop = %d, count = %d\n", loop, count);loop = count++; /* loop=count; count=count+1; */printf("loop = %d, count = %d\n", loop, count);}
Contoh eksekusi :loop = 1, count = 1loop = 1, count = 2
4.3. Prioritas Operator Aritmatika

7
Tabel di bawah ini memberikan penjelasan mengenai prioritas dari masingmasing
operator. Operator yang mempunyai prioritas tinggi akan diutamakan dalam hal pengerjaan
dibandingkan dengan operator yang memiliki prioritas lebih rendah.
Tabel 2.3 Tabel prioritas operator aritmatika dan urutan pengerjaannya
*)Bentuk unary + dan unary – memiliki prioritas yang lebih tinggi daripada bentuk binary + dan
binary –
4.4. Operator Penugasan
Operator penugasan (assignment operator) digunakan untuk memindahkan nilai dari
suatu ungkapan (expression) ke suatu pengenal. Operator pengerjaan yang umum
digunakan dalam bahasa pemrograman, termasuk bahasa C adalah operator sama dengan.
(=). Contohnya :
fahrenheit = celcius * 1.8 + 32;
Maka ‘=’ adalah operator penugasan yang akan memberikan nilai dari ungkapan : celcius
* 1.8 + 32 kepada variabel fahrenheit.
Bahasa C juga memungkinkan dibentuknya statemen penugasan menggunakan
operator pengerjaan jamak dengan bentuk sebagai berikut :
pengenal1 = pengenal2 = … = ungkapan ;
Misalnya :
a = b = 15;
maka nilai variabel ‘a ‘ akan sama dengan nilai variabel ‘b‘ akan sama dengan 15.
4.5 Operator Kombinasi (Pemendekan)
C menyediakan operator yang dimaksudkan untuk memendekkan penulisan operasi
penugasan semacam
x = x + 2;
y = y * 4;
menjadi

8
x += 2;
y *= 4;
Daftar berikut memberikan seluruh kemungkinan operator kombinasi dalam suatu
pernyataan serta pernyataan padanannya.
Tabel 4. Seluruh kemungkinan operator kombinasi dan padanannya
C. TUGAS PENDAHULUAN
1. Berapakah nilai jawaban yang ditampilkan oleh program di bawah ini :
#include <stdio.h>main(){int jawab, hasil;jawab = 100;hasil = jawab - 10;printf("Jawabannya adalah %d\n", hasil + 6);}

9
MATERI 1
A. STRUKTUR PROGRAM
Secara umum struktur program dalam C++ adalah sebagai berikut:
Keterangan :1. Deklarasi header file diawali dengan #include <.......> Titik-titik diisi dengan nama
header file yang ingin digunakan. Header file merupakan suatu fungsi yang mendukung eksekusi instruksi tertentu dalam C++
2. Deklarasi konstanta (bisa ada bisa tidak)3. Deklarasi variabel global (bisa ada bisa tidak)4. Deklarasi fungsi bisa ada bisa tidak. Fungsi juga dapat diletakkan seletah fungsi
main().5. Deklarasi class (bisa ada bisa tidak)6. Fungsi utama harus ada, diawali dengan { dan diakhiri dengan }. Didalamnya
berisi instruksi-instruksi yang nantinya akan dieksekusi berikut deklarasi variabel (variabel lokal) yang diperlukan.
Beberapa header file yang sering digunakan :1. iostream.h
Untuk instruksi:cout<<”.....................”;cin>>nama_var;
2. conio.hUntuk instruksi:getch();clrscr();
Instruksi untuk memindah cursor dibaris berikut:1. ”\n”2. <<endl;
Menuliskan komentar :1. //
Jika komentar hanya satu baris
deklarasi header file/preprocessordeklarasi konstantadeklarasi var globaldeklarasi fungsideklarasi class
program utama (fungsi utama)
main() { ……. ……..}

10
2. /*.....*/Sangat berguna jika komentar lebih dari satu baris.
C++ bersifar case sensitive membedakan huruf besar dan huruf kecil, sehingga:1. instruksi harus ditulis dalam huruf kecil2. Variabel yang ditulis dengan huruf kecil dan huruf besar berbeda.
Contoh program :
Contoh 1://ini contoh pertama#include <iostream.h>#include <conio.h>
main() {cout<<"Pemrograman Terstruktur";getch();}
Contoh 2://ini contoh kedua#include <iostream.h>#include <conio.h>
main() {cout<<"Pemrograman Terstruktur";cout<<"Program D3";cout<<"Jurusan Manajemen Informatika";getch();}
Contoh 3://ini contoh ketiga#include <iostream.h>#include <conio.h>
main() {cout<<"Pemrograman Terstruktur\n";cout<<"Program D3\n";cout<<"Jurusan Manajemen Informatika";getch();}

11
Contoh 4 ://ini contoh keempat#include <iostream.h>#include <conio.h>
main() {cout<<"Pemrograman Terstruktur"<<endl;cout<<"Program D3"<<endl;cout<<"Jurusan Manajemen Informatika"<<endl;getch();}
Contoh 5 ://ini contoh kelima/* Pengggunaan \nuntuk mengatur tampilan */#include <iostream.h>#include <conio.h>
main() {cout<<"Pemrograman\n Terstruktur\n";cout<<"\nProgram D3";cout<<"\nJurusan \nManajemen Informatika";getch();}
B. VARIABEL DAN TIPE DATA
Variabel merupakan sarana yang digunakan untuk menyimpan data. Nama variabel (identifier) bebas, tetapi harus memperhatikan hal-hal sebagai berikut:
1. tidak boleh ada spasinya2. tidak boleh mengandung operator aritmatik3. tidak boleh diawali dengan angka4. tidak boleh merupakan reserved word dalam bahasa pemrograman.5. mencerminkan data yang akan disimpan.
Macam-macam tipe data :
Name Description Size* Range*
char Character or small integer.
1bytesigned: -128 to 127unsigned: 0 to 255
short int
(short) Short Integer. 2bytes
signed: -32768 to 32767unsigned: 0 to 65535

12
int Integer. 4bytes
signed: -2147483648 to 2147483647unsigned: 0 to 4294967295
long int
(long) Long integer. 4bytes
signed: -2147483648 to 2147483647unsigned: 0 to 4294967295
boolBoolean value. It can take one of two values: true or false.
1byte true or false
float Floating point number. 4bytes 3.4e +/- 38 (7 digits)
double Double precision floating point number. 8bytes 1.7e +/- 308 (15
digits)
long double
Long double precision floating point number.
8bytes 1.7e +/- 308 (15 digits)
wchar_t Wide character. 2bytes 1 wide character
*) http://cplusplus.com/doc/tutorial/variables.htmlsize dan range tergantung compilernya
Deklarasi variabel
Contoh:int a;float bchar n_hrf;double gaji;char nama[20];
dsb.

13
Contoh lain:
int a;int b;int c;
dapat disingkat penulisannya menjadi:int a,b,c;
Memberi nilai variabel 1. Inisialisasi (variabel diberi nilai langsung)
Contoh 6://a dan c diinisialisasi#include <iostream.h>#include <conio.h>main() { int a; float c; a=5; c=6; cout<<"Nilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}
Contoh 7://a dan c diinisialisasi#include <iostream.h>#include <conio.h>main() { int a; float c; a=5.7; c=6.7; cout<<"Nilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}Inisialisasi harus sesuai dengan tipe datanya.
Contoh 8://cara lain untuk inisialisasi#include <iostream.h>#include <conio.h>main() { int a=5; float c=6; cout<<"\nNilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}

14
Contoh 9://inisialisasi untuk variable yang nilainya sama#include <iostream.h>#include <conio.h>main() { int a,b,c; a=b=c=5; cout<<"\nNilai a = "<<a; cout<<"\nNilai b = "<<b; cout<<"\nNilai c = "<<c; getch();}
2. Input dataMenggunakan instruksi cin>>
Contoh 10://input data dengan cin>>#include <iostream.h>#include <conio.h>main() { int a; float c; cin>>a; cin>>c; cout<<"\nNilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}
Contoh 11://input dengan tambahan instruksi cout<<#include <iostream.h>#include <conio.h>main() { int a; float c; cout<<"Masukkan nilai a = ";cin>>a; cout<<"Masukkan nilai c = ";cin>>c; cout<<"\nNilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}
3. ProsesCth: adanya operator aritmatik (+,-,*,/)
Contoh 12://penggunaan operator +#include <iostream.h>#include <conio.h>main() { int a,b,c; a=6; b=7; c=a+b; cout<<"\nNilai a = "<<a; cout<<"\nNilai b = "<<b; cout<<"\nNilai c = "<<c; getch();}

15
MATERI IIDEKLARASI KONSTANTA DAN OPERATOR ARITMATIK
Kompetensi Dasar:Dapat menggunakan deklarasi konstanta dan operator aritmatik dalam program.
Indikator Kompetensi:1. Dapat mendeklarasikan konstanta.2. Dapat menuliskan ekspresi aritmatik dengan benar, berikut pemilihan tipe data
yang benar.3. Dapat menggunakan operator gabungan dan ekspresi increasing dan decreasing.4. Dapat melakukan type casting dalam suatu ekspresi aritmatik5. Mengaplikasikan konstanta dan operator aritmatik dalam program.
A. Deklarasi konstantaAda dua cara untuk mendeklarasikan konstanta:
1. Setelah deklarasi header file dengan menggunakan #define
Contoh 1://contoh deklarasi konstanta 1#include <iostream.h>#include <conio.h>#define phi 3.14#define r1 3#define r2 10.7#define kar 'A'#define teks "Contoh deklarasi konstanta"#define x true
main() { cout<<teks<<"\n"; cout<<kar<<"\n"; cout<<x<<"\n"; cout<<phi<<"\n"; cout<<r1<<"\n"; cout<<r2<<"\n"; getch();}
Keterangan : phi dan r2 adalah konstanta yang tipenya float r1 adalah konstanta yang bertipe int kar adalah konstanta yang bertipe char teks adalah konstanta karakter string, tipe char x adalah konstanta yang tipenya boolean

16
2. Di dalam fungsi dengan menggunakan constContoh 2:// contoh deklarasi konstanta 2#include <iostream.h>#include <conio.h>
main() { const float phi=3.14; const int r1=3; const float r2=10.7; const char kar='A'; const char teks[30]="Contoh deklarasi konstanta" ; const bool x=true; cout<<teks<<"\n"; cout<<kar<<"\n"; cout<<x<<"\n"; cout<<phi<<"\n"; cout<<r1<<"\n";
cout<<r2<<"\n"; getch();}
Constanta tidak dapat diubah nilainya, berbeda dengan proses inisialisasi, dimana nilainya dapat diubah-ubah.
B. Operator AritmatikOperator aritmatik terdiri :
1. Penjumlahan (+)2. Pengurangan (-)3. Perkalian (*)4. Pembagian (/)5. Modulo (%)
Contoh 3://operator aritmatik 1#include <iostream.h>#include <conio.h>#define phi 3.14#define r1 10#define teks "Program mencari luas lingkaran\n\n"
main() { cout<<teks; float r, luas; cout<<"Luas lingkaran pertama = "<<phi*r1*r1; cout<<"\nNilai jari-jari = ";cin>>r; luas=phi*r*r; cout<<"\nLuas lingkaran kedua = "<<luas; getch();}

17
Contoh 3://operator aritmatik 2#include <iostream.h>#include <conio.h>
main() { int a,b,hasil,sisa; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; hasil=a/b; sisa=a%b; cout<<"\nHasil pembagian bulat = "<<hasil; cout<<"\nSisa hasil bagi = "<<sisa; getch();}
Tipe Casting
Dari contoh 3 dapat diketahui bahwa:
Jika kita mempunyai dua variabel integer (a dan b), dan kita ingin membagi keduanya
(a/b), hasilnya diimpan ke variabel hasil yang tipenya int , maka hasil yang tersimpan
hanya nilai integernya saja.
Bagaimana jika kita ingin agar dua bilangan bulat yang dibagi tersebut hasilnya dapat
memuat angka desimal?
Caranya :
Tipe variabel yang menampung hasil harus float dan ubah salah satu data yang diproses
menjadi float sementara (type casting)
Contoh 4://operator aritmatik 3//pembagian dengan hasil bertipe float, hasil yang tersimpan adalah integernya#include <iostream.h>#include <conio.h>
main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=a/b; cout<<"\nHasil pembagian = "<<c; getch();}

18
Contoh 5://operator aritmatik 4//contoh penggunaan type casting#include <iostream.h>#include <conio.h>
main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=float(a)/b; cout<<"\nHasil pembagian = "<<c; getch();}
Mengatur angka desimal dan non desimal
Caranya:1. menggunakan instruksi setprecision(n)2. menggunakan instruksi setiosflag(ios::fixed)Kedua instruksi diatas memerlukan header file iomanip.h
Contoh 6://penggunaan setprecision#include <iostream.h>#include <conio.h>#include <iomanip.h>
main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=float(a)/b; cout<<"\nHasil pembagian = "<<setprecision(3)<<c; getch();}
Keterangan : setprecision (3) tempat yang dipesan baik untuk nilai bulat maupun desimal adalah 3.

19
Contoh 7://penggunaan setprecision dan setiosflags#include <iostream.h>#include <conio.h>#include <iomanip.h>
main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=float(a)/b; cout<<"\nHasil pembagian = "
<<setiosflags(ios::fixed)<<setprecision(2)<<c; getch();}
Keterangan :setiosflags(ios::fixed)<<setprecision(2) tempat yang dipesan untuk angka desimal saja.
Contoh 8://penggunaan setprecision untuk data yang nilainya besar#include <iostream.h>#include <conio.h>#include <math.h>#include <iomanip.h>
main() { char nama[10]; double gpokok,pot,tunj,gbersih; cout<<"Nama karyawan : ";cin>>nama; cout<<"Gaji pokok : ";cin>>gpokok; cout<<"Tunjangan : ";cin>>tunj; cout<<"Potongan : ";cin>>pot; gbersih=gpokok+tunj-pot; cout<<"\n\nGaji bersih : "<<setpecision(10)<<gbersih; getch();}
Keterangan:Instruksi setprecision(10) bisa dihilangkan seandainya gaji bersih kurang dari 1 juta, tetapi jika lebih dari 1 juta maka akan ditampilkan dalam bentuk eksponensial sehingga perlu ketelitian dalam membaca hasilnya.

20
Operator gabunganAntara lain : +=, -=, *=, /=, %=
Operator Contoh Ekivalen
+= bonus += 500; bonus = bonus + 500;
-= budget -= 50; budget = budget - 50;
*= gaji *= 1.2; gaji=gaji * 1.2;
/= faktor/= 50; faktor= faktor/.50;
%= jml_hari %=7; jml_hari =jml_hari % 7;
Contoh 8:// operator gabungan#include <iostream.h>#include <conio.h>main(){ int i = 4; int j = 8; int k = 12; int jwb; jwb = i + j; cout << jwb << "\n"; jwb += k; cout << jwb << "\n"; jwb /= 3; cout << jwb << "\n"; jwb -= 5; cout << jwb << "\n"; jwb *= 2; cout << jwb << "\n"; jwb %= 4; cout << jwb << "\n"; jwb *= 5+3; cout << jwb << "\n"; jwb += 4-2; cout << jwb << "\n"; getch();}
Increase dan DecreaseOperator Contoh Deskripsi Pernyataan yang ekivalen
++ J++; posfix j = j + 1; j += 1;
++ ++j; prefix j = j + 1; j += 1;
-- j--; postfix j = j - 1; j -= 1;
-- --j; prefix j = j - 1; j -= 1;

21
Contoh 9 :// increase dan decrease#include <iostream.h>#include <conio.h>main(){ int i1=4,i2=4; int j1=8,j2=8; int a,b,c,d; a=++i1; b=i2++; c=--j1; d=j2--; cout<<"\nNilai a = "<<a; cout<<"\nNilai i1 = "<<i1; cout<<"\n\nNilai b = "<<b; cout<<"\nNilai i2 = "<<i2; cout<<"\n\nNilai c = "<<c; cout<<"\nNilai j1 = "<<j1; cout<<"\n\nNilai d = "<<d; cout<<"\nNilai j2 = "<<j2; getch();}
Fungsi built-in matematik yang sering digunakan
Fungsi-fungsi tersebut antara lain:1. Fungsi sqrt(x) untuk mencari x.2. Fungsi pow(x,y) digunakan untuk mencari xy
Kedua fungsi tersebut harus menggunakan header file math.h
Contoh 10://penggunaan sqrt dan pow#include <iostream.h>#include <conio.h>#include <math.h>
main() { float a,b,c,d; a=5; b=7; c=sqrt(a); d=pow(a,b); cout<<"\nAkar "<<a<<" = "<<c; cout<<"\n"<<a<<" pangkat "<<b<<" = "<<d; getch();}

22
MATERI IVPERCABANGAN
Kompetensi Dasar:Dapat menggunakan instruksi percabangan di dalam pemecahan masalah.
Indikator Kompetensi:1. Mengenal dan memahami 3 bentuk percabangan.2. Memahami operator ?, operator relasional dan operator logika.3. Dapat menggunakan operator ? untuk suatu aplikasi.4. Dapat menggunakan instruksi percabangan untuk suatu aplikasi, baik yang
memerlukan oprator logika maupun tidak.
PERCABANGAN DENGAN IF
Dikenal sebagai instruksi bersyarat, artinya instruksi tertentu hanya akan dieksekusi jika syarat tertentu dipenuhi pula.
Syntax :Bentuk 1:IF (kondisi){ statement yang dikerjakan jika kondisi benar}
Ket: Jika kondisi salah, tidak akan mengerjakan apapun didalam instruksi IF (langsung menuju ke instruksi berikutnya)
Bentuk 2:IF (kondisi){ statement yang dikerjakan jika kondisi benar}ELSE{ statement yang dikerjakan Jika kondisi salah}
Bentuk 3:IF (kondisi1){ statement yang dikerjakan jika kondisi1 benar}ELSE
IF (kondisi2){ statement yang dikerjakan jika kondisi2 benar}ELSE
IF (kondisi3)

23
{ statement yang dikerjakan Jika kondisi3 salah}...ELSE{ statement yang dikerjakan Jika kondisi1 s.d kondisi-n salah (tidak terpenuhi)}
Kondisi atau syarat harus ditulis dalam tanda kurung. Jika instruksi yang dikerjakan pada saat kondisi benar/salah masing-masing tidak lebih dari satu instruksi, maka tanda kurung kurawal buka/tutup bersifat optional (boleh digunakan, boleh tidak)
Dalam menuliskan kondisi/syarat selalu digunakan operator relasional sebagai sarana untuk melakukan proses pengecekan a. l:
Operator Arti> Lebih besar< Lebih kecil
= = Sama dengan>= Lebih atau sama<= Kurang atau sama!= Tidak sama dengan
Selain itu jika syarat yang digunakan lebih dari satu sering digunakan operator logika yakni :
Operator Arti&& And
|| Or! Not
Contoh 1://penggunaan if#include <iostream.h>#include <conio.h>
main() { int a; cout<<"Masukkan nilai a = ";cin>>a; a=a+2; if (a>5) a=a-6; a=a+3; cout<<"\nNilai a sekarang = "<<a; getch();}

24
Contoh diatas menggunakan if bentuk 1, jika kondisi/syarat (a>5) dipenuhi akan mengeksekusi instruksi a=a-6, tidak dipenuhi maka didalam instruksi if tidak mengerjakan apapun, langsung menuju instruksi setelah if.
Contoh 2:/*program contoh penggunaanperintah if else*/#include <iostream.h>#include <conio.h>main (){ float nmid, nujian; char ket,nama[20]; cout<<"Menentukan lulus tidaknya mahasiswa\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Nilai mid : ";cin>>nmid; cout<<"Nilai ujian : ";cin>> nujian; float rata=(nmid+nujian)/2; if (rata >=60)
ket='L'; else ket='T'; cout<<"\nKeterangan(L=Lulus/T=Tidak) : "<<ket; cout<<"\nNilai rata-rata : "<<rata; getch();}
Contoh diatas menggunakan if bentuk 2, jika kondisi/syarat (rata>=60) dipenuhi maka akan mengerjakan instruksi dibawah if, tetapi jika tidak dipenuhi maka akan mengerjakan istruksi setelah else.
Instruksi percabangan dalam bentuk 2, ada yang dapat dituliskan dengan operator kondisi (?) seperti contoh berikut:
Contoh 3://program contoh penggunaan operator ?#include <iostream.h>#include <conio.h>main (){ float nmid, nujian; char ket,nama[20]; cout<<"Menentukan lulus tidaknya mahasiswa\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Nilai mid : ";cin>>nmid; cout<<"Nilai ujian : ";cin>> nujian; float rata=(nmid+nujian)/2; ket=(rata>=60)?'L':'T'; cout<<"\nKeterangan(L=Lulus/T=Tidak) : "<<ket;

25
cout<<"\nNilai rata-rata : "<<rata; getch();}
Contoh berikut menggunakan if bentuk 3, dimana ada banyak kondisi yang masing-masing punya instruksi tersendiri untuk dieksekusi.
Contoh 4:/*program contoh penggunaanperintah if else*/#include <iostream.h>#include <conio.h>main (){ float nmid, nujian; char ket,nama[20]; cout<<"Menentukan lulus tidaknya mahasiswa\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Nilai mid : ";cin>>nmid; cout<<"Nilai ujian : ";cin>> nujian; float rata=(nmid+nujian)/2; if (rata >=60)
ket='L'; else ket='T'; char nh; if (rata>=80) nh='A'; else if (rata>=60) nh='B'; else if (rata>=40) nh='C'; else if (rata>=20) nh='D'; else nh='E'; cout<<"\nKeterangan(L=Lulus/T=Tidak) : "<<ket; cout<<"\nNilai rata-rata : "<<rata; cout<<"\nNilai huruf : "<<nh; getch();}
Jika kondisi yang digunakan dalam percabangan bentuk 3 merupakan konstanta integer atau karakter, maka dapat tuliskan dengan instruksi switch.Syntax:

26
switch (ekpresi){ case konstanta_l: pernyataan;
. . break;
case konstanta_2: pernyataan; . . break; . . default: pernyataan; . .}
Kasus ada pada contoh 5, dituliskan dengan instruksi swicth pada contoh 6 :
Contoh 5:/*program contoh penggunaanperintah if else*/#include <iostream.h>#include <conio.h>main (){ char nh,nama[20],mk[20]; cout<<"Mengubah nilai huruf menjadi angka\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Mata kuliah : ";cin>>mk; cout<<"Nilai huruf : ";cin>> nh; int na; if (nh=='A') na=4; else if (nh=='B') na=3; else if (nh=='C') na=2; else if (nh=='D') na=1; else na=0; cout<<"\nNilai angka : "<<na;
getch();}

27
Contoh 6:/*program contoh penggunaanperintah switch*/#include <iostream.h>#include <conio.h>main (){ char nh,nama[20],mk[20]; cout<<"Mengubah nilai huruf menjadi angka\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Mata kuliah : ";cin>>mk; cout<<"Nilai huruf : ";cin>> nh; int na; switch (nh) { case 'A': na=4; break; case 'B': na=3; break; case 'C': na=2; break; case 'D': na=1; break; case 'E': na=0; break; default: cout<<"\nNilai yang anda masukkan salah"; } cout<<"\nNilai angka : "<<na; getch();}

28
MATERI IVPERULANGAN (LOOPING)
Kompetensi Dasar:Dapat menggunakan instruksi perulangan dalam pemecahan masalah.
Indikator Kompetensi:1. Mengenal dan memahami kapan diperlukannya perulangan.2. Memahami syntax perintah perulangan3. Dapat menggunakan perulangan untuk suatu aplikasi.
PERULANGAN
Contoh berikut digunakan untuk menampilkan tulisan ”Selamat datang” dilayar sebanyak 5 baris.
Contoh 1:#include <iostream.h>#include <conio.h>
main() { cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; getch();}
Tidak menjadi masalah jika yang ditampilkan ke layar hanya 5 baris, tetapi bagaimana
halnya jika kita ingin menampilkan tulisan tersebut dilayar sebanyak 10 baris, 50 baris atau
bahkan lebih.
Tentunya sangat tidak efisien jika harus mengcopy instruksi yang sama berulang ulang.
Itulah sebabnya muncul instruksi perulangan untuk mengatasi permasalahan tersebut.
Ada dua jenis perulangan:
1. Perulangan yang jumlahnya diketahui pasti.
Menggunakan instruksi for, while atau do while
2. Perulangan yang jumlahnya tidak diketahui pasti, tetapi diketahui kapan perulangan
tersebut dikerjakan (syarat agar perulangan dikerjakan).
Menggunakan instruksi while atau do while.

29
PERULANGAN YANG JUMLAHNYA DIKETAHUI
Perulangan Dengan ForSyntaxnya adalah sebagai berikut:
for (inisialisasi; kondisi/syarat; kenaikan-indek){ instruksi; . .}
Jalannya instruksi adalah sebagai berikut:
1. Pertama instruksi pada inisialisasi akan dijalankan. Umumnya inisialisasi
digunakan untuk memberi nilai awal variabel indek, walaupun tidak menutup
kemungkinan, dapat juga digunakan untuk inisialisasi variabel lain yang
diperlukan. Inisialisasi ini hanya dijalankan satu kali saja.
2. Berikutnya kondisi akan dicek, dipenuhi atau tidak.
3. Jika kondisi/syarat dipenuhi maka instruksi di dalam instruksi for akan dijalankan.
4. Akhirnya, akan mengeksekusi kenaikan indek. Untuk selanjutnya kembali ke
langkah 2.
Jika program pada contoh 1 ditulis dengan instruksi for, maka akan menjadi seperti di bawah ini:
Contoh 2:#include <iostream.h>#include <conio.h>
main() { for(int i=1;i<=5;i++) cout<<"\nSelamat datang"; getch();}
Pernyataan untuk inisialisasi dapat dituliskan lebih dari satu.
Contoh 3:#include <iostream.h>#include <conio.h>
main() { int a; for(int i=1,a=5;i<=10;i++) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; } getch();}

30
Contoh 3 diatas dapat juga dituliskan dengan cara sebagai berikut:
Contoh 4:#include <iostream.h>#include <conio.h>
main() { int a=5; int i=1; for(;i<=10;i++) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; } getch();}
Dapat juga dituliskan dengan cara sebagai berikut:
Contoh 5:#include <iostream.h>#include <conio.h>
main() { int a=5; int i=1; for(;i<=10;) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; i++; } getch();}
Untuk pemahaman terhadap contoh 3, 4 dan 5 perhatikan perbedaan penulisan pada
pernyataan for nya.
Indek untuk perulangan for tidak harus selalu bertambah dengan 1 (i++), tetapi juga bisa
dengan 2,3,4, atau lainnya tergantung kebutuhan, bahkan indek juga bisa dibuat menurun
(i--) seperti pada contoh 5a dan 5b berikut ini.
Contoh 5a:#include <iostream.h>#include <conio.h>
main() { int b; cout<<"Masukkan batas = ";cin>>b; for(int i=1;i<=b;i=i+2) cout<<i<<"\n"; getch();}

31
Contoh 5b:#include <iostream.h>#include <conio.h>
main() { int b; cout<<"Masukkan batas = ";cin>>b; for(int i=b;i>=1;i=i-2) cout<<i<<"\n"; getch();}
Perulangan Dengan WhileSyntax :
while (syarat){ instruksi; . .}
Jika contoh no 2 dan 3 akan ditulis menggunakan instruksi while maka akan menjadi sbb:
Contoh 6:#include <iostream.h>#include <conio.h>
main() { int i=1; while (i<=5) { cout<<"\nSelamat datang"; i++; } getch();}
Contoh 7:#include <iostream.h>#include <conio.h>
main() { int a=5,i=1; while (i<=10) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; i++; } getch();}

32
Perulangan Dengan Do WhileSyntax:do{ instruksi; . .}while (syarat);
Mirip dengan while, perbedaannya adalah:
While Do whileBisa jadi tidak akan pernah dikerjakan jika syarat tidak dipenuhi.Ini dikarenakan sebelum instruksi dikerjakan, syarat dicek terlebih dahulu.
Minimal dikerjakan satu kali walaupun syarat tidak dipenuhi.Ini dikarenakan instruksi dikerjakan dahulu, baru syarat dicek untuk melanjutkan perulangan.
Jika contoh 6 dan 7 ditulis dengan do while maka, akan menjadi sbb:
Contoh 8:#include <iostream.h>#include <conio.h>
main() { int i=1; do { cout<<"\nSelamat datang"; i++; } while (i<=5); getch();}
Contoh 9:#include <iostream.h>#include <conio.h>
main() { int a=5,i=1; do { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; i++; } while (i<=10); getch();}

33
Contoh kasus untuk latihan:1. Buat program untuk mencari rata-rata dari n bilangan.2. Buat program untuk mencari total penjualan dari n jenis barang, dan pemberian
diskon penjualan, dengan ketentuan, Pembelian diatas 500 ribu mendapat diskon 10%Pembelian diatas 200 ribu sampai dengan 500 ribu mendapat diskon 5%Pembelian 200 ribu kebawah tidak mendapat diskon.
3. Buat program untuk mencari ipk dari n matakuliah yang diambil seorang mahasiswa.
Untuk masing-masing nomor buat dengan instruksi for, while dan do while.
PERULANGAN YANG JUMLAHNYA TDK PASTI
Perhatikan contoh 10 berikut ini. Program digunakan untuk menginputkan n data.
Seandainya pada saat program dijalankan n diinputkan 10, tetapi karena kesalahan, terinput
100 maka tetap harus diinputkan 100 data. Ada cara lain untuk ini, dimana menggunakan
perulangan yang tidak diketahui pasti jumlahnya, tetapi diketahui kapan perulangan
dikerjakan, yakni selama masih ada data lagi. Sehingga program dimodifikasi menjadi
contoh no 11.
Contoh 10:#include <iostream.h>#include <conio.h>
main() { int b,angka; cout<<"Masukkan banyaknya data = ";cin>>b; for(int i=1;i<=b;i++) { cout<<"Data ke "<<i<<" = ";cin>>angka; } getch();}
Contoh 11:#include <iostream.h>#include <conio.h>
main() { int angka; char ada; cout<<"Apakah ada data yang ingin diinputkan (Y/T) = ";cin>>ada; while (ada=='Y') { cout<<"\nData = ";cin>>angka; cout<<"Apakah ada data yang ingin diinputkan (Y/T) = ";cin>>ada; } getch();}

34
MATERI VPOINTER DAN MEMORI DINAMIS
Kompetensi:Mampu memahami konsep pointer beserta penggunaanya
Indikator:1. Mampu mendeklarasikan pointer.2. Mampu menggunakan pointer dalam program
Operator Reference (&)Digunakan untuk mengetahui alamat memori yang ditempat oleh suatu variabel.
Contoh 1#include <iostream.h>#include <conio.h>
main() { int x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; getch();}
Program diatas akan menampilkan nilai variabel x, dan memori yang ditempati oleh x.
Mendeklarasikan tipe pointer.Dapat dilakukan seperti mendeklarasikan variabel biasa, tetapi dengan menambahkan tanda asterik (*) sebelum nama variabel.
Contoh :int *a;float *x;..dsb.
Perbedaan pointer dengan variable biasa
Pointer Variabel biasa (bukan pointer)Deklarasi variabel int *a; int b;Alamat memori Tidak otomatis OtomatisMengetahui alamat memori a &bMengetahui datanya *a b

35
Perhatikan pernyataan berikut,
int b;
b=5;
instruksi diatas benar, karena pada saat b dideklarasikan, otomatis akan dialokasikan space
di memori.
Perhatikan pula pernyataan berikut,
int *a;
*a=7
instruksi diatas tidak diperbolehkan, karena pointer tidak otomatis disediakan space di
memori, maka kita tidak bisa langsung menggunakannya untuk menyimpan data.
Sehingga, sebelum pointer tersebut digunakan untuk menyimpan data harus dicarikan
dahulu space di memori.
Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:1. Menempati space variable lain yang sudah punya space.2. Dialokasikan tersendiri.
Menempati space variabel lain.Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang tentunya sudah punya alokasi space di memori. Syntaxnya :
var_pointer = &var_biasa;
Contoh 2:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=&x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<*y; getch();}
Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan menginisialisasi *y.

36
Contoh 3 :#include <iostream.h>#include <conio.h>
main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}
Demikian juga, jika ada instruksi yang menginisialisasi *y, maka akan otomatis pula menginisialisasi nilai x. Coba anda pikirkan output dua contoh program berikut ini :
Contoh 4:#include <iostream.h>#include <conio.h>
main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p = "<<*p; getch();}
Contoh 5:#include <iostream.h>#include <conio.h>
main (){ int n1=5,n2=15; int *p1, *p2; p1 = &n1; p2 = &n2; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20;

37
cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p1 = "<<*p1; cout<<"\nNilai p2 = "<<*p2; getch();}
Alokasi space tersendiri di memori (Memori dinamis).Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori dengan instruksi new.Syntaxnya:var_ponter = new tipe_data-pointernya;
Contoh :int *a;float *x;a=new int;x=new float;
Perhatikan Contoh 6 yang dimodifikasi dari Contoh 3 sebelumnya.
Contoh 6:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}
x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula.
Membebaskan memori dari variabel dinamisDengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak digunakan lagi.Syntaxnya:delete var_pointer;

38
Contoh 7:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; delete y; cout<<"\n\nSetelah di delete"; cout<<"\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}
Perhatikan Contoh 7 diatas. Setelah dikenai instruksi delete y; maka nilai yang tersimpan
dalam *y akan hilang. Itulah sebabnya *y dikatakan sebagai variable dinamis, sedangkan x
merupakan variable statis, sehingga tidak bisa dibebaskan dari memori.

39
MATERI VPOINTER DAN MEMORI DINAMIS
Kompetensi:Mampu memahami konsep pointer beserta penggunaanya
Indikator:1. Mampu mendeklarasikan pointer.2. Mampu menggunakan pointer dalam program
Operator Reference (&)Digunakan untuk mengetahui alamat memori yang ditempat oleh suatu variabel.
Contoh 1#include <iostream.h>#include <conio.h>
main() { int x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; getch();}
Program diatas akan menampilkan nilai variabel x, dan memori yang ditempati oleh x.
Mendeklarasikan tipe pointer.
Dapat dilakukan seperti mendeklarasikan variabel biasa, tetapi dengan menambahkan
tanda asterik (*) sebelum nama variabel.
Contoh :int *a;float *x;..dsb.
Perbedaan pointer dengan variable biasa
Pointer Variabel biasa (bukan pointer)Deklarasi variabel int *a; int b;Alamat memori Tidak otomatis OtomatisMengetahui alamat memori a &bMengetahui datanya *a b

40
Perhatikan pernyataan berikut,int b;b=5;
instruksi diatas benar, karena pada saat b dideklarasikan, otomatis akan dialokasikan space di memori.
Perhatikan pula pernyataan berikut,int *a;*a=7
instruksi diatas tidak diperbolehkan, karena pointer tidak otomatis disediakan space di
memori, maka kita tidak bisa langsung menggunakannya untuk menyimpan data.
Sehingga, sebelum pointer tersebut digunakan untuk menyimpan data harus dicarikan
dahulu space di memori.
Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:1. Menempati space variable lain yang sudah punya space.2. Dialokasikan tersendiri.
Menempati space variabel lain.
Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang
tentunya sudah punya alokasi space di memori.
Syntaxnya :
var_pointer = &var_biasa;
Contoh 2:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=&x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<*y; getch();}
Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan
di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan
menginisialisasi *y.

41
Contoh 3 :#include <iostream.h>#include <conio.h>
main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}
Demikian juga, jika ada instruksi yang menginisialisasi *y, maka akan otomatis pula
menginisialisasi nilai x.
Coba anda pikirkan output dua contoh program berikut ini :
Contoh 4:#include <iostream.h>#include <conio.h>
main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p = "<<*p; getch();}

42
Contoh 5:#include <iostream.h>#include <conio.h>
main (){ int n1=5,n2=15; int *p1, *p2; p1 = &n1; p2 = &n2; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p1 = "<<*p1; cout<<"\nNilai p2 = "<<*p2; getch();}
Alokasi space tersendiri di memori (Memori dinamis).
Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori
dengan instruksi new.
Syntaxnya:
var_ponter = new tipe_data-pointernya;
Contoh :int *a;float *x;a=new int;x=new float;
Perhatikan Contoh 6 yang dimodifikasi dari Contoh 3 sebelumnya.
Contoh 6:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y;

43
getch();}
x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula.
Membebaskan memori dari variabel dinamis
Dengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara
membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak
digunakan lagi.
Syntaxnya:
delete var_pointer;
Contoh 7:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; delete y; cout<<"\n\nSetelah di delete"; cout<<"\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y;
getch();}
Perhatikan Contoh 7 diatas. Setelah dikenai instruksi delete y; maka nilai yang tersimpan
dalam *y akan hilang. Itulah sebabnya *y dikatakan sebagai variable dinamis, sedangkan x
merupakan variable statis, sehingga tidak bisa dibebaskan dari memori.

44
MATERI VPOINTER DAN MEMORI DINAMIS
Kompetensi:Mampu memahami konsep pointer beserta penggunaanya
Indikator:1. Mampu mendeklarasikan pointer.2. Mampu menggunakan pointer dalam program
Operator Reference (&)Digunakan untuk mengetahui alamat memori yang ditempat oleh suatu variabel.
Contoh 1#include <iostream.h>#include <conio.h>
main() { int x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; getch();}
Program diatas akan menampilkan nilai variabel x, dan memori yang ditempati oleh x.
Mendeklarasikan tipe pointer.Dapat dilakukan seperti mendeklarasikan variabel biasa, tetapi dengan menambahkan tanda asterik (*) sebelum nama variabel.
Contoh :int *a;float *x;..dsb.
Perbedaan pointer dengan variable biasa
Pointer Variabel biasa (bukan pointer)Deklarasi variabel int *a; int b;Alamat memori Tidak otomatis OtomatisMengetahui alamat memori a &bMengetahui datanya *a b

45
Perhatikan pernyataan berikut,
int b;
b=5;
instruksi diatas benar, karena pada saat b dideklarasikan, otomatis akan dialokasikan space
di memori.
Perhatikan pula pernyataan berikut,
int *a;
*a=7
instruksi diatas tidak diperbolehkan, karena pointer tidak otomatis disediakan space di
memori, maka kita tidak bisa langsung menggunakannya untuk menyimpan data.
Sehingga, sebelum pointer tersebut digunakan untuk menyimpan data harus dicarikan
dahulu space di memori.
Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:1. Menempati space variable lain yang sudah punya space.2. Dialokasikan tersendiri.
Menempati space variabel lain.
Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang
tentunya sudah punya alokasi space di memori.
Syntaxnya :
var_pointer = &var_biasa;
Contoh 2:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=&x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<*y; getch();}

46
Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan
di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan
menginisialisasi *y.
Contoh 3 :#include <iostream.h>#include <conio.h>
main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}
Demikian juga, jika ada instruksi yang menginisialisasi *y, maka akan otomatis pula menginisialisasi nilai x.Coba anda pikirkan output dua contoh program berikut ini :
Contoh 4:#include <iostream.h>#include <conio.h>
main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p = "<<*p; getch();}

47
Contoh 5:#include <iostream.h>#include <conio.h>
main (){ int n1=5,n2=15; int *p1, *p2; p1 = &n1; p2 = &n2;
*p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p1 = "<<*p1; cout<<"\nNilai p2 = "<<*p2; getch();}
Alokasi space tersendiri di memori (Memori dinamis).
Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori
dengan instruksi new.
Syntaxnya:
var_ponter = new tipe_data-pointernya;
Contoh :int *a;float *x;a=new int;x=new float;
Perhatikan Contoh 6 yang dimodifikasi dari Contoh 3 sebelumnya.Contoh 6:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

48
x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula.
Membebaskan memori dari variabel dinamisDengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak digunakan lagi.Syntaxnya:delete var_pointer;
Contoh 7:#include <iostream.h>#include <conio.h>
main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; delete y; cout<<"\n\nSetelah di delete"; cout<<"\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}
Perhatikan Contoh 7 diatas. Setelah dikenai instruksi delete y; maka nilai yang tersimpan
dalam *y akan hilang. Itulah sebabnya *y dikatakan sebagai variable dinamis, sedangkan x
merupakan variable statis, sehingga tidak bisa dibebaskan dari memori.

49
MATERI VIFUNGSI
Kompetensi dasar:
Mampu membuat fungsi dalam pemecahan masalah.
Indikator kompetensi:
1. Memahami perlunya fungsi
2. Mampu memilih kapan menggunakan tipe fungsi tertentu
3. Mampu mendeklarasikan fungsi
4. Mampu membedakan variabel lokal dan global
5. Mampu melakukan pemanggilan fungsi dari fungsi lain
6. Mampu membuat aplikasi lengkap yang mengandung fungsi berbagai tipe berikut
pemanggilannya di fungsi lainnya
Perlunya FungsiJika kita dihadapkan oleh suatu permasalahan yang besar, untuk mempermudah pemecahannya, maka akan lebih baik jika dibagi-bagi menjadi sub permasalahan yang lebih kecil.Inilah yang merupakan konsep dari pemrograman terstruktur.
FungsiDeklarasi fungsi:
tipe_fungsi nama_fungsi(parameter_formal){ instruksi dan deklarasi var lokal}
BIG PROBLEM
subproblem subproblemsubproblem subproblem. . . . . . . . .

50
Ada 2 tipe fungsi :1. void
Fungsi tanpa return value.2. bukan void (int, float, char dll …..)
Fungsi dengan return value.
Nama fungsi dapat dipilih sembarang, tetapi tetap mempertimbangkan syarat sebagaimana jika kita memilih identifier.
Petunjuk membuat fungsi:1. Agar lebih mudah anggap bahwa membuat fungsi sama dengan membuat
program.2. Tentukan variable input dan variable outputnya.3. Jika jumlah variable output sama dengan satu maka
kita bisa buat dalam fungsi yang tipenya void maupun bukan void.else
tipe fungsi harus void
Fungsi tipenya bukan void :
a. tipe fungsi sama dengan tipe output
b. parameter formal (parameter value) fungsi adalah variable inputnya.
c. Instruksi fungsi = instruksi program dengan menghilangkan instruksi untuk
menginputkan data pada variable input, dan instruksi untuk menampilkan hasil dari
variable output.
d. Cek kembali apakah masih ada variable yang belum dideklarasikan. Jika ada, maka
deklarasikan sebagai variable local.
e. Diakhiri dengan instruksi :
return var_output;
Fungsi yang tipenya void:
a. tipe fungsinya void
b. Parameter formal fungsi ada dua macam:
parameter value, adalah variable inputnya.
Parameter reference/address, adalah variable outputnya
c. Instruksi fungsi = instruksi program dengan menghilangkan instruksi untuk
menginputkan data pada variable input, dan instruksi untuk menampilkan hasil dari
variable output.

51
Pemanggilan fungsi:1. Fungsi yang tipenya void
nama_fungsi(parameter_aktual);
2. Fungsi yang tipenya bukan voidnama_var = nama_fungsi(parameter_aktual);nama_var harus dideklarasikan dulu, tipenya harus sama dengan tipe output fungsi
Cotoh:a. Fungsi mencari luas persegi panjang.
Input : p, l intOutput: ls int
Karena outputnya ada 1 variabel maka dapat dibuat fungsi dengan return value maupun tanpa return value.
Fungsi dengan return value (tipenya = tipe output = int)
Contoh 1:#include <iostream.h>#include <conio.h>
int luas(int p, int l){ int ls; ls = p*l; return ls; }
main(){ int pj,lb,hsl; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; hsl=luas(pj,lb); cout<<"\nLuasnya = "<<hsl; getch();}
Program diatas dapat juga dituliskan seperti berikut:
Contoh 2:#include <iostream.h>#include <conio.h>
int luas(int p, int l){return (p*l); }
main(){ int pj,lb; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; cout<<"\nLuasnya = "<<luas(pj,lb); getch();}

52
Fungsi tanpa return value (tipenya void)
Contoh 3:#include <iostream.h>#include <conio.h>
void luas(int &ls, int p, int l){ ls = p*l; }
main(){ int pj,lb, hsl; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl,pj,lb); cout<<"\nLuasnya = "<<hsl; getch();}
b. Fungsi mencari luas dan keliling persegi panjang (dalam satu fungsi).Input : p, l intOutput: ls,kl int
Karena outputnya ada 2 variabel maka hanya dapat dibuat fungsi tanpa return value, tipenya void, sebagai berikut:
Contoh 4:#include <iostream.h>#include <conio.h>
void luas(int &ls, int &kl, int p, int l){ ls = p*l; kl = 2*(p+l); }
main(){ int pj,lb, hsl1,hsl2; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl1,hsl2,pj,lb); cout<<"\nLuasnya = "<<hsl1; cout<<"\nKelilingnya = "<<hsl2; getch();}
c. Fungsi menampilkan tulisan dilayar.Input : tdk adaOutput: tdk ada
Karena outputnya tdk ada maka hanya dapat dibuat fungsi tanpa return value, tipenya void.Misalnya fungsi tersebut dimasukkan ke dalam contoh program 4, maka menjadi sebagai berikut:

53
Contoh 5:#include <iostream.h>#include <conio.h>
void luas(int &ls, int &kl, int p, int l){ ls = p*l; kl = 2*(p+l); }
void cetak(){cout<<"MENCARI LUAS DAN KELILING PERSEGI PANJANG\n\n";}
main(){ cetak(); int pj,lb, hsl1,hsl2; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl1,hsl2,pj,lb); cout<<"\nLuasnya = "<<hsl1; cout<<"\nKelilingnya = "<<hsl2; getch();}
Letak fungsi:1. Dapat diletakkan sebelum main()2. Dapat juga diletakkan setelah main(). Namun jika fungsi diletakkan setelah main,
sebelum main harus dituliskan prototype fungsinya.
Contoh 6:#include <iostream.h>#include <conio.h>
void luas(int &ls, int &kl, int p, int l);void cetak();
main(){ cetak(); int pj,lb, hsl1,hsl2; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl1,hsl2,pj,lb); cout<<"\nLuasnya = "<<hsl1; cout<<"\nKelilingnya = "<<hsl2; getch();}
void luas(int &ls, int &kl, int p, int l){ ls = p*l; kl = 2*(p+l); }

54
void cetak(){cout<<"MENCARI LUAS DAN KELILING PERSEGI PANJANG\n\n";}
Variabel local dan global
Variabel global dapat diakses oleh semua fungsi dalam program. Variabel global sangat
berbahaya karena secara tidak sengaja dapat termodifikasi oleh instruksi-instruksi dalam
programnya sehingga pemakaian variabel global ini harus seminimal mungkin.
Deklarasinya adalah sebelum deklarasi fungsi.
Sedangkan variabel lokal hanya dapat diakses oleh fungsi dimana variabel lokal tersebut
didefinisikan sehingga scope dari variabel lokal tersebut teriindungi. Variabel lokal tidak
dapat diubah atau bahkan dihapus oleh fungsi-fungsi yang lain.
Deklarasinya adalah di dalam fungsi yang menggunakannya.
#include <iostream.h>#include <conio.h>int a; ini adalah variable global
main() { int b; ini adalah variable lokal
}
Contoh 7:#include <iostream.h>#include <conio.h>int i=5;
void fungsi(){ i+=2; cout<<"\nNilai i dari fungsi = "<<i;}
main() { i+=3; cout<<"\nNilai i dari main = "<<i; fungsi(); getch();}

55
Pada contoh 7, i adalah variabel global, sehingga akan dikenali di semua bagian program.
Akibatnya jika ada pernyataan yang mengubah nilai i maka tentunya nilainya akan
menyesuaikan.
Variabel static dan dynamic
Istilah automatik dan statik menjelaskan apa yang terjadi pada suatu variabel lokal dalam
suatu fungsi sesaat setelah fungsi ini selesai dipanggil dan eksekusi program kembali ke
prosedur yang memanggil.
Default dari variabel lokal dalam suatu fungsi adalah automatik artinya variabel lokal
tersebut dihapus pada saat fungsi selesai dipanggil.
Untuk mendefinisikan suatu variabel automatik, tambahkan awalan auto pada deflnisi
variabel tersebut.
Karena default dari variabel lokal adalah automatik maka awalan auto ini optional, jadi
boleh dihilangkan
Kebalikan dari variabel automatik adalah variabel statik yaitu tidak dihapus pada saat
fungsi berakhir. Semua variabel global adalah statik.
Variabel lokal yang sifatnya automatic dapat diubah menjadi static. Untuk membuat suatu
variabel lokal statik, tambahkan awalan static pada definisi variabel lokal tersebut.
Variabel lokal statik tidak kehilangan nilainya pada saat fungsi berakhir dan tetap lokal
dalam fungsi tersebut. Jika fungsi yang mengandung variabel lokal statik ini dipanggil lagi
maka nilai variabel ini masih ada.
Untuk pemahaman konsep diatas, bandingkan output dari Contoh 8 dan Contoh 9 berikut
ini.
Contoh 8:#include <iostream.h>#include <conio.h>
void fungsi(){ int j=7; j+=2; cout<<"\nNilai j dari fungsi = "<<j;}
main() { fungsi(); fungsi(); getch();}

56
Contoh 9:#include <iostream.h>#include <conio.h>
void fungsi(){ static int j=7; j+=2; cout<<"\nNilai j dari fungsi = "<<j;}
main() { fungsi(); fungsi(); getch();}

57
MATERI VIIARRAY
Kompetensi dasar:Mampu menggunakan tipe array untuk pemecahan masalah.
Indikator kompetensi:1. Memahami perlunya array2. Mampu menentukan kapan harus menggunakan array.3. Mampu mendeklarasikan array4. Mampu membuat aplikasi lengkap yang mengandung array, dan menggunakan
fungsi yang menggunakan parameter array.
ARRAYDigunakan untuk menyimpan sekelompok data yang tipenya sama.
Deklarasi Array 1 Dimensitipe nama_var[max_data];
Contoh:int a[5];float x[100];char nama[25];.dst.
Cara mengakses data bertipe array nama_variabel[alamat]
Misal : Array a
27 23 35 46 87 data yang tersimpan di array0 1 2 3 4 alamat array (dimulai dari 0)
a[0] = 27a[1] = 23..a[4] = 87
Menginputkan data ke array
Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah elemen array banayk,
tentunya cara ini tidak efisien. Oleh karena itu dapat digunakan bantuan instruksi
perulangan untuk input datanya.

58
Contoh 1:#include <iostream.h>#include <conio.h>
main() { int a[5]; cout<<"Data ke 0 = ";cin>>a[0]; cout<<"Data ke 1 = ";cin>>a[1]; cout<<"Data ke 2 = ";cin>>a[2]; cout<<"Data ke 3 = ";cin>>a[3]; cout<<"Data ke 4 = ";cin>>a[4]; int jumlah; jumlah=a[0]+a[1]+a[2]+a[3]+a[4]; cout<<"\n\nJumlahnya = "<<jumlah; getch();}
Contoh 2:#include <iostream.h>#include <conio.h>
main() { int a[5]; int jumlah=0; for(int i=0;i<5;i++) { cout<<"Data ke "<<i<<" = ";cin>>a[i]; jumlah+=a[i]; } cout<<"\n\nJumlahnya = "<<jumlah; getch();}
Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan perubahan pada contoh 3 menjadi sebagai berikut:
Contoh 3:#include <iostream.h>#include <conio.h>
main() { int *a=new int[5]; int jumlah=0; for(int i=0;i<5;i++) { cout<<"Data ke "<<i<<" = ";cin>>a[i]; jumlah+=a[i]; } cout<<"\n\nJumlahnya = "<<jumlah; getch();}

59
Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array dideklarasikan sebagai
pointer, maka untuk pengaksesan datanya cukup dituliskan sebagai array. Tetapi kita tetap
bisa menuliskannya sebagai pointer tanpa harus menyertakan alamat arraynya. Jika
demikian maka data akan diambilkan dari data pertama, atau data pada alamat ke 0.
Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan instruksi :
cout<<"\nData = "<<*a;
atau instuksi :
cout<<"\nData = "<<a[0];
akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0).
Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk fungsi
seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter fungsi, jumlah
data yang tersimpan dalam array boleh ditulis boleh tidak (optional). Sehingga bisa ditulis
dengan : b[] saja
Contoh 4 :#include <iostream.h>#include <conio.h>
void input_array(int b[],int n){ for(int i=0;i<n;i++) { cout<<"Data ke "<<i<<" = ";cin>>b[i]; }}
int jumlah(int b[],int n){ int hasil=0; for(int i=0;i<n;i++) hasil+=b[i]; return hasil;}
main() { int a[100]; int bd; cout<<"Masukkan banyaknya data = ";cin>>bd; input_array(a,bd); cout<<"\n\nJumlahnya = "<<jumlah(a,bd); getch();}

60
Penggunaan array 1D untuk sorting data
Pada proses berikut ingin akan diurutkan n data yang tersimpan di array dengan metode
Bubble Sort.
Contoh 5:#include <iostream.h>#include <conio.h>
void masukan(int a[],int n){ for(int i=0;i<n;i++) { cout<<"Data ke "<<i<<" = ";
cin>>a[i]; }
}
void urutkan(int a[], int n){ int temp; for(int i=0;i<n;i++) for(int j=0;j<(n-i);j++) if (a[j]>a[j+1])
{ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }
}
void tampil(int a[], int n){ for(int i=0;i<n;i++)
cout<<a[i]<<" "; }
main() { int a[100]; int jml; cout<<"Banyak data = ";cin>>jml; masukan(a,jml); urutkan(a,jml); cout<<"\n\nSetelah diurutkan "; tampil(a,jml); getch();
}

61
Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan untuk
menginputkan data ke dalam array, fungsi kedua untuk mengurutkan arraynya, dan fungsi
ketiga untuk menampilkan data yang tersimpan di array ke layar.
Array 2 DimensiContoh deklarasi :int a[4][5];
0 1 2 30 25 40 26 121 6 8 12 52 1 3 8 93 15 22 13 194 0 5 7 15
Mengakses data :
a[0][0] = 25a[0][1] = 40..dst
Penggunaan array 2D untuk menjumlahkan dua matrik
Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c. Syarat agar
matrik dapat dijumlahkan adalah keduanya mempunyai ukuran yang sama.
Baris matrik 1 = Baris matrik 2
Kolom matrik 1 = Kolom matrik 2
Contoh 6:#include <iostream.h>#include <conio.h>
void masukan(int a[10][10],int b,int k){ for(int i=0;i<b;i++) for(int j=0;j<k;j++) {cout<<"Data ke "<<i<<j<<" = ";cin>>a[i][j]; }}
void jumlah(int a1[][10],int a2[][10],int a3[][10],int b1,int k1){ for(int i=0;i<b1;i++) for(int j=0;j<k1;j++) a3[i][j]=a1[i][j]+a2[i][j];}
void tampilkan(int a[10][10],int b,int k)

62
{ for(int i=0;i<b;i++) { for(int j=0;j<k;j++) cout<<a[i][j]<<" "; cout<<"\n"; }}
main() { int dt1[10][10],dt2[10][10],dt3[10][10];int b1,k1;
cout<<"Jumlah baris matrik = ";cin>>b1; cout<<"Jumlah kolom matrik = ";cin>>k1; cout<<"\nMatrik pertama\n"; masukan(dt1,b1,k1); cout<<"\nMatrik kedua\n"; masukan(dt2,b1,k1); jumlah(dt1,dt2,dt3,b1,k1);clrscr();
cout<<"\nMatrik pertama\n"; tampilkan(dt1,b1,k1); cout<<"\nMatrik kedua\n"; tampilkan(dt2,b1,k1); cout<<"\nMatrik hasil penjumlahan\n"; tampilkan(dt3,b1,k1); getch();}
Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh ditulis boleh
tidak, tetapi jumlah kolom harus ditulis.
Tipe array dapat dikembangkan menjadi array multidimensi. Misal 3D, 4D, dan
sebagainya.