1. Trang chủ
  2. » Công Nghệ Thông Tin

Thuật Toán & Kỹ Thuật Lập Trình Pascal

36 10,5K 42
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 Toán & Kỹ Thuật Lập Trình Pascal
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại bài tập
Định dạng
Số trang 36
Dung lượng 734,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

Thuật Toán & Kỹ Thuật Lập Trình Pascal

Trang 1

2 Các đặc trưng của thuật toán

Tính kết thúc: Một thuật toán phải kết thúc sau một số hữu hạn thao tác.

Tính rõ ràng: Từng thao tác của thuật toán phải rõ ràng theo nghĩa: cùng thao

tác đó nếu nhiều người khác nhau thực hiện thì phải cho cùng một kết quả

Tính phổ dụng: Cùng giải quyết một yêu câu, thuật toán nào sử dụng rộng rãi

hơn, tổng quát hơn thì tính phổ dụng cao hơn

Tính hiệu quả: Cùng giải quyết một yêu cầu, thuật toán nào tốn kém ít hơn về

số lượng thao tác, về bộ nhớ, về thời gian thì tính hiệu quả cao hơn

3 Biểu diễn thuật toán

Để biểu diễn thuật toán người ta thường dùng một trong hai phương pháp sau đây:3.1 Phương pháp liệt kê các bước

Phương pháp này sử dụng một ngôn ngữ nào đấy, mô tả dãy thao tác thật cơbản, rõ ràng theo trình tự từ trên xuống dưới, từ trái qua phải, từ bắt đầu đến kết thúcđúng theo giải thuật, nhằm đạt được yêu cầu đề ra

Các thao tác cơ bản bao gồm:

- Bắt đầu

- Thông báo, yêu cầu

- Nhận giá trị ban đầu

- Gán giá trị (lưu giá trị vào một tên biến nào đấy)

- Thực hiện các phép toán số học, logic

- Kiểm tra điều kiện để khẳng định điều kiện đúng hay sai

- Chuyển không điều kiện, có điều kiện đến thao tác khác

- Lặp lại thao tác nào đấy

Trang 2

- Kết thúc

3.2 Phương pháp sơ đồ khối

Dùng các hình để thể hiện các thao tác, ghi thao tác vào giữa hình và dùng cácmũi tên để chỉ hướng thực hiện thao tác tiếp theo, tạo thành sơ đồ biểu diễn thuật toán,thường dùng các hình sau:

4 Một số thuật toán thường gặp

4.1.Hoán vị giá trị của X, Y

Bước 1: Dùng một tên biến trung gian TG và lưu X vào TG (Gán TG = X) Bước 2: Gán X = Y (lưu giá trị Y vào X)

Bước 3: Gán Y = TG (lưu TG tức là X cũ vào Y)

Bước 4: Kết thúc

4.2.Tìm phần tử lớn nhất trong dãy A1, A2, AN

Dùng một biến Max lưu phần tử lớn nhất

Bước 1: Nhập các giá trị N, A1, A2, ., AN

Bước 2: Gán i = 1, gán Max = A1

Bước 3 : Gán i = i + 1 ( tăng giá trị của i lên 1)

Thao tác Hình

Bắt đầu hay kết thúc thuật toánBắt đầu

Thao tác tính toán hoặc một phép gán

i = 1

a < bTrueFalse Rẽ nhán theo điều kiện

Đưa ra S Nhập, xuất dữ liêu cho thuật toán

Trang 3

Bước 4: Nếu i > N thì Max là lớn nhất và đến bước 7, trái lại đến bước 5

Bước 5: Nếu Ai > Max thì Max = Ai

Bước 6: Quay lại bước 3

Bước 7: Kết thúc

4.3 Kiểm tra xem A có thuộc dãy X1, X2, ,XN hay không?

(Thuật toán tìm kiếm tuần tự)

Bước 1: Nhận các giá trị N, X1, X2, ., XN

Bước 2: Gán i = 1

Bước 3: Nếu i > N thì sang bước bước 5, trái lại đến bước 4

Bước 4: Nếu A = Xi thì đến bước 5, trái lại tăng i lên 1 và quay lại bước 3 Bước 5: Nếu i > N thì thông báo A không thuộc dãy X1, X2, ,XN, trái lại

thông báo A là phần tử thứ i trong dãy

Bước 4: Nếu i > N thì sang bước 8, trái lại đến bước 5

Bước 5: Thực hiện S = S + Xi (cộng Xi vào S)

Bước 2: Nếu M = N thì sang bước 5, trái lại đến bước 3

