1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình ngôn ngữ lập trình pascal TS nguyễn ngọc cương (chủ biên)

221 1,4K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 221
Dung lượng 2,47 MB

Nội dung

Điều đó có nghĩa là mọi biến và hằng của một kiểu dữ liệu không thể tự do đem trộn lẫn với các biến và hằng của một kiểu dữ liệu khác.. Được chia thành 7 kiểu khai báo với các từ khóa sa

Trang 3

M· sè: GD 08 HM 11

Trang 4

LỜI NÓI ĐẦU

Con người liên lạc với nhau thông qua ngôn ngữ, tạo ra các mẫu 

từ ngữ và âm thanh. Ngôn ngữ lập trình cũng tương tự như vậy, đó 

là  một  tập  từ  ngữ  và  ký  hiệu  cho  phép  lập  trình  viên  hoặc  người dùng có thể tương tác với máy tính. Việc hiểu biết và nắm vững các ngôn ngữ lập trình là thật sự cần thiết đối với các lập trình viên. Mặc 

dù đã có hàng trăm ngôn ngữ lập trình được sinh ra, song chỉ có một 

số  ít  là  được  sử  dụng  rộng  rãi  và  được  xem  là  một  chuẩn  công nghiệp. Các ngôn ngữ này đều có thể được sử dụng trên nhiều loại máy  tính  khác  nhau.  Hiện  nay,  ngôn  ngữ  lập  trình  Pascal  là  ngôn ngữ bậc cao đang được sử dụng khá rộng rãi trong lập trình.  

Nhằm giúp các bạn sinh viên, nghiên cứu sinh, lập trình viên có được  một  tài  liệu  khá  hệ  thống  về  ngôn  ngữ  lập  trình  Pascal,  NXB 

Thông tin và Truyền thông trân trọng giới thiệu cuốn sách “Giáo trình  ngôn ngữ lập trình Pascalʺ do TS. Nguyễn Ngọc Cương (Trưởng khoa 

Chương 5: Kiểu vô hướng liệt kê và kiểu khoảng con 

Chương 6:  Các câu lệnh có cấu trúc 

Trang 5

Nhà xuất bản xin trân trọng giới thiệu cùng bạn đọc và rất mong nhận được ý kiến đóng góp của quý vị. Mọi ý kiến đóng góp xin gửi 

Trang 6

Chương 1: Các thμnh phần cơ bản của ngôn ngữ lập trình Pascal 5

Chương 1  CÁC THÀNH PHẦN CƠ BẢN CỦA NGễN NGỮ LẬP TRèNH PASCAL

1.1 Giới thiệu ngôn ngữ lập trình Turbo Pascal

- Là ngôn ngữ lập trình bậc cao, có cấu trúc và có tính vạn năng

do giáo sư Niklaus Wirth (tác giả của cuốn "Cấu trúc dữ liệu + Giải thuật = Chương trình) sáng tác và công bố vào đầu những năm 1970 lấy tên nhà bác học bậc thầy người Pháp là Pascal để đặt tên Lúc đầu Pascal được sáng tạo ra với mục đích làm ngôn ngữ dạy học

- Pascal là một ngôn ngữ có định kiểu mạnh mẽ Điều đó có nghĩa

là mọi biến và hằng của một kiểu dữ liệu không thể tự do đem trộn lẫn với các biến và hằng của một kiểu dữ liệu khác Việc định kiểu một cách chặt chẽ như vậy đòi hỏi người lập trình phải có các biểu thức tương thích nhau về kiểu dữ liệu

- Pascal là một ngôn ngữ có cấu trúc Một ngôn ngữ có cấu trúc khối là một ngôn ngữ mà ta có thể tách các thông tin dữ liệu (biến, hằng, ) và các lệnh cần dùng cho một nhiệm vụ xác định thành những khối riêng, tách ra khỏi phần còn lại của chương trình để người lập trình có thể giải quyết dần từng phần một, từng khối một và thậm chí

có thể cho nhiều người cùng tham gia lập trình, mỗi người phụ trách một vài khối Mỗi khối ứng với một nhiệm vụ cụ thể và xác định, thường được thực hiện bằng các chương trình con Bằng cách này ta có thể viết các chương trình con sao cho các sự kiện xảy ra trong đó không làm ảnh hưởng tới các phần khác nằm ngoài chương trình Tính cấu trúc của Pascal được thể hiện trên 3 mặt:

Trang 7

+ Cấu trúc về mặt dữ liệu: Từ các dữ liệu đã có (kiểu đơn giản chuẩn hoặc dữ liệu có cấu trúc) ta có thể xây dựng các cấu trúc dữ liệu phức tạp hơn

+ Cấu trúc về mặt lệnh: Từ các lệnh đã có (lệnh đơn giản hoặc lệnh có cấu trúc) ta có thể nhóm chúng lại với nhau và đặt giữa hai từ khóa Begin và End thành câu lệnh phức tạp hơn, gọi là lệnh hợp thành hay lệnh ghép

+ Cấu trúc về mặt chương trình: Một chương trình có thể chia thành các mô-đun chương trình độc lập (chương trình con)

1.2 Các thμnh phần cơ bản của ngôn ngữ Pascal

Được xây dựng từ một bộ ký tự, các chữ viết và chữ số được kết hợp lại thành các từ, các từ tạo thành các câu, tất cả đều phải tuân theo một cú pháp và ngữ pháp chặt chẽ

a Bộ chữ viết dùng trong Turbo Pascal

Trang 8

Chương 1: Các thμnh phần cơ bản của ngôn ngữ lập trình Pascal 7

- Từ khóa chung: program, begin, end, procedure, function

- Từ khóa để khai báo: const, var, type, label, array, string, record, set, file of

- Từ khóa của lệnh lựa chọn: if then else ; case of

- Từ khóa của lệnh lặp: for to do; for downto do, while do, repeat until

- Từ khóa điều khiển: with, goto, exit

- Từ khóa các phép toán: and, or, not, in, div, mod

- Từ khóa NUL

Các từ khóa có thể viết bằng chữ thường hay chữ hoa Khi đó giá trị và ý nghĩa của chúng là như nhau, điều này khác với ngôn ngữ C/C++ mà chúng ta nghiên cứu sau này

c Tên gọi (Identifier - Định danh)

Là một khái niệm quan trọng dùng để xác định các đại lượng khác nhau trong chương trình như tên biến, tên hằng, tên kiểu, tên chương trình con, tên chương trình, tên tệp, tên nhãn Tên trong Pascal được thành lập theo quy tắc: Là một dãy ký tự bao gồm chữ cái, chữ số và dấu gạch nối Ký tự đầu tiên không được là chữ số, tên có thể có độ dài tối đa là 127 ký tự, nhưng chỉ có 63 ký tự đầu tiên là có ý nghĩa Tên không được trùng với từ khóa Pascal không phân biệt chữ thường

Một số tên chuẩn của Pascal: boolean, char, integer, word, byte, real, text, false, true, maxint, eof, eoln Các hàm chuẩn: abs, arctan, chr, cos, sin Các thủ tục chuẩn: write, writeln, read, readln

Trang 9

Ví dụ: Ta có thể định nghĩa ra một hàm có tên là SIN(x) để tính

giá trị tuyệt đối của x (nếu muốn) Song không thể dùng từ khóa Begin

để làm bất cứ việc gì ngoài quy định của bản thân nó

d Dấu chấm phảy (;)

Dấu chấm phảy ";" được dùng để ngăn cách các câu lệnh của Pascal và không thể thiếu được Không nên hiểu dấu ";" là dấu kết thúc lệnh

Turbo Pascal quy định nếu mở lời giải thích bằng dấu (* thì phải

đóng lại bằng dấu *) chứ không được đóng lại bằng dấu } Nếu mở bằng dấu { thì phải đóng lại bằng dấu } chứ không được đóng lại bằng dấu *) Dấu mở có thể có nhiều lần trước một dấu đóng

