Ví dụ câu lệnh lặp với số lần biết trước

Bài 8: Lặp với số lần chưa biết trước – 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?

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

Quảng cáo

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.

TG HĐ của giáo viênHĐ của học sinh Nội dungtrúc lặp. -Để học sinh hiểu đượckhái niệm lặp, giáo viên đưa ra một số ví dụ trongthực tế được tính tốn lặp đi lặp lại nhiều lần.VD1: Tính lãi cho tiền gửi Ngân hàng theo hàngtháng: Gốc của tháng sau bằng gốc + Lãi của thángtrước. VD2: Tính tổng của mộtđoạn số nguyên mà không được dùng công thức.a+N0.0001 -Bài tốn 2 có số lần lặp chưabiết trước.-Cấu trúc lặp: Có 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 trước.-Trong NNLT có một số lệnh để mô tả cấu trúc lặpnhư trên. - Dùng bảng phụ treo lênbảng 2 thuật toán: Tong_1a và Tong_1b SGK-Gọi một số học sinh nhận xét về hai thuật toán trênthơng qua các vấn đề sau: +Thuật tốn có lặp khơng?+Lặp với số lần ? +Hai thuật tốn giống vàkhác nhau như thế nào? -Giá trị khởi tạo cho biếnđếm N; -Trong mỗi bước lặp biếnđếm N thay đổi thế nào? -Khi nào thuật toán dừng?-Đưa ra 2 dạng câu lệnh lặp trong Pascal, giải thích ýnghĩa của các thành phần trong lệnh.-quan sát thuật toán và nhận xét-Cả hai thuật tốn đều có số lần lặp là 100.-Trong thuật toán +Tong_1a:Giá trị khởi tạo cho biến N =0, sau mỗi lần lặp biếnđếm N tăng thêm 1. Thuật toán dừng khi đã lặp đủ 100lần.+Tong_1b: Giá trị khởi tạo cho biến N =101, saumỗi lần lặp biến đếm N giảm đi 1. Thuật toán dừngkhi đã lặp đủ 100 lần.-Lắng nghe và ghi bài -Ghi nhớ: giá trị đầu bao giờcũng nhỏ hơn hoặc bằng giá trị cuối và cùng kiểu với

2. Lặp có số lần biết trước và câu lệnh For-Do.

