Rabu, 09 Januari 2019

Struktur Data


 Struktur data adalah cara menyimpan atau mempresentasikan data di dalam komputer agar bisa di pakai ecara eksiten.

  • Contoh Error:

  
   1.error in real constant
          konstanta tipe real salah
   2.error in type
          simbol ini tidak dapat digunakan untk memulai suatu             deklarasi type.
   3.file not found
           file tidak ditemukan ditemukan di directori tyang aktif

  • Contoh Soal

Contoh 1

MAHASISWA DIMINTA MEMBUAT SEBUAH PROGRAM SORTING DENGAN METODE BUBBLE SORT. MINTALAH USER UNTUK MEMASUKKAN 10 ANGKA. LALU TAMPILKAN ANGKA-ANGKA TERSEBUT SETELAH DI SORT BAIK SECARA ASCENDING MAUPUN DESCENDING.



PROGRAM URUT_INSERTION;
USES CRT;
CONST
     MAX = 10;
TYPE
    ARR = ARRAY [1..MAX] OF BYTE;
VAR
   I   : BYTE;
   DATA: ARR;

PROCEDURE INPUT;
BEGIN
     CLRSCR;
     WRITELN ('INSERT 10 BILANGAN:');
     WRITELN ('===================');
     FOR I := 1 TO MAX DO
       BEGIN
       WRITE ('DATA KE-', I ,'='); READLN (DATA[I]);
       END;
     CLRSCR;
     FOR I:=1 TO MAX DO
       WRITE (DATA[I],'');
     WRITELN;
     WRITELN ('DATA YANG TERURUT:');
     WRITELN ('==================');
END;

PROCEDURE MOVE (X,Y BYTE);      {UNTUK MENGGESER DATA KE DEPAN}
VAR I:BYTE;                     {SATU LANGKAH}
  BEGIN
  FOR I:=Y DOWNTO X DO
  DATA [I] := DATA [I-1];
  END;

PROCEDURE FINDPOS (X BYTE; VAR Y BYTE);
VAR I:BYTE;
    BEGIN
    Y:=X; I:=0;
    REPEAT
    INC(I)
    UNTIL DATA [X] <= DATA [I];
    Y:=I;
END;

PROCEDUR INSERT;
VAR
   I,J,TEMP :BTE;
   BEGIN
        FOR I:=2 TO MAX DO
        BEGIN
        TEMP:=DATA [I]; FINDPOS (I,J);
        MOVE (J,I); DATA [J]:=TEMP;
   END;
END.

PROCEDUR CARI;
  FUNCTION SEARCH (X,N:INTEGER):INTEGER;
  VAR
     FIND        : BOOLEAN;
     L,R,MID,TEMP: INTEGER;
     BEGIN
     L:=1; R:=N;
     FIND:=FALSE;
     REPEAT
           MID:=(L+R) DIV 2;
           IF X = DATA [MID] THEN
              BEGIN
              TEMP:=MID; FIND:=TRUE;
              END ELSE
           IF X < DATA [MID] THEN
              R:=MID-1
           ELSE
               L:=MID+1;
           UNTIL FIND OR (L>R);
           IF NOT FIND THEN TEMP:=0;
           SEARCH:=TEMP;
     END;
  VAR BIL: BYTE;
  BEGIN
       GOTXY (1,7); WRITE ('BILANGAN YANG DICARI:'); READLN (BIL);
       GOOXY (1,8); WRITE ('DATA YANG DICARI PADA URUTAN KE-',
       SEARCH(BIL,MAX));
  END;

PROCEDURE OUTPUT;
BEGIN
     FOR I:= 1 TO MAX DO
     WRITE (DATA[I],'');
     END;
BEGIN
INPUT;
INSERT;
OUTPUT;
CARI; READKEY
END.

Contoh 2



MAHASISWA DIMINTA UNTUK MEMBUAT SEBUAH PROGRAM YANG MENAMPILKAN ANIMASI SALJU BERJATUHAN. BUTIRAN SALJU BISA DIGAMBARAKN DENGAN SEBUAH KARAKTER MISALNYA’@’. BUTIRAN SALJU HARUS BERMUNCULAN DENGAN POSISI ACAK DAN JIKA DITEKAN TOMBOL (+) MAKA BUTIRAN SALJU AKAN BERTAMBAH SATU, DAN SETERUSNYA, UNTUK BERHENTI TEKAN ESCAPE.


PROGRAM SINGLE_LINKED_LIST_FIFO;
USES CRT;
CONST
     S  ='@';
     MAX=100;
TYPE
    PKAR        =^RECKAR;
    RECKAR      = RECORD
                  ISI     : CHAR;
                  X,Y,COL : BYTE;
                  NEXT    : PKAR;
                  END;
VAR
   HEAD, TAIL, NOW  :PKAR;

PROCEDURE PUSH;
BEGIN
     NEW(NOW);                  {MEMBUAT SIMPUL BARU}
     IF HEAD=NIL THEN
        HEAD:=NOW
     ELSE
        TAIL^.NEXT:=NOW;
     TAIL:=NOW; TAIL^.NEXT:=NIL;
     NOW^.ISI:=S;
     NOW^.X:=RANDOM (79)+1;     {MENGISI NILAI X DENGAN NILAI ACAK}
     NOW^.COL:=RANDOM(16);      {MENGISI NILAI COL DENGAN NILAI ACAK}
     NOW^.Y:=1;
