Algoritma

Unduh sebagai doc, pdf, atau txt
Unduh sebagai doc, pdf, atau txt
Anda di halaman 1dari 59

BAB 1- PENDAHULUAN

Algoritma
Algoritma adalah langkah – langkah logis tertentu untuk menyelesaikan
suatu masalah.
Guna algoritma adalah untuk membantu seseorang dalam menyelesaikan
suatu masalah berdasarkan pada pola pikirnya masing-masing.

• Ciri – ciri algoritma:


1. Ada input.
2. Ada proses.
3. Ada output.
4. Memiliki instruksi instruksi yang jelas dan tidak ambigu.
5. Harus mempunyai stopping role.

• Sifat algoritma :
1. Tidak menggunakan simbol atau sintaks dari suatu bahasa
pemrograman.
2. Tidak tergantung pada suatu bahasa pemrograman.
3. Notasi-notasinya dapat digunakan untuk seluruh bahasa manapun.

• Algoritma dapat digunakan untuk merepresentasikan suatu urutan


kejadian secara logis dan dapat diterapkan di semua kejadian sehari-hari.
Contoh kasus dalam kehidupan sehari-hari:
o Algoritma memasak mie instan.
 Rebus air hingga mendidih.
 Masukkan mie instan ke dalam air mendidih tersebut.
 Tunggu beberapa hingga mie terlihat matang.
 Jika mie sudah dirasa matang, angkat dan tiriskan.
 Campurkan bumbu-bumbu, dan aduk hingga rata.
o Algoritma registrasi semester baru di UKDW.
 Menyerahkan KTM ke operator.
 Menunggu untuk dipanggil operator.
 Jika sudah dipanggil, lakukan konfirmasi keberadaan.
 Jika konfirmasi sudah dilakukan,
 Login dengan NIM dan password.
 Pilih mata kuliah.
 Jika sudah selesai, bisa cetak invoice.
o Algoritma menghitung luas persegi panjang.
 Masukkan panjang
 Masukkan lebar
 Nilai luas adalah panjang * lebar
 Tampilkan luas

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 1


o Algoritma menghitung sisi miring segitiga siku - siku.
 Masukkan nilai sisi a
 Masukkan nilai sisi b
 Hitung nilai c2=a2+b2
 Hitung nilai c
 Tampilkan nilai c
Jadi algoritma adalah jembatan untuk mempermudah pemahaman alur kerja
suatu proses.

Pseudo-code
• Pseudo-code adalah kode atau tanda yang menyerupai (pseudo) atau
merupakan penjelasan cara menyelesaikan suatu masalah.
• Pseudo-code sering digunakan oleh seseorang untuk menuliskan
algoritma dari suatu permasalahan.
• Pseudo-code berisikan langkah-langkah untuk menyelesaikan suatu
permasalahan [hampir sama dengan algoritma], hanya saja bentuknya
sedikit berbeda dari algoritma.
• Pseudo-code menggunakan bahasa yang hampir menyerupai bahasa
pemrograman. Selain itu biasanya pseudo-code menggunakan bahasa
yang mudah dipahami secara universal dan juga lebih ringkas dari
pada algoritma.
• Beda antara algoritma dan pseudo-code
Contoh algoritma mencari luas persegi panjang :
Algoritma Pseudo-code
Masukkan panjang Input panjang
Masukkan lebar Input lebar
Nilai luas adalah panjang x Luas <-panjang x lebar
lebar
Tampilkan luas Print luas

Contoh lain:
Page 3
Algoritma Pseudo-code
Jika sudah selesai, cetak invoice IF KONDISI_SELESAI = “DONE” THEN
PRINT INVOICE
Nilai A dibagi dengan 2 A←A/2
Jika nilai A lebih besar dari 2 maka IF A > 2 THEN A ← A x 3
nilai A dikalikan 3
Dari dua bilangan A dan B, cari IF A > B THEN PRINT A ELSE PRINT B
bilangan yang terbesar
Masukkan semua mata kuliah yang DARI MATKUL = 0 SAMPAI MATKUL <=
ingin diambil pada semester ini MATKUL_DIINGINKAN, MASUKAN DATA
MATKUL

• Sebenarnya tidak ada aturan mengikat tentang penulisan algoritma


dan pseudo-code, karena guna kedua hal ini adalah untuk

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 2


memudahkan seseorang untuk menggambarkan urutan suatu
kejadian. Biasanya untuk para programmer, guna kedua hal ini adalah
sebagai dasar alur pembuatan program. Di mana dapat
merepresentasikan alur cerita dari client tentang kebutuhan dasar dari
sebuah program, sehingga lebih mudah untuk dipahami.
• Jadi pseudo-code bisa dikatakan juga sebagai algortima yang sudah
sedikit digabungkan dengan bahasa pemrograman yang akan
digunakan.

Flowchart
• Definisi:
Bentuk gambar/diagram yang mempunyai aliran satu atau dua arah
secara sekuensial
• Kegunaan:
o Untuk mendesain program
o Untuk merepresentasikan program
• Secara garis besar, unsur-unsur pemrograman adalah Input ->
Proses -> Output. Semua bahasa pemrograman, pasti mempunyai
komponen-komponen sebagai berikut :
o Input (scanf)
o Percabangan (if, switch)
o Perulangan (while, for, for each, loop)
o Output (printf)

• Lambang-lambang flowchart :

KETERANGAN LAMBANG

Mulai / Selesai (Terminator)

Aliran Data

Input / Output

Proses

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 3


Percabangan (Decision)

Pemberian nilai awal suatu


variabel (Preparation)

Memangggil prosedur / fungsi


(Call)

Connector (di halaman yang


sama)

Connector (di halaman lain)

Sequence process

Perulangan
syara
t

Bagian yang
diulang

Pencaca
h

Page 5

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 4


Contoh flowchart :
• Problem menghitung luas segitiga
• Algoritma :
 Masukkan alas (a)
 Masukkan tinggi (t)
 Hitung luas (L), yaitu hasil 0.5 * alas * tinggi
 Cetak luas (L)

Mulai

Masukkan
alas (a)

Masukan
tinggi(t)

L=(a x
t)/2

Cetak Luas
(L)

Selesai

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 5


Variabel dan Konstanta
Merupakan pernyataan yang perlu dideklarasikan.
• Konstanta
Nilai tetap, jika suatu nama digunakan sebagai konstanta maka tidak dapat
digunakan untuk nilai yang lain.
• Variabel
Merupakan suatu peubah yang memiliki nilai yang bisa diubah-ubah.

A. Mendeklarasikan Konstanta
• Untuk mendeklarasikan konstanta digunakan perintah CONST
• Format:
CONST C ← N;
Keterangan:
C = Nama Konstanta
N = Nilai
Contoh:
• Untuk mendeklarasikan pi menjadi 3.14 sehingga kita tidak
perlu memanggil 3.14 berulang-ulang cukup memanggil pi saja
• Contoh
o CONST PHI← 3.14;
B. Mendeklarasikan Variabel
• Untuk mendeklaraskan variabel digunakan kata VAR
• Format
VAR V:TIPEDATA;
Keterangan:
V=nama variabel
TIPEDATA=Tipe data
C. Tipe Data
• Numerik
o Byte (0-255)
o Integer (-35000 s.d 35000)
o Longint (-128000 s.d 128000)
o Real (pecahan)
• Karakter
o Char (1 huruf)
o String (lebih dari 1 huruf)
• Boolean (Ya / Tidak, True/False)
D. Memberikan Nilai Kepada Variabel
• Dilakukan pada saat program sedang berjalan (bagian pernyataan)
• Format
o untuk variabel V dengan nilai N
o V← N;
• Misalkan memberikan nilai 5 ke variabel A
• A← 5;

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 6


Di bawah ini langkah-langkah sistematis dalam pembuatan suatu program,
sebagai berikut:
1. Mendefinisikan permasalahan
2. Membuat rumusan untuk pemecahan masalah
3. Implementasi
4. Menguji coba dan membuat dokumentasi
1. Mendefinisikan Permasalahan
Yang dimaksud mendefinisikan permasalahan yaitu kita harus mengerti dengan
baik mengenai permasalahan apa yang ingin diselesaikan. Contoh:

a. Permasalahan menghitung luas lingkaran, dengan data yang diketahui


adalah diameter lingkaran.
b. Permasalahan menampilkan bilangan dengan kelipatan tertentu dari 0
hingga range tertentu.
Membuat Rumusan untuk Pemecahan Masalah
Setelah kita mengetahui dengan baik mengenai permasalahan yang ingin
diselesaikan, langkah selanjutnya yaitu membuat rumusan algoritma untuk
memecahkan masalah. Rumusan tersebut dapat disusun dalam bentuk
pseudocode ataupun flowchart. Contoh:
a. Untuk contoh menghitung luas lingkaran

3. Implementasi

Apabila langkah 1 dan 2 belum melibatkan bahasa pemrograman, maka langkah


ketiga ini telah mulai melibatkan bahasa pemrograman yang ingin digunakan. Di
dalam mengimplementasi algoritma kita akan menentukan bahasa
pemrograman apa yang cocok atau ingin kita gunakan.
Misalnya Pascal atau Delphi, Basic, dan sebagainya. Implementasi tersebut
tentunya mengacu pada algoritma yang telah disusun pada langkah

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 7


sebelumnya, baik itu variable-variable yang digunakan maupun alur program.
Jika program diimplementasikan dengan bahasa pemrograman yang bersifat
visual dan event driven (melibatkan desain form dan event-event) seperti Visual
Basic atau Delphi, maka perlu pula diperhatikan langkah-langkah berikut:

1. Menambahkan obyek-obyek control pada Form seperti EditBox,


ComboBox, Button, dll
2. Mengatur posisi control, properties kontrol (seperti caption, warna,
jenis tulisan, dan
3. sebagainya), serta urutan fokus obyek-obyek yang ada pada form.
4. Pemberian nama obyek kontrol yang sesuai. Misalnya untuk input
diameter diberi nama txtDiameter.
5. Menentukan event-event kontrol yang berpengaruh pada
fungsionalitas program
6. Mulai koding
4. Menguji Coba dan Membuat Dokumentasi
Setelah selesai implementasi, langkah selanjutnya yaitu menguji program
tersebut apakah telah berjalan sesuai dengan tujuannya untuk memberi solusi
dari suatu permasalahan. Apabila program belum berjalan dengan baik, maka
kita perlu mengkaji kembali rumusan/algoritma yang telah dibuat pada langkah
kedua, serta memperbaiki implementasi program yang mungkin keliru. Untuk
memudahkan dalam memeriksa kesalahan suatu program ataupun memahami
jalannya program, kita juga perlu membuat dokumentasi dari program yang
dibuat. Dokumentasi tersebut berisi informasi mulai dari tujuan/fungsi program,
algoritma program, hingga cara menggunakannya

