Algoritma dan pengetahuan terkait (menghitung, konversi, dll)

Post on 24-Apr-2015

665 views 4 download

description

source by : Sugeng Supriyadi S.Kom, M.Kom

Transcript of Algoritma dan pengetahuan terkait (menghitung, konversi, dll)

Menghitung luas segitiga bila diketahui alas dan tinggi segitiga tersebut

Soal-5.

Susun algoritma yang ditulis dalam Bahasa C++, untuk menginput alas dan tinggi sebuah segitiga, kemudian mencetak luas segitiga tersebut.

?

75

7 5 ?A T L

A untuk AlasT untuk Tinggi, danL untuk Luas

cin cout

Soal-5.

Susun algoritma yang ditulis dalam Bahasa C++, untuk menginput alas dan tinggi sebuah segitiga, kemudian mencetak luas segitiga tersebut.

17.5

75

7 5 17.5

A T L

A untuk AlasT untuk Tinggi, danL untuk Luas

cin cout

Rumus menghitung Luas sebuah Segitiga

Kadang-kadang :

Lebih sulit : Mencari , memahami dan

menggunakan

Rumus, dibandingkan menulis algoritma

harus

dapat ditulis setelah

dan konsep atau draf secara manual sudah

dibuat

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

BUKANPERSOALAN

MATEMATIKA

KONSEP penyelesaian

Draf

7 5

17.5

Alas Tinggi

Luas

Luas = Alas * Tinggi / 2

Algoritma yang ditulis dalam suatu Bahasa Pemrograman disebut PROGRAM

#include <iostream.h>void main(){ float A, T, L; cin >> A; cin >> T;

L = A * T / 2;

cout << L;}

Cara-1

START

cin

cin

cout

L = A * T / 2

END

A

T

L

Program Flowchart

Dua instruksi ini dapat digabung menjadi satu instruksi :

cin >> A >> T;

cin A,T

C++

#include <iostream.h>void main(){ float A, T, L; cin >> A; cin >> T;

L = A * T / 2;

cout << L;}

Cara-1 C++

7517.5

Karena ada kemungkinan mengandung nilai

pecahan, maka digunakan tipe data :

float

Menulis program, memerlukan pengtahuan mengenai :

BAHASA Pemograman yang digunakanFloating point Single Precission

#include <iostream.h>void main(){ float A, T, L; cin >> A; cin >> T;

L = A * T / 2;

cout << L;}

Cara-1 C++

12630

Walaupun tipe data : floatTapi tercetak bukan : 30.0

#include <iostream.h>void main(){ int A, T, L; cin >> A; cin >> T;

L = A * T / 2;

cout << L;}

Cara-1 C++

7517

Bagaimana bila menggunakan tipe

data : intinteger

7 * 5 = 3535 / 2 = 17

Bukan : 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;}

Alas : 7Tinggi : 5Luas : 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 :

Meng-konversi derajat Celcius ke derajat Fahrenheit

Soal-6.

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 CelciusF untuk nilai derajat Fahrenheit

cin cout

Rumus konversiderajat Celcius

ke derajat Fahrenheit

harus

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;}

#include <iostream.h>void main(){ float C,F; cin >> C; F = 9 / 5 * C + 32; cout << F;}

Cara-1 C++

4072

SALAHCeharusnya, untuk C = 40,makaNilai F = 104

Bila menggunakan suatu Bahasa Pemrograman, harus diketahui sifat / karakteristik Bahasa Pemrograman tersebut.

#include <iostream.h>void main(){ float C,F; cin >> C; F = 9 / 5 * C + 32; cout << F;}

Cara-1 C++

4072

Bila diinput : 40 untuk nilai CMaka tercetak : 72 sebagai isi F

SALAH

Ceharusnya, untuk C = 40,makaNilai F = 104

9 / 5 = 11 * 40 = 4040 + 32 = 72

Karena 9 dan 5 kedua-duanya dianggap integer

Salah satu saja tipenya float, maka hasilnya float

#include <iostream.h>void main(){ float C,F; cin >> C; F = 9.0 / 5 * C + 32; cout << F;}

Cara-1 C++

40104

Bila diinput : 40 untuk nilai CMaka trcetak : 104 sebagai isi F

9.0 / 5 = 1.81.8 * 40 = 7272 + 32 = 104

Salah satu saja tipenya float, maka hasilnya float

