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

Một số phương pháp rèn luyện kỹ năng lập trình

25 28 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 25
Dung lượng 117,85 KB

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

Nội dung

Đối tượng nghiên cứu.Phương pháp xử lý các lỗi thường gặp của học sinh lớp 8 khi giải bàitoán bằng ngôn ngữ lập trình Pascal.. Kết quả khảo sát khi chưa áp dụng đề tài: Qua bốn năm giảng

Trang 1

Đề tài: “MỘT SỐ PHƯƠNG PHÁP RÈN LUYỆN KỸ NĂNG LẬP TRÌNH”.

I PHẦN MỞ ĐẦU 2

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

1.2 Điểm mới của đề tài: 2

1.3 Phạm vi áp dụng: 3

1.3.1 Phạm vị nghiên cứu 3

1.3.2 Khách thể nghiên cứu 3

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

II PHẦN NỘI DUNG 3

2.1 Thực trạng vấn đề cần nghiên cứu: 3

2.1.2 Về mặt khó khăn: 3

2.1.3 Kết quả khảo sát khi chưa áp dụng đề tài: 4

2.1.4 Khả năng áp dụng 7

2.2 Các giải pháp: 7

2.2.1 Xác định bài toán: 8

2.2.2 Tìm thuật toán: 10

2.2.3 Viết chương trình: 12

2.2.4 Chạy Thử, thay đổi, kiểm tra chương trình: 16

2.2.4.1 Chạy thử: 16

2.2.4.2 Phân loại lỗi và cách sửa lỗi: 19

2.2.4.3 Kiểm tra: 21

2.2.4.4 Thay đổi chương trình: 22

2.3 Kết quả đạt được: 24

III: PHẦN KẾT LUẬN 25

3.1 Ý nghĩa của đề tài: 25

3.2 Kiến nghị và đề xuất: 25

3.2.1 Đối với nhà trường: 25

3.2.1 Đối với Phòng Giáo Dục: 25

Trang 2

I PHẦN MỞ ĐẦU 1.1 Lý do chọn đề tài :

Hiện nay, thế giới đang bước vào thời đại công nghiệp 4.0 Sự phát triểnmạnh mẽ của tin học, đặc biệt là công nghệ số với phần cứng máy tính, phầnmềm, các hệ thống mạng và Internet những năm gần đây đã làm biến đổi sâusắc đời sống xã hội cũng như nền kinh tế toàn cầu Vậy, chúng ta phải làm gìtrong thời đại mới này hay chỉ sử dụng máy tính để chơi game, nghe nhạc, haychỉ soạn thảo văn bản đơn giản mà thôi?

Là một giáo viên tin học, một trong các mục tiêu khi dạy môn tin họctrong nhà trường là nhằm giúp học sinh không chỉ biết soạn thảo mà còn phải

có khả năng phân tích, tổng hợp, trừu tượng hoá, khái quát hoá vấn đề và đặcbiệt là phát triển tư duy, sáng tạo trong học tập cũng như trong công tác bồidưỡng học sinh giỏi Sự thành công của việc dạy học phụ thuộc rất nhiều vàophương pháp dạy học được giáo viên lựa chọn Vì vậy, tôi mạnh dạn lựa chọn

đề tài cải tiến kỹ thuật: “Một số phương pháp rèn luyện kỹ năng lập trình” Đểlàm sao đó giúp cho các em có sự đam mê học tập bộ môn tin học, nhất là tiếtthực hành và rèn luyện cho học sinh tính tư duy, tính sáng tạo trong quá trìnhlập trình

1.2 Điểm mới của đề tài:

Qua đề tài này:

- Cung cấp cho học sinh các bước để giải bài toán bằng ngôn ngữ lậptrình Pascal, Free Pascal

- Định hình cho học sinh các nội dung cần giải quyết của bài toán

- Cung cấp cho học sinh các phương pháp xử lý, giải quyết các vấn đềquan trọng của bài toán

- Cách xử lý các lỗi thường gặp trong khi lập trình và xử lý kết quả

- Cung cấp cho giáo viên phương pháp để giảng dạy Tin học 8 và bồidưỡng học sinh giỏi Tin học Pascal, Free Pascal

Trang 3

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

Phương pháp xử lý các lỗi thường gặp của học sinh lớp 8 khi giải bàitoán bằng ngôn ngữ lập trình Pascal

