Bai giang pascel fullmoi nhat ne

Chia sẻ bởi Nguyễn Hương Thảo | Ngày 10/05/2019 | 170

Chia sẻ tài liệu: Bai giang pascel fullmoi nhat ne thuộc Tin học 12

Nội dung tài liệu:

Giới thiệu về ngôn ngữ lập trình Pascal.
Ngôn ngữ PASCAL là ngôn ngữ lập trình có cấu trúc được cài đặt trên hầu hết các máy vi tính. Lớp các bài Toán giải bằng ngôn ngữ này tương đối rộng, nó là một ngôn ngữ cấp cao phổ biến nhất được sử dụng trong lĩnh vực giảng dạy và lập trình chuyên nghiệp.
Để chạy được chương trình TURBO PASCAL trên đĩa phải có ít nhất 2 tệp:

TURBO. EXE: Chương trình dịch, soạn thảo, ...
TURBO.TPL: Chứa thư viện, các hàm, thủ tục
Chương I : Giới thiệu về ngôn ngữ PASCAL
I. Bộ chữ viết của PASCAL, từ khóa, tên.
Ngôn ngữ máy tính PASCAL cũng như các ngôn ngữ máy tính khác được xây dựng với bộ chữ viết
- Chữ cái: A --> Z; a --> z
- Kí tự gạch nối (_)
- 0 --> 9
- Kí hiệu Toán học: +, -, *, /, =, <, >, ( , ) ....

* Các kí hiệu đặc biệt: . , ; : [ ] ? % @ | ! & # $ `
* Từ khoá ( Key word ): Program, Begin, End, If, Then ...
* Tên (IdentIfier): Là một dãy kí tự được dùng để chỉ tên hằng số, tên hằng kí tự, tên biến, tên kiểu, tên chương trình con. Tên được tạo bởi các chữ cái và các chữ số, bắt đầu tên phải là chữ cái, không chứa dấu cách và có thể chứa dấu gạch nối.

