Tải bản đầy đủ (.doc) (48 trang)

Giao trinh Pascal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (682.31 KB, 48 trang )

Thuật giải
Mục tiêu bài học:
- Xác định được tập dữ liệu vào, dữ liệu ra, biết phân chia công việc thành các bước. Sau mỗi bước bao giờ
cũng cho 1 kết quả xác định không phụ thuộc vào người hay máy thực hiện mà chỉ phụ thuộc vào dữ liệu
vào.
- Chỉ ra tính khả thi của các bước thực hiện. Tính dừng sau một số hữu hạn bước. Nắm được 3 cách
biểu diễn thuật toán.
- Trong toán học, để giải quyết một bài toán ta luôn tìm cách áp dụng những định lý, tính chất, tiên đề, hệ
quả... nhằm biến đổi dữ kiện đề bài để đưa về kết quả cuối cùng. Trong tin học việc giải các bài toán trước
hết là đi tìm thuật giải của bài toán đó.
1. Khái niệm thuật giải
Thuật giải giải một bài toán nào đó là một dãy các thao tác đơn giản được sắp xếp theo một trình tự xác định
rõ ràng và kết thúc sau một số hữu hạn bước nhằm biến đổi dữ liệu vào (input) của một bài toán thành dữ
liệu ra (output) mô tả lời giải bài toán đó.
Ví dụ . Bài toán kiểm tra tính nguyên tố. Cho: số nguyên dương N;
Cần biết: N có là số nguyên tố hay không?
Thuật giải Ơclid giải bài toán trên
- Input: a, b nguyên dương
- Output: UCLN của a và b
Bước 1: nhận vào số a và số b
Bước 2: chia a cho b tìm số dư r
Bước 3: Nếu r = 0 thì chuyển đến bước 5
Bước 4: gán giá trị b cho a, gán giá trị r cho b. Quay về bước 2
Bước 5: thông báo kết quả UCLN là b;
Bước 6: Kết thúc.
2. Các tính chất của thuật giải
2.1. Có dữ liệu vào (input) Mỗi thuật giải có thể có một hoặc nhiều dữ liệu vào
2.2. Xác định dữ liệu ra (output) Sau khi thuật giải đã được thực hiện xong, tuỳ theo chức năng mà thuật
giải đảm nhiệm ta có thể thu được một số dữ liệu ra xác định
2.3. Tính xác định Tính xác định của thuật giải đòi hỏi ở mỗi bước các thao tác phải hết sức rõ ràng, không
thể gây nên sự nhập nhằng, lẫn lộn, tuỳ tiện.


2.4. Tính kết thúc (tính dừng) Thuật giải phải dừng sau một số hữu hạn bước thực hiện.
2.5. Tính hiệu quả Một yêu cầu quan trọng là với input đúng thuật giải phải cho output đúng.
2.6. Tính phổ dụng Một thuật giải được xem là có tính phổ dụng cao nếu nó có thể giải bất kỳ bài toán nào
trong một lớp lớn các bài toán.
Những cách viết thuật giải
1. Liệt kê từng bước
Thuật giải Ơclid ở trên được diễn tả theo hình thức liệt kê từng bước.
2. Lưu đồ(sơ đồ khối)
Lưu đồ là công cụ giúp ta diễn tả thuật giải
một cách trực quan. Lưu đồ được tạo bởi 4
loại khối nối với nhau bằng các cung
- Khối thao tác được biểu diễn bằng hình
chữ nhật. Trong khối này ta viết một hoặc
một dãy các thao tác như gán trị, tính
toán biểu thức v.v... Khối thao tác có 1
cung đi đến và 1 cung đi ra.
- Khối điều kiện được biểu diễn bằng
hình thoi. Trong khối này ta viết một biểu
thức logic. Tuỳ theo giá trị của biểu thức
logic là đúng hay sai mà việc thực hiện
tiếp theo sẽ được chỉ dẫn bởi một trong hai cung đi ra mang dấu + (cho trường hợp đúng) hoặc dấu -
(cho trường hợp sai). Như vậy khối điều kiện có 1 cung đi đến và 2 cung đi ra.
- Hai khối đặc biệt là khối bắt đầu và khối kết thúc được biểu diễn bằng hình ellip chỉ rõ điểm bắt
đầu và điểm kết thúc (điểm dừng) của thuật giải. Khối bắt đầu không có cung đi đến và có 1 cung đi
ra. Khối kết thúc có 1 cung đi đến và không có cung đi ra.
Chúng ta dùng lưu đồ diễn tả thuật giải Ơclid tìm UCLN của hai số nguyên dương.
Thuật giải Ơclid
+Dữ liệu vào - Số nguyên a > 0; b > 0
+Dữ liệu ra - USCLN của a và b
3. Giả mã lệnh

Khi thể hiện thuật giải bằng giả mã lệnh, ta sẽ vay
mượn các cú pháp của một ngôn ngữ lập trình nào
đó. Ở đây chúng ta vay mượn các khái niệm của
ngôn ngữ lập trình pascal.
3.1. Lệnh gán
Tên biến :=biểu thức;
3.2. Lệnh rẽ hai nhánh
a. Lệnh rẽ hai nhánh dạng khuyết:
Nếu điều kiện thì câu lệnh
b. Lệnh rẽ hai nhánh dạng đầy đủ:
Nếu điều kiện thì câu lệnh 1 còn câu lệnh 2;
3.3. Rẽ nhiều nhánh
Chọn theo biểu thức thuộc vào
nhãn 1 : câu lệnh 1;
nhãn 2 : câu lệnh 2;
. . . . . . . . . . . . .
nhãn n : câu lệnh n
còn câu lệnh n+1;
3.4. Lệnh lặp
a. Lệnh lặp với điều kiện trước: Khi điều kiện làm câu lệnh.
b. Lặp với điều kiện sau
Lặp .....câu lệnh ..... đến điều kiện;
c. Lặp với số lần định trước: Với biến := biểu thức 1 đến
biểu thức 2 làm câu lệnh
4. Ví dụ
Người A nghĩ trong đầu một số nguyên X trong đoạn từ 1 đến
100. Người B hỏi, người A trả lời hoặc đúng hoặc sai. Sau
không quá 7 lần hỏi đáp người B biết số X là số nào. Viết thuật
giải cho bài toán này.
4.1. Dùng ngôn ngữ liệt kê từng bước

Bước 1 Gán T := 1 ; P := 100;
Bước 2 Lấy thương nguyên của tổng (T + P) chia cho 2 rồi gán
cho G.
Bước 3 Kiểm tra điều kiện X > G nếu đúng thì chuyển đến
bước 4, còn sai thì chuyển đến bước 5;
Bước 4 Lấy G + 1 gán cho T; chuyển đến bước 6;
Bước 5 Lấy G gán cho P;
Bước 6 Kiểm tra điều kiện T = P nếu sai thì chuyển về bước 2;
Bước 7 Trả lời X = T ;
Bước 8 Kết thúc;
4.2 Dùng sơ đồ khối
4.3 Dùng giả mã lệnh
Biến nguyên không âm T, P, G, X;
Bắt đầu
T :=1; P :=100;
Lặp
G := (P+T) div 2;
Nếu X > G thì T :=G+1
Ngược lại P :=G;
đến T = P;
Thông báo X = P;
Kết thúc.
Câu hỏi-Bài tập
1. Thuật giải là gì? Thuật giải có những tính chất cơ bản nào?
2. Có mấy cách biểu diễn thuật giải
3. Hãy viết thuật giải vẽ đồ thị của hàm số y = |ax| (với a khác 0) thông qua đồ thị của hàm số y = ax.
4. Trình bày tính chất xác định của thuật giải và nêu rõ ý nghĩa của tính chất này.
5. Hãy phát biểu thuật giải để giải bài toán sau: "Có một số quả táo. Dùng cân hai đĩa (không có quả
cân) để xác định quả táo nặng nhất"(giả sử mỗi đĩa cân có thể đựng được nửa số quả táo).
6. Xác định dữ liệu vào và dữ liệu ra cho các thuật giải sau đây

