Selasa, 15 Maret 2011

Infix menjadi Postfix

Tugas buat SOD bu LILY WULANDARI
Disini akan dituliskan Coding Pascal bagaimana mencari Postfix dari Infix yang diketahui.


Berikut adalah Coding nya :

program stack;

uses crt;

var Userinput, stackie, output, pembanding1,pembanding2 : string;
tingkatan1, lanjut1, tingkatan2, jumlah, penghitung, penghitung1, panjangstackie, lanjut : integer;

begin
clrscr;
writeln('Ini adalah program untuk mengubah aritmatika infix menjadi postfix.');
writeln('Program ini tidak men-"support" akar.');
writeln('Tulis infix yang kamu inginkan.');
readln (Userinput);
jumlah := length(Userinput);

(*Deklrasi Konstanta *)
stackie := '';
penghitung := 1;
panjangstackie := 0;
lanjut1 := 0;
jumlah := length(Userinput);

repeat
penghitung1 := 1;
lanjut := 0;
(*Level Tingkatan *)
pembanding1 := copy(userinput,penghitung,1);
if pembanding1 = '+' then tingkatan1 := 1
else if pembanding1 = '-' then tingkatan1 := 1
else if pembanding1 = '/' then tingkatan1 := 2
else if pembanding1 = '*' then tingkatan1 := 2
else if pembanding1 = '^' then tingkatan1 := 3
else tingkatan1 := 0;


(* Cek isi dari tingkatan1 jika level tingkatan termasuk 0. *)
if tingkatan1 = 0 then
if pembanding1 = '(' then
begin
stackie := stackie + pembanding1;
panjangstackie:= length(stackie);
lanjut := 1;
penghitung:= penghitung+1;
end
else if pembanding1 = ')' then
begin
repeat
pembanding2:= copy(stackie,panjangstackie,1);
stackie:= copy(stackie,1,panjangstackie-1);
panjangstackie:= length(stackie);
if pembanding2 <> '(' then Output:= output + pembanding2;
until copy(stackie,panjangstackie,1) = '(';

penghitung:=penghitung+1;
lanjut:= 1;
end
else
begin
output:= output + pembanding1;
lanjut := 1;
penghitung:= penghitung + 1;
end;


if lanjut = 0 then
begin
(*Lihat Stack *)
repeat
if stackie = '' then
begin
lanjut := 1;
stackie:= stackie + pembanding1;
penghitung:=penghitung + 1;
end

else
begin
pembanding2 := copy(stackie,panjangstackie,1);
if pembanding2 = '+' then tingkatan2 := 1
else if pembanding2 = '-' then tingkatan2 := 1
else if pembanding2 = '/' then tingkatan2 := 2
else if pembanding2 = '*' then tingkatan2 := 2
else if pembanding2 = '^' then tingkatan2 := 3
else if pembanding2 = '(' then tingkatan2 := -1
else tingkatan2 := 0;

(* Kalau tingkatan stack yang lama lebih tinggi daripada
pembanding yang baru, maka stack yang lama di keluarkan,
sedang pembanding yang baru di masukkan ke stack. *)


if tingkatan2 >= tingkatan1 then

begin
lanjut := 1;
output := output + pembanding2;
stackie := copy(stackie,1,panjangstackie - 1);
stackie := stackie + pembanding1;
panjangstackie := length(stackie);
penghitung:= penghitung + 1;
end

(* Kalau stacknya sudah habis diperiksa, maka pembanding yang
baru di tambahkan ke stack. *)
else
begin
lanjut := 1;
stackie := stackie + pembanding1;
panjangstackie := length(stackie);
penghitung:= penghitung + 1;
end;
penghitung1:= penghitung1 + penghitung;
(* Kalau stacknya belum habis diperiksa, maka ulangi
program. *)
end;
until lanjut = 1;
end;
until penghitung = jumlah+1;

(*Ngehabisin yang masih ada di stack. *)

repeat
pembanding1:= copy(stackie,panjangstackie,1);
stackie:= copy(stackie,1,panjangstackie-1);
panjangstackie:= length(stackie);
if pembanding1 <> '(' then Output:= output + pembanding1;
until panjangstackie = 0;
writeln('Outputnya adalah :');
writeln(Output);
readln;

end.

Mohon maaf kalau ada salah

Selasa, 01 Maret 2011

TUGAS

Ini adalah program menggunakan TURBO PASCAL untuk menentukan jurusan dan angkatan seorang mahasiswa di gunadarma berdasarkan NPM (Nomor Pokok Mahasiswa)

uses crt;

var npm,jur1,jur2,ang1,ang2 : string;

a,b,c : integer;

begin

clrscr;

write ('Tuliskan NPM anda :');

readln (NPM);

(*Gunadarma didirikan pada tahun 1981

Kode jurusan :

1 = Strata 1 ; Sistem Informasi

2 = Diploma 3 ; Manajemen Informatika

3 = Strata 1 ; Manajemen Komputer & Akuntansi*)

jur1:= Copy(npm,1,1);

if jur1 = '1' then jur2:= 'Strata 1 - Sistem Informasi' else

if jur1 = '2' then jur2:= 'Diploma 3 - Manajemen Informatika' else

if jur1 = '3' then jur2:= 'Strata 1 - Manajemen Komputer & Akuntansi' else

jur2:= '-';

if jur2 <> '-' then

Writeln('Jurusan anda adalah ',jur2,' dengan kode jurusan ',jur1,'.')

else

Writeln('Maaf, kode jurusan anda tidak ada dalam database kami.');

ang1:= Copy(npm,4,2);

val(ang1,b,c);

if b > 81 then

Writeln('Anda termasuk angkatan 19',b,'.')

else begin

if b <>

str(b:1,ang2);

insert('0',ang2,1);

Writeln('Anda termasuk angkatan 20',ang2,'.'); end;

writeln('Anda termasuk angkatan 20',b,'.');

end;

readln;

end.



TUGAS

Ini adalah program menggunakan TURBO PASCAL untuk menentukan :

  1. Mencari panjang dari sebuah string (karakter)
  2. Menggabungkan isi dari sebuah string (karakter)
  3. Menyisipkan isi dari sebuah string ke dalam string lain

uses crt;

var pilih,c1,c2 : integer;

a,b,d : string;

begin

clrscr;

writeln('Pilih menu');

writeln('1. Mencari panjang dari sebuah string.');

writeln('2. Menggabungkan isi dari kedua string.');

writeln('3. Menyisipkan isi dari sebuah string ke dalam string lain.');

write ('Pilihan anda :'); readln(pilih);

case pilih of

1 : Begin

writeln('Tulis string yang anda ingin hitung panjangnya.');

readln(a);

c1:=length(a);

writeln('Panjang dari ',a,' adalah ',c1);

end;

2 : Begin

writeln('Tulis string pertama yang anda ingin gabungkan.');

readln(a);

writeln('Tulis string kedua yang anda ingin gabungkan.');

readln(b);

d:=concat(a,b);

writeln('Gabungan string ',a,' dan string ',b,' adalah ',d);

end;

3 : Begin

writeln('Tulis string pertama yang anda inginkan.');

readln(a);

writeln('Tulis string yang ingin disisipkan.');

readln(b);

writeln('Huruf ke berapa yang ingin disisipkan?');

readln(c1);

insert(b,a,c1);

writeln('Gabungan stringnya adalah ',a,' dan ',b);

end;

else

writeln('Menu yang dipilih salah.');

end;

writeln('Ketik apa saja untuk mengakhiri program.');

readln;

end.