Terlihat pada tab main membutuhkan input x dan y dari keyboard kemudian memanggil prosedur yangs sudah dibuat tadi.
Selasa, 17 April 2012
kelebihan dan kekurangan perulangan rekursif
01.34
No comments
Perulangan rekursif merupakan salah satu metode didalam
pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang
memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya
sendiri.
Kelebihan perulangan rekursif
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi
Kekurangan perulangan rekursif
Tidak bisa melakukan nested loop atau looping bersarang
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum)
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk
Kelebihan perulangan rekursif
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi
Kekurangan perulangan rekursif
Tidak bisa melakukan nested loop atau looping bersarang
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum)
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk
contoh rekursif dan non rekursif
01.30
No comments
Dengan Rekursif
- Dengan Prosedur
- Dengan Fungsi
-
Procedure KALI_REK_P(a,b:integer;var hasil:longint)
begin
if b>1 then KALI_REK_P(a,b-1,hasil);
hasil:= hasil+a;
end;
Function KALI_REK_F(a,b:integer):longint;
begin
if b>1 then
KALI_REK_F := KALI_REK_F(a,b-1)+a
else
KALI_REK_F := a;
end;
- Dengan prosedur
- Dengan fungsi
-
Procedure KALI_BIASA_P(a,b : integer; var hasil : longint);
var i : integer;
begin
hasil := 0;
for i:= 1 to b do hasil := hasil + a;
end;
-
Function KALI_BIASA_F(a,b:integer):longint;
var hasil : longint; i: integer;
begin
hasil := 0;
for i:= 1 to b do hasil := hasil + a;
KALI_BIASA_F := hasil;
-
end;
prosedur dan rekursif
01.28
No comments
PROSEDUR dan FUNGSI REKURSIF
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 :
adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :
Contoh sub program rekursif dalam bahasa Pascal.
Contoh sederhana
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 :
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 :
- meningkatkan readibility, yaitu mempermudah pembacaan program
- 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.
- meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah yang semestinya diulang-ulang.
adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :
- kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau special condition)
- pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)
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).
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.
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
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;
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
Cetakan ke 5
Cetakan ke 4
Cetakan ke 3
Cetakan ke 2
Cetakan ke 1
MENETUKAN NILA SEGITIGA
00.58
No comments
#include <stdio.h>
#include <conio.h>
int main(){
int i,j,
sudut[3];
for (i=0;i<3;i++){
printf("Sudut ke - %d : ",i+1);
scanf("%d",&sudut[i]);
}
int sum;
bool samaKaki = false;
for (i=0;i<3;i++){
sum = 0;
for (j=0;j<3;j++){
if (j != i) {
sum += sudut[j];
}
}
if (sudut[i] == sum){
printf("Segitiga Sama Kaki");
samaKaki = true;
}
}
if (! samaKaki){
printf("Bukan segitiga sama kaki");
}
getch();
return 0;
}
#include <conio.h>
int main(){
int i,j,
sudut[3];
for (i=0;i<3;i++){
printf("Sudut ke - %d : ",i+1);
scanf("%d",&sudut[i]);
}
int sum;
bool samaKaki = false;
for (i=0;i<3;i++){
sum = 0;
for (j=0;j<3;j++){
if (j != i) {
sum += sudut[j];
}
}
if (sudut[i] == sum){
printf("Segitiga Sama Kaki");
samaKaki = true;
}
}
if (! samaKaki){
printf("Bukan segitiga sama kaki");
}
getch();
return 0;
}
PEMBALIK KATA C++ REKURSIF
00.58
No comments
#include<stdio.h>
#define MAX 100
void rekursif_angka_terbalik(int);
main()
{
int i,j,jml=0;
char bil[MAX];
printf("\n=======================");
printf("\n=NAMA : MAHFUZ =");
printf("\n=NIM : 100533405403=");
printf("\n=KELAS : PTI '10 B =");
printf("\n=======================");
printf("\n");
printf("\n^_^Program Pembalik Angka^_^");
printf("\n");
printf("\nMasukkan bilangan yang akan dibalik kawan= ");
gets(bil);
for (i=0;bil[i];i++)
jml=jml++;
printf("\n");
printf("Maka hasilnya adalah= ");
for(j=jml-1;j>=0;j--)
printf("%c",bil[j]);
printf("\n");
}
#define MAX 100
void rekursif_angka_terbalik(int);
main()
{
int i,j,jml=0;
char bil[MAX];
printf("\n=======================");
printf("\n=NAMA : MAHFUZ =");
printf("\n=NIM : 100533405403=");
printf("\n=KELAS : PTI '10 B =");
printf("\n=======================");
printf("\n");
printf("\n^_^Program Pembalik Angka^_^");
printf("\n");
printf("\nMasukkan bilangan yang akan dibalik kawan= ");
gets(bil);
for (i=0;bil[i];i++)
jml=jml++;
printf("\n");
printf("Maka hasilnya adalah= ");
for(j=jml-1;j>=0;j--)
printf("%c",bil[j]);
printf("\n");
}
Langganan:
Postingan (Atom)