atau9 / 5.0

#include <iostream.h>void main(){ float C,F; cin >> C; F = 9 / 5.0 * C + 32; cout << F;}

Cara-1 C++

40104

Bila diinput : 40 untuk nilai CMaka trcetak : 104 sebagai isi F

9 / 5.0 = 1.81.8 * 40 = 7272 + 32 = 104

Salah satu saja tipenya float, maka hasilnya float

#include <iostream.h>void main(){ int C; float F; cin >> C; F = 9 / 5.0 * C + 32; cout << F;}

Cara-1 C++

40104

Bila diinput : 40 untuk nilai CMaka trcetak : 104 sebagai isi F

9 / 5.0 = 1.81.8 * 40 = 7272 + 32 = 104

Salah satu saja tipenya float, maka hasilnya float

C

Dapat saja dibuat bertipe int

Meng-konversi waktu dalam Detik menjadi : Jam, Menit dan Detik.

Soal-7.

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 coutmm

dd

M

D

J untuk JamM untuk Menit, danD untuk Detik

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 ? ? ?

? ? ?

7425

7425

?

Detik

J

cin cout?

?

M

D

J untuk JamM untuk Menit, danD untuk Detik

harus

1 Jam = 60 Menit1 Menit = 60 Detik1 Jam = 3600 Detik

Tidak tahu ini,Tidak bisa membuat draf perhitungannyadanTidak bisa membuat algoritma

KONSEP penyelesaian

Draf

3600 / 7425 \ 2

7200

60 / 225 \ 3

180

45

Belum Rinci

Harus dijelaskan dari mana mendapatkan nilai 7200

Didapat :

7425 Detikadalah : 2 Jam 3 Menit 45 Detik

3600 / 7425 \ 2

2 * 3600 = 7200

60 / 225 \ 3

3 * 60 = 180

45

KONSEP penyelesaian

Draf

7425 / 3600 = 2 sisa 225

225 / 60 = 3 sisa 45

Didapat :

2 Jam3 Menit45 Detik

Tidak rinci, darimana mendapatkan nilai sisa

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

LENGKAPdanRINCI

INIKONSEP

BERPIKIRYANG

ORSINILMILIK

SEMUAORANG

INIYANG DITUANGKANMENJADIALGORITMA

Didapat :

2 Jam3 Menit45 Detik

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

TIDAK BISA MEMBUAT KONSEP INITIDAK BISA JUGA MEMBUAT PROGRAM

Inilah langkah-langkah yang diambil dalam menyelesaikan suatu tugas

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

TIDAK BISA MEMBUAT KONSEP INITIDAK BISA JUGA MEMBUAT PROGRAM

Inilah

ataupaling tidakcikal bakal

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

TIDAK BISA MEMBUAT KONSEP INITIDAK BISA JUGA MEMBUAT PROGRAM

Orang lain mungkin menggunakan cara yang berbeda untuk mengasilkan hasil yang sama

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

Yang sulit bukan membuat program komputer, tapi membuat draf perhitungan seperti ini

TIDAK BISA MEMBUAT KONSEP INITIDAK BISA JUGA MEMBUAT PROGRAM

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

Ini tidak diajarkan dalam pelajaran algoritma,Karena pengetahuanini milik semua orang.

TIDAK BISA MEMBUAT KONSEP INITIDAK BISA JUGA MEMBUAT PROGRAM

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

Ini bukan pelajaran algoritma,

TIDAK BISA MEMBUAT KONSEP INITIDAK BISA JUGA MEMBUAT PROGRAM

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

7425 / 3600 = 22 * 3600 = 72007425 – 7200 = 225225 / 60 = 33 * 60 = 180225 – 180 = 45

7425 2

7200

225

7425 / 3600

2 * 3600

7425 - 7200

3225 / 60

180

3 * 60

45

225 - 180Kerangka berpikir, bila

setiap nilai disimpan dalam sebuah variabel

Ada 7 variabel, yang diilustrasikan dengan

gambar kotak

7425 2

7200

225

J = Detik / 3600

X = J * 3600

Y = Detik - X

3M = Y / 60

180

Z = M * 60

45

D = Y - Z

Detik J

X

YM

Z

D

1

2

3

4

5

6

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 algoritmaAda 7 variabel, yang diilustrasikan dengan gambar

kotak

7425 2

7200

225

J = Detik / 3600

