Kiểu trong Pascal là gì? Các loại biến trong Pascal: mô tả, thuộc tính, ví dụ

Cơ bản về lập trình
Mỗi người chuyên nghiệp đều từng là một ấm trà. Chắc hẳn bạn đã quen với tình trạng “bạn không biết phải bắt đầu suy nghĩ như thế nào để nghĩ ra được một điều như vậy”. Có lẽ bạn đã gặp phải một tình huống mà bạn không biết bắt đầu từ đâu. Cuốn sách này nhắm chính xác đến những người muốn trở thành lập trình viên, nhưng hoàn toàn không biết làm thế nào để bắt đầu con đường này. ...

Hầu hết tất cả các kiểu dữ liệu số nguyên đều là . Các kiểu dữ liệu này đại diện cho các số nguyên trong một phạm vi nhất định. Tên cụ thể của các loại số nguyên và phạm vi giá trị phụ thuộc vào ngôn ngữ lập trình cụ thể, trình biên dịch và chế độ biên dịch. Bạn có thể tìm hiểu thêm về điều này trong tài liệu biên dịch.

Ví dụ, kiểu dữ liệu số nguyênở Delphi nó có phạm vi -2147483648…2147483647, trong khi ở Turbo Pascal kiểu dữ liệu số nguyênđại diện cho các số trong phạm vi -35768…32767. Trong Free Pascal, phạm vi giá trị thuộc loại số nguyênđược xác định bởi chế độ đã chọn.

Vì Lazarus sử dụng trình biên dịch Free Pascal nên mọi điều nói về các kiểu dữ liệu liên quan đến Free Pascal cũng đúng với Lazarus.

Vì vậy, các kiểu dữ liệu số nguyên của Free Pascal được liệt kê trong Bảng 13.1.

Bảng 13.1. Các kiểu dữ liệu số nguyên Pascal miễn phí (Lazarus).

Kiểu Kích thước, byte Phạm vi giá trị
Byte 1 0…255
rút gọn 1 -128…127
bạc hà 2 -35768…32767
Từ 2 0…65535
số nguyên 2 hoặc 4 Phụ thuộc vào chế độ biên dịch
hồng y 4 0…4294967295
Longint 4 -2147483648…2147483647
Từ dài 4 0...4294967295
Int64 8 -9223372036854775808...9223372036854775807
QWord 8 0...18446744073709551615

GHI CHÚ
Các loại trong Pascal miễn phí Int64QWord không! Điều này có nghĩa là bạn không thể sử dụng chúng, chẳng hạn như cho các biến chỉ mục trong vòng lặp. Tuy nhiên, tôi trình bày chúng ở đây để không mô tả chúng một cách riêng biệt trong tương lai và để thu thập tất cả các loại số nguyên Pascal miễn phí vào một nơi. Nếu bạn không hiểu một số từ, đừng lo lắng. Vào thời điểm thích hợp tôi sẽ kể cho bạn nghe về mọi thứ chi tiết hơn.

Và bây giờ là một vài giải thích về cái bàn.

Trong một cột KIỂU các mã định danh kiểu dữ liệu được cung cấp (các từ khóa cho trình biên dịch biết loại dữ liệu cụ thể thuộc về loại nào). Bạn sẽ học cách sử dụng các mã nhận dạng này trong các bài học sau.

Trong một cột KÍCH CỠ cho biết kích thước mà kiểu dữ liệu chiếm trong bộ nhớ máy tính. Ví dụ: một số nguyên dương có thể được biểu diễn bằng nhiều loại khác nhau: Byte, Từ, hồng y v.v. Tuy nhiên, một con số như hồng y sẽ chiếm 4 byte trong bộ nhớ, trong khi một số như Byte– chỉ có 1 byte. Do đó, nếu bạn biết chắc chắn rằng số bạn đang làm việc sẽ không bao giờ có giá trị lớn hơn 255 thì tốt hơn hết bạn nên xác định nó là một loại Byte, vì điều này sẽ tiết kiệm dung lượng trong bộ nhớ máy tính của bạn. Mặc dù ở đây không phải mọi thứ đều đơn giản như vậy (các sắc thái phân bổ bộ nhớ và các tài nguyên máy tính khác nằm ngoài phạm vi).

