Issuu on Google+

Lời cảm ơn Phần 1. Giới thiệu chung Phần 2. Cơ sở lý thuyết Phần 3. Phân tích nhiệm vụ Phần 4. Thiết kế và phương án thực hiện Phần 5. Kết luận và định hướng phát triển tiếp Phần 6. Phụ lục

Lời cảm ơn Ngày này, với sự phát triển nhảy vọt của khoa học công nghệ nói chung của ngành tin học nói riêng, với những tính năng ưu việt, sự tiện dụng và được ứng dụng rộng rãi, tin học ngày nay là một phần không thể thiếu được của nhiều ngành trong công cuộc xây dựng và phát triển xã hội. Hơn thế nữa nó còn đi sâu đời sống của con người. Tin học đã thâm nhập khá mạnh mẽ vào Việt Nam. Nhiều lĩnh vực hoạt động từ lĩnh vực quản lý hành chính, quản lý kinh tế, tự động hóa công nghiệp ... đến các lĩnh vực giáo dục và đào tạo đều có thay đổi đáng kể nhờ ứng dụng tin học. Máy tính là công cụ cần thiết đối với con người trong thời đại ngày nay. Hoạt động của một máy tính là xử lý các thông tin đưa vào theo một chương trình đã được lập sẵn nhằm đưa ra kết quả phục vụ yêu cầu nào đó của người sử dụng. Việc xây dựng các chương trình cho máy tính là hết sức cần thiết bởi vì các chương trình là linh hồn của máy tính. Trong xây dựng chương trình để có một chương trình có hiệu quả cần phải có chuyên gia phân tích bài toán đưa ra sơ đồ thuật toán và từ đó các lập trình viên tiến hành sinh mã nguồn cho chương trình. Vấn đề đặt ra liệu có thể xây dựng một phần mềm hỗ trợ người lập trình xây dựng sơ đồ thuật toán hay không? Với mong muốn đó... em lựa chọn đề tài: “Xây dựng công cụ tạo sơ đồ khối”


Phần 1. Giới thiệu chung Ngày này, với sự phát triển nhảy vọt của khoa học công nghệ nói chung của ngành tin học nói riêng, với những tính năng ưu việt, sự tiện dụng và được ứng dụng rộng rãi, tin học ngày nay là một phần không thể thiếu được của nhiều ngành trong công cuộc xây dựng và phát triển xã hội. Hơn thế nữa nó còn đi sâu đời sống của con người. Tin học đã thâm nhập khá mạnh mẽ vào Việt Nam. Nhiều lĩnh vực hoạt động từ lĩnh vực quản lý hành chính, quản lý kinh tế, tự động hóa công nghiệp ... đến các lĩnh vực giáo dục và đào tạo đều có thay đổi đáng kể nhờ ứng dụng tin học. Máy tính là công cụ cần thiết đối với con người trong thời đại ngày nay. Hoạt động của một máy tính là xử lý các thông tin đưa vào theo một chương trình đã được lập sẵn nhằm đưa ra kết quả phục vụ yêu cầu nào đó của người sử dụng. Việc xây dựng các chương trình cho máy tính là hết sức cần thiết bởi vì các chương trình là linh hồn của máy tính. Trong xây dựng chương trình để có một chương trình có hiệu quả cần phải có chuyên gia phân tích bài toán đưa ra sơ đồ thuật toán và từ đó các lập trình viên tiến hành sinh mã nguồn cho chương trình. Vấn đề đặt ra liệu có thể xây dựng một phần mềm hỗ trợ người lập trình xây dựng sơ đồ thuật toán hay không? Với mong muốn đó... em lựa chọn đề tài: “Xây dựng công cụ tạo sơ đồ khối”


Phần 2. Cơ sở lý thuyết 2.1 Giải thuật 1. Khái niệm giải thuật Giải thuật 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 các thao tác trên những dữ liệu vào sao cho sau một số hữu hạn bước thực hiện các thao tác đó ta thu được kết quả của bài toán. Ví dụ 1: Giả sử có hai bình A và B đựng hai loại chất lỏng khác nhau, chẳng hạn bình A đựng rượu, bình B đựng nước mắm. Giải thuật để hoán đổi (swap) chất lỏng đựng trong hai bình đó là: 1 􀂃Yêu cầu phải có thêm một bình thứ ba gọi là bình C. 2 􀂃Bước 1: Đổ rượu từ bình A sang bình C. 3 􀂃Bước 2: Đổ nước mắm từ bình B sang bình A. 4 􀂃Bước 3: Đổ rượu từ bình C sang bình B. Ví dụ 2: Một trong những giải thuật tìm ước chung lớn nhất của hai số a và b là: 1 􀂃Bước 1: Nhập vào hai số a và b. 2 􀂃Bước 2: So sánh 2 số a,b chọn số nhỏ nhất gán cho UCLN. 3 􀂃Bước 3: Nếu một trong hai số a hoặc b không chia hết cho UCLN thì thực hiện bước 4, ngược lại (cả a và b đều chia hết cho UCLN) thì thực hiện bước 5. 4 􀂃Bước 4: Giảm UCLN một đơn vị và quay lại bước 3 5 􀂃Bước 5: In UCLN - Kết thúc