1.3 Cấu trúc chung của một chương trình Pascal

Cấu trúc chung tổng quát nhất của một chương trình Pascal gồm

Trang 10

Chương 1: Các thμnh phần cơ bản của ngôn ngữ lập trình Pascal 9

1.3.1 Phần tên chương trình

Phần tên chương trình bắt đầu bằng từ khóa Program tiếp theo là tên do người lập trình đặt có ý nghĩa nào đó đặc trưng cho công việc của chương trình và kết thúc bằng dấu chấm phảy ";" Phần tiêu đề chiếm một dòng và có thể không có cũng được

1.3.2 Phần khai báo

Phần này có nhiệm vụ khai báo các thư viện có sẵn cần sử dụng trong chương trình, mô tả đối tượng bài toán, mô tả dữ liệu sẽ được chương trình xử lý Được chia thành 7 kiểu khai báo với các từ khóa sau:

Uses Crt, Printer; (Khai báo sử dụng các thư viện)

Label (Khai báo nhãn)

Const (Khai báo các hằng số, hằng ký tự)

Type (Mô tả các kiểu dữ liệu mới)

Var (Khai báo các biến)

Procedure (Khai báo thủ tục)

Function (Khai báo hàm)

Các phần khai báo có thể có hoặc không tùy theo nhu cầu Tuy nhiên với Turbo Pascal for Windows bắt buộc phải khai báo sử dụng các thư viện

1.3.3 Phần thân chương trình

Phần này nằm giữa hai từ khóa BEGIN và END Sau từ khóa END

là dấu chấm để báo kết thúc chương trình Phần này bắt buộc phải có

đối với mọi chương trình, nó chứa các lệnh để xử lý các đối tượng số liệu đã được mô tả trong phần khai báo

1.3.4 Giới thiệu phần mềm Turbo Pascal

Turbo Pascal là sản phẩm của hãng BORLAND (Mỹ) Từ ngày xuất bản đầu tiên đến nay đã qua nhiều lần tái bản, mỗi lần tái bản đã

Trang 11

cho một phiên bản mới hơn với nhiều cải tiến hơn Các phiên bản đang

được sử dụng hiện nay là 7.0 và Turbo Pascal for Windows Đặc biệt

là Turbo Pascal 7.0 thích hợp cho các máy vi tính có dung lượng bộ nhớ nhỏ (640kB), tốc độ thấp, vì vậy phiên bản 7.0 được chọn làm mẫu để giới thiệu trong phần này

a Các tập tin của Turbo Pascal

TURBO.EXE: Soạn thảo, dịch và liên kết chương trình theo menu TURBO.TPL: Tập tin thư viện, lưu các đơn vị chuẩn để chạy với TURBO.EXE

TINST.EXE: Cung cấp các tiện ích cho phép cài đặt các thông số của TURBO.EXE như màu chữ, màu nền, viền cửa sổ…

TPC.EXE: Trình biên dịch độc lập không thông qua TURBO.EXE TPMOVER.EXE: Chuyển các đơn vị chương trình tự tạo sang tập tin thư viện chuẩn TPL

README: tập tin văn bản chứa các thông tin của Turbo Pascal README.COM: Chương trình giới thiệu các hiểu biết sơ bộ trước khi sử dụng Turbo Pascal

GRAPH.TPU: Đơn vị đồ họa

TURBO.TPH: Cung cấp các giúp đỡ khi lập trình

*.BGI: Chứa các font màn hình

*.CHR: Chứa các font chữ trong chế độ đồ họa

b Tổ chức các tập tin trên đĩa

Dùng chương trình cài đặt INSTALL.EXE và trả lời từng câu hỏi của chương trình, các tập tin sẽ tự động bung ra ghi vào trong đĩa cứng Nếu sử dụng Turbo Pascal trên đĩa mềm thì tối thiểu phải có 2 tập tin TURBO.EXE và TURBO.TPL để chạy được chương trình

Trang 12

Chương 1: Các thμnh phần cơ bản của ngôn ngữ lập trình Pascal 11

c Khởi động phần mềm Turbo Pascal

- Đưa hệ điều hành vào làm việc trên thư mục có tập tin TURBO.EXE

- Sau khi gõ vào câu lệnh trên và bấm phím Enter, chỉ độ vài giây

ta sẽ thấy xuất hiện trên màn hình:

+ Hàng trên cùng là những thực đơn chính của Pascal (Main Menu), gồm có các menu: File, Edit, Run, Compile, Option, Debug + Cửa sổ hình chữ nhật màu trắng ở giữa màn hình là những dòng

tự giới thiệu vắn tắt của TP7.0 Khi bấm Enter sẽ mất khung cửa sổ này để dành toàn bộ màn hình cho ta soạn thảo chương trình

1.3.5 Các bước cơ bản để chạy một chương trình Turbo Pascal

Bước 1: Khởi động Turbo Pascal

