Sunday, June 22, 2008

Pemrograman Komputer I Bagian Loop

Perulangan (Loop)

Pada bahasa pemrograman ada sifat yang namanya perulangan. Perulangan merupakan suatu cara bagaimana melakukan sesuatu perintah yang sifatnya berulang tanpa harus mengetikkan perintah yang sama secara berulang-ulang kali. Ambil contoh misal akan melakukan penulisan teks sebanyak 1000 baris apakah harus menuliskan listing sebanyak 1000 baris?? hem.. tentu akan banyak menulis listing bukan, dengan adanya penggunaan perulangan tentu kasus seperti itu akan mudah dilakukan. Perulangan banyak kegunaan, ambil contoh untuk proses pencarian data, proses pengindeksan (mengurutkan), dan proses lainnya.

Perulangan dengan menggunakan perintah for(;;)

Ambil contoh dalam proses penampilan data secara berurutan
Kasus : tampilkan urutan angka dari 1 sampai 51, pertambahan 1 kali
main()
{
int i;

for (i = 0 ; i<51;i++)
{
printf("%d\n",i);
}
}

Kasus : tampilkan urutan angka dari 1 sampai 51, pertambahan 2 kali
main()
{
int i;

for (i = 0 ; i<51;i=1+2)
{
printf("%d\n",i);
}
}

Kasus : tampilkan urutan angka dari 100 sampai 51, langkah beda 5
main()
{
int i;

for (i = 100 ; i>=51;i=1-2)
{
printf("%d\n",i);
}
}

Keterangan:
for (i = 0 ; i<51;i=1+2)
i = 0 <--- tahapan mulai
i<51> <--- tahapan akhir, (<,<=) untuk perulangan maju, (>,>=) untuk perulangan mundur)
i=1+2 <--- banyak langkah, (+) untuk perulangan maju, dan (-) untuk perulangan mundur


Sifat dari perulangan for adalah perulangan yang memiliki tahapan awal dan batasan akhir serta memungkinkan penentuan banyaknya langkah untuk tiap tahapan pada perulangannya.

Perulangan dengan menggunakan perintah do{}while();

Perulangan dengan menggunakan do{} while(); merupakan sifat perulangan yang melakukan perintah perulangan terlebih dahulu kemudian baru melihat kondisinya. Ini digunakan jika pada algoritma yang digunakan untuk perulangan yang memiliki kondisi namun setidaknya harus mengeksekusi 1 perintah didalam perulangan tersebut. Contoh penggunaan

int i;
i = 2 ; //inisialisasi tahapan awal
do{
printf("%d",i);
i=i+2; //langkah tahapan, yaitu 2 nilai
}while(i<1); //kondisi tahapan berlanjut jika nilai i kurang dari 1

Dilihat dari perintah perulangan diatas bahwa kondisi perulangan akan dilanjutkan jika nilai i kurang dari 1, namun perintah diatasnya i ditambah nilai 2 dari i nilai sebelumnya yang sudah bernilai 2, sehingga nilai i selanjutnya bernilai 4, dalam kasus disini perulangan tersebut akan tetap dilakukan walaupun kita tahu bahwa sebelumnya nilai i sebelum perulangan saja sudah bernilai lebih dari 1 dan perlungan tetap dilakukan namun hanya sekali saja. Perulangan akan terus berlanjut jika kondisi yang dilihat masih bernilai true / benar.

Perulangan dengan menggunakan perintah while(){}

Penggunaan while memiliki perbedaan dengan penggunaan do{}while();, yang sebelumnya akan tetap melakukan perulangan walaupun hanya sekali ketika kondisi sudah bernilai false, tapiyang ini akan melakukan pengecekan kondisi terlebih dahulu sebelum melakukan eksekusi perulangan. Contoh penggunaan:

int i;
i = 2 ; //inisialisasi tahapan awal
while(i<1)>
//kondisi tahapan berlanjut jika nilai i kurang dari 1
{
printf("%d",i);
i=i+2; //langkah tahapan, yaitu 2 nilai
}

karena kondisi i nilainya sudah lebih dari 1, maka perulangan tidak mungkin terjadi.

Perulangan eksekusi juga dapat dilakukan secara recursive, perulangan ini sangat jarang sekali digunakan. Kelebihan dari perulangan ini sangat cepat dalam prosesnya, namun memakan banyak resource memori dalam pemakaiannya. Perulangan recursive adalah perulangan yang menggunakan cara pemanggilan fungsi dirinya sendiri atau fungsi lain secara terus menerus dan tentunya harus memiliki kondisi tertentu untuk menghentikan perulangan tersebut agar tidak terjadi memory overflow.

Contoh penggunaan perulangan recursive:

int pangkat(int a,int b)
{
if(b>1)
{
return a * pangkat(a,b-1);
}else {return a;}
}

dilihat dari fungsi tersebut ada baris perintah yang memanggil dirinya sendiri, namun dalam pemanggilan fungsi dirinya sendiri haruslah memiliki kondisi untuk menghentikan proses perulangan yang terjadi.

No comments: