• Tidak ada hasil yang ditemukan

BAHAN AJAR MATA KULIAH TEKNIK PEMROGRAMAN TERSTRUKTUR 2

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAHAN AJAR MATA KULIAH TEKNIK PEMROGRAMAN TERSTRUKTUR 2"

Copied!
60
0
0

Teks penuh

(1)

BAHAN AJAR MATA KULIAH

TEKNIK PEMROGRAMAN TERSTRUKTUR 2

Oleh Margi Cahyanti

UNIVERSITAS GUNADARMA

JAKARTA

(2)

i

DAFTAR ISI

Halaman KATA PENGANTAR ... i DAFTAR ISI ... ii BAB I PENGENALAN C++ ... 1

BAB 2 FUNGSI MANIPULATOR PADA C++ ... 2

BAB 3 PERCABANGAN KONDISI IF BAHASA C++ ... 6

BAB 4 PERULANGAN FOR, WHILE & DO WHILE BAHASA C++ ... 14

BAB 5 ARRAY ... 23

BAB 6 POINTER PADA C++... 28

BAB 7 FUNCTION ... 31

BAB 8 STRUKTUR C++ ... 45

BAB 9 OBJECT ORIENTED PROGRAMMING ... 49

(3)

vi

KATA PENGANTAR

Segala puji serta syukur penulis panjatkan kehadirat Allah SWT, atas segala rahmat dan limpahan anugerah serta keridhoan-Nya yang telah memungkinkan bagi penulis untuk menyelesaikan tesis ini.

Adapun maksud dan tujuan dari pembuatan modul ini untuk melengkapi bahan ajar mata kuliah ‘Teknik Pemrograman Terstruktur 2’.

Saya berharap, semoga modul ini dapat memberikan manfaat dan memberikan pengetahuan lebih bagi para Civitas Universitas Gunadarma. Akhir kata, semoga Allah SWT membalas segala kebaikan.

(4)

1

BAB I

PENGENALAN BAHASA PEMROGRAMAN C++

Bahasa Pemrograman C++ adalah bahasa Pemrograman Komputer Tingkat Tinggi (High Level Language), tapi C++ juga dimungkinkan untuk menulis Bahasa Pemrograman Tinggkat Rendah (Low Level Language) di dalam pengkodingan.

karena C++ merupakan peluasan dari Bahasa Pemrograman C yang tergolong dalam Bahasa Pemrograman Tingat Menengah (Middle Level Language), yang berarti Bahasa Pemrograman C++ memiliki semua fitur dan kelebihan yang bahasa pemrograman C miliki, termasuk kelebihan Bahasa C yaitu kita dimungkinkan untuk menggunakan Bahasa Pemrograman Assembly di dalam pengkodingan C, dan juga menyediakan fasilitas untuk memanipulasi memori tingkat rendah.

C++ adalah peluasan dan penyempurnaan dari bahasa pemrograman sebelumnya yaitu bahasa C, oleh Bjarne Stroustrup pada tahun 1980. Awal C++ mempunyai nama yaitu “C with Classes” dan berganti nama menjadi C++ pada tahun 1983. Bjarne Stroustrup membuat bahasa pemrograman C++ dengan tambahan fasilitas, yang sangat berguna pada tahun itu sampai sekarang, yaitu bahasa pemrograman yang mendukung OOP (Object Oriented Programming). C++ dirancang sebagai bias terhadap sistem pemrograman dan embedded sistem, dengan mengutamakan kinerja, kecepatan, efisiensi dan fleksibilitas penggunaan. C++ telah dan sangat berguna dalam banyak hal, seperti pembuatan aplikasi desktop, server dan performance-critical (misalnya switch telepon dan pesawat luar angkasa).

Fitur-fitur C ++

• Merupakan salah satu bahasa pemrograman yang paling banyak digunakan di dunia dan hampir semua program di dunia dibuat dengan menggunakan C/C++.

Portable. Karena memiliki banyak kompiler yang berjalan di berbagai platform dan secara eksklusif menggunakan Standar Library C++ yang akan berjalan pada banyak platform dengan tidak adanya perubahan fungsi-fungsi pada Library C++. • Mendukung Manifest dan Inferred Typing. Fitur tersebut sudah ada semenjak kelahiran

C++ pertama hingga C++ Modern saat ini, C ++ memungkinkan fleksibilitas dan juga menyediakan kesederhanaan dalam menulis program.

• C++ Menawarkan banyak pilihan paradigma. Beberapa adalah paradigm yang sangat terkenal dalam C++ adalah menawarkan dukungan luar biasa untuk Pemrograman Prosedural, Generik, Berorientasi Objek (OOP) dan masih banyak paradigm yang memberikan kemudahan untuk programmer C++.

• Memiliki dukungan Library yang luar biasa. C++ memiliki Standar Library C++ yang memiliki banyak sekali fungsi dan tidak hanya itu, banyak juga programmer lain yang mengembangkan C++ dan membuat Library tambahan yang sangat berguna.

• Bahasa yang dikompilasi. C ++ mengkompilasi langsung ke bahasa mesin, yang menjadikanya menjadi salah satu bahasa pemrograman tercepat di dunia.

(5)

2 BAB II

FUNGSI MANIPULATOR PADA C++

PENGERTIAN MANIPULATOR

Manipulator adalah fungsi pembantu yang memungkinkan untuk mengontrol input / output stream. Manipulator pada umumnya digunakan untuk mengatur tampilan layar. Contohnya untuk mengatur supaya suatu nilai ditampilkan dengan lebar 8 karakter dan diatur rata kiri terhadap lebar tersebut.

Dalam C++, terdapat beberapa manipulator yang merupakan fitur baru, yang baru ditambahkan. hal ini karena compiler C++ klasik (belum distandarisasi) tidak mendukung adanya manipulator.

JENIS-JENIS MANIPULATOR C++, LENGKAP CONTOH PROGRAM 1. endl

endl adalah sebuah fungsi manipulator yang berguna untuk memasukkan karakter NewLine atau mengatur pindah baris, dengan kata lain fungsi manipulator ini serupa dengan "\n". Fungsi endl sangat dibutuhkan untuk piranti keluaran berupa file di disk. Untuk menggunakan manipulator ini, kita harus menyertakan file header <iostream>

2. ends

ends adalah sebuah fungsi manipulator yang berguna untuk menambah karakter null (nilai ASCII NOL) kederetan suatu karakter. Fungsi seperti ini seringkali diperlukan, misalnya untuk mengirim sejumlah karakter ke file di disk atau modem dan mengakhirinya dengan karakter NULL. Untuk menggunakan manipulator ini, kita harus menyertakan file header <iostream>

Contoh :

cout<<'M'<<'D'<<ends;

Pernyataan di atas mengirimkan 2 buah karakter (M dan D) serta sebuah karakter null. Pada layar, ends akan menimbulkan sebuah karakter kosong.

#include <iostream> using namespace std;

int main () {

int nilai1=100, nilai2=80;

int jumlah = nilai1 + nilai2;

cout<<"Nilai 1 : "<<nilai1<<".";

cout<<"\nNilai 2 : "<<nilai2<<ends<<ends<<".";

cout<<"\n\nJumlah Kedua Nilai : "<<jumlah;

return 0; }

3. setw( )

setw( ) adalah sebuah fungsi manipulator yang berguna untuk mengatur lebar dari suatu tampilan data. Seandainya kita akan menggunakan manipulator ini, kita harus menyertakan file header <iomanip>. Bentuk umum penulisan setw() adalah sebgai berikut:

(6)

3

n = adalah nilai lebar tampilan data, yang bernilai integer.

Untuk lebih jelasnya, fungsi manipulator setw() dapat dilihat pada program dibawah ini: #include <iostream>

#include <iomanip> using namespace std;

int main () {

int jumbar1 = 1300, jumbar2 = 80, jumbar3 = 520;

cout<<"Barang 1 = "<<setw(8)<<jumbar1<<endl;

cout<<"Barang 2 = "<<setw(8)<<jumbar2<<endl;

cout<<"Barang 3 = "<<setw(4)<<jumbar3<<endl;

return 0; }

4. dec( ), oct( ) dan hex( )

