CHƯƠNG II: TỔ CHỨC DẠY HỌC CÁC BÀI THỰC HÀNH CHO HỌC
2.5. Phân tích đặc điểm các bài tập và thực hành để rèn luyện kỹ năng thực hành
Chương trình Tin học lớp 11 gồm 8 bài tập và thực hành, ở đây tôi phân tích tất cả các bài tập và thực hành có trong SGK.
Xây dựng giáo án cho các bài tập và thực hành: Để bài thực hành có hiệu quả cao nhất trong việc rèn luyện kỹ năng, khi thực hiện giáo viên cần n m rõ đặc điểm của từng bài thực hành. Do đó trước m i giáo án tôi s có bước phân tích đặc điểm của từng bài về mặt kiến thức, kỹ năng và một số điều cần chú ý khác.
Bài tập và thực hành 1
Học sinh viết được một chương trình hoàn ch nh đơn giản.
Thực hiện được việc mở được phần mềm Pascal, nhập chương trình có sẵn, lưu vào đ a, dịch chương trình, làm quen với việc dựa vào thông báo l i của chương trình để ch nh sửa chương trình, chạy chương trình với những bộ test đơn giản và quan sát, nhận xét kết quả chương trình đưa ra.
Chú ý: dấu chấm ph y (;) d ng để ngăn cách các khai báo và các câu lệnh.
Sau từ khóa end cuối chương trình phải đặt dấu chấm.
Câu f
Học sinh hiểu được chương trình cho sẵn ở câu a và thấy được kết quả chạy chương trình này, trên cơ sở đó mới tìm ra được cách giải quyết yêu cầu đặt ra ở câu f.
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
câu a biến D được gán D:=b*b-4*a*c; và giá trị x1 được tính như sau:
x1:=(-b-sqrt(D)) (2*a); để không sử dụng biến trung gian D thì thay giá trị của biến D được gán vào ngay câu lệnh tính giá trị x1: x1:=(-b-sqrt(b*b-4*a*c))/(2*a);
Câu g
Công thức tính x2 được thay b ng x2:=(-b-sqrt(b*b-4*a*c)) (2*a) (nếu không d ng biến phụ D) hoặc là x2:=(-b-sqrt(D)) (2*a) (nếu d ng biến phụ D).
Bài tập và thực hành 2
Tìm hiểu bài toán bộ số Pi-ta-go, xác định được Input và Output của bài toán, thuật toán và thấy sự cần thiết phải sử dụng cấu trúc r nhánh để mô tả thuật toán.
Hiểu được chương trình sử dụng cấu trúc r nhánh, biểu thức điều kiện.
Chú ý: trước else không có dấu chấm ph y (;).
Bài tập và thực hành 3
Củng cố cho học sinh những hiểu biết về kiểu dữ liệu mảng.
Tổ chức những hoạt động trong phòng máy để học sinh có được các kỹ năng cơ bản làm việc với kiểu mảng (một chiều) trong lập trình, cụ thể là:
Khai báo kiểu dữ liệu mảng.
Nhập dữ liệu cho mảng, đưa ra màn hình ch số và giá trị các phần tử của mảng.
Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử.
Cung cấp cho học sinh ba thuật toán cơ bản và đơn giản thường gặp với kiểu dữ liệu mảng:
Tính tổng các phần tử thỏa mãn điều kiện nào đó.
Tìm phần tử lớn nhất (hay nhỏ nhất) của mảng c ng với vị trí của nó trong mảng.
Giới thiệu hàm Random(n) cho học sinh thấy có thể d ng lệnh để máy lấy ngẫu nhiên một số nguyên dương trong khoảng từ đến n - 1, giới hạn n do người lập trình đưa ra.
Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình.
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Những điểm cần lưu ý trong bài: Khi kết thúc giờ thực hành, ít nhất học sinh phải chạy được ba chương trình ở bài 1a, 1b và 2a. T y theo điều kiện cụ thể, trình độ của học sinh giáo viên cần giúp học sinh đạt được mục đích chính của bài thực hành.
Bài 1
Học sinh hiểu được chương trình cho sẵn ở câu a và thấy được kết quả chạy chương trình này, trên cơ sở đó mới tìm ra được cách giải quyết yêu cầu đặt ra ở câu b.
Điểm khác nhau cơ bản của các chương trình ở câu a và câu b là chương trình ở câu a kiểm tra lần lượt từng phần tử của mảng để quyết định có cộng tích lũy hay không, còn chương trình ở câu b kiểm tra từng phần tử của mảng để quyết định đếm tăng cho số các số dương hay đếm tăng cho số các số âm.
Thủ tục Randomize khởi tạo bộ lấy ngẫu nhiên trước khi d ng lệnh Random(n) để lấy một số nguyên ngẫu nhiên trong phạm vi từ đến n - 1.
Nếu đủ thời gian cũng có thể nêu thêm một vài yêu cầu khác để tăng thêm khả năng vận dụng của học sinh.
Chú ý: nh c học sinh ghi lại chương trình ở câu a trước khi sửa đổi để có chương trình đáp ứng yêu cầu ở câu b.
Bài 2
Chương trình ở câu a nh m cung cấp cho học sinh thuật toán tìm phần tử lớn nhất (nhỏ nhất) trong một mảng, đây là thuật toán hay gặp trong nhiều bài toán thực tế. Trọng tâm của bài này là giúp học sinh hiểu được đoạn chương trình này thể hiện thuật toán đó, việc tạo mảng dữ liệu học sinh đã được thực hành ở bài 1.
Chương trình 2a thể hiện thuật toán lớn nhất:
Tìm hiểu vai trò của biến j: Qua câu lệnh đưa kết quả ra màn hình, qua lệnh gán khởi trị cho biến j trước khi duyệt từng phần tử của mảng b ng vòng lặp For - do; qua câu lệnh If - then d ng để kiểm tra phần tử thứ i của mảng và lưu trữ ch số i của phần tử này trong biến j.
Có thể cho học sinh một ví dụ về dữ liệu Input nhỏ (mảng A có khoảng
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
4 đến 8 phần tử cụ thể) và yêu cầu học sinh mô phỏng việc chạy đoạn chương trình thể hiện thuật toán trên giấy nháp. Đối với học sinh khá giỏi có thể hướng dẫn các em theo dõi sự thay đổi qua các biến khi chạy đoạn chương trình này (với các công cụ Debug của Pascal).
Phải cho học sinh n m được điểm mấu chốt là tại bước lặp thứ i trong câu lệnh For - do, phần tử A[i] được so sánh với A[j], ngh a là so sánh với phần tử lớn nhất tìm được trong phạm vi các phần tử đã được duyệt qua ở trước bước này (từ phần tử thứ nhất đến phần tử thứ i - 1). So sánh đó được thực hiện để tìm phần tử lớn nhất trong phạm vi có thêm A[i]. Như vậy ở bước lặp thứ i, biến j luôn lưu trữ ch số của phần tử lớn nhất đã tìm được trong phạm vi A[1] đến A[i]. Bởi vậy khi thực hiện xong câu lệnh For - do, giá trị của biến j chính là ch số của phần tử lớn nhất cần tìm.
Nên hỏi học sinh, sau đó giáo viên kết luận, cách sửa để có chương trình tìm phần tử nhỏ nhất, có thể cho học sinh sửa và chạy ngay.
Nếu không sợ thiếu thời gian, nên yêu cầu học sinh sửa lại một ch trong chương trình để kết quả đưa ra phần tử lớn nhất với ch số lớn nhất (trong trường hợp có nhiều phần tử có c ng giá trị lớn nhất đó).
L u việc tạo mảng có các phần tử là các số ngẫu nhiên tạo điều kiện cho học sinh chạy được chương trình có kích thước mảng tương đối lớn.
Bài tập và thực hành 4
Củng cố cho học sinh những kiến thức và kỹ năng đã có khi lập trình với kiểu dữ liệu mảng.
Củng cố cho học sinh một thuật toán s p xếp các phần tử của một dãy (b ng tráo đổi) và kỹ năng diễn đạt thuật toán này b ng chương trình sử dụng dữ liệu kiểu mảng.
Rèn luyện học sinh một ý thức cần có của người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể được.
Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình.
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Những điểm cần lưu ý trong bài:
Về bài 1
Mục đích: Củng cố cho học sinh thuật toán s p xếp (b ng tráo đổi) và kỹ năng cài đặt b ng ngôn ngữ lập trình.
Chương trình ở bài 1a ch khác với chương trình ở §11, mục 1b, ví dụ 2 ở ch dãy số nguyên không nhập từ bàn phím mà được máy tạo ra ngẫu nhiên một cách nhanh chóng.
Khuyến khích học sinh giỏi viết chương trình cài đặt các thuật toán s p xếp khác.
Về bài 2
Mục đích: Rèn luyện thêm cho học sinh kỹ năng lập trình với kiểu dữ liệu mảng, đồng thời yêu cầu học sinh có ý thức muốn viết chương trình sao cho khối lượng tính toán là ít nhất có thể được.
Bài này đưa cho học sinh một bài toán tính các tổng i phần tử đầu tiên của một mảng tương ứng với m i giá trị của i và hai cách giải quyết khác nhau kèm theo sự phân tích và so sánh hai cách đó. Giáo viên cần làm cho học sinh biết với c ng một bài toán có thể cài đặt những chương trình khác nhau (những thuật toán khác nhau), người lập trình luôn phải có ý thức chọn cách cài đặt sao cho số phép toán máy tính thực hiện càng ít càng tốt. Trong chương trình thứ hai việc tính tổng của i phần tử đã tận dụng được kết quả của việc tính tổng i - 1 phần tử có sẵn ở bước trước do vậy giảm được số phép tính mà máy cần thực hiện so với chương trình thứ nhất. Cụ thể là vòng lặp For - do tính tổng i phần tử đầu tiên đã được thay thế bởi một lệnh gán:
B[i]:= B[i-1] + A[i];
Bài tập và thực hành 5
Củng cố cho học sinh những hiểu biết về kiểu xâu.
Tổ chức những hoạt động trong phòng máy để học sinh có được các kỹ năng cơ bản làm việc với xâu trong lập trình. Cụ thể là:
Khai báo kiểu xâu.
Nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu.
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Duyệt qua tất cả các kí tự của xâu để thực hiện xử lý tương ứng với từng kí tự đó.
Sử dụng được các hàm và thủ tục chu n đã trình bày ở SGK.
Cung cấp cho học sinh một vài thuật toán cơ bản và đơn giản thường gặp khi xử lý văn bản, rèn luyện một số kỹ năng cài đặt:
Tạo một xâu mới từ một xâu ban đầu.
Đếm số lần xuất hiện của một chữ cái trong một văn bản.
Tìm kiếm và thay thế sự xuất hiện một từ b ng một từ khác trong toàn bộ văn bản.
Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình.
Những điểm cần lưu ý trong bài:
Về bài 1
Nên cho ví dụ hoặc yêu cầu học sinh cho ví dụ về xâu đối xứng và xâu không đối xứng trước khi học sinh tìm hiểu chương trình đã cho.
Với yêu cầu viết lại chương trình không sử dụng biến xâu p, cần gợi ý cho học sinh khai thác khả năng tham chiếu đến từng kí tự trong xâu thông qua vị trí của kí tự này.
Về bài 2
Có thể giới thiệu mảng một chiều với ch số là kí tự từ 'A' đến 'Z' để ghi nhận số lần xuất hiện của các kí tự trong xâu S.
Nên đưa dàn ý chương trình và yêu cầu học sinh chi tiết hóa b ng các câu lệnh vào giờ thực hành hoặc đưa cho học sinh chu n bị ở nhà trước buổi thực hành.
Về bài 3
Để thay thế tất cả các cụm kí tự 'anh' trong xâu st thành cụm kí tự 'em', có thể làm một cách tự nhiên: Tìm vị trí xâu con 'anh' trong xâu st đã cho, xóa xâu con này đi rồi chèn xâu 'em' vào vị trí đó. Lặp lại điều này cho đến khi không tìm thấy xâu 'anh' cần thay thế trong xâu st nữa. Có thể hỏi học sinh: để giải quyết bài toán cần d ng hàm và thủ tục xử lý xâu nào?
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Đưa dàn ý chương trình cho học sinh và yêu cầu học sinh chi tiết hóa b ng các câu lệnh để có một chương trình chạy đúng.
Bài tập và thực hành 6
Giúp học sinh nhận biết được tham số hình thức, tham số thực sự, tham biến, tham trị, biến toàn cục, biến cục bộ.
Sử dụng được một số hàm, thủ tục xử lý xâu.
Rèn luyện cho học sinh các thao tác xử lý xâu, kỹ năng tạo hiệu ứng chữ chạy trên màn hình.
Nâng cao kỹ năng viết, sử dụng chương trình con.
Những điểm cần lưu ý trong bài:
Câu a
Hai thủ tục CatDan(s1,s2) và CanGiua(s) s được d ng trong một chương trình để làm một dòng chữ chạy trên màn hình.
Thủ tục CatDan(s1,s2) tạo nên xâu s2 từ xâu s1 nhận đầu vào, sao cho s2 chính là trạng thái liên tiếp nếu hình dung s1 dịch sang trái một vị trí trong chuyển dịch vòng. Ta ch cần khai báo s1 là tham số giá trị, nhưng s2 phải khai báo là tham số biến.
Hướng dẫn học sinh sử dụng được hàm copy và phép cộng xâu.
Câu b
Chương trình làm một dòng chữ chạy trên màn hình. Nó sử dụng hai thủ tục mà chúng ta vừa tìm hiểu ở câu a.
Thủ tục chu n gotoxy(x,y) chuyển con trỏ màn hình đến vị trí cột x dòng y trên màn hình. Trong chương trình này gotoxy(1,12): con trỏ màn hình ở vị trí cột 1, dòng 12 trên màn hình.
Thủ tục delay(n) dừng trạng thái của màn hình trong n miligiây. Trong chương trình này delay(500): dừng trạng thái của màn hình trong 5 miligiây.
Hàm chu n keypressed không có tham số trả ra giá trị true khi có một phím được gõ.
Câu c
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Đây là chương trình tổng quát hơn (xâu chữ chạy ở dòng bất k do chương trình chính quy định).
Nhiệm vụ của thủ tục Chuchay(s,dong) về cơ bản làm nhiệm vụ mà chương trình ở câu b đã làm, ch khác là ở chương trình câu b luôn cho dòng chữ chạy ở dòng 12, còn thủ tục Chuchay(s,dong) có tham số dong quy định dòng nào trên màn hình xảy ra chuyển động của chữ. Từ ý ngh a sử dụng của tham số dong ta thấy ch cần khai báo nó là tham trị. Như vậy, thủ tục Chuchay(s,dong) ch viết khác thân chương trình ở câu b vài ch .
Thủ tục Chuchay(s,dong) có sử dụng 2 thủ tục CatDan(s1,s2) và CanGiua(s).
Do vậy, chương trình sử dụng thủ tục Chuchay vẫn có hai thủ tục đó trong phần khai báo chương trình con, phải đặt phái trên phần khai báo thủ tục Chuchay.
Thân chương trình sử dụng thủ tục Chuchay đơn giản vì ch cần gọi thủ tục này làm việc. Tuy nhiên trước đó cần xác định giá trị của xâu chữ cần chạy (xác định giá trị của biến s) và xác định chữ chạy ở dòng nào trên màn hình (xác định tham số thực sự cho tham số dong khi gọi thủ tục Chuchay). Chương trình chính có them biến dong thuộc kiểu byte (thực tế thì số nguyên dương không vượt quá số dòng của màn hình).
Chương trình chính:
Program Xau_chu_chay;
Uses crt;
Type str=string[79];
Var s1, s2: str;
dong: byte;
stop: boolean;
Procedure CatDan(s1: str; var s2: str);
Begin
s2:= copy(s1, 2, length(s1) - 1) + s1[1];
End;
Procedure CanGiua(var s:str);
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Var i, n: integer;
Begin
n:= length(s);
n:=(80 - n) div 2;
For i:=1 to n do s:= ' ' + s;
End;
Procedure Chuchay(s1: str; dong: byte);
Var s2: str;
stop: boolean;
Begin
Clrscr;
CanGiua(s1);
Clrscr;
Stop:=false;
While not (stop) do begin
Gotoxy(1,dong);
Write(s1);
Delay(500);
CatDan(s1,s2);
s1:=s2;
Stop:=keypressed;
end;
End;
BEGIN Clrscr;
Write(‘Nhap vao xau chu: ’); Readln(s1);
Write(‘Nhap vao dong xuat hien: ’); Readln(dong);
Chuchay(s1,dong);
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Readln;
END.
Bài tập và thực hành 7
Củng cố về thủ tục, hàm, tham trị, tham biến, tham số thực sự, biến toàn cục, biến cục bộ.
Nâng cao kỹ năng viết, sử dụng chương trình con.
Biết cách viết một chương trình có cấu trúc để giải một bài toán trên máy tính.
Những điểm cần lưu ý trong bài:
Câu a
Để tính khoảng cách giữa 2 điểm P (xP, yP), Q (xQ, yQ) thì ta d ng công thức sau: d (xPxQ)2(yPyQ)2 . Trong ngôn ngữ lập trình Pascal thì ta viết như sau:
Kh_cach:=sqrt((P.x-Q.x)*(P.x-Q.x)+(P.y-Q.y)*(P.y-Q.y));
Khoảng cách từ điểm B đến điểm C được gọi là độ dài cạnh a, khoảng cách từ điểm A đến điểm C được gọi là độ dài cạnh b, khoảng cách từ điểm B đến điểm A được gọi là độ dài cạnh c.
Chu vi của tam giác được tính: Chuvi:=a+b+c. Để tính diện tích tam giác thì ta d ng công thức He-rong như sau: Dientich=sqrt(p*(p-a)*(p-b)*(p-c)) với p là nửa chu vi tam giác được tính p:=(a+b+c) 2.
Câu c
Để xây dựng chương trình có sử dụng các hàm và thủ tục đã xây dựng ở câu a nh m đưa ra tính chất các tam giác: số lượng tam giác đều, số lượng tam giác cân, số lượng tam giác vuông; ta cần tạo tệp tamgiac.dat để từ tệp này đọc dữ liệu sang tệp của chương trình.
Chương trình tạo tệp tamgiac.dat nh m mục đích để nhập tọa độ các đ nh của tam giác.
Bài tập và thực hành 8
Biết khả năng đồ họa của ngôn ngữ lập trình.
Nhận biết được các khai báo sử dụng thư viện, sử dụng chương trình con.
Tạo sự ham muốn giải các bài tập lập trình, trước m t thấy được khả năng đồ