program 2

12
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

description

program c++

Transcript of program 2

Page 1: 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 :

Page 2: program 2

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

Page 3: program 2

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 :

Page 4: program 2

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

Page 5: program 2

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:

Page 6: program 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);

Page 7: program 2

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

Page 8: program 2

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

Page 9: program 2

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

Page 10: program 2

Output : dec = 6