dec, oct dan hex adalah sebuah fungsi manipulator yang berguna untuk memunculkan data dalam bentuk hexadesimal (bilangan berbasis 16), oktal (bilangan berbasis 8) dan desimal (bilangan berbasis 10). Seandainya kita akan menggunakan manipulator ini, sobat harus menyertakan file header <iomanip>.

#include <iostream> #include <iomanip> using namespace std; int main () { int nilai = 500;

cout<<"Nilai Awal= "<<nilai<<endl<<endl;

cout<<"Nilai ke Desimal = "<<dec<<nilai<<endl;

cout<<"Nilai ke Oktal = "<<oct<<nilai<<endl;

cout<<"Nilai ke Hexadesimal = "<<hex<<nilai<<endl;

return 0; }

5. setbase( )

setbase( ) adalah sebuah fungsi manipulator yang berguna untuk konversi bilangan desimal, oktal dan hexadesimal. Seandainya kita akan menggunakan manipulator setbase(), sobat harus menyertakan file header <iomanip>. Bentuk penulisannya setbase() adalah sebgai berikut: setbase(base bilangan); #include <iostream> #include <iomanip> using namespace std; int main () { int MD;

cout<<"Penerapan Manipulator setbase()"<<"\n\n";

cout<<"Desimal Oktal Hexadesimal"<<endl;

cout<<"---"<<"\n";

for(MD=180;MD<=190;MD++){

cout<<setbase(10)<<MD<<" ";

cout<<setbase(8)<<MD<<" ";

cout<<setbase(16)<<MD<<endl;

}

return 0; }

(7)

4 6. setfill( )

setfill( ) adalah sebuah fungsi manipulator yang berguna untuk menampilkan suatu karakter yang diletakkan didepan nilai yang diatur oleh fungsi setfill(). Untuk menggunakan

manipulator setfill(), kita harus menyertakan file header <iomanip>. Bentuk penulisannya setfill() adalah sebgai berikut:

setfill(charakter); #include <iostream> #include <iomanip> using namespace std; int main () { int MD;

cout<<"Penggunan Manipulator setfill()"<<"\n\n";

for(MD=1;MD<=15;MD++)

{

cout<<setfill('*');

cout<<setw(MD)<<MD<<endl;

}

return 0; }

7. setprecision( )

setprecision( ) adalah sebuah fungsi manipulator yang berguna untuk mengatur jumlah digit desimal yang ingin ditampilkan. biasanya setprecision() digunakan jika sobat bekerja dengan menggunakan bilangan pecahan, dengan setprecision() kita dapat mengatur jumah digit pecahan yang ingin ditampilkan, Untuk menggunakan manipulator setprecision(), kita harus menyertakan file header <iomanip>

#include <iostream> #include <iomanip> using namespace std; int main () { float M,D,MD; M = 12.34; D = 38.56; MD = M * D;

cout<<setiosflags(ios::fixed);

cout<<setprecision(0)<<MD<<endl;

cout<<setprecision(2)<<MD<<endl;

cout<<setprecision(4)<<MD<<endl;

cout<<setprecision(6)<<MD<<endl;

cout<<setprecision(8)<<MD<<endl;

return 0; }

8. setiosflags( )

setiosflags( ) adalah sebuah fungsi manipulator yang dipakai untuk mengatur berbagai format keluaran data, Untuk menggunakan manipulator setiosflags(), sobat harus menyertakan file header <iomanip>. Terdapat berbagai format keluaran (outout) untuk fungsi setiosflags(), diantaranya adalah sebagai berikut:

(8)

5

Tanda Format Keterangan

ios::right Menyetel rata kanan pada lebar field yang diatur melalui setw()

ios::left Menyetel rata kiri pada lebar field yang diatur melalui setw()

ios::fixed Memformat keluaran dalam bentuk notasi desimal ios::scientific Memformat keluaran pada notasi eksponensial ios::oct Memformat keluaran pada basis 8 (oktal)

ios::hex Memformat keluaran pada basis 16 (heksadesimal) ios::dec Memformat keluaran pada basis 10 (desimal)

ios::uppercase Memformat huruf dalam notasi heksadesimal pada bentuk huruf kapital

ios::showpoint Menampilkan titik desimal dalam bilangan pecahan yang tidak mempunyai bagian pecahan

ios::showbase Menampilkan awalan 0x bagi bilangan heksadesimal atau 0 (nol) bagi bilangan oktal

ios::showpos Untuk menampilkan tanda + pada bilangan positif

Untuk lebih jelasnya, fungsi manipulator setiosflags( ) yang menggunakan tanda format ios::left dan ios::right dapat dilihat pada contoh program dibawah ini:

#include <iostream> #include <iomanip> using namespace std; int main () { int M = 20, D = 35;

// Contoh fungsi manipulator setiosflags() cout<<"\nPenggunaan ios::left dan ios::right\n";

cout<<"\nRata Sebelah Kiri = ";

cout<<setiosflags(ios::left)<<setw(8)<<M;

cout<<setiosflags(ios::left)<<setw(8)<<D;

cout<<"\nRata Sebelah Kanan = ";

cout<<setiosflags(ios::right)<<setw(8)<<M;

cout<<setiosflags(ios::right)<<setw(8)<<D;

return 0; }

(9)

6 BAB III

PERCABANGAN KONDISI IF ELSE BAHASA C++

PENGERTIAN KONDISI IF ELSE BAHASA C++

Pada dasarnya, kondisi IF ELSE merupakan modifikasi tambahan dari kondisi IF yang sudah kita pelajari sebelumnya.

Blok kode program IF tetap akan dijalankan ketika kondisi true (1), namun sekarang terdapat tambahan bagian ELSE akan dijalankan ketika kondisi false (0).

Berikut format dasarnya:

if (condition) {

//Kode program yang akan dijalankan jika condition berisi nilai True (1)

} else {

//Kode program yang akan dijalankan jika condition berisi nilai False (0)

}

Bagian condition berperan sebagai penentu dari struktur percabangan ini. Jika condition terpenuhi (menghasilkan nilai TRUE atau 1), blok kode program milik IF akan dijalankan. Jika condition tidak terpenuhi (menghasilkan nilai FALSE atau 0), blok kode program bagian ELSE-lah yang akan diproses.

CONTOH KODE PROGRAM PERCABANGAN IF ELSE BAHASA C++

Pada tutorial sebelumnya saya membuat program pencari bilangan genap / ganjil menggunakan 2 buah kondisi IF sebagai berikut:

if (a % 2 == 0) {

cout<<" adalah angka genap \n"<< a; }

if (a % 2 == 1) {

cout<<" adalah angka ganjil \n"<< a; }

Alur ini sebenarnya akan lebih sederhana (dan lebih efisien) jika kita ubah ke dalam struktur IF ELSE. Jika sebuah angka tidak genap, maka pasti itu adalah angka ganjil. Sehingga jika kondisi if (a % 2 == 0) tidak terpenuhi (false), maka variabel a pasti berisi angka ganjil. Dengan demikian kode programnya bisa saya tulis ulang sebagai berikut:

#include <iostream.h>

int main() {

int a;

cout<<"Input sembarang angka: ";

cin>>a;

cout<<("\n");

if (a % 2 == 0) {

cout<<" adalah angka genap \n"<< a;

}

(10)

7

cout<<" adalah angka ganjil \n"<< a;

}

return 0; }

Sekarang jika kondisi if (a % 2 == 0) menghasilkan false, bagian ELSE lah yang akan di proses. Kode program akan jadi lebih efisien karena pemeriksaan kondisi hanya perlu dilakukan 1 kali saja.

Berikut contoh lain dari struktur kondisi IF ELSE:

#include <iostream.h> int main() { int a;

cout<<"Input nilai ujian: ";

cin>> a;

printf("\n");

if (a >= 75) {

printf("Selamat, anda lulus \n");

}

else {

printf("Maaf, silahkan coba lagi tahun depan \n");

}

return 0; }

Hasil kode program: 1

2 3 4 5

Input nilai ujian: 60

Maaf, silahkan coba lagi tahun depan

Input nilai ujian: 80 Selamat, anda lulus