a) Rút gọn một phân số.
b) Kiểm tra xem ba số cho trước a, b và c có thể là độ dài ba cạnh của một tam giác hay không?
c) Tính trung bình cộng của hai số.
d) Dùng một cốc phụ để tráo nuớc ở hai cốc cho trước.
e) Tìm chu vi và diện tích của hình tròn có bán kính cho trước
7. Có hai bình A và B. Bình A có dung tích 8 lít, bình B có dung tích 5 lít. Trình bày các bước thực hiện
để lấy được 2 lít nước.
8. Có 3 bình A, B, C. Bình A có dung tích 8 lít và đựng đầy 8 lít rượu, bình B có dung tích 5 lít, bình C có
dung tích 3 lít. Trình bày các bước thực hiện để có được 4 lít rượu ở bình A và 4 lít rượu ở bình B.
9. Một người có 1 con gấu, 1 con dê và 1 cái bắp cải. Nếu không có người ở bên chúng thì con gấu sẽ ăn
thịt con dê hoặc con dê sẽ ăn bắp cải. Thuyền chỉ có thể chở được người đó với con gấu hoặc con dê hoặc
bắp cải. Người đó làm thế nào để mang chúng sang sông.
10.Có 4 người phải qua một cái cầu, trời tối họ chỉ có một chiếc đèn. Cầu chỉ đi được tối đa 2 người. Như
vậy qua cầu phải có đèn và nhiều nhất là chỉ đi được 2 người cùng một lúc. Biết rằng người thứ nhất đi qua
cầu hết 1 phút. Người thứ hai đi qua cầu hết 2 phút. Người thứ ba đi qua cầu hết 5 phút. Người thứ tư đi qua
cầu hết 10 phút. Hãy tìm cách cho 4 người này qua cầu sao cho tổng số thời gian ít nhất
Giao tiếp với Turbo Pascal
Mục tiêu bài học:
- Biết vào môi trường làm việc của Turbo Pascal.
- Nắm được cấu trúc của 1 chương trình Pascal đơn giản.
- Biết viết 1 chương trình Pascal đơn giản thông qua thủ tục vào ra và lệnh gán
Sau khi đã có thuật giải cho bài toán, một câu hỏi đặt ra là làm thế nào để máy thực thi thuật giải đó để đưa ra
output của bài toán? Chính là ta cần một công cụ lập trình. Turbo Pascal là một công cụ như thế. Phần này ta sẽ tìm
hiểu
Sử dụng TURBO PASCAL (kí hiệu là TP) bao gồm những phần việc sau:
Trước hết là soạn thảo chương trình.
Sau khi chương trình đã soạn thảo xong, ta dùng TP để kiểm tra xem trong chương trình đó có lỗi cú pháp
(viết sai quy cách câu lệnh hoặc mô tả) hay không.
Khi không còn các thông báo lỗi nữa, nghĩa là chương trình đã đúng đắn về mặt cú pháp, ta có thể chạy
chương trình, nạp dữ liệu và thu nhận kết quả.

1. Chương trình Pascal đơn giản
Trước hết ta hãy xem một chương trình hết sức đơn giản, chẳng hạn:
Program chao_khach ;
BEGIN
write(' Chao cac ban,');
write(' chung ta bat dau lam viec');
END.
Dòng thứ nhất gọi là phần tiêu đề. Phần tiêu đề có thể có hoặc không, nhưng nếu có thì cần viết đúng dưới
dạng sau: một từ bắt buộc Program tiếp theo ít nhất là một kí tự dấu cách sau đó là một tên do người lập trình
tự chọn. Các dòng thứ hai và thứ năm là bắt buộc, thể hiện việc bắt đầu và kết thúc chương trình. Các dòng
viết giữa cặp Begin và End là những câu lệnh.
2. Khởi động TURBO PASCAL
Để sử dụng TURBO PASCAL ta cần tối thiểu là hai tệp: TURBO.EXE và TURBO.TPL.
Khởi động TURBO PASCAL, giả sử ta đang ở thư mục có hai tệp nói trên ta gõ TURBO tiếp theo là phím
ENTER (có nhiều cách khởi động TURBO PASCAL, nếu trên màn hình Windows chúng ta thấy biểu tượng
của TURBO PASCAL thì ta chỉ cần kích chuột vào đó)
3. Soạn thảo trong TURBO PASCAL
3.1. Dịch chuyển con chạy
- Các phím lên, xuống, phải, trái (có hình những mũi tên ở bên phải bàn phím): dịch con chạy từng kí tự theo
chiều mũi tên.
- Ctrl và phím mũi tên sang trái (phải) : dịch chuyển con chạy theo từng từ sang trái (phải) của dòng văn bản.
- Home: đưa con chạy về đầu dòng.
- End: đưa con chạy về cuối dòng.
- PgUp (PgDn): dịch con chạy lên (xuống) theo từng trang màn hình.
- Ctrl-PgUp hoặc Ctrl-PgDn: đưa con chạy về đầu tệp hoặc cuối tệp.
3.2. Sửa chữa văn bản
- Phím Del để xoá một kí tự tại vị trí hiện thời của con chạy.
- Phím lùi (Backspace) để xoá đi một kí tự nằm bên trái con chạy.
- Phím INSERT để chọn chế độ chèn hoặc đè.
- Ctrl-Y. Xoá cả dòng đang chứa con chạy.

- Ctrl-Q Y. Xoá từ vị trí con chạy đến cuối dòng
- Ctrl- Q A. Tìm kiếm một dãy kí tự và thay thế.
3.3. Làm việc với khối dòng
Ctrl-K B. Đánh dấu đầu khối.
Ctrl-K K. Đánh dấu cuối khối.
Ctrl-K Y. Xoá khối dòng đã đánh dấu.
Ctrl-K C. Sao chép khối dòng tới vị trí mới của con chạy.
Ctrl-K V. Chuyển khối dòng tới vị trí mới của con chạy.
Ctrl-K W. Ghi khối dòng vào một tệp.
Ctrl-K R. Đọc một tệp từ đĩa vào và xen vào
chỗ con chạy.
4. Môi trường của TURBO PASCAL
Khởi động TURBO PASCAL là nạp tệp
TURBO.EXE vào bộ nhớ trong của máy để ta
làm việc với môi trường của hệ thống này. Môi
trường này thể hiện trên màn hình như sau:
Môi trường trên giúp ta làm việc với TURBO
Pascal: gõ chương trình (Edit), thực hiện
chương trình (Run), ghi chương trình vào đĩa,
gọi chương trình từ đĩa (File) v.v... Ngoài việc
dùng chuột chọn trên bảng, Turbo Pascal dùng
một số phím nóng sau:
• + Nhấn phím F10 để vào menu, di vệt sáng đến chức năng cần chọn rồi gõ ENTER.
• + F3 để mở tệp
• Alt-F3 để đóng tệp
• F9 để dịch chương trình
• Ctrl-F9 để thực hiện chương trình
• F2 để ghi tệp lên đĩa với tên đã có
• Alt-F a để ghi tệp lên đĩa với tên mới
• Alt-X để kết thúc làm việc với TURBO PASCAL.

Sử dụng Turbo Pascal
5. Ghi nhớ
5.1. Bảng chữ
Bảng chữ gốc của TP là bảng ASCII (American Standard Codes for Information Interchanges). ASCII có 128
kí hiệu bao gồm bộ chữ cái la tinh, các chữ số, các dấu và một số kí hiệu đặc biệt.
a. Bộ chữ cái La tinh
Gồm 26 chữ cái tiếng Anh in hoa A-Z và in thường a-z. TP không phân biệt chữ thường và chữ hoa trong tên
các đối tượng, ngoại trừ trường hợp trong các xâu văn bản.
b. Bộ chữ số
Gồm các chữ số thập phân: 0, 1, ... , 9. Để tránh lẫn 0 (chữ số không) và O (chữ O) TP quy định gạch chéo
trong chữ số không.
c. Những dấu phép toán số học: + (cộng), - (trừ), * (nhân), / (chia)
d. Các dấu so sánh : = (bằng) , > (lớn hơn) , < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng),
<> (khác)
e. Những kí hiệu khác: . ,;: ' ":! @ # $ % \ ^ & () [ ] { }
Trong bảng chữ có một kí hiệu gọi là dấu cách hay khoảng trống. Dấu cách được dùng để tạo một khoảng
trắng ngăn cách các từ.
5.2. Từ khoá
Trong từ vựng Pascal có một số từ dành riêng mà nghĩa đã được quy định sẵn, chẳng hạn program, begin, end,
mà ta đã biết được gọi là từ khoá. chúng tôi giới thiệu dưới đây một số từ khoá sẽ dùng trong giáo trình này
AND ARRAY BEGIN CASE CONST DIV DO DOWNTO ELSE END FOR FUNCTION
GOTO IF IN LABEL MOD NOT OF OR PROCEDURE PROGRAM REPEAT STRING
THEN TO TYPE UNTIL USES VAR WHILE
5.3. Tên chuẩn
Những tên được đặt sẵn trong TP, chẳng hạn pi, byte, word, integer, longint, read, readln, write, writeln, char,
boolean, ... được gọi là tên chuẩn.
5.4. Cấu trúc một chương trình Pascal đơn giản
Program tênchươngtrình ;
Var Khai báo biến ;
BEGIN

Những lệnh (ngăn cách nhau bởi dấu chấm phẩy ;)
Readln
END.
Dòng trên cùng gọi là phần tiêu đề. Dòng thứ hai sau từ khoá Var là khai báo các biến để dùng trong chương
trình (xem ở ví dụ áp dụng dưới đây).
Thân chương trình là phần giới hạn bởi BEGIN, END và kết thúc bởi dấu chấm (.). Trong thân chương trình,
các lệnh được cách nhau bởi dấu chấm phẩy (;).
5.5. Qui tắc đặt tên.
Tên chương trình, tên biến và các tên sau này ta gặp phải bắt đầu bằng chữ cái, tiếp theo có thể có một số kí tự
nữa nhưng chỉ lấy trong tập gồm chữ cái, chữ số, dấu gạch dưới. Tên có thể nhận đến 127 kí tự.
5.6. Hiển thị dữ liệu ra màn hình và nhận dữ liệu vào từ bàn phím
a. write('dãy kí tự ');
Dãy kí tự trong hai dấu nháy đưn được viết lên màn hình nguyên văn. Con chạy ở cùng dòng đó.
b. writeln( 'dãy kí tự ' ) ;
Tác dụng như lệnh write('dãy kí tự ') nhưng có thêm tác dụng sau khi hoàn thành nhiệm vụ thì đưa con trỏ
màn hình xuống đầu dòng tiếp theo.
c. write (biểu thức)
Viết ra màn hình giá trị của biểu thức. Con chạy ở cùng dòng đó.
d. Writeln (biểu thức)
Viết ra màn hình giá trị của biểu thức. Viết xong giá trị của biểu thức con chạy xuống đầu dòng tiếp theo.
Ví dụ lệnh writeln ( 25 + 37) ; khi thực hiện lệnh này trên màn hình xuất hiện số 62 và con trỏ ở đầu dòng
phía dưới.
e. writeln
Thực hiện lệnh này máy bỏ trống một dòng.
f. Readln(tên biến) ;
Chờ nhận vào giá trị của biến đã được khai báo trong Var.
g. readln; Chờ gõ phím ENTER.
6. Áp dụng.
6.1. Bài toán.
Tính chu vi và diện tích hình vuông có độ dài cạnh là một số nguyên được nhận vào từ bàn phím

6.2. Xây dựng thuật giải
Bước 1. Nhận vào a;
Bước 2. Viết ra giá trị của biểu thức chu vi là 4 * a ;
Bước 3. Viết ra giá trị của biểu thức diện tích là a *a ;
Bước 4. Kết thúc
6.3 Soạn chương trình
Program HinhVuong;
Var a : Word ;
Begin
readln (a);
writeln (4*a); write (a*a);
Readln;
End.
Hãy gõ phím F2 để ghi chương trình trên vào đĩa. Như vậy ở trên đĩa tệp mang tên là VUONG.PAS.
Trong chương trình trên, giữa phần tiêu đề và thân chương trình còn có một phần ở đây là
var a : Word . Đó là phần khai báo biến.
Từ Word là tên chuẩn có nghĩa là số nguyên không âm có tập giá trị từ 0 đến 65536.
Nội dung thân chương trình trên có nghĩa là:
Readln(a) ; nhập từ bàn phím một số và lưu giữ số đó ở biến a. Giá trị nạp vào phải gõ trên bàn phím và kết
thúc bởi phím ENTER.
Writeln(4* a) ; viết ra màn hình giá trị của biểu thức 4* a sau đó con chạy xuống đầu dòng tiếp theo.
Write(a* a) ; viết ra màn hình giá trị của biểu thức a
2
, con chạy màn hình ở cùng dòng đó.
Readln là chờ người dùng gõ phím Enter.
6.4. Thực hiện chương trình
Gõ phím F9 để máy dịch chương trình ta vừa viết ở trên sang mã máy. Nếu có lỗi thì máy thông báo cho ta
sửa. Sửa xong lại gõ phím F9 để máy báo lỗi tiếp theo (nếu còn). Bạn đọc có thể xem lỗi gì trong phần phụ
lục thông báo lỗi ở cuối sách.
Khi nào gõ phím F9 mà máy không báo có lỗi thì ta cho chạy chương trình bằng cách gõ tổ hợp hai phím Ctrl-

