Bài thực hành 1. Làm quen với Turbo Pascal

Chia sẻ bởi Nickkhum | Ngày 24/10/2018 | 37

Chia sẻ tài liệu: Bài thực hành 1. Làm quen với Turbo Pascal thuộc Tin học 8

Nội dung tài liệu:

NGÔN NGỮ LẬP TRÌNH PASCAL
GIỚI THIỆU 
* Nói về TURBO PASCAL (Đọc trang 1)
Thông thường, chương trình Turbo Pascal được đặt trong một thư mục riêng rẽ có tên TP. Ðể sử dụng Turbo Pascal, ta cần có các tập tin tối thiểu:
- TURBO.EXE - TURBO.TPL
* Khởi động Turbo :
 Tìm vào thư mục TP và kích hoạt tệp TURBO.EXE hoặc kích hoạt Shortcut Turbo Pascal tại màn hình DEKSTOP.

* Làm việc với TURBO
·    Soạn chương trình theo thuật giải (từng dòng lệnh), chú ý câu lệnh ghép viết theo khối lệnh.
·  Dịch chương trình tìm lỗi cú pháp (dùng fím F9 ), TURBO chỉ ra lỗi và nguyên nhân để sửa, dịch , sửa tới khi hết lỗi sẽ ghi vào với tên tệp tự chọn (dùng fím F2)
Chạy chương trình (dùng đồng thời hai fím CTRL – F9) , nạp dữ liệu và thu nhận kết quả
II. CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL 
1. Bộ ký tự
- Bộ 26 chữ Latin:
Chữ in: A, B, C, ..., X, Y, Z
Chữ thường: a, b, c, ..., x, y, z
- Bộ chữ số thập phân: 0, 1, 2, 3, ..., 8, 9
- Ký tự gạch nối dưới: _
- Các ký hiệu toán học: +, -, *, /, =, <, >, (,
), [, } 
2. Từ khóa
Là các từ riêng của Pascal, có ngữ nghĩa đã được xác định, không được dùng nó vào các việc khác hoặc đặt tên mới trùng với các từ khóa.
- Từ khóa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION 
- Từ khóa để khai báo: CONST, VAR, TYPE, ARRAY, STRING, RECORD, SET, FILE, LABEL
- Từ khóa của lệnh lựa chọn: IF ... THEN ... ELSE, CASE ... OF 
- Từ khóa của lệnh lặp: FOR... TO... DO,
FOR... DOWNTO... DO , WHILE... DO,
REPEAT... UNTIL 
- Từ khóa điều khiển: WITH, GOTO, EXIT, HALT 
- Từ khóa toán tử: AND, OR, NOT, IN, DIV, MOD 
3. Tên chuẩn
Tên chuẩn là tên đã được định nghĩa sẵn trong Pascal, nhưng người ta có thể định nghĩa lại nếu muốn. Trong Pascal ta có các tên chuẩn sau đây:  (Đọc trang 2)
4. Tên gäi
Trong Pascal để đặt tên cho các biến, hằng, kiểu, chương trình con ta dùng các Tên gäi được bắt đầu bằng một chữ cái, sau đó có thể là các chữ cái, chữ số hay là dấu nối, không được có khoảng trắng và độ dài tối đa cho phép là 127. 
Ví dụ 6.1: Sau đây là các Tên gäi : x; S1; Delta; PT_bac_2 
Pascal không phân biệt chữ thường và chữ hoa trong một tªn gäi. 
Ví dụ 6.2: aa và AA là một; XyZ_aBc và xyZ_AbC là một 
Khi viết chương trình ta nên đặt các tªn gäi sao cho chúng nói lên các ý nghĩa của đối tượng mà chúng biểu thị. Ðiều này giúp chúng ta viết chương trình dễ dàng và người khác cũng dễ hiểu nội dung chương trình.

 III. CẤU TRÚC MỘT CHƯƠNG TRÌNH PASCAL
