Modul V
Pemrograman Bahasa C (
bagian II
)
5.1 Tujuan
Percobaan
1.
Mengenal dan
memahami fungsi (function) dan kegunaanya serta aplikasinya dalam
program sederhana.
2.
Mengenal dan memahami fungsi array-larik dan
kegunaanya serta aplikasi dalam program sederhana.
3.
Mengenal dan memahami struktur (struct) dan
kegunaanya serta aplikasi dalam program sederhana.
4.
Mengenal dan
memahami operasi file dan aplikasinya dalam program sederhana.
5.2 Materi
Percobaan
I.
Fungsi
Fungsi
adalah bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas
tertentu dan letaknya dipisahkan dari bagian program yang menggunakannya.
Fungsi-fungsi merupakan elemen utama dari program bahasa C. program dari bahasa
C dibentuk dari kumpulan fungsi, mulai dari fungsi utama dengan nama main(), fungsi-fungsi pustaka standar,
dan fungsi-fungsi yang dibuat sendiri oleh pemrogram. Fungsi dibuat dengan
tujuan tertentu, diantaranya 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.
Bentuk umum sebuah fungsi adalah sebagai berikut:
tipe_fungsi nama_fungsi(argumen1, argumen2,..){
Tubuh / isi
fungsi
|
.
}
Berikut adalah contoh penggunaan fungsi:
#include <stdio.h>
void
cetakTulisan(void){
printf("Fungsi ini hanya akan
menampilkan tulisan ini.\n");
printf("Selamat Mencoba!!");
}
int main(){
printf("Ini
adalah demo fungsi:\n");
cetakTulisan();
}
Bagian yang bercetak tebal merupakan sebuah fungsi
yang bernama cetakTulisan dengan tipe void dan argumennya adalah void (tanpa
parameter). Fungsi ini akan menampilkan tulisan yang ada pada perintah printf
tersebut. Fungsi ini dipanggil di fungsi utama (main) dengan sintaks:
cetakTulisan();. Sehingga jika ingin menampilkan tulisan serupa, kita tidak
harus menulis perintah printf dan menuliskan tulisannya, tetapi hanya tinggal
memanggil fungsi cetakTulisan();.
a
1. Fungsi
tanpa parameter
Fungsi tanpa parameter tidak memiliki parameter (bisa
dikatakan juga sebagai data input), dan pada argumennya biasa dituliskan void. Contohnya adalah sebagai berikut:
#include <stdio.h>
int panjang,lebar,Luas;
void
cetakLuas(void){
Luas = panjang*lebar;
printf("Luasnya adalah %d",Luas);
}
int main(){
panjang=10;
lebar=5;
cetakLuas();
}
Pada kode di atas terlihat bahwa fungsi cetakLuas
tidak memiliki parameter karena argumennya adalah void.
2. Fungsi
dengan parameter
Fungsi dengan parameter memiliki argument yang bukan
void. Akan tetapi argumennya adalah suatu variable dengan berbagai macam tipe
data. Berikut adalah contoh kodenya:
#include <stdio.h>
void
cetakLuas(int panjang, int lebar){
int Luas;
Luas = panjang*lebar;
printf("Luasnya adalah %d",Luas);
}
int main(){
int p=10, l=5;
cetakLuas(p, l);
}
Terlihat bahwa fungsi cetakLuas memiliki bentuk yang
berbeda dengan contoh sebelumnya. Dalam contoh ini fungsi cetakLuas memiliki
parameter berupa variable panjang dan
lebar yang bertipe integer. Sehingga
saat fungsi tersebut dipanggil di dalam fungsi main(), maka harus dimasukkan
nilai parameter-parameter tersebut (dalam hal ini adalah p dan l).
3. Fungsi
dengan return value
Pada contoh-contoh sebelumnya, fungsi yang dibuat
tidak memiliki nilai kembalian / return value (bisa dikatakan sebagai output
fungsi). Hal ini dikarenakan fungsi tersebut bertipe void. Fungsi dapat
memiliki tipe selain void seperti: int, float, char, double, dan lain-lain
tergantung tipe data yang akan dikembalikan/return. Contoh programnya adalah
seperti di bawah:
#include <stdio.h>
int
cetakLuas(int panjang, int lebar){
int Luas;
Luas = panjang*lebar;
return Luas;
}
int main(){
int p=10, l=5,
L;
L = cetakLuas(p,l);
printf("Luasnya
adalah %d",L);
}
Pada program di atas, tampak bahwa tipe dari fungsi
cetakLuas adalah int. Tipe data
tersebut dipilih karena data yang dikembalikan juga bertipe int, yaitu Luas.
Karena fungsi ini memiliki nilai kembalian (output), maka output tersebut
disimpan di variable L saat
dipanggil di fungsi main(). Dan hasilnya ditampilkan dengan menuliskan perintah
printf di dalam fungsi main().
4. Prototype
fungsi
Secara default sebuah fungsi di dalam bahasa C
dideklarasikan/ditulis sebelum fungsi main. Namun bahasa C memungkinkan
pembentukan fungsi setelah fungsi main. Hal ini dilakukan dengan syarat bahwa
fungsi tersebut sudah dideklarasikan sebelum fungsi main ditulis hal inilah
yang disebut dengan prototipe fungsi. Penulisan prototipe fungsi adalah sebagai
berikut.
#include <stdio.h>
int
cetakLuas(int panjang, int lebar);
int main(){
int p=10, l=5,
L;
L = cetakLuas(p,l);
printf("Luasnya
adalah %d",L);
}
int
cetakLuas(int panjang, int lebar){
int Luas;
Luas = panjang*lebar;
return Luas;
}
Pada contoh di atas, fungsi cetakLuas dideklarasikan
terlebih dahulu tanpa tubuh fungsi. Deklarasi fungsi tersebut ditulis sebelum
fungsi main(). Baru setelah fungsi main(), ditulis tubuh dari fungsi cetakLuas.
Ini merupakan cara kedua untuk membuat suatu fungsi.
II. Array
(Larik)
Array merupakan koleksi data dengan setiap elemen data
menggunakan nama yang samadan masing-masing elemen data bertipe sama. Setiap
komponen/elemen array dapat diakses 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 “[ ]”. Array
dapat berupa satu dimensi maupun banyak dimensi.
1. Array 1
dimensi
Bentuk umunya adalah sebagai berikut :
tipe_data
nama_array [banyak elemen]
misal : 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 penggunaan array adalah sebagai
berikut:
#include <stdio.h>
int main(){
int nilai[4];
//memberi
nilai keempat elemen array nilai
nilai[0]=2;
//array nilai indeks ke 0 bernilai 2
nilai[1]=4;
//array nilai indeks ke 1 bernilai 4
nilai[2]=3;
//array nilai indeks ke 2 bernilai 3
nilai[3]=7;
//array nilai indeks ke 3 bernilai 7
//mencetak
masing2 elemen array
for(int
i=0;i<4;i++){
printf("nilai
ke %d adalah %d\n",i,nilai[i]);
}
}
2. Array
multidimensi
Array multidimensi merupakan array yang memiliki
dimensi lebih dari satu, misalkan array 2 dimensi. Array 2 dimensi (sering
disebut matrix), dapat direpresentasikan sebagai sebuah tabel yang memiliki
baris dan kolom. Bentuk array 2 dimensi adalah sebagai berikut:
tipe_data
nama_array [banyak elemen1][ banyak elemen2]
misal : int X[5][3]
Pada contoh di atas, array 2 dimensi X dapat dikatakan
memiliki baris sebanyak 5 dan kolom sebanyak 3. Sehingga elemen total array X
adalah 5x3 = 15 elemen. Jadi ada 15 nilai yang dapat diisikan ke array X.
Contoh programnya adalah seperti di bawah:
#include <stdio.h>
int main(){
int
matrik[2][3];
//memberi
nilai keenam elemen array nilai
matrik[0][0]=1;
matrik[0][1]=3;
matrik[0][2]=5;
matrik[1][0]=4;
matrik[1][1]=9;
matrik[1][2]=8;
//mencetak
nilai elemen2 aray
for(int
i=0;i<2;i++){
for(int
j=0;j<3;j++){
printf("matrik[%d][%d]
= %d\n",i,j,matrik[i][j]);
}
}
}
3. Array
string
Pada dasarnya tipe data string merupakan array dari
tipe data char. Sehingga untuk membuat array string, maka digunakan array
bertipe char 2 dimensi. Berikut contohnya:
#include <stdio.h>
int main()
{
int I,J;
char
hari[7][7]={
"minggu",
"senin",
"selasa",
"rabu",
"kamis",
"jumat",
"sabtu"
};
for(I=0;
I<7; I++) {
for(J=0;
J<7; J++)
printf("%c",
hari[I][J]);
printf("\n");
}
}
III. 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). Kehadiran struktur akan sangat
membantu untuk menyederhanakan masalah dalam pengaturan data yang realtif
kompleks, karena dalam struktur kita diizinkan untuk mengelompokan data-data
yang saling berhubungan tersebut ke dalam suatu entitas yang terpisah. Dalam
program-program besar, pendefinisian struktur biasanya dilakukan dalam unit
atau file tersendiri secara terpisah.
#include
<stdio.h>
int
main()
{
struct
identitas{
char
nama[12];
int
usia;
float tinggi;
};
identitas
orang;
printf("Nama Anda? ");
scanf("%s",orang.nama);
printf("Usia Anda? ");
scanf("%d",&orang.usia);
printf("Tinggi Anda? ");
scanf("%f",&orang.tinggi);
printf("Nama : %s\n",orang.nama);
printf("Usia : %d tahun\n",orang.usia);
printf("Tinggi :
%.1f",orang.tinggi);
}
Pada
kode di atas, identitas merupakan
tipe data, orang merupakan variable
yang bertipe data identitas.
IV. Operasi
File
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”.
1. Mode dalam
Operasi File
Untuk menguhubungkan sebuah file maka terlebih dahulu
harus dideklarasikan penghubung file yaitu fungsi fopen() untuk membuka file
dan fclose() yang keduanya terdapat dalam header <stdio.h>.
Berikut
prototipe dari pemanggilan file tersebut :
FILE *fopen (char_*namafile, char_*mode)
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 tidak terdapat di dalam direktori yang dimaksudkan. Membuka file yang
belum terbuat untuk proses pembacaan (mode “r”)
Parameter
nama file 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.
2. Fungsi-Fungsi
dalam Operasi File
Berikut fungsi fungsi yang digunakan dalam operasi
file :
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 :
int getc (FILE
*fp);
Fungsi fgets ()
Fungsi
ini digunakan untuk membaca suatu baris data yang terdapat di dalam file.
Adapun prototipenya adalah sebagai berikut :
char fgets (char
str, int n, FILE *fp);
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:
int fscanf (FILE
*fp, char *format, …);
Fungsi putc ()
Fungsi
putc merupakan kebalikan dari fungsi getc (), yaitu digunakan untuk menuliskan
sebuah karakter ke dalam file. Prototipe fungsi ini adalah sebagai berikut.
int putc (int c,
FILE *fp);
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.
int fputs (char
*str, FILE *fp)
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 :
int rename
(const char *oldname, const char *newname );
Fungsi remove ()
Fungsi ini
berguna untuk menghapus file.
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 diatur, apakah akan
diganti dengan nama tertentu ataupun membuangnya. Sehingga proses ini juga
berlaku untuk mengatur folder.
Contoh Operasi Menulis File
#include
<conio.h>
#include
<stdio.h>
int main()
{
FILE
*fp;
int tekan,a;
char
nama_file[20];
while(a=1)
{
puts("nama
file yang diinginkan : ");
gets(nama_file);
if ((fp =
fopen(nama_file,"w")) == NULL) {
printf("tidak
bisa membuat file %s",nama_file);
return 0;}
printf("\nMasukkan
sebarang input ke dalam file %s\n",nama_file);
printf("\ntekan
ctrl+z untuk mengakhiri..\nInput : \n");
while
((tekan=getchar()) !=EOF)
putc(tekan,fp);
fclose(fp);
getch();
return 0 ;
break;
}getch();
}
Contoh Operasi Membaca File
#include
<conio.h>
#include
<stdio.h>
int main()
{
FILE *fp;
char c;
char baca[50];
puts("Nama
file yang ingin dibaca :");
gets(baca);
if((fp=fopen(baca,"r"))
== NULL){
printf("tidak
bisa buka file %s", baca);
}
while((c=getc(fp))
!= EOF)
putch(c);
fclose(fp);
return 0;
}
Contoh Operasi Mengedit dan Menyimpan File
#include
<conio.h>
#include
<stdio.h>
int main()
{
FILE *fp;
char c;
char baca[50];
puts("Nama
file yang ingin diedit :");
gets(baca);
if((fp=fopen(baca,"w+"))
== NULL){
printf("tidak
bisa buka file %s", baca);
}
printf("\nMasukkan
editan ke dalam file %s\n",baca);
printf("\ntekan
ctrl+z untuk menyimpan..\nEditan : \n");
while
((c=getchar()) !=EOF)
putc(c,fp);
fclose(fp);
getch();
return 0 ;
}
Contoh Operasi Menghapus File
#include
<conio.h>
#include
<stdio.h>
int main()
{ FILE *fp;
int
tekan;
char nama[20];
puts("nama
file yang ingin dihapus : ");
gets(nama);
remove(nama);
printf("\ntekan
ctrl+z untuk mengakhiri penghapusan\n");
while
((tekan=getchar()) !=EOF)
putc(tekan,fp);
getch();
return 0 ;
}
Tidak ada komentar:
Posting Komentar