I. Bộ chữ viết của PASCAL, từ khóa, tên.
II. Các đại lượng cơ bản:`
1. Kiểu số nguyên (Integer)
Phạm vi sử dụng : -32768<= integer <= + 32767
Ví dụ: -5, 10, 30 , ...

2. Kiểu số thực (Real)
Phạm vi sử dụng : 2.9*10-39 <= Real <=1.7*1038
ví dụ : 3.14 3.0 -3.14

3. Kiểu số thực (Double)
Phạm vi sử dụng : 5.0*10324 <=Double<=1.1*10308

4. Hằng
Hằng có thể là một số hay một xâu kí tự có giá trị không thay đổi
* Số: Là số nguyên hay số thực
* Xâu kí tự: Xâu là một dãy các ký tự. Độ dài của xâu là số ký tự kể cả dấu cách mà xâu đó có (0--> 255).
Hằng xâu là xâu ký tự đặt giữa cặp nháy đơn.
Ví dụ1 : ` Hà Nội, ngày 20/10/1998`
Ví dụ 2: `+ - + - + - + - + - + - + - + -`
5. Biểu thức
a) Biểu thức số học
Phép Toán số học:
Thông thường PASCAL
+ +
- -
x *
: /
Chia lấy nguyên: DIV Ví dụ: 5 DIV 2 = 2
Chia lấy dư: MOD Ví dụ: 5 MOD 2 = 1

Biểu thức số học: Là mang phép Toán số học tác dụng lên hằng, lên biến, lên hàm.
Ví dụ 1: (a ? b):(c ? d)
Được viết trên máy là: a*b/(c*d)

5. Biểu thức
b) các phép toán quan hệ
Thông thường PASCAL
= =
> >
< <
= >=
= <=
khác <>

5. Biểu thức
c) Các phép toán logic:
Các phép toán dưới đây thực hiện trên các giá trị Boolean và cho kết quả là Boolean
AND Phép " Và"
OR Phép " Hoặc"
NOT Phép "Phủ định"
XOR Phép "Triệt tiêu"
Ví dụ :
Not (5>1) cho giá trị là Flase
(4<=10) and(20>14) cho giá trị là True

5. Biểu thức
6. Cấu trúc chương trình PASCAL
Một chương trình PASCAL nói chung gồm 3 phần:
1 - Đầu chương trình
2 - Khai báo dữ liệu hằng, biến (Const, Var)
- Mô tả kiểu dữ liệu (Type)
- Khai bác chương trình con
3 - Thân chương trình chứa các lệnh để máy tính thực hiện
- Đầu chương trình: PROGRAM: Từ khoá, Tên: Tự đặt
- Khai báo gồm các thành phần sau: đơn vị chương trình xác định hằng, khai báo biến, khai báo kiểu, khai báo hàm, khai báo thủ tục.
- Thân chương trình: Gồm các lệnh của PASCAL giữa các lệnh cách nhau bởi dấu [;]. Phần chương trình xem như ra lệnh để giải bài Toán nào đó nhằm giao cho máy thực hiện.

6. Cấu trúc chương trình PASCAL
III/ Thực hành TURBO PASCAL
TURBO PASCAL có nhiều phiên bản, mới nhất là 7.0, hiện nay phổ biến dùng TURBO PASCAL 5.0 và 7.0
1. Bắt đầu sử dụng TURBO PASCAL.
Khởi động TURBO PASCAL bằng cách ấn
A:>TURBO ? {nếu sử dụng đĩa mềm}
C:>CD TPBIN ? {chuyển vào thư mục TP}
C:>TPBIN>TURBO {Chạy TURBO}

Trên màn hình sẽ hiện ra
File Edit Search Run Compile Debug Tools Options WinDow Help
New
Open... F3
Save F2
Save as...
Save all
Change dir...
Print
Printer setup...
DOS shell
Exit Alt+X

1. Bắt đầu sử dụng TURBO PASCAL.
Mỗi từ (gọi là cửa sổ) ở dòng trên cùng đảm bảo một số công việc, muốn đọc công việc nào ta dùng mũi tên trái, phải (<-- ; -->) trỏ đến vùng cần chọn gõ ? (như hình trên là cửa sổ File đang được sử dụng (kích hoạt))
2. Các thao tác
Sao chép khối: Khối có thể là 1 từ, 1 dòng hay nhiều dòng
Bước 1: đánh dấu đầu khối gõ Ctrl + KB
Bước 2: đánh dấu cuối khối gõ Ctrl + KK
Bước 3: Copy khối gõ Ctrl + KC
Bước 4: Chuyển con trỏ đến vị trí cần sao chép gõ Ctrl+KV
Bước 5: bỏ đánh dấu khối gõ Ctrl + KH


* Cất nội dung tệp lên đĩa : F2
* Về Menu chính : F10
* Mở tệp mới : F3
* Soát lỗi chương trình : Alt + F9
* Chạy chương trình : Ctrl + F9
* Đóng tệp : Vào menu WINDOWN ==> CLOSE
* Thoát khỏi TURBO PASCAL : vào menu FILE ==> EXIT
2. Các thao tác
Chương II: khai báo hằng, biến và câu lệnh
I. Khai báo hằng
Hằng là các đại lượng không thay đổi giá trị. có các loại hằng số, hằng kí tự, hằng Boolean.
Khai báo hằng: các hằng được khai báo bằng một tên đặt trong phần khai báo CONST ở đầu chương trình.
CONST
Tên = Giá trị;
Tên: Tự đặt
Giá trị : Số nguyên, số thực, hằng, xâu kí tự, giá trị logic
Ví dụ: CONST
A = 5; số nguyên (Integer)
PI = 3.14; số thực (Real)
TD = `Hanoi`; hằng xâu ( String)
B = True; giá trị logic (Boolean)

II. Khai báo biến
Biến là đại lượng có thể thay đổi giá trị. Các biến được khai báo bằng cách đặt tên biến vào phần khai báo biến ở đầu chương trình từ khoá VAR
Var < Từ khoá >
Tên: kiểu
Tên: Tự đặt
Kiểu: Số nguyên, số thực, hằng, xâu kí tự, giá trị logic)

Ví dụ: Var
i,j: Integer;
x,y: Real;
KT: Char;
B: Boolean;

III. Các lệnh
1. Câu lệnh đơn giản
1. Lệnh gán:
v: = e ;
v: Là biến nhất thiết phải khai báo
e: Là biểu thức số học, biểu thức xâu kí tự
*Tác động: Máy tính Toán biểu thức e được kết quả bao nhiêu mang gán cho biến v (nghĩa là lưu trữ vào ô nhớ có tên là v).
Ví dụ:
d:=b*b-4*a*c;
x1:=(-b+sqrt(d))/(2*a);
i:=0;
i:=i+1;

2. Thủ tục đưa dữ liệu ra màn hình: WRITE, WRITELN
Write (dữ liệu);hoặc
Writeln(dữ liệu);
Dữ liệu là hằng, biến, hàm, biểu thức.
Tác động: Đưa kết quả ra màn hình:
Chú ý: Khi viết
- Writeln(dữ liệu): Sau khi hiện dữ liệu ra màn hình con trỏ xuống đầu dòng tiếp theo
- Writeln: Màn hình để trống một dòng
Ví dụ:
program inthôngtin;
Var I: Integer;
Begin
I:=123;
Writeln( I );
Writeln(-567);
Writeln(3.14:12:6);
Writeln(`Chao cac ban`);
End.

3. Thủ tục vào dữ liệu:
READ và READLN
READ(danh sách biến);
READLN (danh sách biến);
Danh sách các biến cách nhau bằng dấu (,)
Ví dụ: READLN (a,b,c);
Tác động: Khi chương trình thực hiện trên màn hình sẽ xuất hiện dấu nhấp nháy yêu cầu người sử dụng gõ vào bàn phím (Khi gõ phải đảm bảo sự tương ứng về số lượng, thứ tự, kiểu).

Chú ý : Khi viết READ và READLN
- READ ( danh sách biến): Khi hết dữ liệu gõ ENTER con trỏ không xuống đầu dòng tiếp theo
- READLN(danh sác biến): Khi hết dữ liệu gõ ENTER con trỏ xuống đầu dòng tiếp theo
- READLN; Chương trình tạm dừng, muốn tiếp tục bấm ENTER

Kết hợp: WRITE và READLN
Các ví dụ dùng Reandln hoặc Read có một nhược điểm là không có chỉ dẫn trên màn hình để báo cho biết chúng ta đang cần đưa giá trị vào cho biến nào. Vì vậy ta có thể kết hợp với thủ tục Write như sau:
Write( ` I = ` ); Readln( I );
Write(` XX = ` ); Readln( XX );
Câu lệnh có cấu trúc
Câu lệnh điều kiện
IF ... THEN ... ELSE ...
Hai mẫu câu lệnh như sau:
IF (Đk) THEN (S1)
IF (Đk) THEN (S1) ELSE (S2)
IF, THEN, ELSE: là từ khoá
Đk: biểu thức logic
S1, S2 : lệnh bất kỳ
Tác động:
Đối với câu lệnh 1: Nếu đk đúng máy thực hiện lệnh S1, còn nếu không thì kết thúc
Đối với câu lệnh 2: Nếu đk đúng máy thực hiện lệnh S1, nếu không máy thực hiện lệnh S2

2. Câu lệnh CASE ... OF ...
Hai mẫu câu lệnh IF đã học chỉ thực hiện rẽ hai nhánh tương ứng với hai giá trị của biểu thức Boolean. Việc thử và chọn một trong nhiều nhánh sẽ được thực hiện với câu lệnh CASE như sau:
Mẫu 1 Mẫu 2
CASE OF CASEOF
Giá trị 1: ; Giá trị 1: ;
Giá trị 2: ; Giá trị 2: ;
... ...
Giá trị N: ; Giá trị N: ;
END; ELSE
END;

Trong đó không còn chỉ là biểu thức Boolean như trong câu lệnh If. Nó có thể là biểu thức có các kiểu vô hướng đếm được ( Kể cả kiểu liệt kê, nhưng không được là kiểu thực (Real)). Nên nó có nhiều giá trị khác nhau tương ứng với các hằng ở mẫu 2

3. Vòng lặp REPEAT
Repeat Until <đk>
Repeat, Until: là từ khoá
đk: là biểu thức lôgic
Máy thực hiện các công việc S1, S2, ..., Sn sau đó kiểm tra điều kiện. Nếu:
- đk = False : máy quay về thực hiện từ S1 đến Sn và quá trình lại diễn ra như trước.
- đk = True : máy chuyển sang lệnh sau Until
4. Vòng lặp WHILE
WHILE <đk> DO
BEGIN

END;
Máy kiểm tra nếu:
- đk = True : máy thực hiện lệnh S rồi quay về kiểm tra điều kiện và quá trình diễn ra như trước.
đk = False: máy chuyển sang sau lệnh While
2. Vòng lặp FOR
a) FOR V:=E1 To E2 Do S; {e1FOR, DO : từ khoá
E1, E2: số nguyên
V: biến cùng kiểu E1, E2 (V không được là biến thực)
S: lệnh bất kỳ
V nhận giá trị đầu (E1) rồi kiểm tra V<=E2
- Nếu đúng thì thực hiện công việc S, sau đó tăng V lên 1 đơn vị rồi quay lại kiểm tra điều kiện và quá trình lại diễn ra như trước.
- Nếu sai kết thúc, chuyển sang lệnh sau FOR
b) FOR V:=E1 DOWNTO E2 DO S; {E1>E2}
V nhận giá trị E1 rồi kiểm tra V>=E2
- Nếu đúng thực hiện công việc S rồi trừ V đi 1 sau đó quay lại kiểm tra điều kiện và quá trình lại diễn ra như trước.
- Nếu sai máy kết thúc và chuyển ra lệnh sau FOR

2. Vòng lặp FOR
Chương III: Dữ liệu có cấu trúc: kiểu mảng (Array)
1. Đặt vấn đề:
- có 1 dãy số : a1, a2, ..., an
- 1 vecTo: b(b1, b2, ..., bk)
mảng 1 chiều
- 1 ma trận: c11 c12 c13
c21 c22 c23
mảng 2 chiều
Cách viết mảng
a1 a[1];
ai a[i];
a12 a[1,2]
2. Mảng
*Khái niệm: Mảng là một số hữu hạn phần tử có cùng kiểu dữ liệu
* Khai báo mảng:
Var
Ten:Array[cd . . ct] Of kiểu;
Var, Array, Of: Là từ khóa
Tên: Do người dùng tự đặt
cd, ct : Là số nguyên, biểu thức (cd < ct)
Kiểu : - cơ bản (số nguyên, thực, kí tự, logic0
Chú ý: Khai báo mảng để báo mảng dành ra vùng ô nhớ cho các phần tử của mảng vùng đó cụ thể là bao nhiêu phụ thuộc vào:
- Số phần tử (kích thước)
- Kiểu của phần tử

Chương IV: Xâu kí tự (STRING)
1. Đặt vấn đề:
Khi cần nhập vào hoặc in ra tên người, địa chỉ hoặc dòng văn bản thì 1 vài kí tự không đáp ứng được nên PASCAL dùng xâu kí tự để biểu diễn.
2. Khai báo
Var
Ten:String[n];
Var, String:từ khóa
Ten: tự đặt
N: chỉ chiều dài của xâu 0<=n<=255
Ví dụ:
Var
Ht : String[25];
Dc : String[50];
3. Phép ghép đối với xâu
Có 2 xâu kí tự ST1, ST2, ta gọi ghép ST1 và ST2 nghĩa là viết các kí tự của ST1 trước tiếp đến kí tự của ST2.
Phép ghép có thể tác dụng lên hằng xâu, biến xâu, 1 số hàm xâu.
Ví dụ: ST1: `HA NOI`;
ST2: `VIET NAM`;
ST3:=ST1+ST2;
ST3:=`HA NOI VIET NAM`
4. Một số hàm và thủ tục đối với xâu
a) Hàm:
* Length(ST)
Ví dụ ST:=`HA NOI`
length(ST) cho độ dài xâu kí tự là 6
* COPY(ST,N,K)
Hàm này sẽ sao chép từ xâu ST, xâu con gồm K ký tự kể từ vị trí N
Ví dụ: ST:=`123456789`; dùng lệnh: COPY(ST,3,2); sẽ cho ST = `34`
*POS(ST1,ST2)
Duyệt ST2 từ trái qua phải xem có ST1 không nếu có thì đưa ra con số là vị trí ký tự đầu tiên của ST1 trong ST2 nếu không thì cho ra số 0
* UPCASE(KT)
Đổi chữ thường ra chữ hoa
Ví dụ: KT:=`a`
UPCASE(KT); máy đưa ra `A`
4. Một số hàm và thủ tục đối với xâu
b) Thủ tục:
*DELETE(ST,N,K);
Thủ tục này sẽ xoá khỏi ST K ký tự kể từ vị trí N
*INSERT(ST1,ST2,N)
Thủ tục này sẽ chèn xâu ST1 vài ST2 tại vị trí N
Ví dụ: ST2:=`HA NOI NAM`;
INSERT(`VIET `,ST2,7);
4. Một số hàm và thủ tục đối với xâu
5. Truy nhập vào từng kí tự của xâu
Ta có thể truy nhập vào từng kí tự của xâu kí tự
Mỗi kí tự chiếm 1 byte muốn truy nhập từng ký tự ta sẽ sử dụng chỉ số của chúng.
Ví dụ: Tìm xem byte thứ 2 của kí tự có phải là `I` không, nếu đúng thông báo ra màn hình
If s[2] = `I` Then
Writeln(`Chữ thứ 2 của xâu kí tự là `I`);
Chương V: dữ liệu có cấu trúc:
Dữ liệu kiểu bản ghi (RECORD)
1. Đặt vấn đề:
Chúng ta đã học về kiểu cấu trúc mảng (ARRAY), kiểu cấu trúc dữ liệu này mô tả được tạo ra bằng một tập hợp các phần tử có cùng kiểu.
Nhưng nếu cần mô tả cùng một đối tượng bằng các phần tử có kiểu dữ liệu khác nhau thì chúng ta cần phải định nghĩa kiểu bản ghi
2. Khai báo RECORD
TYPE
Ten=RECORD
b1 : k1;
b2 : k2;
...
bn : kn;
End;

