Bahasa C Operator ini menerma 1 parameter

Teks penuh

(1)

SEJARAH C

Akar dari bahasa C adalah BPCL yang dikembangkan oleh Martin Richards pada tahun 1967, kemudian dikembangkan menjadi bahasa B oleh Ken Thompson pada tahun 1970. Yang dikembangkan lebih lanjut menjadi bahasa C oleh Dennis Ritchie sekitar tahun 1970-an di Bell Telephone Laboratories Inc.

C adalah bahasa standar, artinya suatu program ditulis dengan versi bahasa C tertentu akan dapat dikompilasi dengan versi bahasa C yang lain dengan sedikit modifikasi. Kepopuleran C membuat versi-versi yang banyak untuk komputer mikro. Untuk menstandarisasikannya maka dibentuk komite pada tahun 1983 yang menetapkan standar ANSI untuk bahasa C.

Alasan-alasan Menggunakan Bahasa C

1. Bahasa C tersedia hampir disemua jenis komputer. 2. Kode bahasa C bersifat Portable.

3. Bahasa C hanya menyediakan sedikit Reserved Word. Keandalan C dicapai dengan fungsi-fungsi pustaka.

4. Proses executable program dalam bahasa C lebih cepat. 5. Dukungan pustaka yang banyak.

6. C merupakan bahasa terstruktur.

(2)

STRUKTUR PROGRAM C

Struktur program C dapat dilihat sebagai kumpulan satu atau lebih fungsi-fungsi. Fungsi yang harus ada adalah main( ), karena fungsi ini merupakan titik awal dan titik akhir peng-eksekusian program. Diawali dengan tanda ( { ) dan diakhiri dengan ( } ).

Bentuk umumnya: main() {

Block statement; }

Bahasa C dikatakan sebagai bahasa pemrograman terstruktur, karena strukturnya menggunakan fungsi-fungsisebagai program-program bagian (subroutine). Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakkan di file pustaka (library). Jika Fungsi diletakkan di file library dan akan dipakai pada suatu program maka nama header file- nya harus disertakan didalam program dengan preprocessor directive #include.

Contoh program sederhana: #include <stdio.h> main()

{

printf(“Selamat Datang”); }

Hasilnya:

(3)

Header File

Merupakan file yang berisi prototype (judul, nama, dan sintaks ) dari sekumpulan fungsi-fungsipustaka tertentu, sedangkan fungsi-fungsi pustakanya sendiri disimpan difile pustaka (library file dengan extension .LIB). Cara penulisannya adalah

#include <nama header file> atau

#include “nama header file”

Reserved Word

Bahasa C standar ANSI mempunyai 32 kata kunci dan turbo C menambahkan 7 kata kunci. Katakunci ini tidak dapat digunakan sebagai nama variable atau nama fungsi.

asm * default for pascal * switch

auto do goto register typedef

break double huge * return union

case else if short unsigned

cdecl * enum int signed void

char extern interrupt * sizeof volatile

const far * long static while

continue float near * struct

Tanda * menunjukan tambahan dari turbo C. Bahasa C adalah bahasa yang case sensitive. Huruf kecil dibedakan dengan huruf besar dan semua kata kunci ditulis dalam huruf kecil.

Identifier Name

Merupakan nama yang dibuat oleh programmer untuk pemberian nama variable, konstanta, fungsi atau label. Ketentuan membuat identifier name adalah sebagai berikut:

1. Panjang minimal 1 karakter, maksimaltidak terbatas, tetapi hanya 32 karakter pertama saja yang diperhatikan.

2. Karakter pertama harus berupa huruf atau garis bawah.

3. Tidak diperbolehkan menggunakan karakter khusus dan blank/spasi. 4. Case sensitive, huruf besar dan kecil dianggap beda.

5. Tidak diperkenankan menggunakan kata kunci. Statement-statement

(4)

Empty Statement / Null Statement

