Rabu, 27 April 2011

Belajar Algoritma Pemograman Itu Mudah .

Tujuan nya adalah untuk memudahkan pembuatan program baik yang sederhana maupun yang kompleks. Yang dimaksud dengan program adalah kumpulan intruksi yang digunakan untuk mengatur computer agar melakukan suatu tindakan tertentu.

Suatu program ditulis mengikuti kaidah bahasa pemograman tertentu. Bahasa pemograman dapat di analogikan dengan bahasa yang digunakan manusia (bahasa manusia). Kumpulan intruksi dalam bahasa manusia yang berupa sejumlah kalimat dapat anda analogikan dengan suatu program.

bahasan untuk menjadi seorang programer kira-kira sbb:
1. Kita harus memahami algoritma dengan bahasa kita sendiri
2. Kita harus menguasai ato mengerti Sintak algoritma atau biasa disebut algoritmik
3. Kita harus menguasai salah satu bahasa pemrograman dasar
4. Kita harus Fokus di Jalur Pemrograman yang mana yang akan kita pilih apakah berbasis web atau desktop
5. Kita harus berlatih dan berlatih dan berlatih…

Orang yang telah terbiasa “bergaul” dengan komputer menggunakan satu bahasa pemrograman tertentu (tingkat mahir), biasanya tidak lagi memerlukan kertas coret-coretan untuk membuat suatu program komputer. Namun bagi pemula, pembelajar, atau yang belum mahir, diperlukan kertas coret-coretan tersebut.

Kertas coret-coretan itu akan digunakan untuk menyusun algoritma (langkah-langkah penyelesaian masalah), flowcharting (alur logika perintah, yang merupakan aplikasi dari algoritma), maupun menuliskan perintah sesuai dengan kaidah dari bahasa pemrograman yang akan digunakannya. Sewaktu menyusun algoritma, kita tidak perlu tahu (atau tidak perlumenyesuaikan dengan) bahasa pemrograman yang nanti akan kita gunakan.

Hal utama yang kita pikirkan adalah kaidah (hirarki) dari komputer itu sendiri, yaitu input-proses-output. Input adalah data yang harus ada (sudah ada/ sudah tersedia), yang dapat diproses dengan aturan-aturan tertentu untuk menghasilkan output seperti yang dikehendaki. Data yang ada harus logis (masuk akal) bahwa “ia” dapat diproses untuk menghasilkan output.

Rekursi

Untuk memahami pengertian rekursi, perhatikan contoh sederhana singkatan berikut: GNU. GNU merupakan singkatan dari GNU Not Unix . Mengapa kepanjangannya masih terdapat singkatan GNU lagi? Karena GNU merupakan singkatan rekursif (bersifat rekursi).

Rekursi adalah subroutine yang memanggil dirinya sendiri, baik secara langsungmaupun tidak langsung. Bentuk rekursi merupakan alternatif iterasi atau perulangan. Ada beberapa masalah yang cocok dipecahkan menggunakan teknik rekursi. Akan tetapi,secara umum teknik rekursi biasanya kurang efisien dibandingkan teknik iterasi karenarekursi memanggil dirinya sendiri sehingga menyebabkan waktu pemrosesan lebih lamadisbanding iterasi biasa. Proses reskursi akan menggunakan memori stack. Semakin lama proses rekursi dikerjakan, maka memori stack akan terus berkurang dan akibatnyamemori stack akan habis. Dalam rekursi sebenarnya terkandung pengertian fungsi, perbedaannya adalah rekursi bisa memanggil dirinya sendiri sedangkan fungsi harus dipanggil lewat pemanggil fungsi. Suatu fungsi tidak hanya bisa memanggil fungsi lain, melainkan juga bisa memanggil dirinya sendiri. Pemanggilan dirinya sendiri bisa berarti proses berulang yangtidak bisa diketahui kapan berakhir sehingga dalam rekursi harus ada syarat-syarat berikut:

1.   Ada titik pemberhentian sebagai pengendali rekursi.
2.   Adanya langkah induksi yang menuju pada titik pemberhentian.
Berikut ini adalah contoh program yang menerapkan teknik rekursi, program ini digunakan untuk menghitung bilangan factorial.