II PHẦN NỘI DUNG

2.1 Thực trạng vấn đề cần nghiên cứu:

2.1 1 Về mặt thuận lợi:

Được sự quan tâm, giúp đỡ tận tình của Ban Giám Hiệu và tổ chức đoànthể trong nhà trường Sự ủng hộ nhiệt tình của các đồng nghiệp đã giúp choquá trình giảng dạy Tin học của tôi đạt hiệu quả cao hơn

Nhà trường cũng có 20 máy vi tính và đã được kết nối Internet.

Mỗi lớp đều có số học sinh ham học, tích cực phát biểu xây dựng bàitrong giờ học, là nguồn động viên lớn trong quá trình giảng dạy của tôi

Nhìn chung, học tập theo phương pháp mới thì học sinh có hứng thú họctập hơn so với phương pháp dạy học truyền thống Vì thế, có điều kiện pháttriển tư duy và khả năng diễn đạt và lập trình của các em

2.1.2 Về mặt khó khăn:

Cơ sở vật chất chưa trang bị đầy đủ: số lượng máy tính còn rất hạn chế(1-2 HS/1 máy) Do vậy, giáo viên cần chủ động tìm các giải pháp khắc phụctrong quá trình giảng dạy

Trang 4

Giáo viên Tin học tuổi nghề còn trẻ nên chưa có nhiều kinh nghiệm dạyhọc cũng như công tác bồi dưỡng HSG

Tin học 8 là môn học khó đòi hỏi tính tư duy, sáng tạo cao nên hầu hết họcsinh cảm thấy sợ và lung túng trong quá trình học Vì khi giải một bài toán ởngoài thì đơn giản và chỉ trong vòng vài giây có thể nhẩm ra kết quả Còn ởtrong lập trình cũng bài toán đó mà phải làm đến hàng chục phút mà lại có thểcho kết quả sai

Trong công tác BDHSG thì học sinh chỉ thích chọn các môn học khác nênviệc lựa chọn đội tuyển gặp nhiều khó khăn Phần đa là chỉ chọn được học sinh

có học lực khá để bồi dưỡng

Học sinh thích học trên máy nhưng còn tư tưởng “chơi” hơn là “học”.Phương pháp dạy học mới hiện nay tôi thấy yêu cầu cao (Giáo viên - Họcsinh) Đòi hỏi giáo viên thật sự tâm huyết với nghề, có tinh thần trách nhiệmcao, đầu tư cho tiết dạy rất nhiều Học sinh phải có ý thức học tập tốt, chăm chỉyêu thích môn học thì mới đáp ứng được mục tiêu tiết học Học sinh phải tựkhám phá những hiểu biết đối với bản thân và ghi nhớ vận dụng vào cuộc sốngcủa mình Còn học sinh yếu kém chưa cố gắng thì sẽ không theo kịp

Nhiều gia đình, học sinh còn xem đây là một môn phụ, tự chọn nên chưa

có sự quan tâm đầu tư đúng mức

2.1.3 Kết quả khảo sát khi chưa áp dụng đề tài:

Qua bốn năm giảng dạy chương trình tin học lớp 8, tôi nhận thấy rằng kĩnăng lập trình giải bài toán trên máy tính của các em còn yếu Đặc biệt làthường mắc một số lỗi trong khi lập trình như:

- Sử dụng sai vị trí hoặc thiếu dấu “;” Trước Else không có dấu chấmphẩy, sử dụng dấu chấm phẩy sau từ khoá do trong các câu lệnh lặp  câu lệnhlặp rỗng không làm việc gì cả

- Không phân biệt được hằng, xâu và biến Học sinh cần phải chú ý hằngxâu đặt trong cặp nháy đơn để nội dung được in ra màn hình còn biến thìkhông cần đặt trong cặp nháy đơn

- Đặt tên biến sai quy tắc:

+ Tên biến bị trùng với từ khóa;

+ Tên biến bị trùng nhau trong cùng một chương trình;

Trang 5

+ Tên biến chứa dấu cách như viết văn bản hay có khoảng cách phíatrước,…

- Khai báo sai miền chỉ số cho dữ liệu kiểu mảng

Ví dụ: Nhập vào một mảng số nguyên gồm các số lớn hơn 3 và nhỏ hơn

100 In mảng vừa nhập

