Chương II. §1. Đa giác. Đa giác đều tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các l...
Trang 1BÀI GIẢNG
NGÔN 16/07/201200
:42:49NGỮ LẬP TRÌNH
Khoa Toán – ĐHSP Hà Nội 2
Trang 2NNLT
Pascal
lệnh
Trang 3• Sự ra đời và phát triển
• Các đặc trưng cơ bản
• Các phần tử cơ bản của Ngôn ngữ
• Cấu trúc tổng quát của một chương trình
Chương 1.
Tổng quan về NNLT Pascal
Trang 4Chương 2.
Các kiểu dữ liệu
• Khái niệm chung
• Kiểu số nguyên (Integer)
• Kiểu số thực (Real)
• Kiểu logic (Boolean )
• Kiểu ký tự (Char)
• Kiểu tự định nghĩa
Trang 6Chương 4.
Cấu trúc lệnh rẽ nhánh
• Khái niệm về cấu trúc rẽ nhánh
• Cấu trúc “If … Then …;”
(Cấu trúc rẽ nhánh không đầy đủ)
• Cấu trúc “If … Then … Else …;”
(Cấu trúc rẽ nhánh đầy đủ)
• Cấu trúc “Case … Of …;”
(Rẽ nhiều nhánh)
Trang 7Chương 5.
Cấu trúc lệnh lặp
• Khái niệm về cấu trúc lệnh lặp
• Cấu trúc: “For … To … Do …;” & “For
… DownTo … Do …;”
(Lặp với số lần lặp xác định)
• Cấu trúc “While … Do …;”
(Lặp với số lần lặp không xác định, kiểm tra điều kiện trước)
• Cấu trúc “Repeat … Until …;”
(Lặp với số lần lặp không xác định, kiểm tra điều kiện sau)
Trang 9Chương 7.
Dữ liệu kiểu xâu ký tự (Chuỗi,
STRING)
• Khái niệm chuỗi (Xâu ký tự)
• Khai báo xâu ký tự
• Các phép toán và thao tác trên xâu ký tự
• Các hàm và các thủ tục trên xâu ký tự
Trang 10Chương 8.
Dữ liệu kiểu bản ghi (RECORD)
• Khái niệm bản ghi
• Khai báo nhập, xuất dữ liệu trên bản ghi
• Các thao tác cơ bản trên bản ghi
• Câu lệnh “With”
• Sử dụng mảng bản ghi
Trang 11• Có sự thành công rực rỡ trong giảng dạy lập
trình và tư duy lập trình với tư tưởng “Lập trình
có cấu trúc”.
Chương 1 Tổng quan về NNLT Pascal
Trang 12Chương 1 Tổng quan về NNLT Pascal
Trang 13Các phần tử cơ bản của ngôn ngữ
Chương 1 Tổng quan về NNLT Pascal
Trang 14• Từ khoá (Keyword)
– Là những từ dành riêng, được dùng với ý nghĩa xác định trước
– Bao gồm:
• Program, Begin, End, Procedure, Function;
• Const, Type, Var, Array, String, Record, Set, File
of, Label;
• If, Then, Else, Case of;
• For, To, DownTo, Do, While, Repeat, Until;
• With, Goto, Exit;
• And, Or, Not, In, Div, Mod
Các phần tử cơ bản của ngôn ngữ
Chương 1 Tổng quan về NNLT Pascal
Trang 15• Tên
– Là tên được dùng (có thể do Turbo Pascal hoặc người lập trình) để đặt cho các biến, hằng, hàm,… – Quy tắc đặt tên
• Tên phải được bắt đầu bằng chữ cái
• Không chứa dấu cách và các ký tự đặc biệt
• Tên chuẩn: Là các tên do Turbo Pascal đặt trước cho các đối tượng được dùng thường
xuyên.
Chú ý: Nên đặt tên mang tính gợi nhớ, gần với ý nghĩa của đối
Các phần tử cơ bản của ngôn ngữ
Chương 1 Tổng quan về NNLT Pascal
Trang 16• Một số tên chuẩn trong Pascal:
– Boolean, Char, Integer, Word, Byte, LongInt, Real;– False, True, MaxInt;
– Abs, Cos, Sin, Odd, Round, Sqr, Sqrt;
– Read, Readln, Write, Writeln;
– …
• Ví dụ tên tự đặt:
– a, b, c, Delta, X1, X2 (trong bài toán gptb2); – Thu, Ngay, Thang (trong bài toán về ngày, tháng)
Các phần tử cơ bản của ngôn ngữ
Chương 1 Tổng quan về NNLT Pascal
Trang 17Cấu trúc chương trình Pascal
Ví dụ:
Program Vi_du;
BEGIN writeln(‘Hello!’);
Writeln(‘How are you?’); END.
{Phần tiêu đề}
Program Ten_chuong_trinh;
{Phần khai báo}
Uses khai báo các unit;
Type khai báo kiểu;
Const khai báo hằng;
Var khai báo biến;
Procedure khai báo thủ tục;
Function khai báo hàm;
How are you?
• Không có phần khai báo
• Mỗi lệnh kết thúc bởi “;”
Chương 1 Tổng quan về NNLT Pascal
Trang 18Ví dụ: Chương trình tìm số lớn nhất trong 3 số nguyên a, b, c được
If Max < b then Max := b;
If Max < c then Max := c;
Writeln (‘Max = ‘,Max);
Trang 19Khái niệm chung
• Dữ liệu: Là tất cả các thông tin được lưu trữ và
xử lý trên máy tính
• Kiểu dữ liệu: Là sự quy định chung về cấu trúc lưu trữ, miền giá trị, các phép toán và các thao tác trên các giá trị
• Hai nhóm kiểu dữ liệu:
– Kiểu dữ liệu cơ sở (Số nguyên, Số thực, Logic, Ký tự, Liệt kê, Đoạn con)
– Kiểu dữ liệu có cấu trúc (Mảng, Xâu ký tự, Bản ghi, Tập hợp, File, …)
Chương 2 Các kiểu dữ liệu
Trang 20Các kiểu dữ liệu cơ sở
• Số nguyên (ShortInt, Byte, Integer, Word, LongInt)
– Qui định về giá trị riêng cho từng loại
Trang 21Các kiểu dữ liệu cơ sở
• Số thực ( Real , Single, Double, Extended, Comp)
– Qui định về giá trị riêng cho từng loại (Khác với số nguyên)
• Real: quy định bởi 2 giá trị: 2.9*10 -39 và 1.7*10 38
• Trong đó: 1.7*10 38 là giá trị lớn nhất; 2.9*10 -39 là khoảng cách nhỏ nhất để phân biệt được 2 số thực khác nhau
• Quy cách viết số thực:
– Dấu phảy tĩnh: 3.14 – Dạng dấu phảy động: 3.14*10 0 =0.314*10 1 =31.4*10 -1
– Các phép toán: +, -, *, /– Các phép so sánh: < , >, <=, >=, =, <>
– Một số hàm toán học: abs(x), sqrt(x), ln(x), exp(x), round(x), trunc(x), frac(x), sqr(x),…
Chương 2 Các kiểu dữ liệu
Trang 22Các kiểu dữ liệu cơ sở
– Giá trị logic đúng (TRUE) và sai (FALSE)
– Các phép toán AND, NOT, OR, XOR
Chương 2 Các kiểu dữ liệu
Trang 23Các kiểu dữ liệu tự định nghĩa
• Liệt kê
Ví dụ:
• Type MAU = (Xanh, do, tim, vang);
Var Color: MAU;
• Var Day: (ThuHai, ThuBa, ThuTu, ThuNam, ThuSau,
– Kiểu liệt kê có thứ tự được xác định bởi thứ tự liệt kê các phần tử, kiểu đoạn con có thứ tự của kiểu dữ liệu tương ứng
Chương 2 Các kiểu dữ liệu
Trang 24• Cú pháp: Const Ten_hang = giá trị; phụ
thuộc vào kiểu của giá trị
• Ví dụ: Const M = 100;
Const Pi = 3.1416;
Chương 3 Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Trang 25Biến (Variable – Var )
• Khái niệm: là đại lượng có thể thay đổi giá trị tại các thời điểm khác nhau trong chương trình Truy cập tới giá trị của biến thông qua tên biến
• Khai báo biến
– Cú pháp:
• Var Ten_bien: Ten_kieu_du_lieu;
• Var Ten_bien: Sự mô tả kiểu dữ liệu;
– Ví dụ:
• Var x, y: Real; m,n: Integer;
• Var Day: (Mon,Tue,Wed,Thu,Fri,Sat,Sun);
Trang 26Kiểu ( Type )
• Khái niệm:
– Là sự qui định chung về cấu trúc lưu trữ, miền giá trị và cách xử
lý đối với một loại dữ liệu
– Ngoài các kiểu dữ liệu chuẩn (đã được TP định nghĩa), có thể định nghĩa thêm các kiểu dữ liệu mới
• Khai báo kiểu
– Cú pháp:
Type Ten_kieu = Sự mô tả về kiểu;
– Ví dụ:
Type SoThuc = Real;
Type Color = (Xanh,Do,Tim,Vang);
Chương 3 Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Trang 28Câu lệnh trong NNLT Pascal
• Khái niệm:
– Câu là đơn vị cú pháp trong mỗi ngôn ngữ Câu lệnh là đơn vị
cú pháp trong mỗi ngôn ngữ lập trình
– Mỗi câu lệnh biểu thị một (hay một loạt) thao tác của thuật toán
mà máy tính cần phải thực hiện
• Các loại câu lệnh trong Pascal:
– Câu lệnh đơn: Gọi thủ tục, Lệnh gán, lệnh Goto, Exit, Break,… – Câu lệnh có cấu trúc: Lệnh phức, Lệnh rẽ nhánh, Lệnh lặp
Trang 29Lệnh gán
• Dùng để gán giá trị (có thể là của một hằng, một biến, hay một biểu thức, …) cho một biến
Chương 3 Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Trang 30Lệnh gọi thủ tục
• Dùng để gọi thực hiện một thủ tục đã được định nghĩa trước đó (có thể là do TP hoặc người lập trình)
• Chú ý: Danh sách tham số có thể rỗng, có một hay có nhiều
tham số tùy theo việc thiết kế thủ tục đó Nếu có nhiều tham số thì các tham số được phân cách bởi dấu phảy.
Chương 3 Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Trang 31Lệnh phức (Khối lệnh)
• Khái niệm:
– Một nhóm lệnh được đặt trong cặp từ khóa “Begin”, “End” được
xem là một câu lệnh phức (Khối lệnh) – Câu lệnh phức được sử dụng khi nhóm lệnh trong đó cần được thực hiện đồng thời
Writeln(‘Ptr co hai nghiem phan biet:’);
Writeln(‘X1 = ‘,X1);
Writeln(‘X2 = ‘,X2);
Chương 3 Hằng, Biến, Kiểu, Biểu thức và Câu lệnh
Trang 32Khái niệm về cấu trúc rẽ nhánh
• Thao tác rẽ nhánh:
– Nhằm thực hiện khả năng dự đoán và đáp ứng của
máy tính trong quá trình thu thập và xử lý thông tin
– Người lập trình phải “dạy” cho máy tính thực hiện
thao tác này thông qua câu lệnh rẽ nhánh
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 33Cấu trúc rẽ nhánh không đầy đủ
• Cú pháp
If <Điều kiện> Then <Việc>;
• Sơ đồ khối (Lưu đồ)
Trang 34Cấu trúc rẽ nhánh không đầy đủ
Ví dụ: Tìm số lớn nhất trong 3 số nguyên a, b, c.
Program TimMax;
Var a, b, c, Max: Integer
BEGIN
Writeln(‘Chtrinh tim Max cua 3 so nguyen’);
Writeln(‘Nhap a,b,c:’); Readln(a,b,c);
Max := a;
If Max < b Then Max := b;
If Max < c Then Max := c;
Writeln(‘Ket qua: ’, Max);
END.
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 36Writeln(‘Chtrinh tim Min cua 3 so nguyen’);
Writeln(‘Nhap a,b,c:’); Readln(a,b,c);
If a < b Then if a < c then Min := a
else Min := c Else if c < b then Min := c
else Min := b;
Writeln(‘Ket qua: ’, Min);
END.
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 37Cấu trúc rẽ nhánh đầy đủ
Một số vấn đề cần lưu ý:
• Trước từ khóa “Else” không được để dấu chấm phảy (;)
• Có thể xảy ra tính huống các cặp “If/Else” “lồng nhau” Khi đó mỗi
“Else” được tính cho “If” gần nó nhất mà chưa thuộc vào “Else” nào khác.
• Nếu sau “Then” hoặc “Else” có nhiểu hơn một lệnh máy tính cần thực hiện (theo thuật toán) thì các lệnh đó phải được đặt trong cặp
“Begin/End”
• Có thể tạm coi rằng
– Cấu trúc Không đầy đủ là tình huống rẽ theo 1 nhánh (chỉ khi thỏa mãn
điều kiện)
– Cấu trúc Đầy đủ là tình huống rẽ theo 2 nhánh (1 nhánh khi điều kiện
đúng, 1 nhánh khi điều kiện sai)
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 38Câu lệnh tuyển “Case Of”
[Else Việc n+1] ; End;
• Chú ý:
– Trong trường hợp có nhiều giá trị của biểu thức cùng tương ứng với một
thao tác thì có thể ghi các giá trị đó trên cùng một dòng
– Biểu thức ở đây chỉ có thể thuộc kiểu dữ liệu đếm được – <Việc i> có thể gồm nhiều hơn một tao tác, khi đó cần được biểu diễn
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 39Câu lệnh tuyển “Case Of”
• Lưu đồ
Biểu thức Việc 1
Else
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 40Câu lệnh tuyển “Case Of”
Ví dụ: Nhập tháng m[1;12] và năm N vào từ bàn phím và in ra số ngày của tháng m.
Chương 4 Cấu trúc lệnh rẽ nhánh
Program NgayCuaThang;
Var m: 1 12; N: 1000 3000;
BEGIN
Writeln(‘Chtrinh tinh so ngay cua thang’);
Writeln(‘Nhap Thang: ’); Readln(m);
Writeln(‘Nhap Nam: ’); Readln(N);
Case m of
1,3,5,7,8,10,12: Writeln(‘Co 31 ngay’);
4,6,9,11: Writeln(‘Co 30 ngay’) else If N mod 4 = 0 then Writeln(‘Co 29 ngay’) Else Writeln(‘Co 28 ngay’);
End;
Trang 41Bài tập áp dụng (Lệnh rẽ nhánh)
• Viết chương trình giải hệ hai phương trình bậc nhất hai
ẩn x, y dạng
• Viết chương trình kiểm tra xem ba số thực a, b, c có
phải là số đo ba cạnh của một tam giác hay không
• Viết chương trình kiểm tra xem ba điểm phân biệt
Trang 42Bài tập áp dụng (Lệnh rẽ nhánh)
• Viết chương trình nhập vào một tháng, cho biết tháng đó thuộc quý nào trong năm
• Viết chương trình tìm các giá trị nhỏ nhất, lớn nhất của
ba số/ của dãy n số nguyên (ko dùng mảng) được nhập
Chương 4 Cấu trúc lệnh rẽ nhánh
Trang 43Khái niệm về cấu trúc lặp
• Một hoặc một nhóm thao tác nào đó cần thực hiện lặp lại nhiều lần trong thuật toán
sẽ được biểu diễn bởi cấu trúc lệnh lặp
• Khả năng tính toán nhanh sẽ cho phép
máy tính sử dụng thao tác lặp một cách
hiệu quả trong quá trình xử lý thông tin
Chương 5 Cấu trúc lệnh lặp
Trang 44Lệnh lặp với số bước xác định
• Ví dụ 1: Tìm giá trị lớn nhất của dãy số
• Ví dụ 2: Tính tổng các số tự nhiên từ 1 đến n, với n được
nhập vào từ bàn phím
→ Cần phải thực hiện các hành động lặp
– Ví dụ 1 Các phép so sánh – Ví dụ 2 Các phép cộng dồn
• Câu lệnh lặp với số bước lặp xác định cho phép chúng ta
“dạy” cho máy tính các thao tác này.
Chương 5 Cấu trúc lệnh lặp
1, 2 , , n
Trang 45• Cú pháp
For i:=<Gtrị đầu> To <Gtrị cuối> Do <Việc>;
For i:=<Gtrị đầu> DownTo <Gtrị cuối> Do <Việc>;
• Trong đó
– i: đóng vai trò là biến đếm, phải thuộc kiểu dữ liệu đếm
được.
– <Gtrị đầu>, <Gtrị cuối> là các giá trị để xác định quá
trình lặp, cùng kiểu với biến i
– <Việc>: có thể được biểu diễn bởi lệnh đơn, hoặc lệnh
có cấu trúc
Lệnh lặp với số bước xác định
Chương 5 Cấu trúc lệnh lặp
Trang 46Lệnh lặp với số bước xác định
Chương 5 Cấu trúc lệnh lặp
Việc
i ≤ Gtrị cuối
Đ S
Tăng i lên 1
i := Gtrị đầu
Lưu đồ 1: For … To … Do …;
Trang 47Lệnh lặp với số bước xác định
Chương 5 Cấu trúc lệnh lặp
Việc
i ≥ Gtrị cuối
Đ S
Giảm i bớt 1
i := Gtrị đầu
Lưu đồ 2: For … DownTo … Do …;
Trang 53Chương 5 Cấu trúc lệnh lặp
Lặp với số bước không xác định
H.Động
Điều kiện
Đúng
Sai
H.Động
Điều kiện
Đúng Sai
Trang 54• Kiểm tra điều kiện trước
– Cú pháp:
While <điều kiện lặp> do <H.Động>;
– Ví dụ 1: Cha năm nay 35, con lên 4 tuổi Hỏi sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
– Ví dụ 2: Cho 2 số tự nhiên a, b khác 0 Hãy tìm ước số chung lớn nhất của chúng.
Chương 5 Cấu trúc lệnh lặp
Lặp với số bước không xác định
Trang 55Chương 5 Cấu trúc lệnh lặp
Lặp với số bước không xác định
• Kiểm tra điều kiện sau
– Cú pháp:
Repeat
<H.Động>
Until <điều kiện dừng>;
– Ví dụ 1: Cha năm nay 35, con lên 4 tuổi Hỏi sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
– Ví dụ 2: Cho 2 số tự nhiên a, b khác 0 Hãy tìm ước
số chung lớn nhất của chúng
Trang 56– Ktra đ.kiện trước/sau khi lặp: Khác nhau
• Trước: Có thể không có bước lặp nào được thực hiện
• Sau: Luôn có ít nhất một bước lặp được thực hiện
– Các dạng lệnh lặp có thể thay thế nhau được
Trang 59Bài tập áp dụng ( Câu lệnh lặp )
• Tính các tổng đơn giản
• Tính tổng, tìm Max, Min của dãy số nguyên (chưa có
mảng)
• Số nguyên tố, số hoàn hảo
• Bài toán Gà – Chó, trăm trâu trăm cỏ (vòng lặp lồng nhau )
• UCLN (Chia, Trừ liên tiếp), BCNN
• Tổng các chữ số của số tự nhiên
• Điều khiển lặp chương trình, kiểm soát dữ liệu vào.
Chương 5 Cấu trúc lệnh lặp
Trang 60Chương 6 Dữ liệu kiểu Mảng (Array)
• Định nghĩa: Array là một dãy gồm nhiều phần tử cùng một kiểu
Hay nói cách khác một dữ liệu kiểu array là một dãy của nhiều dữ liệu thuộc cùng một kiểu.
– Các phần tử của một dãy phải có cùng kiểu gọi là kiểu cơ sở Kiểu cơ
sở có thể là một kiểu bất kỳ của Pascal.
– Các phần tử có mối quan hệ về vị trí trong dãy được xác định bằng chỉ số (index) Chính là thứ tự về vị trí của nó trong dãy
• Khai báo Kiểu mảng:
Type TenKieuday = Array[ KieuChiSo ] of KieuCoSo ;
– Số phần tử của dãy chính là số giá trị có thể có của kiểu chỉ
số
– KieuChiSo có giá trị từ giá trị nhỏ nhất đến giá trị lớn nhất
của kiểu chỉ số
Vi dụ : Type DaySoNguyen = Array [1 100] of Integer;
DaySoThuc = Array [‘A’ ’Z’] of Real;
Dãy nguyên có 100 phần tử kiểu integer;index từ 1 đến 100.
DỮ LIỆU KIỂU MẢNG
29/06/24
Trang 61Chương 6 Dữ liệu kiểu Mảng (Array)
KieuCoSo ;
Var TenBienMang: TenKieuMang;
Vi dụ : Type DaySoNguyen = Array [1 100] of Integer;
DaySoThuc = Array [‘A’ ’Z’] of Real;
Var A: DaySoNguyen; B: DaySoThuc;
KieuCoSo ;
Ví dụ: Var A: Array [1 100] of Integer;
B: Array [‘A’ ’Z’] of Real;
• Ý nghĩa của hai cách khai báo là như nhau Tuy nhiên có một
số trường hợp phải dùng cách khai báo gián tiếp
DỮ LIỆU KIỂU MẢNG
Trang 63Các thao tác trên Mảng
• Có thể sử dụng từng phần tử của dãy như là một biến của kiểu dữ liệu cơ sở
– Ví dụ: for i:= 1 to 100 do readln(a[i]);
Nhập xuất dữ liệu cho biến mảng: thực hiện thông qua việc nhập/xuất đối với
từng phần tử của mảng.
Ví dụ: For i:= 1 to 100 do Write(a[i]);
Chương 6 Dữ liệu kiểu Mảng (Array)
Trang 64Một số đặc tính của kiểu array
• Số phần tử của kiểu array là cố định ngay từ khi khai báo Dù là ta dùng bao nhiêu phần tử thì
cũng chiếm đúng số bộ nhớ mà dãy đã khai báo.
• Do đó thông thường phải khai báo dư hơn số
Chương 6 Dữ liệu kiểu Mảng (Array)
Trang 65Nhập – xuất dữ liệu mảng một chiều
Chương 6 Dữ liệu kiểu Mảng (Array)
Trang 66Một số thao tác khác trên mảng
– Tìm kiếm – Sắp xếp – Chèn
– Xoá
Chương 6 Dữ liệu kiểu Mảng (Array)
Trang 67Bài tập áp dụng ( Câu lệnh lặp )
• Tính tổng, Max, Min của dãy số (khi có mảng)
• Tìm kiếm theo mẫu, không theo mẫu (nâng cao) (số chẵn chục, chính phương,…)
• Sắp xếp tăng, vấn đề sinh ngẫu nhiên
• Ma trận (Cộng, nhân, chuyển vị, đchéo, …)
Chương 6 Dữ liệu dạng mảng