1. Trang chủ
  2. » Mầm non - Tiểu học

NGHIEP VU SU PHAM

26 2 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

Nội dung

Mà vấn đề đặt ra là chúng ta cần phải tích cực tìm tòi, sáng tạo trong việc đưa ra những bài toán đó để giúp cho học sinh có sự hứng thú, tìm tòi sáng tạo trong quá trình giài quyết học [r]

(1)PHẦN I MỞ ĐẦU I Lý chọn đề tài Trong bối cảnh Công nghệ thông tin ngày càng phát triển, việc sử dụng rộng rãi máy tính không còn bó hẹp viện nghiên cứu, các trường đại học, các trung tâm máy tính mà còn mở rộng quan, xí nghiệp và nhà máy Song song với quá trình trên, việc giảng dạy Tin học các trường đại học, trung học và phổ thông đẩy mạnh đôi với việc tăng cường trang bị máy vi tính Chính vì vậy, giáo viên giảng dạy môn Tin học các trường phổ thông, việc tìm hiểu, nghiên cứu các vấn đề Tin học, cùng với việc tìm các biện pháp giảng dạy Tin học nhà trường phổ thông là công việc cần phải làm thường xuyên, nhằm đáp ứng với đòi hỏi ngày càng cao xã hội Trong nghiệp vụ người thầy giáo có hai vấn đề quan trọng: thứ là thực tiễn tiềm - kiến thức lý thuyết mà họ học Thứ hai là thực tiễn nghiệp vụ - thầy giáo phải biết cách truyền thụ kiến thức phù hợp với trình độ học sinh Trong đó, thực tiễn thứ hai là điều định nghiệp vụ thầy giáo, nó đánh giá chất lượng giảng dạy thầy giáo Hai thực tiễn trên vừa mâu thuẫn với nhau, lại vừa thống với Thầy giáo không thể mang hết các kiến thức lý thuyết cao xa và trừu tượng dạy cho học sinh, không thể dạy tốt cho học sinh thầy giáo hiểu biết quá ít 2.1 Trong bối cảnh toàn ngành Giáo dục và Đào tạo nỗ lực đổi phương pháp dạy học theo hướng phát huy tính tích cực chủ động học sinh hoạt động học tập Điều 24.2 Luật giáo dục đã nêu rõ : “Phương pháp giáo dục phổ thông phải phát huy tính tích cực, tự giác, chủ động, sáng tạo học sinh, phù hợp với đặc điểm lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh” Như vậy, chúng ta có thể thấy định hướng đổi phương pháp dạy học đã khẳng định, không còn là vấn đề tranh luận Cốt lõi việc đổi phương pháp dạy học trường phổ thông là giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động 2.2 Đổi phương pháp dạy học theo hướng tích cực hóa hoạt động học sinh là quá trình lâu dài; không thể ngày ngày hai mà đông đảo giáo viên từ bỏ kiểu dạy học truyền thụ kiến thức, tiếp thu thụ động đã quen thuộc từ lâu việc phát triển các phương pháp tích cực đòi hỏi số điều kiện, đó quan trọng là thân giáo viên cần có nỗ lực để tìm tòi, sáng tạo công tác giảng dạy mình 2.3 Đổi phương pháp dạy học là vấn đề quan trọng, là với môn Tin học đưa vào giảng dạy các trường phổ thông Là giáo viên giảng dạy môn này, theo em không phải tìm nhiều bài toán khó, bài toán hay để giảng dạy cho học sinh Mà vấn đề đặt là chúng ta cần phải tích cực tìm tòi, sáng tạo việc đưa bài toán đó để giúp cho học sinh có hứng thú, tìm tòi sáng tạo quá trình giài học tập, từ đó biết vận dụng linh hoạt các tình cụ thể ngoài thực tế Trong việc giảng dạy cho học sinh, ngoài việc giúp học sinh lĩnh hội kiến thức Thầy giáo còn phải biết kích thích tính tích cực, sáng tạo say mê học hỏi học sinh việc học tập các em Bởi vì, việc học tập tự giác, tích (2) cực, chủ động và sáng tạo đòi hỏi học sinh phải có ý thức mục tiêu đặt và tạo động lực bên thúc đẩy thân họ hoạt động để đạt các mục tiêu đó Điều này thực dạy học không đơn giản việc nêu rõ mục tiêu mà quan trọng còn gợi động Turbo Pascal là ngôn ngữ lập trình có cấu trúc, nó dùng phổ biến nước ta công tác giảng dạy, lập trình tính toán, đồ họa Turbo Pascal dùng chương trình giảng dạy Tin học hầu hết các trường đại học, cao đẳng, trung học phổ thông 4.1 Trong các vấn đề Tin học đưa vào giảng dạy chương trình bậc học phổ thông Khi nói đến vấn đề dạy học lập trình cho học sinh, vấn đề dạy học cho học sinh chương trình là vấn đề chiếm vai trò quan trọng Bởi vì, sử dụng chương trình để hợp lý hóa, tiết kiệm công sức lập trình Đồng thời, chương trình có thể giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Vấn đề đặt là: gợi động hoạt động cho học sinh giảng dạy chương trình nào? Đó chính là vấn đề mà thân em quan tâm 4.2 Để thực điều đó, theo em chúng ta cần phải tìm tòi, nghiên cứu tìm bài toán phù hợp, kích thích độc lập, tích cực học sinh học tập Trên sở đó, học sinh có thể tự mình tìm ý tưởng sáng tạo vận dụng thiết thực vào sống thực tế nhu cầu nảy sinh, đó các em có thể tự mình hoàn thành ý tưởng đó 4.3 Trên sở gì mà học sinh học tập môn lập trình Pascal, học sinh có thể sử dụng cách thành thạo các ngôn ngữ khác để hoàn thành tốt ứng dụng thực tế Bởi vì, ngôn ngữ Pascal có tính cấu trúc mạnh, có sở và nó đòi hỏi chương trình phải chặt chẽ, logic Đặc biệt, học chương trình con, học sinh có thể hiểu cách sâu sắc ngôn ngữ lập trình, nhìn nhận vấn đề cách sáng sủa hơn, chặt chẽ và là chương trình có thể giúp cho các em hoàn thành chương trình lớn vượt bài toán bình thường mà nội môn học đòi hỏi Chính vì vậy, việc gợi động cho học sinh việc dạy học chương trình là công việc quan trọng, đòi hỏi giáo viên cần phải nỗ lực tìm tòi, sáng tạo giúp cho học sinh nhìn nhận vấn đề cách tích cực hơn, sáng tạo và là giúp cho các em có thể yêu thích nhiều ngôn ngữ lập trình Pascal Với tất lý nêu trên, em định chọn đề tài này II Định hướng nghiên cứu Mục đích nghiên cứu Tạo động cho học sinh ý thức ý nghĩa các hoạt động sử dụng chương trình công việc lập trình Từ đó, học sinh có thể liên hệ , vận dụng sáng tạo vào giải các bài toán lập trình và các tình thực tế Nhiệm vụ nghiên cứu Qua việc nghiên cứu các vấn đề chương trình ngôn ngữ lập trình Pascal, các tài liệu phương pháp giảng dạy Từ đó, đưa các biện pháp có thể gợi động hoạt động cho học sinh thông qua các ví dụ cụ thể chương trình III Phương pháp nghiên cứu Nghiên cứu lý luận Trong nghiên cứu lý luận người ta dựa vào tài liệu sẵn có, lý thuyết đã khẳng định, thành tựu nhân loại trên lĩnh vực khác (3) Tâm lý học, Giáo dục học, Tin học, để xem xét vấn đề, tìm giải pháp hợp lý có sức thuyết phục vận dụng vào PPDH Tin học Người ta nghiên cứu kết thân chuyên ngành PPDH Tin học để kế thừa cái hay, phê phán và gạt bỏ cái dở, bổ xung và hoàn chỉnh nhận thức đã đạt Những hình thức thường dùng nghiên cứu lý luận là: - Phân tích tài liệu lý luận : Giúp chúng ta chọn đề tài, đề mục đích nghiên cứu, hình thành giả thuyết khoa học, xác định tư tưởng chủ đạo và đánh giá kiện Khi nghiên cứu lý luận, ta cần phân tích, tổng hợp, so sánh, khái quát để tìm ý Cái đây có thể là lý thuyết hoàn toàn mới, có thể là cái đan kết với cái cũ, có thể là tổng hợp nét riêng lẻ đã chứa cái cũ, nêu bật cái chất từ cái cũ, bổ xung, cụ thể hóa lý thuyết cũ - So sánh quốc tế : Giúp chúng ta lựa chọn, xây dựng phương án tác động giáo dục trên sở đánh giá, so sánh tài liệu, cách làm nước khác - Phân tích tiên nhiệm : Thường dựa vào yếu tố lịch sử, cách tiếp cận khác lý thuyết, cách định nghĩa khác khái niệm, để dự kiến quan niệm có thể có học sinh kiến thức Tin học Nó dùng để kiểm nghiệm tượng, quá trình có thỏa mãn tiêu chuẩn, yêu cầu, điều kiện đặt hay không Quan sát - điều tra Quan sát điều tra sử dụng rộng rãi nghiên cứu giáo dục Đó là phương pháp tri giác có mục đích tượng giáo dục nào đó để thu lượm số liệu, tài liệu, kiện cụ thể đặc trưng cho quá trình diễn biến tượng mà ta dự định khảo sát Chúng ta quan tâm đến chất lượng các mối quan hệ, các hoạt động, tình Điều tra giống quan sát chỗ cùng dựa vào và khai thác tượng có sẵn, không chủ động gây nên tác động sư phạm, quan sát thiên xuất phát từ dấu hiệu bên ngoài, còn điều tra có thể khai thác thông tin sâu kín từ bên trong, chẳng hạn cho làm bài kiểm tra đánh giá Quan sát - điều tra giúp chúng ta theo dõi tượng giáo dục theo trình tự thời gian, phát biến đổi số lượng, chất lượng gây tác động giáo dục Nó giúp ta thấy vấn đề thời cấp bách đòi hỏi phải nghiên cứu góp phần giải nhiệm vụ nghiên cứu Môi trường tự nhiên là nguồn cung cấp liệu trực tiếp cho ta Người nghiên cứu đến trực tiếp nơi nào đó mà họ quan tâm để quan sát và thu thập liệu, vì các hoạt động có thể hiểu tốt là môi trường tự nhiên, ngữ cảnh mà chúng xuất Quan sát - điều tra thực tiễn sư phạm, chẳng hạn thăm lớp dự giúp chúng ta nhận thức thực trạng dạy học Tin, phát vấn đề thời cấp bách cần nghiên cứu, giúp ta thu tài liệu sinh động và bổ ích cho nhiệm vụ nghiên cứu Theo mối quan hệ đối tượng quan sát - điều tra với người nghiên cứu thì có các dạng quan sát - điều tra trực tiếp, gián tiếp, công khai, kín đáo Theo dấu hiệu thời gian thì có quan sát - điều tra liên tục, gián đoạn Quan sát - điều tra cần có mục đích cụ thể (chẳng hạn để thấy hoạt động tích cực học sinh học), có nội dung cụ thể (chẳng hạn gây động và hướng đích giáo viên, số lượng học sinh giơ tay xin phát biểu, số lượng câu hỏi, chất lượng câu trả lời học sinh thể suy nghĩ sâu sắc hay hời hợt, tập trung chú ý thể qua hướng nhìn, cử chỉ, ) và có tiêu chuẩn đánh giá, đo lường các kết quan sát cụ thể (chẳng hạn nào đánh giá là học sinh hoạt (4) động tích cực, khá tích cực, kém tích cực) Các loại liệu thu thập nghiên cứu bao gồm văn ghi chép các vấn, các sổ ghi chép, ảnh, băng hình, ghi âm, phiếu điều tra, nhật ký, giúp ta dựng lại cách đầy đủ gì mà ta đã quan sát được, giúp ta lý giải vì họ lại nghĩ thế, họ lại làm vậy?, Trong quan sát - điều tra diễn biến thực tượng sư phạm, có người ta tình cờ phát kiện, tượng sư phạm ngoài dự kiến ban đầu Tổng kết kinh nghiệm Tổng kết kinh nghiệm thực chất là đánh giá và khái quát hóa kinh nghiệm đã thu thập hoạt động thực tiễn, từ đó phát vấn đề cần khẳng định để đưa áp dụng rộng rãi cần tiếp tục nghiên cứu hay loại bỏ Nó có nguồn gốc từ kinh nghiệm, mang tính khoa học, lĩnh hội, kiểm chứng từ quá trình hoạt động thực tiễn sinh động Bài học kinh nghiệm là cụ thể hóa cách sáng tạo tư tưởng, luận điểm, lý luận giáo dục đã vào sống Trong quá trình nghiên cứu tổng kết kinh nghiệm, có người ta khám phá mối liên hệ có tính quy luật tượng giáo dục Những kinh nghiệm cần đặc biệt chú ý là kinh nghiệm tiên tiến, kinh nghiệm thành công và kinh nghiệm lặp lại nhiều lần Kinh nghiệm giáo dục đơn vị tiên tiến có thể coi là dạng lý luận giáo dục đã kiểm chứng thực tiễn, tình huống, điều kiện cụ thể môi trường giáo dục Những bài học thành công cần đề cập với tư cách là liệu đối chiếu, so sánh làm rõ kinh nghiệm thành công Chúng cần xem xét cách khách quan, khoa học, biện chứng theo tính lịch sử vấn đề rút kết luận có tính thuyết phục, có độ Tin cậy cao Qua tổng kết kinh nghiệm, chúng ta có bài học kinh nghiệm hàm chứa tri thức, thông Tin, kỹ năng, giải pháp, biện pháp hướng và cách làm có giá trị, đem lại hiệu quả, chất lượng cao điều kiện đổi giáo dục đất nước Tổng kết kinh nghiệm phải có lý luận soi sáng, giải thích tính chất hợp lý, phù hợp với quy luật đã khẳng định thì có thể thoát khỏi kiện lộn xộn, kinh nghiệm vụn vặt, hời hợt không có tính phổ biến, loại bỏ yếu tố ngẫu nhiên, sâu vào chất vật, tượng, đạt tới kinh nghiệm có giá trị khoa học đích thực Chỉ đó tổng kết kinh nghiệm thật là phương pháp nghiên cứu khoa học hữu hiệu Những bài học kinh nghiệm, kết luận lý luận giáo dục góp phần bổ xung, làm cho lý luận giáo dục hoàn thiện hơn, mang tính thực tiễn cao hơn, tránh tình trạng lý luận suông Bài học kinh nghiệm giáo dục phải bảo đảm có khái quát định, mang tính khoa học với tính lý luận cụ thể và đặc biệt phải mang tính thực tiễn cao Bài học kinh nghiệm cần trình bày theo trình tự sau: - Tên bài học kinh nghiệm - Nêu bối cảnh xuất vấn đề mà giải dẫn đến bài học kinh nghiệm - Những kết đạt gắn với nhiệm vụ nghiên cứu - Hệ thống biện pháp đã vận dụng đạt kết cao - Đánh giá tác dụng, hiệu bài học kinh nghiệm, đưa nhận định có tính khái quát bài học mang tính lý luận Tổng kết kinh nghiệm không đơn giản là trình bày lại công việc đã làm và kết đã đạt Là phương thức nghiên cứu khoa học, nó phải tiến hành theo quy trình nghiêm túc, thường là sau: (5) Liệt kê kiện, mô tả quá trình Tước bỏ yếu tố ngẫu nhiên làm bộc lộ cái chất Phát mối quan hệ nhân Dùng lý luận soi sáng Dùng thực nghiệm kiểm chứng Phát cần đảm bảo mặt định tính và phần nào mặt định lượng, tức là phải thu thập đủ liệu, tư liệu kiện, việc làm, các hoạt động đã tiến hành đạt kết cao Trong đó cần chú trọng đến liệu, tư liệu, thông tin mà nội dung chúng phản ánh mối quan hệ kết với nguyên nhân và biện pháp Những bước quá trình phát có thể là: - Nêu mục đích yêu cầu phát - Triển khai hình thức phát - Thẩm định, bổ sung thông tin - Tiến hành xử lý thông tin Khi tiến hành xử lý thông tin phải vào cái có thực thu qua quá trình khảo sát, phát thu thập Dùng lý luận để phân tích các tư liệu, số liệu rút từ thực tiễn Rút bài học kinh nghiệm dạng khái quát mang tính lý luận hay khẳng định mặt lý luận và thực tiễn Trong quá trình xử lý, cần áp dụng thao tác tư khoa học, trừu tượng hóa các yếu tố ngẫu nhiên, tìm tính đặc thù, tất yếu mà chúng đã thể bối cảnh, hoàn cảnh cụ thể Phần cuối sơ đồ cho thấy rõ mối liên hệ tổng kết kinh nghiệm với nghiên cứu lý luận và thực nghiệm giáo dục Thực nghiệm giáo dục Thực nghiệm giáo dục cho phép ta tạo nên tác động sư phạm vào quá trình dạy học và giáo dục Những tác động này xảy điều kiện có thể khống chế, điều chỉnh, thay đổi được, ít chịu ảnh hưởng yếu tố ngẫu nhiên khác, từ đó xác định và đánh giá kết tác động đó Đặc trưng thực nghiệm giáo dục là nó không diễn cách tự phát mà là điều khiển nhà nghiên cứu Nhà nghiên cứu tổ chức quá trình giáo dục cách có ý thức, có mục đích, có kế hoạch, tự giác thiết lập và thay đổi điều kiện thực nghiệm cho phù hợp với ý đồ nghiên cứu mình Trong điều kiện định, thực nghiệm giáo dục cho phép ta khẳng định bác bỏ giả thuyết khoa học đã đề Trong thực nghiệm giáo dục ta cần giải thích rõ kết quả, làm rõ nguyên nhân lý luận phân tích quá trình thực nghiệm Thực nghiệm giáo dục là phương pháp nghiên cứu có hiệu lực, song thực nó công phu, khó khăn Khó khăn là chúng ta thực tác động lên (6) người cụ thể, kết thu phụ thuộc vào nhiều yếu tố tâm lý Những kết thực nghiệm thường có ý nghĩa xác suất, phải xử lý phương pháp thống kê Để thống kê cho kết Tin cậy, cần phải đo lường, định lượng các dấu hiệu, đó là việc làm không dễ Vì ta không nên lạm dụng phương pháp thực nghiệm giáo dục Khi nghiên cứu tượng giáo dục, trước hết có thể dùng phương pháp không đòi hỏi quá nhiều công sức, ví dụ nghiên cứu lý luận, quan sát, tổng kết kinh nghiệm Chỉ chỗ các phương pháp này chưa đủ sức thuyết phục, số khâu mấu chốt, ta dùng thực nghiệm giáo dục Thông thường phương pháp sử dụng kết hợp với nhau, làm cho kết thu vừa có tính lý luận, vừa có tính thực tiễn Chẳng hạn, qua nghiên cứu lý luận, quan sát, tổng kết kinh nghiệm, người ta đề xuất giả thuyết khoa học đem thực nghiệm giáo dục để kiểm nghiệm Sau đó, lại dùng lý luận để phân tích kết quả, xác định nguyên nhân và khái quát hóa lên trình độ cao hơn, tổng quát điều đã đạt PHẦN II NỘI DUNG ĐỀ TÀI GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON Gợi động là làm cho học sinh có ý thức ý nghĩa hoạt động và đối tượng hoạt động Gợi động nhằm làm cho mục tiêu sư phạm biến thành mục tiêu cá nhân học sinh, không phải là vào bài, đặt vấn đề cách hình thức Ở lớp dưới, thầy giáo thường dùng cách cho điểm, khen chê, thông báo kết học tập cho gia đình, để gợi động Càng lên lớp cao, cùng với trưởng thành học sinh, với trình độ nhận thức và giác ngộ chính trị ngày càng (7) cao cách gợi động xuất phát từ nội dung hướng và nhu cầu nhận thức, nhu cầu đời sống, trách nhiệm xã hội ngày càng trở nên quan trọng Gợi động không phải là việc làm ngắn ngủi lúc bắt đầu dạy tri thức nào đó, mà phải xuyên suốt quá trình dạy học Vì vậy, có thể phân biệt gợi động mở đầu, gợi động trung gian và gợi động kết thúc Trong đề tài này em xin đưa số giải pháp gợi động hoạt động việc giảng dạy chương trình ngôn ngữ lập trình Pascal theo giai đoạn trên CHƯƠNG I: GỢI ĐỘNG CƠ MỞ ĐẦU Để Gợi động mở đầu chúng ta có thể gợi động xuất phát từ thực tế xuất phát từ nội Tin học Việc xuất phát từ thực tế không có tác dụng gợi động mà còn góp phần hình thành giới quan vật biện chứng Nhờ đó, học sinh nhận rõ việc nhận thức và cải tạo giới đã đòi hỏi phải suy nghĩ và giải vấn đề Tin học nào, tức là nhận rõ Tin học bắt nguồn từ nhu cầu đời sống thực tế Vì vậy, chúng ta cần khai thác triệt để khả để gợi động xuất phát từ thực tế Tuy nhiên, để gợi động xuất phát từ thực tế cần chú ý các điều kiện sau: - Vấn đề đặt phải đảm bảo tính chân thực, đương nhiên có thể đơn giản hóa vì lý sư phạm trường hợp cần thiết - Việc nêu vấn đề không đòi hỏi quá nhiều tri thức bổ xung - Con đường từ lúc nêu vấn đề giải vấn đề càng ngắn càng tốt Mặc dù Tin học phản ánh thực tế cách toàn và nhiều tầng Tuy nhiên không phải nội dung nào, hoạt động nào có thể gợi động xuất phát từ thực tế Vì vậy, ta còn tận dụng khả gợi động xuất phát từ nội Tin học Gợi động từ nội Tin học là nêu vấn đề Tin học xuất phát từ nhu cầu Tin học, từ việc xây dựng khoa học Tin hoc, từ phương thức tư và hoạt động Tin học Gợi động theo cách này là cần thiết vì: - Việc gợi động xuất phát từ thực tế không phải thực - Việc gợi động từ nội Tin học giúp học sinh hình dung đúng hình thành và phát triển Tin học cùng với đặc điểm nó và có thể tiến tới hoạt động Tin học cách độc lập Thông thường bắt đầu nội dung lớn, chẳng hạn phân môn hay chương ta nên cố gắng xuất phát từ thực tế Còn bài hay phần bài thì cần tính tới khả gợi động từ nội Tin học Đó là cách sau đây: 1) Đáp ứng nhu cầu xóa bỏ hạn chế Xét bài toán : “Viết chương trình cho máy tính chu vi, diện tích và đường chéo ba hình chữ nhật theo hai kích thước hình Trong đó: - Hình thứ có hai kích thước là a1, a2 - Hình thứ hai có hai kích thước là b1, b2 - Hình thứ ba có hai kích thước là a1+b1 và a2*b2” Var a1, b1, a2, b2, c1, c2, c3, d1, d2, d3, m1, m2, m3 : Real; Begin Writeln('Nhap hai canh cua hinh chu nhat thu nhat:'); Write('a1 = '); Readln(a1); (8) Write('b1 = '); Readln(b1); Writeln('Nhap hai canh cua hinh chu nhat thu hai:'); Write('a2 = '); Readln(a2); Write('b2 = '); Readln(b2); c1 := * (a1 + b1); c2 := * (a2 + b2); c3 := * ((a1 + b1) + (a2 * b2)); d1 := a1 * b1; d2 := a2 * b2; d3 := (a1 + b1) * (a2 * b2); m1 := sqrt(a1 * a1 + b1 * b1); m2 := sqrt(a2 * a2 + b2 * b2); m3 := sqrt(sqr(a1 + b1) + sqr(a2 * b2)); Writeln('Hinh chu nhat thu nhat:'); Writeln('Chu vi bang : ',c1:0:2); Writeln('Dien tich bang : ',d1:0:2); Writeln('Duong cheo bang: ',m1:0:2); Writeln('Hinh chu nhat thu hai:'); Writeln('Chu vi bang : ',c2:0:2); Writeln('Dien tich bang : ',d2:0:2); Writeln('Duong cheo bang: ',m2:0:2); Writeln('Hinh chu nhat thu ba:'); Writeln('Chu vi bang : ',c3:0:2); Writeln('Dien tich bang : ',d3:0:2); Writeln('Duong cheo bang: ',m3:0:2); Readln End Chương trình trên để thực yêu cầu đề bài, chúng ta phải viết viết lại ba dòng liên tiếp tính chu vi, diện tích và đường chéo hình chữ nhật Giả sử phải tính đến n hình chữ nhật thì vấn đề thực là phức tạp Trong bài toán trên ta còn chưa có phần kiểm tra điều kiện nhập vào hình Nếu có thêm điều kiện này, chắn chương trình còn dài Vấn đề đặt là: làm nào có thể xóa bỏ hạn chế này? Ở đây, chúng ta có thể hướng dẫn cho học sinh sử dụng chương trình để khắc phục hạn chế đó Thay vì phải viết nhiều lần lệnh nhập, tính tính lại cho hình ta có thể viết thủ tục: Thủ tục nhập hai cạnh hình chữ nhật Thủ tục Tính ba giá trị cho hình Var a1, b1, a2, b2: Real; Procedure Nhap(Var x, y: Real; i: Byte); Begin Writeln('Nhap hai kich thuoc cua hinh chu nhat thu ',i,':'); Repeat Write('Canh thu nhat: '); Readln(x); Write('Canh thu hai : '); Readln(y); If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!'); Until (x > 0) And (y > 0); End; Procedure Tinh(a, b: Real; k: Byte); Begin Writeln('Hinh chu nhat thu ',k,':'); Writeln('Chu vi bang : ',2 * (a + b):0:2); Writeln('Dien tich bang : ',a * b:0:2); (9) Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2); End; Begin Nhap(a1, b1, 1); Nhap(a2, b2, 2); Tinh(a1, b1, 1); Tinh(a2, b2, 2); Tinh(a1 + b1, a2 * b2, 3); Readln End 2) Hướng tới tiện lợi hợp lý hóa công việc Xét bài toán sau: “Nhập vào dãy n số nguyên lớn Viết màn hình tất các số dãy thỏa mãn điều kiện là số nguyên tố” Var A: Array[1 100] Of Integer; k,n: Integer; Function NgTo(a: Integer):Boolean; Var u: Integer; Begin NgTo:=False; For u := To Trunc(sqrt(a)) Do If a mod u = Then Exit; NgTo := a > 1; End; Begin Write('Nhap so phan tu: '); Readln(n); Writeln('Nhap cac phan tu cua day Chu y: A[k] >= 2'); For k := to n Begin Repeat Write('A[',k,'] = ');Readln(A[k]); If A[k] < Then Writeln('Ban can nhap A[k] > Vui long nhap lai!'); Until A[k] >= 2; End; Writeln('Cac so nguyen to cua day so tren la:'); For k := to n If NgTo(A[k]) Then Write(A[k]:6); Readln End Từ chương trình trên chúng ta có thể giúp cho học sinh thấy việc sử dụng chương trình có thể hợp lý hóa, tiết kiệm công sức lập trình Đồng thời, chương trình giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Cụ thể là với bài toán trên chúng ta có thể sửa chữa thành bài toán: “Viết màn hình tất các số dãy thỏa mãn điều kiện là hợp số” hai câu lệnh: - Dòng lệnh Writeln(‘Cac so nguyen to cua day so tren la:’); Sửa thành: Writeln(‘Cac so la hop so cua day so tren la:’); - Dòng lệnh : If NgTo(A[k]) Then Write(A[k]:6) ta thay dòng lệnh If Not NgTo(A[k]) Then Write(A[k]:6) 3) Chính xác hóa khái niệm Có khái niệm mà học sinh đã biết bài riêng lẻ chưa thể đưa nhận xét, kết luận chính xác liên quan tới khái niệm đó; tới thời điểm nào đó có đủ điều kiện thì chúng ta có thể gợi lại vấn đề và giúp học sinh chính xác hóa khái niệm đó Chẳng hạn, ta cần chính xác hóa khái niệm sử dụng tham biến (10) chương trình Sau học cách sử dụng tham trị, chúng ta có thể yêu cầu học sinh làm bài tập sau: “Viết thủ tục nhập vào số đo bán kính đường tròn Sau đó tính chu vi và diện tích đường tròn đó” Var r1, r2, r3: Real; Procedure Nhap( r: Real; k:Byte); Begin Repeat Write('Nhap ban kinh cua duong tron thu ',k,': '); Readln(r); If r <= Then Writeln('Nhap lai!'); Until r > 0; End; Begin Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3); Writeln('Duong tron Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang: ',pi * sqr(r1):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r2:6:1,' Dien tich bang:',pi * sqr(r2):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r3:6:1,' Dien tich bang:',pi * sqr(r3):6:1); Readln End Chúng ta có thể yêu cầu học sinh thực thi chương trình trên và chạy thử Học sinh phát là kết chu vi và diện tích ba đường tròn Vấn đề đặt là: Chương trình sai chỗ nào? Lúc này giáo viên có thể khẳng định phân biệt tham biến và tham trị, các giá trị tham biến lưu giữ ngoài chương trình con, còn giá trị tham trị lưu giữ thực chương trình con, khỏi chương trình nó không còn lưu giữ giá trị đó Điều này giúp cho chúng ta chính xác hóa khái niệm tham biến và tham trị cho học sinh Chương trình trên cần sửa lại sau: Var r1, r2, r3: Real; Procedure Nhap(Var r: Real; k:Byte); Begin Repeat Write('Nhap ban kinh cua duong tron thu ',k,': '); Readln(r); If r <= Then Writeln('Nhap lai!'); Until r > 0; End; Begin Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3); Writeln('Duong tron Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang: ',pi * sqr(r1):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r2:6:1,' Dien tich bang:',pi * sqr(r2):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r3:6:1,' Dien tich bang:',pi * sqr(r3):6:1); Readln End 4) Hướng tới hoàn chỉnh hệ thống (11) Để có thể giúp học sinh nắm bắt các kiến thức chương trình cách có hệ thống Sau học xong chương trình con, chúng ta có thể đưa sơ đồ sau: Thủ tục Không Có tham chiếu Chương trình Tham trị Hàm Có tham chiếu Tham biến Tiếp theo, để giúp cho học sinh nhìn thấy vấn đề có hệ thống các rõ ràng hơn, đặc biệt là giúp cho học sinh hiểu rõ các vấn đề chương trình Chẳng hạn đâu là biến toàn cục, đâu là biến địa phương, nào dùng tham biến, nào dùng tham trị, các chương trình gọi lẫn nào?, Chúng ta có thể đưa ví dụ sau: “Viết chương trình nhập vào số cạnh n tam giác, sau đó tính diện tích tam giác vừa nhập và tổng diện tích tất các tam giác đó” Var a:array[1 3,1 100] Of Real; {Bien toan cuc} Function Ktra(x, y, z: Real): Boolean; {Ham co tham tri} Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real; i:Byte); {Thu tuc co tham bien} Begin Writeln('Nhap vao ba canh cua tam giac thu ',i,': '); Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Function DT(m, n, p:Real): Real; {Ham co tham tri} Var d: Real; {Bien cuc bo} Begin d := (m + n + p) / 2; DT := sqrt(d * (d - m) * (d - n) * (d - p)); End; Procedure Tinh; {Thu tuc khong co tham chieu} Var k, n, j: Integer; tong: Real; {Bien cuc bo} Begin Write('Nhap so tam giac: ');Readln(n); tong:=0; For k:=1 to n Nhap(a[1,k], a[2,k], a[3,k], k); For k:=1 to n Begin Tong := tong + DT(a[1, k], a[2,k], a[3,k]); Writeln('Dien tich cua tam giac thu ',k,': ',DT(a[1, k], a[2, k], a[3, k]):6:1); End; (12) Writeln('Tong dien tich cua ',n,' tam giac la: ',tong:6:1); End; Begin Tinh; Readln End 5) Lật ngược vấn đề Xuất phát, chúng ta cho học sinh thực bài toán sau: “Viết chương trình đổi xâu ký tự thành chữ HOA” Var x:String; Procedure Doi(x: String); Var d, i:Integer; Begin d := 0; Write('Doi sang chu hoa: '); For I := to Length(x) Do Write(Upcase(x[i])); End; Begin Write('Nhap xau: '); Readln(x); Doi(x); Readln End Ngược lại, chúng ta đặt câu hỏi: Nếu ta cần đổi xâu ký tự thành xâu chữ thường thì làm nào? Học sinh đã biết bảng mã ASCII ký tự viết hoa A, B, C, , Z mã hóa các số từ 65 đến 90 Còn các ký tự thường a, b, c, z mã hóa các số từ 97 đến 122 Ta thấy rõ ký tự viết hoa và viết thường chữ cách 32 đơn vị Chính vì vậy, ta có thể sử dụng quy luật này để đổi xâu ký tự viết HOA thành xâu ký tự viết thường cách dùng vòng For chạy từ đầu xâu đến cuối xâu và đổi ký tự thành mã ASCII, gặp ký tự viết hoa, ta cộng mã ASCII nó thêm 32 đơn vị Chương trình sau: Var x: String; Procedure Doi(x: String); Var d, i:Integer; Begin d := 0; Write('Doi sang chu thuong: '); For i := to Length(x) Do Begin d := ord(x[i]); If (d >= 65) And (d <= 90) Then d := d + 32; Write(chr(d)); End; End; Begin Write('Nhap xau: '); Readln(x); Doi(x); Readln End (13) 6) Xét tương tự Xuất phát từ bài toán: “Viết chương trình tìm độ dài đường cao tam giác biết độ dài cạnh tam giác đó” Var a, b, c, S: Real; Function Ktra(x, y, z: Real): Boolean; Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var m, n, p: Real); Begin Repeat Write('Nhap dai canh thu nhat: '); Readln(m); Write('Nhap dai canh thu hai : '); Readln(n); Write('Nhap dai canh thu ba : '); Readln(p); If Not Ktra(m, n, p) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Function DT :Real; Var d: Real; Begin d := (a + b + c) / 2; DT := sqrt(d * (d - a) * (d - b) * (d - c)); End; Procedure Dcao(m: Real); Begin Writeln('Duong cao qua canh ', m:0:2,' la: ',2 * S / m:0:2); End; Begin Nhap(a, b, c); S:=DT; DCao(a); DCao(b); DCao(c); Readln End Tương tự, chúng ta yêu cầu học sinh giải bài toán sau: “Viết chương trình tìm độ dài đường trung tuyến tam giác biết ba cạnh tam giác” Var a, b, c, S: Real; Function Ktra(x, y, z: Real): Boolean; Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real); Begin Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); (14) End; Procedure Trung_Tuyen; Begin Writeln('Trung tuyen qua canh ',a:0:2,' la: ',0.5 * sqrt(2 * (b * b + c * c) - a * a):0:2); Writeln('Trung tuyen qua canh ',b:0:2,' la: ',0.5 * sqrt(2 * (a * a + c * c) - b * b):0:2); Writeln('Trung tuyen qua canh ',c:0:2,' la: ',0.5 * sqrt(2 * (b * b + a * a) - c * c):0:2); End; Begin Nhap(a, b, c); Trung_Tuyen; Readln End 7) Khái quát hóa Xuất phát từ bài toán: “Tìm ước chung lớn số ” Var a, b: Integer; Begin Repeat Writeln('Nhap vao so:'); Readln(a,b); If (a<=0) Or (b<=0) then Writeln(‚Nhap lai!’); Until (a>0) And (b>0); Write('UCLN(',a,',',b,') = '); While a <> b Begin If a > b Then a := a - b Else b := b - a; End; Write(a); Readln End Tiếp theo, Chúng ta yêu cầu học sinh: “Sử dụng chương trình để tìm ước chung lớn ba số ” Đến đây, để viết hàm tính ước chung lớn hai số, chúng ta nên hướng dẫn học sinh sử dụng thuật toán Ơclit để viết chương trình nhằm tăng tốc độ tính toán Var a, b, c, tam: Integer; Function UCLN(Var x, y: Integer): Integer; Var tam: Integer; Begin While y<>0 Begin tam := x mod y; x := y; y := tam; End; UCLN := x; End; Begin Writeln('Nhap ba so: '); Readln(a, b, c); Write('UCLN(',a,',',b,',',c,') = '); tam := UCLN(a, b); Write(UCLN(tam, c)); Readln End (15) Sau thực việc sử dụng chương trình để tìm ước chung lớn ba số thành công Khái quát: chúng ta yêu cầu học sinh giải bài toán: “Viết chương trình tìm ước chung lớn n số ” Để thực hiện, ta có thể hướng dẫn học sinh dùng thủ tục tìm ước chung lớn hai số Sau đó, dùng biến tạm là u để lưu giữ giá trị đầu tiên dãy số, ta xác định ước chung lớn u với giá trị dãy từ vị trí thứ hai Cuối cùng, ước chung lớn dãy chính là giá trị u Var A: Array[1 100] Of Integer; a1, u, i, n: Integer; Procedure UCLN(Var x, y: Integer); Var tam, tg: Integer; Begin While y<>0 Begin tam := x mod y; x := y; y := tam; End; End; Begin Write('Ban can tinh UCLN cua bao nhieu so? Nhap: '); Readln(n); For i := to n Begin Write('So thu ',i,': '); Readln(A[i]); End; Write('UCLN('); For i := to n-1 Write(a[i],','); Write(a[n],') = '); u := a[1]; For i:= to n UCLN(u, a[i]); Write(u); Writeln; Readln End 8) Tìm liên hệ và phụ thuộc Nói riêng cách gợi động xuất phát từ phương thức tư và hoạt động phổ biến Tin học xét tương tự, khái quát hóa, xét liên hệ và phụ thuộc, quen thuộc phương thức này không là kết mà còn là điều kiện việc gợi động theo cách đó Thật vậy, việc xét tương tự, việc xét khái quát hóa, việc xét liên hệ và phụ thuộc có tác dụng gợi động người học sinh đã quen thuộc với cách xem xét này, đã trải nghiệm thành công nhiều lần là việc theo cách đó Để thực điều này dạy học cho học sinh chương trình Chúng ta có thể yêu cầu học sinh giải bài toán sau: “Có cái túi chứa tối đa D (kg) với n đồ vật, Cần chọn các đồ vật cho giá trị túi là lớn Biết đồ vật i có khối lượng là W[i] và giá trị là C[i] đồng (i = 1, 2, , n ” Var C, W:Array[1 100] Of Integer; CW: Array[1 100] Of Real; n, i, j, d, d1, gt, t: Integer; Procedure Nhap; Begin Write('Nhap so luong cac vat: '); Readln(n); (16) Write('Nhap khoi luong cua tui: '); Readln(D); D1:=D; Writeln('Nhap cac gia tri cua C va W: '); For i:=1 to n Begin Write('C[',i,'] = '); Readln(C[i]); Write('W[',i,'] = '); Readln(W[i]); CW[i] := C[i] / W[i]; End; End; Procedure Sapxep; Var t1, t2: Integer; t3: Real; Begin Nhap; For i := to n - For j := n downto i + Begin If CW[j] > CW[j-1] Then Begin t1 := C[j]; C[j] := C[j-1]; C[j-1] := t1; t2 := W[j]; W[j] := W[j-1]; W[j-1] := t2; t3 := CW[j]; CW[j] := CW[j-1]; CW[j-1] := t3; End; End; End; Procedure Luachon; Var temp: Integer; Begin Sapxep; i := 1; gt := 0; t := 0; While (i <= n) And (d > 0) And (W[i] > 0) Do Begin Temp := d Div W[i]; {So vat duoc chon cua W[i]} If temp > Then Begin Writeln('Do vat C[',i,'] = ',C[i],' va W[',i,'] = ',W[i],' duoc chon co so luong ',temp); d := d - temp * W[i]; t := t + W[i] * temp; gt := gt + temp * C[i]; End; i := i + 1; End; Writeln('Gia tri toi uu co the dat duoc la:'); Writeln('Khoi luong vat dung ',t,'.tui dung duoc ',d1,' Con thua ',d1 - t); End; Begin Luachon; Readln End CHƯƠNG II: GỢI ĐỘNG CƠ TRUNG GIAN 1) Hướng đích Xuất phát từ bài toán giải phương trình bậc hai: Var a, b, c, d: Real; Begin Writeln('Nhap he so cua phuong trinh:'); Write('a = '); Readln(a); Write('b = '); Readln(b); (17) Write('c = '); Readln(c); If a = Then If b = Then If c = Then Writeln('Phuong trinh co vo so nghiem!') Else Writeln('Phuong trinh vo nghiem!') Else Writeln('Phuong trinh co mot nghiem: x = ',-c/b:0:1) Else Begin d := b * b - * a * c; If d < Then Writeln('Phuong trinh vo nghiem!') Else If d = Then Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-b / (2 * a):0:1) Else Begin Writeln('Phuong trinh co hai nghiem phan biet:'); Writeln('x1 = ',(-b + sqrt(d)) / (2 * a):0:1); Writeln('x2 = ',(-b - sqrt(d)) / (2 * a):0:1); End; End; Readln End Mục tiêu là chia bài toán ban đầu thành bài toán nhỏ độc lập Chẳng hạn:Ta sử dụng chương trình thành hai bài toán : T1: Giải phương trình bậc T2: Giải phương trình bậc hai Var a, b, c: Real; Procedure ptb1(m,n:Real); Begin If m = Then If n = Then Writeln('Phuong trinh co vo so nghiem!') Else Writeln('Phuong trinh vo nghiem!') Else Writeln('Phuong trinh co mot nghiem: x = ',-n/m:0:1) End; Procedure ptb2(x, y, z: Real); Var d: Real; Begin D := y * y - * x * z; If d < Then Writeln('Phuong trinh vo nghiem!') Else If d = Then Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-y / (2 * x):0:1) Else Begin Writeln('Phuong trinh co hai nghiem phan biet:'); Writeln('x1 = ',(-y + sqrt(d)) / (2 * x):0:1); Writeln('x2 = ',(-y - sqrt(d)) / (2 * x):0:1); End; End; Begin Writeln('Nhap he so cua phuong trinh:'); Write('a = '); Readln(a); Write('b = '); Readln(b); Write('c = '); Readln(c); If a=0 Then ptb1(b, c) Else ptb2(a, b, c); Readln End (18) Ta lại thấy bài toán trên việc giải phương trình bậc hai có ba trường hợp xảy Ta nên chia tiếp thành bài toán nhỏ sau: T1: Giải phương trình bậc T2:  > T3:  = T4:  < T5: Giải phương trình bậc hai Var a, b, c, d: Real; Procedure ptb1(m, n : Real); Begin If m = Then If n = Then Writeln('Phuong trinh co vo so nghiem!') Else Writeln('Phuong trinh vo nghiem!') Else Writeln('Phuong trinh co mot nghiem: x = ',-n / m:0:1) End; Procedure denta_am; Begin Writeln('Phuong trinh vo nghiem!'); End; Procedure denta_0(p, q: Real); Begin Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-q / (2 * p):0:1) End; Procedure denta_duong(i, j: Real); Begin Writeln('Phuong trinh co hai nghiem phan biet:'); Writeln('x1 = ',(-j + sqrt(d)) / (2 * i):0:1); Writeln('x2 = ',(-j - sqrt(d)) / (2 * i):0:1); End; Procedure ptb2(x, y, z: Real); Begin d := y * y - * x * z; If d < Then denta_am Else If d = Then denta_0(x, y) Else denta_duong(x, y); End; Begin Writeln('Nhap he so cua phuong trinh:'); Write('a = '); Readln(a); Write('b = '); Readln(b); Write('c = '); Readln(c); If a = Then ptb1(b, c) Else ptb2(a, b, c); Readln End 2) Quy lạ quen Xét bài toán : Tính k Cn Học sinh đã biết công thức : Cnk = n! Bài k ! (n − k) ! toán này ta quy bài toán quen thuộc là tính n! Ở đây chúng ta cần lưu ý với học sinh rằng: Để tính Cnk ta cần xây dựng chương trình tính n! sau đó, ta tìm Cnk (19) công thức trên Tuy nhiên, cần phải xây dựng chương trình Nhap để tránh việc người sử dụng nhập các số âm và nhập k > n Var k, n: Integer; C:Real; Procedure Nhap; Begin Repeat Write('Nhap k = '); Readln(k); Write('Nhap n = '); Readln(n); If (k < 0) Or (n < 0) Or (k > n) Then Writeln('Nhap lai!'); Until (k > 0) And (n > 0) And (k < n); End; Function GT(a:Integer): Integer; Var kq, i:Integer; Begin kq:=1; For i:=1 to a kq:=kq * i; GT:=kq; End; Begin Nhap; C := GT(n) / (GT(k) * GT(n - k)); Writeln('C = ', C:0:0); Readln End 3) Xét tương tự Xuất phát từ bài toán: “Tính n! thuật toán đệ quy” Var n: Integer; Function GT(a:Integer): Real; Begin If a = Then GT:=1 Else GT:=GT(a - 1) * a; End; Begin Write('Nhap n = '); Readln(n); Writeln(n,'! = ', GT(n):0:0); Readln End Tương tự, chúng ta yêu cầu học sinh thực giải bài toán: “Tính an thuật toán đệ quy” Var a, n: Integer; Function Mu(x:Integer; y:Integer):Real; Var T: Real; Begin If y = Then Mu:=1 Else Begin Mu:=Mu(x, y - 1) * x; End; End; Begin (20) Write('Nhap a = '); Readln(a); Write('Nhap n = '); Readln(n); Writeln(a,' mu ',n,' = ',Mu(a , n):0:0); Readln End 4) Khái quát hóa Xuất phát từ bài toán: “Sắp xếp ba số a, b, c theo thứ tự tăng dần” Var a,b,c: Real; Procedure Sapxep(Var x, y, z: Real); Var tg: Real; Begin If x > y Then Begin tg := x; x := y; y := tg; End; If y > z Then Begin tg := y; y := z; z := tg; End; If x > y Then Begin tg := x; x := y; y := tg; End; End; Begin Writeln('Nhap vao ba so: '); Write('So thu nhat: '); Readln(a); Write('So thu hai : '); Readln(b); Write('So thu ba : '); Readln(c); Sapxep(a, b, c); Writeln('Ba so sau sap xep la:'); Write(a:6:0, b:6:0, c:6:0); Readln End Ở đây chúng ta cần lưu ý với học sinh : lệnh gán nhận giá trị thì giá trị cũ Vì mà trước thực lệnh gán x := y để máy nhận giá trị b ta phải gửi giá trị cũ x vào biến tg Tại lệnh thứ ba lại giống lệnh thứ nhất? đó là vì x, y, z, tg là các địa lưu trữ giá trị Những giá trị này bị thay đổi qua lệnh gán Địa biến thì không đổi, nội dung biến thì đã thay đổi thực lệnh gán Tiếp theo, chúng ta có thể nêu câu hỏi: Khái quát, phải xếp n số theo thứ tự tăng dần ta phải làm nào? Ta có chương trình sau: Var a: Array[1 100] Of Real; i,j,n: Integer; Procedure Doicho(Var x,y:Real); Var tg:Real; Begin Tg := x; x := y; y := tg; End; Procedure Sapxep; Begin For i := to n - For j := i + to n (21) If a[i] > a[j] Then Doicho(a[i], a[j]); End; Begin Write('Nhap so phan tu cua day so: '); Readln(n); For i := to n Begin Write('So thu ',i,': '); Readln(a[i]); End; Sapxep; Writeln('Day so sau sap xep la:'); For i := to n Write(a[i]:6:0); Readln End 5) Xét biến thiên và phụ thuộc Xét bài toán sau : “Viết chương trình cho máy nhập vào cạnh tam giác Xét xem ba số đó có phải là ba cạnh tam giác hay không? có thì tam giác đó là tam giác có ba góc nhọn hay tam giác vuông hay tam giác tù? ” Trước hết, học sinh phải kiểm tra ba số thực phải thỏa mãn điều kiện là ba số đo tam giác Tức là số phải nhỏ tổng hai số còn lại (điều này xảy với ba số) Sau đó, chúng là ba số đo ba cạnh tam giác thì dạng tam giác phụ thuộc vào bình phương cạnh lớn nhỏ hay hay lớn tổng hai bình phương hai cạnh còn lại mà nó là tam giác có ba góc nhọn hay tam giác vuông hay tam giác tù Var p,q,r: Real; Function Ktra(x, y, z: Real): Boolean; Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real); Begin Writeln('Nhap vao ba canh cua tam giac: '); Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Procedure DangTG(m, n, p: Real); Var tg: Real; Begin If m < n Then Begin tg := n; n := m; m := tg; End; If m < p Then Begin tg := p; p := m; m := tg; End; m := sqr(m); n := sqr(n); p := sqr(p); If m < n + p Then Writeln('la tam giac co ba goc nhon!') Else If m = n + p Then Writeln('La tam giac vuong!') Else Writeln('La tam giac co mot goc tu!'); (22) End; Begin Nhap(p, q, r); DangTG(p, q, r); Readln End CHƯƠNG III: GỢI ĐỘNG CƠ KẾT THÚC Gợi động kết thúc có tác dụng nâng cao tính tự giác hoạt động học tập học sinh các cách gợi động khác Mặc dù nó không có tác dụng kích thích nội dung đã qua hoạt động đã thực hiện, nó góp phần gợi động thúc đẩy hoạt động nói chung và nhiều việc gợi động kết thúc trường hợp này lại là chuẩn bị gợi động cho trường hợp tương tự sau này Trong thực tế hoạt động dạy học, nhiều từ đầu giải vấn đề, ta chưa thể làm rõ lại học nội dung này, lại thực hoạt động Những câu hỏi này phải đợi mãi sau giải đáp giải đáp trọn vẹn Như vậy, ta đã gợi động kết thúc, nhấn mạnh hiệu nội dung hoạt động đó với việc giải vấn đề đặt Xét bài toán sau: “Lập chương trình cho máy tính tìm các đường trung tuyến tam giác biết số đo ba cạnh là a, b, c nhận vào từ bàn phím” Trong bài toán này chúng ta yêu cầu học sinh chia thành nhiều bài toán nhỏ độc lập Cụ thể là: Var a, b, c, S: Real; Function Ktra: Boolean; Begin Ktra := (a < b + c) And (b < a + c) And (c < a + b); End; Procedure Nhap; Begin Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra; End; Procedure Trung_Tuyen(m, n, p: Real); Begin Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5 * sqrt(2* (n * n + p * p) - m * m):0:2); End; Procedure BaTT; Begin Trung_tuyen(a, b, c); Trung_tuyen(b, a, c); Trung_tuyen(c, b, a); End; Begin Nhap; BaTT; (23) Readln End Sau chương trình đã chạy thông suốt, ta gọi lại chương trình và cho học sinh thấy bài toán này là tính các đường trung tuyến tam giác nên các hàm Ktra, thủ tục Nhap, thủ tục BaTT không có tham chiếu Việc sử dụng chương trình này đề cập đến với tham chiếu bài toán cần tính các đường trung tuyến nhiều tam giác mà cách xác định ba cạnh tam giác có thể khác Để thực ý định trên, ta yêu cầu học sinh giải bài toán sau: “Lập trình cho máy tính in lên màn hình các đường trung tuyến tam giác theo độ dài ba cạnh tam giác đó - Tam giác thứ có độ dài ba cạnh là a1, b1, c1 - Tam giác thứ hai có độ dài ba cạnh là a2, b2, c2 - Tam giác thứ ba có độ dài ba cạnh là a1 + a2, b1 + b2, c1 + c2” Var a1, b1, c1,a2, b2, c2, S: Real; Function Ktra(x, y, z: Real): Boolean; Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real; k: Byte); Begin Writeln('Tam giac thu ',k,':'); Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Procedure Trung_Tuyen(m, n, p: Real); Begin Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5* sqrt(2* (n * n + p * p) - m * m):0:2); End; Procedure BaTT(a, b, c:Real; i:Byte); Begin Writeln('Do dai ba trung tuyen cua tam giac thu ',i,':'); Trung_tuyen(a, b, c); Trung_tuyen(b, a, c); Trung_tuyen(c, b, a); End; Begin Nhap(a1, b1, c1, 1); Nhap(a2 ,b2, c2, 2); BaTT(a1, b1, c1, 1); BaTT(a2, b2, c2, 2); BaTT(a1 + a2, b1 + b2, c1 + c2, 3); Readln End (24) CHƯƠNG IV : PHỐI HỢP NHIỀU CÁCH GỢI ĐỘNG CƠ TẬP TRUNG VÀO NHỮNG TRỌNG ĐIỂM Trên đây chúng ta đã xét đến khả gợi động xuất phát từ nội dung dạy học Ngoài ra, còn có khả gợi động không gắn với nội dung khen, chê, cho điểm, Để phát huy tác dụng kích thích, thúc đẩy hoạt động học tập, cần phải phối hợp cách gợi động khác có chú ý đến xu hướng phát triển cá nhân học sinh, tạo hợp đồng tác dụng nhiều cách gợi động cơ, cách bổ xung cách Chẳng hạn, có thể gợi động cho nội dung dạy học hoạt động nào đó cách nhấn mạnh tầm quan trọng nội dung hoạt động này nghề nào đó xã hội Tuy nhiên cách gợi động hướng nghiệp này lại có nhược điểm là nó không hấp dẫn học sinh không có dự định làm nghề đó sau này Vì có thể bổ xung cách nhấn mạnh nắm nội dung đó, thực hoạt động đó là yếu tố văn hóa phổ thông tất người xã hội Cũng cần lưu ý rằng, muốn gợi động cho nội dung và hoạt động là không hợp lý và không khả thi Trong tiết học, việc gợi động cần tập trung vào số nội dung hoạt động định mà việc định cần vào yếu tố sau đây: - Tầm quan trọng nội dung hoạt động cần xem xét - Khả gợi động nội dung đó hoạt động đó - Kiến thức có sẵn và thời gian cần thiết Thí dụ : Viết chương trình nhập các điểm môn học kỳ Sau đó tính điểm trung bình môn môn học đó theo công thức : hs 1+ hs ∗2+ hs ∗3 Trong l1+l ∗2+3 đó : hs1 : tổng các điểm hệ số l1: số lần điểm hệ số hs2 : tổng các điểm hệ số l2 : số lần điểm hệ số hs3 : Điểm thi học kỳ Yêu cầu nhập lần là đủ, tức là các điểm nhập vào cần phải xử lý theo xâu ký tự sau đó đổi sang số để tính toán Đây là chương trình tính điểm mà học sinh có thể ứng dụng thực tế học tập mình Để làm bài toán này, học sinh cần phải ứng dụng vấn đề thực tế là cần phải biết cách tính điểm TBm sau đó áp dụng các kiến thức chương trình và kiến thức xử lý xâu ký tự để áp dụng thực chương trình Tuy nhiên chúng ta cần lưu ý nhập điểm, điểm hệ số và hệ số là các số nguyên với số lần điểm nhập vào không hạn chế, còn điểm hệ số có thể là số thực có điểm Chính vì cần phải có hai thủ tục nhập điểm Hơn nữa, việc nhập điểm cần lưu ý hai trường hợp điểm 10 và điểm nên chúng ta có thể sử dụng biến Char để xác định rõ điểm 10 vừa nhập là điểm 10 hay là hai điểm và Trong công việc tính toán, chúng ta cần phải có hai hàm: hàm tính tổng các điểm và hàm đếm số lần điểm loại điểm, là các điểm từ đến vấn đề đơn giản, (25) có điểm 10 việc đếm số lần điểm là việc tính tổng các điểm cần phải chia thành hai trường hợp: + Trường hợp có điểm 10: Ta xử lí hàm đếm cách gặp ký tự và thì đếm giữ nguyên, đến số thì tính từ đó Như vậy, gặp điểm 10 đếm là + Trường hợp điểm từ đến 9: Đếm bình thường và việc tính tổng vậy, có điều để tính tổng các phần tử chúng ta cần sử dụng vòng For duyệt toàn các phần tử xâu, với ký tự ta lại dùng hàm Val để đổi ký tự đó sang số để tính toán Cuối cùng, ta sử dụng hàm Tinh để tính điểm trung bình môn theo các hàm tính tổng và hàm đếm đã thực trên Chương trình sau: Var hs1, hs2 , h3: String; hs3: Real; k: Integer; Procedure Nhap1(Var st1: String; t1: Byte); Var a1, c1, i, tam: Integer; ch: Char; t: Char; Begin Repeat Write('Nhap diem he so ',t1,': '); Readln(st1); For i:=1 to Length(st1) Begin If (st1[i] = '1') And (st1[i+1] = '0') Then Begin Write('Diem 10 o tren la diem va diem 0(y)hay diem 10(n):'); Readln(ch); If ch='y' then Begin t:=st1[i]; st1[i] := st1[i+1]; st1[i+1]:=t; Writeln('Diem ban nhap se la: ',st1) End; End; End; Val(st1, a1, c1); If (c1 <> 0) Or (a1<0) Then Writeln('Nhap lai!'); Until (c1 = 0) And (a1>=0); End; Procedure Nhap2(Var st2:String; t2: Byte); Var c2:Integer; a2: Real; Begin Repeat Write('Nhap diem he so ',t2,': '); Readln(st2); Val(st2, a2, c2); If (c2 <> 0) Or (a2 > 10) Or (a2<0) Then Writeln('Nhap lai!'); Until (c2 = 0) and (a2 <= 10) And (a2>=0); End; Function Tong(a : String):Integer; Var i, s, d, c : Integer; x:String; Begin s := 0; For i := to Length(a) Do Begin If (a[i] = '1') And (a[i+1] = '0') Then Begin Val(a[i] + a[i+1], d, c); s := s + d; End Else Begin Val(a[i], d, c); s := s + d; (26) End; End; Tong := s; End; Function Dem(a : String): Integer; Var i, l : Integer; x: String; Begin l := 0; For i := to Length(a) Do Begin If (a[i] = '1') And (a[i+1] = '0') Then l := l Else l := l + 1; End; Dem := l; End; Function Tinh(x, y: String; z: Real): Real; Begin Val(h3, hs3, k); Tinh:=(Tong(hs1) + Tong(hs2)*2 + hs3*3)/(Dem(hs1) + Dem(hs2)*2 + 3); End; Begin Writeln('CHUONG TRINH TINH DIEM TRUNG BINH MON'); Nhap1(hs1,1); Nhap1(hs2,2); Nhap2(h3,3); Writeln('Diem he so 1: ',hs1); Writeln('Diem he so 2: ',hs2); Writeln('Diem he so 3: ',h3); Writeln('Ket qua TBm : ',Tinh(hs1,hs2,hs3):0:1); Readln End Email: info@123doc.org Website: http://huynhvumt.violet.vn (27)

Ngày đăng: 09/06/2021, 21:02

w