Trong đó:
Ten: ten bản ghi (tự đặt)
b1, b2, ..., bn: tên các trường của bản ghi
k1, k2, ..., kn: kiểu trường
Chú ý: mô tả RECORD bao giờ cũng được kết thúc bằng chữ END;

Ví dụ: Một hồ sơ bao gồm các dữ liệu như: họ tên, năm sinh, điểm. Ta mô tả Record HOSO như sau:
TYPE
hoso=RECORD
hoten: String[25];
namsinh : Integer;
diem : Real;
End;

3. Thao tác đối với biến RECORD
Để thâm nhập vào một trường của Record, cần phải dùng tên biến Record sau đó là dấu (.) và tên trường của Record.
Chương VI: Chương trình con: thủ tục và hàm
1. Đặt vấn đề:
Trong PASCAL có hai loại chương trình con: Hàm (FUNCTION) và thủ tục (PROCEDURE)
Sự khác nhau giữa hai chương trình con:
Funtion: trả lại cho một giá trị kết quả vô hướng thông qua tên của Funtion - Procedure: Không trả lại kết quả thông qua tên của nó nên Procedure không thể viết trong các biểu thức.
2. Hàm(Funtion)
a) Khai báo
Funtion Tenham (tham số hình thức) : Kiểu;
Khai báo;
Begin
các lệnh;
Tenham:=...
End;
Tham số hình thức có 2 cách:
- Tên: kiểu
- Var tên: kiểu
Ví dụ về khai báo hàm
Ví dụ 1:
Funtion F( i : Integer) : Integer;
Ví dụ 2:
Funtion H( Var x, y : Real) : Real;
Ví dụ 3:
Funtion G (Var x,y: Real ; i: Integer): Real
b) Cách gọi và truyền tham số
Viết tên hàm trong một biểu thức nào đó và thay tham số hình thức bởi tham số thực sự. Khi thay đảm bảo sự tương ứng về: Số lượng, thứ tự, kiểu