Trong một cột PHẠM VI chỉ định phạm vi giá trị mà kiểu dữ liệu hoạt động. Ví dụ như một số như Byte có thể lấy giá trị từ 0 đến 255.

Bây giờ để thực hành. Hãy viết một chương trình hiển thị phạm vi giá trị của tất cả các kiểu dữ liệu số nguyên. Mã nguồn của chương trình này được đưa ra dưới đây:

Liệt kê 13.1. Một chương trình hiển thị phạm vi số nguyên. chương trình td; ($mode objfpc)($H+) sử dụng các cthread ($IFDEF UNIX)($IFDEF UseCThreads), các lớp ($ENDIF)($ENDIF) (bạn có thể thêm các đơn vị sau này); bắt đầu Writeln("Byte: ", Thấp(Byte), "..", High(Byte)); Writeln("Shortint: ", Low(Shortint), "..", High(Shortint)); Writeln("Nhỏ: ", Thấp(Nhỏ), "..", Cao(Nhỏ)); Writeln("Từ: ", Thấp(Từ), "..", Cao(Word)); Writeln("Số nguyên: ", Thấp(Số nguyên), "..", Cao(Số nguyên)); Writeln("Hồng y: ", Thấp(Hồng y), "..", Cao(Hồng y)); Writeln("Longint: ", Low(Longint), "..", High(Longint)); Writeln("Từ dài: ", Thấp(Từ dài), "..", Cao(Từ dài)); Writeln("Int64: ", Low(Int64), "..", High(Int64)); Writeln("QWord: ", Thấp(QWord), "..", Cao(QWord)); Đọc; kết thúc.

Chức năng tiêu chuẩn Thấp xác định giá trị tối thiểu của kiểu dữ liệu. Funtski Cao xác định giá trị tối đa. Với chức năng ViếtLnĐọcLn các bạn đã biết nhau một chút rồi. Chúng ta sẽ nói chi tiết hơn về các chương trình con (thủ tục và chức năng) trong phần tương ứng.

Cuối cùng, tôi sẽ cho bạn biết dữ liệu số nguyên được ghi trong chương trình như thế nào. Có, giống như mọi nơi khác - chỉ viết số, không có dấu ngoặc kép hoặc bất kỳ ký hiệu bổ sung nào. Ví dụ như thế này

10
178
35278

Đúng, điều này áp dụng cho các số trong hệ thống số thập phân. Chắc chắn bạn đã biết rằng có những hệ thống khác. Các hệ thống số được sử dụng rộng rãi nhất là hệ nhị phân, thập phân và thập lục phân.

Pascal miễn phí hỗ trợ bốn định dạng số nguyên:

  1. Ký hiệu thập phân. Chỉ là một con số, như 10.
  2. Ký hiệu thập lục phân. Một số có tiền tố $. Ví dụ: số thập lục phân $10 bằng số thập phân 16.
  3. ký hiệu bát phân. Một số có tiền tố &. Ví dụ: bát phân &10 bằng số thập phân 8.
  4. ký hiệu nhị phân. Một số có tiền tố là %. Ví dụ: số nhị phân %10 bằng số thập phân 2.

Bài tập về nhà:

Tạo một chương trình hiển thị các phạm vi giá trị nguyên (Liệt kê 13.1). Biên dịch chương trình và chạy nó. Đảm bảo rằng các giá trị này tương ứng với các giá trị được hiển thị trong Bảng 13.1.

Trong mã nguồn của chương trình, tìm dòng đặt chế độ biên dịch:

($chế độ objfpc)($H+)

Trong dòng này, thay vì từ đối tượng viết từ tp. Nghĩa là, dòng cuối cùng sẽ trông như thế này:

($chế độ tp)($H+)

Khởi động chương trình. Nhìn vào phạm vi giá trị loại số nguyên. Đi đến kết luận.

Học cách suy nghĩ như một lập trình viên, nghĩa là một cách logic. Không ai sẽ nhai lại mọi thứ cho bạn cho đến khi nghỉ hưu, như tôi bây giờ. Bạn phải làm quen với việc suy nghĩ cho chính mình. Nếu không, bạn sẽ rơi vào “nguyên tắc học khỉ” và khi đó cơ hội trở thành một lập trình viên giỏi của bạn sẽ gần như bằng không. Để giúp các bạn không rơi vào tình trạng “nhồi nhét”, tôi sẽ định kỳ để lại những khoảng trống trong quá trình học tập của các bạn để các bạn cố gắng tự mình tìm ra một số điều.