Operator
 Operator relasional melambangkan hubungan antara dua entitas
 Entitas tersebut bisa berupa variabel, konstanta maupun fungsi
 Nilai dari hubungan tersebut adalah TRUE atau FALSE
 Ada beberapa operator relasional :
 > : lebih besar
 >= : lebih besar atau sama dengan
 < : lebih kecil
 <= : lebih kecil atau sama dengan
 == : sama dengan
 != : tidak sama denga

Tugas Teori Algoritma

SOAL :

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 8


• Kasus (buatlah algoritma dan atau pseudo-code) :
a. Kejadian membayar uang SKS di bank BNI Duta Wacana.
b. Kejadian berbelanja makanan di Carrefour
c. Kejadian memesan makanan
d. Kejadian setelah bangun tidur hingga sampai kampus
e. Kejadian setor uang di bank
f. Kejadian memesan tiket di 21 hingga selesai nonton filmnya.
g. Kejadian log-in ke Facebook.com
h. Kejadian menambah teman di Yahoo Messenger
i. Kejadian menginstall Windows (PR)
j. Seorang bapak ingin anaknya agar membelikan dia sebuah cerutu.
Sesampainya di 7 eleven, sang anak bertanya kepada penjaga kios.
“hei Brother… dimana saya bisa menemukan cerutu ?” Penjaga kios
menjawab, “ Di Pojok Boz..” Lalu sang anak pergi ke pojok toko
tersebut dan mencari letak cerutu. Setelah memilih sebuah cerutu
sang anak pergi ke kasir dan mengeluarkan uang pecahan 50 ribuan.
Sang penjaga kios memberi kembalian berupa uang 10ribuan 1 lembar
dan uang seribuan 3 lembar. Belum beranjak 15 meter dari pintu toko,
sang kasir memanggil si anak dan mengatakan bahwa uang 50
ribuannya uang palsu. Sang anak kemudian mengeluarkan uang
cadangan dari sakunya dan menukar uang 50 ribuan tersebut. Setelah
urusan beres, ia pun kembali ke rumah. Buatlah Pseudo-code dan
Flowchart berdasarkan cerita tersebut jika Anda mengalami hal yang
serupa dengan sang Anak. (Jawaban akan berbeda masing – masing
siswa).

k. 11. Bu Guru menyuruh murid – muridnya untuk belajar pelajaran


Sejarah untuk ulangan harian minggu depan, materi ulangan adalah
sebagai berikut :
1. Bab 1: Kerajaan Hindu Budha di Indonesia
2. Bab 2 :Masuknya Islam di Indonesia
3. Bab 3 :Munculnya kerjaan Islam di Indonesia
4. Bab 4: Berdirinya badan badan Nasionalis Negara.
Bu Guru menyarankan untuk mempelajari lebih fokus tentang Bab 2
dan Bab 3. Anda juga disarankan untuk membuat catatan ringkas
tentang bab 1 dan 4 untuk menambah nilai ulangan mereka.
Berikan pseudo-code seorang murid yang mematuhi saran dari
gurunya tersebut. Gambarkan pula flowchart beserta segala
kemungkinan yang ada. Ingat, Anda mempunyai tujuh hari untuk
mempersiapkan ulangan tersebut.

• Soal teknis (buatlah pseudo-code dan flowchart) :


1. Menghitung konversi suhu.dari Celcius menjadi Reamur dan
Farenheit. [clue : R = 4/5 * C dan F = 9/5 * C + 32]
2. Menghitung sisi miring dari suatu segitiga siku-siku, jika diketahui
panjang sisi yang membentuk sudut siku-siku. [clue : ]

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 9


3. Menentukan suatu bilangan genap atau ganjil
4. Menghitung akar-akar persamaan kuadrat dengan rumus:
D = b2 – 4ac
a. Jika D < 0 maka didapat akar imajiner
b. Jika D = 0 maka X1 = X2 yang didapat dari b / 2a
c. Jika D > 0 maka ada dua akar :

5. Menghitung usia berdasarkan tahun lahir (tl) dan tahun sekarang


(ts)
6. Menghitung rata-rata 5 bilangan
7. Mengkonversi nilai angka ke huruf

Nilai angka Nilai huruf


80.0 - 100 A
65.0 - 79.9 B
55.0 - 64.9 C
45.0 - 54.9 D
0 - 44.9 E

8. Menentukan bilangan prima

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 10


Sesi 1 - 2 Materi Praktikum :
• Algoritma dan Blok Program melalui pendekatan bahasa C++.
• Variabel dan konstanta.
• Prepocessor directive, comments, cout dan cin.
• Hierarchical Input Process Output.

Untuk membuat suatu program ada baiknya kita mengenal terlebih dahulu apa
yang disebut dengan prepocessor directive. Propocessor ditandai dengan adanya
awalan # .
Preprocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi.
Setiap program C++ mempunyai bentuk seperti di bawah , yaitu:

#prepocessor directive
main()
{
// Batang Tubuh Program Utama
}

Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh
program utama berada didalam fungsi main(). Berarti dalam setiap pembuatan
program utama, maka dapat dipastikan seorang pemrogram menggunakan minimal
sebuah fungsi. Pembahasan lebih lanjut mengenai fungsi akan diterangkan
kemudian. Yang sekarang coba ditekankan adalah kita menuliskan program utama
kita didalam sebuah fungsi main(). Jangan lupa bahwa C++ bersifat case sensitive,
sehingga, nama hallo dan Hallo berbeda artinya.

CARA PENULISAN

• Komentar
Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis
komentar, yaitu:
Jenis 1 : /* Komentar anda diletakkan di dalam ini
Bisa mengapit lebih dari satu baris */
Jenis 2 : // Komentar anda diletakkan disini ( hanya bisa perbaris )

• Semicolon
Tanda semicolon “;” digunakan untuk mengakhiri sebuah pernyataan. Setiap
pernyataan harus diakhiri dengan sebuah tanda semicolon. Baris yang diawali
dengan tanda #, seperti #include <iostream.h>

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 11


tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatu
bentuk pernyataan, tetapi merupakan prepocessor directive

MASUKAN DAN KELUARAN DASAR

Pada C++ terdapat 2 jenis I/O dasar, yaitu:


1. cout (character out), standard keluaran
2. cin (character in), standard masukan
Untuk dapat menggunakan keyword diatas, maka harus ditambahkan
#include <iostream.h> pada prapocessor directive.

Contoh :

#include <iostream.h>
main()
{
char nama[100]; // Dekalarasi variable nama
cout<<”Masukkan nama Anda : “;
cin>>nama; // Meminta user untuk menginisialisasi variable nama
cout<<”Nama anda adalah “<<nama;
return 0;
}

KARAKTER & STRING LITERAL

String adalah gabungan dari karakter


Contoh : “ Belajar “  Literal String
“B“  Karakter

Panjang String
strlen()  nama fungsi untuk menghitung panjang string
Fungsi strlen() dideklarasikan dalam file string.h
Jadi bila anda ingin menggunakan fungsi strlen(), maka prepocessor directive
#include<string.h> harus dimasukkan dalam program diatas main().

Contoh :
#include <iostream.h>
#include <string.h>
main()
{
cout<<strlen("Selamat Pagi.\n")<<endl;
cout<<strlen("Selamat Pagi.")<<endl;
cout<<strlen("Selamat")<<endl;
cout<<strlen("S")<<endl;
cout<<strlen("");
return 0;
}

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 12


Keluarannya:
14
13
7
1
0

Perhatikan, bahwa disetiap akhir baris pernyataan diakhiri dengan tanda titik –
koma (semicolon) “ ; “.
Perhatikan, bahwa ‘ \n ‘ dihitung satu karakter. \n disebut newline karakter
Endl juga merupakan newline karakter ( sama kegunaannya seperti \n ).
Dalam C++, selain \n terdapat juga beberapa karakter khusus yang biasa dsebut
escape sequence characters, yaitu

Karakter Keterangan
\0 Karakteeer ber-ASCII nol ( karakter null )
\a Karakter bell
\b Karakter backspace
\f Karakter ganti halaman ( formfeed )
\n Karakter baris baru ( newline )
\r Karakter carriage return ( ke awal baris )
\t Karakter tab horizontal
\v Karakter tab vertika
\\ Karakter \
\’ Karakter ‘
\” Karakter “
\? Karakter ?
\ooo Karakter yang nilai oktalnya adalah ooo ( 3 digit octal )
\xhh Karakter yang nilai heksadesimalnya adalah hh (2 digit
heksadesimal )

KEYWORDS dan IDENTIFIER

Dalam bahasa pemrograman, suatu program dibuat dari elemen-elemen sintaks


individual yang disebut token, yang memuat nama variable, konstanta, keyword,
operator dan tanda baca.

Contoh :
#include <iostream.h>
main()
{
int n=66;
cout<<n<<endl; // n sebagai variabel
return 0;
}

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 13


Keluarannya:
66

Program diatas memperlihatkan 15 token, yaitu


main, (, ), {, int, n, =, 66, ;, cout, <<, endl, return, 0 dan }
Token n adalah suatu variable
Token 66,0 adalah suatu konstanta
Token int, return dan endl adalah suatu keyword
Token = dan << adalah operator
Token(, ), {, ;, dan } adalah tanda baca
Baris pertama berisi suatu prepocessor directive yang bukan bagian sebenarnya
dari program

VARIABEL, DEKLARASI dan INISIALISASI

Variabel adalah symbol dari suatu besaran yang merepresentasikan suatu lokasi di
dalam memori komputer. Informasi yang tersimpan di dalam lokasi tersebut disebut
nilai variable. Untuk memperoleh nilai dari suatu variable digunakan pernyataan
penugasan ( assignment statement ), yang mempunyai sintaks sebagai berikut :
variable = ekspresi ;
Yang akan diolah terlebih dahulu adalah ekspresi, baru hasilnya dimasukkan
kedalam variable
Tanda “=” adalah operator penugasan.

Contoh :
#include <iostream.h>
main()
{
int n;
n=66; // sama juga jika ditulis int n=66;
cout<<n<<endl; // n sebagai variabel
cout<<’n’<<endl; // end sebagai karakter
return 0;
}
Keluarannya :
66
n
Deklarasi dari suatu variable adalah sebuah pernyataan yang memberikan
informasi tentang variable kepada compiler C++. Sintaksnya adalah type variable ;
dengan type adalah tipe data yang didukung oleh C++, beberapa contohnya yaitu:
Tipe Ukuran Jangkauan Nilai Jumlah
Data Memori Digit
(byte) Presisi
char 1 -128 hingga +127 -
Int 2 -32768 hingga +32767 -

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 14