Statemen kosong adalah statement yang hanya terdiri dari peng-akhir titik koma saja, sehingga tidak melakukan tindakan apapun. Digunakan untuk membuat perulangan kosong yang dimaksudkan untuk memberi jarak ke proses selanjutnya.

Expression Statement

Statemen ungkapan merupakan statemen yang dibentuk dari ungkapan yang diakhiri dengan titik koma.

Control Statement

Statemen kendali merupakan statemen yang berfungsi untuk mengendalikan proses dari program, dapat berupa proses seleksi kondisi, perulangan atau lompatan. Statemen ini dibentuk dengan menggunakan kata kunci if, switch, do-while, goto, break dan continue.

Coumpound Statement/Block Statement

Statemen jamak adalah statemen yang terdiri dari beberapa statemen tunggalyang ditulis diantara tanda kurung kurawal ( { } )

(5)

C menyediakan 5 macam tipe data dasar, yaitu tipe data integer (numerik bulat dideklarasikan dengan int), floating point (numerik pecahan ketepatan tunggal dideklarasikan dengan float), double precision (numerik pecahan ketepatan ganda dideklarasikan dengan double), karakter (dideklarasikan dengan char) dan kosong (dideklarasikan dengan void).

Untuk int, float, double dan char dapat dikombinasikan dengan pengubah (modifier) signed, unsigned, long, short, maka hasilnya menjadi seperti pada tabel berikut.

TIPE DATA DASAR

TIPE Lebar Jangkauan Nilai

int 16 bit - 32768 s/d 32767

signed int short int

signed short int

unsigned int 16 bit 0 s/d 65535

unsigned short int

long int 32 bit - 2147483648 s/d 2147483649

signed long int

unsigned long int 32 bit 0 s/d 4294967296

float 32 bit 3.4E-38 s/d 3.4E+38

double 64 bit 1.7E-308 s/d 1.7E+308

long double 80 bit 3.4E-4932 s/d 3.4E+4932

char 8 bit - 128 s/d 127

signed char

unsigned char 8 bit 0 s/d 255

Konstanta

Konstanta adalah suatu nilai yang tidak pernah berubah selama proses program. Dibagi menjadi 4, yaitu:

a. Konstanta Numerik Integer

(6)

b. Konstanta numerik pecahan

Merupakan nilai numerik yang dapat mempunyai nilai pecahan dibelakang titik desimal. Dapat bernilai ketepatan tunggal (float), ketepatan ganda (double), atau ketepatan ganda panjang (long double).

c. Konstanta Karakter dan String

Merupakan nilai sebuah karakter yang ditulis diantara tanda petik ganda. Pengertian karakter disini meliputi huruf a-z atau A-Z, digit 0 – 9 karakter khusus dan karakter grafik.

d. Konstanta Karakter Escape

Escape character banyak digunakan di statemen-statemen untuk menampilkan hasil. Konstanta karakter escape diawali dengan tanda ‘ \ ‘.

Karakter Escape Fungsi

\a bunyi bel (bell atau alert) \b mundur 1 spasi (backspace)

\f ganti halaman (form feed) \n ganti baris baru (new line)

\r ke kolom pertama, baris yang sama (carriage return) \t tabulasi horisontal

\v tabulasi vertikal \0 nilai kosong (null)

\’ karakter petik tunggal \” karakter petik ganda

\\ karakter backslash

OPERATOR

Operator adalah suatu tanda atau simbol yang digunakan untuk suatu operasi tertentu. Bahas aC menyediakan operator pengerjaan, operator aritmatika, operator tipe, operator hubungan, operator logika, operator bitwise, operator ternary dan operator koma.

Operator Aritmatika

Operator aritmatika melibatkan 2 buah operand, terkadang operand yang digunakan berbeda tipenya. Untuk menghindari hal-hal yang tidak diinginkan maka kompiler C mempunyai pedoman untuk operand yang berbeda tipe:

(7)

2. Tipe float akan dikonversikan ke tipe double

3. Jenjang tertinggi adalah mulai dari long double, double, long int, unsigned int, dan int. Ini berarti tipe double dioperasikan dengan tipe int akan menghasilkan tipe double.

