Prak. Alpro Modul 4

BAB I
PENDAHULUAN

1.1    Latar Belakang
Pengenalan kepada praktikan tentang fungsi dan pendeklarasiannya dalam bahasa C.
1.2    Tujuan
Tujuan mahasiswa mengikuti praktikum Algortima Pemrograman Modul 4 ini adalah :
1.        Praktikan dapat mengetahui pengertian fungsi.
2.        Praktikan dapat mengetahui pendeklarasian fungsi dalam bahasa C.
3.        Praktikan dapat memahami algoritma fungsi.
4.        Praktikan dapat mengaplikasikan fungsi dalam sebuah kasus.
BAB II
DASAR TEORI

2.1    Teori Singkat
Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari program bahasa C berupa fungsi-fungsi, dalam hal ini program dari bahasa C dibentuk dari kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. 
Fungsi banyak digunakan pada program C dengan tujuan :
1.      Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan.  Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi, maka fungsi utama (main()) menjadi lebih pendek, jelas dan mudah dimengerti.
2.      Dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang sama dan dipakai berulang-ulang di program dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi-fungsi. Selanjutnya bagian program yang membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya, tetapi cukup memanggil fungsi-fungsi tersebut.
Pada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut sebagai argumen. Nilai masukan ini akan diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai (disebut sebagai return value atau nilai keluaran fungsi).
Bentuk umum dari definisi sebuah fungsi adalah sebagai berikut :
Keterangan :
·         tipe-keluaran-fungsi, dapat berupa salah satu tipe data C, misalnya char atau int. secara default bertipe int.
·         deklarasi aksi berisi deklarasi variabel (kalau ada) dan statemen-statemen yang akan dilakukan.


BAB III
TUGAS PENDAHULUAN

3.1.  Pertanyaan
1.      Kapankah suatu fungsi dibuat dan digunakan?
2.      Buatlah algoritma untuk membuat bentuk belah ketupat dari deretan angka berdasarkan batas nilai yang dimasukkan melalui piranti masukan dengan menggunakan Fungsi!
Contoh:
Masukkan batas nilai: 4
Hasil belah ketupat deretan angka:

3.      Buatlah algoritma untuk menghitung rumus-rumus persamaaan kuadrat berikut ini:
-       Rumus diskriminan
 -       Rumus mencari akar-akar persamaan ( ; ).
Setiap rumus dijadikan sebuah fungsi tersendiri dengan parameter-parameter yang dimasukkan dari luar fungsi.
Contoh:
Masukkan nilai a : 1
Masukkan nilai b : 4
Masukkan nilai c : 3
Hasil diskriminan (D) : 2
Nilai X1 : -1
Nilai X2 : -3



3.2.  Penyelesaian
1.      Fungsi dibuat dan digunakan ketika kita membuat sebuah program yang terdiri dari beberapa sub-sub bagian yang bertujuan untuk meminimalkan penggunaan memory yang biasa terjadi karena kita menuliskan program berulang-ulang.
2.      Algoritma_belah_ketupat_deretan_angka
Deklarasi :
int isi,batas,bil,temp,temp2,midkir,midkan,seg1,seg2,seg3,seg4,spas1,spas2;
Deskripsi :
printf("Masukan Angka : ");scanf("%d",&bil);
isi=bil-1;
temp=isi;
temp2=isi;

for (batas=1;batas<=isi;batas++){
/*SEGITIGA KIRI ATAS*/
for (spas1=isi;spas1>=batas;spas1--)
printf("%s"," ");
for (seg1=1;seg1<=batas;seg1++)
printf("%d",seg1);
/*SEGITIGA KANAN ATAS*/
for (seg2=batas-1;seg2>=1;seg2--)
printf("%d",seg2);
printf("\n");
}

/*TENGAH*/
for(midkir=1;midkir<=bil;midkir++)
printf("%d",midkir);
for(midkan=bil-1;midkan>=1;midkan--)
printf("%d",midkan);
printf("\n");