Long 4 -2.147.438.648 hingga 2.147.438.647 -
float 4 3,4E-38 hingga 3,4E38 6-7
double 8 1.7E-308 hingga 1.7E308 15-16
Long 10 3.4E-4932 hingga 1.1E4932 19
double
NB : Untuk mengetahui ukuran memori dari suatu tipe digunakan fungsi
sizeof(tipe)
Tipe data dapat diubah ( type cast ), misalkan:
float x = 3.345;
int p = int(x);
maka nilai p adalah 3 ( terjadi truncating ).

Contoh Deklarasi dan Inisialisasi


int a,b,c;
int p = 55;
Dalam contoh, kita mendeklarasikan tiga variable yaitu variable a,b dan c namun
belum kita inisialisasi.
Sedangkan variable p kita inisialisasi ( diberikan nilai ).
Dalam C++, untuk dapat menggunakan suatu variable, variable tersebut minimal
kita deklarasikan terlebih dahulu. Apa yang terjadi, jika suatu variable telah
dideklarasikan namun belum kita inisialisasi lalu kita mencetak nilai variable
tersebut ?

Contoh :
#include <iostream.h>
main()
{
int n;
cout<<n<<endl; // n sebagai variabel
return 0;
}

Keluarannya:
18125

Darimana angka 18125 diperoleh ?


>> Jika variable tidak diinisialisai, namun nilai keluarannya diminta, maka compiler
dengan bijak akan menampilkan nilai acak yang nilainya tergantung dari jenis
compilernya.

KONSTANTA

1. Konstanta Oktal, digit yang digunakan 0-7


2. Konstanta Heksadesimal, digit yang digunakan 0-9, A-F
3. Konstanta Bernama
a. Menggunakan keyword const

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 15


Contoh : const float PI = 3.14152965;
Berbeda dengan variable, konstanta bernama tidak dapat diubah
jika telah diinisialisasi.
b. Menggunakan #define
Contoh : #define PI 3.14152965
Keuntungan menggunakan #define apabila dibandingkan dengan Const
adalah kecepatan kompilasi, karena sebelum kompilasi dilaksanakan,
kompiler pertama kali mencari symbol #define ( oleh sebab itu mengapa
# dikatakan prepocessor directive ) dan mengganti semua PI dengan
nilai 3.14152965.

Contoh 1:

Anda seorang programmer ditugaskan untuk menghitung arus listrik yang mengalir
pada tegangan 220 volt dengan daya listrik bervariasi 450 watt, 900 watt dan 1300
watt.
Algoritma : Menghitung arus Listrik
Kamus : voltase,watt, ampere : integer
voltase ← 220
Input(watt)
ampere ← watt/voltase
Output(ampere)

Buatlah Program menggunakan C++ dari Algoritma diatas


#Include <stdio.h>
Main()
{
//Deklarasi Konstanta
int voltase = 220;
Int watt, ampere;
cout << “Masukkan Daya listrik:”;
cin >> watt;
ampere=watt/voltase;
cout << ampere;
}
Hasilnya:
Jika daya 900 watt
Maka 900 dibagi 220 sama dengan 4.090 A.

Studi Kasus
Latihan 1:

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 16


Diketahui Y=9, G=7 dan V sama dengan Y dikalikan 1 dan ditambahkan G
berapakah V?

Latihan 2:

Diketahui : Namaku romeo, pacarku juliet, gajiku = 500000, gaji pacarku = 400000
Ditanyakan : gajiku dan gaji pacarku adalah?

Buatlah Program menggunakan C++ dari soal latihan 2 (gunakan #define untuk
mendefiniskan konstanta).

Latihan 3 :

Seorang anak SD hendak menghitung luas segiempat. Buatlah program


menggunakan C++ untuk membantu anak tersebut, dengan ketentuan:
Input : panjang dan lebar
Proses : Luas=Panjang x lebar
Output : Luas

Latihan 4 :

Seorang Ibu hendak menghitung jumlah uang belanja yang dihabiskan pada hari tu.
Daftar belanjanya adalah:
Beras 5 kg @ 1 kg = Rp. 7000
Daging ¼ kg @ 1 kg = Rp. 12000
Sayuran seharga Rp. 5000
Kentang ½ kg @ 1 kg = Rp. 4500
Buatlah program menggunakan C++ untuk membantu anak tersebut, dengan
ketentuan:
Input : Beras, sayuran, daging dan kentang.
Proses : ….
Output : Total Belanja

Latihan 5 :

Seorang anak SMP hendak menghitung luas segiempat dan keliling segiempat.
Buatlah program menggunakan C++ untuk membantu anak tersebut, dengan
ketentuan:
Input : Luas = ….
Proses : Keliling = ….
Output : Luas dan Keliling?

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 17


Latihan 6 :

Seorang guru SMU hendak menghitung total nilai NEM dan rata-ratanya. Jumlah
mata pelajaran = 6 terdiri dari; Bahasa Indonesia, Bahasa Inggris, Matematika,
Kimia, Fisika dan Biologi. Buatlah program menggunakan C++ untuk membantu
anak tersebut, dengan ketentuan:
Input : Total NEM = ….
Proses : Rata-rata NEM = ….
Output : Total NEM dan rata-rata NEM?

Latihan 7 :

Seorang murid sedang belajar matematika, menghitung koordinat titik.

Diketahui koordinat titik A(5,6), koordinat titik B(7,9). Ditanyakan koordinat titik
tengah dari titik A dan titik B. Buatlah program menggunakan C++ untuk
membantu murid tersebut, dengan ketentuan:
Input : ….
Proses : ….
Output : koordinat Titik tengah A dan B?

Sesi 3-4
Landasan Teori melalui pendekatan bahasa C++:
Operator Aritmatika
Operator Increment dan Decrement
Operator Bitwise
Operator Relasi
Operator Logika
Operator Kondisi

Operator adalah symbol yang biasa dilibatkan dalam program untuk melakukan
sesuatu operasi atau manipulasi.

Contoh : a=b+c*d/4
a, b, c, d  disebut operand
=, +, *, /  disebut operator

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 18


OPERATOR ARITMATIKA

Operator Deskripsi Contoh


+ Penjumlahan ( Add ) m+n
- Pengurangan ( Substract ) m–n
* Perkalian ( Multiply ) m*n
/ Pembagian ( Divide ) m/n
% Sisa Pembagian Integer ( Modulus ) m%n
- Negasi ( Negate ) -m
NB : Operator seperti operator negasi (-) disebut unary operator, karena
membutuhkan hanya satu buah operand

Contoh :
#include <iostream.h>
void main()
{
int m = 82, n = 26;
cout<<m<<” + “<<n<<” = “<<m+n<<endl;
cout<<m<<” – “<<n<<” = “<<m-n<<endl;
cout<<m<<” * “<<n<<” = “<<m*n<<endl;
cout<<m<<” / “<<n<<” = “<<m/n<<endl;
cout<<m<<” % “<<n<<” = “<<m%n<<endl;
cout<<”-“<<m<<” = “<<-m<<endl;
}
Keluarannya :
82 + 26 = 108
82 – 26 = 56
82 * 26 = 2132
82 / 26 = 3
82 % 26 = 4
-82 = -82
Karena tipe datanya adalah int, maka 82/26=3, supaya dapat merepresentasikan
nilai yang sebenarnya, gunakan tipe data float.

Cara lain penulisan dengan menggunakan operator aritmatika :


m=m+n  m += n
m=m–n  m -= n
m=m*n  m *= n
m=m/n  m /= n
m=m%n  m %= n

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 19


OPERATOR NAIK DAN TURUN ( INCREMENT DAN DECREMENT )

Operator increment  ++
Operator decrement  --

Contoh :
#include <iostream.h>
main()
{
int m = 44, n = 66;
cout<<”m = “<<m<<”, n = “<<n<<endl;
++m; --n;
cout<<”m = “<<m<<”, n = “<<n<<endl;
m++; n--;
cout<<”m = “<<m<<”, n = “<<n<<endl;
return 0;
}

Keluarannya :
m = 44, n = 66
m = 45, n = 65
m = 46, n = 64

Terlihat bahwa operator pre-increment dan post-increment memiliki akibat yang


sama, yaitu manambah nilai satu pada m dan memasukkan nilai tersebut kembali
ke m ( m = m+1). Hal yang sama juga terjadi pada operator pre-decrement dan
post-decrement yang memberikan akibat yang sama, yaitu mengurangi nilai satu
dari n ( n = n – 1).
Tetapi bila digunakan sebagai sub-ekspresi, operator post-increment dan pre-
increment menunjukkan hasil yang berbeda
Contoh :
#include <iostream.h>
main()
{
int m = 66, n ;
n = ++m;
cout<<”m = “<<m<<”, n = “<<n<<endl;
n = m++;
cout<<”m = “<<m<<”, n = “<<n<<endl;
cout<<”m = “<<m++<<endl;
cout<<”m = “<<m<<endl;
cout<<”m = “<<++m<<endl;
return 0;
}

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 20


Keluarannya :
m = 67, n = 67
m = 68, n = 67
m = 68
m = 69
m = 70

Penjelasan :
Dalam penugasan yang pertama, m adalah pre-increment, menaikkan nilainya
menjadi 67, yang selanjutnya dimasukkan ke n.
Dalam penugasan kedua, m adalah post-increment, sehingga 67 dimasukkan
dahulu ke n baru kemudian nilai m-nya dinaikkan, itu sebabnya mengapa nilai m =
68 dan n = 67.
Dalam penugasan ketiga, m adalah post-increment, sehingga nilai m ( = 68 )
ditampilkan dahulu ( ke layar ) baru kemudian nilai m dinaikkan menjadi 69.
Dalam penugasan keempat, m adalah pre-increment, sehingga nilai m dinaikkan
dahulu menjadi 70 baru kemudian ditampilkan ke layar.
Supaya lebih paham, perhatikan pula contoh dibawah.

Contoh :
#include <iostream.h>
main()
{
int m = 5, n;
n = ++m * --m;
cout<<”m = “<<m<<”, n = “<<n<<endl;
cout<<++m<<” “<<++m<<” “<<++m<<endl;
return 0;
}

Keluarannya :
m = 5, n = 25
876

Penjelasan :
Dalam penugasan untuk n, pertama kali m dinaikkan (++m) menjadi 6, kemudian
m diturunkan kembali menjadi 5, karena adanya –m. Sehingga nilai m sekarang
adalah 5 dan nilai m = 5 inilah yang dievaluasi pada saat penugasan perkalian
dilakukan.
Pada baris terakhir, ketiga sub-ekspresi dievaluasi dari kanan ke kiri.