Di sini saya membuat kondisi if (a >= 75), yakni jika variabel a berisi angka lebih besar atau sama dengan 75 maka jalankan perintah printf(“Selamat, anda lulus \n”). Jika tidak, blok ELSE lah yang akan di eksekusi, yakni printf(“Maaf, silahkan coba lagi tahun depan \n”). PERCABANGAN KONDISI IF ELSE IF BAHASA C++

Pengertian Kondisi IF ELSE IF bahasa C++

Pada dasarnya, kondisi IF ELSE IF adalah sebuah struktur logika program yang di dapat dengan cara menyambung beberapa kondisi IF ELSE menjadi sebuah kesatuan.

Jika kondisi pertama tidak terpenuhi atau bernilai false, maka kode program akan lanjut ke kondisi IF di bawahnya. Jika ternyata tidak juga terpenuhi, akan lanjut lagi ke kondisi IF di bawahnya, dst hingga blok ELSE terakhir atau terdapat kondisi IF yang bernilai true.

(11)

8

Berikut format dasar penulisan kondisi IF ELSE IF dalam bahasa C:

if (condition_1) {

// Kode program yang dijalankan jika condition_1 berisi nilai True

}

else if (condition_2) {

// Kode program yang dijalankan jika condition_2 berisi nilai True

}

else if (condition_3) {

// Kode program yang dijalankan jika condition_3 berisi nilai True

}

else {

// Kode program yang dijalankan jika semua kondisi tidak terpenuhi

}

Contoh Kode Program Percabangan IF ELSE IF Bahasa C++

Sebagai contoh pertama, saya ingin membuat sebuah kode program untuk menampilkan nilai. User diminta menginput sebuah huruf antara ‘A’ – ‘E’. Kemudian kode program akan menampilkan hasil tampilan yang berbeda-beda untuk setiap huruf yang diinput, termasuk jika huruf tersebut di luar ‘A’ – ‘E’.

Berikut contoh kode programnya:

#include <iostream.h>

int main() {

char nilai;

cout<<"Input Nilai Anda (A - E): ";

cin>>nila); if (nilai == 'A' ) { cout<<("Pertahankan! \n"); } else if (nilai == 'B' ) {

cout<<("Harus lebih baik lagi \n");

}

else if (nilai == 'C' ) {

cout<<("Perbanyak belajar \n");

}

else if (nilai == 'D' ) {

cout<<("Jangan keseringan main \n");

}

else if (nilai == 'E' ) {

cout<<("Kebanyakan bolos... \n");

}

else {

cout<<("Maaf, format nilai tidak sesuai \n");

}

return 0; }

Hasil kode program:

Input Nilai Anda (A - E): A Pertahankan!

Input Nilai Anda (A - E): D Jangan keseringan main

(12)

9

Input Nilai Anda (A - E): E Kebanyakan bolos...

Input Nilai Anda (A - E): F Maaf, format nilai tidak sesuai

Di baris 6 saya mendefinisikan sebuah variabel nilai sebagai char. Variabel nilai ini kemudian dipakai untuk menampung input dari perintah scanf di baris 8. Mulai dari baris 10 hingga 24, terdapat 5 buah pemeriksaan kondisi, yakni satu untuk setiap block IF ELSE. Dalam setiap kondisi, isi variabel nilai akan di diperiksa, apakah itu berupa karakter ‘A’, ‘B’, hingga ‘E’. Jika salah satu kondisi ini terpenuhi, maka block kode program yang sesuai akan di eksekusi.

Jika ternyata nilai inputan bukan salah satu dari karakter ‘A’ – ‘E’, maka block ELSE di baris 23 lah yang akan dijalankan. Setiap kondisi dari block IF ELSE IF ini bisa diisi dengan perbandingan yang lebih kompleks, seperti contoh berikut:

#include <iostream.h>

int main() {

int nilai;

cout<<("Input Nilai Anda (0 - 100): ");

cin>>nilai;

if (nilai >= 90 ) {

cout<<("Pertahankan! \n");

}

else if (nilai >= 80 && nilai < 90) {

cout<<("Harus lebih baik lagi \n");

}

else if (nilai >= 60 && nilai < 80) {

cout<<("Perbanyak belajar \n");

}

else if (nilai >= 40 && nilai < 60) {

cout<<("Jangan keseringan main \n");

}

else if (nilai < 40) {

cout<<("Kebanyakan bolos... \n");

}

else {

cout<<("Maaf, format nilai tidak sesuai \n");

}

return 0; }

Di sini kita bisa memodifikasi sedikit kode program kita sebelumnya. Sekarang nilai inputan berupa angka antara 0 hingga 100. Angka inputan ini ditampung ke dalam variabel nilai yang sekarang di set sebagai tipe data integer di baris 5.

Di baris 10, isi dari variabel nilai di periksa apakah berisi angka yang lebih dari 90. Jika iya, tampilkan teks “Pertahankan!”.

(13)

10

Jika kondisi di baris 10 tidak terpenuhi (yang artinya isi variabel nilai kurang dari 90), maka kode program akan lanjut ke kondisi ELSE IF berikutnya di baris 13. Di sini saya menggabungkan dua buah kondisi menggunakan operator logika && (yakni operator AND). Kondisi if(nilai >= 80 && nilai < 90) hanya akan terpenuhi jika isi variabel nilai berada dalam rentang 80 sampai 89.

Ketika membuat kondisi perbandingan, kita harus hati-hati dengan penggunaan tanda, apakah ingin menggunakan tanda lebih besar saja (>) atau tanda lebih besar sama dengan (>=) karena bisa mempengaruhi hasil akhir.

Jika ternyata kondisi ini tidak dipenuhi juga (artinya isi variabel nilai kurang dari 80), program akan lanjut ke kondisi if(nilai >= 60 && nilai < 80) di baris 15, yakni apakah nilai berada dalam rentang 60 – 79. Demikian seterusnya hingga kondisi terakhir if(nilai < 40) di baris 20. Jika semua kondisi tidak terpenuhi, jalankan block ELSE di baris 24.

Berikut hasil percobaan dari kode program di atas: Input Nilai Anda (0 - 100): 95

Pertahankan!

Input Nilai Anda (0 - 100): 60 Perbanyak belajar

Input Nilai Anda (0 - 100): 30 Kebanyakan bolos...

Yang cukup unik adalah, jika kita memberikan nilai di luar rentang 0 – 100, akan tetap ditangkap oleh kondisi IF di baris 11 atau di baris 20:

Input Nilai Anda (0 - 100): 200 Pertahankan!

Input Nilai Anda (0 - 100): -1000 Kebanyakan bolos...

Ini terjadi karena nilai 200 tetap memenuhi syarat if (nilai >= 90), dan nilai -1000 juga tetap memenuhi syarat if (nilai < 40). Silahkan anda modifikasi kode program di atas agar jika diinput angka di luar dari rentang 0 -100, akan tampil teks “Maaf, format nilai tidak sesuai”. Untuk hal ini kita cuma perlu mengubah / menambah 2 kondisi saja.

PERCABANGAN KONDISI SWITCH CASE BAHASA C++ Pengertian Kondisi SWITCH CASE Bahasa C++

Kondisi SWITCH CASE adalah percabangan kode program dimana kita membandingkan isi sebuah variabel dengan beberapa nilai. Jika proses perbandingan tersebut menghasilkan nilai true, maka block kode program akan dijalankan.

Kondisi SWITCH CASE terdiri dari 2 bagian, yakni perintah SWITCH dimana terdapat nama variabel yang akan diperiksa, serta 1 atau lebih perintah CASE, masing-masing untuk setiap nilai yang ingin diperiksa.

(14)

11

Berikut format dasar penulisan kondisi SWITCH CASE dalam bahasa C:

switch (nama_variabel) {

case 'nilai_1':

// Kode program yang dijalankan jika nama_variabel == nilai_1

break;

case 'nilai_2':

// Kode program yang dijalankan jika nama_variabel == nilai_2

break;

case 'nilai_3':

// Kode program yang dijalankan jika nama_variabel == nilai_3

break;

...

...

default:

// Kode program yang dijalankan jika tidak ada kondisi yang terpenuhi

}

Di awal kode program, terdapat perintah SWITCH untuk menginput variabel yang akan diperiksa. Kemudian terdapat beberapa perintah CASE yang diikuti dengan sebuah nilai. Jika isi dari variabel sama dengan salah satu nilai ini, maka blok kode program akan dijalankan. Jika ternyata tidak ada kondisi CASE yang sesuai, blok default di baris paling bawah lah yang akan dijalankan.