F9 (giữ phím Ctrl và gõ phím F9) sau đó gõ giá trị của a từ bàn phím (thực hiện lệnh Readln(a)).
Bài tập
1.Viết các biểu thức sau đây dưới dạng thông thường:
a) a+b/c-d b) (a+b)/(c-d) c) a/b/c/d/e d) a*b/g*d e) 2*a+b*b/c
2.Những tên sau đây viết đúng hay sai:
A, AA, BIC, 1B, St , A* , A-B , CHU VI, In, TO, READ, _10A, F(x), M[, $Q, P^
3.Viết chương trình để máy in lên màn hình như sau:
*******************************************
& TRƯỜNG THCS TRAN BICH SAN &
& &
& xin gui loi &
& &
& CHAO CAC BAN! &
*******************************************
4. Bằng cách gõ đồng thời Alt_219 (giữ phím Alt, gõ các số 2, 1, 9 ở các phím phía bên phải bàn phím) để
viết khối hình chữ nhật, hãy lập chương trình vẽ chữ Tin học như sau:
TIN HOC
5. Viết chương trình tính diện tích xung quanh, diện tích toàn phần, thể tích hình lập phương khi cho độ dài
cạnh là một số nguyên.
6. Viết chương trình tính giá trị của biểu thức X
3
- 4X
2
+ 3X-5 cho biết X là một số nguyên
1. Bài toán
Tính chu vi và diện tích hình chữ nhật khi cho biết độ dài hai cạnh của nó là những số thực.
2. Xây dựng thuật giải
Bước 1. Nhận vào k1, k2;
Bước 2. Viết ra giá trị của biểu thức chu vi là 2 * (k1 + k2) ;
Bước 3. Viết ra giá trị của biểu thức diện tích là k1 * k2 ;

Bước 4. Kết thúc
3. Chương trình
Hãy khởi động TURBO PASCAL, sau đó gõ phím F3 và đặt tên tệp có phần chính là cn1 (khi máy hỏi tên
tệp thì gõ cn1 rồi gõ phím ENTER), sau đó soạn thảo chương trình như sau:
Program chunhat1;
Var k1, k2 : real;
Begin
Readln(k1 , k2);
Writeln (2*(k1+k2)); write(k1*k2);
Readln
End.
Hãy gõ phím F2 để ghi chương trình trên vào đĩa
Trong chương trình trên, phần khai báo biến var k1, k2 : real. Dòng khai báo của chương trình này có
nghĩa là khai báo các biến mang tên là k1, k2 các biến này nhận giá trị là số thực và chấp nhận các phép toán
trên số thực. Máy sử dụng hai biến tương ứng với hai tên gọi là k1 và k2 để sẵn sàng lưu giữ hai số thực.
4. Thực hiện chương trình
Gõ phím F9 để máy dịch chương trình ta vừa viết ở trên sang mã máy. Nếu có lỗi thì máy thông báo cho ta
sửa. Sửa xong lại gõ tiếp phím F9.
Khi nào gõ phím F9 mà máy thông báo không có lỗi thì ta nhớ lại gõ phím F2 một lần nữa để ghi chương trình
không có lỗi cú pháp lên đĩa.
Sau khi chương trình dịch được thông xuất, ta cho chạy chương trình bằng cách gõ đồng thời hai phím Ctrl-F9
(giữ phím Ctrl và gõ phím F9) sau đó gõ giá trị của k1 và k2 từ bàn phím
Khi thực hiện chương trình, trên màn hình xuất hiện tín hiệu mời (con trỏ nhấp nháy) có nghĩa là máy hỏi ta
hai giá trị k1, k2.
Chương trình trên viết ra màn hình giá trị của chu vi và diện tích hình chữ nhật dưới một dạng ta chưa quen
biết, đó là dạng dấu phẩy động. Muốn cho các số thực xuất hiện dưới dạng số thập phân thông thường, ta sửa
chương trình như sau:
Program chunhat2;
Var k1, k2 : real;
Begin

readln(k1,k2);
Writeln (2*(k1+k2) : 6 : 2); write(k1*k2 : 6 : 2);
Readln; End.
Dạng mới của lệnh Writeln hoặc Write ở đây là:
Writeln (2*(k1+k2) : 6 : 2);
Cho hiện trên màn hình giá trị của biểu thức 2*(k1+k2) chỉnh phải vào một vùng có 6 kí tự lấy 2 chữ số đầu
tiên ở phần thập phân, nếu chữ số thứ ba ở phần thập phân lớn hơn hoặc bằng 5 thì làm tròn lên
5. Ghi nhớ
5.1 . Khai báo biến
Cách khai báo biến như sau:
VAR tên biến 1, tên biến 2, tên biến 3 : kiểu của các biến này ;
5.2. Kiểu của biến
a. Kiểu nguyên
Ta đã biết kiểu chuẩn Word có giá trị từ 0 đến 65536.
Ngoài ra nếu ta dùng kiểu BYTE thì tập giá trị là từ 0 đến 255.
Nếu ta dùng kiểu INTEGER thì tập giá trị là từ - 32768 đến 32767.
b. Kiểu thực
Ta đã biết một tên chuẩn của kiểu thực là REAL. Tập gía trị của nó gồm những số thực có trị tuyệt đối nằm
trong khoảng 10
–37
đến 10
37 .
5.3. Những hàm số học chuẩn
Abs(x) :Lấy giá trị tuyệt đối của x. Giá trị của hàm cùng kiểu với kiểu của đối số x.
Sqr(x) :Cho x bình phương. Giá trị của hàm cùng kiểu với kiểu của đối số x.
Sqrt(x): Lấy căn bậc 2 của x. Giá trị của hàm thuộc kiểu thực.
Int(x) : Cho phần nguyên của x. Giá trị của hàm thuộc kiểu thực.
Trunc(x): Cho phần nguyên của x. Giá trị của hàm thuộc kiểu nguyên.
Round(x): Làm tròn x đến số nguyên gần x nhất. Giá trị của hàm thuộc kiểu nguyên
Sin(x): Cho giá trị của sinx, ở đây x tính bằng đơn vị là radian.

Cos(x) :Cho giá trị của cosx, ở đây x tính bằng đơn vị là radian.
Arctan (x): Cho góc tính bằng radian có tang bằng x.
Exp(x) : Tính e
x
. Giá trị của hàm thuộc kiểu thực.
Ln(x) : Tính lôgarit cơ số e của x. Giá trị của hàm thuộc kiểu thực.
Frac (x): Cho phần thập phân của x. Giá trị của hàm thuộc kiểu thực
Random(x) đối số x phải là nguyên. Hàm này cho ngẫu nhiên một số nguyên lớn hơn hoặc bằng 0 và nhỏ hơn
x .
5.4. Những lệnh thường dùng
a. Readln (danh sách biến);
Nạp dữ liệu từ bàn phím để đưa vào các địa chỉ kí hiệu bởi danh sách tên biến (dãy tên biến trong danh sách
cách nhau bởi dấu phẩy).
Khi thực hiện, trên màn hình xuất hiện tín hiệu mời (con trỏ nhấp nháy).
b. Write (danh sách những đối tượng viết ra màn hình) hoặc
Writeln (danh sách những đối tượng viết ra màn hình);
Những đối tượng trong danh sách phải cách nhau bởi dấu phảy. Nếu dùng writeln thì sau khi in xong, máy sẽ
chuyển con chạy xuống đầu dòng tiếp theo.
c. Writeln (biểu thức số thực : m : n) hoặc
Write (biểu thức số thực : m : n);
Cho hiện trên màn hình chỉnh phải giá trị của biểu thức số thực vào một vùng có m kí tự với n chữ số thập
phân sau khi đã làm tròn. Writeln có thêm tác dụng xuống dòng.
d. Writeln (biểu thức nguyên : m) ; hoặc Write (biểu thức nguyên : m);
Cho hiện trên màn hình chỉnh phải giá trị của biểu thức nguyên (biến được coi biểu thức đặc biệt) vào một
vùng có m kí tự .
e. writeln (‘ Tập văn bản ‘ : m) ; hoặc write (‘ Tập văn bản ‘ : m) ;
Cho hiện trên màn hình nguyên văn tập văn bản giữa hai dấu nháy cao, chỉnh phải vào một vùng có m kí tự .
Writeln có thêm tác dụng xuống dòng.
5.5. Khai báo dùng đơn vị (Unit)
USES tên đơn vị;

Ví dụ Uses crt ; sau khi đã khai báo uses crt thì có thể dùng những lệnh dưới đây:
CLRSCR : Xoá màn hình, đưa con chạy về góc trái trên của màn hình.
CLREOL: Xoá từ vị trí con chạy đến cuối dòng.
5.6. Cách viết chú thích
Viết văn bản (dãy kí tự) giữa cặp dấu { } hoặc (* *). Gặp văn bản này, chương trình bỏ qua.
5.7. Dịch chương trình sang tệp có phần mở rộng EXE
Muốn dịch chương trình Pascal ở bộ nhớ trong ra ngôn ngữ máy và ghi vào đĩa, ta lần lượt làm như sau:
Gõ Alt - C để chọn COMPILE;
- Chọn DESTINATION DISK, khi cần thiết thì gõ D để chuyển từ MEMORY sang DISK;
Giữ phím Alt và gõ phím F9.
Chương trình có phần mở rộng EXE chạy được ở hệ thống và một số phần mền ứng dụng khác
6. Áp dụng
6.1. Bài toán
Viết chương trình cho máy tính khoảng cách từ
một điểm I có toạ độ (X0, Y0 đến đường thẳng
có phương trình Ax + By + C = 0 (bài toán
trong mặt phẳng toạ độ Đề Các)
.2. Thuật giải
Bước 1. Nhận vào giá trị của các hệ số A, B,
C ;
Bước 2. . Nhận vào giá trị của X0 và Y0 ;
Bước 3. Viết ra màn hình giá trị của biểu
thức
Bước 4. Kết thúc
6.3. Chương trình
Program TinhKhoangCachTuMotDiêmDenDuongThang ;
Uses Crt ;
Var A, B , C, X0 , Y0 : Real ;
BEGIN
Clrscr ; Write (' Cho ba he so A, B, C cua duong thang ' : 75) ; readln (a , b, c);

(* Pascal khong phan biet chu hoa và chu thuong trong ten *) ;
Write (' Cho toa do cua diem I ' : 75) ;
readln (x0 , y0);
{ In ra man hinh gia tri cua khoang cach }
write (' Khoang cach la ', ABS(A*X0 + B*Y0 + C) /SQRT(A*A + B*B):9:3) ; Readln; End.
Bài tập
1. Viết các số sau đây ra dạng thông thường -6E+9; 7.82E-5 ; 15; -5.2
2. Viết các dãy tính sau dưới dạng biểu thức toán thông thường:
a) 3.7+7.8+9 b) 3.7/4.8/5.9
c) 3.6*4/3 d) (3.9*3.9/7*3-7.2)/3
3. Lập chương trình đổi kích thước a tính bằng inch ra cm biết 1 inch = 2,54cm.
4. Lập chương trình để tính trung bình cộng của 4 số thực bất kì.
5. Viết chương trình tính diện tích hình thang khi cho hai đáy và đường cao.
6. Viết chương trình tính quãng đường đi được S của một vật chuyển động nhanh dần đều khi cho máy biết
vận tốc ban đầu V0, gia tốc a và thời gian t.
7. Tính khoảng cách đến mặt đất của một người nhảy dù từ độ cao h sau thời gian t giây.
8. Viết chương trình cho máy nhận vào ba kích thước của hình hộp chữ nhật. Tính diện tích toàn phần, thể
tích và đường chéo của hình đó.
9. Viết chương trình tính chu vi, diện tích của tam giác đều khi cho biết cạnh.
1. Bài toán.
Tính chu vi, diện tích, đường chéo, chu vi đường tròn ngoại tiếp, diện tích hình tròn ngoại tiếp của hình chữ
nhật khi nhập vào độ dài hai kích thước.
2. Thuật giải.
Bước 1. Nhận vào k1, k2;
Bước 2. Viết ra giá trị của biểu thức chu vi là 2 * (k1 + k2) ;
Bước 3. Viết ra giá trị của biểu thức diện tích là k1 * k2 ;
Bước 4. Tính giá trị của biểu thức d =
Bước 5. Viết ra giá trị của d;
Bước 6. Viết ra giá trị của biểu thức chu vi hình tròn là p* d ;
Bước 7. Viết ra giá trị của biểu thức diện tích hình tròn là p* d*d/4

