Anda di halaman 1dari 12

Laporan Akhir Praktikum

Algoritma dan Komputasi Numerik

- AKN – 3 -
FUNGSI

Nama : Adi Sugiarto


NPM : 140310160037
Hari/Tanggal : Kamis, 23 Maret 2017
Waktu : 10.00 – 12.00 WIB
Asisten : M. Abduh Bani S.

LABORATORIUM KOMPUTER
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
2017
1

V. Tugas Praktikum
5.1 Fungsi Tanpa Menghasilkan Nilai
a. Listing Program
/* program 1 - fungsi tanpa menghasilkan nilai */
#include <stdio.h>
int hapus(), garis();
main ()
{

hapus ();
garis ();
printf ("\nLaboratorium Komputer");
printf ("\nPraktikum Algoritma dan Pemrograman");
printf ("\nPraktikum IV Penggunaan Fungsi");
printf ("\n");
printf ("\nJurusan Fisika");
printf ("\nFakultas Matematika dan Ilmu Pengetahuan Alam");
printf ("\nUniversitas Padjadjaran");
printf ("\n2014\n");
garis ();
}
garis ()
{
int i, j;
printf ("\n");
for (i=1; i<=2; ++i)
{
for (j=1; j<=50; ++j)
printf ("*");
printf ("\n\a");
}
}
hapus ()
{
int i, j;
printf ("\n");
for (i=1; i<=25; ++i)
{
for (j=1; j<=110; ++j)
printf (" ");
printf ("\n\a");
}
}
2

b. Tampilan Program

c. Analisis Program
Program ini awal nya tidak dapat berjalan karena fungsi garis () dan
hapus () tidak di deklarasika dengan prototipe fungsi untuk mengenali fungsi-
fungsi yang dibuat dalam program. Dalam program ini digunakan fungsi garis
() yang berfungsi untuk membuat garis berupa bintang yang telah diinput
dalam program, dan fungsi hapus () apabila di hilangkan maka pada tampilan
program tidak akan muncul jeda beberapa baris pada statement yang diawali
pada garis berupa bintang.
for (i=1; i<=2; ++i) statement yang berada pada fungsi garis () ini
digunakan untuk menentukan jumlah baris pada bintang, pada program ini
3

banyak nya baris adalah 2. Ini berlaku seperti struktur pengulangan seperti
biasa. for (j=1; j<=50; ++j) sedangkan fungsi ini berguna untuk menentukan
jumlah bintang yang akan dimunculkan dalam satu baris.
Lalu pada fungsi hapus () terdapat struktur for (i=1; i<=25; ++i) yang
berfungsi untuk menentukan jumlah enter sebanyak yang diinginkan. Pada
program ini adalah sebanyak 25.

5.2 Menggunakan Fungsi Dalam Libary


a. Listing Program
/* Program 2 - Menampilkan Tabel sin, cos dan tan */
#include <stdio.h>
#include <math.h>

float rad (int a) {


return (a * M_PI / 180);
}
main()

{
float a, x, y, z, i;
a= 0;
printf("Sudut\t Sin\t Cos\t Tan\n");
while (a<=360){
i= rad (a);
x= sin(i);
y= cos(i);
z= tan(i);
printf("%.f\t %.2f\t %.2f\t %.2f\n", a, x, y, z);
a= a+5;
}
}
4

b. Tampilan Program

c. Analisis Program
Untuk membuat program yang menampilkan penggunaan fungsi
matematika yaitu sin, cos dan tan seperti program ini, kita harus menambahkan
header baru atau header lain yaitu #include <math.h>, header inni berguna
untuk membaca variabel atau komponen matematis pada progra ini berupa
simbol-simbol trigonometri. Program ini menggunakan fungsi nilai balik
karena menggunakan tipe data yang bukan void sehingga akan menghasilkan
nilai pada programnya. Pada listing terdapat sintaks M_PI yang merupakan
sintaks untuk memanggil nilai phi, nilai ini akan otomatis diproses pada
program tanpa harus di deklarasikan terlebih dahulu karena pada program
digunakann header #include <math.h>.
Struktur while juga digunakan untuk menentukan rentang nilai yanng
diulang dengan penambahan nilai sebanya 5 hingga memenuhi nilai 360. Nilai
variabel a juga harus sama dengan nol agar perhitungan dimulai dari nol.
5