Operator Fungsi Jenjang

* Perkalian 3

/ Pembagian 3

% Pembagian modulo (Sisa pembagian) 3

+ Penjumlahan 4

- Pengurangan 4

Operator Unary

Operator unary merupakan operator yang hanya menggunakan sebuah operand saja. Operator-operator unary mempunyai jenjang 2.

Operator Fungsi

- Unary minuss

++ Increase dgn penambahan nilai 1 -- Decrease dengan pengurangan nilai 1 (tipe) Cast

sizeof Ukuran operand dalam byte

! unary NOT

~ Komplemen 1 (bitwise NOT)

& Menghasilkan alamat memori operand(operator pointer) * Menghasilkan nilai pengenal dialamatnya(operator pointer)

Operator Pengerjaan Aritmatika

Operator pengejaan digunakan untuk memindahkan nilai dari suatu ungkapan kesuatu pengenal. Operator pengerjaan mempunyai jenjang 14.

Operator Contoh Ekuivalen dengan

(8)

Operator Relasional

Operator hubungan digunakan untuk menunjukkan hubungan antara 2 buah operand. Banyak digunakan untuk penyeleksian kondisi dengan statemen if, do-while, atau while.

Operator Fungsi Jenjang

< Lebih kecil dari 6

<= Lebih kecil atau sama dengan 6

> Lebih besar dari 6

>= Lebih besar atau sama dengan 6

== Sama dengan 7

!= Tidak sama dengan 7

Operator Logika (Logical Operator)

Operator logika digunakan untuk membandingkan logika hasil dari operator-operator hubungan.

Operator Fungsi Jenjang

&& Logika DAN (AND) 11

|| Logika ATAU (OR) 12

Operator Koma (Comma Operator)

Operator koma digunakan untuk menggabungkan beberapa ungkapan dengan proses yang berurutan dari ungkapan sebelah kiri koma ke ungkapan sebelah kanan koma. Operator koma mempunyai jenjang 16.

Operator Bitwise

Operator bitwise digunakan untuk memanipulasi bit-bit nilai data yang ada di memori. Operator-operator ini hanya dapat digunakan untuk tipe data char, int, dan long int.

Operator Fungsi Jenjang

<< Pergeseran bit ke kiri 5

>> Pergeseran bit ke kanan 5

& Bitwise AND 8

^ Bitwise XOR (Exclusive OR) 9

| Bitwise OR 10

(9)

Operator Pengerjaan Bitwise

Operator Contoh Ekuivalen dengan

<<= A <<= 2 A = A << 2 >>= A >>= 2 A = A >> 2

&= A &= 0x1b A = A & 0x1b

^= A ^= 0x1b A = A ^ 0x1b

|= A |= 0x1b A = A | 0x1b

Menampilkan hasil

Prototype dari fungsi-fungsi untuk menampilkan hasil terdapat pada file judul stdio.h bersifat standar yaitu putchar(), puts(), printf(), fprintf() dan conio.h bersifat tidak standar, dalam arti tidak semua kompiler C menyediakan yaitu clrscr(), gotoxy().

Untuk menampilkan hasil tidak terformat digunakan putchar() untuk menampilkan karakter tidak terformat dan puts() untuk menampilkan string tidak terformat. Maksudnya tidak terformat adalah lebar dan bentuk tampilannya tidak dapat diatur.

Sedangkan untuk hasil terformat digunakan perintah printf dengan kode-kode format sebagai berikut ini:

Kode Format Fungsi

%c Menampilkan sebuah karakter %s Menampilkan nilai string

%d Menampilkan nilai desimal integer %i Menampilkan nilai desimal integer

%u Menampilkan nilai desimal integer tidak bertanda %x Menampilkan nilai heksa desimal integer

%o Menampilkan nilai oktal integer %f Menampilkan nilai pecahan

%e Menampilkan nilai pecahan dalam notasi scientific

