Thursday, 20 April 2017

Menerapkan metode Breadth First Search dan Depth First Search menggunakan Python


# Breadth First Search (BFS)


          Breadth-first search adalah algoritma yang melakukan pencarian secara melebar yang       mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian mengunjungi semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu. Selanjutnya, simpul yang belum dikunjungi dan bertetangga dengan simpulsimpul yang tadi dikunjungi , demikian seterusnya. Jika graf berbentuk pohon berakar, maka semua simpul pada aras d dikunjungi lebih dahulu sebelum simpul-simpul pad aras d+1.

            Algoritma ini memerlukan sebuah antrian q untuk menyimpan simpul yang telah dikunjungi. Simpulsimpul ini diperlukan sebagai acuan untuk mengunjungi simpul-simpul yang bertetanggaan dengannya. Tiap simpul yang telah dikunjungu masuk ke dalam antrian hanya satu kali. Algoritma ini juga membutuhkan table Boolean untuk menyimpan simpul yang te lah dikunjungi sehingga tidak ada simpul yang dikunjungi lebih dari satu kali.

Nah disini kita langsung saja ke gambar grafik dan beserta contoh source code yang saya buat disini saya membuatnya menggunakan python


#Code Program

#contoh Peta
peta =  {'A':set(['B']),
         'B':set(['A','C','D']),
         'C':set(['B','E']),
         'D':set(['B','G','H']),
         'E':set(['C','F','G']),
         'F':set(['E']),
         'G':set(['D','E','I','J']),
         'H':set(['D','J']),
 'I':set(['G'])}
    

def bfs(graf, mulai, tujuan):
    queue = [[mulai]]
    visited = set()

    while queue:     
        # masukkan antrian paling depan ke variabel jalur
        jalur = queue.pop(0)

        # simpan node yang dipilih ke variabel state, misal jalur = C,B maka simpan B ke variabel state
        state = jalur[-1]

        # cek state apakah sama dengan tujuan, jika ya maka return jalur
        if state == tujuan:
            return jalur
        # jika state tidak sama dengan tujuan, maka cek apakah state tidak ada di visited
        elif state not in visited:
            # jika state tidak ada di visited maka cek cabang
            for cabang in graf.get(state, []): #cek semua cabang dari state
                jalur_baru = list(jalur) #masukkan isi dari variabel jalur ke variabel jalur_baru
                jalur_baru.append(cabang) #update/tambah isi jalur_baru dengan cabang
                queue.append(jalur_baru) #update/tambah queue dengan jalur_baru

            # tandai state yang sudah dikunjungi sebagai visited
            visited.add(state)

        #cek isi antrian
        isi = len(queue)
        if isi == 0:
            print("Tidak ditemukan")

# Hasil Program



#Depth First Search (DFS)


         Algoritma DFS (Depth First Search) adalah salah satu algoritma yang digunakan untuk pencarian jalur. Contoh yang dibahas kali ini adalah mengenai pencarian jalur yang melalui semua titik. 

         Algoritma ini mirip dengan Algoritma BFS (Breadth First Search) yang sudah dijelaskan sebelumnya. Jika Algoritma BFS (Breadth First Search) melakukan perhitungan secara terurut dari urutan pertama sampai urutan terakhir, maka algoritma ini melakukan kebalikannya, yaitu melakukan perhitungan secara terurut dari urutan terakhir. Setelah menghabiskan semua kemungkinan dari titik terakhir, barulah mundur ke titik-titik sebelumnya sampai pada titik pertama.

Nah disini kita langsung saja ke contoh source code yang saya buat disini saya membuatnya menggunakan python.


#Code Program
#contoh Peta
peta = {'A':set(['B']),
         'B':set(['A','C','D']),
         'C':set(['B','E']),
         'D':set(['B','G','H']),
         'E':set(['C','F','G']),
         'F':set(['E']),
         'G':set(['D','E','I','J']),
         'H':set(['D','J']),
 'I':set(['G'])}
    

