Anda di halaman 1dari 152

1.1.

Sejarah
Sejarah Algoritma
Ditinjau dari asal – usul katanya, kata Algoritma sendiri mempunyai sejarah yang cukup
unik. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan
angka arab. Seseorang dikatakan algorist apabila menghitung dengan menggunakan
bahasa arab. Asal kata ‘Algoritma’ muncul dari ‘Algoritmi’, bentuk Latin dari al-
Khwarizmi, matematikawan, ahli astronomi, dan ahli geografi dari Persia. Nama
lengkapnya adalah Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi
dibaca orang barat manjadi Algorism. Al-khuwarizmi menulis buku yang berjudul Kitab
Al Jabar Wal – Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of
restoration and reducation). Dari buku tersebut kita juga memperoleh akar kata “Aljabar”
(Algebra). Perubahan kata dari algorism menjadi algorithm muncul karena kata algorism
sering dikelirukan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm.
Karena perhitungan dengan angka arab sudah menjadi hal yang biasa, maka lambat laun
kata algorithm berangsur – angsur dipakai sebagai metode perhitungan (komputasi)
secara umum, sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia, kata
algorithm diserap menjadi algoritma.

                                                            
                                                                 Penemu Algoritma

Pengertian algoritma sangat lekat dengan kata logika, yaitu kemampuan seorang
manusia untuk berfikir dengan akal tentang suatu permasalahan menghasilkan sebuah
kebenaran, dibuktikan dan dapat diterima akal, logika seringkali dihubungkan dengan
kecerdasan, seseorang yang mampu berlogika dengan baik sering orang menyebutnya
sebagai pribadi yang cerdas. Dalam menyelesaikan suatu masalahpun logika mutlak
diperlukan. Logika identik dengan masuk akal dan penalaran. Penalaran adalah salah
satu bentuk pemikiran. Pemikiran adalah pengetahuan tak langsung yang didasarkan
pada pernyataan langsung pemikiran mungkin benar dan mungkin juga tak
benar.Definisi logika sangat sederhana yaitu ilmu yang memberikan prinsip-prinsip yang
harus diikuti agar dapat berfikir valid menurut aturan yang berlaku. Pelajaran logika
menimbulkan kesadaran untuk menggunakan prinsip-prinsip untuk berfikir secara
sistematis. Logika berasal dari dari bahasa Yunani yaitu LOGOS yang berarti ilmu. Logika
dapat diartikan ilmu yang mengajarkan cara berpikir untuk melakukan kegiatan dengan
tujuan tertentu. Algoritma berasal dari nama seorang Ilmuwan Arab yang bernama Abu
JafarMuhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar Wal
Muqabala. Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian
lambat laun menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma.
Algoritma dapat diartikan urutan penyelesaian masalah yang disusun secara sistematis
menggunakan bahasa yang logis untuk memecahkan suatu permasalahan.

1.2. Defenisi
Algoritma

Algoritma adalah urutan langkah – langkah logis penyelesaian masalah yang disusun
secara sistematis dan logis. Kata logis merupakan kata kunci dalam algoritma. Langkah –
langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai benar atau
salah. Dalam kenyataanya, setiap orang bisa membuat algoritma yang berbeda untuk
menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam menyusun
algoritma tentunya kita mengharapkan keluaran yang sama. Jika demikian, carilah
algoritma yang paling efisien dan cepat. Perhatikan algoritma sederhana berikut : Jika
seseorang ingin mengirim surat kepada kenalannya di tempat lain langkah yang harus
dilakukan adalah :
1. Menyiapkan peralatan tullis,
2. Menulis surat,
3. Surat dimasukkan ke dalam amplop tertentu
4. Pada bagian amplop ditulis alamat pengirim dan penerima
5. Pergi ke tempat Jasa Pengiriman seperti Tiki, JNE, Pos dan lainya.

Algoritma menghitung luas persegi panjang :


1. Masukkan panjang (P)
2. Masukkan Lebar (L)
3. Luas <- P * L
4. Tulis luas

                                                  
                                                     Penukaran gelas isi gelas A dan gelas B.

Pemrograman
Pemrograman adalah kumpulan instruksi – instruksi tersendiri yang biasanya disebut
source code yang dibuat oleh programmer (pembuat program). Program adalah
kumpulan instruksi atau perintah yang disusun sedemikian rupa sehingga mempunyai
nalar yang tepat untuk menyelesaikan suatu persoalan. Bahasa pemrograman adalah alat
untuk membuat program. Contoh bahasa C, C++, C#, Pascal, Basic, Perl, PHP, ASP, JHP,
JAVA, dll. Secara garis besar unsur – unsur pemrograman adalah Input -> Proses ->
Output

    
                                                  Unsur – unsur pemrograman
a. Input Bagian ini merupakan proses untuk memasukkan data ke komputer melalui
device yang ada misalnya, keyboard, mouse, scanner, dll. Program melakukan proses
membaca data yang akan diolah dari device tersebut.
b. Proses Bagian ini merupakan proses mengolah data yang diinputkan dengan
menerapkan metode – metode, teknik – tekniki, algoritma – algoritma yang ada. Proses
ini menghasilkan data output yang akan dioutputkan kepada pengguna program.
c. Output Bagian ini merupakan proses untuk menampilkan data yang telah diolah,
melaporkan hasil pengolahan data melalui device seperti monitor, printer, dll. Program
melakukan proses mencetak data ke device tersebut.

Beda Algoritma dan Program


Algoritma adalah metode dan tahapan sistematis dalam program, sedangkan
Program adalah kumpulan pernyataan komputer. Program ditulis dengan menggunakan
bahasa pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari
bahasa pemrograman. Beberapa pakar memberi formula bahwa :
                         Program = Algoritma + Bahasa (Struktur Data)

Algoritma Pemrograman adalah langkah-langkah yang ditulis secara berurutan untuk


menyelesaikan masalah pemrograman komputer.
Last modified: Monday, 19 September 2022, 2:20 AM

1.3. Ciri-ciri, Sifat, Struktur Dasar dan Cara Penulisan


Algoritma

Ciri-ciri Algoritma
1. Finiteness (keterbatasan), algoritma harus berakhir
setelah mengerjakan sejumlah langkah proses.

2. Definiteness (kepastian), setiap langkah harus


didefinisikan secara tepat dan tidak berarti ganda.

3. Input (masukan), algoritma memiliki nol atau lebih


data masukan (input).

4. Output (keluaran), algoritma mempunyai nol atau


lebih hasil keluaran (output).

5. Effectiveness (efektivitas), algoritma harus sangkil


(efektif), langkah-langkah algoritma dikerjakan dalam
waktu yang wajar.

Sifat Algoritma

1. Tidak menggunakan simbol atau sintaks dari suatu


bahasa pemrograman tertentu.

2. Tidak tergantung pada suatu bahasa pemrograman


tertentu.

3. Notasi-notasinya dapat digunakan untuk seluruh


bahasa manapun.
4. Algoritma dapat digunakan untuk merepresentasikan
suatu urutan kejadian secara logis dan dapat diterapkan
di semua kejadian sehari-hari.

Struktur Dasar Algoritma

1. Runtunan (sequence)

Sebuah runtunan terdiri dari satu atau lebih instruksi.


Tiap instruksi dikerjakan secara berurutan sesuai dengan
urutan penulisannya, yakni sebuah instruksi dilaksanakan
setelah instruksi sebelumnya selesai dikerjakan. Urutan
dari instruksi menentukan hasil akhir dari suatu
algoritma. Bila urutan penulisan berubah maka mungkin
juga hasil akhirnya berubah. Sebagai contoh perhatikan
operasi aritmatika berikut ini, (4+3)*7=49, tetapi bila
urutan aksinya diubah maka hasil keluaran akan berbeda
menjadi 4+(3*7) =25. Contoh lain dari runtunan aksi
adalah algoritma penukaran dua bilangan bulat,yaitu:

1. Deklarasikan A, B, dan C sebagai bilangan bulat

2. Masukkan nilai A dan B

3. Masukkan nilai A ke dalam C

4. Masukkan nilai B ke dalam A

5. Masukkan nilai C ke dalam B


2. Pemilihan (selection)

Kadangkala terdapat suatu kejadian yang baru akan


dikerjakan jika suatu kondisi tertentu telah terpenuhi.
Pemilihan yaitu instruksi yang dikerjakan dengan kondisi
tertentu. Kondisi adalah persyaratan yang dapat bernilai
benar atau salah. Satu atau beberapa instruksi hanya
dilaksanakan apabila kondisi bernilai benar, sebaliknya
apabila salah maka instruksi tidak akan dilaksanakan.
Contoh kasus pemilihan adalah dalam penentuan
bilangan genap atau ganjil berikut ini:

1. Masukkan bilangan sebagai sebuah bilangan bulat

2. Bagi bilangan dengan angka 2, simpan nilai sisa


pembagian dalam variabel sisa

3. Jika nilai sisa sama dengan 0 maka kerjakan langkah 4:

4. Tampilkan ”GENAP” ke layar

5. Jika nilai sisa tidak sama dengan 0 maka kerjakan


langkah 6

6. Tampilkan ”GANJIL” ke layar

7. Selesai.

3. Pengulangan (repetition)
Salah satu kelebihan komputer adalah kemampuannya
untuk mengerjakan pekerjaan yang sama berulang kali
tanpa mengenal lelah.Kita tidak perlu menulis instruksi
yang sama berulang kali, tetapi cukup melakukan
pengulangan dengan instruksi yang tersedia.
Pengulangan merupakan kegiatan mengerjakan sebuah
atau sejumlah aksi yang sama sebanyak jumlah yang
ditentukan atau sesuai dengan kondisi yang diinginkan.
Beberapa statemen pengulangan di bahasa
pemrograman yaitu for…, while()..., do...while(),
repeat....until, for...downto...do, for...to...do dan lain-lain.
Sebagai contoh adalah menampilkan huruf tertentu
sebanyak n kali ke layar sebagai berikut:

1. Deklarasikan variabel huruf untuk menyimpan karakter


yang akan ditampilkan.

2. Deklarasikan variabel n untuk menyimpan banyaknya


perulangan

3. Deklarasikan variabel counter yang digunakan sebagai


counter perulangan yang sudah dilakukan.

4. Masukkan sebuah karakter dan simpan dalam variabel


huruf

5. Masukkan banyaknya perulangan yang diinginkan dan


simpan dalam variabel n

6. Set nilai counter dengan 0

7. Tampilkan huruf ke layar


8. Lakukan penambahan counter dengan 1

9. Jika nilai counter<n, kerjakan langkah 6

10. Jika nilai counter = n selesai

Cara Penulisan Algoritma

Sebagaimana telah diuraikan di sub bab sebelumnya


bahwa algoritma adalah urutan langkah-langkah
terbatas yang disusun secara sistematis dan
menggunakan bahasa yang logis dengan tujuan
menyelesaikan suatu masalah tertentu. Sementara
program adalah kumpulan instruksi berupa pernyataan
yang ditulis dengan menggunakan bahasa
pemrograman yang melibatkan pemilihan struktur data.
Beberapa pakar komputer menyatakan program dengan
formula Program = Algoritma + Bahasa Pemrograman.

Bahasa pemrograman dan algoritma berhubungan


sangat eratpada sebuah program. Algoritma yang baik
tanpa pemilihan struktur datayang tepat akan membuat
program menjadi kurang baik, demikian jugasebaliknya.
Jika dihubungkan dengan program, maka pembuatan
algoritma harus memperhatikan kaidah:

1. Pembuatan atau penulisan algoritma tidak tergantung


pada bahasapemrograman manapun, artinya penulisan
algoritma independen daribahasa pemrograman dan
komputer yang memprosesnya.

2. Notasi algoritma dapat diterjemahkan ke dalam


berbagai bahasapemrograman.

3. Apapun bahasa pemrogramannya, output yang akan


dikeluarkan sama karena algoritmanya sama.

Algoritma dibuat untuk membantu kita dalam


mengkonversikan suatu permasalahan ke dalam bahasa
pemrograman.Algoritma merupakan hasil pemikiran
konseptual, supaya dapatdilaksanakan oleh komputer,
algoritma harus diterjemahkan ke dalamnotasi bahasa
pemrograman. Ada beberapa hal yang harus
diperhatikanpada penerjemahan tersebut, yaitu:

1. Pendeklarasian variabel

Variabel dibutuhkan oleh program dalam rangka


menyimpan data masukan, memproses dan
mendapatkan hasil komputasi.

2. Pemilihan tipe data

Apabila dalam proses pembuatan program ternyata


membutuhkanpendeklarasian variabel maka diwajibkam
memilih tipe data, karena setiap variabel pasti
membutuhkan tipe data ketika dideklarasikan.
3. Pemakaian atau pemilihan instruksi

Terdapat beberapa macam instruksi dalam bahasa


pemrograman (sequence, selection dan repetition),
urutan langkah dalam algoritma dapat diterjemahkan
menjadi salah satu atau beberapa instruksi tersebut.

4. Aturan sintaksis

Pada saat menuliskan program kita terikat dengan


aturan sintaksis dalam bahasa pemrograman yang akan
digunakan. Setiap bahasa pemrograman memiliki aturan
penulisan sintaks-nya sendiri.

5. Tampilan hasil

Pada saat membuat algoritma kita tidak memikirkan


tampilan hasil yang akan disajikan. Hal teknis semacam
ini diperhatikan ketikamengkonversikannya menjadi
program.

6. Cara pengoperasian compiler atau interpreter.

Bahasa pemrograman yang digunakan termasuk dalam


kelompok compiler atau interpreter. Masing-masing
memiliki cara pengoperasian yang bisa jadi berbeda. 1.4.
Notasi Penulisan Algoritma
Algoritma berisi langkah-langkah penyelesaian masalah. Notasi algoritma merupakan hal
dasar yang harus diketahui oleh setiap orang yang ingin membuat suatu pogram, karena
dalam notasi algoritma inilah terdapat kerangka-kerangka suatu program. Deskripsi
langkahlangkah dalam algoritma tidak mengacu pada sintaks bahasa pemrograman
apapun dan tidak tergantung pada spesifikasi komputer yang mengeksekusinya. Tidak
ada aturan baku dalam menuliskan algoritma, yang penting mudah dibaca dan
menggunakan bahasa yang mudah dipahami. Meskipun demikian untuk menghindari
kekeliruan, ketaatan terhadap notasi perlu diperhatikan. Terdapat tiga cara yang umum
digunakan dalam menuliskan algoritma yaitu:
1. Kalimat deskriptif
2. Pseudocode
3. Flowchart

1. Kalimat deskriptif
Notasi penulisan algoritma dengan menggunakan bahasa deskriptif biasa juga disebut
dengan notasi alami. Dilakukan dengan cara menuliskan instruksi-instuksi yang harus
dilaksanakan dalam bentuk untaian kalimat deskriptif dengan menggunakan bahasa
yang jelas. Dasar dari notasi bahasa deskriptif adalah Bahasa Inggris, namun dapat
dimodifikasi dengan bahasa sehari-hari termasuk Bahasa Indonesia. Karena tidak ada
aturan baku dalam menuliskan algoritma dengan notasi deskriptif maka tiap orang dapat
membuat aturan penulisan dan notasi algoritma sendiri. Hal ini dapat dimengerti karena
teks algoritma tidak sama dengan teks program. Program adalah implementasi
algoritma dalam notasi bahasa pemrograman tertentu. Namun, agar notasi algoritma
mudah ditranslasi ke dalam notasi bahasa pemrograman, maka sebaiknya notasi
algoritma tersebut berkoresponden dengan notasi bahasa pemrograman pada
umumnya. Kata kerja adalah jenis kata yang biasa digunakan dalam penulisan bahasa
deskriptif, contohnya tulis, baca, hitung, tampilkan, ulangi, bandingkan, dan lain-lain.

Notasi jenis ini cocok untuk algoritma yang pendek. Tapi untuk masalah algoritma yang
panjang, notasi ini kurang efektif. Cara penulisan algoritma dengan notasi bahasa
deskriptif paling mudah dibuat, namun demikian cara ini paling sulit untuk
diterjemahkan ke dalam bahasa pemrograman. Pada dasarnya teks algoritma dengan
bahasa deskriptif disusun oleh tiga bagian utama yaitu:
a. Bagian judul (header)
b. Bagian deklarasi (kamus)
c. Bagian deskripsi Setiap bagian disertai dengan komentar untuk memperjelas maksud
teks yang dituliskan. Komentar adalah kalimat yang diapit oleh pasangan tanda kurung
kurawal (‘{’ dan ‘}’).

a. Judul Algoritma
Merupakan bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang
algoritma tersebut. Dibagian ini juga digunakan untuk menentukan apakah teks
algoritma yang dibuat tersebut adalah program, prosedur, atau fungsi. Nama algoritma
sebaiknya singkat namun cukup menggambarkan apa yang dilakukan oleh algoritma
tersebut. Di bawah nama algoritma disertai dengan penjelasan singkat (intisari) tentang
apa yang dilakukan oleh algoritma. Penjelasan dibawah nama algoritma sering
dinamakan juga spesifikasi algoritma yang dituliskan dalam kurung kurawal ({}).
Algoritma harus ditulis sesuai dengan spesifikasi yang didefinisikan. Contoh judul
algoritma menghitung luas lingkaran yang disertai dengan penjelasan singkat.
1.4.1. Kalimat deskriptif
1. Kalimat deskriptif

Notasi penulisan algoritma dengan menggunakan bahasa deskriptif biasa juga disebut
dengan notasi alami. Dilakukan dengan cara menuliskan instruksi-instuksi yang harus
dilaksanakan dalam bentuk untaian kalimat deskriptif dengan menggunakan bahasa
yang jelas. Dasar dari notasi bahasa deskriptif adalah Bahasa Inggris, namun dapat
dimodifikasi dengan bahasa sehari-hari termasuk Bahasa Indonesia. Karena tidak ada
aturan baku dalam menuliskan algoritma dengan notasi deskriptif maka tiap orang dapat
membuat aturan penulisan dan notasi algoritma sendiri. Hal ini dapat dimengerti karena
teks algoritma tidak sama dengan teks program. Program adalah implementasi
algoritma dalam notasi bahasa pemrograman tertentu. Namun, agar notasi algoritma
mudah ditranslasi ke dalam notasi bahasa pemrograman, maka sebaiknya notasi
algoritma tersebut berkoresponden dengan notasi bahasa pemrograman pada
umumnya. Kata kerja adalah jenis kata yang biasa digunakan dalam penulisan bahasa
deskriptif, contohnya tulis, baca, hitung, tampilkan, ulangi, bandingkan, dan lain-lain.

Notasi jenis ini cocok untuk algoritma yang pendek. Tapi untuk masalah algoritma yang
panjang, notasi ini kurang efektif. Cara penulisan algoritma dengan notasi bahasa
deskriptif paling mudah dibuat, namun demikian cara ini paling sulit untuk
diterjemahkan ke dalam bahasa pemrograman. Pada dasarnya teks algoritma dengan
bahasa deskriptif disusun oleh tiga bagian utama yaitu:
a. Bagian judul (header)
b. Bagian deklarasi (kamus)
c. Bagian deskripsi Setiap bagian disertai dengan komentar untuk memperjelas maksud
teks yang dituliskan. Komentar adalah kalimat yang diapit oleh pasangan tanda kurung
kurawal (‘{’ dan ‘}’).

a. Judul Algoritma
Merupakan bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang
algoritma tersebut. Dibagian ini juga digunakan untuk menentukan apakah teks
algoritma yang dibuat tersebut adalah program, prosedur, atau fungsi. Nama algoritma
sebaiknya singkat namun cukup menggambarkan apa yang dilakukan oleh algoritma
tersebut. Di bawah nama algoritma disertai dengan penjelasan singkat (intisari) tentang
apa yang dilakukan oleh algoritma. Penjelasan dibawah nama algoritma sering
dinamakan juga spesifikasi algoritma yang dituliskan dalam kurung kurawal ({}).
Algoritma harus ditulis sesuai dengan spesifikasi yang didefinisikan. Contoh judul
algoritma menghitung luas lingkaran yang disertai dengan penjelasan singkat.
b. Bagian Deklarasi
Di dalam algoritma, deklarasi atau kamus adalah bagian untuk mendefinisikan semua
nama yang dipakai di dalam algoritma. Nama tersebut dapat berupa nama variabel,
nama konstanta, nama tipe, nama prosedur atau nama fungsi. Semua nama tersebut
baru dapat digunakan di dalam algoritma jika telah didefinisikan terlebih dahulu didalam
bagian deklarasi. Penulisan sekumpulan nama dalam bagian deklarasi sebaiknya
dikelompokkan menurut jenisnya. Pendefinisian nama konstanta sekaligus memberikan
nilai konstanta. Pendefinisian nama fungsi atau prosedur sekaligus dengan pendefinisian
spesifikasi dan parameternya. Bentuk umum bagian deklarasi.

c. Bagian deskripsi
Deskripsi adalah bagian inti dari struktur algoritma. Bagian ini berisi uraian
langkahlangkah penyelesaian masalah. Langkah-langkah ini dituliskan dengan notasi
yang lazim dalam penulisan algoritma. Setiap langkah algoritma dibaca dari langkah
paling atas hingga langkah paling bawah. Urutan penulisan menentukan urutan
pelaksanaan perintah.Seperti telah dijelaskan di bab satu bahwa penyusun atau struktur
dasar algoritma adalah langkahlangkah. Suatu Algoritma dapat terdiri dari tiga struktur
dasar, yaitu runtunan, pemilihan dan pengulangan. Ketiga jenis langkah tersebut
membentuk konstruksi suatu algoritma. Pada bagian deskripsi inilah letak tiga struktur
algoritma tersebut. Contoh algoritma menghitung luas lingkaran yang dituliskan
menggunakan kalimat deskriptif secara lengkap.
Last modified: Monday, 19 September 2022, 3:23 AM

◄ 1.4. Notasi Penulisan Algoritma

Jump to...

