1. Trang chủ
  2. » Giáo án - Bài giảng

CHUYÊN ĐỀ: CẤU TRÚC LẶP TRONG PASCAL

45 810 3

Đ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

Định dạng
Số trang 45
Dung lượng 2,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Qua hơn bảy năm dạy đội tuyển học sinh giỏi tin học, hơn bốn năm dạy chương trình chính khóa tin học lớp 11. Tôi nhận thấy cấu trúc lặp là không thể thiếu trong hầu hết các bài toán khi lập trình. Từ những kinh nghiệm mà tôi có được, cùng quá trình tìm hiểu về cấu trúc lặp trong Pascal tôi nhận thấy rất học sinh gặp nhiều khó khăn khi học về cấu trúc lặp. Do vậy, tôi nghiên cứu cách dạy học phần cấu trúc lặp trong Pascal thông qua chuyên đề: Cấu trúc lặp trong Pascal. Giúp học sinh học sẽ dễ hiểu hơn khi tiếp cận về cấu trúc lặp.

Trang 1

TRƯỜNG THPT LIỄN SƠN

Trang 2

MỤC LỤC

MỤC LỤC 2

MỘT SỐ TỪ VIẾT TẮT 2

PHẦN I MỞ ĐẦU 2

1 Lí do chọn đề tài 2

2 Tên chuyên đề 2

3 Tác giả chuyên đề: 2

4 Mô tả chuyên đề 2

4.1 Giới hạn, phạm vi chuyên đề 2

4.2 Nội dung kiến thức lý thuyết trong chuyên đề: 2

4.2.1 Khái niệm lặp, cấu trúc lặp 2

4.2.2 Câu lệnh lặp với số lần lặp đã biết: for – do 2

4.2.3 Câu lệnh lặp với số lần lặp chưa biết: while – do; repeat - until 2

4.2.4 Chuyển đổi câu lệnh For – do thành dạng While – do 2

PHẦN II THỰC HIỆN DẠY HỌC CHUYÊN ĐỀ 2

1 Mục tiêu của chuyên đề 2

1.1 Kiến thức: 2

1.2 Kĩ năng: 2

1.3 Thái độ: 2

2 Định hướng các năng lực hướng tới 2

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

a) Ma trận các câu hỏi theo mức độ 2

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

4 Tiến trình tổ chức hoạt động học tập theo tiết dạy (45 phút/tiết) 2

Tiết 1 LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR – DO 2

Tiết 2 CÂU LỆNH LẶP VỚI SỐ LẦN LẶP CHƯA BIẾT 2

Sơ đồ tư duy bài học 2

Tiết 3, 4 LUYỆN TẬP 2

PHẦN 3 TỔNG KẾT 2

Tài liệu tham khảo: 2

Trang 4

PHẦN I MỞ ĐẦU

1 Lí do ch n đ tài ọ ề

Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tựhoạt động cho máy tính, máy gia dụng là cần thiết Và để làm được việc đó cần có mộtquá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thểchọn một ngôn ngữ lập trình thích hợp Tuy nhiên mọi thứ điều có điểm khởi đầu của

nó, với học sinh việc học Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậccao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợicủa các chương trình hoạt động trong máy tính, các máy tự động…Từ đó giúp các em

có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em lựachọn sau này

Qua hơn bảy năm dạy đội tuyển học sinh giỏi tin học, hơn bốn năm dạy chươngtrình chính khóa tin học lớp 11 Tôi nhận thấy cấu trúc lặp là không thể thiếu trong hầuhết các bài toán khi lập trình Từ những kinh nghiệm mà tôi có được, cùng quá trìnhtìm hiểu về cấu trúc lặp trong Pascal tôi nhận thấy rất học sinh gặp nhiều khó khăn khihọc về cấu trúc lặp Do vậy, tôi nghiên cứu cách dạy học phần cấu trúc lặp trongPascal thông qua chuyên đề: Cấu trúc lặp trong Pascal Giúp học sinh học sẽ dễ hiểuhơn khi tiếp cận về cấu trúc lặp

2 Tên chuyên đề: CẤU TRÚC LẶP TRONG PASCAL

3 Tác gi chuyên đ : ả ề