Sẽ tốt hơn nhiều nếu bạn tự mình tìm ra nó quyết định sai lầm, bạn sẽ tự mình tìm ra lỗi và tự sửa chứ không phải lúc nào cũng dùng cách giải đúng của người khác rồi sao chép một cách ngu ngốc.

Các kiểu dữ liệu ngôn ngữ Pascal: phân loại và mô tả. Các kiểu dữ liệu số học và thứ tự, hành động với chúng. Biểu thức số học: hàm, phép tính và thứ tự thực hiện. Khả năng tương thích và chuyển đổi kiểu dữ liệu.

Trình biên dịch Pascal yêu cầu thông tin về dung lượng bộ nhớ cần thiết để chạy chương trình phải được cung cấp trước khi chương trình chạy. Để làm điều này, trong phần mô tả biến ( var) bạn cần liệt kê tất cả các biến được sử dụng trong chương trình. Ngoài ra, bạn cũng cần cho trình biên dịch biết mỗi biến này sẽ chiếm bao nhiêu bộ nhớ. Sẽ rất tốt nếu thỏa thuận trước về các hoạt động khác nhau áp dụng cho một số biến nhất định...

Tất cả điều này có thể được truyền đạt tới chương trình bằng cách chỉ ra loại biến tương lai. Có thông tin về loại biến, trình biên dịch “hiểu” số byte cần được phân bổ cho nó, những hành động nào có thể được thực hiện với nó và nó có thể tham gia vào cấu trúc nào.

Để thuận tiện cho người lập trình, Pascal có nhiều kiểu dữ liệu tiêu chuẩn, cộng thêm khả năng tạo kiểu mới.

Khi xây dựng các loại dữ liệu mới dựa trên các loại dữ liệu hiện có (tiêu chuẩn hoặc do chính lập trình viên xác định lại), chúng ta phải nhớ rằng bất kỳ tòa nhà nào cũng phải được xây dựng trên một nền tảng tốt. Vì vậy, bây giờ chúng ta sẽ nói về “nền tảng” này.

Dựa trên các kiểu dữ liệu cơ bản tất cả các loại ngôn ngữ Pascal khác đều được xây dựng, được gọi là: được xây dựng.

Việc phân chia thành các kiểu dữ liệu cơ bản và xây dựng trong Pascal được thể hiện trong bảng:

Các kiểu dữ liệu do lập trình viên xây dựng được mô tả trong phần kiểu theo mẫu sau:

kiểu<имя_типа> = <описание_типа>;

Ví dụ:

gõ Lat_Bukvy = "a" .. "z", "A" .. "Z";

Các kiểu dữ liệu cơ bản là chuẩn nên không cần mô tả trong phần kiểu. Tuy nhiên, nếu muốn, điều này cũng có thể được thực hiện, ví dụ, bằng cách đưa ra những định nghĩa dài tên ngắn gọn. Giả sử bằng cách giới thiệu một kiểu dữ liệu mới

gõ Int = Số nguyên;

Bạn có thể rút ngắn văn bản chương trình một chút.

Các loại thi công tiêu chuẩn cũng không cần phải mô tả trong phần kiểu. Tuy nhiên, trong một số trường hợp việc này vẫn phải thực hiện do yêu cầu về cú pháp. Ví dụ, trong danh sách tham số thủ tục hoặc chức năng Không thể sử dụng hàm tạo kiểu (xem bài giảng 8).

Kiểu dữ liệu thứ tự

Trong số các kiểu dữ liệu cơ bản, đáng chú ý nhất là các loại thứ tự. Tên này có thể được biện minh theo hai cách:

Các thủ tục tiêu chuẩn xử lý kiểu dữ liệu thứ tự

