Rekod (record) ialah satu set item berkaitan, dan setiap item ialah medan (field). Apabila fail menyimpan rekod sebagai baris teks, atur cara mesti memotong setiap baris kembali kepada medan tanpa menggerakkan sempadan, kemudian menukar nombor daripada teks jika perlu mengira dengannya.
Pelajaran ini berada dalam carian, isihan dan fail. Data di sini ialah rekaan. Pelajaran seterusnya, mengendalikan hujung fail, menunjukkan cara membaca banyak baris seperti ini.
Bagaimana baris boleh dipecahkan kepada medan?
Terdapat dua reka bentuk lazim.
Medan berpembatas. Penanda seperti koma memisahkan medan. Baris Aina,10B,72 mempunyai tiga medan kerana ada dua koma.
Medan berlebar tetap. Setiap medan sentiasa menggunakan bilangan aksara yang sama, diisi dengan ruang atau sifar. Atur cara mengira aksara dan bukan mencari penanda.
Contoh berlangkah: berpembatas
Barisnya Aina,10B,72, menyimpan nama, kelas dan skor. Dalam Python:
line = "Aina,10B,72"
fields = line.split(",")
name = fields[0]
cls = fields[1]
score = int(fields[2])
print(name, cls, score + 5)
line.split(",") memberi ["Aina", "10B", "72"]. Python mengira kedudukan bermula dari 0, jadi nama ialah fields[0] dan skor ialah fields[2].
Skor tiba sebagai teks "72", maka int menukarnya kepada nombor 72. Kemudian score + 5 ialah 77, dan outputnya Aina 10B 77.
Pseudokod gaya Cambridge menggunakan fungsi rentetan sendiri dan mengira kedudukan dari 1, jadi semak panduan pseudokod semasa untuk tahun peperiksaan anda. Penaakulan tentang sempadan sama sahaja.
Contoh berlangkah: berlebar tetap
Barisnya Aina 10B072 dengan medan nama 6 aksara, medan kelas 3 dan medan skor 3.
| Medan | Aksara | Nilai |
|---|---|---|
| Nama | 1 hingga 6 | Aina (nama serta dua ruang) |
| Kelas | 7 hingga 9 | 10B |
| Skor | 10 hingga 12 | 072, iaitu nombor 72 |
Semak bilangan: Aina ialah 4 aksara tambah 2 ruang menjadi 6, kemudian 10B menjadikan 9, kemudian 072 menjadikan 12. Dalam pseudokod, MID(Line, 7, 3) memulangkan 3 aksara bermula pada kedudukan 7, iaitu 10B. Medan skor MID(Line, 10, 3) memulangkan 072.
Kesilapan yang perlu diawasi
Seorang pelajar membaca dua skor daripada fail sebagai teks dan membandingkannya:
Adakah
"9"lebih besar daripada"72"?
Sebagai teks, perbandingan dibuat aksara demi aksara: "9" dengan "7". Aksara 9 datang selepas 7, jadi teks "9" dianggap lebih besar. Sebagai nombor, 9 jelas kurang daripada 72.
Pembetulannya ialah menukar medan kepada nombor sebelum membandingkan atau menambah. Semasa menjejak, tulis jenis data di sebelah setiap medan. Kesilapan sempadan kedua ialah nama seperti Tan, Mei dalam fail berkoma: pemecahan memberi empat medan dan bukan tiga, jadi kelas jatuh ke kedudukan skor.
Semak sendiri
1. Pecahkan Zara,11A,64 pada koma. Apakah medan ketiga, dan berapa jumlahnya ditambah 6?
Lihat jawapan
Medan: Zara, 11A, 64. Medan ketiga ialah "64", ditukar kepada nombor 64. Kemudian 64 + 6 = 70.
2. Baris berlebar tetap Omar 09C055 menggunakan lebar 6, 3 dan 3. Nyatakan setiap medan.
Lihat jawapan
Aksara 1 hingga 6 ialah Omar . Aksara 7 hingga 9 ialah 09C. Aksara 10 hingga 12 ialah 055, iaitu nombor 55.
3. Baris Lee, Ann,10C,81 dipecahkan pada koma. Berapa medan terhasil, dan apa yang tidak kena?
Lihat jawapan
Tiga koma memberi empat medan: Lee, Ann, 10C, 81. Pembatas muncul di dalam nama, jadi setiap medan kemudian beralih satu tempat.
Ke mana selepas ini
Selepas anda boleh memecahkan medan dengan betul, teruskan ke membaca seluruh fail sehingga hujung. Kotak pasir penaakulan Python selamat membolehkan anda mencuba pemecahan seperti di atas dan melihat setiap medan dicetak.
Jika pemecahan dan penukaran masih tersasar pada baris baharu, guru dalam tuisyen Computer Science dalam talian satu dengan satu boleh membina contoh tambahan dengan format fail yang berbeza.