Anda di halaman 1dari 55

STUDI KASUS ALGORITMA SEDERHANA

Meng-konversi waktu
dalam Detik menjadi :
Jam, Menit dan Detik.
Soal.
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.

xxxx J jj

cin xxxx M mm cout jj mm dd


Detik
D dd
J untuk Jam
M untuk Menit, dan
D untuk Detik
Bila diinput Tercetak :
15 0 0 15

72 0 1 12

150 0 2 30

1000 0 16 40

3600 1 0 0

3605 1 0 5

7425 ? ? ?
7425 J ?
cin 7425 M ? cout
? ? ?
Detik
D
?
J untuk Jam
M untuk Menit, dan
D untuk Detik
harus

1 Jam = 60 Menit
1 Menit = 60 Detik
1 Jam = 3600 Detik

Tidak tahu ini,


Tidak bisa membuat draf perhitungannya
dan
Tidak bisa membuat algoritma
Draf
KONSEP 3600 / 7425 \ 2
penyelesaian Belum Rinci
7200
60 / 225 \ 3 Harus dijelaskan
180 dari mana
Didapat :
45 mendapatkan
7425 Detik
nilai 7200
adalah :
2 Jam
3 Menit
45 Detik

3600 / 7425 \ 2
2 * 3600 = 7200
60 / 225 \ 3
3 * 60 = 180
45
Draf
KONSEP Didapat :
penyelesaian 7425 / 3600 = 2 sisa 225 2 Jam
3 Menit
225 / 60 = 3 sisa 45
45 Detik
LENGKAP
dan
Tidak rinci, darimana
RINCI mendapatkan nilai sisa

INI
KONSEP 7425 / 3600 = 2 INI
BERPIKIR 2 * 3600 = 7200 YANG
YANG DITUANGKAN
7425 – 7200 = 225 MENJADI
ORSINIL
MILIK 225 / 60 = 3 ALGORITMA
SEMUA 3 * 60 = 180
ORANG Didapat :
225 – 180 = 45
2 Jam
3 Menit
45 Detik
7425 / 3600 = 2 Inilah langkah-
2 * 3600 = 7200 langkah yang
7425 – 7200 = 225
225 / 60 = 3
diambil dalam
3 * 60 = 180 menyelesaikan
225 – 180 = 45 suatu tugas

TIDAK BISA MEMBUAT KONSEP INI


TIDAK BISA JUGA MEMBUAT PROGRAM
7425 / 3600 = 2 Inilah
2 * 3600 = 7200
7425 – 7200 = 225
225 / 60 = 3 atau
3 * 60 = 180 paling tidak
225 – 180 = 45 cikal bakal

TIDAK BISA MEMBUAT KONSEP INI


TIDAK BISA JUGA MEMBUAT PROGRAM
Orang lain
7425 / 3600 = 2 mungkin
2 * 3600 = 7200 menggunakan
7425 – 7200 = 225 cara yang
225 / 60 = 3 berbeda untuk
3 * 60 = 180
mengasilkan
225 – 180 = 45
hasil yang
sama

TIDAK BISA MEMBUAT KONSEP INI


TIDAK BISA JUGA MEMBUAT PROGRAM
7425 / 3600 = 2
Yang sulit bukan
2 * 3600 = 7200
membuat
7425 – 7200 = 225
program
225 / 60 = 3
komputer, tapi
3 * 60 = 180
membuat draf
225 – 180 = 45
perhitungan
seperti ini

TIDAK BISA MEMBUAT KONSEP INI


TIDAK BISA JUGA MEMBUAT PROGRAM
7425 / 3600 = 2 Ini tidak diajarkan
2 * 3600 = 7200 dalam pelajaran
7425 – 7200 = 225 algoritma,
225 / 60 = 3 Karena pengetahuan
3 * 60 = 180 ini milik semua orang.
225 – 180 = 45

TIDAK BISA MEMBUAT KONSEP INI


TIDAK BISA JUGA MEMBUAT PROGRAM
7425 / 3600 = 2
2 * 3600 = 7200 Ini bukan
7425 – 7200 = 225
225 / 60 = 3 pelajaran
3 * 60 = 180 algoritma,
225 – 180 = 45

TIDAK BISA MEMBUAT KONSEP INI