Chỉ dành cho số lượng các loại thứ tự Các chức năng và thủ tục sau đây được xác định:

  1. Chức năng thứ tự(x) trả về số thứ tự của giá trị của biến x (liên quan đến loại mà biến x thuộc về).
  2. Chức năng dự đoán(x) trả về giá trị trước x (không áp dụng cho phần tử đầu tiên của loại).
  3. Chức năng thành công(x) trả về giá trị theo sau x (không áp dụng cho phần tử cuối cùng của loại).
  4. Thủ tục Inc(x) trả về giá trị sau x (đối với các kiểu dữ liệu số họcđiều này tương đương với toán tử x:= x + 1).
  5. Thủ tục Inc(x, k) trả về giá trị thứ k sau x (đối với các kiểu dữ liệu số họcđiều này tương đương với toán tử x:= x + k).
  6. Thủ tục Tháng mười hai(x) trả về giá trị trước x (đối với các kiểu dữ liệu số họcđiều này tương đương với toán tử x:= x - 1).
  7. Thủ tục Tháng mười hai(x, k) trả về giá trị k–e trước x (đối với các kiểu dữ liệu số họcđiều này tương đương với toán tử x:= x - k).

Thoạt nhìn, có vẻ như kết quả của việc áp dụng quy trình Inc(x) hoàn toàn trùng khớp với kết quả áp dụng hàm thành công(x). Tuy nhiên, sự khác biệt giữa chúng xuất hiện ở ranh giới trong phạm vi cho phép. Chức năng thành công(x) không áp dụng được cho phần tử tối đa của một loại, nhưng đây là quy trình Inc(x) sẽ không tạo ra bất kỳ lỗi nào, nhưng hoạt động theo quy tắc cộng của máy, sẽ thêm đơn vị tiếp theo vào số phần tử. Tất nhiên, số sẽ vượt ra ngoài phạm vi và do bị cắt bớt, sẽ biến thành số có giá trị nhỏ nhất của phạm vi. Hóa ra các thủ tục Inc() Tháng mười hai() họ nhận thức bất kỳ loại thứ tự nào như thể “đóng trong một vòng”: ngay sau loại cuối cùng, giá trị đầu tiên lại xuất hiện.

Hãy để chúng tôi giải thích mọi thứ đã được nói bằng một ví dụ. Đối với kiểu dữ liệu

gõ Mười sáu = 0 .. 15 ;

cố gắng thêm 1 vào số 15 sẽ cho kết quả như sau:

1 1 1 1 1 1 0 0 0 0

Đơn vị ban đầu sẽ bị cắt đi, và do đó hóa ra Inc(15)=0 .

Tình huống tương tự ở giới hạn dưới của phạm vi cho phép của loại dữ liệu thứ tự tùy ý được quan sát thấy đối với quy trình Tháng mười hai(x) và chức năng dự đoán(x):

Các kiểu dữ liệu liên quan đến thứ tự

Bây giờ chúng ta hãy mô tả kiểu dữ liệu thứ tự một cách chi tiết.

  1. kiểu Boolean Boolean có hai giá trị: Sai và Đúng và các đẳng thức sau đây áp dụng cho chúng:
  2. Đến loại ký tự Char bao gồm 256 ký tự bảng ASCII mở rộng(ví dụ: "a", "b", "i", "7", "#"). Số ký tự được hàm trả về thứ tự() , khớp với số của ký hiệu này trong bảng ASCII.
  3. Kiểu dữ liệu số nguyên Hãy đặt nó vào một bảng:
  4. Có thể liệt kê được kiểu dữ liệu được chỉ định trong phần kiểu bằng cách liệt kê rõ ràng các phần tử của chúng. Ví dụ:

    gõ Tuần = (sun, mon, tue, wed, thu, fri, sat); 0 1 2 3 4 5 6

    Hãy nhớ lại rằng đối với kiểu dữ liệu này:

  5. Các kiểu dữ liệu khoảng chỉ được xác định bởi ranh giới phạm vi của chúng. Ví dụ:

    gõ Tháng = 1 .. 12 ;
    Budni = Thứ Hai .. Thứ Sáu;

  6. Lập trình viên có thể tạo các kiểu dữ liệu của riêng mình, là sự kết hợp của một số kiểu tiêu chuẩn. Ví dụ:

    gõ Valid_For_Identifiers = "a" .. "z", "A" .. "Z", "_", "0" .. "9";

Loại này bao gồm việc kết hợp một số khoảng và trong trường hợp này thứ tự của các chữ cái Latinh được thay đổi: nếu ở loại tiêu chuẩn

Để một máy có thể xử lý bất kỳ dữ liệu đầu vào nào, nó phải “hiểu” loại biến chứa các giá trị được lưu trữ. Trong trường hợp không có thông tin về định dạng dữ liệu, máy tính sẽ không thể xác định liệu thao tác này hay thao tác đó có được phép trong một trường hợp cụ thể hay không: ví dụ: bằng trực giác, rõ ràng là không thể nâng một chữ cái lên lũy thừa hoặc lấy tích phân của một chuỗi. Vì vậy, người dùng phải xác định những hành động nào được phép thực hiện với mỗi biến.

Giống như trong các ngôn ngữ lập trình cấp cao khác, các kiểu biến trong Pascal được tối ưu hóa để thực hiện các tác vụ thuộc nhiều loại khác nhau, có phạm vi giá trị và độ dài tính bằng byte khác nhau.

Phân chia các loại biến

Các loại biến trong Pascal được chia thành đơn giản và có cấu trúc. Các loại đơn giản bao gồm các loại thực và thứ tự. Những cái có cấu trúc bao gồm mảng, bản ghi, bộ và tệp. Riêng biệt, con trỏ, đối tượng và các loại thủ tục được phân biệt.

Chúng ta hãy xem xét các loại thứ tự và thực tế. Kiểu thứ tự bao gồm 5 kiểu số nguyên, kiểu liệt kê và kiểu phạm vi.

Các loại thứ tự

Có 5 loại số nguyên, khác nhau về độ dài byte và phạm vi giá trị.

Độ dài của Byte và ShortInt là 1 byte. Sự khác biệt giữa chúng là Byte chỉ lưu trữ các giá trị không âm, trong khi ShortInt cho phép bạn lưu trữ các giá trị âm (từ -128 đến +127). Các loại Word và Integer liên quan với nhau theo cách tương tự, với điểm khác biệt duy nhất là kích thước của chúng là 2 byte.

Cuối cùng, LongInt cho phép bạn lưu trữ cả giá trị âm và dương bằng cách sử dụng 4 byte - theo lũy thừa thứ 16 của thứ nguyên số ở hai bên số 0. Các loại biến khác nhau trong Pascal góp phần giải quyết hiệu quả các tác vụ của người dùng, vì trong từng trường hợp cụ thể, cả một phạm vi giá trị nhỏ và lớn đều có thể được yêu cầu và cũng có thể có những hạn chế về lượng bộ nhớ được phân bổ.

Điều quan trọng là phải hiểu rằng số 0 chiếm nhiều không gian bộ nhớ như bất kỳ số nào khác. Do đó, khi hình thành một phạm vi giá trị, số âm tối thiểu trong giá trị tuyệt đối sẽ lớn hơn số dương một đơn vị: ví dụ: từ -128 đến +127.

Các biến thuộc về có thể lấy giá trị TRUE (true) hoặc FALSE (false) và yêu cầu 1 byte bộ nhớ.

Kiểu CHAR cho phép bạn lưu trữ bất kỳ ký tự nào trong số nhiều ký tự tồn tại trong bộ nhớ máy tính. Đồng thời, trong các biến ký hiệu trong Pascal, chỉ có mã của ký hiệu thực sự được lưu trữ, theo đó dạng đồ họa của nó được hiển thị.

Các loại thực

Trong số các loại biến trong Pascal, có một số loại biến số có khả năng viết phần phân số. Sự khác biệt giữa các loại Đơn, Thực, Đôi và Mở rộng nằm ở phạm vi giá trị được chấp nhận, số chữ số có nghĩa sau dấu thập phân và kích thước tính bằng byte.

Theo thứ tự trình bày ở trên, một biến của mỗi loại sẽ chiếm 4, 6, 8 hoặc 10 byte.

Mảng

Các kiểu dữ liệu có cấu trúc rất phức tạp và cho phép bạn kết hợp một số giá trị đơn giản trong một biến duy nhất. Một ví dụ điển hình là một mảng, có thể được định nghĩa như sau:

String=mảng char;

Vì vậy, chúng ta có một kiểu gọi là String, cho phép chúng ta xác định các biến dài tối đa 100 ký tự. Dòng cuối cùng xác định trực tiếp mảng một chiều Y kiểu String. Các biến trong Pascal được mô tả bằng cách đặt mã định danh ở bên trái và giá trị biến ở bên phải, sau dấu bằng.

Phạm vi chỉ mục được viết cho phép truy cập vào từng phần tử cụ thể của mảng:

Trong trường hợp này, chúng ta đọc phần tử thứ hai của mảng Y được tạo trước đó.

Các biến chuỗi trong Pascal cũng là trường hợp đặc biệt của mảng một chiều, vì chuỗi là một chuỗi các ký tự, tức là các phần tử thuộc kiểu char.

bài viết

Một bản ghi bao gồm một số trường chứa đầy dữ liệu thuộc bất kỳ loại nào ngoại trừ tệp. Nói chung, loại biến này tương tự như một phần tử cơ sở dữ liệu. Ví dụ: bạn có thể nhập tên và số điện thoại của một người:

gõ Ntel = Bản ghi

Dòng đầu tiên bên trái cho biết tên của loại và bên phải - bản ghi từ dịch vụ. Dòng thứ hai chứa trường có tên, dòng thứ ba - số điện thoại. Từ “kết thúc” có nghĩa là chúng tôi đã nhập tất cả các trường mà chúng tôi muốn và điều này hoàn tất quá trình tạo bản ghi.

Cuối cùng, ở dòng cuối cùng chúng ta định nghĩa biến One, thuộc loại NTel.

Bạn có thể truy cập cả bản ghi nói chung và các thành phần riêng lẻ của nó, ví dụ: one.NAME (tức là tên biến. record_field_name).

Các tập tin

Pascal cho phép bạn làm việc với các tệp văn bản, được gõ và không được gõ, là một chuỗi có cấu trúc của các thành phần có cùng loại.

Khi đọc hoặc ghi vào một tập tin, có thể sử dụng địa chỉ đầy đủ hoặc dạng rút gọn của nó:

‘C:\Thư mục\File2.txt’

Biểu mẫu ngắn được sử dụng khi tệp được đặt trong thư mục lưu trữ chương trình truy cập vào nó. Mẫu đầy đủ có thể được sử dụng trong mọi trường hợp.

Bạn có thể đặt biến loại tệp như sau:

f1: tệp số nguyên;

Để làm việc với các tệp, nhiều chức năng và quy trình khác nhau được sử dụng để liên kết một biến với một tệp trên đĩa, mở nó để đọc, ghi và ghi đè, đóng nó khi hoàn tất, cho phép bạn tạo tên mới và xóa tệp khỏi máy tính.

Cuối cùng

Nếu không có khả năng sử dụng nhiều loại biến khác nhau trong Pascal, người dùng sẽ không thể thực hiện ngay cả tác vụ đơn giản nhất. Để chương trình thực thi thuật toán mà không mắc lỗi, cần phải học cả từ chức năng và cú pháp, vì máy chỉ có thể “hiểu” các lệnh nếu chúng được viết theo cách duy nhất đúng.

Bất kỳ chương trình nào được viết bằng bất kỳ ngôn ngữ lập trình nào đều được thiết kế cơ bản để xử lý dữ liệu. Dữ liệu có thể là số, văn bản, đồ họa, âm thanh, v.v. Một số dữ liệu là dữ liệu nguồn, số khác là kết quả, thu được bằng cách xử lý dữ liệu nguồn của chương trình.

Dữ liệu được lưu trữ trong bộ nhớ của máy tính. Chương trình truy cập chúng bằng cách sử dụng tên biến được liên kết với các vị trí bộ nhớ nơi dữ liệu được lưu trữ.

Các biến được mô tả trước mã chương trình chính. Tên của các biến và loại dữ liệu được lưu trữ trong chúng được chỉ ra ở đây.

Có rất nhiều kiểu dữ liệu trong ngôn ngữ lập trình Pascal. Ngoài ra, người dùng có thể tự xác định loại của riêng mình.

Loại biến xác định dữ liệu nào có thể được lưu trữ trong vị trí bộ nhớ liên kết với nó.