def dfs(graf, mulai, tujuan):
    stack = [[mulai]]
    visited = set()

    while stack:     
        # masukkan antrian paling depan ke variabel jalur
        jalur = stack.pop(-1)

        # simpan node yang dipilih ke variabel state, misal jalur = C,B maka simpan B ke variabel state
        state = jalur[-1]

        # cek state apakah sama dengan tujuan, jika ya maka return jalur
        if state == tujuan:
            return jalur
        # jika state tidak sama dengan tujuan, maka cek apakah state tidak ada di visited
        elif state not in visited:
            # jika state tidak ada di visited maka cek cabang
            for cabang in graf.get(state, []): #cek semua cabang dari state
                jalur_baru = list(jalur) #masukkan isi dari variabel jalur ke variabel jalur_baru
                jalur_baru.append(cabang) #update/tambah isi jalur_baru dengan cabang
                stack.append(jalur_baru) #update/tambah queue dengan jalur_baru

            # tandai state yang sudah dikunjungi sebagai visited
            visited.add(state)

        #cek isi antrian
        isi = len(stack)
        if isi == 0:
            print("Tidak ditemukan")


# Hasil Program








      

Monday, 9 January 2017

Membuat rubik menggunakan basic4gl

Membuat rubik menggunakan basic4gl

Hasil Program



Coding Program

'variabel untuk posisi kamera
Dim pcamx# = 0
Dim pcamy# = 0
Dim pcamz# = 4

'variabel untuk posisi titik pandang
Dim prefx# = 0
Dim prefy# = 0
Dim prefz# = 0

'variabel perpindahan
Dim pindah# = 0.01

'variabel tekstur
Dim teksturkayu

teksturkayu = loadmipmaptexture("gambar/m.jpg")

glEnable(GL_TEXTURE_2D)

while true
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)
glLoadIdentity()