- Họ và tên: NGUYỄN THỊ HUỆ

- Trường: THPT Liễn Sơn

- Dự kiến số tiết dạy: 4

- Kế hoạch dạy học chuyên đề:

- Ví dụ bài toán lặp với số lần chưa biết

- Cấu trúc của câu lệnh lặp while – do

- Cấu trúc của câu lệnh lặp repeat – until

3, 4 Luyện Tập - Bài toán về câu lệnh lặp với số lần lặp biết trước

Trang 5

- Bài toán về câu lệnh lặp với số lần lặp chưa biết

- Bài 1: Tính UCLN (a, b);

- Bài 2 Kiểm tra một số là số nguyên tố

- …

4.2 N i dung ki n th c lý thuy t trong chuyên đ : ộ ế ứ ế ề

4.2.1 Khái ni m l p, c u trúc l p ệ ặ ấ ặ

 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 trúc lặp mô tả thao tác lặp được phân biệt thành hai loại:

 Lặp với số lần biết trước

 Lặp với số lần chưa biết

4.2.2 Câu l nh l p v i s l n l p đã bi t: for – do ệ ặ ớ ố ầ ặ ế

* Dạng lặp tiến:

* Dạng lặp lùi:

• Trong đó:

• For, to, downto, do là từ khóa

• Giá trị đầu  Giá trị cuối, và đều phải cùng kiểu với biến đếm

• Biến đếm thường có kiểu nguyên hoặc kí tự

• Câu lệnh có thể là câu lệnh đơn hoặc câu lệnh ghép

* Hoạt động của câu lệnh lặp

Dạng tiến:

Trang 6

Dạng lùi:

- B1: Kiểm tra giá trị đầu ≤ giá trị cuối?

Đúng sang B2, sai thoát khỏi cấu trúc lặp

- B2: Gán giá trị đầu cho biến đếm

- B3: Thực hiện câu lệnh sau do

- B4: Kiểm tra biến đếm <giá trị cuối hay

không? Đúng sang B5, sai thoát khỏi cấu

trúc lặp

- B5: Tăng biến đếm lên 1 rồi quay lại B3

- B1: Kiểm tra giá trị cuối ≥ giá trị đầu? Đúng sang B2, sai thoát khỏi cấu trúc lặp

- B2: Gán giá trị cuối cho biến đếm

- B3: Thực hiện câu lệnh sau do

- B4: Kiểm tra biến đếm > giá trị đầu hay không? Đúng sang B5, sai thoát khỏi cấu trúc lặp

- B5: Giảm biến đếm đi 1 rồi quay lại B3

Trang 7

4.2.3 Câu l nh l p v i s l n l p ch a bi t: while – do; repeat - until ệ ặ ớ ố ầ ặ ư ế

Cấu trúc While <điều kiện> do <câu lệnh>; Repeat <câu lệnh> Until <Điều kiện>;

Thông số - While, do, repeat, until là các từ khóa

- Điều kiện là biểu thức quan hệ hoặc biểu thức logic

- Câu lệnh trong Pascal có thể là câu lệnh đơn hoặc câu lệnh ghép Trong câu lệnh repeat – until nếu như có nhiều câu lệnh đơn thì không nhất thiết phải đểtrong cặp begin … end;

Hoạt động

B1 Tính và kiểm tra điều kiện, nếu

điều kiện đúng thì chuyển sang B2,

sai thì thoát khỏi cấu trúc lặp

B2 Thực hiện câu lệnh và quay lại

B1

B1 Thực hiện câu lệnhB2 Kiểm tra điều kiện, nếu điều kiện sai thì quay lại B1, còn điều kiện đúng thì thoát khỏi cấu trúc lặp

Khái quát

hoạt động Trong khi điều kiện vẫn còn đúng thì câu lệnh tiếp tục được thực

hiện Điều kiện sai thì thoát khỏi

cấu trúc lặp

Trong khi điều kiện vẫn còn sai thì câu lệnh tiếp tục được thực hiện Điều kiện đúng thì thoát khỏi cấu trúc lặp

Lưu ý - Câu lệnh for, while kiểm tra điều kiện ở đầu vòng lặp, câu lệnh repeat –