Bước 3: Nếu M > N thì M = M - N, trái lại N = N - M

Bước 4: Quay lại bước 2

Bước 5: ƯSCLN của M và N là M

Bước 6: Kết thúc

Trang 4

Biều diễn thuật toán ƯSCLN bằng sơ đồ khối

5 Bài tập chương 1

5.1 Hãy biểu diễn các thuật toán trong mục 4.1 đến 4.3 bằng sơ đồ khối

5.2 Hãy trình bày thuật toán tìm phần tử nhỏ nhất trong dãy số A1, A2, Andưới dạng liệt kê và sơ đồ khối

5.3 Hãy trình bày thuật toán tính tổng các số chẵn trong dãy số A1,A2, Andưới dạng liệt kê và sơ đồ

5.4 Hãy đề xuất một thuật toán để kiểm tra một số nguyên dương có phải làmột số nguyên tố hay không?

Gợi ý: N được gọi là số nguyên tố nếu nó chỉ chia hết cho 1 và chính nó Nếu ta

tìm được một số k (2 <= k <= N-1) bất kỳ mà N chia hết cho k thì ta kết luận N khôngphải là số nguyên tố, trái lại N là số nguyên tố

BeginNhập a, b

a == b True

a > bFalse

Trang 5

5.5 Hãy đề xuất một thuật toán kiểm tra một số nguyên dương có phải là sốchính phương hay không?

Gợi ý: Theo định nghĩa, N đươc gọi là số chính phương nếu căn bậc hai của N

là một số nguyên <=> N = k2 (k là một số nguyên) Như vậy ta đi tìm số k nếu tìmđược k thì N là chính phương, trái lại N không phải là chính phương

5.6 Thiết kế thuật toán kiểm tra một số nguyên dương có phải là số đối xứnghay không?

Gợi ý: Thực hiện đảo ngược số cần kiểm tra, sau đó so sánh số đảo ngược với

số cần kiểm tra, nếu bằng nhau thì kết luật số đó là số đối xứng, trái lại kết luận khôngphải là đối xứng

VD: 2435 số đảo ngược là 5342

5.7 Thiết kế thuật toán tính tổng các chữ số của một số nguyên dương

Gợi ý: Tách từng chữ số của số nguyên, mỗi lần tách được ta cộng số tách được vào

biến tổng TG, xuất phát TG = 0

- Để tách được chữ số cuối cùng của số nguyên ta chia số nguyên đó cho 10 lấy phần dư

- Để loại bỏ chữ số cuối cùng của số nguyên ta chia số nguyên đó 10 lấy phần nguyên.VD: 124 mod 10 = 4, 124 div 10 = 12;

5.8 Cho dãy số A1, A2, , An, Trình bày thuật toán sắp xếp lại dãy này theothứ tự không giảm

Bước 5: Hoán vị giá trị giữa Ai và Ak

Bước 6: i = i+1, quay lại bước 3

Bước 7: Kết thúc

5.9 Trình bày thuật toán kiểm tra số lần xuất hiện của số A trong dãy số X1, X2 Xn

Gợi ý: Nếu A = Xi (i =1 đến N) thì tăng số lần xuất hiện của A lên 1

Trang 6

CHƯƠNG 2

CÁC KIỂU DỮ LIỆU CƠ BẢN & CÁC PHÉP TOÁN TRÊN CÁC DỮ LIỆU

TÓM TẮT LÝ THUYẾT

1 Các kiểu dữ liệu cơ bản:

Đó là các kiểu dữ liệu mà trên cơ sở các kiểu này ta xây dựng các kiểu phức tạp hơn.1.1 Kiểu số nguyên:

Gồm các số nguyên nằm trong phạm vi nào đấy tuỳ theo tên kiểu:

Tên kiểu DL trong Pascal Số byte Miền giá trị

Gồm các số thập phân hữu hạn nằm trong phạm vi nào đấy tuỳ theo tên kiểu

Tên kiểu DL trong Pascal Số byte Miền giá trị

Chú ý: Trong Pascal thường dùng kiểu Real: là kiểu số thực 6 byte có giá trị

tuyệt đối nằm trong khoảng từ 2.9E-39 đến 1.7E+38, với phần định trị 11 đến 12 chữ

số có nghĩa

Có hai cách viết số thập phân:

- Viết dạng dấu phẩy tĩnh: viết như thông thường nhưng thay dấu phảy bằng dấu chấm

- Viết dạng dấu phẩy động: viết số thập phân dưới dạng luỹ thừa 10: m  10n, trong đó

m là số thập phân, n là số nguyên Sau đó viết m ở dạng dấu phẩy tĩnh, còn 10n đượcthay bằng En

