1. Trang chủ
  2. » Giáo Dục - Đào Tạo

skkn sử dụng hệ thống bài tập thực hành nhằm nâng cao hiệu quả dạy và học chương trình con tro

14 231 0

Đ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 104,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

Vấn đề sử dụng chương trình con để giải quyết những bài toán lớn hơn trong tin học khá mới mẽ đối với học sinh của tôi, học sinh khó tiếp cận với đơn vị kiến thức trên, và đặc biệt thực

Trang 1

1 MỞ ĐẦU

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

Tốc độ phát triển của công nghệ thông tin ngày nay như vũ bão, người thầy cần phải tìm ra phương pháp dạy học tích cực hơn để tăng hiệu quả dạy và học Dạy học sinh học cách chủ động, phương pháp học, cách học những điều mà thực

tế đòi hỏi thay vì chuyển tải một lượng kiến thức quá nhiều đến mức học sinh không thể nhớ nổi, dẫu có nhớ lúc học, nhưng lại chóng quên

Môn Tin học, học sinh chưa có tư duy lập trình tốt, vì vậy rất khó cho việc dạy và học, mặc dù ngôn ngữ lập trình các học sinh cũng đã được giới thiệu ở lớp dưới, dần hình thành một tư duy lập trình trong các em, nhưng phần đông học sinh chưa được tích cực trong học tập, học tập lơ là dẫn đến kết quả yếu kém

Xuất phát từ thực tiễn giảng dạy tại trường THPT Gia Nghĩa tôi thấy rằng,

để đạt hiệu quả cao trong mỗi phần học, tiết học cần có cách thiết kế bài giảng cho phù hợp với nội dung kiến thức; phương pháp, phương tiện dạy học phải phù hợp với từng đối tượng học sinh Để qua mỗi phần học, tiết học học sinh thích thú với kiến thức mới, qua đó hiểu được kiến thức đã học trên lớp, đồng thời học sinh thấy được tầm quan trọng của vấn đề và việc ứng dụng của kiến thức trước hết để đáp ứng những yêu cầu của môn học, sau đó là việc ứng dụng của nó vào các công việc thực tiễn trong đời sống xã hội

Vấn đề sử dụng chương trình con để giải quyết những bài toán lớn hơn trong tin học khá mới mẽ đối với học sinh của tôi, học sinh khó tiếp cận với đơn vị kiến thức trên, và đặc biệt thực hành thường không hoàn thành được bài tập, đa số học sinh thường lười thực hành, e ngại các bài tập có sử dụng chương trình con

Trước khi thực hiện giải pháp này tôi chỉ sử dụng những ví dụ trong sách giáo khoa, sách bài tập mà không có một hệ thống chọn lọc các bài tập làm nổi bật vấn đề chương trình con, kết quả là học sinh thực hành không đạt yêu cầu, thường than khó, ít hứng thú trong học tập

Xuất phát từ cơ sở trên, tôi đã chọn lọc một số bài tập thực hành để đưa vào

hệ thống bài tập thực hành nhằm nâng cao hiệu quả dạy học môn tin học cho học sinh lớp 11 trường THPT Gia Nghĩa, “Sử dụng hệ thống bài tập thực hành nhằm nâng cao hiệu quả dạy và học chương trình con trong tin học lớp 11” là nhằm giúp các em hệ thống lại nội dung lý thuyết chương trình con vận dụng vào bài tập thực hành ở một góc độ trực quan và dễ tiếp thu hơn, từ đó hiểu rõ được ngữ nghĩa cũng như cách sử dụng “chương trình con” làm tốt các bài tập áp dụng, từ đó cảm thấy yêu thích hơn với môn tin học

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

Tìm cách khắc phục những khó khăn của học sinh trong vấn đề tiếp thu kiến thức chương VI, tin học lớp 11, phần “chương trình con và lập trình có cấu trúc” từ

đó tạo cho học sinh hứng thú học tập, thực hành tốt hơn ở môn học này

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

Trang 2

Sử dụng hệ thống bài tập thực hành có chọn lọc để giúp học sinh hứng thú hơn, dễ tiếp nhận đơn vị kiến thức chương trình con trong ngôn ngữ lập trình, tin học lớp 11 THPT

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

Xây dựng hệ thống bài tập chọn lọc có ứng dụng chương trình con bám sát mục tiêu môn học, để cung cấp cho học sinh làm bài tập thực hành khi học Chương VI: Chương trình con và lập trình có cấu trúc, môn tin học lớp 11

Đánh giá thử nghiệm bằng câu hỏi trắc nghiệm khách quan kết hợp với bài viết luận của học sinh để đánh giá sự tiếp thu kiến thức của học sinh

1.5 Giới hạn phạm vi nghiên cứu

Sử dụng hệ thống bài tập này cho các tiết dạy thực hành phần chương trình con trong tin học các lớp 11A5, 11A6 (năm học 2015 – 2016) trường THPT Gia Nghĩa, Đăk Nông

Trang 3

2 NỘI DUNG

2.1 Cơ sở lý luận của vấn đề

2.1.1 Lợi ích của việc dùng chương trình con trong ngôn ngữ lập trình

Trong kỹ thuật lập trình việc tổ chức lập trình kiểu cấu trúc modul hóa với các chương trình con trong ngôn ngữ lập trình bậc cao, chương trình con được diễn đạt là các hàm (function) hoặc các thủ tục (procedure)và phương thức (method),

Chương trình kiểu cấu trúc modul hóa, tức là chia chương trình thành nhiều modul, và trong chương trình chính muốn thực hiện thì gọi chúng, điều đó đem lại cho người lập trình các lợi ích sau:

+ Thay các đoạn trình giống nhau bằng một chương trình con, làm cho mã chương trình ngắn hơn, sáng sủa và dễ kiểm tra tính đúng đắn của chương trình

+ Đưa các chương trình con được viết sẵn vào thư viện (library) ở dạng văn bản trình hoặc dạng mã, để khi lập trình mới thì chỉ cần liên kết tới thư viện đó và

sử dụng

+ Những chương trình lớn được thiết kế dạng cấu trúc có thể chia nhỏ thành nhiều chương trình con cho nhiều người hoặc nhóm lập trình khác nhau

2.1.2 Khai báo chương trình con

Tùy theo từng ngôn ngữ lập trình cụ thể chương trình con được khai báo thông thường nằm ngay sau phần khai báo của chương trình chính

Trong ngôn ngữ lập trình Pascal phần khai báo chương trình con nằm ở phần cuối của phần khai báo trong chương trình chính

PROGRAM <Tên_chương_trình>; { Tên chương trình}

USES <Danh_sách_thư_viện>; {Khai báo thư viện}

CONST ;{Khai báo hằng}

TYPE ;{Khai báo kiểu}

VAR ;{Khai báo biến}

{Khai báo chương trình con}

BEGIN {Chương trình chính}

<Các lệnh của chương trình chính>;

END

2.1.2.a Khai báo hàm:

+ Khai báo hàm (Function):

FUNCTION <tên_hàm>[(<Danh_sách_tham_số>)]:<Kiểu_dữ_liệu>; [<phần khai báo>]

BEGIN

<Các lệnh của hàm>;

<tên_hàm>:=<Giá_trị>;

END;

2.1.2.b Khai báo thủ tục:

+ Khai báo thủ tục (Procudure):

Trang 4

PROCEDURE <tên_thủ_tục>[(<Danh_sách_tham_số>)];

[<phần khai báo>]

BEGIN <Các lệnh của thủ tục>;

END;

2.1.3 Biến toàn cục và biến cục bộ

Biến toàn cục là biến được khai báo trong chương trình chính Các biến này

có thể được dùng ở mọi nơi trong chương trình và tồn tại trong suốt thời gian làm việc của chương trình

Biến cục bộ (biến địa phương) là các biến được khai báo trong chương trình con, các biến này chỉ được sử dụng trong phạm vi chương trình con mà nó được khai báo, sau khi kết thúc chương trình con các biến này sẽ được giải phóng khỏi

bộ nhớ

2.1.4 Cách truyền tham số trong chương trình con

Chương trình con không cần có tham số nếu không dùng đến chúng hoặc dùng trực tiếp biến toàn cục

Khi truyền tham số các tham số trong lời gọi chương trình con phải đúng thứ tự và kiểu tương ứng với khi khai báo chương trình con

+ Tham số hình thức (đối) là các tham số sau tên hàm và thủ tục trong khai báo

+ Tham số thực sự là các tham số sau tên hàm và thủ tục trong lời gọi + Tham biến: Là các tham số được khai báo sau từ khóa var Các tham số thực phải là các biến chứ không được là giá trị Tham biến có thể được thay đổi trong chương trình con và sau khi ra khỏi chương trình con nó vẫn giữ giá trị thay đổi đó

+ Tham trị: Là các tham số được khai báo mà không đứng sau từ khóa var + Các tham số thực có thể là các giá trị, hằng, biến Tham trị có thể thay đổi trong chương trình con nhưng sau khi kết thúc chương trình con giá trị của nó trở

về như ban đầu

+ Các tham số trong hàm luôn là các tham trị, các tham số trong thủ tục có thể là tham trị hoặc tham biến

2.1.5 Phân biệt cách sử dụng hàm và thủ tục

Hàm khác thủ tục ở chỗ hàm trả về một giá trị cho lệnh gọi thông qua tên hàm còn thủ tục thì không

+ Dùng hàm:

o Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string hoặc kiểu con trỏ)

o Lời gọi hàm cần nằm trong các biểu thức tính toán

+ Dùng thủ tục

Trang 5

o Kết quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả về kiểu dữ liệu có cấu trúc (Array, Record, File)

o Lời gọi thủ tục không nằm trong các biểu thức tính toán

2.1.6 Tính đệ quy của chương trình con

Một chương trình con trong ngôn ngữ lập trình có thể gọi về chính nó, một lời gọi như thế gọi là một lời gọi đệ quy

2.2 Thực trạng của vấn đề

Chương trình con là một nội dung khó, mặc dù đã được Bộ giáo dục giảm tải nhiều phần, nhưng để học sinh thực hành và vận dụng được kiến thức trên với học sinh THPT Gia Nghĩa còn rất nhiều khó khăn, đa số học sinh trung bình yếu nên rất khó hoàn thành bài tập thực hành

Trong quá trình giảng dạy bản thân đã thực hiện một số giải pháp, một trong

số các giải pháp đó là sử dụng hệ thống bài tập chọn lọc có sử dụng chương trình con để làm sáng tỏ vấn đề giúp học sinh học tốt hơn, hứng thú hơn trong học tập 2.3 Các biện pháp đã tiến hành để giải quyết vấn đề

Ngoài sử dụng các ví dụ trong sách giáo khoa, tôi sử dụng thêm các bài tập sau để bổ sung cho học sinh từ dễ đến khó trong quá trình thực hành tại phòng máy tính và bài tập về nhà

Bài tập 1: Viết chương trình in ra màn hình hình chữ nhật được vẽ bằng các

kí tự * có N dòng và M cột, N và M được nhập từ bàn phím

Yêu cầu: Chương trình có thể vẽ nhiều lần bằng cách gọi thủ tục

Vehcn(N,M);

Ví dụ

*****

*****

*****

***

***

***

***

***

**********

**********

Bài tập này được bổ sung ngay sau bài tập ví dụ về thủ tục vẽ hình chữ nhật

ví dụ 1 bài 18 Ví dụ về cách viết và sử dụng chương trình con, trang 96, sách giáo khoa tin học 11.

Để khắc sâu cho học sinh cách sử dụng thủ tục, truyền tham số, thay tham

số hình thức bằng tham số thực sự Ngoài sử dụng thủ tục còn nhắc lại cho học sinh kiến thức về vòng lặp

PROGRAM Vidu1;

USES crt;

VAR N, M : byte;

Ch: Char;

PROCEDURE Vehcn(A, B: byte); {A,B la tham so hinh thuc}

Trang 6

Var i,j: Byte;

BEGIN

For i:=1 to A do

Begin

For j:=1 to B do Write('*');

Writeln;

End;

END;

BEGIN

Ch := 'Y';

While(Upcase(Ch)='Y') do

Begin

Write('Nhap so N = ' ); Readln (N);

Write('Nhap so M = '); Readln(M);

Vehcn(N,M); {M,N la tham so thuc su duoc truyen vao chuong trinh con Vehcn(A,B)}

Write('Ban muon ve nua khong? (Y/N)');

Readln(Ch);

End;

END

Bài tập 2 bổ sung thêm ngay sau ví dụ tham biến 1(trang 97, sách giáo khoa tin học 11) nhằm làm cho học sinh hiểu rõ hơn về tham trị trước khi kết bằng

ví dụ tham biến 2 (trang 100, sách giáo khoa tin học 11) để học sinh hiểu rõ cách

sử dụng tham biến, tham trị trong chương trình con.

Bài tập 2: Một học sinh viết chương trình cho phép nhập hai số vào hai

biến, thực hiện đổi giá trị của hai biến cho nhau Yêu cầu dùng chương trình con để thực hiện chức năng đổi giá trị

Nhận xét chương trình sau viết như vậy đúng hay chưa? Có thỏa mãn yêu cầu của đề bài?

PROGRAM Vidu2;

USES crt;

VAR M,N: integer;

PROCEDURE DoiAB(A,B :Integer);

Var T: Integer;

Begin

T:=A;

A:=B;

B:=T;

End;

BEGIN

Write('Nhap vao so N = '); Readln(N);

Write('Nhap vao so M = '); Readln(M);

DoiAB(N,M);

Writeln('So N co gia tri la:',N);

Writeln('So M co gia tri sau khi doi la:',M);

Trang 7

Readln;

END

Bài tập 3 được đưa vào sau khi dạy mục 2 cách viết và sử dụng hàm trang

101 sách giáo khoa tin học lớp 11 trước ví dụ của sách giáo khoa tìm ước số chung lón nhất của hai số nguyên Nhằm để học sinh dễ hiểu hơn về sử dụng hàm Với ví dụ sách giáo khoa học sinh của tôi khó tiếp nhận vì vậy phải đưa ví dụ này trước sau đó mới đến bài tập 4.

Bài tập 3: Viết chương trình tìm số lớn nhất trong 2 số nguyên A và B.

Yêu cầu: Chương trình có thể so sánh nhiều lần bằng cách sử dụng hàm trả

về số lớn nhất giữa hai số

PROGRAM Vidu3;

USES crt;

VAR A, B, Max : integer; Ch:Char;

FUNCTION Max2so (A, B: integer): integer;

BEGIN

If A > B then Max2so := A else Max2so :=B;

END;

BEGIN

Ch := 'Y';

While(Upcase(Ch)='Y') do

Begin

Write('Nhap so nguyen thu nhat = ' ); Readln(a);

Write('Nhap so nguyen thu hai= '); Readln(b);

Max:= Max2so(a,b); {Max chua gia tri tra ve cua ham Max2so(a,b)} Writeln('So Max la: ' , Max);

Write('Ban muon so sanh nua khong? (Y/N)');

Readln(Ch);

End;

END

Bài tập 4 này dùng để thay thế cách tìm ước số chung lớn nhất của hai số nguyên dương Sau đó yêu cầu học sinh nghiên cứu ví dụ sách giáo khoa Khẳng định lại với học sinh một bài toán có thể có nhiều thuật toán để giải Yêu cầu học sinh so sánh thuật toán nào tốt hơn, vì sao?

Bài tập 4: Viết chương trình tìm ước số chung lớn nhất của hai số N và M,

với N, M nguyên dương được nhập vào từ bàn phím

Yêu cầu: Chương trình dùng hàm tìm ước số chung lớn nhất USCLN(N,M)

PROGRAM Vidu4;

USES crt;

VAR M,N: integer;

FUNCTION USCLN(N,M :Integer):Integer;

Begin

While M<>N do

If M>N then M:=M-N else N:=N-M;

USCLN:=N;

Trang 8

BEGIN

N:=0; M:= 0;

While N<=0 do {kiem tra so N luon duong}

Begin

Write('Nhap vao so N = '); Readln(N);

End;

While M<=0 do {Kiem tra so M luon duong}

Begin

Write('Nhap vao so M = '); Readln(M);

End;

Write('USCLN(',N,',',M,')=',USCLN(N,M)); {goi ham USCLN}

Readln;

END

Bài tập 5 nhằm bổ sung thêm sau khi học sinh làm bài tập thực hành 6 trang 103, sách giáo khoa tin học 11, giúp học sinh ôn tập lại cách sử dụng hàm

và thủ tục Biến cục bộ và biến toàn cục

Bài tập 5: Viết chương trình nhập vào một dãy số nguyên dương, tìm và in

ra tất các các ước số chung lớn nhất của từng cặp số liền nhau tương ứng của dãy vừa nhập

Ví dụ:

Nhập dãy số: 5 6 7 3 5 10 20 12 8

Dãy số được xuất ra màn hình là: 1 1 1 1 5 10 4 4

PROGRAM Vidu5;

USES crt;

TYPE Kieu_Mang = Array [1 10000] of integer;

VAR i,N: integer;

A: Kieu_Mang;

FUNCTION USCLN(N,M :Integer):Integer;

Begin

While M<>N do

If M>N then M:=M-N else N:=N-M;

USCLN:=N;

End;

PROCEDURE NhapdayNso(Var A: Kieu_Mang; N:Word);

Var i:integer;

Begin

For i:=1 to N do

Begin

Write('A[',i,']='); Readln(A[i]);

End;

End;

BEGIN

Write('Nhap vao day so co so phan tu N = '); Readln(N);

Trang 9

NhapdayNso(A,N);

Writeln('Day cac uoc so chung lon nhat cua tung cap so:');

For i:=1 to N-1 do

Write(USCLN(A[i],A[i+1]),' ');

Readln;

END

Bài tập 6 được đưa vào sau bài tập thực hành 7, trang 105, sách giáo khoa tin học 11 (tiết phân phối chương trình 49, Bài tập luyện tập)

Bài tập 6: Viết chương trình nhập vào một số nguyên dương N, In ra màn

hình các số nguyên tố nhỏ hơn N

Yêu cầu: Dùng hàm để kiểm tra một số có phải là số nguyên tố hay không.

Ví dụ:

Nhập số N= 20

Dãy số được xuất ra màn hình là: 2 3 5 7 11 13 17 19

PROGRAM Vidu6;

USES crt;

VAR i,N: integer;

FUNCTION KTNT(M :Integer):Boolean;

Var i:Integer;

Begin

KTNT:=True;

If M<4 then KTNT:=True

Else

For i:=2 to Trunc(Sqrt(M)) do

If M Mod i= 0 then KTNT:=False;

End;

PROCEDURE InsoNTNHN(N:Integer);

Var i:integer;

Begin

For i:=2 to N-1 do

If KTNT(i) then Write(i,' ');

End;

BEGIN

Write('Nhap vao so N = '); Readln(N);

InsoNTNHN(N);

Readln;

END

Bài tập 7 đưa vào tiết phân phối chương trình 49: Bài tập luyện tập

Bài tập 7: Viết chương trình nhập vào một số nguyên dương N, tính giai

thừa của số n (Viết là n!) Với yêu cầu:

Sử dụng chương trình con để tính giai thừa của một số

n! = 1 nếu n = 0;

Trang 10

n! = 1.2.3.4.5 n (Tích của n thừa số).

PROGRAM Vidu7a;

USES Crt;

VAR N:integer; X:int64;

PROCEDURE Giai_Thua(Var GT:int64; N:byte);

Begin

GT:=1;

While n>0 do

Begin

GT:=GT*N;

N:=N-1;

End;

End;

BEGIN

N:=-1;

While N<0 do

Begin

Write('Nhap so N = ');Readln(N);

End;

Giai_Thua(X,N);

Writeln(N,'! = ',X);

Readln;

End

Cách khác tính theo phương pháp đệ qui

PROGRAM Vidu7b; {Tinh Giai thua cua N theo phuong phap de qui} USES crt;

VAR N:integer;

FUNCTION Giai_Thua(N:byte): Int64;

Begin

If n<=1 Then Giai_Thua:=1

Else Giai_Thua:=N*Giai_Thua(N-1);

End;

BEGIN

N:=-1;

While N<0 do

Begin

Write('Nhap so N = ');Readln(N);

End;

Writeln(N,'!',' = ',Giai_Thua(N));

Readln;

END

Bài tập 8 được đưa vào tiết phân phối chương trình: 50.

Bài tập 8: Viết chương trình sắp xếp một dãy số gồm N số thành dãy tăng

dần, xuất kết quả ra màn hình

Ngày đăng: 10/10/2017, 16:05

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