Loại biến số nguyên chỉ có thể được liên kết với các giá trị số nguyên thông thường trong khoảng -32768 đến 32767. Pascal có các kiểu số nguyên khác (byte, longint).

Loại biến thực tế lưu trữ số thực (phân số).

Biến đổi Boolean(Boolean) loại (boolean) chỉ có thể nhận hai giá trị - ĐÚNG VẬY(1, đúng) hoặc SAI(0, sai).

Kiểu ký tự (char) có thể lấy các giá trị từ một chuỗi ký tự được sắp xếp cụ thể.

Loại khoảng do người dùng xác định và chỉ được hình thành từ các loại thứ tự. Đại diện cho một tập hợp con các giá trị trong một phạm vi cụ thể.

Bạn có thể tạo kiểu dữ liệu của riêng mình bằng cách liệt kê các giá trị mà một biến thuộc loại đó có thể nhận. Đây là cái gọi là kiểu dữ liệu liệt kê.

Tất cả những điều trên đều là những kiểu dữ liệu đơn giản. Nhưng cũng có những cái phức tạp, có cấu trúc, dựa trên các kiểu đơn giản.

Mảng là một cấu trúc chiếm một vùng duy nhất trong bộ nhớ và bao gồm một số thành phần cố định cùng loại.

Dây là một dãy ký tự. Hơn nữa, số lượng ký tự này không được nhiều hơn 255. Hạn chế này là một tính năng đặc trưng của Pascal.

Ghi là một cấu trúc bao gồm một số thành phần cố định được gọi là trường. Dữ liệu trong các trường khác nhau của bản ghi có thể có nhiều loại khác nhau.

bộđại diện cho một tập hợp gồm nhiều phần tử nhưng có cùng kiểu liệt kê.

Các tập tinđối với Pascal, chúng là các chuỗi cùng loại dữ liệu được lưu trữ trên các thiết bị bộ nhớ ngoài (ví dụ: ổ cứng).

Khái niệm về kiểu dữ liệu như con trỏ liên quan đến việc lưu trữ động dữ liệu trong bộ nhớ máy tính. Thông thường, sử dụng kiểu dữ liệu động sẽ hiệu quả hơn trong lập trình so với sử dụng kiểu dữ liệu tĩnh.

3.2. Các kiểu dữ liệu đơn giản trong Turbo Pascal 7

Một kiểu đơn giản xác định một tập hợp các giá trị tham số theo thứ tự. Turbo Pascal có các nhóm kiểu đơn giản sau:

  • các kiểu số nguyên;
  • kiểu boolean;
  • loại ký tự;
  • kiểu liệt kê;
  • phạm vi loại;
  • các loại thực tế.

Tất cả các kiểu đơn giản, ngoại trừ các kiểu thực, đều được gọi là kiểu thứ tự. Đối với số lượng thuộc loại thứ tự, các thủ tục và hàm tiêu chuẩn được xác định: Dec, Inc, Ord, Pred, Succ (xem phần 13.1).

3.2.1. Kiểu số nguyên

Không giống như Pascal định nghĩa một kiểu số nguyên duy nhất là Integer, Turbo Pascal có 5 kiểu số nguyên tiêu chuẩn: Shortint, Integer, Longint, Byte, Word. Đặc điểm của các loại này được đưa ra trong bảng. 2.

Bảng 2. Kiểu dữ liệu số nguyên

Kiểu Phạm vi Định dạng Kích thước tính bằng byte
rút gọn -128 .. 127 Mang tính biểu tượng 1
số nguyên -32768 .. 32767 Mang tính biểu tượng 2
Longint -2147483648 .. 2147483647 Mang tính biểu tượng 4
Byte 0 .. 255 Chưa ký 1
Từ 0 .. 65535 Chưa ký 2

3.2.2. kiểu Boolean

Kiểu Boolean tiêu chuẩn (kích thước - 1 byte) là kiểu dữ liệu, bất kỳ phần tử nào trong đó chỉ có thể nhận hai giá trị: Đúng và Sai. Trong trường hợp này, các điều kiện sau là hợp lệ:
Thứ tự sai (Sai) = 0
Thứ tự (Đúng) = 1
Thành công (Sai) = Đúng
Dự đoán (Đúng) = Sai

