Coretanku

Tempatku Berbagi…

Monthly Archives: April 2010

Stack di C++

Wokey, ketemu lagi dengan coretanku :D, kali ini akan ngebahas stack karena ada tugas kuliah dan temen2 ane ada yg nanya (lebih tepatnya minta jawaban :D), daripada males ngirimin email satu-satu mending posting aja di blog.. hehe

Ok,, langsung aja Stack sendiri merupakan sebuah konsep untuk menyimpan dan mengambil dengan algoritma LIFO (“Last In First Out”) dimana data yang masuk duluan yang akan dikeluarkan terlebih dahulu, contoh realnya ketika kita memasukkan bola ke dalam suatu tabung, maka bola yang dimasukkan pertama kali akan diambil terakhir kali,, nah seperti itulah kira2 konsep stack..

Operasi-operasi yang ada di stack yaitu antara lain
– push yang digunakan untuk menyimpankan data
– pop untuk mengambil data
– isEmpty untuk menentukan stack dalam keadaan kosong
– isFull untuk menentukan stack dalam keadaan penuh
– clear untuk menghapus stack
yah, kira2 itu yang perlu diperhatikan.. langsung ke contoh source code ja…

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

#define MAXSTACK 100

typedef int itemType;
typedef struct {
	int item[MAXSTACK];
   int jml;
} Stack;

void init(Stack *s){
 	s->jml=0;
}

int kosong(Stack *s){
 	return (s->jml==0);
}

int penuh(Stack *s){
	return (s->jml==MAXSTACK);
}

void isi(itemType x, Stack *s){
	if(penuh(s))
    	printf("\nMaaf data sudah penuh\n");
   else{
   	s->item[s->jml]=x;
      ++(s->jml);
   }
}

void ambil(Stack *s, itemType *x){
	if(kosong(s))
   	printf("\nMaaf data masih kosong\n");
   else
   {
    	--(s->jml);
      *x=s->item[s->jml];
      s->item[s->jml]=0;
      printf("\nData %i berhasil diambil\n",*x);
   }
}

void tampil(Stack *s){
	if(kosong(s))
   	printf("\nMaaf Data masih kosong\n");
   else
   	printf("\n");
		for(int i=s->jml-1;i>=0;i--){
   		printf("Data: %d\n",s->item[i]);
   	}
}

void hapus(Stack *s){
	s->jml=0;
   printf("\nSemua data berhasil dihapus\n");
}

void main(){
	int pil;
   Stack tumpukan;
   itemType data;
   init(&tumpukan);

   do{
   	printf("\nMENU: \n 1. Isi\n 2. Ambil\n 3. Lihat\n 4. Hapus\n 5. Keluar\n");
   	printf("Masukkan pilihan: "); scanf("%i",&pil);

      switch(pil){
      	case 1:
         	printf("\nMasukkan data: "); scanf("%i",&data);;
            isi(data,&tumpukan);
            break;
         case 2:
         	ambil(&tumpukan,&data);
            break;
         case 3:
         	tampil(&tumpukan);
            break;
         case 4:
            hapus(&tumpukan);
            break;
      }
   }while(pil!=5);

   getch();
}

Wokey,, itu contoh sourcecodenya, tinggal dijalanin aja,, o ya sedikit keterangan tentang fungsi yang ada
fungsi isi=push
fungsi ambil=pop
fungsi kosong=isEmpty
fungsi penuh=isFull
fungsi hapus=Clear
udah itu aja cuman namahin dikit,, hasilnya setelah dijalankan kira2 kayak gini:


yah udah kelar, tampilannya ga menarik sama sekali ya.. hehehe cuman item putih kaya’ gitu.. ckckck,, udah segitu aja,, semoga bermanpaat ea.. mau tidur dulu udah ngantuk e..

Gradient Form di Java

Setelah beberapa lama belajar java, ni lumayan ada hasilnya juga. ternyata java tu sangat menyenangkan, muantap bener dah.. hehehe 😀

O ya kali ini daku ingin berbagi gimana to caranya buat tampilan aplikasi yang kita buat backgroundnya bisa bergradasi ato gradient.. biar tampilannya lebih keren gitu. Ternyata kita bisa ngoprek-ngoprek tampilannya itu dengan method-method yang udah ada, biasanya sih pake paintComponent(Graphics g).. hehehe apaan tuh? daku juga ga tau.. 😀

langsung ja, gimana toh caranya,, sintak selengkapnya kayak gini ni..
pertama buat kelas untuk menampung panel yang kita jadikan sebagai gradasinya, jadi kita tidak membuatnya langsung di jframenya.. kemudian isi dengan kode kayak di bawah ini..

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;

public class GradientPanel extends JPanel {

private Shape shape;
private GradientPaint paint, top, bottom;

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();

shape = new Rectangle2D.Double(0, 0, getWidth(), getHeight());
Color gradientTop = new Color(246, 148, 27);
Color gradientBottom = new Color(254, 181, 82);

paint = new GradientPaint(0F, 0F, gradientTop, 0F, getHeight(), gradientBottom);
top = new GradientPaint(0, 0, new Color(1.0F, 1.0F, 1.0F, 0.5F),
0, 50, new Color(1.0F, 1.0F, 1.0F, 0.0F));
bottom = new GradientPaint(0, getHeight() / 2F, new Color(1.0F, 1.0F, 1.0F, 0.0F),
0, getHeight(), new Color(1.0F, 1.0F, 1.0F, 0.5F));

g2.setPaint(paint);
g2.fill(shape);
g2.setPaint(top);
g2.fill(shape);
g2.setPaint(bottom);
g2.fill(shape);
}
}

kalo udah tinggal buat jframenya yang menampung panel yang diinstance dari kelas yang barusan dibuat (GradientPanel) udah deh gitu aja, misalnya kaya gini ni.

import javax.swing.JFrame;

public class GradientForm extends JFrame{

private GradientPanel panel;
public GradientForm() {
super("Gradient Form");
panel = new GradientPanel();
add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
}

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new GradientForm().setVisible(true);
}
});
}
}

udah gitu aja, kemudian tinggal di kompile dan dijalankan kalo pake netbeans tinggal tekan Shift+F6 dan hasilnya kayak gini ni..

gimana mantep ga hasilnya.. O ya, ni daku sangat berterima kasih pada mas echo yang telah banyak berbagi ilmunya, muantap bener deh pokoknya…thanks mas..

udah sekian dulu, semoga bermanpaat..

Linux Day di AMIKOM

Kegiatan yang mantep ni, Linux day…. ga boleh ketinggalan ni.. hehehe