Jumat, 05 November 2010 | By: xxx

Imperative Programing (alogaritma dan pemrograman 1c)

Bahan Kuliah Teori :
Imperative Programing


Sistematika Materi
Pemrograman Terstruktur
Sbuprogram ,Prosedur dan Fungsi
Penanganan Ekspesi



Anggota :
 Gusti Hidayatullah (33.11.00.55)
 Dody Hudayah ( )
 M.Lutfi ( )
 Alfin Laduni ( )
 Rahmat hidayat (35110572)

CopyRight@2010
Pendahuluan..
Imperative Programing
Dalam ilmu komputer, pemrograman adalah paradigma pemrograman yang menggambarkan perhitungan dalam hal pernyataan yang mengubah program negara. Dalam banyak cara yang sama suasana hati yang imperatif dalam bahasa-bahasa alamiah mengungkapkan perintah untuk mengambil tindakan, program-program penting menentukan urutan perintah untuk komputer untuk melakukan.
• Mem-program komputer, secara teknis bertujuan :
Memasukkan/ menyusun sejumlah instruksi dan data ke memory, yang selanjutnya akan diambil satu persatu oleh CPU/Processor untuk dilaksanakan
Perkembangan (cara) mem-program komputer :
1. Pemrograman dengan mengatur/menyambung titik jumper di rangkaian komputer
2. Pemrograman dengan langsung menulis kode biner ke memory, direpresentasikan melalui kode hexa, kode biner disebut juga bahasa mesin komputer
3. Pemrograman dengan bahasa assembler : Perintah-perintahnya berkaitan langsung dengan struktur internal hardware
Pemrograman dengan bahasa tingkat tinggi/menengah : Perintah-perintahnya mirip dengan bahasa manusia/engli
Pemrograman Terstruktur
Ide awal penerapan pemrograman terstruktur yaitu dengan menghindari penggunaan GOTO untuk melompat ke bagian program tertentu
Kegunaan GOTO untuk melompat ke baris program tertentu, secara umum dapat dibagi ke dalam 2 kelompok :
1. Melompat ke bagian bawah program dari posisi program saat ini
2. Melompat ke bagian atas program dari posisi program saat ini


2. Dengan pemrograman terstruktur;
3. Jika ada kebutuhan melompat ke bagian bawah, dapat digantikan dengan perintah Selection (If, Case, Select, Switch,…)
4. Jika ada kebutuhan melompat ke bagian atas, dapat digantikan dengan perintah Looping (for, While, repeat-until,…)

Untuk itu dalam pemrograman terstruktur hanya dikenal 3 struktur :
1. Sekuensial, yaitu program yang tidak memiliki lompatan. Baris program dijalankan secara normal (lurus) satu per-satu dari atas ke bawah
2. Selection, yaitu program yang memiliki pilihan apakah harus menjalankan baris program sesuai dengan urutannya atau melompati sejumlah baris program tersebut
Looping, yaitu program yang juga mengandung pilihan apakah akan mengulangi program yang sudah pernah dijalankan sebelumnya atau tidak

Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write),
pengujian (test), penelusuran kesalahan (debug) dan pemeliharan(maintain) suatu program. Pada pembahasan berikut ini kita akan melihat bagaimana tehnik ini yang pendekatan yang dilakukan secara modular, dapat membantu kita dalam membangun suatu program.

Pemrograman Secara Modular
Dalam pemrograman secara modular, suatu program akan dipilah kedalam sejumlah
modul, dimana setiap modul menjalankan fungsinya sendiri. Tentunya fungsi yang dijalankan
oleh setiap modul sangat terbatas sesuai dengan ruang lingkup yang akan dikerjakan. Dengan
adanya sejumlah modul program ini tentu saja kesalahan yang timbul dapat dikurangi.
Setiap program tentu akan memiliki program utamanya, yang kemudian akan memanggil
sejumlah modul-modul yang ada.

