Tipe data dan rekaman
| English | Bahasa Indonesia |
|---|---|
| data type/ˈdeɪtə taɪp/ | tipe data |
| field/fiːld/ | medan |
| record/ˈrekɔːd/ | rekaman |
| record structure/ˈrekɔːd ˈstrʌktʃə/ | struktur rekaman |
| dot notation/dɒt nəʊˈteɪʃn/ | notasi titik |
Keputusan tipe data termahal dalam sejarah
- Pada tahun 1960-an memori lebih mahal daripada programmer. Untuk menghemat dua karakter per tanggal, tahun disimpan sebagai dua digit:
99berarti 1999. - Tidak ada yang mengira kode tersebut akan bertahan melewati abad itu. Kode itu bertahan, dan pada 1 Januari 2000 setiap bidang tersebut akan terbaca sebagai 1900. Pemerintah dan perusahaan menghabiskan estimasi $300 miliar untuk memeriksa dan memperbaikinya.
- Bug tersebut bukan salah ketik. Itu adalah tipe data yang dipilih untuk memori tahun 1965 dan dipertahankan untuk tanggal-tanggal tahun 2000.
- Pelajaran ini adalah tentang bagaimana memilih tipe yang sesuai dengan data, dan bagaimana mengelompokkan nilai-nilai yang terkait bersama menjadi sebuah rekaman.
Enam tipe dasar
| Tipe | Menampung | Gunakan untuk |
|---|---|---|
INTEGER |
bilangan bulat, 42, -7 |
penghitungan, indeks, ID |
REAL |
bilangan dengan bagian pecahan, 3.14 |
pengukuran, rata-rata |
CHAR |
satu karakter tunggal, 'A' |
huruf nilai, pilihan menu |
STRING |
karakter dalam tanda kutip, "Hello" |
teks |
BOOLEAN |
TRUE atau FALSE |
penanda |
DATE |
tanggal kalender | tanggal lahir, tenggat waktu |

Kode semu juga menyebut dua tipe terstruktur: ARRAY dan FILE
Tipe data mana yang paling baik menyimpan flag ya/tidak seperti "tersedia"?
Sebuah flag memiliki dua keadaan, jadi BOOLEAN (TRUE/FALSE) adalah pilihan yang tepat — bukan string "yes"/"no".
Tipe real (floating-point) harus digunakan untuk menyimpan pengukuran seperti suhu.
Jumlah bulat menggunakan integer; pengukuran menggunakan real.
Pilih berdasarkan bagaimana nilai digunakan
- Suatu tipe ditentukan oleh apa yang program akan lakukan dengan nilainya, bukan oleh bagaimana tampilannya.
- Jumlah siswa adalah
INTEGER; nilai rata-rata kelas adalahREAL, karena memiliki bagian pecahan; apakah seorang siswa telah membayar adalahBOOLEAN. - Indeks array selalu
INTEGER. Satu huruf nilai adalahCHAR; alamat email adalahSTRING. - Nomor telepon adalah sebuah
STRING: dimulai dengan0, dan tidak pernah ada yang menambahkan dua nomor telepon.
Cocokkan setiap nilai dengan tipe data terbaik untuknya.
Pilih tipe yang presisi: BOOLEAN untuk flag, REAL untuk nilai pecahan, INTEGER untuk jumlah bulat, STRING untuk teks.
Tipe data mana yang harus menyimpan nomor telepon seperti 07700 900123?
Sebuah INTEGER akan menghilangkan nol di depan, dan tidak ada program yang menjumlahkan atau mengalikan nomor telepon. Digit-digit tersebut adalah teks.
Contoh terpecahkan: berikan tipe data yang tepat
| Data | Tipe | Karena |
|---|---|---|
| jumlah barang dalam stok | INTEGER |
penghitungan utuh |
| harga barang | REAL |
memiliki sen, bagian pecahan |
| apakah item sedang diskon | BOOLEAN |
hanya dua keadaan |
kode kategori item, 'F' |
CHAR |
tepat satu karakter |
| nama pemasok | STRING |
teks |
| tanggal barang diterima | DATE |
tanggal kalender |
- Berikan nama pseudocode, bukan bahasa yang Anda kuasai:
BOOLEAN, bukanbool;REAL, bukanfloat.
Tipe data dari indeks array selalu ____.
Indeks menghitung posisi, sehingga merupakan bilangan bulat. Names[2.5] tidak memiliki makna.
Record
- Sebuah record (struktur record) menyimpan serangkaian item data dengan tipe data berbeda di bawah satu pengenal. Setiap item adalah field.
- Gunakan ketika beberapa nilai selalu menggambarkan satu hal: item stok, pelanggan, siswa.
TYPE TStockItem
DECLARE ItemID : INTEGER
DECLARE Category : STRING
DECLARE ItemCost : REAL
DECLARE InStock : BOOLEAN
ENDTYPE

