Wednesday 12 February 2014

Laporan resmi Algoritma pemrograman modul 4

LAPORAN RESMI
PRAKTIKUM ALGORITMA PEMROGRAMAN (ALPRO)
MODUL IV
PROSEDUR DAN FUNGSI
Description: LOGO UTM NEW
Disusun Oleh :
TGL PRAKTIKUM      :   22 November 2012
NAMA                          :  Azza Devi Manzilia
NRP                               :  120411100110
KELAS/KELOMPOK  :  D/2
DOSEN PENGAMPU : ARIK KURNIAWATI,S.Kom.,M.kom
ASISTEN                      : ANDI HARTONO
 
 






Disetujui : ....../……./………../Bangkalan



(ANDI HARTONO)
10.04.111.00020


           





Description: 1LABORATORIUM COMMON COMPUTING
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2012 / 2013
BAB I
PENDAHULUAN

1.1  LATAR BELAKANG
Dalam dunia pascal penggunaan koding yang terlalu panjang untuk sebuah program memang sering terjadi. Terkadang sebuah program menggunakan banyak rumus yang dirasa cukup membingungkan. Oleh sebab itu muncul prosedur dan fungsi yang berfungsi membantu menyederhanakan koding yang terlalu panjang dengan cara memanggil nama prosedur/fungsi yang telah dituliskan.
1.2  TUJUAN
Tujuan mahasiswa mengikuti praktikum Algortima Pemrograman Modul 2 ini adalah :
1.      Praktikan dapat mengerti dan memahami tentang  prosedur dan fungsi.
2.      Praktikan dapat membedakan pengunaan prosedur dan fungsi.
3.      Praktikan dapat membuat suatu program menggunakan prosedur dan fungsi.

















BAB II
DASAR TEORI