Để giải quyết bài tốn 1 ta có hai cách :-Thuật tốn SGKTrong pascal có 2 loại câu lệnh lặp có số lần biết trước:Dạng tiến: For biến đếm := giá trịđầu To giá trị cuối Do Câu lệnh;Dạng lùi: For biến đếm := giá trịcuối DownTo giá trị đầu Do Câu lệnh;-Trong đó: +Biến đếm thường là biếnkiểu số nguyên. +Giá trị đầu, giá trị cuối làcác biểu thức cùng kiểu với biến đếm. Giá trị đầu phải nhỏhơn hay bằng giá trị cuối. Hoạt động của lệnh For-Do: -Ở dạng lặp tiến: Biến đếm tựtăng dần từ giá trị đầu đến giá trị cuối.Giaùo aùn tin học khối 11 Trang20 Trần Thò Kim MaiTG HĐ của giáo viênHĐ của học sinh Nội dung-Nếu giá trị đầu lớn hơn giá trị cuối thì vòng lặpkhơng được thực hiện.-Nhận xét sự thay đổi giá trị của biến đếm sau mỗivòng lặp. biến đếm.-Ở dạng lùi: Biến đếm tự giảm dần từ giá trị cuối đếngiá trị đầu. Tương ứng với mỗi giá trị biến đếm, câu lệnhsau Do thực hiện một lần.Yêu cầu HS xem SGK trang 44,45 hướng dẫn vàgiải thích một số lệnh trong ví dụ.Xem SGK và nêu lên một số ý kiến và một số câu hỏivề 2 ví dụTìm hiểu chương trình ví dụVí dụ 1: Hai chương trình cài đặt thuật tốn tong_1a vàTong_1b.SGKVí dụ 2: Tính tổng các số ngun chia hết cho 3 hoặc 5trong phạm vi từ M đến N MN.SGK-u cầu học sinh tìm hiểu thuật tốn để giải quyết bàitoán 2.-Tại sao giá trị khởi tạo N=0?Có thể N= 1 ; N= 2 ? -Điều kiện: 1a+N0.0001 có thể xét sau khi tăng giá giá trị N:=N+1được khơng? -Trong thuật tốn nhữngbước nào được lặp lại? -Thuật toán dừng khi nào?-Đưa ra cấu trúc câu lệnh While – Do trong Pascal,giải thích ý nghĩa các thành phần.-Đọc SGK và tìm hiểu thuật tốn.-Vì giá trị khởi tạo của S=1a và tại thời điểm nàychưa thực hiện bước lặp nào nên giá trị N phải là 0.-B2, B3 và B4 được lặp lại nhiều lần.-Đế khi nào điều kiện ở B2 thỏa mãn thì thuật tốndừng.-Ghi bài.Do. Để giải bài toán 2 ta dùngthuật toán như sau: B1: S:= 1a; N:=0;B2: nếu 1a+N 0.0001 thì chuyển đến B5;B3: N:=N+1; B4: S:=S+1a+N rồi quay vềB2; B5: Đưa kết quả S ra mànhình rồi kết thúc. -Từ bước 2 đến bước 4 đượclặp lại nhiều lần nếu điều kiện:1a+N 0.0001 chưa được thoả mãn.-Trong Pascal ta sử dụng câu lệnh lặp While-Do để tổ chứclặp với số lần chưa biết như sau:While điều kiện Do câu lệnh;Giaùo án tin học khối 11 Trang21 Trần Thò Kim MaiTG HĐ của giáo viênHĐ của học sinh Nội dung-Yêu cầu học sinh quan sát sơ đồ thực hiện lệnh While– Dohình 7 SGK_46 -Viết sẵn chương trình đểhọc sinh quan sát, chạy thử chương trình trong Pascal.-Trước khi đưa ra thuật tốn cho học sinh xây dựngthuật tốn tìm ƯCLN -Chạy thử chương trình vớinhiều bộ nhập M, N khác nhau.-Quan sát sơ đồ thực hiện lệnh While – Dohình 7 SGK_46 -Thực hiện dịch chươngtrình và chạy thử để kiểm tra kết quả.-Trong đó: +Điều kiện là biểu thức quanhệ hoặc logic. +Câu lệnh là một câu lệnhtrong Pascal. -Ý nghĩa: khi điều kiện cònđúng thì còn thực hiện câu lệnh sau Do sau đó lại quayvề kiểm tra điều kiện. -Ví dụ 1: chương trình của bàitốn 1-Ví dụ 2: Tìm ƯCLNM,N. thuật tốn:B1: Nếu M=N thì ƯCLN :=M; kết thúc.B2: Nếu MN thì M:=M-N rồi quay lại B1, ngược lạIN:=N-M rồi quay lại B1. Chương trình tìm ƯCLN:


Trong Pascal cung cấp một câu lệnh lặp nh sau:

for := to do ;

trong đó:

- biến đếm là biến đơn có kiểu nguyên;

- giá trị đầu và giá trị cuối là các biểu thức có cùng kiểu với biến đếm và

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

- câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.

Hoạt động của câu lệnh lặp này nh sau: Ban đầu biến đếm đợc gán bằng giá

trị đầu, mỗi lần câu lệnh viết sau từ khoá do đợc thực hiện biến đếm đợc tăng lên

một đơn vị, câu lệnh đợc thực hiện cho đến khi biến đếm lớn hơn giá trị cuối.

Lu ý:

+ Để tránh phức tạp, gây khó hiểu với HS, mô tả hoạt động của lệnh for...do

ở trên là dựa trên mặc định biến đếm, giá trị đầu, giá trị cuối là số nguyên.

Một cách tổng quát, biến đếm, giá trị đầu, giá trị cuối có thể là kiểu kí tự,

kiểu đoạn con. Tuy nhiên, ở đây không đề cập đến những vấn đề này với

mục đích để giản lợc nội dung, giúp HS dễ tiếp thu kiến thức mà vẫn đảm

bảo những kiến thức, kĩ năng cần thiết theo yêu cầu.

+ Trong Pascal cấu trúc for...do có hai dạng tiến và lùi:

Dạng tiến:

for := to do ;

Dạng lùi:

for := downto do ;