%g Sebagai pengganti ‘%f’ atau ‘%e’ tergantung mana yang terpendek %p Menampilkan suatu alamat memori untuk pointer

(10)

Fungsi-fungsi pustaka yang digunakan untuk memasukkan data melalui keyboard, prototypenya ada di file judul stdio.h dan conio.h . Fungsi-fungsi yang menggunakan file judul stdio.h yaitu gets() dan scanf(). Sedangkan fungsi yang menggunakan file judul conio.h, yaitu getche(), getchar(), dan getch().

Untuk memasukkan nilai karakter tidak terformat digunakan getche(), getchar() dan getch, tergantung dari karakteristik masing-masing. getche() digunakan jika nilai karakter yang dimasukan tanpa diakhiri dengan penekanan tombol enter, sedangkan jika dengan penekanan tombol enter maka digunakan getchar(), sedangkan jika pemasukkan nilai karakter tidak diakhiri dengan penekanan tombol enter dan karakter yang di input tidak tampak dilayar maka digunaka getch(). Untuk meng-input nilai string digunakan gets().

Untuk meng-input nilai data terformat digunakan perintah scanf(), dengan kode format sebagai berikut:

Kode Format Fungsi

%c Membaca sebuah karakter

%s Membaca nilai string

%d Membaca nilai desimal integer %i Membaca nilai desimal integer %x Membaca nilai heksa desimal integer %o Membaca nilai oktal integer

%f Membaca nilai pecahan

%e Membaca nilai pecahan

%g Membaca nilai pecahan

%h Membaca nilai short integer desimal

PENYELEKSIAN KONDISI

Statement If

Bentuk If tunggal sederhana Sintaks:

if ( kondisi ) statement ;

(11)

contoh:

#include <stdio.h> main()

{

int JumlahAnak;

float GajiKotor, Tunjangan, PersenTunjangan = 0.2; printf (“Gaji Kotor ? ”);

scanf (“%f”, &GajiKotor); printf (“Jumlah Anak ? ”); scanf (“%f”, &JumlahAnak);

if (JumlahAnal > 2) PersenTunjangan = 0.3; Tunjangan = GajiKotor * PersenTunjangan ;

Printf(\nBesarnya Tunjangan = Rp %10.2f\n”, Tunjangan); }

Hasilnya:

Gaji Kotor ? 100000 Jumlah Anak ? 5

Besarnya Tunjangan = Rp 30000.00

Bentuk If tunggal blok statement Sintaks:

if ( kondisi ) {

blok statement; }

(12)

Bentuk If Else Sintaks:

if ( kondisi ) statement1; else

statement2;

Statement setelah kondisi atau statement sesudah else dapat berupa statement kosong, statement tunggal maupun blok statement. statement1 akan dijalankan jika kondisi benar, jika salah maka statement2 yang akan diproses.

Bentuk If..else if…else Sintaks:

if ( kondisi 1) statement1; else if ( kondisi 2 )

statement2; else if ( kondisi 3)

statement3; .

:

else

statement default;

(13)

Bentuk If bersarang ( nested if ) Sintaks:

if ( kondisi 1) if ( kondisi 2) ...

if (kondisi n ) statement; else

statement; ....

else

statement; else statement;

Kondisi yang akan diseleksi pertama kali adalah kondisi yang paling luar (kondisi 1). Jika bernilai benar maka statement setelah else yang terluar ( pasangan dari if yang bersangkutan ) yang akan diproses.

Bentuk If dengan kondisi berupa variable Contoh:

if ( D == 0 )

printf (“Nilai D sama dengan Nol \n”); else

printf (“Nilai D tidak sama dengan Nol \n”);

Bentuk If dengan kondisi Jamak

Beberapa kondisi dapat diseleksi sekaligus dalam statement if dengan menggunakan operator logika AND ( && ), OR ( || ), atau NOT ( ! )

Operator ?

Dapat digunakan untuk menggantikan statement if..else.. Sintaks:

(14)

