Anda di halaman 1dari 3

Pelewatan Parameter (Parameter Passing) dalam PASCAL Oleh : Manorang Gultom

Parameter passing adalah suatu proses pengiriman nilai sebuah variable dari suatu prosedur ke prosedur yang lain. Pengiriman dilakukan dengan tujuan agar data yang diinput dalam suatu prosedur (modul/program utama)dapat dipakai di prosedur lain untuk melakukan transaksi atau perhitungan tertentu. Pada postingan saya sebelumnya sudah pernah dibahas permasalahan ini, tetapi pengiriman yang dilakukan sebatas satu kali (tidak berulang). Apa maksudnya yahehehe Maksudnya adalah bagaimana caranya pelewatan parameter tersebut dilakukan secara berulang alias nilai variable yang dikirim adalah variable berindeks. Makin bingung deh.jangan cepat bingung. Saya akan berikan sebuah contoh permasalahan. Begini masalahnya : Seorang dosen ingin mengetahui siapa pemilik nilai tertinggi dari beberapa mahasiswanya. Dimana nim, nama, nilai khk, tugas, mid dan uas diinput secara berulang di modul utama program(modul pengirim). Setelah diinput variable yang diperlukan, maka semua nilai variable harus dikirim ke prosedur hitung yang akan menghitung nilai akhir dan status kelulusan dari semua mahasiswa. Perhitungan yang dilakukan sebagaimana lajimnya menghitung nailai akhir yaitu : Nilai_Khkakhir=10% dari khkbaku Nilai_Tugasakhir=20% dari tugasbaku Nilai_Midakhir=30% dari midbaku Nilai_Uasakhir=40% dari uasbaku Nilai khkbaku,tugasbaku,midbaku dan uasbaku merupakan variable yang diinput dimodul utama tadi, dan akan didapat nilai akhir setelah dikirim dan dihitung di prosedur penghitung. Itulah contoh masalahanya bropertanyaannya adalah bagaimana caranya agar pengiriman nilai parameter dan perhitungannya bias dilakukan secara berulang. Setelah perhitungan selesai dilakukan di prosedur hitung, maka hasil perhitungan harus bias ditampilkan di prosedur lain lagi (misalnya procedure tampil). Wah.tambah ruwet permasalahannya ya.Yasedikit memang memerlukan alur logika yang berliku. Itu memang saya sengaja untuk menantang adrenalin logika kitawkwkwkwkw.macam menghadapi tantangan berat ya.. Memang disitulah nikmatnya menjadi seorang programmer.putar otak. OK biar jangan lama-lama singkat cerita begini alur program yang akan kita buat.

Mulai

Prosedur Menginput Data

Prosedure Menghitung Data

Prosedur Menampilkan Data

Seles

Berikut adalah programnya, mohon komentar dan saranya ya..supaya programnya lebih baik

Uses Crt; Procedure Tampilan(n,jl:Integer;nim2,nm2:String;tot:Real); Var x,jl1 : Integer; Status,nim3,nm3 : Array[1..10] Of String; tot1 : Array[1..10] Of Real; Begin Clrscr; x:=n;Jl1:=jl; nim3[x]:=nim2; nm3[x]:=nm2; TOT1[x]:=tot; If tot1[x]<40 Then Status[x]:='TDK LULUS' Else If tot1[x]<60 Then Status[x]:='REMEDIAL' Else If tot1[x]<70 Then Status[x]:='LULUS C' Else If tot1[x]<80 Then Status[x]:='LULUS B' Else Status[x]:='LULUS A'; Writeln; Writeln(' HASIL REKAPITULASI NILAI MAHASISWA = '); Writeln; WRITELN(''); WRITELN(' NO NIM NAMA MHS N.A STATUS '); WRITELN(''); FOR x:= 1 TO JL1 DO BEGIN WRITELN('',x:5,'',NIM3[X]:9,'',NM3[X]:10,'',Round(tot1[x]):5,'',stat us[x]:12,''); END; WRITELN(''); End; Procedure Hitung(var k,Jlh:Integer;Var Nimk,namak:String;khk1,tug1,mid1,uas1:Integer); Var j : Integer; khkmurni,midmurni,tugmurni,uasmurni:Array[1..10] Of Real; nilaimhs,totnilai,maks: Array[1..10] Of Real; nim,nm :Array[1..10] Of String; Begin j:=k; Nim[j]:=Nimk; Nm[j]:=namak; Writeln; For j := 1 to jlh Do Begin

Writeln('Nilai Mahasiswa Hasil Kiriman ke[',j,'] = '); Writeln; Writeln('Nim Mahahasiswa ke-',j,' =',Nim[j]); Writeln('Nama Mahaiswa ke-',j,' =',nm[j]); Writeln('Nilai KHK Mahahasiswa ke-',j,' =',khk1); Writeln('Nilai Tugas Mahaiswa ke-',j,' =',tug1); Writeln('Nilai MID Mahahasiswa ke-',j,' =',mid1); Writeln('Nilai UAS Mahaiswa ke-',j,' =',uas1); Readln; khkmurni[j]:=0.1*khk1; tugmurni[j]:=0.2*tug1; midmurni[j]:=0.3*mid1; uasmurni[j]:=0.4*uas1; Totnilai[j]:=khkmurni[j]+midmurni[j]+tugmurni[j]+uasmurni[j]; End; Writeln; Writeln('Siiiiiip....., Anda ingin melihat hasil, tekan ENTER Bro..'); Readln; For j := 1 to jlh Do Begin Tampilan(j,jlh,nim[j],nm[j],totnilai[j]); End; Readln; End; Var Nimk,Namak : Array[1..10] Of String; khk,tug,mid,uas : Array[1..10] Of Integer; i,byk: Integer; Begin Clrscr; Write('Input Jumlah Mahasiswa =');Read(byk); Readln; For i := 1 To Byk Do Begin Readln; Write('Nim Mahasiswa Ke-',i,' =');Read(Nimk[i]); Readln; Write('Nama Mahasiswa Ke-',i,' = ');Read(Namak[i]); Write('Nilai KHK Mahasiswa Ke-',i,' = ');Read(khk[i]); Write('Nilai Tugas Mahasiswa Ke-',i,' = ');Read(tug[i]); Write('Nilai MID Mahasiswa Ke-',i,' = ');Read(mid[i]); Write('Nilai UAS Mahasiswa Ke-',i,' = ');Read(uas[i]); Writeln; End; For i := 1 to byk Do Begin Hitung(i,byk,Nimk[i],Namak[i],khk[i],tug[i],mid[i],uas[i]); End; Readln; End.

Anda mungkin juga menyukai