Mục tiêu nghiên cứu của sáng kiến kinh nghiệm là giới thiệu về các thành phần cơ bản, cú pháp và nguyên lý hoạt động của các câu lệnh trong ngôn ngữ lập trình Pascal. Một số kinh nghiệm dạy lập trình nói chung và Pascal nói riêng. Một số thuật toán, chương trình cơ bản khi học môn Tin học lớp 8. Lý thuyết dãy số các thuật toán đơn cơ bản trên dữ liệu mảng một chiều. Cách xử lý lỗi khi chạy, kiểm tra tính đúng đắn của chương trình
1. PHẦN MỞ ĐẦU 1.1. Lý do chọn đề tài Ở các trường trung học học sơ sở học sinh được học rất nhiều bộ mơn trong đó mơn tin học. Học sinh được tiếp cận nhiều trên các phương tiện hiện đại, hệ thống phịng máy với các thiết bị máy tính có cấu hình tương đối cao, hệ thống mạng cáp quang tương đối mạnh để đảm bảo phục vụ tốt nhu cầu học tập và tra cứu bộ mơn Tin học của học sinh trong nhà trường; Trong các khối lớp học thì mơn tin học lớp 8 là mơn học tương đối khá trừu tượng, khó hiểu, khơ khan khó nuốt đối với các em. Việc học tốt mơn Tin học lại càng khó khăn hơn đối với các em vì hầu hết kiến thức chủ yếu và trọng tâm của là lập trình trên mơi trường ngơn ngữ lập trình Pascal, địi hỏi học sinh phải chú ý tìm hiểu kỹ vấn đề, hiểu được cách giải bài tốn, hiểu cách mơ tả thuật tốn để giải bài tốn, cách viết chương trình, kiểm tra lỗi, sửa lỗi chương trình và kiểm tra tính đúng đắn của chương trình. Trong q trình giảng dạy bản thân tơi nhận thấy học sinh khối 8 rất sợ mơn tin học vì kiến thức lập trình khá mới mẻ và khó hiểu. Các em phải tập trung cao độ, tìm hiểu chặt chẽ vấn đề của từng bài tốn trên cơ sở hướng dẫn của giáo viên thì mong mới hiểu được cách lập trình cho một bài tốn; Chính vì vậy, để giúp các em hiểu được ngơn ngữ lập trình Pascal, hiểu được cách mơ tả bài tốn, lập trình viết bài tốn nên tơi mạnh dạn chọn giải pháp “Một số biện pháp rèn luyện kỹ năng học lập trình Pascal mơn Tin học lớp 8” để chia sẽ một vài kinh nghiệm trong cơng tác giảng dạy giúp học sinh tiến bộ hơn trong học tập đặc biệt là các giờ thực hành ở bộ mơn Tin học khối 8 bậc trung học cơ sở. * Điểm mới của đề tài Đề tài tổng hợp lại các bước để giải quyết một bài tốn theo trình tự hồn chỉnh giúp học sinh dễ dàng xác định được bài tốn và tìm ra giải pháp viết chương trình phù hợp; Hình thành cho học sinh các kỹ năng như: kỹ năng tìm hiểu và giải quyết vấn đề, kỹ năng tự học giúp các em có được kết quả học tập cao hơn nhiều so Trang 1 với trước khi các em chưa được trang bị; Qua các giải pháp của đề tài, học sinh có thể tự mình viết chương trình với ngơn ngữ lập trình Pascal, chạy thử và sửa lỗi mà khơng cịn bị “chống” khi lập trình nữa 1.2. Phạm vi áp dụng của đề tài Khi dạy ngơn ngữ lập trình nói chung, ngơn ngữ lập trình Pascal nói riêng có rất nhiều vấn đề cần lưu ý. Tuy nhiên trong phạm vi sáng kiến kinh nghiệm này tơi chỉ trình bày một số lưu ý, kinh nghiệm của cá nhân tơi qua các nội dung cụ thể sau: Giới thiệu về các thành phần cơ bản, cú pháp và ngun lý hoạt động của các câu lệnh trong ngơn ngữ lập trình Pascal; Một số kinh nghiệm dạy lập trình nói chung và Pascal nói riêng Một số thuật tốn, chương trình cơ bản khi học mơn Tin học lớp 8 Lý thuyết dãy số các thuật tốn đơn cơ bản trên dữ liệu mảng một chiều Cách xử lý lỗi khi chạy, kiểm tra tính đúng đắn của chương trình Do vậy, đề tài này có thể vận dụng trong cơng tác giảng dạy cho tất cả học sinh mới bắt đầu làm quen ngơn ngữ lập trình Pascal, phụ đạo học yếu kém mơn tin học lớp 8 trong phạm vi trường trung học cơ sở. Với các giải pháp trong đề tài học sinh có thể tự học, tự thực hành tại phịng máy hoặc tại nhà khi khơng có giáo viên hướng dẫn Trang 2 2. PHẦN NỘI DUNG 2.1. Thực trạng trước khi thực hiện các giả pháp của đề tài 2.1.1. Số liệu thống kê Trong q trình giảng dạy, bản tơi nhận thấy kỹ năng đọc hiểu bài tốn, mơ tả bài tốn và kỹ năng viết chương trình đối với các em học sinh khối lớp 8 là rất yếu, chưa đáp ứng được u cầu khi tiếp xúc với các bài tập lập trình Pascal; Theo khảo sát đầu năm học với học sinh các lớp 8 tại trường thì khoảng gần 60% các em chưa hiểu ngơn ngữ lập trình Pascal là gì? Việc tiếp cận kiến thức lập trình để áp dụng giải bài tốn cụ thể cịn nhiều vấn đề gây khó khăn, trong đó phải kể đến là các bước mơ tả thuật tốn và viết chương trình, kiểm lỗi, sửa lỗi chương trình và chạy thử tính đúng đắn của chương trình; Thực tế cho thấy tỷ lệ học sinh đạt điểm trung bình trở lên khi làm những bài tập đơn giản đầu tiên khá thấp, các em chưa hiểu rõ vấn đề, chưa thực sự ham thích, chưa thuộc các cú pháp câu lệnh và sai cấu trúc khá nhiều dẫn đến kết quả khơng như mong đợi. Cụ thể kết quả qua bài khảo sát: Điểm số Số lượng học sinh/Tổng số học sinh Tỷ lệ 12/96 12.5% 14/96 14.6% 15/96 15.6% 16/96 16.7% 10/96 10.4% 14/96 14.6% 6/96 6.3% 6/96 6.3% 3/96 3.1% 10 0/96 0.0% Bảng số liệu tỷ lệ khảo sát đầu năm qua các bài thực hành trên lớp 2.1.2. Tình hình trước khi thực hiện các giải pháp của đề tài Qua thực tế giảng dạy tại trường, tơi nhận thấy: Theo thói quen của nhiều em học sinh, học mơn Tin học là học những thao tác với máy tính như cách sử dụng sử dụng hệ điều hành Window, chương trình soạn thảo văn bản Word, Trang 3 chương trình bảng tính Exell, chương trình soạn thảo trình diễn PowerPoint, khai thác Internet, … đây là những phần học khơng cần địi hỏi tư duy, mà chỉ cần học kĩ và nhớ thao tác, thực hành nhiều lần thì sẽ thành thạo; trong khi đó mơn tin học lớp 8 các em học sinh bắt đầu làm quen với lập trình mà chủ yếu là lập trình bằng ngơn ngữ lập trình Pascal; Khi học bộ mơn lập trình Passal ở lớp 8 cấp học Trung học cơ sở thì hầu như các em bị “chống” vì bộ mơn rất “mới”, và cách học cũng “mới”. Những thao tác và thực hành nhiều khơng cịn tác dụng, học thuộc bài cũng khơng cịn ổn nữa, các em cần phải học cách tư duy logic, tìm thuật tốn, và viết những dịng lệnh máy tính chính xác đúng cú pháp và đúng ngữ nghĩa. 2.1.3. Ngun nhân dẫn đến tình hình trên Ngun nhân thứ nhất: Các em học sinh chưa nắm được về các thành phần cơ bản, cú pháp và ngun lý hoạt động của các câu lệnh trong ngơn ngữ lập trình Pascal; Ngun nhân thứ hai: Các em học sinh chưa nắm được về các bước viết một chương trình; Ngun nhân thứ ba: Các em học sinh chưa biết phân tích chi tiết bài tốn để tìm ra nội dung cần viết chương trình; Ngun nhân thứ tư: Các em học sinh chưa biết cách phát hiện lỗi và cách sửa lỗi chương trình khi thực hành trên máy tính; Ngun nhân thứ năm: Các em học sinh chưa biết cách làm việc với dãy số các thuật tốn đơn cơ bản trên dữ liệu mảng một chiều 2.2. Một số giải pháp 2.2.1 Giải pháp 1: Giáo viên bộ mơn cần giúp học sinh nắm vững lý thuyết; cú pháp, ngun lý hoạt động của các câu lệnh; ngun tắc viết một chương trình hồn chỉnh với ngơn ngữ lập trình Pascal 2.2.1.1 Giới thiệu chung giúp học sinh nắm được về các thành phần cơ bản của ngơn ngữ lập trình Pascal Ngơn ngữ lập trình Pascal gồm: Bảng chữ cái và các quy tắc để viết các câu lệnh Trang 4 *Bộ chữ cái trong Pascal gồm: 26 chữ la tinh lớn: A, B, C,…Z ; 26 chữ la tinh nhỏ: a, b, c,…z ; dấu gạch dưới _; bộ chữ số thập phân: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ; các ký hiệu tốn học: +, , *, / ,,>=,,y THEN writeln(‘DUNG ROI’); {với x, y là 2 biến có giá trị ngun} + Giả sử trước đó x có giá trị 6, y có giá trị 5 thì câu lệnh writeln(‘DUNG ROI’); được thực hiện trên màn hình hiện ra DUNG ROI; Trang 9 + Giả sử x có giá trị 5, y có giá trị 6 thì câu lệnh writeln(‘DUNG ROI’) khơng được thực hiện; Cần lưu ý cho học sinh về các phép so sánh: > (lớn hơn),= (lớn hơn hoặc bằng), y THEN Writeln(‘ gia tri cua x lon hon gia tri cua y’) ELSE IF x > y THEN Writeln(‘ gia tri cua x lon hon gia tri cua y’) ELSE Writeln(‘ gia tri cua x bang gia tri cua y’); *Câu lệnh lặp với số lần lặp biết trước FOR DO Cú pháp: FOR := TO DO ; +Trong đó: Biến đếm là biến có kiểu số nguyên; giá trị đầu, giá trị cuối là các giá trị nguyên Trang 10 Giá trị các biến trong điều kiện trong câu lệnh phải thay đổi để sớm hay muộn giá trị của chuyển từ đúng sang sai. Chỉ như vậy chương trình mới khơng bị rơi vào tình trạng “lặp vơ hạn” Nhớ lại kết quả của các phép so sánh (đã đề cập ở câu lệnh điều kiện IF THEN) Có thể linh hoạt sử dụng câu lệnh lặp với số lần chưa biết trước WHILE DO thay cho câu lệnh lặp FOR DO 2.2.1.1 Giáo viên giới thiệu cách viết một chương trình bằng ngơn ngữ lập trình Pascal *Cấu trúc cơ bản nhất của một bài lập trình Pascal: Về mặt lý thuyết giáo viên nên cung cấp chắc chắn cho học sinh cấu trúc chung của một bài lập trình như sau: +Xây dựng khung chương trình để tránh trường hợp chương trình q dài học sinh bỏ qn hoặc bỏ sót cấu trúc chương trình; nên khuyến khích học sinh khi soạn thảo khung chương trình đầy đủ như sau: PROGRAM ; USES CRT; {Các khai báo biến, hằng, } BEGIN Clrscr; {các câu lệnh xuất/ nhập dữ liệu cho biến, các lệnh gán, } READLN; END + Bên cạnh đó, cũng cần lưu ý học sinh cách đặt tên chương trình đúng quy tắc, đảm bảo khơng sai cú pháp khi đặt tên chương trình, tên chương trình khơng được trùng với các từ khóa: PROGRAM, BEGIN, USES, VAR, END, , dùng dấu gạch nối xen giữa nếu tên dài q 8 ký tự và phải đảm bảo tên khơng dài q 127 ký tự, tên chương trình phải được đặt bằng tiếng việt khơng dấu, khơng sử dụng dấu cách; Trang 12 + Các biến ở phần khai báo phải đảm bảo phù hợp với bài tốn và phù hợp với kiểu dữ liệu cần nhập. Các hằng phần khai báo phải đảm bảo phù hợp với bài tốn. Cần lưu ý cho học sinh 5 vấn đề sau: Khi soạn thảo chương trình trên máy tính nên tắt các phần mềm hỗ trợ gõ tiếng Việt như Vietkey, unikey; Khi thực hiện chương trình máy tính sẽ thực hiện các lệnh trong phần thân chương trình theo tuần tự nên khi viết chương trình phải xác định viết lệnh nào trước, lệnh nào sau theo tư duy thuật tốn Các lệnh khi viết phải tn theo cú pháp của nó. Cần nhắc lại sau các lệnh đều kết thúc bằng dấu chấm phẩy; sử dụng lệnh Clrscr để xóa màn hình (lưu ý học sinh: để sử dụng được lệnh này trong phần thân thì phải khai báo thư viện Crt ở phần khai báo của chương trình) và lệnh Readln để hiển thị kết quả ra màn hình Thơng thường trong cú pháp các câu lệnh thường là là một lệnh đơn (một thao tác trong thuật tốn) cần chỉ thị cho máy tính thực hiện. Tuy nhiên, trong các câu lệnh điều kiện và câu lệnh lặp ta thường thấy có nhiều thao tác được thực hiện khi điều kiện thỏa mãn thì các lệnh đơn đó phải được đặt trong cặp từ khóa Begin và End để tạo thành câu lệnh ghép => Khi học sinh nắm vững lý thuyết; cú pháp, ngun lý hoạt động của các câu lệnh; ngun tắc viết một chương trình hồn chỉnh với ngơn ngữ lập trình Pascal thì các em có thể viết chương trình đúng cấu trú, đúng cú pháp hạn chế được lỗi cú pháp khi chạy chương trình 2.2.2 Giải pháp 2: Giới thiệu về q trình giải bài tốn trên máy tính Phương pháp tổng qt để giải một bài tốn bằng máy vi tính dựa trên ngơn ngữ Pascal thì cần thực hiện được các bước cụ thể như sau: B ước 1 . Xác định các bài tốn: Là xác định xem ta phải giải quyết vấn đề gì?; từ phát biểu của bài tốn, các em phải xác định được đâu là thơng tin đã cho (Input) và đâu là thơng tin cần Trang 13 tìm (Output). Xác định đúng u cầu bài tốn là rất quan trọng bởi nó ảnh hưởng tới cách thức giải quyết và chất lượng một lời giải Bước 2. Mơ tả thuật tốn: Tuỳ thuộc vào vấn đề cần giải quyết mà có những thao tác sẽ tiến hành trên dữ liệu vào sau một số hữu hạn bước thực hiện các thao tác đã chỉ ra, ta đạt được mục tiêu đã định. Từ đó tìm cách giải bài tốn và diễn tả bằng các lệnh cần phải thực hiện. Bước 3. Viết chương trình: Dựa vào mơ tả ở bước 2 trên; vận dụng cú pháp các câu lệnh và các quy tắc của ngơn ngữ lập trình Pascal để viết chương trình => Khi học sinh nắm và vận dụng được q trình giải bài tốn trên máy tính thì các em biết được bài tốn đã cho dữ liệu gì, cần tìm kết quả gì, từ đó định hướng được các thao tác và các lệnh cần sử dụng, tránh được tình trạng lập trình mị mẫm 2.2.3 Giải pháp 3: Phân tích chi tiết nội dung cần viết chương trình: * Xác định bài tốn Xác định thơng tin đã cho (Input): Xác định thơng tin đã cho này có cần nhập từ bàn phím hay khơng; Xác định thơng tin cần tìm (Output): Xác định kết sau chạy chương trình là gì? *Tìm thuật tốn Thuật tốn là một q 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 tốn sẽ tìm ra được Output của bài tốn Một bài tốn ta có 3 cách thể hiện thuật tốn: Các bước xác định bằng lời, lập sơ đồ khối, dùng một ngơn ngữ lập trình (Pascal) * Viết chương trình Viết chương trình là dùng một ngơn ngữ lập trình để viết chương trình mà cụ thể trong đề tài này là ngơn ngữ lập trình Pascal để diễn tả thuật tốn, cấu trúc dữ liệu thành câu lệnh để máy tính có thể thực hiện được và giải quyết đúng bài tốn mà người lập trình mong muốn Trang 14 ∙ Một bài tốn ta có thể đưa ra nhiều cách giải khác nhau, song là một giá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 xem nhìn vào có thể dễ hiểu được bài tốn đó là gì? Do đó, việc tinh chỉnh các bước cho bài tốn trong máy tính là phương pháp khoa học, có hệ thống giúp ta phân tích các thuật tố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 vững 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 ra thành chương trình hồn chỉnh Tinh chế từng bước là một thể hiện của tư duy giải quyết vấn đề từ trên xuống, giúp cho người lập trình có được một định hướng thể hiện trong phong cách viết chương trình tránh việc mị mẫm, xố đi viết lại nhiều lần Người lập trình có thể đưa ra phương pháp tinh chỉnh từng bước, thể hiện tư duy để giải quyết những vấn đề của bài tốn từ trên xuống làm cho chương trình tối ưu, sáng sủa, làm cho bài tốn được giải một cách gọn gàng nhất, chính xác nhất => Khi học sinh nắm q trình giải bài tốn trên máy tính thì các em có thể phân tích bài tốn một cách kỹ càng hơn, định hướng được bài tốn đã cho dữ liệu gì, cần tìm kết quả gì, thuật tốn để giải bài tốn ra sao, vận dụng lệnh gì trong ngơn ngữ lập trình Pascal để giải bài tốn từ đó có thể tránh được lỗi ngữ nghĩa khi chạy chương trình VÍ DỤ MINH HOẠ Sử dụng ngơn ngữ lập trình Pascal , hãy viết chương trình tính diện tích hình chữ nhật với chiều dài là a, chiều rộng là b (biết a,b là các số thực được nhập vào từ bàn phím). Xuất kết quả tính diện tích ra màn hình ( \u cầu diện tích làm trịn đến chữ số thập phân thứ 2) 1. Xác định bài tốn: + Input (Thơng tin vào): Chiều dài là cạnh a, chiều rộng là cạnh b + Output (Thơng tin ra): Kết quả diện tích khi đưa a, b vào 2. Viết thuật tốn của bài tốn: Bước 1: CD a, CR b Bước 2: s a*b sau đó xuất kết quả tính diện tích ra màn hình và kết thúc thuật tốn Ở đây chương trình bắt đầu bằng lời tiếng việt như: Trang 15 CD a, có nghĩa là gán chiều dài bằng a (hay là nhập chiều dài) CR b có nghĩa là gán chiều rộng bằng a (hay là nhập chiều dài) Giáo viên phân tích chi tiết cụ thể, từ đó mới bắt đầu hướng dẫn các em viết một chương trình cụ thể bằng ngơn ngữ lập trình thơng qua phân tích trên 3. Viết chương trình cho bài tốn sử dụng ngơn ngữ lập trình Pascal: Sau khi học sinh đã xác định được bài tốn, viết được chương trình, giáo viên cho học sinh thực hành trên máy tính, chạy thử để kểm tra kết quả và từ đó khắc sâu kiến thức viết một chương trình đơn giản cho học sinh. Để viết được chương trình cần bám sát vào các bước của thuật tốn: ở bước 1 để nhập được chiều dài và chiều rộng của hình chữ nhật, trước hết cần khai báo biến chiều dài, chiều rộng sử dụng lệnh khai bóa biến là var a,b:real; để nhập chiều dài và chiều rộng sử dụng lệnh readln(a); readln(b); ở bước 2 tính diện tích sử dụng lệnh gán s:=a*b; lệnh in ra màn hình write(s:3:2);. 2.2.4 Giải pháp 4: Giúp học sinh biết cách phát hiện lỗi và cách sửa lỗi chương trình khi thực hành trên máy tính Trang 16 2.2.4.1 Sửa lỗi cú pháp Khi biên dịch chương trình trong mơi trường lập trình Free Pascal các em thường bấm tổ hợp phím Alt+F9 hoặc vào bảng chọn Compile chọn lệnh Compile. Tuy nhiên khi chương trình bị lỗi thì học sinh lúng túng khơng biết lỗi ở đâu và làm thế nào để sửa lỗi. Trong q trình giảng dạy tơi đã hướng dẫn học sinh bình tĩnh quan sát trên màn hình, và làm như sau: Màn hình báo chương trình bị lỗi sau khi biên dịch Khi gặp trên màn hình Free Pascal có bảng thơng báo này, hướng dẫn học sinh bấm phím Enter để mất bảng thơng báo này, khi đó quan sát phía dưới của màn hình làm việc Free Pascal có một cửa sổ có tên Compile Messages Cửa sổ có tên compile Messages Để ý trong cửa sổ có tên Compile Messages sẽ thấy có 1 dịng có màu nền khác; hướng dẫn học sinh bấm chuột phải tại dịng có màu nền khác đó, khi đó xuất hiện bảng chọn như hình sau: Bảng chọn Trang 17 + Chọn lệnh Goto source, khi đó con trỏ soạn thảo sẽ nhảy đến vị trí có lỗi, hoặc lân cận vị trí có lỗi. Để sửa lỗi thì dựa vào lý thuyết và các cú pháp đã học để tiến hành sửa lỗi Sau khi sửa xong lỗi thì tiến hành biên dịch lại và sửa lỗi cho đến khi khơng cịn lỗi 2.2.4.2 Sửa lỗi ngữ nghĩa Lỗi ngữ nghĩa là lỗi mà chương trình khi biên dịch khơng mắc lỗi nhưng khi chạy chương trình thì chương trình cho kết quả khơng như mong muốn Khi mắc lỗi ngữ nghĩa thì phải xem lại thuật tốn và tiến hành hiệu chỉnh lại chương trình theo thuật tốn đã hiệu chỉnh. => Khi học sinh biết cách phát hiện lỗi và cách sửa lỗi chương trình khi thực hành trên máy tính thì các em khơng bị tâm lý chán nản với lập trình mà các em u thích và đam mê lập trình hơn 2.2.5 Giải pháp 5: Giáo viên cần giúp học sinh nắm vững lý thuyết; cú pháp khai báo mảng, một số thuật toán cơ bản đối với dữ liệu kiểu mảng một chiều Đối với nội dung này, giáo viên cần cho học sinh hiểu rõ khái niệm kiểu mảng một chiều, hiểu được cách khai báo các phần tử và cách truy cập đến các phần tử của mảng một chiều, học sinh cần hiểu được cách cài đặt thuật toán một số bài đơn giản với dữ liệu kiểu mảng, thực hiện việc khai báo mảng, truy cập, tính tốn các phần tử của mảng một chiều 2.2.5.1 Cú pháp khai báo: Var : Array[ ] of ; +Trong đó: chỉ số đầu, chỉ số cuối là các số ngun thỏa mãn chỉ số đầu 1) và dãy N số ngun M1, , Mn Output: Giá trị lớn nhất Max của dãy số Thuật tốn Bước 1: Max := M1, i := 2; Bước 2: Nếu Mi > Max thì Max := Mi; Bước 3: i := i + 1 Bước 4: Nếu i