OPERATOR BITWISE

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 21


Operator Deskripsi Contoh
<< Geser n bit ke kiri ( left shift ) m << n
>> Geser n bit ke kanan ( right shift ) m >> n
& Bitwise AND m&n
| Bitwise OR m|n
^ Bitwise XOR m^n
~ Bitwise NOT ~m
NB : Seluruh operator bitwise hanya bisa dikenakan pada operand bertipe data int
atau char

Berikut ini diberikan tabel kebenaran untuk operator logika


P = A operator B

AND OR
A B P A B P
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1

XOR
A B P
0 0 0
0 1 1
1 0 1
1 1 0

Note:
• A adalah Pernyataan 1
• B adalah pernyataan 2
• P adalah Hasil
• 1 mewakili True
• 0 mewakili False

Contoh :
#include <iostream.h>
void main()
{
int m = 82, n = 26;
cout<<m<<” << 2”<<” = “<<(m<<2)<<endl;
cout<<m<<” >> 2”<<” = “<<(m>>2)<<endl;

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 22


cout<<m<<” & “<<n<<” = “<<(m&n)<<endl;
cout<<m<<” | “<<n<<” = “<<(m|n)<<endl;
cout<<m<<” ^ “<<n<<” = “<<(m^n)<<endl;
cout<<”~”<<m<<” = “<<~m<<endl;
}

Keluarannya :
82 << 2 = 328
82 >> 2 = 20
82 & 26 = 18
82 | 26 = 90
82 ^ 26 = 72
~82 = 83

Penjelasan :
Nilai keluaran diatas, tergantung dari jenis compiler yang digunakan. Hasil diatas
merupakan keluaran dari compiler Turbo C++.
Pada Turbo C++ besar dari integer adalah 2 byte atau sama dengan 16 bit, untuk
mengetahuinya digunakan perintah cout<<sizeof(int)<<endl; // Untuk mengetahui
besar dari int
Maka :
8210 = 00000000010100102 dan
2610 = 00000000000110102
Sehingga :
82 << 2  00000001010010002 = 32810
82 >> 2  00000000000101002 = 2010
82 & 26  00000000010100102
00000000000110102
------------------------------------------ &

00000000000100102 = 1810
dan begitu juga untuk operasi OR dan XOR.
~82  digunakan 2’s complement, yaitu
8210 = 00000000010100102 lalu dinegasikan tiap bitnya menjadi
11111111101011012 kemudian LSB ditambah 1 menjadi
1111111110101110 = 6545410 nilai ini melebihi jangkauan
maksimum int yang berkisar di –32768 sampai 32767, sehingga nilai
yang keluar yaitu 83.

Cara lain penulisan dengan menggunakan operator bitwise :


m = m << n  m <<= n
m = m >> n  m >>= n
m=m&n  m &= n
m=m|n  m |= n

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 23


m=m^n  m ^= n

OPERATOR RELASI

Operator relasi digunakan untuk membandingkan dua buah nilai. Operator ini biasa
digunakan dalam instruksi percabangan.
Operator Deskripsi
== Sama dengan ( bukan assignment )
!= Tidak sama dengan
> Lebih besar
< Lebih kecil
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan

Contoh:
#include <iostream.h>
main()
{
int m = 5, n =7;
if(m == n) cout<<m<<” sama dengan ”<<n<<endl;
else if(m != n) cout<<m<<” tidak sama dengan ”<<n<<endl;
else if(m > n) cout<<m<<” lebih besar dari ”<<n<<endl;
else if(m < n) cout<<m<<” lebih kecil dari ”<<n<<endl;
return 0;
}

Keluarannya :
5 lebih kecil dari 7

OPERATOR LOGIKA

Operator logika digunakan untuk menghubungkan dua atau lebih ungkapan


menjadi sebuah ungkapan berkondisi.

Operator Deskripsi Contoh


&& logic AND m && n
|| logic OR m ||n
! logic NOT !m

Contoh :
#include <iostream.h>
void main()
{
int m = 166;
cout<<”(m>=0 && m<=150)  “<<(m>=0 && m<=150)<<endl;

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 24


cout<<”(m>=0 || m<=150)  “<<(m>=0 || m<=150)<<endl;
}

Keluarannya :
(m>=0 && m<=150)  0
(m>=0 || m<=150)  1

Penjelasan :
Hasil / keluaran dari operator logika adalah 0 dan 1.
0 jika keluarannya salah dan 1 jika keluarannya benar.

OPERATOR KONDISI

Operator kondisi digunakan untuk memperoleh nilai dari dua kemungkinan


ungkapan1 ? ungkapan2 : ungkapan3
Bila nilai ungkapan1 benar, maka nilainya sama dengan ungkapan2, bila tidak maka
nilainya sama dengan ungkapan3

Contoh :
#include <iostream.h>
main()
{
int m = 26, n = 82;
int min = m < n ? m : n;
cout<<”Bilangan terkecil adalah “<<min<<endl;
return 0;
}

Keluarannya :
Bilangan terkecil adalah 26

Operator relasi, logika dan kondisi akan banyak digunakan pada pernyataan
berkondisi

Materi Praktikum melalui pendekatan bahasa C++


• Pendeklarasian variable dan konstanta.
• prepocessor directive, Komentar, cout dan cin.
• Operator, Printf, scanf dan getch, IF
Dibawah ini adalah contoh soal menggunakan token diatas.

Contoh:
//prepocessor directive
#include <iostream.h>
#include <conio.h>

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 25


main()
{
//deklarasi variable
int age;
char descrip[50];
// pencetakkan interface user ke monitor
printf (“%s”,Masukkan Umur anda:”)
//pemindahan isi variable
scanf(“%i”,&age);
//pengendalian nilai berdasarkan kondisi
if(age<=5){
cout<<”Balita”;
}else{
cout<<”Anak-anak”;
}
//menahan layar
getch();
//mengembalikan proses
return 0;
}

Latihan 8:
Diketahui sebuah algoritma dibawah ini, Buatlah program menggunakan C++:
(Gunakan dengan operator increment atau decrement.)

Kamus data: F, G, H : integer


Input(F,G,H)
F ← F + 10
G ←G – 1
H ←G
H ←H + 1
Output (F, G, H)

Latihan 9:
Diketahui sebuah algoritma dibawah ini, Buatlah program menggunakan C++:

Kamus : Z : Integer
Algoritma:
Z ←Z + 1
R ←I
Z ←R * 5
Output (R)

Latihan 10:
Diketahui sebuah algoritma dibawah ini, Buatlah program menggunakan C++:

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 26


(gunakan struktur kendali IF lihat bentuk dari pernyataan IF pada bab pernyataan)

Kamus : X : Integer
Algoritma:
X ←5
IF X <> 5
X ←R * 5
ELSE
R ←X
Output (R)

Latihan 11:
Buatlah program dengan c++ untuk menentukan tingkatan umur (gunakan if):
Umur 0 s.d 5 : Balita
Umur 6 s.d 12 : Anak-anak
Umur 13 s.d 17 : Remaja
Umur > 18 : Dewasa

Tugas 2 :
Buatlah Program dengan c++ untuk menentukan bilangan ganjil dan genap

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 27


BAB II- PENCABANGAN DAN PENGULANGAN
• Pencabangan : adalah instruksi yang dipakai untuk memilih satu aksi dari
beberapa kemungkinan aksi berdasarkan suatu syarat

• Pencabangan jenis 1.1 (if-then):


Suatu aksi hanya dilakukan bila persyaratan atau kondisi tertentu
dipenuhi. jika kondisi bernilai benar kerjakan aksi jika salah, tidak ada aksi
apapun yang dikerjakan.

• Notasi algoritmik :
if Syarat then
Aksi {True}
endif {False}

• Flow Chart:

False
Syar
at

Aksi
True

Exit

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 28


• Pencabangan jenis 1.2 (if-then-else):
Apabila syarat dipenuhi maka aksi-1 dilaksanakan bila syarat tidak
dipenuhi maka aksi- 2 yang dilaksanakan.

• Notasi algoritmik :
IF syarat THEN
aksi-1 {true}
ELSE
aksi-2 {false}
ENDIF

• Flow Chart:

False
Syar
at

Aksi-1 Aksi-2

True

Exit

• Pencabangan jenis 2 (Case-of):

Perulangan adalah instruksi yang dapat mengulang sederetan Instruksi


secara berulang-ulang sesuai persyaratan yang ditetapkan.
Struktur instruksi perulangan pada dasarnya terdiri atas :
• Kondisi perulangan; suatu kondisi yang harus dipenuhi agar
perulangan dapat terjadi.
• Badan (body) perulangan; deretan instruksi yang akan diulang-ulang
pelaksanaannya.

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 29


• Pencacah (counter) perulangan; suatu variabel yang nilainya harus
berubah agar perulangan dapat terjadi dan pada akhirnya membatasi
jumlah perulangan yang dapat dilaksanakan.BB

Jenis perulangan:
• For-next
• While-do
• Repeat-until

Bentuk umum :

• Pengulangan For

For var← awal to akhir


…………….
instruksi-instruksi
……………..
Next var
For I← 1 to
4

instruksi

Next i

Makna dari bentuk perulangan di atas adalah ulangi instruksi tersebut


berdasarkan variable perulangan mulai dari nilai awal hingga nilai akhir.
Dari gambar di atas instruksi akan dikerjakan sebanyak 4 kali, karena
perulangan dimulai dari 1 sampai 4.
• Pengulangan While-do

Bentuk umum :
While {kondisi} do
…………..
instruksi-instruksi
…………..
Endwhile
False
Kon
disi
AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 30
True
Loop
Dari bentuk pengulangan di atas instruksi akan dilaksanakan berulang kali
selama kondisi bernilai TRUE , jika FALSE maka badan pengulangan tidak
akan dilaksanakan yang berarti pengulangan selesai.

Contoh:
Algoritma Cetak_Angka
{mencetak 1, 2, .., 8 ke piranti keluaran}
Deklarasi :
K: integer
Deskripsi :
K 1 {inisialisasi}
while k <= 8 do
write (k)
k← k + 1
endwhile

• Pengulangan Repeat-until
Bentuk umum :
Repeat
……….
instruksi
……….
Until ( kondisi )

Intruksi-
instruksi

Kon
disi False
True

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 31


Intruksi ( atau runtunan instruksi) akan dilaksanakan berulang kali sampai
kondisi bernilai true, jika kondisi bernilai false maka pengulangan masih
terus dilakukan.

