Welcome to my Blog

Jumat, 15 Agustus 2014

DPC_WATCHDOG_VIOLATION_WINDOWS_8

WINDOWS 8 PROBLEMS


HOW TO SOLVE DPC WATCHDOG VIOLATION


Are you windows 8 user? Then you gotta know this annoying problem. So frustated to face this case even if it only happens randomly. Having some laggy moments and nothing could be clicked like hey I just bought you and you did this to me?! :(

Hahahah problem solved!!! I think it's all about the driver, you need to update it, here's the tutor.

1. Press Windows key + X and select Device Manager.











2. Look out for the disk drives and right click on your driver then update it!













3. Choose "Browse my computer for driver software".













4. Then you'll find "Let me pick from..". Click that one.













5. Then just click the next button.













6. Close and you will need to restart your pc.

You are now done with your problem!! If it doesn't work to you, please kindly leave comments. :)

Senin, 30 Juni 2014

GrammaticalError

WHICH ONE IS CORRECT

"Succeed", "Success", OR "Successful" ?


Hi! I have just searched for an article that could explain about this topic, but I don't find anything useful. So, I think it will be helpful if I share it some to you guys!

Some people might not recognize the differences of succeed, success, and successful. I also didn't know until I found a site that giving me questions about those words. It gives me a clue a lot and I feel so stupid for that.. hahahahah xD

If you want to try too, simply click on this link : Confused-Words-Succeed

Yea, I know for those who cares about gramatical error, it is very very important to use the right words in front of people. If you still dont get it after answering the questions, here are the differences:

V1 : Succeed 
V2 : Succeeded
V3 : Succeeded 
Noun : Success
Adj    : Successful
Adv   : Successfully

That's all. Thanks for reading! :)

Sabtu, 21 Juni 2014

RecoverFiles

How to Recover Hidden Files From Virus




Yesterday my Flash Drive was hit by a series of Trojan Virus so I scanned it with Eset Nod32 Antivirus to clear the virus. After scan was completed, BAMMM! I found no data in the Flash Drive. Sigh.. I hadn't had a copy for those files!! But then when I checked the properties tab, used disc space was showing a lot of data. 

Hahahaha then I thought I didn't really lose my files. I tried to make a batch program using some cmd commands and my files were back!



If you lost your files too, you'd better follow my steps:

1. Open up Notepad in your pc and copy these commands:

@echo off 
attrib /d /s -h -r -s 
exit 

2. Save it as "Filename.bat".

3. Close Notepad and put the "Filename.bat" in your infected flash drive.

4. Run the .bat program.

Taraaaaaa your files back!

Rabu, 18 Juni 2014

CSS-Trick

CSS Trick: How to Make a Text Area Scrolling in Your Posts


HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING HOW TO MAKE A TEXT SCROLLING

Hello! I've just read an article from this site Cara-Trik CSS and its really really helpful for me. You know that everytime you post a script of a program, it will be such a mess if you don't have CSS to make it scroll. 
At least, to build and designing a program or website you need 500 lines to be written. The problem is we can't just show the whole scripts to the viewers. It forces the readers to read it completely. So, now I will tell you how to make a text area scrolling in your website with CSS code. 

This is the CSS code to make a scroll, you need to put it in the HTML section to make it works. 
<div style="border: 2px solid #999999; height: 100px; margin-left: 20px; overflow: auto; padding: 3px; text-align: left; width: 280px;">YOUR TEXT HERE</div>

You can either change the color of the border (marked red) with index of color for html in this link: HTML COLOR CODES or set the another settings like width and height of the text area, just change the pixel one (marked blue) with pixel you need.

Ok that's all! Hopefully this article helpful! :)

Kamis, 05 Juni 2014

Implementasi Queue

Program Implementasi Queue Dalam Bahasa Pascal

By : @hadipranoto_

Screenshot of Queue Program 



Queue Pascal Source:




program antrian;
{I.S : Program antrian diberi harga awal}
{F.S : Program antrian dalam keadaan siap digunakan}
uses crt;

const
     Max=3;

type
     Data = record
          Nama: string[15];
    NIM : string[15];
    Kota: string[15];
    Lama: byte;
    Tipe: string[10];
     end;
  
     LarikQueue = array [1..Max] of data;

var
     Queue : LarikQueue;
     Front, Rear, N_antrian : Integer;
     Menu, Lagi :char;
     Elemen : data;
     carinim,carinama : string[15];

     Procedure inisialisasi (var Front,Rear: Integer);
     {I.S: Peubah penunjuk front dan rear diberi harga awal nol}
     {F.S: Peubah penunjuk front dan rear bernilai nol}
     begin
          Front:=0;
          Rear:=0;
     end;

     Function Kosong(Rear: Integer): boolean;
     {I.S: Penunjuk rear dalam keadaan terdefinisi}
     {F.S: Mengecek indeks penunjuk rear bernilai 0 atau tidak}
     begin
          Kosong:=false;
          if (Rear=0) then
               kosong:=true;
     end;

     Function Penuh(Rear: Integer): boolean;
     {I.S: Penunjuk rear dalam keadaan terdefinisi}
     {F.S: Mengecek indeks penunjuk rear bernilai max atau tidak }
     begin
          Penuh:=false;
          if (Rear=max) then
               penuh:=true;
     end;

     Function SatuElemen(Rear: Integer): boolean;
     {I.S: penunjuk rear dalam keadaan terdefinisi}
     {F.S: Mengecek indeks rear bernilai 1 atau lebih}
     begin
          satuelemen:=false;
          if (Rear=1) then
               satuelemen:=true;
     end;


     Procedure InputElemen (var Elemen: data);
     {I.S: Elemen dibaca dari piranti masukan}
     {F.S: Elemen disimpan kedalam memori komputer}
     begin
          gotoxy (25,5); write (' -----------Enqueue Data---------- ');
          gotoxy (25,7); write (' Masukan Nama       : ');readln (elemen.nama);
          gotoxy (25,8); write (' Masukan NIM        : ');readln (elemen.nim);
          gotoxy (25,9); write (' Masukan Kota       : ');readln (elemen.kota);
          gotoxy (25,10);write (' Masukan Lama Sewa  : ');readln (elemen.lama);
          gotoxy (25,11);write (' Masukan tipe mobil : ');readln (elemen.tipe);
          gotoxy (25,13);writeln (' ------------------------------- ');
     end;

     
     Procedure CetakElemen (Elemen: data);
     {I.S: Elemen dibaca dari piranti masukan}
     {F.S: Elemen disimpan kedalam memori komputer}
     begin
          gotoxy (25,5); writeln (' ---------Dequeue Data----------- ');
          gotoxy (25,7); writeln (' Nama             : ',elemen.nama);
          gotoxy (25,8); writeln (' NIM              : ',elemen.nim);
          gotoxy (25,9); writeln (' Kota             : ',elemen.kota);
          gotoxy (25,10);writeln (' Lama Sewa        : ',elemen.lama);
          gotoxy (25,11);writeln (' Tipe mobil       : ',elemen.tipe);
          gotoxy (25,13);writeln (' ------------------------------- ');
     end;

     Procedure PUSH (var Queue: LarikQueue; Rear: integer; Elemen: data);
     {I.S: Queue dan front sudah terdefinisi}
     {F.S: Menambahkan elemen kedalam Queue}
     begin
          Queue[rear].nama:=elemen.nama;
          Queue[rear].nim :=elemen.nim;
          Queue[rear].kota:=elemen.kota;
          Queue[rear].lama:=elemen.lama;
          Queue[rear].tipe:=elemen.tipe;
     end;

     Procedure POP (var Queue: LarikQueue; Front: integer; var Elemen: data);
     {I.S: Queue dan front sudah terdefinisi}
     {F.S: Mengeluarkan data dari Queue untuk kemudian disimpan kedalam elemen}
     begin
          elemen.nama:=Queue[front].nama;
          elemen.nim :=Queue[front].nim;
          elemen.kota:=Queue[front].kota;
          elemen.lama:=Queue[front].lama;
          elemen.tipe:=Queue[front].tipe;
     end;

     Procedure GeserData (var Queue: LarikQueue; var Front,Rear: integer);
     {I.S: Queue, front dan rear terdefinisi}
     {F.S: memindahkan posisi rear dan data ke-i ke posisi i-1}
     var
          Bantu: integer;
     begin
          Bantu:=front;
          repeat
            begin
                 Queue[bantu]:=Queue[bantu+1];
                 bantu:=bantu+1;
            end
          until (bantu=rear);
          rear:=rear-1;
     end;


     Procedure Enqueue (var Queue: LarikQueue; var Front, Rear : integer; Elemen : Data);
     {I.S: Queue, front, rear dan elemen terdefinisi}
     {F.S: Menambahkan elemen kedalam larik Queue}
     begin

          if (not penuh(rear)) then
             begin
                  N_antrian:=N_antrian+1;
                  InputElemen(Elemen);
                  if (kosong(rear)) then
                    begin
                         front:=1;
                         rear:=1;
                    end
                  else
                      rear:=rear+1;

                  Push (Queue,Rear,Elemen);
             end
          else
             begin
                  gotoxy (20,8); writeln ('Tidak bisa melakukan enqueue! Antrian Penuh!');
          end;
     end;

     Procedure Dequeue (var Queue: LarikQueue; var Front, Rear : integer; var Elemen : Data);
     {I.S: Queue, front dan rear terdefinisi}
     {F.S: Mengeluarkan data yang ada di indeks front ke elemen }
     begin
          if (not kosong(rear)) then
             begin
                  N_antrian:=N_antrian-1;
                  POP (Queue,Front,Elemen);
                  CetakElemen(Elemen);
                  if (SatuElemen(rear)) then
                     begin
                          front:=0;
                          rear:=0;
                     end
                  else
                     begin
                          GeserData (Queue,Front,Rear);
                  end;
             end
          else
             begin
                  gotoxy (25,6); Writeln ('Dequeue gagal, queue kosong!');
          end;
     end;

     Procedure pencarian_nim (Queue : LarikQueue; Front,Rear : Integer; carinim: string );
  {I.S: Melakukan pencarian unik terhadap nim}
  {F.S: Menampilkan hasil pencarian jika data ditemukan}
     var
          ketemu: boolean;
          bantu: integer;

     begin
          if (kosong(rear)) then
             begin
                 gotoxy (19,5); writeln ('Pencarian NIM');
                 gotoxy (19,6); writeln ('----------------------------------------');
                 gotoxy (19,13);writeln ('Antrian kosong!');
                 gotoxy (19,14);writeln ('----------------------------------------');
             end
          else
             begin
                  gotoxy (19,5); writeln ('Pencarian NIM');
                  gotoxy (19,6); writeln ('----------------------------------------');
                  gotoxy (19,14);writeln ('----------------------------------------');
                  gotoxy (19,7); write   ('Masukan Nim dicari : '); readln(carinim);

                  ketemu:=false;
                  bantu:=front;
                  while (not kosong(rear)) and ((bantu<>rear+1) and (not ketemu)) do
                  begin
                       if (Queue[bantu].nim=carinim) then
                         begin
                              ketemu:=true;
                         end
                       else
                         begin
                              bantu:=bantu+1;
                       end;
                  end;

            if (ketemu) then
                    begin
                         gotoxy (19,9); writeln ('NIM        : ',Queue[bantu].nim);
                         gotoxy (19,10);writeln ('Nama       : ',Queue[bantu].nama);
                         gotoxy (19,11);writeln ('Kota       : ',Queue[bantu].kota);
                         gotoxy (19,12);writeln ('Lama Sewa  : ',Queue[bantu].lama);
                         gotoxy (19,13);writeln ('Tipe Mobil : ',Queue[bantu].tipe);
                    end
            else
                    begin
                gotoxy (19,13);writeln('Tidak ditemukan penyewa dengan NIM "',carinim,'"');
            end;
          end;
          gotoxy (19,15);write('Tekan (y) untuk kembali : '); readln(menu);
     end;


     Procedure pencarian_nama (Queue : LarikQueue; Front,Rear: integer; nama_dicari : string);
     {I.S: Melakukan pencarian data tidak unik terhadap nama penyewa}
     {F.S: Menampilkan seluruh data hasil pencarian yang mempunyai kecocokan}
     var
          x,y,bantu : integer;
          ketemu : boolean;
     begin
          if (kosong(rear)) then
            begin
                 gotoxy (19,5); writeln ('Pencarian Nama');
                 gotoxy (19,6); writeln ('----------------------------------------');
                 gotoxy (19,7); write   ('Antrian Kosong! ');
                 gotoxy (19,15);writeln ('----------------------------------------');
                 gotoxy (19,16);write   ('Tekan (y) untuk kembali : '); readln(menu);
            end
          else
            begin
                 x:=10;
                 y:=7;
                 bantu:=front;
                 ketemu:=false;

                 gotoxy (19,5); writeln ('Pencarian Nama');
                 gotoxy (19,6); writeln ('----------------------------------------');
                 gotoxy (19,15);writeln ('----------------------------------------');
                 gotoxy (19,7); write   ('Masukan nama yang dicari : ');readln(nama_dicari);
                 clrscr;

                 gotoxy (10,3); writeln ('Pencarian Nama');
                 gotoxy (10,4); writeln ('------------------------------------------------------------------');
                 gotoxy (10,5); writeln ('| NIM       | Nama        | Kota      | Lama Sewa | Tipe Mobil   |');
                 gotoxy (10,6); writeln ('------------------------------------------------------------------');

                 while ((not kosong(rear)) and (bantu<>rear+1)) do
                 begin
                    if (Queue[bantu].nama=nama_dicari) then
                      begin
                           gotoxy (x,y);    writeln ('| ',Queue[bantu].nim);
                           gotoxy (x+12,y); writeln ('| ',Queue[bantu].nama);
                           gotoxy (x+26,y); writeln ('| ',Queue[bantu].kota);
                           gotoxy (x+38,y); writeln ('| ',Queue[bantu].lama,' hari');
                           gotoxy (x+50,y); writeln ('| ',Queue[bantu].tipe);
                           gotoxy (x+65,y); writeln ('|');
                           y:=y+1;
                           ketemu:=true;
                      end;
                    bantu:=bantu+1;
                 end;
                 if (ketemu) then
                   begin
                       gotoxy (x,y);writeln ('------------------------------------------------------------------');
                       gotoxy (x,y+1);write('Pencarian Selesai, tekan (y) untuk kembali : '); readln(menu);
                   end
                 else
                   begin
                       gotoxy (10,8); writeln ('Nama yang anda cari tidak ditemukan di antrian!');
                       gotoxy (10,9);writeln ('------------------------------------------------------------------');
                       gotoxy (10,10);write('Pencarian Selesai, tekan (y) untuk kembali : '); readln(menu);
                 end;
          end;
     end;


     Procedure TampilQueue (Queue : LarikQueue; Front,Rear: integer);
     {I.S: Queue, front dan rear sudah terdefinisi }
     {F.S: Menampilkan seluruh isi antrian}
     var
          x,y,bantu : integer;
     begin
          if (kosong(rear)) then
            begin
                 gotoxy (19,5); writeln ('Tabel isi Antrian');
                 gotoxy (19,6); writeln ('----------------------------------------');
                 gotoxy (19,7); write   ('Antrian Kosong! ');
                 gotoxy (19,15);writeln ('----------------------------------------');
                 gotoxy (19,16);write   ('Tekan (y) untuk kembali : '); readln(menu);
            end
          else
            begin
                 x:=10;
                 y:=7;
                 bantu:=front;
                 clrscr;

                 gotoxy (10,3); writeln ('Daftar Isi Antrian');
                 gotoxy (10,4); writeln ('------------------------------------------------------------------');
                 gotoxy (10,5); writeln ('| NIM       | Nama        | Kota      | Lama Sewa | Tipe Mobil   |');
                 gotoxy (10,6); writeln ('------------------------------------------------------------------');

                 while ((not kosong(rear)) and (bantu<>rear+1)) do
                 begin
                      gotoxy (x,y);    writeln ('| ',Queue[bantu].nim);
                      gotoxy (x+12,y); writeln ('| ',Queue[bantu].nama);
                      gotoxy (x+26,y); writeln ('| ',Queue[bantu].kota);
                      gotoxy (x+38,y); writeln ('| ',Queue[bantu].lama,' hari');
                      gotoxy (x+50,y); writeln ('| ',Queue[bantu].tipe);
                      gotoxy (x+65,y); writeln ('|');
                      y:=y+1;
                      bantu:=bantu+1;
                 end;
                 gotoxy (x,y);writeln ('------------------------------------------------------------------');
                 gotoxy (x,y+1);write('Tekan (y) untuk kembali : '); readln(menu);
          end;
     end;


     Procedure MenuQueue (var menu:char);
     {I.S: menu dibaca dari piranti masukan}
     {F.S: menampilkan daftar menu ke program utama }
     begin
          gotoxy(1,0);writeln  ('Queue by @hadiPranoto_ ');
          
          gotoxy(25,5);writeln  ('=================================');
          gotoxy(25,6);writeln  (' Program Antrian Penyewaan Mobil ');
          gotoxy(25,7);writeln  ('=================================');
          gotoxy(25,8);writeln  ('          Isi Antrian : ', N_antrian);
          gotoxy(25,9);writeln  (' 1. EnQueue');
          gotoxy(25,10);writeln (' 2. DeQueue');
          gotoxy(25,11);writeln (' 3. Pencarian NIM');
          gotoxy(25,12);writeln (' 4. Pencarian Nama');
          gotoxy(25,13);writeln (' 5. Menampilkan Isi Antrian');
          gotoxy(25,14);writeln (' 0. Exit');
          gotoxy(25,15);writeln ('=================================');
          gotoxy(25,16);write   (' Input Menu : ');readln (menu);
          
          case menu of
               '1': begin
                       clrscr;
                       EnQueue(Queue,Front,Rear,Elemen);
                       gotoxy (26,15);write (' Tekan (y) untuk kembali : ');readln (lagi);
                    end;

               '2': begin
                       clrscr;
                       DeQueue(Queue,Front,Rear,Elemen);
                       gotoxy (26,15);write (' Tekan (y) untuk kembali : ');readln (lagi);
                    end;

               '3': begin
                       clrscr;
                       Pencarian_nim(Queue,Front,Rear,carinim);
                    end;

               '4': begin
                       clrscr;
                       Pencarian_nama(Queue,Front,Rear,carinama);
                    end;

               '5': begin
                       clrscr;
                       TampilQueue (Queue,Front,Rear);
                    end;
          end;
     end;

begin
     Inisialisasi(Front,Rear);
     N_antrian:=0;

     Repeat
       begin
            clrscr;
            MenuQueue(menu);
       end
     Until ((lagi='t') or (lagi='T')) or (menu='0');

end.

Selasa, 27 Mei 2014

KalkulatorPostfix

Kalkulator Postfix Dalam Bahasa Pascal


Hadi Pranoto
By : @hadipranoto_

Screenshot of Postfix Calculator



Program Kalkulator_Postfix;
{I.S: Program penghitung notasi infix}
{F.S: Program dalam keadaan siap digunakan}
uses crt;
 
Const
     Max = 150;
 
type

    ArrChar=array[1..max] of char;
    
    ArrValue=array[1..max] of real;

    StackOfChar=record
           Data:ArrChar;
           Top:byte;
           end;

    StackOfValue=record
           Data:ArrValue;
           Top:byte;
           end;

    K_string=string[max];


var
   TumpukanData  : StackOfChar;
   TumpukanHasil : StackOfValue;


   Infix,ekspresiP : K_string;
   i,TopA : byte;
   Hasil  : real;
   Lagi   : char;

   Procedure Inisialisasi(var TData:StackOfChar; var THasil:StackOfValue;var TopA:byte);
   {I.S: Memberi harga awal penunjuk top}
   {F.S: penunjuk top bernilai nol}
   begin
        TData.top:=0;
        THasil.top:=0;
        TopA:=0;
   end;
 
   Function Kosong(Top: byte):boolean;
   {I.S : Penunjuk Top terdefinisi}
   {F.S : Mengecek status Top kosong atau tidak}
   begin
        Kosong:=false;
        if(Top=0)then
             Kosong:=true;
   end;

   Function Penuh(Top:byte):boolean;
   {I.S : Penunjuk Top terdefinisi}
   {F.S : Mengecek status Top penuh atau tidak}
   begin
        Penuh:=false;
        if(Top=max)then
             Penuh:=true;
   end;

   Function Panjang(Kalimat:K_string):integer;
   {I.S: Kalimat sudah terdefinisi}
   {F.S: Mengembalikan nilai dari panjang kalimat}
   begin
        Panjang:=length(kalimat);
   end;
 
   Function Salah(Kalimat:K_string):boolean;
   {I.S: Kalimat sudah terdefinisi}
   {F.S: Mengecek status kalimat infix salah atau tidak}
   var
        i : integer;
        IsiOperator : set of char;
 
   begin
        IsiOperator:=['^']+['*']+['/']+['+']+['-'];

        Salah:=false;
        for i:=1 to Panjang(kalimat) do
        begin
             if((kalimat[i] in IsiOperator) and (kalimat[i+1] in IsiOperator))
             or (kalimat[Panjang(kalimat)] in IsiOperator) or (kalimat[1] in IsiOperator)then
                begin
                     Salah:=true;
                end;
        end;
   end;
 
   Function Kasta(Opr:Char):byte;
   {F.S: operator sudah terdefinisi}
   {I.S: Mengembalikan nilai tingkatan operator }
   begin
        case opr of
             '^'     : kasta:=3;
             '*','/' : kasta:=2;
             '+','-' : kasta:=1;
        end;
   end;
 
   Function Pangkat(m,n:real):real;
   {I.S : peubah m dan n sudah terdefinisi}
   {F.S : Menghitung nilai dari m pangkat n}
   begin
        if(n = 0)then
             Pangkat := 1
        else
             Pangkat := m * Pangkat(m,n-1);

   end;
 
   Procedure Proses(var Infix:k_string);
   {I.S: Notasi infix dibaca dari piranti masukan}
   {F.S: Notasi infix disimpan jika betul penulisannya}
   var
        stop : boolean;

   begin
        stop:=false;
        while(not stop) do
        begin
             if(Salah(Infix)) or (Infix = '')then
               begin
                    writeln('Notasi yang anda masukan salah!');
               end
             else
                    stop:=true;
        end;
   end;
 
   Procedure Push(var Tumpukan:StackOfChar; elemen:char);
   {I.S: Menambahkan data baru kedalam stack paling atas}
   {F.S: Data baru ditambahkan kedalam stack jika tidak penuh}
   begin
       if (not penuh(tumpukan.top)) then
          begin
              Tumpukan.top:=Tumpukan.top+1;
              Tumpukan.data[tumpukan.top]:=elemen;
       end;
   end;
 
   Procedure Pop(var Tumpukan:StackOfChar; var elemen:char);
   {I.S: Mengeluarkan data teratas jika stack tidak kosong}
   {F.S: Data dikeluarkan dari stack jika tidak kosong}
   begin
     if (not kosong(tumpukan.top)) then
        begin
           Elemen:=Tumpukan.data[tumpukan.top];
           Tumpukan.top:=Tumpukan.top-1;
     end;
   end;
 
   Procedure Tampungdata(var TopA:byte; var kalimat:k_string; elemen:char);
   {I.S: Menyisipkan elemen kedalam peubah kalimat}
   {F.S: Menyimpan hasil akhir suatu notasi tertentu}
   begin
        TopA:=TopA+1;
        Kalimat[TopA]:=elemen;
   end;
 
   Procedure NotasiPostfix(infix:k_string; Tumpukan:StackOfChar;var ekspresiP: k_string; var TopA:byte);
   {I.S: Infix dan tumpukan sudah terdefinisi sebelumnya}
   {F.S: ekspresi P menyimpan hasil perubahan notasi dari infix menjadi postfix}
   var
      i : integer;
      IsiOperator : set of char;
      Simbol,elemen : char;

   begin
        IsiOperator := ['^']+['*']+['/']+['+']+['-'];
        Push(Tumpukan,'(');
        Infix[Panjang(Infix)+1]:=')';
 
        for i:=1 to Panjang(Infix)+1 do
        begin
             Simbol:=Infix[i];
 
             if(Simbol = '(') then
                   Push(Tumpukan,Simbol)
             else
             if(Simbol = ')')then
                begin
                    repeat
                         Pop(Tumpukan,elemen);
                         Tampungdata(TopA,EkspresiP,elemen);
                    until(Tumpukan.data[tumpukan.top] = '(');
                    Pop(Tumpukan,elemen);
                end
             else
             if(Simbol in IsiOperator) then
                begin
                     //jika tingkatan operator lebih tinggi daripada simbol maka pop
                     while(Tumpukan.data[tumpukan.top] <> '(') and (Kasta(Tumpukan.data[tumpukan.top])>=Kasta(Simbol)) do
                     begin
                           Pop(Tumpukan,elemen);
                           Tampungdata(TopA,EkspresiP,elemen);
                     end;
                     //jika tingkatan operator lebih rendah daripada simbol maka push
                     Push(Tumpukan,Simbol);
                end
             else
                Tampungdata(TopA,EkspresiP,Simbol);
        end;

   end;


  {daerah subrutin hitung postfix}
   Procedure PushNilai(var Tumpukan:StackOfValue; data:real);
   {I.S: Memasukan data kedalam Tumpukan}
   {F.S: Tumpukan berisi data baru }
   begin
        if (not penuh(tumpukan.top)) then
          begin
               Tumpukan.top:=Tumpukan.top+1;
               Tumpukan.data[tumpukan.top]:=data;
          end;
     end;
 
   
   Procedure PopNilai(var Tumpukan:StackOfValue; var data:real);
   {I.S: Mengeluarkan data ke-top jika stack tidak kosong}
   {F.S: Data baru dikeluarkan dari stack jika tidak kosong}
   begin
        if (not kosong(tumpukan.top)) then
          begin
               Data:=Tumpukan.data[tumpukan.top];
               Tumpukan.top:=Tumpukan.top-1;
          end
   end;


   Procedure HitungPostfix(var EkspresiP: k_string; Tumpukan:StackOfValue; var hasil:real);
   {I.S: Mengeksekusi notasi postfix}
   {F.S: Peubah hasil menyimpan nilai hasil eksekusi notasi postfix }
   var
        i,y : byte;
        IsiOperator : set of char;
        Simbol : char;
        a,b,angka,hitung : real;
 
   begin
        y:=11;

        IsiOperator := ['^']+['*']+['/']+['+']+['-'];
        EkspresiP[TopA+1] := ')';

        for i:=1 to topA+1 do
        begin
             Simbol:=EkspresiP[i];

             if(Simbol in IsiOperator)then
                begin
                     PopNilai(Tumpukan,angka);
                     b:=angka;
                     PopNilai(Tumpukan,angka);
                     a:=angka;
 
                     case Simbol of
                          '^' : hitung := Pangkat(a,b);
                          '*' : hitung := a*b;
                          '/' : hitung := a/b;
                          '+' : hitung := a+b;
                          '-' : hitung := a-b;
                     end;
 
                     PushNilai(Tumpukan,hitung);
                end
             else
             if(Simbol = ')') then
                begin
                     PopNilai(Tumpukan,angka);
                     hasil:=angka;
                end
             else
                begin
                     gotoxy(20,y);write('Masukkan Nilai ',Simbol,' : '); readln(angka);
                     PushNilai(Tumpukan,angka);
                     y:=y+1;
             end;
        end;
   end;
 

begin
     repeat
           clrscr;
           textcolor(11);
           gotoxy(20,1); write ('             www.hadipranoto.tk');
           gotoxy(20,4); write ('=============================================');
           gotoxy(20,5); write ('+            Kalkulator Postfix             +');
           gotoxy(20,6); write ('=============================================');

           textcolor(white);
           Inisialisasi(TumpukanData,TumpukanHasil,TopA);

           gotoxy(20,8);write('Masukan Notasi Infix : '); readln(Infix);
           proses (infix);


           NotasiPostfix(Infix,Tumpukandata,ekspresiP,TopA);
           textcolor(yellow);
           gotoxy(20,9);write('Notasi Postfix       : ');
           if(Kosong(Tumpukandata.top))then
              begin
                   for i:=1 to TopA do
                   begin
                        write(EkspresiP[i]);
                   end;
           end;
           writeln;
           textcolor(white);
           HitungPostfix(EkspresiP,TumpukanHasil,hasil);
           textcolor(yellow);
           gotoxy(20,20);writeln('Value = ',hasil:0:2);

           textcolor(11);
           gotoxy(20,21); write ('=============================================');

           gotoxy(20,22);write('Apakah akan mengitung lagi (y/t) : '); readln(lagi);
     until(lagi = 'T') or (lagi = 't');
end.

Senin, 19 Mei 2014

Social Network and Instant Messenger

My Social Accounts

Hadi Pranoto

I'm not sure what i actually post about. Since the day I created many social accounts, I think it is ok to share it here hahaha. Just click any types of it and let's be friends! :)