Với Turbo Pascal chạy trên môi trường DOS, chuyển địa chỉ làm việc đến thư mục chứa File TURBO.EXE và chạy file này Với Turbo Pascal chạy trên môi trường Windows, nháy đúp chuột tại biểu tượng Shortcut của Turbo Pascal hoặc khởi động từ nút lệnh Start/Programs/TPW rồi chọn biểu tượng TPW Khi đó xuất hiện màn hình soạn thảo với các file chương trình được mở ra là các file mà ta chưa đóng lại khi thoát khỏi Pascal ở lần chạy trước Nếu muốn ta có thể đóng các file đó lại và mở một file mới có tên NANAME00.PAS

Bước 2: Soạn thảo nội dung chương trình

a Các thao tác với file chương trình trong khi soạn thảo

F2: Ghi vào đĩa (SAVE)

F3: Mở file khác (LOAD)

Ctrl-F2: Ghi vào tên file khác

Directory: Danh mục file chương trình

OS Shell: Ra DOS tạm thời

Trang 13

b Các kỹ năng soạn thảo (menu edit)

Ctrl-Y: Xóa cả dòng ký tự chứa con trỏ, các dòng ở dưới sẽ dồn lên Ctrl-Q-Y: Xóa phần cuối dòng kể từ con trỏ

Ctrl-K-Y: Xóa cả một khối ký tự

Ctrl-Q-F: Tìm kiếm một từ nào đó

Ctrl-Q-A: Tìm và thay thế một từ nào đó

Bước 3: Dịch thử, sửa lỗi cú pháp vμ chạy chương trình

Alt-F9: Biên dịch chương trình đang làm việc để kiểm tra các lỗi

Trang 14

Chương 2: Các kiểu dữ liệu đơn giản chuẩn 13

Chương 2  CÁC KIỂU DỮ LIỆU ĐƠN GIẢN CHUẨN

2.1 Khái niệm về kiểu dữ liệu

Khái niệm kiểu dữ liệu trong Pascal cũng như các ngôn ngữ lập trình khác là rất quan trọng, nó xác định tập hợp giá trị mà biến có thể nhận Mô tả kiểu sẽ quy định loại giá trị của biến và cung cấp cho chương trình dịch những thông tin cần thiết Các kiểu dữ liệu trong Pascal như kiểu integer, real, char, boolean, byte được gọi là các kiểu dữ liệu đơn giản vì chúng là các dữ liệu không phân chia được nữa Như vậy, một kiểu dữ liệu được định nghĩa là một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận được, trên đó xác định một

số phép toán Nói cách khác một kiểu dữ liệu là một tập hợp được quy

định về cấu trúc, khoảng giá trị, cách biểu diễn và các thao tác xử lý Dữ liệu trong Turbo Pascal được chia thành hai lớp lớn là kiểu dữ liệu đơn giản (Simple Type) và kiểu dữ liệu có cấu trúc (Structure Type) Kiểu dữ liệu biểu diễn một giá trị được gọi là kiểu dữ liệu đơn giản, bao gồm:

- Kiểu logic (Boolean)

- Kiểu số nguyên (Integer)

- Kiểu ký tự (Character)

- Kiểu vô hướng liệt kê (Enumerated scalar)

- Kiểu đoạn con (Subrage)

- Kiểu số thực (Real)

- Kiểu chuỗi ký tự (String)

Trang 15

Năm kiểu đầu là kiểu dữ liệu đếm được (hay có thứ tự), chúng

được dùng làm chỉ số mảng và trong các toán tử điều khiển

Kiểu dữ liệu có cấu trúc bao gồm: Mảng, tập hợp, bản ghi và tệp

2.2 Kiểu logic (Boolean)

Một tập hợp Logic Boolean là một tập hợp chỉ có hai giá trị True (Đúng) hoặc False (Sai)

- Một dữ liệu thuộc kiểu logic là một đại lượng chỉ có thể nhận một trong hai giá trị logic True hoặc False

- Các phép toán có thể áp dụng trên kiểu logic: AND, OR, NOT, XOR Sau đây là bảng giá trị của các phép toán:

True True True True False False True False False True True False False True False True True True False False False False False True Các biểu thức quan hệ (so sánh) luôn cho kết quả kiểu Boolean

Có các phép toán quan hệ sau: <>, =, >=, <=, >, <

Hai vế của biểu thức so sánh phải cùng kiểu nhau (ngoại trừ kiểu

số thực và kiểu số nguyên) và chúng có thể là các kiểu: Real, Integer, Boolean, Char, vô hướng do người sử dụng định nghĩa

Giá trị False được coi là nhỏ hơn (đứng trước) True

2.3 Kiểu số nguyên (Integer)

- Trong toán học, số nguyên là tập hợp các số có giá trị nguyên từ

- ∞ ữ +∞ Nhưng do giới hạn biểu diễn của máy tính cũng như để tiết kiệm bộ nhớ nên Turbo Pascal cung cấp năm kiểu số nguyên được

định nghĩa với các từ khóa tương ứng với phạm vi biểu diễn của kiểu

Trang 16

Chương 2: Các kiểu dữ liệu đơn giản chuẩn 15

và số Byte cần thiết để biểu diễn một giá trị thuộc kiểu số nguyên tương ứng

+ DIV: Chia lấy phần nguyên

+ MOD: Chia lấy phần dư

+ Hàm ODD(n): Kiểm tra tính chẵn lẻ của một số nguyên, cho kết quả là True nếu n là một số lẻ, False nếu n là một số chẵn

+ Các phép toán quan hệ (<>, =, >=, <=, >, <) có thể áp dụng cho các toán hạng là số nguyên và cho kết quả trả về kiểu Boolean

Chú ý: Khi thực hiện các phép tính số học đối với số nguyên, cần

hết sức thận trọng xem các phép toán đó có cho kết quả vượt khỏi phạm vi biểu diễn số nguyên của máy không Trong trường hợp quá giới hạn, máy có thể báo lỗi

- Phép toán chia "/" hai số nguyên cho kết quả là một giá trị thực Bởi vậy trong tập hợp các số nguyên không tồn tại phép chia, nhưng vẫn có thể có phép gán mà vế trái là một biến thực, còn vế phải là một biểu thức toán học chứa phép chia của hai số nguyên

2.4 Kiểu số thực (Real)

