Algoritma Lanjut Pertemuan 3

Download Report

Transcript Algoritma Lanjut Pertemuan 3

Apa itu Fungsi?
1
Sebuah fungsi adalah modul program yang
mengerjakan tugas atau aktivitas yang spesifik dan
mengembalikan sebuah nilai dari tipe tertentu, baik
tipe dasar atau tipe bentukan.
Baik fungsi maupun prosedur, keduanya
merupakan modul program yang ekivalen, namun
pada beberapa masalah ada kalanya kita lebih tepat
menggunakan fungsi ketimbang prosedur,
demikian juga sebaliknya.
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Notasi Algoritmik Fungsi
2
function Nama_Fungsi (input parameter)
{ Berisi penjelasan apa yang dikembalikan fungsi }
DEKLARASI
{ Semua nama yang dipakai di dalam fungsi }
ALGORITMA:
{ Badan prosedur, berisi urutan instruksi }
return ekspresi { Pengembalian nilai yang
dihasilkan fungsi}
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Pemanggilan Fungsi
3
Fungsi dipanggil dari program pemanggil dengan
menuliskan nama_fungsi diikuti dengan parameter
aktual. Nilai yang dikembalikan fungsi dapat
diperlakukan dengan dua cara:
1. Nilai yang dikembalikan oleh fungsi dapat
langsung dimanipulasi.
2. Nilai yang dikembalikan oleh fungsi ditampung
dalam sebuah peubah yang bertipe sama dengan
tipe fungsi.
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Contoh
PROGRAM Genap_Ganjil
{ Menentukan apakah sebuah bilangan genap atau
ganjil }
DEKLARASI
x : integer
function Genap(input n : integer)  int
ALGORITMA:
read (x)
if Genap(x)=0 then
write(‘genap’)
else
write(‘ganjil’)
endif
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
4
Contoh Algoritma Fungsi
function Genap(input n : integer) int
{Mengembalikan 0 jika n genap atau 1 jika ganjil }
DEKLARASI
{tidak ada}
ALGORITMA:
return (n mod 2)
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
5
/* PROGRAM Genap_Ganjil */
{ Menentukan apakah sebuah bilangan genap atau ganjil }
#include <stdio.h>
int Genap(int n);
void main()
{
int x;
cetak ("Ketikkan sebuah bilangan:");baca ("%d",&x);
if (Genap(x)== 0)
cetak ("%d adalah bilangan genap \n", x);
else
cetak ("%d adalah bilangan ganjil \n", x);
}
int Genap(int n)
{
return (n % 2);
}
6
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12fun...
Fungsi Rekursif
7
 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 berulangulang, sehingga di dalam fungsi rekursif harus
diberi suatu kondisi yang dapat mengakhiri
proses rekursi.
 Sebuah contoh yang sering diberikan dalam
rangka membahas fungsi rekursif adalah
menghitung Faktorial .
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Contoh Fungsi Rekursif
8
Misalkan F = faktorial (5)
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Algoritma Program Hitung_Faktorial
9
PROGRAM Hitung_Faktorial
{Menghitung n faktorial, n > 0}
DEKLARASI
n, f : integer
function Fak (input N : integer)  integer
ALGORITMA:
read (n)
if n<0 then
write (warning)
else
f ← Fak (n)
write (n! = f)
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Algoritma Fungsi Faktorial
10
function Fak (input N : integer) integer
{ Mengembalikan nilai N faktorial}
DEKLARASI
faktorial : integer
ALGORITMA:
if N<0 then
return 1
else
faktorial ← N * Fak (N-1)
return (faktorial)
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Mengubah Prosedur menjadi Fungsi
11
 Prosedur yang mempunyai satu buah parameter
keluaran dapat ditulis dengan cara menyatakan
parameter keluaran sebagai nilai yang
dikembalikan oleh fungsi.
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Prosedur Hitung_Luas
12
#include<stdio.h>
void HitungLuas(float alas, float tinggi, float *luas);
void main()
{
int i, N;
float a, t, L;
printf("Masukkan banyaknya segitiga = "); scanf("%d",&N);
for (i=1; i<=N; i++)
{
printf("Masukkan alas segitiga = "); scanf("%f",&a);
printf("Masukkan tinggi segitiga = "); scanf("%f",&t);
HitungLuas(a, t, &L);
printf("Luas segitiga adalah = %.2f \n", L);
}
}
void HitungLuas(float alas, float tinggi, float *luas)
{
*luas = (alas*tinggi)*0.5;
}Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Fungsi Hitung_Luas
13
#include<stdio.h>
float HitungLuas(float alas, float tinggi);
void main()
{
int i, N;
float a, t;
printf("Masukkan banyaknya segitiga = "); scanf("%d",&N);
for (i=1; i<=N; i++)
{
printf("Masukkan alas segitiga = "); scanf("%f",&a);
printf("Masukkan tinggi segitiga = "); scanf("%f",&t);
printf("Luas segitiga adalah = %.2f \n", HitungLuas(a,t));
}
}
float HitungLuas(float alas, float tinggi)
{
return (alas*tinggi)*0.5;
}
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Mengubah Fungsi menjadi Prosedur
14
 Sebuah fungsi dapat dikonversi sebagai prosedur
dengan cara menyatakan nilai yang
dikembalikan oleh fungsi tersebut sebagai
parameter keluaran pada prosedur.
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
Fungsi Genap
#include <stdio.h>
int Genap(int n);
void main()
{
int x;
printf("Ketikkan sebuah bilangan:");scanf("%d",&x);
if (Genap(x)== 0)
printf("%d adalah bilangan genap \n", x);
else
printf("%d adalah bilangan ganjil \n", x);
}
int Genap(int n)
{
return (n % 2);
}
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
15
Prosedur Genap
#include <stdio.h>
void Genap(int n, int *boolean);
void main()
{
int x, boolean;
printf("Ketikkan sebuah bilangan:");scanf("%d",&x);
Genap(x, &boolean);
if (boolean == 0)
printf("%d adalah bilangan genap \n", x);
else
printf("%d adalah bilangan ganjil \n", x);
}
void Genap(int n, int *boolean)
{
*boolean = (n % 2);
}
Sumber Kepustakaan :
abdill01.files.wordpress.com/.../pertemuan-12-
16