#include
#include
void main(){
int s,r,pil1,pil2;
do{
clrscr();
printf("Input Nilai S: ");
scanf("%d",&s);
printf("Input Nilai R: ");
scanf("%d",&r);
}
while (!((r==0||r==1)&&(s==0||s==1)));
printf("\nPilih Flip-Flop\n\t1.FF-RS\n\t2.FF-RS berdetak");
printf("\nPilihan: ");
fflush(stdin);
scanf("%d",&pil1);
switch(pil1){
case 1:
printf("\nPilihan Model:\n\t1.Larangan\n\t2.Set\n\t3.Reset\n\t4.Tetap");
printf("\nPilihan: ");
fflush(stdin);
scanf("%d",&pil2);
switch(pil2){
case 1:
if(r==0&&s==0)printf("\nQ =1\nQ'=1");
else printf("Bukan Model Ini");
break;
case 2:
if(r==1&&s==0)printf("\nQ =1\nQ'=0");
else printf("Bukan Model Ini");
break;
case 3:
if(r==0&&s==1)printf("\nQ =0\nQ'=1");
else printf("Bukan Model Ini");
break;
case 4:
if(r==1&&s==1)printf("\nTidak Berubah");
else printf("Bukan Model Ini");
break;
default:
printf("\nSalah Pilih");
break;}
break;
case 2:
printf("\nPilihan Model:\n\t1.Larangan\n\t2.Set\n\t3.Reset\n\t4.Tetap");
printf("\nPilihan: ");
fflush(stdin);
scanf("%d",&pil2);
switch(pil2){
case 1:
if(r==1&&s==1)printf("\nQ =1\nQ'=1");
else printf("Bukan Model Ini");
break;
case 2:
if(r==0&&s==1)printf("\nQ =1\nQ'=0");
else printf("Bukan Model Ini");
break;
case 3:
if(r==1&&s==0)printf("\nQ =0\nQ'=1");
else printf("Bukan Model Ini");
break;
case 4:
if(r==0&&s==0)printf("\nTidak Berubah");
else printf("Bukan Model Ini");
break;
default:
printf("\nSalah Pilih");
break;}
break;
default:
printf("\nSalah Pilih");
break;}
getch();
return;
}
Listing Program
#include
#include
#include
int main (void) {
int dec = 0, flag = 0.0;
int bin, bit;
double exp = 0.0;
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("\nBukan Angka biner ! \n");
printf("Silahkan ulangi lagi ! \n");
getch();
flag=0;
exp=0.0;
dec=0;
}
else {
printf("\nNilai dalam Desimal : %d \n",dec);
}
getch();
return 0;
}
Logika Program
Pada pembuatan program kali ini saya menggunakan perintah umum dalam C++ seperti PRINTF (digunakan untuk melakukan pencetakan output saat dirunning), SCANF, dan WHILE (digunakan untuk melakukan perulangan).
Program kali ini digunakan untuk mengkorvesikan bilangan biner ke dalam bilangan decimal. Kali ini saya akan mendeklarasikankan beberapa variable yang akan digunakan dalam pembuatan program, diantaranya bin, bit dan dec dalam tipe Integer ( int ), kemudian exp dalam double, dan flag.
Pada saat dirunning 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. Langkah pengecekan 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 :
Program kali ini digunakan untuk mengkorvesikan bilangan biner ke dalam bilangan decimal. Kali ini saya akan mendeklarasikankan beberapa variable yang akan digunakan dalam pembuatan program, diantaranya bin, bit dan dec dalam tipe Integer ( int ), kemudian exp dalam double, dan flag.
Pada saat dirunning 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. Langkah pengecekan 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++;
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 biner. Kemudian program akan selesai karena ada perintah RETURN.
Bila kita masukkan nilai 1011 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 = 1011/10 maka bin = 101 ( 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=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 = 1011/10 maka bin = 101 ( 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 = 101%10 => 1
Untuk bin = 100 maka,
bin = 101/10 => 10
dec = 1+1*pow(2,1) => dec = 3
Untuk bin = 100 maka,
bin = 101/10 => 10
dec = 1+1*pow(2,1) => dec = 3
bit =10%10 => 0
selanjutnya adalah
bin = 10/10 => 1
dec = 3 + 0*pow(2,2) => dec = 3 + 0 => dec = 3
selanjutnya adalah
bin = 10/10 => 1
dec = 3 + 0*pow(2,2) => dec = 3 + 0 => dec = 3
kemudian exp ++
bin = 1
kemudian masuk ke dalam proses
dec = 3 + 1*pow(2,3) => dec = 3 + 8 => dec = 11
Lalu melakukan pencetakan
printf("\nNilai dalam Desimal : %d \n",dec);
Output Program