until kiểm tra điều kiện ở cuối vòng lặp

- Câu lệnh while kiểm tra điều kiện trước, nên câu lệnh sau do có khi không được thực hiện lần nào Câu lệnh Repeat – Until luôn thực hiện câu lệnh ít nhất một lần rồi mới kiểm tra điều kiện

- Cả hai câu lệnh while – do và repeat – until: trong thân vòng lặp phải thiết

kế lệnh điều khiển để thoát khỏi vòng lặp, thông thường là tăng, giảm biến đếm, hỏi, trả lời hoặc sử dụng phím đặc biệt

4.2.4 Chuy n đ i câu l nh For – do thành d ng While – do ể ổ ệ ạ

For – to – do For – downto - do

<biến đếm>:= <giá trị đầu>;

While (<biến đếm> <= <giá trị cuối>) do

Begin

<Câu lệnh>;

<Tăng biến đếm lên 1 đơn vị>;

End;

<biến đếm>:= <giá trị cuối>;

While (<biến đếm> >= <giá trị đầu>) doBegin

<Câu lệnh>;

<Giảm biến đếm đi 1 đơn vị>;

End;

Trang 9

PHẦN II THỰC HIỆN DẠY HỌC CHUYÊN ĐỀ

1 M c tiêu c a chuyên đ ụ ủ ề

1.1 Ki n th c: ế ứ

- HS nêu được khái niệm lặp, cấu trúc lặp, 2 loại cấu trúc lặp

- Cấu trúc của câu lệnh lặp với số lần lặp đã biết, ý nghĩa các thành phần trong các cấu trúc (thông số), hoạt động của từng dạng cấu trúc lặp theo hai dạng lặp tiến và dạng lặp lùi

- Cấu trúc của câu lệnh lặp với số lần lặp chưa biết while – do, repeat – until, ý nghĩa các thành phần trong các cấu trúc lặp, hoạt động từng loại câu lệnh lặp

1.2 Kĩ năng:

- Biết cách viết đúng được các dạng cấu trúc lặp, hiểu được cách hoạt động của từng dạng

- HS có khả năng phân tích bài toán đơn giản để chọn kiểu cấu trúc điều khiển phù hợp

- Biết cách chuyển đổi từ câu lệnh for – do sang câu lệnh while - do

1.3 Thái đ : ộ

- Từ việc tính toán, lập trình các bài tập liên quan đến toán học từ đó các em có liên hệ với môn học khác, đặc biệt là môn Toán và thêm yêu thích môn học

- Khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính

- Rèn luyện các phẩm chất của người lập trình, xem xét giải quyết vấn đề cẩn thận, chuđáo, logic, có sáng tạo,…

- Thái độ học tập nghiêm túc, tích cực, chủ động tìm hiểu kiến thức

2 Đ nh h ị ướ ng các năng l c h ự ướ ng t i ớ

- Năng lực tự học: tự tiếp thu kiến thức từ các nguồn khác nhau

- Năng lực tính toán: trả lời các câu hỏi định lượng, vận dụng trong bài

- Năng lực sử dụng ngôn ngữ: trình bày những bài tập khi GV yêu cầu

- Năng lực sử dụng CNTT và truyền thông: lập trình các bài toán, sử dụng mạng internet để tìm hiểu thêm về nội dung của bài

- Năng lực hợp tác: hoạt động nhóm

- Năng lực giao tiếp: giao tiếp với bạn cùng nhóm, lớp, giáo viên trong quá trình học

Trang 10

- Năng lực sáng tạo: từ yêu cầu bài toán có thể nhìn ra những cách giải quyết khác nhau

- Năng lực tự quản lý: quản lý, phân công các thành viên trong nhóm hoạt động

- Năng lực giải quyết vấn đề: ở mỗi câu hỏi, nội dung kiến thức GV đưa ra HS có thể nhìn nhận và phát hiện giải quyết vấn đề được đặt ra

- Diễn tả thuật toán cấu trúc lặp trên NNLT

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

Câu hỏi:

ND1.DT.NB.*

HS chỉ ra vàgiải thíchđược cấu trúclặp trong một

mô tả thuậttoán cụ thể

Câu hỏi:

ND2.DT.NB.*

