1. Trang chủ
  2. » Giáo án - Bài giảng

Giao trinh Pascal

48 1,3K 10
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thuật Giải
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Tin học
Thể loại bài giảng
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 48
Dung lượng 748,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- 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 đó để

Trang 1

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

Trang 2

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

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;

Trang 3

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ả

Trang 4

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');

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:

Trang 5

• + 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.

• 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

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),

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

Trang 6

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

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 ;

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 a2, 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 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))

Ctrl-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:

Trang 7

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 ;

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

Program chunhat2;

Var k1, k2 : real;

Begin

Trang 8

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 ex 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) ;

Trang 9

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:

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

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 đó

Trang 10

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.

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

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

Trang 11

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

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 120o 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 = 90o 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)

Trang 12

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ướ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

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

Trang 13

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:

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

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:

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ừ

Trang 14

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’

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 ');

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

Trang 15

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

Trang 16

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;

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 ;

Trang 17

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

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

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 ;

Trang 18

Writeln ( ‘ Nap vao khoi luong sat vun cua tung nguoi ‘ : 55 ) ;

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

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

Trang 19

Nếu 5*td+3*tn+(100-td-tn) div 3 =100 và (100-td-tn) mod 3 = 0

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 ;

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 = x3 + y3 + z3

b.Tìm các số tự nhiên x, y, z, t sao cho n = x2 + y2 + z2 +t2

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?

Trang 20

Với yêu cầu tính tổng khối lượng sắt vụn của cả 12 bạn trong tổ, chúng ta dùng một biến X để nhận vào khối lượng sắt vụn của từng bạn, nhận xong cho một bạn nào đó ta cộng dồn X vào S, sau đó ta lại dùng X để nhận vào khối lượng sắt vụn của bạn khác Nhưng làm thế nào để tính xem có bao nhiêu bạn nộp tiền nhất, bạn có thể khai báo 12 biến để lưu khối lượng sắt vụn của 12 bạn, nhưng nếu số bạn lên tới hơn 100 thì làm thế nào? Để trả lời câu hỏi đó chúng ta cần biết một kiểu dữ liệu mới, đó là kiểu mảng, gồm những phần sau:

1.2 Cách khai báo mảng một chiều

VAR tên mảng : ARRAY [kiểu chỉ số] OF kiểu phần tử ;

Trong đó: VAR, ARRAY và OF là từ khoá,

Tên biến mảng là một tên gọi tự đặt theo qui tắc đặt tên

Kiểu phần tử là kiểu mà các phần tử của mảng lưu trữ trong từng ô nhớ

Kiểu chỉ số:Chỉ số thường dùng kiểu dữ liệu miền con: cận đầu cận cuối, cận đầu, cận cuối xác định giá trị chỉ số đầu và chỉ số cuối của mảng

Ví dụ

VAR SV : ARRAY [1 12 ] OF REAL ;

M : ARRAY [ 'a' 'k' ] of Integer ;

A, B : ARRAY [5 19 ] of Word ;

H : ARRAY[ Char ] of Boolean ;

2 Truy nhập đến một phần tử của mảng một chiều.

Tên mảng [biểu thức chỉ số cần truy nhập đến] ;

Ví dụ mảng SV đã khai báo ở trên, sau khi nhập các phần tử vào các địa chỉ, ta có hình ảnh như sau:

8.5 10.5 6.5 8.5 11.5 9.5 15.5 11.5 15.5 15 15.5 13.5

Ta có SV [2] = 10.5 ; SV[ 11 MOD 4 ] = 6.5 ; SV [ SUCC (9) ] = 15

3 Ghi nhớ

3.1 Khai báo và truy nhập mảng một chiều

a Khai báo mảng một chiều

VAR TênMảng : ARRAY [kiểu chỉ số ] OF kiểu phần tử ;

b Truy nhập đến một phần tử của mảng

TênMảng [ biểu thức chỉ số của phần tử cần truy nhập]

Biểu thức chỉ số phải cho giá trị thuộc vào tập các giá trị chỉ số của mảng

3.2 Khai báo biến có giá trị ban đầu

Để gán giá trị ban đầu cho biến ngay khi khai báo nó, ta viết như sau:

CONST TênBiến : Kiểu của biến = (Các giá trị của biến) ;

4 Áp dụng

Các số hạng F của dãy Fibonacci được thiết lập theo quy tắc như sau:

F(1) = F(2) = 1;

F(i) = F(i - 1) + F(i - 2) với i > 2

Hãy lập chương trình để viết ra 48 số hạng đầu của dãy Fibonacci, sau đó tính tổng của các số hạng này

Cách viết n số hạng đầu của dãy Fibonacci là rõ ràng bởi vì quy tắc thiết lập số hạng thứ n đã được cho theo công thức quy nạp ở trên

Ta lưu trữ các số hạng này vào mảng một chiều để có thể truy nhập từng phần tử theo tên mảng và chỉ số của phần tử đó

