Bài 8: lặp với số lần chưa biết trước - Câu trang SGK tin học

Hãy tìm hiểu các thuật toán sau đây và cho biết khi thực hiện thuật toán, máy tính sẽ bao nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu? Viết chương trình Pascal thể hiện các thuật toán đó!

Câu 1 trang 70 SGK tin học 8

Em hãy nêu một vài ví dụ về hoạt động lặp với số lần chưa biết trước

Lời giải :

- Tập lái xe đến khi biết lái

- Học thuộc lòng một bài thơ cho tới khi bố mẹ kiểmtra là đã thuộc thì mới kết thúc, nếu không thì phảihọc lại


Câu 3 trang 70 SGK tin học 8

Hãy tìm hiểu các thuật toán sau đây và cho biết khi thực hiện thuật toán, máy tính sẽ bao
nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu? Viết chương trình Pascal thể
hiện các thuật toán đó!

a) Thuật toán 1

Bước 1. S

Bước 2. Nếu S 5.2, chuyển tới bớc 4.

Bước 3. S

Bước 4. Thông báo S và kết thúc thuật toán.

b) Thuật toán 2

Bước 1. S 10, n 0.

Bước 2. Nếu S 10, chuyển tới bớc 4.

Bước 3. n n + 3, S = S-n quay lại bước 2.

Bước 4. Thông báo S và kết thúc thuật toán.

Lời giải :

a. Thuật toán 1 :

Máytínhsẽthựchiện 10vòng lặp , khi kết thúc thuật toán giá trị của S = 5.0

Đoạn chương trình Pascal tương ứng:

S := 10; x := 0.5;

While S > 5.2 do

S := S x;

Writeln(S);

b. Thuật toán 2 :

Máytínhsẽkhôngthựchiệnvònglặpnào do điềukiệnkhôngthỏamãn, khikếtthúcthuậttoángiátrịcủa S = 10

Đoạn chương trình Pascal tương ứng:

S := 10; n := 0;

While S < 10 do

Begin

n := n + 3;

S := S n

End;

Writeln(S);


Câu 4 trang 71 SGK tin học 8

Hãy tìm hiểu mỗi đoạn lệnh sau đây và cho biết với đoạn lệnh đó chương trình thực hiện bao nhiêu vòng lặp ? Hãy rút ra nhận xét của em.

a. S := 0; n := 0;

While S <= 10 do

begin n := n + 1 ;

S := S + n end;

b. S := 0; n := 0;

While S <= 10 do

n := n + 1 ;

S := S + n ;

Lời giải :

a.

Đoạnchươngtrìnhtrênmáytínhthựchiện 5 vònglặp :

VL

n := n+1

S := S+n

1 1 1 2 2 3 3 3 6 4 4 10 5 5 15


b. Đoạn chương trình trên máy tính lặp vô hạn lần.


Câu 2 trang 70 SGK tin học 8

Sự khác nhau giữa câu lệnh lặp với số lần chưa biết trước và câu lệnh lặp với số lần biết trước?

Lời giải :

Câu lệnh lặp với số lần biết trước :

- Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần đã được xác định từ trước.

- Điều kiện là 1 giá trị của 1 biến đếm có giá trị nguyên

Câu lệnh lặp với số lần chưa biết trước :

- Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần lặp chưa biết trước.

- Điều kiện tổng quát hơn, có thể là kiểm tra của 1 giá trị có thực, cũng có thể là 1 điều kiện tổng quát khác.


Câu 5 trang 70 SGK Tin học lớp 8

Hãy chỉ ra lỗi trong các câu lệnh sau đây:

a) X:= 10; while X: = 10 do X: = X + 5;

b) X:= 10; while X = 10 do X = X + 5;

c) S:= 0; n:=0;

while S <= 10 do n:= n + 1; S:= S + n ;

Lời giải :

a. Sai ở : while X:=10

X:= 10; while X: = 10 do X: = X + 5;

sửa thànhX:= 10; while X = 10 do X : = X + 5;

b. Sai ở :X = X + 5

X:= 10; while X = 10 do X = X + 5;

Sửa thành : X:= 10; while X = 10 do X : = X + 5;

c. Thiếu begin và end trong vòng lặp

Sửa thành

S:= 0; n:=0;

while S <= 10 do Begin n:= n + 1; S:= S + n ;end;