HS chỉ ra được các thành phần của một câu lệnh for-do cụthể

do để chỉ rađược hoạtđộng một lệnhdạng for - do

Câu hỏi:

ND2.DL.TH

*

HS viết đượccâu lệnh lặp for

- do thực hiệnmột tình huốngquen thuộc

Câu hỏi:

ND2.DL.VDT.*

HS viết đượccâu lệnh lặp for

- do thực hiệnmột tình huốngmới

Câu hỏi:

ND2.DL.VDC

*

Trang 11

do trong chương trình quen thuộc cólỗi.

Câu hỏi:

ND2.TH.TH

*

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 hoàn chỉnhgiả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 – dogiải quyết bài toán mới

do, repeat - until

Câu hỏi:

ND3.DT.NB.*

HS chỉ ra được các thành phần của một câu lệnh while –

do, repeat – until cụ thể

để 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 viết được câu lệnh lặp while – do, repeat - until

thực hiện một tình huống quenthuộc

Câu hỏi:

ND3.DL.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 mới

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

Trang 12

Câu hỏi:

ND3.TH.TH

*

chương trình hoàn trong tình huống quen thuộc

Câu hỏi:

ND3.TH.VDT.* Câu hỏi: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 toá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ầnhoặ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 toán

D Không thể mô tả được mọi thuật toán bằng NNLT bậc cao nếu không dùng cấu trúclặ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

Trang 13

Câu ND2.DT.NB.4: Trong lệnh lặp For <biến đếm>:=<giá trị cuối> downto <giá trị

đầ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 <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;

Đá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?

Đá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?

Đá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);

Trang 14

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;

Đá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à:

Đá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 104

Đáp án: B

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

Trang 15

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:=

Trang 16

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

Đáp án:

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

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<b)

Đá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:

Trang 17

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 hoà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);

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<=2x109) Kiểmtra n có phải là số nguyên tố hay không? Đưa ra màn hình dòng thông báo kết quả?

Đáp án:

Trang 18

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 <câu lệnh> do <điều kiện>; B for <điều kiện> do <câu lệnh>;

C While <điều kiện> do <câu lệnh>; D While <điều kiện> for <câu lệnh>;

A Repeat <câu lệnh>; Until <điều kiện>; B Repeat <điều kiện> do <câu lệnh>;

C Repeat <điều kiện>; Until <câu lệnh>; D Repeat <điều kiện> for <câu lệnh>;

Đá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â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 <câu lệnh>; 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

Trang 19

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 <câu lệnh>; 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 <câu lệnh>; Repeat <câu lệnh>; until <điều kiện>;

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

hiện

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

Câu lệnh có thể không được thực hiện

lần nào Câu lệnh được thực hiện ít nhất 1 lần

Câu lệnh sau do là câu lệnh ghép phải

sử dụng begin end;

Câu lệnh trong repeat-until nếu là các câulệ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à baonhiê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 toán nào?

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

Begin N:=N+1; S:=S+ 1.0/(a+N); End;

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

Trang 20

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:

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

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

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 toá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 toán trên không? Nếu không hãy viết lạiđoạn lệnh sao cho đúng

Trang 21

Đáp án: Đoạn lệnh không giải quyết được bài toá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 toá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<n<46) với n

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

Trang 22

Câu ND3.TH.VDT.3: Viết chương trình tìm UCLN(a,b) với a, b là hai số nguyên

dương <=2x109 Đưa ra màn hình UCLN của hai số a, b

Câu ND3.TH.VDC.1 Viết chương trình sử dụng cấu trúc lặp while – do, repeat-until

để tính số theo công thức đến khi1/n! <10-8 thì dừng lại

Đáp án:

- Sử dụng while – do:

var e: real; i, gt: longint;

begin i:=2; e:=2; gt:=2;

while 1/gt>1e-8 do begin

e:=e+1/gt; inc(i); gt:=gt*i;

var e: real; i, gt: longint;

begin i:=2; e:=2; gt:=2;

repeat e:=e+1/gt; inc(i); gt:=gt*i;

until 1/gt<=1e-8;

Writeln('e= ',e:0:15); readln

end

Ngày đăng: 19/07/2019, 09:53

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w