2.1  TEORI SINGKAT
Seringkali dalam pembuatan program yang berukuran besar, program tersebut dapat dipecah menjadi beberapa subprogram/modul yang lebih kecil. Tiap modul dapat dipasangkan ke program lain yang membutuhkannya. Jenis modul program ada dua macam, yaitu Prosedur dan Fungsi.
a. Prosedur
Prosedur adalah modul program yang mengerjakan aktivitas yang spesifik dan hasilnya diperoleh dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. Sehingga pada setiap prosedur keadaan awal harus didefinisikan sebelum rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir yang diharapkan setelah rangkaian instruksi dilaksanakan.
Struktur prosedur terdiri dari tiga bagian (Gambar 4.1), yaitu:
·  Judul
·  Deklarasi
·  Deskripsi/Badan Prosedur
Text Box: procedure NAMA_PROSEDUR; 
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } 
{ Kondisi awal : keadaan sebelum prosedur dilaksanakan } 
{ Kondisi akhir : keadaan setelah prosedur dilaksanakan } 
(* DEKLARASI *) 
{ Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } 
(* DESKRIPSI *) 
begin 
{ badan prosedur, berisi semua langkah atau aksi } 
end;
Cara memanggil prosedur: NAMA_PROSEDUR;
Ketika NAMA_PROSEDUR dipanggil, kendali program berpindah secara otomatis ke prosedur tersebut. Instruksi di dalam badan prosedur dilaksanakan. Setelah semua instruksi selesai dilaksanakan, kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan prosedur.
Kebanyakan program memerlukan pertukaran informasi antara prosedur (atau fungsi) dan titik dimana ia dipanggil. Penggunaan parameter menawarkan mekanisme penukaran informasi tersebut. Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan ketika pemanggilan, sedangkan paramater formal adalah parameter yang dideklarasikan di bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal.
Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan di dalam prosedur, yaitu:
·  Prosedur dengan Parameter Masukan
Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur. Pada parameter masukan, nilai parameter aktual diisikan ke dalam parameter formal yang bersesuaian. Nilai ini digunakan di dalam badan prosedur yang bersangkutan. Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya. Itulah alasan mengapa parameter jenis ini diacu sebagai parameter masukan. Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual. Karena yang dipentingkan adalah nilainya, maka nama parameter aktual boleh berbeda dengan nama parameter formal yang bersesuaian.
Struktur Bahasa Pascal untuk prosedur dengan parameter masukan ditunjukkan oleh Gambar 4.2.
Text Box: procedure NAMA_PROSEDUR(parameter : tipe_param); 
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses } 
{ Kondisi awal : keadaan sebelum prosedur dilaksanakan } 
{ Kondisi akhir : keadaan setelah prosedur dilaksanakan } 
(* DEKLARASI *) 
{ Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal } 
(* DESKRIPSI *) 
begin 
{ badan prosedur, berisi semua langkah atau aksi } 
end;
Gambar 4.2. Struktur Bahasa Pascal Untuk Prosedur Dengan Parameter Masukan.
Cara memanggil prosedur: NAMA_PROSEDUR(parameter_aktual);
·  Prosedur dengan Parameter Masukan/Keluaran
Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut. Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam prosedur. Jadi, nama parameter aktual akan digunakan selama pelaksanaan prosedur. Akibat penggunaan parameter masukan/keluaran, bila parameter actual diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik pemanggilan juga berubah. Ini berbeda dengan parameter masukan, yang dalam hal ini meskipun nilai parameter aktual di dalam badan prosedur diubah, nilai parameter aktual tersebut tidak berubah di titik pemanggilan.
Struktur Bahasa Pascal untuk prosedur dengan parameter masukan/keluaran ditunjukkan oleh Gambar 4.3.
Text Box: procedure NAMA_PROSEDUR(var parameter : tipe_param);
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses }
{ Kondisi awal : keadaan sebelum prosedur dilaksanakan }
{ Kondisi akhir : keadaan setelah prosedur dilaksanakan }
(* DEKLARASI *)
{ Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal }
(* DESKRIPSI *)
begin
{ badan prosedur, berisi semua langkah atau aksi }
end;
Gambar 4.3. Struktur Bahasa Pascal Untuk Prosedur Dengan Parameter Masukan/Keluaran
Cara memanggil prosedur: NAMA_PROSEDUR(parameter_aktual);
b. Fungsi
Fungsi juga merupakan modul program yang mempunyai tujuan spesifik. Fungsi memberikan/mengembalikan (return) sebuah nilai dan tipe tertentu (tipe dasar atau tipe bentukan). Fungsi diakses dengan memanggil namanya. Selain itu, fungsi juga dapat mengandung daftar parameter formal. Parameter pada fungsi selalu merupakan parameter masukan. Jenis parameter masukan pada fungsi disebabkan oleh kenyataan bahwa parameter pada fungsi merupakan masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai.
Struktur Bahasa Pascal untuk fungsi ditunjukkan oleh Gambar 4.4.
Text Box: function NAMA_FUNGSI(daftar parameter formal) : tipe_hasil; 
{ Spesifikasi Fungsi, menjelaskan apa yang dilakukan dan dikembalikan oleh fungsi } 
(* DEKLARASI *) 
{ Semua nama yang dipakai fungsi didefinisikan di sini dan hanya berlaku lokal } 
(* DESKRIPSI *) 
begin 
{ badan fungsi, berisi semua langkah atau aksi algoritma untuk menghasilkan nilai yang akan dikembalikan } 
NAMA_FUNGSI:=hasil; { pengembalian nilai yang dihasilkan fungsi } 
end;
Gambar 4.4. Struktur Bahasa Pascal Untuk Fungsi
c. Variabel Global dan Lokal
Variabel-variabel yang dideklarasikan di dalam bagian Deklarasi Prosedur ataupun Fungsi bersifat “lokal” dan hanya dapat digunakan di dalam Prosedur/Fungsi yang melingkupinya saja. Sedangkan variabel-variabel yang dideklarasikan di dalam program utama bersifat “global” dan dapat digunakan di bagian manapun di dalam program, baik di dalam program utama maupun di dalam Prosedur/Fungsi.



