Tuesday, March 15, 2011

TUGAS 2 SOD NOTASI INFIX MENJADI POSTFIX

soal:
1. Merubah notasi infix menjadi postfix

jawab:

uses crt;
const max_elemen = u19;

type u19 = string [max_elemen];

tumpukan = record
rinci : u19;
atas : 0..max_elemen
end;

var infix : u19;

lagi : char;

function valensi (tanda_op : char) : integer;

begin
case tanda_op of
'^' : valensi := 3;
'*', '/' : valensi := 2;
'+', '-' : valensi := 1;
'(' : valensi := 0
end
end;

procedure push (var t : tumpukan; elemen : char);

begin
t.atas := t.atas +1;
t.rinci[t.atas] := elemen
end;

function pop (var t : tumpukan) : char;

begin
pop := t.rinci[t.atas];
t.atas := t.atas - 1
end;

procedure konversi_cetak (infix : z100);

var i : integer;
operator : set of char;
temp, kar : char;
t : tumpukan;
test : boolean;
begin
operator := ['^']+['*']+['/']+['+']+['-'];
for i := 1 to length (infix) do
begin
kar := infix[i];
if kar = '(' then push (t, kar)
else if kar = ')' then
begin
while t.rinci[t.atas] <> '(' do
write (pop(t) : 2);
temp := pop(t)
end
else if kar in operator then
begin
while (t.atas <> 0 ) and (valensi(kar)
<= valensi (t.rinci[t.atas])) do write (pop(t) : 2); push (t, kar) end else if kar <> ' ' then
write (kar : 2)
end;

if t.atas <> 0 then

repeat
write (pop(t):2)
until t.atas = 0
end;

begin

clrscr;
writeln ('Mengubah Notasi Infix Menjadi Postfix');
writeln ('Dengan Memanfaatkan Struktur Tumpukan');
writeln ('-------------------------------------');
writeln ;
repeat
write ('Masukkan Ungkapan Infix : ');
readln (infix); writeln;
write ('Ungkapan Postfix : ');
konversi_cetak (infix);
writeln; writeln;
write ('Akan Mencoba Lagi ? y(a) / t(idak) : ');
readln (lagi);
writeln
until not (lagi in ['Y', 'y'])
end.





Tuesday, March 1, 2011

TUGAS STRUKTUR DAN ORGANISASI DATA 2

PERTANYAAN:
1. Buatlah program berdasarkan ketentuan sebagai berikut :
- panjang sebuah string.
- mengabungkan dua buah string.
- menyisipkan string yang satu kedalam string yang lain.

jawaban :
sebelumnya kita masukan coding ke dalam pascal.
program menu;
uses crt;
var pil:char;
...var s1,s2:string [30];
var a:integer;
begin
clrscr;
writeln('===MENU===');
writeln('1. Panjang Kata');
writeln('2. Menggabunkan Kata');
writeln('3. Menyisipkan Kata');
writeln('4. Exit');
writeln('Masukkan Pilihan Anda');
readln(pil);
case pil of
'1':begin;
writeln('-Panjang Kata-');
write('Nama: ');readln(s1);
write('Panjang string Anda adalah ',length(s1),' karakter');
readln;
end;
'2':begin;
writeln('-Menggabungkan String-');
write('Nama 1: ');readln(s1);
write('Nama 2: ');readln(s2);
write('Gabungan string Anda adalah ',concat(s1,s2));
readln;
end;
'3':begin;
writeln('-Menyisipkan Sebuah String Ke Dalam String Lain-');
write('Nama: ');readln(s2);
write('Nama yang akan dimasukkan: ');readln(s1);
write('Disisipkan di kata ke: ');readln(a);
insert(s1,s2,a);
writeln('Sisipan string Anda adalah ',s2);
readln;
end;
end;
writeln;
readln;
end.
end.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 



2. Buatlah program untuk menampilkan jurusan dan angkatan seorang mahasiswa universitas gunadarma berdasarkan NPM

jawab:
Pertama masukkan coding ke pascal.

uses crt;

var NPM,jurusan1,jurusan2,angkatan1,angkatan2 : string;
h,i,j : integer;
begin
clrscr;
write ('Tuliskan NPM kamu :');
readln (NPM);
jurusan1:= CopyNPM,1,1);
if jurusan1 = '1' then jurusan2:= 'Strata 1 - Sistem Informasi'
else
if jurusan1 = '2' then jurusan2:= 'Diploma 3 - Teknik Komputer'
else
if jurusan1 = '3' then jurusan2:= 'Strata 1 - Teknik Informatika'
else
jurusan2:= '-';
if jurusan2 <> '-' then
Writeln('Jurusan kamu adalah ',jurusan2,' dengan kode jurusan ',jurusan1,'.')
else
Writeln('Maaf, kode jurusan anda tidak ada');
angkatan1:= Copy(NPM,4,2);
val(angkatan1,i,j);
if i > 85 then
Writeln('Kamu termasuk angkatan 19',i,'.')
else begin
if i < 10 then
begin
str(i:1,ang2);
insert('0',angkatan2,1);
Writeln('Kamu termasuk angkatan 20',angkatan2,'.'); end;
end;
readln;
end;
end.