Ví dụ: số -102,4567 được viết ở dạng dấu phẩy tĩnh là -102.4567, được viết ở dạng

dấu phẩy động là -1.024567E+2 hoặc -1024.567E-1.

Trang 7

Trên các toán hạng kiểu số (nguyên hoặc thực) bao gồm 4 phép toán cơ bản như:

Chú ý: -Trong Pascal phép chia (/) trả lại kết quả thuộc kiểu Real.

- Đối với số nguyên, phép toán div chia lấy phần nguyên và phép mod chia lấy phần dư.

Có 4 phép toán Logic trên kiểu dữ liệu Boolean

Trang 8

TRUE TRUE FALSE TRUE TRUE FALSE

để ưu tiên tính các biểu thức trong ngoặc trước

Ví dụ:Biểu thức số viết theo toán học (xy)(x2x 2)y(y3)

được viết theo NNLT ((x + y) *((x - 2) + (y +3))) / (2 *x +y)

Biểu thức logic y < x < 100 viết là (y < x) and (100 > x)

f/ ((10- 2 > 7 ) or ( 4 > 5)) and ( TRUE = TRUE) = ?

4.3 Hãy viết các biểu thức sau đây theo qui định của Pascal

y x

x z z

y x

3

)1(

)12(2)(

Trang 9

1 Từ khoá

Pascal có một số từ vững riêng được gọi là từ khoá (key word) Với những từ

khoá này người dùng phải viết đúng cú pháp, không được dùng nó vào việc khác,không được đặt tên biến trùng với từ khoá

Chú ý: Trong Pascal không phân biệt chữ thường và chữ hoa(In), các từ khoá

có thể viết bằng chữ thường và hoa điều được.

2 Các tên chuẩn

Các tên chuẩn là tên một số đối tượng (biến, hằng, kiểu, hàm, thủ tục) mà ngônngữ lập trình đã định nghĩa trước Khi dùng chúng không cần phải khai báo Các tênchuẩn có thể định nghĩa lại, tuy nhiên nên để chúng như đã được đặt để tránh nhầm lẫn

VD: Integer, Char, Read, Writeln, PI, Cos

3 Tên tự đặt

Các tên tự đặt là các tên mà người dùng đặt cho các đối tượng (hằng, biến, kiểu,chương trình con) trong chương trình của mình Chúng phải được khai báo trước khidùng Các tên tự đặt phải tuân theo các qui tắc sau:

- Chỉ được dùng 3 loại ký tự là chữ cái, chữ số và dấu nối chân

- Ký tự đầu tiên phải là ký tự chữ cái

- Không được trùng với các từ khoá

- Độ dài của tên không vượt quá 127 ký tự

4 Chương trình mẫu

Trong Pascal đã có sẵn một số chương trình con thường gặp được gọi là cácchương trình mẫu Các chương trình mẫu được quản lý trong các thư viện, trước khidụng các chương trình mẫu phải khai báo sử dụng thư viện chứa chúng

Dưới đây là một số chương trình mẫu thường dùng:

Abs(y) Lấy giá trị tuyệt đối của ySqr(y) Tính bình phương của ySqrt(y) Tính căn bậc hai của yChr(n) Trả lại ký tự có mã ASCII bằng n

Ord(ch) Trả lại mã ASCII của ký tự ch

Upcase(c) Trả lại chữ cái in hoa của ký tự c

Trang 10

Clrscr Xoá màn hínhGotoXY( x, y) Đưa con trỏ Dos đến toạ độ x, yTextColor (mode ) Thiết lập mầu và chế độ hiển thị ký tựTextBackground ( col ) Thiết lập màu nên của ký tự

Readkey Đọc một ký tự từ bàn phímKeyPressed Kiểm tra bàn phím có nhấn hay khôngDelay(ms) Làm CPU ngừng làm việc trong ms

5 Lời giải thích và dấu chấm phẩy

Các lời giải thích được đưa vào bất kỳ vị trí nào trong chương trình để chochương trình dễ đọc, dễ hiểu hơn mà không ảnh hưởng đến phần khác Lời giải thíchđược đặt giữa hai dấu ngoặc móc { } hoặc giữa hai cụm dấu (* noi dung *)

Dấu chấm phẩy ( ; ) để làm dấu ngăn cách giữa các câu lệnh trong chương trình

6 Cấu trúc chung của chương trình Pascal

Một chương trình Pascal đầy đủ sẽ gồm các phần như sau:

6.1.Tiêu đề của chương trình

Phần này bao giờ cũng bắt đầu bằng từ khoá PROGRAM, tiếp theo sau là tên dongười lập trình đặt sao cho nó có một ý nghĩa nào đó đối với công việc của chươngtrình,cuối cùng kết thúc bằng dấu chấm phẩy;

Uses CRT; { khai báo thư viện }

Const { khai báo hằng }

Type { mô tả kiểu dữ liệu }

Var { khai báo chung }

Procedure { khai báo thủ tục }

Function { khai bào hàm }

Các mục khai báo trên có thể có hoặc không tuỳ thuộc vào từng bài toán cụ thể

Trang 11

6.3.Phần thân chương trình

Phần này bao giờ nằm gọn trong cặp từ khoá BEGIN END sau từ

khoá End là dấu chấm báo hiệu kết thúc chương trình Khác với các phần khác phần này bắt buộc phải có đối với mọi chương trình

Cấu trúc chung của một chương trình viết bằng Pascal như sau:

Program

Uses

Const

Type .

Var

Procedure

Function

BEGIN

Các câu lệnh

END.

7 Khai báo biến, lệnh gán

a Biến

Biến là đại lượng có thể thay đổi giá trị trong quá trình chương trình chạy Mỗi biến được khai báo với một tên ( tên biến ) và kiểu dữ liệu xác định Các biến được

khai báo trong phần khai báo và sau từ khoá Var

Cú pháp:

Var

Ten_Bien : Kieu_du_lieu ;

- Dấu hai chấm bắt buộc phải có để ngăn cách giữa phần tên biến và phần kiểu

dữ liệu, cuối dòng kết thúc bằng dấu chấm phẩy

- Nếu có nhiều biến cùng kiểu dữ liệu thì có thể khai báo cùng một dòng bằng cách thêm vào dấu phẩy để ngăn cách giữa hai tên biến

VD: Var X1, X2 : Real ; A, B, C : Integer ;

b Lệnh gán

Lệnh gán dùng để gán giá trị của một hằng, một biểu thức cho một biến Phép

gán được ký hiệu :=

Cú pháp: Tên_Biên := Biểu_thức ;

Trang 12

8.1.Hãy viết 15 từ khoá trong Pascal

8.2.Hãy đưa ra 5 tên chuẩn trong Pascal và ý nghĩa của chúng

8.3.Hãy cho biết trong các tên sau, tên nào không đúng qui tắc trong Pascal vàgiải thích tại sao ?

a Toi_Thu b Ten-bien c Bien1

8.4.Hãy viết chương trình in ra giữa màn hình dòng chữ Well come to Pascal

với màu đỏ và nhấp nháy.

Gợi ý: Sử dụng hàm Gotoxy, TextColor

8.5.Hãy viết chương trình in ra màn hình các hình sau:

8.6.Hãy viết chương trình tính giá trị căn bậc bốn của 21

8.7.Hãy viết chương trình tính biểu thức (23120,534) 1.2

x := 8 / 2 ;end

Trang 13

8.10.Hãy xác định kết quả hiển thị trên mành hình sau khi thực hiện chươngtrình sau:(không sử dụng máy tính)

8.12.Hãy viết chương trính hoán vị giá trị của hai biến a, b

8.13.Hãy viết chương trình để thực hiện các công việc sau;

- Nhập một số thuộc bảng mã ASCII, in ra ký tự đại diện cho số đó

- Nhập một ký tự từ bàn phím, hiển thị mã ASCII của ký tự đó

Gợi ý: Sử dụng hàm Ord và Chr để chuyển đổi từ ký tự sang số và ngược lại

8.14.Hãy xác định kết quả hiển thị trên màn hình sau khi thực hiện chươngtrình sau:(không sử dụng máy tính)

Readln;

End.

8.15.Hãy viết chương trình tính chu vi và diện tích của đường tròn, hình vuông

Trang 14

Dạng 1: If điều_kiện then câu_lệnh_1;

Dạng 2: If điều_kiện then câu_lệnh_1 Else câu_lệnh_2 ;

Trong đó điều kiện là một biểu thức logic còn câu lệnh có thể là câu lệnh đơn

hoặc câu lệnh phức

Máy thực hiện:

Gặp dạng 1 máy kiểm tra giá trị của biểu thức điều_kiện, nếu đúng thì thực hiện

câu_lệnh_1

Gặp dạng 2 máy tính kiểm tra giá trị của biểu thức điều_kiện, nếu đúng thì thực

hiện câu_lệnh_1, sai thực hiện câu_lệnh_2

gtn : cln

end;

Trang 15

Dạng 2:

case biến_chọn of

gt1 : cl1;

gt2 : cl2;

gtn : cln

Else cln+1;

end;

Trong đó:

- Case, of, end, else là các từ khoá của cấu trúc

- cl1, cl2, cln+1 là các câu lệnh, nó có thể là các câu lệnh đơn hoặc câu lệnh phức

- Biến chọn là biến có kiểu dữ liệu số nguyên, ký tự, Boolean

- gt1, gt2, , gtn là các danh sách giá trị có thể có của biến chọn, mỗi phần từ của danhsách có thể là biểu thức, hằng, miền

Hoạt động:

Sự thực hiện các câu lệnh cl1, cl2, , cln trong Case-Of phụ thuộc vào giá trị của

biến chọn.

- Nếu gti là danh sách đầu tiên chứa giá trị của biến chọn thì máy sẽ thực hiện câu lệnh

cli sau đó thoát khỏi cấu trúc

- Trong trường hợp không có danh sách nào chứa giá trị của biến chọn thì :

+ Với dạng 1 máy sẽ không thực hiện câu lệnh cli nào và sẽ thoát khỏi cấu trúc.+Với dạng 2 máy sẽ thực hiện câu lệnh cli+1 rồi thoát khỏi cấu trúc

VD:

Case today of

2 4,7: writeln(' hoc Pascal ');

5,6: writeln(' hoc tieng Anh')

else writeln(' di chơi ');

end;

Trang 16

3.6.Viết chương trình giải và biện luận phương trình Ax2 + Bx +C =0

3.7.Chương trình kiểm tra ba số nguyên dương a, b,c (a, b,c được nhập từbàn phím) có thể tạo thành 3 cạnh của một tam giác hay không? nếu là 3 canhcủa một tam giác chương trình sẽ xác định tam giác đó thuộc tam giác cân,đều, vuông, thường

Trang 17

write(' nhap so thu nhat ') ; Readln(a);

write(' nhap so thu hai ') ; Readln(b);

write(' nhap so thu ba ') ; Readln(c);

if (a< b + c) and (b < c+ a) and (c < a+b) then

begin

writeln( ' la 3 canh cua 1 tam giac ');

if (a = b) and (b = c) then writeln( ' la tam giac deu ')

else if( a = b) or (b = c) or (a = c) then

writeln( ' la tam giac can ') Else if (a*a = b*b + c*c) or (b*b = a*a + c*c) or ( c*c = b*b + a*a) then

writeln( ' la tam giac vuong ')

Else writeln(' la tam giac thuong ');

end

else writeln(' khong the la 3 can cua 1 tam giac ');

Readln; { dừng màn hình đến khi nhấn phím enter}

3.9.Viết chương trình nhập một số nguyên từ 0 đến 10 rồi đưa ra tiếng anh của

số đó (VD nhập vào là 1 thì đưa ra One)

3.10.Chương trình nhập một số nguyên n (1<= n <= 7) viết ra màn hình têncủa ngày trong tuần tương ứng với số n ( nếu n = 0 thi in ra chủ nhật)

Trang 18

1: writeln( ' chu nhat ');

2: begin writeln (' thu hai '); writeln(' chao co '); end ;

3: writeln( ' thu ba ');

4: writeln(' thu tu');

5: writeln( ' thu nam')6: writeln(' thu sau ');

7: begin writeln(' thu bay'); writeln(' cuoi tuan '); end

else writeln( ' nhap so khong thich hop ');

end;

END.

Trang 19

Dang 1: For biến_chạy := cận_dưới To cận_trên Do Câu_lệnh ;

Dạng 2: For biến_chạy := cận_trên Downto cận_dưới Do Câu_lệnh ;

Hoạt động:

Dạng 1:

B1: Gán giá trị cận_dưới cho biến_chạyB2: Kiểm tra điều kiện (Biên_chạy > cận_trên ) ?

Nếu đùng sang B4, trái lại đến B3

B3: thực hiện câu_lệnh một lần sau đó tự động tăng giá trị của

biến_chạy lên một đơn vị và quay lại B2

B4: Kết thúc cấu trúc

Dạng 2:

B1: Gán giá trị cận_trên cho biến_chạyB2: Kiểm tra điều kiện (Biên_chạy < cận_dưới ) ?

Nếu đúng sang B4, trái lại đến B3

B3: thực hiện câu_lệnh một lần sau đó tự động giảm giá trị của

biến_chạy đi một đơn vị và quay lại B2B4: Kết thúc cấu trúc

Ngày đăng: 14/11/2012, 15:36

TỪ KHÓA LIÊN QUAN

w