File seringkali digunakan untuk menyimpan data agar data tidak hilang. Data atau yang ada dan dihasilkan pada program akan hilang ketika program diakhiri, sehingga file digunakan untuk menyimpan data tersebut. Ada dua jenis file yaitu file program dan file data. File program berisi kode-kode program sedangkan file data hanya berisi data. File data terdiri dari dua jenis yaitu file data berurutan (sequential data file) dan file data acak (random-access data file). Perbedaan utama dari kedua jenis file data ini adalah dapat dilihat pada tabel berikut.

1. Algoritma Penulisan Data pada File
Algoritma yang digunakan untuk penulisan data untuk file data berurutan maupun acak secara prinsip sama, hanya modusnya yang berbeda. Berikut ini adalah algoritma penulisan data dalam SE.
Open "modus", <buffer number>, "nama file data"
Write <record number>, field 1, field 2, .. field n
Close buffer number
Modus O menunjukkan file ini dibuka untuk ditulisi.
Contoh 5.25. Contoh penerapan algoritma penulisan data
Misalkan kita punya file data dengan nama "siswa.dat" yang field-nya adalah nama siswa, alamat, nomor telepon. Maka untuk menuliskan data adalah sebagai berikut.
Open "O", #1, "siswa.dat"
Write #1, <nama>, <alamat>, <no.telepon>
Close #1
Notasi #1 menunjukkan siswa.dat akan ditempatkan dalam buffer no 1. Notasi ini harus sama digunakan di seluruh progam di atas. Artinya kalau kita menempatkan suatu file dengan nomor buffer #1 maka ketika membuka, menulis, membaca dan menutup harus menggunakan notasi tersebut. Demikian juga bila kita menempatkan pada buffer no #2.
2. Algoritma Pembacaan Data pada File
Algoritma membaca data algoritmanya hampir sama dengan menuliskan data, tetapi modus yang digunakan tidak O tetapi I. I adalah input yang berarti file data dibuka untuk dibaca datanya sebagai input. Berikut ini algoritmanya dalam SE.
Open "modus", <buffer number>, "nama file data"
While not EOF:
Input <record number>, field 1, field 2, ..
field n
Print field 1, field 2, .. field n
End while
Close buffer number
Pernyataan While Not EOF digunakan untuk memeriksa apakah sudah ada pada baris terakhir dari data. Jika belum maka baris-baris data akan dibaca dan dicetak sampai baris terakhir. Pernyataan input digunakan untuk mengambil data dari file untuk dimuat ke dalam program. Sedangkan pernyataan print digunakan untuk mencetak data ke layar komputer.
Contoh 5.26. Contoh penerapan algoritma penulisan data
File data dengan nama "siswa.dat" seperti pada contoh 5.25 yang field-nya adalah nama siswa, alamat, nomor telepon. Maka untuk membaca data adalah sebagai berikut.
Open "I", #2, "siswa.dat"
While not EOF:
Input #2, <nama>, <alamat>, <no.telepon>
Print <nama>, <alamat>, <no.telepon>
End while
Close buffer number
3. Ringkasan
- Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan mempunyai nama (identifier) dan nilai.
- Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa diubah.
- Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam pemrograman komputer.
- Tipe data dapat dikelompokkan menjadi tipe data primitive dan tipe data composite. Tipe data primitive terdiri dari numeric, character, dan bolean. Sedangkan tipe data composite terdiri dari array, record/struct, image, date time, subrange, enumerasi, obyek dan variant.
- Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. Algoritma harus benar dan harus berhenti. Setelah berhenti, algoritma memberikan hasil yang benar.
- Algoritma dapat ditulis dengan cara Structured English, Pseudocode dan Flowchart.
- Struktur berurutan terdiri satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya.
- Pada struktur percabangan, program akan berpindah urutan pelaksanaan jika suatu kondisi yang disyaratkan dipenuhi.
- Struktur pengulangan terdiri dari dari kondisi pengulangan dan badan pengulangan dan dapat dilakukan dengan For dan While.
- Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui indeksnya. Operasi pencarian pada array dapat dilakukan dengan cara linear search sedangkan pengurutan dengan metode bubble sort.
- File data ada yang bersifat urut dan ada yang acak. Metode pembacaan dan penulisan dibedakan dari modusnya.
4. Soal-Soal Latihan
1. Tentukan salah atau benar pada nama-nama variabel berikut ini. Jika salah cobalah berikan alasan.
- a. nama.guru
- b. NamaGuru
- c. 2x
- d. harga/buku
- e. hargaPerBuku
2. Tentukan tipe data yang cocok untuk hal-hal berikut ini (perhatikan ini bukan nama variabel) dan jelaskan alasannya.
- a. Jumlah murid
- b. Berat badan
- c. Tinggi badan
- d. Nama siswa
- e. Tempat lahir
- f. Tanggal lahir
3. Lihat kembali Contoh 5.3.
- a. Jika pada kode program A semua variabel (x, y, z) dideklarasikan bertipe data int, berapakah nilai z?
- b. Jika pada kode program A semua variabel (x, y, z) dideklarasikan bertipe data float, berapakah nilai z?
- c. Jika pada kode program B variabel x juga dideklarasikan bertipe data float, berapakah nilai z?
4. Ada dua gelas A dan B, gelas A berisi larutan berwarna merah, gelas B berisi larutan berwarna kuning. Pertukarkan isi dari kedua gelas itu sedemikian rupa sehingga gelas A berisi larutan kuning dan gelas B berisi larutan merah. Buatlah algoritma penyelesaiannya dengan menggunakan SI (Structured Indonesia).
5. Variabel A = 6, Variabel B = 10. Buatlah flowchart untuk menukar nilai variabel A dan B sehingga variabel A = 10 dan variabel B = 6.
6. PT. Sandang Nyaman bermaksud menggunakan komputer untuk menghitung upah mingguan pegawainya. Data yang diperlukan adalah nama pegawai dan jumlah jam kerja selama seminggu. Upah per jam ditetapkan Rp. 4500,-. Buatlah flowchart untuk masalah ini jika output yang diinginkan adalah nama pegawai, jam kerja dan upah yang diterima.
7. Sama seperti soal no 3, tetapi jika jam kerja melebihi 25 jam per minggu maka kelebihannya dianggap lembur. Upah perjam lembur adalah satu setengah kali dari upah per jam pada kondisi biasa. Bagaimanakah flowchartnya?
8. Seorang penjual buku pelajaran SD sedang berusaha menarik pembeli buku dengan ketentuan-ketentuan sebagai berikut:
- Jika jumlah buku yang dibeli lebih kecil atau sama dengan 100 eksemplar, maka pembeli tidak mendapat potongan,
- Jika jumlah buku yang dibeli lebih besar dari 100 tetapi kurang atau sama dengan 200 eksemplar, maka untuk 100 eksemplar yang pertama mendapat diskon 5%, sedangkan sisanya mendapat diskon 15%,
- Jika jumlah buku yang dibeli lebih besar dari 200 eksemplar, maka untuk 100 eksemplar yang pertama didiskon 7%, untuk 100 eksemplar yang kedua didiskon 17% dan sisanya didiskon 27%.
Apabila harga satu eksemplar buku Rp. 5000, buatlah flowchart untuk menyelesaikan aturan tersebut apabila output yang diinginkan adalah Jumlah eksemplar buku yang dibeli dan total harga yang harus dibayar. (Tentukan terlebih dahulu, semua variable, konstanta dan tipe data masing-masing).
9. Lihat kembali Contoh 5.16. Buatlah flowchart untuk menghasilkan output yang sama seperti Contoh 5.16, namun dengan menggunakan pengulangan While.
10. Diketahui 2 buah himpunan, A = {1, 3, 5, ..., 19) dan B = {2, 5, 8, ..., 29}. Buatlah flowchart untuk mencari irisan dari himpunan A dan B. (Petunjuk: irisan himpunan terjadi jika nilai anggota himpunan A = nilai anggota himpunan B).
11. Buatlah flowchart untuk mencetak tabel perkalian seperti berikut:

12. Urutkan bilangan berikut ini dengan algoritma bubble sort
- a. 5 - 3 - 12 -- 2 - 52
- b. 4 - 33 -- 4 -- 3 -12 -2
- c. 5 - 3 - 12 - 2 -- 50 -- 52 -- 10