Halloween party ideas 2015

PROGRAM POINTER;
USES CRT;
TYPE
       Stringdata  = STRING[20];
       Ptrdata       =^RECORDDATA;
       Recorddata = RECORD;
                Nama      : STRINGNAMA;
                Jabatan   : STRING [25];
                Ptrkepala : PTRDATA;
        END;
VAR
       Ptrawal_heap : ptrdata;
       Ptrkepala       : ptrdata;

PROCEDURE BENTUK_DAFTAR (VAR ptrkepala : ptrdata);
{ menyusun daftar berantai dengan variabel PTRKEPALA menunjuk data -}
{ terakhir yang dimasukan melalui keyboard                                          }
VAR
     Ptrbaru   : PTRDATA;
     Jawaban : CHAR;
BEGIN
      REPEAT
      CLRSCR;
          NEW (ptrbaru);
          WRITE (‘ Nama pegawai        : ‘);
          READLN (ptrbaru^.nama);
          WRITE (‘ Jabatan                  :’);
READLN (ptrbaru^.jabatan);
    Ptrbaru^.lanjutan := ptrkepala;
         Ptrkepala := ptrbaru;
         WRITE (‘ Masukan data lagi (Y/T) ? : ‘);
         REPEAT
              Jawaban  := UPCASE (READKEY)
         UNTIL jawaban IN [‘Y’,’T’];
         WRITELN (jawaban);
         UNTIL jawaban =’T’;
END;

PROCEDURE CETAK_DAFTAR ( ptrkepala:ptrdata);
{ mencetak isi daftar berantai }
VAR
      Ptrsementara:ptrdata;
BEGIN
      CLRSCR;
      WRITELN (‘ ISI DAFTAR BERANTAI : ‘);WRITELN;
      WRITELN (‘-----------------------------------------------------------------------------‘);
      WRITELN (‘ N A M A ’:20,’J A B A T A N’:16);
      WRITELN (‘-----------------------------------------------------------------------------‘);
      Ptrsementara :=ptrkepala;
      {ptrsementara menunjuk pada lokasi yg sama dng ptrkepala}
      WHILE ptrsementara <> NIL Do
      WITH ptrsementara^DO
          BEGIN
                 WRITELN (nama:20,jabatan:16);
                 Ptrsementara := lanjutan;
          END;
      WRITELN (‘-----------------------------------------------------------------------------‘);
      WRITE (‘ tekan Return ‘); READLN;
END;

PROCEDURE CARI DATA (ptrkepala:ptrdata;namadicari:stringnama;
                                     VAR ptrpraposisidata,ptrposisidata:ptrdata);

{untuk mencari data nama dicari pada daftar berantai, hasil                        }
{- jika data ketemu, maka     }
{     1. ptrposisidata menunjuk simpul dari data yang dicari     }
{     2. ptrpraposisidata menunjuk simpul sebelum simpul data yang dicari    }
{         atau sama dengan NIL, jika ptrposisidata menunjuk yang juga ditun- }
{ juk oleh ptrkepala     }
{- jika tidak diketemukan, maka ptrposisidata sama dengan NIL    }

VAR
     Ketemu : BOOLEAN;
BEGIN
     PTRPRAPOSISIDATA :=NIL;
     PTRPOSISIDATA :=ptrkepala;
     Ketemu := FALSE;
     WHILE (NOT ketemu AND (ptrposisidata <>NIL)) DO
     IF ptrposisidata^.nama <> namadicari THEN
          BEGIN
                 Ptrposisidata :=ptrposisidata;
                 Ptrposisidata :=ptrposisidata^.lanjutan
          END
     ELSE
          Ketemu :=TRUE;
END;

PROCEDURE HAPUSISIDAFTAR (VAR ptrkepala:ptrdata);
{untuk menghapus sebuah simpul data daftar berantai}
CONST
     String_kosong=’ ‘;
VAR
     Namadicari : stringnama;
     Prtposisidata,
     Ptrpraposisidata : ptrdata;
BEGIN
     CLRSCR;
     WRITELN (‘Masukan nama pegawai dari data yang akan dihapus:’);
     READLN (namadicari);
     IF namadicari = string_kosong THEN
         EXIT;
     Cari_data (ptrkepala, namadicari, ptrpraposisidata, ptrposisidata);
     IF ptrposisidata = NIL THEN
         BEGIN
            WRITELN (‘ data tak diketemukan, tekan enter untuk melanjutkan’);
             READLN;
         END;
      BEGIN  
      { proses penghapusan }
          IF ptrpraposisidata = NIL THEN
          { simpul yang ditunjukan ptrkepala dihapus }
           ptrkepala :=ptrkepala^.lanjutan
          ELSE
          { bukan simpul yang ditunjuk ptrkepala dihapus }
          WRITELN (‘ Ok………data sudah dihapus. Tekan enter ‘);
        END;
END;   { akhir procedure hapusisidaftar }

PROCEDURE PROSESPILIHAN (VAR ptrkepala : ptrdata);
{ digunakan untuk memilih proses ; memasukan data, menampilkan data }
{ menghapus data }
VAR
     Pilihan : CHAR;
BEGIN
     REPEAT
            CLRSCR;
            TEXTATTR :=$70; { video terbalik }
    GOTOXY(20,2); WRITE (‘                   PILIHAN PROSES                 ‘);
  TEXTATTR :=$70; { video normal kembali }
             GOTOXY(20,4); WRITE (‘ [1] Memasukan / menambah data’);            
             GOTOXY(20,5); WRITE (‘ [2] Menampilkan isi daftar berantai’);
  GOTOXY(20,6); WRITE (‘ [3] Menghapus data pada daftar berantai’);
             GOTOXY(20,7); WRITE (‘ [4] Selesai’);
             GOTOXY(20,8); WRITE (‘ --------------------------------------------------‘);
             GOTOXY(20,9); WRITE (‘ Masukan kode pilihan [1…4]’);
             REPEAT
Pilihan := UPCASE (READKEY)
             UNTIL pilihan IN [‘1’..’4’];
             WRITE (pilihan);
             CASE pilihan OF
                ‘1’ : bentuk_daftar(ptrkepala);
                ‘2’ : catak_daftar(ptrkepala);
                ‘3’ : hapusisidata(ptrkepala);
             END;
     UNTIL pilihan = ‘4’
END;

BEGIN
     MARK(ptrawal_heap);     {penandaan terhadap awalheap}
     Ptrkepala :=NIL ;           {keadaan awal ptr kepala          }
     Prosespilihan(ptrkepala); {pelaksanaan pemilihan proses }
     RELEASE(ptrawal_heap); {membebaskan heap yg digunakan u/ alokasi dynamic  }
END.

Post a Comment

This blog needed you to understand the word spam - never spam on this blog, although i will not moderate all of it, but you will learn it yourself, educate yourself

Powered by Blogger.