Bài 2. Các thành phần cơ bản
1. Bộ ký tự, từ khóa, tên
a. Bộ ký tự, ký hiệu trong ngôn ngữ Pascal
- 26 chữ cái latin lớn:
A
,…,Z
- 26 chữ cái latin nhỏ:
a
,…,z
- Dấu gạch dưới:
_
- Bộ chữ số thập phân:
0
,…,9
- Các ký hiệu toán học:
+
,–
,*
,/
,=
,<
,>
,(
,)
- Các ký hiệu đặc biệt:
.
,,
,‘
,:
,;
,[
,]
,?
,%
,@
,|
,!
,&
,#
,$
,{
,}
- Khoảng trắng - ký tự cách
b. Từ khóa
Một số từ khoá của Pascal gồm:
c. Tên
- Tên chuẩn đã được PASCAL đặt trước, chẳng hạn các hàm số
SIN
,COS
,LN
,… hằng sốPI
, kiểuINTEGER
,BYTE
,REAL
… - Tên do người dùng tự đặt.
- Dùng bộ chữ cái, bộ chữ số và dấu gạch dưới để đặt tên
- Bắt đầu bằng chữ cái hoặc dấu gạch dưới ( _ ) sau đó là chữ cái hoặc chữ số.
- Không có khoảng trống ở giữa tên
- Không được trùng với từ khoá.
- Độ dài tối đa của tên là 127 ký tự, tuy nhiên cần đặt sao cho tên gọn và có ý nghĩa.
- Pascal không bắt lỗi việc đặt tên trùng với tên chuẩn, nhưng khi đó ý nghĩa của tên chuẩn không còn giá trị nữa => ko nên đặt trùng tên chuẩn.
Lưu ý: Pascal không phân biệt chữ hoa và chữ thường trong từ khóa, tên chuẩn hay tên người dùng đặt. Ví dụ “BEGIN” hay “Begin” hay “BeGin” là như nhau. Tuy nhiên chúng ta nên tập thói quen viết một cách thống nhất tên trong toàn bộ chương trình.
2. Dấu chấm phẩy và lời chú thích
a. Dấu chấm phẩy
Ví dụ:
Write(‘Nhap so a:’); Readln(a);
b. Lời chú thích
Ví dụ:
{Day la loi chu thich}
(*Day cung la mot loi chu thich*)
3. Hằng, kiểu, biến
a. Hằng
- Hằng chuẩn là hằng do Pascal định sẵn, ví dụ hằng số
PI
, hằng số chỉ màuRED=4
,… Người sử dụng không cần định nghĩa lại nếu thấy không cần thiết. Các hằng này được Pascal định nghĩa sẵn trong các Unit. Cần tham khảo hướng dẫn (help) đối với mỗi Unit để biết trong Unit có các hằng nào đã được định nghĩa. - Hằng do người dùng định nghĩa thông qua việc khai báo.
CONST <ten_hang_1>=<gia_tri_hang_1>; … <ten_hang_n>=<gia_tri_hang_n>;
CONST a=5; ch=’Q’; …
b. Kiểu
– Kiểu số nguyên
* Kiểu do người dùng định nghĩa:
TYPE <ten_kieu> = <cac_thanh_phan_cua_kieu>;
Ví dụ:
TYPE Hoaqua=(tao,mit,dua,oi); che=(buoi,thapcam); …
c. Biến
– Cú pháp khai báo biến:
VAR <ten_bien>:<kieu_du_lieu>;
Ví dụ:
VAR a:integer; b,c:real; qua:Hoaqua; (* với Hoaqua la kieu du kieu da dinh nghia *) …
4. Phép toán, Biểu thức, Câu lệnh
a. Phép toán
Phép toán Ý nghĩa Ví dụ ------------------------------------------------------ - Lấy đối số Đối số của 2 là -2 + Cộng 10 + 9 -> 19 - Trừ 10 - 9 -> 1 * Nhân 10 * 9 -> 90 / Chia 10 / 4 -> 2.5 Div Chia lấy phần nguyên 10 div 3 -> 3 Mod Chia lấy phần dư 10 mod 3 -> 1
(Chú ý: Div và Mod chỉ áp dụng cho kiểu nguyên)
*/ Một số hàm số, thủ tục
Hàm Ý nghĩa Ví dụ ------------------------------------------------------------ ABS(x) Trị tuyệt đối x Abs(-2) -> 2 SQR(x) Bình phương x Sqr(2) -> 4 SQRT(x) Căn bậc hai x Sqrt(9) -> 3 EXP(x) Hàm e^x Exp(3) -> e^3 LN(x) Hàm ln(x) Ln(2) ->ln2 SIN(x) Hàm lượng giác Sin(PI) -> 0 COS(x) Hàm lượng giác Cos(PI) -> 1 ARCTAN(x) Hàm lượng giác Arctan(0) ->0 INC(x) Tăng x lên 1 đơn vị <=> x:=x+1; INC(1) -> 2 DEC(x) Giảm x xuống 1 đơn vị <=> x:=x-1; DEC(5) -> 4 SUCC(x) Cho giá trị tiếp theo của x succ(5) cho KQ 6 PRED(x) Cho giá trị trước đó của x PRED(5) cho KQ 4 ROUND(x) Làm tròn lên Round(8.6) -> 9 TRUNC(x) Làm tròn xuống Trunc(8.6) -> 8 ORD(x) Lấy mã ASCII ký tự Ord(‘a’) -> 97 CHR(x) Cho ký tự có mã ASCII Chr(65) -> ‘A’ ODD(x) Kiểm chẳn lẽ Odd(5) -> True
*/ Một số phép toán logic: AND, OR, XOR, NOT.
X Y X OR Y X AND Y X XOR Y NOT X --------------------------------------------------------------------- FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE
Lưu ý:
– Các phép toán so sánh (<>
khác, =
bằng, >
lớn hơn, <
nhỏ hơn >=
lớn hơn hoặc bằng, <=
nhỏ hơn hoặc bằng) luôn trả về kiểu Boolean.
– Các phép toán logic còn áp dụng trên kiểu số nguyên, trên cớ sở biểu diễn số nhị phân của các số nguyên.
b. Biểu thức
– Biểu thức là một phần của câu lệnh bao gồm hằng, biến, hàm liên kết với nhau bằng các phép toán và các dấu ngoặc đơn.
Ví dụ: (-b+sqrt(delta))/(2*a)
– Thứ tự thực hiện các phép toán trong biểu thức:
1. Biểu thức trong ngoặc đơn
2. Phép gọi hàm
3. NOT
, –
4. *
, /
, DIV
, MOD
, AND
5. +
, -
, OR
, XOR
6. =
, <>
, <=
, >=
, <
, >
, IN
– Quy ước thứ tự ưu tiên:
+ Qui tắc 1: Các phép toán nào có ưu tiên cao hơn sẽ được tính trước.
+ Qui tắc 2: Trong các phép toán có cùng thứ tự ưu tiên thì sự tính toán sẽ được thực hiện từ trái sang phải.
+ Qui tắc 3: Phần trong ngoặc từ trong ra ngoài được tính toán để trở thành một giá trị.
c. Câu lệnh
– Câu lệnh xác định một công việc mà chương trình phải thực hiện để xử lý các dữ liệu đã được mô tả và khai báo. Có 2 loại câu lệnh:
+ Câu lệnh đơn: Là câu lệnh không chứa các câu lệnh khác.
+ Câu lệnh có cấu trúc: gồm các câu lệnh ghép, câu lệnh rẽ nhánh câu lệnh điều khiển lựa chọn, câu lệnh lặp,…
Lưu ý: Câu lệnh ghép là một nhóm các câu lệnh đơn cần thực hiện liên tiếp và được đặt trong cặp từ khóa
begin
vàend;
*/ Một số câu lệnh đơn:
– Lệnh gán:
Cú pháp:
<ten_bien>:=<bieu_thuc>;
Ví dụ:
a:=5+4/3;
b:=c+d/e;
Lưu ý:
+ Khi một giá trị được gán cho biến, nó sẽ thay thế giá trị trước đó của biến đã lưu.
+ Biểu thức ở bên phải và bên trái lệnh gán phải có cùng kiểu dữ liệu.
– Lệnh đọc dữ liệu
Lệnh đọc dữ liệu là lệnh gán giá trị cho biến khi ta nhập từ bàn phím. Có 3 mẫu viết
• Read(Biến1, Biến2,…, BiếnN);
{có thể dùng dấu cách hoặc phím enter để lần lượt nhập dữ liệu cho các biến}
• Readln(Biến1, Biến2,…, BiếnN);
{phải dùng phím enter để lần lượt nhập dữ liệu cho các biến}
• Readln;
{Bắt máy dừng lại chờ nhấp phím enter thường để làm dừng màn hình cho ta xem kết quả}
Lưu ý: Chúng ta không nên dùng lệnh read để nhập dữ liệu cho các biên mà nên nhập bằng lệnh readln vì khi nhập dữ liệu cho các biến bằng lệnh read có thể sẽ dẫn đến tình trạng trôi lệnh (tức là một số lệnh không được thực hiện).
– Lệnh viết dữ liệu ra màn hình:
Có 3 mẫu viết:
• Write(Value1,Value2,…,ValueN);
{ viết các mục ra, con trỏ nằm ở cuối dòng}
• Writeln(Value1,Value2,…,ValueN);
{ viết các mục ra, con trỏ nằm ở đầu dòng tiếp theo}
• Writeln;
{ chỉ đưa con trỏ xuống dòng tiếp theo}
trong đó: các value là các biến, hằng, giá trị hay chuỗi ký tự (phải đặt trong cặp nháy đơn).
{riêng dấu ‘ ta xuất bằng cách ghi 2 dấu ”}
Viết có quy cách:
– Đối với kiểu số thực:<độ rộng>:<số chữ số thập phân>;
Ví dụ: write(a:4:5);
– Đối với các kiểu dữ liệu khác:<độ rộng>;
Ví dụ: write(b:4);{với b là số nguyên}
Khi số chữ số của biến nhiều hơn với độ rộng thì số đó sẽ được xuất ra toàn bộ.
Ví dụ: b có giá trị là 12345.
Khi ta viết lệnh write(b:4);
12345
– Một số lệnh khác
• Clrscr;
Lệnh xóa màn hình và đưa con trỏ về góc trên bên trái
• Gotoxy(x,y);
đặt con trỏ tới tọa độ (x,y)
Trong đó x: cột từ 1->80; y: hàng từ 1->25.