Bahasa Pemrograman C || Rekursi ( Deret )

Posted by Didi Setyapramana On 8:17 PM 2 komentar

Contoh-contoh studi kasus dalam bahasa pemrograman C/C++

1. Menghitung sigma barisan bilangan 1+3+5+7+...

Jaawab :

a.       Algoritma dengan pseuducode:


function deret (n)
if n<=0 then return ("Message")
else if n=1 then return 1
else
for i to n do
hasil=hasil+1
end for
end if
end if
end function

b.      Implementasi dalam  Bahasa C/C++

/*Program Menghitung Deret 1+3+5+7+... */
#include <stdio.h>
 
long int deret(int x);
main()
{
int N;
long iint hasil;
printf("Program Menghitung Deret 1+3+5+7+... \n");
printf("Masukkan nilai akhir deret : ");
scanf("%d",&N);
hasil=deret(N);
printf("\n Nilai hasil penjumlahan deret= %d",hasil);
}
 
long int deret(int x)
{
int i;
long int z=0;
printf("Nilai i : ");
for (i=1; i<=x; i=i+2)
{
z+=i;
printf("\n %d",i);
}
return(z);
}


Tampilan program :
 
Program Menghitung Deret 1+3+5+7+...
Masukkan nilai akhir deret : 9
Nilai i :
1
3
5
7
9
Nilai hasil penjumlahan deret = 25


Jika kita meng-inputkan nilai 6 maka :
Nilai i :
1
3
5
Nilai hasil penjumlahan deret = 9

Mengapa nilai 6 tidak muncul dalam iterasi Nilai i?

Program tersebut digunakan untuk menghitung penjumlahan deret bilangan ganjil. Jadi, ketika kita memasukkan nilai 6, program akan menghitung deret tersebut sampai dengan bilangan ganjil yang lebih kecil dari 6 karena 6 bukan bilangan ganjil.

Bedakan program tersebut dengan program dibawah ini :

/*Program menghitung deret 1+3+5+7+... */
#include<stdio.h>
 
long int deret(int x);
main()
{
int N;
printf("Program Menghitung Deret 1+3+5+7+... \n");
printf("Masukkan nilai akhir deret : ");
scanf("%d",&N);
hasil=deret(N);
printf("\n Nilai hasil penjumlahan deret= %d",hasil);
}
long int deret(int x)
{
int i;
static long int z=0;
printf("Nilai i : ");
for (i=1; i<=x; i=i+2)
{
z+=i;
printf("\n %d",i);
}
return(z);
}


Tampilan Program :

Program Menghitung Deret 1+3+5+7+...
Masukkan nilai akhir deret : 5
Nilai i :
1
3
5
Nilai hasil penjumlahan deret = 9


Nilai i :
1
3
5
Nilai hasil penjumlahan deret = 18

Sekilas kita melihat adanya kejanggalan dari hasil keluaran program. Pada awalnya, setelah kita meng-inputkan nilai akhir deret 5, maka program akan menghitung jumlah dari deret bilangan tersebut. Setelah menampilkan hasil perhitungan yang pertama, kita mengembalikan nilai hasil menjadi 0, tetapi mengapa setelah pemanggilan fungsi deret untuk kedua kalinya nilai hasilnya adalah 18 bukan 9?
Kita telah mengenal variabel static yaitu variabel yang tetap menyimpan nilai selama program dieksekusi, nila dari variable ini akan dihapus dari memori jika program diakhiri. Yang menjadi variabel static adalah variabel z yang terdapat dalam fungsi deret. Fungsi ini akan mengembalikan nilai z sebagai hasil dari perhitungan dan akan dikembalikan ke program utama atau main. Sebelum fungsi dipanggil, nilai z adalah 0. Setelah pemanggilan fungsi untuk yang pertama kali, maka nilai z akan berubah menjadi 9, nilai z yang 9 ini tidak akan dihapus dari memori sehingga pada pemanggilan fungsi deret untuk kedua kalinya nilai z telah memiliki nilai 9 yang belum dihapus dari memori sehingga nilai 9 ini akan ikut dijumlahkan.

Untuk dapat memahami tentang variabel static perhatikan contoh program berikut :

/*Program Variabel Static */
#include /,stdio.h>

void f(void);
main()
{
int i=20;
f();
printf("i dalam main()= %d \n",i);
f();
}
 
void f(void)
{
static int i=10;
i++;
printf("i dalam f() = %d \n",i);
}



Tampilan program:

i dalam f()= 11
i dalam main()= 20
i dalam f()= 12 

2 Response for the "Bahasa Pemrograman C || Rekursi ( Deret )"

  1. Opet69 says:

    ok masuk pak eko

  2. Ava luke says:

    Glorious Modular Keyboard in UAE, Mechanical Gaming Keyboard in UAE, Gaming Keyboard in UAE
    https://pcdubai.com/glorious-modular/
    Glorious Modular Keyboard in UAE, Safe Shopping Multiple Payment Options Express Delivery PC Dubai Moneyback Guarantee.
    1634003667204-9

Post a Comment