program 2
-
Upload
yoga-pawitra -
Category
Documents
-
view
8 -
download
2
description
Transcript of program 2
3.1.1. Program 2: Mengkonversi Bilangan Desimal ke Biner dan
Sebaliknya
Pada program ini bertujuan untuk mengkonversi bilangan desimal ke
biner dan bilangan biner ke desimal
Gambar 3.2 Flowchart Program 2
Dari alur urutan flowchart diatas maka dapat membentuk pseudocodenya
sebagai berikut :
Pseudocode : Program 2
1. MULAI
2. READ menu
3. SWICTH (menu)
4. case 1:
5. READ bil
6. Cek←bil
7. Counter←0
8. WHILE cek > 0 DO
9. Cek←cek/2
10. Counter ++
11. ENDWHILE
12. FOR X←0 TO <counter DO
13. IF bil MOD 2 == 0 THEN
14. Memory [x]←0
15. ELSE
16. Memory[x]←1
17. ENDIF
18. Bil=bil/2
19. ENDFOR
20. WRITE “biner”
21. FOR x ←counter-1 TO 0
22. WRITE memory [x]
23. ENDFOR
24. READ tombol
25. IF tombol =’Y’||’y’ THEN
26. GOTO 2
27. ELSE
28. BREAK
29. Case 2
30. READ bil
31. Cek←bil
32. Counter←0
33. WHILE cek > 0 DO
34. Cek←cek/w
35. Counter ++
36. ENDWHILE
37. dec←0
38. FOR X←0 TO < counter DO
39. dit←bil%w;
40. dec←dec+(dit*pow(2x1)
41. bil←bil/10
42. ENDFOR
43. WRITE dec
44. READ tombol
45. IF tombol =’Y’||’y’ THEN
46. GOTO 2
47. ELSE
48. BREAK
49. ENDIF
50. Case 3 :
51. EXIT
52. Default ;
53. WRITE “salah input”
54. READ tombol
55. IF tombol =’Y’||’y’ THEN
56. GOTO 2
57. ELSE
58. BREAK
59. ENDIF
60. SELESAI
Jika flowchart dan pseudocode sudah selesai maka dapat dilanjutkan
dengan membuat programnya sebagai berikut :
1. #include <iostream>
2. #include <cmath>
3. #include <conio.h>
4. #include <windows.h>
5. #include <limits>
6. using namespace std;
7. main()
8. {
9. long int menu,cek,bil,x,counter,memori[100],dit,dec;
10. char tombol;
11. ulang:
12. system("cls");
13. cout<<"------------- KONVERSI BILANGAN -------------"<<endl;
14. cout<<"----------------- KELOMPOK 1
-----------------"<<endl<<endl;
15. cout<<"MENU:"<<endl;
16. cout<<"1. Desimal ke Biner\t[tekan 1]";
17. cout<<"\n2. Biner ke Desimal\t[tekan 2]";
18. cout<<"\n3. Exit\t\t\t[tekan 3]";
19. cout<<"\nPilihan: ";
20. if (!(cin>>menu)){
21. cout<<"Input salah";
22. cin.clear();
23. cin.ignore(numeric_limits<streamsize>::max(),'\n');
24. getch();
25. goto ulang;
26. }
27. switch(menu){
28. case 1:
29. cout<<"\nInput Decimal: ";
30. while (!(cin>>bil)){
31. cout<<"Input salah\nInput Desimal: ";
32. cin.clear();
33.
cin.ignore(numeric_limits<streamsize>::max(),'\n');
34. }
35. cek=bil;
36. counter=0;
37. while(cek>0){
38. cek=cek/2;
39. counter++;
40. }
41. for (x=0; x<counter; x++){
42. if (bil%2==0){
43. memori[x]=0;
44. }
45. else{
46. memori[x]=1;
47. }
48. bil=bil/2;
49. }
50. cout<<"Biner: ";
51. for (x=counter-1; x>=0; x--){
52. cout<<memori[x];
53. }
54. cout<<"\n\nUlangi?\t[y/t]\t";
55. cin>>tombol;
56. if (tombol=='Y'||tombol=='y')
57. goto ulang;
58. else
59. cout<<"\nTerima Kasih";
60. getch();
61. break;
62. case 2:
63. cout<<"\nInput Biner: ";
64. while (!(cin>>bil)){
65. cout<<"Input salah\nInput Biner: ";
66. cin.clear();
67.
cin.ignore(numeric_limits<streamsize>::max(),'\n');
68. }
69. cek=bil;
70. counter=0;
71. while(cek>0){
72. cek=cek/10;
73. counter++;
74. }
75. dec=0;
76. for (x=0; x<counter; x++){
77. dit=bil%10;
78. dec+=(dit*pow(2,x));
79. bil=bil/10;
80. }
81. cout<<"Decimal: "<<dec;
82. cout<<"\n\nUlangi?\t[y/t]\t";
83. cin>>tombol;
84. if (tombol=='Y'||tombol=='y')
85. goto ulang;
86. else
87. cout<<"\nTerima Kasih";
88. getch();
89. break;
90. case 3:
91. cout<<"\nTerima Kasih";
92. getch();
93. exit(0);
94. break;
95. default:
96. cout<<"Salah! pilih yang benar";
97. cout<<"\n\nUlangi?\t[y/t]\t";
98. cin>>tombol;
99. if (tombol=='Y'||tombol=='y')
100. goto ulang;
101. else
102. cout<<"\nTerima Kasih";
103. getch();
104. break;
105. }
106. return 0;
107. }
Pada kode program diatas konversi bilangan desimal ke biner proses yang
pertama dilakukan adalah input bil yang sama dengan cek, kemudian menset
counter=0 yang dimana counter ini digunakan untuk menghitung banyak digit
bilangan yang diinput dan kemudian membuat array 2 dimensi yang nantinya
akan diisi oleh hasil penkonversian, dan kemudian proses dilanjutkan dengan
cek/2 yang digunakan untuk menentukan banyak counter. Setelah didapatkan
banyak counter kemudian bilangan akan di mod counter-1 dan hasil penghitungan
tersebut akan disimpan pada array memory 0 dan begitu pula seterusnya hingga
penggunalang sebanyak counter, setelah memory array sudah terisi sebanyak
counter maka isi dari array akan di panggil dari yang terakhir di inputkan hingga
ke yang paling pertama.
Pada konversi bilangan biner ke desimal proses awal yang dilakukan adalah
penginputan bilangan yang sama dengan cek, kemudian men set counter=0 dan
menghitung banyak bilangan dengan yang akan menjadi nilai counter kemudian
menset nilai dec=0. Setelah nilai counter di dapatkan kemudian proses dilanjutkan
ke pengulangan yang akan dilakukan dari x=0, yang pertamaa dit akan di mod 10,
kemudian dec ditambah dit dikali 2 akar x kemudian bil dibagi 10 dan proses ini
akan di ulang sebanyak counter-1 dan nilai dec terakhir adalah hasil dari
penkonversian dari biner ke desimal. Program ini sudah dilengkapi dengan
validator jadi jika input bukan berupa angka maka proses akan di ulang dari awal
hingga inputan benar, hasil dari program ini dapat dilihat pada trace berikut ini :
Trace : Desimal ke Biner
Input : menu =1 dan bil 6
Proses : cek = 6
Counter = 0
Cek>0 (benar)
Cek = 6/2 = 3
Counter = 1
Cek > 0 (benar)
Cek = 3/2 = 1
Counter = 2
Cek > 0 (benar)
Cek = ½ = 0
Counter = 3
Cek > 0 (salah)
X = 0 ( for 0 - < counter )
Bil % 2 = 0 (6 % 2 = 0 ) (benar)
Memori[0] = 0
Bil = 6/2 = 3
X = 1
3 % 2 = 0 (salah)
Memori[1]=1
Bil = 3/2 = 1
X = 2
1 % 2 = 0 (salah)
Memori[2] = 1
Bil = ½ = 0
Out : “Biner :”
X = (counter-1)(2)
Out : memori[2] = 1
X = 1
Out : memori[1] = 1
X = 0
Out : memori[0] = 0
Out : Biner = 110
Trace : Biner ke Desimal
Input : menu = 2 dan bill = 110
Proses : cek = 110
Counter = 0
Cek > 0 (ya)
Cek = 110/10 = 11
Counter = 1
Cek > 0 (ya)
Cek = 11/10 = 1
Counter = 2
Cek > 0 (ya)
Cek = 1/10 = 0
Counter = 3
Cek > 0 (salah)
Dec = 0
X = 0 ( For 0 - < counter )
Dit = 110 % 10 = 0
Dec = 0+(0*pow(2,1)) = 0
Bil = 110/10 = 11
X = 1
Dit = 11 % 10 = 1
Dec = 0 + (1*pow(2,1)) =2
Bil = 11/10 = 1
X = 2
Dit = 1 % 10 = 1
Dec = 2 + (1*pow(2,2)) =6
Bil = 1/10 = 0
Output : dec = 6