Algoritma
Algoritma
Algoritma
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.
• 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.
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
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
Aliran Data
Input / Output
Proses
Sequence process
Perulangan
syara
t
Bagian yang
diulang
Pencaca
h
Page 5
Mulai
Masukkan
alas (a)
Masukan
tinggi(t)
L=(a x
t)/2
Cetak Luas
(L)
Selesai
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;
3. Implementasi
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
SOAL :
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>
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;
}
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;
}
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 )
Contoh :
#include <iostream.h>
main()
{
int n=66;
cout<<n<<endl; // n sebagai variabel
return 0;
}
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 -
Contoh :
#include <iostream.h>
main()
{
int n;
cout<<n<<endl; // n sebagai variabel
return 0;
}
Keluarannya:
18125
KONSTANTA
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)
Studi Kasus
Latihan 1:
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 :
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?
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 :
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
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.
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
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
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;
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.
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
Contoh :
#include <iostream.h>
void main()
{
int m = 166;
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
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
Contoh:
//prepocessor directive
#include <iostream.h>
#include <conio.h>
Latihan 8:
Diketahui sebuah algoritma dibawah ini, Buatlah program menggunakan C++:
(Gunakan dengan operator increment atau decrement.)
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++:
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
• Notasi algoritmik :
if Syarat then
Aksi {True}
endif {False}
• Flow Chart:
False
Syar
at
Aksi
True
Exit
• Notasi algoritmik :
IF syarat THEN
aksi-1 {true}
ELSE
aksi-2 {false}
ENDIF
• Flow Chart:
False
Syar
at
Aksi-1 Aksi-2
True
Exit
Jenis perulangan:
• For-next
• While-do
• Repeat-until
Bentuk umum :
• Pengulangan For
instruksi
Next i
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
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 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).
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.
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)
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;
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";
}
}
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;
}
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.
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";
Penjelasan :
Program ini adalah program menggambar karakter [] jika dicompile di
Turbo C++ atau mengambar ♂ jika dicompile di Borland C++.
( ditunjukkan oleh karakter ’xBO’ ).
4. Pernyataan do…while
Pernyataan do…while mirip seperti pernyataan while, hanya saja pada do…
Bentuk :
do{
pernyataan;
} while(kondisi);
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;
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;
}
Contoh :
//Program mencetak angka 1-100
#include <iostream.h>
void main()
{
for(int x=1 ; x<=100 ; x++) cout<<x<<endl;
}
#include <iostream.h>
void main()
{
for(int x=1 ; ;x++) cout<<x<<endl;
}
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 CONTINUE
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
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”
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.
Latihan 16:
Pertandingan Sepak bola memiliki aturan sebagai berikut:
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
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)
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
int ujian[4];
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”;
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.
akan mengembalikan nilai 4, yaitu sama dengan jumlah elemen yang dimiliki
array array.
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;
}
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
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
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.
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;
}
Jadi :
• String adalah array (susunan) dari karakter-karakter
• String dapat diakses dan dimanipulasi lewat pointer
• Alamat awal dari string dapat diperoleh dari namanya
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 :
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.
atau
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
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
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
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
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.
ifstream file_objek;
file_objek.open(“nama_file”);
ifstream file_objek(“nama_file”);
ofstream file_objek;
file_objek.open(“nama_file”);
ofstream file_objek(“nama_file”);
Adapun contoh penggunaan dari modus – modus pembukaan file diatas adalah
sebagai berikut :
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();
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;
}
}
Contoh :
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();
Dibawah ini diberikan contoh – contoh penggunaan operasi file pada suatu system
operasi.
Contoh :
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();
}
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
Study Kasus:
Buatlah sebuah program dalam kasus niaga (bisnis) dengan menggunakan teknik
yang telah dipelajari, jumlah kode minimal 1000 line.