Di dalam setiap block case diakhiri dengan perintah break; agar struktur CASE langsung berhenti begitu kondisi terpenuhi. Mari langsung kita lihat

Contoh Kode Program Percabangan SWITCH CASE Bahasa C++

Dalam tutorial sebelumnya, kita telah membuat program menampilkan nilai dengan struktur IF ELSE IF. Kita akan coba konversi kode tersebut menjadi struktur SWITCH CASE. Sebelumnya, berikut kode program menampilkan nilai dengan struktur IF ELSE IF:

#include <iostream.h>

int main() {

char nilai;

cout<<("Input Nilai Anda (A - E): ");

cin>>nilai; if (nilai == 'A' ) { cout<<("Pertahankan! \n"); } else if (nilai == 'B' ) {

cout<<("Harus lebih baik lagi \n");

}

else if (nilai == 'C' ) {

cout<<("Perbanyak belajar \n");

}

else if (nilai == 'D' ) {

cout<<("Jangan keseringan main \n");

}

else if (nilai == 'E' ) {

cout<<("Kebanyakan bolos... \n");

}

else {

cout<<("Maaf, format nilai tidak sesuai \n");

}

return 0; }

(15)

12

Program yang sama bisa dikonversi ke dalam bentuk SWITCH CASE berikut:

#include <iostream.h> int main() { char nilai;

cout<<("Input Nilai Anda (A - E): ");

cin>>nilai; switch (nilai) { case 'A': cout<<("Pertahankan! \n"); break; case 'B':

cout<<("Harus lebih baik lagi \n");

break;

case 'C':

cout<<("Perbanyak belajar \n");

break;

case 'D':

cout<<("Jangan keseringan main \n");

break;

case 'E':

cout<<("Kebanyakan bolos... \n");

break;

default:

cout<<("Maaf, format nilai tidak sesuai \n");

}

return 0; }

Hasil kode program:

Input Nilai Anda (A - E): A Pertahankan!

Input Nilai Anda (A - E): D Jangan keseringan main

Input Nilai Anda (A - E): E Kebanyakan bolos...

Input Nilai Anda (A - E): F Maaf, format nilai tidak sesuai

Di baris 7 saya meminta user untuk menginput salah satu huruf antara ‘A’ – ‘E’. Nilai huruf ini disimpan ke dalam variabel nilai yang di set dengan tipe data char.

Kondisi SWITCH CASE dimulai pada baris 9. Di sini terdapat perintah switch (nilai), yang artinya saya ingin memeriksa isi dari variabel nilai. Seluruh block SWITCH ini berada di dalam tanda kurung kurawal, yakni mulai dari baris 9 sampai 23.

(16)

13

Di baris 10 terdapat perintah case ‘A’: Ini artinya jika variabel nilai berisi karakter ‘A’, maka jalankan isi dari block CASE, yakni perintah printf(“Pertahankan! \n”). Lalu terdapat perintah break di baris 12 agar struktur CASE lain tidak perlu di proses lagi.

Di baris 13 terdapat perintah CASE kedua, yakni case ‘B’:. Sama seperti sebelumnya, blok ini akan dijalankan jika variabel nilai berisi huruf ‘B’. Demikian seterusnya sampai case ‘E’ : di baris 20. Jika ternyata tidak ada nilai yang sesuai, maka block default di baris 22 yang akan di eksekusi.

Struktur SWITCH CASE ini terlihat lebih rapi daripada struktur IF ELSE IF, dan kadang kala bisa lebih efisien. Namun SWITCH CASE juga memiliki batasan, yakni tidak bisa dipakai untuk kondisi yang lebih kompleks seperti perbandingan dengan tanda lebih besar dari ” > “, maupun penggabungan kondisi.

Kita tidak bisa membuat struktur CASE seperti berikut:

case > '90':

cout<<("Pertahankan! \n"); break;

Kondisi perbandingan di atas hanya bisa ditulis menggunakan struktur IF.

Sehingga jika kondisi yang diperiksa cukup rumit, tetap harus menggunakan struktur IF ELSE IF. Struktur SWITCH CASE hanya cocok dipakai untuk operasi perbandingan sederhana, dimana nilai yang diperiksa hanya terdiri dari nilai yang tetap.

Latihan :

1. Suatu Universitas melakukan seleksi penerimaan mahasiswa baru. Syarat diterima menjadi mahasiswa jika memenuhi kriteria :

- Nilai Bahasa Indonesia diatas 60

- Nilai Bahasa Inggris diatas 55

- Nilai Tes Potensi Akademik diatas 60

Jika ketiga syarat tersebut terpenuhi, maka dinyatakan LULUS menjadi mahasiswa. Buat program dengan menggunakan proses keputusan 2. Sebuahperusahaan menetapkan system penggajian, dengan ketentuan

- Gaji pokok :

Pegawai tetap Rp. 2000.000 Pegawai honorer Rp. 1000.000

- Bila kerja lembur mendapat tambahan honor lembur Honor lembur = jam lembur*2% dari gaji pokok

- Tunjangan 10% dari gajipokok

(17)

14 BAB IV

PERULANGAN FOR, WHILE & DO WHILE C++

Dalam bahasa C++ (dan juga bahasa turunan C seperti C++, PHP dan Java), terdapat 3 buah struktur perulangan atau looping, yakni perulangan for, perulangan while dan perulangan do while. Dalam bahasan bahasa pemrograman C kali ini kita akan bahas perulangan for terlebih dahulu.

PENGERTIAN STRUKTUR PERULANGAN FOR BAHASA C++

Struktur perulangan (atau dalam bahasa inggris disebut dengan loop) adalah instruksi kode program yang bertujuan untuk mengulang beberapa baris perintah.

Dalam merancang perulangan, kita setidaknya harus mengetahui 3 komponen: 1. Kondisi awal perulangan.

2. Kondisi pada saat perulangan.

3. Kondisi yang harus dipenuhi agar perulangan berhenti. Berikut format dasar struktur perulangan for dalam bahasa C:

for (start; condition; increment)

{

// kode program

// kode program

}

Start adalah kondisi pada saat awal perulangan. Biasanya kondisi awal ini berisi perintah untuk memberikan nilai kepada variabel counter. Variabel counter sendiri adalah sebuah variabel yang akan menentukan berapa banyak perulangan dilakukan. Kebanyakan programmer menggunakan variabel i sebagai variabel counter (ini tidak harus).

Condition adalah kondisi yang harus dipenuhi agar perulangan berjalan. Selama kondisi ini terpenuhi, maka compiler bahasa C akan terus melakukan perulangan. Misalnya condition ini berisi perintah i < 5, maka selama variabel counter i berisi angka yang kurang dari 5, maka lakukan perulangan.

Increment adalah bagian yang dipakai untuk memproses variabel counter agar bisa memenuhi kondisi akhir perulangan. Bagian ini akan selalu di eksekusi di setiap perulangan.

Disebut increment karena biasanya berisi operasi increment seperti i++, yang sama dengan i = i + 1. Maksudnya, dalam setiap perulangan naikkan variabel i sebanyak 1 angka. Namun kita juga bisa memberikan nilai lain, misalnya i = i + 2, sehingga variabel counter akan naik 2 angka setiap perulangan.

Sebagai tambahan, terdapat istilah iterasi (iteration), yang berarti 1 kali perulangan. Istilah ini cukup sering dipakai ketika membahas tentang struktur perulangan.

Contoh Kode Program Perulangan For Bahasa C

Sebagai contoh pertama, menampilkan teks “Hello World” sebanyak 5 kali. Berikut kode programnya:

(18)

15 #include <iostream.h> int main() { int i; for (i = 1; i < 5; i++) {

cout<<("Hello World \n");

}

return 0; }

Di baris 5 kita lihat sebuah variabel i yang di set dengan tipe data integer. Variabel ini nantinya akan kita pakai sebagai variabel counter, yakni variabel yang menentukan kondisi akhir perulangan.

Perintah di baris 6, yakni for (i = 1; i < 5; i++), bisa dibaca:

