test

Senin, 08 November 2010

KARNAUGH MAP DALAM BAHASA C


#include <stdio.h>
#include <conio.h>
#define ESC 27
void main() {
int kol[4];
int a;
char exit;
while(1){
                        clrscr();
                        printf("\n\t\t\t--==Peta Karnaugh 2 Variabel==--\n");
                        printf("\n\t\t\t\t    |B' |B  |");
                        printf("\n\t\t\t\t  --|---|---|");
                        printf("\n\t\t\t\t  A'| 0 | 1 |");
                        printf("\n\t\t\t\t  --|---|---|");
                        printf("\n\t\t\t\t  A | 2 | 3 |");
                        printf("\n\t\t\t\t  --|---|---|");
                        printf("\n\n=------------------------------------------------------------------------------=");
                        for(a=0;a<4;a++)
                        {
                                    printf("\t\tMasukkan nilai (1 atau 0) untuk minterm ke-%d: ",a);
                                    scanf("%d",&kol[a]);
                                    while(kol[a]!=0 && kol[a]!=1)
                                    {
                                                printf("\t\tNilai yang dimasukkan (%d), bukan 1 atau 0\n",a);
                                                printf("\t\tMasukkan nilai (1 atau 0) untuk minterm ke-%d: ",a);
                                                scanf("%d",&kol[a]);
                                    }
                        }
                        printf("=---------------------------------Penyelesaian---------------------------------=\n");
                        printf("\nPeta Karnaugh:");
                        printf("\n\t\t\t  |B' |B  |");
                        printf("\n\t\t\t--|---|---|");
                        printf("\n\t\t\tA'| %d | %d |",kol[0],kol[1]);
                        printf("\n\t\t\t--|---|---|");
                        printf("\n\t\t\t\A | %d | %d |",kol[2],kol[3]);
                        printf("\n\t\t\t\--|---|---|");
                        printf("\n");
                        if(kol[0]==0 && kol[1]==0 && kol[2]==0 && kol[3]==0)
                        {
                                    printf("\n   --==fungsi boolean tidak dimungkinkan karena semua minterm bernilai 0==--\n");
                                    getch();
                                    goto lagi;
                        }
                        printf("\nFungsi booleannya adalah: \n ");
                        if(kol[0]==1)
                        {
                                    printf("A'B' ");
                                    if(kol[1]==1 || kol[2]==1 || kol[3]==1)
                                    {
                                                printf("+ ");
                                    }
                        }
                        if(kol[1]==1)
                        {
                                    printf("A'B ");
                                    if(kol[2]==1 || kol[3]==1)
                                    {
                                                printf("+ ");
                                    }
                        }
                        if(kol[2]==1)
                        {
                                    printf("AB' ");
                                    if(kol[3]==1)
                                    {
                                                printf("+ ");
                                    }
                        }
                        if(kol[3]==1)
                        {
                                    printf("AB ");
                        }
                        lagi:
                        printf("\n\n\t-==tekan ESC untuk keluar atau sembarang tombol untuk kembali==-");
                        exit=getch();
                        if(exit==27)
                        {
                        break;
                        }
            }
}


LOGIKA PROGRAM :


#include <stdio.h>
#include <conio.h>
#define ESC 27