Turbo Pascal 7.0 đã thêm ba loại logic nữa ByteBool (kích thước - 1 byte), WordBool (kích thước - 2 byte) và LongBool (kích thước - 4 byte). Chúng được giới thiệu để thống nhất với các ngôn ngữ lập trình khác và với môi trường Windows. Điểm khác biệt của chúng so với kiểu Boolean tiêu chuẩn là giá trị thực của tham số thuộc kiểu này, tương ứng với giá trị True. Đối với tất cả các loại logic, giá trị Sai tương ứng với số 0, được viết bằng số byte tương ứng. Giá trị True cho loại Boolean tương ứng với số 1 được ghi trong byte của nó và đối với các loại khác, giá trị True tương ứng với bất kỳ số nào khác 0 (mặc dù hàm Ord trong trường hợp này cho giá trị 1).

3.2.3. Loại ký tự

Kiểu ký tự chuẩn Char xác định một bộ ký tự ASCII đầy đủ. Hàm Ord từ giá trị loại Char cung cấp mã của ký tự tương ứng. Giá trị của loại ký tự được so sánh theo mã của chúng.

3.2.4. Kiểu liệt kê

Kiểu liệt kê không phải là kiểu chuẩn và được xác định bởi một tập hợp các mã định danh mà các giá trị tham số có thể khớp. Danh sách các mã định danh được chỉ định trong dấu ngoặc đơn, các mã định danh được phân tách bằng dấu phẩy:

kiểu
= ();)

Điều quan trọng là thứ tự các mã định danh được liệt kê khi xác định một loại, bởi vì mã định danh đầu tiên được gán số sê-ri 0, mã định danh thứ hai - 1, v.v. Có thể sử dụng cùng một mã định danh trong định nghĩa chỉ một loại được liệt kê. Hàm Ord từ một giá trị thuộc loại liệt kê sẽ đưa ra số thứ tự của giá trị của nó.

Ví dụ. Kiểu liệt kê.

gõ Toán tử = (Cộng, Trừ, Mult, Chia);

Kiểu boolean là trường hợp đặc biệt của kiểu liệt kê:

gõ Boolean = (Sai, Đúng);

3.2.5. Phạm vi loại

Trong bất kỳ loại thứ tự nào, bạn có thể chọn một tập hợp con các giá trị, được xác định bởi các giá trị tối thiểu và tối đa, bao gồm tất cả các giá trị của loại ban đầu nằm trong các ranh giới này, bao gồm cả chính các ranh giới đó. Tập hợp con này xác định một loại phạm vi. Loại phạm vi được chỉ định bằng cách chỉ định các giá trị tối thiểu và tối đa, cách nhau bằng hai dấu chấm:

gõ = . . ;

Giá trị tối thiểu khi xác định loại này không được lớn hơn giá trị tối đa.

Ví dụ.Định nghĩa các loại phạm vi

kiểu
chục = 1,12; (các số từ 1 đến 12)
AddSub = Plus..Minus; (các phép tính cộng và trừ)

3.2.6. Các loại thực

Không giống như tiêu chuẩn ngôn ngữ Pascal, trong đó chỉ có một loại thực Real được xác định, Turbo Pascal có năm loại thực tiêu chuẩn: Real, Single, Double, Extended, Comp. Để biết đặc điểm của các loại này, xem bảng. 3. Bảng 3. Các kiểu dữ liệu thực

Kiểu Phạm vi Số lượng các số liệu có ý nghĩa Kích thước tính bằng byte
Thực tế 2.9*10-39..1.7*1038 11-12 6
Đơn 1.5*10-45..3.4*1038 7-8 4
Gấp đôi 5.0*10-324.-1.7*10308 15-16 8
Mở rộng 3.4*10-4932..1.1*104932 19-20 10
Comp -263+1..263-1 19-20 8

Loại Comp thực sự là một loại số nguyên có phạm vi mở rộng, nhưng không được coi là loại thứ tự.

Các loại Đơn, Đôi, Mở rộng và Comp chỉ có thể được sử dụng trong các chương trình nếu có bộ đồng xử lý số học hoặc nếu trình mô phỏng bộ đồng xử lý được bật (xem đoạn 17.5.8 và 17.7.1).