Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Baca rekod tanpa kehilangan sempadan medan

Satu baris dalam fail nampak seperti rentetan aksara tunggal, dan satu silap memecahkannya boleh menjadikan skor sebagai nama.

Dalam halaman ini
  1. Bagaimana baris boleh dipecahkan kepada medan?
  2. Contoh berlangkah: berpembatas
  3. Contoh berlangkah: berlebar tetap
  4. Kesilapan yang perlu diawasi
  5. Semak sendiri
  6. Ke mana selepas ini

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.

MedanAksaraNilai
Nama1 hingga 6Aina (nama serta dua ruang)
Kelas7 hingga 910B
Skor10 hingga 12072, 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.

Soalan lazim

Apakah rekod dan apakah medan?

Rekod ialah satu set data berkaitan yang lengkap, seperti semua yang disimpan tentang seorang pelajar. Medan ialah satu item di dalamnya, seperti nama atau skor. Fail menyimpan banyak rekod, biasanya satu rekod setiap baris.

Mengapa sesetengah fail menggunakan koma antara medan?

Koma ialah pembatas (delimiter), penanda yang menunjukkan di mana satu medan tamat dan yang seterusnya bermula. Ia membolehkan medan mempunyai panjang berbeza. Atur cara memecahkan baris pada setiap pembatas untuk mendapatkan semula medan.

Bagaimana jika medan mengandungi pembatas?

Maka pemecahan mudah memecahkan medan itu kepada dua dan medan kemudian beralih tempat. Reka bentuk fail mesti mengelaknya, misalnya dengan memilih pembatas yang tidak boleh muncul dalam data atau menggunakan medan berlebar tetap.

Dikemas kini:

Langkah seterusnya

Jika anda faham rekod di atas kertas tetapi pemecahan anda tersasar pada data baharu, guru satu dengan satu boleh memberi baris segar untuk dipecahkan dan menyemak setiap medan bersama anda.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa: tanya di sini

  • 9,000+ pelajar telah dibantu melalui perkhidmatan kami
  • 9+ tahun membantu pelajar IGCSE