2 Các đặc trưng của giải thuật 1 o Tính kết thúc: Giải thuật phải dừng sau một số hữu hạn bước. 2 o Tính xác định: Các thao tác máy tính phải thực hiện được và các máy tính khác nhau thực hiện cùng một bước của cùng một giải thuật phải cho cùng một kết quả. 3 o Tính phổ dụng: Giải thuật phải "vét' hết các trường hợp và áp dụng cho một loạt bài toán cùng loại. 4 o Tính hiệu quả: Một giải thuật được đánh giá là tốt nếu nó đạt hai tiêu chuẩn sau: - Thực hiện nhanh, tốn ít thời gian. - Tiêu phí ít tài nguyên của máy, chẳng hạn tốn ít bộ nhớ.


Giải thuật tìm UCLN nêu trên đạt tính kết thúc bởi vì qua mỗi lần thực hiện bước 4 thì UCLN sẽ giảm đi một đơn vị cho nên trong trường hợp xấu nhất thì UCLN=1, giải thuật phải dừng. Các thao tác trình bày trong các bước, máy tính đều có thể thực hiện được nên nó có tính xác định. Giải thuật này cũng đạt tính phổ dụng vì nó được dùng để tìm UCLN cho hai số nguyeên dương a và b bất kỳ. Tuy nhiên tính hiệu quả của giải thuật có thể chưa cao; cụ thể là thời gian chạy máy có thể còn tốn nhiều hơn một số giải thuật khác mà chúng ta sẽ có dịp trở lại trong phần lập trình C.

3 Các phương pháp biểu diễn giải thuật Để biểu diễn giải thuật, cần phải có một tập hợp các ký hiệu dùng để biểu diễn, mỗi ký hiệu biểu diễn cho một hành động nào đó. Tập hợp các ký hiệu đó lại tạo thành ngôn ngữ biểu diễn giải thuật. 3.1 Ngôn ngữ tự nhiên Ngôn ngữ tự nhiên là ngôn ngữ của chúng ta đang sử dụng, chúng ta có thể sử dụng ngôn ngữ tự nhiên để mô tả giải thuật giống như các ví dụ ở trên. Ví dụ: Ta có giải thuật giải phương trình bậc nhất dạng 0=+bax như sau: 1 􀂃Bước 1: Nhận giá trị của các tham số a, b 2 􀂃Bước 2: Xét giá trị của a xem có bằng 0 hay không? Nếu a=0 thì làm bước 3, nếu a khác không thì làm bước 4. 1 􀂃Bước 3: (a bằng 0) Nếu b bằng 0 thì ta kết luận phương trình vô số nghiệm, nếu b khác 0 thì ta kết luận phương trình vô nghiệm. 2 􀂃Bước 4: ( a khác 0) Ta kết luận phương trình có nghiệm x=-b/a Ưu nhược điểm. 1. Dễ hiểu, dễ làm 2. Phụ thuộc vào “cách hành văn” của người diễn đạt 3. 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à 4. … 3.2 Diễn đạt thuật giải bằng giả ngôn ngữ 3.2.1. Giả ngôn ngữ: 1. Dựa trên ngôn ngữ lập trình bậc cao 2. Gần với ngôn ngữ tự nhiên của con người Ví dụ: Ngôn ngữ giả Pascal (tựa Pascal) có các ký pháp khá giống với ngôn ngữ lập trình Pascal, được rút gọn sao cho dễ diễn đạt 3.2.2. Diễn đạt thuật giải bằng giả ngôn ngữ


Giả ngôn ngữ được đưa ra với mục đích diễn đạt các giải thuật sao cho gần với ngôn ngữ lập trình và ngôn ngữ tự nhiên. Sử dụng giả ngôn ngữ khiến việc chuyển từ giải thuật sang chương trình dễ dàng hơn. Ví dụ: Giải thuật tính tổng n số tự nhiên đầu tiên Nhập N i:=0 S:=0 REPEAT S:=S+i i:=i+1 UNTIL (i>N) In S

3.3. Ngôn ngữ Lưu đồ (sơ đồ) 3.3.1. Ngôn ngữ Lưu đồ Ngôn ngữ sơ đồ (lưu đồ) là một ngôn ngữ đặc biệt dùng để mô tả giải thuật bằng các sơ đồ hình khối. Mỗi khối qui định một hành động.