BAB III
TUGAS PENDAHULUAN
Kerjakan tugas-tugas di bawah ini sebelum praktikum dimulai.
1.      Prosedur dan Fungsi merupakan pemrograman modular. Apakah perbedaan antara keduanya?  Kapankah suatu  fungsi  dibuat  dan  digunakan? Dan  kapankah  suatu prosedur  digunakan?  Bisakah  suatu  kasus  diselesaikan  menggunakan  prosedur dan fungsi? Sertai alasannya
2.      Sebuah truk bergerak dari Kota Bangkalan  Menuju  kedalaman  Pulau  Madura. Pada  Km  pertama  ia  menghabiskan  10lt  bahanbakar. Pada  Km  ke  2  ia menghabiskan  8lt  bahan  bakar(atau  80%  dibanding  Km  pertama).  Demikian seterusnya setiap Km sebelumnya. Susun algoritma untuk menghitung dan menampilkan total bahan bakar yang dihabiskan setelah mencapai 100km Batas nilai  yang bisa dimasukkan melalui piranti masukan dengan menggunakan Prosedur!
Contoh:
Masukkan batas nilai: 100
Bahan Bakar yang telah dihadiskan (lt) ....
3.      Buatlah  algoritma  untuk  menghitung  rumus-rumus  persamaaan  kuadrat  (ax2+bx+c=0) berikut ini:
-  Rumus diskriminan
-  Rumus mencari akar-akar persamaan
 



Setiap rumus dijadikan sebuah fungsi tersendiri dengan parameter-parameter yang dimasukkan dari luar fungsi.
Contoh:
Masukkan nilai a : 1
Masukkan nilai b : 4
Masukkan nilai c : 3
Hasil diskriminan (D) : 2
Nilai X1 : -1
Nilai X2 : -3
4.      PLN menerapkan pembayaran listrik perumahan dengan cara perhitungan sebagai berikut :     -     Untuk golongan 1 tarif : Rp 1000/kWh
-          Untuk golongan 2 tarif : Rp 2000/kWh 
Dengan  syarat  penghitungan:Minimum  pembayaran  adalah  100  kWh  sedangkan  untuk pemakaian 1000kWh dan seterusnya tarifnya ditambah 10% dari total pembayaran.
Tampilan
Golongan Pemakaian Pembayaran
1               50 kwh        100.000
2               150kwh       200.000
1               1000kwh     1.100.000
Jawaban :
1.    a. Perbedaan antara prosedur dan fungsi
·      fungsi harus di deklarasikan dengan tipenya, sedangkan prosedur tidak. Hal ini menunjukkan bahwa pada fungsi itu sendiri dapat menampung nilai, sedangkan prosedur tidak.
b. kapan kita harus menggunakan prosedur dan fungsi
·      Fungsi lebih tepat digunakan apabila modul program mengembalikan sebuah nilai, sementara prosedur digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi.
c. suatu kasus dapat diselesaikan dengan menggunakan prosedur dan fungsi dalam sekaligus karena fungsi dapat dikonversikan sebagai prosedur dengan menyatakan nilai yang dikembalikan oleh fungsi tersebut sebagai parameter keluaran prosedur. Demikian juga, prosedur yang mempunyai satu buah parameter keluaran dapat ditulis sebagai fungsi dengan menyatakan parameter keluaran sebagai nilai yang dikembalikan oleh fungsi

2.    Algoritma bahan bakar
 
DEKLARASI
program uji_coba_bahan_bakar {nama program yang akan dijalankan}
uses wincrt;
var n:integer;  j:real; {variabel global}
procedure hitung (n:integer; var j:real) {nama prosedur beserta parameternya}
          var i:integer; a:real; {variabel lokal}
      DESKRIPSI
          a:=10;
          for i:= 1 to n do
              begin
              j:=j+a;
              a:=a*0.8;
              end;
          end;   
  
     write ('masukkan nilai n:'); read (n); {inputan}
    hitung (n,j); {memanggil prosedur}
     write (j:2:2); {hasil akhir}
