#include<conio.h>
#include<stdio.h>
int jum, mxb, mnb;
int tab[10];
//menginput banyaknya inputan yang akan dibandingkan
void input(){
int i;
printf("masukan jumlah :");
scanf("%d",&jum);
for(i=1; i<=jum;i++)
{
printf("angka ke-%d: ",i);
scanf("%d", &tab[i]);
}
}
//mengecek nilai maksimal dari inputan
int cekmx(int tb[10], int a, int b)
{
int k, max1, max2;
if(a==b)
{
mxb = tb[a];
}
else
{
if(a==b-1)
{
if(tb[a]<tb[b])
mxb=tb[b];
else
mxb=tb[a];
}
else
{
k=(a+b)/2;
max1=cekmx(tb, a, k);
max2=cekmx(tb, k+1, b);
if(max1 < max2)
mxb=max2;
else
mxb=max1;
}
}
return mxb;
}
//mengecek nilai mininum dari inputan
int cekmn(int tb[10], int a, int b)
{
int q, mn1, mn2;
if(a==b)
{
mnb=tb[a];
}
else
{
if(a==b-1)
{
if(tb[a] < tb[b])
mnb=tb[a];
else
mnb=tb[b];
}
else
{
q=(a+b)/2;
mn1=cekmn(tb, a, q);
mn2=cekmn(tb, q+1, b);
if(mn1 < mn2)
mnb=mn1;
else
mnb=mn2;
}
}
return mnb;
}
/*program utama
menampilkan nilai mak dan min */
main()
{
clrscr();
input();
printf("\n");
printf("max=%d\n",cekmx (tab, 1, jum));
printf("min=%d\n",cekmn (tab, 1, jum));
getch();
return 0;
}
Tuesday, November 30, 2010
Merubah Notasi Infix ke Postfix
Listing Program
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#define N 64
#define LP 10
#define RP 20
#define OPERATOR 30
#define OPERAND 40
#define LPP 0
#define AP 1
#define SP AP
#define MP 2
#define DP MP
#define REMP 2
#define NONE 9
static char infix[N+1],stack[N],postfix[N+1];
static int top;
void infixtopostfix(void);
int gettype(char);
void push(char);
char pop(void);
int getprec(char);
void main()
{
char ch;
do
{
clrscr();
top=-1;
printf("\n\n\n\n\t\t\tMASUKKAN BENTUK INFIX ==> ");
fflush(stdin);
gets(infix);
infixtopostfix();
printf("\t\t\tBENTUK POSTFIX ==> %s\n",postfix);
printf("\n\t\t\tAPAKAH INGIN MENGULANG?[Y/T]? ");
ch=getche();
printf("\n");
}while(ch=='Y' || ch=='y');
}
void infixtopostfix(void)
{
int i,p,l,type,prec;
char next;
i=p=0;
l=strlen(infix);
while(i<l)
{
type=gettype(infix[i]);
switch(type)
{
case LP:
push(infix[i]);
break;
case RP:
while((next=pop())!='(')
postfix[p++]=next;
break;
case OPERAND:
postfix[p++]=infix[i];
break;
case OPERATOR:
prec=getprec(infix[i]);
while(top>-1 && prec <= getprec(stack[top]))
postfix[p++]=pop();
push(infix[i]);
break;
}
i++;
}
while(top>-1)
postfix[p++]=pop();
postfix[p]='';
}
int gettype(char sym)
{
switch(sym)
{
case '(':
return(LP);
case ')':
return(RP);
case '+':
case '-':
case '*':
case '/':
case '%':
return(OPERATOR);
default :
return(OPERAND);
}
}
void push(char sym)
{
if(top>N)
{
printf("\nStack sudah penuh\n");
exit(0);
}
else
stack[++top]=sym;
}
char pop(void)
{
if(top<=-1)
{
printf("\nStack masih kosong\n");
exit(0);
}
else
return(stack[top--]);
}
int getprec(char sym)
{
switch(sym)
{
case '(':
return(LPP);
case '+':
return(AP);
case '-':
return(SP);
case '*':
return(MP);
case '/':
return(DP);
case '%':
return(REMP);
default :
return(NONE);
}
}
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#define N 64
#define LP 10
#define RP 20
#define OPERATOR 30
#define OPERAND 40
#define LPP 0
#define AP 1
#define SP AP
#define MP 2
#define DP MP
#define REMP 2
#define NONE 9
static char infix[N+1],stack[N],postfix[N+1];
static int top;
void infixtopostfix(void);
int gettype(char);
void push(char);
char pop(void);
int getprec(char);
void main()
{
char ch;
do
{
clrscr();
top=-1;
printf("\n\n\n\n\t\t\tMASUKKAN BENTUK INFIX ==> ");
fflush(stdin);
gets(infix);
infixtopostfix();
printf("\t\t\tBENTUK POSTFIX ==> %s\n",postfix);
printf("\n\t\t\tAPAKAH INGIN MENGULANG?[Y/T]? ");
ch=getche();
printf("\n");
}while(ch=='Y' || ch=='y');
}
void infixtopostfix(void)
{
int i,p,l,type,prec;
char next;
i=p=0;
l=strlen(infix);
while(i<l)
{
type=gettype(infix[i]);
switch(type)
{
case LP:
push(infix[i]);
break;
case RP:
while((next=pop())!='(')
postfix[p++]=next;
break;
case OPERAND:
postfix[p++]=infix[i];
break;
case OPERATOR:
prec=getprec(infix[i]);
while(top>-1 && prec <= getprec(stack[top]))
postfix[p++]=pop();
push(infix[i]);
break;
}
i++;
}
while(top>-1)
postfix[p++]=pop();
postfix[p]='';
}
int gettype(char sym)
{
switch(sym)
{
case '(':
return(LP);
case ')':
return(RP);
case '+':
case '-':
case '*':
case '/':
case '%':
return(OPERATOR);
default :
return(OPERAND);
}
}
void push(char sym)
{
if(top>N)
{
printf("\nStack sudah penuh\n");
exit(0);
}
else
stack[++top]=sym;
}
char pop(void)
{
if(top<=-1)
{
printf("\nStack masih kosong\n");
exit(0);
}
else
return(stack[top--]);
}
int getprec(char sym)
{
switch(sym)
{
case '(':
return(LPP);
case '+':
return(AP);
case '-':
return(SP);
case '*':
return(MP);
case '/':
return(DP);
case '%':
return(REMP);
default :
return(NONE);
}
}
Logika Program
Untuk bisa membuat program ini yaitu merubah notasi infix ke postfix, terlebih dahulu kami belajar teori tentang stack. Maka dari itu, sebelum kami menjelaskan logika dari program merubah notasi infix ke postfix, terlebih dahulu kami akan menjelaskan tentang apa itu stack?.
Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula. Kami menganalogikannya dengan buku yang di tumpuk. Ketika kita ingin mengambil atau menaruh buku selalu dari posisi atas dari tumpukan buku tersebut.
Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu :
1. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack.
Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat terjadi dalam stack yaitu :
1. Proses deklarasi yaitu proses pendeklarasian stack.
2. Proses isempty yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
3. Proses isfull yaitu proses pemeriksaan apakah stack telah penuh.
4. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top.
Representasi stack dalam pemrograman, dapat dilakukan dengan 2 cara yaitu :
1. Representasi stack dengan array
2. Representasi stack dengan single linked list
Sebagai contoh representasi kedua cara tersebut dengan operasi yang dilakukan adalah push(1), push(2), pop, push(5), push(8), pos. Untuk lebih detail, perhatikan gambar di bawah ini:
Representasi stack dengan menggunakan array dengan maksimal data 5 adalah |
Operasi-operasi stack secara lengkap adalah sebagai berikut : 1. Pendeklarasian stack Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu : a. Pendeklarasian stack yang menggunakan array. Suatu stack memiliki beberapa bagian yaitu * top yang menunjuk posisi data terakhir (top) * elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array. * maks_elemen yaitu variable yang menunjuk maksimal banyaknya elemen dalam stack. Dalam bahasa C, pendeklarasiannya adalah : #define maks 100 //pendeklarasian struktur stack struct tstack{ int top; int maks_elemen; int elemen[maks]; }; //pendeklarasian stack tstack stack; b. Pendeklarasian stack yang menggunakan single linked list Adapun stack yang menggunakan single linked list, hanya memerlukan suatu pointer yang menunjuk ke data terakhir (perhatikan proses di halaman sebelumnya). Setiap elemen linked list mempunyai 2 field yaitu elemen datanya dan pointer bawah yang menunjuk posisi terakhir sebelum proses push. Pendeklarasian dalam bahasa C adalah : typedef struct TStack *PStack; typedef struct TStack { int elemen; PStack bawah; }; // contoh pendeklarasian variable stack PStack stack;//variable stack akan selalu menunjuk top. |
2. Inisialisasi Inisialisasi stack adalah proses pembuatan suatu stack kosong. Adapun langkah-langkah proses tersebut berdasarkan jenis penyimpanannya adalah :
a. Inisialisasi stack yang menggunakan array.
Proses inisialisasi untuk stack yang menggunakan array adalah dengan mengisi nilai field top dengan 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array dimulai dengan 0 (contoh bahasa C), maka top diisi dengan nilai -1.
Implementasinya dalam bahasa C adalah :
void inisialisasi(tstack *stack)
{
stack->top=-1;//karena dalam C array dimulai dgn 0
stack->maks_elemen=maks;
}
Cara pemanggilannya adalah
inisialisasi(&stack);
b. Inisialisasi stack yang menggunakan single linked list
Proses inisialisasi untuk stack yang menggunakan single linked list adalah dengan mengisi nilai pointer stack dengan NULL.
Implementasi dalam bahasa C adalah :
void inisialisasi(PStack *stack)
{
*stack=NULL;
}
Cara pemanggilannya adalah :
inisialisasi(&stack);
3. Operasi IsEmpty Operasi ini digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi ini penting dilakukan dalam proses pop. Ketika suatu stack dalam keadaan kosong, maka proses pop tidak bisa dilakukan. Adapun langkah-langkah operasi ini adalah :
a. Operasi IsEmpty pada stack yang menggunakan array.
Operasi ini dilakukan hanya dengan memeriksa field top. Jika top bernilai 0 (untuk elemen yang dimulai dengan index 1) atau top bernilai -1 (untuk elemen yang dimulai dengan index 0), maka berarti stack dalam keadaan empty (kosong) yang akan me-return-kan true (1) dan jika tidak berarti stack mempunyai isi dan me-return-kan nilai false (0)
Implementasi dalam bahasa C adalah :
int isempty(tstack stack)
{
if (stack.top==-1)
return 1;
else
return 0;
}
Cara penggunaannya adalah :
//Penggunaan isempty dalam statement if
if( isempty(stack) ) ...
b. Operasi IsEmpty pada stack yang menggunakan single linked list.
Operasi IsEmpty pada stack yang menggunakan single linked list adalah dengan memeriksa apakah pointer stack bernilai NULL. Jika stack bernilai NULL maka menandakan stack sedang keadaan empty (kosong) dan akan me-return-kan nilai 1 dan jika tidak NULL maka menandakan stack mempunyai isi (tidak kosong) sehingga operasi tersebut akan me-return-kan nilai false (0).
Implementasinya dalam bahasa C adalah :
int isempty(PStack stack)
{
if (stack==NULL)
return 1;
else
return 0;
}
Cara penggunaannya adalah
//Penggunaan isempty dalam statement if
if( isempty(stack) ) ...
4. Operasi IsFull Operasi ini berguna untuk memeriksa keadaan stack apakah sudah penuh atau belum. Operasi ini akan menghasilkan nilai true (1) jika stack telah penuh dan akan menghasilkan nilai false (0) jika stack masih bisa ditambah. Langkah-langkah untuk operasi ini adalah :
a. Operasi IsFull pada stack yang menggunakan array.
Operasi ini akan memberikan nilai true (1) jika field top sama dengan field maks_elemen (untuk array yang elemennya dimulai dari posisi 1) atau top sama dengan maks_elemen-1 (untuk array yang elemennya dimulai dari posisi 0).
Implementasinya dalam bahasa C adalah :
int isfull(tstack stack)
{
if (stack.top==(stack.maks_elemen-1))
return 1;
else
return 0;
}
Cara pemanggilannya adalah :
//penggunaan isfull dalam statement if
if( !isfull(stack) ) … // jika stack tidak penuh
b. Operasi IsFull pada stack yang menggunakan single linked list.
Karena dalam linked list bersifat dinamis, maka pengecekan isFull adalah dengan memeriksa apakah memori masih dapat digunakan untuk alokasi sebuah elemen stack. Jika alokasi dapat dilakukan, maka berarti memori masih belum penuh dan proses push dapat dilakukan. Tetapi jika alokasi memori gagal dilakukan, maka berarti memori penuh dan tidak bisa menambah lagi elemen stack.
Implementasi dalam bahasa C adalah :
int isfull()
{
PStack test;
test=(PStack)malloc(sizeof(TStack));
if(test==NULL)//jika alokasi gagal
return 1;
else
{
free(test);
return 0;
}
}
Cara pemanggilannya adalah :
//penggunaan isfull dalam statement if
if( !isfull(stack) ) … // jika stack tidak penuh
5. Operasi Push Operasi push adalah operasi dasar dari stack. Operasi ini berguna untuk menambah suatu elemen data baru pada stack dan disimpan pada posisi top yang akan mengakibatkan posisi top akan berubah. Langkah operasi ini adalah :
a. Operasi push pada stack yang menggunakan array.
Langkah operasi push dalam array adalah dengan :
* Periksa apakah stack penuh (isfull). Jika bernilai false/0 (tidak penuh) maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1 (stack penuh), maka proses push digagalkan.
* Proses push-nya sendiri adalah dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru. Implementasinya dalam bahasa C adalah :
void push(tstack *stack, int baru)
{
if(!isfull(*stack))
{
stack->top++;
stack->elemen[stack->top]=baru;
}
else
{
printf("Stack Full. Push Gagal.\n");
}
}
Cara penggunaannya adalah :
push(&stack,5);// push 5 ke dalam stack
b. Operasi push pada stack yang menggunakan single linked list Operasi push pada stack yang menggunakan single linked list adalah sama dengan proses tambahawal pada operasi linked list. Langkah-langkahnya adalah :
* Periksa apakah memori penuh (isfull). Jika bernilai false/0 (tidak penuh) maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1 (stack penuh), maka proses push digagalkan.
* Proses push-nya sendiri adalah dengan cara mengalokasikan suatu elemen linked list (disebut variable baru), kemudian periksa jika stack dalam keadaan kosong maka pointer yang menunjuk ke awal stack diisi dengan pointer baru, dan jika dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru. Tetapi jika pointer penunjuk stack sudah menunjuk ke suatu data, maka sambungkan field pointer bawah (penunjuk ke data sebelumnya) dari pointer baru ke pointer penunjuk posisi akhir stack (top) dan kemudian pindahkah pointer penunjuk posisi akhir stack ke pointer baru. Untuk lebih jelas perhatikan kembali gambar 5 di halaman 3 mengenai representasi stack dengan linked linst.
Implementasi operasi ini dengan menggunakan bahasa C adalah :
void push(PStack *stack, int data)
{
PStack baru;
if(!isfull())
{
baru=(PStack)malloc(sizeof(TStack));
baru->bawah=NULL;
baru->elemen=data;
if(isempty(*stack))
*stack=baru;
else
{
baru->bawah=*stack;
*stack=baru;
}
}
else
{
printf("Memory Full. Push Gagal.\n");
}
}
Cara penggunaannya adalah :
push(&stack,5);// push 5 ke dalam stack
6. Operasi Pop Operasi pop adalah salah satu operasi paling dasar dari stack. Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Operasi ini biasanya dibuat dalam bentuk function yang me-return-kan nilai sesuai data yang ada di top.
a. Operasi pop pada stack yang menggunakan array.
Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top, kemudian simpan dalam variable baru dengan nama data, kemudian posisi top – 1, kemudian nilai pada variable data di-return-kan ke function.
Implementasi operasi ini dalam bahasa C adalah :
int pop(tstack *stack)
{
int data;
if(!isempty(*stack))
{
data=stack->elemen[stack->top];
stack->top--;
return data;
}
else
return 0;
}
Cara pemanggilannya adalah :
int data;
data=pop(&stack);
b. Operasi pop pada stack yang menggunakan single linked list Langkah operasi pop pada stack yang menggunakan single linked list adalah sama dengan proses hapusawal pada operasi single linked list. Prosesnya adalah :
* Periksa apakah.stack kosong (isempty), jika kosong maka proses pop tidak bisa dilakukan. Jika stack tidak kosong maka proses pop dijalankan.
* Proses pop-nya sendiri adalah mengambil elemen yang ditunjuk oleh pointer stack kemudian simpan dalam variable data. Kemudian buat variable pointer bantu yang diisi dengan pointer penunjuk stack yang nantinya akan dihapus dari memori. Kemudian pointer penunjuk stack dipindahkan ke posisi yang ditunjuk oleh field pointer bawah dari variable bantu.
Implementasi dalam bahasa C adalah :
int pop(PStack *stack)
{
int data;
PStack bantu;
if(!isempty(*stack))
{
data=(*stack)->elemen;
bantu=*stack;
*stack=bantu->bawah;
free(bantu);
return data;
}
else
return 0;
}
Cara pemanggilannya adalah :
int data;
data=pop(&stack);
Itulah, beberapa penjelasan dan teorinya berikut dengan implementasinya menggunakan bahasa C. Karena kami memilih menggunakan bahasa C untuk membuat program ini. Jika dilihat dan dibandingkan antara listing yang kami buat dengan implementasi dari teori diatas memang berbeda. Karena kami tambahkan dan kami edit untuk syntaknya tidak hanya itu kami juga berusaha mencoba untuk lebih mengexplor ilmu dari apa yang telah kami pelajari di Alogaritma dan pemograman 3.
Selanjutnya, kami akan menjelaskan tentang logika program yang telah kami buat. Hal yang terpenting ialah kita harus fokus kepada output yang diminta, output yang di minta adalah nilai dari infix yang dirubah menjadi postfix.
Thursday, November 25, 2010
Menjalankan Aplikasi Windows di Linux
Ragu mau bermigrasi
dari windows ke Linux???
sekarang jangan ragu
berkat "Wine" anda nggak perlu ragu lagi
di jamin!!!!
Linux seperti yang pastinya anda ketahui, adalah platform yang berbeda dari windows. Namun, meski sistemnya tak kalah dengan OS besutan Microsoft tersebut, banyak orang yang enggan memakainya. Salah satu kendalanya adalah sebagaian besarnya vendor menyediakan aplikasinya untuk platform linux. Alhasil orang-orang menjadi ragu ketika ingin pindah dari windows ke linux. Tapi sekarang gak perlu khawatir lagi karena ada WINE yaitu wine is not Emulator.
aplikasi ini bisa menciptakan sebuah lingkungan windows sehingga program-program yang ada di dedikasikan untuk OS tersebut unutk bisa dijalankan.
Instalasi WINE?
Untuk pengguna Ubuntu. silahkan masuk ke synaptic dan cari paket yang bernama Wine, kemudian install. ada dua cara yang bisa anda gunakan unutk menjalankan program windows dengan Wine yaitu dengan :
1. Dual boot
kita bisa langsung saja menjalankan program yang telah terinstall di drive windows. cari file .exe nya kemudian jalankan dengan wine nya.
2. Insert CD installation
setelah anda memasukan cd installasi cari file setup nya exe nya. selanjutnya klick kanan pilih open with "wine windows program loader". langkah berikutnya sama seperti instalasi windows kemudian anda cukup meng klick next dan next lagi.
Winetricks
aplikasi wine yang membuat root direktorinya di home folder masing-masing user tentunya tidak selengkap windowsyang asli . jadi ada banyak library dari windows yang tidak disertakan di wine Nah, parahnya, kadang kita menginstal aplikasi yang membutuhkan library yang tidak ada tersebut. Winetricks sebenarnya adalah script yang membantu kita menguduh library yang sesuai dengan aplikasi yang akan di install daftar aplikasinya bs di liat di http://wiki.wineq.org/winetricks dan unutk menginstall winetricksnya buka terminal lalu berikan perintah : wget http:// www.kegel.com/wine/winetricks. yah. . . ,mungkin itu saja yng dapat w share sama kalian semua TQ for visit me.
Wednesday, November 24, 2010
membuat robot dengan Pelles C
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glfw.h>
#include <math.h>
#define pi 3.1415
void mulaiOpenGL(void);
int main(void)
{
//
// mRunning = TRUE, aplikasi masih berjalan
// mRunning = FALSE, ??? :p
GLuint mRunning = GL_TRUE;
//
// inisialisasi GLFW
if( glfwInit() == GL_FALSE )
{
MessageBox( NULL, “ERROR :: gagal menginisialisasi GLFW”, “Error!”, MB_OK);
return(0);
}
//
// buat sebuah window yang akan digunakan untuk menggambar.
if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )
{
MessageBox( NULL, “ERROR :: gagal membuat window”, “Error!”, MB_OK );
glfwTerminate();
return(0);
}
//
// Set judul yang ada di window dan Swap interval.
glfwSetWindowTitle( “Praktikum Grafik Komputer LabTI” );
glfwSwapInterval( 1 );
//
// mulai OpenGL (melakukan setting awal OpenGL)
mulaiOpenGL();
//
// mulai looping utama program
while( mRunning )
{
//
// bersihkan layar dan depth buffer
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
//
// lakukan penggambaran di sini
//————————————————————————————
gluLookAt(0.0,0.0,20.0,0.0,0.0,0.0,0.0,1.0,0.0);
float x, y, sudut;
for (sudut = 0.0f;sudut <=2.0 * pi ; sudut +=0.001f)
{x=2.0f * sin (sudut);
y= 2.0f * cos (sudut);
glBegin (GL_POINTS);
glVertex3f (x, y, 5);
glEnd();
}
glBegin (GL_QUADS);
//persegi pnjg
glVertex2f(-1.0f,-2.5f);
glVertex2f(1.0f,-2.5f);
glVertex2f(1.0f,-7.5f);
glVertex2f(-1.0f,-7.5f);
glColor3f(1.0f,0.0f,1.0f);
//persegi
glVertex2f(-2.0f,-7.5f);
glVertex2f(2.0f,-7.5f);
glVertex2f(2.0f,-11.0f);
glVertex2f(-2.0f,-11.0f);
glColor3f(0.0f,1.0f,0.0f);
glEnd();
//topi
glBegin(GL_TRIANGLES);
glVertex2f(3.0f,2.65f);
glVertex2f(-3.0f,2.65f);
glVertex2f(0.0f,6.0f);
glEnd();
//tangan
glBegin(GL_LINES);
glVertex2f(-1.0f,-2.5f);
glVertex2f(-4.25f,-5.0f);
glVertex2f(1.0f,-2.5f);
glVertex2f(4.25f,-5.0f);
//tangkai
glVertex2f(-4.25f,-6.0f);
glVertex2f(-4.25f,-1.5f);
glEnd();
//bunga
glBegin(GL_POLYGON);
glColor3f(1.0f,0.0f,0.0f);
glVertex2f(-3.75f,-1.5f);
glVertex2f(-4.75f,-1.5f);
glVertex2f(-4.75f,-0.5f);
glVertex2f(-4.5f,-1.0f);
glVertex2f(-4.25f,-0.5f);
glVertex2f(-4.0f,-1.0f);
glVertex2f(-3.75f,-0.5f);
glEnd();
//————————————————————————————
//
// tampilkan ke layar (swap double buffer)
glfwSwapBuffers();
//
// check input , apakah tombol esc ditekan atau tombol “close” diclick
mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );
}
glfwTerminate();
return(0);
}
void mulaiOpenGL(void)
{
//
// Set viewport ke resolusi 640×480 viewport bisa diibaratkan
// layar monitor anda
glViewport( 0, 0, 640, 480 );
//
// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi
// menggunakan proyeksi perspective, dengan sudut pandang (Field Of
// View) 60 derajat
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
//
// Set mode gradasi warna halus (Smooth)
glShadeModel( GL_SMOOTH );
//
// warna yang digunakan untuk membersihkan layar
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
//
// nilai untuk membersihkan depth buffer.
glClearDepth( 1.0f );
//
// Depth test digunakan untuk menghindari polygon yang
// tumpang tindih.
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
//
// beritahu OpenGL untuk menggunakan perhitungan perspective
// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
}
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glfw.h>
#include <math.h>
#define pi 3.1415
void mulaiOpenGL(void);
int main(void)
{
//
// mRunning = TRUE, aplikasi masih berjalan
// mRunning = FALSE, ??? :p
GLuint mRunning = GL_TRUE;
//
// inisialisasi GLFW
if( glfwInit() == GL_FALSE )
{
MessageBox( NULL, “ERROR :: gagal menginisialisasi GLFW”, “Error!”, MB_OK);
return(0);
}
//
// buat sebuah window yang akan digunakan untuk menggambar.
if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )
{
MessageBox( NULL, “ERROR :: gagal membuat window”, “Error!”, MB_OK );
glfwTerminate();
return(0);
}
//
// Set judul yang ada di window dan Swap interval.
glfwSetWindowTitle( “Praktikum Grafik Komputer LabTI” );
glfwSwapInterval( 1 );
//
// mulai OpenGL (melakukan setting awal OpenGL)
mulaiOpenGL();
//
// mulai looping utama program
while( mRunning )
{
//
// bersihkan layar dan depth buffer
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
//
// lakukan penggambaran di sini
//————————————————————————————
gluLookAt(0.0,0.0,20.0,0.0,0.0,0.0,0.0,1.0,0.0);
float x, y, sudut;
for (sudut = 0.0f;sudut <=2.0 * pi ; sudut +=0.001f)
{x=2.0f * sin (sudut);
y= 2.0f * cos (sudut);
glBegin (GL_POINTS);
glVertex3f (x, y, 5);
glEnd();
}
glBegin (GL_QUADS);
//persegi pnjg
glVertex2f(-1.0f,-2.5f);
glVertex2f(1.0f,-2.5f);
glVertex2f(1.0f,-7.5f);
glVertex2f(-1.0f,-7.5f);
glColor3f(1.0f,0.0f,1.0f);
//persegi
glVertex2f(-2.0f,-7.5f);
glVertex2f(2.0f,-7.5f);
glVertex2f(2.0f,-11.0f);
glVertex2f(-2.0f,-11.0f);
glColor3f(0.0f,1.0f,0.0f);
glEnd();
//topi
glBegin(GL_TRIANGLES);
glVertex2f(3.0f,2.65f);
glVertex2f(-3.0f,2.65f);
glVertex2f(0.0f,6.0f);
glEnd();
//tangan
glBegin(GL_LINES);
glVertex2f(-1.0f,-2.5f);
glVertex2f(-4.25f,-5.0f);
glVertex2f(1.0f,-2.5f);
glVertex2f(4.25f,-5.0f);
//tangkai
glVertex2f(-4.25f,-6.0f);
glVertex2f(-4.25f,-1.5f);
glEnd();
//bunga
glBegin(GL_POLYGON);
glColor3f(1.0f,0.0f,0.0f);
glVertex2f(-3.75f,-1.5f);
glVertex2f(-4.75f,-1.5f);
glVertex2f(-4.75f,-0.5f);
glVertex2f(-4.5f,-1.0f);
glVertex2f(-4.25f,-0.5f);
glVertex2f(-4.0f,-1.0f);
glVertex2f(-3.75f,-0.5f);
glEnd();
//————————————————————————————
//
// tampilkan ke layar (swap double buffer)
glfwSwapBuffers();
//
// check input , apakah tombol esc ditekan atau tombol “close” diclick
mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );
}
glfwTerminate();
return(0);
}
void mulaiOpenGL(void)
{
//
// Set viewport ke resolusi 640×480 viewport bisa diibaratkan
// layar monitor anda
glViewport( 0, 0, 640, 480 );
//
// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi
// menggunakan proyeksi perspective, dengan sudut pandang (Field Of
// View) 60 derajat
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
//
// Set mode gradasi warna halus (Smooth)
glShadeModel( GL_SMOOTH );
//
// warna yang digunakan untuk membersihkan layar
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
//
// nilai untuk membersihkan depth buffer.
glClearDepth( 1.0f );
//
// Depth test digunakan untuk menghindari polygon yang
// tumpang tindih.
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
//
// beritahu OpenGL untuk menggunakan perhitungan perspective
// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
}
Thursday, November 18, 2010
MEMPERCANTIK LINUX DENGAN WALLPAPER TERMINAL
Kepingin desktop linux anda semakin sedap dipandang??
Intip saja tutorial berikut ini. . . . . :) :)
Saya akan mengajak anda untuk sedikit berbagi ilmu yaitu membuat terminal sebagai wallpaper. Menurut saya ini hal yang menarik karena di wallpaper PC kita langsung terdapat terminal apalagi untuk seorang hacker trick ini sangat fleksibel dan efisien. Karena seorang hacker selalu berkotak- katik dengan terminal. Caranya pun tidak sulit dan hasilnya pasti menarik untuk anda.
Sebelumnya, pastikan dulu anda mengaktifkan comfiz dan menginstall comfizconfig setting manager di computer anda. jika semua itu sudah beres, let’s begin!!!!
Ada 3 tahap yang harus anda lakukan yang pertama adalah konfigurasi profil terminal. Begini caranya :
Intip saja tutorial berikut ini. . . . . :) :)
Saya akan mengajak anda untuk sedikit berbagi ilmu yaitu membuat terminal sebagai wallpaper. Menurut saya ini hal yang menarik karena di wallpaper PC kita langsung terdapat terminal apalagi untuk seorang hacker trick ini sangat fleksibel dan efisien. Karena seorang hacker selalu berkotak- katik dengan terminal. Caranya pun tidak sulit dan hasilnya pasti menarik untuk anda.
Sebelumnya, pastikan dulu anda mengaktifkan comfiz dan menginstall comfizconfig setting manager di computer anda. jika semua itu sudah beres, let’s begin!!!!
Ada 3 tahap yang harus anda lakukan yang pertama adalah konfigurasi profil terminal. Begini caranya :
- Buka terminal dari menu applications > accessories > terminal.
- Buat profil baru dengan file > new profile
- Beri nama “desktop wallpaper”. Lalu klick create.
- Pada tab general hilangkan tanda centang pada pilihan “show menubar by default in new terminals”.
- Pada tab [ title and command]. Isi initial title dengan “desktop wallpaper”.
- Masih di [title and command] pilih [keep initial title] di pertanyaan : “when terminal command set their own title”.
- Di tab color hilangkan tanda centang pada pilihan [use colors from the system theme].ganti warna tulisan dan background dengan warna yang kontras dengan wallpaper di desktop anda.
- Di tab background pilih [transparent background] lalu geser menjadi [none].
- Setelah pindah ke tab [scrolling], pilih [disable scrollbar].
- Klick [close] untuk menutup jendela profil.
- Buka CCSM dari system > preference > compizconfig setting manager.
- Masuk ke menu [ utility], lalu aktifkan [regex matching] dengan cara mengisi checklist di checkbox-nya.
- Masuk ke menu [effect] kemudian aktifkan [windows decoration]. Di pilihan [decoration windows], isi dengan “!(title=desktopwallpaper)”. Klick [back].
- Setelah itu masuk ke [window management] kemudian :
- buka place windows. Klick tab [fixed window placement] di menu windows with fixed positions, lalu klick new.
- Di [positioned windows] silahkan diisi dengan “title=desktopwallpaper”. Di [X dan Y positons]. Isi dengan angka 60 (sesuaikan dengan monitor anda).
- Buka windows rules. Di tab [match], isikan “title=desktopwallpaper” ke kolom [ skip taskbar],[skip pager],[below],[sticky],[non closable windows].
- Pindah ke tab [size rules], lalu klick [new]. Isikan “title=desktopconsole” di [sized windows]. Di [width] dan [height], isi dengan 600 dan 500 (bisa ganti sesuai dengan monitor anda) jika sudah keluar dari CCSM.
- Buka system > preferences > startupapplications.
- Klick [add], lalu klick pada command: “gnome-terminal-window-with-profile=desktopwallpaper”.
- Klick [save] dan keluar dari startup applications. Untuk melihat hasilnya, silahkan logout dari linux, lalu login lagi.
SELAMAT MENCOBA
Friday, November 12, 2010
In my daydreams
I never noticed how my heart could beat so loud
When I, think of you
And I can’t focus now, got my head up in the clouds
When I, think of you
My heart’s so lost in all the chaos
It’s got me crazy
With the spell you cast, it all happened so fast
Goodbye to loneliness
And when I close my eyes, you play like a movie in my mind
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer and
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer?
Oh I think that we, that we were meant to be
Everything you do, so fresh and brand new
That I, can’t help
This crush on you, I wanna be the breakthrough
Kind of love to you
Sparks are flying like butterflies and I’m so high
On the spell you cast, it all happened so fast
Goodbye, to loneliness
And when I close my eyes, you play like a movie in my mind
And I wanna rewind, over and over a thousand times
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer and
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer?
Oh I think that we, that we were meant to be
Oh I think that we, that we were meant to be
Oh I think that we, that we were meant to be
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer?
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart?
Oh I think that we, that we were meant to be
In my daydreams
When I, think of you
And I can’t focus now, got my head up in the clouds
When I, think of you
My heart’s so lost in all the chaos
It’s got me crazy
With the spell you cast, it all happened so fast
Goodbye to loneliness
And when I close my eyes, you play like a movie in my mind
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer and
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer?
Oh I think that we, that we were meant to be
Everything you do, so fresh and brand new
That I, can’t help
This crush on you, I wanna be the breakthrough
Kind of love to you
Sparks are flying like butterflies and I’m so high
On the spell you cast, it all happened so fast
Goodbye, to loneliness
And when I close my eyes, you play like a movie in my mind
And I wanna rewind, over and over a thousand times
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer and
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer?
Oh I think that we, that we were meant to be
Oh I think that we, that we were meant to be
Oh I think that we, that we were meant to be
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart when you’re moving, closer and closer?
You are the star of my daydreams
Everything you are is my reverie
Can you feel my heart?
Oh I think that we, that we were meant to be
In my daydreams
Thursday, November 11, 2010
On The Wing
Breathe and I'll carry you away into the velvet sky
And we'll stir the stars around
And watch them fall away into the Hudson Bay
And plummet out of sight and sound
The open summer breeze will sweep you through the hills
Where I live in the alpine heights
Below the Northern Lights, I spend my coldest nights
Alone, awake and thinking of the weekend we were in love
Home among these mountain tops can be so awfully dull
A thousand miles from the tide
But photos on the walls of New York shopping malls
Distract me so I stay inside
I wish the rockets stayed over the promenade
'Cause I would make a hook and eye
And fish them from the sky, my darling, she and I
We're hanging on so take us high to sing the world goodbye
Owl City On The Wing lyrics found on http://www.directlyrics.com/owl-city-on-the-wing-lyrics.html
I am floating away, lost in a silent ballet
I'm dreaming you're out in the blue and I am right beside you
Awake to take in the view
Late nights and early parades, still photos and noisy arcades
My darling, we're both on the wing
Look down and keep on singing and we can go anywhere
Are you there?
Are you there or are you just a decoy dream in my head?
Am I home or am I simply tumbling all alone?
I am floating away, lost in a silent ballet
I'm dreaming you're out in the blue and I am right beside you
Awake to take in the view
Late nights and early parades, still photos and noisy arcades
My darling, we're both on the wing
Look down and keep on singing and we can go anywhere
Are you there?
Are you there?
Wednesday, November 10, 2010
Dental Care
I brush my teeth
And look in the mirror
And laugh out loud
As I'm beaming from ear to ear
I'd rather pick flowers
Instead of fight
And rather than flaunt my style
I'd flash you a smile
Of clean pearly whites
I've been to the dentist
A thousand times, so I know the drill
I smooth my hair, sit back in the chair
But somehow I still get the chills
Have a seat
He says pleasantly
As he shakes my hand
And practically laughs at me
Open up nice and wide
He says, peering in
And with a smirk he says,
"Don't have a fit, this'll just pinch a bit"
As he tries not to grin
When hygienists leave on long vacations
That's when dentists scream and lose their patience
Talking only brings the toothaches on
Because I say the stupidest things
So if my resolve goes south
I'll swallow my pride with an aspirin
And shut my mouth
Golf and alcohol don't mix
And that's why I don't drink and drive
Because, good grief, I'd knock out my teeth
And hafta kiss my smile goodbye
I've been to the dentist
A thousand times, so I know the drill
I smooth my hair, sit back in the chair
But somehow I still get the chills
Saturday, November 6, 2010
umbrella beach
Stems and gears, oh how the daisies bloom
When chandeliers light up the engine room
Can you feel the drops as it starts to rain
There's an underwater Ferris wheel where I found the missing link to this island chain
Home will always be here, unseen, outta sight
Where I disappear and hide
I think dreamy things as I'm waving goodbye
So I'll spread out my wings and fly
Home is a boxcar and it's so far out of reach
Hidden under umbrella beach
Home will always be here, unseen, outta sight
Where I disappear and hide
I think dreamy things as I'm waving goodbye
So I'll spread out my wings and fly
I'll spread my wings and fly
Home is a boxcar and it's so far out of reach
Hidden under umbrella beach
When chandeliers light up the engine room
Can you feel the drops as it starts to rain
There's an underwater Ferris wheel where I found the missing link to this island chain
Home will always be here, unseen, outta sight
Where I disappear and hide
I think dreamy things as I'm waving goodbye
So I'll spread out my wings and fly
Home is a boxcar and it's so far out of reach
Hidden under umbrella beach
Home will always be here, unseen, outta sight
Where I disappear and hide
I think dreamy things as I'm waving goodbye
So I'll spread out my wings and fly
I'll spread my wings and fly
Home is a boxcar and it's so far out of reach
Hidden under umbrella beach
Umbrella Beach lyrics
Tuesday, November 2, 2010
Vanilla Twilight
The stars lean down to kiss you
And I lie awake and miss you
Pour me a heavy dose of atmosphere
'Cause I'll doze off safe and soundly
But I'll miss your arms around me
I'd send a postcard to you, dear
'Cause I wish you were here
I'll watch the night turn light-blue
But it's not the same without you
Because it takes two to whisper quietly
The silence isn't so bad
'Til I look at my hands and feel sad
'Cause the spaces between my fingers
Are right where yours fit perfectly
I'll find repose in new ways
Though I haven't slept in two days
'Cause cold nostalgia
Chills me to the bone
But drenched in vanilla twilight
I'll sit on the front porch all night
Waist-deep in thought because
When I think of you I don't feel so alone
I don't feel so alone, I don't feel so alone
As many times as I blink
I'll think of you tonight
I'll think of you tonight
When violet eyes get brighter
And heavy wings grow lighter
I'll taste the sky and feel alive again
And I'll forget the world that I knew
But I swear I won't forget you
Oh, if my voice could reach
Back through the past
I'd whisper in your ear
Oh darling, I wish you were here
And I lie awake and miss you
Pour me a heavy dose of atmosphere
'Cause I'll doze off safe and soundly
But I'll miss your arms around me
I'd send a postcard to you, dear
'Cause I wish you were here
I'll watch the night turn light-blue
But it's not the same without you
Because it takes two to whisper quietly
The silence isn't so bad
'Til I look at my hands and feel sad
'Cause the spaces between my fingers
Are right where yours fit perfectly
I'll find repose in new ways
Though I haven't slept in two days
'Cause cold nostalgia
Chills me to the bone
But drenched in vanilla twilight
I'll sit on the front porch all night
Waist-deep in thought because
When I think of you I don't feel so alone
I don't feel so alone, I don't feel so alone
As many times as I blink
I'll think of you tonight
I'll think of you tonight
When violet eyes get brighter
And heavy wings grow lighter
I'll taste the sky and feel alive again
And I'll forget the world that I knew
But I swear I won't forget you
Oh, if my voice could reach
Back through the past
I'd whisper in your ear
Oh darling, I wish you were here
Subscribe to:
Posts (Atom)