“Jalankan perulangan, mulai dari variabel i = 1 sampai i < 5. Dalam setiap iterasi, naikkan nilai variabel i sebanyak 1 angka menggunakan perintah i++“.

Berikut hasilnya: Hello World Hello World Hello World Hello World

Pertanyaannya, kenapa hanya tampil 4 baris “Hello World“? Padahal kita mengulang dari i = 1 sampai i < 5.

Ini berkaitan dengan penggunaan tanda. Kondisi akhir perulangan adalah i < 5, yang artinya akan selalu bernilai true jika i kurang dari 5, tapi jika sudah sampai dengan 5 maka kondisi menjadi false dan perulangan berhenti.

Agar teks “Hello World” bisa tampil sebanyak 5 kali, ada 2 alternatif, yakni mengubah kondisi awal menjadi i = 0, atau mengubah kondisi akhir menjadi i <=5. Pilihan kedua ini tambak lebih baik: #include <iostream.h> int main() { int i; for (i = 1; i <= 5; i++) {

cout<<("Hello World \n");

}

return 0; }

Hasil kode program: Hello World

Hello World Hello World Hello World Hello World

(19)

16

Sekarang teks “Hello World” sudah tampil sebanyak 5 kali. Sekali lagi, hati-hati dengan menggunakan tanda perbandingan, terutama antara “<” dengan “<=“.

Di dalam perulangan, kita juga bisa mengakses variabel counter seperti contoh berikut:

#include <iostream.h>

int main() {

int i;

for (i = 1; i <= 5; i++) {

cout<<("Hello World %i \n",i);

}

return 0; }

Hasil kode program: Hello World 1 Hello World 2 Hello World 3 Hello World 4 Hello World 5

Sekarang setelah teks “Hello World“, tampil angka yang berasal dari nilai variabel i. Karena dalam setiap iterasi variabel counter i akan dinaikkan 1 angka (proses increment), maka nilainya juga akan naik 1 angka untuk setiap iterasi.

Variabel counter i juga tidak haris di increment, tapi juga bisa di decrement untuk membuat perulangan menurun. Berikut contohnya:

#include <iostream.h>

int main() {

int i;

for (i = 5; i >= 1; i--) {

cout<<("Hello World %i \n",i);

}

return 0; }

Hasil kode program: Hello World 5 Hello World 4 Hello World 3 Hello World 2 Hello World 1

Kode kita sangat mirip seperti sebelumnya, tapi perhatikan perintah for di baris 6: for (i = 5; i >= 1; i--). Ini bisa dibaca:

“Jalankan perulangan, mulai dari variabel i = 5 sampai i >= 1. Dalam setiap iterasi, turunkan nilai variabel i sebanyak 1 angka menggunakan perintah i--“.

(20)

17

Hasilnya, nilai variabel counter i akan berkurang 1 angka dalam setiap iterasi. Sebagai contoh terakhir, bisakah anda membuat perulangan untuk menampilkan angka kelipatan 3 sebanyak 10 kali? Hasil akhir yang kita inginkan adalah sebagai berikut:

3 6 9 12 15 18 21 24 27 30

Terdapat beberapa cara untuk menghasilkan deret ini. Pertama, ubah di sisi block perintah yang akan dijalankan. Dimana variabel counter i tetap naik dari 1 sampai 10:

#include <iostream.h> int main() { int i; for (i = 1; i <= 10; i++) { cout<<("%i ",i*3); } cout<<("\n"); return 0; }

Agar menghasilkan angka yang naik kelipatan 3, teknik yang dipakai adalah mengalikan nilai variabel counter i dengan angka 3 untuk setiap iterasi. Cara kedua adalah memodifikasi proses increment dari variabel counter:

#include <iostream.h> int main() { int i; for (i = 3; i <= 30; i = i + 3) { cout<<("%i ",i); } cout<<("\n"); return 0; }

Perhatikan perintah perulangan for di baris 6. Perintah for (I = 3; I <= 30; I = I + 3) bisa dibaca:

“Jalankan perulangan, mulai dari 17ariable I = 3 sampai I <= 30. Dalam setiap iterasi, naikkan nilai 17ariable I sebanyak 3 angka menggunakan perintah I = I + 3“.

PERULANGAN WHILE & DO WHILE BAHASA C++ Pengertian Struktur Perulangan While Bahasa C++

Dalam bahasan sebelumnya, yakni tentang perulangan FOR. Kita telah membahas bahwa sebuah perulangan setidaknya memiliki 3 syarat: kondisi awal perulangan, kondisi pada saat perulangan, dan kondisi akhir perulangan. Dalam perulangan FOR, ketiga syarat ini ditulis dalam 1 baris perintah, seperti: for (i = 1; i < 5; i++). Di dalam perulangan WHILE, ketiga kondisi ini saling terpisah.

(21)

18 start; while (condition) { // kode program // kode program increment; }

Di bagian start biasanya berupa perintah inisialisasi variabel counter, misalnya i = 0. Di bagian condition terdapat kondisi yang harus dipenuhi agar perulangan berjalan, misalnya i < 5. Kemudian perintah increment di dalam block perulangan yang di pakai untuk menaikkan nilai variabel counter, misalnya dengan perintah i++.

Contoh Kode Program Perulangan While Bahasa C++

Sebagai praktek pertama, berikut kode program perulangan WHILE untuk menampilkan teks “Hello World” sebanyak 5 kali:

#include <iostream.h>

int main() {

int i = 1;

while (i <= 5){

cout<<("Hello World \n");

i++;

}

return 0; }

Hasil kode program: Hello World

Hello World Hello World Hello World Hello World

Di baris 5 terdapat perintah untuk menginput angka 1 ke dalam variabel i. Nantinya, variabel i ini akan menjadi variabel counter yang dipakai untuk menentukan jumlah perulangan. Proses perulangan di mulai di baris 6. Perintah while (i <= 5) artinya, selama nilai variabel i kurang atau sama dengan 5, maka jalankan perulangan.

Di dalam blok perulangan terdapat perintah printf(“Hello World \n”) di baris 7. Ini dipakai untuk menampilkan teks “Hello World“. Kemudian di baris 8 terdapat perintah increment, yakni i++. Perintah ini akan menaikkan nilai variabel i sebanyak 1 angka dalam setiap iterasi. Perulangan while di atas akan di ulang sebanyak 5 kali, mulai dari i = 1, i = 2, i = 3, i = 4, hingga i = 5. Ketika nilai variabel counter i sudah mencapai 6, maka kondisi while (i <= 5) tidak terpenuhi lagi (false), sehingga perulangan berhenti.

Salah satu hal yang harus selalu diingat ketika membuat perulangan while adalah, jangan lupa membuat perintah increment. Jika tidak, kondisi akhir tidak akan pernah terpenuhi dan perulangan akan berjalan terus menerus. Ini dikenal dengan istilah infinity loop. Berikut

(22)

19

Contohnya:

#include <stdio.h>

int main(void) {

int i = 1;

while (i <= 5){

cout<<("Hello World \n");

}

return 0; }

Jika kita menjalankan kode program di atas, teks “Hello World” akan ditampilkan terus menerus, tidak pernah selesai. Penyebabnya karena kondisi while (i <= 5) akan selalu bernilai true. Di dalam blok perulangan tidak ada perintah yang bisa mengubah nilai variabel i agar kondisi while (i <= 5) bernilai false.

Untuk menghentikan infinity loop, tutup paksa jendela hasil dengan men-klik tanda (x) di sudut kanan atas, atau tekan kombinasi CTRL + C. Sama seperti perulangan FOR, di dalam block perulangan WHILE kita juga bisa mengakses nilai dari variabel counter i:

#include <stdio.h>

int main() {

int i = 1;

while (i <= 5){

cout<<("Hello World %i \n",i);

i++;

}

return 0; }

Hasil kode program: Hello World 1 Hello World 2 Hello World 3 Hello World 4 Hello World 5

Bagaimana dengan perulangan menurun? tidak masalah. Kita tinggal mengatur kondisi awal, kondisi akhir, serta proses decrement:

#include <stdio.h>

int main() {

int i = 10;

while (i > 5){

cout<<("Hello World %i \n",i);

i--;

}

return 0; }

(23)

20

Hasil kode program: Hello World 10 Hello World 9 Hello World 8 Hello World 7 Hello World 6

Di sini saya mengisi nilai awal variabel counter i dengan angka 10. Kondisi perulangan adalah while (i > 5), artinya selama nilai variabel i di atas 5, jalankan perulangan. Dan karena kita ingin membuat perulangan menurun, maka dipakai perintah decrement i-- yang akan mengurangi nilai variabel i sebanyak 1 angka dalam setiap iterasi.

Pengertian Struktur Perulangan DO WHILE Bahasa C

Perulangan DO WHILE merupakan modifikasi dari perulangan WHILE, yakni dengan memindahkan posisi pemeriksaan kondisi ke akhir perulangan. Artinya, kita akan lakukan dulu sebuah perulangan, baru di akhir diperiksa apakah kondisi variabel counter sudah terpenuhi atau belum.

Berikut format dasar struktur perulangan DO WHILE dalam bahasa C:

start; do { // kode program // kode program increment; } while (condition)

Sama seperti perulangan WHILE, di bagian start biasanya terdapat perintah inisialisasi variabel counter, misalnya i = 0. Kemudian di dalam block do ditulis kode program yang akan di ulang, tidak lupa sebuah perintah untuk menaikkan nilai variabel counter, misalnya dengan perintah i++.

Di bagian paling bawah, terdapat perintah while (condition). Di sinilah kondisi perulangan akan diperiksa. Selama kondisi ini menghasilkan nilai true, maka perulangan akan lanjut ke iterasi berikutnya.

Contoh Kode Program Perulangan Do While Bahasa C++

Agar bisa dibandingkan dengan bahasan di perulangan FOR dan WHILE, berikut contoh kode program bahasa C untuk menampilkan 5 kali teks ‘Hello World’ menggunakan perulangan DO WHILE: #include <stdio.h> int main() { int i = 1; do {

cout<<("Hello World \n");

i++;

}

while (i <= 5);

return 0; }