1.4.2. Pseudocode
Pseudocode adalah cara penulisan algoritma yang menyerupai bahasa pemrograman
tingkattinggi. Pseudocode menggunakan bahasa yang hampir menyerupai bahasa
pemrograman. Biasanya pseudo-code menggunakan bahasa yang mudah dipahami
secara universal dan juga lebih ringkas dari pada algoritma. Pseudocode berisi deskripsi
dari algoritma pemrograman komputer yang menggunakan struktur sederhana dari
beberapa bahasa pemrograman tetapi bahasa tersebut hanya di tujukan agar dapat di
baca manusia. Sehingga pseudocode tidak dapat dipahami oleh komputer. Supaya
notasi pseudocode bisa dipahami oleh komputer maka harus diterjemahkan terlebih
dahulu menjadi sintaks bahasa pemrograman komputer tertentu. Dalam pseudocode,
tidak ada sintaks standar yang resmi. Karena itu, pseudocode ini dapat diterapkan dalam
berbagai bahasa pemograman. Disarankan untuk menggunakan keyword yang umum
digunakan seperti : if, then, else, while, do, repeat, for, dan lainnya Keuntungan
menggunakan notasi pseudocode adalah kemudahan mentranslasi ke notasi bahasa
pemrograman, karena terdapat korespondensi antara setiap pseudocode dengan notasi
bahasa pemrograman. Perbandingan beberapa kata yang biasa digunakan dalam
penulisan algoritma dengan menggunakan kalimat deskriptif dan pseudocode.
Struktur penulisan pseudocode secara umum sama dengan struktur penulisan algoritma
dengan menggunakan kalimat deskriptif yaitu dimulai dari judul/header,
deklarasi/kamus dan diakhiri dengan deskripsi. Meskipun tidak ada sintaks khusus dalam
penulisan pseudocode, tetapi terkadang pseudocode dituliskan dengan menggunakan
style atau gaya penulisan dari beberapa bahasa pemrograman yang ada, seperti Fortran,
Pascal, C dan lain-lain. Contoh pseudocode menentukan bilangan terbesar dari 3
masukan bilangan:

1.4.3. Flowchart
Flowchart adalah cara penulisan algoritma dengan menggunakan notasi grafis. Flowchart
merupakan gambar atau bagan yang memperlihatkan urutan atau langkah-langkah dari suatu
program dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan
simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara
proses digambarkan dengan garis penghubung. Dengan menggunakan flowchart akan
memudahkan kita untuk melakukan pengecekan bagian-bagian yang terlupakan dalam
analisis masalah. Disamping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi
antara pemrogram yang bekerja dalam tim suatu proyek. Flowchart menolong analis dan
programmer untuk memecahkan masalah kedalam segmen-segmen yang lebih kecil dan
menolong dalam menganalisis alternatif-alternatif lain dalam pengoperasian.

Pada dasarnya terdapat berbagai macam flowchart, diantaranya yaitu Flowchart Sistem
(System Flowchart), Flowchart Paperwork / Flowchart Dokumen (Document Flowchart),
Flowchart Skematik (Schematic Flowchart), Flowchart Program (Program Flowchart),
Flowchart Proses (Process Flowchart). Untuk keperluan pembuatan program maka digunakan
Flowchart Program.

Flowchart program menggambarkan urutan instruksi yang digambarkan dengan simbol


tertentu untuk memecahkan masalah dalam suatu program. Dalam flowchart program
mengandung keterangan yang lebih rinci tentang bagaimana setiap langkah program atau
prosedur seharusnya dilaksanakan. Flowchart ini menunjukkan setiap langkah program atau
prosedur dalam urutan yang tepat saat terjadi.Programmer menggunakan flowchart program
untuk menggambarkan urutan instruksi dari program komputer.Analis Sistem menggunakan
flowchart program untuk menggambarkan urutan tugas-tugas pekerjaan dalam suatu prosedur
atau operasi.

Dalam pembuatan flowchart program tidak ada rumus atau patokan yang bersifat mutlak.
Karena flowchart merupakan gambaran hasil pemikirandalam menganalisis suatu masalah
yang nantinya akan diubah menjadi program komputer. Sehingga flowchartyang dihasilkan
dapat bervariasi antara satu pemrogram dengan yang lainnya.

1.5. Sekilas Bahasa Pemrograman


Belajar Memprogram dan Belajar Bahasa Pemrograman
Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian
menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.
Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa aturan –
aturan tata bahasanya, pernyataan – pernyataanya, tata cata pengoperasian compiler –
nya, dan memanfaatkan pernyataan – pernyataan tersebut untuk membuat program
yang ditullis hanya dalam bahasa itu saja. Sampai saat ini terdapat puluhan bahasa
pemrogram, antara lain bahasa rakitan (assembly), Fortran, Cobol, Ada, PL/I, Algol, C, C+
+, Basic, Prolog, LISP, PRG, bahasa – bahasa simulasi seperti CSMP, Simscript, GPSS,
Dinamo.

Berdasarkan terapannya, bahasa pemrograman dapat digolongkan atas dua kelompok


besar :
1. Bahasa pemrograman bertujuan khusus. Yang termasuk kelompok ini adalah Cobol
(untuk terapan bisnis dan administrasi). Fortran (Terapan komputasi ilmiah), bahasa
rakitan (terapan pemrograman mesin), prolog (terapan kecerdasan buatan), bahasa –
bahasa simulasi dan sebagainya.
2. Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai
aplikasi. Yang termasuk kelompok ini adalah bahasa pascal, basic dan C. 

Berdasarkan pada apakah notasi bahasa pemrograman lebih “dekat” ke mesin atau ke
bahasa manusia, maka bahasa pemrograman dikelompokkan atas dua macam :
1. Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya langsung
dikerjakan oleh komputer, tanpa harus melalui penerjemah (translator). Contohnya
adalah bahasa mesin. CPU mengambil instruksi dari memori, langsung mengerti dan
langsung mengerjakan operasinya. Bahasa tingkat rendah bersifat primitif, sangat
sederhana, orientasinya lebih dekat ke mesin, dan sulit dipahami manusia.
Sedangkan bahasa rakitan dimasukkan kedalam kelompok ini karena alasan notasi yang
dipakai dalam bahasa ini lebih dekat ke mesin, meskipun untuk melaksanakan
instruksinya masih perlu penerjemahan ke dalam bahasa mesin.
2. Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah dipahami, lebih
“manusiawi”, dan berorientasi ke bahasa manusia (bahasa inggris). Hanya saja, program
dalam bahasa tingkat tinggi tidak dapat langsung dilaksanakan oleh komputer. Ia perlu
diterjemahkan terlebih dahuu oleh sebuah translator bahasa (yang disebut kompilator
atau compiler) ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU. Contoh
bahasa tingkat tinggi adalah Pascal, PL/I, Ada, Cobol, Basic, Fortran, C, PHP, C++, dan
sebagainya.

Perbedaan compiler dan interpreter

Paradigma Pemrograman :
1) Pemrograman prosedudral
a) Berdasarkan urutan – urutan, sekuensial
b) Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan kumpulan instruksi yang dikerjakan secara berurutan.
c) Harus mengingat prosedur mana yang sudah di panggil dan apa yang sudah diubah
2) Pemrograman Fungsional
a) Berdasarkan teori fungsi matematika
b) Fungsi merupakan dasar utama program
3) Pemrograman Terstruktur
a) Secara berurutan dan terstruktur
b) Program dapat dibagi – bagi menjadi prosedur dan fungsi
c) Contoh : Pascal dan C
4) Pemrograman Modular
a) Pemrograman ini membentuk banyak modul
b) Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
c) Sebuah program terdiri dari kumpulan modul – modul d) Contoh : MODULA-2 atau
ADA
5) Pemrograman Berorientasi Obyek
a) Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki
data/variable/property dan method/event/prosedur yang dapat dimanipulasi
b) Contoh : C++, Object Pascal dan Java
6) Pemrograman berorientasi fungsi
a) Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada
tujuan pembuatan bahasa pemrograman ini.
b) Contoh : SQL (Structured Query Language), HTML, XML, dan Lain – lain 
7) Pemrograman Deklaratif
a) Pemrograman ini mendeklarasikan suatu masalah dengan pernyataan daripada
memecahkan masalah dengan implementasi algoritma.
b) Contoh : Prolog

2.1. Tipe Data


Pengertian
Tipe data merupakan jenis data yang digunakan untuk merepresentasikan jenis dari nilai
yang dapat ditampung oleh sebuah variabel.

Secara umum terdapat 2 jenis tipe data yaitu:


1. Tipe data primitive
2. Tipe data non-primitive(referensi)

Tipe data primitive adalah tipe data dasar yang tersedia secara langsung pada suatu
bahasa pemrograman.

Jenis tipe data primitive:

1. Tipe data Integer: Tipe data untuk angka bulat seperti 5, 7, atau 48.
2. Tipe data Float/Double: Tipe data untuk angka pecahan seperti 3.14, 5.55, atau
0.00024.
3. Tipe data Boolean: Tipe data yang berisi nilai true atau false.
4. Tipe data Char: Tipe data untuk 1 karakter, seperti ‘a’, ‘Z’ atau ‘%’.
5. Tipe data Void: Tipe data khusus yang menyatakan tidak ada data.

Tipe data non-primitive(referensi) adalah tipe data yang didefinisikan sendiri oleh


programmer dan biasanya berisi lebih dari satu nilai. non-primitive bisa juga disebut
dengan tipe data Referensi.

Jenis tipe data non-primitive:

1. Tipe data String: Tipe data untuk kumpulan karakter, seperti “Andi” atau “Belajar
C++”.
2. Tipe data Array: Tipe data untuk kumpulan tipe data lain yang sejenis.
3. Tipe data Structure (struct): Tipe data yang terdiri dari kumpulan tipe data dasar.
Tipe data tersebut bisa lebih dari 1 jenis.
4. Tipe data Enum: Tipe data bentukan yang dibuat sendiri oleh kita (programmer).
5. Tipe data Pointer: Tipe data untuk mengakses alamat memory secara langsung.

Sintaks pendeklarasian tipe data terhadap suatu variable adalah sebagai berikut:
tipe_data nama_variabel;

Jika disertai dengan inisialisasi nilai variabel maka sintaksnya seperti berikut:
tipe_data nama_variabel = nilai;

Jenis Tipe Data


Tipe data integer adalah tipe data yang diterapkan pada suatu variabel untuk
menampung nilai berupa bilangan bulat. Secara umum untuk menggunakan tipe data ini
cukup dengan menggunakan keyword :  int.

Ukuran tipe data ini adalah 4 bytes atau 32 bit (namun ukuran ini bergantung kepada
compiler yang anda gunakan, jadi bisa saja berbeda). Tipe ini terbagi lagi ke dalam
beberapa jenis seperti terlihat pada tabel berikut:
Ukuran tipe data merepresentasikan besarnya range nilai yang dapat dihasilkan dari tipe
data tersebut.  Misalnya 4 bytes jika semua bitnya bernilai 1 (11111111 11111111
11111111 11111111) dan tipenya unsigned maka nilainya adalah 4.294.967.295 (ingat
kembali konversi biner ke desimal). Sebaliknya, jika semua bitnya bernilai 0 maka nilainya
adalah 0. Sedangkan jika signed, maka nilainya terbagi dua dari negatif ke positif dimana
1 bit akhir digunakan sebagai penanda ([0/1]1111111 11111111 11111111 11111111).
Inilah sebab mengapa tipe signed int rangenya berkisar antara  -2.147.483.648 sampai
2.147.483.647.

Tipe data Bilangan Real (Floating Point) adalah tipe data yang digunakan pada suatu
variabel untuk menampung nilai dalam bentuk bilangan real. Secara umum untuk
menggunakan tipe data ini cukup dengan menggunakan keyword :  float atau double.

Tipe data Character adalah tipe data yang digunakan pada suatu variabel untuk
menampung nilai berupa karakter. Secara umum untuk menggunakan tipe data ini
cukup dengan menggunakan keyword : char.
Tipe data Boolean adalah tipe data yang digunakan pada suatu variabel untuk
menampung nilai benar (true) atau salah (false). Secara umum untuk menggunakan tipe
data ini cukup dengan menggunakan keyword : bool.
2.2. Variabel
Pengantar

Variabel adalah suatu tempat yang berfungsi untuk menyimpan nilai atau konstanta. nilai
tersebut biasanya di dapat dari masukan pengguna, programmer, lingkungan, atau
merupakan hasil dari proses program.

Variabel yang telah kita buat merupakan sebuah memori pada komputer. Di dalam
komputer, tepatnya pada memori komputer, sebenarnya terdapat banyak sekali memori
yang tersusun yang memiliki alamat sebagai penanda memori. Alamat memori diwakili
dengan bilangan hexadecimal dan setiap alamat mewakili satu bit.

Setiap kali kita mendirikan variabel kita sebenarnya meminta memori pada CPU, lalu CPU
akan memeriksa dan mencari alamat memori mana yang masih kosong dan dapat
digunakan. Memori itu akan diberikan kepada program dalam bentuk alamat memori.
Dengan arti bahwa variabel hanyalah sebuah perwakilan dari alamat memori yang
diberikan.

Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai
tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap,
nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan.

Aturan Deklarasi Variabel


Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan
sebagai berikut :

1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa
huruf. Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap
berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.
2. Tidak boleh mengandung spasi.
3. Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah
(underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara
lain : $, ?, %, #, !, &, *, (, ), -, +, = dsb
4. Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Deklarasi variabel adalah proses mendirikan atau pembuatan variabel dalam kode
program. Untuk mendirikan variabel kita membutuhkan sebuah tipe data yang berguna
untuk mewakili bentuk nilai yang akan disimpan dan sebuah nama (identifier) sebagai
pengenal.

Bentuk Penulisan

tipe_data identitas;
Contoh Penulisan

int umur;
Pada contoh di atas kita nyatakan bahwa akan kita dirikan sebuah variabel yang dapat
menyimpan data dalam bentuk integer dengan nama pengenal adalah umur.

Anda dapat membuat variabel tanpa nilai atau anda juga bisa langsung menyertakan
nilai pada saat deklarasi variabel, pemberial nilai saat deklarasi disebut
sebagai inisialisasi.

Bentuk Penulisan

Tipe_data identitas =
inisialisasi;
Contoh Penulisan

int umur = 25;
Sebuah deklarasi merupakan sebuah pernyataan, Setiap kali pendeklarasian variabel
harus diakhiri dengan tanda titik koma ;.

Jenis-jenis Tipe Data pada Variabel


Dalam mendeklarasikan sebuah variabel kita akan membutuhkan tipe data untuk
menentukan bentuk dari nilai yang dapat disimpan dalam variabel tersebut. Tipe data
variable secara umum bisa dibedakan menjadi tiga, yaitu:

Variabel Numerik: Memungkinkan pengguna menyimpan data dalam bentuk angka


atau bilangan. Variabel numerik dapat dibagi menjadi beberapa bagian yaitu : Bilangan
Bulat (Integer int), Bilangan Desimal Berpresisi Tunggal (Floating Point float). Bilangan
Desimal Berpresisi Ganda (Double Precision double).

Variabel Text: memungkinkan pengguna untuk menyimpan data berbentuk karakter.


Bahasa pemrograman C++ menyediakan beberapa tipe data untuk variabel jenis ini,
seperti char (Character / Karakter tunggal), string (kumpulan dari karakter atau kata) dll.

Boolean: merupakan jenis yang hanya dapat mewakili satu dari dua pilihan yaitu 1 (True)
atau 0 (False). Pada pemrograman C++ kita dapat gunakan tipe data jenis ini, dengan
memberikan keyword bool.
2.3. Konstanta
Pengantar
Konstanta adalah sebuah tempat atau container dari suatu nilai. Sesuai dengan
namanya, nilai dari konstanta bersifat tetap (konstan) dan tidak bisa diubah sepanjang
program berjalan. Inilah yang menjadi pembeda antara konstanta dengan variabel.

Konstanta adalah jenis identifier yang bersifat konstan atau tetap, artinya nilai konstanta
adalah tidak dapat di ubah. Konstanta berguna untuk menentukan nilai yang merupakan
tetapan, misalnya nilai phi (π), satuan dari kecepatan cahaya dan sebagainya.
Identifier adalah suatu pengenal atau pengidentifikasi yang didekralasikan agar
kompiler dapat mengenalinya. Identifier dapat berupa variabel, konstanta, fungsi, dan
kelas.
Dalam menentukan atau membuat identifier pada program, ada beberapa hal yang
harus diperhatikan yaitu:

 C++ bersifat case sensitive sehingga huruf kapital dan huruf kecil berbeda.
 Identifier tidak boleh diawal dengan angka.
 Identifier tidak boleh menggunakan karakter-karakter simbol seperti #, @, ?, !, $,
dan lain-lain).
 Identifier tidak boleh menggunakan kata kunci yang terdapat pada C++, seperti
break, return dan lain-lain.
 Nama identifier sebaiknya disesuaikan dengan kebutuhannya.

Dekalarasi dengan nilai tetap


Dalam bahasa pemrograman C++ terdapat dua cara untuk membuat deklarasi yang
memiliki nilai tetap, yaitu menggunakan const keyword dan define preprocessor directive.

const keyword
const keyword berfungsi untuk merubah sifat dari deklarasi seperti variabel atau object
menjadi memiliki nilai tetap atau tidak dapat diubah. Hal ini biasanya digunakan untuk
menyimpan nilai dengan menyatakan bahwa nilai tersebut memang sudah standard
(nilai pasti), seperti: nilai PI=3.14, kecepatan cahaya dan lain-lain.
dengan keyword const kita dapat membuat nilai pada deklarasi itu tetap terjaga.

Untuk mendirikan sebuah deklarasi variabel konstanta, kita dapat dirikan sebuah variabel
dengan cara seperti biasa dan hanya kita tambahkan keyword const yang biasanya
diletakan pada awal dari deklarasi.
Bentuk Penulisan
const dataType identitas = inisialisasi

Contoh Penulisan
const float PI = 3.14;

Untuk menyatakan variabel konstanta kita diwajibkan untuk melakukan inisialisasi pada
variabel konstanta tersebut.

Biasanya para programmer memberikan identitas untuk sebuah konstanta menggunakan


huruf balok pada identitasnya, untuk memudahkan mereka membedakan dengan
variabel biasa.

#define Preprocessor Directive
Selain cara yang ada di atas. kita juga bisa menggunakan #define untuk membuat
konstanta. #define digunakan untuk mendefinisikan suatu nilai tertentu kepada suatu
nama konstanta.

Bentuk Penulisan
#define NAMA_KONSTANTA nilai

Keterangan :

NAMA_KONSTANTA : digunakan untuk identitas dari konstanta tersebut.

nilai : adalah tempat dimana kita dapat mendefinisikan konstanta tersebut dengan nilai,
kita tidak hanya dapat mengisinya dengan sebuah nilai (Angka/Karakter/String) tapi kita
juga dapat mengisinya dengan sebuah pernyataan.

2.4. Input/Output

Perintah Keluaran (Output)

Perintah Keluaran (Output) adalah aktivitas memberikan


informasi dari program untuk pengguna. Informasi
tersebut bisa berbentuk data seperti tulisan, gambar, file,
hardcopy, objek dan lain-lain.
Dalam bahasa pemrograman C++ kita dapat melakukan
perintah keluaran menggunakan cout. Jika dalam bahasa
pemrograman C, kita dapat menggunakan perintah
keluaran seperti printf, puts, putchar dan lain-lain.

Macam-Macam Dasar Perintah Keluaran (Output) pada


C Pada CLI

1. Function printf()

printf (Print Formatted data to stdout ) adalah fungsi


yang berasal dari bahasa pemrograman C, fungsi yang
paling umum digunakan pada bahasa pemrograman C
dalam melakukan perintah keluaran pada CLI. printf()
merupakan fungsi yang berasal dari pustaka stdio.h .

Bentuk Penulisan