Tập hợp các số thực có giới hạn từ -∞ ữ +∞ và các giá trị của số thực lấp đầy trục số Mặc dù vậy do mục đích tiết kiệm bộ nhớ nên Turbo Pascal định nghĩa 5 kiểu số thực với giới hạn, khả năng biểu

Trang 17

diễn số thực về độ chính xác và số lượng Byte cần thiết để biểu diễn một số thực khác nhau nhằm phục vụ cho người lập trình sử dụng tùy thuộc vào yêu cầu bài toán Các kiểu số thực bao gồm:

Kiểu Phạm vi biểu diễn Số chữ số có nghĩa Số Byte

Giải thích: Phạm vi biểu diễn của 4 kiểu đầu được hiểu như sau:

Giả sử lấy số thực Single làm ví dụ Máy có thể lưu trữ được một số kiểu Single có giá trị tuyệt đối trong khoảng từ 1.5*10-45 đến 3.4*1038

Số có giá trị tuyệt đối nhỏ hơn 1.5*10-45 được xem là bằng 0 Số có giá trị tuyệt đối lớn hơn 3.4*1038 không biểu diễn được trong máy Phạm

vi biểu diễn của các kiểu Real, Double, Extended được hiểu theo nghĩa tương tự

+ Các phép toán đối với số thực bao gồm: Cộng (+), Trừ (-), nhân (*), chia (/), khai căn (hàm SQRT), lũy thừa bậc hai (hàm SQR)

+ Các phép toán quan hệ (<>, =, >=, <=, >, <) có thể áp dụng cho các toán hạng là số thực và cho kết quả trả về giá trị kiểu Boolean

- Các hàm số học thường được dùng cho số nguyên và số thực: ABS(x): Lấy giá trị tuyệt đối, SQR(x): Lấy bình phương của x, SQRT(x): Lấy căn bậc hai của x

Một số thực bất kỳ có thể biểu diễn bằng tổng các số với mũ của 2:

i n

i i

Trang 18

Chương 2: Các kiểu dữ liệu đơn giản chuẩn 17

Trong cách biểu diễn số thực dấu chấm động, một phần của từ máy

được dùng để lưu trữ một số cố định các bit của phần định trị, phần khác lưu trữ phần mũ Chẳng hạn số 2.1E2 là 210, 5.67E-1 là 0.567

2.5 Kiểu ký tự (Character)

Ký tự là tất cả các chữ viết mà ta thường dùng như các chữ cái, các chữ số, các dấu phân đoạn câu, Kiểu ký tự được định nghĩa trong Turbo Pascal với từ khóa CHAR Một giá trị kiểu ký tự là một phần tử của một tập hợp hữu hạn các ký tự được sắp xếp có thứ tự Có nhiều cách sắp xếp bộ chữ khác nhau Tuy vậy bộ mã được dùng phổ biến để trao đổi thông tin giữa các thiết bị, nhất là máy vi tính là bộ mã ASCII

(American Standard Code Information Interchange) Phép toán phổ

biến cho các ký tự là so sánh tuần tự (collating sequence)

Các ký tự được mã hóa bằng 1 Byte, vì vậy bảng mã ký tự có thể mã hóa 256 ký tự Tuy vậy số ký tự cơ bản nhất có thể gói gọn lại trong 128 số đầu tiên và được chuẩn hóa Còn 128 số sau (có số thứ tự

từ 128 đến 255) trên máy vi tính được gọi là phần mã mở rộng và được dùng để mã hóa các ký tự riêng của một số ngôn ngữ, các ký tự toán học, các ký tự đồ họa, có nhiều bảng mã khác nhau ở phần mở rộng Trong Turbo Pascal chúng ta quan tâm chủ yếu tới phần 128 ký tự đầu của bảng mã ASCII là phần chuẩn để xây dựng bộ ký tự cho ngôn ngữ lập trình

Mã của một ký tự chính là số thứ tự của nó trong bảng mã Ví dụ

ký tự A trong bảng mã ASCII có mã là 65, ký tự B trong bảng mã ASCII có mã là 66 Khi đó phép so sánh A>B sẽ cho kết quả sai

Trong bảng mã ASCII các ký tự từ 0 đến 31 là các ký tự điều khiển không in ra được Chúng dùng để điều khiển quá trình vào ra trên các thiết bị ngoại vi Ví dụ khi máy nhận được ký tự số 7 (BEL)

nó sẽ đánh một tiếng chuông Khi nhận được các ký tự số 13 (CR: Carriage Return) và số 10 (LF: Line Feed), thiết bị ngoại vi như màn hình và máy in sẽ chuyển điểm là việc (con trỏ màn hình, đầu kim in) xuống đầu dòng tiếp theo

Trang 19

Các ký tự có vị trí trong bảng mã ASCCI từ 45 đến 57 là các chữ

số Các ký tự từ 65 đến 90 là các chữ cái hoa,

Để biểu diễn một ký tự có thể dùng một trong ba cách sau:

Cách 1: Biểu diễn hằng ký tự bằng cách đặt ký tự trong 2 dấu

Các hàm chuẩn liên quan đến kiểu ký tự:

Hàm chuẩn Ord(n): Cho số thứ tự của ký tự n trong bảng mã Hàm chuẩn Chr(n) hay #n: cho ký tự có số thứ tự là n

Hàm chuẩn Pred(ch): Cho ký tự đứng trước ch trong bảng mã Hàm chuẩn Succ(ch): Cho ký tự đứng sau ch trong bảng mã

Do quan hệ ORD('A') <ORD('C') là đúng nên ta có quan hệ 'A'<'C' là đúng (nhận giá trị TRUE)

Kiểu CHAR, INTEGER, BOOLEAN là kiểu có thứ tự Đối với kiểu

có thứ tự có thể sử dụng các hàm chuẩn ORD(x), PRED(x), SUCC(x)

Trang 20

Chương 2: Các kiểu dữ liệu đơn giản chuẩn 19

Bài tập chương 2

Bμi 1: Viết các khai báo cho các yêu cầu sau:

a) x, y là biến thực

b) Biến k sẽ nhận các giá trị trong khoảng [0,255]

c) z, t là các biến nguyên trong khoảng [-32768, + 32767]

d) k, j, i là các biến có thể nhận các giá trị nguyên trong khoảng [0, 65535]

Trang 21

Chương 3  CÁC KHAI BÁO HẰNG, BIẾN, KIỂU, BIỂU THỨC VÀ CÂU LỆNH

3.1 Hằng (Constant)

Hằng là các đại lượng có giá trị xác định và không thay đổi trong

