1. Trang chủ
  2. » Luận Văn - Báo Cáo

skkn xây dựng hệ thống bài tập luyện kỹ năng cho học sinh chuyển đổi giưa cấu trúc lặp while- do và for -do

13 808 1

Đ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 13
Dung lượng 142,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

Tuy nhiên với các em học sinh khi làm bài tập còn gặp nhiều lúng túng cũng như các vướng mắc khi lựa chọn cấu trúc lặp, hay chuyển đổi giữa các cấu trúc lặp để mô tả các thuật toán tương

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT TRẦN PHÚ

SÁNG KIẾN KINH NGHIỆM

XÂY DỰNG HỆ THỐNG BÀI TẬP LUYỆN KỸ NĂNG

CHO HỌC SINH CHUYỂN ĐỔI GIỮA CẤU TRÚC LẶP

WHILE…DO VÀ FOR DO

Người thực hiện : Vũ Thị Huệ Chức vụ : Giáo viên SKKN thuộc môn : Tin học

Trang 2

I Đặt vấn đề

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

Trong tất cả các ngôn ngữ lập trình đều có cấu trúc vòng lặp hay còn gọi là chu trình, tuỳ theo điều kiện lặp và yêu cầu sử dụng lệnh mà sử dụng vòng lặp khác nhau Tuy nhiên với các em học sinh khi làm bài tập còn gặp nhiều lúng túng cũng như các vướng mắc khi lựa chọn cấu trúc lặp, hay chuyển đổi giữa các cấu trúc lặp để mô tả các thuật toán tương ứng, viết các chương trình thực hiện nhiều lần một hoặc nhiều tác vụ khi điều kiện còn thoả mãn Chính vì lý do trên tôi đã mạnh dạn xây dựng hệ thống bài tập để luyện kỹ năng cho học sinh chuyển đổi giữa cấu trúc lặp For Do và While…Do

2 Mục đích nghiên cứu

Để tạo cho học sinh thực hiện hiệu quả giải các bài toán có những thao tác phải thực hiện lặp đi lặp lại một số lần, luyện cho các em kỹ năng khi nào thì sử dụng cấu trúc For Do, khi nào thì sử dụng cấu trúc While Do và cách chuyển đổi qua lại giữa hai cấu trúc trên Từ đó các

em sẽ hình dung hết được máy tính thực hiện các chu trình lặp các em đã lựa chọn để giải các bài toán như thế nào?

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

- Để xây dụng đề tài này đạt kết quả cao tôi đã sử dụng các phương pháp nghiên cứu sau:

+ Phương pháp điều tra: Tôi yêu cầu các em học sinh mô tả chu trình lặp khi làm các bài tập trong sách giáo khoa, sách bài tập và trình bày cấu trúc lặp các em lựa chọn

+ Phương pháp phân tích tổng hợp: Với phương pháp này tôi yêu cầu học sinh chỉ rõ các ưu điểm, nhược điểm cũng như sự giống nhau và khác nhau khi sử dụng cấu trúc For…Do hay While…Do khi giải bài toán

+ Phương pháp nghiên cứu: Tôi đã nghiên cứu các vấn đề mang tính lý luận có liên quan đến đề tài

- Đối tượng nghiên cứu : Học sinh khối 11 của trường THPT Trần Phú – Nga Sơn – Thanh Hoá và các điều kiện có liên quan

- Kế hoạch nghiên cứu: Bắt đầu từ tháng 9 năm 2012 đến tháng 5 năm 2013

II Giải quyết vấn đề

1 Cơ sở lý luận

Căn cứ nhiệm vụ của khoa học và đúc rút sáng kiến kinh nghiệm của nghành GD & ĐT Thanh Hoá, căn cứ phương hướng, nhiệm vụ trọng tâm của nghành GD& ĐT Thanh Hoá năm học 2012- 2013 với chủ đề đổi mới phương pháp dạy học, phát huy tính sáng tạo trong dạy học, xây dựng trường học thân thiện , học sinh tích cực Bên cạnh đó bám sát nội dung chương trình dạy học, cụ thể là ở Tiết phân phối chương trình thứ 17 Tin Học 11 phần “ Câu hỏi và bài tập” Tôi đã xây dựng hệ thống bài tập

2

Trang 3

luyện kỹ năng cho học sinh biết lựa chọn cấu trúc lặp phù hợp với từng tình huống cụ thể, viết được câu lệnh lặp mô tả thuật toán tương ứng và có thể dùng câu lệnh While Do để thay thế cho câu lệnh For…Do và ngược lại Với đề tài này tôi hy vọng sẽ giúp cho bản thân thêm vững vàng, hiểu sâu về ngôn ngữ lập trình Pascal hơn

2 Thực trạng

- Thực trạng chung: Mặc dù trong những năm gần đây Tin học được đưa vào giảng dạy ở các trường tiểu học, trung học cơ sở và hầu hết các em học sinh ở các lớp tôi giảng dạy đều đã được học Tin học ở các cấp dưới thế nhưng để hiểu về lập trình và áp dụng ngôn ngữ lập trình Pascal để

mô tả thuật toán giải các bài toán đơn giản trên máy tính bây giờ các em mới thực sự được hiểu, được học kỹ, bài bản đầy đủ hệ thống của một ngôn ngữ lập trình

- Thực trạng đối với học sinh: Đa số các em học sinh ở các lớp tôi dạy đều

ở vùng nông thôn, bãi ngang nên điều kiện gia đình chưa có máy vi tính cho các em thực hành thêm ở nhà, các em tiếp xúc với máy vi tính còn ít

- Với giáo viên: Một điều thực tế là chất lượng tuyển sinh đầu vào ở các

em học sinh trường tôi đang trực tiếp giảng dạy còn thấp, thua so với các trường bạn lân cận vì vậy nên việc mô tả thuật toán cho các em hiểu được các chu trình lặp tôi cần mất nhiều thời gian hơn và việc trình bày đòi hỏi phải kỹ lưỡng, tỉ mỉ hơn

- Các em có đầy đủ sách vở cũng như các dụng cụ học tập và một điều thúc đẩy tôi có thêm nhiều tâm huyết xây dựng đề tài này là ý thức học tập, xây dựng bài của các em luôn hăng say và sôi nổi

3 Các biện pháp tiến hành

Khi tôi hướng dẫn cho học sinh làm bài tập về cấu trúc lặp, câu hỏi thường đặt ra ở các em là:

- Lựa chọn cấu trúc lặp nào cho phù hợp với bài toán?

- Sử dụng cấu trúc For Do hay While Do sẽ có ưu điểm và

nhược điểm nào?

- Có thể sử dụng cả hai cấu trúc trên khi giải một bài toán được

không?

Những vướng mắc trên của các em tôi đã trăn trở để xây dựng hoàn thành đề tài này và tôi đã tiến hành theo các bước như sau:

3.1 So sánh đặc điểm của từng cấu trúc vòng lặp.

Trang 4

- Cấu trúc For…DO

+ Biết trước số lần lặp , số lần lặp được xác định bằng <giá trị cuối> - < giá trị đầu> + 1 Từ khóa To được dùng khi < giá trị cuối > lớn hơn <giá trị đầu>, ngược lại thì dùng Downto

+ Biến điều khiển phải là kiều số nguyên, những kiểu đếm được, rời rạc, hữu hạn Không được là kiểu số thực

+ Biến điều khiển sau mỗi vòng lặp sẽ tự động tăng hoặc giảm 1 đơn vị, vì vậy trong vòng lặp không được làm thay đổi giá trị của biến điều khiển

+ Toàn bộ cấu trúc For … Do là một câu lệnh đơn, nếu có nhiều lệnh trong vòng lặp thì phải đặt chúng trong Begin… End

+ Không biết trước số lần lặp, kiểm tra điều kiện trước, thực hiện công việc sau,

vì vậy nếu ngay từ đầu < Điều kiện > không thoả mãn thì đã thoát khỏi vòng lặp

+ Điều kiện là một biến hoặc biểu thức thuộc kiểu Boolean

+ Nên sử dụng cấu trúc While Do trong trường hợp

- Muốn một hay nhiều câu lệnh được lặp lại chừng nào mà một

< Điều kiện> nào đó còn thoả

- Muốn một khả năng để < Điều kiện> lặp không thoả và câu

lệnh sau Do sẽ không thực hiện

+ Toàn bộ cấu trúc While …Do là một câu lệnh đơn, nếu cần nhiều lệnh thì phải đặt trong cặp Begin….End

Trên cơ sở các em nắm được đặc điểm của từng cấu trúc lặp, tôi đưa ra hệ thống bài tập sau

3.2 Hệ thống bài tập luyện kỹ năng chuyển đổi câu lệnh While Do thay cho câu lệnh For…Do cà ngược lại.