Ta có chương trình như sau:

Trang 21

Writeln (' so hang thu ' , i:3 , ' cua day la ' , F[i] :12 : 0) ;

Write (' Tong ' , n , ' so hang dau tien la ' , s : 13 : 0) ;

2 Viết chương trình cho máy làm những việc sau:

a Nhận vào mảng A [1 n] (n > 9), các phần tử là số thực lớn hơn -2 và nhỏ hơn 2

b Tính trung bình cộng của các phần tử dương của mảng

c So sánh số phần tử dương với số phần tử âm của mảng

d Tìm phần tử nhỏ nhất và lớn nhất của mảng Chỉ ra vị trí và giá trị của chúng

e Tính a[1] + a[2]2 + a[3]3 + + a[n]n

3. Cho n số thực (n > 7) a1, a2, , an Hãy tính

4. Có n người xếp hàng một để mua hàng Thời gian người bán hàng phục vụ khách hàng thứ i là ti Viết chương trình nhận vào các ti và tính thời gian ci mà khách hàng thứ i phải chờ để bắt đầu đến lượt mình

5. Cho A [1 n] (n >7), các phần tử là số tự nhiên với A [i] = i2 + 2

a Tính tổng các căn bậc 2 của các phần tử chia cho 7 dư 3

b Tìm các phần tử là số nguyên tố của mảng Chỉ ra vị trí và giá trị của chúng

c Xây dựng mảng B có các phần tử là các số nguyên tố của mảng A

6 Có các loại tiền 1.000, 2.000, 5.000, 10.000, 20.000 và 50.000 đồng Viết chương trình in lên màn

hình cách trả tiền cho n nghìn đồng sao cho tổng số tờ giấy bạc là nhỏ nhất

7. Có n thiết bị dùng điện với điện trở tương ứng là R1, R2, , Rn

Tính điện trở tương đương của n thiết bị trên khi:

a Các thiết bị mắc song song với nhau

b Các thiết bị mắc nối tiếp với nhau

1 Khai báo mảng hai chiều

VAR

TênMảng : ARRAY [kiểu chỉ số dòng , kiểu chỉ số cột] OF kiểu phần tử của mảng;

Tên mảng được viết theo quy tắc đặt tên

2 Truy nhập đến một phần tử của mảng

Trang 22

TênMảng[ biểu thức chỉ số dòng , biểu thức chỉ số cột ]

Đương nhiên những biểu thức này phải cho giá trị thuộc vào kiểu của chỉ số của nó của mảng một chiều

3 Duyệt các phần tử của mảng hai chiều

Biến có kiểu là kiểu chỉ số dòng của mảng hoặc nhận kiểu chỉ số dòng của mảng là một miền con

Biến có kiểu là kiểu chỉ số cột của mảng hoặc nhận kiểu chỉ số cột của mảng là một miền con

Dùng hai vòng FOR lồng nhau để duyệt lần lượt các phần tử của mảng thông qua chỉ số của chúng

4 Áp dụng

4.1 Bài toán Một lớp có 4 tổ học tập Bài kiểm tra chất lượng môn Tin có điểm từ 3 đến 10 (điểm là một số

nguyên, không ai bị điểm 0, 1, 2) Tính điểm trung bình cho từng tổ, tính điểm trung bình cho cả lớp Cả lớp

có bao nhiêu bạn bị điểm dưới 5, bao nhiêu bạn được điểm 10

4.2 Ý tưởng thuật giải

Ta dùng biến nguyên không âm I , J , N , S , Ni , Si

Trong đó I và J dùng để duyệt theo dòng và cột của mảng D

Biến Ni để lưu giữ số người của tổ i, biến Si để lưu giữ số điểm của tổ i Để tính điểm trung bình cho tổ i ta lấy Si chia cho Ni

Biến N để lưu giữ số người của cả lớp, nó được cộng dồn các Ni và lưu giữ ở N

Biến S để lưu giữ số điểm của cả lớp, nó được cộng dồn các Si và lưu giữ ở S Để tính điểm trung bình cho lớp ta lấy S chia cho N

Sau khi tính điểm trung bình cho từng tổ và cho cả lớp, ta dùng biến Ni để lưu giữ tổng số điểm dưới trung bình của cả lớp, biến Si để lưu giữ tổng số điểm 10 của cả lớp

4 Chương trình

Program TinhDiem ;

Uses Crt ;

Var D : Array [1 4 , 3 10 ] Of Byte ;

i , j , n , Si, Ni : Byte ; S : Word ;

Trang 23

Writeln (' So diem 10 cua lop la ' , Si : 3) ;

3 Mảng A có n dòng n cột các phần tử là những số thực (n >4)

Tính tổng các phần tử nằm trên đường chéo chính

Tính tổng các phần tử nằm trên đường chéo phụ

Tính tổng các phần tử nằm song song sát trên đường chéo chính

Tính tổng các phần tử nằm song song sát dưới đường chéo chính

