Bài giảng Kỹ thuật lập trình
Giáo viên: Đinh Xuân Pháp
Bộ môn CNPM – Khoa CNTT
Email:
Kỹ thuật lập trình
Phần I Ôn tập ngôn ngữ lập trình Pascal
Phần II Lập trình nâng cao
Phần I Ngôn ngữ lập trình Pascal
I. Cấu trúc của chương trình Pascal
II. Từ khóa trong Pascal
III. Các kiểu dữ liệu đơn giản
IV. Các lệnh lựa chọn, lệnh lặp
V. Kiểu dữ liệu có cấu trúc
VI. Chương trình con
I. Cấu trúc của chương trình Pascal
Program TênCT;
Uses Khai báo đơn vị, thư viện;
Const Khai báo hằng;
Label Khai báo nhãn;
Type Khai báo kiểu;
Var Khai báo biến;
Function Tên hàm; {Khai báo hàm}
Procedure Tên thủ tục; {Khai báo thủ tục}
Begin
{Thân chương trình chính}
End.
II. Từ khóa trong Pascal
Từ khóa chung: Program, Begin, End
Từ khóa khai báo: uses, const, label, type, var,
procedure, function, array, string, record…
Từ khóa lệnh: if…then…else…
case…of…
for…to…do…
while…do…
repeat…until…
Tên chung: Boolean, char, integer, real,
Read, Readln, Write, Writeln
abs, cos, sin, sqrt, exp…
III. Các kiểu dữ liệu đơn giản
Kiểu số nguyên (Integer)
Kiểu số thực (Real)
Kiểu kí tự (Char)
Kiểu logic (Boolean)
Kiểu vô hướng liệt kê (enumerated scalar)
Kiểu đoạn con (sub-range)
III. Các kiểu dữ liệu đơn giản
1. Kiểu số nguyên (Integer)
Biểu diễn số nguyên
Từ khóa Integer
Phạm vi - 32768 đến 32767 (2 byte)
Các phép toán: +, -, *, /, div, mod
Các kiểu số nguyên khác: Byte (1 byte), ShortInt
(1 byte), Word (2 byte), LongInt (4 byte)
III. Các kiểu dữ liệu đơn giản
2. Kiểu số thực (Real)
Biểu diễn số thực
Từ khóa Real
Phạm vi: 2.9E-39 đến 1.7E+38
Phép toán: +, -, *, /, các phép so sánh
Cách viết dạng số dấu phảy động: AE+b
Kiểu số thực khác:
Single 1.5E-45 đến 3.4E+38 4byte
Double 5.0E-324 đến 1.7E+308 8byte
Extended 3.4E-4932 đến 1.1E+4932 10byte
Các hàm: abs, cos, sin, exp, ln, sqr, sqrt…
III. Các kiểu dữ liệu đơn giản
3. Kiểu kí tự (Char)
Biểu 1 kí tự trong bảng mã ASCII
Từ khóa Char
Phép so sánh xâu
Các hàm: upcase, succ, pred, ord, char
III. Các kiểu dữ liệu đơn giản
4. Kiểu logic (Boolean)
Từ khóa: Boolean
Các phép toán: NOT, AND, OR, XOR
Các phép so sánh: =, <, >, >=, <=, <>
2 giá trị logic: True, False
III. Các kiểu dữ liệu đơn giản
5. Kiểu liệt kê (Enumerated Scalar)
Type Color = (Red, Green, Blue);
Mau = (Xanh, Do, Tim, Vang);
Var mau1: Color;
mau2: Mau;
III. Các kiểu dữ liệu đơn giản
6. Kiểu đoạn con (Sub-range)
Kiểu vô hướng đếm được, giá trị chỉ trong 1
khoảng
Tên kiểu đoạn con = cận dưới cận trên;
Cận dưới < cận trên, cùng kiểu dữ liệu
Type chucaihoa = ‘A’ ’Z’;
Var ch:chucaihoa;
IV. Các lệnh lựa chọn, lệnh lặp
Lệnh lựa chọn
Lệnh If
Lệnh Case of
Lệnh lặp
Lệnh For
Lệnh While do
Lệnh Repeat until
IV. Các lệnh lựa chọn, lệnh lặp
1. Lệnh If
Dạng đơn giản: If <điều kiện> then <lệnh>;
Dạng tổng quát: If <điều kiện> then <lệnh 1>
Else <lệnh2>;
IV. Các lệnh lựa chọn, lệnh lặp
2. Lệnh Case of
Dạng đơn giản Dạng tổng quát
Case <biểu thức> of Case <biểu thức> of
Hằng1: <Lệnh 1>; Hằng1: <Lệnh 1>;
Hằng2: <Lệnh 2>; Hằng2: <Lệnh 2>;
…………………. ……………………
Hằngn: <Lệnh n>; Hằngn: <Lệnh n>;
End; Else <Lệnh n+1>;
End;
IV. Các lệnh lựa chọn, lệnh lặp
3. Lệnh lặp điều kiện trước (For)
Dạng lệnh:
For biếnđk := bthức1 to bthức2 do <lệnh>;
biếnđk, bthức1, bthức2 nhận các giá trị?
Cho câu lệnh: for i:= 1 to 100 do; writeln(i);
i=?
IV. Các lệnh lựa chọn, lệnh lặp
4. Lệnh lặp điều kiện sau (While do)
Dạng lệnh:
While (điều kiện) do <Lệnh>;
Vòng lặp dừng khi?
Dạng giá trị của điều kiện?
Chú ý thay đổi giá trị của điều kiện
IV. Các lệnh lựa chọn, lệnh lặp
5. Lệnh lặp điều kiện sau (Repeat until)
Dạng lệnh:
Repeat
<Lệnh>;
Until <điều kiện>;
Lệnh được thực hiện ít nhất 1 lần
Dạng hay gặp?
V. Kiểu dữ liệu có cấu trúc
Kiểu mảng
Kiểu xâu kí tự
Kiểu tập hợp
Kiểu bản ghi
Kiểu Tệp
V. Kiểu dữ liệu có cấu trúc
1. Kiểu mảng (Array)
Mảng 1 chiều
Type Tên_kiểu_mảng = Array[chỉ số] of Kiểu dữ liệu;
Var Tên_biến_mảng : Array[chỉ số] of Kiểu dữ liệu;
Bài tập dãy số
Mảng 2 chiều
Type Tên_kiểu_mảng = Array[chỉ số1, chỉ số2] of
Kiểu dữ liệu;
Var Tên_biến_mảng : Array[chỉ số1, chỉ số2] of
Kiểu dữ liệu;
V. Kiểu dữ liệu có cấu trúc
2. Kiểu xâu kí tự (String)
Khai báo
Type Tên_kiểu_xâu = String[n];
Var Tên_biến_xâu : String[n];
n là số kí tự tối đa 1 xâu có thể nhận được
Truy nhập xâu kí tự
Tên_biến_xâu[chỉ số];
Tên_biến_xâu[0]? ORD(Tên_biến_xâu[chỉ số])?
V. Kiểu dữ liệu có cấu trúc
2. Kiểu xâu kí tự (String)
Các hàm sử dụng với xâu kí tự
Length(st)
Delete(St, m, n)
Insert(st1, St, m)
Copy(St, m, n)
Concat(st1, st2, …, stn)
Pos(st1, St)
Str(x, St)
Val(St, x, m)
V. Kiểu dữ liệu có cấu trúc
3. Kiểu tập (Set)
Liệt kê các phần tử, đặt trong cặp dấu []
Tập rỗng []
[1 99], [2, 4, 6, 8 12], [xanh, do, tim, vang]
Các phép toán trên tập
Phép gán (:=)
Phép hợp (+)
Phép giao (*)
Phép hiệu (-)
Phép thuộc về (IN)
V. Kiểu dữ liệu có cấu trúc
4. Kiểu bản ghi (Record)
Kiểu có cấu trúc, gồm 1 số cố định các phần tử
có kiểu dữ liệu khác nhau
Mô tả nhiều thành phần liên kết với nhau, biểu
diễn 1 nội dung nhất định
Khai báo
Type Tên_kiểu = Record
Tên_trường1: Kiểu1;
Tên_trường2: Kiểu2;
………………………………
Tên_trườngn: Kiểun;
End;
V. Kiểu dữ liệu có cấu trúc
4. Kiểu bản ghi (Record)
Sử dụng bản ghi:
Một trường của bản ghi được coi như một biến
Truy nhập vào một trường theo cách:
Tên_biến.Tên_trường
Biến bản ghi không tham gia vào các biểu thức, thủ
tục vào ra, các toán tử logic, toán tử quan hệ
Câu lệnh With do