• Tidak ada hasil yang ditemukan

procedure menu; forward; { *memperkenalkan procedure menu, yang dibuat dibawah utk dipanggil diatasnya* }

N/A
N/A
Protected

Academic year: 2021

Membagikan "procedure menu; forward; { *memperkenalkan procedure menu, yang dibuat dibawah utk dipanggil diatasnya* }"

Copied!
7
0
0

Teks penuh

(1)

program operasi_matrik;

{© yunisusanti informatic engineering UNS} uses wincrt;

type indek = 1..20;

matrik = array[indek, indek] of real;

var barissatu, barisdua, kolomsatu, kolomdua : byte; matriksatu, matrikdua : matrik; tambah, minus, kali, transp, transp2 : matrik; i, j, k : byte; ulang : char;

procedure menu; forward; { *memperkenalkan procedure menu, yang dibuat dibawah utk dipanggil diatasnya* }

{================================= begin procedure input ===============================} procedure INPUTDATA;

procedure cetakmatrix (x : matrik; n,m : byte); {*untuk mencetak matrik dalam menu input*}

var i,j : integer; begin

write (' # tampilan matrik'); writeln;

for i := 1 to n do begin

writeln; for j := 1 to m do write(x[i,j]:19:0); writeln;

end;

end; {end procedure cetak}

procedure BACADATA; {*untuk input matrik secara manual dari keyboard*} var i, j : integer;

begin

clrscr;

gotoXY(20, 6); write('...i n p u t m a t r i k m a n u a l');

gotoXY(13, 8); write('# data matrik pertama'); {*untuk mengisi data matrik yang pertama*}

gotoXY(16,10); write('- baris : '); readln(barissatu); gotoXY(16,11); write('- kolom : '); readln(kolomsatu);

gotoXY(13,13); writeln('# masukkan nilai-nilai untuk matrik pertama '); for i := 1 to barissatu do

begin

for j := 1 to kolomsatu do begin

write(' - nilai (',i,',',j,') : '); readln(matriksatu[i,j]);

end; writeln; end;

cetakmatrix(matriksatu, barissatu, kolomsatu); {*memanggil proc cetak, utk cetak matrik pertama*}

writeln;

writeln(' : : : :::::::::::::::::::::::::::::::::::::::::::: : : :'); writeln;

writeln(' # data matrik kedua'); writeln; {*untuk mengisi data matrik yang kedua*}

write(' - baris : '); readln(barisdua); write(' - kolom : '); readln(kolomdua); writeln;

writeln(' # masukkan nilai-nilai untuk matrik kedua '); for i := 1 to barisdua do

begin

for j := 1 to kolomdua do begin

(2)

write(' - nilai (',i,',',j,') : '); readln(matrikdua[i, j]);

end; writeln; end;

cetakmatrix(matrikdua, barisdua, kolomdua); readln; {*memanggil proc cetak, utk cetak matrik kedua*}

end; {* end procedure baca data / manual*}

procedure BUATDATA; {*untuk input matrik dengan membangkitkan bilangan random*} var i, j : integer;

begin

randomize; clrscr;

gotoXY(20, 6); write('...i n p u t m a t r i k a u t o m a t i c'); gotoXY(13, 8); write('# data matrik pertama');

gotoXY(16,10); write('- baris : '); readln(barissatu); gotoXY(16,11); write('- kolom : '); readln(kolomsatu); for i := 1 to barissatu do

begin

for j := 1 to kolomsatu do begin

matriksatu[i,j] := random(100); {*angka random yang ditampilkan maksimal 100*}

end; writeln; end;

cetakmatrix(matriksatu, barissatu, kolomsatu); {*memanggil proc cetak, utk cetak matrik pertama*}

writeln;

writeln(' : : : :::::::::::::::::::::::::::::::::::::::::::: : : :'); writeln;

writeln(' # data matrik kedua'); writeln; write(' - baris : '); readln(barisdua); write(' - kolom : '); readln(kolomdua); for i := 1 to barisdua do

begin

for j := 1 to kolomdua do begin

matrikdua[i,j] := random(100); {*100 adalah batas maksimal angka random yg ditampilkan* }