Jika benar statement1 akan diproses, jika salah statement2 yang akan diproses.

Statement Switch

Statement Switch tunggal Sintaks:

switch ( kondisi ) {

case konstanta1 : statement-statement; break;

case konstanta2 : statement-statement; break;

.... default:

statement-statement; }

Statement nested switch

Yaitu statement switch yang berada didalam switch lainnya. Sintaks:

switch ( kondisi ) {

case konstanta 1 : statement-statement ; switch ( kondisi x ) {

case konstanta 1a : statement-statement ; break;

(15)

statement-statement ; break;

} break;

case konstanta 2 : statement-statement; break;

}

2.9 Perulangan a. Statement for

Sintaks:

for ( inisialisasi; terminasi; iterasi ) statement;

inisialisasi adalah pemberian nilai awal variable untuk perulangan, terminasi adalah pemberian nilai akhir atau batas perulangan, iterasi adalah perubahan variable kontrol (counter).

b. Statement while Sintaks:

while (kondisi ) statement;

Statement dapat berupa statement kosong, statement tunggal maupun blok statement. Proses perulangan akan terus dilaksanakan jika kondisi dalam while masih bernilai benar.

c. Statement do…while Sintaks:

do

(16)

Sedikitnya statement akan diproses sebanyak 1 kali karena seleksi kondisi dilaksanakan diakhir statement.

d. Statement continue

Statement continue akan menyebabkan proses perulangan kembali ke awal perulangan dengan mengabaikan statement setelah statement continue.

e. Statement break

Statement break akan menyebabkan proses keluar dari blok looping atau blok statement pada case.

f. Statement goto label

Digunakan untuk melompat dari satu proses ke proses tertentu didalam program.

Sintaks:

goto label;

2.10 Array (Larik)

Larik adalah kumpulan nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu larik disebut dengan elemen larik yang letak urutannya ditunjukkan oleh suatu subscript atau suatu index yang dimulai dengan index nol.

Larik dapat berdimensi satu (one dimensional array) yang mewakili suatu vektor, larik berdimensi dua (two dimensional array) mewakili bentuk suatu matrik atau tabel, larik berdimensi tiga (three dimensional array) mewakili suatu bentuk ruang atau berdimensi lebih dari tiga.

Suatu larik dapat dideklarasikan dengan menyebutkan jumlah dari elemennya yang dituliskan diantara tanda ‘[ ]’, contohnya:

Int X[5];

Berarti variabel X bertipe integer dan merupakan larik dimensi satu. Contoh larik berdimensi Satu :

(17)

{ float X[3] = {5,3,7}, Total = 0; int I;

for(I=0;I<=2;I++) Total = Total + X[I]; printf(‘Total = %f \n”,Total);

}

Hasilnya:

Total = 15.000000

2.10.1 Larik dimensi dua

Pendeklarasian larik dimensi dua:

int X[3][4];  berarti akan membentuk matrik dengan ukuran 3 baris X 4 kolom

int X[2][3] = {1,2,3,4,5,6}  matrik 2X3

atau larik tidak berukuran seperti : int X[ ][4] = {1,2,3,4,5,6,7,8}  matrik 2X4

Contoh larik dimensi dua: #include <stdio.h> main()

{ int I,J;

float X[3][4] = { 12.34, 34.56, 56.78, 78.90, 23.45, 45.67, 67.89, 89.01, 34.56, 56.78, 78.90, 90.12};

/*Menampilkan dalam bentuk matrik*/ for(I=0;I<3;I++)

{

for(J=0;J<3;J++) printf(“%8.2f”, X[I][J]); printf(“\n”);

} printf(“\n”); }

(18)

12.34 34.56 56.78 78.90 23.45 45.67 67.89 89.01 34.56 56.78 78.90 90.12

2.10.2 Larik string

Hubungan antara nilai larik string dengan nilai larik karakter

Contoh:

#include <stdio.h> main()