X = J * 3600

Y = Detik - X

3M = Y / 60

180

Z = M * 60

45

D = Y - Z

Detik J

X

YM

Z

D

1

2

3

4

5

6

7425 2

225

J = Detik / 3600

Y = Detik – J * 3600

3M = Y / 60

45

D = Y – M * 60

Detik J

Y

M

D

1

2

3

4

Dibuat menjadi : 4 langkahAsli : 6 langkah

7 variabel 5 variabel

7425 2

225

J = Detik / 3600

Y = Detik – J * 3600

3M = Y / 60

45

D = Y – M * 60

Detik J

Y

M

D

1

2

3

4

Setelah menjadi : 4 langkah

7425 2J = Detik / 3600

3

M = ( Detik – J * 3600 ) / 60

45

D = ( Detik – J * 3600 ) – M * 60

Detik J

M

D

1

2

Dibuat menjadi : 3 langkah

3

5 variabel 4 variabel

7425 2

7200

225

J = Detik / 3600

X = J * 3600

Y = Detik - X

3M = Y / 60

180

Z = M * 60

45

D = Y - Z

Detik J

X

YM

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 " ;

}

74252 Jam 3 Menit 45 Detik

Di monitor terlihat :

1

2

3

4

5

6

6 langkah

7 variabel

7425 2

225

J = Detik / 3600

Y = Detik – J * 3600

3M = 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 " ;

}

74252 Jam 3 Menit 45 Detik

Di monitor terlihat :

1

2

3

4

5 variabel

7425 2J = Detik / 3600

3

M = ( Detik – J * 3600 ) / 60

45

D = ( Derik – J * 3600 ) – M * 60

Detik J

M

D

1

2

3 langkah

3

#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 " ;

}

1

2

3

74252 Jam 3 Menit 45 Detik

Di monitor terlihat :4 variabel

#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 ";

Dapat dipaksakan menjadi:

yangdisediakan

olehBahasa Pemrograman

harusmemahami

karakteristik dan fasilitas yang disediakan

olehBahasa Pemrograman

KONSEP penyelesaian

Draf

7425 / 3600 = 2 sisa 225

225 / 60 = 3 sisa 45

Didapat :

2 Jam3 Menit45 Detik

Tidak rinci, darimana mendapatkan nilai sisa

LENGKAPdanRINCI

7425 / 3600 = 2 7425 / 3600 sisa 225

225/ 60 = 3 225 / 60 sisa 45

Bahasa pemrograman menyediakan instruksi untuk menghitung sisa pembagian

7425 / 3600 = 2 7425 / 3600 sisa 225

225/ 60 = 3 225 / 60 sisa 45

7425 / 3600 = 2 7425 % 3600 = 225

225 / 60 = 3 225 % 60 = 45

Adalah operator modulus (sisa pembagian)

%

Ditulis :

7425 / 3600 = 2 7425 % 3600 = 225

225 / 60 = 3 225 % 60 = 45

7425 2

225

7425 / 3600

3225 / 60

45Kerangka

berpikir, bila setiap nilai

disimpan dalam sebuah variabel

7425 / 3600 = 2 7425 % 3600 = 225

225 / 60 = 3 225 % 60 = 45

7425 % 3600

225 % 60

7425 2

225

7425 / 3600

3225 / 60

45

7425 % 3600

225 % 60

7425 2

225

J = Detik / 3600

3M = X / 60

45

X = Detik % 3600

D = X % 60

Detik J

M

D

X

7425 2

225

J = Detik / 3600

3M = X / 60

45

X = Detik % 3600

D = X % 60

Detik J

M

D

X

1. J = Detik / 3600

2. X = Detik % 3600

3. M = X / 60

4. D = X % 60

Sesuai dengan kaidah penulisan algoritma

7425 2

225

J = Detik / 3600

3M = X / 60

45

X = Detik % 3600

D = X % 60

Detik J

M

D

X

7425 2J = Detik / 3600

3

M = (Detik % 3600 ) / 60

45

D = Detik % 3600 ) % 60

Detik J

M

D

11

2

3

4

4 langkah

2

3

3 langkah

7425 2

225

J = Detik / 3600

3M = 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 " ;

}

7425 2J = Detik / 3600

3

M = (Detik % 3600 ) / 60

45

D = Detik % 3600 ) % 60

Detik J

M

D

12

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 " ;

}

#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 :