Bước 8. Kết thúc
Nhìn vào thuật giải trên, ta thấy để d lưu giữ giá trị của biểu thức đường chéo của hình chữ nhật, bài này ta sẽ
học một lệnh mới. Đó là lệnh gán.
3. Chương trình
Program chunhat2;
Uses crt;
Var k1, k2 : real;
BEGIN
Clrscr ; Write (' Cho do dai hai canh cua hinh chu nhat ' : 65) ;
readln (k1 , k2);
writeln (' Chu vi la ' : 12 , 2*(k1+k2) : 9 : 2) ;
writeln (' Dien tich la ' , k1*k2 : 9 : 3) ;
{ In ra man hinh gia tri cua duong cheo }
write (' Duong cheo la ', SQRT(k1*k1 + k2*k2):16:4) ;
Readln;
END.
Qui tắc viết lệnh này như sau: Tên biến := Biểu thức;
Thực hiện lệnh này, máy tính giá trị của biểu thức ở bên phải dấu gán (:=), sau đó gán giá trị này cho biến ở
bên trái dấu gán, tức là đưa giá trị đó vào địa chỉ được kí hiệu bởi tên biến ở bên trái dấu gán. Sau lệnh gán,
giá trị cũ của biến bị mất và biến nhận giá trị mới.
Ví dụ ta khai báo Var a : Integer ; ở phần thân chương trình ta có hai lệnh gán a := - 6 ; a := a + 8 thì thực
hiện lệnh gán thứ nhất a có giá trị là -6.
Tiếp đến sau khi thực hiện lệnh gán thứ hai biến a có giá trị là 2. Giá trị cũ là -6 bị mất, biến nhận giá trị mới.
4. Thực hiện chương trình
Gõ phím F2 để ghi văn bản đã soạn lên đĩa. Gõ phím F9 để sửa lỗi. Khi nào hết lỗi nhớ gõ phím F2 để ghi
chương trình hết lỗi cú pháp lên đĩa.
5. Ghi nhớ
Hằng số p PASCAL đã cài đặt sẵn mang tên là Pi .
- Cách viết lệnh gán: Tên biến := Biểu thức ;
- Cách thực hiện

