Nih, buat yang pada gak bisa download listingnya, bisa copas kode di bawah ini trus simpen dengan file extension *.CPP :
#include<stdio.h>
#include<math.h>
#include<conio.h>
int main() {
int dec=0,flag=0.0;
int bin, bit;
double exp=0.0;
lagi:
clrscr();
printf("Masukkan bilangan biner :");
scanf("%d",& bin);
while (bin) {
bit=bin%10;
if (bit!=0 && bit!=1) {
flag=1;}
bin=bin/10;
dec=dec+bit*pow(2,exp);
exp++;
}
if(flag==1) {printf("\n Bukan Angka biner ! \n");
printf("Silahkan ulangi lagi ! \n");
getch();
flag=0;
exp=0.0;
dec=0;
goto lagi; }
else {
printf("\n Nilai dalam Desimal : %d \n",dec);}
getch();
return (0);
}
Output Program :
Output saat program dijalankan.
Output Saat dimasukkan bilangan biner.
Output saat terjadi kesalahan penulisan
Logika Program Biner :
Program ini merupakan program yang tujuannya adalah melatih kita dalam penggunaan perintah – perintah umum dalam C++ seperti PRINTF, SCANF, WHILE dan GOTO.
Pada laporan kali ini, saya akan menulis tentang program untuk konversi nilai dari binary ke decimal. Untuk itu, perlu dilakukan beberapa pendeklarasian terlebih dahulu. Pada bagian deklarasi, saya mendeklarkan beberapa variable yang akan saya gunakan, yaitu bin, bit dan dec dalam tipe Integer ( int ), kemudian exp dalam double, dan flag.
Pada saat dijalankan, program akan meminta user untuk memasukkan angka biner. Kemudian, program akan masuk ke dalam blok perulangan WHILE. Di dalam blok perulangan tersebut, akan dilakukan pengecekan nilai yang diinputkan oleh user. Cara pengecekannya adalah dengan membagi nilai user dengan angka 10. Perintahnya adalah bit = bin%10 . Apabila “sisa pembagiannya” (bit) tidak sama dengan 1 atau 0, maka program akan merubah nilai flag menjadi 1 kemudian langsung keluar dari perulangan tanpa menjalankan perintah selanjutnya. Bila sisa pembagian dari nilai user adalah 1 atau 0, maka program akan menjalankan proses perhitungan berikut :
bin=bin/10;
dec=dec+bit*pow(2,exp);
exp++;
setelah nilai dari bin menjadi 0, maka program akan keluar dari perulangan WHILE.
Setelah keluar dari perulangan, ada statement kondisi untuk menyeleksi nilai dari variable flag. Untuk menyeleksi nilai flag tersebut, kita menggunakan perintah IF … Else. Jika nilai dari flag tersebut adalah 1, maka program akan memberitahukan user bahwa nilai yang diinputkan bukanlah nilai binary. Kemudian, program akan mengulang kembali ke awal untuk meminta user memasukkan nilai binary, karena ada perintah GOTO ( GOTO adalah perintah yang digunakan untuk mengalihkan program ke baris tertentu sesuai keinginan kita ). Jika nilai flag adalah 0, maka program akan mencetak hasil dari perhitungan di atas. Kemudian program akan selesai karena ada perintah RETURN.
Contoh Soal untuk pembuktian Listing :
Bila kita masukkan nilai 101 maka program akan langsung beralih ke baris perintah
bit=bin%10;
tanda % dalam perhitungan, mewakili sisa pembagian ( modulo ). Karena hasilnya adalah bit = 1, maka program berlanjut ke
bin=bin/10;
dec=dec+bit*pow(2,exp);
exp++;
kemudian, bin = 101/10 maka bin = 10 ( karena hasil dalam int ). Lalu dec = 0 + 1*pow(2,0) maka dec = 1. Pow adalah fungsi matematika untuk pangkat. Nilai awal dec dan exp adalah 0. Nilai exp bertambah karena ada perintah exp++ dibawahnya. Tanda ++ menandakan nilai akan bertambah secara otomatis. Karena nilai bin masih memenuhi syarat, maka perulangan akan terjadi kembali.
bit = 10%10 => 0
Untuk bin = 10 maka,
bin = 10/10 => 1
dec = 1+0*pow(2,1) => dec = 1
bit =1%10 => 1
kemudian, perulangan selanjutnya adalah bin =1 maka,
bin = 1/10 => 0
dec = 1 + 1*pow(2,2) => dec = 1 + 4 => dec = 5
program akan keluar dari perulangan karena nilai bin sudah tidak memenuhi lagi. Maka, hasil akhir dari proses konversi nilai binary 101 ke nilai decimal adalah 5. ( dapat dilihat pada output program ).
Di tunggu Jempol atasnya sama komentarnya dari kawan – kawan sekalian.
loading...
loading...





October 7th, 2009 at 10:31 pm
waah, saya tidak ikut praktikum pertama gara-gara telat…sayang sekali
loading...
loading...
October 7th, 2009 at 10:44 pm
Ada2 aja loe bie…bisa sampe telat begitu…hahaha…
loading...
loading...
October 8th, 2009 at 5:54 pm
aduuhh..mau tpi saya g sekelas..
sama g ya?
truus cuma suruh buat logikanyaa..
mauu dun logikanya..:P
loading...
loading...
October 8th, 2009 at 6:16 pm
Mau apaan kamu, iva ? Aduh, kalo masalah logika, silahkan sesuaikan dengan logika berfikir anda…hahha…
Kasih jempol sama rate artikelnya yah….
loading...
loading...
October 12th, 2009 at 10:21 am
cid thanks y listingnya, cos w lom nyatet kmrn, oiya cid w pgn tanya tu tugas warta warga kaya apa cid w masih g ngerti?????????
loading...
loading...
October 12th, 2009 at 6:03 pm
seep, sama2 bro…
Maksudnya tugas wartawarga apaan ? kalo kamu dapet tugas softskills dari dosen pengampu ( melalui Lecturer Message ), kamu mengerjakannya di BLOG PRIBADI. Baru kemudian di submit melalui menu “Tugas” yang ada di studentsite. Kalau di Wartawarga itu, sifat tulisannya bebas. Tidak berbau perkuliahan…
loading...
loading...
October 14th, 2009 at 1:05 am
cid…gw ngetest ya!
loading...
loading...
November 28th, 2009 at 5:07 pm
cara pake perintah GOTO gimana y?
loading...
loading...
November 28th, 2009 at 6:31 pm
@uing, perintah GOTO di C++ ? hampir sama dengan perintah GOTO pada pascal.
Pertama, kamu harus memposisikan sebuah label yang nantinya akan dijadikan tempat untuk kembali (goto)
Pada contoh program saya diatas, ada sebuah label lagi:…nah, nantinya, pada blok main program saya akan kembali ke posisi tersebut dengan menggunakan perintah goto seperti ini :
goto lagi;
mudah -mudahan bisa membantu
loading...
loading...