{ int I,J;

char Hari[7][10] = {“Minggu”, “Senin”, “Selasa”, “Rabu”, “Kamis”, “Jum’at”, “Sabtu” };

for(I=0;I<7;I++)

{ for(J=0;J<10;J++) printf(“%c”, Hari[I][J]); printf(“\n”); } }

Hasilnya: Minggu Senin Selasa Rabu Kamis Jum’at Sabtu

String Character

(19)

2.11 Pointer

Suatu pointer (variabel penunjuk) adalah suatu variabel yang berisi dengan alamat lokasi suatu memori tertentu. Bahasa C menyediakan 2 buah operator untuk operasi pointer yaitu operator ‘*’ dan operator ‘&’.

Operator ‘*’ digunakan untuk mendapatkan nilai dari operandnya. Operand untuk operator ‘*’ adalah variabel pointer. Dengan kata lain operator ‘*’ digunakan untuk mendapatkan nilai yang berada dialamat memori yang ditunjukkan oleh variabel pointer. Operator ’&’ digunakan untuk mendapatkan alamat memori dari operandnya.

printf(“Nilai variabel X adalah %c \n”, X); printf(“Nilai variabel Y adalah %c \n”, Y); printf(“Nilai variabel Z adalah %c \n”, Z);

printf(“Nilai variabel X berada di alamat %p \n”, Alamat_X); }

Hasilnya:

Nilai variabel X adalah J Nilai variabel Y adalah J Nilai variabel Z adalah J

Nilai variabel X berada di alamat FFDB

Nilai variabel Z didapat dengan mengambil nilai yang berada di suatu alamat memori tertentu yang ditunjukkan oleh variabel pointer Alamat_X sebagai berikut :

(20)

Sedangkan variabel pointer Alamat_X sudah berisi dengan alamat letak dari nilai variabel X sebagai berikut :

Alamat_X = &X;

Dengan demikian berarti variabel Z akan berisi nilai yang sama dengan nilai variabel X.

2.12 Deklarasi Pointer

Variabel pointer dideklarasikan dengan nama variabelnya ditulis dengan diawali karakter asterik. Bentuk umumnya:

Tipe-data *nama-variabel-pointer;

Variabel pointer yang dideklarasikan dapat juga langsung diberikan nilai awal. Variabel pointer harus dideklarasikan dengan tipe yang sesuai dengan tipe data di memori yang ditunjuknya. Misalnya data yang ada dimemori bertipe float(4 byte) dan variabel pointer yang menunjukkan kealamat ini adalah bertipe int(2 byte), maka hanya 2 byte pertama saja yang akan diambil dengan hasil yang tidak sesuai dengan yang diharapkan.

Operasi Aritmatika

Suatu variable pointer dapat ditambahkan atau dikurangi dengan nilai integer (hanya integer saja, tidak untuk yang lain) atau dengan variable pointer lainnya. Operasi penambahan pointer dengan suatu nilai integer merupakan peningkatan nilai pointer yang menunjukkan lokasi nilai data berikutnya (bukan byte berikutnya) dimemori. Misalnya variabel pointer X menunjukkan alamat memori 1000, maka operasi penambahan X+1 menunjukkan alamat 1000+sizeof(X). Jika X bertipe integer maka operasi X+1 akan menunjukkan alamat 1002. Jika X bertipe float, maka operasi X+1 akan menunjukkan alamat 1004.

(21)

1000 1001 1002 1003 1004 1005 1006 1007 ... 1000+2Xn

……

X X+1 X+2 X+3 X+n

Jika X dideklarasikan sebagai float maka operai X+1, X+2, X+3 dst dapat digambarkan sebagai berikut :

1000 1001 1002 1003 1004 1005 1006 1007 1008 ... 1000+4Xn ……

X X+1 X+2 X+n

Operasi pengurangan pointer dengan nilai integer menunjukkan alamat letak data sebelumnya. Misalkan X adalah variabel pointer bertipe int yang menunjukkan alamat 1000, maka operasi X-3 akan menunjukkan alamat 994.

2.13 Operasi File