Trong SGK chỉ giới thiệu dạng tiến. Về cơ bản dạng tiến gần gũi với cách

suy nghĩ tự nhiên của HS THCS hơn và chỉ cần dạng tiến là đủ, không yêu cầu

phải giới thiệu thêm dạng lùi.

Khi thực hiện câu lệnh lặp for...do các giá trị đầu và giá trị cuối phải đợc

xác định trớc. Chính vì thế mà ta biết trớc đợc số lần thực hiện câu lệnh sau từ

khóa do [số lần lặp bằng giá trị cuối - giá trị đầu + 1]. Chính vì vậy, câu lệnh

for...do còn đợc gọi là câu lệnh lặp với số lần biết trớc.

GV nên sử dụng chơng trình Lap trong SGK, phân tích ví dụ này để cho HS

hiểu rõ về hoạt động của câu lệnh lặp, hiểu về biến đếm, giá trị đầu, giá trị cuối và

câu lệnh.

program Lap;

var i: Integer;

begin

for i := 1 to 10 do

writeln['Day la lan lap thu ',i];

end.



Có thể hớng dẫn học sinh lập bảng quá trình thực hiện chơng trình trên nh dới đây:

61



Lần lặp thứ

i

Kết quả viết ra màn hình

1

1

Day la lan lap thu 1

2

2

Day la lan lap thu 2

3

3

Day la lan lap thu 3

4

4

Day la lan lap thu 4

5

5

Day la lan lap thu 5

6

6

Day la lan lap thu 6

7

7

Day la lan lap thu 7

8

8

Day la lan lap thu 8

9

9

Day la lan lap thu 9

10

10

Day la lan lap thu 10

Sau khi cùng với HS phân tích chơng trình Lap, GV có thể cùng HS sử dụng

câu lệnh for...do để viết đoạn câu lệnh nhập tên và hiển thị ra màn hình dòng chào

hỏi. Giả sử lớp có 40 bạn thì đoạn câu lệnh có thể nh sau:

For i:= 1 to 40 do

Begin

write['Nhap ten cua ban']; Readln[Ten];

write['Chao ban ', Ten];

end;



Lu ý: Cần dành thời để giới thiệu về câu lệnh ghép. Khác với chơng trình

Lap, sau từ khoá do chỉ có một câu lệnh cần thực hiện, ở chơng trình Chao_hoi,

sau từ khoá do có hai câu lệnh cần thực hiện. Muốn vậy, hai câu lệnh này cần phải

đợc "gói" trong từ khoá begin...end. Một cách đơn giản có thể hiểu cấu trúc

begin...end là một câu lệnh của Pascal, câu lệnh này có thể chứa nhiều câu lệnh

khác của Pascal. Lu ý HS trong cấu trúc câu lệnh ghép này sau end là dấu chấm

phẩy [;], không phải là dấu chấm [.].

Cần lấy thêm một số ví dụ khác để HS biết và tập làm quen với các tình

huống sử dụng câu lệnh for...do và lệnh ghép. Có thể yêu cầu HS đọc hiểu ví dụ có

trong SGK [nh chơng trình Tinh_tong, Tinh_giai_thua] hoặc đa ra bài toán đơn

giản cần sử dụng đến câu lệnh for...do và hớng dẫn HS viết chơng trình.

GV cần khái quát cho HS cấu trúc lặp với số lần biết trớc có ở mọi ngôn ngữ

lập trình, mỗi ngôn ngữ lập trình có câu lệnh riêng để mô tả cấu trúc này. Trên đây

các em đã đợc tìm hiểu về câu lệnh lặp với số lần biết trớc trong Pascal [for...do].

Cuối bài này, giao nhiệm vụ cho HS hoàn thiện chơng trình thực hiện chào

hỏi các bạn trong lớp [hoặc trong nhóm] để chuẩn bị cho buổi thực hành tới.

Căn cứ vào tình hình tiếp thu của HS, GV cần lựa chọn và giao một số bài

tập cho HS luyện tập, không nhất thiết phải làm hết tất cả các bài tập cuối bài này.

62



3. Hớng dẫn trả lời câu hỏi và bài tập

Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp. Dới đây là một số ví

Bài 1.

dụ:

a]

Hàng ngày em đặt đồng hồ báo thức lúc 6 giờ để dậy sớm tập thể dục.