(24)

21

Hasil kode program: Hello World

Hello World Hello World Hello World Hello World

Di baris 5 (int i= 1) saya mendefinisikan variabel counter i dan memberikan nilai awal 1. Kemudian terdapat block kode program do di baris 6 – 9. Inilah kode program yang akan di ulang, yakni berisi sebuah perintah printf untuk menampilkan teks ‘Hello World’, dan sebuah perintah increment i++ untuk menaikkan nilai variabel i sebanyak 1 angka.

Terakhir di baris 10 terdapat perintah while (i <= 5). Artinya, selama variabel counter i bernilai kurang dari atau sama dengan 5, jalankan kembali perulangan.

Dalam perulangan DO WHILE ini kita juga bisa mengakses variabel counter, seperti contoh berikut: #include <stdio.h> int main() { int i = 1; do { cout<<("%i ",i*3); i++; } while (i <= 5); return 0; }

ini adalah kode program untuk membuat sebuah deret dengan kelipatan 3: 3 6 9 12 15

Kunci penting yang membedakan perulangan DO WHILE dengan perulangan DO adalah posisi pemeriksaan kondisi. Karena dalam perulangan DO WHILE pemeriksaan kondisi di lakukan di akhir, maka perulangan akan selalu di jalankan minimal 1 kali, meskipun syarat perulangan sudah tidak dipenuhi.

Berikut contoh kasusnya:

#include <stdio.h> int main() { int i = 10; do { cout<<("%i ",i*3); i++; } while (i <= 5); return 0; }

(25)

22

Di baris 5 saya mengisi angka 10 ke dalam variabel counter i. Namun syarat kondisi adalah while (i <= 5). Apakah i <=5 ? tidak (false). Namun meskipun kondisi ini tidak dipenuhi, perulangan akan tetap dijalankan 1 kali.

Jika kondisi yang sama dibuat menggunakan WHILE, perulangan tidak akan pernah dijalankan karena kondisi di periksa di awal. Inilah yang jadi perbedaan antara perulangan WHILE dan DO WHILE dalam bahasa C++.

Latihan :

1. Buatlah program untukmenampilkan bilangan dalam segitiga dengan tampilan 1*

2** 3*** 4**** 5*****

2. Buatlah program untuk menampilkan bilangan dalam segitiga dengan tampilan *

* * * * * * * * * * * * * * * *

(26)

23 BAB V

PENGERTIAN TIPE DATA ARRAY

Tipe data array adalah tipe data yang terdiri dari kumpulan tipe data lain. Dalam bahasa Indonesia, array dikenal juga dengan istilah Larik. Dengan array, proses penyimpanan data ke dalam variabel menjadi lebih efisien dan mudah, terutama jika kita memiliki data dalam jumlah banyak.

Anggota atau isi dari array itu sendiri harus satu jenis tipe data, misalkan terdiri dari kumpulan angka bulat saja (integer), kumpulan karakter saja (char), maupun kumpulan angka pecahan saja (float). Di dalam bahasa C, kita tidak bisa membuat 1 array dengan berbagai tipe data (harus 1 jenis saja).

Sebagai contoh, misalkan saya ingin menyimpan dan memproses 5 buah nilai. Jika menggunakan variabel biasa, penulisannya bisa seperti ini:

int bilangan1;

int bilangan2;

int bilangan3;

int bilangan4;

int bilangan5;

Data diatas banyak dan berulang untuk 1 tipe data saja, sehingga akan lebih efisien jika menggunakan array:

int bilangan[5];

Dengan kode program diatas, variabel bilangan akan menjadi sebuah array yang bisa menampung 5 data bertipe integer. Format pendefinisian array di dalam bahasa C++ adalah sebagai berikut:

tipe_data nama_variabel[jumlah_element]

Element adalah sebutan untuk isi atau anggota sebuah array.

Sebagai contoh, jika kita ingin membuat array dengan 100 element yang bisa diisi dengan tipe data float, pendefinisiannya adalah sebagai berikut:

float bilangan[100];

Berikutnya, bagaimana cara mengakses dan mengisi element array ini? Kita tinggal menuliskan nomor urut dari element yang akan akan diakses, nomor urut ini dikenal juga dengan istilah index. Berikut contohnya:

(27)

24

Yang harus perlu diperhatikan adalah, nomor urut atau index array dimulai dari 0, bukan 1. Akibatnya jika kita ingin mengakses element pertama dari array bilangan, penulisannya adalah bilangan[0]. Untuk bisa mengakses element ke-100 dari array bilangan, penulisannya adalah bilangan[99].

Index array yang dimulai dari 0 ini hampir selalu menjadi ciri khas di seluruh bahasa pemrograman modern, termasuk C++, PHP, dan JavaScript.

Sebagai contoh pertama, saya ingin membuat array bilangan dengan 5 element bertipe data integer, lalu mengisi dan menampilkan nilainya menggunakan perintah cout:

#include <iostream.h> int main() { int bilangan[5]; bilangan[0] = 6; bilangan[1] = 9; bilangan[2] = -8; bilangan[3] = 24; bilangan[4] = -99;

cout<<"Isi array bilangan pertama: %d \n” << bilangan[0]); cout<<"Isi array bilangan kedua: %d \n"<< bilangan[1]);

cout<<"Isi array bilangan ketiga: %d \n"<< bilangan[2]);

cout<<"Isi array bilangan keempat: %d \n<< bilangan[3]); cou<<("Isi array bilangan kelima: %d \n"<< bilangan[4]);

return 0; }

Di awal kode program, baris int bilangan[5]; dipakai untuk membuat sebuah array bernama bilangan dengan 5 element atau 5 anggota. Array bilangan ini di set sebagai int, yang artinya setiap element array hanya bisa diisi dengan bilangan bulat (integer).

Setelah pendefinisian array bilangan, selanjutnya saya mengisi setiap element array dengan angka. Kembali diingat bahwa index array dimulai dari 0, sehingga untuk mengakses element pertama dari array bilangan, penulisannya adalah bilangan[0].

Di akhir program, saya menampilkan seluruh element array menggunakan perintah cout. Dalam contoh diatas, pengisian nilai array diproses satu persatu. Namun kita juga bisa mengisi element array langsung pada saat pendefinisiannya, seperti contoh berikut:

