Tải bản đầy đủ - 0 (trang)
Xây dựng hệ thống các câu hỏi/bài tập đánh giá theo các mức độ

Xây dựng hệ thống các câu hỏi/bài tập đánh giá theo các mức độ

Tải bản đầy đủ - 0trang

Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Bài

thập

thực

hành

(TH)



3. Câu

lệnh

lặp

while

– do,

Repeat

– until

(ND3)



Bài

tập

định

tính

(DT)



Bài

tập

định

lượng

(DL)



HS sửa lỗi

lệnh lặp for do trong

chương trình

quen thuộc có

lỗi.



HS mơ tả cấu

trúc, ý nghĩa

lệnh while –

do, repeat until.

Câu hỏi:

ND3.DT.NB.*

HS biết cơ chế

hoạt động của

câu lệnh while

– do, repeat –

until để chỉ ra

được hoạt

động một lệnh

dạng while –

do hoặc repeat

- until cụ thể.



Câu hỏi:

ND3.DL.NB.

*

Bài

thập

thực

hành

(TH)



GV: Nguyễn Thị Huệ



Câu hỏi:

ND2.TH.TH.

*

HS chỉ ra

được các

thành phần

của một câu

lệnh while –

do, repeat –

until cụ thể.

Câu hỏi:

ND3.DT.TH.*

HS hiểu cơ

chế hoạt động

của câu lệnh

while – do,

repeat - until.

để giải thích

được hoạt

động một tập

lệnh cụ thể

chứa while –

do, repeat until.

Câu hỏi:

ND3.DL.TH.

*

HS sửa lỗi

lệnh lặp while

– do, repeat until trong

chương trình

quen thuộc có

lỗi.

11



HS vận dụng

câu lệnh for –

do kết hợp với

các lệnh khác

đã học để viết

được chương

trình hồn chỉnh

giải quyết vấn

đề trong tình

huống quen

thuộc.

Câu hỏi:

ND2.TH.VDT.*



Sử dụng câu

lệnh lặp for – do

giải quyết bài

toán mới



Câu hỏi:

ND2.TH.VDC.

*



Phân biệt câu

lệnh while – do

và repeat – until



Câu hỏi:

ND3.DT.VDT.*

HS viết được

câu lệnh lặp

while – do,

repeat - until.

thực hiện một

tình huống quen

thuộc.



HS viết được

câu lệnh lặp

while – do,

repeat - until.

thực hiện một

tình huống mới.



Câu hỏi:

Câu hỏi:

ND3.DL.VDT.* ND3.DL.VDC.

*

HS vận dụng

câu lệnh while

– do, repeat until kết hợp

với các lệnh

khác đã học để

viết được



Sử dụng câu

lệnh lặp while –

do, repeat –

until giải quyết

bài toán mới



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Câu hỏi:

ND3.TH.TH.

*



chương trình

hồn trong tình

huống quen

thuộc.

Câu hỏi:

Câu hỏi:

ND3.TH.VDT.* ND3.TH.VDC.

*



b) Nội dung các câu hỏi và đáp án theo các mức độ đã thiết kế

Nội dung 1 (ND1): Khái niệm lặp, cấu trúc lặp

Câu ND1.DT.NB.1: Em hãy nêu khái niệm lặp, cấu trúc lặp?

Đáp án: - Lặp là việc thực hiện lặp đi lặp lại một cơng việc nào đó

- Cấu trúc lặp là dùng các thao tác để thể hiện việc lặp nào đó trong thuật toán.

Câu ND1.DT.TH.1: Chọn phát biểu sai trong số các phát biểu sau đây:

A. Để mô tả việc lặp đi lặp lại một số thao tác (câu lệnh) trong một thuật tốn ta có thể

dùng cấu trúc lặp

B. Tùy từng trường hợp cụ thể, khi thì ta biết trước số lần lặp, khi thì ta khơng cần

hoặc khơng xác định được trước số lần lặp các thao tác nào đó

C. Có thể dùng cấu trúc lặp để thay thể cho cấu trúc rẽ nhánh trong mơ tả thuật tốn

D. Khơng thể mơ tả được mọi thuật tốn bằng NNLT bậc cao nếu không dùng cấu trúc

lặp.

Đáp án: C

Nội dung 2 (ND2): Câu lệnh lặp for - do

Câu ND2.DT.NB.1: Cú pháp lệnh lặp For – do dạng lùi:

A. for < biến đếm> = < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

B. for < biến đếm> := < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

C. for < biến đếm> = < Giá trị cuối >down < Giá trị đầu > do < câu lệnh >;

D. for < biến đếm> := < Giá trị đầu >downto < Giá trị cuối > do < câu lệnh>;

Đáp án: B

Câu ND2.DT.NB.2: Cú pháp lệnh lặp For – do dạng tiến:

A. for < biến đếm> = < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

B. for < biến đếm> := < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

C. for < biến đếm> = < Giá trị cuối >down < Giá trị đầu > do < câu lệnh >;

D. for < biến đếm> := < Giá trị đầu > to < Giá trị cuối > do < câu lệnh>;

Đáp án: D

Câu ND2.DT.NB.3: Kiểu dữ liệu của biến đếm trong lệnh lặp For – do:

A. Cùng kiểu với giá trị đầu và giá trị cuối

B. Chỉ cần khác kiểu với giá trị đầu

C. Cùng kiểu với các biến trong câu lệnh

D. Không cần phải xác định kiểu dữ liệu

Đáp án: A

GV: Nguyễn Thị Huệ



12



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Câu ND2.DT.NB.4: Trong lệnh lặp For := downto
đầu> do:

A. Giá trị đầu phải nhỏ hơn giá trị cuối

B. Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối

C. Giá trị đầu phải lớn hơn giá trị cuối

D. Giá trị đầu phải bằng giá trị cuối

Đáp án: B

Câu ND2.DT.TH.1: Câu lệnh lặp for – do nào sau đây là đúng cú pháp?

A. For i= -10 to 0 do d:=d+1;

B. For i:= -10 to 0 do d:= d+1;

C. For i:=0.5 to -10.5 do d:= d+1;

D. For i= 0.5 to 10.5 do d:=d+1;

Đáp án: B

Câu ND2.DT.TH.2: Trong các đoạn lệnh sau, đoạn lệnh nào có câu lệnh sau do

được thực hiện ít nhất 1 lần?

A. For i:=1 to 10 do writeln(‘A’);

B. For i:= 1.5 to 10.5 do writeln(‘A’);

C. For i=1 to 10 do writeln(‘A’);

D. For i:= 100 to 1 do writeln(‘A’);

Đáp án: A

Câu ND2.DT.TH.3: Đâu là câu lệnh lặp for – do dạng lùi đúng:

A. For i:=1 to -10 do s:=s+I;

B. For i:= -10 to 1 do s:= s+ I;

C. For i:= 10.5 downto 1 do s:= s+I;

D. For i:= 0 downto -10 do s:= s+I;

Đáp án: D

Câu ND2.DT.TH.4: Cấu trúc lệnh lặp sau, biến đếm khơng thể có kiểu dữ liệu là?

for := to do ;

A. Real

B. Boolean

C. Byte

D. Char

Đáp án: A

Câu ND2.DT.TH.5: Với NNLT Pascal câu lệnh lặp: x:=0; for i:=’1’ to ‘9’ do

X:=x+ord(i)-48; thì biến đếm i phải được khai báo bằng kiểu dữ liệu nào?

A. Integer

B. Real

C. Char

D. Boolean

Đáp án: A

Câu ND2.DT.TH.6: Với NNLT Pascal câu lệnh lặp for c:=90 downto 65 do

write(chr(c),#32); thì biến đếm c có thể được khai báo bằng kiểu dữ liệu nào?

A. Integer

B. Real

C. Char

D. Boolean

Đáp án: C

Câu ND2.DL.NB.1: Các đoạn lệnh sau đây, đoạn lệnh nào mà câu lệnh write(i,#32)

không được thực hiện lần nào?

A. For i:=’A’ to ‘Z’ do write(i,#32);

B. For i:= ‘Z’ to ‘A’ do write(i,#32);

C. For i:= ‘Z’ downto ‘A’ do write(i,#32);D. For i:=’0’ to ‘9’ do writeln(i,#32);

Đáp án: B

Câu ND2.DL.TH.1: Sau khi thực hiện đoạn lệnh sau. Giá trị của i, t, d bằng bao

nhiêu?

A:=1; b:= 10; t:=0; d:=0; For i:= a to b do if i mod 3=1 then begin t:= t+i;inc(d) end;

Đáp án: i= 10, t= 22, d= 4

GV: Nguyễn Thị Huệ



13



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Câu ND2.DL.TH.2: Trong NNLT Pascal đoạn chương trình sau đưa ra màn hình kết

quả gì? For i:= 1 to 10 do write(i,#32);

A. 1 2 3 4 5 6 7 8 9 10

B. 12345678910

C. 10 9 8 7 6 5 4 3 2 1

D. Không đưa ra kết quả gì

Đáp án: A

Câu ND2.DL.TH.3: Trong NNLT Pascal đoạn chương trình sau đưa ra màn hình kết

quả gì?

For i:= 10 to 1 do write(i,#32);

A. 1 2 3 4 5 6 7 8 9 10

B. 12345678910

C. 10 9 8 7 6 5 4 3 2 1

D. Không đưa ra kết quả gì

Đáp án: D

Câu ND2.DL.TH.4: Trong NNLT Pascal, sau khi thực hiện đoạn chương trình sau giá

trị của T bằng bao nhiêu?

T:=0; for i:= 1 to 10 do if (i mod 3= 0) or (i mod 5=0) then T:= T + i;

A. T= 18

B. T= 15

C. T= 33

D. T= 0

Đáp án: C

Câu ND2.DL.TH.5: Cho đoạn chương trình:

For i:=1 to 10 do if I mod 2=0 then write(i);

Số lần thực hiện câu lệnh write(i) là:

A. 10

B. 9

C. 1

D. 5

Đáp án: D

Câu ND2.DL.TH.6: Cho chương trình sau:



Phát biểu nào sau đây là đúng?

A. Đây là chương trình đếm số các số chia hết cho 3

B. Đây là chương trình đếm và thơng báo ra màn hình trong khoảng từ 1 đến 10000 có

M số là bội số của 3 và N số là bội số đồng thời của cả 3 và 5.

C. Đây là chương trình đếm và thơng báo ra màn hình trong khoảng từ 1 đến 10000 có

N số là bội số của 3 và M số là bội số đồng thời của cả 3 và 5

D. Đây là chương trình đếm số các số chia hết cho 3 và 5 trong khoảng từ 1 đến 10 4.

Đáp án: B

Câu ND2.DL.TH.7: Kết quả đoạn lệnh sau:

GV: Nguyễn Thị Huệ



14



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Write(‘Nhap a=’); readln(a);

If a<=1 then kt:=false else

If (a=2)or(a=3) then kt:=true else

Begin Kt:= true;

For i:=2 to trunc(sqrt(a)) do

If a mod I =0 then begin kt:=

false;

break; end;

End;

Điền kết quả vào bảng?

Đáp án:



GV: Nguyễn Thị Huệ



15



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



a

Trunc(sqrt(a)) i

kt

0

0

0

FALSE

2

1

0

TRUE

20

4

2

FALSE

31

5

5

TRUE

Câu ND2.DL.VDT.1: Viết câu lệnh hiển thị ra màn hình:

Sử dụng câu lệnh lặp for – do

Lệnh 1

Lệnh 2

1

5

Đáp án:

2

4

Lệnh 1: For i:=1 to 5 do writeln(i);

3

3

Lệnh 2: For i:=5 downto 1 do

4

2

writeln(i);

5

1

Câu ND2.DL.VDT.2: Viết câu lệnh hiển thị ra 10 dòng: Hoc Pascal?

Đáp án: For i :=1 to 10 do Writeln(‘Hoc Pascal’) ; Hoặc

For i:=10 downto 1 do Writeln(‘Hoc Pascal’) ;

Câu ND2.DL.VDT.3: Viết câu lệnh lặp tương ứng có sử dụng cấu trúc lặp for – do với

bài toán:

Đáp án: S:=1/a;

Dạng tiến: For i:=1 to 100 do S:= S+1/(a+i);

Dạng lùi: For i:=100 downto 1 do S:= S+1/(a+i);

Câu ND2.DL.VDT.4: Đề giải bài toán ta dùng lệnh lặp nào dưới đây:

A. For i:=1 to n do a:=a+1/n;

B. For n:=1 to 100 do a:=a+ 1/n;

C. For n:=100 to 1 do a:=a+1/n

D. For i:=1 to 100 do a:=a+1/n;

Đáp án: B

Câu ND2.DL.VDC.1: Viết đoạn lệnh đếm số các số chẵn, số các số lẻ mà chia hết cho

3 trong khoảng từ a đến b (a, b là nguyên dương và a
Đáp án: Dc:=0; dl:=0;

For i:=a to b do begin

If I mod 2=0 then inc(dc);

If (I mod 2=1)and(I mod 3=0) then inc(dl);

End;

Write(‘So cac so chan: ‘,dc,’; so cac so le chia het cho 3: ‘,dl);

Câu ND2.DL.VDC.2: Hãy viết câu lệnh lặp for – do để hiển thị các kí tự có mã từ 48

đến 122 trong bảng mã ASCII (viết theo hai dạng tiến và lùi)?

Đáp án: Dạng tiến: For i:=48 to 122 do write(ord(i),#32);

Dạng lùi: For i:=122 downto 48 do write(ord(i),#32);

Câu ND2.TH.TH.1: Muốn hiển thị các kí tự từ ‘a’ về kí tự ‘Z’ trong bảng mã ASCII

ta sử dụng đoạn lệnh sau có được khơng? Nếu không được sẽ phải thay đổi như thế

nào? For i:= ‘a’ to ‘Z’ do write(I, #32);

Đáp án: do kí tự ‘a’ có mã là 97, kí tự ‘Z’ có mã 90 do vậy ta không dùng được cấu

trúc for – to – do mà ta có thể thay: For i:= ‘a’ downto ‘Z’ do write(I, #32);

Câu ND2.TH.TH.2: Cho đoạn chương trình sau:

GV: Nguyễn Thị Huệ



16



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Var i: byte; Begin For i:= ‘0’ to ‘9’ do write(ord(i),#32);

readln; End.

Chỉ ra lỗi của đoạn chương trình trên

Đáp án: do kí tự ‘0’..’9’ là dạng kí tự chứ khơng phải dạng số do vậy ta phải khai báo

I là kiểu kí tự (char)

Câu ND2.TH.VDT.1: Viết chương trình có sử dụng câu lệnh lặp for – do hiển thị ra

màn hình câu: “Chao ban! Ban co khoe khong?” 5 lần trên màn hình?

Đáp án:

Var i: byte;

Begin for i:=1 to 5 do writeln(“Chao ban! Ban co khoe khong?’); readln end.

Câu ND2.TH.VDT.2: Viết chương trình hồn chỉnh tính tổng theo cơng thức

với a>=2

Đáp án:

Var a, S: real; i: byte;

Begin readln(a); s:= 1/a;

For i:=1 to 100 do s:= s+ 1/(a+i);

Write(‘s= ‘,s:0:2); readln

End.

Câu ND2.TH.VDT.3. Viết chương trình tính tổng: với n là số ngun được nhập vào

từ bàn phím (0
Đáp án:

Var s: real; I, n: word; mau: longint;

Begin

Write(‘Nhap n=’); readln(n);

S:=1;

For i:=2 to n do {For i:=n downto 2 do } s:=s+ 1/sqr(i);

Write(‘S= ‘,S);

Readln;

End.

Câu ND2.TH.VDC.1: Tính số Fibonacci thứ n (n<=45) theo công thức truy hồi sau:



Đáp án:

var f1,f2,f, i,n: longint;

begin

readln(n); f1:=1; f2:=1;

for i:=3 to n do

begin

f:=f1+f2;

f1:=f2;

f2:=f;

end; writeln;

write('So fibo thu ',n,' la: ',f);

readln

end.

Câu ND2.TH.VDC.2: Lập trình nhập vào một số nguyên dương n (n<=2x10 9). Kiểm

tra n có phải là số ngun tố hay khơng? Đưa ra màn hình dòng thơng báo kết quả?

Đáp án:

GV: Nguyễn Thị Huệ



17



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Var a, i: longint; kt: boolean;

Begin Write(‘Nhap a=’); readln(a);

If a<=1 then kt:=false else

If (a=2)or(a=3) then kt:=true else

Begin

kt:= true;

For i:=2 to trunc(sqrt(a)) do

If a mod I =0 then begin kt:= false; break; end;

End;

If kt=false then writeln(a,’ khong la so nguyen to’)

else writeln(a,’ la so nguyen to’); Readln;

End.

Nội dung 3 (ND3): Câu lệnh lặp while - do

Câu ND3.DT.NB.1: Trong các cấu trúc sau, đâu là cú pháp đúng của câu lệnh lặp

với số lần lặp chưa biết trong Pascal?

A. While do <điều kiện>;

B. for <điều kiện> do ;

C. While <điều kiện> do ;

D. While <điều kiện> for ;

Đáp án: C

Câu ND3.DT.NB.2: Trong cấu trúc while <điều kiện> do ; thì điều kiện

có thể là:

A. Biểu thức số học

B. Biểu thức logic

C. Hằng số học

D. Từ khóa

Đáp án: B

Câu ND3.DT.NB.3: Trong các cấu trúc sau, đâu là cú pháp đúng của câu lệnh lặp

với số lần lặp chưa biết trong Pascal?

A. Repeat ; Until <điều kiện>;

B. Repeat <điều kiện> do ;

C. Repeat <điều kiện>; Until ;

D. Repeat <điều kiện> for ;

Đáp án: A

Câu ND3.DT.TH.1: Trong vòng lặp While <điều kiện> do ; câu lệnh

được thực hiện khi:

A. Điều kiện còn đúng

B. Điều kiện còn sai

C. Điều kiện khơng xác định

D. Không cần điều kiện

Đáp án: A

Câu ND3.DT.TH.2: Trong cấu trúc Repeat ; until <điều kiện>; thì câu lệnh

tiếp tục được thực hiện khi:

A. Biểu thức điều kiện đúng

B. Biểu thức điều kiện sai

Đáp án: B

Câu ND3.DT.TH.3: Có thể dùng câu lệnh While – do thay cho câu lệnh For – do

được không?

A. Không thể thay thế

B. Chỉ thay thế được khi vòng lặp đó chưa biết số lần lặp.

GV: Nguyễn Thị Huệ



18



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



C. Luôn thay thế được

D. Tỉ lệ thay thế được là 50%

Đáp án: C

Câu ND3.DT.TH.4: Vòng lặp While <điều kiện> do ; kết thúc khi nào

A. Khi một điều kiện cho trước được thỏa mãn

B. Khi đủ số vòng lặp

C. Khi tìm được Output

D. Tất cả các phương án

Đáp án: A

Câu ND3.DT.VDT.1: Hãy chỉ ra sự khác nhau giữa câu lệnh while – do và câu lệnh

repeat – until?

Đáp án:

While <điều kiện> do ;

Repeat ; until <điều kiện>;

Điều kiện đúng thì câu lệnh được thực Điều kiện sai thì câu lệnh được thực hiện

hiện

Câu lệnh có thể khơng được thực hiện Câu lệnh được thực hiện ít nhất 1 lần

lần nào

Câu lệnh sau do là câu lệnh ghép phải Câu lệnh trong repeat-until nếu là các câu

sử dụng begin ..end;

lệnh đơn thì khơng cần begin..end;

Câu ND3.DL.NB.1: Cho đoạn lệnh sau:

A:=1; While a<10 do a:= a+2;

Câu lệnh a:= a+2; được thực hiện bao nhiêu lần?

Đáp án: 5 lần

Câu ND3.DL.NB.2: Cho đoạn lệnh sau:

A:=1; Repeat a:=a+2; until a>11;

Câu lệnh a:= a+2; được thực hiện bao nhiêu lần?

Đáp án: 6 lần

Câu ND3.DL.TH.1: a) Cho đoạn lệnh sau: a:=1; while a<=s do a:=a*2; cho s=8 thì

kết quả A là bao nhiêu sau khi thực hiện đoạn lệnh? Đáp án: a= 16

b) Cho đoạn lệnh sau: a:=1; repeat a:=a *2; until a>=s; cho s=8 thì kết quả a là bao

nhiêu sau khi thực hiện đoạn lệnh? Đáp án: a= 8

Câu ND3.DL.TH.2: Đoạn chương trình sau giải bài tốn nào?

While not (1/(a+N) < 0.0001) do

Begin

N:=N+1;

S:=S+ 1.0/(a+N);



End;



A. Tính tổng các số nhỏ hơn 0,0001

B. Tính tổng các số lớn hơn 0,0001

C. Tính tổng cho đến khi

D. Tính tổng cho đến khi

Đáp án: D

Câu ND3.DL.TH.3: Đoạn chương trình sau làm cơng việc gì?

While a < (b+25) do



readln(a,b);



A. Lặp lại việc nhập a,b cho đến khi a < b+25

B. Lặp lại việc nhập a,b cho đến khi a> b+25

C. Lặp lại việc nhập a,b cho đến khi a ≥ b+ 25

GV: Nguyễn Thị Huệ



19



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



D. Lặp lại việc nhập a,b cho đến khi a ≤ b+25

Đáp án: C

Câu ND3.DL.VDT.1: Sử dụng câu lệnh lặp while – do hoặc repeat – until viết đoạn

chương trình kiểm tra một số a nhập vào thỏa mản a>2 và a<104 thì dừng lại, còn

khơng thỏa mãn thì vẫn tiếp tục nhập

Đáp án: - Sử dụng while – do: readln(a); while (a<=2)or(a>=1e4) do readln(a);

-



Sử dụng repeat – until: repeat readln(a); until (a>2)and(a<1e4);



Câu ND3.DL.VDT.2: Sử dụng câu lệnh lặp while – do hoặc repeat – until để thực

hiện viết đoạn lệnh tính S cho bài toán sau:

a) với a>=2

b) cho đến khi

c) S = 1 + 2 + 3 + … + n + … cho đến khi S>108

Đáp án:

a) Sử dụng while – do:

Sử dụng repeat – until:

S:= 1/a; i:=1;

S:= 1/a; i:=1;

Repeat s:=s+1/(a+i); inc(i);

While i<=100 do begin s:=s+ 1/

until i>100;

(a+i); inc(i);end;

b)

c) Sử dụng while – do:

Sử dụng repeat – until:

S:=1/a; i:=1;

S:= 1/a; i:=1;

While 1/(a+i)>=1e-4 do begin

Repeat s:=s+1/(a+i); inc(i);

s:=s+ 1/(a+i); inc(i); end;

until 1/(a+i)<1e-4;

d)

e) Sử dụng while – do:

Sử dụng repeat – until:

S:= 1; i:=2;

I:=1; s:=0;

While s<=1e8 do begin s:=s+ i;

Repeat s:=s+I; inc(i); until

inc(i);end;

s>1e8;

Câu ND3.DL.VDC.1: Viết đoạn lệnh tìm UCLN của 2 số a, b nguyên dương.

Đáp án:

 Phương pháp trừ:

o While – do:

While a<>b do if a>b then a:=a-b else b:=b-a;

o Repeat – Until: Repeat if a>b then a:=a-b else b:=b-a; until a=b;

 Phương pháp chia:

o While – do:

While b<>0 do begin r:= a mod b; a:=b; b:=r;end;

o Repeat – Until: Repeat r:=a mod b; a:=b; b:=r; until b=0;

Câu ND3.TH.TH.1: Để giải quyết bài tốn: nhập số x>=-10 và x<=100, nếu số nhập

vào khơng thỏa mãn điều kiện thì yêu cầu nhập lại. Hãy quan sát đoạn lệnh sau:

Readln(x); while (x>=-10)and(x<=100) do readln(x);

Đoạn lệnh này có thể giải quyết được bài tốn trên khơng? Nếu không hãy viết lại

đoạn lệnh sao cho đúng



GV: Nguyễn Thị Huệ



20



Trường THPT Liễn Sơn



Chuyên đề dạy học: Cấu trúc lặp – Tin học 11



Đáp án: Đoạn lệnh không giải quyết được bài tốn trên. Có thể thay đổi đoạn lệnh như

sau: Cách 1: Sử dụng while – do viết lại đoạn lệnh:

Readln(x); while (x<-10)or(x>100) do readln(x);

Cách 2: Sử dụng repeat – until viết lại đoạn lệnh:

Repeat readln(x); until (x>=-10)and(x<=100);

Câu ND3.TH.VDT.1: Viết chương trình giải bài tốn (sử dụng while – do, repeat –

until), có kiểm tra dữ liệu đầu vào:

Tính và đưa kết quả ra màn hình: Với a là số nguyên và 104>a>=2, xét các bài toán:

cho đến khi <0.0001

Đáp án:

- Sử dụng while – do:

var a,s: real; i:longint;

begin

readln(a);while (a<2)or(a>=1e4) do readln(a);

s:=1/a;i:=1;

while 1/(a+i)>=0.0001 do

begin

s:=s+1/(a+i); inc(i);

end;

writeln('s= ',s:0:2);

readln

end.

- Sử dụng repeat – until:

var a,s: real; i:longint;

begin

repeat readln(a);

until (a>=2)and(a<1e4);

s:=0;i:=0;

repeat

s:=s+1/(a+i);

inc(i);

until 1/(a+i)<=1e-4;

writeln('s= ',s:0:2);

readln

end.

Câu ND3.TH.VDT.2: Viết chương trình tính số fibonacci thứ n (0
nguyên dựa vào công thức truy hồi sau. Kiểm tra dữ liệu đầu vào thỏa mãn đề bài (Sử

dụng lệnh lặp while – do, repeat – until)



- Sử dụng while – do

var f1,f2,f, i,n: longint;

begin

readln(n); while (n<=0)or(n>=46) do readln(n);f1:=1; f2:=1;i:=3;

while i<=n do begin f:=f1+f2;

f1:=f2;f2:=f;

inc(i);end;

write('So fibo thu ',n,' la: ',f);readln

end.

- Sử dụng repeat – until

var f1,f2,f, i,n: longint;

begin

repeat readln(n); until (n>0)and(n<46);

f1:=1; f2:=1;

i:=3;

Repeat f:=f1+f2; f1:=f2; f2:=f; inc(i);

until i>n;

write('So fibo thu ',n,' la: ',f);

readln

end.

GV: Nguyễn Thị Huệ



21



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Xây dựng hệ thống các câu hỏi/bài tập đánh giá theo các mức độ

Tải bản đầy đủ ngay(0 tr)

×