Kalimat yang diawali (#) merupakan are preprocessor directive dan baris kode ini tidak dieksekusi, melainkan suatu indikasi untuk compiler. <stdio.h> Sebagai pendeklarasian yang ada di dalam library file .h dalam bahasa C, dengan kegunaan untuk menangkap dan mengeluarkan/menampilkan data, yang artinya library deklarasi standar input / output. Dengan menggunakan std i/o yang nantinya digunakan pada program, contohnya penggunaan printf untuk menampilkan suatu pesan ke layar atau untuk menulis keluaran ke stdout. Sedangkan fungsi dari perintah #include <conio.h> untuk mengaktifkan fungsi dari clrscr(); dan di dalam <conio.h> juga terdapat perintah getch(); . Begitu juga untuk #define ESC 27 yang berfungsi untuk mengaktifkan ESC atau fungsi exit pada program ini.


void main() {
int kol[4];
int a;
char exit;
while(1){
                        clrscr();
                        printf("\n\t\t\t--==Peta Karnaugh 2 Variabel==--\n");
                        printf("\n\t\t\t\t    |B' |B  |");
                        printf("\n\t\t\t\t  --|---|---|");
                        printf("\n\t\t\t\t  A'| 0 | 1 |");
                        printf("\n\t\t\t\t  --|---|---|");
                        printf("\n\t\t\t\t  A | 2 | 3 |");
                        printf("\n\t\t\t\t  --|---|---|");
                        printf("\n\n=------------------------------------------------------------------------------=");
                        for(a=0;a<4;a++)

            Script yang di awali oleh statemen void main() { merupakan bagian utama dari program ini. Program utama, biasanya di akhiri oleh kurung kurawal tutup (}) sebanyak kurung kurawal buka ({) yang di gunakan pada program utama disini. Setelah masuk pada bagian utama program, pertama – tama kita harus mendelarasikan tipe data pada program ini, disini kita menggunakan tipe data integer pada kol[4];, tipe data integer juga di gunakan pada variable a. untuk exit disini kita menggunakan tipe data char atau karakter. Setelah mendeklarasikan tipe data program, selanjutnya kita mulai dengan perulangan while,  perintah clrscr(); berfungsi untuk menghapus atau membersihkan layar program pada saat program di jalankan. Di bawah perulangan while terdapat beberapa perintah printf , yaitu sebuah perintah yang di gunakan di dalam program untuk mencetak sebuah statemen yang terdapat di antara tanda petik (”..”). Disini kita akan mencetak gambaran sebuah peta karnaugh map dengan 2 variablenya yaitu variable A dan B, penggambaran karnaugh map yang akan di cetak pada program, kurang lebih seperti pada gambar berikut ini :


B’
B
A’
0
1
A
2
3

for(a=0;a<4;a++)
                        {
                                    printf("\t\tMasukkan nilai (1 atau 0) untuk minterm ke-%d: ",a);
                                    scanf("%d",&kol[a]);
                                    while(kol[a]!=0 && kol[a]!=1)
                                    {
                                               

            Setelah kita membuat script untuk mencetak penggambaran karnaugh map dengan dua variable, selanjutnya pada script ini kita akan membuat inputan nilai yang akan di aplikasikan ke dalam karnaugh map pada program ini. perintah scanf("%d",&kol[a]); di gunakan untuk mebuat inputan pada program("%d",&kol[a]) di gunakan untuk membaca sebuah bilangan yang bertipe data integer, yang nantinya inputan bilangan pertama akan di letakkan di kolom a dan seterusnya dengan menggunakan perulangan while dimana kol[a]!=0 && kol[a]!=1.
           
printf("\t\tNilai yang dimasukkan (%d), bukan 1 atau 0\n",a);
                                                printf("\t\tMasukkan nilai (1 atau 0) untuk minterm ke-%d: ",a);
                                                scanf("%d",&kol[a]);
                                    }
                        }
            Script di atas akan di eksekusi jika nilai inputan yang diinputkan oleh user bukan angka 1 atau angka 0 (nol). Jika nilai inputan yang di inputkan bukan angka 1 atau 0 (nol), maka program akan mencetak kalimat “Nilai yang dimasukkan (0), bukan 1 atau 0” ,jika  terus menginputkan nilai yang bukan angka 1 atau 0, maka bila menekan enter, program akan mencetak kalimat “ Masukkan nilai (1 atau 0) untuk minterm ke-0: ” hingga user menginputkan nilai 1 atau 0. Tetapi jika user menginputkan angka 1 atau 0 (nol) maka script di atas tidak akan di eksekusi oleh program.




}
                        printf("=---------------------------------Penyelesaian---------------------------------=\n");
                        printf("\nPeta Karnaugh:");
                        printf("\n\t\t\t  |B' |B  |");
                        printf("\n\t\t\t--|---|---|");
                        printf("\n\t\t\tA'| %d | %d |",kol[0],kol[1]);
                        printf("\n\t\t\t--|---|---|");
                        printf("\n\t\t\t\A | %d | %d |",kol[2],kol[3]);
                        printf("\n\t\t\t\--|---|---|");
                        printf("\n");
                       

            Setelah kita membuat script untuk menginputkan nilai, selanjutnya kita akan membuat penggambaran karnaugh map dengan menggunakan nilai yang diinputkan oleh user sebelumnya dengan menggunakan script di atas. Nilai pertama yang diinputkan akan di letakkan pada cell 0, nilai yang ke dua diinputkan akan di letakkan pada cell 1, dan nilai yang ketiga diinputkan akan di letakkan pada cell kedua, serta nilai yang diinputkan keempat akan diinputkan pada cell yang ketiga. Berikut ilustrasinya :

            Misalkan user menginputkan nilai sebagai berikut :

·         Nilai pertama : 1      => Di tempatkan pada cell 0
·         Nilai kedua     : 0      => Di tempatkan pada cell 1
·         Nilai ketiga     : 1      => Di tempatkan pada cell 2
·         Nilai keempat : 0     => Di tempatkan pada cell 3

Berikut ini penggambaran karnaugh map-nya :



B’
B
A’
1
(0)
0
(1)
A
1
(2)
0
(3)







if(kol[0]==0 && kol[1]==0 && kol[2]==0 && kol[3]==0)
                        {
                                    printf("\n   --==fungsi boolean tidak dimungkinkan karena semua minterm bernilai 0==--\n");
                                    getch();
                                    goto lagi;
                        }

            Script di atas akan di eksekusi jika semua inputan yang diinputkan bernilai 0 (nol), jika user menginputkan nilai 0 (nol) seluruhnya maka program akan mencetak kalimat “--==fungsi boolean tidak dimungkinkan karena semua minterm bernilai 0==--“ dan program akan menuju ke statemen “lagi”.


printf("\nFungsi booleannya adalah: \n ");
                        if(kol[0]==1)
                        {
                                    printf("A'B' ");
                                    if(kol[1]==1 || kol[2]==1 || kol[3]==1)
                                    {
                                                printf("+ ");
                                    }
                        }
                        if(kol[1]==1)
                        {
                                    printf("A'B ");
                                    if(kol[2]==1 || kol[3]==1)
                                    {
                                                printf("+ ");
                                    }
                        }
                        if(kol[2]==1)
                        {
                                    printf("AB' ");
                                    if(kol[3]==1)
                                    {
                                                printf("+ ");
                                    }
                        }
                        if(kol[3]==1)
                        {
                                    printf("AB ");
                        }

            Setelah menggambarkan karnaugh map dari nilai – nilai yang diinputkan sebelumnya, selanjutnya kita akan membuat fungsi Boolean dari karnaugh map tersebut. Untuk membuat fungsi Boolean pada program ini, kita menggunakan pengkondisian if dimana jika kolom 0 ( atau cell 0 ) bernilai satu, maka program akan mencetak  A’B’. Jika kolom 0 bernilai 0, maka program tidak akan mencetak A’B’. Lalu jika kolom 1, 2 dan 3 bernilai satu, maka program akan mencetak tanda + setelahnya.

Pada pengkondisian yang kedua, jika kolom 1 bernilai 1, maka program akan mencetak A’B. Jika kolom 1 bernilai 0, maka A’B tidak akan di cetak oleh program. Selanjutnya jika kolom 2 dan 3 bernilai 1, maka program akan mencetak tanda “ + “ setelahnya. Jika kolom selanjutnya bernilai 0 maka tanda “ + “ tidak akan di cetak oleh program.

Pada pengkondisian yang ketiga, jika kolom 2 bernilai 1, maka program akan mencetak AB’, jika kolom tersebut bernilai 0, maka AB’ tidak akan di cetak oleh program. Selanjutnya jika kolom 3 bernilai 1 maka program akan mencetak tanda “ + “ setelahnya.

Dan pada pengkondisian yang terakhir jika kolom 3 bernilai 1, maka program akan mencetak AB. Disini program tidak akan mencetak tanda “ + “ karena ini merupakan cell terakhir pada program ini.

Diilustrasikan sebagai berikut :

·         Nilai kolom 0 : 1
·         Nilai kolom 1 : 1
·         Nilai kolom 2 : 1
·         Nilai kolom 3 : 1
Maka :


B’
B
A’
1
(0)
1
(1)
A
1
(2)
1
(3)

Fungsi booleannya :
                                    A’B’ + A’B + AB’ + AB

·         Nilai kolom 0 : 1
·         Nilai kolom 1 : 1
·         Nilai kolom 2 : 1
·         Nilai kolom 3 : 0

B’
B
A’
1
(0)
1
(1)
A
1
(2)
0
(3)

Fungsi booleannya :
                                                A’B’ + A’B + AB’

·         Nilai kolom 0 : 1
·         Nilai kolom 1 : 1
·         Nilai kolom 2 : 0
·         Nilai kolom 3 : 0


B’
B
A’
1
(0)
1
(1)
A
0
(2)
0
(3)

Fungsi booleannya :
                                               
                                                A’B’ + A’B

·         Nilai kolom 0 : 1
·         Nilai kolom 1 : 0
·         Nilai kolom 2 : 0
·         Nilai kolom 3 : 0


B’
B
A’
1
(0)
0
(1)
A
0
(2)
0
(3)
Fungsi booleannya :
                                                A’B’

Tidak ada komentar:

Posting Komentar