Các kiểu số nguyên Pascal. Các kiểu dữ liệu trong Pascal (biến, hằng), kiểu và mô tả của chúng

Khái niệm về kiểu là một trong những khái niệm cơ bản của bất kỳ ngôn ngữ lập trình nào. Các đối tượng (hằng, biến, hàm, biểu thức) mà chương trình hoạt động thuộc về một loại cụ thể.

Kiểu là tập hợp các giá trị mà đối tượng chương trình có thể nhận và tập hợp các thao tác được phép thực hiện trên các giá trị này.

Ví dụ, các giá trị 1 và 2 thuộc loại số nguyên và có thể được cộng, nhân và các phép toán số học khác. Ý nghĩa “màn hình” và “Pascal” về bản chất là ngôn ngữ; chúng có tập hợp các hoạt động hợp lệ riêng. Trong hầu hết các ngôn ngữ được sử dụng phổ biến, chỉ có thể sử dụng các loại được xác định nghiêm ngặt, đã biết trước. Pascal, cùng với các kiểu tiêu chuẩn có trong các ngôn ngữ cấp cao khác, cho phép lập trình viên tạo các kiểu của riêng mình.

Tất cả các loại được phép trong ngôn ngữ Pascal được chia thành hai nhóm lớn: đơn giản và phức tạp (có cấu trúc).

Kiểu Phạm vi Mantissa, dấu hiệu Bộ nhớ cần thiết (byte)
THỰC TẾ 2.9*10E-39..1.7*10E38 11-12
ĐƠN 1.5*10E-45..3.4*10E38 7-8
GẤP ĐÔI 5.0*10E-324..1.7*10E308 15-16
MỞ RỘNG 1.9*10E-4951..1.1*10E4932 19-20
COMP -2E+63+1..2E+63-1 10-20

Chỉ có thể sử dụng hiệu quả các loại SINGLE, DOUBLE, EXTEND, COMP khi lệnh ($N+) được bật. Theo mặc định nó bị tắt. Để giải quyết các vấn đề kỹ thuật và kinh tế, các giá trị thuộc loại REAL là đủ.

Ví dụ

Var Res, Summa, Itog: có thật;

Boolean kiểu dữ liệu được mô tả bằng mã định danh BOOLEAN. Các biến và hằng thuộc loại này chỉ có thể nhận một trong hai giá trị: TRUE (true) hoặc FALSE (false).

Ví dụ

Var Sel1, Sel2: boolean;

A,B,C,D: boolean;

Các biểu thức Boolean chiếm 1 byte bộ nhớ và được sử dụng trong các biểu thức logic và quan hệ cũng như để kiểm soát thứ tự thực thi các câu lệnh chương trình.

Nghĩa đen (ký tự) loại được mô tả bằng mã định danh CHAR tiêu chuẩn. Các hằng số và biến thuộc loại này có thể lấy một trong các giá trị bảng mã ASCII. Ý nghĩa của hằng hoặc biến thuộc loại này được đặt trong dấu nháy đơn.

Ví dụ, Var Bukva, Znak, Ký hiệu: char;

Bukva:=’A’; Znak:=’+’; Ký hiệu:=’!’

Biến kiểu ký tự chiếm 1 byte trong bộ nhớ. Việc sử dụng dữ liệu char trong các biểu thức số học bị cấm. Các phép toán so sánh có thể được áp dụng cho các giá trị bằng chữ, kết quả tùy thuộc vào số lượng biến hoặc hằng số bằng chữ trong bảng mã.

Ngoài các kiểu dữ liệu tiêu chuẩn, Pascal còn hỗ trợ các kiểu dữ liệu vô hướng, đã xác định người dùng. Bao gồm các có thể đếm đượckhoảng thời gian các loại . Những loại dữ liệu này chiếm 1 byte trong bộ nhớ, do đó, bất kỳ loại tùy chỉnh nào cũng không thể chứa nhiều hơn 255 phần tử. Việc sử dụng chúng giúp cải thiện đáng kể khả năng hiển thị của chương trình, giúp tìm lỗi dễ dàng hơn và tiết kiệm bộ nhớ.

Kiểu liệt kêđược chỉ định trực tiếp bằng cách liệt kê tất cả các giá trị mà một biến thuộc loại nhất định có thể nhận. Các giá trị riêng lẻ được phân tách bằng dấu phẩy và toàn bộ danh sách được đặt trong dấu ngoặc đơn.

