SKKN Phân loại dạng bài tập và phương pháp giải các bài tập tin học phổ thông
Trong thời đại ngày nay, thế giới đã và đang diễn ra quá trình Tin học hóa trong nhiều lĩnh vực của đời sống xã hội. Tin học phát triển nhanh như vũ bão và đã trở thành một ngành khoa học đóng vai trò quan trọng không thể thiếu đối với sự phát triển của xã hội.
Nhiều quốc gia đã ý thức được tầm quan trọng của Tin học và đã có những đầu tư lớn vào lĩnh vực này đặc biệt là lĩnh vực giáo dục nhằm đảo tạo một đội ngũ tri thức trẻ có nền tảng Tin học vững vàng đáp ứng nhu cầu ngày càng cao của xã hội.
Từ năm 2006 ngành giáo dục Việt Nam đã chính thức đưa bộ môn Tin học vào trường THPT nhằm cung cấp cho học sinh những kiến thức phổ thông về Tin học, hình thành và phát triển năng lực cũng như ứng dụng các thành tựu Tin học trong học tập và trong các lĩnh vực hoạt động của mình sau này.
Đi đôi với hệ thống các kiến thức lý thuyết là hệ thống bài tập không thể tách rời trong hệ thống Tin học phổ thông. Hệ thống bài tập nhằm giúp học sinh hình thành, củng cố tri thức, kỹ năng, kỷ xảo ở các khâu khác nhau của quá trình học tập, phát triển năng lực trí tuệ, rèn luyện những hoạt động tư duy.
Tuy nhiên, do Tin học là bộ môn mới mẻ nên quá trình tiếp thu kiến thức lý thuyết cũng như giải quyết các bài tập của học sinh còn nhiều vướng mắc. Các em chưa biết cách phân loại dạng bài tập khi giải quyết, đặc biệt trong bài tập Tin học 11 các em chưa nắm vững các hệ thống thuật toán để giải quyết các bài toán này. Đây chính là lý do tôi chọn đề tài này, nhằm giúp các em có thể phân loại được các dạng bài tập, áp dụng các thuật toán để giải quyết các bài tập trong chương trình Tin học phổ thông.
ĐẶT VẤN ĐỀ I. LÍ DO CHỌN ĐỀ TÀI Trong thời đại ngày nay, thế giới đã và đang diễn ra quá trình Tin học hóa trong nhiều lĩnh vực của đời sống xã hội. Tin học phát triển nhanh như vũ bão và đã trở thành một ngành khoa học đóng vai trò quan trọng không thể thiếu đối với sự phát triển của xã hội. Nhiều quốc gia đã ý thức được tầm quan trọng của Tin học và đã có những đầu tư lớn vào lĩnh vực này đặc biệt là lĩnh vực giáo dục nhằm đảo tạo một đội ngũ tri thức trẻ có nền tảng Tin học vững vàng đáp ứng nhu cầu ngày càng cao của xã hội. Từ năm 2006 ngành giáo dục Việt Nam đã chính thức đưa bộ môn Tin học vào trường THPT nhằm cung cấp cho học sinh những kiến thức phổ thông về Tin học, hình thành và phát triển năng lực cũng như ứng dụng các thành tựu Tin học trong học tập và trong các lĩnh vực hoạt động của mình sau này. Đi đôi với hệ thống các kiến thức lý thuyết là hệ thống bài tập không thể tách rời trong hệ thống Tin học phổ thông. Hệ thống bài tập nhằm giúp học sinh hình thành, củng cố tri thức, kỹ năng, kỷ xảo ở các khâu khác nhau của quá trình học tập, phát triển năng lực trí tuệ, rèn luyện những hoạt động tư duy. Tuy nhiên, do Tin học là bộ môn mới mẻ nên quá trình tiếp thu kiến thức lý thuyết cũng như giải quyết các bài tập của học sinh còn nhiều vướng mắc. Các em chưa biết cách phân loại dạng bài tập khi giải quyết, đặc biệt trong bài tập Tin học 11 các em chưa nắm vững các hệ thống thuật toán để giải quyết các bài toán này. Đây chính là lý do tôi chọn đề tài này, nhằm giúp các em có thể phân loại được các dạng bài tập, áp dụng các thuật toán để giải quyết các bài tập trong chương trình Tin học phổ thông. II. MỤC ĐÍCH NGHIÊN CỨU Mục đích của tôi khi thực hiện đề tài này là làm giúp các em học sinh có thể phân loại các dạng bài tập, áp dụng các thuật toán để giải quyết các bài toán ở chương trình Tin học 11 một cách hiệu quả nhất. Từ đó giúp các em tiếp cận dễ dàng với môn học này, khơi dậy lòng đam mê của các em đối với bộ môn Tin học. III. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng nghiên cứu: Là các em học sinh của trường THPT Triệu Sơn 2 2. Phạm vi nghiên cứu: Tập trung vào hệ thống bài tập Tin học phổ thông, đặc biệt là hệ thống bài tập môn Tin học khối 11. B. GIẢI QUYẾT VẤN ĐỀ I. CƠ SỞ LÝ LUẬN Bài tập là một vấn đề đặt ra đòi hỏi học sinh phải giải quyết trên cơ sở những kiến thức đã tiếp thu trong quá trình học tập. Bài tập Tin học phổ thông là một bộ phận không thể tách rời trong chương trình Tin học phổ thông, giúp học sinh hoàn thiện những kiến thức phổ thông căn bản nhất, phát triển năng lực trí tuệ rèn luyện các hoạt động tư duy cho học sinh. Để giải quyết được các bài tập trước hết cần biết cách phân loại, vận dụng kiến thức lý thuyết vào các dạng bài tập khác nhau. II. THỰC TRẠNG CỦA VẤN ĐỀ 1. Thuận lợi: Được sự quan tâm và đầu tư của Sở giáo dục và đào tạo Thanh Hóa nói chung và của các Ban ngành trường PTTT Triệu Sơn 2 nói riêng, về cơ sở vật chất môn Tin học đã có 2 phòng máy thực hành trong đó 1 phòng được kết nối Internet, 2 phòng máy chiếu đa chức năng dành cho bộ môn Tin học và nhiều lớp học có trang bị hệ thống máy tính, máy chiếu Mặc dù môn Tin học không phải là môn học chính nhưng được Ban giám hiệu nhà trường quan tâm động viên và tạo mọi điều kiện trong công tác giảng dạy. Bên cạnh đó có nhiều học sinh yêu thích bộ môn Tin học Trong quá trình thực hiện đề tài này tôi đã được các giáo viên trong tổ bộ môn tư vấn và hỗ trợ rất nhiều giúp tôi hoàng thành đề tài. 2. Khó khăn: Do đây là bộ môn mới nên bước đầu khi tiếp xúc với bộ môn này các em còn nhiều bỡ ngỡ. Các em chưa biết cách phân loại các dạng bài tập và vận dụng các thuật toán để giải quyết các bài tập đó. Bên cạnh đó, với tâm lý thường các em coi bộ môn Tin học là môn phụ nên không chú trọng, nhiều em học sinh không dành đủ thời gian học nên không hiểu bài và dần bị mất căn bản. Đây cũng là lý do nhiều em bị điểm kém (đặc biệt là ở khối lớp 11) thậm chí là thi lại, học lại bộ môn Tin học mặc dù các em học rất giỏi các môn học khác. 3. Kết quả trước khi nghiên cứu Trước khi áp dụng đề tài trong quá trình giảng dạy, bằng hình thức giám sát và ra đề kiểm tra kết hợp thực hành tôi thu được kết quả sau ( trung bình ở cả 3 khối 10, 11 và 12): Nội dung cần nắm bắt Số lượng Tỷ lệ(%) Biết phân loại các dạng bài tập 70/315 22% Vận dụng kiến thức đã học để làm tốt bài tập 49/315 15,5% III. BIỆN PHÁP GIẢI QUYẾT 1. Phân loại bài tập . Quan điểm phân loại: Việc phân lọai hệ thống bài tập Tin học phổ thông mang tính tương đối ở đây quan điểm phân loại của tôi là dựa vào mục tiêu của hệ thống bài tập. Qua tìm hiểu chương trình Tin học phổ thông và hệ thống bài tập ta thấy được mục tiêu chính của chương trình Tin học phổ thông được thể hiện trên 3 lớp: lớp 10, lớp 11 và lớp 12 cơ bản là khác nhau. Lớp 10, nội dung chương trình mang tính cung cấp kiến thức phổ thông cơ bàn nhất nhằm đảm bảo được trình độ xuất phát chính vì thế mục tiêu của hệ thống bài tập ở lớp này chủ yếu là củng cố tri thức sau khi học. Học sinh được cung cấp các câu hỏi mang tính phân tích nhằm khái quát lại vấn đề hoặc đào xâu mở rộng vấn đề, mở mang kiến thức và nắm bắt thông tin, thông qua đó giáo dục tư tưởng nhận thức và tiếp cận thông tin mang tính thời đại. Lớp 11 và lớp 12, nội dung chương trình đã bắt đầu đi vào chiều sâu như nghiên cứu về ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu, cơ sở dữ liệu quan hệ, vấn đề bảo mật Do vậy hệ thống bài tập của 2 lớp này chủ yếu nhằm vào mục tiêu rèn luyện tư duy, phát triển năng lực trí tuệ và rèn luyện kỹ năng thao tác, thực hành trên máy tính. Tuy nhiên lớp 11 được tác giả nhằm vào việc rèn luyện giải thuật nhiều hơn, còn lớp 12 là rèn luyện kỹ năng thao tác và thực hành trên máy tính. . Các dạng bài tập: Với quan điểm phân loại trên, hệ thống bài tập tin học phổ thông có thể chia làm 3 nhóm. + Nhóm 1: Củng cố tri thức. + Nhóm 2: Rèn luyện tư duy, phát triển năng lực trí tuệ. + Nhóm 3: Rèn luyện kỹ năng thao tác. Dạng câu hỏi, bài tập củng cố tri thức: - Nhận dạng: Hình thức chủ yếu của dạng này là hệ thống các câu hỏi được xây dựng trên các bài học lý thuyết, cung cấp thông tin, dữ kiện, sự kiện, cấu tạo, thành phần của một đối tượng. - Mục đích: Nhằm nhắc lại kiến thức đã học và đào sâu, mở rộng, vận dụng, liên hệ với thực tế cuộc sống với những kiến thức đã được cung cấp mang tính lý thuyết, chưa mang tính định lượng. 1.2.2 Dạng câu hỏi, bài tập rèn luyện tư duy, phát triển năng lực trí tuệ. - Nhận dạng: HÌnh thức chủ yếu là các bài toán được cung cấp giả thiết (Input) và kết luận (Output) và đưa ra yêu cầu xác định phương pháp/ giải thuật để từ Input xác định Output. - Mục đích: Phát triển năng lực phân tích, xác định bài toán, khả năng tư duy giải thuật của học sinh vận dụng vào việc giải quyết bài toán đặt ra. 1.2.3 Dạng câu hỏi, bài tập rèn luyện kỹ năng thao tác, thực hành máy tính - Nhận dạng: Thường tồn tại ở dạng yêu cầu thao tác theo các bước và kiểm tra kết quả, đánh giá nhận xét hoặc tồn tại ở dạng bài tập lập trình vận dụng, xây dựng, đặc tả một hệ thống thực nào đó. - Mục đích: Thông qua yêu cầu, các vấn đề thực tế nhằm giúp học sinh tiếp cận máy tính, rèn luyện kỹ năng thao tác, thực hành trên máy tính. 2. Phương pháp giải bài tập tin học phổ thông 2.1 Phương pháp chung để tiếp cận và giải một bài toán: Ta có thể thấy rằng “tham vọng có được một giải thuật có thể áp dụng được đối với mọi bài toán là một điều ảo tưởng ” Trang bị những hướng dẫn chung, gợi ý suy nghĩ mang tính định hướng theo nhóm, chủ đề, phát hiện cách giải quyết một vấn đề là hết sức cần thiết. Có thể tiếp cận một bài toán (bài tập tin học) theo các bước: Bước 1: Tìm hiểu nội dung đề bài - Phát biểu lại bài toán để có thể hiểu rõ hơn (nếu thấy cần thiết) - Xác định các dữ kiện vào (Input), ra (Output) Bước 2: Tìm cách giải - Tìm tòi, phát hiện cách giải nhờ vào khả năng tư duy kết hợp với các giải thuật đã được cung cấp. - Thể hiện ý tưởng thông qua việc liệt kê các bước giải/ dùng sơ đồ khối. Bước 3: Trình bày lời giải - Dùng ngôn ngữ lập trình - Sử dụng phương pháp lập trình Top - Down (từ trên xuống), phải biết tinh chế từng bước. - Kiểm tra lời giải Bước 4: Nghiên cứu sâu lời giải -Tìm những cách giải khác, so sánh lựa chọn cách giải thích hợp. - Nghiên cứu khả năng ứng dụng - Lật ngược vấn đề để xem xét - Nghiên cứu để áp dung cho những bài toán tương tự. 2.2 Dạng câu hỏi củng cố tri thức 2.1.1 Một số nội dung cần lưu ý: - Có thể phát biểu lại câu hỏi, chia nhỏ câu hỏi thành các về nhỏ hơn. - Theo dõi học sinh và có thể đưa ra gợi ý - Liệt kê các kiến thức dạng khóa - Mở rộng vấn đề bằng việc đưa ra các câu hỏi liên quan đến nội dung đã được học sinh trả lời. 2.2.2 Ví dụ Câu hỏi 1: Hãy nêu những đặc tính ưu việt của máy tính? (câu hỏi 3 - trang 6 – SGK Tin học 10) *Phân tích: Với câu hỏi này có thể so sánh những lợi ích của việc sử dụng máy tính với việc không sử dụng máy tính trong các lĩnh vực khác nhau của đời sống xã hội. Từ đó để học sinh rút ra những đặc tính ưu việt của máy tính. Câu hỏi 2: Người ta dùng những đơn vị nào để đo lượng thông tin? *Phân tích: Với câu hỏi này ta có thể phát biểu lại nhưng vẫn giữ được giá trị của câu hỏi “ Liệt kê tất cả các đơn vị đo lượng thông tin?” Để mở rộng kiến thức có thể đưa ra các câu hỏi dạng: 1 Byte có thể biểu diễn được bao nhiêu trạng thái? Cơ sở nào để xác định số trạng thái đó? Câu hỏi 3: Em hãy cho biết các chức năng chính của hệ điều hành? (câu hỏi 2 - trang 64 – SGK Tin học 10) *Phân tích: Có thể đưa ra liên hệ từ hệ điều hành đang học từ đó liệt kê các chức năng chính của nó, nếu thiếu giáo viên có thể đưa ra câu hỏi bổ sung để hoàn thiện cho đáp án. Việc mở rộng kiến thức trong câu hỏi này: - So sánh các ưu nhược điểm của các hệ điều hành đã học - Em thử kể lại một hệ điều hành mà em biết và cho biết chức năng cơ bản của nó? 2.2.3 Một số câu hỏi vận dụng Câu hỏi 4: Hãy trình bày một số chức năng cơ bản của một hệ soạn thảo? Câu hỏi 5: Những thành phần nào là cần thiết để có thể dùng tiếng Việt trong soạn thảo? Câu hỏi 6: Hãy kể những khả năng định dạng kí tự? Câu hỏi 7: Hãy kể những nhóm lệnh làm việc với bảng? Câu hỏi 8: Việc kết nối máy tính nhằm mục đích gì? Câu hỏi 9: Giao thức truyền thông là gì? Câu hỏi 10: Địa chỉ IP là gì? 2.3 Dạng bài tập rèn luyện tư duy, phát triển năng lực trí tuệ 2.3.1 Một số nội dung cần lưu ý: - Cần tìm hiểu kỹ nội dung đề bài để xác định các đại lượng I, O một cách chính xác, trong trường hợp cần thiết có thể phát biểu lại để thấy rõ yêu cầu của bài toán. - Dùng ngôn ngữ tựa hoặc ngôn ngữ tự nhiên liệt kê được sơ bộ các bước giải, trên cơ sở đó xác định rõ cấu trúc dữ liệu biểu diễn. - Định hình được thuật giải và dùng ngôn ngữ lập trình để cài đặt. - Xác định nhất quán một phương pháp lập trình ( ví dụ như lập trình trên xuống và thực hiện tinh chỉnh từng bước). - Kiểm thử bằng cách xây dựng bộ test. - Nghiên cứu mở rộng khả năng áp dụng của thuật toán trên. 2.3.2 Một số thuật toán cơ bản thường gặp a. Các thuật toán đơn giản * Hoán đổi giá trị của hai biến (a, b có cùng kiểu): + Sử dụng biến trung gian: Sử dụng 3 thao tác gán TG := a; a := b; b := TG; + Không sử dụng biến trung gian (chỉ thực hiện được với a, b kiểu số): a:=a+b; b:= a-b; a:= a-b; * Tìm Max, Min: + Tìm Max của hai số a, b cho trước (có thể so sánh để xác định hoặc biến đổi toán học, ta có số lớn là (a+b)/2 + (a-b)/2- với a, b dương); tương tự ta có thể xác định Min của hai số. + Tìm Min của 3 số a, b, c: Cách 1: - Nếu a<b thì (loại b) so sánh a với c để xác định số bé nhất. - Nếu a>=b thì (loại a) so sánh b với c để xác định số bé nhất. Cách 2: Gán Min:=a; - Nếu Min > b thì gán Min:=b; - Nếu Min >c thì gán Min:=c; b. Bài toán sắp xếp: Trong cuộc sống ta thường gặp những việc liên quan đến sắp xếp như xếp các học sinh theo thứ tự từ thấp đến cao, xếp điểm trung bình của học sinh trong lớp theo thứ tự từ cao đến thấp. Nói một cách tổng quát, cho một dãy đối tượng, cần sắp xếp lại vị trí các đối tượng theo một tiêu chí nào đó. Dưới đây ta chỉ xét bài toán sắp xếp dạng đơn giản: Cho một dãy A gồm n số nguyên a1, a2,,an. Cần sắp xếp các số hạng để dãy A trở thành dãy không giảm. Thuật toán sắp xếp bằng tráo đổi (Exchange sort) * Xác định bài toán: - Input: Dãy A gốm n số nguyên a1, a2,,an - Output: Dãy A được sắp xếp lại thành dãy không giảm. * Ý tưởng: Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số sau ta tráo đổi chúng cho nhau. Việc đó được lặp lại cho đến khi không có sự đổi chỗ nào xảy ra nữa. * Thuật toán: Bước 1: Nhập n, các số hạng a1, a2,,an; Bước 2: M ß N; Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắp xếp rồi kêt thúc; Bước 4: M ß M-1, i ß 0; Bước 5: i ß i+1; Bước 6: Nếu i >M thì quay lại bước 3; Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau; Bước 8: Quay lại bước5; c. Bài toán tìm kiếm Tìm kiếm là việc thường xảy ra trong cuộc sống, chẳng hạn cần tìm cuốn sách giáo khoa Tin học 10 trên giá sách, cần tìm một học sinh trong danh sách một lớp học Nói một cách tổng quát là cần tìm một đối tượng nào đó trong tập các đối thượng cho trước. Dưới đây ta chỉ xét bài toán tìm kiếm dạng đơn giản sau: Cho một dãy A gồm n số nguyên khác nhau a1, a2,,an và một số nguyên k. Cần biết có hay không chỉ số i (1=< i <=n) mà ai=k. Nếu có hãy cho biết chỉ số đó. Thuật toán tìm kiếm tuần tự (sequential search) * Xác định bài toán: - Input: Dãy A gồm n số nguyên khác nhau a1, a2,,an và một số nguyên k. - Output: Chỉ số i mà ai bặng k hoặc thông báo không có số hạng nào của A có giá trị bằng k. * Ý tưởng: Tìm kiếm tuần tự được thực hiện một cách tự nhiên. Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi hoặc gặp một số hạng bằng khóa hoặc dãy A đã được xét hết và không có giá trị nào bằng khóa. *Thuật toán: Bước 1: Nhập n, các số hạng a1, a2,,an và khóa k; Bước 2: iß 1; Bước 3: Nếu ai =k thì thông báo chỉ số i rồi kết thúc; Bước 4: ißi+1; Bước 5: Nếu i>n thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc; Bước 6: Quay lại bước 3; 2.3.3 Ví dụ. Bài tập 1: Viết chương trình nhập từ bàn phím số nguyện dương N (N<=100) và dãy A có n số hạng nguyên A1, A2, A3 An, các số hạng có trị tuyệt đối không lớn hơn 1000. Hãy cho biết A có phải là một cấp số cộng hay không? Thông báo kết quả lên màn hình. (Bài tập 5- trang 79 Tin học 11) *Phân tích: Bước 1: Tìm hiểu nội dung đề bài - Xác định các dữ kiện vào (Input), ra (Output): + Input: N, {an}, với 0 < n <= 100 và |ai| <= 1000. + Output: Dãy số {an} có phải là cấp số cộng hay không? (để giải quyết tốt các bước tiếp theo, giáo viên cần cho học sinh hiểu về cấp số cộng bằng việc nhắc lại kiến thức Toán học đã học) Bước 2: Tìm cách giải - Tìm tòi, phát hiện cách giải nhờ vào khả năng tư duy kết hợp với hệ thống các giải thuật đã được cung cấp. Bản thân người học đã biết như thế nào là một cấp số cộng do vậy trong bài toán này việc xây dựng giải thuật hết sức đơn giản. Bằng cách xác định công sai, học sinh dễ dàng nhận ra cách để xác định dãy có phải là cấp số cộng hay không. B1: Nhập vào n ( n<= 100) và dãy gồm n số nguyên { a1, a2 an} và |ai| <= 1000. B2: Nếu n và dãy chưa thõa mãn yêu cầu. Quay lại B1. B3: Tính công sai d:= a[2] – a[1]. Khởi tạo biến đếm dem:=2. B4: Nếu (dem <= n) và a[dem]– a[dem-1]= d thì dem=dem + 1. Quay lại B4. B5: Nếu dem > n thì kết luận dãy là cấp số cộng, còn ngược lại (dem <= n) thì kết luận dãy không phải là cấp số cộng. Kết thúc. Bước 3: Trình bày lời giải: Dùng ngôn ngữ lập trình Pascal: Var a: array[1..100] of integer; I, n, d : integer; BEGIN Repeat Write(‘ Nhap so phan tu:’); readln(n); Until (n>0) and (n<100); For i:=1 to n do Repeat Write(‘Nhap a[‘,I,’] = ‘), readln(a[i]); Until (abs(a[i])<= 1000); d:= a[2] – a[1]; i:=2; while(i<=n) and (a[i]-a[i-1] =d) do inc(i); if i > n then writeln(‘day la cap so cong’) Else writeln(‘day khong phai la cap so cong’); END. Kiểm tra lời giải: Thứ tự các lệnh trên đã đúng và đầy đủ chưa, các biến có dư thừa hay sai định kiểu hay không? Đưa ra một dãy đơn giản để kiểm tra thử xem. Bước 4: Nghiên cứu sâu lời giải Tìm những cách giải khác, so sánh lựa chọn cách giải thích hợp Cách 2: Có thể xác định cấp số cộng bằng đoạn lệnh sau: OK := true; d:= a[2]- a[1]; For i:=2 to n do If a[i] – a[i-1] d then OK:= false; If OK then write (‘Cap so cong’) Else write(‘Khong la cap so cong’); Cách 3: Có thể xác định cấp số cộng bằng đoạn lệnh sau: OK := true; d:= a[2]- a[1]; i:=2; While OK and (i<=n) do Begin Ok:=(a[i]-a[i-1] =d); inc(i); End; If OK then write (‘Cap so cong’) Else write(‘Khong la cap so cong’); Với cách giải 2 thì học sinh dễ hiểu tuy nhiên lãng phí thời gian do vòng lặp For (nên đưa ra câu hỏi gợi mở để giải quyết tối ưu tình huống này – dùng được câu lệnh break). Với cách giải 3, học sinh thường bị lúng túng trong thao tác gán biến OK, có thể khắc phục bằng câu lệnh If giúp gỡ được vướng mắc cho học sinh. Tuy nhiên, việc sử dụng thêm biến kiểu Boolean thường tạo ra khó khăn cho học sinh nên cách giải quyết như phương án cài đặt trên là tương đối phù hợp, dễ hiểu và học sinh dễ thấy sự tuần tự trong cách xét tính chất của cấp số cộng ( việc xét tuần tự các cặp a[i], a[i-1] kể từ vị trí i = 2 cho đến khi i >n hoặc hiệu a[i] và a[i-1] khác giá trị công sai học sinh thấy rõ). - Bài toán trên chỉ xét với trường hợp dãy đã được sắp xếp, nếu trường hợp là cho tập hữu hạn các số. Hỏi, tập đó có thể tạo thành cấp số cộng hay không? Phân tích, sắp xếp và vận dụng lại giải thuật trên để giải quyết. - Với giải thuật trên có thể cải tiến để thực hiện xét một dãy có phải là cấp số nhân hay không? Nếu được thì đưa ra phương án. - Xây dựng giải thuật xác định dãy con tăng, dãy con giảm. Bài tập 2: Viết chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số thập phân xuất hiện trong xâu S. Thông báo kết quả ra màn hình. (Bài tập 10- trang 80 Tin học 11) *Phân tích: Bước 1: Tìm hiểu nội dung đề bài Xác định các dữ kiện vào (Input), ra (Output): Input: Xâu S (length(S) <= 100); Output: Số lượng chữ số thập phân trong S Bước 2: Tìm cách giải Với bài toán này, người học có thể kết hợp thuật toán tuần tự đã được học để tìm kiếm tuần tự từ đầu đến cuối xâu. Tại mỗi vị trí kiểm tra xem kí tự tại vị trí đó có phải là số thập phân hay không, nếu là số thập phân thì tăng biến lưu lên một đơn vị. Cho đến khi không còn kí tự trong xâu để kiểm tra thì đưa ra giá trị của biến lưu. B1: Nhập vào xâu S (length(S) <= 100); B2: dem ß 1, iß 1; B3: Kiểm tra, nếu length(S)>100 thì kết thúc và đưa ra dem; B4: Kiểm tra, nếu S[i] in [‘0’..’9’] thì demß dem +1, quay lại B3; Bước 3: Dùng ngôn ngữ lập trình Pascal để cài đặt: Var S: string[100]; I, dem: byte; Begin Write(‘Nhap vao xau S:’); Readln(S); Dem := 0; For i := 1 to length(S) do If S[i] in [‘0’..’9’] then dem := dem + 1; Write(‘So luong chu so thap phan trong S la:’,dem); Readln End. Bài tập 3: Viết chương trình con (hàm, thủ tục) tìm bội số chung nhỏ nhất của hai số nguyên dương a, b. Hãy cho biết trong trường hợp này viết CTC dưới dạng hàm hay dưới dạng thủ tục là thuận tiện hơn. Vì sao? (Bài tập 4- trang 117 Tin học 11) *Phân tích: Bước 1: Tìm hiểu nội dung đề bài: - Input: Hai số nguyên dương a, b. - Output: BCNN(a, b). Bước 2: Tìm cách giải: - Trước hết người học phải nắm được hai loại chương trình con và cách sử dụng của từng loại. Trong trường hợp bài toán này thì nên sử dụng loại chương trình con nào? - Bản thân người học đã biết tích giữa ƯCLN với BCNN của hai số nguyên dương a, b bằng tích của hai số đó. Do vậy, để tìm BCNN của hai số nguyên dương a và b thì ta phải tìm ƯCLN(a, b), nghĩa là cần lấy được giá trị trả về của CTC này. Vậy trong trường hợp này viết CTC dưới dạng hàm là thuận tiện hơn. Bước 3: Trình bày lời giải: Var a, b:
Tài liệu đính kèm:
- skkn_phan_loai_dang_bai_tap_va_phuong_phap_giai_cac_bai_tap.doc