SKKN Hướng tiếp cận mới trong dạy bài Chương trình con và phân loại môn Tin học 11 cho học sinh trường THPT Quan Sơn
Trong thực tế hiện nay, để tổ chức lớp nhà trường thường phân bố học sinh trong lớp dựa trên lượng kiến thức thực tế các môn nằm trong chương trình thi Tốt nghiệp THPT Quốc gia và Đại học, mặt khác môn Tin học lại đòi hỏi học sinh cần phải có điều kiện thực hành nhiều nên ngoài kiến thức lĩnh hội được trên lớp còn phụ thuộc vào điều kiện kinh tế của từng phụ huynh học sinh tự học ở nhà. Vì vậy trong khi dạy môn Tin học cho học sinh trong một lớp có sự phân hóa giữa hai đối tượng rất rõ: “đối tượng thứ nhất các em có điều kiện thực hành ở nhà tốt thì khi học Ngôn ngữ lập trình các em tiếp thu tốt, nhưng khả năng tư duy toán học thì hạn chế, đối tượng khác thì khả năng tư duy Toán học tốt nhưng khả năng vận dụng Ngôn ngữ lập trình chưa được tốt”. Vì thế làm cho giáo viên Tin học khi đứng lớp để dạy môn Tin học 11 về lập trình thường gặp rất khó để đưa phương pháp phù hợp cho các đối tượng này trong một tiết dạy.
Mặt khác vấn đề dạy học có vận dụng phương pháp tích hợp đang được Bộ Giáo dục và Đào tạo, các Sở Giáo dục và Đào tạo đang được triển khai và mở rông trên mọi phương diện, được vận dụng cho các bộ môn trong thực tiễn không chỉ dành riêng cho bộ môn Tin học.
Vậy vấn đề đặt ra là làm sao chúng ta vận dụng được kiến thức Toán học mà các em đã được học để vận dụng ngôn ngữ lập trình giải nhằm cúng cố kiến thức toán học hoặc mở rộng kiến thức toán học trong thực tiễn, qua đó có thể nhằm giúp cho việc đáp ứng được vấn đề thiết yếu ở chỗ, các em tư duy toán tốt có thể phát huy được thế mạnh về giải thuật, còn các em có khả năng về Ngôn ngữ lập trình có thể phát huy được sở trường của mình nhằm giúp cho Giáo viên có một hướng tiếp cận mới để truyền đạt kiến thức cho hai đối tượng trên thật hiệu quả trong việc giảng dạy môn Tin học THPT cụ thể Tin học 11, phần “Chương trình con và phân loại”, thay vì dạy đi dạy lại những bài toán quen thuộc đã được tiếp cận ở các tiết học hoặc lớp học trước đó thuận lợi cho những học sinh có khả năng về ngôn ngữ lập trình mà làm chênh lệch kiến thức giữa hai đối tượng trên.
MỤC LỤC PHẦN I: MỞ ĐẦU I. LÝ DO CHỌN ĐỀ TÀI Trong thực tế hiện nay, để tổ chức lớp nhà trường thường phân bố học sinh trong lớp dựa trên lượng kiến thức thực tế các môn nằm trong chương trình thi Tốt nghiệp THPT Quốc gia và Đại học, mặt khác môn Tin học lại đòi hỏi học sinh cần phải có điều kiện thực hành nhiều nên ngoài kiến thức lĩnh hội được trên lớp còn phụ thuộc vào điều kiện kinh tế của từng phụ huynh học sinh tự học ở nhà. Vì vậy trong khi dạy môn Tin học cho học sinh trong một lớp có sự phân hóa giữa hai đối tượng rất rõ: “đối tượng thứ nhất các em có điều kiện thực hành ở nhà tốt thì khi học Ngôn ngữ lập trình các em tiếp thu tốt, nhưng khả năng tư duy toán học thì hạn chế, đối tượng khác thì khả năng tư duy Toán học tốt nhưng khả năng vận dụng Ngôn ngữ lập trình chưa được tốt”. Vì thế làm cho giáo viên Tin học khi đứng lớp để dạy môn Tin học 11 về lập trình thường gặp rất khó để đưa phương pháp phù hợp cho các đối tượng này trong một tiết dạy. Mặt khác vấn đề dạy học có vận dụng phương pháp tích hợp đang được Bộ Giáo dục và Đào tạo, các Sở Giáo dục và Đào tạo đang được triển khai và mở rông trên mọi phương diện, được vận dụng cho các bộ môn trong thực tiễn không chỉ dành riêng cho bộ môn Tin học. Vậy vấn đề đặt ra là làm sao chúng ta vận dụng được kiến thức Toán học mà các em đã được học để vận dụng ngôn ngữ lập trình giải nhằm cúng cố kiến thức toán học hoặc mở rộng kiến thức toán học trong thực tiễn, qua đó có thể nhằm giúp cho việc đáp ứng được vấn đề thiết yếu ở chỗ, các em tư duy toán tốt có thể phát huy được thế mạnh về giải thuật, còn các em có khả năng về Ngôn ngữ lập trình có thể phát huy được sở trường của mình nhằm giúp cho Giáo viên có một hướng tiếp cận mới để truyền đạt kiến thức cho hai đối tượng trên thật hiệu quả trong việc giảng dạy môn Tin học THPT cụ thể Tin học 11, phần “Chương trình con và phân loại”, thay vì dạy đi dạy lại những bài toán quen thuộc đã được tiếp cận ở các tiết học hoặc lớp học trước đó thuận lợi cho những học sinh có khả năng về ngôn ngữ lập trình mà làm chênh lệch kiến thức giữa hai đối tượng trên. Trong thiết kế thuật giải thì chương trình con là một cách cài đặt khá quen thuộc được sử dụng để giải khá nhiều bài toán. Với mục đích tổ chức chương trình dưới dạng chương trình con tránh được những đoạn chương trình hay phép tính lặp lại nhiều lần. Tư tưởng tổ chức chương trình dưới dạng chương trình con đã được viết ở nhiều tài kiệu khác nhau, trong đề tài này tôi tập trung đưa ra một số dạng bài tập từ phổ biến từ dễ đến khó có thể áp dụng phương pháp này và phân tích tính hiệu quả của nó đối với từng bài toán, từng đối tượng. Vì thế tôi chọn đề tài: “Hướng tiếp cận mới trong dạy bài Chương trình con và phân loại môn Tin học 11 cho học sinh trường THPT Quan Sơn”. II. MỤC ĐÍCH NGHIÊN CỨU Trong phạm vi đề tài của mình tôi muốn chia sẻ một số phương pháp tuy không phải mới về mặt lý thuyết nhưng là các phương pháp khá hiệu quả trong việc giải các bài toán tin học giúp hình thành kỹ năng giải bài toán tin học và rèn luyện tư duy thuật toán từ đó rèn luyện tư duy lập trình. Đây là cơ hội tốt làm quen với phương pháp lập trình. Tuy chỉ trong phạm vi hẹp nhưng tôi hy vọng cùng với nổ lực của bản thân và sự giúp đỡ của đồng nghiệp sẽ có những đề tài sáng kiến kinh nghiệm tốt, lý thú và hiệu quả cho công tác giảng dạy tin học lớp 11 trường THPT Quan Sơn. Một module chỉ cần viết một lần và sau đó có thể truy xuất nó nhiều lần, bất kỳ nơi nào trong chương trình chính. Khi cần thiết, ta chỉ việc gọi tên chương trình con đó ra để thi hành lệnh. Học sinh hiểu được việc sử dụng chương trình con, chương trình có thể tiết kiệm được ô nhớ. Đồng thời, có thể kiểm tra tính logic trong tiến trình lập trình cho máy tính điện tử, có thể nhanh chóng loại bỏ những sai sót khi cần hiệu chỉnh hay cải tiến chương trình. Đây là khái niệm cơ bản trong ý tưởng lập trình có cấu trúc. Một quá trình tính cũng có thể có nhiều chương trình con lồng ghép vào nhau. III. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đề tài này được áp dụng đối với học sinh thuộc lớp 11 với nhiệm vụ chủ yếu là tổng hợp kiến thức môn học và vận dụng vào bài tập trong toán học vào thực tiễn phù hợp với các đối tượng trong việc giảng dạy nhằm giúp cho học sinh ngày càng yêu thích bộ môn Tin học. - Đối tượng: Học sinh các lớp 11A5, 11A6 trường THPT Quan Sơn. Năm học 2017 - 2018. - Kế hoạch nghiên cứu: Trực tiếp trong các bài dạy - Phạm vi nghiên cứu: Trong toàn bộ chương VI IV. PHƯƠNG PHÁP NGHIÊN CỨU Để hoàn thành đề tài này, tôi đã tiến hành và áp dụng một số phương pháp nghiên cứu sau: Phương pháp đặt vấn đề - giải quyết vấn đề Phương pháp phân tích tổng hợp. Phương pháp tích hợp, liên môn. Phương pháp so sánh đối chiếu. Phương pháp thực nghiệm PHẦN II: NỘI DUNG I. CƠ SỞ LÝ LUẬN Trong xã hội ngày nay, sự bùng nổ của Internet còn sản sinh ra một lượng thông tin khổng lồ, sự thâm nhập của công nghệ thông tin đã dần dần trở nên rõ nét hơn trong các hoạt động của con người, các chương trình được lập ra ngày càng nhiều để máy tính xứ lý đã giúp con người giải phóng sức lao động trí óc, nâng cao hiệu quả làm việc, học tập, giảng dạy, giải trí Vì vậy, đòi hỏi con người phải có những phương pháp, kỹ thuật ngày càng hiệu quả hơn nữa để lập trình cho máy tính xứ lý, lưu trữ, khai thác lượng thông tin hữu ích ấy. Vậy bên trong những chương trình ấy là gì? Đó chính là những thuật toán tìm kiếm, sắp xếp, tối ưu hóa cùng với những kỹ thuật giải quyết vấn đề mang đặc trưng của Tin học. Đối với hoạt động giảng dạy bộ môn Tin học cho học sinh, việc đưa ra một chiến lược thiết kế giải thuật tổng quát giúp giải quyết được hầu hết các bài toán tối ưu là điều kiện không thể vì mỗi bài toán có những đặc trưng phải được giải quyết bằng một phương pháp riêng. Chương trình con là một cách tổ chức chương trình có khoa học giúp cho người lập trình tránh được sự lặp đi lặp lại của một số câu lệnh, là cách tổ chức phố biến được sử dụng để giải quyết các bài toán phức tạp trở nên đơn giản hơn. Ưu điểm của nó là lời giải thường ngắn gon, dễ cài đặt. Cái khó của nó là sự đòi hỏi người học phải biết phân chia bài toán lớn thành các bài toán con và tổ chức chương trình con cho các bài toán con, kết hợp các bài toán con tìm nghiệm cho bài toán lớn. II. THỰC TRẠNG VẤN ĐỀ Khi dạy môn Tin học cho học sinh trong một lớp có sự phân hóa giữa hai đối tượng: “đối tượng thứ nhất các em có điều kiện thực hành ở nhà tốt thì khi học Ngôn ngữ lập trình các em tiếp thu tốt, nhưng khả năng tư duy toán học thì hạn chế, đối tượng khác thì khả năng tư duy Toán học tốt nhưng khả năng vận dụng Ngôn ngữ lập trình chưa được tốt”. Ví thế làm cho giáo viên Tin học khi đứng lớp để dạy môn Tin học 11 về lập trình thường gặp rất khó để đưa phương pháp phù hợp cho các đối tượng này trong một tiết dạy. Vậy ứng dụng kiến thức Toán học mà các em đã được học để vận dụng ngôn ngữ lập trình giải nhằm cúng cố kiến thức toán học hoặc mở rộng kiến thức toán học trong thực tiến, qua đó có thể nhằm giúp cho việc đáp ứng được vấn đề thiết yếu ở chỗ, các em tư duy toán tốt có thể phát huy được thế mạnh về giải thuật, còn các em có khả năng về Ngôn ngữ lập trình có thể phát huy được sở trường của mình nhằm giúp cho Giáo viên có một hướng tiếp cận mới để truyền đạt kiến thức cho hai đối tượng trên thật hiệu quả trong việc giảng dạy môn Tin học THPT cụ thể Tin học 11. Để tiếp thu tốt các kiến thức của chương trình, người dạy phải biết cách hướng dẫn học sinh vận dụng thật tốt các kiến thức ấy vào giải quyết những vấn đề cụ thể, gần gũi trong cuộc sống thường ngày để bài giảng trở nên sinh động, thiết thực, tránh đi sự khô khan, nhàm chán cho học sinh. Qua gần 8 năm giảng dạy tại nhà trường tôi đã rút ra được một kinh nghiệm nhằm giúp cho các em học sinh hiểu và vận dụng được phương pháp này để tăng sự hứng thú học tập môn Tin học của học sinh. III. CÁC BIỆN PHÁP ĐÃ TIẾN HÀNH ĐỂ GIẢI QUYẾT VẤN ĐỀ 3.1. Một số khái niệm 3.1.1. Chương trình con Trong khi lập trình chúng ta thường gặp những đoạn chương trình lặp đi lặp lại nhiều lần ở những chỗ khác nhau. Để tránh rườm rà những đoạn chương trình này được thay thế bằng các chương trình con tương ứng. Khi cần, ta chỉ cần gọi tên chương trình con đó ra. Lý do thứ hai để xây dựng chương trình con: Một vấn đề lớn và phức tạp sẽ tương ứng với một chương trình có thể rất lớn và dài. Do đó việc sửa chữa chương trình sẽ rất khó khăn. Ta có thể phân tích nó thành các vấn đề nhỏ hơn, để dễ kiểm tra, sau đó ghép lại thành một chương trình lớn. 3.1.2. Các loại biến Biến toàn cục: là biến chung, khai báo ở đầu chương trình, phạm vi sử dụng trong toàn bộ chương trình. Biến toàn cục sẽ tồn tại trong suốt quá trình thực hiện chương trình. Biến cục bộ: là biến riêng, khai báo ở đầu chương trình con, phạm vi sử dụng bên trong thân chương trình con đó. Biến cục bộ chỉ tồn tại và được cấp phát bộ nhớ khi chương trình con đang hoạt động, sẽ được giải phóng ngay sau khi chương trình con kết thúc. Tham số thực: là một tham số mà nó có thể là một biến toàn cục, một biểu thức hoặc một giá trị số mà ta dùng chúng khi truyền giá trị cho các tham số hình thức tương ứng của chương trình con. Tham số hình thức: là các biến được khai báo ngay sau Tên chương trình con, nó dùng để nhận giá trị của các tham số thực truyền đến. Tham số hình thức cũng là một biến cục bộ, ta có thể xem nó như là các đối số của hàm toán học. 3.1.3. Lời gọi chương trình con Để chương trình con được thi hành, ta phải có lời gọi đến chương trình con, lời gọi chương trình con thông qua tên chương trình con và danh sách các tham số tương ứng (nếu có). Các qui tắc của lời gọi chương trình con: Trong thân chương trình chính hoặc thân chương trình con, ta chỉ có thể gọi tới các chương trình con trực thuộc nó. Trong chương trình con, ta có thể gọi các chương trình con ngang cấp đã được thiết lập trước đó. a. Thủ tục (Procedure) Thủ tục là chương trình con, thủ tục được đặt tên để gọi và có thể chứa danh sách tham số hình thức. Các tham số này phải được đặt trong dấu ngoặc đơn ( ). Chương trình sẽ tự động truy xuất thủ tục đúng tên đã gọi và thực hiện các lệnh chứa trong thủ tục đó. Sau khi thực hiện thủ tục xong, chương trình sẽ trở lại ngay lập tức sau vị trí câu lệnh gọi thủ tục đó. Có 2 loại thủ tục: + Thủ tục không tham số. + Thủ tục có tham số. Cấu trúc của thủ tục không tham số: PROCEDURE ; { Các khai báo hằng, biến, kiểu cục bộ... } BEGIN { ... các lệnh trong nội bộ thủ tục ... } END ; Ví dụ : Tính khoảng cách giữa 2 điểm A và B khi biết tọa độ 2 điểm A(xA,yA) và B(xB,yB). - Dữ liệu vào: nhập 4 số thực xA, yA, xB, yB - Dữ liệu ra: Khoảng cách AB Ý tưởng: Phương trình tính khoảng cách: Program line; Var xA,xB,yA,yB: real ; Procedure lineAB; Var AB:Real; Begin AB:=sqrt(sqr(xB-xA)+sqr(yB-yA)); write('khoang cach AB=',AB:8:2); end ; BEGIN Write('Nhap toa do diem A='); Readln(xA,yA) ; Write('Nhap toa do diem B='); Readln(xB,yB) ; lineAB; Readln; END. Trong chương trình trên, thủ tục lineAB được khai báo trước khi nó được truy xuất, các biến xA, xB, yA, yB được gọi nhập vào ở chương trình chính và biến AB được định nghĩa bên trong thủ tục. Điều này cho ta thấy, không phải lúc nào cũng cần thiết khai báo biến ngay đầu chương trình chính. PROCEDURE (); { Các khai báo hằng, biến, kiểu cục bộ ... } BEGIN { ... các lệnh trong nội bộ thủ tục ... } END ; Cấu trúc của thủ tục có tham số: Khi viết một thủ tục, nếu có các tham số cần thiết, ta phải khai báo nó (kiểu, số lượng, tính chất, ...). Các tham số này gọi là tham số hình thức. Một thủ tục có thể có 1 hoặc nhiều tham số hình thức. - Nếu các tham số hình thức có cùng một kiểu thì ta viết chúng cách nhau bởi dấu phẩy (,). - Nếu các kiểu của chúng khác nhau hoặc giữa khai báo tham số truyền bằng tham biến và truyền bằng tham trị (sẽ học ở phần sau ) thì ta phải viết cách nhau bằng dấu chấm phẩy (;). Ví dụ : Tính khoảng cách giữa 3 điểm A, B và C khi biết tọa độ 3 điểm A(xA,yA), B(xB,yB) và C(xC,yC). - Dữ liệu vào: nhập 4 số thực xA, yA, xB, yB - Dữ liệu ra: Khoảng cách AB Ý tưởng: Phương trình tính khoảng cách: Program lineABC; Var xA,yA,xB,yB,xC,yC:real ; Procedure lines(x,y,u,v:real); Var line:Real; Begin line:=sqrt(sqr(u-x)+sqr(v-y)); write(line:8:2); writeln; end ; BEGIN Write('nhap toa do diem A'); Readln(xA,yA); Write('Nhap toa do diem B'); Readln(xB,yB); Write('Nhap toa do diem C'); Readln(xC,yC); write('khoang cach AB='); Lines(xA,yA,xB,yB); write('khoang cach BC='); Lines(xC,yC,xB,yB); write('khoang cach AC='); Lines(xA,yA,xC,yC); Readln; END. Trong chương trình trên x, y, u và v là các tham số hình thức của thủ tục lines. Khi gọi thủ tục lines(xA,yA,xB,yB) thì tham số thực xA,yA,xB và yB được truyền tương ứng cho tham số hình thức x, y, u và v. b. Hàm (Function) - Hàm là một chương trình con cho ta 1 giá trị kiểu vô hướng. - Hàm tương tự như thủ tục nhưng trả về một giá trị thông qua tên hàm và lời gọi hàm tham gia trong biểu thức. - Cấu trúc một hàm gồm: FUNCTION () :; { các khai báo hằng, biến, kiểu cục bộ... } BEGIN { ... các khai báo trong nội bộ hàm ... } END ; Trong đó: - Tên hàm là tên tự đặt cần tuân thủ theo nguyên tắc đặt tên trong Pascal. - Kiểu dl trả về là một kiểu vô hướng, biểu diễn kết quả giá trị của hàm. - Một hàm có thể có 1 hay nhiều tham số hình thức. + Nếu có nhiều tham số hình thức cùng một kiểu giá trị thì ta có thể viết cách nhau bằng dấu phẩy (,). + Nếu các tham số hình thức khác kiểu thì ta viết cách nhau bằng dấu chấm phẩy (;). - Trong hàm có thể sử dụng các hằng, kiểu, biến đã được khai báo trong chương trình chính nhưng ta có thể khai báo thêm các hằng, kiểu, biến dùng riêng trong nội bộ hàm. Chú ý: là phải có một biến trung gian có cùng kiểu kết quả của hàm để lưu kết quả của hàm trong quá trình tính toán để cuối cùng ta có 1 lệnh gán giá trị của biến trung gian cho tên hàm. Ví dụ : function lines(x,y,u,v:real): real; Đây là một hàm số có tên là lines với 4 tham số hình thức x, y, u và v. Kiểu của x, y, u và v là kiểu số thực real. Hàm lines sẽ cho kết quả kiểu số thực real. Ví dụ: Tìm khoảng cách lớn nhất giữa 3 điểm A, B và C khi biết tọa độ 3 điểm A(xA,yA), B(xB,yB) và C(xC,yC). - Dữ liệu vào: nhập 4 số thực xA, yA, xB, yB - Dữ liệu ra: Khoảng cách AB Ý tưởng: - Phương trình tính khoảng cách: - Tìm max của 3 số AB, AC và BC. Program lineABC; Var t,xA,yA,xB,yB,xC,yC:real ;{ t,xA,yA,xB,yB,xC,yC biên toàn cục} function lines(x,y,u,v:real):real; { x,y,u,v danh sách tham số} Var line:Real; {line biến cục bộ} Begin line:=sqrt(sqr(u-x)+sqr(v-y)); lines:=line; end ; function maxline(x,y:real):real; {x,y danh sách tham số} begin if x>y then maxline:=x else maxline:=y; end; BEGIN Write('nhap toa do diem A'); Readln(xA,yA); Write('Nhap toa do diem B'); Readln(xB,yB); Write('Nhap toa do diem C'); Readln(xC,yC); t:=maxline(maxline(Lines(xA,yA,xB,yB),Lines(xC,yC,xB,yB)),Lines(xA,yA,xC,yC)); {lời gọi hàm line, maxline} write('hai diem co khoang cach lon nhat=',t:8:2); Readln; END. Khi khai báo kiểu dữ kiệu cho các tham số hình thức trong thủ tục và hàm, ta cần phải chú ý điểm sau: Nếu kiểu dữ liệu của các tham số hình thức là các kiểu dữ liệu có cấu trúc (kiểu array, string, ... ) thì việc khai báo kiểu dữ liệu cho các tham số hình thức nên được khai báo theo cách gián tiếp, tức là phải thông qua từ khóa TYPE. Ví dụ: Procedure Xuat(hoten: array[1..100] of string[30]); Chương trình con Xuat bị lỗi ở phần khai báo kiểu dữ liệu cho hai tham số hình thức là hoten. Để khắc phục lỗi này, ta sẽ khai báo gián tiếp một kiểu dữ liệu arr thông qua từ khóa TYPE như sau: TYPE arr=Array[1..100] of string[30];{arr là kiểu dữ kiệu mảng có 100 phần tử kiểu xâu} Tiếp đến, dùng kiểu dữ liệu mới định nghĩa arr để định kiểu cho các tham số hình thức hoten như sau: Procedure Xuat1(hoten : arr); 3.1.4.Truyền tham số cho chương trình con Khi truyền tham số trong Pascal, đòi hỏi phải có sự tương ứng về tên của kiểu dữ liệu của các tham số hình thức và tham số thực. Một số định nghĩa và qui tắc về truyền tham số trong Pascal: Những tham số hình thức nằm sau từ khóa VAR gọi là tham số biến. Với tham số biến, các tham số thực bắt buộc phải là biến chứ không được là giá trị. Khi giá trị của tham số biến thay đổi thì nó sẽ làm thay đổi giá trị của tham số thực tương ứng và khi ra khỏi chương trình con đó, tham số thực vẫn giữ giá trị đã được thay đổi đó. Những tham số hình thức không đứng sau từ khóa VAR gọi là tham số trị, khi đó các tham số thực có thể là một biến, một biểu thức, một hằng, hoặc một giá trị số. Các tham số trị nhận giá trị từ tham số thực khi truyền như là giá trị ban đầu, khi giá trị của tham số trị thay đổi thì nó sẽ không làm thay đổi giá trị của tham số thực, nghĩa là giá trị của tham số thực sau khi thoát khỏi chương trình con vẫn luôn bằng với giá trị của tham số thực trước khi truyền đến chương trình con đó. Do vậy một tham trị không bao giờ là kết quả tính toán của chương trình con. Ví dụ 1: Viết chương trình hoán vị hai giá trị a và b. program Parameter; var a,b: real; {a,b là hai biến toàn cục} procedure hoanvi(var x,y:real); {x,y là hai tham số biến} var tam:real; Begin tam:=x; x:=y; y:=tam; End; Begin write('nhap 2 so a va b'); readln(a,b); writeln('hai so truoc khi hoan vi ',a:4:2,' ',b:4:2); hoanvi(a,b); {hai tham số thực a và b được truyền cho tham số biến x và y} writeln('hai so sau khi hoan vi ',a:4:2,' ',b:4:2); readln; End. Chạy chương trình trên: Giả sử dữ liệu vào cho a=5 và b=10 Kết quả kiểm chứng qua các trường hợp như sau: TH1: Chạy chương trình cho kết quả hoán vị ta được: a=10 và b=5 TH2: Nếu đoạn chương trình con procedure hoanvi(var x,y:real); trên được khai báo như sau: procedure hoanvi(x,y:real); {x,y là hai tham số trị} var tam:real; Begin tam:=x; x:=y; y:=tam; End; Sau khi chạy chương trình kết quả cho a=5 và b =10; vậy đại lượng a và b có giá trị không thay đổi vì x và y được khai báo tham trị (không có từ khóa var) nên sau khi ra khỏi chương trình con giá trị x và y không thay đổi nên được trả lại cho a và b là giá trị trước đó. TH3: Nếu đoạn chương trình con procedure hoanvi(var x,y:real); trên được khai báo như sau: procedure hoanvi(x: real,var y:real); {x là tham số trị, y là tham biến} var tam:real; Begin tam:=x; x:=y; y:=tam; End; Sau khi chạy chương trình kết quả cho a=5 và b =5; vậy đại lượng a có giá trị không thay đổi vì x được khai báo tham trị (không có từ khóa var) nên sau khi ra khỏi chương trình con giá trị x không thay đổi nên được trả lại cho a là giá trị trước đó. Đại lượng b có giá trị thay đổi vì y được khai báo tham biến (có từ khóa var) nên sau khi ra khỏi chương trình con giá x thay đổi nên được trả lại cho b. 3.2. Hiệu quả của chương trình con * Lợi ích của chương trình con mang lại - Tránh việc phải viết lặp đi lặp lại cùng một dãy lệnh. - Hỗ trợ việc thực hiện các chương trình lớn. - Phục vụ cho quá trình trừu tượng hóa. - Mở rộng khả năng ứng dụng của ngôn ngữ. - Thuận tiện cho phát triển, nâng cấp chương trình. Bài 1. Cho 3 điểm A, B và C có tọa độ A(xA,yA), B(xB,yB) và C(xC,yC). Hãy kiểm tra xem 3 điểm đó có tạo thành tam giác? Nếu là tam giác tính diện tích tam giác? - Dữ liệu vào: nhập 4 số thực xA, yA, xB, yB - Dữ liệu ra: A, B và C là tam giác? Diện tích ? Giải thuật: - Phương trình tính khoảng cách: + Đặt t1= + Đặt t2= + Đặt t3= - Kiểm tra điều kiện: Nếu (t1<t2+t3) and (t2<t1+t3) and (t3<t2+t1) thì 3 điểm đó tạo thành tam giác, tính diện tích. Ngược lại không tạo thành tam giác. Program tamgiac; Var xA,yA,xB,yB,xC,yC,t1,t2,t3:real; procedure nhap; begin Write('nhap toa do diem A'); Readln(xA,yA); Write('Nhap toa do diem B'); Readln(xB,yB); Write('Nhap toa do diem C'); Readln(xC,yC); end; function lines(var x,y,u,v:real):real; Var line:Real; Begin lines:=sqrt(sqr(u-x)+sqr(v-y)); end ; procedure xuly; var p,s: real; begin if (t1<t2+t3) and (t2<t1+t3) and (t3<t2+t1) then be
Tài liệu đính kèm:
- skkn_huong_tiep_can_moi_trong_day_bai_chuong_trinh_con_va_ph.doc