c) Tính đệ qui của chương trình con
Tính đệ là lời gọi của chính nó
Ví dụ: n! = 1.2.3.....(n-1).n
gt = gt(n - 1) * gt
3) Thủ tục(Procedure)
a) Khai báo
(1) Tham trị (2) Tham biến
Procedure ten; Procedure ten(tham số
hình thức);
Khai báo; Khai báo;
Begin Begin
các lệnh; các lệnh;
End. End.
Không tham số Có tham số

Ví dụ:
PROGRAM bDoi; {1} PROGRAM bDoi; {2}
Var x:Integer; Var x:Integer;
procedure BD(y:Integer); procedure BD(Var y:Integer);
Begin Begin
y:=100; y:=100;
End; End;
BEGIN BEGIN
x:=0 x:=0
BD(x); BD(x);
Writeln(`x = `,x); Writeln(`x = `,x);
Readln; Readln;
END. END.

Chương trình 1 truyền theo tham trị, Do vậy những thay đổi trong chương trình con (y:=100) không làm thay đổi giá trị trong chương trình chính (x=0 trước khi gọi thì sau khi gọi nó vấn bằng 0.
Chương trình (2) truyền theo tham biến, Do vậy những thay đổi trong chương trình con (y:=100) thi làm thay đổi giá trị trong chương trình chính.

* Biến Toàn cục (tổng thể): Là biến khai báo trong chương trình chính và nó có tác dụng bất kỳ nơi nào trong chương trình.
* Biến địa chương (cục bộ): Là biến khai báo trong chương trình con và chỉ có tác dụng trong chương trình con đó. Nói cách khác khi chương trình con kết thúc thì biến cục bộ cũng hết (trong ví dụ trên biến y là biến cục bộ)

Trân thành cảm ơn sự giúp đỡ tận tình của thầy cô giáo và các bạn
* 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ẻ: Nguyễn Hương Thảo
Dung lượng: | Lượt tài: 4
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)