for (batas=1;batas<=isi;batas++){
/*SEGITIGA KIRI BAWAH*/
for (spas2=1;spas2<=batas;spas2++)
printf("%s"," ");
for (seg3=1;seg3<=temp;seg3++)
printf("%d",seg3);temp=temp-1;
/*SEGITIGA KANAN BAWAH*/
for (seg4=temp2-1;seg4>=1;seg4--)
printf("%d",seg4);temp2=temp2-1;
printf("\n");
}

/*PROGRAM UTAMA*/
for (batas=1;batas<=isi;batas++){
fungsi bagian_kiri_atas;
fungsi bagian_kanan_atas;
}
fungsi baris_tengah;
for (batas=1;batas<=isi;batas++){
fungsi bagian_kiri_bawah;
fungsi bagian_kanan_bawah;
}
3.      Algoritma_rumus_persamaaan_kuadrat
a.       Masukkan Nilai a, b, c. (a,b,c)
b.      Hitung menggunakan rumus D, X­1, X2.
c.       Tampilkan hasilnya.
float a,b,c;
float Deskriminan() //fungsi deskriminan
   float angka,akar
   angka = (b*b)-(4*a*c)
   akar = sqrt(C)
   printf(Deskriminannya : %.1lf, akar) //akhir fungsi

float X1() //fungsi X1
   if (a!=0)
   float X1
   X1=((-b)+(sqrt((b*b)-(4*a*c))))/(2*a)
   printf(Nilai X1 : %.1lf, X1)
   else printf(Nilai X1 tak terdefinisi karena a bernilai 0) //akhir fungsi

