Translate to your languages

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

24 Desember 2007

SUB PROGRAM PASCAL 2

2. Jangkauan Variabel
a. Variabel Global

Variabel global adalah variabel yang didefinisikan/terletak pada program utama, dimana semua sub-program bisa mengakses, mempergunakan dan memodifikasinya.

b. Variabel Lokal

Suatu procedure dapat mendeklarasikan variabelnya sendiri. Variabel-variabel itu hanya bekerja pada procedure dimana mereka dideklarasikan. Variabel-variabel tersebut dinamakan variabel local (local variable)

Keterangan :

Semua bisa mengakses variabel global A, F, G.

Pada procedure alfa definisi global variabel A diganti dengan variabel lokal.
beta_1 dan beta_2 dapat mengakses betamax dan betako.

beta_1 tidak dapat mengakses variabel boboho, dan beta_2 tidak dapat mengakses bobo.
Tdak ada subprogram, kecuali alfa dapat mengakses B dan C.

Procedure beta dapat mengakses alfa dan beta.

Contoh:

program LOKAL_VARIABEL;
uses wincrt;
var nomor1, nomor2 : integer;
{ini bisa dipanggil dari mana-mana GLOBAL VAR}
procedure tambah;
var hasil:integer;{hasil merupakan milik procedure tambah LOCAL VAR}
begin
hasil := nomor1 + nomor2;
writeln(‘hasil adalah', hasil)
end;
begin {program utama}
writeln(‘Masukkan dua angka bulat dengan spasi’);
readln(nomor1, nomor2);
tambah

end.

c. Penggunaan Forward

Dari hal di atas kita tahu bahwa suatu subprogram dapat diakses oleh subprogram apabila sudah didefinisikan terlebih dahulu.

Ada pengecualian, untuk mengatasi masalah chicken-and-the-egg, bila kita memiliki dua/lebih subprogram masing- masing bisa memanggil yang lain dengan referensi forward.

Hal ini berlaku juga untuk FUNCTION (fungsi).

3. Procedure Yang Menggunakan Argumen
Procedure juga bisa memakai variabel (data) untuk bekerja ketika dipanggil.
a. Mendeklarasikan variabel di dalam procedure
• Variabel yang diterima oleh procedure diapit dengan tanda kurung ().
• Dekla
rasi dari variabel terletak diantara nama procedure dan semi-colon.
b. Memanggil procedure and menyampaikan variabel (atau nilai) ke procedure
• Ketika procedure dipanggil, nama procedure diikuti oleh sepasang ().
• Variabel yang dipanggil diletakkan didalam tanda kurung tersebut.
• Variabel ditulis dalam tingkat yang sama seperti dalam prosedur terkait.

Contoh.
Perhatikan contoh program berikut,

program JUMLAH;
uses wincrt;
var nomor1, nomor2 : integer;
procedure CALC_ANSWER ( kesatu, kedua : integer );
var hasil : integer;
begin
hasil := kesatu + kedua;
writeln('hasil adalah ', hasil )
end;
begin
writeln('masukkan dua angka dalam spasi');
readln( nomor1, nomor2 );
CALC_ANSWER( nomor1, nomor2)
end.

4. Procedure Yang Memakai Parameter

program TestNilai;
uses wincrt;
var x, y : integer;

procedure NoEffect ( x, y : integer );
begin
x := y; y := 0;
writeln( x, y )
end;
begin
x := 1; y := 2;
writeln( x, y );
NoEffect( x, y );
writeln( x, y )
end.

Output dari Testnilai adalah:

1 2
2 0
1 2


a. Parameter Nilai (pass by value)

Dalam program di atas, ketika variabel disampaikan ke procedure, procedure bekerja dengan copy dari variabel asli. Nilai dari variabel asli yang disampaikan ke procedure tidak diubah. Procedure hanya menggantikan variabel asli dengan variabel yang ada di procedure , tetapi tidak menggantikan nilai dari variabel asli. Ketika procedure bekerja dengan copy dari variabel, maka dikenal dengan parameter nilai (pass by value).
Perhatikan contoh berikut:

program Parameter_Nilai;
uses wincrt;
var x : byte;
procedure foo(a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {tetap 10}
end.

Outputnya :

15
15
10
15

b. Parameter Variabel (pass by reference)

Procedure bisa juga dipakai untuk mengubah nilai dari variabel asli yang dipanggil oleh procedure. Untuk menggambarkannya, kita bisa lihat pada contoh program modifikasi program sebelumnya. Procedure ini menerima dua nilai integer dan menggantikan nilai aslinya. Untuk membuat procedure menggunakan parameter variabel (pass by reference) dengan menggunakan kata kunci var.

program Parameter_Variabel;
uses wincrt;
var x : byte;
procedure foo(var a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {berubah 15}
end.

Outputnya:
Ketika program dijalankan, akan tercetak di layar

15
15
10
10




5. Function – Suatu Procedure Khusus Yang Menghasilkan Nilai
Procedure memakai data atau variabel ketika dieksekusi. Function (fungsi) juga memakai data, tetapi mempunyai kemampuan untuk menghasilkan nilai pada procedure atau program yang memanggilnya. Function digunakan untuk melakukan operasi matematika seperti perhitungan faktorial.
Suatu function :
Dimulai dengan kata kunci function
Strukturnya sama dengan sebuah procedure
Didalam fungsi, suatu nilai dihasilkan dengan nama function
Suatu function dipakai pada sisi sebelah kanan pada suatu ekspresi

Hanya menghasilkan tipe data sederhana


SYNTAX

function Nama (deklarasi variabel):tipe_data_hasil;
begin
:
pernyataan
:
end;

contoh :

function ADD_TWO ( nilai1, nilai2 : integer ) : integer;
begin
ADD_TWO := nilai1 + nilai2
end;

contoh berikut menggambarkan bagaimana memanggil function,

result := ADD_TWO( 10, 20 );

maka, ketika ADD_TWO dieksekusi, dia menghitung nilai yang terdapat di dalamnya (dalam hal ini 30), yaitu hasil akhirnya.

Contoh

program CONTOH_FUNGSI;
uses wincrt;
var angka, jawaban : integer;
function KUBIK( x : integer ) : integer;
begin
KUBIK := x * x * x
end;
begin
writeln('Masukkan angka.');
readln(angka);
jawaban := KUBIK ( number );
writeln('Hasil pangkat tiga dari ',number,' adalah ', answer)
end.

6. Rekursi dan Iterasi

Subprogram bisa memanggil dirinya (Recursive Call) dengan catatan bahwa memiliki syarat penghentian operasi (iterasi), sehingga perlu dilakukan kehati-hatian dalam penulisannya. Lihat contoh tentang faktorial suatu bilangan di bawah ini.

Contoh.

Program faktorial;
Uses wincrt;
Var x : integer;
function factorial (n:integer):integer;
begin
if n<2>

Penjelasan

Jika x= 5,maka Pemanggilan
Ke-1, n=5.
Factorial:=5*factorial(4); => Perlu Pemanggilan Ke-2
Ke-2 , n=4. Factorial:=4*factorial(3); => Perlu Pemanggilan Ke-3
Ke-3 , n=3. Factorial:=3*factorial(2); => Perlu Pemanggilan Ke-4
Ke-4, n=2. Factorial:=2*factorial(1); => Perlu Pemanggilan Ke-5
Ke-5, n=1. Factorial:=1;
Ke-4 menjadi : Factorial:=2*1; (=2)
Ke-3 menjadi: Factorial:=3*2; (=6)
Ke-2 menjadi: Factorial:=4*6; (=24)
Ke-1 menjadi: Factorial:=5*24; (=120)

18 Desember 2007

STACK

Konsep Tumpukan
• Kumpulan elemen data dengan struktur LIFO
• Operasi-operasi dasar:
1. Buat stack
2. Push: memasukkan elemen dlm stack
3. Pop: menghapus elemen dari stack
4. Top: melihat elemen teratas dari stack


Implementasi Tumpukan dengan Linked dalam Memori Dinamis

• Elemen tumpukan disimpan sebagai node yang dibuat dengan memori dinamis (malloc)
• Tiap node memiliki field:
– data: berisi elemen data tumpukan
– link: pointer ke node berikut dlm tumpukan
• Tumpukan memiliki node kepala yang terdiri atas field:
– jumlah : berisi jumlah elemen tumpukan
– top: pointer ke node pertama dlm tumpukan

Struktur Data Linked Stack

typedef struct tumpukan
{
Node *top;
int jumlah;
}Tump;

typedef struct node {
TipeData data;
struct node *link;
}Node;





Push: Jika Tumpukan Kosong
• Operasi push jika tumpukan kosong pada Linked Stack analog dengan operasi apa pada Linked List?

Operasi Pop
• Operasi pop pada linked stack analog dengan operasi apa pada linked list?

Diskusikan !!!
• Bandingkan implementasi stack dengan array dan dengan linked:
–Apa kelebihan dan kekurangan implementasi stack dengan array?
–Apa kelebihan dan kekurangan implementasi stack dengan linked?


TUGAS
• Buatlah algoritma dan program dari function-function dalam linked stack (push, pop, top)

Selamat Mencoba.

Tugas dikirimkan ke e-mail : sonisotix@gmail.com

sumber : http://www.ikom.usd.ac.id/~tatik/sd/



17 Desember 2007

SUB PROGRAM

1. Pemrograman Modular

Modular programming adalah merupakan suatu teknik untuk menulis program yang berukuran besar. Program dibagi menjadi beberapa bagian kecil. Tiap bagian disebut module, yang melakukan suatu tugas tertentu.


Contoh :
• Menampilkan menu pilihan
• Menghitung nilai rata-rata
• Mensortir data

Pascal mengenal module sebagai:
1. PROCEDURE (terbagi menjadi dua)
a) Procedure Sederhana tidak menerima argumen (nilai atau data) ketika dieksekusi.
b) Procedure Kompleks menerima nilai yang diproses ketika dieksekusi.

2. FUNCTION : Function, ketika dieksekusi menghasilkan suatu nilai.

Procedure mendukung desain program terstruktur, dengan membolehkan membuat module secara terpisah.


a. Procedure Sederhana

Procedure sederhana dipakai untuk menampilkan pilihan menu, dsb. procedure (module) tersebut terdiri atas beberapa pernyataan (statements), yang dikelompokkan dengan kata kunci begin dan end . Setiap procedure mempunyai nama. Seperti contoh berikut:
SYNTAX

PROCEDURE NAMA;
begin
:
pernyataan
:
end;

Contoh a :

PROCEDURE DISPLAY_MENU;
begin
writeln('Pilihan Menu');
writeln(' 1: Edit file teks');
writeln(' 2: buka file teks ');
writeln(' 3: Simpan file teks);
writeln(' 4: Kopi file teks’);
writeln(' 5: Cetak file teks’)
end;

Contoh berikut adalah program untuk menampilkan menu:
Contoh b.

program PROC1 ;
uses wincrt;
PROCEDURE DISPLAY_MENU;
begin
writeln('Pilihan Menu');
writeln(' 1: Edit file teks');
writeln(' 2: buka file teks ');
writeln(' 3: Simpan file teks);
writeln(' 4: Kopi file teks’);
writeln(' 5: Cetak file teks’)
end;
end;
begin
writeln('memanggil prosedur');
DISPLAY_MENU;
writeln('kembali dari prosedur')
end.

Contoh c :

program SIMPLE_PROCEDURE;
uses wincrt;
var waktu, jarak, kecepatan : real;
procedure tampilan_judul;
begin
writeln('Menghitung jarak tempuh berdasar pada');
writeln('dua variabel yaitu: kecepatan dan waktu');
end;
procedure masukkan_data;
begin
write('Masukkan kecepatan dalam km/jam: ');
readln(kecepatan);
write('Masukkan waktu dalam jam : ‘);
readln(time)
end;
procedure hitung_jarak;
begin
jarak:= kecepatan *waktu
end;
procedure tampilkan_hasil;
begin
writeln('jarak yang ditempuh adalah ',jarak:5:2,' km.')
end;
begin {program utama}
tampilan_judul;
masukkan_data;
hitung_jarak;
tampilkan_hasil
end.


Output program :


Menghitung jarak tempuh berdasar pada
dua variabel yaitu: kecepatan dan waktu
Masukkan kecepatan dalam km/jam: 30
Masukkan waktu dalam jam : 2
jarak yang ditempuh adalah 60 km

catatan : ketiga variabel waktu, jarak,dan kecepatan adalah berlaku untuk semua procedure sehingga disebut variabel GLOBAL.


Contoh d.

program Kalkulator_sederhana;

uses wincrt;

var salah_tanda : boolean;

operator : char;

angka_1, angka_2, hasil : real;

procedure PERKALIAN;

begin

hasil := angka_1 * angka_2

end;

procedure PEMBAGIAN;

begin

hasil := angka_1 / angka_2

end;

procedure PENJUMLAHAN;

begin

hasil := angka_1 + angka_2

end;

procedure PENGURANGAN;

begin

hasil := angka_1 - angka_2

end;

procedure MASUKAN;

begin

writeln('MASUKKAN DUA ANGKA DAN OPERATOR');

writeln(' angka_1 operator angka_2');

write(' Masukkan angka pertama : ');

readln(angka_1);

write(' Masukkan operatornya : ');

readln(operator);

write(' Masukkan angka kedua : ');

readln(angka_2)

end;

begin

salah_tanda:= FALSE;

MASUKAN;

case operator of

'*': PERKALIAN;

'/': PEMBAGIAN;

'+': PENJUMLAHAN;

'-': PENGURANGAN;

else salah_tanda := TRUE

end;

if salah_tanda then

writeln('Maaf Tanda Operatornya Salah')

else

writeln(angka_1:4:2,' ',operator,' ',angka_2:4:2,'=',hasil:5:2);

end.