#include <iostream.h> int main() { int bilangan[5] = {6, 9, -8, 24, -99};

cout<<"Isi array bilangan pertama: %d \n"<< bilangan[0]);

cout<<"Isi array bilangan kedua: %d \n"<< bilangan[1]);

cout<<"Isi array bilangan ketika: %d \n"<< bilangan[2]);

cout<<"Isi array bilangan keempat: %d \n"<< bilangan[3]);

cout<<"Isi array bilangan kelima: %d \n"<< bilangan[4]);

return 0; }

(28)

25

Kali ini, semua isi array diinput sekaligus pada saat pembuatan, yakni dengan perintah int bilangan[5] = {6, 9, -8, 24, -99}. Tanda koma dipakai sebagai pemisah antara satu nilai dengan nilai lain. Hasil kode program diatas akan sama persis seperti contoh kode program pertama. Yang cukup unik, kita juga bisa mendefiniskan array tanpa harus menulis jumlah elemen anggotanya, seperti contoh berikut:

#include <iostream.h>

int main() {

char kumpulan_huruf[] = {'a','C','x'};

cout<<"Isi array kumpulan_huruf: ");

cout<<("%c, %c, %c

\n",kumpulan_huruf[0],kumpulan_huruf[1],kumpulan_huruf[2]);

return 0; }

Isi dari element array sama halnya seperti variabel biasa, dimana kita bisa mengubah nilai element array sepanjang program, seperti contoh berikut:

#include <iostream.h> int main() { float pecahan[] = {3.14,-99.01,0.002};

cout<<"Isi array pecahan: ";

cout<<("%.3f, %.3f, %.3f \n",pecahan[0],pecahan[1],pecahan[2]);

cout<<(" \n");

pecahan[1] = 9.123;

pecahan[2] = 12.9925;

cout<<"Isi array pecahan: ";

cout<<"%.3f, %.3f, %.3f \n",pecahan[0],pecahan[1],pecahan[2]);

return 0; }

Pengertian Array 2 Dimensi

Array dua dimensi adalah sebutan untuk array yang penomoran index-nya menggunakan 2 buah angka. Analogi yang sering dipakai seperti titik koordinat dalam diagram kartesius. Diagram kartesius merupakan diagram yang biasa kita pakai untuk membuat grafik. Disini terdapat sumbu X dan sumbu Y. Sebuah titik dalam diagram kartesius ini harus disebut secara berpasangan, seperti (2,3) atau (-3, 1).

(29)

26

Contoh bentuk diagram kartesius (sumber – wikipedia)

Analogi lain adalah matriks. Dalam matematika, matrik terdiri dari kolom dan baris. Kembali, untuk menentukan nilai dari sebuah matriks, kita harus sebut secara berpasangan seperti baris 1 kolom 2, atau baris 3 kolom 1. Konsep seperti inilah yang menjadi dasar dari array 2 dimensi. Untuk membuat array 2 dimensi di dalam bahasa C, kita membuat 2 kali tanda kurung siku setelah nama variabel, seperti contoh berikut:

int bilangan[2][2];

Baris diatas akan membuat array 2 dimensi dengan nama variabel: bilangan. Variabel bilangan ini akan berisi 4 element (2 x 2). Atau jika diibaratkan sebagai matriks, disini kita membuat matriks 2 x 2.

Untuk mengakses setiap element array, penulisan index juga harus ditulis 2 kali, seperti contoh berikut:

bilangan[0][0] = 100;

bilangan[0][1] = 101;

bilangan[1][0] = 110;

bilangan[1][1] = 111;

Berikut contoh kode program pertama dari pembuatan array 2 dimensi di dalam bahasa C++: #include <iostream.h> int main() { int bilangan[2][2]; bilangan[0][0] = 100; bilangan[0][1] = 101; bilangan[1][0] = 110; bilangan[1][1] = 111;

cout<<"Isi array bilangan: \n";

cout<<"%d, %d \n”<<bilangan[0][0],bilangan[0][1]); cout<<"%d, %d \n"<<bilangan[1][0],bilangan[1][1]);

(30)

27 }

Di awal kode program diatas array bilangan dengan perintah int bilangan[2][2];. Artinya, array bilangan adalah sebuah array 2 dimensi dengan 4 element. Proses pengisian setiap element array dilakukan setelahnya, kemudian ditampilkan dengan perintah printf. Pengisian element array 2 dimensi juga bisa dilakukan pada saat array itu di definisikan, seperti contoh berikut: #include <iostream.h> int main() { int matrix[2][3] = {{1,2,3},{7,8,9}};

cout<<"Isi array matrix: \n";

cout<<"%d %d %d \n", matrix[0][0], matrix[0][1], matrix[0][2]);

cout<<"%d %d %d \n", matrix[1][0], matrix[1][1], matrix[1][2]);

return 0; }

(31)

28 BAB VI

POINTER PADA PEMROGRAMAN C++

Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.

Alamat Dari Variabel

Misalkan kamu memiliki variabel x dan terletak di memori 0x000001. Jika kamu ingin memasukkan nilai 100 kedalam variabel x, maka processor harus membawa nilai 100 tersebut kedalam variabel x yang terletak di alamat memori 0x000001. Hal yang perlu kamu ketahui adalah, setiap variabel ternyata memiliki ukuran byte yang berbeda-beda dalam memori. Sebagai contoh suatu variabel bertipe int memiliki ukuran 4 byte dalam memori. Maka variabel tersebut akan menempati 4 kapling lokasi dalam memori, misalkan 0x000001, 0x000002, 0x000003, dan 0x000004. Jika terdapat dua buah variabel bertipe int yang bersebelahan, maka alamat variabel pertama terletak di 0x000001 dan variabel kedua terletak dialamat 0x000005.

Memori menggunakan bilangan heksadesimal yang ditandai dengan awalan ‘0x’, sehingga jika suatu variabel menempati blok kesepuluh dalam memori, maka alamatnya adalah 0x00000a

Deference (*)

Deference (*) merupakan suatu operator yang berfungsi untuk menanyakan alamat dari suatu variabel . Apabila kita memberikansimbol & pada awal variable dan mencetak hasilnya pada window cli, maka yang akan tercetak adalah alamat darivariabel tersebut bukan nilai yang ditampung oleh variable tersebut. Lihat contoh di bawah ini :

#include <iostream> using namespace std;

int main(){

int a=5; //Memberikan nilai 5 pada variabel a

int *b; //Mendeklarasikan variabel b sebagai pointer

b = &a; //Mengkopikan alamat variabel a kedalam variabel pointer b cout<<"Nilai variabel a adalah "<<a<<endl;

cout<<"Alamat variabel a adalah "<<&a<<endl;

cout<<"Isi dari variabel b adalah "<<b<<endl;

cout<<"Nilai yang tertampung dalam variabel b adalah "<<*b<<endl;

(32)

29 }

Hasil output programnya adalah:

Dari hasil output program di atas dapat dipahami bahwa, nilai variabel b sama dengan variabel a, walaupun variabel b tidak diberikan nilai yang sama dengan variabel a. Hal ini terjadi karena variabel pointer b menunjuk alamat variabel a dan variabel pointer b dapat mengakses nilai yang terkandung dalam alamat yang ditunjuknya.

Pointer dan Array

Jka kita menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array tersebut menunjuk atau bersi alamat elem pertama dari array tersebut. Misalkan kamu membuat sebuah pointer bertipe int dengan nama pointerArray dan sebuah array dengan tipe yang sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan:

int *pointerArray;

int nilaiArray[5];

pointerArray = nilaiArray; //memberikan alamat elemen pertama array pada variabel pointer

Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada alamat memori elemen pertama array dengan nama nilaiArray. Nah secara tidak langsung kita dapat mengakses nilai elemen array dengan menggunakan variabel pointer. Berikut contoh sintaks pemrogramannya: #include <iostream> using namespace std; int main(){ int nilaiArray[5] = {2,5,4,6,7}; int *pointerArray; pointerArray = nilaiArray;

cout<<"Nilai pada elemen 0 nilaiArray adalah = "<<nilaiArray[0]<<endl;

cout<<"Nilai pada elemen 0 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;

pointerArray++; // naikan alamat yang ditunjuk pointer sejauh 1 integer

