Khám Phá Các Kiểu Dữ Liệu Cơ Bản Trong Pascal

Hôm nay, chúng ta sẽ cùng nhau tìm hiểu về nền tảng cơ bản của Pascal: dữ liệu. Dữ liệu là yếu tố then chốt, là “nguyên liệu” mà máy tính sử dụng để thực hiện mọi tác vụ. Vậy dữ liệu là gì và có những loại nào trong Pascal?

Dữ liệu (Data) có thể hiểu là tất cả những gì mà máy tính có thể xử lý, bao gồm số, chữ, hình ảnh, âm thanh, video, và nhiều hơn nữa. Các loại dữ liệu này tồn tại dưới nhiều hình thức và mang ý nghĩa khác nhau. Tuy nhiên, ở cấp độ phần cứng, máy tính chỉ hiểu được thông tin được biểu diễn dưới dạng mã nhị phân (0 và 1). Để đơn giản hóa việc lập trình, các ngôn ngữ bậc cao như Pascal sử dụng các kiểu dữ liệu để trừu tượng hóa cách biểu diễn dữ liệu trong máy tính, giúp lập trình viên dễ dàng thao tác và quản lý dữ liệu hơn.

Một kiểu dữ liệu (Data Type) được định nghĩa bởi hai yếu tố chính:

  • Tập hợp các giá trị: Xác định phạm vi các giá trị mà một biến thuộc kiểu đó có thể nhận.
  • Các phép toán: Xác định các thao tác có thể thực hiện trên các giá trị thuộc kiểu dữ liệu đó.

Điều quan trọng cần ghi nhớ là mỗi biến trong Pascal phải được gán cho một kiểu dữ liệu cụ thể và duy nhất. Pascal cung cấp nhiều kiểu dữ liệu khác nhau, từ các kiểu đơn giản đến các kiểu phức tạp được xây dựng dựa trên các kiểu đơn giản.

Kiểu vô hướng (Scalar Type) hay kiểu đơn giản (Simple Type) là kiểu dữ liệu mà các giá trị của nó được sắp xếp theo một thứ tự tuyến tính. Chúng ta sẽ tập trung vào 5 kiểu dữ liệu vô hướng đơn giản nhất, được định nghĩa sẵn trong Pascal và được gọi là kiểu đơn giản chuẩn (Simple Standard Type).

I. Kiểu Boolean (Logic: Đúng/Sai – True/False)

Trước khi đi sâu vào các kiểu số nguyên và số thực, chúng ta hãy tìm hiểu về kiểu logic (Boolean). Trong thực tế, chúng ta thường xuyên gặp các đại lượng chỉ có hai giá trị: Đúng hoặc Sai. Ví dụ, một mệnh đề, một câu hỏi, hoặc một phép toán có thể được đánh giá là đúng hoặc sai.

Một giá trị thuộc kiểu Boolean chỉ có thể nhận một trong hai giá trị logic: TRUE (đúng) hoặc FALSE (sai). TrueFalse là các giá trị được định nghĩa sẵn trong Pascal. Kiểu Boolean cũng định nghĩa sẵn một quan hệ thứ tự: False < True.

Các phép toán logic cơ bản trên kiểu Boolean bao gồm:

  • And (phép “và” logic)
  • Or (phép “hoặc” logic)
  • Not (phép “đảo” hay “phủ định” logic)
  • Xor (phép “hoặc triệt tiêu”)

Ví dụ:

False And True = False
Not False = True

Quy tắc thực hiện các phép toán And, OrXor như sau:

  • Phép And chỉ cho kết quả True khi và chỉ khi cả hai toán hạng đều là True.
  • Phép Or chỉ cho kết quả False khi và chỉ khi cả hai toán hạng đều là False.
  • Phép Xor cho kết quả True khi hai toán hạng khác nhau, và False khi hai toán hạng giống nhau.

Kiểu Boolean thường được sử dụng trong các biểu thức điều kiện (ví dụ: trong câu lệnh if hoặc while) để kiểm tra một điều kiện nào đó có đúng hay không.

Biểu thức so sánh trả về giá trị kiểu Boolean (True hoặc False). Hai vế của biểu thức so sánh phải có cùng kiểu dữ liệu (trừ trường hợp so sánh số thực và số nguyên). Các kiểu dữ liệu có thể so sánh bao gồm Real, Integer, Char, Boolean và các kiểu vô hướng do người dùng định nghĩa (sẽ được đề cập sau).

Ví dụ:

3 < 5  { Biểu thức này trả về True }
10 > 20 { Biểu thức này trả về False }

II. Kiểu Số Nguyên (Integer)

Một giá trị kiểu số nguyên là một phần tử của tập hợp các số nguyên mà máy tính có thể biểu diễn được. Do giới hạn về bộ nhớ, máy tính chỉ có thể biểu diễn một tập con hữu hạn của tập số nguyên vô hạn. Thông thường, các số nguyên được biểu diễn bằng hai byte (16 bit), do đó phạm vi giá trị của nó là từ -32768 đến +32767. Tuy nhiên, Pascal cũng cung cấp các kiểu số nguyên khác với phạm vi biểu diễn khác nhau, chẳng hạn như Shortint, Longint, Byte, và Word.

Các số nguyên được viết bằng các dãy chữ số 0, 1, 2,… 9, có thể có dấu dương (+) hoặc dấu âm (-) ở đầu, hoặc không có dấu.

