Translate to your languages

Selamat Datang . Suatu kehormatan bagi saya atas kunjungan ini. Saya sangat berharap kunjungan berikutnya.

10 Desember 2008

PROSEDUR

PROSEDUR


 

Setiap program yg besar perlu dipecah menjadi subprogram, tiap-tiap subprogram disebut modul.


 

Keuntungan modularisasi program :

  1. Menghindari penulisan teks program yg sama secara berulang.
  2. kemudahan menulis dan menemukan kesalahan (debug) program


 

Definisi Prosedur (pemrograman)

Prosedur adalah modul program yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek netto. (di bahasa pemrograman lain dikenal dengan nama subroutine).

Efek netto diketahui dengan membandingkan keadaan awal dan akhir pelaksanaan sebuah prosedur.


 

Pada setiap prosedur harus didefinisikan keadaan awal(K. Awal) sebelum rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir(K. Akhir) yang diharapkan setelah rangkaian instruksi dilaksanakan.


 

Parameter :

Parameter Aktual     : Parameter yang disertakan pada waktu pemanggilan.

Parameter Formal     : Parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri.

Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal.

Tiap2 parameter aktual berpasangan dengan parameter formal yg bersesuaian.


 

3 jenis parameter formal yg disertakan di dalam prosedur :

1. Parameter masukkan (input parameter) / parameter nilai (parameter by value):

Parameter yg nilainya berlaku sebagai masukan untuk prosedur.

2. Parameter keluaran (output parameter)

Parameter yg menampung keluaran yg dihasilkan oleh prosedur.

3. Parameter masukkan / keluaran (I/O parameter) / parameter acuan (parameter by reference)

Parameter yg berfungsi sebagai masukkan sekaligus keluaran bagi prosedur tsb.


 


 


 

Translasi dari Notasi Algoritmik Prosedur ke dalam notasi bahasa PASCAL :

Pendefinisian prosedur ditulis bersatu di dalam program utama, kecuali jika direalisasikan sebagai unit. Prosedur diletakkan di bawah kata var.


 

Contoh translasi :

  1. Prosedur tanpa parameter

ALGORITMIK

Prosedur

Procedure HITUNG_RATA_RATA

{ menghitung_rata_rata N buah bilangan bulat yang di baca dari papan kunci. }

{ K. awal : sembarang }

{ K. akhir : rata-rata seluruh bilangan dicetak ke piranti keluaran. }

DEKLARASI

X         : integer    { data bilangan bulat yang dibaca dari papan kunci }

N         : integer    { banyaknya data bilangan bulat, N positif }

K         : integer    { pencacah banyak bilangan }

Jumlah     : integer     { jumlah saluran bilangan }

U         : real         { nilai rata-rata seluruh bilangan }

DESKRIPSI

read (N)

Jumlah ← 0     { inisialisasi }

k←1         { inisialisasi pencacah }

while k ≤ N do

    read (x)

    jumlah←jumlah+x

    k←k+1

endwhile

{ k > N }

u←jumlah/N

write ( 'Nilai rata-rata = ', u)


 

Program Utama:

Algoritma RATA_RATA_BIL_BULAT

{ program utama untuk menghitung rata-rata N buah bialngan bulat. }

DEKLARASI

Procedure HITUNG_RATA_RATA

{ menghitung_rata_rata N buah bilangan bulat yang di baca dari papan kunci. }

DESKRIPSI

    Write ('Menghitung rata-rata N buah bilangan bulat')

    HITUNG_RATA_RATA

    Write ('Sukses!')

PASCAL

program RATA_RATA_BIL_BULAT;

uses wincrt;

procedure HITUNG_RATA_RATA;

var

X     : integer;

N     : integer;

K     : integer;

Jumlah     : integer;

U     : real;     

begin

write ('Berapa banyak data ? '); readln(N);

Jumlah := 0;

K := 1;

while k <= N do

begin

    write ('x : ? '); readln (x);

    jumlah := jumlah + x ;

    k := k + 1 ;

end;         {while}

u := jumlah/N;

writeln ( 'Nilai rata-rata = ', u);

end;


 

(* DESKRIPSI PROGRAM UTAMA *)

begin

    writeln ('Menghitung rata-rata N buah bilangan bulat');

    HITUNG_RATA_RATA;

    writeln (' Sukses ! ');

end.


 

  1. Prosedur dengan parameter masukan/keluaran

ALGORITMIK

Prosedur :

Procedure TUKAR (input/output X, Y : integer)

{ Mempertukarkan nilai X dan Y }

{ K.Awal    : Nilai X dan Y sudah terdefinisi }

{ K.Akhir    : X berisi nilai Y yang lama, Y berisi nilai X yang lama}

DEKLARASI

    Temp : integer
{ peubah Bantu }

DESKRIPSI

    Tempßx    { Simpan nilai X ke dalam temp }