*pointerArray = 10; //Ubah nilai elemen 1 array (nilaiArray) menjadi 10 cout<<"Nilai pada elemen 1 nilaiArray adalah = "<<nilaiArray[1]<<endl;

cout<<"Nilai pada elemen 1 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;

pointerArray = nilaiArray; //kembalikan pointer pada elemen pertama cout<<endl;

cout<<"Akses nilai semua array dengan pointer dan looping for"<<endl;

for (int i=0; i<5; i++){

cout<<"Nilai indeks ["<<i<<"] adalah = "<<*(pointerArray+i)<<endl; }

(33)

30 }

Dari hasil di atas, dapat kita lihat bagaimana cara mengakses nilai array dengan menggunakan pointer. Suatu pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel int. Sebab, tipe data tersebut akan menentukan sifat pointer ketika alamat pointer tersebut dilakukan increment. Begitu juga untuk tipe data yang lain.

Pointer Sebagai Parameter Suatu Fungsi

Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi. Karena sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi pada parameter, sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel pointer. Berikut contoh program sederhananya:

#include <iostream> using namespace std;

void tambah(int *angka){ *angka +=20;

}

int main(){

int nilai = 10;

cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;

tambah(&nilai); //Memasukkan alamat variabel nilai pada fungsi tambah cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;

return 0; }

Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika kita ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kita cukup memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam parameter fungsi

Yang menarik adalah pada fungsi tambah di atas, walaupun fungsi tersebut merupakan fungsi void tanpa nilai kembalian alias return, namun nilai variabel parameter berubah.

(34)

31 BAB VII

FUNCTION PADA C++

Function (dalam bahasa Indonesia adalah Fungsi). Function adalah sebuah struktur, Pengelompokan yang mengandung sekelompok pernyataan yang akan dilaksanakan oleh CPU jika nama function tersebut dipanggil untuk dieksekusi, kecuali untuk function utama yaitu int main() yang akan dieksekusi secara otomatis.

Sebelumnya kita sering meilihat tanpa mengerti int main() pada contoh program yang pernah penulis berikan. Pada setiap program pasti memiliki satu function utama dan merupakan awal dari program berjalan atau CPU melakukan eksekusi dari sekelompok pernyataan yang diberikan, semua itu akan di mulai dari function int main(), function tersebut merupakan function utama yang akan menjadi kepala dari program dimana semua eksekusi pernyataan berawal.

Bisa kita bayangkan melakukan pemrograman sebuah program yang sangat-sangat besar dan memerlukan pernyataan yang sangat panjang, apa lagi jika sebuah proses mempunyai banyak pernyataan dan dibutuhkan tidak hanya sekali, itu pasti akan membuat anda pusing jika di dunia ini tidak ada function. Maka, disini Function sangat membantu kita untuk membuat pengelompokan pernyataan berdasarkan tugas, proses atau katagori. Ketika kita membutuhkan kelompok pernyataan tersebut kita cukup memanggil nama function tersebut.

Bentuk Umum Penulisan

1 2 3

tipe nama (parameter1, parameter2, …){

Pernyataan }

Tipe = adalah sebuah return type/data type dari Function, function dapat memiliki nilai di saat akhir hidup dari function dan hal itu disebut pengembalian nilai. beberapa function dapat mengembalikan nilai hasil operasi yang dilakukan di dalam function tersebut. tapi juga ada function yang tidak akan mengembalikan nilai dari operasi di dalam function tersebut, untuk membuat function tanpa melakukan pengembalian nilai kita bisa menggunakan tipe data void, jika berniat membuat function yang dapat mengembalikan nilai, sesuaikanlah tipe data dengan tipe nilai yang akan dikembalikan

Nama = nama atau identifier, adalah sebuah identitas atau nama dari function tersebut.

Parameter = kita dapat mengkosongi jika tidak membutuhkan. Parameter adalah pemesanan memori untuk menyimpan argumen yang berisi nilai disaat pemanggilan function. parameter tersebut akan bersifat lokal bagi function tersebut, tidak bisa digunakan diluar function. Kita bisa membuat parameter lebih dari satu, dan masing-masing parameter akan dipisah dengan tanda koma.

Deklarasi Function

Untuk bentuk penulisan sama seperti apa yang pernah kita tulis untuk membuat function utama int main(), yang berbeda adalah kita bebas memberi nama function, memberi return type, menambahkan parameter pada function kustom kita dan function kustom tidak akan dieksekusi oleh CPU jika nama function buatan tidak dipanggil di dalam function utama.

(35)

32

//Tanpa Parameter void cetakPesan (){

cout<<”Belajar Function C++; }

//Dengan Parameter

Int tambah (int a, int b){

return a+b; }

Pada contoh pertama merupakan contoh yang menunjukan bentuk function tanpa menggunakan parameter dan tanpa pengembalian nilai. Lalu pada contoh kedua merupakan contoh menggunakan dua parameter yang dipisahkan dengan tanda koma ,. pada baris ke satu dari function yang memiliki parameter terdapat return a+b; akan memberi hasil penjumlahan dari dua parameter a dan b kepada function sebagai nilai return. sehingga ketika kita memanggil function itu akan memberikan nilai hasil proses penjumlahan tersebut.

Mengakses Fuction

CPU Hanya akan melaksanakan pernyataan-pernyataan yang berada di dalam function utama int main. Saat mendirikan sebuah function kustom, pernyataan-pernyataan yang ada di dalam function kustom tidak akan dibaca oleh CPU jika nama atau identifier pada function yang kita buat tidak dipanggil di dalam fungsi utama atau dalam function lain yang sudah terjamin CPU akan melewainya.

Jalur pembacaan CPU, CPU akan melaksanakan semua pernyataan yang dilewati. Ketika CPU itu melewati sebuah pernyataan yang merupakan sebuah nama dari function maka CPU akan melaksanakan semua pernyataan di dalam function itu hingga selesai. jika sudah, CPU akan melanjutkan pembacaan pernyataan pada function sebelumnya. Kita juga bisa membuat function buatan memanggil function buatan lainya.

Untuk memanggil function, kita cukup menuliskan nama dari function tersebut dan memberi sepasang tanda ( ), itu merupakan tempat dimana nilai arguments untuk parameter function tersebut, kita bisa mengkosonginya jika memang function tersebut tidak membutuhkan argument.

1 2 3 4

//Function Tanpa Parameter cetakPesan ();

//Function Dengan Parameter tambah (argument1, argument2);

Contoh Program

//Deklarasi dan Pemanggilan Function #include <iostream> using namespace std; int result; void cetakPesan (){

cout<<"Belajar C++"<<endl<<endl; }

int tambah (int a, int b){

Referensi

Dokumen terkait

Beban kerja dapat dibedakan lebih lanjut ke dalam beban kerja berlebih/terlalu sedikit “kuantitatif”, yang timbul sebagai akibat dari tugas-tugas yang terlalu

Sesuai ilustrasi tersebut maka isi laporan yang tepat adalah pilihan D, “Kegiatan Bulan Bahasa di SMP Kenari dimeriahkan dengan berbagai lomba, antara lain lomba menulis cerpen

Namun gejala klinis dari pasien sangat mendukung untuk diagnosis kusta yaitu terdapat beberapa lesi makula eritematous yang anestesi dan juga terdapat penebalan

Setelah dilakukan analisis level risiko dan pengelompokan pada seluruh variabel risiko dari pekerjaan pemasangan kaca dan tangga yang telah dilakukan sebelumnya,

Dalam proses belajar siswa, kedua intelegensi (IQ dan EQ) itu sangat diperlukan. IQ tidak dapat berfungsi dengan baik tanpa pertisipasi penghayatan emosional

vprašanje o fizičnem izgledu prodajalca in njegovem vplivu na nakup pisarniškega pohištva je 4% anketiranih odgovorilo, da ima to zelo velik pomen, 6% jih je mnenja, da je to

Hasil penelitian ini sejalan dengan hasil penelitian yang dilakukan oleh Nasarudin (2008) bahwa faktor pengalaman kerja berpengaruh positif yang signifikan

Bilah bambu yang simetris dimasukkan ke dalam mesin penipis melalui ujung pembawa bambu dari besi bentuk U yang menuju pada 3 (tiga) pasang roll penjepit