Contoh:
Algoritma Cetak_Angka
{mencetak 1, 2, .., 8 ke piranti keluaran}
Deklarasi :
K: integer
Deskripsi :
K 1 {inisialisasi}
repeat
write (k)
k← k+1
until k > 8

Sesi 5 -
12 Landasan Teori melalui pendekatan bahasa C++:
Pernyataan (Statement)
Pernyataan Ungkapan
Pernyataan Deklarasi
Pernyataan Kosong
Pernyataan Majemuk
Pernyataan berlabel

Pernyataan digunakan untuk melakukan suatu tindakan, yaitu

PERNYATAAN UNGKAPAN
Pernyataan ini merupakan bentuk pernyataan yang paling sering digunakan.
Pernyataan ini diakhiri dengan semicolon “ ; “.
Contoh : var = 166;
var++;

PERNYATAAN DEKLARASI
Untuk menggunakan suatu variable minimal variable tersebut dideklarasikan
terlabih dahulu Contoh : int var;
Merupakan contoh deklarasi sebuah variable var dengan tipe data integer (int).

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 32


PERNYATAAN KOSONG
Pernyataan ini tidak melaksanakan apapun.
Contoh : while(ada);

PERNYATAAN MAJEMUK
Merupakan sejumlah pernyataan yang berada di dalam sebuah blok { }
Contoh : for(var = 0 ; var <10 ; var++)
{
nilai1 = 100;
if(!nilai2) nilai2 = 0;
nilai 3 = nilai1 + nilai2;
}

PERNYATAAN BERLABEL
Pernyataan goto, diperlukan untuk melakukan suatu lompatan ke suatu pernyataan
berlabel yang ditandai dengan tanda “ : “.
Contoh : goto bawah;
pernyataan1;
pernyataan2;
: bawah pernyataan 3;
Pada contoh diatas, pada saat goto ditemukan maka program akan melompat
pernyataan berlabel bawah dan melakukan pernyataan 3.

PERNYATAAN KONDISI ( CONDITIONAL EXPRESSION )


Pertanyaan Kondisi dibagi menjadi,
1. Pernyataan if
Digunakan dalam pengambilan keputusan

Bentuk umum:
if(kondisi) pernyataan1 ;
else pernyataan2;
Pernyataan1 dilaksanakan jika dan hanya jika kondisi yang diinginkan
terpenuhi, jika tidak, lakukan pernyataan2.
Jika anda tidak mempergunakan pernyataan else program tidak akan error,
namun jika anda mempergunakan pernyataan else tanpa didahului pernyataan
if, maka program akan error.
Jika pernyataan1 atau pernyataan2 hanya terdiri dari satu baris, maka tanda { }
tidak diperlukan, namun jika lebih maka diperlukan.
Bentuknya menjadi :
if(kondisi)

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 33


{
pernyataan1;
pernyataan1a;
pernyataan1b;
}
else
{
pernyataan2;
pernyataan2a;
pernyataan2b;
}

Contoh :
#include <iostream.h>
void main()
{
int m = 166;
if(m == 0)cout<<”Nilainya sama dengan nol\n”;
else
{
cout<<”Nilainya tidak sama dengan nol\n”;
cout<<”Nilainya sama dengan “<<m<<endl;
}
}

Selain dari if … else, juga dikenal bentuk if … else if. Adapun perbedaannya
diilustrasikan oleh dua contoh dibawah ini.

Contoh 1 :
#include <iostream.h>
void main()
{
int m = 166;
if(m > 1000) cout<<m<<” lebih besar dari 1000\n”;
if(m > 100) cout<<m<<” lebih besar dari 100\n”;
if(m > 10) cout<<m<<” lebih besar dari 10\n”;
}

Keluarannya :
166 lebih besar dari 100
166 lebih besar dari 10

Contoh 2 :
#include <iostream.h>
void main()
{
int m = 166;

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 34


if(m > 1000) cout<<m<<” lebih besar dari 1000\n”;
else if(m > 100) cout<<m<<” lebih besar dari 100\n”;
else if(m > 10) cout<<m<<” lebih besar dari 10\n”;
}

Keluarannya :
166 lebih besar dari 100

Mengapa ? Karena contoh 2 sama saja jika ditulis seperti dibawah ini

#include <iostream.h>
void main()
{
int m = 166;
if(m > 1000) cout<<m<<" lebih besar dari 1000\n";
else
{
if(m > 100) cout<<m<<" lebih besar dari 100\n";
else if(m > 10) cout<<m<<" lebih besar dari 10\n";
}
}

Contoh diatas disebut juga nested conditional

2. Pernyataan switch
Pernyataan if…else if jamak dapat dibangun dengan pernyataan switch.
Bentuk umumnya adalah sebagai berikut.

switch(ekspresi)
{
case konstanta1 : pernyataan1;
case konstanta2 : pernyataan2;
case konstanta3 : pernyataan3;
:
:
case konstantaN : pernyataanN;
default : pernyataanlain;
}

Hal – hal yang perlu diperhatikan adalah :


1. Dibelakang keyword case harus diikuti oleh sebuah konstanta, tidak
boleh diikuti oleh ekspresi ataupun variable.
2. Konstanta yang digunakan bertipe int atau char
3. Jika bentuknya seperti diatas maka apabila ekspresi sesuai dengan
konstanta2 maka pernyataan2, pernyataan3 sampai dengan

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 35


pernyataanlain dieksekusi. Untuk mencegah hal tersebut, gunakan
keyword break;. Jika keyword break digunakan maka setelah
pernyataan2 dieksekusi program langsung keluar dari pernyataan
switch. Selain digunakan dalam switch, keyword break banyak
digunakan untuk keluar dari pernyataan yang berulang ( looping ).
4. pernyataanlain dieksekusi jika konstanta1 sampai konstantaN tidak ada
yang memenuhi ekspresi.

Contoh :
// Program untuk melihat nilai akhir test
// Nilai A jika nilai diatas 80, B jika 70<= nilai <80
// C jika 50<= nilai <70, D jika 30<=nilai <50
// E jika nilai < 30
#include <iostream.h>
void main()
{
int nilai;
cout<<”Masukkan nilai test : “;
cin>>nilai;
switch(nilai/10)
{
case 10:
case 9:
case 8:cout<<’A’<<endl;break;
case 7:cout<<’B’<<endl;break;
case 6:
case 5:cout<<’C’<<endl;break;
case 4:
case 3:cout<<’D’<<endl;break;
case 2:
case 1:
case 0:cout<<’E’<<endl;break;
default:cout<<”Salah, nilai diluar jangkauan.\n”;
}
}

Keluaran :
Masukkan nilai test : 45
D
Masukkan nilai test : 450
Salah, nilai diluar jangkauan.
Masukkan nilai test : nilai_test
Salah, nilai diluar jangkauan.

Ket : 45, 450 dan nilai_test adalah hasil input dari user

3. Pernyataan while
Digunakan untuk pengambilan keputusan dan looping.

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 36


Bentuk :
While(kondisi)
{
pernyataan
}

Jika kondisi tidak terpenuhi, maka pernyataan tidak akan dieksekusi.

Contoh:
#include <conio.h>
#include <iostream.h>
#define TINGGI 5
#define LEBAR 10
// Program menggambarkan karakter khusus pada sebuah
// koordinat yang ditentukan
void main()
{
char matrix[TINGGI][LEBAR];
int x,y;
for(y=0;y<TINGGI;y++)
for(x=0;x<LEBAR;x++)matrix[y][x]='.';
cout<<"Ketik koordinat dalam bentuk x y(4 2).\n";
cout<<"Gunakan bilangan negatif untuk berhenti.\n";

while(x>=0 && y>=0)


{
for(y=0;y<TINGGI;y++)
{
for(x=0;x<LEBAR;x++)
cout<<matrix[y][x];
cout<<"\n\n";
}
cout<<"Koordinat : ";
cin>>x>>y;
matrix[y-1][x-1]='\xBO';
}
getch();
}

Penjelasan :
Program ini adalah program menggambar karakter [] jika dicompile di
Turbo C++ atau mengambar ♂ jika dicompile di Borland C++.
( ditunjukkan oleh karakter ’xBO’ ).

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 37


Karena adanya pernyataan while(x>=0 && y>=0), maka program
akan langsung mengeksekusi pernyataan
cout<<"Koordinat : ";
cin>>x>>y;
matrix[y-1][x-1]='\xBO';
jika user memasukkan bilangan negatif.
Pada program diatas terdapat fungsi getch(). Gunanya adalah untuk
memberhentikan keluaran program sampai user menekan tombol
keyboard. Untuk menggunakannya, file conio.h harus diinclude.

4. Pernyataan do…while
Pernyataan do…while mirip seperti pernyataan while, hanya saja pada do…

while pernyataan yang terdapat didalamnya minimal akan sekali dieksekusi.

Bentuk :

do{

pernyataan;
} while(kondisi);

Terlihat, walaupun kondisi tidak terpenuhi, maka pernyataan minimal akan

dieksekusi sekali.

Contoh :

#include <iostream.h>
#include <conio.h>
#include <math.h>
// Program konversi bilangan desimal ke biner
void main()
{
int p,n,i=0;
cout<<"Masukkan bilangan desimal : ";
cin>>p;

double A[100];
do
{
A[++i]=p%2;
p=p/2;
floor(p);
} while (p>1);
cout<<"Nilai binernya : ";
cout<<p;

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 38


for(n=i;n>=1;n--)
{
cout<<A[n];
}

getch();
}

Penjelasan :
Coba anda masukkan bilangan negatif.
Itulah letak kesalahan program ini ( sekaligus untuk menunjukkan sifat dari
do…while ) Jika anda memasukkan bilangan positif, maka program ini akan
menghasilkan nilai biner yang bersesuaian dengan nilai desimal yang anda
masukkan.

5. Pernyataan for
Pernyataan for digunakan untuk melakukan looping. Pada umumnya looping
yang dilakukan oleh for telah diketahui batas awal, syarat looping dan
perubahannya.

Bentuk :
for( inisialisasi ; kondisi ; perubahan)
{
pernyataan;
}

Selama kondisi terpenuhi, maka pernyataan akan terus dieksekusi. Bila


pernyataan hanya terdiri atas satu baris pernyataan, maka tanda kurung { }
tidak diperlukan.

Contoh :
//Program mencetak angka 1-100
#include <iostream.h>
void main()
{
for(int x=1 ; x<=100 ; x++) cout<<x<<endl;
}

Bagaimana jika program diatas diubah menjadi

#include <iostream.h>
void main()
{
for(int x=1 ; ;x++) cout<<x<<endl;
}

Program diatas akan menampilkan bilangan yang banyaknya tak terhingga