end; writeln; end;

cetakmatrix(matrikdua, barisdua, kolomdua); readln; {*memanggil proc cetak, utk cetak matrik pertama*}

end;

var pil1 : char; {*main menu dari procedure input data*} begin

clrscr;

gotoXY(15, 6); write(' a. input data matrik secara manual'); gotoXY(15, 9); write(' b. input data matrik secara random'); gotoXY(20,13); write('... silahkan pilih (a) atau (b) : '); readln(pil1);

if pil1 = 'a' then bacadata else {*memanggil procedure bacadata*}

if pil1 = 'b' then buatdata; {*memanggil procedure buatdata*}

(3)

{================================= end procedure input =============================}

{================================= begin procedure cetak matrik =========================} procedure CETAKMATRIK (x : matrik; n,m : byte);

var i,j : integer; begin

clrscr;

gotoXY(13, 8); write('# hasil manipulasi matrik'); writeln; writeln; {*writeln dobel untk memberi jarak*}

for i := 1 to n do begin

writeln; for j := 1 to m do write(x[i,j]:19:1); writeln;

end; end;

{================================= end procedure cetak matrik ==========================}

{================================= fungsi - fungsi dlm manipulasi ==================} function DPTGANDA: boolean;

begin

dptganda := false; { *dapat ganda di set false terlebih dulu* }

if (kolomsatu = barisdua) then dptganda := true { *syarat agar matrik bisa digandakan* } else begin

clrscr;

gotoXY(15, 8); writeln('matrik tidak memenuhi syarat dari perkalian, and need to close !!');

end; end;

function DPTJUMLAH : boolean; begin

dptjumlah := false; { *dapat jumlah di set false terlebih dulu* }

if (barissatu = barisdua) and (kolomsatu = kolomdua) {syarat suatu matrik bisa dijumlahkan/ dikurangkan}

then dptjumlah := true else begin

clrscr;

gotoXY(15, 8); writeln('matrik tidak memenuhi syarat penjumlahan/pengurangan, N need to close !!');

end; end;

function BUJURSANGKAR : boolean; begin

bujursangkar := false; { * bujursangkar di set false terlebih dulu* } if (barissatu = kolomsatu) then bujursangkar := true

else begin

clrscr;

gotoXY(15, 8); writeln('bukan matrik bujur sangkar !!'); end;

end;

{================================= end fungsi-fungsi manipulasi =======================} {================================= begin procedure jumlah matrik ==================} procedure JUMLAH;

var i, j : integer; begin

if (dptjumlah = true) then begin {proc jumlah jalan jika syarat dptjumlah=true/} for i:=1 to barissatu do

begin

(4)

tambah[i,j] := matriksatu[i,j] + matrikdua[i,j]; {rumus penjumlahan matrik} end;

writeln;

cetakmatrik(tambah, barissatu, kolomsatu); { *untuk mencetak hasil penjumlahan* } end; end;

{================================= end procedure jumlah matrik ========================} {================================= begin procedure kurang matrik ==========================} procedure KURANG;

var i, j : integer; begin

if (dptjumlah = true) then begin {proc kurang jalan jika syarat dptjumlah=true} for i:=1 to barissatu do

begin

for j:=1 to kolomsatu do

minus[i,j] := matriksatu[i,j] - matrikdua[i,j]; {rumus pengurangan matrik} end;

writeln;

cetakmatrik(minus, barissatu, kolomsatu); { *untuk mencetak hasil pengurangan* } end; end;

{================================= end procedure kurang matrik ==========================} {================================= begin procedure ganda matrik =============}

procedure GANDA; var i, j, k : byte; begin

if (dptganda = true) then begin {proc ganda jalan jika syarat dptganda=true/ terpenuhi} for i := 1 to barissatu do begin for j := 1 to kolomdua do begin kali[i,j] := 0; for k := 1 to barisdua do begin

kali[i,j] := kali[i,j] + matriksatu[i,k] * matrikdua[k,j]; {perkalian matrik} end;

end; end; writeln;

cetakmatrik(kali, barissatu, kolomsatu); { *untuk mencetak hasil perkalian* } end;