Xß y        { isikan nilai Y ke dalam x }

Yß temp    { isikan nilai temp ke dalam y }

Program Utama :

Algoritma TUKAR_A_B

{ Program utama untuk menukarkan nilai a dan B. Nilai A dan B dibaca dari piranti masukkan. }


 

DEKLARASI

A, B    : integer

Procedure TUKAR (input/output X, Y : integer)

{ Mempertukarkan nilai X dan Y.}

DESKRIPSI

read (A,B)

Write(A,B)     { cetak nilai A dan B sebelum pertukaran }

TUKAR(A,B)    { cetak nilai A dan B dengan memanggil prosedur TUKAR}

Write(A, B)    { cetak nilai A dan B setelah pertukaran }


 

PASCAL

PROGRAM TUKAR_AB;

Var

A, B : integer;

Procedure TUKAR (var X, Y : integer);

var

    Temp : integer; { peubah Bantu }

begin

    Temp := X ;    { Simpan nilai X ke dalam temp }

X := Y;        { isikan nilai Y ke dalam x }

Y := Temp;    { isikan nilai temp ke dalam y }

end;


 

begin

write('A:? '); readln(A);

write('B:? '); readln(B);

write('A:? ',A);

write('B:? ',B);

TUKAR (A,B);

write('A= ',A);

write('B= ',B);

end.


 

TUGAS :

Upah karyawan sebuah perusahaan dihitung harian berdasarkan jumlah jam kerja.

Upah tiap jam adalah Rp. 5.000,00.

Untuk menentukan upah tersebut, buatlah prosedur dalam bahasa Pascal yang menerima jumlah jam kerja dan mengirimkan upah harian yang diterima karyawan.

☻Mulailah berfikir untuk keberhasilan !!! ☻

03 Desember 2008

ARRAY DIMENSI 1 & 2

ARRAY

Array Dimensi 1 ( I/O )

NO

NAMA

1

Muhammad

2

Zaidhan

3

Nail

4

Soni

5

Sotix


Program Contoh_Array_Input;

uses wincrt;

Var

Nama : array[1..5] of string[25];

i : integer;

Begin

for i:=1 to 5 do

Begin

readln(Nama[i]);

writeln('====================');

end;

for i:=1 to 5 do

Begin

Writeln(Nama[i]);

end;

end.

Array Beragam( I/O )

NO

NIM

NAMA

NILAI UTS

NILAI UAS

1

109008250

Muhammad

80

70

2

109008251

Zaidhan

70

80

3

109008252

Nail

60

70

4

109008253

Soni

80

80

5

109008254

Sotix

60

60

Program Contoh_Deklarasi_Array_Beragam;

Uses wincrt;

Var

NIM : array[1..2] of string[10];

Nama : array[1..2] of string[20];

Nilai_1 : array[1..2] of byte;

Nilai_2 : array[1..2] of byte;

i : integer;

Begin

For i := 1 to 2 Do

Begin

Write('NIM = '); readln(NIM[i]);

Write('Nama = '); readln(Nama[i]);

Write('Nilai UTS = '); readln(Nilai_1[i]);

Write('Nilai UAS = '); readln(Nilai_2[i]);

end;

{cetak varibel array}

Writeln(' =====================================================' );

Writeln(' NIM NAMA NILAI UTS NILAI UAS ' );

Writeln(' =====================================================' );

For i:= 1 to 2 do

Begin

Writeln(NIM[i]:

end;

end.

Array Dimensi 2( I/O )

NO

NILAI UTS

NILAI UAS

1

80

70

2

70

80

3

60

70

Program Deklarasi_Array_Dua_Dimensi;

Uses wincrt;

Var

Tabel : Array[1..3,1..2] of Integer;

i,j : Integer;

Begin

Tabel[1,1]:=80;

Tabel[1,2]:=70;

Tabel[2,1]:=70;

Tabel[2,2]:=80;

Tabel[3,1]:=60;

Tabel[3,2]:=70;

For I := 1 to 3 Do

Begin

For J:= 1 to 2 Do

Begin

Writeln('Nilai ',i,',',j,'= ',tabel[i,j]);

End;

End;

End.

Array Matrix( I/O )

Penggunaan array dua dimensi dalam aplikasi penjumlahan matrik :

Program Penjumlahan_Matrik;

Uses winCrt;

Var

Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;

i,j : Integer;

Begin

ClrScr;

{ input matrik ke satu }

Writeln(' Elemen matrik satu');

For i := 1 to 3 Do

Begin

For j := 1 to 2 Do

Begin

Write('Elemen baris -',i,' Kolom -',j,'= ');

Readln(matrik1[i,j]);

end;

End;

{input matrik ke dua}

Writeln('input elemen matrik dua');

For i:= 1 to 3 Do

Begin

For j:= 1 to 2 Do

Begin

Write('Elemen baris -',i,' kolom -',j,'= ');

Readln(matrik2[i,j]);

end;

End;

{proses penjumlahan tiap elemen}

For i := 1 to 3 Do

Begin

For j:= 1 to 2 Do

Begin

Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];