Định dạng

Kiểu<имя типа>=(<значение1, значение2, ..., значениеN>);

Var<идентификатор, ...>: < имя типа>;

Ví dụ

Loại Season =(Xuân, Hạ, Thu, Đông);

Var S1, S2: Mùa;

Mùa thu: (tháng 9, tháng 10, tháng 10);

Ví dụ này hiển thị loại dữ liệu người dùng Mùa được xác định rõ ràng. Ý nghĩa của chúng được xác định - chỉ định của các mùa. Biến S1 và S2 chỉ có thể nhận một trong các giá trị được liệt kê. Việc cố gắng gán cho chúng bất kỳ giá trị nào khác sẽ gây ra gián đoạn phần mềm. Kiểu liệt kê thứ ba là ẩn danh (không có tên) và được chỉ định bằng cách liệt kê các giá trị trong phần Var. Mùa thu là một biến thuộc loại này và có thể lấy các giá trị Tháng 9, Tháng 10, Tháng 10. Vì vậy, bất kỳ loại nào cũng có thể được chỉ định, nhưng điều này không phải lúc nào cũng được chấp nhận. Phương pháp đầu tiên chắc chắn dễ hiểu hơn và phù hợp hơn với bản chất của ngôn ngữ Pascal.

Loại khoảng cho phép bạn chỉ định hai hằng số xác định ranh giới của phạm vi giá trị cho một biến nhất định. Đối với mỗi thao tác trên một biến khoảng, trình biên dịch tạo ra các thủ tục kiểm tra để xác định xem giá trị của biến có nằm trong phạm vi đã chỉ định hay không. Cả hai hằng số phải thuộc về một trong các loại tiêu chuẩn khác với loại thực. Giá trị của hằng số thứ nhất nhất thiết phải nhỏ hơn giá trị của hằng số thứ hai.

Định dạng

Kiểu<имя типа> = <константа1> .. <константа2>;

Var<идентификатор>: < имя типа>;

Ví dụ

Nhập Ngày = 1.. 31;

Var Work_d, Free_d: Ngày;

Trong ví dụ này các biến Work_d, Free_d có loại Ngày và có thể nhận bất kỳ giá trị nào từ phạm vi 1. . 31.

Việc thoát khỏi phạm vi sẽ gây ra gián đoạn phần mềm.

Bạn có thể xác định loại khoảng bằng cách xác định ranh giới phạm vi không phải bằng giá trị của các hằng số mà bằng tên của chúng:

Hằng số tối thiểu = 1; Tối đa = 31;

Nhập Ngày = Tối thiểu .. Tối đa;

Var Work_d, Free_d: Ngày;

Các loại có cấu trúc các kiểu dữ liệu dựa trên các kiểu vô hướng và có thể chứa nhiều sự kết hợp khác nhau của chúng. Chúng xác định một tập hợp có thứ tự các phần tử vô hướng và được đặc trưng bởi loại thành phần của chúng. Ngôn ngữ Pascal cung cấp các kiểu dữ liệu có cấu trúc sau:

đường kẻ - một dãy ký tự được đặt trong dấu nháy đơn;

mảng - một kiểu dữ liệu có cấu trúc bao gồm một số phần tử cố định cùng loại, được truy cập theo chỉ mục ;

một loạt - một tập hợp các đối tượng được lựa chọn theo một đặc điểm hoặc nhóm đặc điểm nào đó có thể được coi là tổng thể;

ghi - một tập hợp một số lượng cố định các thành phần thuộc các loại khác nhau;

tài liệu- một chuỗi các thành phần cùng loại và cùng độ dài.

Hai loại có cấu trúc hơn—thủ tục và đối tượng—rất khó ánh xạ tới dữ liệu theo cách biểu diễn thông thường.

Bức tranh 1- Tập hợp các kiểu cơ bản của ngôn ngữ Pascal

Dữ liệu là một khái niệm chung cho mọi thứ mà máy tính hoạt động. Bất kỳ kiểu dữ liệu nào cũng xác định tập hợp các giá trị mà một biến cụ thể có thể nhận và các thao tác có thể áp dụng cho chúng. Mỗi biến gặp phải trong một chương trình phải được liên kết với một và chỉ một loại.