b]

Hàng ngày [hoặc hàng tuần] bác lái xe khách lái xe để chuyên chở

hành khách xuất phát từ một địa điểm và thời gian nhất định và đi theo

một tuyến đờng đã đợc xác định trớc.

c]

Mỗi lần đợc khởi động, máy tính của em sẽ thực hiện cùng các hoạt

động tự kiểm tra các thành phần máy tính, sau đó khởi động hệ điều

hành theo một trình tự đã đợc quy định trớc.

a] Có thể thấy, để vẽ đợc hình ...a, thao tác chính cần thực hiện là vẽ nửa đBài 2.

ờng tròn có bán kính 1 đơn vị từ một điểm A tới điểm B theo một trong bốn

hớng: lên trên, xuống dới, sang trái, sang phải [chẳng hạn, hình...b là nửa đờng tròn đợc vẽ từ điểm A tới điểm B theo hớng lên trên].



a]



b]



Hình 1

Có thể mô tả các bớc của thuật toán để vẽ hình ... a] nh sau:

Bớc 1. Xác định điểm bắt đầu vẽ là X.

.

Bớc 2. Vẽ nửa đờng tròn theo hớng lên trên.

Bớc 3. Vẽ nửa đờng tròn theo hớng sang trái.

Bớc 4. Vẽ nửa đờng tròn theo hớng xuống dới.

Bớc 5. Vẽ nửa đờng tròn theo hớng sang phải.

Bớc 6. Tô màu và kết thúc thuật toán.

Lu ý đối với giáo viên. Có thể trình bày thuật toán vẽ hình trên dới dạng một

cách hình thức nh sau.

Ta gọi thao tác vẽ nửa đờng tròn theo hớng x là vẽ nửa đờng tròn có bán kính

1 đơn vị bắt đầu từ một điểm xác định, đờng kính nối điểm đầu và điểm cuối của

nửa đờng tròn vuông góc với hớng x và nửa đờng tròn "cong về hớng x". Ta chỉ xét

x là một trong bốn hớng: lên trên, xuống dới, sang trái, sang phải.

63



Với các hớng, ta định nghĩa phép toán sau: lên trên + 1 = sang trái, sang trái

+1 = xuống dới, xuống dới +1 = sang phải, sang phải +1 = lên trên. Khi đó có thể

mô tả các bớc của thuật toán để vẽ hình 1a nh sau:

Có thể mô tả các bớc của thuật toán để vẽ hình ... a] nh sau:

Bớc 1. Xác định điểm bắt đầu vẽ là X.

Bớc 2. Đặt i = 0 và đặt hớng = lên trên.

Bớc 3. Vẽ nửa đờng tròn theo hớng đã đặt.

Bớc 4. i = i + 1.

Bớc 5. Nếu i > 4, chuyển bớc 6; ngợc lại, đặt hớng = hớng + 1 và quay lại bớc 3.

Bớc 6. Tô màu và kết thúc thuật toán.

b] Thuật toán tơng tự nh trên. Thao tác chính cần lặp lại là vẽ hình vuông.

Tại mỗi bớc, giữ nguyên tâm hình vuông và thay đổi hớng vẽ một góc 30o.

Lu ý đối với giáo viên. Bài này không yêu cầu học sinh mô tả một cách

chính xác các bớc của thuật toán. Điều quan trọng là học sinh nhận biết đợc: muốn

vẽ đợc các hình đã cho chỉ cần lặp thao tác vẽ nửa đờng tròn bốn lần hoặc lặp thao

tác vẽ hình vuông ba lần.

Câu lệnh lặp có tác dụng chỉ dẫn cho máy tính thực hiện lặp lại một câu

Bài 3.

lệnh hay nhóm câu lệnh với một số lần nhất định. Câu lệnh lặp làm đơn giản

và giảm nhẹ công sức của ngời viết chơng trình.

Chúng ta nói rằng khi thực hiện các hoạt động lặp, chơng trình kiểm tra

Bài 4.

một điều kiện. Với lệnh lặp

for := to do ;

của Pascal, điều kiện cần phải kiểm tra chính là giá trị của biến đếm lớn hơn

giá trị cuối. Nếu điều kiện không đợc thoả mãn, câu lệnh đợc tiếp tục thực

hiện; ngợc lại, chuyển sang câu lệnh tiếp theo trong chơng trình.

Tuy có vòng lặp 1000 lần, nhng chơng trình Pascal nêu trong câu hỏi không

Bài 5.

thực hiện bất kì một hoạt động nào. Tuy nhiên đây vẫn là câu lệnh hợp lệ.

1

Thuật toán tính tổng A = 1 + 1 + 1 +.......

Bài 6.

1.3 2.4 3.5

n[n +1]



Bớc 1. Gán A 0, i 1.

Bớc 2. A



1

.

i [i + 2]



Bớc 3. i i + 1.

Bớc 4. Nếu i n, quay lại bớc 2.

Bớc 5. Ghi kết quả A và kết thúc thuật toán.

64



Trừ d], tất cả các câu lệnh đều không hợp lệ:

Bài 7.

a] Giá trị đầu của biến đếm phải nhỏ hơn giá trị cuối của biến đếm;

b] Các giá trị đầu và giá trị cuối của biến đếm phải là số nguyên;

c] Thiếu dấu hai chấm khi gán giá trị đầu;

d] Thừa dấu chấm phẩy thứ nhất, nếu nh ta muốn lặp lại câu lệnh

writeln['A'] mời lần, ngợc lại câu lệnh là hợp lệ;

e] Biến x đã đợc khai báo nh là biến có dữ liệu kiểu số thực và vì thế không

thể dùng để xác định giá trị đầu và giá trị cuối trong câu lệnh lặp.

Thuật toán:

Bài 8.

Bớc 1. Nhập các số n và x.

Bớc 2. A 1, i 0 [A là biến lu luỹ thừa bậc n của x].

Bớc 3. ii + 1, A A.x.

Bớc 4. Nếu i < n, quay lại bớc 3.

Bớc 5. Thông báo kết quả A là luỹ thừa bậc n của x và kết thúc thuật toán.

Chơng trình Pascal có thể nh sau:

var n,i,x: integer; a: longint;

begin

write['Nhap x=']; readln[x];

write['Nhap n=']; readln[n];

A:=1;

for i:=1 to n do A:=A*X;

writeln[x,' mu ',n,' bang ',A];

end.



Thuật toán:

Bài 9.

Bớc 1. Nhập số n.

Bớc 2. A 32768 [gán số nhỏ nhất có thể trong các số kiểu nguyên cho A],

i 1.

Bớc 3. Nhập số thứ i và gán giá trị đó vào biến A.

Bớc 4. Nếu Max < A, Max A.

Bớc 5. i i + 1.

Bớc 6. Nếu i n, quay lại bớc 3.

Bớc 7. Thông báo kết quả Max là số lớn nhất và kết thúc thuật toán.

65



Chơng trình Pascal có thể nh sau:

uses crt;

var n,i,Max,A: integer;

begin

clrscr;

write['Nhap N=']; readln[n];

Max:=-32768;

for i:=1 to n do

begin write['Nhap so thu ',i,':']; readln[A];

if Max
writeln['So lon nhat: ',Max];

end.



Lu ý. Trong chơng trình trên chúng ta chỉ sử dụng hai biến A và Max để

giải bài toán. Một cách tự nhiên, để nhập n số chúng ta cần tới n biến. Tuy

nhiên, ở đây việc xử lí các giá trị trong dãy số có thể thực hiện bằng cách

chỉ cần so sánh các giá trị đã đợc nhập vào, do đó chúng ta chỉ cần một

biến để lu lần lợt các giá trị nhập vào là đủ. Một cách giải quyết khác là sử

dụng biến mảng [xem bài tập 6, bài 9].

Lời giải bài này tơng tự nh lời giải của bài 9 ở trên [xem thuật toán trong



Bài 10.

lời giải bài tập 5a, bài 5]. Chơng trình Pascal có thể nh sau:

uses crt;

var n,i,SoDuong,A: integer;

begin

clrscr;

write['Nhap N=']; readln[n];

if n>0 then

begin

SoDuong:=0;

for i:=1 to n do



begin write['Nhap so thu ',i,':']; readln[A];

if A>0 then SoDuong:=SoDuong+1 end;

writeln['So cac so duong = ',SoDuong]

end

else writeln['n phai > 0!'];

end.



66



Bài thực hành 5. Sử dụng lệnh lặp For...do

1. Mục đích, yêu cầu





Viết đợc chơng trình có sử dụng vòng lặp for...do;







Sử dụng đợc câu lệnh ghép;







Rèn luyện kĩ năng đọc hiểu chơng trình có sử dụng vòng lặp for...do.



2. Những điểm cần lu ý và gợi ý dạy học

Trớc khi tiến hành các bài của bài thực hành 5, để tạo hứng thú cho HS, GV

có thể dành thời gian để HS gõ và chạy một hoặc hai chơng trình các em đã viết

trong giờ học lí thuyết. Nh đã nói, việc thực hành và đợc quan sát trực quan kết

quả chạy chơng trình đã học ở tiết lí thuyết là cần thiết, hữu ích để HS ôn lại lí

thuyết, gắn kết lí thuyết-thực hành và tạo niềm tin trong học tập. Chơng trình thực

hiện chào hỏi các bạn trong lớp [hoặc trong nhóm] có thể nh sau:

Program Chao_hoi;

uses crt;

var Ten: string;

Begin

For i:= 1 to 3 do

Begin

write['Nhap ten cua ban']; Readln[Ten];

write['Chao ban ', Ten];

end;

readln;

End.



Lu ý: để tránh mất thời gian thử chơng trình, yêu cầu HS cho giá trị cuối

nhỏ. Nếu HS đã lỡ để giá trị cuối quá lớn, chơng trình lặp lại nhiều lần gây mất

thời gian, GV có thể nhấn tổ hợp phím Ctrl+Break để ngắt chơng trình.

Yêu cầu HS thay đổi giá trị cuối và nhận xét về số lần nhập tên và hiển thị

lời chào hỏi. HS cần giải thích đợc sự thay đổi này để hiểu về hoạt động của câu

lệnh for...do. Số lần lặp bằng Giá trị cuối - Giá trị đầu + 1.

Sau ví dụ này, HS về cơ bản đã hiểu rõ, giải thích đợc hoạt động của câu

lệnh for...do, hiểu và sử dụng đợc câu lệnh ghép.

Với bài 1 của bài thực hành này, HS cần tập trung tìm hiểu câu lệnh:

for i:=1 to 10 do writeln[N,' x ',i:2,' = ',N*i:3];



Đặc biệt HS cần phải nhận thấy đợc sự thay đổi của biến đếm i và các tham

số của câu lệnh write để viết ra bảng cửu chơng. Các tham số :2, :3 chỉ có ý nghĩa

trong việc quy định quy cách trình bày bảng cửu chơng trên màn hình, lu ý học

sinh không cần quan tâm đến quy cách trình bày, chỉ cần quan tâm đến sự thay đổi

của biến đếm i, thông tin đợc lệnh writeln[] viết ra màn hình.

67



Có thể cho HS thảo luận theo nhóm để hoàn thành một bảng tiến trình thực

hiện của câu lệnh trên nh sau:

Giả sử với N=3

Bớc



i



1

2

3

4

5

6

7

8

9

10

11



1

2

3

4

5

6

7

8

9

10

11



i 10 ?

Đúng

Đúng

Đúng

Đúng

Đúng

Đúng

Đúng

Đúng

Đúng

Đúng

Sai



writeln[N,'.',i,' = ',N*i]



3.1 = 3

3.2 = 6

3.3 = 9

3.4 = 12

3.5 = 15

3.6 = 18

3.7 = 21

3.8 = 24

3.9 = 27

3.10 = 30

Không thực hiện lệnh writeln[]. Kết

thúc vòng lặp

Bài 2, cung cấp cho HS một câu lệnh mới là thủ tục đa con trỏ tới một ví trị

mong muốn trên màn hình [màn hình soạn thảo văn bản] GotoXY[]. Giới thiệu

cùng với thủ tục GotoXY là các hàm lấy vị trí cột WhereX, vị trí dòng WhereY hiện

thời của con trỏ. Việc giới thiệu thủ tục này nhằm cung cấp cho HS một công cụ

để trình bày màn hình. Hơn thế nữa, việc giới thiệu hàm, thủ tục ở đây còn nhằm

mục đích hớng dẫn HS tìm hiểu về th viện chơng trình, sử dụng, khai thác hàm,

thủ tục có sẵn trong Pascal. Tuy nhiên, đây không phải là yêu cầu bắt buộc trong

Chuẩn kiến thức, kĩ năng cho nên GV có thể cho thực hành bài này trên lớp hoặc

giao cho học sinh tự nghiên cứu. Không cần đi sâu vào việc sử dụng các thủ tục

này để trình bày màn hình.

Bài 3, giới thiệu về việc sử dụng hai vòng for...do lồng nhau. GV có thể sử

dụng bài 3 này hoặc lấy một ví dụ khác để giới thiệu về vòng for...do lồng nhau.

Có một ví dụ vui, hay đợc sử dụng để minh hoạ cho việc sử dụng vòng lặp for...do

lồng nhau đó là bài toán cổ:

Vừa gà vừa chó

Bó lại cho tròn

Ba mơi sáu con

Một trăm chân chẵn.

Bài toán dân gian này có thể sẽ làm HS hứng thú hơn. Lu ý, HS lớp 8 cha đợc học giải phơng trình bậc nhất hai ẩn số.

Chơng trình giải bài toán này có thể nh sau:



68



Var ga, cho : byte;

Begin

for ga:=1 to 35 do

for cho:=1 to 35 do

if [ga*2 + cho*4 = 100] and [ga + cho = 36] then

writeln['So ga la: ', ga, ';



So cho la: ', cho];



Readln;

End.



GV có thể giới thiệu chơng trình trớc rồi yêu cầu HS tìm hiểu, giải thích tại

sao chơng trình này cho phép giải bài toán đặt ra.

Thuật toán này rất đơn giản, ý tởng cơ bản là xét tất cả các trờng hợp và

kiểm tra xem trờng hợp nào thảo mãn: ga + cho= 36 và ga*2 + cho*4 = 100 thì

đó là một đáp số của bài toán.

Qua bài toán này cũng có thể nêu cho HS thấy u điểm nổi bật của máy tính

trong việc tính toán nhờ tốc độ xử lý rất cao. Với cách giải nh trên máy tính tìm ra

kết quả trong nháy mắt, nhng nếu để con ngời thực hiện thì sẽ lâu hơn rất nhiều.

Nhng nhợc điểm của máy tính lại là chỉ biết làm việc theo sự điều khiển của

con ngời mà không hề có t duy sáng tạo. Trong quá trình tính toán tìm ra kết quả,

con ngời còn có khả năng phán đoán, dự đoán xu hớng để có thể bỏ qua một số

công đoạn tính toán nhằm đi đến kết quả nhanh hơn. Do đó, con ngời cần lựa

chọn, xây dựng thuật toán sao cho có thể nâng cao hiệu quả làm việc của máy

tính.

GV có thể yêu cầu học sinh cải tiến để có chơng trình hiệu quả hơn.

var ga, cho:byte;

Begin

For cho:= 1 to 24 do

Begin

ga:= 36 - cho;

if [2*ga + 4*cho = 100] then

writeln['Ga: ', ga, ', Cho: ',cho];

end;

readln;

End.

GV có thể phân tích, hớng dẫn để HS nhận thấy số lợng các phép tính ở chơng trình sau ít hơn với chơng trình ban đầu. Điều đó cũng có nghĩa là thuật

toán ở chơng trình sau hiệu quả hơn. Việc xây dựng, lựa chọn thuật toán

hiệu quả có vai trò quan trọng trong lập trình, nhất là với những bài toán có

khối tợng tính toán lớn. Luôn cần có ý thức xây dựng, lựa chọn thuật toán

hiệu quả nhất khi giải bài toán trên máy tính.

Việc phân tích về số lợng phép toán có thể gây quá tải đối với HS. Do vậy,

GV căn cứ vào mức độ tiếp thu của HS để có thể tiến hành giới thiệu hoặc

69



không giới thiệu nội dung về số lợng phép toán, so sánh tính hiệu quả giữa

các thuật toán.



Bài 8. Lặp với số lần cha biết trớc

1. Mục đích, yêu cầu





Biết nhu cầu cần có cấu trúc lặp với số lần cha biết trớc trong ngôn ngữ

lập trình;







Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần cha biết trớc để chỉ

dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào

đó đợc thoả mãn;







Hiểu hoạt động của câu lệnh lặp với số lần cha biết trớc while...do

trong Pascal.



2. Những điểm cần lu ý và gợi ý dạy học

Giống với bài 7, ở phần đầu của bài này GV cần nêu một số ví dụ về hoạt

động lặp với số lần cha biết trớc. Ví dụ 1 trong SGK là một hoạt động trong đời

sống. Ví dụ 2 trong SGK là một bài toán khoa học.

Trong ví dụ 2, sau khi giới thiệu thuật toán, SGK khái quát, đa ra sơ đồ hoạt

động của cấu trúc lặp với số lần cha biết trớc. Sau đó, SGK giới thiệu câu lệnh

while...do của Pascal nh một ví dụ minh hoạ. HS đợc làm quen với các ví dụ sử

dụng lệnh while...do qua các ví dụ.

Dới đây gợi ý một cách tiến hành khác để GV tham khảo. Cách tiếp cận này

đợc thực hiện theo phơng án đi từ câu lệnh lặp cụ thể while...do trong Pascal, sau

đó khái quát thành kiến thức chung ở các ngôn ngữ lập trình.

Sau khi đã giới thiệu ví dụ 1 trong SGK, nếu đã giới thiệu ví dụ viết chơng

trình chào hỏi ở bài trớc, GV có thể đặt tình huống cha biết trớc số bạn trong

nhóm thì phải viết chơng trình nh thế nào? Điểm thuận lợi khi sử dụng ví dụ này là

HS đã hiểu yêu cầu của bài toán này từ các tiết học trớc. Do vậy, không phải mất

nhiều thời gian vào tìm hiểu ý nghĩa của bài toán. Điều đó tạo điều kiện thuận lợi

cho việc làm nổi bật vấn đề, tình huống mới cần giải quyết. Hơn nữa, sử dụng

những bài toán gắn liền với thực tế là một cách tốt để HS nhận thức rõ khái niệm

bài toán trong Tin học không chỉ là những bài toán trong lĩnh vực toán học.

Nói chung HS cha đa ra đợc phơng án giải quyết cho vấn đề này. GV nên

chủ động đa ra một chơng trình Pascal nh sau:

Program Chao_hoi;

uses crt;

var Tieptuc: char;

Ten: string;

Begin

Tieptuc:='c';

while tieptuc = 'c' do



70



Begin

write['Nhap ten cua ban']; Readln[Ten];

writeln['Chao ban ', Ten];

write['Tiep tuc ? c/k']; readln[Tieptuc];

end;

readln;

End.



Dựa trên chơng trình này, GV giới thiệu về cú pháp, sơ đồ hoạt động của câu

lệnh while...do.

Trong Pascal, cú pháp câu lệnh lặp với số lần cha xác định trớc có dạng:

while do ;

trong đó:

- điều kiện thờng là một phép so sánh;

- câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.

Câu lệnh lặp này đợc thực hiện nh sau:

1. Kiểm tra điều kiện.

2. Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và chuyển sang câu lệnh tiếp

theo trong chơng trình. Nếu điều kiện đúNG, thực hiện câu lệnh và

quay lại bớc 1.



Sơ đồ hoạt động của câu lệnh câu lệnh lặp với số lần cha biết trớc

[Xuân sửa lu đồ này nhé]

Việc dịch nghĩa hay diễn giải ý nghĩa của từ tiếng Anh trong câu lệnh

while...do có thể là cần thiết đối với HS cha đợc học tiếng Anh và để HS dễ nhớ

[Trong khi ... thì].

Đến đây, GV có thể khái quát cho HS biết rằng các ngôn ngữ lập trình đều

cung cấp câu lệnh lặp với số lần cha biết trớc, hoạt động của câu lệnh lặp với số

lần cha biết trớc ở các ngôn ngữ lập trình là giống nhau. Điểm khác nhau giữa các

ngôn ngữ lập trình là cú pháp câu lệnh để thể hiện cấu trúc này mà thôi.

Phần cuối bài GV sử dụng các ví dụ trong SGK hoặc lấy ví dụ khác để HS

hiểu đợc hoạt động, viết đúng cú pháp và biết một số trờng hợp sử dụng hiệu quả

câu lệnh while...do.

71



Video liên quan

Chủ Đề