Implementasi dari pendekatan secara modular
Pemrograman secara modular ini dapat diimplementasikan dengan penggunaan
subroutine, suatu kelompok instruksi yang menjalankan suatu pengolahan yang sifatnya terbatas
seperti pencetakan, pembacaan untuk proses input atau untuk proses penghitungan. Subroutine dapat dikelompokkan menjadi internal subroutine dan external subroutine, berikut ini
penjelasannya :

Internal Subroutines
Adalah bagian dari suatu program yang digunakan. Dideklarasikan cukup sekali saja, untuk
sejumlah proses yang sama akan dilakukan oleh program tersebut. Program akan memanggil
subroutines tersebut jika diperlukan dan apabila telah selesai, kontrol selanjutnya dikembalikan
ke instruksi berikutnya.
Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya dikenal sebagai call
dan return.

External Subroutines
Diletakkan secara terpisah dari program yang menggunakan subroutine tersebut. Subroutine ini
dideklarasikan supaya bisa dipakai oleh program yang lain. Untuk menggunakannya tentu
seorang programmer harus mengetahui dimana ? , apa namanya ?, bagaimana pengiriman datanya
?, bagaimana jawaban yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk
pemrosesan yang komplek, yang dibutuhkan oleh banyak user

Masalah Yang dihadapi dalam Pendekatan Modular
Masalah yang timbul misalnya tidak mengetahui modul mana yang harus digunakan, data
apa yang harus dikirimkan dsb-nya. Hal ini dapat dimaklumi karena tugas seorang programmer
tentu akan berbeda dengan programmer yang lainnya. Oleh karena itu dalam tahap perencanaan
fungsi-fungsi dari suatu modul harus dapat dimengerti secara jelas, dan tentu saja harus mengikuti
suatu standar yang telah ditentukan.






























Subprogram ,Prosedur ,dan Fungsi

Sub Program
Digunakan utk mendeklarasikan prosedur atau fungsi yang dibuat oleh programmer

Prosedur dan fungsi
Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :
1. meningkatkan readibility, yaitu mempermudah pembacaan program
2. meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modul-modul atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga mempermudah pengecekan, testing dan lokalisasi kesalahan.
3. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah yang semestinya diulang-ulang.
Sub Program Rekursif adalah sub program yang memanggil dirinya sendiri selama kondisi pemanggilan dipenuhi.

adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :
1. Kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau special condition)
2. Pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)
Secara umum bentuk dari sub program rekursif memiliki statemen kondisional :
if kondisi khusus tak dipenuhi
then panggil diri-sendiri dengan parameter yang sesuai
else lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi

Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori, waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien .
Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam pencarian / searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang).
Contoh sub program rekursif dalam bahasa Pascal.
1. Contoh sederhana
PROCEDURE TULIS_1(banyak : integer;kata : string);
begin
if banyak > 1 then TULIS_1(banyak-1,kata);
writeln(kata, banyak:5);
end;

OUTPUT (misal dipanggil dengan TULIS_1(5,"Cetakan ke "))
Cetakan ke 1
Cetakan ke 2
Cetakan ke 3
Cetakan ke 4
Cetakan ke 5

Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini!

PROCEDURE TULIS_2(banyak : integer;kata : string);
begin
writeln(kata, banyak:5);
if banyak > 1 then TULIS_1(banyak-1,kata);
end;

OUTPUT (misal dipanggil dengan TULIS_2(5,"Cetakan ke "))
Cetakan ke 5
Cetakan ke 4
Cetakan ke 3
Cetakan ke 2
Cetakan ke 1














Penangana Ekspesi

PENANGANAN EKSEPSI
Eksepsi adalah keadaan tidak normal yang muncul pada suatu bagian program pada saat dijalankan. Penanganan
eksepsi pada java membawa pengelolaan kesalahan program saat dijalankan kedalam orientasi-objek. Eksepsi java adalah
objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu bagian program.
Saat suatu keadaan eksepsi muncul, suatu objek exception dibuat dan dimasukkan ke dalam method yang
menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu. Method ini juga
menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum
suatu eksepsi menyebabkan metodenya kembali ke pemanggil.
Eksepsi dapat muncul tidak beraturan dalam suatu method, atau dapat juga dibuat secara manual dan nantinya
melaporkan sejumlah keadaan kesalahan ke method yang memanggil.

Dasar-dasar penanganan Eksepsi
Penanganan eksepsi pada java diatur dengan lima kata kunci :
try, catch, throw, throws dan finally. Pada dasarnya
try digunakan untuk mengeksekusi suatu bagian program, dan jika muncul kesalahan, sistem akan melakukan
throw suatu eksepsi yang dapat anda catch berdasarkan tipe eksepsinya, atau yang anda berikan finally dengan
penangan default.

Berikut ini bentuk dasar bagian penanganan eksepsi :



try {
// Block of Code
}
catch (ExceptionType1 e) {
// Exception Handler for ExceptionType1
}
catch (ExceptionType2 e) {
// Exception Handler for ExceptionType2
throw (e); // re-throw the Exception…
}
finally { }

Tipe Eksepsi
Dipuncak hirarki class eksepsi terdapat satu class yang disebut throwable. Class ini digunakan untuk
merepresentasikan semua keadaan ekasepsi. Setiap ExceptionType pada bentuk umum diatas adalah subclass dari
throwable.
Dua subclass langsung throwable didefinisikan untuk membagi class throwable menjadi dua cabang yang berbeda.
Satu, class Exception, digunakan untuk keadaan eksepsi yang harus ditangkap oleh program yang kita buat. Sedangkan
yang lain diharapkan dapat menangkap class yang kita subclasskan untuk menghasilkan keadaan eksepsi.

Eksepsi Yang Tidak Dapat Ditangkap
Obyek eksepsi secara otomatis dihasilkan oleh runtime java untuk menanggapi suatu keadaan eksepsi. Perhatikan
contoh berikut :

class Exc0 {
public static void main (String args[]) {
int d = 0;
int a = 42 / d;
}
}
Saat runtime java mencoba meng-eksekusi pembagian, akan terlihat bahwa pembaginya adalah nol, dan akan
membentuk objek eksepsi baru yang menyebabkan program terhenti dan harus berurusan dengan keadaan kesalahan
tersebut. Kita belum mengkodekan suatu penangan eksepsi, sehingga penanganan eksepsi default akan segera dijalankan.

Keluaran dari program diatas :
java.lang.ArithmeticExpression : /by zero
at Exc0.main (Exc0.java:4)

Berikut adalah contoh lainnya dari eksepsi :

class Exc1 {
static void subroutine() {
int d = 0;
int a = 42 / d;
}
public static void main (String args[]) {
Exc1.subroutine();
}
}

Output-nya :
Exception in thread “ main” java.lang.ArithmeticException : / by zero
at Exc1.subroutine(Exc1.java :4)
at Exc1.main(Exc1.java : 7)


Try dan Catch
Kata kunci try digunakan untuk menentukan suatu blok program yang harus dijaga terhadap semua eksepsi,
setelah blok try masukkan bagian catch, yang menentukan tipe eksepsi yang akan ditangkap. Perhatikan contoh berikut :

class Exc2 {
public static void main (String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println(“Division By Zero”);
}
}
}

Outputnya:
C:\Documents and Settings\noviyanto\My Documents>java Exc2
Division By Zero


Throw
Pernyataan throw digunakan untuk secara eksplisit melemparkan suatu eksepsi. Pertama kita harus mendapatkan
penanganan dalam suatu instance throwable, melalui suatu parameter kedalam bagian catch, atau dengan membuatnya
menggunakan operator new.
Bentuk umum pernyataan throw :
throw ThrowableInstance;

