modul v pemrograman bahasa c ( bagian ii ) · pdf filepemrograman bahasa c ... mengenal dan...
TRANSCRIPT
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();.
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>
struct identitas{
char nama[12];
int usia;
float tinggi;
};
int main()
{
struct 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 ;
}