printf("kalimat karakter atau kumpulan karakter


%Penentu_format_variabel", variabel);

Keterangan
Kita dapat menaruh kalimat atau nilai di dalam
parameter sebagai argument untuk function printf,
ketika kita ingin menampilkan nilai dari variabel dengan
menggunakan function printf anda bisa menggunakan
penentu format.

Penentu format digunakan untuk menentukan jenis


format apa yang akan digunakan untuk mencetak nilai
variabel yang di panggil, identitas variabel juga
disebutkan pada ruang parameter ke dua yang
merupakan daftar urutan identitas variabel, peletakan
variabel urut berdasarkan urutan format pada parameter
satu.

Macam – macam Dasar penentu format

Tipe Data Penentu Format

Integer

%d atau %i

Floating Point :

– Bentuk Desimal

%f
– Bentuk Berpangkat

%e

– Bentuk Desimal dan Pangkat

%g

Double

%if

Character

%c

String

%s

Unsigned Integer

%u

Long Integer

%ld

Long Unsigned Integer

%lu

Unsigned Hexadecimal Integer

%x
Unsigned Octal Integer

%o

Contoh Penulisan

printf("%s mendapatkan nilai %f", nama, nilai);

printf("%s mendapatkan peringkat %c", nama, grade);

2. Function puts()

puts() adalah fungsi yang mempunyai kepajangan Put


String merupakan standar output sama seperti printf().
function puts() berfungsi untuk menyalin alamat dari
string sebagai argumen untuk dicetak ke layar dalam
bentuk kalimat. Puts() Termasuk dalam pustaka stdio.h.
yang merupakan turunan dari bahasa pemrograman C.

Perbedaan fungsi puts() dan printf()

printf() puts()

Harus menenukan format data untuk tipe data sting,


yaitu %s Tidak perlu menentukan tipe data string karena
ini khusus untuk data string
Untuk mencetak pindah baris memerlukan notasi \n
Untuk mencetak pindah bais tidak perlu notasi \n,
karena sudah diberikan secara otomatis saat pernyataan
puts() selesai.

Contoh Penulisan

puts("Belajar C++");

puts(nama);

3. Function putchar()

Function putchar() digunakan untuk menampilkan


sebuah karakter ke layar. Penampilan karakter tidak
diakhiri dengan pindah baris. Putchar berasal dari
pustaka stdio.h.

Contoh Penulisan

putchar('a');

putchar(var);

function putchar hanya bisa mendapatkan 1 argument


dan hanya bisa mencetak satu karakter.
Input adalah aktifitas pengguna kepada program, yang
memungkinkan program untuk menerima data dari
pengguna yang biasanya berbentuk text, file, gambar,
hardcopy, obyek dan lain-lain. Data tersebut biasanya
akan diolah oleh program dan dikeluarkan dengan
perintah keluaran yang ditujukan untuk pengguna itu
sendiri.

Perintah Masukan (Input)

Pada bahasa pemrograman C++ kita dapat melakukan


aktifitas input menggunakan object cin.

Beberapa standar function yang dapat kita gunakan


untuk melakukan aktifitas input informasi dari manusia
ke program dalam bahasa pemrograman C, yaitu
dengan menggunakan scanf(), gets(), dan getchar() yang
merupakan standar function yang biasa digunakan
dalam aktifitas input pada CLI.

Macam-Macam Dasar Perintah Masukan (Input) C pada


CLI
1. Function scanf()

scanf (Scan/Read Formatted data from stdin) adalah


function yang berasal dari bahasa pemrograman C. bisa
dikatakan scanf memiliki peran yang berlawanan dengan
printf, yaitu scanf berfungsi untuk melaukan perintah
masukan melalui layal CLI. Memungkinkan pengguna
(manusia) memberikan informasi berupa data text
kepada program. Scanf merupakan fungsi yang berasal
dari pustaka stdio.h

Bentuk Penulisan

scanf("%penentu_format", alamat_variabel);

Keterangan

scanf membutuhkan dua argument, yaitu:

Argument pertama %penentu_format. Tidak jauh beda


dengan printf, scanf membutuhkan penentu format
sama seperti penentu format pada printf (untuk dasar
penentu format anda bisa melihat pada keterangan
printf di atas).
Argument kedua alamat_variabel digunakan untuk
memberikan data berupa alamat memori dari variabel
atau obyek untuk penyimpanan data input. Untuk
variabel biasa, biasanya kita membutuhkan tanda
Address of Operator & untuk menyatakan alamat
memori pada variabel tersebut.

2. Function gets()

Gets (Get String) adalah function yang berasal dari


bahasa pemrograman C, bisa dikatakan bahwa gets()
merupakan pasangan dari puts() yang memiliki fungsi
berlawanan yaitu berfungsi untuk membuat perintah
masukan, memungkinkan pengguna (manusia) danapat
memasukan data atau informasi ke dalam program
komputer melalui CLI dalam bentuk data text. Mirip
seperti scanf tapi gets lebih dikhususkan untuk string.
Gets termasuk dalam pustaka stdio.h.

Bentuk Penulisan

gets(nama_variabel)

Perbedaan antara scanf() dan gets()

scanf() Tidak dapat menerima string yang


mengandung spasi atau tab, dan akan dianggap sebagai
data terpisah
gets() Dapat menerima string yang mengandung
spasi atau tab dan masih dianggap sebagai satu
kesatuan data.

3. Function getchar()

getchar (Get Character from stdin), adalah fungsi yang


berasala dari bahasa pemrograman C. merupakan
pasangan dari Putchar, dan memiliki peran yang
berlawanan yaitu, getchar berfungsi untuk memberikan
perintah masukan, memungkinkan pengguna untuk
memasukan data informasi berupa satu karakter text
melalui CLI kepada program komputer. getchar
dikhususkan untuk masukan berupa satu karakter.
getchar termasuk dalam pustaka stdio.h.

Bentuk Penulisan

variabel = getchar();

Berbeda seperti fungsi-fungsi sebelumnya, getchar tidak


menggunakan argument untuk parameter getchar,
tempat dimana data akan disimpan ditulis sebelum
fungsi getchar dan menggunakan tanda = diantara
nama tujuan dan function getchar().3.1. Defenisi
Flowchart
Flowchart (Diagram Alir)

Flowchart atau bagan alir adalah skema/bagan (chart) yang menunjukkan aliran (flow)
di dalam suatu program secara logika. Flowchart merupakan alat yang banyak digunakan
untuk menggambarkan algoritma dalam bentuk notasi-notasi tertentu. Flowchart
merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar
proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan
demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses
digambarkan dengan garis penghubung. Dengan menggunakan flowchart akan
memudahkan kita untuk melakukan pengecekan bagianbagian yang terlupakan dalam
analisis masalah. Di samping itu flowchart juga berguna sebagai fasilitas untuk
berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek.

Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart, namun ada
beberapa anjuran:

1. Secara garis besar ada 3 bagian utama:


a. Input
b. Proses
c. Output

2. Hindari pengulangan proses yang tidak perlu dan logika yang berbelit sehingga
jalannya proses menjadi singkat.

3. Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah
untuk memperjelas.

4. Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END.

Jenis Flowchart 

1. Flowchart Sistem (System Flowchart)


2. Flowchart Flowchart Dokumen (Document Flowchart)
3. Flowchart Skematik (Schematic Flowchart)
4. Flowchart Program (Program Flowchart)
5. Flowchart Proses (Process Flowchart)

1. Flowchart Sistem

Flowchart Sistem merupakan bagan yang menunjukkan alur kerja atau apa yang sedang
dikerjakan di dalam sistem secara keseluruhan dan menjelaskan urutan dari prosedur-
prosedur yang ada di dalam sistem. Dengan kata lain, flowchart ini merupakan dekripsi
secara grafik dari urutan prosedur-prosedur yang terkombinasi yang membentuk suatu
sistem.
Flowchart Sistem terdiri dari data yang mengalir melalui sistem dan proses yang
mentransformasikan data itu. Data dan proses dalam flowchart sistem dapat
digambarkan secara online  (dihubungkan langsung dengan komputer) atau offline  (tidak
dihubungkan langsung dengan komputer, misalnya mesin tik, cash register atau
kalkulator).

2. Flowchart Dokumen

Bagan alir dokumen (document flowchart) atau disebut juga bagan alir formulir (form
flowchart) atau paperwork flowchart merupakan bagan alir yang menunjukkan arus dari
laporan dan formulir termasuk tembusan-tembusannya. Bagan alir dokumen ini
menggunakan simbol-simbol yang sama dengan yang digunakan di dalam bagan alir
sistem.

3. Flowchart Skematik

Bagan alir skematik (schematic flowchart) merupakan bagan alir yang mirip dengan
bagan alir sistem, yaitu untuk menggambarkan prosedur di dalam sistem. Perbedaannya
adalah, bagan alir skematik selain menggunakan simbol-simbol bagan alir sistem, juga
menggunakan gambar-gambar komputer dan peralatan lainnya yang digunakan.
Maksud penggunaan gambar-gambar ini adalah untuk memudahkan komunikasi kepada
orang yang kurang paham dengan simbol-simbol bagan alir. Penggunaan gambar-
gambar ini memudahkan untuk dipahami, tetapi sulit dan lama menggambarnya.

4. Flowchart Program

Bagan alir program (program flowchart) merupakan bagan yang menjelaskan secara rinci
langkah-langkah dari proses program. Bagan alir program dibuat dari derivikasi bagan
alir sistem.

Bagan alir program dapat terdiri dari dua macam, yaitu bagan alir logika program
(program logic flowchart) dan bagan alir program komputer terinci (detailed computer
program flowchart). Bagan alir logika program digunakan untuk menggambarkan tiap-
tiap langkah di dalam program komputer secara logika. Bagan alir logika program ini
dipersiapkan oleh analis sistem.

5. Flowchart Proses

Flowchart Proses merupakan teknik penggambaran rekayasa industrial yang memecah


dan menganalisis langkah-langkah selanjutnya dalam suatu prosedur atau sistem. Bagan
alir proses menggunakan lima buah simbol tersendiri seperti terlihat pada tabel di
bawah ini.
Flowchart Proses digunakan oleh perekayasa industrial dalam mempelajari dan
mengembangkan proses-proses manufacturing. Dalam analisis sistem, flowchart ini
digunakan secara efektif untuk menelusuri alur suatu laporan atau form.

3.2. Manfaat Flowchart


Flowchart biasanya digunakan untuk mengidentifikasi aliran yang aktual / nyata /
sebenarnya ada, dibandingkan dengan aliran yang seharusnya (ideal).  Tempat dimana
terjadi kompleksitas atau kelebihan suatu proses dapat diidentifikasi pada sebuah
flowchart. Selanjutnya tim dapat menyepakati langkah-langkah dalam proses dan
membandingkan proses yang ada saat ini dengan proses yang seharusnya.

Berikut adalah manfaat lain dari pengembangan flowchart

 Membantu untuk memperjelas proses yang kompleks.


 Mengidentifikasi langkah-langkah yang tidak menambah nilai kepada pelanggan
internal atau eksternal, termasuk: penundaan; transportasi; pekerjaan yang tidak
perlu, duplikasi, biaya tambahan dan kerusakan dalam komunikasi.
 Membantu anggota tim mendapatkan pemahaman bersama tentang proses dan
penggunaan pengetahuan ini untuk mengumpulkan data, mengidentifikasi
masalah, fokus diskusi, danmengidentifikasi sumber.
 Berfungsi sebagai dasar untuk merancang proses baru.
 Menerangkan logika suatu program
 Pemahaman hubungan antara langkah-langkah proses yang berbeda
 Mengumpulkan data tentang proses tertentu
 Membantu dalam pengambilan keputusan
 Mengukur kinerja proses
 Menggambarkan struktur proses
 Mempermudah dalam pelacakan kesalahan aliran proses
 Menyoroti langkah-langkah penting dan menghilangkan langkah-langkah yang
tidak perlu

Flowchart digunakan untuk:

 Mengembangkan pemahaman tentang bagaimana proses dilakukan.


 Mempelajari proses untuk perbaikan (merancang sebuah proses “ideal”)
 Berkomunikasi dengan orang lain bagaimana proses dilakukan.
 Ketika memerlukan komunikasi yang lebih baik diantara orang-orang yang
terlibat dengan proses yang sama.
 Mendokumentasikan proses.
 Ketika merencanakan sebuah proyek.
 Menentukan apakah langkah-langkah dalam proses yang logis
 Mengungkap duplikasi kegiatan
 Mengidentifikasi peluang untuk meningkatkan proses
 Mempresentasikan suatu algoritma atau proses tertentu yang rinci dan rumit
dengan simbol -simbol tertentu sehingga mudah dipahami
 Menyederhanakan program yang kompleks dan rumit 
 Memberikan pemahaman kepada tim untuk menggunakan flowchart sebagai
metode mengumpulkan data, mendeteksi masalah, mengembangkan perangkat,
dan lain sebagainya
 Flowchart berguna untuk merancang proses baru atau menambahkan fitur
tambahan
 Diagram alir atau flowchart dapat memudahkan komunikasi anggota satu dengan
yang lainnya sehingga meminimalisir kesalahpahaman pada sebuah tim.

Flowchart  juga memiliki keuntungan dan kekurangan, antara lain:

Keuntungan flowchart Kekurangan flowchart
Cara paling efisien untuk mengomunikasikan Flowchart sulit digambar untuk
logika sistem program yang besar dan kompleks
Sebagai panduan untuk cetak biru selama program
Tidak memiliki jumlah detail yang tepat
dirancang
Flowchart sangat sulit untuk
Membantu proses debugging
direproduksi
Dapat membantu menganalisis program dengan Flowchart sangat sulit untuk
lebih mudah dan sebagai sebuah dokumentasi dimodifikasi

3.3. Mengenal Simbol Flowchart


Jenis dan Fungsi Simbol Flowchart

1. Flowchart Program
Simbol Nama Fungsi
Simbol yang digunakan untuk menyatakan awal
Simbol terminal
atau akhir suatu program.
Simbol yang digunakan untuk menunjukkan operasi
Simbol input/output
masukan atau keluaran

Simbol yang digunakan untuk menggambarkan


Simbol Process
proses pengolahan data

Simbol yang digunakan untuk menyatakan suatu


Simbol Decision
pilihan berdasarkan suatu kondisi tertentu

Simbol yang digunakan untuk memberikan nilai


Simbol Preparation
awal pada suatu variabel atau pencacah

Predefined Process Simbol yang digunakan untuk proses yang detilnya


(Sub Program) dijelaskan terpisah, misal dalam bentuk subroutine
Simbol yang digunakan untuk menghubungkan
Off Page Connector
bagian diagram alir pada halaman yang berbeda
Simbol yang digunakan untuk menghubungkan
On Page Connector
  bagian diagram alir pada halaman yang sama
Garis Alir (Flow Simbol yang digunakan untuk menunjukkan arah
Line) aliran proses
 

2. Flowchart system

Simbol Nama Fungsi


Simbol yang menunjukkan dokumen yang digunakan
Simbol
untuk input dan output baik secara manual, mekanik
Dokumen
maupun komputerisasi.
Simbol operasi Simbol yang menunjukkan pekerjaan yang dilakukan
Manual secara manual.
Simbol yang menunjukkan kegiatan proses operasi
Simbol Proses
program komputer.
Simbol Simbol yang menunjukkan proses pengurutan dokumen
pengurutan di luar komputer.
Simbol Offine Simbol yang menunjukkan file non komputer yang
Storage diarsip urut angka (numeric).
Simbol Offine Simbol Offine Storage Simbol yang menunjukkan file
Storage non komputer yang diarsip urut huruf (Alphabetic).
Simbol Offine Simbol yang menunjukkan file non komputer yang
Storage  diarsip urut tanggal (Chronological)
Simbol Simbol yang menunjukkan Input Output yang
  Magnetic tape  menggunakan pita magnetic.
Simbol Nama Fungsi
Simbol Simbol yang menunjukkan Input Output yang
  Magnetic Drum  menggunakan Drum magnetic.
Simbol
Simbol yang menunjukkan Input Output yang
Magnetic
  menggunakan Diskette.
Storage 
Simbol Hard Simbol yang menunjukkan Input Output yang
  Disk Storage  menggunakan Hard Disk.
Simbol Simbol yang menunjukkan Input Output yang
  Keyboard  menggunakan on line keyboard
Simbol yang menunjukkan Output yang ditampilkan
  Simbol Display 
dilayar terminal
Off Page  Simbol yang digunakan untuk menghubungkan bagian
  Connector diagram alir pada halaman yang berbeda
On Page  Simbol yang digunakan untuk menghubungkan bagian
  Connector diagram alir pada halaman yang sama

Garis Alir (Flow Simbol yang digunakan untuk menunjukkan arah aliran
Line) proses
 

Beberapa langkah dalam proses pembuatan suatu program atau software :

1. Mendefinisikan masalah dan menganalisanya

Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain
tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja
yang akan disediakan oleh program. Kemudian menentukan metode atau algoritma apa
yang akan diterapkan untuk menyelesaikan masalah tersebut dan terakhir menentukan
bahasa program yang digunakan untuk pembuatan program.

2. Merealisasikan dengan langkah-langkah berikut :


Secara umum, struktur suatu program terdiri dari beberapa bagian yaitu:
a. Input

Bagian ini merupakan proses untuk memasukkan data ke komputer melalui device yang


ada misalnya keyboard, mouse, scanner dll. Program melakukan proses membaca data
yang akan diolah dari device tersebut.

b. Output

Bagian ini merupakan proses untuk menampilkan data yang telah diolah, melaporkan
hasil pegolahan data melalui device seperti monitor, printer dll. Program melakukan
proses mencetak data ke device tersebut.

c. Proses Pengolahan Data

Bagian ini merupakan proses mengolah data yang diinputkan dengan nenerapkan
metode-metode, teknik-teknik, algoritma-algoritma yang ada. Proses ini menghasilkan
data output yang akan dioutputkan kepada pengguna program.

d. Penyimpanan Data
Bagian ini merupakan proses menyimpan data dalam memori atau device penyimpanan
data seperti disket, harddisk, CD dll.

Berikut ini adalah blok diagram struktur dari suatu program secara umum:

Last modified: Monday, 3 October 2022, 12:07 AM


3.4. Merancang Flowchart
Setelah mengetahui simbol dalam flowchart, berikut ini panduan lengkap cara membuat
flowchart sederhana.

1. Cara Membuat Flowchart di Word Secara Manual

Jika diperhatikan, simbol-simbol flowchart adalah fitur shape  yang tersedia di aplikasi


Word. Karena itu, bisa menggunakan aplikasi membuat flowchart sederhana dengan
mudah melalui Microsoft word. Berikut tahapan langkahnya.

1. Membuka aplikasi word


2. Klik opsi “Insert” kemudian “Shape”
3. Pilih simbol yang akan dimasukkan dalam flowchart sesuai kebutuhan
4. Beri teks keterangan (penjelas) dalam simbol flowchart
5. Susun simbol menjadi kesatuan prosedur secara urut
6. Sesuaikan besar dan letak simbol satu per satu

2. Cara Membuat Flowchart di Word Menggunakan Drawing Canvas

Jika merasa secara manual kurang efektif karena harus menyusun simbol flowchart satu
per satu dengan teliti, coba opsi cara membuat flowchart dengan bantuan drawing
canvas di aplikasi word. Berikut tahapan langkahnya.

1. Membuka aplikasi word


2. Klik opsi “Shape” pada Insert
3. Klik opsi “New Drawing Canvas” yang terletak pada bagian ujung bawah di kolom
“Shape”
4. Pilih beberapa simbol flowchart sesuai kebutuhan
5. Beri teks dengan bantuan “Text Box”
6. Atur sesuai urutan prosedur yang benar
Dengan bantuan drawing canvas, flowchart yang dihasilkan lebih rapi. Hal ini karena
simbol-simbol flowchart otomatis terletak dalam “satu canvas”, sehingga akan
memudahkan jika ingin menggeser pindah flowchart yang telah dibuat.

3. Aplikasi Membuat Flowchart Online

Seiring berkembangnya teknologi, cara membuat sebuah flowchart tidak hanya bisa
dilakukan dalam aplikasi Word saja. Kalian bisa memanfaatkan website atau aplikasi
membuat flowchart online. Beberapa aplikasi yang bisa dijadikan referensi dalam daftar
berikut.

1. Lucidchart (website)
2. Creately (website)
3. GitMind (software)
4. Edrawsoft (website)
5. Microsoft visio (software)
6.
4.1. Defenisi Header
7. Pengantar
8. Bahasa pemrograman memiliki cara yang tersendiri untuk mendapatkan akses
memori. Dalam bahasa C maupun C++ membutuhkan suatu file yang digunakan
untuk mengakses hal tersebut yaitu File Header. File Header adalah file yang berisi
deklarasi untuk berbagai fungsi yang dibutuhkan oleh program baik itu sebagai
standar Input/Output maupun sebagai syntax.
9. File header adalah sebuah file yang digunakan untuk mendefinisikan beberapa file
macro, fungsi, variabel dan konstanta. File header nantinya akan mengandung
beberapa fungsi atau perintah yang akan digunakan dalam program. File header ini
sangat penting, karena beberapa perintah tidak akan dapat dijalankan jika file header
yang mendukung perintah tersebut tidak ditulis dalam program. File header ini
memiliki ciri bereksistensi “.h” dan diarahkan oleh preprocessor dirrective #include
sebagai gambaran kepada kompilator bahwa beberapa fungsi yang terdapat dalam file
header tersebut diikutkan dalam pembuatan program.
10. Kompilator (compiler) adalah  sebuah program komputer yang berfungsi untuk
menerjemahkan program komputer yang ditulis dalam bahasa pemrograman tertentu
menjadi program yang ditulis dalam bahasa pemrograman lain.
11. Fungsi File Header antara kain sebagai berikut :
12. - Untuk manajement memori
13. - Untuk memanggil routines ROM BIOs
14. - Untuk fungsi matematika komplek
15. - Untuk memanggil console DOS Input Output
16. - Untuk routing basic di C++
17. - Untuk beberapa fungsi rutin (Seperti konversi)
18. - Untuk Menguakkan manipulator
19. - Untuk operasi string dan karakter
20.

4.2. Jenis dan fungsi Header dalam Bahasa C/C++


1. <iostream.h>

Merupakan singkatan dari input outout stream header


yang digunakan sebagai standar input output operasi
yang digunakan oleh bahasa C++.

Fungsi yang ada di dalam iostream.h antara lain:

a. Cin

Merupakan fungsi masukan (digunakan untuk


menyimpan data dalam suatu variabel).

Bentuk umum: cin>>var x;

b. Cout

Merupakan fungsi keluaran (digunakan untuk


menampilkan data ataupun tulisan). Bentuk umum:
cout<<”tulisan”; atau cout<<var x;

c. Endl

Digunakan untuk pindah baris/ enter.

Bentuk umum: cout<<”tulisan”<<endl;

d. Ends

Merupakan suatu fungsi manipulator yang digunakan


untuk menambah karakter null (nilai ASCII NOL) ke
deretan suatu karakter. Fungsi ini akan berguna untuk
mengirim sejumlah karakter ke file di disk atau modem
dan mangakhirinya dengan karakter NULL.

Bentuk umum: cout<<”variabel”<<ends<<"text";

2. <conio.h>

Merupakan File Header yang berfungsi untuk


menampilkan hasil antarmuka kepada pengguna.

Fungsi yang ada didalam conio.h antara lain sebagai


berikut :

a. Getch

Berfungsi untuk menahan tampilan.

Bentuk umum: getch();

b. Clrscr

Berfungsi untuk membersihkan layar

Bentuk umum: clrscr;

c. Getche

Fungsi dipakai untuk membaca sebuah karakter dengan


sifat karakter yang dimasukkan tidak perlu diakhiri
dengan menekan tombol ENTER, dan karakter yang
dimasukan ditampilkan di layar.
d. Putch

Akan menampilkan karakter ASCII dari nilai x ke layer


monitor tanpa memindahkan letak kursor ke baris
berikutnya.

e. Clreol

Fungsi ini digunakan untuk membersihkan layar mulai


dari posisi kursor hingga kolom terakhir, posisi kursor
tidak berubah.

f. Gotoxy

Fungsi gotoxy digunakan untuk memindahkan kursor ke


kolom x, baris y.

Deklarasi Koordinat harus menambahkan header


windows.h :

void gotoxy(int x, int y)

COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_
HANDLE), coord);
}

g. Wherex

Fungsi wherex digunakan untuk mengembalikan posisi


kolom kursor.

h. Wherey

Fungsi wherey digunakan untuk mengembalikan posisi


baris kursor.

i. Window

Fungsi window digunakan untuk mendefinisikan sebuah


window berdasarkan koordinat kiri atas dan kanan
bawah.

3. <stdio.h>

Merupakan singkatan dari standar input output header


yang digunakan sebagai standar input output operasi
yang digunakan oleh bahasa C, akan tetapi bisa juga
digunakan dalam bahasa C++.

Fungsi yang ada didalam stdio.h antara lain sebagai


berikut :
a. Printf

Merupakan fungsi keluaran.

Bentuk umum: printf (“tulisan”);

b. Scanf

Merupakan fungsi masukan.

Bentuk umum: scanf (“%c”, &karakter);

c. Gets

Fungsi inputan yang bisa membaca spasi.

Bentuk umum: gets(var x);

d. puts()

Merupakan fungsi keluaran yang digunakan untuk


menampilkan informasi/pesan yang bertipe data string
(tanpa harus melakukan penentuan tipe data terlebih
dahulu).

e. putchar()

Merupakan fungsi keluaran yang digunakan untuk


menampilkan informasi/pesan yang bertipe data
char(tanpa harus melakukan penentuan tipe data
terlebih dahulu).
4. <string.h>

Merupakan file header yang berfungsi untuk melakukan


manipulasi string.

Fungsi yang ada di string.h antara lain sebagai berikut :

a. strcpy() : fungsi ini digunakan untuk menyalin suatu


string ke variabel tujuan. Bentuk umum penulisannya
adalah strcpy(variabeltujuan, string); .

b. strlen() : fungsi ini digunakan untuk menghitung


jumlah karakter yang ada dalam suatu string. Bentuk
umum penulisannya adalah strlen(string); .

c. strcmp() : fungsi ini digunakan untuk membandingkan


2 buah string, digunakan untuk membandingkan nilai
ASCII semua karakter yang ada pada string

Bentuk umum penulisannya adalah


strcmp(string1,string2);

Nilai Balik :

-1 -> jika nilai ASCII string1 lebih kecil dari string2