Aliran eksekusi akan segera terhenti setelah pernyataan throw, dan pernyataan selanjutnya tidak akan dicapai. Blok
try terdekat akan diperiksa untuk melihat jika telah memiliki bagian catch yang cocok dengan tipe instance Throwable. Jika
tidak ditemukan yang cocok, maka pengaturan dipindahkan ke pernyataan tersebut. Jika tidak, maka blok pernyataan try
selanjutnya diperiksa, begitu seterusnya sampai penanganan eksepsi terluar menghentikan program dan mencetak
penelusuran semua tumpukan sampai pernyataan throw.
Contoh :

class throwDemo {
static void demoProc() {
try {
throw new NullPointerException(“demo”); }
catch (NullPointerException e) {
System.out.println(“caught inside demoproc”);
throw e; }
}
public static void main (String args[]) {
try { demoProc(); }
catch (NullPointerException e) {
System.out.println(“recaugt : “ + e); }
} }

Output :
caught inside demoproc
recaught : java.lang.NullPointerException : demo

Throws
Kata kunci throws digunakan untuk mengenali daftar eksepsi yang mungkin di-throw oleh suatu method. Jika tipe
eksepsinya adalah error, atau RuntimeException, atau suatu subclassnya, aturan ini tidak berlaku, karena tidak diharapkan
sebagai bagian normal dari kerja program.
Jika suatu method secara eksplisit men-throws suatu intans dari Exception atau subclassnya, diluar
RuntimeException, kita harus mendeklarasikan tipenya dengan pernyataan throws. ini mendefinisikan ulang deklarasi
method sebelumnya dengan sintaks sbb :
type method-name (arg-list) throws exception-list { }
Contoh :

class ThrowsDemo {
static void procedure () throws IllegalAccessException {
System.out.println(“Inside Procedure”);
throw new IllegalAccessException(“demo”);
}
public static void main(String args[]) {
try { procedure(); }
catch (IllegalAccessException e) {
System.out.println(“caught “+ e); }
}
}

Output :
Inside procedure
caught java.lang.IllegalAccessException : demo

Finally
Saat suatu eksepsi dilemparkan, alur program dalam suatu method membuat jalur yang cenderung tidak linier
melalui method tersebut, melompati baris-baris tertentu, bahkan mungkin akan keluar sebelum waktunya pada kasus dimana
tidak ada bagian catch yang cocok. Kadang-kadang perlu dipastikan bahwa bagian program yang diberikan akan berjalan,
tidak perduli eksepsi apa yang terjadi dan ditangkap. Kata kunci finally dapat digunakan untuk menentukan bagian program
seperti itu.
Setiap try membutuhkan sekurang-kurangnya satu bagian catch atau finally yang cocok. Jika kita tidak
mendapatkan bagian catch yang cocok, maka bagian finally akan dieksekusi sebelum akhir program, atau setiap kali suatu
method akan kembali ke pemanggilnya, melalui eksepsi yang tidak dapat ditangkap, atau melalui pernyataan return, bagian
finally akan dieksekusi sebelum kembali ke method kembali.
Berikut adalah contoh program yang menunjukkan beberapa method yang keluar dengan berbagai cara, tidak satu
pun tanpa mengeksekusi bagian finally-nyA.

class finallyDemo {
static void procA() {
try { System.out.println(“Inside procA..”);
throw new RuntimeException(“Demo”); }
finally { System.out.println(“procA is finally”); }
}
static void procB() {
try { System.out.println(“Inside procB..”);
return; }
finally { System.out.println(“procB is finally”); }
}
public static void main(String args[]) {
try { procA( ); }
catch (Exception e){ };
procB(); }
}

Output :
Inside procA..
procA is finally
Inside procB..
procB is finally















SEKIAN MAKALAH DARI KELOMPOK KAMI ,SEKIRANYA BERMANFAAT BAGI PEMBACA ,dan JIKA ADA TULISAN YG KURANG MOHON DI MAAFKAN

0 komentar:

Posting Komentar