1. Trang chủ
  2. » Tất cả

sang kien kinh nghiem nam 2016- hang- cau lenh lap

14 5 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 14
Dung lượng 102,5 KB

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

Nội dung

Lý do chọn đề tài: Trước hết cần khẳng định Pascal là ngôn ngữ lập trình tốt và đặc biệt, được tạo ra với mục đích dùng cho giảng dạy vì các lí do: Có cú pháp rõ ràng, dễ dạy học; Pascal

Trang 1

ĐỀ TÀI SÁNG KIẾN KINH NGHIỆM:

“ CÂU LỆNH LẶP TRONG PASCAL”

A ĐẶT VẤN ĐỀ

I Lý do chọn đề tài:

Trước hết cần khẳng định Pascal là ngôn ngữ lập trình tốt và đặc biệt, được tạo ra với mục đích dùng cho giảng dạy vì các lí do: Có cú pháp rõ ràng,

dễ dạy học; Pascal được viết theo lý thuyết chuẩn về lập trình cấu trúc nên một mặt nó minh họa cho lý thuyết về ngôn ngữ lập trình, mặt khác nhiều tài liệu khoa học máy tính cũng dùng Pascal để minh học; Có thể sử dụng Pascal để viết các ứng dụng chuyên sâu, can thiệp vào phần cứng của máy tính và các thiết bị điện tử khác và cuối cùng là do trình biên dịch Pascal nhỏ gọn, có thể chạy tốt trên các máy tính cấu hình yếu, rất phù hợp với khả năng đầu tư cho học tập của học sinh

Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán mang tính lặp, trong nội dung của bài sáng kiến này tôi đưa ra những tóm lược

cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp để giải quyết có hiệu quả Chính vì vậy mà tôi chọn đề tài “ Câu lệnh lặp trong Pascal”

II Xác định mục đích nghiên cứu của đề tài:

Tôi chọn đề tài “Câu lệnh lặp trong Pascal” này nhằm mục đích:

- Trang bị cho học sinh những kiến thức cơ bản của bộ môn tin học về câu lệnh lặp

- Rèn luyện cho học sinh kỹ năng tiếp thu kiến thức một cách chắc chắn và có hệ thống

- Rèn luyện kỹ năng giao tiếp cho học sinh thông qua hoạt động nhóm

- Rèn khả năng tư duy, óc quan sát, sự sáng tạo và vận dụng kiến thức vào cuộc sống

- Giúp học sinh có ý thức tự học đồng thời biết chủ động hợp tác cùng bạn bè trong việc tìm ra kiến thức mới

- Người học ham thích môn học lập trình hơn

III Nhiệm vụ của đề tài:

- Đưa ra được các kiến thức cơ bản về câu lệnh lặp trong pascal

- Nêu bật được trọng tâm của “Câu lệnh lặp trong Pascal” thông qua các bài tập viết chương trình có sử dụng câu lệnh lặp

IV Đối tượng nghiên cứu:

- Học sinh lớp 8 trường THCS

Trang 2

V Đối tượng khảo sát:

- Học sinh lớp 8 trường THCS

VI Phương pháp nghiên cứu:

- Trong quá trình nghiên cứu và làm đề tài này tôi đã sử dụng các phương pháp nghiên cứu sau:

1 Phương pháp điều tra thực tiễn:

Trong quá trình giảng dạy và tự bồi dưỡng kiến thức tôi nhận thấy có rất nhiều sách nâng cao, các bài tập có trong sách là các bài tập thuộc nhiều thể loại khác nhau nhưng lại không theo hệ thống, không phân loại rõ ràng Vì vậy việc

tự nghiên cứu và giải các bài tập có nhiều khó khăn

Ngoài ra việc tự bồi dưỡng nâng cao kiến thức của học sinh trong khi tham khảo sách cũng chưa đạt hiệu quả cao Do vậy tôi cho rằng cần phải có phương pháp giải chung cho một loại toán, loại bài tập để giúp người dạy cũng như người học có định hướng giải nhanh mà không phải tư duy nhiều

2 Phương pháp kiểm tra, đánh giá:

Với phương pháp này tôi có thể tiến hành dưới hai dạng kiểm tra với mục đích nắm bắt sự nhận thức kiến thức của học sinh và kỹ năng làm bài tập của học sinh

a) Kiểm tra miệng

b) Kiểm tra thực tế

Giáo viên giảng một tiết không phân loại bài tập và một tiết phân loại bài tập ở hai lớp khác nhau

Cuối cùng so sánh kết quả nắm bài và kỹ năng làm bài tập của học sinh sau hai giờ dạy

3 Phương pháp nghiên cứu tham khảo tài liệu:

Trong quá trình làm đề tài tôi có tham khảo các tài liệu sau:

1 Sách bài tập tin học dành cho THCS quyển 3 (Bùi Văn Thanh – Nguyễn Trí Trung – Ngô Ánh Tuyết)

2 Sách Lập trình pascal (Quách Tuấn Ngọc)

3 Sách 21 ngày học Pascal (Nhà xuất bản giáo dục)

VII Phạm vi và kế hoạch nghiên cứu:

Đề tài được nghiên cứu với đối tượng là học sinh lớp 8 tại trường THCS

Thời gian thực hiện đề tài: Từ tháng 9 năm 2015 đến hết tháng 3 năm 2016 tại trường THCS

B NỘI DUNG CỦA ĐỀ TÀI:

I Cơ sở lý luận:

1 Về lý thuyết:

Trang 3

- Muốn học tập đạt kết quả tốt, ngoài việc bản thân học sinh tích cực học tập, không thể thiếu vai trò hướng dẫn dìu dắt của người thầy

- Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán mang tính lặp ở bộ môn tin học vừa đúng với nguyên tắc dạy học ở trường phổ thông, vừa đúng theo tinh thần đổi mới phương pháp dạy học hiện nay, nhằm hình thành cho học sinh tính tích cực, độc lập, sáng tạo, nâng cao năng lực phát triển và giải quyết vấn đề, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm tin và thích thú học tập cho học sinh Hiện nay, không ít học sinh lười, học tập thụ động và có không ít phụ huynh thiếu sự quan tâm đến việc học của con em mình Vì vậy, việc hệ thống các kiến thức về câu lệnh lặp để giải quyết một số bài tập của giáo viên phải được chú ý đúng mức

2 Về thực tiễn:

Trong quá trình giảng dạy, tôi thấy Pascal là môn học khó đối với các em học sinh khối 8, vì có một số thuật toán các em chưa được học ở môn toán, thêm vào đó là các em chỉ sử dụng các câu lệnh bằng tiếng anh để thể hiện khi lập trình Do đó, việc học tập của học sinh vẫn còn mang tính mơ hồ, như bị ép buộc, có nhiều học sinh rất sợ môn tin học 8 vì tính chất khô khan, khó hiểu trong khi học

Từ thực tế đó tôi không ngừng học hỏi để tìm ra biện pháp khắc phục Bằng kinh nghiệm khiêm tốn trong những năm qua, tôi đã đưa ra những tóm lược cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp

để giải quyết có hiệu quả là nhằm giúp học sinh tiếp thu bài nhanh, nhớ kiến thức lâu hơn và cảm thấy thích thú trong học tập

II THỰC TRẠNG VẤN ĐỀ NGHIÊN CỨU:

1 Tình trạng thực tế chưa thực hiện.

Sự phát triển của công nghệ hiện đại ngày nay đã giúp ích rất nhiều cho con người nhằm thực hiện công việc một cách nhanh chóng và hiệu quả hơn

Cũng như vậy, việc giải bài tập Tin học đòi hỏi phải chính xác khoa học thì mới giải quyết được từng bài toán, từng vấn đề Để có được kĩ năng, định hướng đúng đắn không phải là có ngay được mà phải trải qua quá trình học tập, rèn luyện, phải có được sự định hướng đúng đắn của giáo viên

Do vậy là một giáo viên giảng dạy bộ môn Tin học tôi nhận thấy: cần phải rèn luyện, cần phải hướng dẫn các em ngay từ các bài tập Tin học đơn giản để hình thành cho các em phương pháp giải bài tập Tin học Do trình độ nhận thức còn hạn chế Nên phần lớn học sinh chưa hình thành các bước giải bài tập Tin

Trang 4

học và gặp rất nhiều khó khăn trong việc trình bày lời giải của một bài tập Tin học viết chương trình

2 Số liệu điều tra trước khi thực hiện.

Tin học là bộ môn có liên quan nhiều đến các môn khoa học khác, đặc biệt là Toán học Vì vậy khi giải các bài tập Tin học đòi hỏi các em phải biết vận dụng kiến thức toán học một cách thành thạo đồng thời kết hợp với niềm đam

mê, tính tích cực tìm tòi sáng tạo để đưa ra những phương pháp những lời giải mang tính khoa học và tính chính xác cao

Qua khảo sát thực tế ở trường THCS với đối tượng là học sinh lớp 8, tôi nhận thấy:

Rất nhiều học sinh đã bày tỏ ý nghĩ của mình là: không biết cách viết chương trình pascal như thế nào? Phương pháp giải bài tập viết chương trình gồm những bước nào?

Nhiều em băn khoăn, phải làm thế nào để có được chương trình pascal do chính các em viết một cách chính xác và đúng đắn

Đầu năm học 2014 - 2015 qua điều tra học sinh ở lớp 8 trường THCS tôi nhận thấy: đối với bài tập đơn giản về câu lệnh lặp thì số bài đạt điểm 5 trở lên chỉ chiếm 55 % Cụ thể như sau:

Chất lượng

số 40

Năm học Số

HS

Tỉ lệ

Tỉ lệ

%

Số HS

Tỉ lệ

%

Số HS

Tỉ lệ

%

Còn đối với bài tập mang tính khó và sáng tạo thì mới đạt khoảng 25% đến 30 %

Vì vậy thông qua các giờ học, người giáo viên phải hướng dẫn tỉ mỉ để hình thành cho học sinh phương pháp giải các bài tập Tin học và trình bày viết chương trình pascal một cách khoa học và mang tính sáng tạo cao

III NHỮNG BIỆN PHÁP THỰC HIỆN:

Với quan điểm dạy học tích cực thì người giáo viên là người tổ chức, chỉ đạo hướng dẫn học sinh tự lực và tích cực để đạt được kiến thức, phát triển năng lực nhận thức và rèn luyện kĩ năng Qua đó học sinh được làm nhiều hơn, được rèn luyện nhiều hơn

Trang 5

Thật vậy, để hình thành ở học sinh biết viết chương trình pascal thì các thầy giáo, cô giáo cần đưa ra những ví dụ cụ thể, hướng dẫn học sinh rõ ràng các bước, chỉnh sửa lời giải cho các em, các em được thực hành nhiều trên máy tính

Do phạm vi của đề tài và căn cứ vào chương trình Tin học lớp 8, nên ở

đây tôi chỉ đề cập đến phần “ Câu lệnh lặp trong pascal”.

Từ phạm vi đề tài trên, tôi thực hiện các biện pháp sau:

1 Xây dựng kế hoạch giảng dạy ngay từ đầu năm học:

- Ngay từ đầu năm học, giáo viên phải hướng dẫn phương pháp học tập về nề nếp học ở phòng máy cho học sinh

- Giáo viên chia nhóm học tập cho từng học sinh, phân nhóm trưởng, hướng dẫn cách hoạt động nhóm và trang bị sổ tay ghi chép cá nhân của học sinh

- Giáo viên soạn bài trước thực dạy 2 tiết giúp việc nghiên cứu kiến thức sâu hơn và chủ động hơn trong việc soạn các bài kiểm tra

- Giáo viên cần đầu tư nghiên cứu, mỗi năm cập nhật những cách hay của đồng nghiệp để tích lũy cho việc giảng dạy

- Giáo viên cần dành một thời lượng thích hợp cho việc mấu chốt và hướng dẫn học sinh cách nhơ kiến thức cơ bản vừa học ở các tiết học lý thuyết Cũng như cách tìm hiểu ý nghĩa của mỗi lệnh trong các bài thực hành

- Học sinh phải chuẩn bị những gì mà giáo viên đã dặn ở tiết trước

2 Xây dựng lý thuyết về câu lệnh lặp trong Pascal:

Trong chương trình tin học lớp 8, câu lệnh lặp trong Pascal gồm hai dạng cơ bản sau:

a Câu lệnh lặp For to do:

* Tác dụng: Dùng để xây dựng chu trình với số lần lặp xác định

* Cú pháp:

For <Biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;

Trong đó:

+ For, to, do là các từ khóa.

+ Biến đếm 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 hoặc bằng giá trị đầu.

+ Câu lệnh có thể là câu lệnh đơn hay câu lệnh ghép.

* Hoạt động của câu lệnh lặp For…to…do:

Bước 1 Biến đếm nhận giá trị của giá trị đầu

Bước 2 Kiểm tra xem giá trị của biến đếm còn nhỏ hơn giá trị cuối hay không (biến đếm  giá trị cuối)

Bước 3 Nếu việc kiểm tra:

Trang 6

- Cho giá trị sai câu lệnh sẽ bị bỏ qua.

- Cho giá trị đúng:

+ Thực hiện câu lệnh sau từ khóa do

+ Tăng giá trị của biến đếm lên một đơn vị (biến đếm:= biến đếm + 1)

- Quay trở lại bước 2

b Câu lệnh lặp với lệnh While…do:

* Tác dụng: Dùng để xây dựng chu trình với số lần lặp chưa xác định trước

* Cú pháp:

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

Trong đó:

+ While, do là các từ khóa.

+ Điều kiện thường là phép so sánh.

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

* Hoạt động:

Bước 1: Kiểm tra điều kiện

Bước 2 Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc Nếu điều kiện đúng, thực hiện câu lệnh và sau đó quay lại bước 1

Nhận xét:

- Câu lệnh được thực hiện lặp đi lặp lại cho đến khi <điều kiện> nhận giá trị sai Câu lệnh sẽ không thực hiện được lần nào nếu <điều kiện> nhận giá trị sai ngay từ khi bắt đầu vào chu trình

- Trong chu trình lặp phải có câu lệnh làm thay đổi giá trị của <điều kiện>

để tránh xảy ra vòng lặp vô tận

3 Một số ví dụ giải quyết bài toán bằng câu lệnh lặp:

a Ví dụ về câu lệnh lặp với số lần đã xác định trước: For to do

* Ví dụ 1: Tính tổng S = 1+ 1/2 + 1/3 + + 1/n

- Nhận xét:

+ Trong biểu thức trên, số hạng thứ i của tổng có thể được tính theo công thức S(i) = 1/i (i= 1, 2, 3, , n)

+ Trường hợp này có thể sử dụng được số lần lặp → Chọn vòng lặp For

- Chương trình:

Var i, n: integer;

S: real;

Begin

Write (‘Hay nhap vao so nguyen n =’);

Readln(n);

S:= 0;

Trang 7

For i:= 1 to n do

S:= S+1/i;

Writeln(‘Tong S = ‘,S:6:2);

Readln;

End

* Ví dụ 2: Đọc vào n số thực, tìm Max của chúng.

Thuật toán tìm Max trong một dãy số:

- Cho Max là số thứ nhất

- Duyệt toàn bộ dãy số từ số thứ hai trở đi, nếu thấy số nào lớn hơn Max thì lấy

số đó lam Max Sau khi duyệt xong dãy số, ta sẽ có Max là số lớn nhất

Nhận xét :

- Dãy số có một số lượng hữu hạn các số Ta có thể biết được số lượng từ khi bắt

đầu thực hiện thuật toán

- Thích hợp cho việc sử dụng cấu trúc For dạng tiến để thực hiện

Chương trình :

Program tim_max ;

Var

n,i: integer;

max,x: real;

Begin

Write(‘n = ‘); Readln(n);

Max:=n;

For i:= 2 to n do

Begin

Write(‘Cho so thu ‘,i,’:’); Readln(X);

If Max < X then Max:= X;

End;

Writeln(‘Max = ‘,Max:8:2);

Readln;

End

* Ví dụ 3: Tìm các số trong khoảng từ 0 đến 999 bằng tổng lập phương các chữ số của nó ( những số này được gọi là số Amstrong).

Ví dụ: 153 là số Amstrong vì: 153 = 13 + 53 + 33

Giả sử abc (0  a, b, c  9) là số Amstrong, ta cần tìm a, b và c thỏa mãn 100a + 10b + c = a3 + b3 + c3

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

Program Amstrong;

Trang 8

Var a, b, c:integer;

Begin

Writeln(‘ Cac so Amstrong trong khoang 0-999 la’);

For a:= 0 to 9 do

For b:= 0 to 9 do

For c:= 0 to 9 do

If a*100 + b*10 +c = a*a*a + b*b*b + c*c*c Then writeln(a*100 +b*10 +c);

Readln;

End

* Ví dụ 4: Số hoàn hảo là những số bằng tổng các ước thực sự của nó Hãy viết chương trình tìm các số hoàn hảo nhỏ hơn 1000.

Ví dụ 6 là số hoàn hảo vì: 6 = 1 + 2 + 3

Chương trình như sau:

Program sohoanhao;

Var n,i,j,tong: integer;

Begin

Write(‘Ban can tim nhung so hoan hao nho hon bao nhieu? ‘);

Readln(n);

For i:= 2 to n do

Begin

Tong:=1;

For j:= 2 to (i div 2) do

If i mod j= 0 then tong:= tong + j;

If tong = i then writeln(i:7,’ la so hoan hao’)

End;

Readln;

End

b Ví dụ về câu lệnh lặp với số lần chưa biết trước: While…do

* Ví dụ 1: Tìm bội số chung nhỏ nhất của hai số nguyên dương

Thuật toán:

- Lấy một trong hai số lần lượt nhân với 1, 2, 3, … cho đến khi nào tích số chia hết cho số thứ hai thì tích số đó chính là BSCNN

Nhận xét:

- Thuật toán cho thấy là trong quá trình tính toán, không thể biết trước được quá trình nhân phải thực hiện lặp lại bao nhiêu lần Trong trường hợp này phải sử dụng câu lệnh lặp với số lần lặp không xác định trước

Trang 9

- Điều kiện dừng là tích số chia hết cho số thứ hai.

Chương trình:

Program Boisochungnhonhat;

Var

Bscnn, n, m, k: integer;

Begin

Write(‘m= ‘); Readln(m);

Write(‘n= ‘); Readln(n);

Bscnn:= m; k:= 2;

While (Bscnn mod n < > 0) do

Begin

Bscnn:= k*m;

k:= k+1;

End;

Writeln(‘Bscnn = ‘, Bscnn);

Readln;

End

* Ví dụ 2: Viết chương trình nhập vào số tiền gửi và lãi suất hàng tháng (nhỏ hơn 20 000 000) ở một ngân hàng Tính và in ra số tháng phải gửi để

số tiền nhận được của khách không nhỏ hơn 20 000 000.

Chương trình như sau:

Program ngan_hang;

Uses crt;

Var d:integer;

T,a,m:real;

Begin

Clrscr;

Write(‘ Nhap vao so tien gui’);

Readln(a);

Write(‘ Nhap vao lai suat’);

Readln(m);

T:=a;

d:= 0;

while T< 20000000 do

begin

T:=T+T*m;

d:= d+1;

Trang 10

writeln(‘ So thang phai gui la:’, d);

readln;

end

* Ví dụ 3: Sử dụng câu lệnh lặp while…do để viết thuật toán và chương trình để nhập số tự nhiên n và tính tổng các ước số thực sự của n.

Thuật toán:

Bước 1: Nhập n

Bước 2: S 0, i 2

Bước 3: Nếu i>n – 1, chuyển tới bước 5

Bước 4: Nếu n mod i = 0, S  S + i, i  i + 1 và quay lại bước 3

Bước 5 In ra S và kết thúc

Chương trình:

Var n, i, S: integer;

Begin

Write(‘ Cho so tu nhien n = ‘); readln(n);

i:= 2; S:= 0;

while i< = n – 1 do

begin

if (n mod i) = 0 then S: = S+i;

i:= i+1;

end;

write(‘Tong cac uoc so thuc su cua ‘,n,’ la:’,S);

readln;

end

4 Bài học kinh nghiệm:

Qua các ví dụ trên, tôi nhận thấy rằng có rất nhiều hoạt động diễn ra trong cuộc sống mà được lặp đi lặp lại nhiều lần Chính vì thế, khi viết chương trình

có các hoạt động lặp thì trước khi viết tôi đọc đầu bài và xem xét xem nên sử dụng câu lệnh lặp nào là cần thiết và giải quyết được vấn đề cần tìm một cách nhanh nhất Bên cạnh đó ta cũng có thể sử dụng câu lệnh For…to…do lồng nhau, khi đó các biến đếm trong câu lệnh lặp phải khác nhau

Ví dụ:

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

For <biến đếm 2>:= <giá trị đầu >: to < giá trị cuối > do < câu lệnh>;

IV KẾT QUẢ THỰC HIỆN CÓ SO SÁNH ĐỐI CHỨNG.

Ngày đăng: 21/03/2019, 08:25

🧩 Sản phẩm bạn có thể quan tâm

w