TIDAK BISA JUGA MEMBUAT PROGRAM
7425 / 3600 = 2
2 * 3600 = 7200
7425 – 7200 = 225
225 / 60 = 3
3 * 60 = 180
225 – 180 = 45
7425 / 3600
7425 / 3600 = 2 7425 2
2 * 3600 = 7200
7425 – 7200 = 225 2 * 3600
225 / 60 = 3 7425 - 7200 7200
3 * 60 = 180
225 – 180 = 45
225 / 60
225 3

3 * 60

Kerangka 225 - 180 180


berpikir, bila
setiap nilai
disimpan dalam 45
sebuah variabel

Ada 7 variabel, yang


diilustrasikan dengan
gambar kotak
Detik J
J = Detik / 3600
7425 2
1
2 X = J * 3600

Y = Detik - X
7200 X
Ada 6 langkah
3
1. J = Detik / 3600
M = Y / 60
225 3 M 2. X = J * 3600
Y
4 3. Y = Detik – X
4. M = Y / 60
5 Z = M * 60
5. Z = M * 60
D=Y-Z 6. D=Y-Z
180 Z
6

45 D
Sesuai dengan tata
cara penulisan
Ada 7 variabel, yang diilustrasikan dengan gambar algoritma
kotak
Detik J Detik J
J = Detik / 3600 J = Detik / 3600
7425 2 7425 2
1 1
2 X = J * 3600

Y = Detik - X Y = Detik – J * 3600


7200 X
3 2
M
M = Y / 60 M = Y / 60
225 3 M 225 3
Y Y
4 3
5 Z = M * 60
D=Y-Z 180 D = Y – M * 60
Z
6 4

45 D 45 D

Asli : 6 langkah Dibuat menjadi : 4 langkah


7 variabel 5 variabel
Detik J Detik J
J = Detik / 3600 J = Detik / 3600
7425 2 7425 2
1 1

Y = Detik – J * 3600

2 2 M = ( Detik – J * 3600 ) / 60
M
M = Y / 60
225 3 3
Y M
3

D = Y – M * 60 3 D = ( Detik – J * 3600 ) – M * 60
4

45 D 45 D

Setelah menjadi : 4 langkah Dibuat menjadi : 3 langkah


5 variabel 4 variabel
Detik J
J = Detik / 3600 #include<iostream.h>
7425 2
1 void main()
2 X = J * 3600 { int Detik, J,M,D, X,Y,Z;
cout << "Detik : " ;
Y = Detik - X
7200 X cin >> Detik;
3 1 J = Detik / 3600;
M = Y / 60 2 X = J * 3600;
225 3 M 3 Y = Detik - X;
Y
4
4 M = Y / 60;
5 Z = M * 60
5 Z = M * 60;
D=Y-Z 180 6 D = Y - Z;
Z
cout << J << " Jam ";
6
cout << M << " Menit ";
45 D cout << D << " Detik " ;
}
6 langkah 7425
Di monitor terlihat :
7 variabel 2 Jam 3 Menit 45 Detik
Detik J
J = Detik / 3600
7425 2 #include<iostream.h>
1 void main()
{ int Detik, J, M, D, Y;
Y = Detik – J * 3600 cout << "Detik : " ;
cin >> Detik;
2 1 J = Detik / 3600;
M
M = Y / 60 2 Y = Detik – J*3600;
225 3
Y 3 M = Y / 60;
3
4 D = Y – M*60;
cout << J << " Jam ";
D = Y – M * 60 cout << M << " Menit ";
cout << D << " Detik " ;
4
}
45 D

4 langkah Di monitor terlihat : 7425


5 variabel 2 Jam 3 Menit 45 Detik
Detik J
J = Detik / 3600
7425 2 #include<iostream.h>
1
void main()
{ int Detik, J, M, D;
cout << "Detik : " ;
cin >> Detik;
2 M = ( Detik – J * 3600 ) / 60
1 J = Detik / 3600;
3 M 2 M = (Detik - J*3600 )/ 60;
3 D = ( Detik - J* 3600 ) - M*60;
cout << J << " Jam ";
3 D = ( Derik – J * 3600 ) – M * 60 cout << M << " Menit ";
cout << D << " Detik " ;
}
45 D

3 langkah Di monitor terlihat : 7425


