1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Tin học văn phòng >

Câu lệnh lặp REPEAT ..UNTIL

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 (735.23 KB, 141 trang )


BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Nếu Ðiềukiện không bao giờ đúng thì LệnhP sẽ phải thực hiện mãi, lúc đó ta có vòng

lặp vô hạn. Trong trường hợp này, muốn ngắt chương trình, hãy gõ đồng thời hai phím Ctrl

và Break.

Ðể tránh các vòng lặp vô hạn, trong thân của lệnh REPEAT cần có ít nhất một lệnh có

tác dụng làm biến đổi các đại lượng tham gia trong Ðiềukiện để đến một lúc nào đó thì

Ðiềukiện sẽ đúng và do đó vòng lặp sẽ kết thúc.

Các vòng lặp có số lần lặp biết trước đều có thể giải được bằng lệnh REPEAT. Ðặc biệt,

cũng như lệnh WHILE, lệnh REPEAT rất thích hợp với các vòng lặp có số lần lặp không

biết trước

b. Ví dụ về lệnh Repeat

Ví dụ 7: Ðảm bảo tính hợp lý của dữ liệu nhập từ bàn phím.

Khi giải phương trình bậc hai Ax2+Bx+C=0, ta thường giả thiết A ≠ 0; khi tính S=N!, ta

thường yêu cầu N ≠ 0. Sự hạn chế phạm vi đối với các dữ liệu nhập sẽ đảm bảo tính hợp lý

của chúng và làm giảm bớt các phức tạp khi biện luận.

Ðể buộc người sử dụng phải nhập A 0, nếu nhập A=0 thì bắt nhập lại cho tới khi

nhập A 0 mới thôi, ta dùng cấu trúc:

Repeat

Write(‘Nhập A khác không: ‘);

Readln(A);

Until A<> 0;

Ðể đảm bảo chắc chắn nhập N thỏa điều kiện 0
Repeat