Chẳng hạn ta dùng lưu đồ để biểu diễn giải thuật tìm UCLN nêu trên như sau:


3.3.2.Ưu nhược điểm. Ưu điểm của lưu đồ a. Lưu đồ là phương pháp tốt để truyền đạt lập luận của giải thuật. b. Lưu đồ giúp phân tích vấn đề một cách hiệu quả. c. Lưu đồ đóng vai trò như người hướng dẫn trong giai đoạn phát triển chương trình. d. Dễ tìm và sửa lỗi bằng lưu đồ. e. Lưu đồ trợ giúp đắc lực trong việc bảo trì chương trình Điểm yếu của lưu đồ a. Lưu đồ dài có thể trãi ra trên nhiều trang, làm giảm tính dễ đọc. b. Việc vẽ lưu đồ bằng các công cụ đồ hoạ là việc làm tốn nhiều thời gian. c. Thay đổi chỉ một bước nào đó có thể dẫn đến việc vẽ lại toàn bộ lưu đồ. d. Lưu đồ biểu diễn giải thuật phức tạp có thể chứa rất nhiều đường kết nối. Điều này làm giảm tính dễ đọc, tốn thời gian để vẽ và hiểu lập luận của giải thuật. 3.3.3 Các qui tắc vẽ lưu đồ


American National Standards Institute (ANSI) đề nghị một số qui luật cần phải tuân theo khi vẽ lưu đồ như sau: • • • • • • • • •

Toàn bộ lưu đồ nên được biểu diễn bằng ký hiệu chuẩn. Lưu đồ nên rõ ràng, chính xác và dễ theo dõi. Lưu đồ chỉ nên có một điểm bắt đầu và một điểm kết thúc. Các bước trong lưu đồ nên đi từ trên xuống và đi từ trái sang phải. Tất cả dữ liệu nhập phải được liệt kê hết theo một thứ tự hợp lý. Ký hiệu bắt đầu và kết thúc chỉ nên có một đường kết nối duy nhất. Ký hiệu nhập dữ liệu, xử lý, xuất dữ liệu, hiển thị nên có hai đường kết nối để nối ký hiệu đứng trước và đứng sau chúng. Ký hiệu quyết định nên có một đường kết nối với ký hiệu trước nó và có hai đường kết nối đến hai ký hiệu đứng sau nó. Nếu có quá nhiều đường kết nối làm cho lưu đồ trở nên phức tạp thì nên dùng ký hiệu kết nối trang để giảm số đường kết nối.

Phần 3. Phân tích mục đích, nhiệm vụ 1. Mục đích: Trong xây dựng để có một ngôi nhà chắc chắn cần phải có bản thiết kế chính xác, rõ ràng. Điều này có thể thực hiện thông qua bộ công cụ hỗ trợ vẽ thiết kế AutoCad. Trong lập trình để có một chương trình đúng với yêu cầu cần phải có một sơ đồ thuật toán chính xác, rõ ràng. Và mục đích của đề tài này là xây dựng phần mềm hỗ trợ người lập trình xây dựng sơ đồ thuật toán. Kết quả của đề tài này là một sản phẩm phần mềm trong đó có đầy đủ các đối tượng hỗ trợ vẽ sơ đồ khối và có các tính năng cho phép người sử dụng tạo lập sơ đồ khối một cách thuận tiện, đơn giản, chính xác và rõ ràng.

2. 3. Yêu cầu: - Để xây dựng được sơ đồ thuật toán chính xác, rõ ràng trước hết phải tìm hiểu lý thuyết: + Thế nào là thuật toán?


+ Có những cách biểu diễn thuật toán nào? + Ưu nhược điểm của các cách biểu diễn - Sau khi tìm hiểu lý thuyết cần phải xác định rõ phương pháp biểu diễn bài toán bằng sơ đồ khối có ưu điểm gì hơn so với các phương pháp khác. Từ đó chi tiết hóa các khối gồm những thành phần gì? Cách liên kết các khối như thế nào? Tình tự thực hiện của sơ đồ ra sao…. - Từ những lý thuyết tìm hiểu ở trên xác định phương pháp xây dựng công cụ hỗ trợ người lập trình tạo sơ đồ khối. - Có thể có nhiều ngôn ngữ lập trình có thể giải quyết được bài toán này chẳng hạn như: Turbo Pascal, Turbo C, Visual Basic, … Mỗi ngôn ngữ đều có ưu nhược điểm vì vậy cần tìm hiểu kỹ để tìm ra ngôn ngữ thích hợp thể hiện bài toán. - Sau khi tìm hiểu ngôn ngữ và xác định phương pháp xây dựng tiến hành xây dựng sản phẩm. Tiến hành kiểm thử chương trình, bắt lỗi và sửa lỗi để có một chương trình hoàn thiện


luan van ve thuat toan