(Xem trang 4)
Ví dụ 6.3:
PROGRAM TBC; { Dòng tiêu đề }
USES Crt; {Khai báo thủ tục chuẩn}
VAR TB,A,B,C,D : REAL; { Khai báo biến }
BEGIN { Thân chương trình chính }
CLRSCR; {Xo¸ mµn hình}
Writeln (` Moi vao 4 so thuc `) ;
Readln (a,b,c,d); {vµo dữ liÖu }
TB := (a+b+c+d)/4;
Writeln (` Trung binh cong la : ` , TB:5:1) ; Readln; { Dừng màn hình để xem kết quả - gâ
END. phÝm Enter ®Ó kÕt thóc}


TOP
Một chương trình Pascal có các phần: (trang 4-5)
* Phần tiêu đề:
Phần này bắt đầu bằng từ khóa Program rồi tiếp đến là tên của chương trình và chấm dứt bằng dấu chấm phẩy (;) 
Tên chương trình phải được đặt theo đúng qui cách của tªn gäi tự đặt. Phần tiêu đề có hay không cũng được. 
* Phần khai báo dữ liệu:
Trước khi sử dụng biến nào phải khai báo biến đó, nghĩa là xác định rõ xem biến đó thuộc kiểu dữ liệu nào. Một chương trình Pascal có thể có một số hoặc tất cả các khai báo dữ liệu sau:
CONST : khai báo hằng
TYPE : định nghĩa kiểu dữ liệu mới
VAR : khai báo các biến
Phần khai báo chương trình con (nếu có)
* Phần thân chương trình:
Phần thân chương trình là phần quan trọng nhất và bắt buộc phải có, phần này luôn nằm giữa 2 từ khoá là BEGIN và END. Ở giữa là lệnh mà các chương trình chính cần thực hiện. Sau từ khóa END là dấu chấm (.) để báo kết thúc chương trình. 
* Dấu chấm phẩy (;):
Dấu ; dùng để ngăn cách các câu lệnh của Pascal và không thể thiếu được
* Lời chú thích:
Lời chú thích dùng để chú giải cho người sử dụng chương trình nhớ nhằm trao đổi thông tin giữa người và người, máy tính sẽ không để ý đến lời chú thích này. Lời chú thích nằm giữa ký hiệu: { } hoặc (* *) 
IV. CÁC KIỂU DỮ LIỆU CƠ SỞ: INTEGER, REAL, BOOLEAN, CHAR 
1. Khái niệm
Dữ liệu (data) là tất cả những gì mà máy tính phải xử lý.
CHƯƠNG TRÌNH = THUẬT TOÁN + CẤU TRÚC DỮ LIỆU 
Kiểu dữ liệu đơn giản bao gồm kiểu số nguyên (Integer), kiểu số thực (Real), kiểu logic (Boolean), kiểu ký tự (Char). 
2. Kiểu số nguyên (Integer type) 
a. Kiểu số nguyên thuộc Z chứa trong Turbo Pascal
Ðược định nghĩa với các ten chuan sau: 
TỪ KHÓA dung luong PHẠM VI
BYTE 1 byte 0 .. 255
SHORTINT 2 byte - 128 .. 127
INTEGER 2 byte - 32768 .. + 32767
WORD 2 byte 0 .. 65535
LONGINT 4 byte - 2147483648 .. 2147483647

b. Các phép toán số học đối với số nguyên 
+ Cộng - Trừ * Nhân
/ Chia cho kết quả là số thực
DIV Chia lấy phần nguyên
MOD Chia lấy phần dư
SUCC (n) n + 1
PRED (n) n - 1
ODD (n) TRUE nếu n lẻ
và FALSE nếu n chẵn
 3. Kiểu số thực (Real type)