Write(‘ Nhập N (0
Readln(N);

If (N<=0) or (N>=20) then write(#7);

Until (0
Lệnh write(chr(7) ) hay write(#7) có công dụng phát ra tiếng kêu bip để cảnh báo người

dùng đã nhập dữ liệu sai yêu cầu.

c. So sánh các lệnh For, While và Repeat:







Lệnh For dùng cho các vòng lặp có số lần lặp đã biết trước.

Lệnh While hay Repeat tổng quát hơn lệnh For, dùng được cho tất cả các loại vòng

lặp, nhưng thường dùng cho các vòng lặp có số lần lặp chưa biết trước.



Ngôn ngữ lập trình Pascal



57



BỘ MÔN TIN HỌC











TRƯỜNG ĐẠI HỌC HOA LƯ



Lệnh While và Repeat khác nhau ở điểm sau: lệnh While kiểm tra điều kiện trước,

nếu đúng mới thực hiện các lệnh ghi trong thân của nó (lệnhP ), còn lệnh Repeat thực

hiện lệnhP rồi mới kiểm tra điều kiện. Vì thế, lệnh Repeat sẽ thực hiện các lệnh ghi

trong thân của nó ít nhất được một lần.





Ngoài ra, lệnh While kết thúc khi điều kiện sai, lệnh Repeat kết thúc khi điều kiện

đúng.



BÀI TẬP

Bài 1: 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.

Bài 2: Tính tổng: A= 1 +



1 1

1

+ + .... + , n nhập từ bàn phím.

2 3

n



Bài 3:Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N.

Bài 4: Viết chương trình tìm các số có 3 chữ số abc sao cho abc = a3 +b3 + c3.

Bài 5: Viết chương trình in ra màn hình bảng cửu chương

Bài 6: Nhập các số nguyên dương a, b, c. Tìm các nghiệm nguyên dương của phương

trình: ax + by =c

Bài 7: Viết chương trình để tìm lời giải cho bài toán sau:

Vừa gà vừa chó

Bó lại cho tròn

Đủ 36 con, 100 chân chẵn

Hỏi có mấygà mấy chó?

Bài 8: Viết chương trình để tìm lời giải cho bài toán sau:

Trăm trâu trăm cỏ

Trâu đứng ăn năm

Trâu nằm ăn ba

Lọm khọm trâu già

Ba trâu ăn một



Ngôn ngữ lập trình Pascal



58



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu già?

Bài 9: Viết chương trình nhập một số nguyên dương n, sau đó đếm xem từ 1 đến n có bao

nhiêu số chia hết cho 7, in ra màn hình tất cả các ước số của nó là số chẵn.

Bài 10: Số hoàn thiện là số tự nhiên có tổng các ước của nó (không kể chính nó) bằng

chính nó. Viết phương trình kiểm tra xem một số được nhập vào từ bàn phím có phải là số

hoàn thiện hay không? Ví dụ: 6, 28, là các số hoàn thiện.

Bài 11: Viết chương trình nhập vào số nguyên cho đến khi nào gặp số 0 thì kết thúc. Hãy

đếm xem có bao nhiêu số chẵn vừa được nhập vào.

Bài 12: Viết chương trình tính số Pi với độ chính xác Epsilon, biết:

Pi/4 = 1- 1/3 + 1/5 – 1/7 +....

Hướng dẫn: Lặp tới khi t =4/(2*i/+1) ≤ Epsilon thì dừng.

Bài 13: Viết chương trình tìm USCLN và BSCNN của 2 số a, b được nhập từ bàn phím

Bài 14: Viết chương trình làm các công việc sau: Tính diện tích hình chữ nhật, diện tích

tam giác, hình tròn. Dùng lệnh Repeat để lập một Menu lựa chọn công việc theo mẫu

TINH DIEN TICH CAC HINH

1: Hinh chu nhat

2: Hinh tam giac

3: Hinh tron

4: Kết thúc

Lựa chọn một mục của Menu bằng cách ấn số tương ứng

Bài 15: Viết chương trình yêu cầu gõ vào từ bàn phím mật khẩu gồm 4 số 1 9 9 8 ứng với

Chr (49), Chr (57), Chr(57), Chr(56), các ký tự này không hiện lên màn hình (chỉ hiện dấu

*); nếu gõ sai mật khẩu chương trình yêu cầu gõ lại cho đến khi đúng

Bài 16: Bạn có số tiền ban đầu là a đem gửi ngân hàng với lãi suất 1,5% mỗi tháng. Sau

mỗi tháng lãi được nhập vào vốn để tính lãi tháng sau. Bạn muốn để dành đến khi số tiền là

x ( x nhập từ bàn phím x > a )mới rút ra. Vậy phải bạn phải gửi trong thời gian mấy tháng



Ngôn ngữ lập trình Pascal



59



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Bài 17: Viết chương trình nhập một số từ bàn phím kiểm tra xem nó có là số nguyên tố

không (số nguyên tố là số chia hết cho 1 và chính nó)

Bài 18: Viết chương trình phân tích một số ra thừa số nguyên tố. Ví dụ: N = 100 sẽ in ra

màn hình:

100



2



50



2



25



5



5



5



1



Ngôn ngữ lập trình Pascal



60



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Bài 5: CHƯƠNG TRÌNH CON

1. Khái niệm chương trình con

Chương trình con (subprogram) là một đoạn chương trình có chức năng giải quyết

một vấn đề chuyên biệt mà chương trình chính cần phải thực hiện một số lần ứng với các

giá trị khác nhau của tham số.

Chẳng hạn, nếu phải tính một loạt các giá trị e 1, e2, e3, ..., e10 thì ta nên viết một

chương trình con có nhiệm vụ tính ex với x la đối số bất kỳ & đặt tên là EXP(x). Mỗi khi

cần tính một trong các giá trị e 1, e2, ..., e10 , ta chỉ cần gọi tên chương trình con đó nhưng

thay x bằng một giá trị cụ thể 1, 2, ...,10. Tương tự như thế, khi cần nhập dữ liệu cho hai

ma trận A và B, thay vì phải viết hai đoạn chương trình nhập riêng cho A và cho B thì ta

chỉ cần viết một chương trình con có nhiệm vụ nhập dữ liệu cho một ma trận X bất kỳ. Sau

đó trong chương trình chính, để nhập dữ liệu cho A, ta gọi chương trình con đó nhưng thay

X bằng A, và để nhập dữ liệu cho B, ta gọi chương trình con đó nhưng thay X bằng B. Như

vậy mỗi chương trình con thay thế được cho một hay nhiều đoạn chương trình có bản chất

giống nhau.

Việc sử dụng chương trình con không chỉ có tác dụng làm cho chương trình chính

bớt rườm rà, bớt dài dòng mà còn đặc biệt có ý nghĩa trong việc tổ chức chương trình.

Khi phải giải quyết một bài toán lớn, người ta tìm cách chia nó ra thành nhiều bài

toán nhỏ. Mỗi bài toán nhỏ được giải quyết riêng rẽ bằng một chương trình con sẽ dễ dàng

hơn khi phải kiểm tra lỗi và kiểm tra thuật toán. Việc còn lại là ghép các chương trình con

này để tạo thành một chương trình lớn, đó là chương trình chính. Số lệnh trong thân của

chương trình chính sẽ không nhiều, chủ yếu là các lời gọi chương trình con, vì thế người

thảo chương dễ có được một cái nhìn tổng quan toàn bộ chương trình trước khi xem xét

từng chương trình con một cách chi tiết. Ðiều này tương tự như trong dây chuyền sản xuất

công nhiệp, người ta lắp ráp các sản phẩm (như xe máy, ô tô, ti vi, ...) từ các phụ tùng và

các bán sản phẩm được chế tạo sẵn từ nơi khác chuyển đến mà không cần phải tìm hiểu

xem họ đã chế tạo như thế nào.

Có hai loại chương trình con là hàm và thủ tục. Sự khác nhau cơ bản của hàm và

thủ tục là ở chỗ: hàm luôn luôn trả về một giá trị duy nhất thông qua tên hàm và do đó có

thể sử dụng hàm như sử dụng một biểu thức, còn thủ tục thì không trả về giá trị nào qua tên

thủ tục và nó được sử dụng như một lệnh đơn giản.

2. Hàm (FUNCTION)

a. Các đặc trưng của hàm

Các yếu tố đặc trưng cho một hàm gồm có:





Tên hàm







Kiểu dữ liệu của các tham số







Kiểu dữ liệu của giá trị hàm

Ví dụ:



Ngôn ngữ lập trình Pascal



61



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



o Hàm Sqrt(x): cho căn hai của x. Tên hàm là Sqrt, tham số x là nguyên hay thực còn

giá trị hàm kiểu thực, ví dụ Sqrt(4)=2.0.

o Hàm Chr(k): cho ký tự có mã là k. Tên hàm là Chr, tham số k kiểu nguyên còn giá

trị hàm kiểu ký tự, ví dụ Chr(65)=‘A’.

o Hàm Odd(k): cho True hay False tùy theo k là lẻ hay chẵn. Tên hàm là Odd, tham

số k kiểu nguyên và giá trị hàm kiểu lôgic, ví dụ Odd(4)=False.

o Hàm Copy(St, k, n): cho chuỗi con gồm n ký tự của St tính từ vị trí k. Tên hàm là

Copy, có ba tham số là St kiểu chuỗi, k và n kiểu nguyên, và giá trị hàm kiểu chuỗi,

ví dụ Copy(‘ABCD’, 2, 3) = ‘BCD’.

o Hàm Readkey: không có tham số, giá trị hàm kiểu ký tự, hàm nhận một ký tự được

gõ từ bàn phím.

Tóm lại, hàm có thể không có tham số hoặc có một đến nhiều tham số, nhưng hàm luôn trả

về một giá trị duy nhất.

Các tham số luôn luôn phải để trong cặp nháy đơn (), nếu có nhiều tham số thì

chúng phải phân cách nhau bằng dấu phẩy. Mỗi khi gọi hàm (call) ta phải cho các tham số

các giá trị cụ thể phù hợp với kiểu dữ liệu của tham số. Ví dụ:

For k:=1 to 10 do S:= S+ Sqrt(k);

y:= 3* Sqr(2) - Sin(pi/4) ;

Write(Chr(65) );

Cần phân biệt hai trạng thái của các tham số: trạng thái dùng để mô tả hàm và trạng

thái để gọi hàm. Khi khai báo hàm, các tham số chỉ mang tính tượng trưng, nên gọi là tham

số hình thức, còn khi gọi hàm, các tham số phải là các biến hay các giá trị cụ thể nên gọi là

các tham số thực sự.

Ví dụ, khi viết Sqrt(x) thì x là tham số hình thức, nó đại diện cho một giá trị nào đó.

Còn khi gọi hàm y:=Sqrt(4); thì 4 là tham số thực sự.

b. Khai báo hàm tự viết

Tất cả các hàm có sẵn trong Turbo Pascal gọi là các hàm chuẩn, chúng có thể được

sử dụng mà không cần phải khai báo. Tuy nhiên số lượng các hàm chuẩn thường không

đáp ứng được yêu cầu đa dạng của người sử dụng, cho nên khi thảo chương, ta thường phải

tự xây dựng thêm các hàm mới.

Các hàm tự viết cần phải được khai báo, theo cú pháp sau:

Function Tênhàm(tênthamsố: kiểuthamsố): kiểugiátrị;

{ Các khai báo dùng trong hàm }



Ngôn ngữ lập trình Pascal



62



Xem Thêm
Tải bản đầy đủ (.doc) (141 trang)

×