#include <stdio.h>int
fact();
main(){
int n, m;
printf(“Masukkan angka: ”);
scanf(“%d”, &n);
m = fact(n);
printf(“Nilai faktorial %d adalah %d. \n”, n, m);
}
int fact(x)
int x;
{



Beberapa hal yang perlu diperhatikan dalam penerapan rekursi

Penghenti rekursi
Proses dalam rekursi harus ada titik akhir. Titik akhir disini merupakan batas dari fungsi untuk tidak lagi memanggil dirinya sendiri sekaligus awal dari proses pemberian nilai pada fungsi tersebut. Dari contoh diatas, fungsi faktorial tidak lagi memanggil dirinya sendiri saat n=0.

Penggunaan memori
Komputer mempunyai ruang memori yang terbatas. Setiap kali fungsi memanggil dirinya sendiri, ia memerlukan tambahan sejumlah memori. Jika proses ini terus menerus, pada akhirnya menyebabkan error 

Efisiensi
Kita hampir selalu dapat menggantikan rekursi dengan loop. Loop tidak memiliki overhead dari pelewatan argumen, inisialisasi penyimpanan tambahan, dan pengembalian nilai. Kinerja program dapat lebih baik tanpa pemanggilan fungsi yang rekursif.

Referensi : 
  1. http://www.scribd.com/doc/51455827/24/Rekursi
  2. http://teguh-cahyono.blog.unsoed.ac.id/files/2010/04/BAB-VII-subritun.pdf

SUBRUTIN PROSEDUR DAN FUNGSI

Definisi

Pemrograman Modular
Sebuah sistem program yang besar dibangun oleh ribuan baris bahkan jutaan baris perintah. Jika hal itu dibuat utuh dalam sebuah program, maka akan muncul beberapa kendala, yaitu:
- Kesulitan membaca logika program
- Kesulitan perbaikan program
- Kesulitan dalam pencarian kesalahan
- Kesulitan pengembangan program
- Kemungkinan banyak perintah yang sama ditulis secara berulang-ulang.
- Pada saat di eksekusi program menjadi lambat karena membutuhkan ruang lebih di dalam memory.
Oleh karena itu program yang besar perlu dipecah menjadi beberapa bagian program (subprogram) yang lebih kecil berupa modul-modul program yang terpisah dari program utama. Modul-modul program ini akan dijalankan dan dikendalikan oleh program utama.
Program yang dibangun oleh beberapa subprogram disebut dengan pemrograman modular

Program utama dipecah menjadi beberapa subprogram agar lebih mudah dikodekan, lebih mudah dipahami serta penghematan dalam penulisan kode program. Selain itu penggunaan memory komputer lebih sedikit sehingga program akan berjalan lebih cepat. Hal ini akan mempermudah dalam melakukan perbaikan program (debugging).

Subprogram 

Sub program adalah bagian program yang berdiri sendiri, tetapi pengontrolannya tetap dilakukan melalui program utama. Sub program dapat berupa prosedur atau fungsi. Dalam subprogram dikenal 2 macam variabel, yaitu:
1. Variabel Lokal
Variabel yang dideklarasikan di dalam sebuah subprogram, dan hanya dikenali di dalam subprogram yang bersangkutan.
2. Variabel Global
Variabel umum yang dideklarasikan di dalam program utama. Memiliki lingkup yang global sehingga dapat dikenali diseluruh bagian program baik di dalam subprogram maupun dalam program utama.

Ciri-ciri subprogram yang baik:
1. Memiliki satu fungsi tujuan (Logical Inherent)
Artinya hanya mengandung satu fungsi saja, tidak tercampur dengan hal-hal/ fungsi yang lain.
2. Tidak tergantung pada subprogram yang lain (Independent)
Dapat dijalankan sendiri-sendiri tanpa harus menunggu modul lain selesai. Selain itu harus di parameterisasi dengan baik, sehingga tidak merusak nilai dari nama variabel yang didefinisikan diluar subprogram tersebut.
3. Berukuran kecil (Small size)
Jika subprogram terlalu besar, harus dibagi-bagi lagi menjadi subprogram yang lebih sederhana.
4. Tidak menggunakan variabel global dalam badan subprogramnya.
Struktur penulisan subprogram (prosedur/ fungsi) hampir sama dengan proram pada umumnya, yaitu terdiri dari tiga bagian: Header (kepala program), Deklarasi (variabel lokal) dan badan program yang diawali BEGIN dan diakhiri dengan END dan tanda titik koma.

 Prosedur

Prosedur merupakan subprogram yang tidak selalu menghasilkan nilai, tetapi menghasilkan suatu efek netto. Efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur.
Suatu prosedur dikenal berdasarkan nama prosedurnya, kemudian diikuti dengan parameter yang ditulis didalam tanda kurung, bila ada. 
Bentuk umum penulisan prosedur:

PROCEDURE nama_prosedur (parameter_formal);
Var
……..
Begin
Pernyataan_1;
Pernyataan_2;
.
.
.
End;

Pemanggilan prosedur:
Prosedur dijalankan dengan cara memanggil namanya dari program utama.
a. Prosedur tanpa parameter
Nama_prosedur;
b. Prosedur dengan parameter
Nama_prosedur (parameter_aktual);


Contoh:
Program luas_persegi_panjang;
Var
P,L :Real;
Procedure Luas_pp (var panjang,lebar :real);
Var
Luas : real;
Begin
Luas:=panjang * lebar;
Writeln(‘Luas Persegi Panjang = ‘, Luas:5:2);
End;

Begin
Write(‘Masukkan panjang=); Readln(P);
Write(‘Masukkan lebar=); Readln(L);
Luas_pp (P,L);
End.

 Fungsi
Fungsi merupakan subprogram yang memberikan/ mengembalikan sebuah nilai tertentu (return value). Nilai hasil dikembalikan ke dalam nama fungsi, oleh karena itu nama fungsi juga sebagai variabel yang memiliki tipe data tertentu.

Bentuk umum penulisan fungsi:
FUNCTION nama_fungsi (parameter_formal) : tipe_data;
Var
……..
Begin
Pernyataan_1;
Pernyataan_2;
.
.
.
{return value}
End;

Pemanggilan fungsi:
Fungsi dijalankan dengan cara memanggil namanya dari program utama. Fungsi pada program utama diperlakukan seperti sebuah variabel yang menampung sebuah nilai hasil fungsi.
a. Fungsi tanpa parameter
Var := Nama_fungsi;
Atau
Writeln (nama_fungsi);
b. Fungsi dengan parameter
Var := Nama_ fungsi (parameter_aktual);
Atau
Writeln (nama_fungsi(parameter_aktual));


Contoh:
Program luas_persegi_panjang;
Var
P,L,Lp :Real;
Function Luas_pp (var panjang,lebar :real):Real;
Var
Luas : real;
Begin
Luas:=panjang * lebar;
Luas_pp := Luas;
End;

Begin
Write(‘Masukkan panjang=); Readln(P);
Write(‘Masukkan lebar=); Readln(L);
Lp := Luas_pp (P,L);
Writeln (‘Luas Persegi Panjang = ‘, Lp:5:2);
End.

Referensi : 
  1. http://teguh-cahyono.blog.unsoed.ac.id/files/2010/04/BAB-VII-subritun.pdf
  2. http://lecturer.eepis-its.edu/~reni/modul%20ajar/praktikum%20shell/PrakSh9.pdf

STRUKTUR PERULANGAN


Perulangan FOR
Digunakan untuk mengulang statemen berulang kali sejumlah yang ditentukan.

1.      STRUKTUR PERULANGAN “FOR”
Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana. Bentuk umum perulangan for adalah sebagai berikut :
for (inisialisasi; syarat; penambahan)
pernyataan;
Keterangan :
¡  Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol.
¡  syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan.
¡  penambahan : pengatur perubahan nilai variabel kontrol.


2.   Perulangan Bersarang
perulangan yang berada didalam perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampau habis, kemudian
perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya dan seterusnya.
Bentuk Umum For Bersarang :

Contoh Program Perulangan FOR Bersarang



Program seleksi_sarang;
Uses Wincrt;   
Var
I,j:integer;
Perulangan
sebanyak j
Begin
For i:=1 to 5 do
Begin
For j:=1 to 3 do
Writeln(I,j:4);
End;
End.



Jika program diatas dijalankan maka perulangan yang akan dilakukan adalah perulangan sebanyak j kemudian melakukan perulangan sebanyak i, seperti terlihat pada tampilan program disamping.



3.    Perulangan WHILE DO
Bentuk umum :
WHILE ungkapan logika DO statemen
Digunakan untuk melakukan proses perulangan suatu statemen terus menerus selama kondisi ungkapan logika pada while masih bernilai logika benar.
Contoh program :
Var
I : integer ;
Begin
I : = 0 ;
While I < 5 do
Begin
Writeln (I);
I : = I + 1 ;
End ;
End.
Output program : 0
1
2
3
4


4.    Perulangan REPEAT UNTIL
Digunakan untuk mengulang statemen sampai kondisi yang diseleksi di Until tidak terpenuhi.

Bentuk umum :
REPEAT statemen UNTIL ungkapan
Contoh program :

Var
I : integer ;
Begin
I : = 0 ;
Repeat
I : = I + 1 ;
Writeln (I) ;
Until I = 5;
End.
Output program : 1
2
3
4
5

Perbedaan antara struktur “ repeat until “ dengan “ while do “ adalah :

- Paling sedikit statemen-statemen dalam repeat until diproses sekali, karena seleksi kondisi ada pada statemen until yang terletak dibawah.

- Pada while do paling sedikit dikerjakan nol kali, karena seleksi kondisi ada pada statemen while yang terletak diatas, sehingga apabila kondisi tidak terpenuhi maka tidak akan masuk ke dalam lingkungan perulangannya.

- Pada repeat until dapat tidak menggunakan blok statemen ( BEGIN dan END ) untuk menunjukan batas perulangannya, karena batas perulangannya sudah ditunjukkan oleh repeat sampai dengan until.



Struktur Percabangan


Percabangan (decision control / branching) adalah suatu kontrol untuk pengecekan yang dilakukan sebelum statemen-statemen dalam sebuah blok PL/SQL dieksekusi. Statemen-statemen tersebut hanya akan dilakukan apabilakondisi yang didefinikan terpenuhi (bernilai TRUE). Dan sebaliknya, statemen-statemen tersebut tidak akan dieksekusi apabila kondisi tidak terpenuhi(bernilai FALSE).

Selain definisi di atas,percabangan juga bisa dikatakan sebagai pemilihan: blok PL/SQL akan memilih statemen-statemen yang akan dieksekusi berdasarkan kondisi yang terpenuhi Secara garis besar, terdapat dua cara untuk melakukan percabangan,yaitu dengan menggunakan statemen IF dan statemen CASE.
Statemen IF
Penggunaan statemen IF dapat diklasifikasikan ke dalam tiga bagian,yaitu struktur untuk satu kondisi, dua kondisi, dan tiga kondisi atau lebih.


1. IF … THEN … ELSE : Pemilihan 2 kasus
Perintah bersyarat If umumnya digunakan untuk melakukan pencabangan sederhana (antara 2 atau 3 cabang). Atau untuk pencabangan yang banyak, dimana kondisi yang menjadi prasyaratnya melibatkan lebih dari satu parameter. Bentuk sintaks dari perintah bersyarat ini adalah:

If <kondisi_pencabangan> then
Begin
… {aksi-1}
end
else
Begin
… {aksi-2}
end;



2. IF … THEN … ELSE : Pemilihan N kasus
If <kondisi_pencabangan1> then
Begin
… {aksi-1}
end
else
If <kondisi_pencabangan2> then
Begin
… {aksi-2}
end
else
Begin
… {aksi-3}
End;

3. Percabangan Select Case

Salah satu model percabangan adalah percabangan index atau yang dikenal dengan pemilihan berindex, dalam visual Basic percabangan index ini menggunakan Select Case dengan format:

Select Case <variable>
Case 0:<Proses untuk keadaan variabel=0>
Case 1:<Proses untuk keadaan variabel=1>
Case 2:<Proses untuk keadaan variabel=2>
Case 3:<Proses untuk keadaan variabel=3>
Case 4:<Proses untuk keadaan variabel=4>
.......................