0 -> jika nilai ASCII string1 sama dengan string2

1 -> jika nilai ASCII string1 lebih besar dari string2


d. strrev() : fungsi ini digunakan untuk membalikan
urutan suatu string. Bentuk umum penulisannya adalah
strrev (string); .

e. strlwr() : fungsi ini digunakan untuk mengubah semua


huruf menjadi huruf kecil. Bentuk umum penulisannya
adalah strlwr(sterng); .

f. strupr() : fungsi ini digunakan untuk mengubah semua


huruf menjadi huruf kapital. Bentuk umum penulisannya
adalah strupr(string); .

g. strcat() : fungsi ini digunakan untuk menggabungkan


2 buah string, untuk menggunakan fungsi ini juga harus
menambahkan file header ctype.h. Bentuk umum
penulisannya adalah strcat(variabeltujuan, string);

5. <stdlib.h>

Merupakan file header yang berfungsi untuk operasi


pembanding dan operasi konversi.

Fungsi yang ada di stdlib.h antara lain sebagai berikut :

a. max() : fungsi ini digunakan untuk menentukan nilai


maximum dari 2 bilangan yang diinputkan. Bentuk
penulisannya adalah max(bilangan1,bilangan2); .
b. min() : fungsi ini digunakan untuk menentukan nilai
minimum dari 2 bilangan yang diinputkan. Bentuk
penulisannya adalah min(bilangan1,bilangan2); .

c. atof() : fungsi ini digunakan untuk mengkonversi nilai


string menjadi bilangan bertipe double. Bentuk umum
penulisannya adalah atof(char nama_variabel); .

d. atoi() : fungi ini digunakan untuk mengkonversi nilai


string menjadi bilangan bertipe integer. Bentuk umum
penulisannya adalah atoi(char nama_variabel); .

6. <math.h>

Merupakan file header yang berfungsi untuk operasi


matematika.

Fungsi yang ada di math.h antara lain sebagai berikut :

sqrt() : fungsi ini digunakan untuk menghitung akar dari


suatu bilangan. Bentuk umum penulisannya adalah
sqrt(bilangan); .

pow() : fungsi ini digunakan untuk menghitung hasil dari


perpangkatan suatu bilangan . Bentuk umum
penulisannya adalah pow(bilangan,pangkat); .

sin(), cos(), tan() : fungsi ini digunakan untuk


menghitung nilai sinus, cosinus, dan tangen dari sudut
yang dimasukan. Bentuk umum penulisannya adalah
sin(bilangan);

7. <iomanip.h>

Digunakan untuk menampilan perintah :

Setiosflags()

Digunakan untuk mengatur jumlah digit decimal


dibelakang koma.

Syntax: setprecision(jlhdigit)

8. <windows.h>

Digunakan untuk menampilan perintah :

System

Digunakan untuk memberi warna.

Syntax: system ("color angka")

Kode Warna di C++

0 = black

1 = blue

2 = green
3 = aqua

4 = red

5 = purple

6 = yellow

7 = white

8 = gray

9 = light blue

A = light green

B = light aqua

C = light red

D = light purple

E = light yellow

F = light white4.3. Defenisi Input dan Output


INPUT
Masukan (Input) merupakan salah digunakan untuk memasukkan alat input yang berupa
tulisan atau yang lainnya yang masukkan tersebut akan di proses dalam suatu program.
Dalam Bahasa Pemrograman C++ terdapat 5 macam yang dapat digunakan untuk kita
gunakan sebagai masukkan yakni cin, scandf(), gets(), getch(), dan getche().
Perintah standar yang disediakan di bahasa pemrograman C++ untuk melakukan input
adalah cin() sedangkan dalam bahasa C adalah scanf().

Jenis Perintah Input

1.  Perintah Masukan (Input) Menggunakan cin


cin merupakan salah satu perintah masukan  yang biasa digunakan dalam Bahasa
Pemrograman C++, yang digunakan untuk memasukkan input angka dan karakter tapi
bukan string / kata, karena dalam perintah cin tidak dapat membaca spasi, jika terdapat
spasi maka spasi tidak akan terbaca dan tidak ditampilkan.dalam menggunakan cin kita
perlu menggunakan tanda >> untuk dapat digunakan.
Syntax: cin >> variabelName;

2.  Perintah Masukan (Input) Menggunakan scanf()


scanf() merupakan perintah masukan di bahasa C yang dapat digunakan untuk bahasa
pemrograman C++. scanf ini menggunakan perintah library stdio.h yang notabene
merupakan library miliki bahasa C. Sama halnya dengan cin, scanf hanya dapat
digunakan untuk menginput angka, atau karakter, dan tidak dapat memasukkan string
atau kata, karena tidak dapat menampilkan spasi.

Syntax: scanf("penentu format", &variavelName);

Keterangan:
- Tanda & merupakan pointer.
- Penentu Format merupakan jenis format data.

3.  Perintah Masukan (input) Menggunakan gets()

gets() merupakan salah satu masukan yang dapat digunakan dalam bahasa C++ tapi
perintah gets() ini digunakan untuk memasukkan string / kata dan juga dapat menerima
spasi dan tab dan juga akan ditampilkan. Untuk menggunakan perintah ini dapat
menggunakan library stdio.h

Syntax: gets(variabelNameString);

4.  Perintah Masukan (input) menggunakan getch()

getch() kependekan dari get character and echo) yang juga mempunyai sebagai
masukan sebuah karakter. Dan dengan perintah ini tidak pelu menggunakan enter dan
tidak akan menapilkan karakter yang kita masukan. Untuk dapat menggunakan perintah
harus menggunakan library <conio.h>

Syntax: variabelName = getch();

5.  Perintah Masukan (Input) Menggunakan getche()


Perintah ini hampir sama dengan getch() bedanya hanya disini ditampilkan karakter yang
kita tuliskan. Untuk dapat menggunakan perintah harus menggunakan library <conio.h>

Syntax: nameVariabel = getche();
OUTPUT
Perintah keluaran / output adalah perintah yang berfungsi untuk menampilkan
pernyataan sehingga muncul ke layar / hasil consol program. Perintah standar yang
disediakan di bahasa pemrograman C++ adalah cout() sedangkan dalam bahasa C
adalah printf().
Bentuk Umum Output Operator C++ : cout<<ekspresi;

Dalam bahasa pemrograman C++ kita dapat menggunakan Escape Sequences untuk
merepresentasikan sebuah karakter yang tidak ada dalam tradisional symbol. Berikut
beberapa contohnya:

 \n : baris baru / linefeed


 \" : petik ganda
 \b : back space

Penggunaan Escape Sequence Character


* karakter dengan makna khusus yang menggunakan notasi \ (back slash).

1. Perintah Keluaran / Output Menggunakan cout


Dalam C++, cout merupakan fungsi yang digunakan untuk mencetak output ke
peralatan standar (screen) / layar console program. Untuk menggunakan fungsi cout, 
harus menyertakan file header iostream

Dalam menggunakan fungsi cout, kita menggunakan operator <<. sama halnya dengan
operator >> yang digunakan di dalam fungsi cin (perintah masukan),
2. Perintah Keluaran / Output Menggunakan printf()
printf(  ) merupakan fungsi keluaran yang sering digunakan untuk menampilkan
informasi kelayar / layar console program. Sejatinya fungsi prinft() merupakan milik
bahasa C, karena fungsi printf berada di library "stdio.h" yang merupakan library milik
bahasa C. Namun karena C++ bisa menjalankan hampir semua (File Header / library) dari
C, maka kita bisa menggunakan fungsi printf() di C++. Untuk menggunakan fungsi
printf(), kita harus menuliskan file header / library "stdio.h"

4.4. Struktur pemrograman dalam Bahasa C/C++

Struktur penulisan kode program C++ pada dasarnya


masih menuruni struktur penulisan Bahasa
Pemrograman C. Bahasa Pemrograman C++ merupakan
Bahasa Pemrograman sendiri dan hanya peluasan dari
Bahasa Pemrograman C, dan kita masih dapat
menggunakan bahasa C di tengah bahasa C++.

Struktur program dari bahasa pemrograman C++ terdiri


dari kumpulan baris pernyataan yang dibentuk dari
sejumah blok fungsi dan keyword. kode program
tersebut dimungkinkan untuk memerintah komputer
untuk melaksanakan tugas yang diberikan.

Program C maupun C++ selalu tersusun dari 5 (Lima)


bagian utama, yaitu :
Preprocessor Directive (Pengarah Kompilator)

Declaration (Deklarasi)

Definition (Definisi)

Statement atau Expressions (Pernyataan atau Ekspresi)

Comments (Komentar)

1. Contoh Dasar Program C++

#include <iostream> // Preprocessor Directive

int main() //Function utama

{ //Blok pembuka

std::cout<<"Selamat BelajarC++"; //Pernyataan


(Statement)

return 0; //Pernyataan

} //Blok Penutup

Keterangan :

Baris pertama : #include <iostream>


Pernyataan yang diawali dengan menggunakan tanda
pagar # disebut sebagai Preprocessor Directive, Pada
contoh di atas tertulis #include <iostream> yang berarti
program tersebut akan menggunakan fitur dari pustaka
(Library) yang bernama iostream.

#include <iostream> adalah file-header yang pada


dasarnya digunakan untuk menyatakan bahwa file dari
program yang sedang ditulis menggunakan pustaka
(Library) yang di dalamnya memuat kumpulan keyword
dan function. disebutkan di dalam kode program
bertujuan untuk memberitahu compiler bahwa file akan
menggunakan beberapa fitur yang ada pada pustaka
yang disebutkan.

Sebagai bukti, pada baris program di atas menggunakan


salah satu fitur yang disediakan oleh pustaka iostream,
yaitu menggunakan std::cout.

Baris Pertama setelah #include<iostream> : //File-


header

//File-header setelah #include<iostream> adalah


komentar, semua karaketer setelah tanda // akan
menjadi komentar dan tidak akan mempengaruhi
jalanya program. Komentar digunakan untuk
mempermudah programmer dalam mempelajari
program dengan memberi tanda atau keterangan pada
program. Ada dua cara dalam menggunakan komentar
yang pertama adalah dengan tanda // dan kedua
dengan menaruh komentar di antara tanda /* dan */

Baris kedua : baris kosong

terdapat baris kosong, hal itu tidak akan mempengaruhi


jalanya program hanya digunakan untuk mempermudah
pembacaan kode program oleh manusia.

Baris Ketiga : int main()

int main(), Merupakan fungsi (function) utama, fungsi


yang akan dibaca oleh kompilator pertama kali secara
otomatis, tidak akan ada function yang otomatis dibaca
oleh kompilator kecuali fungsi utama int main(), fungsi
utama bagaikan sebuah kepala dari sebuah program
yang mengatur arah kompilator.
int dalam fungsi utama adalah sebuah return type
integer. Dalam peraturan C++ fungsi utama memang
harus menggunakan return type integer.

Tepat setelah identifier (identitas) main terdapat


sepasang tanda kurung egg, itu merupakan tempat
dimana kita dapat mengisi parameter untuk function,
tetapi dalam fungsi utama, hal itu tidak dibutuhkan dan
dibiarkan dalam keadaan kosong.