Ở Turbo Pascal, kiểu số thực thuộc tập hợp R chứa trong 6 bytes, được định nghĩa với từ khóa REAL: R =([2.9 x 10-39 , 1.7 x 1038 ] 
Các phép toán số học cơ bản +, -, * , / dĩ nhiên được sử dụng trong kiểu Real. 
Dưới đây là các hàm số học cho kiểu số thực: 
ABS (x) | : lấy giá trị tuyệt đối của số x
SQR (x) : lấy bình phương trị số x
SQRT(x) : lay can bac hai cua x
SIN(x) : lấy sin của x
COS (x) : lấy cos của x
ARCTAN (x) : arctang (x)

LN (x) : lấy logarit nepe của trị x (e = 2.71828)
EXP (x) : ex
TRUNC (x) : lấy phần nguyên số x – KQnguyen
INT (X) : lấy phần nguyên số x – KQ thực
ROUND (x) làm tròn giá trị của x, lấy số nguyên
gần x nhất
4. Kiểu logic (Boolean)
Một dữ liệu thuộc kiểu BOOLEAN là một đại lượng được chứa trong 1 byte ở Turbo Pascal và chỉ có thể nhận được một trong hai gía trị logic là TRUE (đúng) và FALSE (sai).
Qui ước: TRUE > FALSE 
Các phép toán trên kiểu Boolean:  (Trang 7)

Các phép toán quan hệ cho kết quả kiểu Boolean: 
< > khác nhau
= bằng nhau
> lớn hơn
< nhỏ hơn
> = lớn hơn hoặc bằng
< = nhỏ hơn hoặc bằng
  5. Kiểu ký tự (Char type)
Tất cả các dữ liệu viết ở dạng chữ ký tự được khai báo bởi từ chuẩn CHAR. 
Một ký tự được viết trong hai dấu nháy đơn ( ‘ A ‘) .
Bảng mã đánh số các ký tự là bảng mã ASCII .
Trong Turbo Pascal mỗi ký tự được chứa trong 1 byte.
Các hàm chuẩn liên quan đến kiểu ký tự: 
ORD(x) Cho số thứ tự của ký tự x trong bảng mã
CHR(n) hay #n Cho ký tự có số thứ tự là n
PRED(x) Cho ký tự đứng trước x
SUCC(x) Cho ký tự đứng sau x
V. CÁC KHAI BÁO HẰNG, BIẾN, KIỂU, BIỂU THỨC, ...
1. Hằng (constant)
a. Ðịnh nghĩa
Hằng là một đại lượng có giá trị không đổi trong quá trình chạy chương trình. Ta dùng tên hằng để chương trình được rõ ràng và dễ sửa đổi. 
b. Cách khai báo 
CONST
Tên hằng = giá trị của hằng ; 
Ví dụ 6.4: CONST
Siso = 100;
X = ‘Le Quy Don ‘; 
a. Ðịnh nghĩa
Biến là một « nhớ có tên (đó là tên biến hay tªn gäi của biến) , biến phải được khai báo trước. 
Biến nhớ một dữ liệu nào đó gọi là giá trị (value) của biến. Giá trị của biến có thể được biến đổi trong thời gian sử dụng biến. 
Sự truy xuất của biến nghĩa là đọc giá trị hay thay đổi giá trị của biến được thực hiện thông qua tên biến.
Ví dụ 6.5: Readln (x) ;
Writeln (x) ;
Biến là một cấu trúc ghi nhớ dữ liệu vì vậy nó phải tuân theo qui định của kiểu dữ liệu : một biến phải thuộc một kiểu dữ liệu nhất định. 
b. Cách khai báo 
VAR
Tên biến : Kiểu biến ;  
 Ví dụ 6.6: VAR a: Real ;
b, c : Integer ;
X: Boolean ;
traloi : Char ; 
Cần khai báo các biến trước khi sử dụng chúng trong chương trình. Khai báo một biến là khai báo sự tồn tại của biến đó và cho biết nó thuộc kiểu gì.
3. Kiểu (Type)
a. Ðịnh nghĩa
Ngoài các kiểu đã định sẵn, 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 theo qui tắc xây dựng của Pascal.
  b. Cách khai báo
TYPE
Tên kiểu = Kiểu dữ liệu;
Ví dụ 6.7:
TYPE SoNguyen = Integer ;
Diem = Real;
Tuoi = 1 .. 100 ;
 
và khi đã khai báo kiểu gì thì ta có quyền sử dụng để khai báo biến như ở ví dụ sau: 
Ví dụ 6.8: VAR i, j : SoNguyen ;
Dtb : Diem ;
T : tuoi ;
4. Biểu thức (Expression)
a. Ðịnh nghĩa
Một biểu thức là một công thức tính toán bao gồm các phép toán, hằng, biến, hàm và các dấu ngoặc. 
Ví dụ 6.9: 5 + A * SQRT(B) / SIN(X)
(A AND B) OR C
b. Thứ tự ưu tiên
Khi tính giá trị của một biểu thức, ngôn ngữ Pascal qui ước thứ tự ưu tiên của các phép toán từ cao đến thấp như sau: (Trang 11) 
Ví dụ 6.10:
(4+5)/3 + 6 - (sin(pi/2)+3)*2 = (9)/3 + 6 - (1+3)*2
= 3 + 6 - 8 = 1 
c. Qui ước tính thứ tự ưu tiên
Khi tính một biểu thức có 3 qui tắc về thứ tự ưu tiên như sau:  (Trang 11)
d. Kiể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ụ 6.11: Biểu thức sau được gọi là biểu thức Boolean:
not ((`a`>`c`) and (`c`>`C`)) or (`B`=`b`) có giá trị TRUE 
VI. CÁC THỦ TỤC XUẤT/NHẬP
1. Thủ tục nhập dữ liệu :
READLN(x1, x2, ..., xn) ; Nhập các biến x1, x2, ..., xn theo hàng ngang từ bàn phím mỗi lần nhập một biến cách nhau bởi kí tự trống
READLN; Dừng chương trình, đợi Enter mới tiếp tục.
2. Thủ tục xuất dữ liệu :
WRITE(x1, x2, ..., xn) ;
WRITELN(x1, x2, ..., xn);
WRITELN;
(Giải thích trang 12)
WRITELN(I : n); In số nguyên
WRITELN(R : n : m); In số thực
WRITELN( ‘abc... ‘ ); In văn bản
3. Câu lệnh (statement)
Câu lệnh được chia thành câu lệnh đơn giản và câu lệnh có cấu trúc.
Câu lệnh đơn giản
+ Vào dữ liệu : Read, Readln
+ Ra dữ liệu : Write, Writeln
+ Lệnh gán : :=
+ Lời gọi chương trình con (gọi trực tiếp tên của chương trình con)
Câu lệnh có cấu trúc
+ Lệnh ghép : BEGIN .. END ;
+ Lệnh chọn : IF .. THEN .. ELSE. . ;
CASE .. OF . . END ;
+ Lệnh lặp : FOR .. TO .. DO . . ;
REPEAT .. UNTIL . . ;
WHILE .. DO . . ;
Các câu lệnh phải được ngăn cách với nhau bởi dấu chấm phẩy ( ; ) và các câu lệnh có thể viết trên một dòng hay nhiều dòng.
4. Cấu trúc tuần tự
a. Lệnh gán (Assignment statement)
Gán cho một biến đã khai báo một giá trị nào đó cùng kiểu với biến. 
* Cách viết: Tên_biến := biểu thức ; 
Ví dụ 6.12: Khi đã khai báo
VAR c : Char ; i,j : Integer ;
x, y : Real ; p, q : Boolean ; 
thì ta có thể có các phép gán sau :
c := ‘A’ ; c := Chr(90) ; i := (35+7)*2 mod 4 ; j:= i div 7 ; x := 0.5 ;
x := i + 1 ; q := i > 2*j +1 ; p := not q ; 
Ví dụ về lệnh đơn và ghép:

IF DELTA<0 then write(‘ptvn’);
IF DELTA =0 THEN BEGIN
WRITE(‘PT CO NK’);
X:=-B/(2*A);
WRITE(X:5:2);
END;

  b. Lệnh ghép (Compound statement)
Hơn một câu lệnh đơn được đặt giữa 2 chữ BEGIN và END sẽ tạo thành một câu lệnh ghép. 
Trong Pascal ta có thể đặt các lệnh ghép con trong các lệnh ghép lớn hơn bao ngoài của nó
* Sơ đồ: ( Hình 6.2 trang 14)
BEGIN
. . . . . . .
BEGIN
. . . . .
END ;
. . . . . . .
END ;
5. Cấu trúc rẽ nhánh
Rẽ 2 nhánh : Lệnh IF .. THEN .. và Lệnh IF .. THEN .. ELSE..
Lưu đồ diễn tả các lệnh
IF điều kiện THEN Công việc ;
IF s
Điều kiện
THEN đ
Công việc

Lệnh tiếp theo
IF Điều kiện THEN Công việc 1
ELSE Công việc 2 ;
IF
đ S
Điều kiện
THEN ELSE
Công việc 1 Công việc 2

Lệnh tiếp theo
Chú ý:
- Ðiều kiện là một biểu thức Boolean.
-  Nếu sau THEN hoặc ELSE có Nhiều hơn một lệnh thì ta phải dat trong BEGIN .. END;
- Toàn bộ lệnh IF .. THEN .. ELSE xem như 1 lệnh đơn vì vậy trước ELSE không có dấu “ ;”
VD1: nhập 1 số x từ bàn phím, thông báo ra màn hình x là số chẵn hay số lẻ
VD2: nhập 1 số a từ bàn phím, nếu a >0 thì in ra căn bậc hai của a , nếu a<0 thì in ra thông báo “ là số âm”
Ghi chú:
Trong chương trình trên, ta thấy có dạng a :m :n với ý nghĩa m là số kí tự của a (kể cả dấu chấm thập phân) và n là số chữ số thập phân của a.

TÌM CHỖ SAI
IF A= B THEN A:=C;
IF M=N THEN begin X:=N+M;
Y:=M*N;
end;
IF D MOD 2 =0 THEN WRITE (‘SO CHAN’)
ELSE write(‘SO LE’);
IF ODD(X)=TRUE THEN WRITE(‘X LA SO LE’) ELSE write(‘X LA SO CHAN’);
b. Lệnh rẽ nhiều nhánh CASE .. OF
*Cú pháp lệnh
CASE A OF
GT1 : Việc 1;
GT2 : Việc 2;
. . . . .
GT n : Việc n
ELSE Việc n+1;
END;
* A là biến hoặc biểu thức có giá trị kiểu đếm được và cùng kiểu với các GT
* Lưu đồ biểu diễn: (Hình 6.5 trang 16)
Ghi chú:
- Lệnh CASE .. OF có thể không có ELSE
- Nếu muốn ứng với nhiều giá trị khác nhau của biểu thức chọn vẫn thi hành một lệnh thì giá trị đó có thể viết trên cùng một hàng cách nhau bởi dấu phẩy (,) : Giá trị k1, k2, ..., kp : Lệnh k ;
Ví dụ 6.14 : Hỏi ngày của tháng trong năm (Trang 17)
6. Cấu trúc lặp
a. Lệnh FOR
Cấu trúc FOR cho phép lặp lại nhiều lần một dãy lệnh. Số lần lặp lại dãy lệnh đã biết trước. Phát biểu FOR có 2 dạng: 
FOR .. TO .. DO . . đếm lên
FOR .. DOWNTO ..DO . . đếm xuống 
* Cú pháp tổng quát là:
FOR biến đếm:=gtrị đầu TO gtrị cuối DO Công việc;
FOR biến đếm := gtrị cuối DOWNTO gtrị đầu DO
Công việc;
Chú ý : Biến đếm cùng kiểu dữ liệu với giá trị đầu , giá trị cuối (là một đoạn liên tục dữ liệu kiểu đếm được). Các lệnh sau DO gọi là thân vòng lặp, nếu có hơn một lệnh phải đặt lệnh ghép
Lưu đồ : (Hình 6.6 trang 18)
Ví dụ : In ra tất cả các số chính phương trong đoạn từ [1..500]
Bắt đầu
Sai
Trị đầu <= trị cuối

đúng
Biến đếm := trị đầu


Công việc

lặp Sai
biến đếm <= trị cuối

đúng
tăng biến đếm lên 1 Kết thúc

* Ý nghĩa lưu đồ: BµI toán tiết kiệm (TIETKIEM)

LẶP VỚI SỐ LẦN KHÔNG ĐỊNH TRƯỚC
b.Lệnh WHILE ..DO (Dạng lệnh 1)
Bài toán : Có một số tiền là a . Lãi suất tiết kiệm là k=0.01. Muốn có một số tiền là b. Hỏi phải gửi trong bao nhiêu tháng ?
Ý tưởng thuật giải : Xác định dữ liệu vào – ra , công việc lặp lại và điều kiện để thực hiện công việc
B1: Nhập a,b ( k là hằng)
B2: T := 0
B3: Trong khi a còn nhỏ hơn b thì tăng T:= T+1
và tính lãi : a:= a+ a*k
Nếu khi a>= b thì về B4
B4 : In ra số tháng phải gửi (T) và dừng thuật giải

Cú pháp WHILE <điều kiện> DO ;

sai Điều kiện
Đúng
* Lưu đồ của lệnh Công việc

Lệnh tiếp theo
* Ý nghĩa lưu đồ:
Trong khi mà điều kiện còn đúng thì cứ thực hiện Công việc, rồi quay trở về kiểm tra điều kiện lại. Vòng lặp được tiếp tục, đến khi điều kiện đặt ra không còn đúng nữa thì đi tới thực hiện lệnh sau While (kết thúc vòng lặp) 
Ghi chú: ( Trang 19 )
Chương trình bài toán {TK2}

Ví dụ : T×m UCLN của 2 số nguyên dương a và b cho trước (thuật giải Oclit)

Nhận xét: Câu lệnh lặp với số lần không định trước dùng trong các trường hợp khi biến điều khiển không là kiểu đếm được và đặc biệt trong các trường hợp số lần lặp không biết trước.
Chó ý : Sau tõ kho¸ DO nÕu cã h¬n mét lÖnh ®¬n phải dïng c©u lÖnh ghÐp


c. Lệnh REPEAT .. UNTIL (Dạng lệnh 2)
Bài toán và ý t­ëng thuËt giải:
(T­¬ng tù phÇn b)
Cú pháp lệnh Sơ đồ cấu trúc lệnh

REPEAT
Các lệnh

UNTIL Điều kiện dừng Điều kiện sai
Đúng
Ý nghĩa câu lệnh (trang 21)
*Công việc trong thân vòng lặp được thực hiện tuần tự
* Ghi chú :
Nếu có nhiều câu lệnh thì mỗi lệnh ngăn cách nhau bằng dấu chấm phẩy (;)Công việc của REPEAT và UNTIL không nhất thiết phải dùng lệnh ghép để nhóm từ 2 lệnh đơn trở lên thành công việc.
Lệnh REPEAT .. UNTIL thường được sử dụng trong lập trình, khi người sử dụng muốn tiếp tục bài toán mà không phải trở về chương trình để nhấn lại tổ hợp phím Ctrl + F9 nghĩa là chương trình sử dụng liên hoàn nếu dùng lệnh này.
Ví dụ 1: T×m UCLN của 2 số nguyên dương a và b cho trước (thuật giải Oclit)
Ví dụ 2: Có một số tiền ban đầu là a , lãi suất tiết kiệm là k = 0.001/tháng. Muốn có số tiền là b hỏi phải gửi trong bao nhiêu tháng ?
Thuật giải:
B1: Nhập a- hằng là k
B2: Nhập b , T:=0 {T là số tháng gửi}
B3: Trong khi aB4: Nếu a>=b thì dừng gửi và in T
B5: Có gửi tiếp ? trả lời là ‘C’ thì về B2
B6: Nếu trả lời là ‘K’ thì dừng
Chương trình : {TK3_A}
Kết quả hai chương trình TK2 và TK3_A ?
* Chương trình TK2 viết theo dạng lệnh 1
* Chương trình TK3_A viết theo dạng lệnh 2
Nhận xét
Hiệu chỉnh chương trình TK3_A
chương trình TK4 và liên hoàn TK4_A
d. Hướng dẫn bài tập về nhà
MẢNG (ARRAY)
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nickkhum
Dung lượng: | Lượt tài: 2
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)