Selasa, 15 Maret 2011
Infix menjadi Postfix
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 :
- Mencari panjang dari sebuah string (karakter)
- Menggabungkan isi dari sebuah string (karakter)
- 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.