Tính tổng các phần tử nằm song song sát trên đường chéo phụ

Tính tổng các phần tử nằm song song sát dưới đường chéo phụ

Tính tổng các phần tử nằm trên đường chéo chính và ở phía trên đường chéo chính

h Tính tổng các phần tử nằm ở phía dưới đường chéo phụ

4. Lập chương trình cho máy tính viết lên màn hình tam giác PASCAL gồm K+1 dòng là hệ số của khai triển nhị thức Niu Tơn (x+y)n với n nhận các giá trị từ 0 đến K K là một số tự nhiên không quá 12 nhận vào từ bàn phím Ví dụ k=4 thì màn hình sẽ in ra 5 dòng như sau

Ý tưởng của thuật giải sắp xếp dưới đây là

Bước 1 Ta sẽ chọn phần tử nhỏ nhất trong các phần tử từ phần tử thứ nhất đến phần tử thứ N, rồi tráo đổi nó

với phần tử thứ nhất

Bước 2 Ta sẽ chọn phần tử nhỏ nhất trong các phần tử từ phần tử thứ hai đến phần tử thứ N, rồi tráo đổi nó

với phần tử thứ hai

Tương tự như vậy cho các bước tiếp theo từ bước 3 đến bước N

Ta xét cho một bước tổng quát thứ i nào đó (i nhận giá trị từ 1 đến N)

Bước i Ta sẽ tìm chỉ số K của phần tử nhỏ nhất trong các phần tử từ phần tử thứ i đến phần tử thứ N, rồi tráo

đổi nó với phần tử thứ i

3 Chương trình

Để tráo đổi hai phần tử cho nhau, ta cần thęm phần tử TG (trung gian) thứ ba

Program SapXep ;

Trang 24

Writeln(' Cac phan tu da duoc sap xep la ') ;

For i := 1 To n Do Write (m [ i ] : 9 : 2) ; Readln

END

4 Ghi nhớ

Sắp xếp bằng cách chọn trực tiếp

Có nhiều thuật giải sắp xếp một mảng Trong chương trình trên ta dùng thuật giải chọn trực tiếp Giả sử mảng

có N phần tử, ta thực hiện như sau:

Với mỗi vòng lặp theo i từ 1 đến N - 1 ta cho K := i ; rồi dùng vòng lặp theo j (lồng vào bên trong vòng lặp theo i) j duyệt từ i + 1 đến N để tìm chỉ số K của phần tử nhỏ nhất trong các phần tử từ phần tử thứ i đến phần

tử thứ N, bằng cách nếu gặp phần tử thứ j nhỏ hơn phần tử có chỉ số đang lưu giữ ở K thì gán K := j ;

Hết vòng lặp theo j thì tráo đổi phần tử thứ K với phần tử thứ i (nếu K > i)

1 Viết chương trình nhận vào chiều cao của các bạn Mai, Lan, Cúc, Thu, Bích Thuỷ, Hồng Nhung, Anh Sắp xếp và in ra màn hình chiều cao của các bạn theo thứ tự tăng dần Yêu cầu khai báo kiểu liệt kê tương ứng với tên các bạn để làm chỉ số cho mảng lưu trữ chiều cao của họ

2 Viết chương trình cho máy nhận vào mảng A có n phần tử là những số thực (n > 9) Xây dựng mảng B các phần tử là những số nguyên được tạo thành từ các phần tử của mảng A theo cách B[i] là trị tuyệt đối của phần nguyên của A[i] Sắp xếp và in ra mảng A, mảng B theo thứ tự tăng dần

3 Ba khối lớp 10, 11, 12 nộp sắt vụn, các lớp đặt tên theo khối bắt đầu từ A Viết chương trình cho máy nhận vào lượng sắt vụn của từng lớp theo từng khối Sau đó sắp xếp số lượng sắt vụn của các lớp trong từng khối theo thứ tự giảm dần

4 Cho mảng m dòng n cột (m > 5, n > 6), các phần tử là những số nguyên ngẫu nhiên từ 0 đến 30000 Cho máy chọn ra các phần tử là số nguyên tố và sắp xếp chúng theo thứ tự tăng dần

Chương trình con

Mục tiêu bài học:

- Biết chia bài toán thành những bài toán nhỏ hơn, trong số các bài toán nhỏ hơn có thể được chia thành những bài toán nhỏ hơn nữa, sao cho mỗi bài toán con chỉ làm cụ thể 1 công việc nào đó.

Ngày đăng: 17/08/2013, 16:10

Xem thêm

HÌNH ẢNH LIÊN QUAN

Sơ đồ cấu trúc của chương trình mà ta sẽ viết là - Giao trinh Pascal
Sơ đồ c ấu trúc của chương trình mà ta sẽ viết là (Trang 26)
1. Bảng màu: - Giao trinh Pascal
1. Bảng màu: (Trang 36)

TỪ KHÓA LIÊN QUAN

w