ALGORITHM
8
Algoritma dengan C++
Dahlia Widhyaestoeti, S.Kom
dahlia.widhyaestoeti@gmail.com
dahlia74march.wordpress.com
2
"Jika kau tidak bisa menjelaskan secara sederhana, kau
berarti belum cukup dalam memahaminya."
Albert Einstein
Albert Einstein (lahir di Ulm, Kerajaan Württemberg,
Kerajaan Jerman, 14 Maret 1879 – meninggal di Princeton,
New Jersey, Amerika Serikat, 18 April1955 pada umur 76 tahun) adalah seorang ilmuwanfisika teoretis yang dipandang luas sebagai ilmuwan terbesar dalam abad ke-20. Dia mengemukakan
teori relativitas dan juga banyak menyumbang bagi
pengembangan mekanika kuantum, mekanika statistika, dan
kosmologi. Dia dianugerahi Penghargaan Nobel dalam Fisika
pada tahun 1921 untuk penjelasannya tentang efek fotolistrik dan "pengabdiannya bagi Fisika Teoretis".
Setelah teori relativitas umum dirumuskan, Einstein menjadi terkenal ke seluruh dunia, pencapaian yang tidak biasa bagi seorang ilmuwan. Di masa tuanya, keterkenalannya melampaui ketenaran semua ilmuwan dalam sejarah, dan dalam
budaya populer, kata Einstein dianggap bersinonim dengan
kecerdasan atau bahkan genius. Wajahnya merupakan salah satu yang paling dikenal di seluruh dunia.
3
Menghitung luas
segitiga bila diketahui
alas dan tinggi segitiga
tersebut
4
Susun algoritma yang ditulis
dalam
Bahasa C/C++, untuk menginput dan
mencetak Luas sebuah segitiga bila
alas
dan
tinggi
sudah diketahui yaitu :
Alas = 7 dan Tinggi = 5.
?
7
5
?
A
T
L
A untuk Alas
T untuk Tinggi, dan
L untuk Luas
cout
printf
5
17.5
7
5
17.5
A
T
L
A untuk Alas
T untuk Tinggi, dan
L untuk Luas
6
Rumus menghitung
Luas sebuah Segitiga
Kadang-kadang :
Lebih sulit :
Mencari ,
memahami
dan
menggunakan
Rumus, dibandingkan menulis algoritma
harus
7
dapat ditulis setelah
dan konsep atau draf
secara manual sudah
8
Yang harus
dipahami dan Dikuasai
sebelumnya
RUMUS menghitung Luas
sebuah segitiga :
LUAS = ALAS * TINGGI / 2 LUAS = (ALAS * TINGGI) / 2 LUAS = ALAS * ( TINGGI / 2) LUAS = ALAS * TINGGI * 0.5 LUAS = 0.5 * ALAS * TINGGI atau
atau atau atau
atau dan sebagainya yang valid
DALAM BEBERAPA HAL (KASUS), RUMUS TIDAK DIBERITAHUKAN PEMBUAT ALGORITMA HARUS MENGETAHUINYA SENDIRI TIDAK MENGETAHUI RUMUS TIDAK DAPAT MEMBUAT
ALGORITMA
BUKAN
PERSOALAN
MATEMATIKA
9
KONSEP penyelesaian
Draf
7
5
17.5
Alas
Tinggi
Luas
10
#include <iostream.h>
void main()
{ int A, T, L;
A = 7;
T = 5;
L = A * T / 2;
cout
<< L ;
}
START cout L = A * T / 2 END L Program Flowchart A = 7 T = 5Tercetak :
17
C++
7
5
17
A T L11
#include <iostream.h>
void main()
{ int A, T;
float L;
A = 7;
T = 5;
L = A * T /
2.0
;
cout
<< L ;
}
START cout L = A * T / 2 END L Program Flowchart A = 7 T = 5C++
Tercetak :
17.5
7
5
17.5
int int int
Tipe data pembagi variabel
diisi dengan tipe data
integer dan tipe data
variabel dengan float?
12
#include <iostream.h>
void main()
{ float A, T;
float L;
A = 7;
T = 5;
L = A * T /
2
;
cout
<< L ;
}
START cout L = A * T / 2 END L Program Flowchart A = 7 T = 5Tercetak :
17.5
7.0
5.0
17.5
A T Lfloat float float
2
?
13
#include <iostream.h>
void main()
{ float A, T, L;
A = 7;
T = 5;
L = A * T / 2.0;
cout
<< L ;
}
Tercetak :
17.5
C++
#include <stdio.h>
void main()
{ float A, T, L;
A = 7;
T = 5;
L = A * T / 2.0;
printf
(“%f”,
L );
}
C
Tercetak :
17.500000
14
Jika program yang diinginkan adalah
mengisikan data dari keyboard, dan
data yang diisi harus berupa float,
maka programnya?
Jika program yang diinginkan adalah
mengisikan data dari keyboard, dan
data yang diisi harus berupa float,
maka flowchartnya?
15
#include <iostream.h>
void main()
{ float A, T, L;
cin >> A;
cin >> T;
L = A * T / 2;
cout << L;
}
START cin cin cout L = A * T / 2 END A T L Program FlowchartDua instruksi ini dapat digabung
menjadi satu instruksi :
cin >> A >> T;
cin
A,T16
#include <iostream.h>
void main()
{ float A,T, L;
cout << "
Alas :
" ; cin >> A;
cout << "
Tinggi :
" ; cin >> T;
L = A * T / 2;
cout << "
Luas
: " << L;
}
Alas : 7
Tinggi : 5
Luas : 17.5
#include <iostream.h>
void main()
{ float A,T, L;
cout << "
Alas
: " ;
cin >> A;
cout << "
Tinggi
: " ;
cin >> T;
L = A * T / 2;
cout << "
Luas
: " << L;
}
Atau :
17
Meng-konversi derajat
Celcius ke derajat
18
Susun algoritma yang ditulis
dalam Bahasa
C++, untuk menginput sebuah nilai integer yang
menyatakan temperatur dalam derajat Celcius,
kemudian cetak temperatur tersebut dalam
derajat Fahrenheit.
xx.x
40
40
xx.x
C
F
C untuk nilai derajat Celcius
F untuk nilai derajat Fahrenheit
19
Rumus konversi
derajat
Celcius
ke derajat
Fahrenheit
harus
20
KONSEP penyelesaian
Draf
40
104
Celcius
Fahrenheit
C
F
F = 9/5 * C + 32
9 / 5 = 1.8
1.8 * 40 = 72
72 + 32 =
104
#include <iostream.h>
void main()
{ float C,F;
cin >> C;
F = 9.0 / 5 * C + 32;
cout << F;
}
21
#include <iostream.h>
void main()
{ float C,F;
cin >> C;
F = 9 / 5 * C + 32;
cout << F;
}
C++
40
72
SALAH
Ceharusnya,
untuk C = 40,
maka
Nilai F = 104
Bila menggunakan
suatu
Bahasa
Pemrograman, harus diketahui sifat /
karakteristik Bahasa Pemrograman
tersebut.
22
#include <iostream.h>
void main()
{ float C,F;
cin >> C;
F =
9
/ 5 * C + 32;
cout << F;
}
C++
40
72
Bila diinput : 40 untuk nilai C
Maka tercetak : 72 sebagai isi F
SALAH
Seharusnya,
untuk C = 40,
maka
Nilai
F = 104
9 / 5 = 1
1 * 40 = 40
40 + 32 = 72
Karena 9 dan 5
kedua-duanya
dianggap integer
Salah satu saja tipenya float, maka hasilnya float
23
#include <iostream.h>
void main()
{ float C,F;
cin >> C;
F =
9.0
/ 5 * C + 32;
cout << F;
}
C++
40
104
Bila diinput : 40 untuk nilai C
Maka trcetak : 104 sebagai isi F
9.0
/ 5 = 1.8
1.8 * 40 = 72
72 + 32 =
104
Salah satu saja tipenya float, maka hasilnya float
atau
9 / 5.0
24
Meng-konversi waktu
dalam
Detik
menjadi :
25
Susun program yang ditulis
dalam Bahasa C++,
untuk menginput sebuah nilai integer yang
menyatakan waktu (durasi) dalam satuan
detik
,
kemudian cetaklah waktu tersebut dalam satuan
Jam
,
Menit
, dan
Detik
.
jj mm dd
xxxx
xxxx
jj
Detik
J
cin
mm
cout
dd
M
D
J
untuk
Jam
M
untuk
Menit,
dan
26
Bila diinput
15
Tercetak :
0
0
15
72
0
1
12
150
0
2
30
1000
0
16
40
3600
1
0
0
3605
1
0
5
7425
?
?
?
27
? ? ?
7425
7425
?
Detik
J
cin
?
cout
?
M
D
J
untuk
Jam
M
untuk
Menit
, dan
28
harus
1 Jam = 60 Menit
1 Menit = 60 Detik
1 Jam = 3600 Detik
Tidak tahu ini,
Tidak bisa membuat draf perhitungannya
dan
29
KONSEP
penyelesaian
Draf
3600 / 7425 \
2
7200
60 / 225 \
3
180
45
Belum Rinci
Harus dijelaskan
dari mana
mendapatkan
nilai 7200
Didapat :
7425 Detik
adalah :
2
Jam
3
Menit
45
Detik
3600 / 7425 \
2
2 * 3600 = 7200
60 / 225 \
3
3 * 60 = 180
45
30
KONSEP
penyelesaian
Draf
7425 / 3600 =
2
sisa 225
225 / 60 =
3
sisa
45
Didapat :
2
Jam
3
Menit
45
Detik
Tidak rinci, darimana
mendapatkan nilai
sisa
LENGKAP dan RINCI
7425 / 3600 =
2
2 * 3600 = 7200
7425 – 7200 = 225
225 / 60
=
3
3 * 60 = 180
225 – 180 =
45
INI
KONSEP
BERPIKIR
YANG
ORSINIL
MILIK
SEMUA
ORANG
INI
YANG
DITUANGKAN
MENJADI
ALGORITMA
Didapat :
2
Jam
3
Menit
45
Detik
31 7425 / 3600 = 2 2 * 3600 = 7200 7425 – 7200 = 225 225 / 60 = 3 3 * 60 = 180 225 – 180 = 45
Kerangka
berpikir, bila
setiap nilai
disimpan dalam
sebuah variabel
7425 2 7200 225 7425 / 3600 2 * 3600 7425 - 7200 3 225 / 60 180 3 * 60 45 225 - 180Ada
7
variabel, yang
diilustrasikan dengan
32 7425 2 7200 225 J = Detik / 3600 X = J * 3600 Y = Detik - X 3 M = Y / 60 180 Z = M * 60 45 D = Y - Z
Detik
J
X
Y
M
Z
D
1
2
3
4
5
6
Ada
7
variabel, yang diilustrasikan dengan gambar
kotak
Ada 6 langkah
1. J = Detik / 3600
2. X = J * 3600
3. Y = Detik – X
4. M = Y / 60
5. Z = M * 60
6. D = Y - Z
Sesuai dengan tata cara penulisan
33
Dapatkah dibuat
lebih sederhana?
7425 2 7200 225 J = Detik / 3600 X = J * 3600 Y = Detik - X 3 M = Y / 60 180 Z = M * 60 45 D = Y - ZDetik
J
X
Y
M
Z
D
1
2
3
4
5
6
Asli : 6 langkah
7 variabel
7425 2 225 J = Detik / 3600 Y = Detik – J * 3600 3 M = Y / 60 45 D = Y – M * 60Detik
J
Y
M
D
1
2
3
4
Dibuat menjadi : 4 langkah
5 variabel
34
Sederhanakan kembali
langkah dan
35 7425 2 225 J = Detik / 3600 Y = Detik – J * 3600 3 M = Y / 60 45 D = Y – M * 60
Detik
J
Y
M
D
1
2
3
4
Setelah menjadi : 4 langkah
5 variabel
7425 J = Detik / 3600 2 3 M = ( Detik – J * 3600 ) / 60 45 D = ( Detik – J * 3600 ) – M * 60Detik
J
M
D
1
2
Dibuat menjadi : 3 langkah
3
37 7425 2 7200 225 J = Detik / 3600 X = J * 3600 Y = Detik - X 3 M = Y / 60 180 Z = M * 60 45 D = Y - Z
Detik
J
X
Y
M
Z
D
1
2
3
4
5
6
#include<iostream.h>
void main()
{ int Detik, J,M,D, X,Y,Z;
cout << "Detik : " ;
cin >> Detik;
J = Detik / 3600;
X = J * 3600;
Y = Detik - X;
M = Y / 60;
Z = M * 60;
D = Y - Z;
cout << J << " Jam ";
cout << M << " Menit ";
cout << D << " Detik " ;
}
7425
2 Jam 3 Menit 45 Detik
Di monitor terlihat :
1
2
3
4
5
6
6 langkah
7 variabel
38 7425 2 225 J = Detik / 3600 Y = Detik – J * 3600 3 M = Y / 60 45 D = Y – M * 60
Detik
J
Y
M
D
1
2
3
4
4 langkah
#include<iostream.h>
void main()
{ int Detik, J, M, D, Y;
cout << "Detik : " ;
cin >> Detik;
J = Detik / 3600;
Y = Detik – J*3600;
M = Y / 60;
D = Y – M*60;
cout << J << " Jam ";
cout << M << " Menit ";
cout << D << " Detik " ;
}
7425
2 Jam 3 Menit 45 Detik
Di monitor terlihat :
1
2
3
4
5 variabel
39
Buat flowchart untuk 3 langkah dan 4
variabel!
Buat Program untuk 3 langkah dan 4
variabel!
40
#include<iostream.h> void main()
{ int Detik, J,M,D, X,Y,Z; cout << "Detik : " ; cin >> Detik; J = Detik / 3600; X = J * 3600; Y = Detik - X; M = Y / 60; Z = M * 60; D = Y - Z; cout << J << " Jam "; cout << M << " Menit "; cout << D << " Detik " ; } #include<iostream.h> void main() { int Detik, J, M, D, Y; cout << "Detik : " ; cin >> Detik; J = Detik / 3600; Y = Detik – J*3600; M = Y / 60; D = Y – M*60; cout << J << " Jam "; cout << M << " Menit "; cout << D << " Detik " ; } #include<iostream.h> void main() { int Detik, J, M, D; cout << "Detik : " ; cin >> Detik; J = Detik / 3600; M = (Detik - J*3600 )/ 60; D = ( Detik - J* 3600 ) - M*60; cout << J << " Jam "; cout << M << " Menit "; cout << D << " Detik " ; } cin >> Detik;
cout << Detik / 3600 << " Jam
"
;cout << ( Detik - (Detik / 3600) *3600 )/ 60 << " Menit
"
;cout << ( Detik - (Detik / 3600) * 3600 ) -((Detik - (Detik /3600) * 3600) / 60 ) * 60 << " Detik ";
42
7425
2
225
J = Detik / 3600
3
M = X / 60
45
X = Detik % 3600
D = X % 60
Detik
J
M
D
X
1
2
3
4
4 langkah
#include<iostream.h>
void main()
{ int Detik, J, M, D, X;
cout << "Detik : " ;
cin >> Detik;
J = Detik / 3600;
X = Detik % 3600;
M = X / 60;
D = X % 60;
cout << J << " Jam ";
cout << M << " Menit ";
cout << D << " Detik " ;
}
43
7425
J = Detik / 3600
2
3
M = (Detik % 3600 ) / 60
45
D = Detik % 3600 ) % 60
Detik
J
M
D
1
2
3
3 langkah
#include<iostream.h>
void main()
{ int Detik, J, M, D;
cout << "Detik : " ;
cin >> Detik;
J = Detik / 3600;
M = ( Detik % 300 ) / 60;
D = ( Detik % 3600 ) % 60;
cout << J << " Jam ";
cout << M << " Menit ";
cout << D << " Detik " ;
}
44
#include<iostream.h>
void main()
{ int Detik, J, M, D;
cout << "Detik : " ;
cin >> Detik;
J = Detik / 3600;
M = ( Detik % 300 ) / 60;
D = ( Detik % 3600 ) % 60;
cout << J << " Jam ";
cout << M << " Menit ";
cout << D << " Detik " ;
}
#include<iostream.h>
void main()
{ int Detik, J, M, D, X;
cout << "Detik : " ;
cin >> Detik;
J = Detik / 3600;
X = Detik % 3600;
M = X / 60;
D = X % 60;
cout << J << " Jam ";
cout << M << " Menit ";
cout << D << " Detik " ;
}
cin >> Detik;
cout << Detik / 3600 << " Jam ";
cout << ( Detik % 3600 ) / 60 << " Menit ";
cout << ( Detik % 3600 ) % 60 << " Detik " ;
Dapat dipaksakan menjadi :
45