gluLookAt(pcamx#, pcamy#, pcamz#, prefx#, prefy#, prefz#, 0, 1, 0)

glBindTexture(GL_TEXTURE_2D, teksturkayu)

glBegin (GL_QUADS) 'sisi belakang  
    'glColor3f(1.0, 0.0, 0.0)
    glTexCoord2f(1,1)
    glVertex3f(1.0, 1.0, -1.0) 'kanan atas
   
    'glColor3f(0.0, 1.0, 0.0)
    glTexCoord2f(1,0)
    glVertex3f(1.0, -1.0, -1.0) 'kanan bawah
   
    'glColor3f(0.0, 0.0, 1.0)
    glTexCoord2f(0,0)
    glVertex3f(-1.0, -1.0, -1.0) 'kiri bawah
   
    'glColor3f(1.0, 0.0, 1.0)
    glTexCoord2f(0,1)
    glVertex3f(-1.0, 1.0, -1.0) 'kiri atas
glEnd()

glBegin (GL_QUADS) 'sisi depan  
    'glColor3f(1.0, 0.0, 0.0)
    glTexCoord2f(1,1)
    glVertex3f(1.0, 1.0, 1.0) 'kanan atas
   
    'glColor3f(0.0, 1.0, 0.0)
    glTexCoord2f(1,0)
    glVertex3f(1.0, -1.0, 1.0) 'kanan bawah
   
    'glColor3f(0.0, 0.0, 1.0)
    glTexCoord2f(0,0)
    glVertex3f(-1.0, -1.0, 1.0) 'kiri bawah
   
    'glColor3f(1.0, 0.0, 1.0)
    glTexCoord2f(0,1)
    glVertex3f(-1.0, 1.0, 1.0) 'kiri atas
glEnd()

glBegin (GL_QUADS) 'sisi kiri  
    'glColor3f(1.0, 0.0, 0.0)
    glTexCoord2f(0,1)
    glVertex3f(-1.0, 1.0, -1.0)
   
    'glColor3f(0.0, 1.0, 0.0)
    glTexCoord2f(1,1)
    glVertex3f(-1.0, 1.0, 1.0)
   
    'glColor3f(0.0, 0.0, 1.0)
    glTexCoord2f(1,0)
    glVertex3f(-1.0, -1.0, 1.0)
   
    'glColor3f(1.0, 0.0, 1.0)
    glTexCoord2f(0,0)
    glVertex3f(-1.0, -1.0, -1.0)
glEnd()

glBegin (GL_QUADS) 'sisi kanan  
    'glColor3f(1.0, 0.0, 0.0)
    glTexCoord2f(0,1)
    glVertex3f(1.0, 1.0, -1.0)
   
    'glColor3f(0.0, 1.0, 0.0)
    glTexCoord2f(1,1)
    glVertex3f(1.0, 1.0, 1.0)
   
    'glColor3f(0.0, 0.0, 1.0)
    glTexCoord2f(1,0)
    glVertex3f(1.0, -1.0, 1.0)
   
    'glColor3f(1.0, 0.0, 1.0)
    glTexCoord2f(0,0)
    glVertex3f(1.0, -1.0, -1.0)
glEnd()

glBegin (GL_QUADS) 'sisi atas  
    'glColor3f(1.0, 0.0, 0.0)
    glTexCoord2f(1,0)
    glVertex3f(1.0, 1.0, -1.0)
   
    'glColor3f(0.0, 1.0, 0.0)
    glTexCoord2f(1,1)
    glVertex3f(1.0, 1.0, 1.0)
   
    'glColor3f(0.0, 0.0, 1.0)
    glTexCoord2f(0,1)
    glVertex3f(-1.0, 1.0, 1.0)
   
    'glColor3f(1.0, 0.0, 1.0)
    glTexCoord2f(0,0)
    glVertex3f(-1.0, 1.0, -1.0)
glEnd()

glBegin (GL_QUADS) 'sisi bawah  
    'glColor3f(1.0, 0.0, 0.0)
    glTexCoord2f(1,0)
    glVertex3f(1.0, -1.0, -1.0)
   
    'glColor3f(0.0, 1.0, 0.0)
    glTexCoord2f(1,1)
    glVertex3f(1.0, -1.0, 1.0)
   
    'glColor3f(0.0, 0.0, 1.0)
    glTexCoord2f(0,1)
    glVertex3f(-1.0, -1.0, 1.0)
   
    'glColor3f(1.0, 0.0, 1.0)
    glTexCoord2f(0,0)
    glVertex3f(-1.0, -1.0, -1.0)
glEnd()

swapBuffers()

if scankeydown(VK_RIGHT) then    ' gerak ke kanan
pcamx# = pcamx# + pindah#
elseif scankeydown(VK_LEFT) then  ' gerak ke kiri
pcamx# = pcamx# - pindah#
elseif scankeydown(VK_UP) then  ' gerak ke atas
pcamy# = pcamy# + pindah#
elseif scankeydown(VK_DOWN) then  ' gerak ke bawah
pcamy# = pcamy# - pindah#
endif    

wend        

Sunday, 30 October 2016

Algoritma Pembuat Lingkaran

Untuk membuat Algoritma Pembuat lingkaran dalam pemrogaman bahasa C dibutuhkan langkah-langkah sebagai berikut ini ;

1.Tentukan titik tengah dan jari-jari
   xc , yc , R
2. Tentukan nilai pengubahan posisi
    P = I - R;
    x = 0;
    y = R = 4
3. Perulangan
    xc = y
    P Selanjutnya = P + (2 * x) + 1 jika P < 0
    P Selanjutnya = P + (2 * (x - y)) + 1
4. Translasi dan Pencerminan
    (xc + x ,yc + y )
    (xc - x ,yc + y )
    (xc + x ,yc - y )
    (xc - x ,yc - y )
    (xc + y ,yc + x )
    (xc - y ,yc + x )
    (xc + y ,yc - x )
    (xc - y ,yc - x )

          Berdasarkan rumus di atas maka dapat diimplementasikan dalam suatu bentuk program, disini pembuatan codingnya menggunakan Microsoft Visual Studio dengan bahasa C
Berikut Contoh Source codenya beserta penjelasannya ;
// Algoritma pembuat lingkaran

#include <GL\freeglut.h>
#include <GL\glut.h>
#include <iostream>

using namespace std;

//identifier fungsi
void init();
void display(void);
void lingkaran(void);

//  posisi window di layar
int window_x;
int window_y;

//  ukuran window
int window_width = 480;
int window_height = 480;

//  judul window
char *judul_window = "Algoritma Pembuat Lingkaran";

void main(int argc, char **argv)
{
//  inisialisasi GLUT (OpenGL Utility Toolkit)
glutInit(&argc, argv);
// set posisi window supaya berada di tengah
window_x = (glutGet(GLUT_SCREEN_WIDTH) - window_width) / 2;
window_y = (glutGet(GLUT_SCREEN_HEIGHT) - window_height) / 2;
glutInitWindowSize(window_width, window_height); //set ukuran window
glutInitWindowPosition(window_x, window_y); //set posisi window

glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); // set display RGB dan double buffer
glutCreateWindow(judul_window);

init(); // jalankan fungsi init
glutDisplayFunc(display); // set fungsi display
glutMainLoop(); // set loop pemrosesan GLUT
}