end;

{================================= end procedure ganda matrik =========================} {================================= begin procedure transpose ================}

procedure TRANSPOSE; var i, j : byte; pil3 : char; begin

clrscr;

gotoXY(13, 6); writeln('# matrik yang ingin ditranpose'); writeln; gotoXY(15, 9); writeln('a. matrik pertama');

gotoXY(15,11); writeln('b. matrik kedua');

gotoXY(15,14); write('... pilih (a) atau (b) ? '); readln(pil3);

(5)

for i := 1 to kolomsatu do begin

for j := 1 to barissatu do begin

transp[i,j] := matriksatu [j,i]; {rumus mentranspose matrik untuk matrik satu} end;

writeln; end;

clrscr; { * dibawah ini untuk mencetak hasil transpose* } gotoXY(13, 8); write('# hasil transpose matrik'); writeln; writeln for i := 1 to kolomsatu do

begin

writeln; for j := 1 to barissatu do write(transp[i,j]:19:1); writeln;

end; end;

if pil3 = 'b' then begin for i := 1 to kolomdua do begin

for j := 1 to barisdua do begin

transp2[i,j] := matrikdua [j,i]; {rumus mentranspose matrik untuk matrik kedua} end;

writeln; end;

clrscr; { *untuk mencetak hasil transpose matrik kedua* } gotoXY(13, 8); write('# hasil transpose matrik'); writeln; writeln; for i := 1 to kolomdua do

begin

writeln; for j := 1 to barisdua do write(transp2[i,j]:19:1); writeln;

end; end; end;

{================================= end procedure transpose =======================}

{================================= begin function trace ============================} function trace: real;

var i, j : byte; pil4 : char; jum : real; begin

clrscr;

gotoXY(13, 6); writeln('# matrik yang ingin dihitung trace nya'); gotoXY(15, 9); writeln('a. matrik pertama');

gotoXY(15,11); writeln('b. matrik kedua');

gotoXY(15,14); write('... pilih (a) atau (b) ? '); readln(pil4);

clrscr;

gotoXY(13,8); writeln('# tampilan diagonal'); writeln; writeln;

if pil4 = 'a' then {jika yang dihitung trace matrik pertama} begin

if (bujursangkar = true) then begin jum := 0;

for i := 1 to barissatu do begin for j := 1 to kolomsatu do if (i = j) then

begin

write(matriksatu[i,j]:19:0); {mencetak diagonal matrik} jum := jum + matriksatu[i,j]; {menghitung trace}

end

else if (i+j)=(barissatu+1) then begin

(6)

write(matriksatu[i,j]:19:0); {mencetak diagonal matrik} jum := jum + matriksatu[i,j]; {menghitung trace}

end

else write('-':19); {elemen yang bukan diagonal diberi tanda - }

writeln; end;

writeln; writeln; write(' # jumlah trace nya : ',jum:5:1) end; end;

if pil4 = 'b' then {jika yang dihitung trace matrik kedua} if (bujursangkar = true) then begin

jum := 0;

for i := 1 to barisdua do begin for j := 1 to kolomdua do if (i = j) then

begin

write(matrikdua[i,j]:19:0); {mencetak diagonal matrik} jum := jum + matrikdua[i,j]; {menghitung trace}

end

else if (i+j)=(barissatu+1) then begin

write(matrikdua[i,j]:19:0); {mencetak diagonal matrik} jum := jum + matrikdua[i,j]; {menghitung trace}

end

else write('-':19); {elemen yang bukan diagonal diberi tanda - } writeln;

end;

writeln; writeln; write(' # jumlah trace nya : ',jum:5:1) end;

end;

{================================= end function trace ===============================}

{================================= begin procedure menu manipulasi ========================} procedure MANIPULASI;

var pil2 : char; label 1;

begin

1: clrscr;

gotoXY(15, 6); write('m a n i p u l a s i m a t r i k... '); gotoXY(15, 9); write(' a. menambahkan matrik (+) ');

gotoXY(15,11); write(' b. mengurangkan matrik (-)'); gotoXY(15,13); write(' c. menggandakan matrik (x)');