suốt quá trình chạy chương trình Tương ứng với các kiểu dữ liệu trong

Pascal ta có các loại hằng số (nguyên, thực), hằng Boolean, hằng ký tự

(Char) và hằng chuỗi (String)

Các hằng (hằng số, hằng ký tự, hằng Boolean) được khai báo bằng

tên đặt trong phần khai báo Const ở đầu chương trình

Tên hằng = giá trị của hằng; hoặc Tên hằng = biểu thức hằng;

Biểu thức hằng là biểu thức mà các toán hạng của nó hoặc là giá

trị của hằng hoặc là tên hằng đã được khai báo trước đó

Một dòng khai báo hằng được kết thúc bằng dấu chấm phảy Tên

hằng được viết theo quy tắc viết tên đã trình bày ở chương 1

Trang 22

Chương 3: Các khai báo hằng, biến, kiểu, biểu thức vμ câu lệnh 21

3.2 Biến (Variable)

Biến là một đại lượng có giá trị thay đổi Biến của chương trình là tên của ô nhớ cất giữ dữ liệu (còn gọi là biến tên hay danh hiệu của biến) Biến ghi nhớ một dữ liệu nào đó gọi là giá trị của biến Giá trị của biến có thể được làm thay đổi trong thời gian sử dụng biến Sự truy xuất một biến nghĩa là đọc giá trị hay thay đổi giá trị của biến được

thực hiện thông qua tên biến Ví dụ: Readln(x) Biến là một cấu trúc

để ghi nhớ dữ liệu vì vậy nó phải tuân theo quy định của kiểu dữ liệu: một biến phải thuộc một kiểu dữ liệu nhất định

Mỗi kiểu của biến quy định một vùng ô nhớ và vùng ô nhớ đó chỉ

có thể chứa được các giá trị của kiểu đã khai báo

Mọi biến sử dụng trong chương trình đều cần phải được khai báo

ở đầu chương trình sau từ khóa Var bằng cú pháp:

Var

Tên biến: Kiểu dữ liệu của biến;

Ví dụ:

Var

A: Real; Ten: String[20];

B,C: Interger; X: Boolean; Chon: Char;

Trong trường hợp khai báo nhiều biến có cùng kiểu thì các biến

được cách nhau bởi dấu phảy

Riêng với biến chuỗi, nếu khai báo như trên thì ta nói biến "Ten" chứa được một dãy không quá 30 ký tự Ta nói biến "Ten" có độ dài

30 Byte Độ dài của biến chuỗi cần không quá 255 Byte

Cũng như kiểu dữ liệu, biến được chia thành hai loại: Biến kiểu

đơn giản và biến có cấu trúc Biến kiểu đơn giản gồm các biến kiểu nguyên, thực, logic, ký tự, chuỗi, vô hướng liệt kê và đoạn con Biến

có cấu trúc gồm mảng, tập hợp, bản ghi và tệp

Trang 23

3.3 Định nghĩa kiểu dữ liệu mới

Ngoài các kiểu dữ liệu cơ sở đã được Pascal định nghĩa sẵn nên khi khai báo biến ta có thể dùng trực tiếp các kiểu dữ liệu này ngay Còn các kiểu dữ liệu khác ta phải định nghĩa ra, mô tả ra một cách tường minh trong phần khai báo của chương trình Pascal cho phép ta

định nghĩa các kiểu dữ liệu khác từ các kiểu căn bản theo quy tắc xây

dựng Pascal bằng cách sử dụng từ khóa Type Sau đó sẽ khai báo các

biến thuộc kiểu dữ liệu mới mô tả

Trang 24

Chương 3: Các khai báo hằng, biến, kiểu, biểu thức vμ câu lệnh 23

Ví dụ 2: Để quản lý hồ sơ cán bộ cần quản lý các thuộc tính: họ

tên, tuổi, giới tính, chức vụ, phòng, lương Hãy định nghĩa kiểu dữ liệu NHANSU mô tả hồ sơ đó

Biểu thức là một công thức tính toán để có một giá trị theo một

quy tắc toán học nào đó Biểu thức (Expression) bao gồm: Toán tử

(Operator) và toán hạng (Operand) Toán tử được viết ra bằng dấu phép toán, toán hạng có thể là hằng, biến, hàm và các dấu ngoặc Các phần tử của biểu thức có thể được phân thành số hạng, thừa số, biểu thức đơn giản

Trang 25

toán hạng trong biểu thức quan hệ có thể là các số nguyên, số thực, ký

tự và chúng phải tương thích với nhau về kiểu

Thứ tự ưu tiên: Khi tính giá trị của một biểu thức, ngôn ngữ lập trình Pascal quy ước thứ tự ưu tiên của các phép toán trình tự tính từ trái sang phải với thứ tự ưu tiên như sau:

Dấu ngoặc ( ) Biểu thức trong dấu ngoặc được ưu tiên nhất

Các hμm

Not, - (dấu trừ) Các phép toán một ngôi

*, /, DIV, MOD, AND Các phép tính loại nhân, cùng mức ưu tiên

+, -, OR, XOR Các phép tính loại cộng, cùng mức ưu tiên

=, <>, <=, >=, <, >, IN Các phép toán quan hệ có cùng mức ưu tiên

Kiểu của biểu thức là kiểu của kết quả sau khi tính biểu thức Kiểu của biểu thức là kiểu của kết quả sau khi tính biểu thức Quy định cách viết biểu thức: Pascal quy định mỗi biểu thức chỉ

được viết trên một dòng, ngoài các dữ liệu và dấu phép toán viết theo quy định, người lập trình chỉ được dùng các cặp dấu ngoặc tròn ()

sử dụng để viết biểu thức:

abs (x) Tính giá trị tuyệt đối của x sqrt(x) Tính căn bậc hai của x sqr(x) Tính bình phương của x

ln(x) Tính ln x sin(x) Tính sin x cos(x) Tính cos x

Trang 26

Chương 3: Các khai báo hằng, biến, kiểu, biểu thức vμ câu lệnh 25

3.5 Câu lệnh (Statement)

Trong chương trình Pascal, sau phần mô tả dữ liệu là phần các câu lệnh của chương trình để xác định các công việc mà máy tính phải thực hiện để xử lý các dữ liệu đã được mô tả và khai báo Các câu lệnh cách nhau bằng dấu chấm phảy Câu lệnh được chia ra làm hai loại: Câu lệnh đơn giản và câu lệnh có cấu trúc

