Tải bản đầy đủ (.doc) (21 trang)

SKKN biện pháp dạy học cấu trúc rẽ nhánh trong chương trình tin học lớp 11 thông qua một số bài tập tiêu biểu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (201.41 KB, 21 trang )

MỤC LỤC
Trang
I. MỞ ĐẦU
1. Lý do chọn đề tài:.............................................................................................................................. 1
2. Mục đích nghiên cứu:...................................................................................................................... 1
3. Đối tượng nghiên cứu...................................................................................................................... 1
4. Phương pháp nghiên cứu................................................................................................................ 2
5. Những điểm mới của SKKN........................................................................................................ 2
II. NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM
1. Cơ sở lí luận của sáng kiến kinh nghiệm............................................................................... 3
2. Thực trạng của vấn đề nghiên cứu............................................................................................ 4
3. Các giải pháp........................................................................................................................................ 6
4. Hiệu quả của sáng kiến kinh nghiệm..................................................................................... 17
III. KẾT LUẬN, ĐỀ XUẤT
1. Kết luận.................................................................................................................................................. 19
2. Kiến nghị............................................................................................................................................... 19
Tài liệu tham khảo................................................................................................................................. 20


I. MỞ ĐẦU
1. Lý do chọn đề tài
Công nghệ thông tin là một nghành khoa học phát triển rất mạnh mẽ và có
nhiều ứng dụng trong hầu hết các lĩnh vực của cuộc sống. Môn Tin học mới
được đưa vào giảng dạy chính thức trong các trường học nên cịn khá mới mẻ
với học sinh nói chung và học sinh THPT nói riêng.
Trong q trình giảng dạy mơn Tin học cho các em học về ngơn ngữ lập trình
cụ thể là ngơn ngữ lập trình Pascal, là một phần nội dung có thể nói là khó nhất
trong chương trình tin học THPT. Thực tế khi giảng dạy cho các em về câu lệnh
Lặp với số lần biết trước cụ thể là câu lệnh Lặp với số lần biết trước tôi thấy các
em cịn gặp nhiều khó khăn trong việc xác định các câu lệnh (cú pháp câu lệnh,
hoạt động của câu lệnh) cần dùng để giải bài tập. Cấu trúc Lặp với số lần biết


trước là một cấu trúc quan trọng nhất trong các cấu trúc cơ bản của ngôn ngữ lập
trình Pascal mà học sinh bắt buộc phải nắm được nếu muốn làm bài tập về lập
trình Pascal. Nên ngoài việc dạy cho các em về câu lệnh Lặp với số lần biết
trước bằng những lý thuyết trong sách giáo khoa tơi cịn giảng dạy câu lệnh này
cho các em thơng qua một số bài tập tiêu biểu có sử dụng câu lệnh Lặp với số
lần biết trước, nhằm giúp các em nắm vững câu lệnh và hoạt động của câu lệnh
Lặp với số lần biết trước, qua đó giúp các em yêu thích và hứng thú học tập mơn
Tin học hơn.
Trong q trình giảng dạy câu lệnh Lặp với số lần biết trước ở các lớp tôi đã
rút ra được một số bài tập hay khi dạy về câu lệnh này. Dưới đây tơi xin trình
bày về sáng kiến: “Biện pháp Dạy học Cấu trúc Rẽ nhánh trong chương
trình Tin học lớp 11 thơng qua một số bài tập tiêu biểu” Rất mong được sự
tham khảo góp ý của các giáo viên và học sinh về sáng kiến kinh nghiệm này để
giúp tơi có những bài giảng hay giúp học sinh học tốt môn Tin học hơn.
2. Mục đích nghiên cứu
Mục đích nghiên cứu nhằm giúp các em hứng thú hơn với mơn Tin học nói
chung và lập trình Pascal nói riêng. Nhằm giúp cho các em nắm được hoạt động,
cấu trúc của câu lện Lặp với số lần biết trước để giải quyết các bài tập liên quan.
Qua đó giúp các em giải quyết tốt các bài tập lập trình u thích mơn học hơn.
3. Đối tượng nghiên cứu
Đối tượng học sinh mà tôi trực tiếp giảng dạy là học sinh khối 11 với các lớp
11A, 11B, 11C, 11D năm học 2018 – 2019 trường THPH Lê Viết Tạo, huyện
Hoằng Hóa, tỉnh Thanh Hóa. Là một trường mới được chuyển sang mơ hình
cơng lập nên phần lớn các em có lực học trung bình và yếu, cơ sở vật chất còn
nhiều thiếu thốn nên việc giảng dạy và học tập cịn gặp khơng ít khó khăn.

1


4. Phương pháp nghiên cứu

Phương pháp nghiên cứu là chỉ ra hoạt động của các loại câu lệnh Lặp với số
lần biết trước thông qua các bài tập tiêu biểu. Đưa ra bài tập cho học sinh nghiên
cứu hướng dẫn cụ thể từng phần để làm bài tập đó. Lập trình giải bài tốn trên
máy tính cho học sinh quan sát và thực hành chỉ ra những điểm quan trọng trong
bài lập trình. Học sinh ghi nhớ những câu lệnh đặc biệt là các câu lệnh Lặp với
số lần biết trước trong chương trình. Yêu cầu học sinh chỉ ra cú pháp, hoạt động
của các câu lệnh Lặp với số lần biết trước được sử dụng trong chương trình.
5. Những điểm mới của SKKN:
Trong sáng kiến này tôi đã vận dụng những kiến thức đã học lý thuyết ở trên
lớp vào các bài tập mà tôi lựa chọn là tiêu biểu cho những phần lý thuyết đã học
các bài tập gần gủi với cuộc sống hằng ngày của học sinh, những tính tốn suy
luận logic gần gủi với mơn học của học sinh (mơn tốn), và các mơn học tư duy
khác. Các bài tập này đã được kiểm nghiệm bằng chương trình thực hành và học
sinh rút ra được những kiến thức bổ ích cho bài học và các chương trình sau này.
Học sinh tự mình tìm ra thuật tốn nào là tối ưu nhất cho bài toán và sau đó thực
hiện trên máy từ đó giúp học sinh nâng cao được tư duy lập trình nói chung và
cấu trúc Lặp với số lần biết trước nói riêng.

2


II. NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM
1. Cơ sở lý luận của sáng kiến kinh nghiệm
1.1. Một số khái niệm
a. Khái niệm lập trình:
Lập trình (programming): Là nghệ thuật cài đặt một hoặc nhiều thuật tốn
trừu tượng có liên quan với nhau bằng một ngơn ngữ lập trình để tạo ra một
chương trình máy tính.
b. Khái niệm ngơn ngữ lập trình:
Ngơn ngữ lập trình (programming language): Là một hệ thống các kí hiệu

tuân theo các quy ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng các chương
trình cho máy tính.

Ngữ pháp (syntax): Quy ước về quan hệ giữa các ký hiệu. Ví dụ trong
ngơn ngữ Pascal: các ký hiệu Begin, end phải đi thành từng cặp, sau if sẽ là một
biểu thức điều kiện, sau đó là kí hiệu then.

Ngữ nghĩa (sematics): Quy ước về ý nghĩa của kí hiệu. Ví dụ trong
ngơn ngữ Pascal: dấu + biểu thị cho phép cộng, dấu - biểu thị cho dấu trừ …
Phát biểu if … then … có nghĩa là “nếu … thì làm …”.

Chương trình (program): Là một tập hợp các mô tả, các phát biểu, nằm
trong một hệ thống quy ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển
máy tính làm việc.
c. Khái niệm Lặp với số lần biết trước:
Để giải một số bài tập trên máy tính ta thường sử dụng một số cấu trúc điều
khiển việc thực hiện lặp lạ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 ...
1.2. Các loại câu lệnh Lặp với số lần biết trước trong ngơn ngữ lập trình
pascal.
a. Câu lệnh Lặp với số lần biết trước dạng tiến:
Cú pháp:
For <biến đếm>:= <Giá trị đầu> to <Giá trị cuối> do <lệnh cần lặp>;
Trong đó:
Biến đếm: Là biến có kiểu ngun, kí tự hoặc miền con.
Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm. Giá trị đầu
phải nhỏ hơn hoặc bằng giá trị cuối.
b. Câu lệnh Lặp với số lần biết trước dạng lùi:
3



For <biến đếm>:= <Giá trị cuối> Downto <Giá trị đầu> do <lệnh cần lặp>;

Trong đó:
Biến đếm: Là biến có kiểu nguyên, kí tự hoặc miền con.
Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm. Giá trị đầu
phải nhỏ hơn hoặc bằng giá trị cuối.
1.3. Sơ đồ khối
a. Sơ đồ khối của câu lệnh Lặp với số lần biết trước dạng tiến:
Biến đếm:=Giá trị đầu

Biến đếm <=Giá trị

Sai

cuối

Đúng
Lệnh cần lặp
Biến đếm tăng 1

Hoạt động:

Bước 1: Tính giá trị đầu, gán cho biến đếm.
Bước 2: - Nếu biến đếm <= giá trị cuối thì thực hiện lệnh cần lặp,
tăng biến đếm lên 1 đơn vị, quay lại Bước 2.
- Nếu biến đếm > giá trị cuối thì thốt khỏi vịng lặp và
chuyển đến câu lệnh tiếp theo.


4


b. Sơ đồ khối của câu lệnh Lặp với số lần biết trước dạng lùi:
Biến đếm:=Giá trị cuối

Sai
Biến đếm < Giá trị đầu
Đúng
Lệnh cần lặp
Giảm biến đếm đi 1

Hoạt động:

Bước 1: Tính giá trị cuối, gán cho biến đếm.
Bước 2: - Nếu biến đếm >= giá trị đầu thì thực hiện lệnh cần
lặp, giảm biến đếm lên 1 đơn vị, quay lại Bước 2.
- Nếu biến đếm < giá trị đầu thì thốt khỏi vịng lặp và
chuyển đến câu lệnh tiếp theo.
2. Thực trạng của vấn đề nghiên cứu
2.1. Thực trạng chung:
Có thể nói chương trình tin học lớp 11 là một phần nội dung mới và khó nhất
trong chương trình tin học THPT. Vì nó đề cập tới nhiều khái niệm mới mẽ đối
với học sinh. Học sinh phải kết hợp nhiều kiến thức, kỹ năng ở nhiều lĩnh vực
khác nhau vào để giải bài toán tin học, mặt khác do là trường mới được chuyển
sang mơ hình cơng lập trước đây là trường Bán công nên chất lượng đầu vào của
học sinh không cao hầu hết lực học ở mức trung bình và yếu, cở sở vật chất cịn
thiếu thốn nên việc giảng dạy cịn gặp nhiều khó khăn. Tuy nhiên mọi thứ đều
phải có điểm khởi đầu của nó, với việc học lập trình Pascal nó là điểm khởi đầu
giúp học sinh bước đầu tiếp cận với ngơn ngữ lập trình bậc cao qua đó giúp các

em có thêm định hướng trong học tập, nghề nghiệp sau này và u thích học tin
học hơn. Pascal là ngơn ngữ lập trình có cấu trúc và cấu trúc Lặp với số lần biết
trước là một cấu trúc quan trọng giúp các em học tốt lập trình Pascal.
2.2. Thực trạng giáo viên:
Là một giáo viên trẻ mới ra trường năng động nhiệt tình trong giảng dạy.
Nhưng kinh nghiệm giảng dạy cịn ít, cở sở vật chất cịn thiếu nên ảnh hưởng
không nhỏ tới chất lượng giảng dạy.
5


2.3 Thực trạng học sinh:
Là một trường mới chuyển sang mơ hình cơng lập, học lực của học sinh chủ
yếu ở mức trung bình, yếu. Tin học là một mơn học còn khá mới mẻ đối với học
sinh nên việc tiếp cận còn nhiều bỡ ngỡ. Do cơ sở vật chất còn thiếu nên học
sinh chưa được thực hành trên máy. Việc dạy và học chủ yếu là học lí thuyết nên
việc tiếp thu kiến thức còn hạn chế. Đối với câu lệnh Lặp với số lần biết trước là
một cấu trúc khó và rất cần thiết khi giải bài tập pascal nhưng khả năng tiếp thu
của học sinh còn thấp cịn gặp nhiều khó khăn khi làm các bài tập về câu lệnh
Lặp với số lần biết trước. Các em khơng có điều kiện được thực hành viết
chương trình nên việc các em hiểu được và làm được các bài tập về ngơn ngữ
lập trình Pascal nói chung và bài tập có sử dụng cấu trúc Lặp với số lần biết
trước là rất khó khăn.
3. Các giải pháp nâng cao hiệu quả dạy học hoạt động của câu lệnh Lặp
với số lần biết trước trong chương trình Tin học lớp 11 bằng một số bài tập
tiêu biểu.
3.1. Dạy học hoạt động câu lệnh Lặp với số lần biết trước thông qua một số
bài tập tiêu biểu.
Đưa ra một số bài tập tiêu biểu có sử dụng cấu trúc Lặp với số lần biết trước
để học sinh thảo luận và viết câu lệnh, nêu hoạt động, viết chương trình qua đó
giúp các em nắm vững kiến thức về cấu trúc Lặp với số lần biết trước và vận

dụng nó linh hoạt, khoa học trong các chương trình.
Cũng cố kiến thức lập trình nói chung và cấu trúc Lặp với số lần biết trước
nói riêng. Qua đó tạo hứng thú trong học tập cho học sinh đối với ngơn ngữ lập
trình Pascal.
Hình thành ở học sinh kỹ năng phân tích, xử lý các vấn đề áp dụng các kiến
thức liên quan về cấu trúc Lặp với số lần biết trước trong q trình lập trình các
chương trình sau này.
Ở trong khn khổ này tơi chỉ trình bày nội dung thực hành ứng với thực tế ở
trường THPT Lê Viết Tạo.
3.2. Một số bài tập về câu lệnh Lặp với số lần biết trước:
Bài 1: Hãy cho biết giá trị của biến S là bao nhiêu sau đoạn chương trình sa:

S:=0;
For i:= 1 to 10 do s:=s+1:

Để làm được bài này học sinh phải nắm được cú pháp và hoạt động của câu lệnh
Lặp với số lần biết trước dạng tiến.
Hướng dẫn: Tôi đặt ra hai câu hỏi như sau và yêu cầu học sinh trả lời.
6


- Biến đếm i ban đầu nhận giá trị là bao nhiêu?
- Sau mỗi lần thực hiện lệnh lặp thì biến đếm i được tăng tự đông lên 1 đơn vị và
vòng lặp kết thúc khi biến đếm i lớn hơn giá trị cuối. Vậy thì khi nào thì vịng
lặp này kết thúc (biến đếm i tăng đến bao nhiêu)?
- Câu lênh lặp s:=s+1 được thực hiện bao nhiêu lần?
Học sinh trả lời được ba câu hỏi trên thì sẽ tìm được giá trị của s.
Chương trình được giáo viên viết sẵn và trình chiếu lên bảng, học sinh quan sát
giáo viên chạy chương trình và ghi nhớ.
Bài 2: Viết câu lệnh Lặp với số lần biết trước dạng thiếu thực hiện việc tìm giá

trị S = 1+2+3+…+100.
Hướng dẫn – lời giải:
Trường hợp 1: có thể sử dụng câu lệnh Lặp với số lần biết trước dạng tiến tính
giá trị s.

S:=0;
For i:=1 to 100 do S:=S+i;

{học sinh nêu hoạt động của câu lệnh Lặp với số lần biết trước dạng tiến (phần
này có thể cho học sinh nêu sau đó giáo viên tổng hợp lại):
Ở câu lệnh For i:=1 to 100 do S:=S+i. Đầu tiên máy tính giá trị đầu và gán cho
biến đếm i (i=1) sẽ kiểm tra điều kiện i<=100 nếu đúng thì câu lệnh lặp s:=s+i
được thực hiện sau đó tăng biến đếm i lên 1 đơn vị và quay lại quá trình kiểm
tra điều kiện i<=100. chừng nào điều kiện cịn đúng thì thực hiện câu lệnh lặp
và cứ như vậy đến khi i >100 thì thốt khỏi vịng lặp và chuyển đến câu lệnh
tiệp theo.
Trường hợp 2: có thể sử dụng câu lệnh Lặp với số lần biết trước dạng lùi để tính
giá trị s.

S:=0;
For i:=100 to 1 do S:=S+i;

- Cho học sinh tự nêu hoạt động của vòng lặp này và cả lớp nhận xét về kết quả
thực hiện của máy.
Bài 3: Viết chương trình tính S =1+1/2 +1/3+ … +1/100;
- Học sinh dựa vào cách làm bài 2 để thực hiện viết chương trình cho bài 3.
7


- Đoạn chương trình tính S.


S:=0;
For i:=1 to 100 do s:=s+1/i;

Bài 4: Viết chương trình tính s=n! với 1<=n<10
- Cho học sinh phân tích bài tốn:
+ input: n ; output: s
Để tính được s ta cần sử dụng câu lệnh lặp với số lần biết trước
? Với các bài tính tổng ở trên ta sử dụng câu lệnh khởi tạo ban đầu cho s là s:=0
đối với bài này ta có thể gán như vậy được khơng?
- Câu lệnh lặp là gì?
Học sinh trả lời các câu hỏi trên và viết chương trình.
 Đoạn chương trình tính S.

S:=1;
For i:=1 to n do s:=s*i;

Bài 5: Viết chương trình tính tổng các số trong đoạn từ N1 đến N2
(N1<=N2).
- Hướng dẫn: trước đây ta thường làm các bài tập quen thuộc là trong
vòng lặp giá trị đầu thường là 1 giá trị cuối là N nhưng với bài tốn này thì giá
trị đầu là N1 và giá trị cuối là N2. Từ hướng dẫn này học sinh có thể dễ dàng
viết chương trình cho bài tốn này.
Chương trình:
Program bai5;
Var tong, i, N1, N2: integer;
Begin
Wtiteln(‘Nhap vao N1 va N2’); readln(N1,N2);
Tong:=0;
For i:=N1 to N2 do tong:=tong+i;

Writeln(‘tong la:’,tong:8);
End.
8


Bài 6: Viết chương trình sắp xếp dãy số nguyên tăng dần.
- Hướng dẫn:
+ Đối với bài toán này giáo viên cần hướng dẫn về thuật toán để sắp xếp
được một dãy số theo thứ tự tăng dần từ đó mới hướng dẫn chuyển sang câu
lệnh trong Pascal tương ứng với thuật tốn đó.
+ Ý tưởng xây dựng thuật tốn: Ta sẽ đưa lần lượt từng từng số hạng vào
đúng vị trí của nó bằng cách so sánh giá trị của từng số hạng với các số còn lại
và đổi giá trị chúng cho nhau nếu giá trị trước lớn hơn giá trị đứng sau. Sau mỗi
lần như vậy thì ta sẽ giảm được một giá trị cần thực hiện. (thuật toán học sinh
xem lại trong SGK tin học 10 và giáo viên chiếu thuật toán cho học sinh xem và
ghi nhớ)
+ Vậy tới giáo viên hướng dẫn cho học sinh chuyển sang câu lệnh tương
ứng trong pascal.
Chương trình:
Program sap_xep;
Var

A:array[1..300] of integer;
i, j, tg,n: integer;

BEGIN
Writeln(‘nhap vao so luong phan tu n=’); readln(n);
Writeln(‘nhap vao cac phan tu’);
For i:=1 to n do
Begin

Write(‘nhap phan tu thu:’,i); readln(a[i]);
End;
{đoạn chương trình sắp xếp dãy số tăng
dần} For i:=1 to n-1 do
For j:=i+1 ton n do
If a[i]>a[j] then
Begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; end;
{đoạn chương trình in dãy số sau khi sắp xếp}
For i:=1 to n do write(a[i]:5); Readln;
END.

9


- Sau khi dạy xong bài này giáo viên có thể yêu cầu học sinh giải thích tại
sao phải dung 2 vòng lặp và ở vòng lặp thứ nhất tại sao giá trị cuối lại là n-1.
- Yêu cầu học sinh về nhà dựa vào chương trình trên viết chương trình sắp
xếp dãy số trên nhưng theo thứ tự giảm dần.
Bài 7: Dãy số Fibonaci được định nghĩa như sau F1=1, F2=1, F3=2,….
Số đứng sau bằng tổng hai số đứng trước yêu cầu nhập vào từ bàn phím một số
hạng n và tìm giá trị của số Fibonaci thứ n đó.
- Hướng dẫn:
+ Với bài tốn này muốn tìm được số fibonaci thứ n thì ta phải nắm được
quy luật sinh ra số đứng sau là bằng tổng hai số đứng trước tức là Fn = Fn-1 +
Fn-2. Vậy ta dùng một vòng lặp với biến đếm nhận các giá trị từ 2 tới n vì ta đã
biết trước 2 giá trị đầu có giá trị là 1.
+ Trường hợp đăc biệt là N=1, và N=2 thì ta thơng báo kết quả ngay là 1
và khơng cần sử dụng vịng lặp nữa vậy ta chỉ tìm các số fibonaci khi n>2 trở đi
với vịng lặp được mơ tả như trên.
Chương trình:

Program fibonaci;
Var

F1, F2, Fn: word;
I, n: integer;

BEGIN
Wtite(‘moi nhap vao n=’);
Readln(n);
F1:=1; F2:=1;
For i:=2 to n do
Begin
Fn:=F1+F2;
F1:=F2;
F2:=Fn;
End;
Wtiteln(‘gia tri so Fibonaci thu n la:’, Fn);
Readln;
END.

10


- Học sinh có thể thắc mắc tại sao trong lại sử dụng 3 câu lệnh Fn:=F1+F2;
F1:=F2; F2:=Fn; giáo viên có thể giải thích qua chương trình hoặc ví dụ minh
họa để học sinh hiểu.
Bài 8: Cho mảng A gồm n phần tử. Viết chương trình tạo mảng B gồm n
phần tử trong đó B[i] là tổng giá trị của i phần tử đầu tiên của mảng A.
- Hướng dẫn:
Chương trình này có nhiều cách để làm học sinh có thể lựa chọn cách nào

mình thấy phù hợp và dể hiểu nhất
Chương trình:(Cách 1)
Program tinh;
Uses crt;
Const nmax=250;
Type myarray=array[1..nmax] of integer;
Var i,n,j:integer;
a,b: myarray;
BEGIN
Clrscr;
Randomize;
Write(‘Nhập n=’); readln(n);
For i:=1 to n do
a[i]:=random(300)-random(300);
For i:=1 to n do
Write (a[i]:5);
Writeln ;
For i:=1 to n do
Begin
b[i]:=0;
For j:=1 to i do
b[i]:=b[i] + a[i];
End;
For i:=1 to n do
Write(a[i]:7);
Writeln ;
11


Readln;

END.
Chương trình:(Cách 2)
Program tinh;
Uses crt;
Const nmax=250;
Type myarray=array[1..nmax] of integer;
Var i,n,j:integer;
a,b: myarray;
BEGIN
Clrscr;
Randomize;
Write(‘Nhập n=’); readln(n);
For i:=1 to n do
a[i]:=random(300)-random(300);
For i:=1 to n do
Write (a[i]:5);
Writeln ;
b[1]:=a[1];
For i:=2 to n do
b[i]:=b[i-1]+a[i];
For i:=1 to n do
Write(a[i]:7);
Writeln ;
Readln;
END.
- Nhận xét: trong hai cách trên thì ở cách 2 thời gian thực hiện chương trình
sẽ nhanh hơn cách 1. vì vậy khi viết chương trình thì học sinh cần lưu ý tới một
yếu tố là thời gian thực hiện của chương trình. Điều này đặc biệt quan trọng với
những bài toán mà dữ liệu lớn nếu với những bài tốn với dữ liệu lớn mà ta
khơng lựa chọn cách phù hợp thì chương trình có thể thực hiện rất lâu và có thể

sảy ra tình trạng máy tình bị “treo”, “đơ” như ta đã từng gặp.

12


Bài 9: Viết chương trình nhập từ bàn phím số nguyên dương N (N 100) và
dãy A gồm N số nguyên A1, A 2, ... , AN có giá trị tuyệt đối không lớn hơn 1000.
Hãy cho biết dãy A có phải là cấp số cộng hay khơng và thơng báo kết quả ra
màn hình.
- Hướng dẫn: Như trong tốn học ta đã biết dãy số là cấp số cộng thì số
đứng sau bằng số trước cộng với một lượng nhất định gọi là cơng sai (d). Bài
này cũng có nhiều cách để thực hiện với học sinh đại trà thì ta có thể sử dụng
chương trình sau:
Bài giải:
Program cap_so_cong1;
Uses Crt;
Var A:Array[1..100] of Integer;
N,i,d,dem:Integer;
BEGIN
Clrscr;
Write('Nhap so phan tu cua day A(1<=N<=100): N = ');
Readln(N);
Writeln('Nhap gia tri cua cac phan tu trong day A:');
For i:=1 to N do
Begin
Write('A[',i,']=');
Readln(A[i]);
End;
d:=A[2]-A[1]; dem:=0;
For i:=2 to N do

If A[i]-A[i-1]<>d then dem:=dem+1;
If (dem=0) then Writeln('Day A la cap so cong.')
Else Writeln('Day A khong la cap so cong.');
Readln;
END.
- Nhận xét:
Với cách trên thì ta làm đã tối ưu chưa, thời gian thực hiện chương trình đã
nhanh chưa thì học sinh khá giỏi có thể phát biểu và nêu cách làm sau đó
giáo viên hướng dẫn và tổng hợp lại viết chương trình lại như sau:
13


Program cap_so_cong2;
Uses Crt;
Var A:Array[1..100] of Integer;
N,i,d,dem:Integer;
F:Boolean;
BEGIN
Clrscr;
Write('Nhap so phan tu cua day A(1<=N<=100): N = ');
Readln(N);
Writeln('Nhap gia tri cua cac phan tu trong day A:');
For i:=1 to N do
Begin
Write('A[',i,']=');
Readln(A[i]);
End;
d:=A[2]-A[1]; f: =true;
For i:=2 to N do
If A[i]-A[i-1]<>d then

Begin
f:=false;
Break;
End;
If f=true then Writeln('Day A la cap so cong.')
Else Writeln('Day A khong la cap so cong.');
Readln;
END.
- Nhận xét:
Với chương trình này ta có thể khơng cần phải kiểm tra hết cả dãy số mà
chỉ cần gặp một cặp số nào đứng gần nhau không thỏa mãn điều kiện số đứng
sau không bằng số đứng trước cộng với cơng sai d là kết thúc vịng lặp và thông
báo kết quả ngay nên thời gian để thực hiện chương trình này sẽ tốt hơn chương
trình trước.

14


Bài 10: Viết chương trình nhập từ bàn phím số nguyên dương N (N 100) và
dãy A gồm N số nguyên A 1, A2, ... , AN có giá trị tuyệt đối không lớn hơn 1000.
Hãy đưa ra những thông tin sau: Số lượng số chẵn và số lẻ trong dãy, số lượng
số nguyên tố trong dãy.
- Hướng dẫn: Với yêu cầu tìm ra số lượng số chẵn và số lẻ thì học sinh có
thể tự làm. Với u cầu đưa ra số lượng các số nguyên tố thì giáo viên cần
hướng dẫn định hướng cho học sinh. Trước tiên học sinh cần phải biết số
nguyên tố là số chỉ có 2 ước 1 và chính nó vậy nếu nó có thêm bất kì ước nào
ngồi 2 ước trên thì nó khơng phải là số ngun tố nên ta sẽ đi tìm xem các số
trong dãy nếu số nào có ước khác ngồi 1 và chính nó thì nó khơng phải là số
nguyên tố và ngược lại.
Bài giải:

Program Bai_tap_10;
Uses CRT;
Var A:Array[1..100] of Integer;
N,i,d,dem_chan,dem_nto:integer;
BEGIN
Clrscr;
Write('Nhap vao so phan tu cua day A(1<=N<=100): N = '); Readln(N);
Writeln('Nhap gia tri cua cac phan tu trong day A:'); For i:=1 to N do
Begin
Write('A[',i,']=');
Readln(A[i]);
End;
dem_chan:=0; dem_nto:=0;
For i:=1 to N do
Begin
If (A[i] mod 2 = 0) then dem_chan:=dem_chan+1;
If A[i]>1 then
Begin
F:= true;
For i:=2 to a[i] div 2 do
If a[i] mod j = 0 then
begin
f:= flase;
berak;
1
5


end;
If f:=true then dem_nto:=dem_nto+1;

End;
End;
Writeln('So luong so chan trong mang A la: ',dem_chan);
Writeln('So luong so le trong mang A la: ',N-dem_chan);
Writeln('So luong so nguyen to trong mang A la:',dem_nto);
Readln;
END.
Ngoài các bài tập trên tơi cịn đưa thêm cho học sinh một số các bài tập về
nhà học sinh tự làm:
1. Tính tiền đi taxi từ số km đã đi được nhập vào, biết:
- 1 km đầu giá 5000đ.
- Từ km thứ 2 – thứ 5: 4500 đ/km
- Từ km thứ 6 trở đi: 3500 đ/km, đi hơn 120 km sẽ được giảm 10% trên
tổng số tiền theo quy định.
2. Nhập vào số nguyên n > 0 (nếu n <= 0 thì yêu cầu nhập lại), tính:
S1 = 12 + 32 + 52 + 72 + … + (2n + 1)2
S2

1
22

1
42

( 1)n 1
(2n)2

1 ...
62


3. Nhập một số n nguyên dương. Tính:
S3

1

2

3

4

5

6

7

8

2n

2n

1

S 4 1.2.3 2.3.4 3.4.5 ... n(n 1)(n 2)

4. Nhập vào một mảng A, cho biết mảng đó tăng, giảm hay khơng tăng khơng
giảm.
5. Viết chương trình nhập vào mảng số ngun có n phần tử. Hãy tìm số chẵn

lớn nhất và số lẻ nhỏ nhất.
6 . Hãy nhập dãy n số nguyên dương có giá trị trong khoảng từ 1->100 (nếu
nhập sai yêu cầu nhập lại). In ra giá trị trung bình cộng của các số chẵn xuất
hiện trong dãy.

16


4. Hiệu quả của sáng kiến kinh nghiệm.
Thông qua việc áp dụng các giải pháp trên đã giúp các em tháo gỡ được
những khó khăn, vướng mắc khi giải các bài tốn tin học nói chung và các bài
tập có sử dụng cấu trúc Lặp với số lần biết trước nói riêng. Giúp các em có sự
hiểu biết sâu sắc về cấu trúc Lặp với số lần biết trước tạo cho các em hướng thú
học tập và tạo ra phong trào học tập tốt hơn trong học sinh đối với môn học.
Kết quả đạt được:
Sau khi dạy cho các em những bài tập căn bản về câu lệnh Lặp với số lần biết
trước tơi đã có bài kiểm tra áp dụng cho học sinh các lớp và kết quả đạt được
như sau:
Đề bài:
Câu 1: Cho đoạn chương trình pascal sau:
s:=0;
for i:=1 to 10 do s:=s+2;
Sau đoạn chương trình trên giá trị của S là bao nhiêu?
A. s =10

B. s =15

C. s =20

D.s =30


Câu 2: Cho đoạn chương trình pascal sau:
S:=0;
For i:=1 to 10 do
If i mod 2 = 0 then s:=s+1;
Sau đoạn chương trình trên giá trị của s là bao nhiêu?
A. s =5
B. s =10
C. s =20
Câu 3: Cho đoạn chương trình sau:
p:=21;
for i:=1 to 6 do
p:=p-I;
sau đoạn chương trình trên kết quả p bằng bao nhiêu?
A. -1
B. 1
C. 0
Câu 4: Cho đoạn chương trình sau
Var i:byte;S,n:real;
Begin
Write(‘nhap n=’),readln(n);
S:=0
For i:=1 to n do s:=s+(1/i)
Write(‘tong s=’s);

D. s =15

D. 2

17



Readln
End.
Đoạn chương trình trên có mấy lỗi?
A.2
B. 4
C.3

D.5

Bài 5 : Viết chương trình nhập vào một mảng n số nguyên (n<=100) và n
được nhập từ bàn phím, thực hiện sau in ra trung bình cộng của các số dương
và số âm có trong mảng.
(Bài kiểm tra này được thực hiện ở lớp 11A được áp dụng và lớp 11B không
áp dụng hầu hết các giải pháp trên trong quá trình giảng dạy).
Kết quả lớp không thực nghiệm:
Tổng

Số HS đạt điểm

Số HS đạt

Số HS đạt

Số HS đạt điểm

Số HS đạt điểm

số HS


giỏi
(8,5 10)đ

điểm khá
(78,5)đ

điểm TB
(57)đ

Yếu
(3,55)đ

Kém
(03,5)đ

44

2HS=4.5%

10HS=22.7%

20HS=45.5%

11HS=25.0%

1HS=2.3%

Lớp


11B

Kết quả lớp đạt được sau khi thực nghiệm:
Tổng

Số HS đạt điểm

Số HS đạt điểm

Số HS đạt điểm

Số HS đạt điểm

Số HS đạt điểm

số HS

giỏi
(8,5 10)đ

khá
(78,5)đ

TB
(57)đ

Yếu
(3,55)đ

Kém

(03,5)đ

40

8HS=20%

16HS=36.4%

16HS=36.4%

2HS=7.2%

Lớp

11A

0

18


III. KẾT LUẬN, KIẾN NGHỊ
1. Kết luận
Tin học là một mơn học đặc thù, q trình học lý thuyết phải đi đơi với thực
hành viết chương trình và thực hiện trên máy tính.
Với nghiên cứu này tơi đã thu được kết quả khá khả quan với việc dạy khái
niêmk câu lệnh Lặp với số lần biết trước. Hầu hết các em đều nắm rõ cú pháp,
hoạt động của câu lệnh câu lệnh và vận dụng nó vào các bài tập cụ thể khá tốt.
Tơi rất hài lịng với kết quả đạt được.
Do tính đa dạng và đặc thù của mơn học dù đã có sự cố gắng nhưng khó

tránh khỏi những thiếu sót, sai lầm rất mong các đồng nghiệp và các em học
sinh giúp đỡ để giúp các em học tốt hơn.
2. Kiến nghị
Trường THPT Lê Viết Tạo một trường mới được chuyển sang mơ hình cơng
lập được vài năm lại đây nên cơ sở vật chất còn thiếu thốn hiện nhà trường chưa
có phịng máy để thực hành cho học sinh. Kinh tế gia đình các học sinh cịn kém
nên phần đơng khơng thể mua máy tính riêng cho con em mình học tập ở nhà vì
thế tơi đề xuất với ban giám hiệu nhà trường, các cấp lãnh đạo tạo điều kiện để
học sinh có được phịng máy thực hành cho các em học tập tốt hơn. Và nên
thành lập câu lạc bộ Toán – Tin nhà trường cho các em u thích tin học có thể
tham gia từ đó phát huy được tối đa khả năng của học sinh nhà trường.
Xin chân thành cảm ơn!
XÁC NHẬN CỦA
THỦ TRƯỞNG ĐƠN VỊ

Thanh hố, ngày 15 tháng 5 năm
2019
Tơi xin cam đoan đây là SKKN do
chính tơi nghiên cứu và thực hiện,
không copy của người khác. Nếu sai
tôi xin hoàn toàn chịu trách nhiệm.
Người viết

Lương Ngọc Hoàng

19


TÀI LIỆU THAM KHẢO
1. Hồ Sĩ Đàm – Nguyễn Thanh Tùng: Bài Tập Tin Học 11 – Nhà xuất bản giáo

dục.
2. Trần Doãn Vinh: Học Tốt Tin Học 11 – Nhà xuất bản Đại học quốc gia Hà
Nội.(xuất bản năm 2009).
3. Hồ Cẩm Hà (Chủ biên): Bài Tập Trắc Nghiệm Và Đề Kiểm Tra Tin Học 11
– Nhà xuất bản giáo dục.
4. Hồ Cẩm Hà (chủ biên), Lê Khắc Thành, Nguyễn Chí Trung: Dạy học theo
chuẩn kiến thức kỹ năng môn tin học 11 – Nhà xuất bản Đại học sư phạm.
5. Mai Hương (Chủ biên) : Tự Học Lập Trình Pascal – Nhà xuất bản văn hóa
thơng tin.

20



×