void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0); //set warna background
glColor3f(255.255, 240.240, 0.0); //set warna titik
glPointSize(3.0); //set ukuran titik
glMatrixMode(GL_PROJECTION); //set mode matriks yang digunakan
glLoadIdentity(); // load matriks identitas
gluOrtho2D(0.0, 600.0, 0.0, 600.0); // set ukuran viewing window
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //clear color
lingkaran(); //jalankan fungsi lingkaran
glutSwapBuffers(); //swap buffer
}

void lingkaran(void) {
//tentukan titik pusat dan jari-jari
int xc,yc,r;
r = 150;
xc = 300;
yc = 300;

//hitung p awal dan set nilai awal untuk x dan y
int p = 1-r;
int x = 0;
int y = r;

glBegin(GL_POINTS);

//perulangan untuk menggambar titik
while (x <= y) {
x++; //tambah nilai x
if (p < 0) {
p += 2 * x + 1; //hitung p selanjutnya jika p < 0
}
else {
y--; //kurangi nilai y
p += 2 * (x - y) + 1; //hitung p selanjutnya jika p > 0 atau p = 0
}

// translasi terhadap titik pusat dan cerminkan
glVertex2i(xc + x, yc + y);
glVertex2i(xc - x, yc + y);
glVertex2i(xc + x, yc - y);
glVertex2i(xc - x, yc - y);
glVertex2i(xc + y, yc + x);
glVertex2i(xc - y, yc + x);
glVertex2i(xc + y, yc - x);
glVertex2i(xc - y, yc - x);
}

glEnd();
glFlush();
}

Hasil Running Program :


Algoritma Bresenham (Komputer Grafik)

Apa itu Algoritma Bresenham ?

       Algoritma garis Bresenhem adalah algoritma konversi penambahan nilai integer.Langkah-langkah untuk membentuk garis menurut algoritma ini adalah :

1. Tentukan Titik Awal dan Akhir ;
    Titik Awal  (x1 , y1)
    Titik Akhir (x2 , y2)

2. Nilai Pengubahan posisi (P)
    P Awal = (2 * Dy) - Dx
    a. Kondisi 1 : Jika P< 0, Maka x = x + 1,Y tetap P selanjutnya adalah P = P + (2 * Dy)
    b. Kondisi 2 : Jika  P> 0 Maka x = x + 1,Y = Y + 1 P selanjutnya adalah P = P + 2* (Dy - Dx)

        Baiklah,,... Berdasarkan rumus di atas maka dapat diimplementasikan dalam suatu bentuk program, disini pembuatan codingnya menggunakan Microsoft Visual Studio dengan bahasa C
Berikut Contoh Source codenya beserta penjelasannya ;
//Algoritma Bresenham

#include <GL\freeglut.h>
#include <GL\glut.h>
#include <iostream>

using namespace std;

//identifier fungsi
void init();
void display(void);
void bresenham(void);

