Cấu trúc chung:
[<phần khai báo>]
<phần thân>
Ta quy ước:
Phần khai báo bao gồm:
Program <tên chương trình>;
Tên chương trình: là tên do người lập trình đặt ra theo đúng quy định về tên. Phần khai báo này có thể có hoặc không.
Ví dụ: Program vidu1;
Hay Program UCLN;
Uses <tên thư viện>;
Đối với pascal thì thư viện crt thường được sử dụng nhất, đây là thư viện các chương trình có sẵn để làm việc với màn hình và bàn phím.
Ví dụ: Uses crt;
Const n = giá trị hằng;
Là khai báo thường được sử dụng cho những giá trị xuất hiện nhiều lần trong chương trình.
Ví dụ: Const n = 10;
Hay Const bt = ‘bai tap’;
Tất cả các biến dùng trong chương trình đều phải được đặt tên và khai báo cho chương trình dịch biết để lưu trữ và xử lý. Biến chỉ nhận một giá trị tại mỗi thời điểm khai báo được gọi là biến đơn.
Ví dụ: Var i: integer;
Phần thân chương trình
Begin
[<dãy lệnh>]
End.
Trong đó:
Cấu trúc rẽ nhánh
Cấu trúc rẽ nhánh có dạng:
- Dạng thiếu: If <điều kiện> then <câu lệnh> (đã được học ở lớp 8)
- Dạng đủ If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>
Ở dạng đủ câu lệnh được hiểu như sau: Nếu <điều kiện> đúng thì <câu lệnh 1> được thực hiện, ngược lại thì <câu lệnh 2> được thực hiện.
Ví dụ: Nếu x <= 200 thì số tiền phải trả là x*300 đồng. Nếu không thì số tiền phải trả là x*280 đồng
Đưa vào ngôn ngữ pascal là:
If x<=200 then
Writeln (‘So tien phai tra la ’, x*300, ‘dong’)
else
Writeln (‘So tien phai tra la ’, x*280, ‘dong’);
Cấu trúc lặp
Trong cấu trúc lặp có 2 dạng:
For <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
Ví dụ:
For i:=1 to 5 do writeln(‘i= ’,i);
Ta được kết quả như sau:
For <biến đếm> := <giá trị cuối> to <giá trị đầu> do <câu lệnh>;
For i:=10 downto 1 do if sqrt(i)>2 then s:=s+i;
Ta được kết quả như sau:
Kiểu mảng
Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu.
Có 2 cách để khai báo mảng:
Var <DS biến mảng>: array[Kiểu chỉ số] of <Kiểu phần tử>
Chú ý: Kiểu chỉ số thường là một đoạn số nguyên liên tục: [n1..n2]
Ví dụ: Khai báo biến mảng lưu giữ giá trị nhiệt độ 7 ngày trong tuần
Var Day: array [1..7] of real;
Type <tên kiểu mảng> = array [Kiểu chỉ số] of <Kiểu phần tử>;
Var <DS biến mảng> : <tên kiểu mảng>;
Ví dụ: Khai báo biến mảng có tên C với kiểu dữ liệu là kiểu mảng có tên kiểu là kmang
TYPE kmang = array[1..7] of real;
Var C : kmang;
Kiểu xâu
Xâu là dãy các kí tự trong bộ mã ASCII.
Khai báo xâu:
Var <tên biến> : string[độ dài lớn nhất của xâu]
Ví dụ: Nhập vào họ tên học sinh từ bàn phím
Var hoten : string[30]
Các thao tác xử lý xâu:
Ta quy ước:
Ví dụ: ‘Tin hoc’ = ‘Tin hoc’
Ví dụ: ‘Ha Noi’ > ‘Ha Nam’ (Do O có mã thập phân lớn hơn A trong bảng mã ASCII)
Ví dụ: ‘Thanh pho’ < ‘Thanh pho Ho Chi Minh’
Một số thủ tục chuẩn xử lý xâu
Ý nghĩa: xóa ký tự của biến xâu st bắt đầu từ vị trí vt
Trong đó:
Ví dụ:
Giá trị S |
Thao tác |
Kết quả |
‘abcdef’ |
delete(S,5,2) |
‘abcd’ |
‘Dat nuoc’ |
delete(S,5,4) |
‘Dat’ |
Ý nghĩa: Chèn xâu S1 vào xâu S2, bắt đầu ở vị trí vt.
Ví dụ:
S1 |
S2 |
Thao tác |
Kết quả |
‘PC’ |
‘IBM486’ |
insert(S1,S2,4) |
‘IBM PC 486’ |
‘’ |
‘Tinhoc’ |
insert(S1,S2,4) |
‘Tin hoc’ |
‘lop’ |
‘11C’ |
insert(S1,S2,4) |
‘lop11C’ |
Ý nghĩa: Tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu S. Cho giá trị là một xâu ký tự được lấy trong xâu S.
Ví dụ:
Giá trị S |
Thao tác |
Kết quả |
‘Bai hoc dau tien’ |
copy(S,9,8) |
‘dau tien’ |
‘Hoc ki 1’ |
copy(S,4,5) |
‘ki 1’ |
Ý nghĩa: Trả về giá trị là độ dài của xâu S. Kết quả trả về là một số nguyên
Ví dụ:
Giá trị S |
Thao tác |
Kết quả |
‘Kim Dong’ |
length(S) |
8 |
‘Van hoc’ |
length(S) |
7 |
Ý nghĩa: Trả về kết quả vị trí của xâu S1 trong xâu S2. Kết quả trả về là một số nguyên.
Ví dụ:
Giá trị S |
Giá trị S2 |
Thao tác |
Kết quả |
‘Nang’ |
‘Nang dong’ |
pos(S1,S2) |
1 |
‘Bung’ |
‘Tot bung’ |
pos(S1,S2) |
5 |
Ý nghĩa: Trả về kết quả viết in hoa 1 chữ cái có trong S.
Ví dụ:
Giá trị S |
Thao tác |
Kết quả |
‘a’ |
upcase(S) |
‘A’ |
‘b’ |
upcase(S) |
‘B’ |
Lưu ý: Kiểu mảng với phần tử thuộc kiểu char khác với kiểu xâu (khai báo bằng từ khóa string) nên không thể áp dụng các thao tác (phép toán, hàm, thủ tục) của xâu cho mảng.
Kiểu bản ghi
Type <Tên bản ghi> = record
<Tên trường 1>: <Kiểu trường 1>;
< Tên trường 2>: <Kiểu trường 2>;
……………….
<Tên trường k>: <Kiểu trường k>;
End;
Var <Tên biến bản ghi> : <Tên kiểu bản ghi>;
Ví dụ: Định nghĩa bản ghi Hocsinh để quản lý thông tin của một học sinh gồm: Hoten, Noisinh, Toan, Van, Anh. Khai báo 2 biến A, B là biến kiểu bản ghi
Type Hocsinh = Record
Hoten: String[30];
Noisinh: String[15];
Toan, Van, Anh : Real;
end;
Var A, B : Hocsinh;
Kiểu dữ liệu tệp
Var <Tên biến tệp>: TEXT;
Assign (<biến tệp>, <tên tệp>);
Rewrite (<biến tệp>);
Writeln (<biến tệp>, <Danh sách kết quả>);
Close (<tên biến tệp>);
Reset (<biến tệp>);
Readln (<biến tệp>, <Danh sách biến>);
EOF (<biến tệp>);
Nếu con trỏ đã ở cuối tệp hàm sẽ trả về giá trị TRUE.
EOLN (<biến tệp>);
Nếu con trỏ đã ở cuối dòng hàm sẽ trả về giá trị TRUE
Chương trình con
Khái niệm: Chương trình con theo định nghĩa chính là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình.
Cách khai báo:
Ví dụ: Hãy khai báo một chương trình con dùng để tính lũy thừa.
Function luythua (x: Real ; k: integer): Real;
Var i : integer;
Begin
luythua:=1.0;
For i:=1 to k do luythua:=luythua*x;
End;
Lợi ích của việc sử dụng chương trình con
- Giúp tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh, đồng thời khi cần dùng có thể gọi lại chương trình con đó.
- Sử dụng chương trình con còn hỗ trợ việc thực hiện các chương trình lớn
- Phục vụ cho quá trình trừu tượng hóa. Người lập trình có thể sử dụng kết quả của chương trình con mà không cần quan tâm đến chương trình đó đã được cài đặt thế nào.
- Mở rộng khả năng ngôn ngữ thành thư viện cho nhiều người dùng.
- Thuận tiện cho phát triển, nâng cấp chương trình.
Biến toàn cục và biến cục bộ
- Biến toàn cục chính là biến được khai báo trên phần khai báo của chương trình chính (được khai báo gần chữ Program) được gọi là biến toàn cục và được sử dụng cho toàn bộ chương trình.
- Biến cục bộ được hiểu là biến được khai báo trong chương trình con. Biến cục bộ chỉ được sử dụng trong chương trình con.
Ví dụ 1: Viết phương trình pascal tính diện tích hình tam giác khi biết số đo của 2 cạnh và 1 góc được nhập từ bàn phím.
Cách giải:
Ví dụ 2: Viết phương trình pascal giải phương trình ax + b = 0. a,b được nhập từ bàn phím
Cách giải:
Ví dụ 3: Cho bài toán về tháp Hà Nội.
Cách giải:
Ví dụ 4: Nhập vào mảng A có N phần tử (N < 50). Hãy viết chương trình pascal sắp xếp mảng A theo thứ tự tăng dần.