Giáo trình tin học đại cơng
ngôn ngữ lập trình pascal
Chơng 5. Giới thiệu chung về ngôn ngữ Pascal
5.1. Mở đầu.
5.1.1. Giới thiệu về Pascal - Turbo Pascal : Pascal là một ngôn ngữ lập
trình cấp cao do Niklaus Wirth, giáo s điện toán trờng đại học Kỹ thuật Zurich
(Thụy sĩ) thiết kế và công bố vào năm 1971 và đặt tên là Pascal để tởng niệm
nhà Toán học và Triết học nổi tiếng Blaise Pascal (ngời Pháp).
Lúc đầu mục đích của Wirth thiết kế Pascal là để giảng dạy lập trình, do
Pascal có các đặc điểm :
* Ngữ pháp, ngữ nghĩa đơn giản và có tính logic.
* Cấu trúc chơng trình rõ ràng, dễ hiểu (thể hiện t duy lập trình cấu trúc).
* Dễ sửa chữa và cải tiến.
Trong quá trình phát triển, Pascal đã phát huy đợc u điểm của mình và tỏ ra
hơn hẳn nhiều ngôn ngữ cấp cao khác. Pascal đã trở thành một ngôn ngữ mạnh
đợc ứng dụng trong nhiều lĩnh vực khác nhau. Các tổ chức và công ty chuyên về
máy tính dựa trên Pascal chuẩn đã phát triển thêm và tạo ra các chơng trình dịch
ngôn ngữ Pascal với nhiều phần thêm bớt khác nhau.
Ví dụ :
- TURBO PASCAL của hãng Borland (Mỹ).
- QUICK PASCAL của hãng Microsoft.
- UCSD PASCAL (University of California at San Diego).
- ANSI PASCAL (American National Standard Institut).
...
So với nhiều sản phẩm Pascal của nhiều tổ chức và hãng khác nhau xuất
bản, Turbo Pascal đã tỏ ra có nhiều u điểm nhất và hiện nay đợc xem nh là một
trong những ngôn ngữ lập trình cấp cao phổ biến nhất trên thế giới đợc sử dụng
trong lĩnh vực giảng dạy và lập trình chuyên nghiệp.
Chỉ trong vòng mấy năm Turbo Pascal đợc cải tiến qua nhiều phiên bản :
1.0, 2.0, 3.0, 4.0, 5.0, 5.5 (1989), 6.0 (1990), 7.0 (1992).
Để dánh giá những đóng góp quan trọng trong lĩnh vực Tin học, đặc biệt là
sự ra đời của Pascal, Hội Tin học Mỹ (ACM) đã trao giải thởng quốc tế về Tin
học mang tên Turning cho N. Wirth.
1
Phần 3- Ngôn ngữ lập trình Pascal
5.1.2. Các tập tin chính của Turbo Pascal : Các tập tin của phần mềm
Turbo Pascal đợc chứa trên nhiều đĩa mềm (đĩa cài đặt). Tuy nhiên để chạy đợc
Turbo Pascal thông thờng chỉ cần sử dụng các tập tin chủ yếu sau :
TURBO.EXE : Trình soạn thảo và biên dịch.
TURBO.TPL : Tập tin th viện, lu các đơn vị chuẩn để chạy với TURBO.EXE
(TPL : Turbo Pascal Library).
Với hai tập tin trên chúng ta có thể bắt đầu viết đợc chơng trình bằng ngôn
ngữ Turbo Pascal. Sau đó, muốn sử dụng đồ hoạ thì thêm các tập tin sau :
GRAPH.TPU : Tập tin th viện chơng trình đồ hoạ.
*.CHR : Các tập tin các phông chữ trong chế độ đồ hoạ.
*.BGI : Các trình điều khiển card màn hình trong chế độ đồ hoạ.
Nếu muốn xem hớng dẫn sử dụng Turbo Pascal thì cần có thêm tập tin
TURBO.HLP.
5.2. Các khái niệm cơ bản của Turbo Pascal.
5.2.1. Bộ ký tự cơ bản : Turbo Pascal đợc xây dựng từ bộ ký tự cơ bản sau :
- Các chữ cái : 26 chữ hoa (A, B, C, ..., Z) và 26 chữ thờng (a, b, c, ..., z).
- Các chữ số thập phân : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
- Các dấu toán học thông dụng : + - * / = < > ( ).
- Dấu gạch nối _ (khác với dấu trừ).
- Các ký hiệu đặc biệt : . , ; ! ? : ' " { } [ ] % @ & # $ ^.
Lu ý : Các chữ ả rập (, , ...) không thuộc bộ ký tự của Turbo Pascal.
5.2.2. Từ khoá (key word) : Trong Turbo Pascal có một số từ cho sẵn, có ngữ
nghĩa đã đợc xác định và tuân theo một cấu trúc ngữ pháp nhất định gọi là từ
khoá. Ngời lập trình không đợc đặt một tên mới (tên biến, tên hằng, tên thủ
tục, ...) trùng với một trong các từ khoá. Sau đây là danh sách một số từ khoá
của Turbo Pascal :
Từ khoá chung : PROGRAM, BEGIN, END, PROCEDURE, FUNCTION.
Từ khoá để khai báo : CONST, VAR, TYPE, ARRAY, STRING, RECORD,
SET, FILE OF, LABEL.
Từ khoá của lệnh lựa chọn : IF ... THEN ... ELSE, CASE ... OF.
Từ khoá của lệnh lặp : FOR ... TO ... DO, FOR ... DOWNTO ... DO, WHILE ...
DO, REPEAT ... UNTIL.
2
Giáo trình tin học đại cơng
Từ khoá điều khiển : WITH, GOTO, EXIT.
Từ khoá toán tử : AND, OR, NOT, IN, DIV, MOD.
Chú ý : Turbo Pascal không phân biệt ký tự in thờng (lower case char) hay in
hoa (upper case char). Chẳng hạn, các cách viết sau có ý nghĩa hoàn toàn nh
nhau : BEGIN, begin, Begin, beGIN, ...
5.2.3. Tên (identifier) : Tên là một dãy ký tự đợc tạo thành từ các chữ cái,
chữ số và dấu nối (_) dùng để đặt tên cho các đại lợng trong chơng trình nh tên
hằng, tên kiểu dữ liệu, tên biến, tên mảng, tên hàm, tên chơng trình, ...
Kí tự đầu tiên của tên không đợc là chữ số.
Chiều dài của tên tối đa là 127 ký tự.
Tên không đợc trùng với từ khoá.
Ví dụ :
+ Tên đúng : PT_BAC_2, DELTA, a_1, _b
+ Tên sai :
PT BAC2 (có ký tự trống)
3ABC (ký tự đầu tiên là chữ số)
g(x) (sử dụng dấu ( ))
label (trùng với từ khoá)
x-1 (dùng dấu trừ)
Chú ý : Thông thờng tên nên đặt ngắn gọn và có tính gợi nhớ.
5.2.4. Tên chuẩn : Trong Turbo Pascal có một số tên đã đợc đặt sẵn rồi, gọi là
tên chuẩn. Sau đây là một số tên chuẩn :
Tên hằng chuẩn : FALSE, TRUE, MAXINT, ...
Tên kiểu chuẩn : BOOLEAN, CHAR, INTEGER, WORD, REAL, BYTE, ...
Tên hàm chuẩn : ABS, ARCTAN, CHR, COS, SIN, EXP, LN, SQR, SQRT, ...
Tên thủ tục chuẩn : READ, READLN, WRITE, WRITELN, ...
3
Phần 3- Ngôn ngữ lập trình Pascal
Mặc dù ngời lập trình có thể đặt một tên mới trùng với một trong các tên
chuẩn, tuy nhiên để khỏi nhầm lẫn, chúng ta nên tránh điều này.
5.3. Cấu trúc tổng quát của một chơng trình Turbo Pascal.
Một chơng trình Turbo Pascal đầy đủ gồm ba phần sau :
Phần 1.
- Bắt đầu bằng từ khoá PROGRAM và kết thúc bởi dấu ;
- Tên_chơng_trình do ngời lập trình tự đặt.
Phần 2.
Phần 3.
Ghi chú :
4
(* Phần tiêu đề của chơng trình *)
PROGRAM Tên_chơng_trình;
(* Phần khai báo *)
LABEL ... ; {khai báo nhãn}
USES ... ; {khai báo sử dụng các Unit}
CONST ... ; {khai báo các hằng}
TYPE ... ; {khai báo kiểu dữ liệu mới}
VAR ... ; {khai báo các biến}
PROCEDURE ... ; {khai báo các chơng trình con là thủ tục}
FUNCTION ... ; {khai báo các chơng trình con là hàm}
(* Phần thân chơng trình chứa các lệnh để máy tính thực hiện *)
BEGIN
... {các lệnh của chơng trình}
END.
Dấu chấm báo kết thúc chơng trình.
Giáo trình tin học đại cơng
Trong cấu trúc tổng quát của chơng trình Turbo Pascal :
- Phần 1 : Chiếm một dòng và có thể có hay không.
- Phần 2 : Tuỳ theo chơng trình cụ thể mà các khai báo có thể có hay không và có
thể lặp lại một số lần.
- Phần 3 : Bắt buộc phải có đối với mọi chơng trình.
Lời giải thích : Turbo Pascal cho phép ngời lập trình có thể đa vào văn bản
chơng trình các lời bình luận, giải thích, ghi chú để làm cho chơng trình dễ
đọc, dễ hiểu hơn mà không ảnh hởng đến sự thực hiện của chơng trình. Các
lời giải thích đợc đặt giữa hai dấu { } hoặc giữa hai cụm dấu (* *) và có thể
viết trên một dòng hay nhiều dòng.
Dấu chấm phẩy ( ; ) : Dấu chấm phẩy dùng để ngăn cách các câu lệnh của
Turbo Pascal (không phải là dấu kết thúc lệnh). Nếu dấu chấm phẩy đứng
ngay trớc từ khoá END có thể bỏ. Chẳng hạn, có thể viết :
Begin
Write('Turbo Pascal');
Readln
End.
Câu lệnh : Một chơng trình gồm các câu lệnh, mỗi câu lệnh thực hiện một
công việc nào đó. Trên một dòng có thể viết một hoặc nhiều câu lệnh. Một
lệnh, nếu dài, thì có thể viết trên hai hay nhiều dòng, chẳng hạn :
Writeln('Phơng trình có hai nghiệm là : x1 = ', x1:8:2,
' và x2 = ', x2:8:2);
5.4. Các bớc để chạy một chơng trình Turbo Pascal.
5.4.1. Ví dụ 1 : Tạo lập và cho thực hiện chơng trình in ra màn hình hai dòng
thông báo :
-------------- TURBO PASCAL 7.0 --------------
XIN CHAO CAC BAN YEU THICH TIN HOC
Các bớc thực hiện :
B ớc 1 : Khởi động Turbo Pascal (cho thực hiện tập tin chơng trình
TURBO.EXE) bằng lệnh TURBO . Khi đó màn hình làm việc của Turbo
Pascal xuất hiện. Dòng trên cùng màn hình là bảng chọn chính :
Ghi chú : ở đây trình bày đối với Turbo Pascal 6.0. Ngời đọc có thể tự suy ra đối với
Turbo Pascal 5.5 hay 7.0 vì về cơ bản chúng giống với phiên bản 6.0.
5
File Edit Search Run Compile Debug Options Window Help
Phần 3- Ngôn ngữ lập trình Pascal
B ớc 2 : Đặt tên cho tập tin chơng trình sẽ soạn.
Gõ Alt-F để chọn mục File trong bảng chọn chính, sẽ xuất hiện bảng chọn dọc :
Trong bảng này chọn New. Tiếp đến gõ tên tập tin (không cần
gõ phần mở rộng) vào trong khung vừa hiện ra, ví dụ :
VIDU1
Khi đó tên VIDU1.PAS sẽ hiện ra ở đầu vùng soạn thảo. Đuôi
PAS đợc Turbo Pascal tự động gắn thêm vào.
Tập tin VIDU1.PAS sẽ đợc lu trong thực mục hiện hành. Nếu
muốn tập tin VIDU1.PAS đợc lu trên đĩa A thì khi nhập tên tập
tin ta gõ thêm tên ổ đĩa ở đằng trớc, ví dụ :
A:VIDU1
B ớc 3 : Soạn thảo văn bản chơng trình
Program Vidu_1;
Uses Crt;{Khai báo Unit Crt : chứa các lệnh xử lý màn hình}
Begin
ClrScr; {xoá màn hình}
Writeln('-------------- TURBO PASCAL 7.0 --------------);
Writeln(' XIN CHAO CAC BAN YEU THICH TIN HOC)
End.
Ghi chú : Muốn ghi văn bản chơng trình vào đĩa thì chọn lệnh File/ Save hoặc gõ F2. Nếu
muốn ghi tập tin với tên khác hay ghi vào th mục khác với th mục lúc đầu thì chọn lệnh
File/ Save as, sau đó nhập vào tên tập tin mới cùng đờng dẫn và gõ Enter.
B ớc 4 : Biên dịch và thực hiện chơng trình
Gõ Ctrl-F9. Khi dịch máy sẽ kiểm tra ngữ pháp của từng lệnh, gặp lệnh sai
hoặc nhập sai máy dừng lại, trên mà hình có thông báo nguyên nhân sai của lỗi,
Ngời lập trình phải tự mình sửa lỗi, rồi gõ Ctrl-F9 để chạy tiếp. Lặp lại quá
trình này cho đến khi sửa hết lỗi.
Ghi chú :
Nếu sau khi chạy, máy không báo lỗi nhng lại cho kết quả sai thì ta phải tự tìm lỗi
vì đây là lỗi logic, lỗi về thuật toán máy không phát hiện đợc. Chẳng hạn, khi giải
phơng trình bậc hai ta gán nhầm giá trị cho biệt số : delta := b*b - 2*a*c.
Sau khi biên dịch và thực hiện chơng trình xong mà không thấy kết quả chơng trình
trên màn hình thì gõ Alt-F5 để hiện kết quả, xem xong gõ phím bất kỳ để trở lại
màn hình ban đầu.
Nếu chơng trình chạy đúng thì gõ F2 để lu nó lên đĩa lần cuối. Bây giờ có thể lặp
lại từ bớc 2 để soạn một chơng trình mới.
6
Open (F3)
New
Save F2
Save as
Save all
Change dir
Print
Get Info
Dos Shell
Exit
Giáo trình tin học đại cơng
Khi chơng trình đã chạy thông suốt, muốn dịch chơng trình ra tập tin trên đĩa có
phần mở rộng EXE để sau này có thể chạy độc lập không phải vào môi trờng của
Turbo Pascal, thì thực hiện bớc 5 và bớc 6.
B ớc 5 : Gõ Alt-C (chọn mục Compile), trên màn hình xuất hiện bảng chọn dọc
Compile, trong bảng chọn này, chọn Destination là Disk để kết quả dịch chơng
trình đợc ghi ra đĩa, rồi gõ Alt-F9 để dịch chơng trình. Khi xuất hiện thông báo
Compile Successful : Press any key thì dịch xong. Nếu có lỗi máy cũng dừng
lại và thông báo nguyên nhân lỗi trên màn hình.
B ớc 6 : Thoát tạm thời khỏi môi trờng Turbo Pascal để chạy chơng trình đã
dịch thành công : gõ Alt-F để vào bảng chọn dọc File, trong bảng chọn này,
chọn Dos Shell. Sau đó cho chạy tập tin chơng trình có đuôi EXE đã dịch. Chạy
xong chơng trình, trở lại Turbo Pascal bằng lệnh EXIT ().
B ớc 7 : Thoát khỏi hẵn Turbo Pascal : gõ Alt-X.
Mở xem hoặc hiệu chỉnh một chơng trình cũ : Trờng hợp muốn mở xem
hoặc hiệu chỉnh một chơng trình đã có trên đĩa, hãy chọn lệnh File/ Open hoặc gõ
phím F3, trong khung có tiêu đề là Name, gõ vào *.PAS (hoặc A:*.PAS nếu
tập tin nằm trên đĩa A), một danh sách các tập tin có phần mở rộng PAS sẽ hiện ra
trong khung phía dới cho ta chọn. Dùng các phím mũi tên để di chuyển và đặt
thanh sáng vào tên muốn chọn rồi gõ Enter. Nội dung tập tin này sẽ đợc đa lên
màn hình cho chúng ta xem, sửa, chạy thử, ...
5.4.2. Ví dụ 2 : Viết chơng trình tính chu vi, diện tích hình tròn với bán kính R
nhập vào từ bàn phím.
Program Vidu_2;
Uses Crt;
Var R, S, P : Real; {khai báo 3 biến thực R (bán kính), S (dien tich), P (chu vi)}
Begin
Clrscr; {xóa màn hình}
Write('Nhập bán kính R = '); Readln(R);
{Tính toán}
S := pi*R*R; P := 2*pi*R;
{Xuất kết quả}
Writeln('Diện tích S = ',S:1:4);
Writeln('Chu vi P = ',P:1:4);
Readln
end.
Kết quả thực hiện chơng trình :
7
Nhập bán kính R = 3.5
Diện tích S = 38.4845
Chu vi P = 21.9911
Phần 3- Ngôn ngữ lập trình Pascal
5.5. Các thao tác soạn thảo cơ bản với Turbo Pascal.
Phím lệnh soạn thảo thông dụng
Đa con trỏ về đầu dòng Home
Đa con trỏ về cuối dòng End
Đa con trỏ lên một trang Page Up
Đa con trỏ xuống một trang Page Down
Xóa kí tự ngay tại vị trí con trỏ Del
Xóa kí tự bên trái con trỏ Back Space
Xóa một dòng tại vị trí con trỏ Ctrl-Y
Xóa từ con trỏ đến cuối dòng Ctrl-Q Y
Chuyển con trỏ sang cửa sổ mới Alt - số hiệu cửa sổ
Thao tác trên khối
Đánh dấu khối Shift + các phím mũi tên
Sao chép khối Ctrl-K C
Di chuyển khối Ctrl-K V
Xóa khối Ctrl-K Y
Che/hiện lại khối đã đánh dấu Ctrl-K H
Câu hỏi - Bài tập
[5.1] Tập ký tự cơ bản của ngôn ngữ Turbo Pascal.
[5.2] Từ khoá là gì ? Tại sao nên học thuộc các từ khoá của Turbo Pascal.
[5.3] Phân biệt sự khác nhau giữa từ khoá và tên chuẩn.
[5.4] Tên là gì ? Các tên sau đây tên nào không đúng trong Turbo Pascal ? Tại
sao ?
Alpha1, ket-qua, 26B, $2.
[5.5] Trình bày cấu trúc đầy đủ của một chơng trình viết bằng Turbo Pascal.
Trong cấu trúc đó phần nào bắt buộc phải có, phần nào không bắt buộc
phải có.
8
Giáo trình tin học đại cơng
Chơng 6. Các kiểu dữ liệu đơn giản
6.1. Kiểu dữ liệu trong ngôn ngữ lập trình.
Một kiểu dữ liệu (data type) là một sự qui định về cấu trúc, miền trị của dữ
liệu và tập các phép toán tác động lên miền trị đó.
Một ngôn ngữ lập trình chỉ chấp nhận và xử lý những dữ liệu tuân theo sự
qui định về kiểu của ngôn ngữ lập trình đó. Trong một ngôn ngữ lập trình, một
dũ liệu bao giờ cũng thuộc về một kiểu dữ liệu nhất định.
Các kiểu dữ liệu trong Turbo Pascal đợc chia ra thành hai loại chính :
- Kiểu dữ liệu đơn giản (simple type).
- Kiểu dữ liệu có cấu trúc (tructure type).
Tổng quan phân loại các kiểu dữ liệu trong Turbo Pascal
9
Kiểu đoạn con (*)
Kiểu liệt kê (*)
Kiểu logic (*)
Kiểu nguyên (*)
Kiểu thực
Kiểu ký tự (*)
Kiểu
dữ liệu
(data type)
Kiểu
dữ liệu
(data type)
Kiểu có
cấu trúc
Kiểu có
cấu trúc
Kiểu đơn
giản
Kiểu đơn
giản
Chuẩn
Do người lập trình
định nghĩa
Kiểu mảng
Kiểu tập hợp
Kiểu bản ghi
Kiểu tập tin
Phần 3- Ngôn ngữ lập trình Pascal
Chú ý :
Riêng chuỗi ký tự (STRING) là một kiểu dữ liệu đặc biệt, vừa có tính đơn
giản vừa có tính cấu trúc. Mỗi chuỗi có thể xem là một giá trị, nhng cũng có
thể xem là một mảng các giá trị kiểu ký tự. Vì vậy, việc sử dụng chuỗi cũng
có hai mức khác nhau : mức đơn giản và mức có cấu trúc.
Các kiểu có dấu (*) gọi là kiểu vô hớng đếm đợc (hay có thứ tự).
Dới đây sẽ lần lợt trình bày 5 kiểu dữ liệu đơn giản thông dụng : kiểu logic,
kiểu nguyên, kiểu thực, kiểu ký tự và chuỗi.
6.2. Các kiểu dữ liệu đơn giản.
6.2.1. Kiểu logic (boolean type) :
- Chỉ có hai giá trị đợc biểu thị qua hai hằng chuẩn là TRUE (đúng),
FALSE (sai).
- Một giá trị logic đợc lu trử trong 1 byte.
- Quy ớc : FALSE < TRUE.
- Các phép toán : NOT, AND, OR và XOR. Kết quả của các phép toán
này đợc thể hiện qua bảng sau :
(A và B là hai giá trị kiểu logic)
Ví dụ 1 : Kết quả của các tính toán sau sẽ cho giá trị logic :
Delta > 0, A <> 0, (Delta > 0) and (A <> 0)
Chú ý : trớc và sau các từ khoá AND, OR, NOT, XOR chỉ có dấu cách.
6.2.2. Kiểu số nguyên :
10
A
not A
True
False
False
True
A B
A and B A or B A xor B
True
True
False
False
True
False
True
False
True
False
False
False
True
True
True
False
False
True
True
False
Giáo trình tin học đại cơng
Kiểu số nguyên thuộc tập Z. Có 5 kiểu số nguyên : Integer, Byte, Word,
ShortInt và LongInt. Dới đây là bảng chi tiết về tên gọi, phạm vi giá trị và
số byte dùng để lu trữ trong bộ nhớ của từng kiểu :
Tên kiểu Phạm vi giá trị số byte
ShortInt
Byte
Integer
Word
LongInt
-128 ..127
0..255
-32768..32767
0..65535
-2147483648..2147483647
1
1
2
2
4
Các phép tính số học trên số nguyên :
Phép cộng và trừ : Ký hiệu + và - nh thờng lệ.
Phép nhân : Ký hiệu bằng dấu *. Chẳng hạn : 3*2 cho kết quả là 6.
Phép chia (lấy kết quả là số thực) : Ký hiệu bằng dấu /. Chẳng hạn : 5/2
cho kết quả là 2.5
Phép chia lấy phần nguyên : Ký hiệu bằng từ khoá DIV. Chẳng hạn :
5 DIV 2 cho kết quả là 2; 3 DIV 4 cho kết quả là 0.
Phép lấy phần d nguyên của phép chia : Ký hiệu bằng từ khoá MOD.
Chẳng hạn : 5 MOD 2 cho kết quả là 1; 10 MOD 4 cho kết quả là 2.
Chú ý :
Các phép toán trên đều cho kết quả là các số nguyên, trừ ra phép chia (/)
luôn cho kết quả là một số thực. Vì thế, nếu N là một biến nguyên, mà gán :
N := 20/5;
thì máy sẽ báo lỗi, bởi vế phải có giá trị kiểu thực (5.0) mặc dù phần lẻ
bằng không.
Khi viết các số nguyên phải tuân theo các quy định :
- Không có khoảng trống giữa các số.
- Dấu + hay - (nếu có) phải đặt ngay trớc chữ số đầu tiên.
- Không đợc sử dụng dấu chấm thập phân.
Khi thực hiện các phép tính trên 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 quá phạm vi biểu diễn của số nguyên
không. Chẳng hạn, với a và b là dữ liệu Integer, khi đó hai câu lệnh sau :
a := 80;
b := (a*1245) Div 200;
cho kết quả sai, vì a*1245 = 99600 vợt quá phạm vi của Integer.
11
Phần 3- Ngôn ngữ lập trình Pascal
Ví dụ 2 : Nhập một số tiền N đồng, đổi xem đợc bao nhiêu tờ 10 đồng, bao
nhiêu tờ 5 đồng, bao nhiêu tờ 1 đồng sao cho tổng số tờ là ít nhất. Chẳng hạn :
N = 67 đ đổi đợc 6 tờ 10 đ + 1 tờ 5 đ + 2 tờ 1 đ.
Cách tính nh sau :
Số tờ 10 đ = 67 div 10 = 6; Số tiền d = 67 mod 10 = 7
Số tờ 5 đ = (Số tiền d) div 5 = 7 div 5 = 1
Số tờ 1 đ = (Số tiền d) mod 5 = 7 mod 5 = 2
Program Vidu_2 ;
Uses Crt;
Var N, st10 : LongInt;
st5, st1, sodu : Byte;
Begin
Write('Nhập số tiền N : ');Readln(N);
st10 := N div 10;
sodu := N mod 10; {tính phần d}
st5 := sodu div 5;
st1 := sodu mod 5;
Writeln('Số tờ 10 đồng = ',st10);
Writeln('Số tờ 5 đồng = ',st5);
Writeln('Số tờ 1 đồng = ',st1);
End.
6.2.3. Kiểu số thực :
Kiểu Real và các kiểu mở rộng : Kiểu Real là kiểu số thực thông dụng nhất
dùng để biểu diễn các số thực x có trị tuyệt đối nằm trong khoảng từ 2.9*10
-39
đến 1.7*10
38
. Nếu
x
> 1.7*10
38
thì không biểu diễn x trong máy đợc, còn
nếu
x
< 2.9*10
-39
thì x đợc coi là bằng không. Ngoài kiểu Real ra, các số
thực còn có 4 kiểu mở rộng nữa là : Single, Double, Extended và Comp. Dới
đây là bảng chi tiết về phạm vi giá trị và số byte dùng để lu trữ trong bộ nhớ
của từng kiểu :
Tên kiểu Phạm vi giá trị số byte
Real
Single
Double
Extended
Comp
2.9*10
-39
.. 1.7*10
38
1.5*10
-45
.. 3.4*10
38
5.0*10
-324
.. 1.7*10
308
3.4*10
-4932
.. 1.1*10
4932
-9.2*10
18
.. 9.2*10
18
6
4
8
10
8
Chú ý : Turbo Pascal thờng chỉ làm việc với một kiểu Real. Muốn dùng 4
kiểu thực còn lại, phải chuyển sang mode 8087 bằng cách viết chỉ thị {$N+}
ở ngay đầu chơng trình.
Cách viết một số thực : Có hai cách biểu diễn các số thực :
12
Giáo trình tin học đại cơng
Cách 1 : Viết nh một số thực bình thờng trong toán học, trong đó dấu phẩy
thập phân đợc thay bằng dấu chấm thập phân. Chẳng hạn : 2.12; 4.0;
-125.09; +235.55
Cách 2 : Viết số dới dạng khoa học.
2.345E+1 (có giá trị là 2.345*10
1
= 23.45)
123.456E-4 (có giá trị là 123.456*10
-4
= 0.0123456)
-52.4E2 (có giá trị là -52.4*10
2
= -5240.0)
Trong dạng này, số gồm có hai phần : phần đứng trớc E gọi là phần
định trị, đợc viết theo cách 1; phần đứng sau E gọi là phần bậc, gồm dấu
cộng hoặc trừ, tiếp đến là một số nguyên.
Số viết theo cách 1 còn gọi là số có dấu chấm thập phân cố định, số
viết theo cách 2 còn gọi là số có dấu chấm thập phân di động hay số dạng
khoa học.
Các phép toán trên số thực : cộng (+), trừ (-), nhân (*) và chia (/). Khi một
trong các số hạng tham gia tính toán là kiểu thực thì kết quả của phép toán
cũng là một số thực.
Lu ý : Phép toán DIV và MOD không dùng cho các số thực.
Các hàm số học dùng cho số nguyên và số thực :
Tên hàm Kiểu của
đối số
Kiểu của
kết quả
ý nghĩa
SQR,
ABS
nguyên
hay thực
giống
đối số
Sqr(x) = x
2
.
Abs(x) = |x| : trị tuyệt đối của x.
SQRT,
SIN, COS,
ARCTAN,
LN, EXP
nguyên
hay thực
thực
Sqrt(x) =
x
.
Sin(x), Cos(x), Artan(x): tính sinx, cosx
và arctgx.
Ln(x) = log
e
x (x > 0), Exp(x) = e
x
.
TRUNC,
ROUND
nguyên
hay thực
nguyên
Trunc(x) : cắt bỏ phần lẻ thập phân của x
nếu có. Trunc(4.86) = 4; Trunc(-3.2) =-3.
Round(x) : cho số nguyên gần x nhất.
Round(-23.68) = -24; Round(1.5) = 2.
INT,
FRAC
nguyên
hay thực
thực
Int(x) : cho số thực bằng phần nguyên của
x. Int(12.57) = 12.0
Frac(x) : cho số thực bằng phần lẻ của x.
Frac(12.57) = 0.57
SUCC,
FRED
nguyên nguyên
Succ(n) = n+1,
Pred(n) = n-1.
13
Phần 3- Ngôn ngữ lập trình Pascal
ODD
nguyên logic
Odd(n) cho kết quả TRUE nếu n lẻ, cho
kết quả FALSE nếu ngợc lại.
6.2.4. Kiểu ký tự (character type) :
Các ký tự dùng trong máy tính đợc liệt kê đầy đủ trong bảng mã ASCII gồm
256 ký tự khác nhau và đợc đánh số thứ tự từ 0 đến 255. Số thứ tự của mỗi
ký tự còn gọi là mã ASCII của ký tự đó. Dới đây là một phần của bảng mã
ASCII :
Mã ASCII Ký tự
7
32
43
48
49
65
66
97
98
134
Bell
Space (ký tự trắng)
+
0
1
A
B
a
b
Lu ý : Các ký tự có mã từ 0 đến 31 gọi là các ký tự điều khiển, không in ra đợc,
đợc dùng để điều khiển các thiết bị ngoại vi. Chẳng hạn, ký tự có mã là 7 (bell)
dùng để tạo một tiếng kêu bip; ký tự có mã 13 dùng để chuyển con trỏ màn
hình xuống đầu dòng dới, ...
Mỗi ký tự trong bảng mã ASCII gọi là một hằng ký tự, chiếm độ dài 1 byte,
và khi viết trong Turbo Pascal phải đợc đặt trong cặp nháy đơn, chẳng hạn:
A, 2, $, ...
Phép toán : Chỉ có phép toán so sánh. Ký tự có mã nhỏ hơn thì nhỏ hơn. Tức
là : 0 < 1 < ... < A < B < ... < a < b < ...
Các hàm liên quan đến ký tự :
Hàm UPCASE(ch) : Đổi ký tự ch thành ký tự hoa. Chẳng hạn :
UpCase(a) = A; UpCase(B) = B.
Hàm PRED(ch) : Cho ký tự đứng ngay trớc ký tự ch trong bảng mã.
Chẳng hạn : Pred(b) = a.
Hàm SUCC(ch) : Cho ký tự đứng ngay sau ký tự ch trong bảng mã.
Chẳng hạn : Succ(b) = c.
Hàm ORD(ch) : Cho mã của ký tự ch. Chẳng hạn : Ord(A) = 65;
Ord(a) = 97.
14
Giáo trình tin học đại cơng
Hàm CHR(k), trong đó đối số k nguyên, 0 k 255 : Cho ký tự có mã
bằng k. Chẳng hạn : Chr(65) = A; Chr(97) = a.
Ghi chú :
Có một số ký tự không có trên bàn phím, để viết chúng lên màn hình ta phải
dùng lệnh Write và hàm CHR. Chẳng hạn :
- Lệnh Write(Chr(242)) : in ra ký tự
- Lệnh Write(Chr(240)) : in ra ký tự
- Lệnh Write(Chr(7)) hay Write(#7) : phát ra một tiếng bip.
Turbo Pascal cho phép viết gọn Chr(k) thành #k nếu k là hằng số. Chẳng
hạn, các lệnh sau đều in lên màn hình ký tự A : Write(A); Write(#65);
Write(Chr(65)).
Turbo Pascal không có hàm đổi ký tự hoa ra ký tự thờng, nhng có thể làm
việc này nhờ công thức sau :
Ký tự thờng := Chr(Ord(ký tự hoa) + 32)
6.2.5. Kiểu chuỗi ký tự (string type) : Một dãy ký tự đặt trong cặp nháy đơn
gọi là một hằng chuỗi. Dới đây là hai hằng chuỗi :
Ho va ten : gồm 9 ký tự.
TURBO PASCAL : gồm 12 ký tự.
Số ký tự của chuỗi không quá 255. Chuỗi không có ký tự nào cả gọi
là chuỗi rỗng.
Dữ liệu kiểu chuỗi sẽ đợc trình bày chi tiết hơn ở các chơng sau.
Câu hỏi - Bài tập
[6.1] Kiểu dữ liệu là gì ?
[6.2] Trình bày các kiểu dữ liệu đơn giản của Turbo Pascal.
[6.3] Trong Turbo Pascal có thể biểu diễn đợc bao nhiêu ký tự khác nhau.
[6.4] Khi cần tính các số nguyên có giá trị từ 0 đến 245 ta nên dùng dữ liệu
kiểu gì ?
[6.5] Để biểu diễn điều kiện 3 số A, B, C thoả mãn phơng trình bậc hai :
Ax
2
+ Bx + C = 0
có hai nghiệm phân biệt thì cách viết :
A > 0 AND (SQR(B) - 4*A*C > 0)
có đúng hay không ? tại sao ? Nếu sai, hãy viết lại cho đúng.
15
Phần 3- Ngôn ngữ lập trình Pascal
[6.6] Các dữ liệu sau thuộc kiểu dữ liệu đơn giản chuẩn nào ?
a) 15.0 b) 1996 c) I d) Sqrt(4)
e) Int(12.5) f) 4 >=5 g) Round(12.4) h) 15/3
[6.7] Trong các phép toán dới đây phép nào có thể thực hiện đợc trong Turbo
Pacal và kết quả của phép toán thuộc kiểu dữ liệu nào ? Trong trờng hợp
không thực hiện đợc hãy giải thích tại sao ?
a) 14/10 + Ord(a)
b) Sin(0.5) + 12
c) Abs(2) + 25.7
d) Odd(12) + Ord(12)
[6.8] Viết chơng trình nhập vào từ bàn phím một số nguyên k, 0 k 255, in
ra màn hình ký tự có mã ASCII là k.
[6.9] Viết chơng trình nhập vào từ bàn phím họ tên, năm sinh của một học
sinh và đa các dữ liệu đó ra màn hình.
[6.10] Viết chơng trình tính diện tích mặt cầu và thể tích của hình cầu. Biết bán
kính R nhập vào từ bàn phím.
Chơng 7. Hằng, biến, kiểu, biểu thức, câu lệnh, lệnh gán
7.1. Hằng.
7.1.1. Khái niệm về hằng (constant) : Hằng là đại lợng có giá trị không thay
đổi trong suốt quá trình thực hiện chơng trình.
7.1.2. Cách khai báo hằng :
trong đó Tên_hằng là tự đặt, theo đúng quy tắc của một tên, còn giá_trị có thể
là một hằng hoặc một biểu thức mà các toán hạng đều là hằng.
Ví dụ 1 :
Const
max = 150; {hằng nguyên}
L = False; {hằng logic}
A = (5*7)/4; {hằng thực}
16
CONST
Tên_hằng = giá_trị;
Giáo trình tin học đại cơng
ch =Y; {hằng ký tự}
Ho = Le Van; {hằng chuỗi}
Lu ý : Turbo Pascal có sẵn một số hằng chuẩn cho phép sử dụng mà không phải
khai báo nh : Pi (có giá trị bằng số
), MaxInt (có giá trị bằng 32767, là số
Integer lớn nhất). Chẳng hạn, có thể dùng lệnh sau :
Writeln(Diện tích hình tròn bán kính r = 5 là : ,pi*5*5:8:3);
Chúng ta dùng các tên hằng để chơng trình đợc rõ ràng và dễ sửa đổi.
7.2. Biến.
7.2.1. Khái niệm về biến (variable) : Biến là đại lợng có giá trị thay đổi đợc
trong chơng trình. Mỗi biến phải thuộc về một kiểu dữ liệu nhất định và phải đ-
ợc khai báo trớc. Việc khai báo có tác dụng báo cho máy dành sẵn các ô nhớ
thích hợp trong bộ nhớ để sẵn sàng chứa dữ liệu.
7.2.2. Cách khai báo biến :
trong đó Danh_sách_tên_biến là một dãy tên biến đợc đặt cách nhau bởi dấu
phẩy.
Ví dụ 2 :
Var
x, y, z : Real; {khai báo 3 biến kiểu Real, mỗi biến đợc cấp 6 bytes bộ nhớ}
17
VAR
danh_sách_tên_biến : tên_kiểu_dữ_liệu;
Phần 3- Ngôn ngữ lập trình Pascal
chon : Char;
thoat : Boolean;
i, j : Integer;
ten : String[7];
Chú ý :
Biến ten ở ví dụ trên chứa một dãy không quá 7 ký tự. Ta nói biến ten có độ
dài 7 byte. Biến String khai báo tối đa là String[255].
Một biến String đợc cấp một số byte bằng độ dài của nó cộng thêm 1. Byte đầu
tiên dùng để ghi số ký tự đang đợc lu trữ, mỗi byte còn lại chứa một ký tự.
Có thể vừa khai báo vừa khởi đầu (gán giá trị) cho các biến theo cách sau :
Const
x = 25.0;
y : Real = -5.23;
Ho_ten : String[25] = Le Hung;
Chú ý phân biệt x và y : x là hằng thực, y là biến thực. Trong chơng trình có thể
thay đổi giá trị của y nhng không thể thay đổi giá trị của x.
7.3. Định nghĩa kiểu dữ liệu.
Ngoài các kiểu dữ liệu đã đợc định nghĩa sẵn nh : Real, Integer, Byte, Char,
Boolean, ... Turbo Pascal còn 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 đã có sẵn theo quy tắc xây dựng của Turbo Pascal. Kiểu dữ
liệu mới đợc định nghĩa bởi từ khoá TYPE nh sau :
Sau đó có thể khai báo các biến thuộc kiểu dữ liệu mới này.
Ví dụ 3 :
Type songuyen = Integer;
tuoi_tho = 1..100; {miền giá trị của tuoi_tho từ 1 đến 100}
color = (Red, Blue, Green);
Sau đó ta có quyền sử dụng các kiểu trên để khai báo, chẳng hạn :
Var i, j : songuyen;
tuoi : tuoi_tho; mau : color;
18
TYPE
tên_kiểu = mô_tả_ kiểu;
Giáo trình tin học đại cơng
7.4. Biểu thức.
7.4.1. Định nghĩa : Biểu thức (expression) là một công thức gồm có một hay
nhiều thành phần đợc kết nối với nhau bởi các phép toán. Mỗi thành phần (hay
toán hạng) có thể là hằng, là biến hay là hàm. Kiểu dữ liệu của biểu thức là kiểu
của kết quả sau khi tính biểu thức.
Ví dụ 4 :
3*5 div 2 + 7 mod 4 : biểu thức nguyên, có kết qủa là 10
('A' <> 'a') And (5-2=3) : biểu thức logic, có kết quả là True
5 + sin(pi/2) : biểu thức thực, có kết quả là 6.0
Chú ý : Các thành phần trong biểu thức cần phải có kiểu dữ liệu phù hợp để cho
các phép toán thực hiện đợc, nếu không máy sẽ báo lỗi. Chẳng hạn, biểu thức :
2 + chr(67) là sai vì ta không thể cộng một số nguyên với một ký tự.
7.4.2. Thứ tự u tiên : Một biểu thức có thể chứa nhiều phép toán. Thứ tự thực
hiện các phép toán đợc cho trong bảng dới đây :
Cấp u tiên Phép toán
1
2
3
4
5
6
Biểu thức trong ngoặc đơn
Các hàm
NOT, - (phép lấy dấu âm)
*, /, DIV, MOD, AND
+, - (trừ), OR, XOR
=, <>, <, <=, >, >=, IN
Khi tính một biểu thức có hai quy tắc về thứ tự u tiên nh sau :
Quy tắc 1 : Phép toán có cấp u tiên nhỏ thì đợc tính trớc, phép toán có cấp u
tiên lớn thì tính sau.
Quy tắc 2 : Trong các phép toán có cùng cấp u tiên, thì phép toán nào đứng
trớc đợc tính trớc.
Ví dụ 5 :
3+5*3 = 18, (3+5)*3 = 24, 5/2*3 = 7.5
(5 + 2 > 4) and not (true or (5 - 3 = 8)) : biểu thức logic, cho kết quả false.
-b + sqrt(delta)/2*a : cho kết quả là
a
delta
b
2
+
(-b + sqrt(delta))/(2*a) = (-b + sqrt(delta))/2/a : cho kết quả là
a
deltab
2
+
19
Phần 3- Ngôn ngữ lập trình Pascal
7.5. Câu lệnh.
Câu lệnh (statement) là một dãy ký tự cơ bản đợc xây dựng theo một quy tắc
nhất định (gọi là cú pháp) nhằm chỉ thị cho máy thực hiện một công việc xác định.
Các câu lệnh đợc chia ra hai loại : câu lệnh đơn giản và câu lệnh có cấu trúc.
Sơ đồ tổng quan phân loại các loại câu lệnh trong Turbo Pascal
Các câu lệnh phải đợc ngăn cách nhau bởi dấu chấm phẩy (;) và 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.
7.6. Lệnh gán.
Lệnh gán (assignment statement) dùng để gán giá trị của một biểu thức cho
một biến đã khai báo.
Cú pháp của lệnh gán :
ý nghĩa : Đầu tiên máy tính trị của biểu_thức vế phải, sau đó gán giá trị tính đợc
cho tên_biến ở vế trái.
Chú ý :
Vế trái của phép gán chỉ và chỉ có thể là một biến mà thôi. Chẳng hạn, viết
x + y := 7 là sai vì vế trái là một biểu thức chứ không phải là một biến.
Kiểu của biểu thức phải trùng với kiểu của biến, trừ trờng hợp một biến thực
có thể nhận giá trị nguyên.
Ví dụ 6 : Sau khi đã khai báo : Var c1, c2 : Char; i, j : Integer; x, y : Real;
thì có thể thực hiện các lệnh gán sau :
c1 :=B; c2 := chr(7); i := (23+6)*2 mod 3;
j := round(20/3); x := 0.5; y := 1;
20
Câu
lệnh
Câu
lệnh
Lệnh
đơn
giản
Lệnh
đơn
giản
Lệnh
có cấu
trúc
Lệnh
có cấu
trúc
Lệnh gán (:=)
Lệnh nhập dữ liệu (Read, Readln)
Lệnh xuất dữ liệu (Write, Writeln)
Lời gọi chương trình con
Xử lý tập tin (Reset, Rewrite, Assign,...)
Lệnh phức (Begin ... End)
Lệnh lựa chọn (If ..., Case ...)
Lệnh lặp (For ..., Repeat ..., While ...)
tên_biến := biểu_thức
Giáo trình tin học đại cơng
Câu hỏi - Bài tập
[7.1] Hằng, biến là gì ? Viết các khai báo hằng và biến sau :
a) hằng số c = 100.
b) x, y là các biến thực.
c) i là biến nhận các giá trị nguyên trong khoảng từ -32768 đến 32767.
d) kt, traloi là các biến ký tự.
e) hoten là biến chuỗi ký tự.
[7.2] Hãy viết các biểu thức sau ra Turbo Pascal :
a)
2
y
x
yx
+
; b)
)1(9
)652)(2(
2
++
aa
xxa
;
c)
23
cossin2
2
+
m
xx
; d)
x
exx
+
)2(log
2
2
3
.
[7.3] Viết các biểu thức quan hệ và logic sau theo Turbo Pascal :
a) a < x < b; b) b
2
- 4ac;
c) y < a - c hoặc y < c+b; d) D = 0 và D1 0.
[7.4] Chuyển các biểu thức viết theo Turbo Pascal sau đây thành các biểu thức
toán học thông thờng :
a) Exp(x*ln(y)); b) Sqrt(a+Sqrt(sqr(b)+sqr(c))).
[7.5] Có bao nhiêu loại câu lệnh trong Turbo Pascal ? Lệnh gán là loại câu
lệnh nào và dùng để làm gì ?
[7.6] Giả thiết có các khai báo sau :
Var x, y, z : Real; i, j : Byte; k : Word; c : Char; b : Boolean;
Hãy xem các giá trị dới đây có thể gán cho các biến nào ;
a) 12.45; b) -5; c) 1e-5; d) 65532; e) 1996
f) &; g) sqrt(4); h) sqr(15); i) -32770; k) CINTA
[7.7] Hãy xác định giá trị của các biến sau khi thực hiện các lệnh gán sau :
x := (4+5)*2 div 7 + sin(pi/6);
L := (2 > 4 div 2) or Not (49.25 + 2 < 50);
[7.8] Cho biết kết quả và kiểu dữ liệu của các biểu thức sau :
a) 3 + 5.0 ; b) 6/3 + 2 div 3 ;
c) (10*((45 mod 3)+12))/6 ; d) (5<=3) and (not true and (12 div 3 <=1)).
[7.9] Viết chơng trình nhập số thực x từ bàn phím; sau đó tính và in các giá trị
của y và z lên màn hình theo công thức :
2
32sin
22
++
=
x
e
xx
y
;
( )
1log2
3
++=
xz
x
.
[7.10] Chỉ dùng một biến số, viết chơng trình in ra giá trị của tổng :
21
Phần 3- Ngôn ngữ lập trình Pascal
S = 1
2
+ 2
2
+ ... + 10
2
Chơng 8. Các lệnh xuất, nhập dữ liệu
8.1. Xuất dữ liệu.
8.1.1. Xuất dữ liệu ra màn hình : Các dữ liệu đợc xuất ra màn hình nhờ các
lệnh sau :
trong đó bt_1, bt_2, ..., bt_n là các biểu thức cần phải xuất giá trị ra màn hình.
Trong trờng hợp đơn giản, mỗi biểu thức này có thể là một biến, một hằng, hay
một hàm.
Dạng (1) : xuất ra màn hình giá trị các biểu thức tại vị trí hiện thời của con
trỏ trên màn hình theo thứ tự viết trong , và sau lệnh này con trỏ ở vị trí sau
giá trị của bt_n.
Dạng (2) : xuất ra màn hình giá trị các biểu thức tại vị trí hiện thời của con
trỏ trên màn hình theo thứ tự viết trong câu lệnh, và sau đó đa con trỏ về đầu
dòng mới.
Chú ý : Lệnh WRITELN {không có tham số} sẽ không xuất gì cả, mà chỉ đa con
trỏ về đầu dòng mới.
Ví dụ 1 :
Program Vidu_1;
Uses Crt;
Var
A, B : Byte;
Begin
Clrscr;
A := 2; B :=4;
Write(Đây là kết quả của phép nhân A với B : ,A*B);
Writeln(*****);
Writeln(-------------------------------------------------);
End.
Kết quả trên màn hình sau khi chạy chơng trình :
Chú ý : Có hai dạng viết trong thủ tục WRITE và WRITELN là viết không quy
cách và viết có quy cách. Chúng sẽ đợc xét cụ thể với từng kiểu dữ liệu qua các
ví dụ sau :
Ví dụ 2 :
22
WRITE(bt_1, bt_2, ..., bt_n) (1)
WRITELN(bt_1, bt_2, ..., bt_n) (2)
Đây là kết quả của phép nhân A với B : 8*****
----------------------------------------------------
Giáo trình tin học đại cơng
Program Vidu_2 ; {dạng viết không quy cách}
Uses Crt;
Var
i : Byte;
r : real;
ch : Char;
b : Boolean;
Begin
Clrscr;
i := 123; r := 123.456; ch := D; b := 2<5;
Writeln(i);
Writeln(r); Writeln(-3.14); Writeln(20*2.5); Writeln;
Writeln(ch);
Writeln(b);
Writeln(20,#248); {in ra 20
0
}
Writeln(#7);
End.
Kết quả trên màn hình sau khi chạy chơng trình :
Vậy cách viết không quy cách sẽ căn lề theo bên trái.
Ví dụ 3 :
Program Vidu_3 ; {dạng viết có quy cách}
Uses Crt;
Var
i : Byte;
r : real;
ch : Char;
b : Boolean;
Begin
Clrscr;
i := 123; r := 123.456; ch := D; b := 2<5;
Writeln(i:8); {in ra giá trị của i với số chỗ là 8}
Writeln(-23564:8);
Writeln(r:12:6); {in ra giá trị r với số chỗ là 12, với 6 chữ số phần thập phân}
Writeln(r:1:2); {in ra giá trị r với 2 chữ số phần thập phân}
23
123 {số nguyên đợc viết ra với số chỗ bằng số chữ số gán vào}
1.2345600000E+02 {số thực dơng đợc viết ra với trình tự sau : 1 dấu cách, 1 số
-3.1400000000E+00 phần nguyên, dấu chấm, 10 chỗ phần thập phân, chữ E, dấu
5.0000000000E+01 của phần mũ, 2 số biểu diễn giá trị phần mũ}
D {các ký tự in bình thờng, 1 ký tự chiếm 1 chỗ}
TRUE {kiểu boolean đợc viết ra chữ TRUE hay FALSE}
20
0
Phần 3- Ngôn ngữ lập trình Pascal
Writeln(35.123456789:12:6);
Writeln(ch:4);
Writeln(ABC:5);
Writeln(B:7);
End.
Kết quả trên màn hình sau khi chạy chơng trình :
Vậy cách viết không quy cách sẽ căn lề theo bên phải.
Chú ý : Vì dấu nháy đơn () để đánh dấu ký tự, do đó khi muốn xuất nó ra màn
hình, ta viết 2 lần dấu nháy đơn. Chẳng hạn, lệnh Write(Dont forget me !); sẽ
xuất ra màn hình : Dont forget me !
8.1.2. Xuất dữ liệu ra máy in : Để xuất dữ liệu ra máy in, ta dùng các lệnh
WRITE, WRITELN với tham số LST vào trớc danh sách các tham số. Vì 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ừ khoá USES.
Ví dụ 4 :
Program Vidu_4 ;
Uses Printer;
Begin
Writeln(Lst,x = ,12, và y = ,3.55:3:1);
End.
Kết quả sẽ in ra giấy nội dung sau : x = 12 và y = 3.6
8.1.3. Một số hàm, thủ tục trình bày màn hình trong Turbo Pascal
GOTOXY(X,Y) : Thủ tục di chuyển con trỏ đến vị trí dòng Y cột X. Các cột đ-
ợc đánh số từ 1 đến 80, các dòng đợc đánh số từ 1 đến 25.
CLRSCR (Clear Screen) : Thủ tục xoá toàn bộ màn hình và đa con trỏ về
dòng 1 và cột 1 của màn hình.
CLREOL (Clear End Of Line) : Thủ tục xoá các ký tự từ vị trí con trỏ đến hết
dòng. Sau khi thực hiện xong, con trỏ đứng ngay vị trí trớc khi gọi thủ tục.
DELLINE : Thủ tục xoá dòng con trỏ đang đứng và dịch các dòng dới lên một
dòng.
24
123
- 23564
123. 456000
123 . 46
35.123457 {phần thập phân > 6 chỗ nên đợc làm tròn}
D
ABC
TRUE
Giáo trình tin học đại cơng
WINDOW(x1,y1,x2,y2) : Thủ tục thiết lập một cửa sổ hoạt động giới hạn từ
điểm (x1,y1) đến (x2,y2). Các toạ độ phải tính lại theo quy tắc :
Hoành độ mới = Hoành độ cũ -x1 + 1.
Tung độ mới = Tung độ cũ -y1 + 1.
Chẳng hạn, muốn di chuyển con trỏ đến dòng 8 cột 10 trên màn hình sau
khi đã thực hiện lệnh Window(5,7,75,15); ta phải viết GotoXY(6,2).
WHEREX : Hàm cho giá trị có kiểu byte cho biết con trỏ đang ở cột nào.
WHEREY : Hàm cho giá trị có kiểu byte cho biết con trỏ đang ở dòng nào.
Chú ý : Muốn sử dụng các hàm và thủ tục trên phải khai báo : USES CRT;
Ví dụ 5 :
Program Vidu_5;
Uses Crt;
Var x, y : Byte;
Begin
ClrScr;
x :=20; y :=3;
GotoXY(x+2,y); Write(PASCAL);
GotoXY(x-2,y+2); Write(BAN HAY DEN VOI);
GotoXY(x,y+3); Write(TURBO PASCAL);
GotoXY(WhereX+2,WhereY); Write(7.0);
Window(60,2,75,4);
Writeln(BM TIN HOC);
Writeln( ----------------);
End.
Kết quả trên màn hình sau khi chạy chơng trình :
18 22 60
1
2
3
5
25
BM TIN HOC
PASCAL ---------------
BAN HAY DEN VOI
TURBO PASCAL 7.0