END;

PROCEDURE ANIM;
VAR
   CH   :CHAR;
   I,JML:BYTE;

PROCEDURE TEKAN;
BEGIN
     CH     :=READKEY;
     IF (CH <> #27) AND (CH='+') AND (JML<MAX) THEN     {MENAMBAH SALJU}
     BEGIN
        PUSH;
        INC(JML);
     END;
END;
BEGIN
  REPEAT
     NOW:=HEAD;
     WHILE (NOW <> NIL ) DO
     BEGIN
         TEXTCOLOR (NOW^.COL);                  {MENGESET WARNA TULISAN}
         GOTOXY (NOW^.X,NOW^.Y); WRITE (NOW^.ISI);
         IF NOW^.Y=25 THEN NOW^.Y:=1;
         INC(NOW^.Y);
         NOW:=NOW^.NEXT;
     END;
  DELAY (10); CLRSCR;   {MENGHAPUS LAYAR}
  IF KEYPRESSED THEN TEKAN;
  UNTIL CH=#27; {TOMBOL ESCAPE DITEKAN}
END;

PROCEDURE CURSOR_OFF; ASSEMBLER;        {MEMATIKAN KURSOR SIFATNYA OPTIONAL/TAK WAJIB DIBUAT}
ASM
   MOV AH,01;
   MOV CX, 2020H;
   INT 10H;
END;

PROCEDURE CURSOR_ON; ASSEMBLER;          {MENYALAKAN KURSOR SIFATNYA OPTIONAL/TAK WAJIB DIBUAT}
ASM
   MOV AH,01;
   MOV CX,1314H;
   INT 10H;
END;

BEGIN           {MAIN PROGRAM}
  CLRSCR;
  HEAD:=NIL; TAIL:=NIL;
  CURSOR_OFF;
  RANDOMIZE;
  PUSH;
  ANIM;
  CURSOR_ON;
END.

Contoh 3

MAHASISWA DIMINTA MEMBUAT SEBUAH PROGRAM SORTING DENGAN METODE BUBBLE SORT. MINTALAH USER UNTUK MEMASUKKAN 10 ANGKA. LALU TAMPILKAN ANGKA-ANGKA TERSEBUT SETELAH DI SORT BAIK SECARA ASCENDING MAUPUN DESCENDING.



PROGRAM URUT_INSERTION;
USES CRT;
CONST
     MAX = 10;
TYPE
    ARR = ARRAY [1..MAX] OF BYTE;
VAR
   I   : BYTE;
   DATA: ARR;

PROCEDURE INPUT;
BEGIN
     CLRSCR;
     WRITELN ('INSERT 10 BILANGAN:');
     WRITELN ('===================');
     FOR I := 1 TO MAX DO
       BEGIN
       WRITE ('DATA KE-', I ,'='); READLN (DATA[I]);
       END;
     CLRSCR;
     FOR I:=1 TO MAX DO
       WRITE (DATA[I],'');
     WRITELN;
     WRITELN ('DATA YANG TERURUT:');
     WRITELN ('==================');
END;

PROCEDURE MOVE (X,Y BYTE);      {UNTUK MENGGESER DATA KE DEPAN}
VAR I:BYTE;                     {SATU LANGKAH}
  BEGIN
  FOR I:=Y DOWNTO X DO
  DATA [I] := DATA [I-1];
  END;

PROCEDURE FINDPOS (X BYTE; VAR Y BYTE);
VAR I:BYTE;
    BEGIN
    Y:=X; I:=0;
    REPEAT
    INC(I)
    UNTIL DATA [X] <= DATA [I];
    Y:=I;
END;

PROCEDUR INSERT;
VAR
   I,J,TEMP :BTE;
   BEGIN
        FOR I:=2 TO MAX DO
        BEGIN
        TEMP:=DATA [I]; FINDPOS (I,J);
        MOVE (J,I); DATA [J]:=TEMP;
   END;
END.

PROCEDUR CARI;
  FUNCTION SEARCH (X,N:INTEGER):INTEGER;
  VAR
     FIND        : BOOLEAN;
     L,R,MID,TEMP: INTEGER;
     BEGIN
     L:=1; R:=N;
     FIND:=FALSE;
     REPEAT
           MID:=(L+R) DIV 2;
           IF X = DATA [MID] THEN
              BEGIN
              TEMP:=MID; FIND:=TRUE;
              END ELSE
           IF X < DATA [MID] THEN
              R:=MID-1
           ELSE
               L:=MID+1;
           UNTIL FIND OR (L>R);
           IF NOT FIND THEN TEMP:=0;
           SEARCH:=TEMP;
     END;
  VAR BIL: BYTE;
  BEGIN
       GOTXY (1,7); WRITE ('BILANGAN YANG DICARI:'); READLN (BIL);
       GOOXY (1,8); WRITE ('DATA YANG DICARI PADA URUTAN KE-',
       SEARCH(BIL,MAX));
  END;

PROCEDURE OUTPUT;
BEGIN
     FOR I:= 1 TO MAX DO
     WRITE (DATA[I],'');
     END;
BEGIN
INPUT;
INSERT;
OUTPUT;
CARI; READKEY
END.




Tidak ada komentar:

Posting Komentar