Có hai loại kiểu đơn giản trong Pascal: kiểu thứ tự và kiểu thực. Loại thứ tự được xác định bởi người lập trình (loại liệt kê hoặc loại phạm vi) hoặc được biểu thị bằng tên của một trong ba loại thứ tự được xác định trước: Boolean, Integer hoặc Char. Một kiểu thực được biểu thị bằng tên kiểu quy định là Real.

Một kiểu liệt kê được đặc trưng bởi nhiều giá trị khác nhau mà nó chứa, trong đó một thứ tự tuyến tính được xác định. Bản thân các giá trị được chỉ định theo tên trong định nghĩa của loại này.

Loại phạm vi (có giới hạn) được chỉ định bằng cách sử dụng các giá trị tối thiểu và tối đa liên quan đến loại thứ tự được mô tả trước đó. Đây là cách một loại thứ tự mới được tạo ra.

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

Kiểu dữ liệu thứ tự mô tả một tập hợp các giá trị hữu hạn và có thứ tự. Các giá trị này được ánh xạ tới dãy số thứ tự 0,1,2,...; một ngoại lệ chỉ được thực hiện cho các số nguyên thứ tự, ánh xạ lên chính chúng. Mỗi loại thứ tự có giá trị tối thiểu và tối đa. Đối với tất cả các giá trị ngoại trừ giá trị tối thiểu đều có giá trị trước đó và đối với tất cả các giá trị ngoại trừ giá trị tối đa đều có giá trị tiếp theo.

Các hàm được quy định succ, pred, ord chấp nhận các đối số thuộc bất kỳ loại thứ tự nào:
succ(X) - đưa ra giá trị thứ tự tiếp theo sau X
pred(X) - đưa ra giá trị thứ tự trước X
ord(X) - đưa ra số thứ tự cho X

Đối với tất cả các loại thứ tự, có các toán tử quan hệ = , = và > , giả sử cả hai toán hạng đều cùng loại.

kiểu Boolean

Giá trị Boolean là một trong hai giá trị thật, được biểu thị bằng tên được xác định trước là false và true.

Có các toán tử logic sau đây tạo ra giá trị logic khi được áp dụng cho toán hạng logic:
và - logic VÀ
hoặc - logic HOẶC
không - logic KHÔNG

Ngoài ra, bất kỳ phép toán quan hệ nào (= , = , > , in) đều tạo ra kết quả logic.

Ngoài ra, kiểu boolean được xác định sao cho sai

Ngoài ra còn có các hàm logic được xác định trước (tức là các hàm đưa ra kết quả logic):
lẻ(F) - đúng nếu số nguyên là F-lẻ và kết quả là sai nếu F-chẵn
eoln(F) - kiểm tra cuối dòng
eof(F) - kiểm tra cuối tập tin

Kiểu số nguyên

Kiểu số nguyên bao gồm nhiều số nguyên khác nhau.

Khi làm việc với toán hạng số nguyên, các phép tính số học sau tạo ra các giá trị số nguyên:
* - phép nhân
div - phần nguyên từ phép chia
mod - phần dư của phép chia
+ - phép cộng
- - phép trừ

Trong Pascal cũng có một hằng số được xác định trước gọi là MaxInt, chứa giá trị lớn nhất của kiểu Integer và bằng 32767

Toàn bộ kết quả cũng đạt được nhờ bốn chức năng quan trọng được quy định:
abs(I) - giá trị tuyệt đối của giá trị nguyên I
sgr(I) - giá trị nguyên của I bình phương cho rằng I trunc(R) - cho phần nguyên của số thực R
round(R) - trả về số nguyên được làm tròn. Trong trường hợp này: đối với R>0 có nghĩa là trunc(R+0.5) và đối với R

Nếu I là một giá trị nguyên thì:
succ(I) - đưa ra giá trị số nguyên tiếp theo (I+1)
pred(I) - đưa ra giá trị số nguyên trước đó (I-1)

Kiểu ký tự (Char)

