Khái niệm: Thuật toán là một dãy hữu hạn các thao tác, được sắp xếp theo một trình tự xác định, sao cho từ Input của bài toán ta xác định được Output cần tìm.. Tính phổ dụng: Thuật toán
Trang 1CHƯƠNG I THUẬT TOÁN
I Khái niệm thuật toán
1 Khái niệm: Thuật toán là một dãy hữu hạn các thao tác, được sắp xếp theo một trình
tự xác định, sao cho từ Input của bài toán ta xác định được Output cần tìm.
2 Ví dụ: Một hộp kín chứa hữu hạn các viên bi có kích thước khác nhau Hãy tìm
thuật toán tìm ra viên bi lớn nhất, biết rằng mỗi lần chỉ được bốc một viên
Thuật toán được trình bày như sau:
Bước 1: Bốc một viên bất kỳ
Bước 2: Kiểm tra xem hộp đã rỗng chưa?
Nếu đúng chuyển qua bước 4
Nếu sai chuyển qua bước 3
Bước 3: Bốc tiếp một viên bi khác, so sánh hai viên và giữ lại viên lớn rồi chuyễnqua bước 2
Bước 4: Viên bi hiện tại là viên bi lớn nhất, kết thúc
II Các tính chất của thuật toán.
1 Tính phổ dụng: Thuật toán không chỉ để giải quyết một bài toán riêng lẽ mà được
dùng để giải quyết một lớp các bài toán (có thể la vô hạn), các bài toán cùng loại
2 Tính hữu hạn: Thuật toán phải được kết thúc sau một số hữu hạn bước thực hiện
các thao tác.Một thuật toán không có tính hữu hạn là không khả thi
3 Tính xác định: Thuật toán đòi hỏi mỗi bước thao tác phải rõ ràng và xác định một
cách đơn trị bước tiếp theo
4 Tính hiệu quả: Thể hiện ở các yêu cầu sau:
- Tính đúng đắn
- Tính tối ưu: Tiết kiệm thời gian thực hiện, tiết kiệm bộ nhớ
III Các đại lượng của thuật toán.
1 Đại lượng vào: Là những đại lượng cho trước làm cơ sở cho việc hình thành nên
bài toán
2 Đại lượng ra: Thường là kết quả sau khi đã thực hiện xong thuật toán và đó cũng
chính là yêu cầu của bài toán
3 Đại lượng trung gian: Là các đại lượng tham gia vào quá trình để giải bài toán
nhưng không phải là đại lượng vào mà cũng chẳng phải là đại lượng ra
Ví dụ: Bài toán giải phương trình bậc hai: ax2 + bx + c = 0 (a ≠ 0)
Đại lượng vào là các hệ số a,b,c
Đại lượng ra là: hoặc là nghiệm kép, hoặc là hai nghiệm phân biệt nhưng cũng cókhi là một câu thông báo vô nghiệm
Đại lượng trung gian: delta = b2 – 4ac
1
Trang 24 Hằng, biến, kiểu:
Để biểu diễn các đại lượng nêu trên của thuật toán ta sử dụng các hằng, biến và phải
có kiểu dữ liệu nhất định
- Hăng: Là đại lượng không thay đổi trong quá trình thực hiện thuật toán.
- Biến: Là đại lượng có thể thay đổi giá trị trong quá trình thực hiện thuật
toán
- Kiểu: Là tập hợp các giá trị (miền trị) mà các đại lượng cóthể nhận, đồng
thời với việc quy định các phép toán tác động trên đó
IV Biểu diễn của thuật toán
1 Các dạng biểu diễn của thuật toán: Có thể biểu diễn thuật toán bằng 3 dạng sau:
- Liệt kê các bước (như ở ví dụ 1)
- Cấu trúc theo ngôn ngữ quy ước của thuật toán
- Sơ đồ khối
2 Biểu diễn thuật toán bằng sơ đồ khối: Đây là dạng biểu diễn có cấu trúc trực
quan, rõ ràng
a Các kí hiệu dùng để biểu diễn thuật toán:
Dùng để chỉ sự bắt đầu và kết thúc của thuật toán
Dùng để chỉ việc nhập dữ liệu và ghi dữ liệu ra màn hình
Dùng để biểu diễn các thao tác của thuật toán
Dùng để kiểm tra điều kiện
Dùng để hướng đi của thuật toán
Ngoài ra ta còn sử dụng ký hiệu := để biểu diễn cho việc gán giá trị cho các biến
Trang 3Ví dụ 2: Sơ đồ thuật toán để giải bài toán tính tổng:
T
Trang 4BÀI TẬP CHƯƠNG I Bằng phương pháp dùng sơ đồ khối, trình bày thuật toán giải các bài toán sau đây:
1 Tính S = 1 + 2 + 3 + … + n.
2 Tính S = 1 – 2 + 3 - … + (-1)n-1n
3 Giải phương trình bậc 2: ax2 + bx + c = 0 (a ≠ 0)
4 Tìm ước chung lớn nhất của hai số nguyên dương
5 Tìm bội chung nhỏ nhất của hai số nguyên dương
6 Kiểm tra một số nguyên dương có phải là một số nguyên tố hay không
BeginNhâp nS:=0; i:=1
Trang 5CHƯƠNG II
CÁC KIẾN THỨC CHUNG VỀ NGÔN NGỮ LẬP TRÌNH PASCAL
Pascal là một ngôn ngữ lập trình bậc cao do Niklaus Wirth, giáo sư điện toán trườngĐại học kỹ thuật Zurich (Thụy Sĩ) đề xuất năm 1970 Ông lấy tên Pascal để kỷ niệm nhàtoán học và nhà triết học người Pháp nổi tiếng Blaise Pascal
I Các tập tin cần thiết khi lập trình với Turbo Pascal
Để lập trình được với Turbo Pascal, tối thiểu cần 2 file sau:
• TURBO.EXE: Dùng để soạn thảo và dịch chương trình.
• TURBO.TPL: Thư viện chứa các đơn vị chuẩn để chạy với TURBO.EXE.
Ngoài ra, muốn lập trình đồ hoạ thì phải cần thêm các tập tin:
• GRAPH.TPU: Thư viện đồ hoạ.
• *.BGI: Các file điều khiển các loại màn hình tương ứng khi dùng đồ hoạ.
• *.CHR: Các file chứa các font chữ đồ họa.
II Các bước cơ bản khi lập một chương trình Pascal
1 Các bước lập trình tổng quát:
Bước 1: Phân tích bài toán; Xác định dữ liệu vào, dữ liệu ra làm cơ sở cho việc hình
thành giải thuật
Bước 2: Xây dựng thuật toán: Trên cơ sở xác định dữ liệu vào, ra; các giả thiết của
bài toán, các mối liên hệ giữa chúng và những kiến thức liên quan ta cần đưa ra thuậttoán tương ứng
Bước 3: Tổ chức dữ liệu và lập chương trình theo thuật toán đã đè ra.
2 Các bước lập trình và thực hiện (với Turbo Pascal):
Bước 1: Khởi động Turbo Pascal (Turbo exe)
Bước 2: Soạn thảo chương trình.
Bước 3: Biên dịch (Nhấn tổ hợp phím ALT – F9).
+ Nếu thành công thì chuyễn qua bước 4
+ Nếu không thành công chuyễn qua bước 2
Bước 4: Chạy thử chương trình.
+ Nếu tốt chuyễn qua bước 5
+ Nếu chưa tốt thì quay về bước 2
Bước 5: Ghi vào đĩa, dịch thành file *.exe.
Bước 6: Kết thúc.
III Một số phím chức năng thường dùng
• F2: Lưu chương trình đang soạn thảo vào đĩa
5
Trang 6• F3: Mở file mới hoặc file đã tồn tại trên đĩa để soạn thảo.
• Alt-F3: Đóng file đang soạn thảo.
• Alt-F5: Xem kết quả chạy chương trình.
• F8: Chạy từng câu lệnh một trong chương trình
• Alt-X: Thoát khỏi Turbo Pascal
• Alt-<Số thứ tự của file đang mở>: Dịch chuyển qua lại giữa các file đang mở.
• F10: Vào hệ thống Menu của Pascal
IV.Các thao tác cơ bản khi soạn thảo chương trình
IV.1 Các phím thông dụng
• Insert: Chuyển qua lại giữa chế độ đè và chế độ chèn.
• Home: Đưa con trỏ về đầu dòng.
• End: Đưa con trỏ về cuối dòng.
• Page Up: Đưa con trỏ lên một trang màn hình.
• Page Down: Đưa con trỏ xuống một trang màn hình.
• Del: Xoá ký tự ngay tại vị trí con trỏ.
• Back Space (): Xóa ký tự bên trái con trỏ.
• Ctrl-PgUp: Đưa con trỏ về đầu văn bản.
• Ctrl-PgDn: Đưa con trỏ về cuối văn bản.
• Ctrl-Y: Xóa dòng tại vị trí con trỏ.
IV.2 Các thao tác trên khối văn bản
• Chọn khối văn bản: Shift + <Các phím ←↑→↓>
• Ctrl-KY: Xoá khối văn bản đang chọn
• Ctrl-Insert: Đưa khối văn bản đang chọn vào Clipboard
• Shift-Insert: Dán khối văn từ Clipboard xuống vị trí con trỏ.
V Các khái niệm và các thành phần cơ bản
1 Bộ ký tự (Dùng để soạn thảo chương trình)
Bao gồm các loại ký tự sau đây:
Các chữ cái: a z; A Z (Khi soạn thảo chương trình, Turbo Pascal khôngphân biệt chữ hoa hay chữ thường)
Trang 7b Từ khoá: Là từ dành riêng của Pascal với chức năng và cú pháp được quy định
sẵn Vì vậy khi sử dụng phải theo đúng quy định và không được sử dụng các từ khoá vào các công việc khác
Ví dụ: Begin, end, if, then, const, var, function,…
3 Tên và tên chuẩn
a Tên: Là một từ bao gồm tối đa 255 ký tự, chỉ được lấy trong các chử cái, chử số và
dấu gạch nối, nhưng không được bắt đầu bằng số Tên dùng để đặt cho các đối tượng trong chương trình như hằng, biến, hàm, thủ tục, kiểu dữ liệu,…
b.Tên chuẩn: Là tên mà Turbo Pascal đã định sẵn để chỉ các hàm, hằng, biến, thủ tục
thư viện của nó
VI Cấu trúc chung của một chương trình Pascal
{ Phần tiêu đề }
PROGRAM Tên_chương_trình;
{ Phần khai báo và định nghĩa}
USES ;
CONST .;
TYPE ;
VAR .;
PROCEDURE .;
FUNCTION ;
{ Phần thân chương trình } BEGIN
END.
1 Phần tiêu đề:
Từ khoá để khai báo là Program tiếp đến là tên của chương trình do người dùng tự đặt Phần này không bắt buộc phải có
2 Phần khai báo và định nghĩa:
Uses: Dùng để khai báo các Unit (đơn vị chương trình) của Turbo Pascal Nếu có
nhiều Unit thì sử dụng dấu phẩy “,” để ngăn cách
Const: Dùng để khai báo các hằng.
Cú pháp: Tên_hằng = Giá trị
Type: Dùng để định nghĩa các kiểu dữ liệu của người dùng.
Cú pháp: Tên_kiểu = định nghĩa cụ thể cho từng kiểu
Var: Khai báo biến.
Cú pháp: Tên_biến: Kiểu_dữ liệu;
(Hoặc khai báo trực tiếp không thông qua kiểu.)
Nếu có nhiều biến cùng kiểu thì sử dụng dấu phẩy “,” để ngăn cách
Procedure: Định nghĩa chương trình con dạng thủ tục.
Function: Định nghĩa chương trình con dạng hàm
7
Trang 83 Phần thân chương trình: Được bắt đầu bằng từ khoá “Begin” và kết thúc bởi từ khoá
“End” Giữa cặp từ khoá này có các câu lệnh của chương trình
Trang 9CHƯƠNG III
CÁC KIỂU DỮ LIỆU ĐƠN GIẢN
I Tổng quan về các kiểu dữ liệu trong Turbo Pascal
Các kiểu dữ liệu trong Turbo Pascal được chia làm hai loại:
- Các kiểu dữ liệu đơn gian
- Các kiểu dữ liệu co cấu trúc
1 Các kiểu dữ liệu đơn giản gồm:
Kiểu do người dung định nghĩa:
- Kiểu đoạn con
- Kiểu liệt kê
2 Các kiểu dữ liệu có cấu trúc:
Miền trị: Chỉ có hai giá trị là True và False
Các phép toán: AND, OR, NOT, XOR.(Xem bảng dưới đây)
Các phép toán: phép so sánh (=, <, >)
Trong Pascal, khi so sánh các giá trị boolean ta tuân theo qui tắc: FALSE < TRUE.Giả sử A và B là hai giá trị kiểu Boolean Kết quả của các phép toán được thể hiện quabảng dưới đây:
9
Trang 102 Kiểu số nguyên
2.1 Các kiểu số nguyên
• Có 5 kiểu số nguyên:
Miền trị của các kiểu đó như sau:
+, -, *, / (phép chia cho ra kết quả là số thực).
Phép chia lấy phần nguyên: DIV (Ví dụ : 34 DIV 5 = 6).
Phép chia lấy số dư: MOD (Ví dụ: 34 MOD 5 = 4).
2.2.2 Các phép toán xử lý bit:
Trên các kiểu ShortInt, Integer, Byte, Word có các phép toán:
• NOT, AND, OR, XOR
Trang 11Chú ý: Các kiểu số thực Single, Double và Extended yêu cầu phải sử dụng chung với bộ
đồng xử lý số hoặc phải biên dich chương trình với chỉ thị {$N+} để liên kết bộ giả lập
Nếu một số < -max hoặc > max thì sẽ không biểu diễn được và xem như là tràn số
Nếu một số <-min nhỏ hơn 0 hoặc lớn hơn 0 nhỏ hơn min thì được xem như là 0
(2) Chế độ mặc định của TurboPascal là chỉ cho phép làm việc với kiểu số thựcREAL Muốn sử dụng các kiểu khác ta vào bảng chọn OPTION -> COMPILER->NUMERIC PROCESING rồi đánh dấu [x] vào mục 8087/80287
(3) Trong máy tính số thực được biểu diễn dưới hai dạng:
- Để biểu diễn một ký tự, ta có thể sử dụng một trong số các cách sau đây:
• Đặt ký tự trong cặp dấu nháy đơn Ví dụ 'A', '0'
• Dùng hàm CHR(n) (trong đó n là mã ASCII của ký tự cần biểu diễn) Ví dụCHR(65) biễu diễn ký tự 'A'
• Dùng ký hiệu #n (trong đó n là mã ASCII của ký tự cần biểu diễn) Ví dụ #65
- Phép so sánh: Muốn so sánh hai ký tự ta so sánh các mã ASCII tương ứng của chúng,
ký hiệu nào có mã ASCII lớn hơn được xem là lớn hơn Ví dụ: ‘a’ > ’A’ Vì 97 > 65
Chú ý: Một kiểu dữ liệu được gọi là vô hướng đếm được nếu miền trị của nó là một tập
hợp đếm được và trên đó tồn tại quan hệ thứ tự Ví dụ: Kiểu Byte; kiểu Integer; kiểuChar; kiểu Boolean…
11
Trang 12III Kiểu liệt kê và kiểu đoạn con
1 Kiểu liệt kê:
a Định nghĩa kiểu và khai báo biến:
Định nghĩa kiểu:
Type ten_kieu = (Danh sách các giá trị);
Giải thích:
Ten_ kieu ký hiệu cho tên kiểu do người dung tự đặt
Danh sách các giá trị là tập hợp các giá trị được phân cách bởi dấu phẩy “,”
Khai báo biến:
Var ten_bien : ten_kieu;
Giải thích:
ten_bien ký hiệu cho tên biến do người dùng tự đặt
ten_kieu đã được khai báo;
Ví dụ:
Type ngay = (sun, mon, tue, wed, thu, fri, sat);
Cviec = (dihoc, dilam, thuchanh, nghi);
Var hqua, hnay: ngay;
Viec: cviec;
Cũng có thể khai báo biến kiểu liệt kê trực tiếp mà không cần khai báo kiểu
Ví dụ: var gioitinh: (nam, nu);
Mau: (xanh, do, tim, vang);
b Các tác động lên dữ liệu kiểu liệt kê:
• Có thể thực hiện phép gán giá trị cho biến
•
• Phép so sánh: Giá trị liệt kê trong danh sách đi trước được xem là bé hơn giá trị
sau
Trang 13c Chú ý:
- Không thể nhập, xuất với dữ liệu kiểu liệt kê
- Giá trị kiểu liệt kê thường được dùng để làm chỉ số cho lệnh lặp for, các trườnghợp chọn lựa trong lệnh Case, hoặc chỉ số cho mảng
2 Kiểu đoạn con:
a Định nghĩa kiểu và khai báo biến:
Định nghĩa kiểu:
Type ten_kieu = hang duoi hang tren;
Giải thích:
Ten_ kieu ký hiệu cho tên kiểu do người dung tự đặt
Hang_duoi tức là ký hiệu giá trị hằng cận dưới, hang tren tức là ký hiệu giá trị
hằng cận trên tất nhiên là hang tren >= hang duoi và phải có cùng kiểu vô hướng
đếm được
Khai báo biến:
Var ten_bien : ten_kieu; ( Tên kiểu đã được khai báo)
SIN(x): Trả về sin(x) theo radian
COS(x): Trả về cos(x) theo radian
ARCTAN(x): Trả về arctang(x) theo radian
LN(x): Trả về ln(x)
EXP(x): Trả về ex
TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé hơn x
INT(x): Trả về phần nguyên của x
FRAC(x): Trả về phần thập phân của x
ROUND(x): Làm tròn số nguyên x
PRED(n): Trả về giá trị đứng trước n
SUCC(n): Trả về giá trị đứng sau n
ODD(n): Cho giá trị TRUE nếu n là số lẻ
INC(n): Tăng n thêm 1 đơn vị (n:=n+1) I:= i+1 hoac i:= inc(i)
DEC(n): Giảm n đi 1 đơn vị (n:=n-1) I:=i-1 hoac i:= dec(i)
13
Trang 142.Các hàm trên kiểu ký tự:
- UPCASE(ch): Trả về ký tự in hoa tương ứng với ký tự ch Ví dụ: UPCASE('a') = 'A'.
- ORD(ch): Trả về số thứ tự trong bảng mã ASCII của ký tự ch Ví dụ ORD('A')=65.
- CHR(n): Trả về ký tự tương ứng trong bảng mã ASCII có số thứ tự là n Ví dụ:
CHR(65)='A'
- PRED(ch): cho ký tự đứng trước ký tự ch Ví dụ: PRED('B')='A'.
- SUCC(ch): cho ký tự đứng sau ký tự ch Ví dụ: SUCC('A')='B'.
Chú ý: Một kiểu dữ liệu gọi là vô hướng đếm được nếu miền trị của nó là một tập
hợp đếm được và trên đó tồn tại quan hệ thứ tự Ví dụ: Kiểu Byte, Kiểu Integer; KiểuChar, Kiểu Boolean…
BÀI TẬP CHƯƠNG III
Trang 151 Tìm công thức để đổi một ký tự là chữ hoa thành chữ thường
+ +
Trang 16BIỂU THỨC VÀ CÂU LỆNH ĐƠN GIẢN
I Biểu thức
1 Hằng: Hằng là một đại lượng có giá trị không thay đổi trong suốt chương trình Có
các loại hằng: hằng số, hằng ký tự, hằng xâu, hằng logic… Từ khoá để khai báo hằng làCONST
Logic = ODD(5); {Logic =TRUE}
Chú ý: Chỉ các hàm chuẩn dưới đây mới được cho phép sử dụng trong một biểu thức
hằng:
2 Biến: Biến là một đại lượng mà giá trị của nó có thể thay đổi trong quá trình thực
hiện chương trình Biến dùng để lưu trữ dữ liệu, biến được khai báo sau từ khoá VAR.Việc khai báo các biến là nhằm cung cấp các vùng nhỡ để lưu trữ dữ liệu trong quá trìnhthực hiện chương trình
3 Cú pháp:
VAR <Tên biến>[,<Tên biến 2>,…] : <Kiểu dữ liệu>;
Ví dụ:
VAR x, y: Real; {Khai báo hai biến x, y có kiểu là Real}
a, b: Integer; {Khai báo hai biến a, b có kiểu integer}
Chú ý: Ta có thể vừa khai báo biến, vừa gán giá trị khởi đầu cho biến bằng cách sử
4 Toán tử: Là các phép toán tác động lên dữ liệu (hay còn gọi là toán hạng).
Ví dụ: Các phép +, -, *, /, and, or, not…
5 Toán hạng: Là một trong các đại lượng sau:
Trang 17(2) Nếu có nhiều phép toán cùng cấp ưu tiên thì các phép toán được thực hiện tuần tự
từ trái qua phải
(3) Mỗi biểu thức cho kết quả bằng số được gọi là biểu thức số học, cho kết quả làkiểu logic thì được gọi là biểu thức logic
- Câu lệnh ghép: BEGIN END;
- Các cấu trúc điều khiển: IF , CASE , FOR , REPEAT , WHILE
2 Câu lệnh đơn giản:
a Lệnh gán:
• Cú pháp: <Tên biến>:=<Biểu thức>;
• Ý nghĩa: Lệnh sẽ thực hiện việc gán giá trị của Biểu thức cho Tên biến
b Thủ tục ghi dữ liệu lên màn hình:
Để xuất dữ liệu ra màn hình, ta sử dụng ba dạng sau:
(1) WRITE(<tham số 1> [, <tham số 2>, ]);
(2) WRITELN(<tham số 1> [, <tham số 2>, ]);
(3) WRITELN;
Các thủ tục trên có chức năng như sau:
(1) Sau khi xuất giá trị của các tham số ra màn hình thì con trỏ không xuống dòng.(2) Sau khi xuất giá trị của các tham số ra màn hình thì con trỏ xuống đầu dòng tiếptheo
(3) Xuất ra màn hình một dòng trống
Các tham số có thể là các hằng, biến, biểu thức Nếu có nhiều tham số trong câu lệnhthì các tham số phải được phân cách nhau bởi dấu phẩy
17
Trang 18Khi sử dụng lệnh WRITE/WRITELN, ta có hai cách viết: không qui cách và có qui
cách:
- Viết không qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên trái Nếu dữ liệu là số
thực thì sẽ được in ra dưới dạng biểu diễn khoa học
c Nhập dữ liệu từ bàn phím
Để nhập dữ liệu từ bàn phím vào các biến có kiểu dữ liệu chuẩn (trừ các biến kiểuBOOLEAN), ta sử dụng cú pháp sau đây:
• Cú pháp:
(1) READ(<biến 1> [,<biến 2>, ,<biến n>]);
(2).READLN(<biến 1> [,<biến 2>, ,<biến n>]);
(3) READLN;
• Ý nghĩa:
(1): Cho phép lần lượt nhập dữ liệu cho các biến
(2): Tương tự dạng (a)chỉ khác ở chổ sau khi nhập xong dữ liệu con trỏ được đưa vềđầu dòng tiếp theo
(3): Chỉ làm thao tác tạm dừng chương trình, chờ gõ phím Enter để tiếp tục
Chú ý: Khi gặp câu lệnh READLN; (không có tham số), chương trình sẽ dừng lại chờ
người sử dụng nhấn phím ENTER mới chạy tiếp.
3 Các hàm và thủ tục thường dùng trong nhập xuất dữ liệu
• Hàm KEYPRESSED: Hàm trả về giá trị TRUE nếu như có một phím bất kỳ được
nhấn, nếu không hàm cho giá trị là FALSE
• Hàm READKEY: Hàm có chức năng đọc một ký tự từ bộ đệm bàn phím.
• Thủ tục GOTOXY(X,Y:Integer): Di chuyển con trỏ đến cột X dòng Y.
• Thủ tục CLRSCR: Xoá màn hình và đưa con trỏ về góc trên bên trái màn hình.
• Thủ tục CLREOL: Xóa các ký tự từ vị trí con trỏ đến hết dòng.
• Thủ tục DELLINE: Xoá dòng tại vị trí con trỏ và dồn các dòng ở phía dưới lên.
Trang 19• Thủ tục TEXTCOLOR(color:Byte): Thiết lập màu cho các ký tự Trong đó color
∈ [0,15]
• Thủ tục TEXTBACKGROUND(color:Byte): Thiết lập màu nền cho màn hình.
4 Các ví dụ:
Ví dụ 1: Viết chương trình nhập vào độ dài hai cạnh của tam giác và góc giữa hai cạnh
đó, sau đó tính và in ra màn hình diện tích của tam giác
Write('Nhap vao do dai canh thu nhat: '); Readln(a);
Write('Nhap vao do dai canh thu hai: '); Readln(b);
Write('Nhap vao goc giua hai canh: '); Readln(goc);
Write('Nhap vao n= '); Readln(n);
Write('Nhap vao x= '); Readln(x);
Trang 20Ví dụ 3: Viết chương trình nhập vào 2 số a, b Sau đó hoán đổi giá trị của 2 số đó:
a/ Cho phép dùng biến trung gian
Program Swap;
Var a,b,tam: Integer;
Begin
Write('Nhap vao a= '); Readln(a);
Write('Nhap vao b= '); Readln(b);
tam:=a; {tam lấy giá trị của a}
a:=b; {a lấy giá trị của b}
b:=tam; {b lấy lại giá trị của tam}
Write('Nhap vao a= '); Readln(a);
Write('Nhap vao b= '); Readln(b);
a:=a+b; {a lấy tổng giá trị của a+b}
b:=a-b; {b lấy giá trị của a}
a:=a-b; {a lấy lại giá trị của b}
C y B x
+
++
Bài tập 2: Viết chương trình tách một số n thành 2 số a, b sao cho tích P=a*b2 đạt cực đạivới n được nhập vào từ bàn phím
Trang 21Bài tập 4: Viết chương trình nhập vào số nguyên dương n, in lên màn hình tổng sau:
S = 12+22+32+…+n2
(Biết công thức s = n*(n+1)*(2*n+1) div 6)
21
Trang 22Trong đó: btdk ký hiệu cho biểu thức logic.
Dạng (1) gọi là dạng thiếu, dạng (2) gọi là dạng đủ
Trang 23Writeln('So vua nhap vao la so chan')
Writeln('Phuong trinh co vo so nghiem')
Else { Trường hợp a=0 và b ≠ 0 }
Writeln('Phuong trinh vo nghiem')
Const n: CL n ; END;
CASE <BT> OF Const 1: CL 1 ; Const 2: CL 2 ;
Const n: CL n ; ELSE CL n+1 ; END;
Trong đó:
BT: Biểu thức kiểu vô hướng đếm được như kiểu nguyên, kiểu logic, kiểu ký tự,kiểu liệt kê
23
Trang 24 Const i: Hằng thứ i, có thể là một giá trị hằng, các giá trị hằng (phân cách nhau bởidấu phẩy) hoặc các đoạn hằng (dùng hai dấu chấm để phân cách giữa giá trị đầu
và giá trị cuối)
Giá trị của biểu thức và giá trị của tập hằng i (i=1¸n) phải có cùng kiểu
Khi gặp lệnh CASE, chương trình sẽ kiểm tra:
- Nếu giá trị của biểu thức BT nằm trong tập hằng const i thì máy sẽ thực hiện lệnh CLitương ứng
- Ngược lại:
+ Đối với dạng 1: Không làm gì cả
+ Đối với dạng 2: thực hiện lệnh CLn+1
Các ví dụ:
Viết chương trình nhập vào tuổi của một người và cho biết người đó là thiếu niên, thanhniên, trung niên hay lão niên Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ 18 đến 39 làthanh niên, từ 40 đến 60 là trung niên và lớn hơn 60 là lão niên
1 17: Writeln(Nguoi nay la thieu nien');
18 39: Writeln(Nguoi nay la thanh nien');
40 60: Writeln(Nguoi nay la trung nien');
Else Writeln(Nguoi nay la lao nien');
FOR <biến đếm>:=<giá trị cuối> DOWNTO <giá trị đầu> DO CL;
Sơ đồ thực hiện vòng lặp FOR:
Trang 25 Ý nghĩa:
Dạng tiến: Câu lệnh sẽ được thực hiện bằng số lần mà Biến đếm được gán tăng dần
lần lượt từ giá trị của giá trị đầu đến giá trị của giá trị cuối.
Dạng lùi: Câu lệnh sẽ được thực hiện bằng số lần mà Biến đếm được gán giảm dần
lần lượt từ giá trị của giá trị cuối đến giá trị của giá trị đầu
Chú ý: Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:
Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR vì làm
như vậy có thể sẽ không kiểm soát được biến đếm.
Giá trị Max và Min trong câu lệnh FOR sẽ được xác định ngay khi vào đầu vòng
lặp Do đó cho dù trong vòng lặp ta có thay đổi giá trị của nó thì số lần lặp cũng không thay đổi.
Trang 26For i:=1 to N do S:=S+i;
Writeln('Ket qua la :',S);
Readln;
End.
Ví dụ 2: Viết chương trình nhập vào N số nguyên từ bàn phím Hãy tính và in ra màn
hình tổng của các số vừa được nhập vào
Ý tưởng:
Dùng phương pháp cộng dồn Cho vòng lặp FOR chạy từ 1 tới N, ứng với lần lặp thứ
i, ta nhập vào số nguyên X và đồng thời cộng dồn X vào biến S
Until <btlg>;
While <btlg> Do CL;
Sơ đồ hoạt động: