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.
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 :
Keluaran fungsi fopen() berupa pointer yang menunjuk ke tipe
FILE (pointer to FILE), yaitu tipe struktur yang definisinya ada pada
stdio.h (oleh karena itu program yang menggunakanfopen() harus
melibatkan file stdio.h).
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.
pf = fopen ("COBA. TXT", "w") ;
Maksud dari pernyataan pf = fopen ("CO BA. TXT", "w") ; adalah
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)
Mula-mula pf diisi dengan keluaran dari fungsi fopenO. Seandainya nilainya adal NULL (berarti operasi pengaktifan gagal), maka
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.
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:
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.
Seperti contoh pemrograman kebanyakan, ini paling baik dipahami dalam
beberapa sederhana
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.
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.
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.
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.
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.
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:
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:
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:
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.