Giá trị Char là các phần tử của một tập hợp ký tự hữu hạn và có thứ tự. Các giá trị thuộc loại này được biểu thị bằng một ký tự đơn được đặt trong dấu ngoặc đơn (dấu nháy đơn). Nếu cần có dấu nháy đơn thì nó được viết hai lần.
Ví dụ: "*" "G" "3" """" "X"

    Đối với loại Char, áp dụng các giả định tối thiểu sau:
  1. Các chữ số thập phân từ 0 đến 9 được sắp xếp theo giá trị số của chúng và nối tiếp nhau (ví dụ: succ("5") = "6").
  2. Có thể có chữ in hoa từ "A" đến "Z"; nếu vậy thì chúng được sắp xếp theo thứ tự bảng chữ cái, nhưng không nhất thiết phải theo sau nhau (ví dụ: "A"
  3. Có thể có các chữ cái viết thường từ "a" đến "z"; nếu vậy thì chúng được sắp xếp theo thứ tự abc, nhưng không nhất thiết phải theo sau nhau (ví dụ: "a"

Để ánh xạ một bộ ký tự nhất định thành số sê-ri và ngược lại, có hai hàm được xác định trước:
ord(C) - đưa ra số thứ tự của ký tự C trong bộ ký tự được sắp xếp đã đề cập
chr(I) - cung cấp ký tự có số thứ tự I

Đối với các đối số kiểu Char, các hàm được xác định trước pred và succ có thể được định nghĩa như sau:
pred(C) = chr(ord(C)-I)
succ(C) = chr(ord(C)+I)

Bình luận. Ký hiệu trước hoặc sau phụ thuộc vào bộ ký hiệu được chỉ định, vì vậy cả hai mối quan hệ này chỉ hợp lệ nếu ký hiệu trước hoặc sau tồn tại.

Loại thực

Giá trị của kiểu thực là các phần tử của tập hợp con số thực do người thực hiện xác định.

Tất cả các thao tác trên số lượng thực đều mang tính gần đúng, độ chính xác của chúng được xác định bởi việc triển khai (máy) mà bạn đang xử lý. Kiểu thực là kiểu đơn giản, nó không phải là kiểu thứ tự. Giá trị thực không có số thứ tự và đối với bất kỳ giá trị nào trong số chúng không có giá trị trước hoặc giá trị tiếp theo.

Nếu ít nhất một trong các toán hạng là kiểu thực (số còn lại có thể là số nguyên), thì các phép toán sau sẽ cho kết quả thực:
* - phép nhân
/ - phép chia (cả hai toán hạng đều có thể là số nguyên, nhưng kết quả luôn là số thực)
+ - phép cộng
- - phép trừ

Có các hàm được quy định đưa ra kết quả thực với một đối số thực:
abs(R) - giá trị tuyệt đối của R
sqr(R) - R bình phương nếu kết quả nằm trong phạm vi số thực

Và các hàm được quy định này cho kết quả thực với một số nguyên hoặc đối số thực:
sin(X) - cho sin của X; X được biểu thị bằng radian
cos(X) - cho ra cosin của X; X được biểu thị bằng radian
arctan(X) - cho arctang của X được biểu thị bằng radian
ln(X) - cho giá trị logarit tự nhiên (cơ số e) của X, X>0
exp(X) - cho giá trị của hàm số mũ (tức là lũy thừa của X)
sqrt(X) - cho giá trị căn bậc hai của X, X>=0

Cảnh báo. Các hàm pred, succ không thể được sử dụng cho các đối số thực. Bạn không thể sử dụng các giá trị thuộc loại thực khi lập chỉ mục các mảng, để điều khiển trong một vòng lặp có tham số, để xác định loại cơ sở của các tập hợp, để lập chỉ mục trong toán tử biến thể.

Kiểu dữ liệu số đơn giản nhất trong Pascal là kiểu số nguyên, được thiết kế để lưu trữ số nguyên. Số nguyên trong Pascal thường được chia thành hai loại: có dấu và không dấu. Số có dấu là loại số nguyên bao gồm cả số dương và số âm, số không dấu chỉ là số dương.

Dưới đây là hai bảng có kiểu số nguyên. Đầu tiên chúng ta sẽ viết ra kiểu số nguyên có dấu:


KiểuBytePhạm vi giá trị
nói ngắn gọn1 -128 ... 127
nhỏ2 -32768 ... 32767
số nguyên, longint4 -2147483648 ... 2147483647
int648 -9223372036854775808 ... 9223372036854775807

Và cái này các kiểu số nguyên không dấu:


KiểuBytePhạm vi giá trị
byte1 0 ... 255
từ2 0 ... 65535
từ dài, hồng y4 0 ... 4294967295
uint648 0 ... 18446744073709551615

Như bạn có thể thấy, cột đầu tiên chứa tên của loại, cột thứ hai - số byte chiếm trong bộ nhớ bởi các số thuộc loại này và cột thứ ba - phạm vi các giá trị có thể tương ứng. Có hai loại số có dấu - số nguyên và số dài (nghĩa đen là "số nguyên" và "số nguyên dài"), đồng nghĩa với nhau. Tức là bạn có thể sử dụng tên này hoặc tên khác trong phần mô tả.

Tương tự, trong bảng thứ hai (số nguyên không âm trong Pascal), cũng có hai loại số nguyên đồng nghĩa 4 byte - longword và cardinal, vì vậy hãy sử dụng cái này hoặc cái kia.

Bạn cũng có thể nhận thấy rằng nếu chúng ta di chuyển có điều kiện các số của bảng đầu tiên sang bên phải so với 0 (di chuyển khoảng sang bên phải sao cho số tối thiểu là 0), thì chúng ta sẽ nhận được các khoảng số nguyên trong bảng thứ hai nằm ở các hàng tương ứng. Vì vậy, nếu trong loại shortint 1 byte, chúng ta thêm 128 vào ranh giới bên trái và bên phải, chúng ta sẽ nhận được loại byte (0..255); nếu trong loại Smallint 2 byte, chúng ta thêm 32768 vào các ranh giới, chúng ta sẽ nhận được từ loại không dấu 2 byte tương ứng (0..65535), v.v.

Tất cả điều này xảy ra bởi vì trong các kiểu số nguyên không dấu, các số có thể được chia chính xác thành hai: một nửa số thành phần âm, một nửa thành phần dương. Tại sao trong số đã ký, đường viền bên trái có giá trị tuyệt đối lớn hơn đường viền bên phải 1? - bạn hỏi. Ví dụ: trong loại shortint, mức tối thiểu là -128, trong khi mức tối đa chỉ là 127 (giảm modulo 1). Và điều này là do vế phải cũng bao gồm số 0, và bạn cần biết và ghi nhớ điều này.

Vậy tại sao số nguyên trong Pascal lại phải chia thành nhiều loại như vậy? Ví dụ: tại sao không vượt qua với loại số nguyên lớn nhất trong PascalABC.Net và Pascal miễn phí – int64 – gần 9 triệu rưỡi (!) với cả dấu trừ và dấu cộng? Có, vì một lý do tầm thường (?) đơn giản - tiết kiệm bộ nhớ. Nếu bạn cần cộng hai số dương nhỏ một byte (0..255) và bạn mô tả những số này là int64 (8 byte), thì việc này sẽ chiếm nhiều bộ nhớ hơn 8 lần. Và nếu chương trình lớn và có nhiều biến, thì mức tiết kiệm bộ nhớ sẽ tăng rất mạnh. Hơn nữa, sẽ không có ý nghĩa gì khi sử dụng các kiểu số nguyên có dấu nếu bài toán liên quan đến các đại lượng như độ dài, khối lượng, khoảng cách, thời gian, v.v.

Trong phần Sách bài toán Abrahamyan của trang web (tiểu mục Số nguyên), hãy quan sát cách sử dụng các loại số nguyên khác nhau trong Pascal.

Một kiểu dữ liệu xác định một tập hợp các giá trị hợp lệ và một tập hợp các phép toán hợp lệ.

Các loại đơn giản.

Các loại đơn giản được chia thành ORDINAL và REAL.

1. CÁC LOẠI ĐẶT HÀNG , lần lượt có:

toàn bộ

Pascal định nghĩa 5 kiểu số nguyên, được xác định tùy thuộc vào dấu và giá trị mà biến sẽ lấy.

Tên loại

Độ dài (tính bằng byte)

Phạm vi giá trị

32 768...+32 767

2 147 483 648...+2 147 483 647

b) logic

Tên của loại này là BOOLEAN. Giá trị Boolean có thể là một trong các hằng số Boolean: TRUE (true) hoặc FALSE (false).

c) mang tính biểu tượng

Tên của loại này là CHAR - chiếm 1 byte. Giá trị của loại ký tự là tập hợp tất cả các ký tự PC. Mỗi ký tự được gán một số nguyên trong phạm vi 0…255. Con số này đóng vai trò như một mã để thể hiện bên trong biểu tượng.

2. LOẠI THẬT .

Không giống như các loại thứ tự, có giá trị luôn được ánh xạ tới một chuỗi số nguyên và do đó được biểu diễn hoàn toàn chính xác trong PC, các giá trị của loại thực chỉ xác định một số tùy ý với một số độ chính xác hữu hạn tùy thuộc vào định dạng bên trong của số thực .

Độ dài của kiểu dữ liệu số, byte

Tên kiểu dữ liệu số

Số chữ số có nghĩa của kiểu dữ liệu số

Phạm vi thứ tự thập phân của kiểu dữ liệu số

2*1063 +1..+2*1063 -1

LOẠI CẤU TRÚC

Các kiểu dữ liệu có cấu trúc xác định một tập hợp các biến vô hướng có thứ tự và được đặc trưng bởi loại thành phần của chúng.

Các kiểu dữ liệu có cấu trúc, không giống như các kiểu dữ liệu đơn giản, xác định nhiều giá trị phức tạp bằng một tên chung. Chúng ta có thể nói rằng các kiểu cấu trúc xác định một cách nhất định để hình thành các kiểu mới từ những kiểu hiện có.

Có một số phương pháp cấu trúc. Theo phương pháp tổ chức và kiểu thành phần trong kiểu dữ liệu phức tạp, người ta phân biệt các loại sau: kiểu thông thường (mảng); loại kết hợp (hồ sơ); filetype(tập tin); nhiều loại; loại chuỗi(chuỗi); trong ngôn ngữ Turbo Pascal phiên bản 6.0 trở lên, một loại đối tượng (đối tượng) đã được giới thiệu.

Không giống như các kiểu dữ liệu đơn giản, dữ liệu kiểu có cấu trúc được đặc trưng bởi sự đa dạng của các phần tử tạo thành kiểu này, tức là một biến hoặc hằng của kiểu có cấu trúc luôn có nhiều thành phần. Lần lượt, mỗi thành phần có thể thuộc về một loại có cấu trúc, tức là có thể lồng các loại.

1. Mảng

Mảng trong Turbo Pascal về nhiều mặt tương tự như các kiểu dữ liệu tương tự trong các ngôn ngữ lập trình khác. Một đặc điểm khác biệt của mảng là tất cả các thành phần của chúng đều là dữ liệu cùng loại (có thể có cấu trúc). Các thành phần này có thể được sắp xếp dễ dàng và có thể truy cập bất kỳ thành phần nào trong số chúng chỉ bằng cách chỉ định số sê-ri.

Mô tả mảng được chỉ định như sau:

<имя типа>= mảng [<сп.инд.типов>] của<тип>

Đây<имя типа>- định danh chính xác;

Mảng, của – các từ dành riêng (mảng, từ);

<сп.инд.типов>- danh sách một hoặc nhiều loại chỉ mục, được phân tách bằng dấu phẩy; dấu ngoặc vuông đóng khung danh sách là một yêu cầu về cú pháp;

<тип>- bất kỳ loại Turbo Pascal nào.

Bất kỳ loại thứ tự nào cũng có thể được sử dụng làm loại chỉ mục trong Turbo Pascal, ngoại trừ LongInt và loại phạm vi có loại cơ sở LongInt.

Độ sâu lồng của các kiểu có cấu trúc nói chung và của mảng là tùy ý, do đó số phần tử trong danh sách chỉ mục kiểu (kích thước mảng) không bị giới hạn, tuy nhiên, tổng chiều dài của biểu diễn bên trong của bất kỳ mảng nào cũng không thể lớn hơn 65520 byte.

2. Hồ sơ

Bản ghi là một cấu trúc dữ liệu bao gồm một số thành phần cố định được gọi là trường bản ghi. Không giống như mảng, các thành phần (trường) của bản ghi có thể có nhiều loại khác nhau. Để có thể tham chiếu đến một hoặc một thành phần khác của bản ghi, các trường được đặt tên.

Cấu trúc của một khai báo kiểu bài viết là:

< Tênkiểu>=GHI< liên doanh. lĩnh vực>KẾT THÚC

Đây<имя типа>- định danh chính xác;

GHI, KẾT THÚC – các từ dành riêng (ghi, kết thúc);

<сп.полей>- danh sách các trường; là một chuỗi các phần của bản ghi được phân tách bằng dấu chấm phẩy.

3 bộ

Bộ là một tập hợp các đối tượng cùng loại được kết nối logic với nhau. Bản chất của các kết nối giữa các đối tượng chỉ được lập trình viên ngụ ý và không được điều khiển bởi Turbo Pascal. số phần tử có trong một tập hợp có thể thay đổi từ 0 đến 256 (một tập hợp không chứa các phần tử được gọi là trống). Chính sự không nhất quán về số lượng phần tử của nó khiến tập hợp khác với mảng và bản ghi.

Hai tập hợp được coi là tương đương khi và chỉ khi tất cả các phần tử của chúng giống nhau và thứ tự các phần tử của tập hợp đó không đổi. Nếu tất cả các phần tử của một tập hợp cũng được bao gồm trong một tập hợp khác thì tập hợp đầu tiên được cho là nằm trong tập hợp thứ hai.

Mô tả của loại tập hợp là:

< Tênkiểu> = BỘ< căn cứ. kiểu>

Đây<имя типа>- định danh chính xác;

SET, OF – các từ dành riêng (set, from);

<баз.тип>- loại cơ sở của các phần tử tập hợp, có thể là bất kỳ loại thứ tự nào ngoại trừ WORD, INTEGER và LONGINT.

Để xác định một tập hợp, cái gọi là hàm tạo tập hợp được sử dụng: danh sách các thông số kỹ thuật của các phần tử của tập hợp, được phân tách bằng dấu phẩy; danh sách được bao quanh bởi dấu ngoặc vuông. Thông số phần tử có thể là hằng số hoặc biểu thức của một loại cơ sở, cũng như một loại phạm vi có cùng loại cơ sở.

4. Tập tin

Tệp được hiểu là vùng được đặt tên của bộ nhớ ngoài của PC hoặc thiết bị logic - nguồn hoặc bộ thu thông tin tiềm năng.

Bất kỳ tập tin nào cũng có ba tính năng đặc trưng

    nó có một tên, cho phép chương trình hoạt động với nhiều tệp cùng một lúc.

    nó chứa các thành phần cùng loại. Loại thành phần có thể là bất kỳ loại Turbo Pascal nào, ngoại trừ các tệp. Nói cách khác, bạn không thể tạo một “tệp của các tệp”.

    Độ dài của tệp mới tạo không được chỉ định theo bất kỳ cách nào khi nó được khai báo và chỉ bị giới hạn bởi dung lượng của thiết bị bộ nhớ ngoài.

Một loại tệp hoặc biến loại tệp có thể được chỉ định theo một trong ba cách:

< Tên>= TẬP TIN< kiểu>;

< Tên>=VĂN BẢN;

<имя>= TẬP TIN;

Đây<имя>- tên loại tệp (định danh chính xác);

FILE, OF – các từ dành riêng (file, from);

TEXT – tên của loại tệp văn bản tiêu chuẩn;

<тип>- bất kỳ loại Turbo Pascal nào, ngoại trừ các tập tin.

Tùy thuộc vào phương pháp khai báo, có thể phân biệt ba loại tệp:

· các tập tin được đánh máy (được đặt bởi mệnh đề FILE OF...);

· tập tin văn bản (được định nghĩa là loại TEXT);

· các tập tin chưa được gõ (được xác định bởi loại FILE).

Về chuyển đổi kiểu dữ liệu số của Pascal

Trong Pascal, việc chuyển đổi ngầm (tự động) các kiểu dữ liệu số gần như không thể thực hiện được. Một ngoại lệ chỉ được thực hiện cho kiểu số nguyên, được phép sử dụng trong các biểu thức kiểu thực. Ví dụ: nếu các biến được khai báo như thế này:

Var X: số nguyên; Y: có thật;

sau đó người điều hành

sẽ đúng về mặt cú pháp, mặc dù có một biểu thức số nguyên ở bên phải dấu gán và một biến thực ở bên trái, trình biên dịch sẽ tự động chuyển đổi các kiểu dữ liệu số. Việc chuyển đổi ngược lại tự động từ kiểu thực sang kiểu số nguyên là không thể trong Pascal. Hãy nhớ có bao nhiêu byte được phân bổ cho các biến kiểu số nguyên và số thực: 2 byte bộ nhớ được phân bổ cho số nguyên kiểu dữ liệu số nguyên và 6 byte cho số thực. Có hai hàm dựng sẵn để chuyển đổi số thực thành số nguyên: round(x) làm tròn số thực x thành số nguyên gần nhất, trunc(x) cắt bớt số thực bằng cách loại bỏ phần phân số.

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).