gotoXY(15,15); write(' d. hitung trace matrik (elemen diagonal)'); gotoXY(15,17); write(' e. transpose matrik');

gotoXY(20,20); write('... silahkan pilih (a), (b), (c), (d), atau (e) : '); readln(pil2);

inputdata; {memanggil procedure inputdata} case pil2 of

'a' : jumlah; {jika pil=a maka memanggil proc jumlah} 'b' : kurang; {jika pil=b maka memanggil proc kurang} 'c' : ganda; {jika pil=c maka memanggil proc ganda} 'd' : trace; {jika pil=d maka memanggil proc trace} 'e' : transpose {jika pil=e maka memanggil proc transpose} else goto 1

end;

writeln; writeln;

write(' # press -enter- to back to menu... '); readln;

clrscr; menu; end;

(7)

{================================= end procedure menu manipulasi =========================}

{================================= begin procedure identitas =========================} procedure IDENTITAS;

var nama, nim, namaprogram, tgl : char; begin

clrscr;

gotoXY(15, 9); write('... s e k i l a s p r o g r a m');

gotoXY(15,12); write('Program yang diberi nama "Manipulasi Matrik Dengan Pascal" ini '); gotoXY(10,14); write('dibuat pada tanggal 21 Februari 2008, sebagai tugas pertama dari mata');

gotoXY(10,16); write('kuliah -Struktur Data Dan Algoritma');

gotoXY(15,19); write('ps. this program was created by -Yuni Susanti, ilkomp 2007, M0507054-');

gotoXY(15,24); write('... e n t e r !! (next chapter : matrik manipulation :) '); readln;

clrscr;

manipulasi; {memanggil procedure manipulasi} end;

{================================= end procedure identitas ======================}

{================================= begin procedure menu utama =======================} procedure menu;

label 1;

var pil : char; begin

1: clrscr;

gotoXY(15, 8); write(' ::: t h i s p r o g r a m b e g i n w i t h... :::');

gotoXY(15,12); write(' # pilih (a) untuk start program, atau (b) untuk quit program... '); gotoXY(15,14); write(' then press -enter-... ');

readln(pil);

if pil = 'a' then identitas; {memanggil procedure identitas} if pil = 'b' then begin

clrscr;

gotoXY(15, 6); write('Thank You !!!');

gotoXY(15,10); write('... press any key to quit :) ... '); readkey; donewincrt;

end

else goto 1; {jika pil selain a/ b maka akan kembali ke label 1} end;

{================================= end procedure menu utama ===========================}

{================================= main program ==================================} begin

screensize.x := 100; {lebar screen horisontal/ x } screensize.y := 400; {lebar screen vertikal/ y } menu;

end.

Referensi

Dokumen terkait

Penelitian ini kemudian menghasilkan beberapa kesimpulan, dimana bentuk perjanjian urusan pengadaan tanah tapak rumah adalah bentuk perjanjian baku yang menggunakan klausula

yang terjadi dalam surat perjanjian urusan pengadaan tanah tapak rumah tersebut.. Dalam hal jual beli secara angsuran yang terjadi dalam surat

pihak telah tercapai persesuaian kehendak untuk mengadakan perikatan, 61 sesuai Pasal 1338 Kitab Undang-Undang Hukum Perdata yang berbunyi.. semua persetujuan yang

Peraturan pemerintah republik indonesia nomor 24 tahun 1997 tentang pendaftaran tanah. Peraturan menteri negara agraria/kepala badan pertanahan nasional nomor 3

Menggunakan dua metode yaitu forward dan backward chaining. Penggunaan kedua metode tersebut digunakan untuk melakukan penelusuran resep makanan yang sesuai dengan

Seperti rancangan pada gambar 8, halaman dashboard berisikan form analisa dan hasil analisa yang berupa menu rekomendasi MPASI untuk anak sesuai dengan rules yang ada pada

Setelah Klik tombol tambah cross enrollment, akan muncul daftar kelas yang dibuka pada masing-masing

A The content of the overarching obligations The thrust of the overarching obligations is contained in the provisions dealing with their content.36 Persons to whom the overarching