Thực hiện lệnh này, trước tiên máy tính giá trị của biểu thức ở bên phải dấu gán, sau đó máy gán giá trị của
biểu thức cho biến ở bên trái dấu gán. Sau lệnh gán, giá trị cũ của biến bị mất, biến nhận giá trị mới.
6. Áp dụng
6.1. Bài toán. Viết chương trình cho máy nhận vào ba cạnh a, b, c của tam giác ABC. Tính diện tích tam
giác đó và tính độ dài từng đường cao của tam giác.
6.2 Thuật giải
Ta tính diện tích của tam giác theo ba độ dài của ba cạnh bằng công thức Hê Rông như sau đây.
Bước 1. Nhận vào số đo của ba cạnh a, b, c
Bước 2. Tính p = (a + b + c)/2.
Bước 3. Tính
Bước 4. Viết ra giá trị biến S
Bước 5. Viết ra giá trị biểu thức 2*S / a
Bước 6. Viết ra giá trị biểu thức 2*S / b
Bước 7. Viết ra giá trị biểu thức 2*S / c
Bước 8. Kết thúc.
6.3 Chương trình
Program TamGiac ;
Uses Crt ;
Var a, b , c , p, S : real ;
BEGIN
Clrscr ; Write (' Cho do dai ba canh cua tam giac ' : 65) ;
readln (a , b , c) ;
p := (a + b + c) / 2 ;
S := SQRT (p * (P – a) * (P – b) * (p - c))
writeln (' Dien tich la ' , S : 9 : 3) ;
S := 2 * S ; { Gan hai lan dien tich vao bien S de tinh duong cao }
writeln (' Duong cao qua canh ‘ , a : 0 :2 , ‘ la ‘ , S / a : 9 : 3) ;
writeln (' Duong cao qua canh ‘ , b : 0 :2 , ‘ la ‘ , S / b : 9 : 3) ;
writeln (' Duong cao qua canh ‘ , c : 0 :2 , ‘ la ‘ , S / c : 9 : 3) ;
Readln

END.
Bài tập
1. Lập chương trình tính chu vi và diện tích hình tròn theo bán kính r
2. Viết chương trình tính diện tích, thể tích hình cầu khi cho bán kính
3. Viết chương trình cho máy nhận vào ba cạnh a, b, c của tam giác ABC
4. a) Tính độ dài các đường trung tuyến của tam giác ABC.
b) Tính bán kính đường tṛn ngoại tiếp tam giác ABC.
5. Tính chu kì dao động của một con lắc đơn có chiều dài dây là l
6. Tính diện tích hình viên phân ứng với cung 120
o
khi máy nhận vào bán kính của đường tròn.
7. Tính chu vi và diện tích đa giác đều n cạnh nội tiếp đường tròn bán kính r
8. Biết cạnh huyền a, cạnh góc vuông b của tam giac vuông ABC. Tính bán kính đường tròn nội tiếp tam
giác đó.
9. Cho tam giác vuông ABC có góc A = 90
o
. Lập chương trình tính góc C, cạnh AC, cạnh AB khi cho
biết cạnh huyền BC và góc B (góc B, góc C tính bằng độ và phút).
10. Viết chương trình giải tam giác ABC khi biết góc A, góc B và cạnh c (các góc cho bằng độ và phút).
Những cấu trúc điều khiển cơ bản
Mục tiêu bài học:
- Nắm được cú pháp và ngữ nghĩa của các câu lệnh rẽ nhánh lặp.
- Biết vận dụng các câu lệnh này để giải các bài toán đơn giản.
Ta xét một số bài toán sau:
Bài toán 1: Giải phương trình bậc hai
Bài toán 2: Tính tổng S1 = 1 + 1/2 + 1/3 + 1/4 + 1/5 + ...
Yªu cÇu lµ qu¸ tr×nh tÝnh sÏ dõng l¹i khi 2 - s < 0,001.
Bài toán 3: Tính tổng S2 = 1 - 1/2 + 1/4 - 1/6 + ... - 1/102
Câu hỏi đặt ra là chỉ với những gì đã học ở bài trước, ta có thể đưa ra đáp án của các bài toán trên
không? Hãy cùng tìm hiểu bài học hôm nay để đưa ra câu trả lời.

1. Bài toán
Cho máy nhận vào ba số nguyên bất kì. Ba số đó có thể làm thành cấp số cộng không?(có thể sắp xếp lại thứ
tự của chúng).
2. Thuật giải
Bước 1. Nhận vào a, b, c;
Bước 2. Nếu a > b thì tráo đổi giá trị của a và b cho nhau;
Bước 3. Nếu b > c thì tráo đổi giá trị của b và c cho nhau;
Bước 4. Nếu a > b thì tráo đổi giá trị của a và b cho nhau;
Bước 5. Nếu b = (a + c) DIV 2 thì viết ra thông báo có là cấp số cộng
Còn ngược lại, viết ra thông báo không là cấp số cộng
Bước 6. Kết thúc.
3. Chương trình
Program CapSoCong ;
Uses crt;
Var a, b, c, tg : integer ;
BEGIN
clrscr; write ('Cho ba so a, b, c '); readln(a, b, c) ;
If a > b Then begin tg := a; a := b; b := tg end ;
If b > c Then begin tg := b ; b := c ; c := tg end ;
If a > b Then begin tg := a ; a := b ; b := tg end;
If b = (a + c) DIV 2 Then write (a , b : 4 , c : 4 , ' la cap so cong ')
else write (a , b : 4 , c : 4 , ' khong la cap so cong ') ;
Readln
End.
4. Giải thích chương trình
Trong chương trình trên có lệnh
If a > b Then begin tg := a ; a := b ; b := tg end; Đây là lệnh rẽ hai nhánh dạng khuyết.
Sơ đồ khối biểu diễn hoạt động của câu lệnh rẽ hai nhánh dạng khuyết.
Thực hiện câu lệnh này, đầu tiên máy kiểm tra điều kiện a > b nếu điều kiện đúng thì máy thực hiện câu lệnh
sau Then. Nếu điều kiện sai thì máy chuyển sang câu lệnh tiếp theo.

Câu lệnh sau Then là câu lệnh ghép begin tg := a ; a := b ; b := tg end;
Việc tráo đổi giá trị hai biến a và b phải thực hiện thông qua ba lệnh gán, mà sau từ khoá Then máy chỉ cho
viết một lệnh, nên ta phải đưa ba lệnh gán vào trong một lệnh ghép bắt đầu là từ khoá begin và kết thúc là từ
khoá end để máy coi đây là một lệnh.
Ta xem xét câu lệnh sau
If b = (a + c) DIV 2 Then write (a , b : 4 , c : 4 , ' la cap so cong ')
Else write (a , b : 4 , c : 4 , ' khong la cap so cong ') ;
Đây là lệnh rẽ hai nhánh dạng đầy đủ.
Thực hiện câu lệnh này, đầu tiên máy kiểm tra điều kiện b = (a +
c) DIV 2 nếu điều kiện đúng thì máy thực hiện câu lệnh sau
Then. Nếu điều kiện sai thì máy thực hiện câu lệnh sau else. Như
vậy thế nào cũng có một trong hai lệnh được thực hiện và chỉ một
mà thôi.
Chương trình trên liên quan đến biểu thức điều kiện.
Biểu thức điều kiện là biểu thức lôgic (boolean), nó chỉ nhận
giá trị hoặc true (đúng) hoặc false (sai), trong đó false < true.
Những mệnh đề điều kiện được diễn tả bởi những biểu thức lôgic.
- Biểu thức lôgic đơn
Biểu thức lôgic đơn là hai biểu thức cùng kiểu được nối với nhau
bởi một dấu quan hệ trong số các dấu quan hệ sau đây:
> (lớn hơn) , = (bằng) , < (nhỏ hơn), <> (khác) , >= (lớn
hơn hoặc bằng) , <= (nhỏ hơn hoặc bằng).
- Biểu thức lôgic phức hợp
Biểu thức lôgic phức hợp là một biểu thức lôgic trong đó có những phép toán lôgic AND, OR, NOT, ... trên
những biểu thức lôgic đơn.
5. Ghi nhớ
5.1. Lệnh ghép
Nếu trong chương trình ta viết nhiều hơn một lệnh thì các lệnh đó phải để trong cặp từ khoá BEGIN và END
và ta được một lệnh ghép.
5.2. Lệnh rẽ hai nhánh

a. Lệnh rẽ hai nhánh dạng khuyết
If điều kiện Then câu lệnh;
Nếu điều kiện đúng thì câu lệnh sau then được thực hiện.
Nếu điều kiện sai thì máy chuyển sang câu lệnh tiếp theo.
b. Lệnh rẽ nhánh dạng đầy đủ.
If điều kiện Then câu lệnh 1
Else câu lệnh 2 ;
Nếu điều kiện đúng thì câu lệnh 1 được thực hiện. Nếu điều kiện sai thì câu lệnh 2 được thực hiện. Chú ý sau
câu lệnh 1 không có dấu chấm phảy (;) vì câu lệnh này chỉ kết thúc sau câu lệnh 2.
Bài tập
1. Hãy lập bảng mô phỏng việc thực hiện chương trình giải phương trình bậc hai với các giá trị của a , b ,
c nhập vào như sau:
• lần thứ nhất a = 1, b = 14, c = 49
• lần thứ hai a = 1, b = -2, c = -15,
• lần thứ ba a = 2, b = 1, c = 3.
2. Viết chương trình cho máy nhận vào hai số nguyên bất kì. Sau đó máy hỏi tổng bình phương của
chúng là bao nhiêu? Nếu ta nạp đúng đáp số thì máy thông báo "Bạn đã làm đúng đáp số". Nếu sai máy thông
báo "Bạn làm sai rồi, đáp số là:" và máy cho hiện đáp số lên màn hình.
3. Viết thuật giải và chương trình giải phương trình bậc nhất ax + b = 0 với mọi số thực a, b.
4. Viết chương trình kiểm tra xem 1 năm nào đó có là năm nhuận không? Chú ý. Năm nhuận là bội của 4
trừ những năm bắt đầu thế kỉ như 1900, 2000, ... những năm này chỉ nhuận khi nó chia hết cho 400.
Lệnh rẽ nhiều nhánh
1.Tình huống công việc
Lịch làm việc trong tuần của đội dự tuyển thi học sinh giỏi Tin học. Biết rằng từ thứ 2 đến thứ 4 họ luyện tập. Thứ
5 họ được nghỉ. Thứ 6 họ thi đấu với các đội bảng A của các tỉnh. Thứ 7 họ được nghỉ. Lập chương trình để một
người muốn xem công việc của một ngày nào đó trong tuần, họ gõ vào một phím trong số các phím kí tự chữ số từ
2 đến 7, máy thông báo lên màn hình công việc của ngày đó.
2. Thuật giải
Biến kí tự thu ;
Bắt đầu

Nhận vào (thu) ;
CHỌN theo thu thuộc
‘2’ .. ‘4’ : Viết ra thông báo luyện tập ;
‘6’ : Viết ra thông báo thi chọn đội tuyển ;
‘5’ , ‘7’ : Viết ra thông báo nghỉ
CÒN Thông báo thu không thuộc vào tập ‘2’ đến ‘7’
X. CHỌN ; Kết thúc.
3. Chương trình
Program xemlichdoituyen ;
Uses crt ;
var thu : Char ;
BEGIN
Clrscr ; Gotoxy (9,4);
Writeln('Ban xem thu may trong tuan ? 2/3/4/5/6/7 ');
thu := Readkey ;
Case thu Of
'2' .. '4' : writeln('Thu', thu:3,'luyen tap':11);
'6' : begin Window (26,4,52,20);
clrscr ; gotoxy(9,4);
writeln(' Thu 6 thi dau voi cac doi ',
bang A cua cac tinh chon doi tuyen. ')
end;
'5', '7' : writeln ('Thu', thu:3 , 'nghi':6)
else Writeln('Ban go ra ngoai cac phim ‘, ‘tu 2 den 7 moi ban go lai ');
End;
writeln(' Chao tam biet ban ');readln;
End.
4. Ghi nhớ
4.1. Kiểu kí tự
a. Những khái niệm

Tên chuẩn của kiểu kí tự là CHAR ;
b. Một số hàm
ORD (X) cho mã ASCII của X. Ví dụ Ord (‘a’) = 97
SUCC (X) cho kí tự đứng liền sau X. Ví dụ Succ (‘D’) = ‘E’
PRED (X) cho kí tự đứng liền trước X. Ví dụ Succ (‘E’) = ‘D’
UPCASE (X) cho kí tự viết hoa của X. Ví dụ Upcase (’a’) = ‘A’
(Không có hàm chuẩn đổi kí tự viết hoa sang kí tự viết thường)
CHR (n) cho kí tự có mã ASCII bằng n. Ví dụ Chr (65) = ‘A’
#n cho kí tự có mã ASCII bằng n. Ví dụ #65 = ‘A’. Viết #n thì không được có dấu cách giữa # và n (n phải là
một số cụ thể).
Readkey. Hàm này nhận một kí tự từ bàn phím và không đưa ra màn hình, không chờ gõ phím ENTER vì
phím này cũng là một đối tượng được nhận vào qua hàm này.
4.2. Lệnh rẽ nhiều nhánh
CASE biểu thức OF
nhãn 1 : lệnh 1 ; nhãn 2 : lệnh 2 ;
{ . . . . . . . . . . . . ; }
nhãn n : lệnh n
ELSE lệnh n+1
END ;
Nhãn của lệnh CASE và biểu thức lựa chọn phải tương thích về kiểu và phải là kiểu vô hướng (trừ kiểu số
thực).
Kết thúc lệnh CASE là END với dấu chấm phẩy (;) hoặc không có dấu chấm phẩy (;) nếu liền ngay sau đó
lại có từ khoá ELSE của đoạn lệnh khác. Trước ELSE không có dấu chấm phẩy (;).
Bài tập
1. Lập trình để thông báo những mốc lịch sử của nước ta từ năm 1945 đến nay, khi một người gõ vào
một số có hai chữ số là hai chữ số sau cùng chỉ năm từ 1945 đến 1995 thì máy thông báo lên màn hình sự kiện
lịch sử đáng ghi nhớ của dân tộc Việt Nam. Chẳng hạn 45 Cách mạng tháng 8 thắng lợi. Từ 46 đến 54 Kháng
chiến chống Pháp. Từ 55 đến 74 đánh Mỹ. 75 thống nhất đất nước. 76 đến 95 cả nước đi lên CNXH.
2. Giả sử hôm nay là thứ ba. Lập chương trình để ta nhập vào từ bàn phím số ngày tiếp theo thì máy sẽ
trả lời hôm đó là thứ mấy.

3. Viết chương trình theo yêu cầu dưới đây: Khi chạy chương trình trên màn hình xuất hiện năm dòng
chữ như sau:
1 Tim so be nhat trong ba so
2 giai phuong trình ax + b = 0
3 Tinh a mu x
4 Tinh logarit co so a cua x
Bạn chọn công việc nào thì gõ vào phím số bên cạnh.Khi người ta gõ vào phím nào thì yêu cầu họ vào dữ liệu
cần thiết để đưa lên màn hình kết quả tương ứng. Ví dụ người gõ vào số 2 thì hỏi giá trị của hệ số a và hệ số b
rồi viết lên màn hình thông báo nghiệm của phương trình.
Lặp với điều kiện trước và sau
1. Bài toán
Lãi suất hàng tháng gửi tiết kiệm không kì hạn là 0,75%. Một người gửi vào một số tiền ban đầu là a. Sau bao
nhiêu tháng người đó đạt số tiền không nhỏ hơn b?
2. Thuật giải
Để tính tiền lăi sau một tháng ta lấy số tiền hiện có lŕ A nhân với 0,75%. Ta có giá trị của biểu thức A *
0.0075 lŕ tiền lãi sau một tháng. Như vậy sau một tháng người đó có số tiền là A + A*0.0075
2.1 Thuật giải lặp với số lần định trước
3. Ghi nhớ
3.1. Khai báo hằng
CONST tên hằng = giá trị của hằng ;
Tên hằng tiếp đến là dấu bằng (=) rồi giá trị của hằng và kết thúc là dấu chấm phẩy(;).
3.2. Lặp với điều kiện trước và sau
a. Lệnh lặp với điều kiện trước
- Cách viết WHILE điều kiện DO câu lệnh;
- Thực hiện
Máy kiểm tra điều kiện nếu điều kiện đúng thì câu lệnh được thực hiện. Thực hiện xong câu lệnh này, máy
lại quay về kiểm tra điều kiện và quá trình lặp đi lặp lại cho tới khi điều kiện sai thì ra khỏi vòng lặp.
b. Lệnh lặp với điều kiện sau
- Cách viết REPEAT các câu lệnh UNTIL điều kiện;
- Thực hiện

Máy thực hiện các câu lệnh giữa REPEAT và UNTIL, sau đó mới kiểm tra điều kiện. Nếu điều kiện sai thì
máy lặp lại các câu lệnh trên. Quá trình lặp đi, lặp lại cho tới khi điều kiện đúng thì ra khỏi vòng lặp.
Ta có thể tóm tắt câu lệnh lặp với điều kiện sau trong mệnh đề sau: chừng nào điều kiện còn sai thì câu lệnh
còn được thực hiện.
4. Áp dụng
a.Bài toán.
Tìm ước chung lớn nhất của hai số nguyên dương m và n.
b. Thuật giải
Ta dùng ngôn ngữ giả mã lệnh để viết thuật giải theo tinh thần trên.
Biến nguyên không âm m , n ;
Bắt đầu
Lặp
Nhận vào ( m , n ) ;
Nếu ( m= 0 ) hoặc ( n = 0 ) Thì thông báo mời vào lại
X.nếu ;
Đến ( m > 0 ) vŕ ( n >0 ) ;
Khi m <> n Lŕm Nếu m > n Thě m := m – n
Còn n := n – m ;
X. nếu ;
X.khi ;Thông báo đáp số là m ;
Kết thúc.
c. Chương trình
Program UCLN;
Uses Crt ;
Var m , n : Word ;
BEGIN
writeln ( ' cho 2 so nguyen duong ' ) ;
Repeat
Readln( m , n ) ;
If ( m = 0 ) or ( n = 0 ) Then Writeln ( ' moi vao lai ' ) ;

Until ( m > 0 ) and ( n > 0 ) ;
While m <> n DO
If m > n Then m := m - n
Else n := n – m ;
Write ( ' UCLN cua chung la ' , m ) ;
Readln
END.
Bài tập
1. Lập bảng mô phỏng việc thực hiện chương trình tìm UCLN của hai số nguyên dương (áp dụng 1) với
m = 10, n = 16.
2. Chương trình sau đây đưa lên màn hình kết quả như thế nào?
Program khongten ;
Uses Crt ;
Var i : integer ;
BEGIN
ClrScr ; i := 15 ;
While i > 1 do
begin
if i mod 2 = 0 Then i := i div 2
else i := i*3 +1 ;
Write ( i : 5 ) ;
end;
Readln
END
3. Viết chương trình tính tổng của các số khác không được nhập vào từ bàn phím. Điều kiện kết thúc là
khi máy nhận được số 0.
4. Viết chương trình tính hai hình chiếu của hai cạnh góc vuông trên cạnh huyền của tam giác vuông khi
cho máy nhận vào từ bàn phím cạnh huyền a và chiều cao h thuộc cạnh huyền của tam giác vuông đó.
Yêu cầu có một đoạn chương trình nhận vào a và h có kiểm tra điều kiện h <= a/2.
5. Tính tổng

A. S1 = 1 + 1/2 + 1/3 + 1/4 + 1/5 + ... Yêu cầu là quá trình tính sẽ dừng lại khi 2 - s < 0,001.
B. S2 = 1 - 1/2 + 1/4 - 1/6 + ... - 1/102
C. S3 = 1! +2! +3! + ... +10!
D. S4 = 1 - 1/3 + 1/5 - 1/7 + ... + 1/n với điều kiện 1/ n < 0.0001
6. Nhận vào số tự nhiên n lớn hơn 100 và nhỏ hơn 60000.
Tính số chữ số và tổng các chữ số của n.
Giải phương trình 1/x - sinx = 0 trên [ p/2, p ]. Với sai số 0,0001.
Lặp một số lần định trước
. Bài toán
Trong đợt quyên góp sắt vụn để gây quĩ giúp các bạn nghèo có hoàn cảnh khó khăn, tổ 3 có 12 bạn, mỗi bạn
nộp một khối lượng sắt vụn nào đó tính bằng kg. Viết chương trình cho máy nhận vào khối lượng sắt vụn của
từng bạn và tính tổng khối lượng sắt vụn của cả 12 bạn trong tổ.
2. Thuật giải
Ta dùng ngôn ngữ giả mã lệnh để viết thuật giải cho bài toán theo ý tưởng đã nói ở trên như sau:
Biến thực S , X ; Biến nguyên K ;
Bắt đầu
S := 0 ;
Với K := 1 đến 12 Làm nhận vào ( X ) ; S := S + X
X.với ;
Thông báo S ;
Kết thúc.
3. Chương trình
Program SatVun ;
Uses Crt ;
Var S , X : Real ; K : byte ;
BEGIN
ClrScr ; S := 0 ;
Writeln ( ‘ Nap vao khoi luong sat vun cua tung nguoi ‘ : 55 ) ;
For K := 1 TO 12 DO
Begin

Write ( ‘ Nhap KLSV cua ban thu ‘ , k , ‘=’ ) ;
Readln ( X ) ; S := S + X
End ;
Writeln ( ‘ Dap so ‘ , S : 9 : 2 ) ; Readln
END .
4. Ghi nhớ
4.1 Lặp với số lần định trước
a. Lặp với số lần định trước theo chiều tăng của biến điều khiển chu trình
FOR tên biến := biểu thức 1 TO biểu thức 2 DO câu lệnh ;
Máy kiểm tra điều kiện biểu thức 1 không lớn hơn biểu thức 2, nếu điều kiện đó đúng thì máy lưu giữ giá trị của
biểu thức 2 vào vùng đệm rồi biến điều khiển nhận giá trị của biểu thức 1 và máy thực hiện câu lệnh sau DO .
- Sau đó máy kiểm tra điều kiện biến điều khiển bằng giá trị của biểu thức 2 đã cất giữ. Nếu điều kiện này sai thì
nó nhận giá trị tiếp theo giá trị hiện tại và thực hiện câu lệnh sau DO, quá trình này được lặp đi lặp lại đến khi thực
hiện xong lệnh sau DO mà biến điều khiển có giá trị bằng giá trị của biểu thức 2 đã cất giữ thì vòng lặp kết thúc.
b. Lặp với số lần định trước theo chiều giảm của biến điều khiển chu trình
FOR tên biến := biểu thức 1 DOWNTO biểu thức 2 DO câu lệnh ;
Thực hiện giống như lệnh trên, chỉ khác là biến điều khiển nhận giá trị giảm dần chứ không phải tăng dần.
c. Kiểu của biến và biểu thức ở vòng For
Thực hiện giống như lệnh trên, chỉ khác là biến điều khiển nhận giá trị giảm dần chứ không phải tăng dần.
c. Kiểu của biến và biểu thức ở vòng For
Biến điều khiển chu trình, biểu thức 1, biểu thức 2 phải tương thích về kiểu, kiểu này phải lấy trong kiểu dữ liệu
vô hướng ( trừ kiểu số thực)
Ta có thể cho dừng vòng lặp bằng lệnh BREAK. Trong thân vòng lặp nếu gặp lệnh Break thì vòng lặp dừng
ngay tức khắc.
5. Áp dụng
5.1 Áp dụng 1
a. Bài toán
Cho máy nhận vào n số thực. Tính biểu thức P / (1 + Q ) trong đó P là tổng của các số không vượt quá a, Q
là tổng các số lớn hơn a.
b. Thuật giải

Hằng thực có giá trị bằng 20.02 a ;
Hằng nguyên có giá trị bằng 15 n ;
Biến thực p , q , x ;
Biến nguyên k ;
Bắt đầu
p := 0 ; q := 0 ;
Với k := 1 đến n làm Nhận vào ( x) ;
Nếu x <= a thì P := p + x
còn q := q + x ;
X. nếu ; X. với ; Viết ra giá trị biểu thức ( p / ( 1 + q ) ) ; Kết thúc.
5.2. Áp dụng 2
a. Bài toán
Viết chương trình giải bài toán 100 con trâu 100 bó cỏ, một con trâu đứng ăn 5 bó cỏ một con trâu nằm ăn 3 bó cỏ
, 3 con trâu già ăn 1 bó cỏ. Hỏi mỗi loại trâu có mấy con? .
b. Thuật giải
Ta dùng giả mã lệnh để viết như sau:
Biến nguyên không âm td , tn ;
Bắt đầu
Với td := 0 đến 20 Làm
Với tn := 0 đến 33 Làm
Nếu 5*td+3*tn+(100-td-tn) div 3 =100 và (100-td-tn) mod 3 = 0
Thì viết ra ( td , tn , 100-td-tn ) ;
X.nếu ;
X.với ;
X.với
Kết thúc.
Bài tập
1. Thực hiện ba yêu cầu sau đây:
a. Thuật giải sau đây làm công việc gì?
Thuật giải không tên ;

Biến nguyên i ,j ;
Bắt đầu
Với i := 1 đến 9 Làm
Với j := 0 đến 9 Làm viết ra ( i :4 , j )
X.với j ;
X.với i ;
Kết thúc.
b. Hãy chuyển thuật giải trên thành chương trình Pascal và cho chạy chương trình.
c. Hãy lập bảng mô phỏng việc thực hiện chương trình trên.
2. Hãy lập bảng mô phỏng việc thực hiện chương trình trên.
3. Viết chương trình giải bài toán: Vừa gà vừa chó bó lại cho tròn 36 con 100 chân chẵn. Hỏi có mấy
con chó, mấy con gà?
4. Viết chương trình để MTĐT nhận vào 10 số thực bất kì ( mỗi lần chỉ nhận một số). Sau 10 lần
nhận vào máy thông báo số bé nhất, lớn nhất, trung bình cộng của chúng.
5. Viết chương trình để MTĐT tìm tất cả các số tự nhiên có ba chữ số. Biết rằng số đó chia cho 6 dư
2 và tổng các chữ số của nó bằng 20.
6. Viết chương trình cho MTĐT in ra màn hình các số có bốn chữ số mà tổng các chữ số hàng trăm
và hàng ngàn bằng tổng các chữ số hàng chục và hàng đơn vị. Yêu cầu in từng trang màn hình.
7. Cho một số tự nhiên n lớn hơn 5.
a. Tìm các số tự nhiên x, y, z sao cho n = x
3
+ y
3
+ z
3
b.Tìm các số tự nhiên x, y, z, t sao cho n = x
2
+ y
2
+ z

2
+t
2
c. Hãy tìm tất cả các bộ 5 số tự nhiên x1, x2, x3, x4, x5 sao cho số sau không nhỏ hơn số trước và tổng của chúng
bằng n.
8. Tìm các nghiệm nguyên dương của phương trình:
a. 2x + 4y = 100.
b. 3x + 5y = n với n > 7 c. Tổng quát ax + by = c với a, b, c là những số nguyên dương.
Mảng
Mục tiêu bài học:
- Biết khai báo với mảng 1 chiều, 2 chiều.
- Biết phân biệt địa chỉ ô nhớ và nội dung ô nhớ. Biết sử dụng vòng lặp để truy nhập
đến địa chỉ từng phần tử để nhập thông tin.
- Biết xử lý trên 1 số dòng 1 số cột của mảng 2 chiều sắp xếp được mảng 1 chiều có
thể lấy ví dụ về mảng nhiều chiều.
Ta có bài toán sau
Trong đợt quyên góp sắt vụn để gây quĩ giúp các bạn nghèo có hoàn cảnh khó khăn, tổ 3 có 12 bạn, mỗi bạn
nộp một khối lượng sắt vụn nào đó tính bằng kg . Viết chương trình cho máy nhận vào khối lượng sắt vụn của
từng bạn và tính tổng khối lượng sắt vụn của cả 12 bạn trong tổ. Tính xem có bao nhiêu bạn nộp nhiều nhất?

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×