javaku

Jumat, 18 November 2011

PROSEDUR DAN FUNGSI

Sub Program (Modul)
  1. Sebuah program yang kompleks umumnya akan didekomposisi menjadi beberapa sub program yang lebih sederhana.
  2. Sub program itu disebut juga modul terkadang bersifat independen terhadap program utama.
  3. Pemrograman yang menggunakan modul disebut dengan pemrograman modula
  4. Modul dapat digunakan oleh program lain yang membutuhkannya.
  5. Dalam bahasa pemrograman modul dapat dikategori menjadi prosedur dan fungsi.

Prosedur
  1. Prosedur adalah program yang mengerjakan aktivitas yang spesifik yang menghasilkan efek netto
  2.  Efek netto yaitu perubahan kondisi awal menjadi kondisi akhir setelah prosedur dijalankan
  3. Prosedur bukan program yang berdiri sendiri , sehingga untuk menjalankan prosedur dengan dipanggil di program utama.

Contoh Program Tanpa Prosedur
Input(uts, uas, tugas)
nilaiAkhir_0.3uts+o.5uas+0.2tugas
Output(nilaiAkhir)
If nilaiAkhir>=85 then nilaiHuruf_’A’
Else if If nilaiAkhir>=70 then nilaiHuruf_’B’
Else if If nilaiAkhir>=50 then nilaiHuruf_’C’
Else if If nilaiAkhir>=30 then nilaiHuruf_’D’
Else nilaiHuruf_’E’
End If
Output(nilaiHuruf)
Prosedur Hitung Nilai
Procedure HITUNGNILAI
Input(uts, uas, tugas)
nilaiAkhir_0.3uts+o.5uas+0.2tugas
Output(nilaiAkhir)

Prosedur Nilai Huruf
Procedure NILAIHURUF
If nilaiAkhir>=80 then nilaiHuruf_’A’
Else if If nilaiAkhir>=70 then nilaiHuruf_’B’
Else if If nilaiAkhir>=50 then nilaiHuruf_’C’
Else if If nilaiAkhir>=30 then nilaiHuruf_’D’
Else nilaiHuruf_’E’
End If
Output(nilaiHuruf)

Penulisan Prosedur dalam Java
_ Prosedur dapat ditulis diatas program utama maupun
Dibawahnya
_ Dengan format
public static void namaProsedur(){
...
}
_ Misalnya
public static void HitungLuas(){
int panjang=10;
int lebar=5;
System.out.println(“Luas = “+panjang*luas);
}

CONTOH :
1.      import java.util.Scanner;
2.      public class ContohProsedur{
3.                  //deklarasi variabel global yang bisa dikenali disemua bagian program
4.                  public static double nilaiAkhir=0;
5.                  public static char nilaiHuruf=' ';
6.                  //prosedur Hitung Nilai
7.                  public static void HitungNilai(){
8.                              Scanner keyboard=new Scanner(System.in);
9.                              System.out.print("Nilai UTS : ");
10.                          double uts = keyboard.nextDouble();
11.                          System.out.print("Nilai UAS : ");
12.                          double uas = keyboard.nextDouble();
13.                          System.out.print("Nilai Tugas : ");
14.                          double tugas = keyboard.nextDouble();
15.                          nilaiAkhir=0.3*uts+0.5*uas+0.2*tugas;
16.                          System.out.printf("Nilai Akhir %.2f : \n" ,nilaiAkhir);
17.              }
18.              //Prosedur Nilai Huruf
19.              public static void NilaiHuruf(){
20.                          if (nilaiAkhir>=85) nilaiHuruf='A';
21.                          else if (nilaiAkhir>=70) nilaiHuruf='B';
22.                          else if (nilaiAkhir>=50) nilaiHuruf='C';
23.                          else if (nilaiAkhir>=30) nilaiHuruf='D';
24.                          else nilaiHuruf='E';
25.                          System.out.println("Nilai Huruf : "+nilaiHuruf);
26.              }
27.              //Program Utama
28.              public static void main(String[] args){
29.              HitungNilai();
30.                          NilaiHuruf();
31.              }
32.  }

OUTPUT

Identifier Global dan Lokal

  1. Konsekuensi penggunaan sub program adalah adanya identifier (variabel atau konstanta) global dan lokal
  2. Identifier global adalah identifier yang dikenali di semua bagian program, pada program diatas contohnya adalah nilaiAkhir dan nilaiHuruf
  3. Identifier lokal adalah identifier yang hanya dikenali oleh sub program yang mendeklarasikannya, contohnya adalah uts, uas dan tugas yang hanya dikenali oleh prosedur hitungNilai.
Fungsi
  1. Fungsi adalah sub program yang mengembalikan (return) sebuah nilai bertipe data primitif (int, float, double, boolean, string, atau char)
  2. Mirip dengan fungsi dalam matematika yang tugasnya mengubah nilai input menjadi nilai output
  3. Umumnya fungsi disertai penggunaan parameter untuk input data