float X2(){ //fungsi X2
   if (a!=0)
   float X2
   X2=((-b)-(sqrt((b*b)-(4*a*c))))/(2*a)
   printf(Nilai X2 : %.1lf, X2)
   else printf(Nilai X2 juga tak terdefinisi karena a bernilai 0) //akhir fungsi

int main(){ //program utama
   printf(=== Program Persamaaan Kuadrat(ax2 + bx + c) ===\n)
   printf(Masukkan nilai a : ) scanf(%f,&a)
   printf(Masukkan nilai b : ) scanf(%f,&b)
   printf(Masukkan nilai c : ) scanf(%f,&c)
   printf(Deskriminan())
   printf( X1())
   printf(X2())


BAB IV
IMPLEMENTASI

4.1.  Kegiatan Praktikum
Pada saat praktikum, kerjakan tugas-tugas berikut ini:
1.      Buat program untuk tugas prepraktikum 2!
2.      Buat program untuk tugas prepraktikum 3!
4.2.  Implementasi Kegiatan Praktikum
1.      #include
int ketupat,batas,angka,temp,temp2;
int tengahkiri,tengahkanan,seg1,seg2,seg3,seg4,spas1,spas2;

int segitigaatas(int bil){
//fungsi
ketupat=bil-1;
temp=ketupat;
temp2=ketupat;
for (batas=1;batas<=ketupat;batas++){ /*SEGITIGA ATAS UTAMA*/
/*SEGITIGA KIRI ATAS*/
for (spas1=ketupat;spas1>=batas;spas1--)
printf(" ");
for (seg1=1;seg1<=batas;seg1++)
printf("%d",seg1);
/*SEGITIGA KANAN ATAS*/
for (seg2=batas-1;seg2>=1;seg2--)
printf("%d",seg2);
printf("\n");
}
} //akhir fungsi segitiga atas

int segitigabawah(int bil){ //fungsi
/*TENGAH*/
for(tengahkiri=1;tengahkiri<=bil;tengahkiri++)
printf("%d",tengahkiri);
for(tengahkanan=bil-1;tengahkanan>=1;tengahkanan--)
printf("%d",tengahkanan);
printf("\n");
for (batas=1;batas<=ketupat;batas++){
/*SEGITIGA KIRI BAWAH*/
for (spas2=1;spas2<=batas;spas2++)
printf("%s"," ");
for (seg3=1;seg3<=temp;seg3++)
printf("%d",seg3);temp=temp-1;
/*SEGITIGA KANAN BAWAH*/
for (seg4=temp2-1;seg4>=1;seg4--)
printf("%d",seg4);temp2=temp2-1;
printf("\n");
}
printf("\n");
} //akhir fungsi segitiga atas

main(){//program utama
printf("=== PROGRAM KETUPAT ANGKA ===\n");
printf("Masukan Bilangan: "); scanf("%d",&angka);
if((angka>=1) && (angka<=9)){
printf("",segitigaatas(angka));
printf("",segitigabawah(angka));
}else printf("diluar tampilan"); //akhir program
}
 2.      #include
#include
float a,b,c;
/*Fungsi Diskriminan*/
float diskriminan(){
float angka,akar;
angka = (b*b)-(4*a*c);
akar = sqrt(angka);
printf("%.1f\n", akar);
}
/*Fungsi X1*/
float x1(){
if (a !=0){
float x1;
x1=(-b+sqrt((b*b)-4*a*c))/(2*a);
printf("%.1f\n", x1);
} else printf("Tidak dapat dikerjakan, karena penyebut 0");
}
/*Fungsi X2*/
float x2(){
if (a !=0){
float x2;
x2=(-b-sqrt((b*b)-4*a*c))/(2*a);
printf("%.1f\n", x2);
} else printf("Tidak dapat dikerjakan, karena penyebut 0");
}
int main(){
scanf("%f", &a);
scanf("%f", &b);
scanf("%f", &c);
printf("\n");
printf("", diskriminan());
printf("", x1());
printf("", x2());
}
 4.3.  Tugas Akhir
1.      Buatlah algoritma dan terjemahkan dalam Bahasa C untuk menghitung bilangan faktorial dengan menggunakan teknik rekursif dan non-rekursif!
4.4.  Penyelesaian Tugas Akhir
1.      Algoritma nya:
·         REKURSIF
-          Input angka
-          Inputan diproses melalui percabangan, jika memenuhi syarat maka akan diteruskan pada fungsi faktorial
-          Jika bukan nol maka fungsi akan memanggil fungsinya sendiri sebanyak angka yang diinputkan
-          Tampilkan hasil proses fungsi.
·         NON REKURSIF
-          Input angka
-          Inputan diproses melalui percabangan, jika memenuhi syarat maka akan diteruskan pada fungsi faktorial
-          Jika bukan nol maka fungsi akan menjalankan tugasnya untuk melakukan looping sampai batas angka yang ditentukan oleh user
-          Tampilkan hasil proses fungsi.

Source code
#include
int faktorial_nonrekursif(int n){ //FUNGSI FAKTORIAL
int a,b;
a=1;
for(b=1; b<=n; b++){
a=a*b;
}
printf("%d\n",a);
}
main(){ //PROGRAM UTAMA
int nilai;
printf("=== PROGRAM FAKTORIAL DENGAN REKURSIF ===\n\n");
printf("masukkan faktorial yang akan dihitung : ");scanf("%d",&nilai);
printf("hasil faktorial : ");
faktorial_nonrekursif(nilai);
}
 #include
int faktorial_rekursif(int n){ //FUNGSI FAKTORIAL
if (n==0)
return 1;
else
return n*faktorial_rekursif(n-1);
}
int main(){ //PROGRAM UTAMA
int nilai;
printf("=== PROGRAM FAKTORIAL DENGAN REKURSIF ===\n\n");
printf("masukkan faktorial yang akan dihitung : ");scanf("%d",&nilai);
printf("hasil faktorial : ");
if (nilai>0)
printf("%d",faktorial_rekursif(nilai));
else
printf("0");
printf("\n");
}


 BAB V
PENUTUP

5.1.  Analisa
Untuk mengoptimalkan kerja dari suatu program, kita harus tahu sintaks-sintaks mana yang harus digunakan dan sintaks mana yang tidak harus dimasukkan ke dalam suatu program. Fungsi ini berguna untuk memanggil suatu statement atau rumus ke dalam program utama tanpa harus menulisnya lagi dalam program utama. Sehingga ini akan memberikan kefektifan dalam membuat suatu program.
5.2.  Kesimpulan
Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Fungsi banyak digunakan pada program C dengan tujuan :
a.       Program menjadi terstruktur 
b.   Dapat mengurangi pengulangan program

0 komentar:

Posting Komentar