end.



3.    Algoritma persamaan kuadrat
Algoritma Hitung_persamaan_kuadrat
{User memasukkan nilai a,b, dan c dari persamaan kuadrat(ax2+bx+c=0) melalui piranti masukan dan menghasilkan nilai D, X1 dan X2}
DESKRIPSI :
1. Menentukan fungsi rumus_D, yaitu :
    deskriminan = sqrt ( (b*b) – (4*a*c))
    {Fungsi ini akan mempunyai nilai balik pada variabel D.}
2. Membuat fungsi untuk menentukan nilai_X1 yaitu :
   X1 = (-b + deskriminan)/(2*a)
   {Fungsi ini akan mempunyai nilai balik pada variabel X1.}
3. Membuat fungsi untuk menentukan nilai_X2 yaitu :
   X2 = (-b – deskriminan)/(2*a)
   {Fungsi ini akan mempunyai nilai balik pada variabel X2.}
4. Membaca nilai dari user untuk variabel a, b, dan c.
5. Untuk hasil diskriminan, memanggil fungsi rumus deskriminan
6. Untuk nilai X1 dan X2 memanggil fungsi nilai_X1 dan nilai_X2.
7. Selesai

4.    Algoritma pembayaran listrik pln
DEKLARASI
Program pembayaran_pln {judul program}
uses wincrt;
var a,b:real; {variabel global}
    c :integer; {variabel global}
procedure HitungPembayaran(a:real; var b:real) {nama prosedur dan parameter}

            DESKRIPSI
          var tarif:integer;
          begin
          if c=1 then
             tarif:=1000
          else
          if c=2 then
             tarif:=2000;
          if a <= 100 then
             a:=100;
         b :=tarif*a;
           if a >=1000 then
              b:=b+(0.1*b);
          end;

begin
write('Masukan Golongan  : ') {inputan jenis golongan}
readln(c);
write('Masukan Pemakaian : ') {inputan besar pemakaian listrik}
read(a);
writeln;
HitungPembayaran(a,b) {proses perhitungan total pembayaran}
writeln('Golongan  Pemakaian  Pembayaran')
write (c,a:13:0,' Kwh', b:13:0) {hasil akhir}
end.












BAB IV
IMPLEMENTASI

4.1.  KEGIATAN PRAKTIKUM
Pada saat praktikum, kerjakan tugas-tugas berikut ini:
1.      Buat program untuk tugas prepraktikum2!
2.      Buat program untuk tugas prepraktikum 3!
3.      Buat program untuk tugas prepraktikum 4!
Jawaban :
1.      Program menghitung Bahan Bakar.
program uji_coba_bahan_bakar;
uses wincrt;
var n:integer;
    j:real;
procedure hitung (n:integer; var j:real);
          var i:integer;
              a:real;
          begin
          a:=10;
          for i:= 1 to n do
              begin
              j:=j+a;
              a:=a*0.8;
              end;
          end;   
begin
    write ('masukkan jarak:'); read (n);
    hitung (n,j);
     write (‘bahan baar yang dikeluarkan : ‘,j:2:2);
end.

Running program
2.      Program persamaan kuadrat.
Text Box: program persamaan_kuadrat;
uses wincrt;
var a,b,c:integer;
function deskriminan(a,b,c:integer):real;
         begin
         deskriminan:= sqrt((b*b)- (4*a*c));
         end;
function x1(a,b:integer; deskriminan:real):real;
         begin
         x1:= (-b + deskriminan) / (2*a);
         end;
function x2 (a,b : integer; deskriminan:real):real;
         begin
         x2 := (-b - deskriminan) / (2*a);
         end;
