Pascal - Câu lệnh while

Khởi đầu biến i được gán gía trị 1 (dòng {9}). Trong vòng lặp WHILE,

sau mỗi lệnh S:=S*i; biến i được tăng lên 1 đơn vị bằng lệnh i:= i+1; (dòng

{13}). Khi i=N+1 thì điều kiện i<=N bị sai và lúc đó vòng lặp kết thúc, kết

qủa là lệnh S:=S*i; được thực hiện đúng N lầ? ứng với i=1, 2, 3, ., N.

pdf7 trang | Chia sẻ: maiphuongdc | Lượt xem: 6942 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Pascal - Câu lệnh while, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CÂU LỆNH WHILE 9.2.1. Cú pháp, lưu đồ, cách thức hoạt động : Cú pháp: WHILE Ðiềukiện DO LệnhP ; Ý nghĩa : Chừng nào Ðiềukiện còn đúng thì cứ làm LệnhP , cho đến khi Ðiềukiện sai thì không làm LệnhP nữa mà chuyển sang lệnh kế tiếp ở phía dưới. Cách thức hoạt động của WHILE: Bước 1: Nếu Ðiềukiện sai thì chuyển ngay sang lệnh kế tiếp sau LệnhP, ngược lại, nếu Ðiềukiện đúng thì làm LệnhP, rồi quay lại bước 1. Lệnh P được gọi là thân của vòng lặp WHILE. Nếu Ðiềukiện không bao giờ sai thì LệnhP sẽ phải làm hoài, lúc đó ta có vòng lặp vô hạn. Trong trường hợp này, để dừng chương trình, hãy gõ đồng thời hai phím Ctrl và Pause ( viết tắt là ^Pause). Ðể tránh các vòng lặp vô hạn, trong thân của vòng WHILE 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ẽ sai và do đó vòng lặp sẽ kết thúc. 9.2.2. Các ví dụ về lệnh While : Ví dụ 9.10 : Nhập số tự nhiên N, dùng lệnh WHILE tính S=N!: PROGRAM VIDU910; { Tinh S=N! bằng lệnh WHILE..} Var N, i : Integer; S : LongInt; Begin Write(‘ Nhập N > 0 : ‘ ); Readln(N); S:=1; i :=1; {9} While i<= N do begin S:=S*i; i:=i+1; {13} end; Writeln(‘ Giai thua = ‘, S); Readln; End. Chạy Chép file nguồn Khởi đầu biến i được gán gía trị 1 (dòng {9}). Trong vòng lặp WHILE, sau mỗi lệnh S:=S*i; biến i được tăng lên 1 đơn vị bằng lệnh i:=i+1; (dòng {13}). Khi i=N+1 thì điều kiện i<=N bị sai và lúc đó vòng lặp kết thúc, kết qủa là lệnh S:=S*i; được thực hiện đúng N lầ? ứng với i=1, 2, 3, ..., N. Trong chương trình trên, nếu không có dòng lệnh {13}: i:=i+1; thì i luôn luôn bằng 1 nên điều kiện i<=N luôn luôn đúng (vì N 1), và do đó vòng lặp sẽ vô hạn . Sự khác nhau của lệnh WHILE so với FOR là ở chỗ: trong lệnh FOR, biến i được tự động gán gía trị ban đầu và sau mỗi bước lặp được tự động tăng lên, còn trong WHILE thì không, ta phải viết các lệnh đó. Tất cả các bài toán giải quyết được bằng lệnh FOR thì đều giải quyết được bằng lệnh WHILE. Ðặc điểm chung của các bài toán dạng này là số lần lặp của các vòng lặp đã được biết trước. Lệnh WHILE đặc biệt thích hợp với các vòng lặp có số lần lặp chưa biết trước, trong khi lệnh FOR không giải quyết được. Ðây chính là điểm mạnh của lệnh WHILE. Hãy xem ví dụ sau. Ví dụ 9.11: Trở lại bài toán tính tiền gửi ngân hàng có tiền lãi hàng tháng gộp vào vốn (ví dụ 9.9). Câu hỏi bây giờ là: cần gửi tối thiểu là bao nhiêu tháng để có được số tiền S cho trước. Giả sử tiền vốn là 100, lãi suất hàng tháng là 2%, số tiền cần có là S=108. Ta tính số tiền có được sau mỗi tháng gửi: Sau 1 tháng gửi: Số tiền=100 + 100*0.02 = 102 Sau 2 tháng gửi: Số tiền=102 + 102*0.02 = 104.04 Sau 3 tháng gửi: Số tiền=104.04 + 104.04*0.02 = 106.1208 Sau 4 tháng gửi: Số tiền=106.1208 + 106.1208*0.02 = 108.2432 Vậy chỉ cần gửi N=4 tháng, số tiền sẽ có là 108.2431. Qúa trình lặp kết thúc khi tới tháng đầu tiên có Số tiền S. Chương trình như sau: PROGRAM VIDU911; { Tính số tháng gửi ngân hàng để có số tiền S } Var Tienvon, Laisuat, Sotien, S : Real; N : Byte; Begin Write(‘ Nhập tiền vốn, lãi suất và số tiền S cần có: ‘); Readln(Tienvon, Laisuat, S); Sotien:=Tienvon; N:=0; { N là số tháng gửi } While Sotien< S do begin N:=N+1; Sotien:= Tienvon + Tienvon*Laisuat ; Tienvon:=Sotien; end; Writeln(‘ Cần gửi ‘, N , ‘ tháng ‘); Writeln(‘ Số tiền sẽ có = ‘ , Sotien:6:2); Readln; End. Chạy Chép file nguồn Số lần lặp của lệnh: While Sotien < S do . . . không phải do ta ấn định từ trước mà tùy thuộc vào biểu thức Sotien < S là mau bị sai hay chậm bị sai. Số lần lặp ít hay nhiều phụ thuộc vào gía trị S nhỏ hay lớn và vào tốc độ tăng nhanh hay chậm của số tiền.

Các file đính kèm theo tài liệu này:

  • pdfcau_lenh_while_1696.pdf
Tài liệu liên quan