Professional Documents
Culture Documents
Bab Vii
Bab Vii
DASAR C II
7.1. Fungsi
Fungsi adalah kumpulan baris perintah (blok program) yang di buat untuk melaksanakan
tugas tertentu, yang tujuanya adalah :
1. Program menjadi lebih terstruktur, sehingga mudah untuk dipahami, mencari
kesalahan kode dan dikembangkan lebih lanjut.
2. Untuk mengurangi penulisan kebali kode yang telah dibuat.
Fungsi memerlukan masukan yang dinamakan argumen atau parameter, yang akan
diolah oleh fungsi. Hasil akhir dari sebuah fungsi adalah sebuah nilai berupa nilai
keluaran fungsi.
Seperti halnya main (), fungsi juga memiliki sintaks untuk hasil kembalian kosong
(void) dan hasil kembalian berupa nilai. Sebagai contoh :
Void Tulis10Kali (void) ; maka nilai keluaran yang dikembalikan ke sistem operasi
setelah file selesai di eksekusi adalah kosong atau tidak ada kembalian.
Contoh Fungsi
1. Contoh Fungsi
#include <stdio.h>
#include <conio.h>
*c= (a*b)/2;
return a*b;
}
void lingkaran(int a, float *c){
*c=phi*(a*a);
int main ()
luas_segitiga=0;
luas_persegi_panjang=0;
luas_lingkaran=0;
scanf("%d",&alas);
scanf("%d",&tinggi);
scanf("%d",&panjang);
scanf("%d",&lebar);
luas_persegi_panjang = persegi_panjang(panjang,lebar);
printf("Masukkan jari-jari:\n");
scanf("%d",&jari_jari);
lingkaran(jari_jari, &luas_lingkaran);
Pendeklarasian Fungsi (fungsi bernilai balik yang banyak digunakan di praktikum ini)
adalah sebagai berikut :
statemen_yang_akan_dieksekusi;
return nilai_balik
Penggunaan return merupakan fungsi dengan nilai balik tertentu yang nantinya dipakai
untuk proses lain di dalam fungsi utama.
statemen…statemen
Karena prototype merupakan sebuah statemen maka harus diakhiri tanda semicolon.
Prototipe fungsi merupakan statemen, sehingga harus diakhiri dengan semi-colon (;).
Prototipe terdiri dari tipe return value, nama dan daftar parameter (dipisahkan dengan
koma).
Contoh : Float luas(float panjang, float lebar);
Prototipe fungsi dan definisi fungsi harus sama dengan return value, nama dan jenis
parameternya. Jika tidak akan ada pesan kesalahan compile-nya. Prototipe dapat dibuata
tanpa menyertakan nama parameter, jadi hanya tipe parameter saja, misalnya:
Float luas(float,float)
Prototipe ini bisa berjalan dan tidak ada masalah (selama sesuai dengan fungsi yang
didefinisikan ). Meskipun demikian, prototipe samacam ini tidak dianjurkan, karena
dengan memberi nama parameter akan memperjelas fungsi dan mempermudah
penelusuran program.
#include <conio.h>
int n,hasil;
scanf("%d", &n);
hasil=faktorial(n);
getch();
int nilai_fak=1;
for(int i=1;i<=n;i++)
nilai_fak=nilai_fak*i;
return(nilai_fak);
}
7.1.3. Hasil Balik Fungsi
Suatu fungsi dibuat untuk maksud menyelesaikan tugas tertentu. Suatu fungsi dapat
hanya melakukan suatu tugas saja tanpa memberikan suatu hasil balik atau melakukan
suatu tugas dan kemudian memberikan suatu hasil balik. Fungsi yang hanya melakukan
suatu tugas saja tanpa memberikan hasil balik misalnya adalah fungsi untuk
menampilkan hasil di layar.
main(){
int i;
Jika suatu fungsi memberikan hasil balik, maka hasil balik yang diberikan oleh fungsi
dapat dilakukan oleh statemen return yang diikuti oleh nilai hasil baliknya yang ditulis
dalam tanda kurung.
Contoh:
Program berikut ini dimaksudkan untuk menghitung n faktorial (n!). Nilai n! adalah
sebesar 1*2*3*…*n dengan n adalah nilai positif. Jika n bernilai negatif atau nol,
maka fungsi Faktorial() di program ini akan memberikan hasil balik 0. Nilai F adalah
nilai hasil balik yang akan diberikan oleh fungsi untuk nilai n positif. Variabel F ini
pertama kali harus diberi nilai awal 1. Jika nilai F mempunyai nilai awal 0, maka
hasilnya akan selalu nol, karena bilangan apapun dikalikan dengan nilai nol
mempunyai hasil nilai nol.
#include
main(){
int n;
Fak = Faktorial(n);
int i;
if(n<=0)
return(0);
return (F);
Nilai dari parameter aktual akan disalin dalam parameter formal, sehingga nilai pada
parameter aktual tidak bisa berubah sekalipun nilai parameter formalnya mengalami
perubahan.
Pada parameter Pass by Value terjadi proses penyalinan (copy) dari parameter formal ke
parameter aktual hal ini menyebabkan variable di dalam fungsi tidak berpengaruh
dengan variable di luar fungsi.
int a, b;
a = 11, b = 22;
tukar(a, b);
gets(0); return(0);
int m;
m = j;
j = k;
k = m;
Dengan melewatkan alamat dari suatu variabel kedalam fungsi. Dengan cara ini isi dari
sebuah variabel dapat diubah diluar fungsi dengan proses perubahan didalam fungsi.
Pada pass by reference variabel yang digunakan dalam fungsi dimasukan ke dalam suatu
alamat memori tertentu. Sehingga variable dalam fungsi tersebut digunakan untuk
proses proses selanjutnya atau fungsi fungsi selanjutnya. Perubahan nilai di dalam
fungsi, akan berpengaruh pada proses lainya, hal ini dikarenakan acuan untuk proses
selanjutnya adalah nilai dari alamat tertentu yang dihasilkan oleh proses fungsi tersebut.
int a, b;
a = 11, b = 22;
tukar(&a, &b);
gets(0); return(0);
int m;
m = *pj;
*pj = *pk;
*pk = m;
7.2. Array
Array merupakan koleksi data dengan setiap elemen data menggunakan nama yang
sama dan masing-masing elemen data bertipe sama. Setiap komponen/elemen array
dapat iakses dan dibedakan melalui indeks array.
Deklarasi array didahului oleh jenis tipe data dari array yang dikehendaki kemudian
nama variabelnya. Sedangkan jumlah elemen ditulis dalam tanda “[ ]”. Bentuk umunya
adalah sebagai berikut :
Int X[5]
Deklarasi di atas berarti array dengan nama variabel X, memiliki tipe data berupa
integer dan memiliki anggota sebanyak 5 buah.
Perbedaan antara array dan variabel biasa adalah sebuah array bisa menyimpan sejumlah
nilai, sedangkan variabel biasa hanya dihubungkan dengan sebuah nilai saja. Jika
diinginkan jumlah data yang banyak dan memiliki tipe yang sama, maka lebih efisien
jika digunakan tipe array.
Contoh Array
1. Menentukan nilai maksimum dari Array
#include <stdio.h>
#include <conio.h>
int nilai[5];
int i, nilai_terbesar;
int main(){
i=1;
while (i<=5){
scanf("%d",&nilai[i]);
i++;
if (nilai_terbesar <nilai[i])
nilai_terbesar=nilai[i];
#include <conio.h>
int main()
{
int I,J;
char hari[7][7]={
"minggu",
"senin",
"selasa",
"rabu",
"kamis",
"jumat",
"sabtu"
};
printf("%c", hari[I][J]);
printf("\n");
}getch();
Aray satu dimensi adalah kumpulan elemen-elemen identik yang tersusun dalam satu
baris.
main()
{
int x[max];
int j;
printf(“x[%d] = “,j);
scanf(“%d”,&x[j]);
#include <stdio.h>
main()
int j;
%2.d\n”,j,x[j],j,y[j],j,z[j]);
Aray dua dimensi adalah array yang memiliki dua buah subskrip yaitu baris dan kolom.
Bentuk umum pendeklarasian array dua dimensi :
#include <conio.h>
int main()
{ int baris, kolom, matriks[3][3];
scanf("%i", &matriks[baris][kolom]);
printf("\n");}
printf("\n");
printf("\n");}
getchar()
7.3. Struct
Struktur merupakan sekumpulan variable yang mungkin terdiri dari beberapa tipe data
berbeda dan dikelompokan dalam satu nama untuk kemudian diakses oleh program.
Tipe data yang dimaksud adalah tipe data dasar termasuk tipe data bentukan seperti
array, pointer, dan juga struktur lain yang telah didefinisikan sebelumnya. Dalam
beberapa bahasa pemrograman lain (misalnya Pascal), struktur sering disebut dengan
istilah rekaman (record).
#include <stdio.h>
#include <conio.h>
int main(){
struct identitas
{
char nama[30];
char nim[9];
char asal[30];
data;
identitas mahasiswa[100];
int j;
printf(" jumlah mahasiswa yang akan di input data (maks 100) : ");
scanf("%d", &j);
printf("\n");
for(int i=1;i<=j;i++)
{
printf("\n Nama : ");
scanf("%s", mahasiswa[i].nama);
scanf("%s", mahasiswa[i].nim);
scanf("%s", mahasiswa[i].asal);
}
printf("\n \n berikut adalah data-data mahasiswa yang telah tersimpan \n \n");
for(int i=1;i<=j;i++)
{
printf("%d. Nama : %s \n", i, mahasiswa[i].nama);
}getch();}
Merupakan sumber atau tujuan dari data yang dihubungkan dengan disk atau peripheral
lainnya. Standart library stdio.h mendukung text stream dan binary stream.
Text stream adalah urutan baris yang tiap barisnya terdiri dari nol atau lebih karakter
yang diakhiri oleh ‘\n”
Fungsi ini akan mengembalikan pinter ke file apabila proses yang dilakukan berjalan
dengan benar. Sebaliknya, apabila gagal, maka fungsi akan mengembalikan nilai
NULL. Berikut ini beberapa factor yang menyebabkan terjadinya kesalahan dalam
proses pembukaan file :
Nama file yang diisikan tidak valid, misalnya nama file mengandung spasi ataupun
tanda lain.
Membuka file dari disk yang belum disiapkan, misalnya disk belum terformat.
Membuka file yang belum terbuat untuk proses pembacaan (mode “r”)
Parameter namafile di atas digunakan untk menunjukan nama file yang akan dibuka
di dalam program. Sedangkan parameter mode digunakan untuk menetukan mode
atau aksi yang akan dilakukan setelah file dibuka. Adapun mode-mode yang telah
didefinisikan untuk fopen dapat dilihat pada tabel berikut :
Mode Keterangan
r File dibuka untuk proses pembacaan (reading). Apabila file belum ada
maka proses gagal dan fungsi fopen () akan mengembalikan nilai
NULL.
w File dibuka untuk proses penulisan (writing). Apabila file belum ada
maka file akan dibuat. Sebaliknya apabila, file yang didefinisikan
sudah ada, maka file tersebut akan dihapus, selanjutnya akan dibuat
file baru (dengan data kosong).
r+ File dibuka untuk proses pembacaan dan penulisan. Apabila file belum
ada maka file akan dibuat. Sebaliknya, apabila file telah ada, maka
data baru akan ditambhkan di bagian awal, yaitu dengan melakukan
penimpaan (overwriting) terhadap data yang sebelumnya telah ada.
w+ File dibuka untuk proses penulisan dan pembacaan. Apabila file belum
ada maka file akan dibuat. Apabila file telah ada makan file tersebut
akan ditimpa (overwriten) dengan file baru.
Fungsi getch ()
Fungsi getch merupakan sebuah proses pembacaan karakter dan menempatkan karakter
di dalam file ke dalam console. Fungsi tersebut hampir sama dengan fungsi getchar,
perbedaanya jika pada getchar adalah membaca input (berupa karakter) dari keyboard ke
dalam program saat running. Sedangkan getc membaca karakter dari dalam file dan
memasukanya dalam running program. Contoh deklarasi getc adalah sebagai berikut :
Fungsi fgets ()
Fungsi ini digunakan untuk membaca suatu baris data yang terdapat di dalam file.
Adapun prototipenya adalah sebagai berikut :
Fungsi fscanf ()
Fungsi fscanf hampir sama dengan scanf (), yaitu mengambil data dengan format
tertentu.
Perbedaanya fungsi fscanf dilakukan terhadap file sedangkan scanf dilakukan terhadap
data yang dimasukan atau dibaca dari keyboard. Prototipe dari fungsi scanf () adalah
sebagai berikut:
Fungsi putc ()
Fungsi putc merupakan kebalikan dari fungsi getc (), yaitu digunakan untuk menuliskan
sebuah karakter ke dalam file. Prototipe fungsi ini adalah sebagai berikut :
Fungsi fputs ()
Fungsi fputs merupakan kebalikan dari fgets, yaitu untuk melakukan penulisan atau
memasukan satu buah baris data ke dalam file. Adapun prototype fputs () adalah sebagai
berikut :
Fungsi fprintf ()
Fungsi fprintf merupakan kebalikan dari fscanf (). Fungsi ini digunakan untuk
menuliskan data dengan format tertentu ke dalam file. Prototipenya adalah sebagai
berikut :
int fprintf (FILE *fp, char *format, …);
Fungsi rename ()
Fungsi ini berguna untuk mengubah nama file dari dalam program. Protipe fungsi ini
adalah sebagai berikut :
Fungsi remove ()
Fungsi ini berguna untuk menghapus file. Contoh programnya adalah sebagai berikut :
#include <stdio.h>
int status;
if (status == 0) {
} else {
return 0;}
Fungsi rename dan remove merupakan fungsi dalam manajemen file, berbeda dengan
fungsi fungsi sebelumnya fungsi ini tidak membutuhkan pointer ke file yang akan
dituju.
Fungsi ini hanya mendeteksi nama file kemudian dimenej, apakah akan diganti dengan
nama tertentu ataupun membuangnya. Sehingga proses ini juga berlaku untuk memenej
folder.
#include <stdio.h>
int main()
{
FILE *fp;
int tekan,a;
char nama_file[20];
while(a=1)
gets(nama_file);
return 0;}
putc(tekan,fp);
fclose(fp);
getch();
return 0 ;
break;
}getch();
#include <stdio.h>
int main()
{
FILE *fp;
char c;
char baca[50];
gets(baca);
if((fp=fopen(baca,"r")) == NULL){
while((c=getc(fp)) != EOF)
putch(c);
fclose(fp);
return 0;
#include <stdio.h>
int main()
FILE *fp;
char c;
char baca[50];
gets(baca);
if((fp=fopen(baca,"w+")) == NULL){
}
printf("\nMasukkan editan ke dalam file %s\n",baca);
putc(c,fp);
fclose(fp);
getch();
return 0 ;
#include <conio.h>
#include <stdio.h>
int main()
{ FILE *fp;
int tekan;
char nama[20];
gets(nama);
remove(nama);
putc(tekan,fp);
getch();
return 0 ;