Kebanyakan program melibatkan media disk sebagai tempat untuk membaca atau merekam data. Data sendiri disimpan dalam disk dalam bentuk suatu kesatuan yang disebut file. Suatu file merupakan organisasi dari sejumlah record. Masing-masing record dapat terdiri atas satu atau beberapa field dan setiap field terdiri atas satu atau beberapa byte. Adapun byte merupakan susunan dari 8 bit.
Tahapan Operasi File
Operasi pada file pada dasarnya meliputi tiga tahapan, yaitu :
1. Membukaimengaktifkan file
2. Melaksanakan proses file
3. Menutup file
Membuka / Mengaktifkan File
Sebelum file dapat diakses (dibaca atau ditulisi), mula-mula file haruslah diaktifkan terlebih dahulu. Untuk keperluan ini fungsi yang digunakan yaitu fopen0. Bentuk deklarasinya adalah sebagai berikut :
FILE *fopen (char *namafile, char *mode);
dengan :
namafile berupa nama dari file yang akan diaktifkan
mode berupa jenis operasi yang akan dilakukan terhadap file
prototipe ada pada file stdio.h
Jenis operasi file dapat berupa salah satu di antara mode berikut :
- r menyatakan file hanya akan dibaca. Dalam hal ini, file yang akan diproses haruslah sudah ada dalam disk pada current directory.
- w menyatakan bahwa file baru diciptakan. Selanjutnya operasi yang akan dilakukan terhadap file adalah operasi perekaman data. Seandainya file tersebut sudah ada dalam disk, isinya yang lama akan terhapus.
- a untuk membuka file yang sudah ada dalam disk, dan operasi yang akan dilakukan adalah penambahan data pada file. Data baru akan ditempatkan di bagian belakang dari file. Seandainya file belum ada, secara otomatis file akan diciptakan terlebih dahulu.
- r+ untuk membuka file yang sudah ada, dan operasi yang akan dilakukan berupa pembacaan serta penulisan.
- w+ untuk membuka file dengan tujuan untuk pembacaan atau penulisan. Jika file sudah ada, isinya akan dihapus.
- a+ untuk membuka file, dengan operasi yang dapat dilakukan berupa perekaman maupun pembacaan. Jika file sudah ada, isinya tak akan dihapus.
Berhasil tidaknya operasi pengaktifan file dapat dilihat pada keluaran fungsi fopen(). Jika keluaran fungsi berupa NULL (suatu makro yang didefinisikan pada file stdio.h), berarti operasi pengaktifan file gagal. Kejadian seperti ini bisa terjadi misalnya saat membuka file dengan mode "r" ternyata file yang dibuka tidak ada dalam disk.
Contoh pemakaian fungsifopen() :
pf = fopen ("COBA. TXT", "w") ;
dengan variabel pf dideklarasikan sebagai berikut :
FILE *pf;
Maksud dari pernyataan pf = fopen ("CO BA. TXT", "w") ; adalah
menciptakan dan mengaktifkan file bernama "COBA.TXT"
dengan mode yaitu "w" (mode penulisan ke file)
dan menempatkan pointer-ke-FILE ke variabel pointer pf
Dengan instruksi di atas, seandainya file "COBA.TXT" sudah ada dalam disk, maka isi file tersebut akan menjadi hilang (data lama akan terhapus).
Bentuk yang biasa dipakai untuk mengaktifkan file beserta pemeriksaan keberhasilannya adalah semacam berikut :
if (pf = fopen ("COBA. TXT", "w") == NULL)
{
printf ("File tidak dapat diciptakan ! \ n") ;
exit (1) ; /* keluar dari program */
}
Mula-mula pf diisi dengan keluaran dari fungsi fopenO. Seandainya nilainya adal NULL (berarti operasi pengaktifan gagal), maka
- pada layar ditampilkan tulisan : File tidak dapat diciptakan !
- program dihentikan (selesai).
Menutup File
Apabila suatu file sudah tidak diproses lagi, maka file tersebut perlu ditutup. Hal seperti ini sangat penting terutama jika melakukan pemrosesan file yang jumlahnya lebih dari satu. Alasannya di antaranya adalah karena adanya keterbatasan jumlah file yang dapat dibuka secara serentak. Untuk menutup file, fungsi yang digunakan adalah fcloseO, dengan bentuk deklarasi sebagai berikut :
int fclose (FILE *pf) ;
dengan prototipe ada pada stdio.h.
Pada waktu pemanggilan fungsi ini, pf haruslah berupa variabel pointer bertipe FILE yang digunakan dalam pengaktifan file. Fungsi fclose0 menghasilkan keluaran berupa nol jika operasi penutupan berhasil dilakukan.
Di samping fcloseO, terdapat pula fungsi bernama fcloseall0 yang digunakan untuk menutup semua file yang sedang terbuka. Bentuk deklarasinya :
int fcloseall (void) ;
Fungsi ini menghasilkan nilai EOF (EOF didefinisikan pada stdio.h, yaitu bernilai —1) jika terjadi kegagalan. Sedangkan bila berhasil, keluaran fungsi berupa jumlah file yang ditutup.
Apabila suatu file sudah tidak diproses lagi, maka file tersebut perlu ditutup. Hal seperti ini sangat penting terutama jika melakukan pemrosesan file yang jumlahnya lebih dari satu. Alasannya di antaranya adalah karena adanya keterbatasan jumlah file yang dapat dibuka secara serentak. Untuk menutup file, fungsi yang digunakan adalah fcloseO, dengan bentuk deklarasi sebagai berikut :
int fclose (FILE *pf) ;
dengan prototipe ada pada stdio.h.
Pada waktu pemanggilan fungsi ini, pf haruslah berupa variabel pointer bertipe FILE yang digunakan dalam pengaktifan file. Fungsi fclose0 menghasilkan keluaran berupa nol jika operasi penutupan berhasil dilakukan.
Di samping fcloseO, terdapat pula fungsi bernama fcloseall0 yang digunakan untuk menutup semua file yang sedang terbuka. Bentuk deklarasinya :
int fcloseall (void) ;
Fungsi ini menghasilkan nilai EOF (EOF didefinisikan pada stdio.h, yaitu bernilai —1) jika terjadi kegagalan. Sedangkan bila berhasil, keluaran fungsi berupa jumlah file yang ditutup.
Arrays
Array adalah menyimpan informasi dimensi. Variabel berisi sepotong informasi, sedangkan
array berisi lebih dari satu sepotong informasi tipe yang sama. Jenis (angka, huruf, dan tipe
user-defined) tidak dapat dicampur
dalam array.
Namun, jenis kompleks ditetapkan pengguna dapat ditampung dalam array, yang memungkinkan Anda untuk menyimpan beberapa
objek dengan berbagai data, berdampingan. Array dapat menjadi salah satudimensi
atau multidimensi. Sebuah array satu dimensi agak seperti baris kotak di memori, di mana
Anda dapat menempatkan nilai-nilai.
Anda dapat mendefinisikan sebuah array satu dimensi demikian:
int nIntegerArray[10];
Contoh ini menyatakan
sebuah variabel tipe
integer yang dapat berisi 10 individu angka, satu setelah other.You dapat mendefinisikan sebuah array satu dimensi
demikian:
Suatu array dua dimensi, di sisi lain, seperti kotak
kotak, seperti postal
sorting pigeonholes. Sekali lagi, masing-masing slot di array
dapat berisi nilai tunggal, tetapi Anda dapat menyimpan
nilai-nilai di atas dan ke bawah, bukan hanya di sepanjang atau ke atas. Jika
membantu,
memikirkan itu seperti papan catur di mana masing-masing
persegi dapat berisi sepotong set.
Jadi anda bisa mendefinisikan sebagai berikut:
int nChessBoard[8][8];
Bahkan, tidak ada batasan yang nyata di luar kapasitas
komputer ke
dimensi array. Anda bisa, misalnya, memiliki tiga dimensi
array
mewakili sebuah kubus nilai sebagai:
int nCube[8][8][8];
Meskipun Anda telah
menyatakan array ini
memiliki dimensi yang
sama pada masing-masing pihak, ini tidak diperlukan. Anda
bisa mendefinisikan array dengan nomor yang berbeda slot dalam satu dimensi
ke yang lain. Sebuah
kotak segi empat lokasi
memori dapat dinyatakan
sebagai berikut:
int nRectangle[8][4];
Jika Anda perlu untuk
referensi lokasi, maka dapat diobati seolah-olah
itu adalah variabel
tunggal
slot dengan menunjukkan indeks ke dalam array menggunakan integer dalam kurung siku setelah nama variabel. Jadi jika Anda ingin menempatkan nilai 3 di lokasi direferensikan oleh [baris, kolom] referensi [4,1], gunakan kode seperti:
slot dengan menunjukkan indeks ke dalam array menggunakan integer dalam kurung siku setelah nama variabel. Jadi jika Anda ingin menempatkan nilai 3 di lokasi direferensikan oleh [baris, kolom] referensi [4,1], gunakan kode seperti:
nRectangle[4][1] = 3;
Catatan dari ini bahwa Anda akan memperlakukan lokasi array [4]
[1] seolah-olah itu
adalah satu
variabel integer. Ini indeks ke array berbasis-nol dengan kata lain, elemen pada akhir array diindeks sebagai dimensi dari array minus satu. Lokasi pertama adalah direferensikan dengan indeks nol.
variabel integer. Ini indeks ke array berbasis-nol dengan kata lain, elemen pada akhir array diindeks sebagai dimensi dari array minus satu. Lokasi pertama adalah direferensikan dengan indeks nol.
Seperti contoh pemrograman kebanyakan, ini paling baik dipahami dalam
beberapa sederhana
baris kode yang digunakan sebagai ilustrasi:
baris kode yang digunakan sebagai ilustrasi:
int nArray[10]; // 10 elements
nArray[0]
= 1; // The first element
nArray[9] = 10; // The last element
Perhatikan bahwa Anda
tidak benar-benar tahu bagaimana komputer
memilih untuk mengakses
atau
mengatur array di memori. Ini hanyalah sepotong memori di mana Anda dapat menyimpan informasi-Anda dapat mendeklarasikan dan akses tanpa mengetahui bagaimana array yang mendasari sedang dimanipulasi.
mengatur array di memori. Ini hanyalah sepotong memori di mana Anda dapat menyimpan informasi-Anda dapat mendeklarasikan dan akses tanpa mengetahui bagaimana array yang mendasari sedang dimanipulasi.
Ada juga beberapa properti khusus yang Anda dapat memanfaatkan saat
menggunakan
array dalam aplikasi Anda. Biasanya array akan menjadi salah satu atau dua dimensi. A array satu dimensi karakter, misalnya, atau dikenal sebagai string. Array dua dimensi yang sering digunakan untuk menyimpan representasi grafis layar.
array dalam aplikasi Anda. Biasanya array akan menjadi salah satu atau dua dimensi. A array satu dimensi karakter, misalnya, atau dikenal sebagai string. Array dua dimensi yang sering digunakan untuk menyimpan representasi grafis layar.
Kelemahan satu dengan
array adalah bahwa mereka statis. Artinya,
Anda tidak dapat mengubah ukuran
sekali program yang telah ditulis. Array dapat menjadi ukuran pada waktu kompilasi, mungkin bersyarat, tapi begitu program ini dibangun, array adalah tetap.
sekali program yang telah ditulis. Array dapat menjadi ukuran pada waktu kompilasi, mungkin bersyarat, tapi begitu program ini dibangun, array adalah tetap.
Hal ini karena ruang yang
dibutuhkan adalah dalam program stack, atau lokal memori. Beberapa compiler
akan menempatkan batas buatan 64KB di stack, yang adalah batas hanya nyata pada
ukuran array yang dapat diumumkan.
Mekanisme untuk berkeliling ini disebut sebagai dinamic array, yang dapat
diubah ukurannya
selama pelaksanaan program. Ini bukan bagian dari bahasa C dan akan perlu dilaksanakan oleh programmer, tetapi itu adalah data yang cukup sederhana struktur untuk melaksanakan dan memanipulasi.
selama pelaksanaan program. Ini bukan bagian dari bahasa C dan akan perlu dilaksanakan oleh programmer, tetapi itu adalah data yang cukup sederhana struktur untuk melaksanakan dan memanipulasi.
Anda akan belajar tentang beberapa jenis array dinamis dan mekanisme lain
di kemudian hari,
tetapi penting untuk diingat bahwa array dinyatakan sebagai bagian dari program ini adalah
kerja statis, dan beberapa tambahan diperlukan untuk memanipulasi memori untuk memberikan
dinamis penyimpanan.
tetapi penting untuk diingat bahwa array dinyatakan sebagai bagian dari program ini adalah
kerja statis, dan beberapa tambahan diperlukan untuk memanipulasi memori untuk memberikan
dinamis penyimpanan.
Enumerated Types
Jenis lain jenis, yang dikenal sebagai tipe enumerasi, memungkinkan Anda
untuk membuat set nilai-nilai yang dirujuk oleh nama, tapi menghitung ke posisi indeks dalam kumpulan itu. Sebagai contoh, Anda mungkin ingin membuat tipe yang ditetapkan pengguna untuk menyimpan hari minggu ini:
enum
week_days {
Mon = 0,
Tue, Wed, Thu, Fri, Sat, Sun
};
Dalam contoh ini, compiler akan memberikan nilai 6 integer 0 sampai dengan hari-hari minggu ini, dalam urutan yang mereka terdaftar. Kemudahan dalam pemrograman istilah adalah bahwa kata Mon user-friendly dapat digunakan dalam program, daripada nilai 0.
Jadi, Anda mungkin menulis kode seperti:
week_days DayOfWeek;
Hal ini mendeklarasikan DayOfWeek variabel sebagai tipe
yang sesuai. Anda dapat
memberikan nilai pada variabel sebagai berikut:
memberikan nilai pada variabel sebagai berikut:
DayOfWeek = Wed;
Karena Anda telah dihitung hari ini untuk bilangan bulat,
Anda juga dapat menggunakan operator standar untuk
memanipulasi mereka. Ini adalah operator yang sama seperti Anda telah melihat dalam bab sebelumnya pada struktur bahasa C. Jika Anda
menambahkan 1 sampai Wed, Anda tiba di nilai Thu,
atau Kamis.
Jika Anda ingin menguji nilai antara Mon dan Jumat (hari kerja, untuk misalnya), istilah mungkin berisi:
((DayOfWeek >= Mon) && (DayOfWeek <= Fri)
Pembaca penuh perhatian akan mencatat beberapa hal. Yang
pertama adalah bahwa contoh ini menggunakan standar built-in operator tipe, yang dimungkinkan oleh kenyataan bahwa yang
disebutkan
tipe sama dengan bilangan bulat. Hal kedua yang perlu
diperhatikan adalah bahwa contoh berisi kondisi individu
dalam tanda kurung.
Hal terakhir yang harus Anda perhatikan adalah penasaran
& & simbol, yang Anda tidak belum datang di dalam
eksplorasi Anda pemrograman dalam buku ini. Aku akan menangani logika laporan di kemudian hari, tetapi untuk sekarang Anda harus puas
dengan mengetahui bahwa itu sarana and.
Contoh berbunyi
sebagai berikut:''hari seminggu lebih besar dari atau sama dengan Senin'' dan''
kurang dari atau sama dengan Jumat'' . Dalam bahasa Inggris., Ini adalah setara Senin
sampai Jumat, inklusif.
Jika pernah perubahan nilai-nilai, semua yang perlu Anda
lakukan adalah mengatur tipe enumerasi-the sisa kode akan tetap bekerja. Anda juga tidak perlu ingat bahwa Jumat telah ditetapkan angka minggu hari 4. Selain itu, Anda dapat menulis kode
yang
membandingkan dua nilai dari jenis yang sama tanpa
khawatir tentang yang mendasari representasi.
Data Types and Variables
menutupi konsep dasar variabel dalam bab sebelumnya saat
Anda melihat
bagaimana mereka dapat diberi nama dan dinyatakan.
Ingatlah bahwa kita bayangkan mereka sebagai nama slot (bayangkan pigeonholes)
dalam memori, dengan tempat yang disediakan bagi setiap bagian data yang Anda ingin untuk menyimpan.
Selain itu, bab yang melihat bagaimana sebuah variabel didefinisikan
dengan menetapkan nama
dan ketik:
dan ketik:
int
nMyNumber; // A simple variable
char
szMyString[255]; // A 255 slot array
char * szString; // Pointer to char’s
Ini disebut deklarasi variabel. Setelah variabel telah dinyatakan, dapat hanya berisi data dari jenis yang tercantum dalam deklarasi. Operasi atas data pada variabel yang akan terbatas pada mereka yang didukung oleh tipe data.
Ingat juga bahwa, untuk memberikan nilai pada variabel, Anda menggunakan
operator penugasan =.
Jadi untuk menetapkan nilai numerik dengan nilai nMyNumber dinyatakan
sebelumnya, Anda
akan menggunakan kode seperti:
nMyNumber = 3;
Pengecualian untuk menggunakan operator penugasan adalah bahwa hal itu tidak bekerja dengan
array. Berikut ini, misalnya, bahkan tidak akan mengkompilasi:
array. Berikut ini, misalnya, bahkan tidak akan mengkompilasi:
szMyString
= "Hello"; // Error
szString = "Hello"; // Error
You can, of course, assign values to
individual elements to achieve this result:
szMyString[0]
= ’H’;
szMyString[1]
= ’e’;
szMyString[2]
= ’l’;
szMyString[3]
= ’l’;
szMyString[4] = ’o’;
Perhatikan bahwa contoh-contoh penggunaan tanda kutip tunggal sekitar nilai
karakter dalam rangka untuk
membedakannya dari sebuah string konstan. Untungnya, seperti yang akan Anda
lihat nanti, C perpustakaan
memberikan manipulasi string lebih baik daripada yang bisa Anda raih dalam satu Laporan beroperasi pada
array.
Namun, ketika mereka diimplementasikan, ada kemungkinan bahwa, pada intinya, mereka beroperasi
pada array karakter dalam memori. Ini adalah contoh lain dari kompleks jenis-satu yang Anda lihat untuk menggunakan slot bernama tunggal, tetapi yang mengandung lebih dari satu bagian dari data. Bahasa lain, bagaimanapun, menyediakan built-in tipe string, tapi di C itu adalah jenis yang ditetapkan pengguna, untungnya didasarkan sekitar spesifikasi ANSI untuk pengolahan itu.
pada array karakter dalam memori. Ini adalah contoh lain dari kompleks jenis-satu yang Anda lihat untuk menggunakan slot bernama tunggal, tetapi yang mengandung lebih dari satu bagian dari data. Bahasa lain, bagaimanapun, menyediakan built-in tipe string, tapi di C itu adalah jenis yang ditetapkan pengguna, untungnya didasarkan sekitar spesifikasi ANSI untuk pengolahan itu.