Câu lệnh đơn giản: Là những lệnh không chứa các lệnh khác Đó

là phép gán, lời gọi chương trình con loại Procedure (thủ tục), lệnh nhảy không điều kiện Goto

Lời gọi các chương trình con loại Procedure bao hàm rất nhiều quá trình xử lý khác nhau như:

- Vào dữ liệu: read, readln

- Ra dữ liệu: write, writeln

- Xử lý tập tin: reset, rewrite, assign

Câu lệnh có cấu trúc: Là khối lệnh, lệnh thử và rẽ nhánh, lệnh lặp

- Lệnh ghép: Begin End;

- Lệnh chọn: if then else ; case of

- Lệnh lặp: for to do , repeat until , while do

Mỗi câu lệnh của Pascal bao giờ cũng được đặt cách nhau bởi dấu chấm phảy (;) Dấu chấm phảy chỉ có tác dụng ngăn cách các câu lệnh chứ không phải là dấu kết thúc câu lệnh và nó không thuộc vào câu lệnh Turbo Pascal không bắt buộc phải viết mỗi câu lệnh trên một dòng Vấn đề là chúng ta phải trình bày chương trình sao cho đẹp, rõ ràng, thể hiện được thuật toán

3.6 Lệnh gán (assignment statement)

Một trong các lệnh đơn giản nhất của Pascal là lệnh gán

Dạng lệnh: Tên biến := biểu thức;

Trang 27

Vế trái là biến nhận kết quả của biểu thức ở vế phải, biểu thức ở vế phải cho kết quả có kiểu trùng với kiểu dữ liệu của biến ở vế trái Vai trò của hai vế khác hẳn nhau dù vế phải cũng có thể là một tên biến

Ví dụ: Khi đã khai báo:

Lệnh ghép là một nhóm câu lệnh đơn đ−ợc đặt giữa hai chữ BEGIN

và END Một câu lệnh ghép có thể chứa cả lệnh ghép bên trong Các lệnh này đ−ợc thực hiện theo thứ tự nh− đã viết trong lệnh ghép

- Cách viết:

Begin

Trang 28

Ch−¬ng 3: C¸c khai b¸o h»ng, biÕn, kiÓu, biÓu thøc vμ c©u lÖnh 27

LÖnh n;

End;

Chó ý r»ng b¶n th©n c©u lÖnh 1 còng lµ mét lÖnh ghÐp

CÊu tróc BEGIN END cña c©u lÖnh ghÐp cho ta thÊy râ h¬n tÝnh

cã cÊu tróc cña ng«n ng÷ Pascal: nhãm c¸c lÖnh thµnh tõng khèi Mét khèi lÖnh chØ cã mét ®Çu vµo vµ mét ®Çu ra

Trang 29

g) 2cosx + 3siny h) x+ +y log y2

l) ln(y+1) - sinx m) xy +1

Bμi 2: ViÕt c¸c biÓu thøc quan hÖ sau b»ng ng«n ng÷ lËp tr×nh Pascal

a) a < x < b b) b2 - 4ac < 0

c) i > 10 hoÆc i < 5 d) D = 0 vµ D1 ≠ 0 hoÆc D3 ≠ 0 e) -12 ≤ t <7 f) a = 0 vµ b ≠ 0

Bμi 3: ChuyÓn c¸c biÓu thøc viÕt trong Pascal sau ®©y thµnh biÓu thøc

to¸n th«ng th−êng:

a) SQRT(b)- 4*a*c b) (a+b)/2/a

c) (a*a + b*b)/2*a d) (x+y)/(2*a)

Bμi 4: TÝnh vµ ®−a ra mµn h×nh gi¸ trÞ cña biÓu thøc sau ®©y:

Trang 30

Ch−¬ng 3: C¸c khai b¸o h»ng, biÕn, kiÓu, biÓu thøc vμ c©u lÖnh 29

Trang 31

Chương 4  THỦ TỤC NHẬP – XUẤT DỮ LIỆU

Trong đó: bt1, bt2, , btn có thể là biến, hàm, biểu thức, hằng

mà giá trị của chúng cần đưa ra màn hình

Các bt1, bt2, btn phải cách nhau bởi dấu phảy

Màn hình thông dụng nhất của máy vi tính gồm 25 dòng và 80 cột (mỗi dòng có thể chứa 80 ký tự) Tại mỗi thời điểm, màn hình có một

vị trí làm việc thể hiện ra dưới dạng một khối sáng hoặc một nét gạch nhấp nháy gọi là con trỏ hay điểm nhắc (Cursor)

Hai thủ tục đầu tuy cùng có tác dụng đưa giá trị của bt1, bt2, , btn

ra một dòng màn hình bắt đầu từ vị trí hiện tại của con trỏ, nhưng sau

đó hoạt động của chúng khác nhau Thủ tục thứ hai sẽ đưa con trỏ xuống đầu dòng tiếp theo, còn thủ tục đầu vẫn đặt con trỏ trên dòng hiện tại ở ngay sau giá trị của biểu thức cuối cùng

Thủ tục thứ ba được dùng để chuyển con trỏ về đầu dòngtiếp theo Các biểu thức có thể là: Kiểu nguyên, thực, Boolean và ký tự Nếu biểu thức là một hằng ký tự hay hằng chuỗi thì dữ liệu kiểu này phải

được đặt giữa hai dấu nháy đơn

Trang 32

Chương 4: Thủ tục nhập - xuất dữ liệu 31

Khi dùng các thủ tục nêu trên, có hai cách viết để trình bày dữ liệu in ra, đó là cách viết không quy cách và cách viết có quy cách đối với từng kiểu dữ liệu

4.1.1 Đưa ra giá trị nguyên

+ Cách viết không quy cách: Write(I); Giá trị của biểu thức I được viết ra trên một số vị trí đúng bằng độ dài của nó

+ Cách viết có quy cách: Write(I:m); Giá trị của biểu thức I được viết ra trên ít nhất là m vị trí Khi độ dài của số nhỏ hơn m thì số được dồn về bên phải để tạo ra các khoảng trống bên trái

4.1.2 Đưa ra giá trị thực

+ Cách viết không quy cách: Write(R); Trong chế độ thông thường giá trị của biểu thức R được viết ra dưới dạng dấu phảy động trên 17 vị trí với 10 chữ số phần thập phân trong phần định trị

X.X XE±XX (đối với số dương)