end;

end;

{proses cetak hasil}

For i:= 1 to 3 Do

Begin

For j:= 1 to 2 Do

Begin

Write(Hasil[i,j]:6);

end;

Writeln;

End;

End.

05 November 2008

ARRAY

ARRAY


Larik (array) : adalah tipe terstruktur dari sejumlah komponen yang mempunyai tipe sama. Pada pemrograman menggunakan pascal, larik harus dideklarasikan terlebih dahulu :

Var

Nama_variabel: array[tipe_indek] of tipe_larik;

Contoh:

Var

X: array[1..100] of integer;

Larik x telah dideklarasikan sebagai larik dengan tipe integer, jumlah elemen maksimumnya adalah 100 dan tiap elemen bisa diisi data bertipe integer.

Cara mengisi data pada elemen larik pemrograman adalah seperti berikut ini :

X[1]:= 4;

X[2]:= 3;

X[3]:= 2;

X[4]:= 1;

Untuk menampilkan data dari sebuah elemen larik dengan cara writeln(x[1]); berarti akan menampilkan isi dari elemen 1 larik x.

1) Larik Berdimensi Satu

Larik berdimensi satu dapat digambarkan seperti kotak panjang yang terdiri dari beberapa kotak kecil yang tersusun berurutan, banyaknya kotak kecil yang membentuk kotak panjang adalah menunjukkan banyaknya elemen larik yang dibuat.

Contoh program dengan larik berdimensi satu untuk menyimpan daftar jenis olahraga :

uses crt;

const

max:= 6;

type

sport= array[1..max] of string;

var

olahraga: sport;

indek: integer;

begin

clrscr;

{mengisi data setiap elemen array}

olahraga[1]:= 'sepak bola';

olahraga[2]:= 'basket';

olahraga[3]:= 'tenis';

olahraga[4]:= 'bulu tangkis';

olahraga[5]:= 'voley';

olahraga[6]:= 'renang';

{menampilkan isi array}

for indek:=1 to max do

writeln(olahraga[indek]);

readln;

end.


Contoh program untuk pencarian data pada larik :

uses crt;

const

nama: array[1..10] of string

= ('SUSI','BAMBANG','AGUS','WANDA','TONI','PARDI','TINCE','LIDYA',

'FATUR','ZAHRA' );

var

varnama: string;

indek: integer;

begin

clrscr;

write('Masukkan nama yang dicari : ');

readln(varnama);

{merubah data ke huruf kapital}

for indek:=1 to 10 do

varnama[indek]:= upcase(varnama[indek]);

{membandingkan masukan dengan data pada array}

indek:=0;

repeat

inc(indek);

until (indek>10) or (varnama=nama[indek]);

if indek>10 then

writeln('Nama tidak ditemukan')

else

writeln('Nama ada pada elemen = ',indek);

readln;

end.


Contoh program untuk mencari nilai rata-rata dari data elemen-elemen larik :

uses crt;

var

banyakData, indek: integer;

total: real;

nilai: array[1..5] of real;

begin

clrscr;

{membatasi banyak data}

repeat

write('Banyak nilai yang diinginkan (max 5) = ');

readln(banyakData);

until (banyakData>0) and (banyakData<6);

{memasukkan data nilai}

for indek:=1 to banyakData do

begin

write('Data ke ',indek,' : ');

readln(nilai[indek]);

end;

{menghitung rata-rata}

total:= 0;

for indek:= 1 to banyakData do

total:= total + nilai[indek];

writeln('Nilai rata-rata = ', total/banyakData:0:2);

readln;

end.


Contoh mengurutkan data elemen larik berdasarkan alfabet menggunakan metode bubble :

uses crt;

var

dataNama: array[1..10] of string;

jml, indek, x, y: integer;

tempat: string;

begin

clrscr;

{membatasi jumlah dan membaca masukan data}

repeat

writeln('DATA NAMA AKAN DIURUTKAN ALFABETIKAL');

write('jumlah yang dimasukkan (max 10) = ');

readln(jml); writeln;

until (jml>0) and (jml<11);

for indek:= 1 to jml do

begin

write('data ke ',indek,'= ');

readln(dataNama[indek]);

end;

{mengurutkan data dengan metode bubble}

for x:=1 to jml-1 do

for y:=x+1 to jml do

if dataNama[x] > dataNama[y] then

begin

tempat:= dataNama[x];

dataNama[x]:= dataNama[y];

dataNama[y]:= tempat;

end;

{menampilkan data setelah diurutkan}

writeln;

writeln('DATA SETELAH DIURUTKAN');

writeln;

for indek:= 1 to jml do

writeln(indek,'. ',dataNama[indek]);

readln;

end.