Ngôn ngữ lập trình Pascal - Phần 1

Tính tương thích của các kiểu dữ liệu Về nguyên tắc, 2 vế phải cùng kiểu dữ liệu. Biến nguyên I không thể gán := ‘A’;  Ngoại lệ: biến thực nhận giá trị nguyên. X:= 6; Ngược lại một biến nguyên không thể nhận một giá trị thực. Muốn nhận phải dùng các hàm Round hoặc Trunc. I := Round( SQRT(X));

pdf36 trang | Chia sẻ: dntpro1256 | Lượt xem: 506 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Ngôn ngữ lập trình Pascal - Phần 1, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Biên soạn: Giảng bài: Ngôn ngữ lập trình 2Vì sao học PASCAL ?  PASCAL là ngôn ngữ lập trình cao cấp do GS Niklaus Wirth sáng tác đầu 70.  PASCAL giúp sinh viên viết chương trình có cấu trúc sáng sủa, rõ ràng, dễ hiểu và dễ đọc.  PASCAL là ngôn ngữ có cấu trúc mạnh mẽ cả về dữ liệu lẫn chương trình và lệnh. 3Algorithms+Data Structures=Programs Thuật giải+Cấu trúc dữ liệu=Chương trình 4Chương 1 Các phần tử cơ bản của PASCAL Bộ chữ viết của PASCAL  Các chữ cái ‘a’..’z’, ‘A’..’Z’  Không phân biệt chữ thường và hoa.  Các chữ số ‘0’..’9’  Dấu gạch nối _ rất tiện dụng  Các kí hiệu +, -, *, /, . , ; % ...  Dấu cách được dùng để ngăn cách các từ. 5Từ khoá là các từ của riêng PASCAL  Thí dụ: Program, Var, For, To, IF.... Tên hay Định danh (Indentifier) là dãy kí tự bắt đầu bằng một chữ cái, dùng để chỉ tên hằng số, tên một biến, tên kiểu, tên chương trình con...  Thí dụ: ta phải dùng tên Delta thay cho dấu  là kí hiệu không nằm trong bộ chữ viết PASCAL 6 Các tên đặt sai 1ABC, #DELTA, ARRAY, DEL TA  Dùng dấu gạch nối khi đặt tên GIAI_PHUONG_TRINH_BAC_HAI thay vì tên đúng song khó hình dung GIAIPHUONGTRINHBACHAI tên sai GIAI-PHUONG-TRINH-BAC-HAI  Tên bằng tiếng Việt ? 7 Dấu chấm phẩy ; dùng để ngăn cách câu lệnh (xem sau)  Lời giải thích (comment) cho rõ ràng hơn (* Lời giải thích có thể dùng tiếng Việt*) { Lời giải thích }  Sai nếu mở - đóng khác kiểu (* Sai }  Có thể viết nhiều dòng giải thích cho đến khi khoá lại (* Dòng 1 dòng 2 *) 8Lưu đồ cú pháp Được dùng để định nghĩa các cấu trúc trong PASCAL. Chính xác song rất rất ít dùng đến. Thí dụ: định nghĩa tên 9Cấu trúc chung của một chương trình PASCAL  Phần tiêu đề của chương trình  Phần khai báo dữ liệu - hằng, biến (Const, Var), - mô tả kiểu dữ liệu mới (Type) - khai báo chương trình con (Procedure, Function)  Phần thân chương trình chứa các lệnh để máy tính thực hiện 10 Thí dụ 1.1 PROGRAM THI_DU1; (* Dòng tiêu đề *) VAR R, A, Dien_Tich: Real; (* Khai báo ba biến thực *) BEGIN Write(' Bán kính R = '); READLN(R); (* Đọc giá trị của R *) Dien_Tich := PI*R*R; (* Tính diện tích hình tròn *) (* Viết ra màn hình kết quả tính *) Writeln(' Diện tích hình tròn = ', Dien_Tich); Write(' Cạnh hình vuông A = '); READLN(A); Dien_Tich := A*A; Writeln(' Diện tích hình vuông =', Dien_Tich); Readln; END. 11 Kết quả chạy chương trình Bán kính R = 2.56  Diện tích hình tròn = 2.0588741615E+01 Cạnh hình vuông A = 2.56  Diện tích hình vuông = 6.5536000000E+00 _ 12 PROGRAM TEN_CHUONG_TRINH; (* Dòng tiêu đề *) USES CRT, PRINTER;(*Lời gọi Sử dụng các đơn vị chương trình *) (* Phần khai báo dữ liệu và chương trình con *) LABEL... CONST ... TYPE ... VAR ... { Có thể có nhiều Procedure và nhiều Function } PROCEDURE ... FUNCTION ... (* Thân chương trình chính *) BEGIN (* Các lệnh được viết ở đây *) ...... END. 13 Các bước cơ bản khi viết chương trình Bước 1: Soạn thảo chương trình. Bước 2: Dịch và kết nối chương trình.  Biên dịch (compiler)  Thông dịch (Interpreter) (ít dùng) Bước 3: Chạy thử và sửa lỗi chương trình Turbo PASCAL của hãng Borland có môi trường khép kín, đảm bảo hoạt động của cả 3 bước trên trong một chương trình. 14 Bước 1: Thảo chương trình  Dùng chương trình soạn thảo văn bản (Text Editor) để viết chương trình với nhiều thao tác tiện dụng như xen, sửa, xoá, copy ...  Máy tính cổ phải viết chương trình bằng cách đục lỗ giấy.  Kết quả nhận được: các chương trình nguồn (source code) PASCAL: *.PAS 15 Bước 2: Dịch và kết nối chương trình  Biên dịch (compiler)  Khái niệm về Thông dịch (Interpreter)  Kết quả của bước dịch là các tệp *.OBJ và *.TPU  Tiếp theo phải liên kết các tệp *.OBJ và *.TPU lại để thành chương trình chạy được, đó là tệp *.EXE.  Nếu có lỗi về mặt cú pháp (syntax error), máy sẽ báo rõ lỗi loại nào, vị trí lỗi ... Thí dụ Begin viết thành Began 16 Bước 3: Chạy thử và sửa lỗi chương trình  Lỗi về thuật giải X2 viết nhầm thành X*2 Máy không thể phát hiện được  Lỗi về cách trình bầy, chưa đẹp ...  Nếu có lỗi, quay về bước 1 để sửa. 17 Lưu đồ lập trình Begin Dùng chương trình soạn thảo văn bản (EDITOR) để viết và sửa lỗi chương trình Gọi chương trình dịch COMPILER và chương trình kết nối LINKER Có lỗi cú pháp Chạy thử chương trình vừa được dịch xong Có lỗi thuật giải? Có muốn sửa lại cho đẹp? End Có Có Không 18  Dữ liệu là nguồn vật liệu cho máy tính xử lí. Máy tính chỉ hiểu các dữ liệu được biểu diễn dưới dạng mã nhị phân.  Trong ngôn ngữ bậc cao, dữ liệu được khái quát hoá thành các kiểu dữ liệu khác nhau. Chương Các kiểu dữ liệu. Các kiểu dữ liệu cơ sở. 19 kiểu logic Bun (Boolean) Kiểu cơ sở kiểu số nguyên (Integer) kiểu số thực (Real) Kiểu vô hướng kiểu kí tự (Char) (kiểu đơn giản) (Scalar Type hay kiểu khoảng con Kiểu Simple Type ) kiểu vô hướng (sub-range) dữ tự định nghĩa liệu kiểu liệt kê (enumerated) DATA TYPE Kiểu mảng (ARRAY) Kiểu dữ liệu có cấu trúc Kiểu tập (SET) (Structured Type) Kiểu bản ghi (RECORD) Kiểu tệp (FILE) Kiểu xâu kí tự (STRING) Kiểu con trỏ. (POINTER Type) 20 Định nghĩa một kiểu dữ liệu Một kiểu dữ liệu được xác định bởi 2 yếu tố: Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận được  Định nghĩa các phép toán trên tập giá trị đó. 21 Kiểu logic Boolean  Có hai giá trị FALSE và TRUE  Các phép toán AND, OR, XOR, NOT X Y X AND Y X OR Y X XOR Y FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE 22 Các phép toán quan hệ  Kết quả luôn luôn là giá trị kiểu Boolean Kí hiệu phép toán ý nghĩa so sánh khác nhau = so sánh bằng nhau >= so sánh lớn hơn hoặc bằng <= so sánh nhỏ hơn hoặc bằng > so sánh lớn hơn < so sánh nhỏ hơn Thí dụ: 3 < 5 cho giá trị TRUE 23 Kiểu số nguyên Integer  Kiểu số nguyên khai báo với từ khoá Integer  Dùng 2 bytes (số nguyên 16 bít) để biểu diễn nên miền giá trị: -32768 đến +32767 Thí dụ: -327, -32000, 1, 123  Các phép tính: + - * / DIV MOD quan hệ (>, ...), logic (AND, OR...)  Phép chia số nguyên 3 / 2 = 1.5  Phép chia lấy phần nguyên 11 DIV 3 = ?  Phép chia lấy số dư nguyên 11 MOD 3 = ?  Cẩn thận tràn số: 32000+800-2000=29200 24 Một số phép toán cho số nguyên  Phép toán logic AND, OR, XOR, NOT Thí dụ: 3 AND 5 = 1 vì 0000 0000 0000 0011 3 AND 0000 0000 0000 0101 5 -------------------------------------------- Kết quả: 0000 0000 0000 0001 1  Phép dịch trái SHL (Shift Left), dịch phải SHR (Shift Right) để tính nhanh hơn 3*24= 3 SHL 4, 3 / 24 = 3 SHR 4 25 Kiểu số nguyên Byte  Kiểu số nguyên khai báo với từ khoá Byte  Dùng 1 byte để biểu diễn số nguyên dương nên miền giá trị: 0 đến 255 .  Tiết kiệm ô nhớ.  Các phép tính: giống như Integer. 26  Kiểu số thực khai báo với từ khoá Real  Dùng 6 bytes để biểu diễn, dải giá trị: -1.7E-38 đến +1.7E+38  Dải giá trị lớn và độ chính xác cao.  Các phép tính +, -, *, /, quan hệ  Không tồn tại DIV, MOD, logic  Có 2 cách viết: - Bình thường: - 3.14, -24.123445 - Dạng viết có phần mũ: -2.4123445E-1  Cách viết sai: 5. .5 Kiểu số thực Real 27 Các hàm số học chuẩn Các hàm số học sau đã được định sẵn và dùng cho số nguyên và số thực  ABS(x)  SQR(x) cho x2, SQRT(x) căn bậc hai của x  SIN(x), COS(x), arctan(x) với x: radian  Ln(x), Exp(x)  Succ(n), Pred(n): n nguyên  Odd(n) là TRUE nếu n lẻ.  Round(x) và Trunc(x) làm tròn hoặc cắt Sẽ học áp dụng sau. 28  Kiểu kí tự khai báo với từ khoá Char  Gồm - chữ cái ‘a’..’z’, ‘A’..’Z’ - chữ số ‘0’..’9’ - kí hiệu khác: . , ; : ! @ # $ % ^ & * ( )  Bảng mã ASCII (Americain Standard Code for Information Interchange). ý nghĩa.  Các hàm ord(‘c’) và chr(n)  Thứ tự c1 < c2 nếu ord(‘c1’) < ord(‘c2’)  Hàm Succ và Pred Kiểu kí tự Char 29 Kiểu đếm được và không đếm được Kiểu đếm được: Integer, Byte, Boolean, Char, đoạn con, liệt kê Kiểu vô hướng Kiểu không đếm được: Real 30 Khai báo hằng với mẫu Const Tên_hằng = Giá_trị_của_hằng;  Thí dụ: Const Dung=TRUE; (* Hằng Boolean *) A=5; { Hằng số nguyên } PI = 3.14; { Hằng số thực } Ch=‘Z’; (* Hằng kí tự *) Chương 3 Khai báo hằng, biến, kiểu. Biểu thức. Câu lệnh. 31 Khai báo biến Tên biến là tên của ô nhớ cất dữ liệu. Giá trị của nó có thể thay đổi được. Var Tên_biến : Kiểu_dữ_liệu_của_biến;  Thí dụ: Var M23, A25, AAA: Real; MY_NAME: String[25]; Y: Boolean; X: Integer; 32 Biểu thức bao gồm toán tử và toán hạng. Biểu thức số học cho ta giá trị số. Biểu thức logic cho ta giá trị logic Bun. Trình tự ưu tiên tính toán biểu thức DÊu ngoÆc ( ) BiÓu thøc trong ngoÆc ®­îc ­u tiªn nhÊt NOT, - (dÊu trõ) C¸c phÐp to¸n mét to¸n h¹ng *, /, DIV, MOD, AND C¸c phÐp tÝnh lo¹i nh©n, cïng møc ­u tiªn +, -, OR, X OR 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 33 Thí dụ 3.3 7 + 3*5 = 7 + (3*5) = 22 5/2*3 = (5/2) * 3 = 7.5 18 DIV 4*4 = (18 DIV 4)*4 = 16 2*(3 + 5) = 16 Thí dụ 3.4: biểu thức Boolean (100 > 76) AND ('B' < 'A') TRUE AND FALSE FALSE 34 Phép gán Biến := biểu thức;  Vế trái chỉ có thể và chỉ là một tên biến. X:=6; X:=X+3; X= ? X := 4*X+X*X; X= ? M23 := 18/X*4.0+SQRT(X); M23 = ? X+2 := 3; ? 35 Tính tương thích của các kiểu dữ liệu Về nguyên tắc, 2 vế phải cùng kiểu dữ liệu. Biến nguyên I không thể gán := ‘A’;  Ngoại lệ: biến thực nhận giá trị nguyên. X:= 6; Ngược lại một biến nguyên không thể nhận một giá trị thực. Muốn nhận phải dùng các hàm Round hoặc Trunc. I := Round( SQRT(X)); 36 Lệnh hợp thành Begin Begin BEGIN Begin Câu lệnh 1; End; Câu lệnh 2; Begin ........ End; Câu lệnh N; End; END; Begin End; End; Và cấu trúc khối lệnh

Các file đính kèm theo tài liệu này:

  • pdfngon_ngu_lap_trinh_pascalchuong1_2_3_4903_1810340.pdf