File adalah sebuah organisasi dari sejumlah record. Masing-masing record dapat terdiri dari satu atau beberapa field. Setiap field terdiri dari satu atau beberapa byte.

Untuk membuka file atau mengaktifkan sebuah file, fungsi yang digunakan adalah fungsi fopen(), dimana file tersebut dapat berupa file biner atau file teks. File biner adalah file yang mempunyai pola penyimpanan di dalam disk dalam bentuk biner, yaitu seperti bentuk pada memori komputer (RAM). Sedangkan file teks adalah suatu file yang mempunyai pola penyimpanan data yang berbentuk karakter. Penambahan yang perlu dilakukan untuk menentukan mode teks atau biner adalah ‘t’ untuk file teks dan ‘b’ untuk file biner.

Prototype fungsi fopen() terdapat di dalam header fungsi “stdio.h”, bentuk umumnya adalah:

File *fopen(char *namafile, char *mode); 1000

(22)

Dimana namafile adalah nama dari file yang akan di buka atau diaktifkan dan mode adalah jenis operasi file yang akan dilakukan terhadap file.

2.13.1 Jenis-jenis Operasi File

Jenis-jenis operasi file adalah sebagai berikut:

 r : menyarankan file hanya dapat dibaca (file yang sudah ada)

 w : menyatakan file baru akan dibuat atau diciptakan (file yang sudah ada akan dihapus)

 a : untuk membuka file yang sudah ada dan akan dilakukan proses penambahan data. Jika file belum ada maka secara otomatis akan dibuat.

 r+ : untuk membuka file yang sudah ada dan akan dilakuakn suatu proses pembacaan dan penulisan.

 w+ : untuk membuka suatu file dengan tujuan untuk pembacaan atau penulisan. Jika file sudah ada maka isinya akan dihapus.

 a+ : untuk membuka file dengan operasi yang akan dilakukan berupa perakaman maupun pembacaan. Jika file sudah ada maka isinya akan dihapus.

Contoh:

pf = fopen(“COBA.TXT”, “w”);

2.14 Menutup File

Untuk menutup file, fungsi yang digunakan adalah fclose(). Prototype fungsi ini terletak di header file “stdio.h”. bentuk umumnya adalah:

int fclose(FILE *pf); atau

int fcloseall(void);

2.15 Melaksanakan Proses File

(23)

putc(int ch, file *fp) dimana,

fp adalah pointer file yang dihasilkan oleh fopen(), dan ch adalah karakter yang akan ditulis

contoh program: #include “stdio.h” #include “conio.h” #define CTRL_Z 26