4 variabel 2 Jam 3 Menit 45 Detik
#include<iostream.h>
void main()
{ int Detik, J,M,D, X,Y,Z; #include<iostream.h>
cout << "Detik : " ; void main() #include<iostream.h>
cin >> Detik; { int Detik, J, M, D, Y; void main()
J = Detik / 3600; cout << "Detik : " ; { int Detik, J, M, D;
X = J * 3600; cin >> Detik; cout << "Detik : " ;
Y = Detik - X; J = Detik / 3600; cin >> Detik;
M = Y / 60; Y = Detik – J*3600; J = Detik / 3600;
Z = M * 60; M = Y / 60; M = (Detik - J*3600 )/ 60;
D = Y - Z; D = Y – M*60; D = ( Detik - J* 3600 ) - M*60;
cout << J << " Jam "; cout << J << " Jam "; cout << J << " Jam ";
cout << M << " Menit "; cout << M << " Menit "; cout << M << " Menit ";
cout << D << " Detik " ; cout << D << " Detik " ; cout << D << " Detik " ;
} } }

Dapat dipaksakan menjadi:


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 ";
yang
disediakan
oleh
Bahasa Pemrograman
harus
memahami
karakteristik dan fasilitas
yang disediakan
oleh
Bahasa Pemrograman
Draf
KONSEP Didapat :
penyelesaian 7425 / 3600 = 2 sisa 225 2 Jam
3 Menit
225 / 60 = 3 sisa 45
45 Detik
LENGKAP
dan
Tidak rinci, darimana
RINCI mendapatkan nilai sisa

7425 / 3600 = 2
Bahasa
7425 / 3600 sisa 225 pemrograman
menyediakan
225/ 60 = 3 instruksi untuk
225 / 60 sisa 45 menghitung
sisa pembagian
7425 / 3600 = 2
7425 / 3600 sisa 225
225/ 60 = 3
225 / 60 sisa 45

Ditulis :

% Adalah
7425 / 3600 = 2 operator
7425 % 3600 = 225 modulus (sisa
pembagian)
225 / 60 = 3
225 % 60 = 45
7425 / 3600 = 2
7425 % 3600 = 225
225 / 60 = 3
225 % 60 = 45
7425 / 3600
7425 / 3600 = 2 7425 2
7425 % 3600 = 225
7425 % 3600
225 / 60 = 3
225 % 60 = 45 225 / 60
225 3

225 % 60

45
Kerangka
berpikir, bila
setiap nilai
disimpan dalam
sebuah variabel
Detik J
7425 / 3600 J = Detik / 3600
7425 2 7425 2

7425 % 3600 X = Detik % 3600

225 / 60 M = X / 60
225 3 X 225 3 M

225 % 60 D = X % 60

45 45 D
Detik J
J = Detik / 3600
7425 2
1. J = Detik / 3600
X = Detik % 3600 2. X = Detik % 3600

M = X / 60 3. M = X / 60
X 225 3 M
4. D = X % 60

D = X % 60

45 D
Sesuai dengan
kaidah penulisan
algoritma
Detik J Detik J
J = Detik / 3600 J = Detik / 3600
7425 2 7425 2
1 1
X = Detik % 3600
2
2
M = (Detik % 3600 ) / 60
M = X / 60
X 225 3 M 3 3 M
3
4 D = X % 60 D = Detik % 3600 ) % 60

45 D 45 D

4 langkah 3 langkah
Detik J #include<iostream.h>
J = Detik / 3600 void main()
7425 2
1 { int Detik, J, M, D, X;
cout << "Detik : " ;
2 X = Detik % 3600
cin >> Detik;
J = Detik / 3600;
M = X / 60
X 225 3 M X = Detik % 3600;
3 M = X / 60;
4 D = X % 60 D = X % 60;
cout << J << " Jam ";
45 D cout << M << " Menit ";
cout << D << " Detik " ;
}
4 langkah
Detik J #include<iostream.h>
J = Detik / 3600 void main()
7425 2
1 { int Detik, J, M, D;
2 cout << "Detik : " ;
M = (Detik % 3600 ) / 60 cin >> Detik;
J = Detik / 3600;
3 3 M M = ( Detik % 300 ) / 60;
D = ( Detik % 3600 ) % 60;
D = Detik % 3600 ) % 60 cout << J << " Jam ";
cout << M << " Menit ";
45 D cout << D << " Detik " ;
}