-X.X XE±XX (đối với số âm)

Trong Mode 8087 số được in ra trên 23 vị trí với 14 chữ số phần thập phân trong phần định trị

X.XX XE±XXXX (đối với số dương)

-X.XX XE±XXXX (đối với số âm)

+ Cách viết có quy cách 1: Write(R:m); Đối với Mode thông thường giá trị của biểu thức R được viết ra dưới dạng dấu phảy động trên max(8,m) vị trí, trong đó có 2 ký tự để chỉ số mũ của R Trong Mode 8087, số được in ra trên max(10, m) vị trí trong đó có 4 chữ số

để biểu diễn số mũ trong cách biểu diễn của R

+ Cách viết có quy cách 2: Write(R:m:n); Giá trị của biểu thức R

được in ra trên ít nhất m vị trí, viết trong đó có n chữ số phần thập phân Khi còn dư thừa vị trí thì số được dồn về bên phải để tạo ra các khoảng trống bên trái

Trang 33

4.1.3 Đ−a ra giá trị kiểu Boolean

Việc đ−a ra giá trị kiểu Boolean có thể tiến hành theo hai cách giống nh− kiểu nguyên tức là:

+ Cách viết không quy cách: Write(OK); Giá trị của biểu thức OK

đ−ợc viết ra trên một số vị trí đúng bằng độ dài của nó

+ Cách viết có quy cách: Write(OK:m); Giá trị của biểu thức OK

đ−ợc viết ra trên ít nhất là m vị trí Khi độ dài của OK nhỏ hơn m thì

OK đ−ợc dồn về bên phải để tạo ra các khoảng trống bên trái

Trang 34

Chương 4: Thủ tục nhập - xuất dữ liệu 33

4.1.5 Đưa dữ liệu ra máy in

Để đưa dữ liệu ra máy in, ta vẫn dùng các thủ tục Write và Writeln nhưng viết thêm tham số LST và dấu phảy vào trước các giá trị các biến cần in ra Tất cả những kiểu cách đưa dữ liệu ra màn hình vẫn còn đúng khi đưa ra máy in

Biến LST được khai báo trong Unit Printer vì vậy cần khai báo UNIT này ở đầu chương trình sau từ khóa USES

Writeln(LST, X1, , Xn); Đưa giá trị của các biến X1, , Xn ra

Read(X1, X2, Xn);

Readln(X1, X2, Xn);

Các thủ tục trên cho phép nhập dữ liệu từ bàn phím gán cho các

đối số X1, X2, , Xn Trong đó X1, X2, , Xn có thể là các biến (hay phần tử mảng) nguyên, thực, ký tự, hoặc chuỗi Các dữ liệu gõ vào từ bàn phím được cách nhau bởi dấu cách với số lượng dấu cách không

Trang 35

quan trọng, song ít nhất phải là một được dùng để ngăn cách các số liệu khi đọc

Trong khi đọc dữ liệu, thủ tục này còn kiểm tra xem các dữ liệu

gõ vào có tương thích với kiểu dữ liệu của biến hay không Từ Version 4.0 trở đi, nếu ta chưa gõ dữ liệu tương ứng cho các biến trong thủ tục Readln thì máy sẽ vẫn tiếp tục chờ, cho dù đã gõ phím Enter nhiều lần Kết thúc việc nhập dữ liệu nhấn phím Enter Thủ tục này cũng cho phép nhập dữ liệu từ File, nhưng sau mỗi lần thực hiện lệnh, con trỏ sẽ tiếp tục chuyển xuống dòng tiếp theo của File để đọc dữ liệu thuộc dòng dưới ngay cả khi tại dòng đó vẫn còn dữ liệu chưa được đọc Khi gặp các câu lệnh này, máy dừng để đợi nạp số liệu Quy tắc thu nhận ký tự của từng kiểu biến như sau:

- Mỗi phím sẽ cho một ký tự, riêng phím Enter cho 2 ký tự: CR (mã 13) và LF (mã 10)

- Biến số (nguyên, thực) bỏ qua CR, LF và dấu cách (Space) Sau khi đã nhận được một chữ số thì nhấn phím Space hoặc Enter sẽ kết thúc việc nhận số liệu của biến số Các ký tự do phím này tạo ra sẽ dành cho biến tiếp theo

Chú ý: Biến nguyên chỉ nhận được dãy ký tự biểu diễn các giá trị

nguyên trong phạm vi biểu diễn của nó Với biến kiểu số, máy chỉ ra khỏi lệnh này khi đã bấm một số ký tự đủ để cung cấp giá trị cho tất cả các biến và phải bấm thêm phím Enter Các ký tự thừa sẽ bị bỏ qua (không được xét đến trong các thủ tục Readln hay Read tiếp theo)

- Biến ký tự (char) chỉ nhận đúng một ký tự Các ký tự còn lại dành cho biến tiếp theo

- Biến chuỗi nhận được một số ký tự không vượt quá độ dài của

nó Các ký tự còn lại dành cho biến tiếp theo Phím Enter kết thúc việc nhận số liệu của một dãy liên tiếp các biến chuỗi Biến nào chưa kịp nhận gì sẽ chứa xâu rỗng Các ký tự do phím Enter phát ra sẽ dành cho biến số hoặc biến ký tự đứng ngay sau dãy các biến chuỗi nói trên

Trang 36

Chương 4: Thủ tục nhập - xuất dữ liệu 35

Chú ý: Thủ tục Read(X1, X2, Xn) chỉ khác thủ tục Readln(X1,

X2, Xn) ở một điểm là: Các giá trị nạp từ bàn phím sau khi đã lần lượt gán cho các đối số X1, X2, Xn thì các ký tự dư thừa sẽ dành lại cho thủ tục Read hay Readln tiếp theo

Ghi chú: Việc dùng thủ tục Read(X1, X2, Xn) cũng như dùng

nhiều kiểu biến trong thủ tục Readln(X1, X2, Xn) thường dẫn tới những tình huống rắc rối Bởi vậy để việc nạp dữ liệu được chính xác chỉ nên dùng thủ tục Readln(X1, X2, Xn) Và trong một thủ tục chỉ nên dùng một biến kiểu String hoặc một biến kiểu Char, chỉ dùng nhiều biến với kiểu số nguyên và thực

Readln: Dừng chương trình, đợi phím Enter mới tiếp tục

Hàm ReadKey: Hàm này buộc máy tạm dừng để đợi nhận một ký

