TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2 Dosen: Abdillah, S.Si, MIT Email: abdill01@gmail.com Website: http://abdill01.wordpress.com
Tujuan Mahasiswa mampu menyelesaikan masalah berdasar contoh algoritma penyelesaian masalah dan listing programnya.
1. Menentukan Faktorial Buatlah algoritma dan program C yang membaca nilai N, kemudian memanggil fungsi Faktorial yang menghitung N! = 1 x 2 x 3 x ... x N dan mengembalikan nilai N! Program utama kemudian menampilkan nilai N! tersebut di akhir program.
Algoritma PROGRAM Hitung_Faktorial { Program yang menghitung nilai faktorial } DEKLARASI N : integer function Faktorial (input N : integer) → integer ALGORITMA: read (N) write (N! = Faktorial(N))
Algoritma function Faktorial (input N : integer) → integer { Menghitung nilai N faktorial } DEKLARASI i, faktorial : integer ALGORITMA: faktorial ← 1; for (i←1 to N) do faktorial ← faktorial * i i ← i + 1 return faktorial
#include <stdio.h> int Faktorial(int N); void main() { int N; printf("N = "); scanf("%d", &N); printf("N! = %d \n", Faktorial(N)); } int Faktorial(int N) /* Mengembalikan nilai N faktorial */ int i, faktorial = 1; for (i=1; i<=N;i++) faktorial = faktorial * i; return faktorial;
2. Menentukan Perpangkatan Buatlah algoritma dan program C yang membaca nilai x dan y kemudian memanggil fungsi pangkat yang menghitung perpangkatan xy dan mengembalikan nilai xy. Program juga menampilkan nilai xy tersebut di layar monitor
Algoritma PROGRAM Hitung_Pangkat { Program yang menghitung nilai x pangkat y } DEKLARASI x : integer function Pangkat (input x : integer) → integer ALGORITMA: read (x) write (xy = Pangkat(x))
Algoritma function Pangkat (input x : integer) → integer { Menghitung nilai x pangkat y } DEKLARASI i,y, pangkat: integer ALGORITMA: read (y) pangkat ← 1 for (i←1 to y) do pangkat ← pangkat * x i ← i + 1 return pangkat;
#include <stdio.h> int Pangkat(int x); void main() { int x; printf("x = "); scanf("%d", &x); printf("x pangkat y = %d \n", Pangkat(x)); } int Pangkat(int x) /* Mengembalikan nilai x pangkat y */ int i,y,pangkat = 1; printf("y = "); scanf("%d", &y); for (i=1; i<=y;i++) pangkat = pangkat * x; return pangkat;
3. Menghitung Deret Buatlah algoritma dan program C yang membaca nilai N kemudian memanggil fungsi deret yang menghitung 1 + 2 + 3 + ... + N dan mengembalikan nilai penjumlahan deret. Program juga menampilkan nilai penjumlahan deret tersebut di layar monitor.
Algoritma PROGRAM Hitung_Deret { Program yang menghitung nilai deret } DEKLARASI N : integer function Deret (input N : integer) → integer ALGORITMA: read (N) write (Jumlah deret N = Deret(N))
Algoritma function Deret (input N : integer) → integer { Menghitung nilai deret N } DEKLARASI i, deret : integer ALGORITMA: deret ← 0; for (i←1 to N)do deret ← deret + i i ← i + 1 return deret;
Fungsi Rekursif Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Jadi di dalam fungsi tersebut terdapat suatu baris program yang memanggil dirinya sendiri. Proses rekursi tersebut terjadi secara berulang-ulang, sehingga di dalam fungsi rekursif harus diberi suatu kondisi yang dapat mengakhiri proses rekursi. Menghitung Faktorial merupakan sebuah contoh yang sering diberikan dalam rangka membahas fungsi rekursif.
Algoritma Program Hitung_Faktorial {Menghitung n faktorial, n > 0} DEKLARASI n, f : integer function Faktorial (input N : integer) integer ALGORITMA: read (n) if n<0 then write (warning) else f ← Faktorial (n) write (n! = f)
Algoritma Fungsi Faktorial function Faktorial(input N : integer) integer { Mengembalikan nilai rekursif N*Faktorial(N-1) } DEKLARASI F : integer ALGORITMA: if N0 then return 1 else F ← N * Faktorial (N-1) return (F)
#include <stdio.h> int Faktorial(int N); void main() { int f, n; printf("Masukkan suatu bilangan bulat : "); scanf("%d",&n); if (n<0) printf("Bilangan harus positif!"); } else { f = Faktorial(n); printf("Nilai %d! adalah : %d", n, f); }
int Faktorial(int N) { int F; if (N<=1) return(1); else { F = N * Faktorial(N-1); return(F); }