Học sinh khai báo mảng như sau: Var a: array[3 100] of integer;

- Chưa hiểu thứ tự ưu tiên phép toán:

Thứ tự ưu tiên các phép toán trong ngôn ngữ lập trình Pascal như sau:

1 Thực hiện biểu thức trong ngoặc

2 *, /, div, mod

3 +, -, or, and

4 Các phép so sánh: >=,>,<=,<,=,<>

- Tràn số do kết quả tính toán vượt quá giới hạn:

Function GT(n:integer):integer; Var i,t:integer;

là 32767  Phải sửa lại kiểu Longint

- Khai báo sai (không tương thích) kiểu dữ liệu:

Ví dụ: Chương trình tính chu vi và diện tích hình chữ nhật:

uses crt;

var a,b:real; s,cv:integer;

Begin

Trang 6

clrscr;

writeln ('chieu dai a='); readln(a);

writeln ('chieu rong b='); readln(b);

cv:= (a+b)*2; s:=a*b;

write('chu vi la ',cv);

writeln('dien tich la ',s);

readln End

Khi chạy chương trình trên chương trình sẽ báo lỗi type mismatch chỗdòng công thức tính diện tích của biến a, b Cách khắc phục ta sửa biến a,b,cv,s

T:=1; For i:=1 to k do T:=T*i; S:=S+T; End;

Đoạn chương trình trên có thể lặp vô tận khi kết thúc vòng lặp con i luônnhận giá trị bằng k

Để khắc phục lỗi này, chỉ cần chú ý các vòng lặp lồng nhau phải sử dụngbiến điều khiển khác nhau

- Sử dụng tên hàm làm biến cục bộ (dành cho học sinh giỏi):

Do lệnh trả kết quả cho tên hàm rất giống một lệnh gán bình thườngnên học sinh thường nhầm tên hàm là biến cục bộ Vì vậy khi viết chương trình

để tiết kiệm biến cục bộ học sinh đã sử dụng tên hàm làm biến cục bộ

Function GT(n:integer) : Longint; Var i : integer;

Begin For i:=2 to n do GT:=GT*i; End;

Trong thân hàm đã sử dụng tên hàm làm biến cục bộ nên khi biên dịch sẽ

Trang 7

báo lỗi gọi hàm nhưng thiếu tham số do chương trình hiểu GT:=GT*i là lời gọi

đệ qui

Để tránh lỗi này cần lưu ý với học sinh: để trả kết quả cho hàm (không đệquy), tốt nhất nên tính kết quả hàm vào một biến cục bộ, trước khi kết thúc tamới gán tên hàm bằng giá trị biến này để trả giá trị về cho hàm

Như vậy, khi giải bài toán trên máy học sinh chỉ quan tâm đến công thức

để tính toán ra kết quả bài toán mà quên các bước xác định thông tin vào,thông tin ra và xây dựng thuật toán Khi chạy chương trình thì học sinh chưanhận biết được kết quả chương trình đúng hay sai

- Trước khi thực hiện đề tài, tôi đã khảo sát học sinh khối 8 thông qua giờdạy lý thuyết, dạy thực hành, kiểm tra bài cũ Tổng hợp kết quả thu được:

Phương pháp cơ bản giải các bài toán trong tin học không chỉ dùng đểgiải một bài toán cụ thể mà còn giải 1 lớp các bài toán cụ thể thuộc cùng một

Trang 8

loại Bài toán được cấu tạo từ hai yếu tố cơ bản: Thông tin vào (Input) và thôngtin ra (Output) Phương pháp tổng quát để giải một bài toán bằng máy vi tínhdựa trên ngôn ngữ pascal thì cần các bước:

- Bước 1: Xác định bài toán là xác định (thông tin vào - INPUT) và

kết quả cần xác định (thông tin ra - OUTPUT)

- Bước 2: Thiết lập phương án giải quyết (xây dựng thuật toán) là tìm,

lựa chọn thuật toán và mô tả nó bằng ngôn ngữ thông thường

- Bước 3: Viết chương trình (lập trình) là diễn đạt thuật toán bằng mộtngôn ngữ lập trình sao cho máy tính có thể hiểu và thực hiện

- Bước 4: Chạy thử, sửa đổi chương trình

2.2.1 Xác định bài toán:

* Khái niệm bài toán:

Trong quá trình học người học sinh hay bất kỳ một cá nhân nào luôn phảiliên tục giải quyết các bài toán Trong cuộc sống là 1 chuỗi các bài toán mà taphải đối đầu giải quyết không một chút đơn giản mà nhiều lúc phải bực mình.Song đối với học sinh lớp 8 do chương trình học toán của các em chỉ mới đếngiải phương trình bậc nhất là cao nhất Nên việc đưa các lớp bài toán vào giảicho các em đang còn một phần nào bị hạn chế Như ng bất kỳ một bài toán nàothì chúng ta cũng đọc đề rồi xác định nó : A  B

* Bài toán trên máy vi tính:

Bài toán trên máy cũng mang đầy đủ các tính chất của bài toán tổng quáttrên, nhưng nó lại được diễn đạt theo một cách khác

- A: là đưa thông tin vào (Input )

- B: là đưa thông tin ra (Output)

Trang 9

 : là chương trình tạo từ các lệnh cơ bản của máy tính cho phép biến đổi

từ A đến B

* Một số ví dụ:

Ví dụ 1: Tính chu vi và diện tích hình chữ nhật.

Ta cần xác định cho bài toán:

+ Thông tin vào: Chiều dài là cạnh a, chiều rộng là cạnh b

+ Thông tin ra: Kết quả chu vi và diện tích khi đưa a,b vào

+ Các thông tin cần chế biến thông tin như:

- Lần lượt đưa a,b vào ( cho a=3,b=4)

- Áp dụng công thức tính chu vi hình chữ nhật: (a+b)*2

- Áp dụng công thức tính diện tích hình chữ nhật: a*b

- Kết quả in ra là: Chu vi = 14; Diện tích =12

Ví dụ 2: Có n hộp có khối lượng khác nhau và một cái cân dĩa Hãy chỉ

+ Thông tin ra: Kết quả tìm hộp nặng nhất

+ Các thông tin cần chế biến thông tin như:

Bước 1- Nếu chỉ có 1 hộp thì đó chính là hộp nặng nhất và kết thúc.Bước 2- Nếu số hộp n>1 thì

Chọn 2 hộp bất kì và đặt lên bàn cân

Giữ lại hộp nặng hơn và cất hộp nhẹ đi chỗ khác

Bước 3- Nếu không còn hộp chưa được cân thì chuyển sang bước 5, ngoài ra:

Chọn một hộp bất kì và để lên dĩa cân còn trống

Giữ lại hộp nặng hơn, cất hộp nhẹ sang chỗ khác

Trang 10

Bước 4- Trở lại bước 3

Bước 5- Hộp còn lại trên cân là hộp nặng nhất và kết thúc

Ví dụ 3: Bài toán giải phương trình bậc nhất dạng tổng quát bx + c = 0

- INPUT: Các số b và c

- OUTPUT: Nghiệm của phương trình bậc nhất

- Bước 1: Nếu b=0 chuyển tới bước 3

- Bước 2: Tính nghiệm của phương trình x=- c/b và chuyển tới bước 4

- Bước 3: Nếu C khác 0 phương trình đã cho vô nghiệm Ngược lại nếu c=0 thông báo phương trình có vô số nghiệm

- Bước 4: Kết thúc

2.2.2 Tìm thuật toán:

Thuật toán là một quá trình gồm một dãy hữu hạn các thao tác đơn giảnđược sắp xếp theo một trình tự xác định sao cho theo đó từ Input của bài toán

sẽ tìm ra được Output bài toán

- Việc trình bày thuật toán trước khi viết chương trình là hết sức quantrọng Thuật toán đúng thì chương trình mới có khả năng đúng, còn một thuậttoán sai chắc chắn là cho một chương trình sai Tuy nhiên đối với phần lớn họcsinh lớp 8 thường bỏ qua bước này do tâm lý học sinh không thích các loại bàitập như thế Tuy nhiên, giáo viên cần phải dành một lượng thời gian thích hợp

để rèn luyện loại bài tập này Phải làm sao cho việc viết thuật toán trở thành kĩnăng để khi các em lập trình trên máy

- Một bài toán ta có 4 cách thể hiện thuật toán: Các bước xác định bằnglời, lập sơ đồ khối, ngôn ngữ phỏng trình, dùng một ngôn ngữ lập trình(Pascal)

