Sáng kiến kinh nghiệm Giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal
Hiện nay công nghệ thông tin nói chung và Tin học nói riêng là công cụ hỗ trợ đắc lực cho công việc quản lý và giảng dạy trong các cơ sở giáo dục, trong hầu hết mọi lĩnh vực CNTT đã được ứng dụng, với những tính năng ưu việt, sự tiện dụng, tin học đã là một phần không thể thiếu được trong nhiều ngành cũng như sự phát triển.
Trong nhiều năm gần đây ngành GD-ĐT đã trở thành điểm sáng về ứng dụng CNTT vào quản lý và trong công tác giảng dạy của giáo viên.
Tin học là một môn học đã được đưa vào giảng dạy chính thức cho đối tượng học sinh THPT trong nhiều năm nay. Tuy nhiên, đối với cấp THCS môn Tin học vẫn chưa được coi là môn học chính thức mà chỉ là môn học tự chọn, đây là một khó khăn không nhỏ đối với giáo viên bộ môn tin học vì sự nhìn nhận cũng như thái độ học tập của học sinh đối với môn học. Là môn học đòi hỏi sự tìm tòi sáng tạo của người học hơn nữa nó cũng có những đặc thù riêng là liên quan chặt chẽ với sử dụng máy tính. Đây là một chương trình đào tạo mang tính ứng dụng, do đó yêu cầu người học phải nắm bắt chính xác, nhanh, sử dụng máy tính tốt và kỹ năng thực hành trên máy tính phải ở mức độ cao nhất.
Không như những môn học khác. Đặc trưng của môn Tin học là lí thuyết đi đôi với thực hành. Thời lượng thực hành thông thường ít nhất là 50%, mức thời gian tốt nhất là khoảng 75%, học sinh có thể học lý thuyết ngay trên phòng máy tính để nhận biết các thao tác cũng như các lệnh và nút lệnh một cách trực quan và rõ ràng hơn.
- Lịch sử nhân loại đã chứng kiến những cuộc cách mạng về công nghệ thông tin với sự trợ giúp của máy tính và hệ thống máy tính, con người đã nâng cao năng suất và tự động hóa ngày một hiệu quả hơn và một trong những ứng dụng không thể không nhắc đến đó là những ứng dụng phần mềm của máy tính với nền công nghệ thông tin hiện nay. Phần mềm máy tính ngày một đi lên và phát triển với những ngôn ngữ lập trình khác nhau và cụ thể là ngôn ngữ lập trình Pascal. Pascal là một ngôn ngữ lập trình có cú pháp chặt chẽ, đơn giản và dễ hiểu.
MỞ ĐẦU Lý do chọn đề tài: Hiện nay công nghệ thông tin nói chung và Tin học nói riêng là công cụ hỗ trợ đắc lực cho công việc quản lý và giảng dạy trong các cơ sở giáo dục, trong hầu hết mọi lĩnh vực CNTT đã được ứng dụng, với những tính năng ưu việt, sự tiện dụng, tin học đã là một phần không thể thiếu được trong nhiều ngành cũng như sự phát triển. Trong nhiều năm gần đây ngành GD-ĐT đã trở thành điểm sáng về ứng dụng CNTT vào quản lý và trong công tác giảng dạy của giáo viên. Tin học là một môn học đã được đưa vào giảng dạy chính thức cho đối tượng học sinh THPT trong nhiều năm nay. Tuy nhiên, đối với cấp THCS môn Tin học vẫn chưa được coi là môn học chính thức mà chỉ là môn học tự chọn, đây là một khó khăn không nhỏ đối với giáo viên bộ môn tin học vì sự nhìn nhận cũng như thái độ học tập của học sinh đối với môn học. Là môn học đòi hỏi sự tìm tòi sáng tạo của người học hơn nữa nó cũng có những đặc thù riêng là liên quan chặt chẽ với sử dụng máy tính. Đây là một chương trình đào tạo mang tính ứng dụng, do đó yêu cầu người học phải nắm bắt chính xác, nhanh, sử dụng máy tính tốt và kỹ năng thực hành trên máy tính phải ở mức độ cao nhất. Không như những môn học khác. Đặc trưng của môn Tin học là lí thuyết đi đôi với thực hành. Thời lượng thực hành thông thường ít nhất là 50%, mức thời gian tốt nhất là khoảng 75%, học sinh có thể học lý thuyết ngay trên phòng máy tính để nhận biết các thao tác cũng như các lệnh và nút lệnh một cách trực quan và rõ ràng hơn. - Lịch sử nhân loại đã chứng kiến những cuộc cách mạng về công nghệ thông tin với sự trợ giúp của máy tính và hệ thống máy tính, con người đã nâng cao năng suất và tự động hóa ngày một hiệu quả hơn và một trong những ứng dụng không thể không nhắc đến đó là những ứng dụng phần mềm của máy tính với nền công nghệ thông tin hiện nay. Phần mềm máy tính ngày một đi lên và phát triển với những ngôn ngữ lập trình khác nhau và cụ thể là ngôn ngữ lập trình Pascal. Pascal là một ngôn ngữ lập trình có cú pháp chặt chẽ, đơn giản và dễ hiểu. - Do vậy, Việt Nam nói chung và ngành giáo dục đào tạo nói riêng phải đầu tư phát triển về mọi mặt. Đặc biệt là nguồn nhân lực tri thức tức là phải đào tạo ra một thế hệ trẻ năng động, thông minh, độc lập, sáng tạo, nắm vững tri thức khoa học công nghệ để làm chủ trong mọi hoàn cảnh công tác và hoạt động xã hội nhằm đáp ứng được nhu cầu trong thời kì công nghiệp hoá, hiện đại hoá đất nước. - Để đáp ứng được các yêu cầu trên, môn Tin học ở cấp THCS hiện nay đã được đưa vào giảng dạy với thời lượng 2 tiết/tuần cho tất cả các lớp ở cấp học. - Đối với môn Tin học lớp 8 có đặc trưng là kiến thức về lập trình. Ngôn ngữ lập trình dường như rất xa lạ vì đây là kiến thức đầu tiên trong lập trình mà các em được học. - Qua giảng dạy môn Tin học ở trường THCS Lê Hữu Lập, bản thân tôi nhận thấy rằng nhiều học sinh lớp 8 thấy môn lập trình Pascal khó, khô khan và cực kỳ loằng ngoằng. Mới đầu các em cũng rất sợ vì khi thấy giải một bài toán ở ngoài thì đơn giản và chỉ trong vòng vài giây có thể nhẩm ra kết quả còn ở trong lập trình cũng bài toán đó mà phải làm đến hàng chục phút mà có thể cho kết quả sai. Pascal trở nên quá xa lạ và khó khăn đối với người sử dụng và nhất là đối với học sinh THCS là những người đang trực tiếp ứng dụng ngôn ngữ lập trình này. - Tâm lý các em đều cho rằng môn Tin học không phải là môn học chính. Do đó không cần phải để tâm đến "nó". Những tiết học lý thuyết thì ghi chép qua loa cho xong chuyện bằng không thì ghi chép "giả vờ" để thầy cô khỏi chú ý hay nhắc nhở trong lúc giảng bài. Trong những tiết thực hành chỉ một vài học sinh thật sự chú tâm suy nghĩ xây dựng thuật toán, viết chương trình đa số còn lại tranh thủ chơi game hoặc làm việc riêng. - Xét ở một góc độ nào đó Lập trình cũng là một môn học khó đối với học sinh THCS. Khó ở đây không phải do tính phức tạp của môn học hay phạm vi kiến thức quá rộng lớn. Nếu đem so sánh môn học Lập trình và các phân môn Toán học ở trường THCS thì Lập trình Pascal gọn nhỏ hơn nhiều lần. - Một vấn đề nữa cũng là rào cản đối với việc các học sinh THCS tiếp cận với lập trình Pascal đó là: tư duy Toán của các em dừng lại ở mức độ Sách Giáo Khoa Toán THCS do đó kỹ năng phân tích, tổng hợp, xây dựng thuật toán cho mỗi bài toán hay vấn đề cần lập trình chưa tốt. Các em vẫn thụ động trong việc tiếp cận bài toán, sắp xếp tư duy, xây dựng thuật giải. - Từ thực tế trên, trong quá trình dạy học tôi luôn băn khoăn trăn trở làm thế nào nâng cao chất lượng kỹ năng lập trình cho học sinh lớp 8. Việc tiếp cận với môn học rất khó khăn, phải làm rất nhiều lần và thực hành rất nhiều tiết các em mới hiểu việc nhập và xuất dữ liệu. Do đó sẽ rất khó khăn để các em hình thành kỹ năng viết chương trình. Nhất là những năm gần đây Ngành giáo dục luôn thành lập đội tuyển tham dự kì thi Tin học trẻ, Tin học không chuyên,. Điều đó đã thúc đẩy tôi trong quá trình giảng dạy phải nghiên cứu tìm tòi biện pháp, kinh nghiệm để giúp cho các em có sự đam mê học tập về lập trình, giúp các em biết được quy trình lập trình như thế nào và định hướng cho học sinh cách để trở thành một nhà lập trình thì cần phải biết những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal. Giúp các em yêu thích lập trình và học lập trình trong sự hứng thú. 1.2. Mục đích của nghiên cứu: Việc thực hiện nội dung này đã góp thêm một phương pháp mới trong việc giảng dạy học sinh lớp 8 có được kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal. Tạo cho học sinh sự thích thú nhằm nâng cao tính tích cực, độc lập, sáng tạo và kỹ năng chuyên nghiệp của học sinh trong quá trình sử dụng máy vi tính. Bên cạnh đó các học sinh sẽ cùng hỗ trợ lẫn nhau và thúc đẩy nhau cùng học tập, cùng tiến bộ. Những đối tượng khác có niềm đam mê lập trình, đam mê nghiên cứu viết phần mềm tin học sẽ ngày càng hứng thú khám phá trong quá trình thực hành trên máy tính. Hạt nhân của chương trình máy tính là sự lưu trữ và xử lý thông tin. Việc tổ chức dữ liệu như thế nào có ảnh hưởng rất lớn đến cách thức xử lý dữ liệu đó, cũng như tốc độ thực thi và sự chiếm dụng bộ nhớ của chương trình. Do đó mục đích của bài viết này là cung cấp những hiểu biết nền tảng trong việc thiết kế một chương trình máy tính để thấy rõ sự cần thiết của việc phân tích, lựa chọn cấu trúc dữ liệu phù hợp cho từng bài toán cụ thể. 1.3. Đối tượng nghiên cứu: Trong chương trình Tin học dành cho THCS, học sinh được làm quen với lập trình bắt đầu từ năm học lớp 8. Vì vậy đối tượng nghiên cứu ở đây là giải một bài toán trên máy tính bằng ngôn ngữ lập trình, chủ thể nghiên cứu chủ yếu dành cho học sinh khối 8, 9 Trường trung học cơ sở Lê Hữu Lập - Hậu Lộc. 1.4. Phương pháp nghiên cứu: Để đạt được mục đích ở trên, tôi đề ra các nhiệm vụ sau: - Nghiên cứu nội dung của các hoạt động trong tiết Ôn tập, nội dung của các bài dạy học có liên quan. Tổng hợp các bài tập thực hành có liên quan đến nội dung tiết Ôn tập. - Thiết kế và xây dựng giáo án phù hợp với nội dung và yêu cầu của tiết Ôn tập. Phù hợp với đối tượng học sinh và học sinh có thể tiếp thu được kiến thức một cách hiệu quả nhất. - Cho học sinh Ôn tập lý thuyết kết hợp thực hành trên phòng máy. Qua quá trình học tập, nghiên cứu và hướng dẫn, cộng với thực tiễn trong công tác giảng dạy. Các phương pháp giúp cho tôi tập trung vào nghiên cứu chính, đó là: Phương pháp điều tra Phương pháp quan sát. Phương pháp phân tích tổng hợp Phương pháp thống kê. NHỮNG NỘI DUNG SÁNG KIÊN KINH NGHIỆM: 2.1. Cơ sở lý luận và thực tiễn có tính định hướng cho việc nghiên cứu, tìm giải pháp của đề tài: Đặc trưng của môn Tin học là môn khoa học gắn liền với công nghệ hiện đại, do vậy dạy học Tin học trong nhà trường nhằm trang bị cho học sinh kiến thức khoa học về Tin học, phát triển tư duy thuật toán, kỹ năng lập trình và tiếp cận những công nghệ mới của Tin học phục vụ học tập và đời sống. Nội dung chương trình của môn Tin học hiện hành ở các trường THCS đã đáp ứng được những yêu cầu trên. Trong nhà trường hiện đang phấn đấu các mục tiêu cụ thể của ngành là: Tổ chức tốt việc hướng dẫn học sinh biết cách lập trình để tham gia các kỳ thi như Tin học trẻ, học sinh giỏi lớp 9, * Thuận lợi: - Được sự quan tâm của Ngành giáo dục trong công cuộc đổi mới phương pháp dạy học. - Được sự quan tâm của BGH nhà trường trong việc đầu tư cơ sở vật chất, trang thiết bị dạy học tương đối đầy đủ đảm bảo phục vụ giảng dạy bộ môn Tin học. - Giáo viên giảng dạy được đào tạo theo đúng chuyên ngành và được bồi dưỡng chuyên môn hàng năm. - Phần lớn các em học sinh có ý thức tự học cao, luôn tìm tòi học hỏi những kiến thức mới trong học tập và rất hứng thú với môn Tin học. * Khó khăn: - Một bộ phận học sinh lớp 8 chưa ý thức việc học Tin. - Số lượng học sinh trong một lớp học còn quá đông gần 40 học sinh một lớp, diện tích phòng máy nhỏ hẹp, phòng máy có 20 máy nhưng là máy cũ nên thường hay hư hỏng, thiết bị hỗ trợ thường bị hư hao, không khí trong phòng máy không thoáng mát làm cho học sinh không tập trung vào bài giảng ... ảnh hưởng rất lớn trong quá trình giảng dạy và học tập. - Vẫn còn một số em học sinh tiếp thu kiến thức còn chậm, đặc biệt là kĩ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal bởi đây là một môn học mới (một môn ngoại ngữ mới). - Một số học sinh chưa coi trọng môn học, xem đây là một môn phụ nên chưa có sự đầu tư thời gian cho việc học. Ngoài ra, ở chương trình Tin học 8, các em phải làm quen, tiếp cận với ngôn ngữ lập trình Pascal là một phần mềm có cấu trúc phức tạp, ngôn ngữ lập trình bằng tiếng anh. Mặc khác để thực hiện được một chương trình thì các em phải có một kiến thức toán học nhất định. 2.2. Thực trạng khi chưa áp dụng sáng kiến kinh nghiệm: Qua kiểm tra chất lượng học kỳ 1 năm học 2017-2018, tôi thấy kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal của học sinh lớp 8 là ở mức trung bình khá. Khi giải bài toán trên máy tính học sinh chỉ quan tâm đến công thức để tính toán ra kết quả bài toán mà quên các bước xác định thông tin vào, thông tin ra; xây dựng thuật toán; chạy chương trình thì học sinh chưa nhận biết được kết quả chương trình đúng hay sai. Vì thế, kết quả kiểm tra học kỳ 1 là rất thấp. Kết quả khảo sát học kỳ 1 năm học 2017-2018 TT Lớp Sĩ số Kết quả kiểm tra Giỏi Khá TB Yếu Kém Trên TB SL % SL % SL % SL % SL % SL % 1 8A 32 5 15,6 12 37,5 15 46,9 0 0 0 0 17 53,1 2 8B 28 2 7,1 9 32,1 17 60,8 0 0 0 0 11 39,3 Tổng cộng 7 11,7 21 35,0 32 53,3 0 0 0 0 28 46,7 2.3 Giải quyết vấn đề: Pascal là ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, được Niklaus Wirth phát triển vào năm 1970, là ngôn ngữ đặc biệt thích hợp cho nhiều thế hệ học sinh, là ngôn ngữ vỡ lòng trong chương trình học. Ở môi trường này, học sinh sở hữu một lượng tài nguyên là các kiểu dữ liệu đơn giản, cùng với các câu lệnh rõ ràng, trong sáng, nhất quán và rất dễ thuộc. Tuy nhiên, nó đòi hỏi người lập trình tài bố cục, thiết kế một thuật toán sao cho đúng đắn, hiệu quả và tối ưu, rồi vận dụng các quy tắc cú pháp để viết ra được những câu lệnh phù hợp. Vì thế kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal thì cần các bước sau : Xác định bài toán Tìm cấu trúc dữ liệu biểu diễn thuật toán Xây dựng thuật toán Viết chương trình Kiểm thử chương trình Tối ưu chương trình. 2.3.1 Xác định bài toán: a. Khái niệm bài toán: Đối với bất kỳ một bài toán nào thì học sinh cũng được giáo viên hướng dẫn là phải đọc kỹ đề rồi xác định nó : A à B Trong đó: A là giả thiết : Điều kiện ban đầu hay cái đã cho khi bắt đầu giải bài toán. B là kết luận : Mục tiêu cần đạt được hay cái phải tìm, phải làm ra khi kết thúc bài toán. à là suy luận : Giải pháp cần xác định hay một chuỗi các bước cần thực hiện từ A đến B. b. Bài toán trên máy vi tính : Bài toán trên máy cũng mang đầy đủ các tính chất của bài toán tổng quát trên, nhưng nó lại được diễn đạt theo một các khác. - A : là đưa thông tin vào – thông tin trước khi xử lý (Input ) - B: là đưa thông tin ra – kết quả sau khi xử lý (Output) - à : là chương trình tạo từ các câu lệnh cơ bản của máy tính cho phép xử lý từ A đến B. c. Xác định bài toán: Việc xác định bài toán là xác định xem ta phải giải quyết vấn đề gì? Với giả thiết nào đã cho và với lời giải cần đạt những yêu cầu gì. Khác với các bài toán thuần túy trong toán học là chỉ cần xác định rõ giả thiết và kết luận chứ không cần xác định yêu cầu về lời giải, đôi khi những bài toán tin học trong thực tế chỉ cần tìm lời giải tốt tới mức nào đó, thậm chí là chỉ ở mức chấp nhận được (nếu lời giải tốt nhất đòi hỏi quá nhiều thời gian và chi phí). Input à Process à Output (Dữ liệu vào à Xử lý à Kết quả ra) d. Một số ví dụ : Ví dụ 1: Tính diện tích hình vuông. Các bước xác định cho bài toán: + Thông tin vào (Input) : Cạnh hình vuông a + Thông tin ra (Output) : Kết quả diện tích khi đưa a vào + Các dữ liệu cần xử lý để chế biến thông tin như: Lần lượt đưa giá trị a vào (cho a = 4) Áp dụng công thức tính diện tích hình vuông: a*a Kết quả in ra là 16. Ví dụ 2: Giải phương trình bậc nhất dạng tổng quát bx + c =0 Các bước xác định cho bài toán: + Input : Các số b, c + Output : Nghiệm của phương trình bậc nhất + Các dữ liệu cần xử lý để chế biến thông tin như: Lần lượt đưa giá trị b, c vào ( b = 3 ; c= - 6) Áp dụng công thức : Nếu b = 0 và c = 0 thì phương trình có vô số nghiệm Nếu b = 0 và c ≠ 0 thì phương trình vô nghiệm Nếu b ≠ 0 thì phương trình có nghiệm x = -c/b; Kết quả in ra là x = 2 Ví dụ 3: Tìm giá trị lớn nhất của một dãy số nguyên Các bước xác định cho bài toán: + Input : số nguyên dương N và dãy N số nguyên a1, ., aN N = 5 ; (7, 5, 9, 4, 10) + Output : Giá trị lớn nhất Max của dãy số. + Các dữ liệu cần xử lý để chế biến thông tin như: Khởi tạo giá trị Max = a1 Lần lượt với i từ 2 đến N, so sánh giá trị số hạng ai với giá trị Max, nếu ai > Max thì Max nhận giá trị mới là ai. Kết quả in ra là Max = 10. 2.3.2 Tìm cấu trúc dữ liệu biểu diễn thuật toán: * Cấu trúc dữ liệu (data structure) : Là kiểu dữ liệu mà bên trong nó có chứa nhiều thành phần dữ liệu và các thành phần dữ liệu đấy được tổ chức theo một cấu trúc nào đó. Nó dùng để biểu diễn cho các thông tin có cấu trúc của bài toán. Cấu trúc dữ liệu thể hiện khía cạnh logic của dữ liệu. Ví dụ cấu trúc dữ liệu đơn giản nhất trong chương trình tin học lớp 8 là mảng. Còn các dữ liệu không có cấu trúc được gọi là các dữ liệu vô hướng hay các dữ liệu đơn giản. VD: các kiểu dữ liệu số nguyên (integer), số thực (real), logic (boolean) là các kiểu dữ liệu đơn giản. * Khi giải một bài toán, ta cần phải định nghĩa tập hợp dữ liệu để biểu diễn tình trạng cụ thể. Việc lựa chọn này tùy thuộc vào vấn đề cần giải quyết và những thao tác sẽ tiến hành trên dữ liệu vào. Có những thuật toán chỉ thích ứng với một cách tổ chức dữ liệu nhất định, đối với những cách tổ chức dữ liệu khác thì sẽ kém hiệu quả hoặc không thể thực hiện được. Chính vì vậy nên bước xây dựng cấu trúc dữ liệu không thể tách rời bước tìm kiếm thuật toán giải quyết vấn đề. * Các tiêu chuẩn khi lựa chọn cấu trúc dữ liệu: - Cấu trúc dữ liệu trước hết phải biểu diễn được đầy đủ các thông tin nhập và xuất của bài toán. - Cấu trúc dữ liệu phải phù hợp với các thao tác của thuật toán mà ta lựa chọn để giải quyết bài toán. - Cấu trúc dữ liệu phải cài đặt được trên máy tính với ngôn ngữ lập trình đang sử dụng. * Đối với một số bài toán, trước khi tổ chức dữ liệu ta phải viết một đoạn chương trình nhỏ để khảo sát xem dữ liệu cần lưu trữ lớn tới mức độ nào. 2.3.3 Xây dựng thuật toán: Đây là bước khó nhất đối với học sinh và cũng cho giáo viên khi dạy phần này vì các em quen giải bài toán cụ thể nào đó và giải bài toán bằng ngôn ngữ tự nhiên mà các em đã học còn bây giờ các em phải xây dựng thuật toán của một bài toán tổng quát và bằng ngôn ngữ lập trình của máy. a. Khái niệm thuật toán: ALGORITHM INPUT OUTPUT Thuật toán là một hệ thống chặt chẽ và rõ ràng các quy tắc nhằm xác định một dãy thao tác trên cấu trúc dữ liệu sao cho: với một bộ dữ liệu vào (Input), sau số hữu hạn bước thực hiện các thao tác đã chỉ ra, ta đạt được kết quả đã định (Output). b. Phương pháp biểu diễn thuật toán: Trong phần này chúng ta cần đưa ra một phương pháp mô tả thuật toán một cách khoa học để học sinh nhận biết được quy trình làm việc của máy vi tính (Ngôn ngữ lập trình) làm việc như thế nào. Mô tả thuật toán là bước quan trọng nhất đối với người lập trình, nếu người lập trình mô tả thuật toán sai hoặc dài dòng thì dẫn đến khi viết chương trình sẽ khó khăn hoặc sẽ cho kết quả sai. Ở bước này đòi hỏi người lập trình cần có những hiểu biết cơ bản về toán học thì khả năng biểu diễn thuật toán sẽ trở nên đơn giản hơn và sẽ thấy bài toán trở nên gần gủi. Vì vậy trong phần này tôi sẽ đã đưa ra hai phương pháp mô tả thuật toán một cách rõ ràng và khoa học nhất để các em dễ dàng mô tả thuật toán đúng theo ý tưởng của mình. b.1 : Phương pháp biểu diễn từng bước: * Phương pháp: Các thao tác của giải thuật được liệt kê từng bước Tại mỗi bước, sử dụng ngôn ngữ tự nhiên để diễn tả công việc phải làm. Bước đứng trước (có số thứ tự nhỏ hơn) được thực hiện trước, thực hiện xong bước này mới chuyển sang bước khác, không nhập nhằng. * Ưu - nhược điểm: - Dễ hiểu, dễ làm - Phụ thuộc vào “cách hành văn” của người diễn đạt - Với những giải thuật phức tạp, cách diễn đạt này trở nên rườm rà,.. * Ví dụ: Thuật toán “Tìm vị trí xuất hiện đầu tiên của một số nguyên trong dãy số nguyên đã cho”: - Bước 1: Nhập dãy số nguyên - Bước 2: Nhập số nguyên a - Bước 3: Gán cho phần tử so sánh (s) giá trị của số đầu tiên trong dãy - Bước 4: So sánh a với s + Nếu a = s thì ghi nhận vị trí của phần tử s (p) + Nếu a ≠ s và s chưa phải phần tử cuối cùng trong dãy thì gán s bằng phần tử tiếp theo và lặp lại bước 4 + Nếu a ≠ s và s là phần tử cuối cùng của dãy thì gán p = 0 - Bước 5: Nếu p ≠ 0 thì đưa ra vị trí cần tìm là p, ngược lại thông báo không tìm thấy. Kết thúc Thuật toán “Tìm ước số chung lớn nhất của 2 số nguyên dương a,b. - Bước 1: Nhập 2 số nguyên dương là a,b - Bước 2: So sánh giá trị a và b. Nếu a bằng b thì sang bước 3, ngược lại a khác b thì sang bước 4 - Bước 3: Tìm được ước số chung là a và kết thúc chương trình. - Bước 4: Nếu a lớn hơn b thì ước số chung lớn nhất là a:=a-b và quay trở lại bước 2. Ngược lại ước số chung là b:=b-a và quay trở lại bước 2 Thuật toán “Tìm giá trị lớn nhất của một dãy số nguyên” - Bước 1: Nhập N và dãy a1, , aN. - Bước 2: Max ¬ a1 ; i ¬ 2 ; - Bước 3: Nếu i > N thì đưa ra giá trị Max rồi kết thúc. - Bước 4: Nếu ai > Max thì Max ¬ ai ; i ¬ i+1 ; rồi quay lại bước 3 ; b.2 : Phương pháp biểu diễn bằng sơ đồ khối: * Phương pháp: Sử dụng mũi tên để quy định trình tự thực hiện các thao tác Sử dụng các hình khối để minh hoạ cho các lệnh hay thao tác. + Khối bắt đầu + Khối kết thúc + Khối thao tác thực hiện tính toán + Khối kiểm tra điều kiện + Khối vào/ra dữ liệu + Khối gọi chương trình con, Khối bắt đầu và kết thúc Thực hiện công việc A Vào/ra dữ liệu - Gọi chương trình con A - Kiểm tra điều kiện: Tùy thuộc điều kiện(Đúng hay Sai) mà rẽ nhánh thí ch hợp Begin End A Điều kiện sai Đúng A Các ký hiệu trong phương pháp biểu diễn này: Cấu trúc rẽ nhánh Cấu trúc lặp Từ các khối ở trên có một số cấu trúc như sau: Ifthen Ifthen else whiledo repeatuntil * Ưu - nhược điểm: Đây là cách diễn đạt khoa học, có tính nhất quán cao * Ví dụ: Begin End C := (a+b+c) p := C/2 S := (a+b>c) and (b+c>a) and (a+c>b) ) ( * ) ( * ) ( * c p b p a p p - - - §óng Sai §äc a,b,c In ra C,S In “Không tạo thành TG” Thuật toán “Tính chu vi, diện tích hình tam giác” Thuật toán “Tìm giá trị lớn nhất của một dãy số nguyên” begin End. Nhập N và dãy a1, .., aN Max ¬ a1 , i ¬ 2 i >N Đưa ra Max Ai > Max Đúng Sai Max ¬ ai i ¬i+1 Đúng Sai c. Tính chất của thuật
Tài liệu đính kèm:
- sang_kien_kinh_nghiem_giai_bai_toan_tren_may_tinh_bang_ngon.doc