begin
write ('masukkan nilai a:');read(a);
write ('masukkan nilai b:');read(b);
write ('masukkan nilai c:');read(c);
writeln ('hasilnya (D)=',deskriminan(a,b,c):0:0);
writeln ('hasilnya(x1)=',x1(a,b,deskriminan(a,b,c)):0:0);
writeln ('hasilnya(x2)=',x2(a,b,deskriminan(a,b,c)):0:0);
end.
Running program



3.    Program hitung pembayaran listrik pln.
Text Box: Program pembayaran_listrik_PLN;
uses wincrt;
var pakai,bayar:real;
    gol :integer;
procedure totalPembayaran(pakai:real; var bayar:real);
          var tarif:integer;
          begin
          if gol=1 then
             tarif:=1000
          else
          if gol=2 then
             tarif:=2000;
          if pakai <= 100 then
             pakai:=100;
          bayar :=tarif*pakai;
           if pakai >=1000 then
              bayar:=bayar+(0.1*bayar);
          end;

begin
write('Masukan Golongan  : ');
readln(gol);
write('Masukan Pemakaian : ');
read(pakai);
writeln;
totalPembayaran(pakai,bayar);
writeln('Golongan  Pemakaian  Pembayaran');
write(gol,pakai:13:0,' Kwh', bayar:13:0);
end.

Running program


4.2.  TUGAS AKHIR
Buatlah algoritma dan terjemahkan dalam Bahasa Pascal untuk menghitung bilangan fibonaci dengan menggunakan teknik rekursif dan non-rekursif! Contoh:
Masukkan fibonaci deret bilangan fibbonaci 1, 1, 2, 3, 5, 8, 13, ...
Masukan suku pertama : 1
Masukan batas suku: 6
Deret Keluaran: 1, 1, 2, 3, 5, 8
Jawaban:
Algoritma Program Bentuk menghitung bilangan fibonaci :
JUDUL Program angka_fibonanci
DEKLARASI
a,n,i,j : integer
   procedure fibonanci
   DEKLARASI  PROSEDUR
   DESKRIPSI PROSEDUR
   write(‘deret keluaran:’)
   j ß 0
   for i:=1 to n do
       j ß j+a
       a ß j-a
       write(j)
       endfor

DESKRIPSI
write('Masukan suku pertama: ')
read(a)
write('Masukan batas suku  : ')
read(n)
fibonanci



koding program menghitung bilangan fibonaci :
Text Box: program angka_fibonanci;
uses wincrt;
var
a,n,i,j:integer;
procedure fibonanci ;
          begin
          if i<n then
          begin        
          i:=i+1;
          j:=j+a;  
          a:=j-a;
          write (‘hasil deret’,j,',');
          fibonanci;
          end;
          end;
begin
writeln ('PROGRAM BILANGAN FIBONANCI');
write ('masukkan suku awal : '); readln (a);
write ('masukkan batasan : '); readln (n);
j:=0;
i:=0;

fibonanci;
end.

Running program



BAB V
PENUTUP

5.1  KESIMPULAN
Dari kegiatan praktikum diatas dapat disimpulkan bahwa modul dibagi menjadi dua, yaitu  prosedur dan fungsi. prosedur berguna untuk mengumpulkan statemen-statemen yang dapat dijalankan menjadi satu dalam suatu program dan untuk menjalankanya kembali hanya dengan menuliskan nama prosedur yang menampungnya, sedangkan fungsi tidak hanya dapat dipakai untuk mengelompokkan baris-baris perintah seperti halnya prosedur, tetapi fungsi  dapat menampung nilai yang disimpan pada nama fungsi. Fungsi lebih tepat digunakan apabila modul program mengembalikan sebuah nilai, sementara prosedur digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi.

5.2  SARAN
1.    Sebaiknya asisten pratikum dapat menjalankan peraturan yang telah ditentukan.

2.    Untuk kegiatan praktikum sebaiknya lebih memperhatikan waktu kapan praktikum harus dimulai (tepat waktu).

No comments:

Post a Comment