Bài giảng Ngôn ngữ lập trình Pascal: Chương 1 - 2 - 3 được biên soạn nhằm trang bị cho các bạn những kiến thức về nguyên nhân cần phải học Pascal, các phần tử cơ bản của Pascal, các kiểu dữ liệu, khai báo hằng, biến, kiểu, biểu thức, câu lệnh.
Trang 1Biên soạn:
Giảng bài:
Ngôn ngữ lập trình
Trang 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
Trang 3Algorithms+Data Structures=Programs
Thuật giải+Cấu trúc dữ liệu=Chương trình
Trang 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
Trang 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
Trang 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 ?
Trang 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
Trang 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
Trang 10READLN(R); (* Đọc giá trị của R *)
Dien_Tich := PI*R*R; (* Tính diện tích hình tròn *)
Trang 11Kế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
_
Trang 12PROGRAM 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 *)
Trang 13Cá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ườngkhép kín, đảm bảo hoạt động của cả 3 bước trên
trong một chương trình
Trang 14Bướ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
Trang 15Bướ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à *.TPUlạ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ụ Beginviết thành Began
Trang 16Bướ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
Trang 17Lư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? Có
Có
Không
Trang 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áthoá thành các kiểu dữ liệu khác nhau
Các kiểu dữ liệu cơ sở.
Trang 19kiể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)
Trang 21Kiể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
Trang 22Cá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
Trang 23Kiể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ềngiá 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 = ?
Trang 24Mộ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
Trang 25Kiể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ềngiá trị: 0 đến 255
Tiết kiệm ô nhớ
Các phép tính: giống như Integer
Trang 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
Trang 27 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
Trang 28 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
Trang 29Kiể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
Trang 31Khai 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
Trang 32Biể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
Trang 35Tí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));