sehingga dapat membuat komputer anda berhenti bekerja. Contoh diatas juga
merupakan prinsip membuat bom program ( contohnya : bom mail )

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 39


Pernyataan for dapat berada di dalam pernyataan for lainnya yang biasa disebut
nested for

Contoh :
// Program menghasilkan segitiga pascal
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>

main()
{
unsigned int n,a,b,x,s[100],p[100];
cout<<"Masukkan nilai n: "; cin>>n;

for(a=0,x=0;a<=n;a++,x+=2)
{
cout<<setw(3*n-x);
s[a]=1;
p[a]=1;
for(b=0;b<=a;b++)
{

if (b<1||b==a) cout<<"1"<<setw(4);
else
{
s[b]=p[b];
p[b]=s[b-1]+s[b];
cout<<p[b]<<setw(4);
}

cout<<endl;
}
getch();
return 0;

PERNYATAAN BREAK

Pernyataan break akan selalu terlihat digunakan bila menggunakan pernyataan


switch. Pernyataan ini juga digunakan dalam loop. Bila pernyataan ini dieksekusi,
maka akan mengkakhiri loop dan akan menghentikan ierasi pada saat tersebut.

PERNYATAAN CONTINUE

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 40


Pernyataan continue digunakan untuk pergi ke bagian awal dari blok loop untuk
memulai iterasi berikutnya.

Contoh :
#include <iostream.h>
void main()
{
int n;
for(;;)
{
cout<<”Masukkan bilangan integer : “; cin>>n;
if(n % 2 == 0) continue;
else if(n % 5 == 0) break;
cout<<”\tLanjutkan loop berikutnya.\n”;
}
cout<<”Akhiri Loop.\n”;
}

Keluarannya :
Masukkan bilangan integer : 9
Lanjutkan loop berikutnya
Masukkan bilangan integer : 8
Masukkan bilangan integer : 5
Akhiri Loop

Materi Praktikum melalui pendekatan bahasa C++


• Pernyataan (Statement)
• Penyeleksian kondisi : If Tunggal, If – Else, If bersarang(nested
IF), Switch Tunggal, Switch Bersarang
• Penyeleksian kondisi berulang (looping) : For, While, While-Do, Loop
didalam loop, Continue dan Break
• Operator

Latihan 12:
Buatlah program degan c++ dari algoritma sbb (gunakan IF tunggal dan switch):
Input : 2 bilangan integer (x dan y)
Proses : jika x> y maka tampilkan tulisan “x lebih besar dari y”
jika y> x maka tampilkan tulisan “y lebih besar dari x”
Output :sama dengan proses

Latihan 13:
Buatlah program degan c++ dari algoritma sbb (gunakan IF else dan switch):
Input : 3 sisi segitiga (s1, s2, s3)
Proses : jika s1= s2 atau s1 = s3 atau s3 = s2 tampilkan tulisan : “Segitiga sama kaki”

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 41


jika s1= s2 dan s2 = s3 dan s1= s3 tampilkan tulisan : “Segitiga sama sisi”
jika s1≠ s2 dan s2 ≠ s3 dan s1≠ s3 tampilkan tulisan : “Segitiga sembarang”
Output:sama dengan proses

Latihan 14:
Taxi menetapkan argonya berdasarkan kilometer. Jika kilometer yang ditempuh
kurang dari 7 km harga per km nya adalah Rp. 3000. Jika lebih dari 7 km harga per
km nya adalah Rp.2000. Buatlah programnya.
Buatlah program degan c++ dari algoritma sbb (gunakan IF else dan switch):

Latihan 15:
Sistem kalender yang sekarang kita pakai adalah system kalender Gregorian yang
ditemukan oleh Pope Gregory XIII pada tahun 1852. Menurut Gregorian, tahun
kabisat adalah:
Tahun yang angkanya habis di bagi 4, kecuali tahun abad.
Tahun abad yang merupakan tahun kabisat adalah tahun yang habis dibagi 400
Catatan : tahun abad adalah tahun yang akhiranya 000 contoh 1000, 1900,
1800,2000, dll.

Jadi menurut Gregorian tahun 2000, 1980, 1984 adalah tahun kabisat sedangkan
tahun 1900, 1700 bukan tahun kabisat karena tidak habis dibagi 400.

Buatlah programnya dengan c++ (gunakan IF else dan switch).

Latihan 16:
Pertandingan Sepak bola memiliki aturan sebagai berikut:

Main Ke-1 Main Ke-2 Skor


Menang(M) Menang(M) 2
Menang(M) Kalah(K) 1
Kalah(K) Kalah(K) 1
Kalah(K) Kalah(K) 0

Aturan Medali : Jika skor = 2 maka tampilkan tulisan “Medali Emas”


Jika skor = 1 (K)(M) maka tampilkan tulisan “Medali Perak”
Jika skor = 1 (M)(K) maka tampilkan tulisan “Medali Perunggu”
Jika skor = 0 maka tampilkan tulisan “Kalah nich yee”
Buatlah programnya dengan c++ (gunakan IF else dan switch).
Input : Main ke 1, Main ke 2
Proses : Lihat table diatas dan aturan medali
Output : sama dengan proses

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 42


Tugas 3: Sesi 4

Biro tour “lpkia.ac.id” membuat aturan untuk wisata group sebagai berikut:
Tujuan Kode Batas Min perserta Biaya/ Peserta
Pangandaran pa 100 Rp. 150.00
Borobudur bo 85 Rp. 100.000
Taman Mini tm 50 Rp. 80.000

Buatlah Algoritma dan programnya dengan c++.


Input : Kode Tujuan, Jumlah Peserta
Proses : lihat table
Jika jumlah peserta dibawah batas minimal maka harus membayar
extra 15% dari biaya diatas
Total harga jika batas min terpenuhi = ….
Total harga jika batas min tidak terpenuhi = ….
Output : Total harga

Latihan 17:
Buatlah program untuk menampilkan deretan angka dari 1 s.d 10 (gunakan
Penyeleksian kondisi berulang (looping) : For, While, While-Do)

Latihan 18:
Buatlah program untuk menampilkan deretan angka bilangan ganjil dan genap dari
1 s.d 10 (gunakan Penyeleksian kondisi berulang (looping) : For, While, While-Do)

Latihan 19:
Buatlah program untuk menampilkan deretan angka 1 s.d 100 dan carilah angka 9
diantara deretan tersebut?

Latihan 20:
Buatlah program untuk menghitung berapakah total nilai rupiah yang harus
disiapkan oleh juru bayar pada saat ia melakukan proses penggajian. Asumsikan
bahwa data yang akan diinput dari keyboard adalah nama karyawan dan nilai
gajinya bersihnya dimana jumlah karyawan-nya ada 10 orang. (gunakan
Penyeleksian kondisi berulang (looping) : For, While, While-Do)

BAB III-ARRAY (LARIK)


Array adalah kumpulan data-data beripe sama dan menggunakan nama yang sama.
Dengan menggunakan array, sejumlah variabel dapat memakai nama yang sama.
Antara satu variabel dengan variabel yang lain di dalam array dibedakan
berdasarkan subscript. Sebuah subscript berupa bilangan didalam tanda kurung
siku. Melalui subscript inilah masing-masing elemen array dapat diakses. Nilai
subscribe pertama secara default adalah 0.

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 43


Sesi 13 -
14 Landasan Teori melalui pendekatan bahasa C++:
Array
String
Pointer

C++ tidak mengecek array. Bila anda menyatakan int x[10], ini artinya 10 elemen
yang dimulai dari 0. Karena itu elemen terakhir array adalah x[9]. Bila anda salah
mereferensikannya dengan x[10], anda akan mendapatkan harga yang tidak
terpakai. Akan lebih buruk lagi jika anda memberikan harga ke x[10], yang tidak
dapat diterima.

1. Representasi Array
Misalkan kita memiliki sekumpulan data ujian seorang siswa, ujian pertama
bernilai 90, kemudian 95,78,85. Sekarang kita ingin menyusunnya sebagai
suatu data kumpulan ujian seorang siswa. Dalam array kita menyusunnya
sebagai berikut

ujian[0] = 90;
ujian[1] = 95;
ujian[2] = 78;
ujian[3] = 85;

Perhatikan :
• Tanda kurung [ ] digunakan untuk menunjukkan elemen array
• Perhitungan elemen array dimulai dari 0, bukan 1

Empat pernyataan diatas memberikan nilai kepada array ujian. Tetapi


sebelum kita memberikan nilai kepada array, kita harus mendeklarasikannya
terlebih dahulu, yaitu :

int ujian[4];

Perhatikan bahwa nilai 4 yang berada didalam tanda kurung menujukkan


jumlah elemen array, bukan menunjukkan elemen array yang ke-4. Jadi
elemen array ujian dimulai dari angka 0 sampai 3.
Pemrogram juga dapat menginisialisasi array sekaligus mendeklarasikannya,
sebagai contoh :

int ujian[4] = {90,95,78,85};

Elemen terakhir dari array diisi dengan karakter ‘\0’. Karakter ini memberitahu
kompiler bahwa akhir dari elemen array telah dicapai. Walaupun pemrogram
tidak dapat melihat karakter ini secara eksplisit, namun kompiler mengetahui
dan membutuhkannya.
Sekarang kita akan membuat daftar beberapa nama pahlawan di Indonesia

char pahlawan[3][15] ;
char pahlawan[0][15] = “Soekarno”;
char pahlawan[1][15] = “Diponegoro”;

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 44


char pahlawan[2][15] = “Soedirman”;

Array diatas terlihat berbeda denga contoh array pertama kita. Perhatikan
bahwa pada array pahlawan memilii dua buah tanda kurung [ ][ ]. Array seperti
itu disebut array dua dimensi. Tanda kurung pertama menyatakan total elemen
yang dapt dimiliki oleh array pahlawan dan tanda kurung kedua menyatakan
total elemen yang dapat dimiliki setiap elemen array pahlawan. Dalam contoh
diatas, tanda kurung kedua menyatakan karakter yang menyatakan nama
pahlawan.

2. Menghitung Jumlah Elemen Array


Karena fungsi sizeof() mengembalikan jumlah byte yang sesuai dengan
argumennya, maka operator tersebut dapat digunakan untuk menemukan
jumlah elemen array, misalnya

int array[ ] = {26,7,82,166};


cout<<sizeof(array)/sizeof(int);

akan mengembalikan nilai 4, yaitu sama dengan jumlah elemen yang dimiliki
array array.

3. Melewatkan Array Sebagai Argumen Fungsi


Array dapat dikirim dan dikembalikan oleh fungsi Pada saat array dikirim ke
dalam fungsi, nilai aktualnya dapat dimanipulasi

Contoh :
#include <iostream.h>
void ubah(int x[]);
void main()
{
int ujian[] = {90,95,78,85};
ubah(ujian);
cout<<" Elemen kedua dari array ujian adalah
"<<ujian[1]<<endl;
}

void ubah(int x[])


{
x[1] = 100;
}

Keluarannya : Elemen kedua dari array ujian adalah 100

POINTER

Pointer adalah variable yang berisi alamat memori variable lain dan sevara tidak
langsung menunjuk ke variable tersebut.
Analoginya – sebagai contoh – Andi berteman dengan Budi, lalu anda ingin
mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak
mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah
keluarga Budi, maka pertama-tama anda pergi kerumah Andi, misalnya dirumah no

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 45


8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi
ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah
keluarga yang dimiliki Budi yaitu lima orang ( misalkan ).
Dalam contoh diatas, Andi bertindak sebagai pointer. Andi tidak memberitahukan
jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821
( alamat Budi ) itulah anda mengetahui jumlah keluarga Budi.
Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan
symbol *, maka hubungan analogi diatas adalah:

Nama Alamat Isi


Andi 8321 9821 = &Budi
Budi 9821 5 = *(&Budi)

Dalam bentuk pointer, ditulis :


Andi = &Budi; // baris 1
Budi = *(&Budi); // baris 2

Subtitusi pernyataan di baris 2 :


Andi = *Andi;

Contoh program yang menggambarkan hal tersebut :


#include <iostream.h>
void main()
{
int *Andi; // Andi sebagai pointer
int Budi = 5; // Budi bukan pointer, perhatikan
perbedaan pada *
Andi = &Budi // Isi dari Andi yaitu alamat Budi
cout<<”Isi alamat memori Andi : “<<Andi<<endl;
cout<<”Isi alamat memori Budi : “<<Budi<<endl;
cout<<”Isi alamat memori Budi : “<<*Andi<<endl;
cout<<”Alamat memori Andi : “<<&Andi<<endl;
cout<<”Alamat memori Budi :”<<&Budi<<endl;
}

Keluarannya :
Isi alamat memori Andi : 0x6da72448
Isi alamat memori Budi : 5
Isi alamat memori Budi : 5
Alamat memori Andi : 0x6da7244a
Alamat memori Budi : 0x6da72448

Penjelasan :
Isi alamat memori Andi adalah alamat memori Budi, yaitu 0x6da72448
( alamat ini berbeda-beda tergantung dari komputernya dan ditulis dalam
bentuk hexadesimal).
Sedangkan isi alamat memori Budi adalah 5. Cara mengakses isi dari alamat
Budi ada dua cara, yaitu mengakses variabel Budi dan mengakses isi dari
pointer Andi (*Andi). *Andi dapat juga disebut “isi dari alamat memori yang

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 46


ditunjuk oleh Andi”. Karena alamat memori yang ditunjuk oleh Andi adalah
alamat memori Budi, maka dapat dikatakan “isi dari alamat memori Budi”.

1. Pointer - Array
Dalam bab sebelumnya kita telah membahas array, sekarang kita akan melihat
bagaimana data disimpan di memori dalam sebuah array.

Contoh :
#include <iostream.h>
void main()
{
int n;
int array[4] = {10,20,30,40};
for(n=0;n<4;n++)
{
cout<<”Array[“<<n<<”] = “<<array[n]<<endl;
cout<<”\tMenggunakan pointer = “<<*&array[n]<<endl;
cout<<”\tDisimpan dalam “<<&array[n]<<endl;
}
}

Keluarannya :
Array[0] = 10
Menggunakan pointer = 10
Disimpan dalam 0xdb72408
Array[1] = 20
Menggunakan pointer = 20
Disimpan dalam 0xdb7240a
Array[2] = 30
Menggunakan pointer = 30
Disimpan dalam 0xdb7240c
Array[3] = 40
Menggunakan pointer = 40
Disimpan dalam 0xdb7240e

Penjelasan :
Seperti yang anda lihat, setiap array disimpan dalam 2 byte memori karena
kita menggunakan tipe data integer. Perhatikan pula penggunaan pointer
dalam pengaksesan nilai setiap elemen array dan pengaksesan alamat setiap
array.

• Alamat setiap elemen array dapat diperoleh dengan cara

&array[n] atau array+n

• Isi dari setiap elemen array dapat diperoleh dengan cara

array[n] atau *(array+n)

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 47


Dibawah ini adalah contoh pengaksesan memori dan isi memori dengan
menggunakan cara kedua

Contoh :
#include <iostream.h>
void main()
{
int n;
int array[4] = {10,20,30,40};
for(n=0;n<4;n++)
{
cout<<”Array[“<<n<<”] = “<<array[n]<<endl;
cout<<”\tMenggunakan pointer = “<<*(array+n)<<endl;
cout<<”\tDisimpan dalam “<<array+n<<endl;
}
}

Keluarannya :
Array[0] = 10
Menggunakan pointer = 10
Disimpan dalam 0xdb72408
Array[1] = 20
Menggunakan pointer = 20
Disimpan dalam 0xdb7240a
Array[2] = 30
Menggunakan pointer = 30
Disimpan dalam 0xdb7240c
Array[3] = 40
Menggunakan pointer = 40
Disimpan dalam 0xdb7240e

Mengapa hasil antara dua contoh diatas sama namun sintaksnya berbeda ?
Karena array itu sebenarnya telah menunjuk ke alamat memori setiap
elemennya, sehingga untuk mengetahui alamat memori setiap elemen array
cukup dengan array + n dengan n bilangan bulat ( integer ).

2. Pointer - String
String merupakan bentuk khusus dari array. Oleh karena itu operasi
pointer-array tidak jauh berbeda dengan operasi pointer-string
Contoh :
#include <iostream.h>
void main()
{
char nama[5] = “Andi”;
cout<<”Nama awal : “<<nama<<endl;
char *ptr;
ptr = nama;
*(ptr+3) = ‘y’;
cout<<”Nama menjadi : “<<nama<<endl;
}

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 48


Keluarannya :
Nama awal : Andi
Nama menjadi : Andy

Jadi :
• String adalah array (susunan) dari karakter-karakter
• String dapat diakses dan dimanipulasi lewat pointer
• Alamat awal dari string dapat diperoleh dari namanya

3. Pointer Sebagai Argumen String


Jika pointer dikirim sebagai argument, maka nilai aktualnya dapat dimodifikasi.
Contoh :
#include <iostream.h>
void ubah(char *);
void main()
{
char *ptr,nama[5] = “Andi”;
ptr = nama; // ptr sebagai pointer ke variable nama
cout<<”Nama awal : “<<nama<<endl;
ubah(ptr);
cout<<”Nama menjadi : “<<nama<<endl;
}

void ubah(char *x)


{
*(x+3) = ‘y’;
}

Keluarannya :
Nama awal : Andi
Nama menjadi : Andy

4. Alias
Alias adalah nama lain dari suatu variable. Jika suatu perubaha terjadi pada
variable alias maka akan berpengaruh kepada variable asli dan begitu juga
sebaliknya.
Contoh :
#include <iostream.h>
void main()
{
int uang =10000;
int &duit = uang;
cout<<”Nilai uang Rp.“<<uang<<endl;
cout<<”Nilai duit Rp.“<<duit<<endl;
uang = 9000;
cout<<”Uang dibelikan es krim Rp.1000, nilainya menjadi
Rp.“<<uang<<endl;
cout<<”Nilai duit juga berubah menjadi Rp.“<<duit<<endl;
}

Keluarannya :

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 49


Nilai uang Rp.10000
Nilai duit Rp.10000
Uang dibelikan es krim Rp.1000, nilainya menjadi Rp.9000
Nilai duit juga berubah menjadi Rp.9000

Penjelasan :
Perubahan pada uang menyebabkan perubahan pada duit karena duit
memiliki alamat memori yang sama dengan uang. Jadi jika isi dari alamat
memori uang atau duit berubah, maka nilai variable duit atau uang juga akan
ikut berubah.

5. Argumen Baris Perintah


Seringkali kita menggunakan perintah edit file.txt pada DOS, atau perintah vi
file.txt pada Unix. Yang dimaksud dengan argumen baris perintah yaitu file.txt.
Hal seperti itu dapat dibuat dengan menggunakan C++ dengan menyertakan
argumen berikut pada fungsi main()
void main(int argc, char *argv[])
{

}

atau

main(int argc, char *argv[])


{

return 0;
}

Keterangan :
• Argc : Beisi jumlah parameter baris ditambah 1
• Argv : Berisi daftar nama argumen dan program, dengan rincian
sebagai berikut :
• argv[0] menunjuk nama program, lengkap dengan alamat path
• argv[1] menunjuk argumen pertama ( kalau ada )
• argv[n[ menunjuk argumen ke-n ( kalau ada)

Contoh :
// beri nama tes.cpp
#include<iostream.h>
void main(int argc, char *argv[])
{
for(int a=0;a<argc;a++)cout<<”argv[“<<a<<”] = “<<argv[a]<<endl;
}

Penjelasan :
Setelah dicompile dan di link akan muncul file tes.exe, misalkan anda simpan
di d:\tes.exe
Buka command prompt, pindah ke direktori d:\ ketikkan
Tes argumen1 argument2 argument3, maka akan muncul tampilan

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 50


argv[0] = D:\TES.EXE
argv[1] = argument1
argv[2] = argument2
argv[3] = argument3

Dibawah ini diberikan contoh penggunaan argumen baris perintah yang lain, supaya anda lebih
memahami

Contoh :
// Program mengubah nilai desimal ke biner
// Simpan dengan nama dec2bin.cpp
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
if(argc !=2)
{
cerr<<"Pemakaian : dec2bin angka";
exit(1);
}
int p = atoi(argv[1]),n,i=0;
double A[100];
do
{
A[++i]=p%2;
p=p/2;
floor(p);
} while (p>1);
cout<<"Nilai binernya : ";
cout<<p;
for(n=i;n>=1;n--)
{
cout<<A[n];
}
getch();
}
Jika anda ketikkan dec2bin 4, maka outputnya Nilai binernya : 100

Materi Praktikum
• Array
• Pointer

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 51


Latihan 24:
Buatlah program untuk mengurutkan data :
Diketahui negara(Mayalsia, Brunei, Indonesia,Fhilipina, Singapura, Birma)
Urutkan berdasarkan abjad(gunakan array).

Latihan 25:
Buatlah program untuk menghitung berapakah total nilai rupiah yang harus
disiapkan oleh juru bayar pada saat ia melakukan proses penggajian. Asumsikan
bahwa data yang akan diinput dari keyboard adalah nama karyawan dan nilai
gajinya bersihnya dimana jumlah karyawan-nya ada 10 orang. (gunakan
Penyeleksian kondisi berulang (looping) : For, While, While-Do, array dan pointer).

Latihan 26:
Diketahui deretan Angka sebagai berikut:
3 6 4 8 1 2 7 5 9 10
Urutkan angka tersebut gunakan dengan teknik algoritma buble sort, Selection,
Insert

BAB IV – PROSEDUR, FUNGSI, FILE DAN


APLIKASINYA

Sesi 15 -
16 Landasan Teori:
Operasi File
Membuka File
Memproses File
Memeriksa File
Menutup File

OPERASI FILE

Ada kalanya seorang programmer harus berhubungan dengan file. Sebagai contoh
pada saat pembuatan program database, seorang programmer menyimpan data
pada sebuah file dan pada kemudian waktu data tersebut dikeluarkan untuk diolah.
Pada prinsipnya operasi yang dilakukan pada file terdiri dari tiga tahap, yaitu :
1. Membuka file
2. Melakukan pemrosesan pada file
3. Menutup file
Dalam melakukan operasi file, programmer membutuhkan fungsi – fungsi yang
berhubungan dengan operasi file yang terdapat pada file fstream.h. Oleh sebab

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 52


itu, untuk dapat melakukan operasi file, maka prepocessor directive berikut
ditambahkan.
#include <fstream.h>

MEMBUKA FILE

Pembukaan dari suatu file mempunyai dua tujuan, yaitu membaca isi file atau untuk
menulis ke dalam file tersebut. Dalam C++ penanganan pembukaan file untuk
membaca atau menulis ke dalam file berbeda.

1. Membuka file untuk dibaca

ifstream file_objek;

Setelah objek_input diciptakan, maka file dibuka dengan cara

file_objek.open(“nama_file”);

Adapun dua pernyataan diatas dapat disederhanakan sebagai berikut:

ifstream file_objek(“nama_file”);

2. Membuka file untuk ditulisi

ofstream file_objek;

Setelah objek_output diciptakan, maka file dibuka dengan cara

file_objek.open(“nama_file”);

Adapun dua pernyataan diatas dapat disederhanakan sebagai berikut:

ofstream file_objek(“nama_file”);

3. Membuka File dengan Modus Tertentu


Pada point 1 dan 2 pembukaan file hanya bias dilakukan untuk keperluan
membaca atau menulis saja, bukan untuk kedua-duanya, dan pada 7.1.2 jika
isi dari nama_file sudah ada, maka isi yang lama akan dihapus dan
digantikan dengan isi yang baru. Pada suatu waktu mungkin anda
memerlukan cara supaya file yang anda buka dapat dipergunakan untuk
membaca dan menulis sekaligus, atau isi file yang sudah ada tidak dihapus
jika anda ingin menambah isi file yang baru. Untuk keperluan itu, anda harus
memformat modus pembukaan file. Adapun modus pembukaan file yang
disediakan oleh C++ adalah sebagai berikut :
Modus Keterangan
ios::app Membuka file dengan modus keluaran
dan memungkinkan operasi

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 53


penambahan data pada file yang telah
ada. Jika file belum ada, maka
membuat file baru.
ios::ate Membuka file dengan modus masukan
dan keluaran. Secara otomatis
menempatkan pointer file ke posisi
akhir file
ios::in Membuka file dengan modus masukan.
Penggunaannya sama dengan ifstream.
ios::out Membuka file dengan modus keluaran.
Penggunaannya sama dengan
ofstream.
ios::nocreate Membuka file yang sudah ada. Jika file
yang akan dibuka belum ada, maka C+
+ tidak akan membuat file baru.
ios::noreplace Membuka file baru. Jika file sudah ada
maka operasi pembukaan menjadi
gagal. Jika file belum ada, maka akan
dibuat file baru. Hal ini bertentangan
dengan ios::nocreate
ios::trunc Menghapus file yang sudah ada dan
menciptakan file baru (replace)
ios::binary Membuka file dengan operasi baca-tulis
secara binary.

Adapun contoh penggunaan dari modus – modus pembukaan file diatas adalah
sebagai berikut :

fstream file_objek (“nama_file”,ios::in | ios::out);

Pernyataan diatas adalah dekalarasi file nama_file dengan sehinggan nama_file


dapat dibaca dan ditulisi.

PEMROSESAN FILE

Setelah file dibuka, maka dilakukan pemrosesan pada file yang telah dibuka
tersebut, antara lain :

1. Menulis ke File

Contoh :
#include<iostream.h>
#include<fstream.h>
void main()
{
ofstream file_objek;
file_objek.open("latihan.txt");
cout<<"Latihan menulis ke dalam sebuah file\n";
for(int i=1;i<11;i++)
file_objek<<"Ini adalah baris ke "<<i<<endl;
file_objek.close();

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 54


}

Pada direktori dimana anda men-save file tersebut akan terdapat


sebuah file bernama latihan.txt

2. Membaca Isi File

Contoh :
#include<iostream.h>
#include<fstream.h>
void main()
{
const int MAX = 80;
char buffer[MAX+1];
ifstream file_objek;
file_objek.open("latihan.txt");
cout<<"Membaca isi file latihan.txt\n";
while(file_objek)
{
file_objek.getline(buffer,MAX);
cout<<buffer<<endl;
}
}

Program ini membaca isi file latihan.txt dan menampilkannya ke layar.


File_objek.getline(buffer,MAX) digunakan untuk membaca teks dari file.

Memeriksa Operasi File


C++ menyediakan sejumlah fungsi yang berguna untuk memeriksa kondisi-
kondisi pada operasi file, sehingga kejadian kesalahan pada saat eksekusi
dapat dikendalikan.

Fungsi Anggota Kegunaan


Good() Untuk memeriksa keberhasilan dari
suatu operasi file. Jika operasi
berhasil dilakukan, maka fungsi ini
akan mengembalikan nilai 1 (TRUE)
eof() Untuk memeriksa apakah pointer
telah mencapai akhir file. Jika ya
fungsi ini akan mengembalikan nilai
1 (TRUE)
fail() Untuk memeriksa suatu kesalahan.
Fungsi ini dapat digantikan dengan
fungsi good() yang dinegasikan.
bad() Untuk memeriksa apakah ada
operasi yang tidak absah. Jika ada,
maka fungsi ini akan
mengembalikan nilai 1 (TRUE)

Contoh :

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 55


/* Program ini menghasilkan output yang sama dengan program
pada contoh 2 */
#include<iostream.h>
#include<fstream.h>
void main()
{
const int MAX = 80;
char buffer[MAX+1];
ifstream file_objek;
file_objek.open("latihan.txt");
cout<<"Membaca isi file latihan.txt\n";
while(!file_objek.eof())
{
file_objek.getline(buffer,MAX);
cout<<buffer<<endl;
}
}

Program pada contoh diatas sama saja dengan contoh program pada point 2
Perbedaannya hanya pada

while(file_objek) dan
while(!file_objek.eof())

while(file_objek) jika diartikan dalam bahasa sehari – hari adalah jika isi dari
file_objek (dalam hal ini, latihan.txt) masih ada, maka baca satu baris pada file
latihan.txt lalu pindahkan pointer satu baris ke bawah. Jika isi pada baris tersebut
tidak ada, maka hentikan loop. Sedangkan pada while(!file_objek.eof()) dapat
diartikan, jika pointer tidak terdapat di baris paling akhir dari file_objek, maka
lanjutkan loop. Jika tidak, maka hentikan loop.

MENUTUP FILE

Setelah pemrosesan file berakhir, maka file perlu ditutup. Langkah ini dilakukan
dengan cara

file_objek.close();

Pemakaian fungsi close() sifatnya optional. Bila anda tidak mempergunakannya,


compiler tidak akan mengeluarkan pesan error.

Dibawah ini diberikan contoh – contoh penggunaan operasi file pada suatu system
operasi.

Contoh :

1. Program menyalin suatu file

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 56


// Simpan dengan nama cp.cpp
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <string.h>
#define max 80
void main(int argc,char *argv[])
{
char buffer[max+1];

if (argc!=3)
{
cerr<<"Pemakaian : cp file_yang_akan_dikopi file_baru\n";
exit(1);
}
strupr(argv[1]);
ifstream input(argv[1], ios::binary);
ofstream output(argv[2], ios::binary);
if (!input)
{
cerr<<"File yang akan dikopi tidak ada, periksa kembali !!!\n";
exit(1);
}

for(;;)
{
input.read(buffer,max);
output.write(buffer,max);
if(input.eof())break;
}
input.close();
output.close();
}

2. Program Membaca Isi Suatu File

// Simpan dengan nama baca.cpp


#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
void main(int argc,char *argv[])
{
clrscr();
const int max=84;
char buffer[max+1];
char namafile[64];
if(argc!=2)
{
cerr<<"Penggunaan : Baca nama_file\n";
exit(1);
}

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 57


strcpy(namafile,argv[1]);
strupr(namafile);

ifstream input;
input.open(namafile);
while(!input)
{
cerr<<"File Not Found !!!\n";
exit(1);
}
while (!input.eof())
{
input.getline(buffer,max);
cout<<buffer<<endl;
}
input.close();
getch();
}

Materi Praktikum
• Operasi File
• Membuka File
• Memproses File
• Memeriksa File
• Menutup File

Latihan 27:
Sebuah perusahaan bermaksud mengkomputerisasi sistem penggajian dengan
ketentuan sebagai berikut:
Tabel Gaji
Golongan Gaji Pokok Transport
IV Rp. Rp.
1.000.000 200.000
III Rp. 750.000 Rp.
150.000
II Rp. 500.000 Rp.
100.000
I Rp. 300.000 Rp.
50.000

Aturan Tunjangan Keluarga:


• Jika pegawai berkeluarga (status: kawin) maka mendapatkan tunjangan
keluarga sebesar 40% dari gaji pokok.
• Jika Belum berkeluarga (status Belum Kawin) maka tidak mendapatkan
tunjangan Keluarga.

Input: Golongan, status pernikahan


Proses lihat tabel + aturan tujangan keluarga
Pajak=….
Gaji Total =….
Output : Pajak, gaji Total

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 58


Buatlah program dengan c++, gunakan operasi file untuk pembuatan tabel .

Study Kasus:
Buatlah sebuah program dalam kasus niaga (bisnis) dengan menggunakan teknik
yang telah dipelajari, jumlah kode minimal 1000 line.

AP- Algoritma – Dadan Nurdin Bagenda dan TEAM Algoritma Halaman: 59

Anda mungkin juga menyukai