tự từ bàn phím Không cần bấm Enter trong trường hợp này để xác nhận, ký tự được nhập vào không hiển thị lên màn hình

Hàm Keypressed: Hàm này có kiểu Boolean, cho giá trị là True

nếu có một phím được bấm và False nếu ngược lại Ký tự được bấm không hiển thị lên màn hình nhưng có thể nhận được nhờ một hàm Readkey viết sau hàm Keypressed

Trang 37

Bài tập chương 4

Bμi 1: Viết chương trình nhập họ và tên, bậc lương, ngày công trong

tháng, phụ cấp, hệ số trách nhiệm, tạm ứng In ra màn hình họ tên, tiền lương và tiền còn được lĩnh; biết rằng công thức được tính toán như sau:

Tiền lương = Bậc lương/30 * Ngày công * Hệ số trách nhiệm + Phụ cấp

Tiền còn được lĩnh = Tiền lương - Tạm ứng

Bμi 2: Viết chương trình nhập vào chu vi của một hình chữ nhật, sau

đó tính diện tích lớn nhất mà hình chữ nhật đó có thể có được; biết rằng trong các hình chữ nhật có chu vi bằng nhau thì hình vuông có diện tích lớn nhất

Bμi 3: Viết các chương trình nhập vào hai số nguyên không có 3 chữ

số, rồi in kết quả phép tính nhân hai số đó theo dạng:

Bμi 5: Viết chương trình nhập x từ bàn phím, tính và đưa ra màn hình

giá trị của biểu thức sau:

Trang 38

Chương 5: Kiểu vô hướng liệt kê vμ kiểu khoảng con 37

Chương 5  KIỂU Vễ HƯỚNG LIỆT Kấ

VÀ KIỂU KHOẢNG CON

5.1 Kiểu vô hướng liệt kê (Enumerated scalar type)

Ngôn ngữ lập trình Turbo Pascal đã cung cấp các kiểu dữ liệu cơ

sở là Số nguyên, Số thực, Boolean, và Char Một kiểu dữ liệu vô hướng

có thể được định nghĩa như là một tập hợp các giá trị được sắp xếp theo một thứ tự tự nhiên Một biến khi được khai báo là kiểu vô hướng nào đó có thể nhận một giá trị trong tập các giá trị đó Ví dụ như kiểu Boolean có thể được định nghĩa như là một tập gồm hai giá trị là FALSE và TRUE, trong đó FALSE có thứ tự nhỏ hơn TRUE

Turbo Pascal còn cho phép người lập trình có thể tự định nghĩa ra các kiểu vô hướng mới bằng cách liệt kê các giá trị của kiểu vô hướng mới thông qua các tên do người lập trình đặt ra Danh sách các giá trị này được đặt trong ngoặc đơn và được mô tả bằng một tên kiểu trong phần mô tả kiểu (phần Type) Kiểu vô hướng định nghĩa theo cách này

được gọi là kiểu liệt kê

Kiểu liệt kê được định nghĩa bằng cách liệt kê tất cả các giá trị có thể có theo mẫu khai báo:

TYPE Tên_kiểu = (Tên1, Tên2, Tênk);

Ví dụ:

TYPE

Color = (Red, Blue, Green, White, Black);

Xedap = (Eska, Peugeot, Phuong_hoang, Thong_nhat);

Trang 39

Một biến vô hướng có thể định nghĩa thông qua các kiểu đã được mô tả trong phần Type như sau:

Ngày: (Chủ nhật, Hai, Ba, Tư, Năm, Sáu, Bảy);

Do tính tương thích, một biến được định nghĩa là kiểu này sẽ không thể nhận giá trị của kiểu khác

Trong định nghĩa của kiểu vô hướng tồn tại một thứ tự tuyến tính theo thứ tự liệt kê và phần tử đầu tiên có số thứ tự là 0 Các hàm chuẩn sau đây được áp dụng cho kiểu vô hướng:

- Hàm thứ tự ORD(X): Cho ta số thứ tự của X trong kiểu vô hướng

đếm được Hàm ORD thực chất là hàm biến đổi một giá trị kiểu vô hướng đếm được sang giá trị kiểu số nguyên Thông qua hàm ORD có thể so sánh hai giá trị vô hướng đếm được có cùng kiểu: Giá trị có số thứ tự nhỏ sẽ nhỏ hơn giá trị có số thứ tự lớn hơn Nghĩa là thứ tự liệt

kê khi định nghĩa kiểu vô hướng cũng chính là thứ tự sắp xếp từ nhỏ

đến lớn

- Hàm PRED(X): Cho giá trị đứng trước X trong định nghĩa kiểu của X

- Hàm SUCC(X): Cho giá trị tiếp theo của X

Ví dụ: Ord(Green) = 2; Pred(Green) = Blue; Succ(Green) = White

là các phép so sánh đúng

Chú ý:

Thủ tục Write hoặc Writeln chỉ chấp nhận đưa ra các giá trị thuộc kiểu vô hướng chuẩn và không thể viết ra một giá trị vô hướng thuộc

Trang 40

Chương 5: Kiểu vô hướng liệt kê vμ kiểu khoảng con 39

kiểu liệt kê Muốn viết tên giá trị của biến vô hướng liệt kê, ta có thể

áp dụng thủ thuật sau:

IF Mau = Black Then Writeln('Black');

Thủ tục Read và Readln cũng chỉ cho phép đọc vào từ bàn phím các giá trị của các biến có kiểu vô hướng chuẩn Chúng cũng không cho phép đọc trực tiếp các giá trị kiểu liệt kê Có thể dùng phương pháp sau:

Đọc số thứ tự của giá trị biến vô hướng rồi biến đổi kiểu dữ liệu

5.2 Kiểu khoảng con (Sub-range Type)

Trong Pascal kiểu vô hướng bao gồm: kiểu Real là kiểu không

đếm được, các kiểu còn lại là kiểu đếm được hay kiểu có thứ tự

Trong nhiều trường hợp một biến chỉ lấy giá trị trong một khoảng

được xác định bởi giá trị giới hạn dưới và giá trị giới hạn trên thuộc một kiểu vô hướng đếm được nào đó Chẳng hạn, tuổi thọ của người có thể được giới hạn từ 0 đến 200

Khi đó ta có thể định nghĩa ra kiểu khoảng con như sau:

Ngày đăng: 03/12/2015, 15:37

TỪ KHÓA LIÊN QUAN

w