Bài toán 1: Có thể dùng câu lệnh While…Do thay cho câu lệnh For…Do được không? Nếu được hãy thực hiện điều đó với chương trình Tong-1a tính và đưa ra màn hình tổng s = 1100

2

1 1

1 1

a a

a

( Bài tập 3 trang 51 sgk Tin Học 11) Đáp án: Khi một bài toán được giải bằng cấu trúc lặp For…Do thì sẽ luôn giải được bằng cấu trúc lặp While….Do Tuy nhiên trong một số trường hợp lại không thể dùng For…Do để thay cho cấu trúc While…Do

Với bài toán Tong- 1a, phải thực hiện qua 100 bước lặp, mỗi bước lặp tổng s được cộng thêm một giá trị xác định bởi công thức a 1n Đây là vòng lặp xác định số lần lặp trước, ta sử dụng vòng For …Do

Tổng s được tính, dừng lại khi N >100 Do vậy ta có thể sử dụng cấu trúc lặp While…Do thay cho For…Do, điều kiện biểu thức ở đây N>100 Thì thoát khỏi vòng lặp

Trang 5

- Chương trình Tong-1a dùng vòng lặp For…Do

Program Tong1a;

Uses crt;

Var

S:Real;

a,n:integer;

Begin

Clrscr;

Writeln(‘ chuong trinh su dung cau truc lap For Do’);

Writeln(‘ -‘);

Writeln(‘ Hay nhap gia tri cua a =’); readln(a);

S:= 1.0/a;

For n:=1 to 100 do

S:= s+ 1.0/(a+n);

Writeln(‘ Tong -1a can tinh s= ‘, s:5:2);

Writeln;

Readln

End

- Chương trình Tong-1a dùng vòng lặp While…Do

Program Tong1a;

Uses crt;

Var

S:Real;

a,n:integer;

Begin

Clrscr;

Writeln(‘ chuong trinh su dung cau truc lap While Do’);

Writeln(‘ -‘);

Writeln(‘ Hay nhap gia tri cua a =’); readln(a);

S:= 1.0/a;

While (n> 0) and (n <= 100) do

Begin

N:=N+1 S:= s+ 1.0/(a+n);

End;

Writeln(‘ Tong -1a can tinh s= ‘, s:5:2);

Writeln;

Readln

End

Trang 6

Bài toán 2: Viết chương trình tính tổng bình phương của N số nguyên đầu tiên

Để tính tổng của N số nguyên đầu tiên chưa biết trước số lần lặp cụ thể,

số lần lặp phụ thuộc vào giá trị N nhập từ bàn phím

+ Sử dụng vòng lặp For Do , biến điều khiển i tự động tăng và đi từ 1 đến N, mỗi lần lặp tổng bình phương được cộng thêm một giá trị bằng (i*i)

+ Sử dụng vòng lặp While…Do khi biến điều khiển thoả mãn i<N

-Chương trình thực hiện

Program tongbinhphuong;

Uses crt;

Var

I,n: integer;

S:Real;

Begin Clrscr;

Writeln(‘ chuong trinh su dung cau truc lap For Do’);

Writeln( ‘ Nhap n = ‘); readln(N);

For i :=1 to N do

S:= s+ (i*i);

Writeln( ‘ tong binh phuong cua ‘,n,’ so nguyen dau tien = ‘, s ); Writeln;

Write(‘ Bam phim <Enter > de ket thuc’) Writeln;

Readln;

End

Program tongbinhphuong;

Uses crt;

Var

I,n: integer;

S:Real;

Begin

Clrscr;

Writeln(‘ chuong trinh su dung cau truc lap While Do ’);

Writeln( ‘ Nhap n = ‘); readln(N);

S:= 0;

I:=0;

While ( i <n ) do

Begin

S:= s+ (i*i);

I:=i+1;

End;

Writeln( ‘ tong binh phuong cua ‘,n,’ so nguyen dau tien = ‘, s );

Writeln;

Write(‘ Bam phim <Enter > de ket thuc’)

Writeln; Readln

End

6

Trang 7

Bài toán 3: Tính tổng của 5 số nhập vào từ bàn phím

+Tính tổng 5 số được nhập từ bàn phím biết số lần lặp xác định là 5 lần,

sử dụng cấu trúc lặp For Do, biến điều khiển tự động tăng từ 1 đến 5

+ Vòng lặp While Do được thực hiện khi điều kiện được thoả mãn, các

số nhập vào có giá trị khác không và số lần nhập i<=5

+ Chương trình thực hiện

Program tong5so;

Uses crt;

Var

I:integer:

So,tong:real;

Begin Clrscr;

Write (‘ chuong trinh tinh tong 5 so nhap tu ban phim ‘); Writeln(‘ chuong trinh su dung cau truc lap For Do ’);

Writeln (‘ -‘);

For i:=1 to 5 do

Begin Write (‘ Nhap so thu ‘,i:2,’ =) ; Readln(so); End;

For i:=1 to 5 do

Tong:= tong+ so;

Write (‘ Tong cua 5 so = ‘,tong :3:2);

Writeln;

Readln End

Program tong5so;

Uses crt;

Var

I:integer:

So,tong:real;

Begin

Clrscr;

Write (‘ chuong trinh tinh tong 5 so nhap tu ban phim ‘);

Writeln(‘ chuong trinh su dung cau truc lap While Do ’);

Writeln (‘ -‘);

Tong:=0;

I:=1;

Writeln (‘ Nhap so thu ‘,i:2,’ =) ; Readln(so);

While (so <> 0 ) and (i<5) do

Begin I:=i+1;

Trang 8

Write( ‘ nhap so : ‘,i,’ = ‘);

End;

For i:= 1 to 5 do

Tong:= tong+ so;

Write (‘ Tong cua 5 so = ‘,tong :8:2);

Writeln;

Readln

End

Bài toán 4: Lập trình tính y= 

 

50

1 1

n

Tổng y được tính khi thực hiện 50 lần lặp xác định, mỗi lần lặp tổng y được cộng thêm một giá trị xác đinh bởi công thức 1

n n

+ Sử dụng cấu trúc lặp For…Do, biến điều khiển tự động tăng từ 1 đến 50 + Sử dụng cấu trúc While Do khi thoả mãn điều kiện N<=50, Nếu N>50 thì thoát khỏi vòng lặp

+Chương trình thực hiện

Program tinhtong;

Uses crt;

Var

Y:real;

N,i :integer;

Begin Clrscr;

Writeln( Su dung vong lap For…Do’);

Y:=0;

For N :=1 to 50 do

Y:=y+ N/N+1:

Writeln(‘ Tong can tinh =’, y:5:2);

Writeln;

Readln End

Program tinhtong;

Uses crt;

Var

Y:real;

N,i :integer;

Begin

Clrscr;

Writeln( Su dung vong lap While…Do’);

Y:=0; n:=0;

While N <= 50 do

Begin N:=N+1;

8

Trang 9

Y:=y+ N/N+1:

End;

Writeln(‘ Tong can tinh =”, y:5:2);

Writeln;

Readln

End

Bài toán 5:Lập trình tính e(n) = 1+ 1!

! 3

1

! 2

1

! 1

1

n

!

n

Đây là bài toán chưa xác định trước số lần lặp và có điều kiện ràng buộc,

ta sử dụng cầu trúc lặp While Do, tổng e(n) được tính khi thoả mãn điều kiện

6

10

.

2

!

n , mỗi lần lặp e(n) được cộng thêm một giá trị bằng n1!

Tuy nhiên tổng e(n) có thể sử dụng vòng lặp For Do khi không có điều kiện ràng buộc 2 10 6

!

n và giá trị N được nhập vào từ bàn phím để xác định

số lần lặp

- Chương trình thực hiện:

Program tong;

Uses crt;

Var

E(n):real;

N,gt:integer;

Begin Clrscr;

Writeln( ‘ su dung vong lap While…Do ‘);

E(n) :=1;

N:=0;

Gt:=1;

While not(1/gt < 2.10-6 do

Begin

N:=N+1;

Gt:=gt*N;

E(n) :=E(n) +1/gt;

End;

Writeln( ‘ tong can tinh E(n) = ‘, E(n) :3:2’);

Writeln;

Readln;

End

Program tong;

Uses crt;

Var

E(n):real;

gt:integer;

Trang 10

Begin

Clrscr;

Writeln( ‘ su dung vong lap For…Do ‘);

Writeln( ‘ Nhap N = ); Readln(N);

E(n) :=1;

Gt:=1;

For i:= 1 to N do

Begin

Gt:=gt*i;

E(n) :=E(n) +1/gt;

End;

Writeln( ‘ tong can tinh E(n) = ‘, E(n) :3:2’);

Writeln;

Readln

End

Bài toán 6: Viết chương trình tìm ước số chung lớn nhất của 2 số

Để tìm ước chung của 2 số bất kỳ nhập vào từ bàn phím, ta thực hiện so sánh 2 số

+ Khi so1 >so2 thì so1=so1-so2

+ Khi so2 >so1 thì so2=so2-so1

+Thực hiện tiếp tục như vậy cho tới khi nào so1=so2 thì dừng , đó chính

là ước số chung lớn nhất của 2 số

Như vậy, việc thực hiện chưa xác định trước được số lần lặp, với bài toán này ta không dùng cấu trúc lặp For Do mà chỉ dùng được cấu trúc While Do khi 2 số khác nhau Vòng lặp sẽ kết thúc khi 2 số bằng nhau để đưa ra ước chung lớn nhất của 2 số

- Chương trình thực hiện:

Program ucln;

Uses crt;

Var

So1,so2,x,y:integer;

Begin

Clrscr;

Writeln( ‘ tim uoc chung lon nhat cua 2 so’);

Writeln(‘ - -‘):

Write( ‘nhap so thu nhat:’); Readln(so1);

Write(’ nhap so thu hai:’) ; Readln(so2);

X:=so1;

Y:=so2;

While( so1<>so2) Do

If so1>so2 then

10

Trang 11

Else

So2:=so2-so1;

Writeln;

Writeln (‘ Uoc so chung cua 2 so ‘,x,’ va ‘,y,’ la : ‘, so1);

Writeln;

Readln

End

Trên đây là các bài tập tôi đã đưa ra để luyện tập cho các em phần bài tập cấu trúc lặp, trong các bài toán 1,2,3,4 tôi phân tích để các em thấy được có thể

sử dụng được cả hai cấu trúc lặp For Do và While Do

Với bài toán 5 sử dụng cấu trúc While Do khi có điều kiện ràng buộc, ta thực hiện được cấu trúc For Do khi bỏ điều kiện và thực hiện khi giá trị N nhập

từ bàn phím cũng là để xác định số lần lặp

Bài toán 6 là bài tập mà ta chỉ có thể sử dụng cấu trúc lặp While Do để thực hiện và không thể dùng cấu trúc lăp For Do

Ngoài các bài tập trên tôi hướng dẫn và gợi ý cho các em làm thêm các bài tập trong sách giáo khoa và sách bài tập Tin Học 11 phần cấu trúc lặp

4 Kiểm nghiệm

Qua việc vận dụng các phương pháp nghiên cứu trên vào công tác giảng dạy tôi thấy có nhiều kết quả khả quan thông qua các lần kiểm tra và các giờ thực hành, các em đã biết lựa chọn cấu trúc lặp phù hợp cho mỗi bài toán cụ thể

và có thể chuyển đổi giữa cấu trúc lặp While Do và For Do.Điều đó khiến cho các em thêm yêu thích môn học hơn, tinh thần học tập luôn tự tin phấn khởi Các em đã có thêm nhiều kiến thức bổ ích về ngôn ngữ lập trình Pascal nói riêng

và các ngôn ngữ lập trình nói chung

Trang 12

III Kết luận và đề xuất.

Để hoạt động dạy cũng như hoạt động học luôn đạt kết quả cao đòi hỏi người thầy luôn tìm tòi khám phá đổi mới phương pháp của mình, hướng học sinh tới những phương pháp tích cực nhất để các em giải quyết được những vấn

đề mà chính người thầy đặt ra Người thầy giúp các em học sinh chỉ ra các sai lầm các em mắc phải do không hiểu rõ vấn đề, tư duy chưa mạch lạc Tôi đã xây dựng hệ thống bài tập luyện kỹ năng cho học sinh chuyển đổi giữa cấu trúc lặp While Do và For Do xuất phát từ việc giảng dạy trên thực tế Tuy nhiên vẫn còn nhiều hạn chế Tôi mong nhận được sự đóng góp của các quý đồng nghiệp

để đề tài được hoàn thiện hơn

Qua đây tôi cũng xin có một đề xuất nho nho là giảm tải bớt chương trình

và tăng thêm các giờ bài tập, thực hành Tôi xin chân thành cảm ơn!

Xác nhận của hiệu trưởng Thanh hoá, ngày 28 tháng 5 năm 2013

Tôi xin cam đoan đây là SKKN của mình viết, không sao chép nội dung của người khác

Người thực hiện

12

Ngày đăng: 19/07/2014, 08:07

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w