Fungsi Hitung Nilai
Function HITUNGNILAI(a,b,c: double): double
na=a*0.3+b*0.5+c*0.2;
return(na)

Fungsi Nilai Huruf
Function NILAIHURUF(na: double): char
If nilaiAkhir>=80 then nilaiHuruf_’A’
Else if If nilaiAkhir>=70 then nh_’B’
Else if If nilaiAkhir>=50 then nh_’C’
Else if If nilaiAkhir>=30 then nh_’D’
Else nh_’E’
End If
return(nh)

Program Utama
Input(uts, uas, tugas)
nilaiAkhir = HITUNGNILAI(uts,uas,tugas)
Output (nilaiAkhir)
Output (NILAIHURUF(nilaiAkhir))

CONTOH
  1. import java.util.Scanner;
  2. public class ContohFungsi{
  3.             //Fungsi Hitung Nilai
  4.             public static double HitungNilai(double a, double b,double c){
  5.                         double na = a*0.3+b*0.5+c*0.2;
  6.                         return (na);
  7.             }
  8.             //FungsiNilai Huruf
  9.             public static char NilaiHuruf(double na){
  10.                         char nh = ' ';
  11.                         if (na>=85) nh='A';
  12.                         else if (na>=70) nh='B';
  13.                         else if (na>=50) nh='C';
  14.                         else if (na>=30) nh='D';
  15.                         else nh='E';
  16.                         return(nh);
  17.             }
  18.             //Program Utama
  19.             public static void main(String[] args){
  20.                         Scanner keyboard = new Scanner(System.in);
  21.                         System.out.print("Nilai UTS : ");
  22.                         double uts = keyboard.nextDouble();
  23.                         System.out.print("Nilai UAS : ");
  24.                         double uas = keyboard.nextDouble();
  25.                         System.out.print("Nilai Tugas : ");
  26.                         double tugas = keyboard.nextDouble();
  27.                         double nilaiAkhir = HitungNilai(uts,uas,tugas);
  28.                         System.out.printf("Nilai Akhir : %.2f \n",nilaiAkhir);
  29.                         System.out.println("Nilai Huruf : "+NilaiHuruf(nilaiAkhir));
  30.             }
  31. }

OUTPUT


Parameter
Parameter dapat digunakan baik di fungsi maupun prosedur. Ada 2 jenis parameter yaitu parameter aktual dan parameter formal.
  1. Parameter aktual digunakan saat memanggil prosedur, melalui parameter ini data dikirim baik berupa konstanta atau variabel
  2. Parameter formal digunakan pada saat mendeklarasikan nama prosedur, melalui parameter ini data diterima dari parameter aktual, selalu berupa variabel, melakukan casting otomatis dengan urutan
→ byte → short → int → long →float → double

Bilangan Acak


Bilangan Acak
  • Salah satu fitur penting dalam algoritma adalah bilangan acak (random)
  • Bilangan acak ini digunakan dalam banyak program simulasi probabilistik
  • Untuk membangkitkan bilangan acak di Java digunakan kelas Math
  • ublic class CobaRandom{
                public static void main(String[] args){
                                double acak = Math.random();
                                System.out.println("Bilangan acak yang dibangkitkan: "+acak);                  
                }
}
 

Membangkitkan 10 bilangan bulat acak antara 0 – 100
For i = 1 to 10 do
                acak ß integer(random()*100)
                output(acak)
End for
public class CobaRandom2{
                public static void main(String[] args){
                                for (int i=1;i<=10;i++){
                                                int acak = (int)(Math.random()*100);
                                                System.out.println("Bilangan acak ke-"+i+"\t: "+acak);
                                                }                             
                }
}

Contoh Simulasi Probabilistik
  • Jika sebuah uang koin dilemparkan, maka secara teori peluang muncul gambar adalah 1/2 dan muncul angka ½
  • Lakukan percobaan dengan melemparkan  koin sebanyak 1 x, 100 x, 1000 x, 10.000 x, 100.000 x, dan 1.000.000 x. Apakah teori itu terbukti?
Algoritma
Input (n) {jumlah data}
For i = 1 to n do
                acakßrandom()
                if acak <= 0.5 then
                                gambar = gambar +1
                else
                                angka=angka+1
                end if
End for
Output(“gambar = “, gambar)
Output(“angka = “, angka)
Output(“peluang gambar =“, gambar/n*100,”%”)
Output(“peluang angka = “, angka/n*100,”%”)

Menyimpan Bilangan Acak diantara 0-1000 di Array dan memampilkannya
Input (n) {jumlah data}
larik: array[1..n]
For i=1 to n do
                larik[i]=random()*1000
End for
For i=1 to n do
                Output(larik[i])
End for