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

Giáo trình huong dan tự hoc pascal

171 198 1

Đ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

Nội dung

Pascal là một trong các ngôn ngữ lập trình cấp cao được giáo sư Niklaus Wirth ở trường kĩ thuật Zurich (Thụy Sĩ ) thiết kế và công bố vào năm 1971. Ông đặt tên cho ngôn ngữ này là Pascal để tưởng nhớ đến Blaise Pascal, nhà toán học, triết học nổi tiếng của Pháp ở thế kỉ XVII, người đã sáng chế ra máy tính cơ khí đầu tiên cho nhân loại.Ngày nay, Pascal là một trong những ngôn ngữ lập trình bậc cao ưu việt nhất trong lĩnh vực giảng dạy và lập trình chuyên nghiệp.) Pascal là một ngôn ngữ có định kiểu rõ ràng : _ Mọi biến và hằng của kiểu dữ liệu nào chỉ được gán các giá trị của đúng kiểu dữ liệu đó, không được tự do đem gán cho các giá trị của kiểu dữ liệu khác._ Việc định kiểu một cách chặt chẽ như vậy khiến cho người lập trình luôn luôn phải có các biểu thức tương thích với nhau về kiểu dữ liệu.Pascal là một ngôn ngữ thể hiện tư duy lập trình có cấu trúc :_ Dữ liệu được cấu trúc hóa : từ dữ liệu đơn giản hoặc có cấu trúc đơn giản người lập trình có thể xây dựng các dữ liệu có cấu trúc phức tạp hơn._ Mệnh lệnh được cấu trúc hóa : từ các lệnh chuẩn đã có, người lập trình có thể nhóm chúng lại với nhau và đặt giữa hai từ khóa Begin và End khiến chúng trở thành một ngôn ngữ phức tạp hơn gọi là lệnh hợp thành hay lệnh ghép._ Chương trình được cấu trúc hóa : một chương trình có thể chia thành các chương trình con tổ chức theo hình cây phân cấp. Mổi chương trình con nhằm giải quyết một nhiệm vụ xác định cụ thể, điều này giúp cho người lập trình có thể giải quyết từng phần một, từng khối một và có thể cho nhiều người tham gia lập trình, mỗi người phụ trách một vài khối.