Satu pengenal, empat field, empat tipe
Sebuah rekombinasi digunakan untuk:
Sebuah rekombinasi mengelompokkan bidang-bidang dengan (mungkin) tipe berbeda yang mendeskripsikan satu hal. Sebuah array menyimpan banyak nilai dengan tipe yang sama.
Deklarasi dan penggunaan record
TYPE … ENDTYPEmendefinisikan tipe. Kemudian deklarasikan variabel darinya, tunggal atau sebagai array:
DECLARE Item1 : TStockItem
DECLARE Items : ARRAY[1:100] OF TStockItem
- Akses field menggunakan notasi titik, untuk menulis dan membaca:
Item1.Category ← "Fruit"
OUTPUT Item1.Category, " costs ", Item1.ItemCost
Items[7].InStock ← FALSE
Sebuah rekompokan bidang-bidang di bawah satu nama
Sebuah rekombinasi bidang-bidang yang terkait bersama. Setiap bidang adalah label bernama yang Anda akses dengan notasi titik — Item1.Kategori — bukan melalui indeks numerik.
Untuk menetapkan bidang Kategori dari variabel rekombinasi Item1, Anda menulis:
Notasi titik record.field mencapai bidang dari sebuah rekombinasi.
Contoh terpecahkan: file keanggotaan klub
- Sebuah klub menyimpan, untuk setiap siswa, ID siswa (string), nama, tanggal lahir, dan hingga tiga nomor klub. Deklarasikan tipe record, array untuk 3000 siswa, dan simpan nama di elemen pertama.
TYPE Student
DECLARE StudentID : STRING
DECLARE Name : STRING
DECLARE DateOfBirth : DATE
DECLARE Club : ARRAY[1:3] OF INTEGER
ENDTYPE
DECLARE Membership : ARRAY[1:3000] OF Student
Membership[1].Name ← "Li Wei"
- Nilai ujian:
TYPEdengan pengenal danENDTYPE; setiap field dideklarasikan dengan tipe yang sesuai; array dengan batas danOF Student; field diakses dengan index dan titik.
Susun baris-baris dari deklarativ keanggotaan klub ini secara berurutan.
Definisikan tipenya, tutup, deklarasikan variabel atau array darinya, lalu gunakan indeks dan titik untuk mencapai sebuah bidang.
Contoh terpecahkan: nyatakan kesalahan dalam deklarasi
TYPE TBooking
DECLARE Seats : INTEGER
DECLARE Price
DECLARE Total : STRING
- Tiga kesalahan, masing-masing bernilai satu poin: tipe tidak memiliki
ENDTYPE; fieldPricetidak memiliki tipe data; danTotalakan menyimpanSeats * Price, hasil aritmatika, sehingga tidak bisa menjadiSTRING. - Tiga kesalahan umum dari penguji:
ENDTYPEyang hilang, field tanpa tipe, field dengan tipe salah untuk penggunaannya.
Manakah dari berikut ini yang merupakan kesalahan dalam deklarativ rekombinasi? Pilih semua yang berlaku.
Tipe berbeda dalam satu rekombinasi adalah inti utama dari rekombinasi. Tiga lainnya adalah kesalahan yang ditanamkan oleh penguji.
Record, array, atau variabel biasa
- Nilai yang selalu terkait dan memiliki tipe berbeda: record.
- Banyak nilai dari tipe yang sama di bawah satu nama: array (pelajaran berikutnya).
- Tabel baris di mana setiap baris memiliki field campuran: array of records,
Members[i].Name. - Nilai yang tidak berkaitan: variabel terpisah. Mengelompokkannya tidak memberikan manfaat apa pun.
Array rekombinasi memungkinkan satu pengenal memegang tabel di mana setiap baris memiliki bidang dengan tipe berbeda.
Members[i] adalah satu baris (rekombinasi); Members[i].Nama adalah satu sel. Array memberikan baris-barisnya, rekombinasi memberikan kolom-kolom campuran.
⟦⟧ Nilai yang sering terlewat
- Nilai ya/tidak adalah
BOOLEAN, bukan string"yes"dan"no". - Nomor telepon atau ID yang dimulai dengan
0adalahSTRING, bukan everanINTEGER. - Uang dalam
REALdapat menumpuk kesalahan pembulatan; banyak sistem menyimpan sen penuh sebagaiINTEGER. - Setiap bidang adalah baris
DECLAREdengan tipe, dan tipe diakhiri denganENDTYPE. Indeks berada pada array, titik pada bidang:Members[3].Name.
Anda telah memahaminya
- enam tipe dasar,
INTEGER,REAL,CHAR,STRING,BOOLEAN,DATE, dipilih berdasarkan apa yang program lakukan dengan nilainya - sebuah record menyimpan field dengan tipe berbeda di bawah satu pengenal:
TYPE … DECLARE field : type … ENDTYPE - deklarasikan variabel atau array dari tipe tersebut, dan akses field dengan notasi titik:
Membership[1].Name ← "Li Wei" - kesalahan yang ditambahkan penguji: tidak ada
ENDTYPE, field tanpa tipe, field bertipe salah untuk penggunaannya