Baris Keempat : Tanda {

Tanda {, merupakan sebuah blok pembuka, blok


pembuka memiliki sebuah pasangan yang dinamakan
blok penutup, di dalam contoh program di atas blok
penutup di baris paling akhir dengan tanda }. Kedua
blok tersebut menyatakan bahwa kode yang diapit
adalah satu ruang lingkup (scope) dan menyatakan
bahwa semua kode di dalam blok tersebut merupakan
definsi dari fungsi utama.

Baris Kelima : std::cout<<"Selamat Datang Di BelajarC+


+";
std::cout<<"Selamat Datang Di BelajarC++"; adalah
sebuah baris pernyataan (Statement) dan merupakan
definisi dari fungsi utama. std::cout merupakan bagian
dari library <iostream>. Berfungsi untuk mencetak
sebuah kalimat Selamat Datang Di BelajarC++ saat
program di eksekusi.

Contoh program di atas dapat ditulis menjadi bentuk


seperti di bawah ini.

include <iostream>

int main(){std::cout<<"Selamat BelajarC++";}

contoh program di atas mungkin terlihat lebih sedikit


dan menghemat baris, cara tersebut boleh digunakan
tapi kemungkinan kita akan kesulit untuk membaca
program tersebut.

Dalam pemrograman C/C++ sebenarnya tidak jauh beda


dengan bahasa pemrograman lainnya, setiap program di
berbagai bahasa pemrograman biasanya berisi dari
berbaris-baris penyataan (statements), ada statement
bersifat mengatur jalanya alur program dan ada yang
bersifat sebagai perintah, dan setiap baris dari
penyataan akan diakhiri dengan tanda titik koma atau
semicolon ;.

Bukan hanya statement yang mendominasi dalam


sebuah program, Expressions (ekspresi) juga digunakan
untuk mengatur dan menentukan sesuatu yang
berhubungan dengan angka, ekspresi masih sama
seperti pernyataan, tetapi pernyataan ini lebih
membahas mengenai penghitungan (Aritmetika).

std::cout<<"Selamat BelajarC++"; //Statement

std::cout<<5+8; // Expression

Hal-hal di atas merupakan dasar-dasar dari C++ yang


perlu di ingat, ini adalah pengantar anda untuk masuk
ke pembelajaran Bahasa Pemrograman C++.

2. Contoh Dasar Program C++


#include <iostream>

using namespace std;

int main(){

cout<<"BelajarC++"<<endl;

return 0;

Contoh program di atas yang berasal dari contoh


program pertama dengan sedikit perubahan.
Perbedaannya adalah, menambahkan pernyataan using
namespace std; pada baris kedua dan return 0; pada
baris keenam. Meskipun berbeda tetapi hasil dari contoh
program di atas masih sama seperti contoh program
pertama.

using namespace std; pada contoh program pertama


menggunakan std::cout. using namespace std;
menyatakan bahwa program di atas akan menggunakan
namespace yang bernama std, sehingga tidak perlu
untuk menyertakan identitas std:: pada anggota dari
namespace std salah satunya adalah cout.
endl : merupakan bagian dari iostream dan termasuk
sebagai bagian namespace std yang digunakan untuk
mengakhiri baris/pindah baris pada hasil layar program.

return 0 : merupakan pernyataan pengembalian, untuk


memberitahu kepada sistem operasi bahwa program
telah berakhir secara normal dengan nilai 0 yang berarti
tanpa kesalahan.

Last modified: Monday, 10 October 2022, 6:47 PM

5.1. Pengantar
Operator adalah suatu simbol yang memberikan sebua compiler atau interpreter untuk
bisa melakukan operasi tertentu seperti operasi matematika, rasional atau logis agar bisa
menghasilkan hasil akhir seperti yang diinginkan. Operator juga bisa dibilang sebagai
dasar dari sebuah bahasa pemrograman jenis apapun. Ketika kita membuat suatu
program biasanya akan ada banyak data yang nantinya akan diolah dan menghasilkan
suatu output tertentu.

Ketika proses pengolahan data inilah nantinya dibutuhkan suatu operator yang berperan
sebagai simbol. Setidaknya ada tiga jenis operator yang kerap digunakan dalam bahasa
pemrograman. Mulai dari operator aritmatika, operator relasional dan operator logika.

Sifat Operator
Operator dapat dikelompokkan berdasarkan sifatnya. Ada sekitar tiga kelompok
operator yang dapat dilihat berdasarkan sifatnya. Di bawah ini merupakan penjelasan
mengenai sifat-sifat yang dimiliki oleh operator dalam bahasa pemrograman.

1. Unary
Operator unary hanya akan melihat keberadaan operand pada suatu operasi. Terdapat
dua jenis operator unary utama seperti increment dan decrement. Lalu untuk bentuk
penulisan dari operator unary adalah nilai_variabel++.

2. Binary
Operator binary ini akan membutuhkan dua buah operand dan juga satu operator pada
bagian tengahnya dalam satu operasi. Secara sederhananya penulisan dari operator
binary adalah b + c.

3. Ternary
Operator ternary ini akan melihatkan tiga buah operand dalam suatu operasi yang
dilakukan. Bentuk penulisan dari operator ternary adalah ekspresi? Pilihan pertama :
pilihan kedua.

var = ekspresi1 ? pilihan_pertama : pilihan_kedua;

Tiga poin di atas merupakan penjelasan dari jenis operator yang dilihat berdasarkan
sifatnya. Ketika kita menuliskan suatu bahasa pemrograman tentunya akan bertemu dari
ketika jenis operator yang dilihat berdasarkan sifatnya tersebut.

5.2. Jenis Operator


Jenis-jenis Operator
a. Operator Arithmatika
b. Operator Relasi
c. Operator Logika
d. Operator Pemberi Nilai
e. Operator Bitwise
f. Operator Assignment/Penugasan

a. Operator Arithmatika
Operator artimatika adalah operator yang berfungsi untuk perhitungan matematika
seperti pembagian,perkalian, penambahan, pengurangan berikut adalah tabel dari
operator aritmatika
b. Operator Relasi
Operator relasional merupakan sebuah operator yang bernilai true dan false. Untuk
mengevaluasi antara 2 ekspresi, dapat digunakan operator Relasional. Hasil dari operator
ini adalah nilai bool yaitu hanya berupa  true atau false, atau dapat juga dalam nilai int, 0
untuk mereprensentasikan "false" dan 1 untuk merepresentasikan "true".
c. Operator Logika
Operator logika Operator ! equivalen dengan operasi boolean NOT, hanya mempunyai 1
operand, berguna untuk membalikkan nilai dari operand yang bersangkutan dan
operator Logika && dan || digunakan untuk mengevaluasi 2 ekspresi dan menghasilkan
1 nilai akhir. mempunyai arti yang sama dengan operator logika Boolean AND dan OR.

d. Operator Pemberi Nilai
Operator pemberi nilai adalah operator yang digunakan untuk memberi nilai dalam
sebuah program.
1. Operator Pemberi Nilai Aritmatika

2. Operator Penambah (Increment) dan Pengurangan (Decrement)

e. Operator Bitwise
Operator Bitwise ini berfungsi untuk menghasilkan nilai bilangan binary (bit), yaitu: 1
atau 0.

1. Shift Left
Menggeser sejumlah bit ke kiri atau melakukan perpindahan arah bit ke kiri atau
menggeser nilai biner kearah kiri dan digit yang paling kanan akan di isi nol (0).

2. Shift Right
Menggeser sejumlah bit ke kanan atau melakukan perpindahan arah bit ke kanan, untuk
menghitungnya dengan menggeser nilai biner kearah kanan serta menghapus nilai biner
yang paling kanan dan yang paling kiri dari hasil pergeseran tidak akan di isi nilai
apapun berbeda dengan operator shift left yang di isi nol (0).

Teoritis Penyelesaian Shift Left dan Shift Right


f. Operator Assignment/Penugasan

Operator penugasan atau dalam bahasa inggris disebut sebagai Assignment Operator.


Merupakan operator dengan tanda ( = ) yang digunakan untuk memberi nilai kepada
tujuan.

Bentuk Penulisan
tujuan = sumber;

Contoh:
a=5;

g. Operator Presedence
Presedence adalah urutan operasi sesuai dengan tingkatan operator. Jadi operasi
perhitungan dijalankan sesuai dengan urutan / tingkatan yang lebih tinggi terlebih
dahulu. Berikut ini adalah tabel prioritas eksekusi operator dari level tertinggi hingga
paling rendah:

Nomor Prioritas Operator


1 (  ) { }
2 ~ ! ++ -- $ &
3 */%
4 +-
5 <> <= >=
6 == !=
7 &
8 ^
9 !
10 &&
11 ||
12 = += -= *= /= &= |=
^= .=
13 AND (&&)
14 XOR(||)
15 OR

Tabel Kebenaran
5.3. Operasi String
Pengertian
Operasi String digunakan untuk keperluan memanipulasi string (data teks)

Jenis Operasi String

1. Strcat()
Digunakan untuk menambahkan string sumber kebagian akhir dari string tujuan. File
header yang harus disertakan adalah : string.h dan ctype.h
Bentuk Penulisan : Strcat (tujuan, sumber);

2. Strcmp()
Fungsi ini digunakan untuk membandingkan 2 buah string, digunakan untuk
membandingkan nilai ASCII semua karakter yang ada pada string
Fungsi ini digunakan untuk membandingkan string pertama dengan string kedua. Hasil
dari fungsi ini bertipe data integer (int) File header yang harus disertakan adalah :
string.h
Bentuk Penulisan : var_int = strcmp(str1, str2);

3. Strcpy()
Fungsi ini digunakan untuk menyalin string asal ke-variabel string tujuan, dengan syarat
string tujuan harus mempunyai tipe data dan dan ukuran yang sama dengan string
asal. File header yang harus disertakan adalah : string.h
Bentuk Penulisan : strcpy(tujuan, asal);

4. Strlen()
Fungsi ini digunakan untuk memperoleh banyaknya karakter dalam string. File header
yang harus disertakan adalah : string.h
Bentuk Penulisan : strlen(str);

5. Strrev()
Fungsi ini digunakan untuk membalik letak urutan pada string. File header yang harus
disertakan adalah : string.h
Bentuk Penulisan : strrev(str);

6. Strlwr()
Fungsi ini digunakan untuk mengubah setiap huruf kapital dalam string menjadi huruf
kecil. File header yang harus disertakan adalah : string.h
Bentuk Penulisan : strlwr(str);

7. Strupr()
Fungsi ini digunakan untuk mengubah setiap huruf kecil dalam string menjadi huruf
kapital. File header yang harus disertakan adalah : string.h
Bentuk Penulisan : strupr(str);

Last modified: Sunday, 16 October 2022, 2:02 PM


6.1. Pengantar
Statement Pengendalian (Decision) adalah pengatur aliran program, berbentuk
rangkaian perintah yang harus ditulis untuk memenuhi beberapa keadaan, yaitu :
1. Melanjutkan sebuah pernyataan bila kondisi terpenuhi.
2. Memilih sebuah pilihan dari beberapa alternative bila kondisi terpenuhi.

Decision
Decision, atau sering disebut juga dengan istilah decision-making berfungsi untuk
mengeksekusi sebuah perintah dengan kondisi tertentu, ada beberapa jenis
percabangan yang biasa digunakan yaitu:

1. Statement IF
2. Statement If....Else
3. Statement If...Else bertingkat
4. Statement If Bersarang (Nested)
5. Statement dengan Operator Ternary
6. Switch Case
6.2. Statement IF
Perintah if digunakan untuk menjalankan satu perintah atau bersarkan suatu kondisi.
Apabila kondisi terpenuhi maka proses akan menghasilkan sebuah proses berikutnya.
Sintaks penulisan perintah if adalah sebagai berikut:

If (kondisi)
{
Blok pernyataan yang akan dijalankan
}

Pada bentuk ini, bagian pernyataan akan dijalankan hanya kalau kondisi bernilai benar
(true).

Flowchart
6.3. Statement If....Else
Perintah If Else digunakan untuk dua pilihan yang berbeda, dengan ketentuan bahwa
apabila ketentuan pertama dianggap salah atau tidak sesuai, maka program akan
menjalankan ke proses kondisi selanjutnya.
Sintaks penulisan perintah If Else adalah sebagai berikut :

If (kondisi 1)
{
Blok pernyataan 1 yang akan dijalankan
}
Else
{
Blok pernyataan 2 yang akan dijalankan
}
Flowchart
6.4. Statement If...Else Bertingkat
Pada bentuk ini kita dapat menentukan tiga atau lebih bentuk pilihan yang dijadikan
sebagai kondisi, hal ini difungsikan apabila kita akan menyelesaikan banyak
permasalahan dengan ketentuan nilai yang berbeda.
Sintaks penulisan If elseif-else adalah sebagai berikut:

If (kondisi 1)
{
Blok pernyataan 1 yang akan dijalankan
}
Else if (kondisi 2)
{
Blok pernyataan 2 yang akan dijalankan
}
Else
{
Blok pernyataan 3 yang akan dijalankan
}
dst.....

Flowchart
6.5. Statement If Bersarang (Nested)
If Bersarang sangat cocok digunakan untuk menyaring sebuah kondisi tertentu dan
menyaringnya lagi kondisi tersebut. Percabangan bersarang ini bisa kita gunakan ketika
kita ingin menjalankan perintah jika sebuah kondisi terpenuhi, namun jika kondisi lainnya
terpenuhi maka ada perintah tambahan yang perlu dijalankan.

Pernyataan IF Bersarang yang merupakan suatu pernyataan IF yang merupakan bagian


(berada di dalam) pernyataan IF lainnya.

Sintaks penulisan perintah If Else adalah sebagai berikut :

if(kondisi 1A)
{
    if(kondisi 1B)
  {
        statement 1
  }
    else
  {
        statement 2
  }
}
elseif(kondisi 2A)
{
    if(kondisi 2B)
  {
        statement 1
  }
    else
  {
        statement 2
  }
}
else
{
    if(kondisi 3B)
  {
        statement 1
  }
    else
  {
        statement 2
  }
}
Flowchart
6.6. Statement dengan Operator Ternary
Ternary merupakan salah satu operator pada bahasa pemrograman, baik dari dasar 
bahasa pemrograman maupun bahasa pemrograman lainnya. Selain sebagai operator,
ternary juga termasuk percabangan if else. Struktur dasar penulisan operator ternary
seperti berikut:

(kondisi) ? true : false

Flowchart
6.7. Switch Case
Hampir sama juga dengan kondisi if else bertingkat yang akan memeriksa setiap blok
program sampai kondisi terntentu ditemukan, Switch merupakan bentuk struktur kontrol
yang dapat lebih menyederhanakan bentuk struktur if else ataupun if else bertingkat.
jika pada struktur if program akan memilih beberapa kondisi, dalam switch program
hanya akan mencocokan. Jadi perintah dalam program akan dilaksanakan apabila
perintah tersebut sesuai dengan kondisi.

Berikut ini sintaks Switch case :

switch(kondisi){
    case 1 :
        pernyataan1;
        break;
    case 2 :
        Pernyataan2;
        break;
    case n :
        Pernyataann;
        break;
    default :
        Pernyataan Default;      
}

Keterangan:

 Switch  merupakan fungsi untuk menampung variabel yang akan ditentukan


kondisinya.
 case  akan menampung jika variabel dalam switch bernilai tertentu maka perintah
apa yang akan dijalankan.
 default  mirip seperti else di if, perintah default akan dijalankan jika semua kondisi
pada case tidak terpenuhi.
 Break  merupakan perintah untuk keluar dari proses, disini untuk keluar dari
proses percabangan jika kondisi sudah terpenuhi terpenuhi.

 
Flowchart
7.1. Pengantar
Pengantar
Perulangan atau Loop adalah suatu pekerjaan yang dilakukan secara berulang-berulang
sampai kondisi terpenuhi.

Ada dua jenis perulangan dalam pemrograman:

1. Counted loop;
2. Uncounted loop.

Counted loop adalah perulangan yang sudah jelas berapa banyak pengulangannya.


Sedangkan Uncounted loop tidak pasti berapa kali akan melakukan pengulangan. Dapat
dilihat pada ilustrasi gambar dibawah ini perbedaan perulangan counted loop dengan
uncounted loop.

Bentuk Flowchart Perulangan


atau

Jenis Perulangan (Loop

1. for
2. Do While
3. While
4. For Each
5. Loop Bersarang
7.2. Statement For
Perulangan for adalah perulangan yang mengerjakan suatu pernyataan scara berulang-
ulang. Jenis perulangan ini mempunyai 3 parameter penting yang pertama ada
inisialisasi nilai awal. Kondisi untuk set perulangan akan berhenti ketika kondisi telah
terpenuhi. Yang terakhir ada modifier untuk menambahkan nilai inisialisasi awal tersebut.

Syntax:
for (start; condition; increment) {
  statement;
}

 Start adalah kondisi awal perulangan. Biasanya kondisi ini dipakai untuk


membuat dan memberikan nilai awal ke variabel counter. Variabel counter
adalah sebutan untuk variabel yang dipakai untuk mengontrol perulangan.
Misalkan kita akan membuat variabel counter variabel, maka untuk kondisi start
harus memberi nilai awal seperti variabel = nilai_awal.
 Condition adalah kondisi yang harus dipenuhi agar perulangan bisa berjalan.
Selama kondisi ini terpenuhi, maka akan terus melakukan perulangan. Misalnya
kita ingin menghentikan perulangan jika variabel variabel telah mencapai 20,
maka pada bagian condition ini tulis perintah variabel_kondisi_nilai_akhir. Ini
berarti berarti selama nilai variabel kurang atau sama dengan 20, terus lakukan
perulangan.
 Increment atau Decrement adalah bagian yang dipakai untuk memproses
variabel counter agar bisa memenuhi kondisi akhir perulangan.
 Statement adalah bagian kode program yang akan diproses secara terus-
menerus selama proses perulangan berlangsung.
Contoh Flowchart Perulangan For
7.3. Statement While
Perulangan While adalah perulangan ini berguna untuk memproses suatu pernyataan
atau beberapa pernyataan secara berulang-ulang hingga kondisi terpenuhi.

Syntax:
nilai_awal
while (condition) {
  statement;
  statement;
}

 Condition adalah kondisi yang harus dipenuhi agar perulangan berlangsung.


Kondisi ini mirip seperti dalam perulangan for, selama condition bernilai true,
maka perulangan akan terus dilakukan. Condition akan terus diperiksa pada tiap
perulangan, dan hanya jika hasilnya false, barulah perulangan akan berhenti.
 Statement adalah kode program yang akan diulang. Kita bisa membuat
beberapa perintah sederhana echo, atau perintah yang lebih kompleks. Dalam
bagian ini harus ada kode program yang bisa menghentikan perulangan,
misalnya menaikkan nilai variabel counter variabel++, atau kondisi if dengan
perintah break.

Contoh Flowchart Perulangan While


7.4. Statement Do While
Perulangan Do While juga memiliki fungsi yang sama. Namun yang menjadi
perbedaannya adalah pada cara kerjanya. Jika perulangan While mengecek kondisi pada
awal  statement. Do while mengecek kondisi di akhir.

Syntax:
do {
  statement;
  statement;
} while (condition);

Statement adalah kode program yang akan diulang. Kita bisa membuat beberapa
perintah sederhana echo, atau perintah yang lebih kompleks. Dalam bagian ini harus ada
kode program yang bisa menghentikan perulangan, misalnya menaikkan nilai variabel
counter variabel++, atau kondisi if dengan perintah break.

Condition adalah kondisi yang harus dipenuhi agar perulangan berlangsung.


Selama condition bernilai true, maka perulangan akan terus dilakukan. Condition akan
terus diperiksa pada tiap perulangan, dan hanya jika hasilnya false, barulah perulangan
akan berhenti.

Contoh Flowchart Perulangan Do While


7.5. Statement Perulangan Bersarang (Neste Loop)
Perulangan Bersarang (Nested Loop) adalah istilah dalam bahasa pemrograman yang
berarti membuat perulangan didalam perulangan. 

Syntax:
for (start; condition; increment)
 {
    for (start; condition; increment)
    {
         statement;
     }
  }

Keterangan:
Bentuk perulangan diatas memiliki 2 perulangan, dimana pada perulangan pertama akan
melakukan perulangan, sebelum perulangan pertama  akan melakukan perulangan
selanjutnya, maka perulangan kedua yang akan melakukan perulangan sampai 
memnuhi kondisi, jika perulangan 2 sudah selesai maka perulangan pertama akan
melakukan perulangan selanjutnya.

9.1. Pengantar
1. Pengertian Array

Array adalah struktur data yang menyimpan data-data bertipe sama dalam urutan
tertentu. Array dapat dianalogikan sebagai sebuah loker yang memiliki sederetan kotak
penyimpanan yang diberi nomor berurutan. Data-data dalam array disebut elemen array.
Dengan array setiap elemen bisa diakses langsung melalui indeksnya. Kelebihan lain dari
array adalah kita bisa memakai sejumlah variable dengan nama yang sama asalkan
variable tersebut dalam indeks yang berbeda.

Array adalah suatu variabel yang menampung sekumpulan data yang memiliki tipe data
yang sama. Dimana setiap data disimpan pada alamat memori yang berbeda-beda dan
disebut dengan elemen array. Setiap elemen mempunyai nilai indek sesuai dengan
urutannya. Melalui indek inilah kita dapat mengakses data-data tersebut. Indek dari
elemen array ini, baik dalam bahasa C++ maupun Java dimulai dari 0 (nol), bukan 1
(satu) seperti dalam bahasa Pascal. Array dideklarasikan dengan tanda kurung siku [ ]
atau disebut "bracket", baik dalam bahasa C++ dan Java. Untuk pemahaman mengenai
konsep array dapat dilihat pada ilustrasi berikut.

Dengan memperhatikan ilustrasi di atas, dapat dilihat bahwa array dapat menampung
banyak data dalam satu variabel array. Saat membuat variabel array, dimana dapat
membagi variabel tersebut menjadi sebanyak jumlah ( n ) buah elemen array. Setiap
elemen ditandai dengan suatu nomor indeks yang selalu dimulai dari angka 0 (nol).
Sebagai contoh bila kita membuat variabel array yang bernama data dan membaginya
menjadi 5 buah element, maka variabel yang terbentuk menjadi : data[0], data[1],
data[2], data[3], data[4]. Untuk memanggil nilai dari elemen tersebut, hanya perlu
memanggil nama variabelnya dan nomor indeksnya saja.

2. Tujuan Penggunaan Array

Tujuan penggunaan array adalah sebagai wadah berkumpulnya nilai-nilai yang bertipe
berbeda atau untuk menyimpan berbagai jenis data seperti integer, float, char, dan lain-
lain, agar menjadi satu kesatuan, sehingga mempermudah pengelompokan nilai-nilai
dan dalam penulisan script menjadi script yang terstruktur dan rapi. Dalam beberapa
kasus kombinasi penggunaan array dan looping dapat mempersingkat proses entri data
pada C++.

3. Karakteristik Array

 Mempunyai batasan dari pemesanan alokasi memori bersifat statis


 Mempunyai tipe data sama bersifat homogen
 Dapat diakses secara acak.
 Berurut

4. Jenis Array

 Array Berdimensi Satu (Memiliki satu baris dan beberapa kolom)


 Array Berdimensi Dua (Memiliki beberapa baris dan beberapa kolom)
 Array Multidimensi (Memiliki lebih dari ukuran dua dimensi). Sebenarnya array
dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu- waktu jika
dimensi yang dibutuhkan banyak, maka array ini sangat memegang peranan yang
penting. Pendeklarasian array multidimensi ini hampir sama dengan
pendeklarasian array berdimensi satu dan dua. Sebagai contoh program dapat
dilihat pada gambar. Untuk mempermudah penginputan elemen data pada array
multidimensi, penginputan element array dilakukan dengan
menggunakan nested loop. Penginputan elemen data dapat diinput sesuai yang
diinginkan saat program telah dijalankan.

5. Deklarasi Variabel Array

Terdapat dua cara umum dalam mendeklarasikan variabel array:


a. Mendeklarasikan variabel array, tanpa memasukkan nilai ke dalam variabel tersebut.
    Bentuk umum : tipe data nama__variabel [jumlah element];
    Contoh : int nilai[5];

Instruksi tersebut menyatakan bahwa suatu variabel array bernama ‘nilai’ bertipe data
integer dideklarasikan dan memesan element array berjumlah 5 buah.
b. Mendeklarasikan variabel array, dengan memasukkan nilanya sekaligus ke dalam
variabel tersebut
    Bentuk umum : tipe data nama__variabel [jumlah element]={data1, data2, data3,
data-n};
    Contoh : int nilai[5]={85,75,65,55,95};

Instruksi tersebut menyatakan bahwa suatu variabel array bernama ‘nilai’ bertipe data
integer dideklarasikan dan memesan elemen array berjumlah 5 buah. Kemudian, nilai
untuk setiap elemen array disimpan pada sesuatu urutan instruksi tersebut.

9.2. Array Berdimensi Satu


Array berdimensi satu adalah data-data akan disimpan dalam satu baris array, sehingga
hanya dibutuhkan satu pernomoran indeks.
Terdapat 3 Tahap dalam menciptakan Array:

 Mendeklarasikan Variabel Array


 Memasukkan atau Mengisi Data Array
 Menampilkan Data Array

Bentuk umum:

 Mendeklarasikan variabel array


tipe data variabel_array[jlh_element];
 Memasukkan atau mengisi data array
variabel_array[index]=element data;
 Menampilkan data array
cout<<variabel_array[index];

    Kelebihan dan Kekurangan Array :


a. Kelebihan Array

 Merupakan struktur penyimpanan data yang paling mudah.


 Tipe data yang mampu menampung lebih dari satu data.
 Memori ekonomis, bisa semua elemen terisi.
 Waktu akses sama setiap elemen.
 Dapat diakses secara random

b. Kekurangan Array

 Boros memory jika banyak elemen yang tidak digunakan.


 Merupakan struktur penyimpanan data yang statis.
 Kebanyakan bahasa pemrograman mengimplementasikan array statis yang sulit
diubah ukurannya di pada waktu eksekusi. Bila penambahan dan pengurangan
terjadi terus-menerus, maka representasi statis

9.3. Array Berdimensi Dua


Array berdimensi dua memberikan kesempatan untuk menyimpan data baik dalam
bentuk baris maupun dalam bentuk kolom atau disebut dengan memiliki ordo (baris dan
kolom). Karena akan menyimpan data ke dalam baris dan kolom, maka dibutuhkan dua
buah nilai indeks. 
Bentuk umum dalam mendeklarasikan array berdimensi dua adalah sebagai berikut :
     tipe data variabel_array[jumlah_baris] [jumlah_kolom];

Model Array berdimensi dua dapat dilihat pada :


Ilustrasi Array Berdimensi Dua.

Untuk lebih jelasnya Ilustrasi Array Berdimensi Dua dapat dilihat pada tabel
3 Tahap dalam menciptakan variabel array berdimensi 2:

 Mendeklarasikan variabel array

tipe data variabel_array[jumlah_baris] [jumlah_kolom];

 Memasukkan atau mengisi data element array


variabel_array[baris][kolom]=data
 Menampilkan data array
cout<<variabel_array[baris][kolom];

Sebagai contoh bila kita membuat variabel array yang bernama angka dan membaginya
menjadi 2 buah baris dan 3 buah kolom element, maka variabel yang terbentuk
menjadi :

 Deklarasi variabel array berdimensi 2:


int angka[2][3]; atau mendeklarasikan variabel array berdimensi 2 sekaligus
mengisi data seperti berikut ini :
int angka[2][3]={{data1,data2,data3},{data1,data2,data3}};
 Mengisi data variabel array berdimensi 2:
angka[0][0]=data1;
angka[0][1]=data2;
angka[0][2]=data3;
angka[1][0]=data1;
angka[1][1]=data2;
angka[1][2]=data3;
 Menampilkan data variabel array berdimensi 2:
cout<<angka[0][0];
cout<<angka[0][1];
dan seterusnya.... sampai baris terakhir dan kolom terakhir....

9.4. Matriks
 Matriks adalah kumpulan bilangan yang disusun menurut baris dan kolom atau
juga disebut array berdimensi dua
 Salah satu proses yang dilakukan oleh array adalah operasi matriks. Seperti yang
telah diketahui, baris dan kolom adalah elemen utama dalam membentuk suatu
matriks, dan hal tersebut tersedia pada array berdimensi dua. Array berdimensi
dua akan membantu dalam melakukan berbagai operasi matriks.
 Model Matriks dapat dilihat pada ilustrasi matriks dibawah ini:

Pada umumnya proses matriks digunakan untuk mengoperasi operasi matriks


yang menghasilkan suatu nilai matriks yang baru dalam operasi aritmatika.
9.5. Array Operasi Matriks
1. Operasi Matriks

Materi operasi hitung pada matriks meliputi operasi hitung penjumlahan, pengurangan,
dan perkalian matriks. Operasi hitung penjumlahan dan pengurangan pada dua buah
matrik dapat dilakukan jika dua buah matriks tersebut memiliki ukuran yang sama.
Ukuran matriks yang sama ditunjukkan dengan baris dan kolom pada matriks tersebut
sama. Sedangkan pada perkalian matriks, operasi hitung dapat dilakukan jika matriks
pertama memiliki jumlah kolom yang sama banyaknya dengan jumlah baris pada matriks
ke dua.

2. Jenis Operasi Perhitungan Matriks


a. Operasi Penjumlahan Matriks

Operasi hitung matriks pada penjumlahan memiliki syarat yang harus dipenuhi agar dua
buah matriks dapat dijumlahkan. Syarat Untuk menjumlahkan kedua matriks, dibutuhkan
matriks yang memiliki ordo yang sama. Ordo adalah ukuran baris dan kolom. Apabila
kita memiliki suatu matriks berukuran 2x3, maka kita memerlukan matriks lain yang
berukuran 2x3 juga untuk dapat dijumlahkan. Proses yang terjadi adalah setiap elemen
pada matriks pertama dijumlahkan dengan elemen pada matriks kedua sesuai dengan
alamat baris dan kolomnya.

Misalkan, Matriks A dijumlahkan dengan Matriks B dengan ordo m x n. Makanya hasil


adalah Matriks C dimana ukuran ordonya adalah m x n harus sama.

Operasi hitung penjumlahan matriks memenuhi sifat komutatif, asosiatif, memiliki


matriks identitas matriks nol, dan memiliki lawan matriks. Lawan matriks A adalah
matriks  , di mana elemen-elemen matriks   merupakan lawan dari elemen-elemen
matriks A. Secara ringkas, sifat operasi penjumlahan matriks dapat dilihat pada gambar.

Selanjutnya, dapat dilihat pada gambar bagaimana cara melakukan proses perhitungan


operasi penjumlahan dua buah matriks dibawah ini:
Contoh: Penjumlahan Dua Matriks

b. Operasi Pengurangan Matriks

Pada operasi pengurangan matriks sama halnya seperti melakukan operasi perhitungan
penjumlahan matriks, dimana dalam melakukan proses operasi pengurangan elemen-
elemen matriks harus memiliki nilai ordo yang sama. Cara melakukan operasi
pengurangan pada matriks dapat dilihat sebagai berikut: A-B=A+(-B). Selanjutnya,
dapat dilihat pada gambar bagaimana cara melakukan proses perhitungan operasi
pengurangan dua buah matriks dibawah ini:

c. Operasi Perkalian Matriks

Proses perhitungan operasi perkalian matriks sangat berbeda dari operasi penjumlahan
dan pengurangan dan sedikit lebih rumit, terlebih pada matriks dengan ukuran matriks
yang besar. Cara melakukan operasi hitung perkalian matriks perlu mengalikan setiap
elemen baris matriks pertama dengan setiap elemen kolom matriks ke dua.
Untuk lebih memahami operasi perkalian matriks dapat dilihat dan dipelajari pada
proses perkalian matriks dengan skalar dan perkalian matriks dengan matriks.

 Perkalian Matriks dengan Skalar


Proses cara melakukan operasi skalar pada matriks adalah dengan mengalikan
semua elemen-elemen matriks dengan skalarnya. Jika k adalah suatu konstanta
dan a adalah matriks, maka cara melakukan operasi perkalian skalar dapat dilihat
sebagai berikut:

Contoh soal cara melakukan operasi perkalian skalar pada matriks:


Diketahui konstanta k = 2 dan sebuah matriks X dengan persamaan seperti di
bawah.
Maka hasil perkalian konstanta k dengan matriks X adalah sebagai berikut.

 Operasi Perkalian Dua Matriks

Seperti yang sudah dijelaskan sebelumnya, pada operasi perkalian dua buah matriks
dapat dikalikan jika memiliki jumlah kolom matriks pertama yang sama dengan jumlah
baris matriks ke dua. Ordo matriks hasil perkalian dua matriks adalah jumlah baris
pertama dikali jumlah kolom ke dua.

Misalkan matriks A memiliki jumlah kolom sebanyak m dan jumlah baris r, matriks B
memiliki jumlah kolom sebanyak r dan jumlah baris m, hasil perkalian matriks A dan B
adalah matriks C dengan jumlah kolom m dan jumlah baris n, dapat dilihat sebagai
berikut : Am*r * Br*n = Cm*n

Sifat-sifat operasi perkalian matriks meliputi sifat asosiatif, distributif, dan memiliki
matriks identitas I. Sifat-sifat operasi perkalian matriks dapat dilihat pada gambar.

Dari sifat operasi perkalian matriks tersebut dapat digunakan untuk memudahkan
perhitungan dalam melakukan operasi hitung matriks.
Cara melakukan proses operasi perhitungan perkalian dua matrik dapat dilihat seperti
berikut :
Diketahui 2 buah matriks dengan variabel X dan Y yang memiliki ordo 2 X 2 atau sama-
sama memiliki 2 baris dan 2 kolom sebagai berikut:
Maka dapat dilihat perkalian dua matriks   dapat diperoleh dengan cara seperti
berikut:

Agar lebih memahami operasi perhitungan dua matrik dapat dilakukan dengan cara
memasukkan nilai elemennya masing-masing yang memiliki ordo 2 x 2 sebagai berikut:
diketahui :

proses perhitungan perkalian matriks:

maka diperoleh hasil perhitungan perkalian dua buah matriks:

Last modified: Sunday, 13 November 2022, 10:51 PM


10.1. Pengantar

1. Pointer

Setiap variabel yang dibuat pada program akan memiliki alamat memori. Alamat memori
berfungsi untuk menentukan lokasi penyimpanan data pada memori (RAM). Alamat
memori biasanya direpresentasikan dalam bilangan heksa desimal.
Dalam ilmu komputer, pointer adalah tipe data bahasa pemrograman yang nilainya
mengacu untuk menunjuk langsung nilai lain yang tersimpan di tempat lain dalam suatu
memori komputer menggunakan alamat yang ada. Untuk bahasa pemrograman tingkat
tinggi, pointer secara efektif dapat mengambil tempat pada general purpose registers di
bahasa tingkat rendah seperti bahasa assembly atau kode mesin, tetapi bila memori
tersedia.

Pointer adalah implementasi sederhana, lebih konkret tentang tipe data referensi yang
lebih abstrak. Beberapa bahasa mendukung beberapa jenis pointer, walaupun ada yang
memiliki lebih banyak pembatasan penggunaannya dari pada yang lain. Sebagai analogi,
sebuah nomor halaman dalam buku dapat dianggap sebagai pointer ke halaman yang
sesuai; dereferencing seperti pointer akan dilakukan dengan membalik ke halaman
dengan nomor halaman yang diberikan.

Pointer dapat meningkatkan kinerja data secara signifikan agar operasi berulang seperti
traversing string, tabel lookup, tabel kontrol dan struktur pohon. Secara khusus, sering
jauh lebih efisien dalam waktu dan space untuk pointer dari pada menggunakan variable
tipe data biasa.

Pointer juga digunakan untuk menyimpan alamat dari titik masuk untuk memanggil
subrutin dalam pemrograman prosedural dan untuk run-time penghubung ke dynamic
link libraries (DLL). Dalam pemrograman berorientasi objek, pointer ke fungsi yang
digunakan untuk mengikat/menjilid method, ini sering disebut tabel method virtual.

Sementara "pointer" telah digunakan untuk merujuk pada referensi yang ada pada
umumnya, hal ini berlaku lebih baik bagi struktur data yang secara eksplisit
memungkinkan antarmuka (interface) pointer untuk dimanipulasi (secara aritmetik
melalui aritmetik pointer) sebagai alamat memori. Karena pointer memungkinkan akses
yang baik dilindungi maupun tidak dilindungi ke memori yang dituju.

Pointer primitif adalah pointer sering disimpan dalam format yang sama dengan integer.
Namun, mencoba untuk dereference atau "mencari" pointer yang nilainya tidak pernah
menjadi alamat memori yang valid akan menyebabkan program menjadi crash.
Pointer yaitu variabel yang berisi (menyimpan) alamat memori dari sebuah variabel lain
atau pointer dapat diartikan sebagai variabel yang menunjuk ke sebuah alamat memori
dari sebuah variabel lain. Pointer ini digunakan dengan maksud untuk menunjukan ke
suatu alamat memori sehingga kita dapat mengetahui dengan mudah alamat dari
sebuah variabel. Pointer juga bisa diartikan sebagai tipe data yang nilainya mengarah
pada nilai yang terdapat pada suatu alamat memori.

Secara singkatnya bisa dikatakan : Pointer adalah suatu variabel penunjuk, berisi nilai
yang menunjuk alamat suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data,
melainkan berisi suatu alamat memori. Lokasi memori tersebut bisa diwakili sebuah
variabel atau juga berupa alamat memori secara langsung.

Ilustrasi pointer dapat dilihat pada gambar dibawah berikut:

Keterangan 1:

Pada Ilustrasi yang berada disebelah kiri melakukan pendeklarasian pointer pc dengan
tipe data integer dan deklarasi variabel a yang menampung nilai 7 dengan tipe data
integer. Pada &a = 0x6ffe14 menunjukkan suatu alamat memori variabel a, sedangkan a
= 7 menunjukkan suatu isi data yang ditampug variabel a

Keterangan 2:

Pada Ilustrasi yang berada disebelah kiri bahwa pc sama dengan Address Of a (0x6ffe14).
Pada pc = 0x6ffe14 menunjukkan suatu alamat variabel a, sedangkan *pc =7
menunjukkan nilai yang ditunjuk pointer *pc

Keterangan 3:

Pada Ilustrasi yang berada disebelah kiri bahwa nilai dari variabel a menjadi 22. Pada pc
= 0x6ffe14 menunjukkan alamat memori dari variabel a, sedangkan *pc =22
menunjukkan isi data yang ditampung variabel a
Keterangan 4:

Pada Ilustrasi yang berada disebelah kiri bahwa pointer *pc = 5 menunjukkan isi data
yang ditampung pada variabel a. Pada &a = 0x6ffe14 menunjukkan suatu alamat
memori variabel a, sedangkan a = 5 menunjukkan isi data dari variabel a

2. Fungsi Pointer

Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah
variabel dan alamat dari sebuah fungsi. Pointer dapat meningkatkan kinerja untuk
operasi yang dilakukan secara berulang. Untuk mengubah nilai dari variabel pointer ada
satu hal yang perlu diketahui, bahwa variabel pointer hanya dapat meneriman alamat
memori dari variabel yang memiliki tipe data yang sama.

3. Mendeklarasikan Variabel Pointer

Dalam mendeklarasikan sebuah variabel menjadi pointer kita hanya menambahkan


tanda asterisk (*) di depan nama variable tersebut,

Bentuk umum Deklarasi Variabel bertipe Pointer dalam C++:

tipe_data *nama_pointer;

atau

tipe_data* nama_pointer;

Keterangan:

tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabel bukan
pointer.

nama_variabel adalah nama variabel pointer.


Tipe data diatas berguna untuk menyatakan bahwa pointer yang dideklarasikan tersebut
akan ditempati oleh data dengan tipe tertentu. sebagai contoh saat akan
mendeklarasikan variable pointer P yang akan ditempati oleh tipe data long, maka
bentuk pendeklarasiannya adalah sebagai berikut:

// Mendeklarasikan pointer P dengan tipe data long int

long int *P;

Jika ingin mempunyai sebuah variabel yang bertipe long int (misal X), maka dapat
memerintahkan pointer P diatas untuk menunjuk ke alamat yang ditempati oleh variabel
X. Untuk melakukan hal tersebut, kita perlu menuliskan kode seperti berikut:

// Mendeklarasikan variabel X dengan tipe long int

long int X;

// Mendeklarasikan pointer P

long int P;

// Memerintahkan P untuk menunjuk alamat dari variabel X

P = &X;

Apabila di analisis potongan kode diatas, sebenarnya konsepnya sangat sederhana.


Bahwa P adalah pointer (berisi alamat) dan &X juga berisi alamat (alamat variabel X),
maka dapat menyimpan alamat dari variabel X tersebut ke dalam pointer P. Tidak
diizinkan untuk memasukkan sebuah nilai (bukan alamat) ke dalam pointer P, seperti
yang ditunjukkan oleh kode berikut:

// Salah, karena X berupa nilai (bukan berupa alamat)

P = X;

Apabila memang ingin mengisikan nilai kedalam alamat yang disimpan oleh pointer P,
maka seharusnya dapat menggunakan tanda asterisk (*) di depan nama pointer tersebut,
yaitu dengan mengubah kode diatas menjadi seperti dibawah ini:

// Benar, karena *P merupakan nilai yang berada pada pointer P

*P = X;

Sebagai catatan bahwa *P ini disebut dengan deference pointer, seperti yang telah
dijelaskan sebelumnya mengenai Operator dereference (&) dan Operator reference (*).

10.2. Penggunaan Pointer


1. Cara Menggunakan Pointer
Ada beberapa langkah yang harus dilakukan saat menggunakan pointer:

1. Membuat Pointer;
2. Mengisinya dengan alamat memori;
3. Mengakses nilai dari pointer.

2. Operator Pointer
Ada dua operator yang digunakan pada tipe data pointer yaitu:

A. Operator Deference (&)


Operator Dereference (&) yaitu operator yang berfungsi mendeklarasikan suatu variabel
didalam penggantian memori. operator ini biasa disebut dengan “address of”. Jika ingin
mengetahui dimana variable akan disimpan, kita dapat memberikan tanda ampersand
(&) didepan variable , yang berarti “address of”.

Secara singkatnya bisa dikatakan :Operator ini biasanya disebut dengan address of atau
operator alamat. Dengan menggunakan operator deference (&) ini, suatu variabel akan
menghasilkan alamat memori.

Contoh :

Pada Pada program di atas, akan ditampilkan alamat memori dari variabel c


yaitu 0x6ffe1c, bukan nilai c. Dengan menambahkan "&" pada variabel c, inilah yang
dimaksud operator dereference, yaitu mengubah suatu nilai variabel menjadi alamat
memori.

B. Operator reference (*)

Operator Reference ini berkebalikan dengan operator Dereference dimana nilai variabel
menjadi alamat memory sedangkan operator reference mengubah alamat memory
menjadi nilai variable.

Operator Reference (*) yaitu operator yang dapat mengakses secara langsung


nilai yang terdapat didalam variabel yang berpointer, hal ini dapat dilakukan
dengan menambahkan identifier asterisk
( * ). Operator ini biasa disebut dengan “value pointed by”.

Secara singkatnya bisa dikatakan : Operator ini biasanya disebut value pointed by.
Dengan menggunakan operator ini, kita dapat mengakses secara langsung nilai yang
terdapat pada suatu alamat memori.

Contoh :
Pada program di atas, akan ditampilkan nilai 75 dari alamat memori &c. Dengan
menambahkan "*" pada alamat memori &c, dimana alamat memory kembali menjadi
nilai variabel yaitu 75, inilah yang dimaksud operator reference, yaitu mengubah
suatu alamat memori kembali menjadi nilai variabel.

10.3. Alokasi Space Memori Pada Pointer


1. Alokasi Space Memori Pointer
Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:

A. Menempati space variable lain yang sudah punya space.


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:
             int a;
             int *b;
             a=10;
             b=&a;

Bila dilakukan pemanggilan output terhadap variabel pointer a dan variabel pointer b,
maka nilai variabel dan alamat memori pada kedua variabel tersebut sama. Dimana pada
pointer b=&a yang bertujuan mengisi atau menyalin alamat memori variabel a ke dalam
pointer b.

B. Dialokasikan tersendiri di memori (Memori dinamis).


Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di
memori dengan instruksi new.
Syntaxnya:
var_pointer = new tipe_data-pointernya;

contoh :
        int a,*b;
b=new int;
a=50;
*b=100;
Keterangan : a dan b mempunyai alokasi memori yang berbeda, sehingga data yang
tersimpan di dalamnyapun akan berbeda pula.

Dengan alokasi memori dinamis ini akan dapat menghemat alokasi memori dengan cara
membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak
digunakan lagi. Cara membebaskan memori dari variabel dinamis yaitu :
Syntax :
            delete var_pointer;
Contoh : 
            delete b;
setelah itu lakukan pemanggilan output terhadap nilai variabel pointer dan alamat
memori pada variabel.
Contoh:
            cout<<*b;
            cout<<b;
10.4. Operasi Pointer

1. Operasi Pointer

Ada beberapa pengoperasian pointer:

A. Pointer Pada Pointer

Tidak terbatas menunjuk alamat dari suatu variabel, pointer dapat pula menunjuk ke
pointer lainnya. Dalam pendeklarasiannya, kita tambahkan pointer reference (*) pada
variabel yang akan ditunjuk.

Contoh:

int x;

int *px; //pointer ke variabel int

**ppx; //pointer pada pointer

x = 100;

px = &nama;
ppx = &pNama;

B. Pointer Pada Array

Pada Array/Larik, pointer hanya perlu menunjukan alamat elemen pertama saja karena
alamat array dalam memori sudah disusun secara berurutan.

Contoh:

int a[] = {76, 67, 88, 98};

int *pa;

pa = a;

Pernyataan pa=a artinya pointer pa menyimpan alamat array a, yang alamatnya diwakili
alamat elemen pertama, yaitu a[0]. Kita juga bisa mengganti perintah pa=a dengan
pa=&a[0]. Untuk pembacaan semua elemen array dengan pointer, bisa menggunakan
perulangan seperti pada penggalan program berikut.

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

cout << *pa << " ";

pa++;

C. Pointer Pada String


Operasi string selalui dijumpai di dalam bahasa pemrograman, dikarenakan hampir
semua bahasa pemrograman menggunakan manual inputnya adalah string, terutama
pada pemrograman visualisasi. String adalah sederetan simbol yang tidak menentu
panjangnya, yang dianggap sebagai panjang satu unit” (World Agreement Agenda
O812). String dapat berupa angka, huruf, karakter khusus, maupun karakter Unicode.

String adalah array dari tipe character yang diakhiri dengan null character (\0)Data
konstan string ditulis dengan diapit oleh tanda petik dua (“…string…”)

Pointer ke string yaitu menyimpan nilai char dalam bentuk pointer.

Deklarasi tipe string :

Format :

char <nama_variabel>[exp]

atau

char <nama_variabel>[]={ inisial }

char *<nama_variabel>

Contoh :

char nama[];

char *alamat;

Pointer pada string dalam pemberian nilai inisial ke string dapat dilakukan dengan :
char nama[]=“Pointer”;

Atau

char nama[]={‘P’,’o’,’i’,’n’,’t’, ’e’, ’r’,’\0’};

D. Operasi Penugasan

Operasi penugasan atau dalam bahasa inggris disebut sebagai Assignment Operator.
Merupakan operator dengan tanda ( = ) yang digunakan untuk memberi nilai kepada
tujuan.

Bentuk Penulisan:

tujuan = sumber;

Keterangan: Nilai yang diletakan pada sumber akan di salin ke tujuan.

Contoh Penulisan:

A = 25;

Keterangan:

Pernyataan di atas merupakan operasi dari operator penugasan dimana sumber berada
pada sisi kanan dan tujuan berada pada sisi kiri. menyalin nilai integer 25 kepada
variabel A, tugas operasi selalu berlangsung dari kanan ke kiri dan tidak pernah
sebaliknya.

Contoh Penulisan:

A = B;

Keterangan:
Ekspresi di atas menyalin nilai yang dimiliki oleh variabel B kepada variabel A, dan jika
pada variabel A sebelumnya memang sudah memiliki nilai sendiri maka nilai pada
variabel A akan digantikan dengan nilai baru yang dimiliki oleh variabel B.

Contoh:

int A,B,*A1,*B1;

A=25;

B=50;

A=B;

A1=&A;

B=100;

B1=&B;

Bila dilakukan pemanggilan output penugasan pada pointer seperti berikut:

cout<<*A1;

cout<<*B1;

maka hasilnya menjadi:

A=50

B=100

Operasi penugasan biasanya berisi sebuah ekspresi yang dapat dievaluasi, yang
memungkinkan kita melakukan operasi sebelum disalin ke pada tujuan.

Sebagai contoh :
b = 2 + (a = 50);

Dalam contoh di atas, a diberi nilai 5 dan b mendapatkan nilai dari penjumlahan 10
ditambah nilai a yang sudah memiliki nilai 50, atau setara dengan.

a = 50;

b = 10 + a;

dengan itu b mendapatkan nilai 60 dari penjumlahan 10 + 50.

Ekspresi berikut ini juga berlaku pada Bahasa Pemrograman C/C ++ :

a = b = c = 50;

Ini memberikan nilai 50 ke tiga variabel: a, b dan c, cara kerjanya selalu dimulai dari
kanan-ke-kiri.

E. Operasi Aritmatika

Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja.

Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.

Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga dengan operasi pengurangan.

Contoh:

int nilai[3]={75,85,95};

int *penunjuk;

penunjuk = &nilai [0];

Bila dilakukan pemanggilan output aritmatika pada pointer seperti berikut:

cout<<*penunjuk;

cout<<*penunjuk+1;
cout<<*penunjuk+2;

maka hasilnya: 75, 85, 95

F. Operasi Logika

Suatu pointer dapat juga diterapkan dalam operasi logika. Dimana yang dimaksud dari
operasi logika adalah operasi yang menghasilkan nilai true (1) dan false (0). Dengan
membandingkan suatu nilai variabel dengan nilai variabel yang lainnya.

Contoh:

int a,b, *pa,*pb ;

a=100;

b=100;

pa= &a;

pb= &b;

Bila dilakukan pemanggilan output logika pada pointer seperti berikut:

int x =*pa<*pb;

cout<<x;

maka hasilnya: 0

11.1. Pengantar
1. Pengantar

File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri
dari satu atau beberapa field, dimana setiap field terdiri dari satu atau beberapa
byte. File di sini dapat dikatakan sebagai penyimpanan data eksternal yang bersifat
permanen. Operasi-operasi terhadap file berkaitan dengan input dan juga output serta
hal lain seperti mengecek keberadaan suatu file, ukuran file, dan lain-lain.
File adalah sekumpulan data yang disimpan dalam media penyimpanan luar seperti
disket/harddisk. Dalam C++ file adalah sebuah stream yang disimpan dalam media
penyimpanan luar. Karena merupakan sebuah stream, operasi yang berlaku pada stream
berlaku juga untuk file.
Stream adalah suatu logika device yang menghasilkan dan menerima informasi atau
wadah yang digunakan untuk menampung keluaran dan menampung aliran data.

Untuk melakukan proses file I/O, diperlukan file header fstream.h didalam program.
Dalam file fstream.h didefinisikan beberapa class/object yang berhubungan dengan
pemrosesan file, yaitu : ifstream, ofstream, fstream yang diturunkan dari istream dan
ostream.

2. Keterhubungan Stream dengan File


Jika mendeklarasikan suatu stream, dapat menghubungkan stream tersebut dengan file,
dimana proses ini berhubungan dengan operasi terhadap file.

Tiga proses utama dalam mengelola file adalah :

1. membuka file
2. melakukan proses terhadap file
3. menutup file

Sebelum membuka file, harus mengetahui keadaan mode filenya. Keadaan yang perlu
diketahui adalah :

1. untuk membuka file dengan tujuan output, digunakan ofstream.


2. untuk membuka file dengan tujuan input, digunakan ifstream.
3. untuk membuka file dalam keadaan input maupun output, gunakan fstream.

Operasi file merupakan salah satu proses yang terjadi di dalam pemrograman, operasi
ini akan membaca proses input dan output.

3. Deteksi Error
Dalam class ios ada 4 (empat) buah fungsi untuk melakukan tes terhadap error yang
terjadi didalam stream. Fungsi tersebut adalah :

1. int good()
2. int eof()
3. int bad()
4. int fail()

Keempat fungsi itu akan menghasilkan nilai 0 (nol) jika kondisi tersebut salah dan nilai
bukan nol jika kondisi tersebut benar.

4. Operasi Dasar File


Pada prinsipnya terbagi menjadi 3 tahap, yaitu:

 Membuka atau mengaktifkan file


Suatu file dapat diproses, apabila suatu file telah dibuka dan sebelum file dibuka
dibuka, obyek file harus didefinisikan terlebih dahulu.

 Melaksanakan pemrosesan file


Salah satu jenis pemrosesan pada file adalah menulis atau merekam data ke file.

 Menutup file
Setelah pemrosesan file selesai, file dapat ditutup

Untuk dapat melakukan operasi file, dibutuhkan preprocessor directive


header : #include<fstream>

 Menambah data pada file

Suatu file yang sudah ada sebelumnya dapat ditambah data yang baru (tidak
menghapus data lama). Caranya dengan menambahkan perintah ios::app pada
open().

 Memeriksa Keberhasilan Operasi File


Dalam pengoperasian file kemungkinan akan mengalami terjadinya kesalahan,
seperti saat file dibuka, ternyata file tidak ada. Dalam C++ tersedia function untuk
memeriksa kondisi-kondisi pada operasi file, sehingga kesalahan saat eksekusi
dapat dikendalikan. Function yang dimaksud adalah fail(). ifstream digunakan
untuk membaca file dan membaca isi file.
 Operasi Berbasis Karakter
Operasi file dapat dilakukan dalam bentuk karakter. Misalnya proses
penyimpanan data ke file dilakukan setiap karakter, atau membaca data file
karakter per karakter. Operasi ini didukung oleh function put() dan get().

11.2. Proses Operasi Dasar File


1. Proses Operasi Dasar File

A. Membuka File
Pembukaan dari suatu file mempunyai 2 tujuan, yaitu :
a. Membuka file untuk ditulis/direkam
b. Membuka file untuk dibaca
a. Membuka file untuk ditulis :
Bentuk umum:

ofstream file_objek;
Setelah objek_output diciptakan, maka file dibuka dengan cara :
file_objek.open (“path dan nama_file”);
contoh :
ofstream data;
data.open("d:/filesaya.txt");

Kedua pernyataan di atas dapat disederhanakan :


ofstream file_objek (“path dan nama_file”);
contoh :
ofstream data("d:/filesaya.txt");

b. Membuka file untuk dibaca :


Bentuk umum:

ifstream file_objek;
Setelah objek_input diciptakan, maka file dibuka dengan cara :
file_objek.open (“path dan nama_file”);
contoh :
ifstream data;
data.open("d:/filesaya.txt");

Kedua pernyataan di atas dapat disederhanakan :


ifstream file_objek (“path dan nama_file”);
contoh :
ifstream data("d:/filesaya.txt");

B. Menulis atau Mengisi Data ke File


Bentuk umum:

nama_obyek << ... ;


Contoh :
data<<“Menulis atau mengisi data ke file”;

C. Menutup File

 Bentuk umum:

nama_obyek.close();
contoh :
data.close();
D. Menambah Data Pada File
Bentuk umum:
nama_obyek.open(“path dan nama_file”, ios::app);
contoh:
data.open("d:/filesaya.txt", ios::app);
atau:
ofstream file_objek (“path dan nama_file”,ios::app);

Keterangan:

 Berdasarkan contoh operasi dasar file diatas, saat perintah ofstream


data("d:/filesaya.txt"), maka file sudah tercipta pada drive D:\ dengan nama
filesaya sesuai extention yang dibuat pada contoh ini dibuat aplikasi notepad
dengan extention *.txt. 
 Berdasarkan contoh operasi dasar file diatas, saat perintah ifstream
data("d:/filesaya.txt");, untuk membaca atau memeriksa file yang tersimpan
pada drive D:\ dengan nama filesaya.txt yang telah dibuat sebelumnya.
 Berdasarkan contoh operasi dasar file diatas, saat perintah data<<“Menulis atau
mengisi data ke file”;, maka pada filesaya.txt akan berisi data "menulis atau
mengisi data ke file"
 Berdasarkan contoh operasi dasar file diatas, saat perintah data.close();, untuk
mengakhiri atau menutup operasi file. 
 Berdasarkan contoh operasi dasar file diatas, saat
perintah data.open("d:/filesaya.txt", ios::app);, maka saat file dieksekusi secara
otomatis isi file akan bertambah pada D:\filesaya.txt. sebanyak berapa kali file
dieksekusi, maka sebanyak eksekusi itu juga isi file akan bertambah.
2. Tabel Nilai Pada Variable Mode Perintah Operasi File

Last modified: Sunday, 27 November 2022, 10:21 PM


11.3. Class

Salah satu tujuan diciptakan Bahasa Pemrograman C++ adalah untuk menambahkan
fitur baru, salah satunya adalah OOP (Object Oriented Programming) pada Bahasa
Pemrograman C.

Fitur Class class adalah fitur OOP pada C++ mirip seperti FItur Data Structures struct
pada C, keduanya dapat menampung variabel sebagai anggota. Tapi perbedaan dari
class dan struct tersebut adalah pada Class memiliki kemampuan lebih, seperti
dimungkinkan untuk memuat method, inheritance dan lain-lain.

Pengertian Class

Class adalah salah satu dari konsep OOP yang digunakan untuk membungkus data
abstraksi procedural sebagai deskripsi tergeneralisir atau rancangan dari sebuah object
untuk mendefinisikan atau menggambarkan isi dan tingkah laku sebagai entitas dari
object.
Cara Mendirikan Class

Untuk mendirikan Class kita membutuhkan keyword class yang dilanjutkan dengan
pemberian nama dari deklarasi class tersebut. lalu dilanjutkan dengan meletakan tanda
{ dan } untuk mengapit definisi dari class.

Class termasuk sebuah pernyataan maka dari itu akhir dari deklarasi class diwajibkan
untuk mengakhiri class menggunakan tanda titik-koma ;

Bentuk penulisan

class nama_class{

akses_specifier :

data_member;

akses_specifier2 :

data_member;

}nama_object;

Keterangan

nama_class : tempat dimana anda dapat memberikan nama pada class tersebut.

akses_specifier : tempat dimana anda dapat mendifinisikan hak akses kepada anggota
yang ada dibawahnya. Jika tidak didefinisikan maka anggota class secara otomatis
memiliki hak akses private.

data_member : tempat dimana anda dapat mendirikan sebuah variabel atau function
sebagai anggota dari class.

nama_object : tempat dimana anda dapat mendirikan object-object dengan


menggunakan class tersebut, hal ini merupakan opsional tapi jika class tidak diberi nama
class maka diwajibkan mendirikan object, karena kita tidak akan bisa membuat object
dengan class di luar dari deklarasi class tersebut.

Class dan Object merupakan fitur yang sangat membantu untuk mendirikan sebuah
program besar, menjadikan sebuah code program yang ditulis oleh programmer mudah
untuk dimengerti, lebih terstruktur, dan juga mudah dalam pemeliharaan program.

Terdapat banyak fasilitas yang disediakan oleh class, yaitu dapat menampung member
variabel, function, constructor, desctructor, overloading dan lain-lain. Diluar definisi class
kita juga dimungkinkan untuk membuat relalasi seperti inheritance dan overriding.

Cara mendirikan Object

Mendirikan class seperti halnya kita membuat sebuah kerangka atau blueprint untuk
object. Terdapat dua cara untuk mendirikan object pada class, yaitu:

Pertama, Mendirikan object di dalam deklarasi Class: Seperti contoh sebelumnya, bahwa
kita dapat membuat object setelah definisi dari class yaitu tepat di antara tanda } dan ;.
Memberi object setelah definisi class tidak diharuskan, tapi dapat dilakukan dan kita bisa
membuat object lebih dari satu dengan memisahkan masing-masing object dengan
tanda koma. Cara ini akan wajib digunakan ketika class yang didirikan adalah anonymous
class atau class yang tidak memiliki nama.

Kedua, Mendirikan object di luar deklarasi Class: Mendirikan object sama seperti kita
mendirikan variabel, yang berbeda adalah nama dari class akan digunakan sebagai tipe
data dari object. Dalam mendirikan object class kita bebas untuk menambahkan keyword
class atau tidak menambahkannya sebelum nama dari class tersebut, karena semua
bentuk penulisan memiliki arti yang sama.

Cara Mengakses Object

Setelah kita berhasil mendirikan object. object tersebut akan sepenuhnya memiliki
bentuk berdasarkan rancangan pada class yang dipakai. Untuk mengakses Object dan
member dari object tersebut kita membutuhkan “Member Access Operator .” yang
diletakan di antara nama object dan nama member.

Cara Inisialisasi Object

Terdapat tiga cara untuk inisialisasi object, yaitu:

Non-static Member Initialization, merupakan cara untuk memberikan nilai awal


(Inisialisasi) di saat mendirikan variabel sebagai member class. Maka nilai awal itu akan
berlaku pada semua object yang menggunakan class tersebut. dan cara ini hanya
tersedia pada C++11 ke atas.

Uniform Initialization, merupakan cara kedua untuk inisialisasi member pada object.
Dengan cara memberikan nilai awal kepada member class saat mendirikan object,
inisialisasi harus disebutkan dengan urut berdasarkan urutan deklarasi member.
inisialisasi ini hanya akan berlaku pada object itu sendiri. Tapi kelemahanya, cara ini
hanya bisa dilakukan jika semua member dari class bersifat public.

Member Initialization In Constructor, Merupakan cara ketiga dan penulis sarankan untuk
digunakan karena memiliki level keamanan yang cukup tinggi. Untuk penjelasan lebih
lanjut mengenai constructor akan penulis sampaikan pada artikel constructor.
Tambahan:

Dalam membuat member function atau method terdapat dua cara, yaitu:

Pertama, mendirikan dan mendefinisi function di dalam definisi class. Seperti apa yang
sudah penulis contohkan pada contoh-contoh program di atas.

Kedua, Mendirikan di dalam definisi class dan mendefinisikan function di luar class. Mirip
seperti kita membuat function dengan mendirikan function prototype terlebih dahulu
dan mendefinisikan function tersebut sesudah deklarasi function.

Pada class kita juga dimungkinkan untuk mendirikan function prototype, dan
mendefinisikanya di luar definisi class. Untuk memberi definisi pada function tersebut
kita dapat melakukanya dengan menggunakan “Scope Resolution Operator ::“, yang
diletakan di antara nama class dan nama member function.

Untuk mendefinisiakan function menggunakan Scope Resolution Operator, kita bebas


menaruh definisi tersebut dimana pun, seperti tepat di bawah deklarasi class tersebut
atau di bawah main function dan juga bisa di definisikan diluar file, tapi kita tidak bisa
melakukan definisi sebelum deklarasi function.

Last modified: Sunday, 27 November 2022, 10:37 PM

◄ 11.2. Proses Operasi Dasar File

Jump to...

12.1. Pengantar
Tipe data bentukan merupakan tipe data yang dibentuk atau dibuat sendiri sesuai
kebutuhan dalam program yang akan kita buat. Dalam bahasa asing, tipe ini dikenal
dengan istilah user defined types. Tipe data bentukan diperoleh dari tipe data yang sudah
ada (tipe data primitive). Namun dianggap terpisah dan tidak seperti tipe data dasar
tersebut. Adapun jenis tipe data bentukan, yaitu:

 Struct
 Union
 Enumeration
 Typedef
 Class

Struct Sebagai Tipe Data Bentukan

Dalam bahasa indonesia tipe struct dikenal dengan istilah struktur. Struct merupakan


salah satu jenis dari tipe data bentukan dalam bahasa pemrograman C++.

Struct  merupakan sekelompok elemen data yang dikelompokkan dalam satu


nama.  Data elemen  yang disebut juga sebagai “member“  dapat memiliki tipe data dan
panjang data yang berbeda.

Dikatakan sebagai tipe data bentukan karena struct dapat menampung satu atau lebih
variabel dengan tipe data yang sama ataupun berbeda. Kita dapat mendesain struktur
data elemen sedemikian rupa di dalamnya. Dengan kemampuan tersebut, tipe data
bentukan tersebut dapat digunakan untuk mengelompokkan beberapa variabel.
Kelompok variabel tersebut kemudian dibentuk sebagai sebuah “cetakan”. Cetakan
tersebut digunakan untuk mencetak objek (variabel) dengan karakteristik seperti struct
yang dibentuk.
12.2. Tahap Operasi Tipe Data Struct

Pendeklarasian Struct

Untuk membuat tipe data struct dalam bahasa pemrograman C++, sebuah variabel harus
dideklarasikan dengan menggunakan keyword struct. Berikut sintaks pendeklarasian sebuah struct.

Sintaks 1

struct nama_struktur {

tipe_data variabel1;

tipe_data variabel2;

tipe_data variabelN;

};

Ilustri
Berdasarkan sintaks 1, dapat kita ketahui bahwa dalam pendeklarasian sebuah struct harus diawali
dengan keyword struct. Pada bagian nama_tipe, kita bebas memberikan nama tipe yang diinginkan
namun harus tetap mengingat aturan pemberian nama identifier. Di dalam blok struct “{ }” dapat
kita isi dengan berbagai pendeklarasian variabel. Berbagai variabel ini disebut sebagai data elemen
atau member.

Contoh:

Pada gambar 2 di atas kita dapat melihat bahwa sebuah struct dengan nama paket_internet telah
dideklarasikan. Struct paket_internet memiliki tiga data elemen yaitu nama_paket yang bertipe
string, kuota_telpon dan kuota_internet yang bertipe integer.

Pembentukan Object Struct

Setelah memahami bagaimana mendeklarasikan sebuah struct, maka selanjutnya anda harus
memahami bagaimana membentuk objek dari sebuah struct.

Dalam pembentukan objek, objek dapat dianggap sebagai sebuah variabel dan struct yang
membentuk adalah tipe datanya.

Terdapat 3 cara yang dapatdilakukan untuk membentuk objek. Perhatikan 3 cara berikut.

Cara 1

Sintaks 2

struct nama_struktur {

tipe_data variabel1;

tipe_data variabel2;

tipe_data variabelN;

} nama_objek;

Ilustrasi
Berdasarkan sintaks 2, dapat kita ketahui bahwa sebuah objek dapat dibentuk bersaaman pada saat
pendeklarasian sebuah struct. Cukup dengan menambahkan nama objek yang diinginkan di belakang
blok setelah blok “}” dan sebelum tanda titik koma. Objek ini nanti akan memiliki “karakteristik”
yang sama dengan struct pembentuknya.

Contoh:

Pada gambar diatas kita dapat melihat sebuah struct dengan nama paket_internet dideklarasikan.
Struct ini kemudian digunakan untuk membentuk sebuh objek bernama “begadang“. Jadi, dapat
dikatakan bahwa objek begadang memiliki data elemen sama dengan struct paket_internet.
Begadang adalah hasil cetakan paket_internet.

Contoh:

Sama seperti struct pada gambar diatas. Pada gambar diatas kita dapat melihat bahwa paket
_internet digunakan untuk membentuk dua objek yaitu begadang dan belajar. Sehingga, terbentuk
dua objek yang memiliki “karakteristik” yang sama dengan paket_internet.

Cara 2

Selain sintaks di atas yang sudah dijelaskan bersama dengan contohnya, juga terdapat satu bentuk
pendeklarasian objek lagi. Perhatikan sintaks 3.

Sintaks 3

nama_tipe nama_objek;

Ilustrasi
Seperti ditunjukkan pada gambar diatas, pendeklarasian/pembentukan objek juga dapat dilakukan
secara terpisah dari pendeklarasian struct. Objek dideklarasikan dalam satu baris perintah tersendiri.
Namun perlu diingat bahwa pembentukan objek hanya dapat dilakukan setelah pendeklarasian
struct pembentuk objek tersebut.

Contoh:

Berdasarkan pada contoh yang ada pada gambar di atas, kita dapat melihat bahwa tiap baris
perintah membentuk sebuah objek. Karena terdapat tiga baris perintah untuk membentuk objek
dari struct yang sama. Maka, ketiga objek yang terbentuk memiliki karakteristik yang sama. Hanya
nama objeknya yang bebeda.

Cara 3

Pendeklarasian beberapa objek sekaligus dengan tipe struct yang sama juga dapat dilakukan dalam
satu baris perintah saja. Seperti nampak pada sintaks berikut.

Sintaks 4

nama_tipe nama_objek1, nama_objek2,…, nama_objekN;

Ilustrasi

Pengaksesan Member Objek Struct

Sekarang kalian juga harus memahami bagaimana cara menyimpan nilai ke dalam variabel member
dari suatu objek. Selain itu kalian juga harus memahami bagaimana mengakses (mengmbil ata
menampilkan) nilai dari suatu variabel member objek. Hal tersebut wajib untuk anda ketahui agar
dapat menggunakan objek tersebut dalam pengolahan data pada program.

Menyimpan nilai ke variabel member

Berikut sintaks untuk menyimpan nilai ke dalam sebuah variabel member dari objek.

Sintaks 5
nama_objek.nama_member = nilai ;

Ilustrasi

Perhatikan sintaks di atas. Dapat kita ketahui bahwa untuk menyimpan nilai ke dalam sebuah
variabel member, harus mengakses objeknya terlebih dahulu. Nama objek diikuti dengan nama
member dimana di antara keduanya dipisahkan dengan dot (titik). Nama objek harus disebutkan
karena jika hanya menyebutkan nama member tentu akan terjadi kesalahan. Sebab jika tidak,
compiler akan kebingungan untuk mengakses variabel yang dimaksud. Selain itu boleh jadi terdapat
banyak objek, tentu nama variabel membernya sama jika dibentuk dari struct yang sama.

Kemudian, untuk menugaskan nilai ke dalam variabel member tersebut caranya sama dengan
menugaskan nilai ke dalam variabel biasa. Dengan menggunakan operator penugasan sama dengan.

Contoh:

Pada contoh diatas kita dapat mengetahui bahwa nilai 50 disimpan ke dalam variabel member
kuota_internet. Dimana, kuota_internet adalah variabel member dari objek begadang. Nilai 50 yang
bertipe integer dapat masuk ke dalam variabel member kuota_internet karena memiliki tipe yang
sama.

Mengakses (mengambil / menampilkan) nilai dari variabel member

Setelah menyimpan nilai sementara ke variabel, tentu suatu waktu kita ingin menampilkan ataupun
mengakses nilai dalam variabel member tersebut. Untuk melakukan hal tersebut, perhatikan sintaks
berikut.

Sintaks 6

nama_objek.nama_member;
Ilustrasi

Contoh:

Seperti ditunjukkan pada gambar diatas, untuk mengakses variabel member sangatlah mudah. Agar
dapat mendapatkan nilai dari variabel member, nama objek harus diketikan terlebih dauhulu.
Keduanya dipisahkan dengan dot (titik). Dengan begitu kita telah memperoleh isi dari variabel
member.

13.1. Pengantar

1. Rekursif

Rekursif adalah suatu proses atau prosedur dari fungsi yang memanggil dirinya sendiri secara
berulang-ulang. Karena proses dalam Rekursif ini terjadi secara berulang-ulang maka harus ada
kondisi yang membatasi pengulangan persebut, jika tidak maka proses tidak akan pernah berhenti
sampai memori yang digunakan untuk menampung proses tersebut tidak dapat menampung lagi
(Penuh).

Berbeda dengan fungsi atau prosedur yang mana keduanya hanya bisa dilakukan pemanggilan dari
fungsi atau prosedur lain, sementara rekursif dapat memanggil fungsinya sendiri. Jadi fungsi rekursif
c++ ini akan berjalan dengan melakukan proses sampai sebuah kondisi yang ditetapkan pada fungsi
tersebut terpenuhi.

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi ini akan terus berjalan sampai
kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekursif perlu terdapat 2 blok
penting, yaitu blok yang menjadi titik berhenti dari memanggil dirinya sendiri.

Fungsi rekursif merupakan salah satu teknik pemrograman yang cukup penting, dimana dalam
beberapa kasus menggunakan fungsi rekursif akan jauh lebih mudah. Selain itu proses yang berjalan
akan jauh lebih cepat dan efisien, hanya saja akan membutuhkan space memori yang cukup banyak
karena proses iterasi dari bagian fungsi tersebut akan dipanggil secara terus menerus sehingga
memerlukan ruang penyimpanan yang cukup besar jika dibandingkan dengan proses lainnya.

Logika Rekursif adalah suatu fungsi berparameter yang memanggil dirinya sendiri dengan harga
parameter yang berbeda. Logika ini dipakai sebagai pengganti proses iterasi. Kelebihan logika bentuk
ini mudah dipahami alurnya, namun kelemahannya pada penggunaan register stack yang sangat
membebani kecepatan jalannya program.
Bentuk dan sifat rekursif adalah sebagai berikut :

Ada bagian base case dan ada bagian general case

Paling sedikit mempunyai general base

Selalu dalam bentuk fungsi-fungsi

Selalu menggunakan statement percabangan ( Kondisi --> IF ELSE )

Contoh Penerapan Fungsi Rekursif:

a. Menampilkan atau mencetak bilangan

Fungsi ini menampilkan nilai dari paremeter yang ditampung. Jika nilai dari parameter tersebut > 0,
fungsi akan menampilkan nilai dari parameter tersebut dan kemudian memanggil dirinya lagi, jika
tidak, program berhenti.

void tampil(int n)

if (n>0)

cout<<"Tampil Bilangan : "<<n<<endl;

tampil(n-1);

Pemanggilan fungsi pada nilai parameter dilakukan di dalam fungsi main(). Misalkan fungsi nilai
parameter tampil(5), maka nilai dari parameter n=5, akan dilakukan pengujian dengan kondisi jika
n>0 terpenuhi, maka nilai tersebut akan ditampilkan dan nilai dari parameter n tersebut akan
dikurangkan n-1 yaitu 5-1, maka di uji kembali hasil pengurangan nilai parameter tersebut dengan
kondisi n>0, begitu seterusnya sampai kondisi terpenuhi. Jika kondisi tidak terpenuhi, maka proses
berhenti. Dari fungsi rekursif tersebut menghasilkan urutan bilangan :

Tampil Bilangan : 5

Tampil Bilangan : 4

Tampil Bilangan : 3

Tampil Bilangan : 2

Tampil Bilangan : 1
b. Fungsi Pangkat

Fungsi ini digunakan untuk menghitung nilai: Xn dengan n berupa bilangan bulat positif.

Solusinya adalah:

jika n = 1 maka Xn = X

selain itu Xn = X * Xn-1

Sebagai contoh diketahui nilai X=5 dengan n=3, maka proses penyelesainya adalah sebagai berikut:

Sama halnya proses penyelesaiannya jika 53 = 5 x 5 x 5, sehingga menghasilkan nilai 125

c. Fungsi Faktorial

Faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari
atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Sebelumnya perlu diketahui
bahwa faktorial dari 0 adalah 1.

Fungsi dari faktorial dapat didefenisikan sebagai berikut:

n!= n.(n-1)!, jika n>1

n!= 1, jika n=0, 1

sebagai contoh proses penyelesaian faktorial 5!:

Fungsi penghitung faktorial dapat diartikan seperti dibawah ini:

Faktorial ( n ) --> hasilnya n * Faktorial(n-1), jika n > 1 {general case}

--> hasilnya 1, jika n=1 atau 2 {base case}

Algoritma :

Function Faktorial (input n: integer) --> integer

Deklarasi { tidak ada }

Deskripsi
if (n = 0) or (n = 1) then

return (1)

else

return (n * Faktorial(n-1))

endif

d. Fibonacci

Fibonacci merupakan sebuah pola bilangan yang didapatkan dari penjumlahan dua bilangan
sebelumnya pada sebuah deret tersebut.

Dalam matematika, bilangan Fibonacci adalah barisan yang didefinisikan dengan rumus sebagai
berikut:

Persamaan F ( n ) dapat dijelaskan sebagai berikut :

Jika n=0, maka F(0)=0

Jika n=1, maka F(1)=1

Jika n>1 berlaku rumus F(n-1) + F(n-2)

Jika n=2, maka F(2-1) + F(2-2) = F(1) + F(0) = 1 + 0 = 1

Jika n=3 maka F(3-1) + F(3-2) = F(2) + F(1) = 1 + 1 = 2

Jika n =4 maka F(4-1) + F(4-2) = F(3) + F(2) = 2 + 1 = 3

Dst...

Hasil deret bilangan Fibonacci adalah : 0,1,1,2,3, dst...

Gambar Deret Fibonacci:

Kesimpulan :

Untuk n lebih besar dari 1, maka nilainya adalah merupakan hasil penjumlahan dari 2 bilangan yang
ada di depannya.
Untuk n >1, maka rumus F(n-1) + F(n-2) selalu digunakan ketika nilai n berubah. Karena itu, F(n-1) +
F(n-2) dibuat menjadi sebuah fungsi. Ketika nilai n bertambah di dalam fungsi, maka nilai tersebut
dikirim ke dalam fungsinya dengan cara passing by value ketika memanggil dirinya sendiri.

contoh soal:

URUTAN NILAI AWAL FIBONACCI KE : 7

BATAS JUMLAH BILANGAN FIBONACCI : 4

Berdasarkan soal diatas menyatakan bahwa:

Mengartikan urutan nilai fibonacci dimulai dari ke 7 dengan batas akhir jumlah bilangan fibonacci
sebanyak 4. Saat urutan nilai fibonacci ditentukan dimulai dari ke 7, maka urutan selanjutnya ke 8
dst… sampai batas akhir jumlah fibonacci ditentukan.

Penyelesaian:

Jika n = 7, maka (7-1) + (7-2) = f(6) + f(5) --> mengartikan urutan fibonacci yang ke 6 + urutan
fibonacci yang ke 5 yaitu deretan bilangan fibonacci 8 + 5, sehingga urutan nilai fibonacci yang ke 7
menghasilkan deretan bilangan fibonacci 13

Jika n = 8, maka (8-1) + (8-2) = f(7) + f(6) --> mengartikan deretan bilangan fibonacci 13 + 8, sehingga
urutan nilai fibonacci yang ke 8 menghasilkan deretan bilangan fibonacci 21

Jika n = 9, maka (9-1) + (9-2) = f(8) + f(7) --> mengartikan deretan bilangan fibonacci 21 + 13,
sehingga urutan nilai fibonacci yang ke 9 menghasilkan deretan bilangan fibonacci 34

Jika n = 10, maka (10-1) + (10-2) = f(9) + f(8) --> mengartikan deretan bilangan fibonacci 34 + 21,
sehingga urutan nilai fibonacci yang ke 10 menghasilkan deretan bilangan fibonacci 55

Hasil deretan bilangan fibonacci berdasarkan soal diatas adalah : 13, 21, 34, 55

Dapat juga dilihat dalam tabel seperti berikut:

2. Iterasi

Iterasi merupakan fungsi perulangan (looping) yang melakukan proses perulangan terhadap
sekelompok instruksi di mana perulangan tersebut akan berhenti jika batasan syarat sudah tidak
terpenuhi.

contoh penerapan iterasi dengan fungsi faktorial:


int faktorial(int n)

int hasil=1;

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

hasil=hasil*(i+1);

return hasil;

maka pemanggilan nama fungsi dilakukan di dalam fungsi utama main().

Misalkan akan menghitung hasil dari faktorial(5) yang memiliki hasil 120, proses pada program
iterasi di atas adalah sebagai berikut:

Perbedaan rekursi dan iterasi dapat di lihat pada tabel berikut ini:

14.1. Pengantar

1. Pengertian

Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak
teratur menjadi urut dan teratur menurut suatu aturan tertentu.

Biasanya pengurutan terbagi menjadi dua yaitu :

Ascending: Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar
(pengurutan dari karakter/angka kecil ke karakter/angka besar).

cth: A - Z atau 0 - 9

Descending: Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.
(pengurutan dari karakter/angka besar ke karakter/angka kecil).
cth: Z - A atau 9 - 0

contoh 1: Angka

Misalkan suatu kumpulan data array berisi 6 elemen:

Data: 56, 45, 76, 95, 10, 50

Setelah diurutkan:

Ascending: 10, 45, 50, 56, 76, 95

Descending: 95, 76, 56, 50, 45, 10

contoh 2: Karakter

Misalkan suatu kumpulan data array berisi 6 elemen:

Data: "dedi","budi","doni","deni","dani","devi"

Setelah diurutkan:

Ascending: budi, dani, dedi, deni, devi, doni

Descending: doni, devi, deni, dedi, dani, budi

Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk
dicari, mudah untuk diperiksa, dan mudah untuk diperbaiki jika terdapat kesalahan. Data yang
terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan
lagi. Selain itu, dengan mengurutkan data maka semakin mudah untuk menyisipkan data ataupun
melakukan penggabungan data.

2. Jenis - Jenis dan Metode Sorting

A. Metode pengurutan langsung :

1. Metode Penukaran (Exchange selection) / Gelembung (Bubble Sort)

2. Metode Seleksi (Straight Selection Sort)

3. Metode Penyisipan Langsung (Straight Insertion Sort)

B. Metode pengurutan tidak langsung :

1. Shell Sort

2. Quick Sort
3. Merge Sort

A. Metode Pengurutan Langsung

1. Bubble Sort

Bubble Sort adalah pengurutan data yang dilakukan dengan membandingkan antara data[n] dengan
data[n+1] atau antara data[n] dengan data[n-1] kemudian jika data lebih kecil/besar dilakukan
pertukaran. Pada setiap iterasi dapat terjadi beberapa kali pertukaran atau tidak sama sekali. Jumlah
iterasi ditentukan oleh banyaknya data atau ‘N’. Iterasi=N-1.”

Bubble sort adalah metode pengurutan data dengan cara melakukan penukaran data tepat di
sebelahnya secara terus menerus sampai dipastikan dalam satu iterasi tidak ada lagi perubahan. Jika
tidak ada perubahan maka data sudah terurut.

Bubble sort terinspirasi dari namanya ‘gelembung' sabun yang ada di dalam permukaan air, dimana
berat jenis gelembung lebih kecil dari berat air sehingga akan mengapung diatas permukaan.

Cara pengurutan:

Ascending: Jika elemen sekarang lebih besar dari elemen berikutnya, maka kedua elemen tersebut
tukar posisi atau swap.

Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut
tukar posisi atau swap.

Ilustrasi Bubble Sort dapat dilihat sebagai berikut:

Ilustrasi Bubble Sort (1)

Ilustrasi Bubble Sort (2)

Ilustrasi Bubble Sort (3)


Ilustrasi Bubble Sort (4)

Proses pengurutan dilakukan begitu seterusnya sampai data terakhir atau index terakhir, jika data
tersebut belum terurut, maka kembali dilakukan proses pengurutan yang dimulai dari index awal
sampai index terakhir pada tahap selanjutnya sampai data sudah keadaan terurut.

Atau dapat juga dilihat Ilustrasi Bubble Sort seperti berikut:

Keterangan:

Bandingkan nilai pada data index ke-0 dengan data ke-1

Jika nilai data index ke-0 terpenuhi sesuai pengurut dari data ke-1 maka tukar posisinya

Kemudian data index ke-1 dibandingkan lagi dengan data index ke-2

Jika data index ke-1 tidak terpenuhi sesuai pengurut dari data index ke-2 maka posisinya tetap.

Kemudian data index ke-2 dibandingkan lagi dengan data index ke-3

Jika nilai data index ke-2 terpenuhi sesuai pengurut dari data ke-3 maka tukar posisinya dan begitu
seterusnya sampai data index ke-n.

Jika data belum terurut sampai ke data index ke-n, maka proses pengurutan dilakukan ketahap
selanjutnya, sampai data terurut.

Untuk lebih memahami pemahaman mengenai metode Bubble Sort Ilustrasi dapat juga dilihat dalam
bentuk video seperti berikut ini :

Play Video

Kelebihan Bubble Sort :

Proses penghitungan Bubble sort merupakan metode yang paling sederhana


Algoritma Bubble Sort mudah dipahami

Langkah atau tahapan dalam pengurutan data sangat sederhana.

Kekurangan Bubbe Sort :

Proses penghitungan Bubble Sort menggunakan metode pengurutan termasuk paling tidak efisien
walaupun dianggap sederhana. Karena proses pengurutan data dilakukan dengan proses
pembandingannya satu - satu, mulai dari data paling awal sebelah kiri, sampai data terakhir

Ketika data yang ingin diurutkan banyak atau dalam jumlah yang besar, maka proses pengurutan
akan semakin lama dan lambat. Karena proses pengurutan data secara tunggal (satu - satu).

Jumlah pengulangan akan tetap sama sampai ke data yang terakhir, walaupun sebagian data yang
ada telah terurut.

Contoh Metode Bubble Sort:

Urutkanlah data bilangan array berikut ini secara ascending:

Penyelesaian:

Dari analisis proses pengurutan diatas terdapat 6 tahap dan setiap tahap memiliki 5 proses. Pada
saat tahap ke 5 sudah selesai tetapi tetap melakukan putaran sampai ke tahap 6, inilah yang
menjadikan kelemahan algoritma bubble sort yang masih kurang effisien. Berdasarkan contoh di atas
proses pengurutan dilakukan secara Ascending.

14.2. Metode Selection Sort


1. Selection Sort
Selection Sort adalah metode sorting dimana elemen- elemen di perbandingkan satu-
persatu sampai pada elemen terakhir dan disusun berdasarkan pengurutan yang telah
ditentukan (terbesar atau terkecil).

Selection Sort merupakan salah satu algoritma pengurutan yang pengunaannya sangat


efisien dan sederhana, dimana melakukan pencarian index dengan isi nilai terkecil
setelah itu ditukar dengan isi index yang lebih besar dari index dengan nilai terkecil itu,
selanjutnya index terkecil kedua akan disimpan pada variable tmp (sementara) lalu
ditukar dengan index kedua dan berulang terus sampai semua selesai terurut.

Cara pengurutan:

 Ascending: Seleksi data terkecil kemudian tukar posisi atau swap


 Descending: Seleksi data terbesar kemudian tukar posisi atau swap

Ilustrasi Bubble Sort dapat dilihat sebagai berikut:

Ilustrasi Selection Sort (1)

Ilustrasi Selection Sort (2)


Ilustrasi Selection Sort (3)

Ilustrasi Selection Sort (4)

Proses pengurutan dilakukan begitu seterusnya sampai data terakhir atau index terakhir,
jika data tersebut belum terurut, maka kembali dilakukan proses pengurutan dengan
membandingkan index berikutnya sampai index terakhir pada tahap selanjutnya sampai
data sudah keadaan terurut.

Atau dapat juga dilihat Ilustrasi Selection Sort seperti berikut:


Keterangan:

Prinsip kerja dari Teknik Section sort ini adalah:

 Pengecekan dimulai dari data 1 sampai dengan data ke n


 Tentukan bilangan dengan Index terkecil dari data bilangn tersebut
 Tukar bilangan dengan index terkecil tersebut dengan bilangan pertama (I=1)
dari data bilangan tersebut
 Lakukan langkah 2 dan 3 untuk bilangan berikutnya (I=I+1)sampai di dapatkan
data yang optimal.

Untuk lebih memahami pemahaman mengenai metode Selection Sort Ilustrasi dapat


juga dilihat dalam bentuk video seperti berikut ini : 

Play Video

Kelebihan Selection Sort :

 Algoritma ini sangat rapat dan mudah untuk diimplementasikan


 Operasi pertukarannya hanya dilakukan sekali saja
 Waktu pengurutan dapat lebih ditekan
 Mudah menggabungkannya kembali
 Kompleksitas selection relative lebih kecil

Kekurangan Selection Sort :

 Sulit untuk membagi masalah.


Contoh Metode Selection Sort:

Urutkanlah data bilangan array berikut ini secara ascending:

Penyelesaian:
Dari analisis proses pengurutan diatas, maka data sudah terurut sesuai dengan
pengurutan yang telah ditentukan. Berdasarkan contoh di atas proses pengurutan
dilakukan secara Ascending.

14.3. Metode Insert Sort

1. Pengertian

Insertion Sort dilakukan dengan cara menyisipkan sebuah angka ke posisi yang diinginkan. Angka
yang disisipkan sesuai dengan urutan iterasinya. Jumlah iterasi ditentukan oleh banyaknya data atau
‘N’. Iterasi=N”.Sekilas algoritma ini tidak jauh berbeda dengan Bubble Sort, namun sesungguhnya
berbeda.

Metode ini bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh
array berhasil diurutkan. Metode ini mengurutkan bilangan-bilangan yang telah dibaca dan
berikutnya secara berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke
sisi kiri array yang telah terurut.

Insertion sort ( metode penyisipan ) bertujuan untuk menjadikan bagian sisi kiri array terurutkan
sampai seluruh array berhasil diurutkan. Juga metode ini mengurutkan bilangan bilangan yang telah
dibaca, dan berikutnya secara berulang akan menyisipkan bilangan-bilangan dalam array yang belum
terbaca ke sisi kiri array yang sudah terurut.

Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data
pada posisinya dengan cara melakukan perbandingan dengan data – data yang ada. Ide algoritma
dari metode insertion sort ini dapat dianalogikan sama seperti mengurutkan kartu, dimana jika suatu
kartu dipindah tempatkan menurut posisinya, maka kartu yang lain akan bergeser mundur atau maju
sesuai kondisi pemindahanan kartu tersebut. Dalam pengurutan data, metode ini dipakai bertujuan
untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.

Untuk mempermudah pemahaman, algoritma insertion sort dapat dianalogikan dengan pengurutan
kartu. Anggaplah ketika hendak mengurutkan satu set kartu dari kartu yang bernilai paling kecil
hingga yang bernilai paling besar. Analoginya dapat dilihat seperti dibawah ini:

Semuanya dimulai dari posisi tangan kosong dan semua kartu masih tersimpan di atas meja. Anggap
saja ketika hendak menyusun kartu ke tangan kiri.

Lalu mengambil kartu pertama dari meja dan menyimpannya di tangan kiri. Kemudian, mengambil
kartu kedua dari meja. Lalu, membandingkan kartu tersebut dengan kartu yang ada di tangan kiri.

Jika kartu yang baru saja diambil dari meja memiliki nilai yang lebih kecil dari pada kartu di tangan
kiri, maka kartu tersebut akan diletakan di depan kartu pembanding.

Kartu yang telah dibandingkan akan bergeser mundur.

Proses ini akan terus berlangsung sampai semua kartu terurut dengan benar sesuai kriteria
pengurutannya.

Setelah semua kartu terurut, satu set kartu yang sudah terurut akan disimpan kembali ke meja.

Proses ini akan berlangsung sampai semua kartu akan terurutkan dengan benar sesuai kriteria
pengurutannya.

Demikian juga halnya dalam pengurutan data.

Jika data sudah ada, maka pengurutan dimulai dengan mengambil satu data dan
membandingkannya dengan data-data yang ada didepannya. Jika data yang diambil memenuhi
syarat perbandingan, maka data yang diambil tersebut akan diletakan di depan data yang
dibandingkan, kemudian data-data yang dibandingkan akan bergeser mundur.
Catatan: Dalam hal pengurutan data dengan metode insertion sort ini, data yang diambil pertama
adalah data kedua, kemudian data yang diambil akan dibandingkan dengan data – data yang ada
disebelah kiri / data sebelumnya (data-data sebelum data yang diambil). Jika proses tersebut selesai,
maka akan dilanjutkan dengan data-data selanjutnya (data ke-3, data ke-4… dan seterusnya). Proses
akan berlangsung sampai data – data terurutkan dengan benar.

Cara pengurutan:

Ascending: ketika perbandingan ambil data yang paling kecil.

Descending: ketika perbandingan ambil data yang paling besar;

Prinsip kerja Insertion Sort:

Bandingkan data kedua dengan data pertama, jika data kedua lebih kecil maka tukar posisinya, jika
tidak biarkan aja atau posisi tetap.

Data ketiga dibandingin dengan data ke-1 dan ke-2,jika data ke-3 lebih kecil tukar lagi posisinya.

Data ke-4 dibandingin dengan data ke-3, ke-2, dan ke-1, jika data ke-4 lebih kecil dari ketiganya
maka letakkan data ke-4 ke posisi paling depan, begitu seterusnya. Dalam hal pengurutan ini prinsip
kerja yang dilakukan adalah secara Ascending.

Ilustrasi Insertion Sort dapat dilihat sebagai berikut:

Ilustrasi Insertion Sort (1)

Ilustrasi Insertion Sort (2)

Ilustrasi Insertion Sort (3)

Ilustrasi Insertion Sort (4)


Ilustrasi Insertion Sort (5)

Ilustrasi Insertion Sort (6)

Proses pengurutan dilakukan begitu seterusnya sampai data terakhir atau index terakhir, sampai
data sudah keadaan terurut.

Atau dapat juga dilihat Ilustrasi Selection Sort seperti berikut:

Untuk lebih memahami pemahaman mengenai metode Insertion Sort Ilustrasi dapat juga dilihat
dalam bentuk video seperti berikut ini:

Play Video

Kelebihan Insertion Sort:

Sederhana dalam penerapannya.

Efektif dalam data yang kecil.

Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan
dengan Quicksort.

Efektif dalam data yang sebagian sudah terurut.

Lebih efektif dibanding Bubble Sort dan Selection Sort.

Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu algoritma pengurutan
tercepat pada jumlah elemen yang sedikit.

Stabil.

Kekurangan Insertion Sort:


Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik.

Untuk larik yang jumlahnya besar ini tidak praktis.

Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti
seluruh bagian sebelum menyisipkan elemen berikutnya.

Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam pengurutan
elemen dalam jumlah besar.

Contoh Metode Insertion Sort:

Urutkanlah data bilangan array berikut ini secara ascending:

Dari analisis proses pengurutan diatas, maka data sudah


terurut sesuai dengan pengurutan yang telah ditentukan.
Berdasarkan contoh di atas proses pengurutan dilakukan
secara Ascending.

15.1. Pengantar
1. Searching
Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa
dilakukan untuk mencari data yang ada di dalam memory komputer. Dalam kehidupan
sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data/informasi
yang ada dalam internet, untuk menemukan nomor telepon seseorang pada buku
telepon atau mencari istilah dalam kamus, dan masih banyak lagi. Pada aplikasi
komputer, pencarian kerapkali dilakukan. Misalnya untuk proses penghapusan
data/record atau mengubah data/record tertentu di dalam suatu tabel atau file, langkah
pertama yang harus dilakukan adalah mencari apakah data tersebut terdapat di dalam
tabel/file atau tidak. Jika ada maka dapat dihapus atau diubah.

Pencarian (Searching) merupakan tindakan untuk mendapatkan suatu data dalam


kumpulan data berdasarkan satu kunci (key) atau acuan data.

Ada beberapa metode yang dapat digunakan untuk searching, yaitu:

a. Pencarian Beruntun (Sequential Search)

b. Pencarian Bagi Dua (Binary Search)


A. Pencarian Beruntun (Sequential Search)

Sequential Search atau sering juga disebut Linear Search merupakan metode pencarian
data dalam array dengan cara membandingkan data yang dicari dengan data yang ada
di dalam array secara berurutan. Pencarian data dengan Metode Sequential Search
efektif untuk mencari data yang dalam posisi yang tidak terurut atau acak.

Prosesnya bisa dijelaskan seperti berikut:

1. Menentukan data yang dicari


2. Membaca data array satu per satu secara sekuensial
3. Mulai dari data pertama sampai dengan data terakhir, kemudian data yang dicari
tadi dibandingkan dengan masing-masing data yang ada di dalam array.
a. Jika data yang dicari ditemukan, maka dapat membuat statement bahwa data
telah ditemukan.
b. Jika data yang dicari tidak ditemukan, maka dapat membuat statement bahwa
data tidak ditemukan.

Ilustrasi Sequencial Search:

Keterangan:

Data yang dicari yaitu Data 5 disimpan di variabel, kemudian akan dibanding satu per
satu secara sekuensial terhadap data yang ada dalam array. Jika ditemukan data di
dalam array yang sama dengan data yang dicari artinya data ditemukan.

Untuk lebih memahami pemahaman mengenai metode Sequencial search Ilustrasi dapat


juga dilihat dalam bentuk video seperti berikut ini : 
Play Video

Sequential Searching memiliki Kelebihan dan Kekurangan yaitu:


 Kelebihan Sequential Searching bisa dikatakan lebih mudah dalam
implementasinya dalam pemrograman.
 Kekurangannya jika data yang terdapat dalam suatu array itu sangat banyak,
maka akan diperlukan waktu yang lebih lama untuk membandingkan data yang
dicari dengan jumlah data yang sangat banyak dalam suatu array.

Contoh Studi Kasus: Metode Sequencial Search:


Menemukan data yang dicari dalam sebuah array satu dimensi yang terdapat data di
dalamnya dengan menggunakan Metode Sequential Search. Jika data yang dicari
ditemukan di dalam array kemudian ditampilkan letak dari indexnya.

                                                                    Data ditemukan pada index ke - 5

Keterangan:

Berdasarkan analisa pencarian metode sequencial search di atas, proses pencarian


membandingkan data array dari index awal sampai index akhir dengan data yang dicari,
ditampung dalam sebuah variabel X. Proses pencarian akan tetap berlanjut sampai data 
pada index terakhir walaupun data sudah ditemukan pada index ke 5.
15.2. Metode Binary Search
1. Binary Search
Metode pencarian Binary Seach yaitu mencari data dengan melakukan
mengelompokkan array menjadi bagian-bagian. Binary Search ini hanya dapat
diimplementasikan pada data yang telah terurut baik ascending maupun descending
dalam suatu array.

Binary Search, pada metode pencarian ini, data harus diurutkan terlebih dahulu. Pada
metode pencarian ini, data dibagi menjadi dua bagian (secara logika), untuk setiap tahap
pencarian.

Algoritma Binary Search :

 Data diambil dari posisi 1 sampai posisi akhir N


 Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2
 Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah
sama atau lebih kecil, atau lebih besar?
 Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi
tengah + 1
 Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi
tengah – 1
 Jika data sama, berarti ketemu.

Proses Binary Search:

1. Pertama buat perulangan lalu menentukan posisi low yaitu posisi yang
menandakan index paling rendah kemudian menentukan posisi high. Kemudian
mencari posisi mid = (high + low)/2
2. Lalu membandingkan data yang dicari dengan nilai yang ada di posisi mid.
3. Jika data yang dicari sama dengan nilai yang ada di posisi mid berarti data
ditemukan.
4. Jika data yang dicari lebih kecil dari nilai yang ada di posisi mid maka pencarian
data akan dilakukan dibagian kiri mid dengan melakukan pembandingan. dengan
kondisi posisi high berubah yaitu (mid - 1) dan posisi low tetap.
5. Jika data yang dicari lebih besar dari nilai yang ada mid  maka pencarian data
akan dilakukan di bagian kanan dari mid dengan posisi low yang berubah yaitu
(mid + 1) dan posisi high tetap.

 Jika data[posisi] > data yg dicari, high = pos – 1


 Jika data[posisi] < data yg dicari, low = pos + 1

Ilustrasi Binary Search:


Keterangan:
low = index awal
high = index terakhir
mid = posisi middle atau posisi tengah
Setelah menentukan low dan high kemudian menentukan mid. perhitungan
mid=(low+high)/2 jadi mid=(0+n)/2, artinya mid telah diperoleh berdasarkan hasil
pembagian. Kemudian data yang dicari yang ditampung di variabel dibandingkan
dengan data/nilai yang berada di mid. Pencarian di bagian mid masih dalam perulangan
yang sama, namun indeksnya yang dipersempit.

Untuk lebih memahami pemahaman mengenai metode Sequencial search Ilustrasi dapat


juga dilihat dalam bentuk video seperti berikut ini : 

Play Video

Kelebihan dan Kekurangan Binary Search:

 Kelebihannya yaitu tidak perlu membandingkan data yang dicari dengan seluruh


data array yang ada, cukup melalui titik tengah kemudian kita bisa menentukan
ke mana selanjutnya mencari data yang ingin dicari.
 Kekurangan implementasi agak sedikit lebih rumit karena tidak bisa digunakan
pada data array yang masih acak. Jadi harus melakukan sorting terlebih dahulu
dalam implementasinya.

Contoh Studi Kasus: Metode Binary Search:


Menemukan data yang dicari dalam sebuah array satu dimensi yang terdapat data di
dalamnya sudah terurut dengan menggunakan Metode Binary Search. Jika data yang
dicari ditemukan di dalam array, maka ditampilkan statement bahwa data telah
ditemukan.
Data telah ditemukan
Keterangan:

 Setelah menentukan low dan high kemudian menentukan mid. perhitungan


mid=(low+high)/2 jadi mid=(0+6)/2, artinya mid berada di data[3]. Kemudian
data yang dicari yang ditampung di variabel x dibandingkan dengan data/nilai
yang berada di mid 30=80, data yang dicari adalah 30<80 kemudian pencarian
data dilakukan di bagian kiri mid.
 Pencarian di bagian kiri mid masih dalam perulangan yang sama, namun
indeksnya yang dipersempit. Karena data yang dicari lebih kecil dari data mid
yang sebelumnya maka posisi high yang berubah yaitu (mid - 1) yang
sebelumnya dan low tetap pada posisi yang sama. Kemudian menentukan mid
=(0+2)/2 = 1
 Artinya mid sekarang terletak di data[1]. lalu data yang dicari dibandingkan
dengan mid 30=45, 30<45 kemudian pencarian data dilakukan di bagian kiri mid.
Karena data yang dicari lebih kecil dari data mid yang sebelumnya maka posisi
high yang berubah yaitu (mid - 1) yang sebelumnya dan low tetap pada posisi
yang sama. Kemudian menentukan mid =(0+0)/2 = 0, lalu bandingkan 30=30
artinya data telah ditemukan.

Anda mungkin juga menyukai