Giáo trình Pascal NGƠN NGỮ LẬP TRÌNH PASCAL Nguồn gốc Pascal ngơn ngữ lập trình cấp cao giáo sư Niklaus Wirth trường kĩ thuật Zurich (Thụy Sĩ ) thiết kế công bố vào năm 1971 Ơng đặt tên cho ngơn ngữ Pascal để tưởng nhớ đến Blaise Pascal, nhà toán học, triết học tiếng Pháp kỉ XVII, người sáng chế máy tính khí cho nhân loại Ngày nay, Pascal ngơn ngữ lập trình bậc cao ưu việt lĩnh vực giảng dạy lập trình chuyên nghiệp Tính chất bản: a) Pascal ngơn ngữ có định kiểu rõ ràng : _ Mọi biến kiểu liệu gán giá trị kiểu liệu đó, không tự đem gán cho giá trị kiểu liệu khác _ Việc định kiểu cách chặt chẽ khiến cho người lập trình ln ln phải có biểu thức tương thích với kiểu liệu b) Pascal ngôn ngữ thể lập trình có cấu trúc : _ Dữ liệu cấu trúc hóa : từ liệu đơn giản có cấu trúc đơn giản người lập trình xây dựng liệu có cấu trúc phức tạp _ Mệnh lệnh cấu trúc hóa : từ lệnh chuẩn có, người lập trình nhóm chúng lại với đặt hai từ khóa Begin End khiến chúng trở thành ngôn ngữ phức tạp gọi lệnh hợp thành hay lệnh ghép _ Chương trình cấu trúc hóa : chương trình chia thành chương trình tổ chức theo hình phân cấp Mổi chương trình nhằm giải nhiệm vụ xác định cụ thể, điều giúp cho người lập trình giải phần một, khối cho nhiều người tham gia lập trình, người phụ trách vài khối Các phần tử ngôn ngữ Pascal : a) Bộ kí tự : _ Bộ 26 chữ Latin : Chữ lớn : A, B, C, …, Z Chữ nhỏ : a, b, c, …, z _ Kí tự gạch nối : _ Bộ chữ số thập phân : 0, 1, 2, …, _ Các kí hiệu toán học : +, -, *, /, +, , ( ), [ ] b) Từ khóa : _ Từ khóa chung : Program, Begin, End, Procedure, Function … _ Từ khóa để khai báo : Const, Var, Type, Array, String, Record … _ Từ khóa lệnh lựa chọn : If … Then … Else, Case … Of _ Từ khóa của lệnh lặp : For … To … Do, While … Do _ Từ khóa điều khiển : With, Goto, Exit _ Từ khoá toán tử : And, Or, Not, In, Div, Mod c) Tên chuẩn : Trong Pascal có tên chuẩn sau : Boolean, Char, Integer, Word, Byte, Real, Text False, True, Maxint Abs, Arctan, Chr, Cos, Sin, Eof, Eoln Exp, Ln, Odd, Ord Round, Trunc, Sqr, Sqrt, Pred, Succ -1- Giáo trình Pascal Dispose, New, Get, Put, Read, Readln Write,Writeln Reset, Rewrite d) Danh hiệu tự đặt : Trong Pascal, để đặt tên cho biến, hằng, kiểu, chương trình người ta dùng danh hiệu Danh hiệu Pascal bắt đầu chữ cái, sau chữ cái, chữ số, dấu nối Bài 2: CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH PASCAL Chương trình viết Pascal gồm phần sau: Program Ten_chuong_trinh ; (* Phần khai báo liệu *) Label … Const … Type … Var … (* Phần mơ tả chương trình *) Procedure … Fuction … (* Thân chương trình *) Begin … (* Các lệnh viết *) End (* Kết thúc chương trình *) Ví dụ: Program Ve_hinh ; Var a, x : Integer ; { -} Procedure Hinh_chu_nhat ; Begin Writeln ('*******') ; Writeln ('* *') ; Writeln ('* *') ; Writeln ('*******') ; End ; { -} BEGIN Write ('Ve hinh chu nhat : ') ; Readln (x) ; a := ; Repeat a := a + ; Hinh_chu_nhat ; Until a = x ; END Giải thích sơ lược phần chương trình: a) Phần tiêu đề: Cho biết tên chương trình -2- Giáo trình Pascal Ví dụ : Program Ve_hinh ; Phần ln khóa Program chấm dứt dấu " ; " Phần tiêu đề khơng có b) Phần khai báo liệu: Khai báo biến xác định rõ xem biến thuộc kiểu liệu Một chương trình Pascal thường có khai báo liệu sau : Const (* Khai báo *) … Type (* Khai báo kiểu liệu *) … Var {Khai báo biến} Phần khai báo có khơng, tuỳ theo nhu cầu Ví dụ : Chương trình có kiểu biến a, x Chúng thuộc kiểu liệu Integer, tức số nguyên c) Phần khai báo chương trình con: Phần mơ tả nhóm lệnh đặt tên chung chương trình để thân chương trình gọi đến nhóm lệnh thi hành Ví dụ : Procedure Hinh_chu_nhat ; Begin Writeln (' ******** ') ; Writeln (' * * ') ; Writeln (' * * ') ; Writeln (' ******** ') ; End ; Phần có khơng tùy theo nhu cầu d) Phần thân chương trình: Nằm Begin End, lệnh mà chương trình cần thực Sau từ End dấu chấm (.) để báo kết thúc chương trình Phần bắt buộc phải có chương trình Ví dụ : BEGIN Write (' I like Pascal ') ; END e) Dấu chấm phẩy: Dấu chấm phẩy (;) dùng để ngăn cách câu lệnh Pascal khơng thể thiếu f) Lời giải thích: Các lời giải thích đặt hai kí hiệu : {} (* *) Phần giải thích phần trao đổi thông tin người với người, máy bỏ qua Ví dụ : -3- Giáo trình Pascal Var X : Integer ; (* Số hình vng phải vẽ *) Bài 3: KHÁI NIỆM CHUNG VỀ DỮ LIỆU VÀ KIỂU DỮ LIỆU Chúng ta định nghĩa liệu (Data) tất máy tính xử lý Các loại liệu cần tới máy tính xử lý có nhiều, tồn nhiều dạng khác chất, ý nghĩa, không riêng số liệu mà kí tự, mệnh đề logic, thể qua đối tượng cụ thể cần xử lý tiền lương, địa chỉ, tên tuổi, văn bản, tín hiệu Song xét phương diện điện tử máy tính hiểu thông tin biểu diễn dạng mã nhị phân.Về phương diện ngơn ngữ bậc cao liệu khái quát hóa với kiểu liệu Khi này, ta không cần quan tâm đến biểu diễn chi tiết máy tính kiểu liệu Một kiểu liệu (Data Type) định nghĩa với điểm : _ Một tập hợp giá trị mà biến thuộc kiểu nhận _ Trên xác định phép tốn Cần nhớ biến phải gắn liền với kiểu liệu mà Trong ngôn ngữ Pascal, kiểu liệu phức tạp nói chung định nghĩa từ kiểu đơn giản nhất, khơng có cấu trúc Kiểu vơ hướng (Scalar Type) hay kiểu đơn giản (Simple Type) kiểu liệu gồm tập giá trị xếp theo thứ tự tuyến tính Chúng ta nghiên cứu kĩ kiểu vô hướng kiểu liệu phức tạp khác Trong phần tiếp theo, nói kiểu liệu vơ hướng đơn giản nhất, định nghĩa sẵn gọi kiểu đơn giản chuẩn (Simple Standar Type) _ Trước vào nghiên cứu kiểu số nguyên kiểu số thực quen biết, xét khái niệm kiểu Logic ( Boolean ) Trong thực tế thường hay gặp loại đại lượng có hai giá trị : Đúng Sai Ví dụ mệnh đề, câu hỏi, phép toán xem xét xem hay sai Ví dụ ta viết < mệnh đề có giá trị Sai _ Theo định nghĩa, giá trị thuộc kiểu logic Boolean đại lượng nhận hai giá trị Logic: TRUE (đúng) FALSE (sai) True False tên giá trị định nghĩa sẵn Kiểu Boolean định nghĩa sẵn quan hệ thứ tự False < True _ Các phép tốn sau áp dụng cho giá trị Boolean cho ta kết kiểu Boolean + Phép And ( phép "và" logic ) + Phép Or ( phép "hoặc" logic ) + Phép Not ( phép "đảo" hay "phủ định" logic ) + Phép Xor ( phép "hoặc triệt tiêu" ) Ví dụ1 : False And True = False Not False = True _ Chúng ta tóm tắt quy tắc thực phép And Or sau : + Phép And cho kết True hai toán hạng True + Phép Or cho kết False hai toán hạng False + Phép Xor luôn cho kết True hai tốn hạng khác Còn hai tốn hạng giống nhau, Xor cho kết False -4- Giáo trình Pascal * Hai vế biểu thức so sánh phải kiểu ( trừ kiểu thực nguyên ) chúng kiểu Real, Integer, Char, Boolean, Vô hướng người sử dụng định nghĩa (sẽ học sau ) Ví dụ : 3 10 cho ta giá trị False Cách viết < True không chấp nhận hai vế biểu thức khơng kiểu cho phép : thuộc kiểu số nguyên, True thuộc kiểu Boolean Kiểu số nguyên máy định nghĩa sẵn với từ khóa INTEGER Một giá trị kiểu số nguyên phần tử tập số nguyên mà ta biểu diễn máy, nghĩa tập nhỏ khơng gian số nguyên tất số ngun xử lý máy tính Thông thường nhất, số nguyên biểu diễn hai byte (16 bit) nên phạm vi từ -32768 đến + 32767 Các số nguyên viết dãy chữ số 0, 1, 2, với chữ số đầu dấu dương + dấu âm -, khơng có dấu Ví dụ : +234, -32767, -1, 23 Maxint tên giá trị cực đại cho phép kiểu nguyên, tức Maxint = + 32767 a) Các phép tính số học số nguyên: _ Phép cộng trừ : với kí hiệu + - thường lệ _ Phép nhân : kí hiệu dấu * _ Phép chia : kí hiệu dấu / _ Phép chia lấy phần nguyên thực với từ khóa Div Ví dụ : 14 Div cho giá trị _ Phép chia lấy số dư số nguyên, gọi Modun, thực với từ khóa Mod Ví dụ : 14 Mod cho giá trị _ Hàm Boolean Odd(n) cho giá trị True n số lẻ, False n số chẳn * Khi thực phép tính số học số nguyên, cần thận trọng xem phép tốn có cho kết vượt khỏi phạm vi biểu diễn số ngun máy khơng Ví dụ : 32000 + 800 - 2000 = 29200 song máy tính xử lý sai lúc làm phép cộng 32000 với 800 cho kết trung gian 32800, vượt giới hạn 32767 máy Máy phát báo lỗi trường hợp giới hạn b) Các phép tính quan hệ số nguyên: Các số nguyên so sánh với với số thực qua phép toán quan hệ nói mục trước Kết phép tốn quan hệ kiểu Boolean tức có giá trị True (Đúng) False (Sai) Ví dụ : Biểu thức < cho ta giá trị True c) Mô tả số nguyên với Byte, Word, LongInt, ShortInt : Bên cạnh cách biểu diễn số nguyên (biểu diễn byte), Pascal có thêm kiểu đơn giản chuẩn làkiểu biểu diễn số nguyên byte Phạm vi biểu diễn số nguyên từ đến 255 gọi kiểu Byte Ngoài ra, Turbo Pascal từ Version 4.0 trở số Pascal khác đưa thêm vào định nghĩa kiểu số nguyên với từ khoá Word, ShortInt (Short Integer), LongInt (Long Integer) -5- Giáo trình Pascal Kiêu Pham vi biêu diên Kích thuoc (byte) Byte ShortInt Integer 255 -128 127 -32768 32767 1 Word LongInt 65535 -2147483648 3147483647 Kiểu số thực (Real): Tương tự định nghĩa kiểu số nguyên, kiểu số thực tập hợp số thực biểu diễn máy tính máy định nghĩa sẵn với từ khóa REAL Các phép tốn cộng (+), trừ (-), nhân(*), chia (/) phép toán quan hệ (=, < >, , > =, = Round(x) = Trunc(x + 0.5) + Nếu x < Round(x) = Trunc(x - 0.5) Máy tính điện tử khơng có khả xử lý liệu số ngun, số thực mà có khả xử lý liệu kiểu kí tự ta soạn thảo văn bản, quản lý hồ sơ Các kí tự tất chữ viết mà ta thường dùng chữ a, b, c , chữ số từ đến 9, dấu phân đoạn ;, !, Kiểu kí tự định nghĩa Pascal với từ khóa Char Một giá trị kiểu kí tự phần tử tập hữu hạn kí tự xếp có thứ tự Tất máy tính dùng tập kí tự để trao đổi thơng tin qua thiết bị vào Có nhiều cách xếp chữ khác không tồn chữ chuẩn cho tất máy tính Tuy mã kí tự dùng phổ biến để trao đổi thông tin thiết bị máy vi tính, mã kí tự ASCII (xem phần Phụ lục) Trong bảng mã ASCII, kí tự từ đến 31 kí tự điều khiển, khơng in được, dùng để điều khiển thiết bị ngoại vi, điều khiển thủ tục trao đổi thơng tin Ví dụ thiết bị nhận kí tự số (Bel), máy tiếng chng Kí tự số 27 (Esc) thường dùng để khỏi tình huống, để nhận biết mã đặc biệt khác điều khiển máy in dãy kí tự bắt đầu Esc Phần lại bảng mã ACSII bố trí toàn chữ A, B, C , chữ số từ đến 9, dấu chấm câu, kí tự đặc biệt Ví dụ nhận kí tự số 50 máy lên hình chữ số Riêng kí tự 127 (Del) lại dùng làm kí tự điều khiển xóa Nếu bạn dùng Editor , phím Del hình phím tạo mã số 127 để xóa kí tự hình Có hàm chuẩn Ord Chr cho phép thiết lập tương quan mã kí tự tập số tự nhiên + Ord( ) - Hàm Ord('c') cho ta số thứ tựtự 'c' bảng mã + Chr( ) - Hàm Chr(n) cho ta kí tự có số thứ tự n Hàm chuẩn Pred (trước) Succ (tiếp theo sau) áp dụng cho đối số kí tự, kết kí tự Giả sử Ch kí tự đó, : + Hàm chuẩn Pred(Ch) cho ta kí tự nằm trước kí tự Ch bảng mã kí tự : Pred(Ch) = Chr(Ord(Ch) - 1) + Hàm chuẩn Succ(Ch) cho ta kí tự nằm sau kí tự Ch bảng mã kí tự : Succ(Ch) = Chr(Ord(Ch) + 1) Khai báo hằng: -7- Giáo trình Pascal Hằng đại lượng khơng thay đổi giá trị Có loại số (nguyên thực), kí tự, Boolean Khai báo : (hằng số, kítự, Boolean) khai báo tên đặt phần khai báo Const đầu chương trình Cách viết : Tên_hang := Giá_tri_cua_hang ; Một dòng khai báo kết thúc dấu chấm phẩy Tên viết theo quy tắc viết tên trình bày chương trước Ví dụ : Const B = True ; A=5; Pi = 3.14 ; CCC = ‘Z’ ; (* Boolean *) (* số nguyên *) (* số thực *) (* kí tự *) * Các giữ nguyên giá trị suốt chương trình Khai báo biến: Biến (variance) đại lượng thay đổi giá trị Tên biến chương trình tên nhớ cất giữ liệu Khác với hằng, biến thay đổi đựoc giá trị Các biến khai báo cách đặt tên biến vào phần khai báo biến đầu chương trình, sau từ khóa Var Cách viết : Tên_biên : Kiêu_du_liêu_cua_biên ; Dấu hai chấm bắt buộc phải có để ngăn cách hai phần khai báo biến Dấu chấm phẩy kết thúc dòng khai báo Nhiều biến có kiểu đựoc khai báo với cách viết tên biến đặt cách qua dấu phẩy (,) biến M23, A25, AAA ví dụ : Var M23, A25, AAA : Real ; My_name : String [ 25 ] ; Y : Boolean ; X : Integer ; a) Chúng ta làm quen với khái niệm kiểu liệu Đối với kiểu liệu sở (real, Integer, Byte, Char, Boolean) Pascal định nghĩa sẵn nên khai báo biến ta dùng trực tiếp kiểu kiệu Còn kiểu liệu khác ta phải định nghĩa ra, mô tả cách tường minh phần khai báo chương trình sau từ khóa Type Sau khai báo biến thuộc kiểu liệu mơ tả Chúng ta tìm hiểu sau b) Cách khai báo Type Tên kiêu = Mô ta xây dung kiêu ; Ví dụ: Type -8- Giáo trình Pascal SoNguyen = integer ; Ten = String[11] ; Tuoi = 100 ; Color = (Red, Blue, Green) Thu = (ChuNhat, ThuHai, ThuBa, ThuTu, ThuNam, ThuSau, ThuBay) ; Và khai báo kiểu ta có quyền sủ dụng để khai báo biến Ví dụ: Var I, J : SoNguyen ; Khach_hang : Ten ; T : Tuoi ; Mau : Color ; Ngay_hoc : Thu ; Biểu thức (Expression) cơng thức tính tốn để có giá trị theo quy tắc tốn học Một biểu thức bao gồm : tốn tử (operator) toán hạng (operand) Toán tử đựoc viết dấu phép tốn Tốn hạng hằng, hàm, biến Các phần tử biểu thức phân thành số hạng, thừa số, biểu thức đơn giản Ví dụ: + PI * Sin ( x) ; Trong ví dụ này, tốn tử (các phép toán) la phép cộng (+) phép nhân (*) Các toán hạng số PI, hàm Sin với đối số biến X * Biểu thức số học biểu thức có giá trị số (là Integer, Byte, Real) * Biểu thức logic Bun ( Boolean ) biểu thức có giá trị True False * Một biểu thức chứa toán tử quan hệ ( , , =, = ) đựoc gọi biểu thức Boolean đơn giản hay biểu thức quan hệ Các toán hạng biểu thức quan hệ số nguyên, số thực, kí tự chúng phải tương thích kiểu Ví dụ minh họa trình tự tính tốn : + * = + ( * ) = 22 / * = ( / ) * = 7.5 18 Div * = ( 18 Div ) * = 16 * ( + ) = * = 16 Ví dụ: Để giải phương trình bậc hai ta phát biểu điều kiện hệ số A, B, C sau : Nếu ( (A = 0) And (B = 0) And (C = 0) ) = True tốn khơng có lời giải viết gọn : Nếu (A = 0) And (B = 0) And (C = 0) tốn khơng có lời giải Bài 4: CÁC CÂU LÊNH TRONG PASCAL -9- Giáo trình Pascal Câu lệnh ( Instruction, Statement ): Bên cạnh phần mô tả liệu phần phấn lệnh (intruction) chương trình Phần xác định cơng việc mà chương trình phảo thực để xử lý liệu mô tả khai báo Các câu lệnh cách dấu chấm phẩy Câu lệnh chia hai loại : _ Câu lệnh đơn giản : câu lệnh khơng chứa lệnh khác Đó phép gán, lời gọi chương trình loại Procedure ( thủ tục ) bao hàm nhiều trình xử lý khác : + Vào liệu : Read, Readln + Ra liệu : Write, Writeln + Xử lý tập tin : Reset, Rewrite, Assign _ Câu lệnh có cấu trúc : khối lệnh, lệnh thử rẽ nhánh, lệnh lặp Lệnh hợp thành hay lệnh ghép bao gồm nhiều lệnh đơn giản có có lệnh ghép bên Các lệnh thực theo thứ tự viết lệnh ghép Nó Begin kết thúc từ End Mỗi câu lệnh Pascal đặt cách dấu chấm phẩy (;) Dấu chấm phẩy có tác dụng ngăn cách câu lệnh dấu kết thúc câu lệnh khơng phụ thuộc vào câu lệnh.Pascal khơng bắt buộc viết câu lệnh dòng Vấn đề phải trình bày chương trình sau cho đẹp, rõ ràng, thể thuật tốn Ví dụ : viết liền dòng chương trình : X := ; Y := < * ; Z := Pi ; viết thành dòng : X := ; Y := < * ; Z := Pi ; * Phép gán : Phép gán dùng để gán giá trị biểu thức, vào biến Phép gán kí hiệu := Biến := Biểu_thức ; Vế trái phép gán biến mà thơi Ví du : X := ; (* có nghĩa biến X nhận giá trị *) Y := True ; (* có nghĩa biến Y nhận giá trị True *) X := X + ; (* có nghĩa giá trị X giá trị X cộng với Ví dụ lúc đầu X có giá trị sau thực câu lệnh này, X có giá trị Xin bạn nhớ lại cho X tên ô nhớ X + đựoc hiểu lấy nội dung ô nhớ X đem cộng với 3, sau lại để vào nhớ X *) * Tính tương thích kiểu liệu Nguyên tắc chung dùng phép gán kiểu biến kiểu biểu thức vế phải phải giống Ví dụ : Một biến ngun I khơng thể nhận giá trị kí tự - 10 - Giáo trình Pascal Ghi Định hướng dịch $E thiết lập hay không việc kết nối với thư viện thời gian thực tạo đồng sử lý số học 80 x 87 đồng sử lý khơng có máy Khi bạn dịch chương trình với { $N+, E+ } , Turbo Pascal liên kết với tạo 80 x 87 đầy đủ Tệp EXE nhận được dùng máy có đồng xử lý máy hay không Nếu thấy co 80 x 87 , Turbo Pascal sử dụng đồng xử lý , khơng thư viện thực tạo để chạy ( lấy phần mềm thay cho phần cúng ) Trong trạng thái { $N+, E- } , Turbo Pascal tạo chương trình chạy có đồng xử lý số học Chuyển mạch bật/tắt tạo cho 80 x 87 không đem lại kết sử dụng unit , nghĩa áp dụng cho việc dịch chương trình Thêm chương trình tất unit chương trình dịch với trạng thái { $N- } thư viện thời gian thực cho 80 x 87 không yêu cầu việc chuyển mạch cho tạo 80 x 87 bị bỏ qua ENDIF DIRECTIVE CONDITIONAL COMPILATION Cú pháp { $ENDIF } Ghi Kết thúc phần dịch có điều kiện viết tắt { IF xxx ) Ví dụ Xem mục DEFINE EXTENDED SYNTAX SWITCH Cú pháp { $X+ } { $X- } Mặc định { $X+ } Kiểu Global Ghi Pascal Định hướng dịch $X chuyển bật / tắt cú pháp mở rộng Turbo • Các câu lệnh hàm Trong chế độ { $X+ } , lời gọi hàm thực thủ tục , nghĩa kết lời gọi hàm hủy bỏ Nói chung tính tốn thực hàm biểu diễn qua kết , việc hủy bỏ kết điều nhạy cảm nhỏ Tuy nhiên số trường hợp , hàm thực nhiều thao tác vào tham số , số trường hợp lại khơng tạo kết hữu ích Trong trường hợp , mở rộng { $X+ } cho phép hàm xử lý thủ tục - 157 - Giáo trình Pascal • Các xâu kết thúc kí tự Null Một định hướng dịch { $A+ } cho phép hổ trợ sử dụng xâu Null cách kích hoạt quy tắc đặc biệt để áp dụng cho kiểu Pchar FORCE FAR CALLS SWITCH Cú pháp { $F+ } { $F- } Mặc định { $F- } tự động chọn cách gọi xa – gần Kiểu Local Ghi Định hướng dịch $F xác định kiểu gọi thủ tục hàm áp dụng Các thủ tục hàm dịch trạng thái { $F+ } luôn sử dụng cách gọi xa ( Far Call ) Trong trạng thái { $F- } ,Turbo Pascal tự động chọn mơ hình thích hợp , nghĩa gọi xa thủ tục hàm khai báo phần Interface Unit , trường hợp lại máy chọn cách gọi gần ( Near Call ) GENERATE 80286 CODE SWITCH Cú pháp { $G+ } { $G- } Mặc định { $G- } Kiểu Global Ghi Định hướng $G chuyển trạng thái cho việc tạo hay không tạo mã cho 80266 Trong trạng thái { $G- } , có lệnh cho 8086 tạo chương trình dịch trường hợp chạy họ máy 80 x 86 Bạn viết dẫn { $G- } chỗ trống chương trình bạn Trong trạng thái { $G+ } , chương trình dịch dùng thêm cấu trúc lệnh 80286 để cải thiện việc tạo mã lệnh , song chương trình dịch trạng thái khơng thể chạy với vi xử lý 8088 8086 Các lệnh bổ sung thêm sử dụng trạng thái { $G+ } bao gồm : Enter , Push , Leave tức thời , IMUL mở rộng SHR , SHL mở rộng IFDEF DIRECTIVE CONDITIONAL COMPILATION Cú pháp { $IFDEF Name } - 158 - Giáo trình Pascal Ghi Dịch văn nguồn theo sau có Name định nghĩa qua { $DEFINE } Ví dụ : Xem mục DEFINE IFNDEF DIRECTIVE CONDITIONAL COMPILATION Cú pháp { $IFNDEF Name } Ghi Dịch văn nguồn theo sau khơng có Name định nghĩa Đây trường hợp ngược lại với cách viết { $IFDEF } Ví dụ : Xem mục DEFINE IFOPT DIRECTIVE CONDITIONAL COMPILATION Cú pháp { $IFOPT Switch } Ghi Dịch văn nguồn theo sau Switch name trạng thái nêu Switch bao gồm tên chuyển mạch bật/tắt theo sau dấu – hay dấu + Ví dụ cấu trúc : { $IFOPT N+ } Type Real = Extended ; { $ENDIF } dịch khai báo kiểu $N hoạt động INCLUDE FILE PARAMETER Cú pháp { $I FileName } Kiểu Local Ghi Định hướng tham số $I dẫn cho chương trình dịch gộp lấy tệp FileName nằm bên ngồi chương trình nguồn dịch vào trình dịch Phần mở rộng ngầm định cho tệp FileName đuôi Pas Nếu FileName không rõ đường dẫn thư mục tìm thư mục hành , sau Turbo Pascal tìm thư mục nêu hộp thoại Option | Directories | Include Directories - 159 - Giáo trình Pascal Có hạn chế việc sử dụng tệp gộp vào : tệp gộp đặt phần câu lệnh Trên thực tế tất câu lệnh nằm Begin End phải tồn tệp nguồn INPUT / OUTPUT CHECKING WITCH Cú pháp { $I+ } { $I- } Mặc định { $I+} Kiểu Local Ghi Định hướng chuyển mạch bật / tắt cho phép tạo không việc tạo mã tự động để kiểm tra kết lời gọi thủ tục vào / Nếu thủ tục vào trả lại kết IOResult khác trạng thái { $I+ } , chương trình tự động dừng lại với thông báo Runtime Error Trong trạng thái { $I- } , tức chuyển mạch sang tắt ( off ) , máy không thông báo lỗi bạn phải tự kiểm tra lỗi vào / lời gọi IOResult LINK OBJECT FILE SWITCH Cú pháp { $L FileName } Kiểu Local Ghi Định hướng tham số $L dẫn cho chương trình dịch liên kết tệp FileName với chương trình Unit dịch Định hướng $L dùng để liên kết mã chương trình viết hợp ngữ cho chương trình miêu tả External Tệp đặt tên phải moat tệp OBJ Nếu FileName không rõ đường dẫn tìm kiếm thư mục hành , sau thư mục rõ hộp thoại Options | Directories | Object Directories LOCAL SYMBO INFORMATION SWITCH Cú pháp { $L+ } hay { $L- } Mặc định { $L+ } Kiểu Local Ghi Kí hiệu $L dùng để bật / tắt việc tạo thơng tin kí hiệu cục Thông tin bao gồm tên kiểu tất biến modun , nghĩa - 160 - Giáo trình Pascal kí hiệu phần Implementation modun , kí hiệu bên thủ tục hàm modun V Vớớii U Unniitt ,, tthhơơnngg ttiinn hhiiệệuu ccụụcc bbộộ đđư ượợcc gghhii vvààoo ttệệpp T TPPU U vvớớii m mãã đđốốii ttư ượợnngg ccủủaa U Unniitt T Thhơơnngg ttiinn kkíí hhiiệệuu ccụụcc bbộộ llààm m ttăănngg kkíícchh tthhư ướớcc ttệệpp T TPPU U vvàà ttạạoo tthhêêm m cchhỗỗ ttrrốốnngg kkhhii ddịịcchh cchhư ươơnngg ttrrììnnhh ddùùnngg U Unniitt đđóó ,, ssoonngg nnóó kkhhơơnngg ảảnnhh hhư ưởởnngg ttớớii kkíícchh tthhư ướớcc ccũũnngg nnhhư ttốốcc đđộộ ccủủaa cchhư ươơnngg ttrrììnnhh cchhạạyy ccuuốốii ccùùnngg Khi moat chương trình hay Unit dịch với { $L+ } , chương trình gỡ rối nằm Turbo Pascal cho phép bạn xem , kiểm tra thay đổi biến cục modun Thêm , kiểm tra lời gọi thủ tục hàm modun qua View | Call Stack Việc gỡ rối độc lập ( Option | Debugger ) lựa chọn tệp đồ ( Map File ) với Option | Linker tạo thơng tin kí hiệu địa phương cho modun dịch trạng thái { $L+ } Định hướng $L thường dùng với định hướng $D định hướng thiết lập hay không thiết lập việc tạo bảng đánh số dòng để gở rối Định hướng $L bị bỏ qua chương trình dịch trạng thái { $D- } MEMORY ALLOCATION PARAMETER Cú pháp { $M StackSize , HeapMin , HeapMax } } Mặc định { $M 16384 , , 655360 } Kiểu Local Ghi Định hướng $M rõ tham số bố trí nhớ chương trình ứng dụng Kích thước Stack phải nằm khoảng 1024 65520 , kích thước Segmen Stack HeapMin , HeapMax giá trị cực đại cực tiểu tương ứng nhớ biến động ( Heap ) HeapMin phải nằm khoảng 655360 HeapMax nằm HeapMin 655360 Định hướng $M khơng có kết sử dụng Unit NUMERIC COPROCESSOR SWITCH Cú pháp { $N+ } { $N- } Mặc định { $N- } Kiểu Local Ghi Định hướng $N bật / tắt hai chế độ khác việc sinh mã dấu chấm động Turbo Pascal Trong trạng thái { SN- } , mã tạo để thực tính tốn số thực phần mềm cách gọi tới thư - 161 - Giáo trình Pascal viện thời gian thực Còn trạng thái { $N+ } , mã tạo để tính tốn kiểu số thực đồng xử lý toán học 80 x 87 OPEN STRING PARAMETER SWITCH Cú pháp { $P+ } { $P- } Mặc định { $P- } Kiểu Local Ghi Định hướng $P điều khiển ý nghĩa tham biến khai báo với từ khóa String Trong trạng thái { $P- } , tham biến khai báo dùng từ khoá String tham biến bình thường trạng thái { $P+ } , chúng tham số String mở Không liên quan đến trạng thái thiết lập $P , tên OpenString luôn sử dụng để khai báo tham số mở OVERFLOW CHECKING SWITCH Cú pháp { $Q+ } { $Q- } Mặc định { $Q- } Kiểu Local Ghi Định hướng $Q điều khiển việc tạo mã để kiểm tra tràn Trong trạng thái { $Q+ } , số lệnh toán học với số nguyên ( + , - , * , / , Abs , Sqr , Succ , Pred ) kiểm tra xem có tràn khơng Mã lệnh số nguyên thêm phần để kiểm tra xem kết có nằm khoảng giá trị cho phép Nếu gặp tượng tràn dừng chương trình báo lỗi { $Q+ } không ảnh hưởng tới thủ tục chuẩn Dec Inc Những thủ tục không kiểm tra tràn Chuyển mạch $Q thường dùng với chuyển mạch $R chuyển mạch thiết lập không thiết lập việc tạo mã kiểm tra khoảng giá trị Việc kiểm tra tràn làm cho chương trình bạn chạy chậm kích thước chương trình lớn chút Do nên dùng { $Q+ } cho việc gỡ rối OVERLAY CODE GENERATION SWITCH Cú pháp { $O+ } { $O- } Mặc định { $O- } - 162 - Giáo trình Pascal Kiểu Local Ghi Định hướng $O dùng để bật / tắt việc tạo mã phủ Turbo Pascal cho phép Unit phủ dịch với { $P+ } Trong trạng thái , phận tạo mã có số biện pháp ngăn ngừa đặc biệt chuyển tham số String tập từ thủ tục hay hàm phủ tới thủ tục / hàm khác Sử dụng { $O+ } Unit khơng bắt buộc bạn phải phủ Unit Nó hướng dẫn Turbo Pascal bảo đảm Unit phủ bạn muốn Nếu bạn muốn phát triển Unit để sau cho ứng dụng có phủ khơng phủ , việc dịch chúng với $O+ đảm bảo với bạn bạn tạo phiên chương trình nguồn Định hướng chương trình dịch { $O+ } thường dùng với định hướng { $F+ } để thỏa mãn việc quản lý bao phủ cho yêu cầu gọi xa OVERLAY UNIT NAME PARAMETER Cú pháp { $O UnitName } Kiểu Local Ghi Định hướng tên đơn vị phủ ( Overlay Unit Name ) bật Unit vào chương trình phủ Định hướng { $O UnitName ) khơng có tác dụng sử dụng Unit Khi dịch chương trình , Unit chương trình sử dụng phải đặt tệp OVR thay tệp EXE Các định hướng { $O UnitName } phải đặt sau phần Uses chương trình Pascal thơng báo lỗi bạn cố tình phủ Unit khơng dịch với { $O+ } RANGE CHECKING SWITCH Cú pháp { $R+ } { $R- } Mặc định { $R- } Kiểu Local Ghi Định hướng $R dùng để bật / tắt việc tạo mã kiểm tra dải giá trị , nghĩa xem giá trị có nằm khoảng cho phép hay khơng Trong trạng thái { $R+ } , tất biểu thức mảng số chuỗi thẩm tra dải giá trị tất phép gán cho biến vô hướng biến khoảng kiểm tra dải giá trị Nếu việc kiểm tra thấy sai , ngừng chương trình lại thông báo lỗi - 163 - Giáo trình Pascal Nếu $R bất , lời gọi tới hành vi ảo kiểm tra tình trạng khởi tạo cá thể gọi Nếu cá thể gọi không khởi tạo Contructor , máy báo lỗi kiểm tra giá trị Bật kiểm tra dải giá trị kiểm tra lời gọi hành vi ảo làm chậm chương trình bạn làm tăng kích thước chương trình , dùng { $R+ } để gỡ rối STACK-OVERFLOW CHECKING SWITCH Cú pháp { $S+ } { $S- } Mặc định { $S+ } Kiểu Local Ghi Định hướng $S thiết lập hay không thiết lập việc tạo mã kiểm tra tràn Stack Trong trạng thái { $S+ } , chương trình tạo mã đầu thủ tục hay hàm để kiểm tra xem khơng gian Stack có đủ để lưu trữ biến địa phương việc lưu trữ tạm thời khác Khi không đủ không gian Stack lời gọi tới hàm hay thủ tục dịch với { $S+ } dẫn đến dừng chương trình xuất thơng báo lỗi Trong trạng thái { $S- } , lời gọi làm cho hệ thống bị hỏng SYMBO REFERENCE SWITCH Cú pháp { $Y+ } { $Y- } Mặc định { $Y+ } Kiểu Local Ghi Định hướng $Y dùng để bật / tắt việc tạo thơng tin tham khảo kí hiệu Thông tin bao gồm bảng cung cấp số dòng tất khai báo , kí hiệu tham khảo tới kí hiệu modun Đối với Unit , thông tin tham khảo kí hiệu ghi tệp TPU với mã đối tượng Unit Thơng tin tham khảo kí hiệu làm tăng kích thước tệp TPU khơng ảnh hưởng tới tốc độ kích thước chương trình dịch để chạy Khi chương trình hay Unit dịch với { $Y+ } , xem duyệt Turbo Pascal hiển thị định nghĩa kí hiệu thơng tin tham khảo cho modun $Y thường dùng với $D và$L , định hướng điều khiển việc tạo thông tin gỡ rối thông tin kí hiệu cục Định hướng $Y khơng có tác dụng trừ hai $D $L thiết lập - 164 - Giáo trình Pascal TYPE-CHECKING POINTERS SWITCH Cú pháp { $T+ } { $T- } Mặc định { $T- } Kiểu Global Ghi Định hướng $T điều khiển kiểu liệu trỏ tạo từ toán tử @ Trong trạng thái { $T- } , kết toán tử @ ln trỏ Nói cách khác kết kiểu trỏ không định kiểu tương thích với kiểu trỏ khác Khi @ áp dụng cho biến trạng thái { $T+ } , kiểu kết ^T T kiểu biến Nói cách khác , kết kiểu tương thích với trỏ khác trỏ tới kiểu biến UNDEF DIRECTIVE CONDITIONAL COMPILATION Cú pháp { $UNDEF Name } Ghi Không định nghĩa hay làm tác dụng kí hiệu điều kiện định nghĩa trước Kí hiệu bị bỏ quên với phần lại q trình dịch tận xuất trở lại địng hướng { $DEFINE Name } Định hướng { UNDEF Name } khơng có ảnh hưởng Name chưa định nghĩa VAR-STRING CHECKING SWITCH Cú pháp { $V+ } { $V- } Mặc định { $V+ } Kiểu Local Định hướng $V điều khiển việc kiểm tra kiểu String chuyển qua thủ tục / hàm tham số Trong trạng thái { $V+ } , việc kiểm tra kiểu xác hồn tồn thực , nghĩa tham số hình thức tham số thực phải đồng giống kiểu Trong trạng thái { $V- } , gọi trạng thái bng lỏng , biến kiểu String phép chuyển qua tham số String thực chiều dài cực đại khai báo không giống với tham số hình thức Ghi - 165 - Giáo trình Pascal Trạng thái { $V- } chủ yếu cung cấp phiên khơng an tồn tham số String mở Mặc dầu { $V- } ủng hộ , bạn dùng tham số chuỗi mở (*************************************************************) Các kí tự mã hố byte, bảng mã kí tự mã hóa tới 256 kí tự Tuy số kí tự gói gọn lại 128 kí tự đầu chuẩn hố Còn 128 kí tự sau (các kí tự có số thứ tự từ 128 đến 255) máy vi tính gọi phần mã mở rộng dùng để mã hóa kí tự riêng số ngơn ngữ, kí tự tốn học, kí tự đồ họa Có nhiều bảng mã khác phần mở rộng, quan tâm chủ yếu tới phần 128 kí tự đầu bảng mã ACSII phần chuẩn để xây dựng kí tự cho ngơn ngữ lập trình - 166 - Giáo trình Pascal Bảng 1.2: Bảng mã ASCII với 128 kí tự đầu Trong bảng mã ASCII, kí tự từ đến 31 kí tự điều khiển, không in được, dùng để điều khiển thiết bị ngoại vi, điều khiển thủ tục trao đổi thơng tin Ví dụ thiết bị nhận kí tự số (Bel), máy tiếng chuông Kí tự số 27 (Esc) thường dùng để khỏi tình huống, để nhận biết mã đặc biệt khác điều khiển máy in dãy kí tự bắt đầu Esc Phần lại bảng mã ACSII bố trí tồn chữ A, B, C , chữ số từ đến 9, dấu chấm câu, kí tự đặc biệt Ví dụ nhận kí tự số 50 máy lên hình chữ số Riêng kí tự 127 (Del) lại dùng làm kí tự điều khiển xóa Nếu bạn dùng Editor, phím Del hình phím tạo mã số 127 để xóa kí tự hình Bạn tham khảo thêm 128 kí tự sau bảng mã ASCII đề cập tới trong bảng 1.2 - 167 - Giáo trình Pascal Bảng 1.2: Bảng mã ASCII với 128 kí tự đầu - 168 - Giáo trình Pascal Bảng biểu diễn màu: Mỗi vĩ đồ họa chế độ đồ họa cho phép vẽ với số màu khác Các màu Turbo Pascal đặt tên cho dễ nhớ thay phải dùng mã số Các mơ tả màu giá trị tương ứng liệt kê bảng sau : Hằng Giá trị Đen Black Xanh Green Xanh Cyan Xanh cẩm thạch Red Đỏ Magenta Tía Brown Nâu LightGray Xám nhẹ DarkGray Xám đậm LightBlue Xanh nhạt LightGreen Xanh nhạt 10 LightCyan Xanh cẩm thạch nhạt 11 LightRed Hồng 12 Tía nhạt 13 Yelow Vàng 14 White Trắng 15 Blue LightMagenta Bảng 2.1 Bảng biểu diễn màu Bảng biểu diễn mẫu tô: Hằng EmptyFill Màu Giá trị SolidFill Tô màu đặc LineFill Mẫu tô - LtSlashFill Mẫu tô /// SlashFill Mẫu tô /// (nét nhỏ) BkSlashFill Mẫu tô \\\ (nét dày) LtBkSlashFill Mẫu tô \\\ HatchFill Nét chải thưa XHatchFill Nét chải dày - 169 - Giáo trình Pascal InterLeaveFill Các đường xen kẽ WideDotFill Chấm thưa 10 CloseDotFill Chấm dày 11 UserFill Tô theo mẫu người dùng 12 Bảng 2.2 Bảng biểu diễn mẫu tơ Ngồi phím kí tự bình thường (chữ cái, chữ số), bàn phím máy vi tính có nhiều phím mở rộng khác phím chức F1, , F10, phím dịch chuyển trỏ, tổ hợp phím Bạn cần khai thác hết phong phú phím mở rộng Bản chất vấn đề đọc phím mở rộng, máy nhận hai mã, mã thứ ln có giá trị #0 Khi ta phải đọc thêm mã thứ hai để biết rõ phím mở rộng nhấn cách dùng hàm Readkey Mã thứ hai 15 16 – 25 30 – 38 44 – 50 59 – 68 71 72 73 75 77 79 80 81 82 83 84 – 93 94 – 103 104 – 113 114 115 116 117 118 119 120 - 131 132 133 134 135 136 137 138 139 140 Phím ấn NUL (Nul Character) Shift – Tab Alt – Q/W/E/R/T/Y/U/I/O/P Alt – A/S/D/F/G/H/J/K/L Alt – Z/X/C/V/B/N/M Phím chức F1 – F10 Home Up Arrow (  ) PgUp Left Arrow () Right Arrow ( → ) End Down Arrow (  ) PgDn Ins Del Từ Shift–F1 tới Shift–F20 Từ Ctrl–F1 tới Ctrl–F20 Từ Alt–F1 tới Alt–F20 Ctrl – PtrScr Ctrl – Left Arrow Ctrl – RightArrow Ctrl – End Ctrl – PgDn Ctrl – Home Alt – 1/2/3/4/5/6/7/8/9/0/-/= Ctrl – PgUp F11 F12 Shift - F11 Shift - F12 Ctrl - F11 Ctrl – F12 Alt – F11 - 170 - Giáo trình Pascal Alt – F12 Bảng : Bảng mã phím mở rộng - -(Nếu có thắc mắc xin liên hệ qua số ĐT : 01678336358 qua email : vietmxse60678@fpt.edu.vn.) - 171 - .. .Giáo trình Pascal Dispose, New, Get, Put, Read, Readln Write,Writeln Reset, Rewrite d) Danh hiệu tự đặt : Trong Pascal, để đặt tên cho biến, hằng, kiểu, chương trình người ta dùng danh hiệu Danh... số kí tự, kết kí tự Giả sử Ch kí tự đó, : + Hàm chuẩn Pred(Ch) cho ta kí tự nằm trước kí tự Ch bảng mã kí tự : Pred(Ch) = Chr(Ord(Ch) - 1) + Hàm chuẩn Succ(Ch) cho ta kí tự nằm sau kí tự Ch bảng... trúc nhơ nhơ vào để bố trí chương trình Pascal cho đẹp thể đươcï thuật tốn chương trình Đây tiêu chuẩn cần phải có cho - 14 - Giáo trình Pascal chương trình viết Pascal Chữ Begin End tương ứng cột

Ngày đăng: 26/08/2018, 15:04

TỪ KHÓA LIÊN QUAN

w