5.3 Fungsi yang Menghasilkan Nilai


a. Listing Program
/* Program 3 - Deret Fibonacci */
#include <stdio.h>

float fibonacci (int a, int b)


{
return (a+b);
}

main ()
{
/* deklarasi variabel */
int i, N, bil1, bil2, bil3;
/*input N bil1, dan bil2*/
printf ("Masukkan banyaknya bilangan yang akan ditampilkan :
"); scanf ("%d", &N);
printf ("\nMasukkan blangan pertama : "); scanf ("%d",
&bil1);
printf ("\nMasukkan blangan kedua : "); scanf ("%d", &bil1);
/* Menampilkan bilangan 1 dan bilangan 2*/
printf ("%d, %d,", bil1, bil2);
for (i=1; i<=N; i++)
{
bil3 = fibonacci (bil1,bil2);
printf ("%d,", bil3);
bil1 = bil2;
bil2 = bil3;

}
printf ("\n");
return 0;
}

b. Tampilan Program
6

c. Analisis Program
Fibonacci merupakan deret yang bilangan berikutnya merupakan
penjumlahan dua bilangan sebelumnya. Pada program ini digunakan tipe data
float dengan parameter yang digunakan adalah a dan b yang bertipe integer.
Program ini dimulai dengan melakukan deklarasi pada variabel yang akan
digunakan. Program ini juga merupakan program yang menngandung fungsi
dengan nilai balik berupa deret fibonacci. Setelah menginput banyak nya deret
yang akan ditentkan sebanyak N maka program akan melanjut kan proses
berikut nya yaitu menanyakan berapa nilai yang akan dimasukan. Cukup dua
nilai saja yang harus diinput karena pada program ini digunakan sttruktur
pengulangan pada sintaks printf ("%d, %d,", bil1, bil2); for (i=1; i<=N;
i++). Yaitu pada statement didalam printf uang berupa deret bilangan akan
diulang sebnyak N karena telah melalui proses kondisi pada struktur for.
Kemudian pada sintaks bil3 = fibonacci (bil1,bil2); merupakan pemanggilan
fungsi fibonacci yang akan dikembalikan pada return (a+b), yaitu 2 bilangan
bulat yang dimasukkan akan diakumulasikan untuk ditaruh pada deret setelah
dua bilangan ulat tersebut.

5.4 Pointer dan Fungsi


a. Listing Program
/* Program 4 - Menghitung Luas Persegi */
#include <stdio.h>
/* deklarasi fungsi */
void luaspersegi (int *);

main ()
{
int sisi;
printf ("Input panjang sisi persegi : "); scanf ("%d",
&sisi);
luaspersegi (&sisi);
printf ("Luas persegi adalah %d \n", sisi);

void luaspersegi (int *ptr_sisi)


{
*ptr_sisi = *ptr_sisi * *ptr_sisi;
}
7

/* program 4 modifikasi - volume kubus */


#include <stdio.h>
/* deklarasi fungsi */
void volumekubus (int *);

main ()
{
int sisi;
printf ("Input panjang sisi kubus : "); scanf ("%d", &sisi);
volumekubus (&sisi);
printf ("volume kubus adalah %d \n", sisi);

void volumekubus (int *ptr_sisi)


{
*ptr_sisi = *ptr_sisi * *ptr_sisi * *ptr_sisi;
}

b. Tampilan Program

c. Analisis Program
Pointer merupakan variabel yang mewakili suatu alamat, pada program ke
4 digunakan pointer untuk menuju suatu parameter yang dituju dalam suatu
fungsi. Disini fungsi yang digunakan adalah int luaspersegi (int *); tanda
bintang menyatakan alamat yang akan dituju jika kita membutuhkannya. Pada
program ini terdapat pada sintaks luaspersegi (&sisi), dimana sintaks &
berfungsi sebagai penunjuk alamat agar dapat dikembalikan pada fungsi yang
dituju. Namun jika pada sintaks luaspersegi (&sisi) tidak diberi tanda & maka
8

hal ini tidak akan membuat program menuju ke parameter yang mengandung
sintaks * pada suatu fungsi. Kemudian setelah dialamatkan dengan sintaks &,
maka parameter yang berkaitan setelahnya harus ditambah dengan tanda * juga
sebagai penunjuk bahwa telah dilakukan pengalamatan pada program.
Jika kita hendak menghitung volume kubus maka pada program hanya
perlu pengubahan sedikit yaitu pada penamaan fungsi, pemanggilan fungsi dan
operasi yang dilakukan, karena perhitungan volum kubus melibatkan perkalian
3 sisi.

VI. Tugas Akhir


1) Tugas Akhir 1
a. Listing Program
/* Tugas Akhir 1 - Kombinasi Permutasi */
#include <stdio.h>

int faktorial_n(int n)
{
if(n==0)
return 1;
else
return n*faktorial_n(n-1);
}

int faktorial_r(int r)
{
if(r==0)
return 1;
else
return r*faktorial_r(r-1);
}

int faktorial_x(int x)
{
if(x==0)
return 1;
else
return x*faktorial_x(x-1);
}

main()
{
int n,p,c,r,x;
printf("Program Kombinasi - Permutasi\n");
printf("Masukan nilai n = ");
scanf("%d",&n);
printf("Masukan nilai r = ");
9

scanf("%d",&r);
if(n>r)
{
x=n-r;
c=faktorial_n(n)/(faktorial_r(r)*faktorial_x(x));
p=faktorial_n(n)/faktorial_x(x);
printf("\nHasil kombinasi = %d",c);
printf("\nHasil permutasi = %d",p);
}
else
printf("\nNilai n harus lebih besar daripada r");
}

b. Tampilan Program

c. Analisis Program
Digunakan statement if pada program ini sesuai dengan kondisi yang akan
dimasukkan. Fungsi pada program ini terletak diatas fungsi utama, dimana
nama-nama dari fungsi buatan tersebuat adalah faktorial dengan parameter a
dan b dengan tipe data integer, permutasi dengan parameter c dan d yang
bertipe integer dan combinasi dengan parameter e dan f yang bertipe integer.
Semua fungsi buatan yang terdapat dalam program ini bertipe data sama
yaitu integer dan semuanya juga merupakan fungsi berjenis fungsi dengan nilai
balik atau fungsi yang menghasilkan nilai.
10

2) Tugas Akhir 2
a. Listing Program
/* Tugas Akhir 2 - Nilai Pi */
#include <stdio.h>
float deret(float n, int i);

main()
{
float i,pi=0;
int n,x;
printf("Banyaknya jumlah deret yang dihitung : ");
scanf("%ld",&x);
for(n=i=1;n<=x;n++,i++)
pi=deret(n,i);
printf("Nilai pi = %.15f",pi);
}

float deret(float n, int i)


{
float nilai,pi;
if(i%2==1)
{
nilai=4/(2*n-1);
pi=pi+nilai;
}
else
{
nilai=4/(2*n-1);
pi=pi-nilai;
}
return pi;
}

b. Tampilan Program
11

c. Analisis Program
Tipe data float digunakan pada program ini karena akan dimunculkan nilai
phi. Program ini didasarkan pada program-program sebelumnya yaitu dengan
menggunakan fungsi buatan pada awal program dan pengkondisian jenis if.

VII. Kesimpulan
1. Fungsi adalah suatu blok yang digunakan untuk melakukan perintah-
perintah tertentu dalam bahasa C. Fungsi digunakan sebagai suatu alat
untuk membuat program lebih modular atau tersusun. Sehingga akan
mempermudah dalam melakukan pengoperasian baik yang menghasilkan
nilai ataupun tanpa menghasilkan nilai.
2. Fungsi dapat digunakan dengan cara membuat sendiri fungsi tersebut
dengan menggunakan ketentuan unum struktur fungsi yaitu tipe_data
nama_fungsi (parameter) { statement ; }.
3. Pointer digunakan sebagai pengalamatan kepada suatu parameter. Pointer
adalah variabel yang mewakili suatu alamat.