{ file *pf; /* pointer ke file */

if((pf = fopen(“COBA.TXT”, “w”)) == NULL) /* ciptakan file */ { cputs(“File tak dapat diciptakan !\r\n”);

exit(1); /* selesai */

while((kar=getche()) != CTRL_Z)

putc(kar, pf); /* tulis ke file */

fclose(pf); /* tutup file */

};

untuk membaca karakter dari file, fungsi yang digunakan adalah: getc(file *fp);

dimana

fp adalah pointer file yang dihasilkan oleh fopen().

Fungsi feof() yang digunakan untuk mendeteksi akhir file. Pada saat membaca data foef(file *fp)

Contoh program:

#include “stdio.h” #include “conio.h” void main()

{ file *pf; /* pointer ke file */

char kar; clrscr();

(24)

{ cputs(“File tak dapat dibuka !\r\n”);

exit(1); /* selesai */

while((kar=getc(pf)) != EOF)

putch(kar); /* tampilkan ke layar */

fclose(pf); /* tutup file */

};

Membaca dan Menulis String

Fungsi untuk membaca dan menulis string adalah : fgets() dan fputs() Bentuk Umum :

fgets(char *str, int p, file *fp) fputs(char *str, file *fp)

Membaca dan Menulis Blok Data

Fungsi untuk membaca dan menulis blok data adalah : fread() dan fwrite() Bentuk umum :

fread(void *buffer, int b_byte, int c, file *fp); fwrite(void *buffer, int b_byte, int c, file *fp);

dimana

buffer adalah pointer ke sebuah area di memori yang menampung data yang akan dibaca dari file.

b_byte adalah banyaknya byte yang akan dibaca atau ditulis ke file c adalah banyaknya item dibaca/ditulis.

Membaca dan Menulis File yang Terformat

Jika diinginkan, data bilangan dapat disimpan ke dalam file dalam keadaan terformat. Fungsi yang digunakan adalah:

fprintf(ptr_file, “string control”, daftar argument); fscanf(pts_file, “string control”, daftar argument);

(25)

void main() { FILE *pformat; char jawaban; struct;

{ int x; int y; } koordinat;

/* Buka dan ciptakan file. Periksa kalau gagal dibuka */

if((pformat = fopen(“KOORDINAT.TXT”, “w”)) == NULL) /* buka file */ { cputs(“File tak dapat dibuka !\r\n”);

exit(1); /* selesai */

{ clrscr();

cputs(“Masukkan data koordinat (bilangan integer)\r\n”); cputs(“Format : posisi x posisi y\r\n”);

cputs(“Contoh : 20 30 [ENTER]\r\n”); scanf(“%i %i, &koordinat.x, &koordinat.y); fflush(stdin);

/* Rekam ke file */

fprintf(pformat, %5i %5i\n”, koordinat.x, koordinat.y); cputs(“\r\nMenyimpan data lagi (Y/T) ??”);

jawaban = getche(); }

while(jawaban == ‘y’ || jawaban == ‘Y’); fclose(pformat);

(26)

2.16 File Sequensial

File sekuensial berisi rekord-rekord data yang tidak mengenal posisi baris atau nomor rekord pada saat aksesnya, dan setiap record dapat mempunyai lebar yang berbeda-beda. Akses terhadapnya selalu dimulai dari awal file dan berjalan satu persatu menuju akhir dari file. Dengan demikian, penambahan file hanya dapat dilakukan terhadap akhir file, dan akses terhadap baris tertentu harus dimulai dari awal file.

Fungsi baku yang terkait dengan file sekuensial ini antara lain adalah fprintf,fscanf, dan rewind. Program berikut menyajikan penanganan file sekuensial tentang data nasabah yang berisi tiga field, yaitu nomor identitas (account), nama (name), dan posisi tabungannya (balance) untuk (1) menyajikan yang tabungannya bernilai nol, (2) berstatus kredit, dan (3) berstatus debet. File data tersimpan dengan nama klien.dat.

Contoh program:

#include <stdio.h> void main() {

int request, account; float balance;

char name[25]; FILE *cfPtr;

if ( (cfPtr = fopen("klien.dat", "r+") ) == NULL ) printf("File could not be opened\n");

else {

printf ( "Enter request\n"

"1 - List accounts with zero balances\n" "2 - List accounts with credit balances\n" "3 - List accounts with debit balances\n" "4 - End of run\n? " ) ;

scanf( "%d", &request ); while (request != 4) {

(27)

switch (request) { case 1:

printf ("\nAccounts with zero balances:\n"); while ( !feof(cfPtr) ) {

if (balance == 0)

printf ("%-10d%-13s7.2f\n", account, name, balance); fscanf (cfPtr, "%d%s%f", &account, name, &balance); }

break; case 2:

printf ("\nAccounts with credit balances:\n"); while ( !feof(cfPtr) ) {

if (balance < 0)

printf ("%-10d%-13s7.2f\n", account, name, balance); fscanf (cfPtr, "%d%s%f", &account, name, &balance); }

break; case 3:

printf ("\nAccounts with debit balances:\n"); while ( !feof(cfPtr) ) {

if (balance > 0)

printf ("%-10d%-13s7.2f\n", account, name, balance); fscanf (cfPtr, "%d%s%f", &account, name, &balance); }

printf ("End of run.\n"); fclose(cfPtr);

Figur

Memperbarui...

Referensi

Memperbarui...