PRAKTIKUM 8
MAHASISWA
DIMINTA UNTUK MEMBUAT SEBUAH PROGRAM UNTUK MENDETEKSI PASSWORD/KATA SANDI,
GUNAKAN METODE SINGLE LINKED LIST, JIKA PASSWORDNYA BENAR MAKA PROGRAM AKAN
SELESAI, JIKA SALAH MAKA USER DIMINTA MEMASUKKAN PASSWORD KEMBALI.
PROGRAM LINKLISTSINGLE;
USESCRT;
TYPE
POINT
= ^REC;
REC
= RECORD
ISI : CHAR;
NEXT : POINT;
END;
CONST
PASSWORD = 'DARNA'; {PASSWORD YANG HARUS DIMASUKKAN}
VAR
I : BYTE;
TEKAN : CHAR;
PASSWD : BOOLEAN;
HEAD,TAIL,NOW : POINT;
PROCEDURE CREATE;
BEGIN
HEAD:=NIL; TAIL:=NIL;
END.
PROCEDURE PUSH
(ISI:CHAR);
VAR NOW:POINT;
BEGIN
NEW(NOW); {MEMBUAT SIMPUL BARU}
IF HEAD= NIL THEN {MENDETEKSI SIMPUL AWAL}
BEGIN
HEAD:=NOW;
TAIL:=HEAD;
END ELSE
BEGIN {MENYAMBUNG SIMPUL YANG
BARU PADA SIMPUL YANG SUDAH ADA}
TAIL^.NEXT := NOW;
TAIL := TAIL^.NEXT;
END.
NOW^.ISI:=ISI; {MENGISI SIMPUL YANG BARU}
NOW^.NEXT:=NIL;
END.
FUNCTION
CHECK:BOOLEAN; {FUNCTION UNTUK MENCHECK INPUT}
VAR TEMP: STRING
[15];
BEGIN
TEMP:=''; NOW:=HEAD;
WHILE NOW <> NIL DO
BEGIN
TEMP:=TEMP + NOW^.ISI;
NOW:=NOW^.NEXT;
END.
IF TEMP <> PASSWORD THEN
CHECK:=FALSE;
END.
PROCEDURE
BUATBINGKAI (X1,Y1,X2,Y2:BYTE);
{TAMPILAN APLIKASI}
VAR I:BYTE;
BEGIN
GOTOXY (X1,Y1); WRITE ('['); GOTOXY
(X2,Y1);WRITE (']');
GOTOXY (X2,Y2); WRITE ('['); GOTOXY
(X2,Y2);WRITE (']');
FOR I:=X1+1 TO X2-1 DO
BEGIN
GOTOXY (I,Y1); WRITE('-');
GOTOXY (I,Y2); WRITE('-');
END.
FOR I:=Y1+1 TO Y2-1 DO
BEGIN
GOTOXY (X1,I); WRITE ('|');
GOTOXY (X2,I); WRITE ('|');
END.
END.
PROCEDURE
BLUESCREEN (X1,Y1,X2,Y2:BYTE);
{MENCETAK LAYAR BIRU}
BEGIN
TEXTATTR:=$07; CLRSCR; {PROCEDURE INI SIFATNYA
OPTIONAL/TAK WAJIB}
WINDOW (X1,Y1,X2,Y2); {MEMBUAT AREA LAYAR}
TEXTBACKGROUND (BLUE);
CLRSCR; WINDOW (1,1,80,25);
BUATBINGKAI (X1,Y1,X2,Y2);
GOTOXY (X1+2,Y1+1); WRITE ('ENTER YOUR
PASSWORD:');
END.
PROCEDURE
POP; {PROSEDUR PENGHAPUS SIMPUL}
BEGIN
NOW:=HEAD; HEAD:=HEAD^.NEXT;
WHILE NOW <> NIL DO
BEGIN
DISPOSE (NOW);
NOW:=HEAD;
HEAD:=HEAD^.NEXT;
END.
END.
BEGIN {PROGRAM UTAMA}
REPEAT
BLUESCREEN (25,8,60,10);
CREATE; I:=0;
REPEAT
TEKAN:=READKEY;
WRITE(TEKAN);
IF TEKAN <>#13 THEN PUSH
(TEKAN); INC(I);
UNTIL (TEKAN=#13) OR (I=10); {ENTER DITEKAN ATAU PANJANG=10}
PASSWD:=CHECK; POP;
UNTIL PASSWD;
END.
Mantap👍
BalasHapusOk thanks
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapus