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

Chạy chương trình pascal với vận tốc của chương trình con để về đích lập trình

18 169 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 18
Dung lượng 150 KB

Nội dung

Lí do chọn đề tài Chương trình tin học 11 cung cấp đầy đủ các kiến thức cơ bản của lập trình và hình thành kĩ năng lập trình căn bản cho học sinh.. Chủ đề chương trình con CTC được đưa v

Trang 1

MỤC LỤC

1.Mở đầu 1

1.1 Lí do chọn đề tài 1

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

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

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

2 Nội dung sáng kiến kinh nghiệm 2

2.1 Cơ sở lí luận của sáng kiến kinh nghiệm 2

2.2 Thực trạng của vấn đề trước khi áp dụng sang kiến kinh nghiệm 2

2.3 Các sáng kiến kinh nghiệm, giải pháp đã sử dụng để giải quyết vấn đề 3

2.3.1 Mục đích của việc sử dụng chương trình con 3

2.3.2 Phân loại chương trình con 6

2.3.3 Cấu trúc chương trình con 6

2.3.4 Cách dùng chương trình con 9

a Lời gọi chương trình con 9

b Cách dùng tham số 9

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

2.3.5 Thoát khỏi chương trình con 11

2.3.6 Bài tập áp dụng 11

2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, đồng nghiệp và nhà trường 14

3 Kết luận và kiến nghị 15

3.1 Kết luận 15

3.2 Kiến nghị 15

Tài liệu tham khảo 16

Danh mục mục các đề tài SKKN mà tác giả đã được Hội đồng Cấp phòngGD&ĐT, Cấp Sở GD&ĐT và các cấp cao hơn đánh giá đạt từ loại C trở lên 17

Trang 2

1 Mở đầu

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

Chương trình tin học 11 cung cấp đầy đủ các kiến thức cơ bản của lập trình và hình thành kĩ năng lập trình căn bản cho học sinh Nội dung xuyên suốt chương trình giúp học sinh dễ dàng hệ thống và tiếp cận tới từng vấn đề đặt ra Chủ đề chương trình con (CTC) được đưa vào cuối chương trình với nội dung ở

2 bài 17 và bài 18, với các kiến thức: lợi ích của việc sử dụng chương trình con, cấu trúc chung của CTC, phân loại CTC, cấu trúc CTC, ví dụ và cách sử dụng CTC Qua đấy thấy được lợi ích rất quan trọng của việc sử dụng CTC, yêu cầu người học vận dụng toàn bộ kiến thức đã biết để hướng tới mở rộng khả năng tư duy và kĩ năng lập trình từ cơ bản đến thành thạo và thực sự chuyên nghiệp Điều này là quan trọng và cần thiết, không chỉ giúp ích cho học sinh ở phổ thông

mà còn là hành trang để các em bước vào các bậc học cao hơn Nhưng nội dung liên quan đến CTC lại khá khó tiếp cận với mặt bằng chung nhiều học sinh, chính là nội dung khó nên cũng là phần nội dung phân loại học sinh rõ nét nhất, tạo hứng thú để phát hiện ra những nhóm học sinh có tiềm năng tư duy lập trình chuyên nghiệp Bản thân tôi qua quá trình giảng dạy theo dõi, đánh giá và tổng kết được chủ yếu học sinh khối 11 của mình còn khá yếu trong việc học lập trình pascal, nhất là sử dụng CTC vào lập trình Cứ thấy nội dung khó không vận dụng được là các em dễ dàng bỏ qua phần kiến thức cần thiết và rất hay này

Chính vì lí do trên nên tôi chọn đề tài “Chạy chương trình Pascal với vận tốc của chương trình con để về đích lập trình”, “Chạy chương trình”-“Ctrl+F9”,

“vận tốc”-“Debug and Compile” và “về đích”-“để kết thúc chương trình tin học 11”, hướng tới giúp học sinh sử dụng CTC để giải quyết các bài toán lập trình từ đơn giản đến phức tạp, hình thành kĩ năng lập trình căn bản, thành thạo

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

Với việc chọn vấn đề “Chạy chương trình với vận tốc của chương trình con để về đích lập trình”, tôi mong muốn: đối với HS sẽ hình thành kiến thức, tư duy và kĩ năng lập trình tốt hơn nhằm hoàn thành chương trình tin học 11và là bàn đạp để nâng đỡ những lập trình viên tương lai Đối với bản thân tôi sẽ muốn hoàn thành tốt công tác chuyên môn, nâng cao hiệu quả trong giảng dạy, bổ sung những phần kiến thức kinh nghiệm còn thiếu

Mặc khác, tôi mông muốn tài liệu của mình sẽ giúp đỡ được các giáo viên đồng môn phần nào trong việc tạo hứng thú lập trình, tìm và phát hiện khả năng

tư duy lập trình để bồi dưỡng và phát triển tiếp

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

Đề tài của tôi sẽ nghiên cứu, khai thác những phần kiến thức quan trọng,

ví dụ bài tập lập trình, bài tập thực hành, bài tập thực hành tổng hợp, tìm hiểu, phân loại và hướng tới từng nhóm đối tượng học sinh Tất cả các kỹ năng lập trình như viết chương trình, test chương trình, hiệu chỉnh chương trình cho phù hợp với đặc trưng của bộ môn

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

- Phương pháp nghiên cứu xây dựng cơ sở lí thuyết

Trang 3

- Phương pháp điều tra khảo sát thực tế, thu thập thông tin.

- Phương pháp thống kê, xử lí số liệu

2 Nội dung sáng kiến

2.1 Cơ sở lí luận của sáng kiến kinh nghiệm

Cùng với sự phát triển của khoa học công nghệ, tin học ra đời đóng vai trò

là một ngành khoa học mang lại hiệu quả rất to lớn trong đời sống của con người Việc ứng dụng tin học vào thực tế nhất là việc sử dụng máy tính để giải các “bài toán” đã và đang đưa tri thức của con người lên một tầm cao mới Dần dần chúng ta có thể sử dụng những “cỗ máy nhân tạo” được “lập trình” để giải quyết các công việc không những nhanh, tiết kiệm thời gian mà hiệu quả gấp nhiều lần so với sức lao động của con người Và một trong những kiến thức lập trình căn bản mà học sinh phổ thong được tiếp cận- ngôn ngữ lập trình Pascal bắt đầu hình thành cho các em- thế hệ chủ nhân tương lai, kiến thức và kĩ năng

tư duy lập trình

Toàn bộ những nội dung quan trọng trong chương trình tin học 11: dữ liệu chuẩn và kiểu dữ liệu có cấu trúc), cấu trúc câu lênh, vòng lăp, cấu trúc CTC…

đã trang bị đầy đủ cho học sinh kiến thức lập trình cơ bản, để từ đây giúp các em phát triển hơn Ứng dụng kiến thức lập trình vào các môn học khác, từ các môn học khác vào lập trình và ứng dụng vào ngay cuộc sống môi trường học tập,vui chơi, giải trí…

Nội dung kiến thức liên quan đến chương trình con là cần thiết để hoàn thiện kĩ năng lập trình cho học sinh phổ thông

2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm

Môn Tin học đến nay không còn là môn học mới mẻ đối với học sinh phổ thông, bởi học sinh đã được làm quen nó ngay ở các cấp học dưới Nhưng việc học các môn này ở các cấp học dưới và kể cả cấp học này chỉ chưa thực sự phát huy được hiệu quả của nó Nhiều học sinh chưa thực sự yêu thích và xem nhẹ tầm quan trọng của môn học này, dẫn tới học qua loa, máy móc, đối phó Dẫn tới tình trạng các em học lập trình mà như “cưỡi ngựa xem hoa” Đôi khi có những câu hỏi “Học lập trình này ứng dụng vào đâu thầy?”

Năm học 2016-2017 qua những bài kiểm tra, bài thu hoạch, bài hoạt động

cá nhân, bài hoạt động nhóm và tổng số phần trăm học sinh tham gia thực hành trên phòng máy đạt mức kĩ năng lập trình cơ bản là còn chưa cao Bản thân tôi khi tới nội dung này cũng gặp không ít khó khăn phần vì khách quan (đã gần cuối năm học nên tư tưởng và hứng thú của học sinh đã có phần đi xuống), chủ quan (phần kiến thức này khá khó tiếp cận đối với học sinh), kĩ năng lập trình chuyên nghiệp một cách thành thạo cũng có phần hạn chế và mất nhiều thời gian nghiên cứu học hỏi, kinh nghiệm bản thân cũng chưa nhiều nên việc xây dựng nội dung cho phù hợp với học sinh là khá khó Chính vì vậy cần khai thác tối đa những gì bản thân học sinh đã có, tạo hứng thú học tập cho học sinh, có đôi khi phát triển nội dung theo năng lực học sinh, đi theo hướng học sinh để hệ thống

và dẫn dắt để kết luận lại Thường xuyên cho các em rèn luyện kĩ năng lập trình trên phòng máy, là cơ hội để giáo viên tiếp cận học sinh ở cự li gần nhất

Trang 4

2.3 Các sáng kiến kinh nghiệm, giải pháp đã sử dụng để giải quyết vấn đề

2.3.1 Mục đích của việc sử dụng chương trình con

Đặt vấn đề:

- Phân loại nhóm đối tượng:

+ HS nào từng sử dụng CTC để lập trình? Mức độ sử dụng như thế nào?(xem và nhận biết, hiểu và sử dụng cơ bản, sử dụng thành thạo)

+ Nhóm HS chưa được làm quen, nội dung kiến thức là mới hoàn toàn

- Với nội dung kiến thức từ đầu chương trình tới giờ mỗi HS đã tự hình thành

kĩ năng lập trình cho riêng mình Chúng ta sẽ sử dụng những kiến thức ấy để tiếp tuc phát triển và hoàn thành tổng quan về kiến thức lập trình Pascal

Bài toán: Nhập và in ra màn hình 4 mảng 1 chiều(n phần tử, n nhập từ bàn

phím) Cho biết số phần tử là nguyên tố của mỗi mảng

(chương trình được viết theo 2 cách có và không sử dụng CTC)

Yêu cầu:

- Theo kiến thức đã học, HS tự lập trình theo cách không sử dụng CTC

- Trong nhóm HS khá có HS lập trình theo cách sử dụng CTC

Gợi ý: các công việc cần làm trong chương trình.

- Nhập n (nhập số phần tử của mảng)

- Nhập 4 mảng một chiều: a, b, c, d

- In từng mảng: a, b, c, d

- Đếm số nguyên tố của từng mảng và in ra màn hình

Chương trình sử dụng CTC để lập trình Chương trình không sử dụng CTC đểlập trình

uses crt;

type mang = array[1 100] of integer;

var a,b,c,d: mang;

i,n:integer;

procedure nhap(var x:mang;

y:integer);

begin

for i:= 1 to y do

begin

write('nhap phan tu thu ',i);

readln(x[i]);

end;

end;

procedure inmang(x:mang; y:integer);

begin

for i:= 1 to y do write(x[i]:5);

writeln;

end;

function nt(x:integer): boolean;

uses crt;

var a,b,c,d : array[1 100] of integer;

kt: boolean;

i,j,n,dem:integer;

begin clrscr;

{nhap mang}

write('nhap so phan tu: '); readln(n);

writeln('nhap mang a: ');

for i:= 1 to n do begin

write('nhap phan tu thu ',i); readln(a[i]);

end;

writeln('nhap mang b: ');

for i:= 1 to n do begin

Trang 5

var j:integer; kt:boolean;

begin

kt:= true;

for j:= 2 to round(sqrt(x)) do

if (x mod j = 0 ) then kt:=false;

if x = 1 then kt:=false;

nt:= kt;

end;

procedure demnt(x:mang; y:integer);

var dem: integer;

begin

dem:=0;

for i:= 1 to y do

if nt(x[i]) then dem:=dem+1;

writeln('so ptu ngto: ',dem);

end;

begin

clrscr;

write('nhap n: ');

readln(n);

nhap(a,n);

nhap(b,n);

nhap(c,n);

nhap(d,n);

clrscr;

inmang(a,n); demnt(a,n);

inmang(b,n); demnt(b,n);

inmang(c,n); demnt(c,n);

inmang(d,n); demnt(d,n);

readln;

end.

write('nhap phan tu thu ',i); readln(b[i]);

end;

writeln('nhap mang c: ');

for i:= 1 to n do begin

write('nhap phan tu thu ',i); readln(c[i]);

end;

writeln('nhap mang d:');

for i:= 1 to n do begin

write('nhap phan tu thu ',i); readln(d[i]);

end;

clrscr;

{in mảng}

writeln(' in mang a:');

for i:= 1 to n do write(a[i]:5); writeln;

writeln(' in mang b:');

for i:= 1 to n do write(b[i]:5); writeln;

writeln(' in mang c:');

for i:= 1 to n do write(c[i]:5); writeln;

writeln(' in mang d:');

for i:= 1 to n do write(d[i]:5); writeln;

{ tim so nguyen to trong tung mang}

dem:=0;

for i:= 1 to n do begin

kt:=true;

for j:=2 to round(sqrt(a[i])) do

if (a[i] mod j = 0 ) then kt:=false;

if a[i] = 1 then kt:=false;

if kt then dem:=dem+1;

end;

writeln('so nguyen to trong mang la: ',dem);

dem:=0;

Trang 6

for i:= 1 to n do begin

kt:=true;

for j:=2 to round(sqrt(b[i])) do

if (b[i] mod j = 0) then kt:=false;

if b[i] = 1 then kt:=false;

if kt then dem:=dem+1;

end;

writeln('so nguyen to trong mang la: ',dem);

dem:=0;

for i:= 1 to n do begin

kt:=true;

for j:=2 to round(sqrt(c[i])) do

if (c[i] mod j = 0) then kt:=false;

if c[i] = 1 then kt:=false;

if kt then dem:=dem+1;

end;

writeln('so nguyen to trong mang la: ',dem);

dem:=0;

for i:= 1 to n do begin

kt:=true;

for j:=2 to round(sqrt(d[i])) do

if d[i] mod j = 0 then kt:=false;

if d[i] = 1 then kt :=false;

if kt then dem:=dem+1;

end;

writeln('so nguyen to trong mang la: ',dem);

readln end.

Nhận xét:

- Từ 2 chương trình trên, HS có nhận xét gì? Từ nhận xét rút ra được khái niệm

và lợi ích của việc sử dụng CTC

- Khái niệm: chương trình con là một dãy lệnh mô tả một số thao tác nhất định

và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình.

Trang 7

- Lợi ích việc sử dụng CTC:

+ Tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh nào đó

+ Hỗ trợ việc thực hiện chương trình lớn

+ Phục vụ cho quá trình trừu tượng hoá

+ Mở rộng khả năng ngôn ngữ

+ Thuận tiện cho phát triển, nâng cấp chương trình

2.3.2 Phân loại chương trình con

?1 Trong chương trình ví dụ trên, em biết có những loại chương trình con nào.

?2 Chỉ ra từng đoạn chương trình tương ứng với từng loại chương trình con đó.

- Điểm khác nhau cơ bản giữa các loại CTC đó?

Là CTC thực hiện một số thao tác nào

đó và trả về một giá trị qua tên của nó Là CTC thực hiện các thao tác nhấtđịnh nhưng không trả về giá trị nào

qua tên của nó

Ví dụ:

- Hàm abs(x)  trả về giá trị tuyệt đối

của x

- Hàm nt(x)  trả về là True khi x là

số nguyên tố hoặc false nếu x không là

số nguyên tố

Ví dụ: Các thủ tục để vào ra dữ liệu writeln;

Readln;

nhap(x,y);

inra(x,n);

2.3.3 Cấu trúc chương trình con

a Cấu trúc chung

Chương trình con có 3 phần:

<phần đầu>

[<phần khai báo>]

<phần thân>

Trong đó:

- Phần đầu: dùng để khai báo tên chương trình con, nếu là hàm phải khai báo kiểu dữ liệu cho giá trị trả về của hàm

- Phần khai báo: khai báo biến cho dữ liệu vào/ra, các hằng và biến dùng trong chương trình

- Phần thân:

Begin

<dãy câu lệnh>;

End;

? So sánh cấu trúc CTC và CT chính

Cấu trúc <phần đầu>

[<phần khai báo>]

<phần thân>

[<phần khai báo>]

<phần thân>

Trang 8

Phần đầu dùng để khai báo tên chương

Phần khai báo Chứa khai báo hằng, biến,

phạm vi các đối tượng chỉ trong CTC

Bao gồm: khai báo tên CT, khai báo thư viện, khai báo hằng, khai báo biến và các CTC sử dụng trong CT

<dãy câu lệnh>;

End;

Begin <dãy câu lệnh>;

End

b Cấu trúc chương trình con dạng hàm

Function <tên hàm> [<danh sách tham số>] : <kiểu dữ liệu>;

[<phần khai báo>]

begin

[<dãy lệnh>];

<tên hàm>:= <biểu thức>;

end;

Chương trình 1:Sử dụng cấu trúc hàm viết chương tìm rút gọn phân số với tử số

và mẫu số được nhập từ bàn phím

? Xây dựng ý tưởng cho bài toán

- Chương trình sử dụng một hàm để tìm UCLN của 2 số (tử số và mẫu số)

- Sử dụng hàm UCLN để rút gọn phân số

program rutgon_phanso;

uses crt;

var tuso,mauso,a: integer;

function UCLN(x,y:integer):integer;

var sodu:integer;

begin

while y<>0 do

begin

sodu:=x mod y;

x:=y;

y:=sodu;

end;

UCLN:=x;

end;

BEGIN

clrscr;

write('nhap phan so: ');readln(tuso,mauso);

a:=UCLN(tuso,mauso);

if a>1 then

begin

Tên hàm

Lệnh trả giá trị

Lời gọi hàm

Trang 9

tuso:=tuso div a;

mauso:=mauso div a;

end;

write(tuso:5,mauso:5);

readln

END

Chương trình 2 : Sử dụng hàm hãy viết CT tìm giá trì lớn nhất của 3 số nguyên

bất kỳ được nhập từ bàn phím

program max3so;

uses crt;

var a,b,c: integer;

function max (a,b :integer): integer;

Begin

If a> b then max:= a

else max:=b;

End;

Begin

write(‘ Nhap lan luot 3 so tu nhien a , b , c :’);

Readln(a,b,c);

writeln(‘so lon nhat trong 3 so la: ’, max(max(a,b),c));

Readln

End

c Cấu trúc chương trình con dạng thủ tục

Procedure <tên thủ tục>[<danh sách tham số>];

[<phần khai báo>]

Begin

[<dãy lệnh>];

end;

Thành phần:

- Tên hàm, tên thủ tục do người lập trình đặt (tuân theo quy tắc đặt tên của NNLT Pascal)

- Danh sách tham số: các hằng, biến vào/ra dữ liệu trong CTC

- Từ cấu trúc của CTC dạng hàm và thủ tục hãy chỉ ra điểm khác nhau cơ bản?

- Có thể lập bảng so sánh như sau

hướng thông qua tên (được sử dụng trong các biểu thức)

Không trả giá trị thông qua tên (không thể viết trong các biểu thức)

số

của các biến Gọi tên của thủ tục nhưmột câu lệnh

Trang 10

Có cấu trúc tương tự, cấu trúc 3 phần

của CTC - Từ khóa dành riêng hàm (Function),thủ tục (Procedure)

- Phải khai báo kiểu dữ liệu mà giá trị hàm trả về

- Trong phần thân hàm phải có lệnh trả giá trị thong qua tên hàm

<tên hàm>:= <biểu thức>;

2.3.4 Cách d ù ng chương trình con

a Lời gọi chương trình con

- Từ ví dụ xác định phạm vi, vị trí của CTC: xác định được phạm vi giới hạn của từng CTC; vị trí của từng CTC (trong phần khai báo của chương trình chính)

Chương trình con được khai báo sau khai báo biến và trước chương trình chính.

- Khi nào cần thực hiện thao tác liên quan đến CTC gọi CTC đó ra bằng lời gọi CTC Cấu trúc của lời gọi CTC:

<tên chương trình con>[<danh sách tham số>];

+ Danh sách tham số: các tham số thực sự thay thế cho các tham số hình thức + Quá trình thay thế: là quá trình truyền dữ liệu phải đảm bảo số lượng các tham

số, thứ tự các tham số, kiểu dữ liệu các tham số

Chú ý: lời gọi CTC của hàm và thủ tục có gì khác nhau, lời gọi hàm phải được

đặt trong một câu lệnh hoặc lời gọi CTC khác

-Khi gặp một lời gọi tới chương trình con máy sẽ thực hiện như sau:

+ Cấp phát bộ nhớ cho các đối các biến cục bộ

+ Truyền giá trị của các tham số thực sự cho các tham số giá trị tương ứng, truyền địa chỉ của các tham số thực sự ứng với các tham biến

+ Thực hiện các lệnh trong chương trình con

+ Giải phóng các đối các biến cục bộ trở về nơi gọi chương trình con

b Cách dung tham số

b.1 Vai trò của tham số:

- Các tham số khao báo ở đầu chương trình con dung để gửi các giá trị vào để chương trình xử lí, cũng là nơi lấy các kết quả mà chương trình đã xử lí xong

- Chú ý: Không được khai báo các biến riêng của chương trình con trùng với tên của các tham số trên

- Tham số hình thức là các biến được khai báo cho dữ liệu vào/ra

- Tham số thực sự: thay thế cho các tham số hình thức trong lời gọi CTC

- Tham số có 2 loại:

Tham biến (Tham số biến) Tham trị (Tham số giá trị)

Khai báo:

<DS tham số>:<kiểu dữ liệu>; Khai báo:Var <DS tham số>:<kiểu dữ liệu>; Giá trị thay đổi khi ra khỏi CTC Giá trị không thay đổi khi ra khỏi

CTC

Ngày đăng: 21/10/2019, 20:27

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Sách giáo khoa tin học 11, tác giả Hồ Sĩ Đàm (chủ biên), nhà xuất bản giáo dục năm 2007 Khác
2. Sách bài tập tin học 11, tác giả Hồ Sĩ Đàm, Nguyễn Thanh Tùng, nhà xuất bản giáo dục năm 2008 Khác
3. Lập trình pascal tập 3, tác giả Bùi Việt Hà, nhà xuất bản giáo dục năm 2009 Khác
4. Lập trình nâng cao trên ngôn ngữ pascal, tác giả Nguyễn Tô Thành, nhà xuất bản đại học quốc gia Hà Nội Khác
5. Giáo trình lí thuyết và bài tập pascal, tác giả Nguyễn Đình Tê, Hoàng Đức Hải, nhà xuất bản lao động xã hội Khác

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

TÀI LIỆU LIÊN QUAN

w