Ví dụ:

+234, -32767, -1, 23

Các phép toán số học đối với số nguyên bao gồm:

  • Phép cộng (+): a + b
  • Phép trừ (-): a - b
  • Phép nhân (): `a b`
  • Phép chia (/): Lưu ý rằng phép chia này sẽ cho kết quả là số thực.
  • Phép chia lấy phần nguyên (Div): a Div b cho kết quả là phần nguyên của phép chia a cho b.
  • Phép chia lấy phần dư (Mod): a Mod b cho kết quả là phần dư của phép chia a cho b.

Ví dụ:

14 Div 4 { Cho giá trị bằng 3 }
14 Mod 4 { Cho giá trị bằng 2 }

Khi thực hiện các phép tính số học với số nguyên, cần cẩn thận để tránh trường hợp kết quả vượt quá phạm vi biểu diễn của kiểu số nguyên, dẫn đến lỗi tràn số.

Ví dụ:

32000 + 800 - 2000 = 29200

Các phép toán quan hệ đối với số nguyên:

Các số nguyên có thể so sánh với nhau và với số thực thông qua các phép toán quan hệ như đã đề cập ở phần trước. Kết quả của phép toán quan hệ là một giá trị kiểu Boolean (True hoặc False).

III. Kiểu Số Thực (Real)

  1. Kiểu số thực (Real):

Tương tự như kiểu số nguyên, kiểu số thực là tập hợp các số thực có thể biểu diễn được trong máy tính. Kiểu số thực được định nghĩa sẵn trong Pascal với từ khóa REAL.

Các phép toán số học cộng (+), trừ (-), nhân (*), chia (/) cũng như các phép toán quan hệ (=, <>, <, >, <=, >=) có thể được thực hiện trên các số thực.

Do giá trị số thực có thể biểu diễn dưới dạng dấu phẩy động (hay dấu chấm động) nên người ta còn gọi đây là cách biểu diễn dấu phẩy động để phân biệt với cách biểu diễn số dưới dạng dấu phẩy tĩnh là cách biểu diển trong đó dấu phẩy cố định. Pascal còn cung cấp các kiểu số thực khác như Single, Double, và Extended với độ chính xác và phạm vi biểu diễn khác nhau.

  1. Mở rộng việc mô tả và khai báo số thực:

Việc khai báo và sử dụng số thực cho phép chúng ta biểu diễn các giá trị không nguyên, mở rộng khả năng tính toán của chương trình.

IV. Các Hàm Số Học Chuẩn

Pascal cung cấp một loạt các hàm số học chuẩn, được định nghĩa sẵn và có thể sử dụng với các đối số là số thực hoặc số nguyên:

  • Abs(x): Trả về giá trị tuyệt đối của x (|x|). Kiểu kết quả cùng kiểu với đối số x.
  • Sqr(x): Trả về bình phương của x (x*x). Kiểu kết quả cùng kiểu với đối số x.

Các hàm sau áp dụng cho đối số nguyên hoặc thực, nhưng kết quả luôn là kiểu thực:

  • Sin(x), Cos(x), Arctan(x): Các hàm lượng giác thông thường.
  • Sqrt(x): Tính căn bậc hai của x.

Các hàm sau áp dụng cho đối số nguyên và trả về giá trị nguyên:

  • Succ(x): Trả về số nguyên tiếp theo của x (x + 1).
  • Pred(x): Trả về số nguyên trước của x (x – 1).
  • Odd(n): Trả về True nếu n là số lẻ, False nếu n là số chẵn.

Việc chuyển đổi một số thực sang số nguyên có thể được thực hiện bằng hai hàm chuẩn: hàm làm tròn và hàm cắt:

  • Trunc(x): Trả về phần nguyên của x, bằng cách cắt bỏ phần thập phân. Ví dụ: Trunc(3.146) = 3.
  • Round(x): Trả về số nguyên gần nhất với x, bằng cách làm tròn phần thập phân. Ví dụ: Round(56.678) = 57.

Có hai hàm chuẩn là OrdChr cho phép thiết lập mối tương quan giữa bộ mã ký tự và một tập con các số tự nhiên:

  • Ord( ): Hàm Ord('c') trả về số thứ tự của ký tự ‘c’ trong bảng mã (ví dụ: bảng mã ASCII).
  • Chr( ): Hàm Chr(n) trả về ký tự có số thứ tự là n trong bảng mã.

Hàm chuẩn Pred (trước) và Succ (tiếp theo) có thể áp dụng cho đối số là ký tự, kết quả là ký tự. Giả sử Ch là một ký tự nào đó:

  • Hàm chuẩn Pred(Ch) trả về ký tự nằm trước ký tự Ch trong bảng mã ký tự.

Kết luận

Bài viết này đã trình bày những kiến thức cơ bản về các kiểu dữ liệu đơn giản trong Pascal, bao gồm kiểu Boolean, kiểu số nguyên và kiểu số thực. Hiểu rõ về các kiểu dữ liệu này là nền tảng quan trọng để xây dựng các chương trình Pascal hiệu quả và chính xác. Việc lựa chọn kiểu dữ liệu phù hợp cho mỗi biến sẽ giúp tiết kiệm bộ nhớ và tăng tốc độ thực thi của chương trình. Nắm vững các hàm số học chuẩn cũng giúp bạn giải quyết các bài toán một cách dễ dàng và hiệu quả hơn.