Giải Tin Học 10 trang 17
Lời giải chi tiết SGK Lớp 10 · Môn Tin Há»c · Trang 17–20
Bài 3: Một số kiểu dữ liệu và dữ liệu văn bản
🔍 Kiến thức cần nhớ
Khi đưa vào máy tính, thông tin được mã hóa thành dữ liệu nhị phân (dãy bit). Quá trình này gọi là biểu diễn thông tin.
Các kiểu dữ liệu thường gặp trong chương trình tin học phổ thông:
| Kiểu dữ liệu | Đặc điểm | Ví dụ |
|---|---|---|
| Số (số nguyên, số thực) | Tính toán, so sánh được | Điểm số, giá tiền |
| Văn bản (kí tự, xâu) | Tách – ghép, so sánh được | Họ tên, địa chỉ |
| Lôgic | Đúng/Sai | true/false |
| Đa phương tiện | Hình ảnh, âm thanh | Ảnh thẻ, file nhạc |
Hai bảng mã quan trọng:
- ASCII (American Standard Code for Information Interchange): bảng mã chuẩn của Mỹ. Bản gốc dùng 7 bit mã hóa được 128 kí tự; bản mở rộng dùng 8 bit mã hóa được 256 kí tự.
- Unicode: bảng mã hợp nhất quốc tế, dùng nhiều hơn 8 bit, mã hóa được hàng trăm nghìn kí tự của mọi ngôn ngữ. Việt Nam dùng tiêu chuẩn TCVN 6909 (UTF-8) để biểu diễn tiếng Việt.
💡 Mẹo nhớ: ASCII = 1 byte = chỉ đủ cho tiếng Anh. Unicode = nhiều byte = đủ cho cả thế giới.
⚙️ Bài tập
Câu HĐ1.1
Đề bài: Theo em, số căn cước công dân có kiểu số hay kiểu văn bản?
Cách 1 — Xét theo bản chất xử lí dữ liệu
Một dãy chữ số chỉ được xem là kiểu số khi ta cần thực hiện các phép tính số học (cộng, trừ, nhân, chia) hoặc so sánh lớn – nhỏ trên nó.
Số căn cước công dân chỉ dùng để định danh, tìm kiếm, so sánh trùng/khác, ta không bao giờ cộng hay trừ hai số căn cước với nhau. Do đó nên lưu ở kiểu văn bản.
Cách 2 — Xét theo dấu hiệu hình thức
Số căn cước thường bắt đầu bằng chữ số 0 (ví dụ 0010...). Nếu lưu kiểu số, các chữ số 0 ở đầu sẽ bị mất. Để giữ nguyên dạng đầy đủ → phải dùng kiểu văn bản.
⚠️ Lưu ý thi: Quy tắc vàng — số điện thoại, CCCD, mã số... đều là văn bản, không phải số, vì không dùng để tính toán.
Câu HĐ1.2
Đề bài: Kiểu số thực thường dùng để biểu diễn các số có phần thập phân (phần lẻ). Em hãy cho ví dụ một loại hồ sơ có dữ liệu kiểu số thực.
Trả lời:
Một số ví dụ hồ sơ chứa dữ liệu kiểu số thực:
- Bảng điểm: điểm trung bình môn 8.5; 7.75
- Hồ sơ sức khỏe: chiều cao 1.65 (m), cân nặng 52.5 (kg)
- Hóa đơn tiền điện, bảng lương: số tiền 1250.5 (nghìn đồng)
- Hồ sơ đo đạc: diện tích 35.4 (m²)
💡 Mẹo nhớ: Số thực = số "có dấu phẩy" (phần lẻ). Cứ đại lượng đo lường (cân, đo, tính trung bình) thường là số thực.
Câu HĐ2.1
Đề bài: Bảng chữ cái tiếng Anh có những kí tự nào?
Trả lời:
Bảng chữ cái tiếng Anh có 26 chữ cái (mỗi chữ có dạng hoa và thường):
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
Câu HĐ2.2
Đề bài: Trong tin học, mỗi nguyên âm có dấu thanh của tiếng Việt là một kí tự. Hãy kể tên các kí tự tiếng Việt có trong bảng chữ cái tiếng Anh. Có bao nhiêu kí tự như vậy?
Cách 1 — Liệt kê trực tiếp
Các kí tự vừa có trong bảng chữ cái tiếng Việt vừa có trong bảng chữ cái tiếng Anh (tức các chữ không dấu chung):
a, b, c, d, e, g, h, i, k, l, m, n, o, p, q, r, s, t, u, v, x, y
→ Đếm được 22 kí tự.
Cách 2 — Lấy phần bù (tính nhanh)
Bảng chữ cái tiếng Anh có 26 chữ. Trong đó 4 chữ không có trong tiếng Việt là: f, j, w, z.
Số kí tự chung = 26 − 4 = 22 kí tự.
⚠️ Lưu ý thi: Các chữ riêng của tiếng Việt như ă, â, đ, ê, ô, ơ, ư cùng các nguyên âm có dấu thanh (á, à, ả...) không có trong bảng ASCII gốc — đây chính là lí do tiếng Việt cần Unicode.
Câu hỏi trang 18 (1)
Đề bài: Sử dụng phụ lục Bảng mã ASCII mở rộng (trang 153), hãy xác định mã nhị phân và mã thập phân của các kí tự "SGK".
Cách 1 — Tra bảng và đổi sang nhị phân
Tra bảng ASCII được mã thập phân của từng kí tự, sau đó đổi sang nhị phân 8 bit:
| Kí tự | Mã thập phân | Mã nhị phân (8 bit) |
|---|---|---|
| S | 83 | 0101 0011 |
| G | 71 | 0100 0111 |
| K | 75 | 0100 1011 |
Cách đổi 83 sang nhị phân: 83 = 64 + 16 + 2 + 1 = 2^6 + 2^4 + 2^1 + 2^0 → 1010011 → thêm 0 ở đầu cho đủ 8 bit: 0101 0011.
Cách 2 — Tính nhanh dựa vào quy luật chữ cái
Trong ASCII, chữ 'A' hoa có mã 65. Mã các chữ hoa khác = 65 + (vị trí trong bảng chữ cái − 1).
- S là chữ thứ 19 → 65 + 18 = 83
- G là chữ thứ 7 → 65 + 6 = 71
- K là chữ thứ 11 → 65 + 10 = 75
Kết quả trùng với Cách 1.
💡 Mẹo nhớ: 'A' = 65, 'a' = 97 (chữ thường lớn hơn chữ hoa đúng 32 đơn vị). Số 0 = 48.
Câu hỏi trang 18 (2)
Đề bài: Trong bảng mã UNICODE, mỗi kí tự Tiếng Việt theo UTF-8 được biểu diễn bởi bao nhiêu byte?
A. 1 byte B. 2 byte C. 3 byte D. từ 1 đến 4 byte
Trả lời: Đáp án D. từ 1 đến 4 byte.
Giải thích: UTF-8 là hệ thống mã hóa có độ dài thay đổi (1 đến 4 byte):
- Kí tự Latinh không dấu (a, b, c...): dùng 1 byte
- Các nguyên âm có dấu và kí tự đ, Đ: dùng 2 byte
- Một số kí tự đặc biệt: dùng 3 byte
Vì độ dài biến thiên nên câu trả lời tổng quát đúng nhất là D.
Câu Luyện tập 1
Đề bài: Giấy phép lái xe có các thông tin ở cột bên trái. Hãy ghép mỗi thông tin với kiểu dữ liệu thích hợp ở cột bên phải (Số, Văn bản, Hình ảnh, Âm thanh).
Trả lời:
| Thông tin | Kiểu dữ liệu | Lí do |
|---|---|---|
| Ảnh | Hình ảnh | Là hình chân dung |
| Họ tên | Văn bản | Gồm các chữ cái |
| Ngày sinh | Số | Gồm ngày/tháng/năm dạng số |
| Quốc tịch | Văn bản | Tên quốc gia bằng chữ |
| Nơi cư trú | Văn bản | Địa chỉ bằng chữ |
Kiểu Âm thanh không ghép với thông tin nào, vì giấy phép lái xe không chứa dữ liệu âm thanh.
⚠️ Lưu ý thi: Ngày sinh có thể lưu kiểu Số (định dạng ngày tháng) hoặc kiểu Văn bản tùy cách thiết kế. Bài này theo bảng có sẵn nên ghép với Số.
Câu Luyện tập 2
Đề bài: Câu trả lời nào đúng cho câu hỏi "Tại sao cần xây dựng bảng mã Unicode?"
A. Để đảm bảo bình đẳng cho mọi quốc gia trong ứng dụng tin học
B. Bảng mã ASCII mã hóa mỗi kí tự bởi 1 byte. Giá thiết bị lưu trữ ngày càng rẻ nên không cần dùng bộ kí tự mã hóa bởi 1 byte
C. Dùng một bảng mã chung cho mọi quốc gia, giải quyết vấn đề thiếu vị trí cho bộ kí tự của một số quốc gia, đáp ứng nhu cầu dùng nhiều ngôn ngữ đồng thời trong cùng một ứng dụng
D. Dùng cho các quốc gia sử dụng chữ tượng hình
Trả lời: Đáp án C.
Giải thích:
- C đúng: Đây chính là mục đích ra đời của Unicode — bảng mã hợp nhất, đủ chỗ cho mọi ngôn ngữ, hỗ trợ ứng dụng đa ngôn ngữ.
- A sai: "Bình đẳng" là lí do mơ hồ, không phải vấn đề kĩ thuật mà Unicode giải quyết.
- B sai: Lập luận về giá thiết bị lưu trữ không liên quan đến lí do kĩ thuật cần Unicode.
- D sai: Unicode dùng cho tất cả ngôn ngữ, không riêng chữ tượng hình.
Câu Vận dụng 1
Đề bài: Dựa trên bảng mã ASCII, Việt Nam xây dựng bảng mã VSCII (Vietnamese Standard Code for Information Interchange) còn gọi là TCVN 5712. Hãy tìm hiểu bảng mã này trên Internet:
- Bảng mã có đủ cho tất cả các kí tự tiếng Việt không?
- Bảng mã có bảo toàn bảng mã ASCII 7 bit không?
Trả lời (kết quả tìm hiểu):
- Có đủ cho tất cả kí tự tiếng Việt không?
VSCII (TCVN 5712:1993) là bảng mã 8 bit được thiết kế riêng để chứa đủ các chữ cái và dấu thanh của tiếng Việt (ă, â, đ, ê, ô, ơ, ư cùng các nguyên âm có dấu). Vì 8 bit chỉ có 256 vị trí mà tiếng Việt cần khá nhiều kí tự nên có biến thể phải dùng cách ghép kí tự tổ hợp, nhưng về cơ bản bảng mã đáp ứng được nhu cầu biểu diễn tiếng Việt thời điểm đó.
- Có bảo toàn ASCII 7 bit không?
Có. VSCII giữ nguyên 128 kí tự đầu (mã 0–127) đúng như ASCII chuẩn. Các kí tự riêng của tiếng Việt được đặt ở phần mở rộng (mã 128–255). Nhờ vậy văn bản tiếng Anh thông thường vẫn hiển thị đúng.
💡 Mẹo nhớ: Mọi bảng mã "tử tế" (ASCII mở rộng, VSCII, UTF-8) đều giữ nguyên 128 mã ASCII gốc để tương thích ngược.
Câu Vận dụng 2
Đề bài: Phông chữ là hình ảnh của kí tự ứng với mã của kí tự. Không phải phông chữ nào cũng thiết kế đầy đủ cho tiếng Việt. Hãy gõ một câu tiếng Việt và định dạng với các phông khác nhau để tìm hiểu, ngoài Times New Roman còn những phông nào đã thiết kế cho tiếng Việt Unicode.
Trả lời (hướng dẫn thực hành và kết quả):
Cách làm: Mở Word (hoặc Writer), gõ một câu có đủ dấu thanh và kí tự riêng, ví dụ:
"Trường Trung học phổ thông – nỗ lực rèn luyện vì tương lai."
Lần lượt bôi đen câu và đổi sang từng phông để quan sát. Phông hỗ trợ tiếng Việt Unicode sẽ hiển thị đầy đủ dấu; phông không hỗ trợ sẽ mất dấu hoặc hiện ô vuông.
Một số phông Unicode hỗ trợ tốt tiếng Việt (ngoài Times New Roman):
- Arial, Tahoma, Verdana, Calibri, Cambria
- Segoe UI, Courier New, Georgia
- Roboto, Open Sans (phông Google, dùng nhiều trên web)
Một số phông không đủ cho tiếng Việt (sẽ mất dấu): nhiều phông trang trí hoặc phông cũ chỉ thiết kế cho tiếng Anh.
⚠️ Lưu ý thi: Cùng một mã kí tự, hai phông khác nhau cho hai hình dạng khác nhau, nhưng nếu phông không có "hình" cho kí tự đó thì kí tự vẫn không hiển thị được — đó là lí do văn bản tiếng Việt đôi khi bị lỗi font.
🎯 Ghi nhớ: - Số dùng để tính toán; còn mã định danh (CCCD, SĐT) thì lưu văn bản. - ASCII = 7 bit (128 kí tự) / mở rộng 8 bit (256 kí tự) — chỉ đủ cho tiếng Anh. - Unicode (UTF-8) = nhiều byte (1–4 byte) — hợp nhất quốc tế, đủ cho mọi ngôn ngữ kể cả tiếng Việt. - Tiếng Việt và tiếng Anh dùng chung 22 chữ cái; tiếng Việt cần thêm ă, â, đ, ê, ô, ơ, ư và các dấu thanh. - Lí do cần Unicode: một bảng mã chung, đủ chỗ, dùng đa ngôn ngữ đồng thời.