Ví dụ: Tìm ước số chung lớn nhất của 2 số nguyên dương a,b Ta có thể giải

bằng các cách sau:

Cách 1: Các bước xác định bài toán bằng lời:

- Bước 1: Nhập 2 số nguyên dương là a,b

- Bước 2: So sánh giá trị a và b Nếu a bằng b thì sang bước 3, ngược lại akhác b thì sang bước 4

Trang 11

- Bước 3: Tìm được ước số chung là a và kết thúc chương trình.

- Bước 4: Nếu a lớn hơn b thì ước số chung lớn nhất là a:=a-b và quay trở lại bước 2 Ngược lại ước số chung là b:=b-a và quay trở lại bước 2

Cách 2: Giải bài toán bằng sơ đồ

- Có hình thoi  thể hiện các thao tác so sánh

- Hình chữ nhật thể hiện các phép tính toán, các câu lệnh

- Hình ôvan thể hiện bắt đầu và kết thúc

- Các mũi tên quy định trình tự các thao tác

Cách 3: Dùng ngôn ngữ phỏng trình Bắt đầu Nhập a, b While a khác b IF a>b then thay a :=a -b Else thay b:=b-a; Kết thúc in ra USCLN (a,b) Cách 4: Viết chương trình hoàn chỉnh (dùng ngôn ngữ pascal) Program UCLN; Begin a, b a=b UCLN là a END a>b b:= b - a a:= b - a đúng đúng

sai sai

Trang 12

* Kỹ năng lập trình:

- Rèn luyện được cho học sinh kỹ năng cài đặt thành công các thuật toánbằng một ngôn ngữ lập trình

- Đã gọi là kỹ năng thì chỉ có thể có được thông qua rèn luyện tích cực

- Kinh nghiệm cho thấy một thuật toán do sắp đặt vụng về, lộn xộn thìkhi chạy trên máy tính có thể cho kết qủa tồi tệ

* Phát triển chương trình bằng cách tinh chế từng bước

Một bài toán ta có thể đưa ra nhiều cách giải khác nhau, song là mộtgiáo viên thì chúng ta cần giúp học sinh viết chương trình làm sao người xemnhìn vào có thể dễ hiểu được bài toán đó là gì ? Do đó việc tinh chỉnh các b ướccho bài toán trong máy tính là phương pháp khoa học, có hệ thống giúp taphân tích các thuật toán và cấu trúc dữ liệu từ đó thành một ch ương trình.Muốn lập trình giỏi không phải chỉ cần nắm ngôn ngữ lập trình là đủ Mà vấn

đề cốt yếu là biết phương pháp phát triển dần dần để chuyển các ý tưởng rathành chương trình hoàn chỉnh

* Phương pháp tinh chế từng bước

Trang 13

Một chương trình bắt đầu được viết bằng lời tự nhiên (tiếng Việt) thểhiện sự phân tích tổng thể của người lập trình được thể hiện

Ở từng bước sau các câu lệnh được phân tích chi tiết hơn, bằng nhữnglời khác nhau tương ứng với sự phân tích công việc thành các việc nhỏ chi tiếthơn dễ hiểu và chính xác hơn Song ngôn ngữ lập trình pascal ng ười lập trình

có thể đưa ra phương pháp tinh chỉnh từng bước là thể hiện tư duy giải quyếtvấn đề bài toán từ trên xuống trong đó các bước là hướng về ngôn ngữ lập trìnhlàm sao cho bài toán đưa ra được phương pháp lập trình tối ưu, sáng sủa

* Ví dụ: Tìm tất cả các số nguyên tố trong các số nguyên N được nhập

- Tìm số đầu tiên trong S đưa vào NT

- Loại bỏ khỏi S các bội số của số nguyên tố vừa tìm được

- Số đầu tiên còn lại của S là số nguyên tố Tiếp tục quá trình cho đếnkhi S=[]

Trang 14

Kết thúc;c Tinh chế lần 3 ( chương trình hoàn chỉnh):

d Tinh chế lần 4: Rõ ràng cấu trúc dữ liệu tập hợp “Set of nguyen” tuy dễ hiểu

nhưng rất cồng kềnh và làm máy chạy chậm chạp, ta có thể dùng mảngBoolean linh hoạt hơn như sau:

Ngày đăng: 30/06/2021, 09:42

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