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

Một phần của tài liệu SGV tin lop 8 (Trang 70 - 78)

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, trong câu lệnh này có thể chứa các 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.

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

Bài 1.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í 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 thời gian và địa điểm 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.

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

tròn theo hớng A 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 A và nửa đờng tròn "cong về h- ớng A" (hình...). Ta chỉ xét A là các hớng lên trên, xuống dới, sang

trái, sang phải.

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:

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. Đặ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. Kết thúc thuật toán.

Lu ý. Khi trình bày thuật toán lần đầu tiên cho học sinh không nên

định nghĩa các phép toán với hớng mà nên liệt kê đủ bốn hớng trong 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.

Bài 3. Câu lệnh lặp có tác dụng làm đơn giản và giảm nhẹ công sức của ngời viết chơng trình.

Bài 4.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 một điều kiện. Với lệnh lặp

for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu

lệnh>;

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.

Bài 5.Tuy có vòng lặp 1000 lần, nhng chơng trình Pascal nói trên không

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ệ.

Bài 6. Thuật toán tính tổng A = ... ( 1 1) 5 . 3 1 4 . 2 1 3 . 1 1 + + + + n n Bớc 1. Gán A ← 0, i ← 1. Bớc 2. A ← i i( 1+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.

Bài 7. Trừ d), tất cả các câu lệnh đều không hợp lệ:

a) Giá trị đầu phải nhỏ hơn giá trị cuối;

b) Các giá trị đầu và giá trị cuối 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.

Bài 8.Thuật toán:

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. i←i + 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.

Bài 9.Thuật toán:

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.

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;

begin write('Nhap so thu ',i,':'); readln(A);

if Max<A then Max:=A end; 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).

Bài 10. 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 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

end.

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 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.

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 i ≤ 10 ? writeln(N,'.',i,' = ',N*i) 1 1 Đúng 3.1 = 3 2 2 Đúng 3.2 = 6 3 3 Đúng 3.3 = 9 4 4 Đúng 3.4 = 12 5 5 Đúng 3.5 = 15 6 6 Đúng 3.6 = 18 7 7 Đúng 3.7 = 21 8 8 Đúng 3.8 = 24 9 9 Đúng 3.9 = 27 10 10 Đúng 3.10 = 30

Một phần của tài liệu SGV tin lop 8 (Trang 70 - 78)

Tải bản đầy đủ (DOC)

(105 trang)
w