3 langkah
#include<iostream.h>
void main() #include<iostream.h>
{ int Detik, J, M, D, X; void main()
cout << "Detik : " ; { int Detik, J, M, D;
cin >> Detik; cout << "Detik : " ;
J = Detik / 3600; cin >> Detik;
X = Detik % 3600; J = Detik / 3600;
M = X / 60; M = ( Detik % 300 ) / 60;
D = X % 60; D = ( Detik % 3600 ) % 60;
cout << J << " Jam "; cout << J << " Jam ";
cout << M << " Menit "; cout << M << " Menit ";
cout << D << " Detik " ; cout << D << " Detik " ;
} }

Dapat dipaksakan menjadi :

cin >> Detik;


cout << Detik / 3600 << " Jam ";
cout << ( Detik % 3600 ) / 60 << " Menit ";
cout << ( Detik % 3600 ) % 60 << " Detik " ;
Menggunakan 3 variabel
A B C

5 7 9

5 9 7
Ada 6 kemungkinan
variasi ketiga buah 7 5 9
nilai
7 9 5

9 5 7

9 7 5
1 START
5 7 9
A B C input A

input B

input C

False True
A>B

False True False True


B>C A>C

1 2 3 4

Ada 4 titik 1 , 2 , 3 dan 4


Untuk data diatas, maka flow akan menuju titik . . . . . ?
START
5 7 9
A B C input A

input B

input C

False True
A>B

5 7 False True
False True
B>C A>C

1 7 9 2 3 4

Untuk data diatas, maka flow akan menuju


atau berakhir pada titik : 1
2 START
5 9 7
A B C input A

input B

input C

False True
A>B

False True False True


B>C A>C

1 2 3 4

Ada 4 titik 1 , 2 , 3 dan 4


Untuk data diatas, maka flow akan menuju titik . . . . . ?
START
5 9 7
A B C input A

input B

input C

False True
A>B

5 9 False True
False True
B>C A>C

1 9 7 2 3 4

Untuk data diatas, maka flow akan menuju


atau berakhir pada titik : 2
3 START
7 5 9
A B C input A

input B

input C

False True
A>B

False True False True


B>C A>C

1 2 3 4

Ada 4 titik 1 , 2 , 3 dan 4


Untuk data diatas, maka flow akan menuju titik . . . . . ?
START
7 5 9
A B C input A

input B

input C

False True
A>B

7 5 False True
False True
B>C A>C

1 2 3 7 9 4

Untuk data diatas, maka flow akan menuju


atau berakhir pada titik : 3
4 START
7 9 5
A B C input A

input B

input C

False True
A>B

False True False True


B>C A>C

1 2 3 4

Ada 4 titik 1 , 2 , 3 dan 4


Untuk data diatas, maka flow akan menuju titik . . . . . ?
START
7 9 5
A B C input A

input B

input C

False True
A>B

7 9 False True
False True
B>C A>C

1 9 5 2 3 4

Untuk data diatas, maka flow akan menuju


atau berakhir pada titik : 2
5 START
9 5 7
A B C input A

input B

input C

False True
A>B

False True False True


B>C A>C

1 2 3 4

Ada 4 titik 1 , 2 , 3 dan 4


Untuk data diatas, maka flow akan menuju titik . . . . . ?
START
9 5 7
A B C input A

input B

input C

False True
A>B

9 5 False True
False True
B>C A>C

1 2 3 9 7 4

Untuk data diatas, maka flow akan menuju


atau berakhir pada titik : 4
6 START
9 7 5
A B C input A

input B

input C

False True
A>B

False True False True


B>C A>C

1 2 3 4

Ada 4 titik 1 , 2 , 3 dan 4


Untuk data diatas, maka flow akan menuju titik . . . . . ?
START
9 7 5
A B C input A

input B

input C

False True
A>B

9 7 False True
False True
B>C A>C

1 2 3 9 5 4

Untuk data diatas, maka flow akan menuju


atau berakhir pada titik : 4
CONTOH SOAL
BERAPAKAH HASIL YANG TERCETAK DARI ALGORITMA BERIKUT ?

Deklarasi

A = 5;
B = 7;
C = 9;
Proses
A = 7;
A = B;
B = 9;
B = C;
C = A + B; C = 7 + 9;
B = C; B = 16;
C = A + B; C = 7 + 16;

Perintah Cetak Pertanyaan Jawaban

A=; A=? A=7


B=; B=? B = 16
C=; C=? C = 23

Anda mungkin juga menyukai