//  posisi window di layar
int window_x;
int window_y;

//  ukuran window
int window_width = 720;
int window_height = 480;

//  judul window
char *judul_window = "Algoritma Bresenham";

void main(int argc, char **argv)
{
//  inisialisasi GLUT (OpenGL Utility Toolkit)
glutInit(&argc, argv);
// set posisi window supaya berada di tengah
window_x = (glutGet(GLUT_SCREEN_WIDTH) - window_width) / 2;
window_y = (glutGet(GLUT_SCREEN_HEIGHT) - window_height) / 2;
glutInitWindowSize(window_width, window_height); //set ukuran window
glutInitWindowPosition(window_x, window_y); //set posisi window

glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); // set display RGB dan double buffer
glutCreateWindow(judul_window); //set judul window


init(); //jalankan fungsi init
glutDisplayFunc(display); //  set fungsi display
glutMainLoop(); // set loop pemrosesan GLUT
}

void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0); //set warna background
glColor3f(6.0, .0, 6.0); //set warna titik
glPointSize(2.0); //set ukuran titik
glMatrixMode(GL_PROJECTION); //set mode matriks yang digunakan
glLoadIdentity(); // load matriks identitas
gluOrtho2D(0.0, 800.0, 0.0, 600.0); // set ukuran viewing window
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //clear color
bresenham(); //jalankan fungsi bresenham
glutSwapBuffers(); //swap buffer
}

void bresenham(void) {
int x1, y1, x2, y2, x, y, dx, dy, xend, p, duady, duadydx;
//tentukan titik awal dan akhir
x1 = 10;
y1 = 10;
x2 = 500;
y2 = 400;
x = x1;
y = y1;

//hitung dx dan dy
dx = abs(x2 - x1);
dy = abs(y2 - y1);

//hitung p
p = 2 * dy - dx;
duady = 2 * dy;
duadydx = 2 * (dy - dx);

//tentukan titik awal dan akhir
if (x1 > x2) {
x = x2;
y = y2;
xend = x1;
}
else
{
x = x1;
y = y1;
xend = x2;
}

//gambar titik awal
glBegin(GL_POINTS);
glVertex2i(x, y);

//perulangan untuk menggambar titik-titik
while (x < xend) {
x++;
if (p < 0) {
p += duady;
}
else
{
if (y1 > y2) {
y--;
}
else y++;

p += duadydx;
}
glVertex2i(x, y);
}

glEnd();
glFlush();
}

Hasil running programnya ;



Algoritma DDA (Komputer Grafik)

Apa itu Algoritma DDA ?

        Algoritma DDA (Digital Differential Analyzer) adalah algoritma pembentukan garis berdasarkan perhitungan Dx dan Dy,yaitu pembuatan garis dengan langkah umum sebagai berikut ;

1. Tentukan Titik Awal dan Akhir
    Titik Awal    (x1,y1)
    Titik Akhir   (x2,y2)

Wednesday, 26 October 2016

Pemrogaman bahasa C

Contoh Soal dan jawaban Pemrograman Bahasa C  

       Hay guys,... kali ini saya akan membagikan contoh suatu kasus persoalan yang dimana anda bisa latihan buat meningkatkan skill atau belajar tentang pemrogaman bahasa C disini saya menggunakan CodeBlocks sebagai perantaranya .ada beberapa contoh soal yang pertama kita disuruh untuk menghitung untung rugi penjualan suatu perusahaan dan ada lagi soal lainnya,Yuk,.. langsung cek saja soalnya

Pemrogaman Java

Contoh Program Jasa Pemasangan Iklan menggunakan Java

      Hai guys,... kali ini saya akan membagikan contoh pemrogaman dengan bahasa java disini merupakan projek saya saat praktek uts disini di deskripsikan program berguna sebagai jasa pemasangan iklan cetak yang melayani iklan baris dan iklan display disini hanya menampilkan proses perhitungan serta rincian data yang harus dibayar penyewa jasa serta dokumentasinya,langsung saja kita ke Hasil Program dan Source Codenye ;