1. Trang chủ
  2. » Luận Văn - Báo Cáo

kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển

65 1,4K 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

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 4,35 MB

Nội dung

Nội dung nghiên cứu của đồ án tập trung vào tập trung tìm hiểu về lý thuyết phân tíchchương trình tĩnh và áp dụng lý thuyết đó vào ngôn ngữ java để xây dựng ứng dụngchuyển đổi mã nguồn s

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

──────── * ───────

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

NGÀNH CÔNG NGHỆ THÔNG TIN

KỸ THUẬT PHÂN TÍCH MÃ NGUỒN VÀ XÂY DỰNG ỨNG DỤNG CHUYỂN ĐỔI MÃ NGUỒN JAVA SANG CẤU TRÚC ĐIỀU

Trang 2

HÀ NỘI 6-2011

Trang 3

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

1 Thông tin về sinh viên

Họ và tên sinh viên: Vũ Đức Minh

Điện thoại liên lạc 01687954897 Email: minhvd88@gmail.com

Lớp: CNPM-K51 Hệ đào tạo: Đại học chính quy

Đồ án tốt nghiệp được thực hiện tại: Viện công nghệ thông tin và truyền thông

Thời gian làm ĐATN: Từ ngày 15 / 01 /2011 đến 28 / 05 /2011

2 Mục đích nội dung của ĐATN

Tìm hiểu về phân tích mã nguồn Ứng dụng làm phần mềm chuyển đổi mã nguồn ngôn ngữ java sang flow chart

3 Các nhiệm vụ cụ thể của ĐATN

 Tìm hiểu lý thuyết phân tích tĩnh chương trình

 Tìm hiểu cấu trúc hóa chương trình sử dụng cây AST (Astract Syntax Tree)

 Ứng dụng lý thuyết phân tích chương trình xây dựng phần mềm chuyển đổi mãnguồn Java thành sơ đồ khối

4 Lời cam đoan của sinh viên:

Tôi – Vũ Đức Minh - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của và PGS.TS Huỳnh Quyết Thắng

Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳcông trình nào khác

Hà Nội, ngày tháng năm

Tác giả ĐATN

Vũ Đức Minh

5 Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảovệ:

Trang 4

Hà Nội, ngày tháng năm

Giáo viên hướng dẫn

PGS.TS Huỳnh Quyết Thắng

Trang 5

MỤC LỤC

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 3

MỤC LỤC 5

LỜI CẢM ƠN 7

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 8

ABSTRACT OF THESIS 9

DANH MỤC TỪ VIẾT TẮT 10

DANH MỤC HÌNH ẢNH 11

LỜI NÓI ĐẦU 13

1 Lý do chọn đề tài 13

2 Bố cục của đồ án: 13

Chương 1: Giới thiệu tổng quan về phân tích mã nguồn chương trình 15

1.1 Giới thiệu chung vể phân tích mã nguồn 15

1.2 Phương pháp phân tích mã nguồn tĩnh 15

1.2.1 Các loại phân tích tĩnh 16 1.2.2 Quá trình phân tích chương trình tĩnh 18 1.2.3 Cây phân tích 20 1.2.4 Sử dụng cây phân tích các câu lệnh trong chương trình 21 1.3 Sử dụng cây cú pháp trừu tượng (AST) để phân tích 21

Kết chương 1 22

Chương 2: Bài toán chuyển đổi mã nguồn sang sơ đồ khối 24

2.1 Tầm quan trọng của sơ đồ khối ( flowchart) 24

2.2 Giới thiệu bài toán chuyển đổi mã nguồn sang sơ đồ khối 25

2.3 Một số phần mềm tiêu biểu chuyển đổi mã nguồn sang flowchart 26

2.3.1 Visustin 26 2.3.2 Code visual to flowchart 26 Kết chương 2 27

Chương 3: Xây dựng chương trình chuyển đổi mã nguồn java sang flowchart .28

Trang 6

3.1 Mô tả phần mềm và giới hạn chương trình 28

3.1.1 Mô tả 28

3.1.2 Giới hạn chương trình 28

3.2 Thiết kế và xây dựng chương trình 29

3.2.1 Thiết kế tổng quan của chương trình 29

3.2.2 Chi tiết xây dựng chương trình 29

3.3 Kết quả chương trình 45 3.4 Thử nghiệm đánh giá so sánh 56

Trang 7

LỜI CẢM ƠN

Lời đầu tiên em xin phép được bày tỏ lòng biết ơn sâu sắc nhất tới PGS.TS Huỳnh

Quyết Thắng, Viện Công nghệ thông tin và Truyền thông, trường Đại học Bách Khoa Hà

Nội Thầy đã tận tình hướng dẫn và dìu dắt em trong thời gian thực tập tốt nghiệp cũngnhư thời gian làm đồ án tốt nghiệp

Em xin chân thành cảm ơn các thầy cô trường Đại học Bách Khoa Hà Nội, đặc biệt làcác thầy cô trong viện Công nghệ thông tin và truyền thông.Các thầy cô đã chỉ bảo, dạy dỗ

em kể từ những ngày đầu tiên bước vào trường đại học cho đến khi tốt nghiệp

Lời cuối cùng em xin được cảm ơn gia đình, bạn bè đã luôn ở bên cạnh động viên và tạođiều kiện cho em trong suốt những năm học vừa qua

Hà Nội, ngày 28 tháng 5 năm 2011

Vũ Đức Minh

Trang 8

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP

Phân tích chương trình là một giai đoạn quan trọng trong quá trình phát triển phầnmềm Nó đem lại rất nhiều ứng dụng to lớn đối với sự phát triển của phần mềm Phân tíchchương trình tĩnh và phân tích chương trình động là hai phần lớn trong quá trình phân tíchchương trình, và đều được phát triển rộng rãi Phân tích tĩnh chỉ phân tích chương trình màkhông cần biết chương trình đó sẽ chạy như thế nào, do đó phân tích tĩnh chương trình cókhả năng đưa ra nhiều hướng giải quyết hơn so với phân tích động Kết quả của quá trìnhphân tích tĩnh được sử dụng vào nhiều ứng dụng từ việc phát hiện ra lỗi trong mã nguồnđến cấu trúc hóa chương trình

Nội dung nghiên cứu của đồ án tập trung vào tập trung tìm hiểu về lý thuyết phân tíchchương trình tĩnh và áp dụng lý thuyết đó vào ngôn ngữ java để xây dựng ứng dụngchuyển đổi mã nguồn (source code) của java sang sang cấu trúc điều khiên hay còn gọi sơ

đồ khối (flowchart)

Luận văn gồm 3 chương:

Chương 1 giới thiệu chung về phân tích chương trình, giới thiệu lý thuyết phân tích tĩnh

Chương 2 giới thiệu về sơ đồ khối (flowchart) , đưa ra bài toán chuyển đổi mã nguồnsang sơ đồ khối

Chương 3 là phần chương trình đã thực hiện được Giới thiệu thiết kế và kết quả đạtđược

Cuối cùng là kết luận chung và hướng phát triển

Trang 9

ABSTRACT OF THESIS

Program analysis is an important stage in the process of software development Itbrings so many great applications for the development of software Static analysis anddynamic analysis are two main analysis programs The are widely developed The staticanalysis program analysis program without knowing how it will run, so a static programanalysis can provide more solutions than the dynamic analysis Results of static analysisprocess is used in many applications since the discovery of errors in the source code tostructured programs

The content of the research concentrates theoretical static analysis, and applies it tobuild a software which can convert source code java language to flowchart

The thesis consists of 3 chapters

+ Chapter 1 is general information about program analysis, the theoretical staticanalysis

+ Chapter 2 is the introduction of flowchart, and propose the problem to convertsource code to flowchart

+ Chapter 3 focuse on building the application : Convert source code java language toflowchart

Finally, final chapter is used to conclusion; we will summarize the theory and theimplementation to get the final result of this thesis

Trang 10

DANH MỤC TỪ VIẾT TẮT

STT Từ viết tắt Từ tiếng Anh Nghĩa tiếng Việt

1 AST Abstract Syntax Tree Cây cú pháp trừu tượng

2 IDEs Integrated Development

Environments

Môi trường phát triển tíchhợp

Trang 11

DANH MỤC HÌNH ẢNH

Hình 1: Ví dụ cây ngữ pháp 20

Hình 2: Cây ngữ pháp trừu tượng (Abstract Syntax Tree) [2] 21

Hình 3: Ví dụ sơ đồ khối 24

Hình 4: Ví dụ Visustin 25

Hình 5: Ví dụ Code visual to flowchart 26

Hình 6: Sơ đồ thực hiện phân tích chương trình 28

Hình 7: Sơ đồ chuyển từ source code sang cây AST 29

Hình 8: Ví dụ chuyển từ source code sang cây AST 35

Hình 9: Ví dụ 2 chuyển source code sang AST 36

Hình 10: Lớp Converter 37

Hình 11: Sơ đồ chuyển từ AST sang flowchart 41

Hinh 12: Lớp Flowchart 42

Hình 13: Ví dụ chuyển đổi từ AST sang Flowchart 43

Hình 14: Ví dụ chuyển đổi tử Source code sang AST đến Flowchart 43

Hình 15: Giao diện của chương trình 44

Hình 16: Giao diện ví dụ 3.3.1 45

Hình 17: Kết quả ví dụ 3.3.1 45

Hình 18: Giao diện ví dụ 3.3.2 46

Hình 19: Kết quả ví dụ 3.3.2 46

Hình 20: Giao diện ví dụ 3.3.3 47

Hình 21: Kết quả ví dụ 3.3.3 48

Hình 22: Giao diện ví dụ 3.3.4 49

Hình 23: Kết quả ví dụ 3.3.4 50

Hình 24: Giao diện ví dụ 3.3.5 51

Hình 25: Kết quả ví dụ 3.3.5 51

Hình 26: Giao diện ví dụ 3.3.6 52

Hình 27: Kết quả ví dụ 3.3.6 53

Trang 12

Hình 28: Giao diện ví dụ 3.3.7 54

Hình 29: Kết quả ví dụ 3.3.7 55

Hình 30: Giao diện chương trình khi chạy thử nghiệm 1 56

Hình 31: Kết quả chương trình khi chạy thử nghiệm 1 57

Hình 32: Kết quả thực nghiệm 1 khi chạy bằng phần mềm visustin 58

Hình 33: Giao diện chương trình khi chạy thử nghiệm 1 61

Hình 34: Kết quả chương trình khi chạy thử nghiệm 2 62

Hình 35: Kết quả thực nghiệm 2 khi chạy bằng phần mềm visustin 63

Trang 13

LỜI NÓI ĐẦU

1 Lý do chọn đề tài

Công nghệ thông tin tuy còn non trẻ so với các ngành khác trên thế giới nhưng

nó đã và đang phát triển rất nhanh, mạnh mẽ Ảnh hưởng của nó lan tới hầu hết cáclĩnh vực khác Song song với đó là sự thay đổi trong cách thức phát triển phầnmềm Cũng giống như các ngành sản xuất khác, việc phát triển phần mềm đang có

xu hướng chuyển dịch từ các nước phát triển như Mĩ, hoặc các nước Châu Âu sangcác nước đang phát triển như Trung Quốc, Ấn Độ , Việt Nam…

Phân tích chương trình là một giai đoạn quan trọng trong quá trình phát triểnphần mềm Phân tích chương trình giúp cho người lập trình hiểu hơn về chươngtrình được viết Phân tích chương trình tĩnh và phân tích chương động là hai phầnlớn trong quá trình phân tích chương trình, và đều được phát triển rộng rãi

Một trong những vấn đề lớn trong kĩ thuật phân tích chương trình đó là môhình hóa chương trình ở cấp độ cao hơn, thay vì ở mức độ bắt buộc Dựa vào nhữngthể hiện ở mức cao của mã nguồn, bộ dịch có thể thực hiện tổ chức lại mã nguồn,phân tích mã nguồn sâu hơn Phân tích tĩnh chỉ phân tích chương trình mà khôngcần biết chương trình đó sẽ chạy như thế nào, do đó phân tích tĩnh chương trình cókhả năng đưa ra nhiều hướng giải quyết hơn so với phân tích tĩnh Kết quả của quátrình phân tích tĩnh được sử dụng vào nhiều ứng dụng từ việc phát hiện ra lỗi trong

mã nguồn đến cấu trúc hóa chương trình

Trên cơ sở đó, nội dung nghiên cứu của đồ án tập trung vào tập trung tìm hiểu

về lý thuyết phân tích chương trình tĩnh và áp dụng lý thuyết đó vào ngôn ngữ java

để xây dựng ứng dụng chuyển đổi mã nguồn (source code) của Java sang sang cấutrúc điều khiên hay còn gọi sơ đồ khối (flowchart)

2 Bố cục của đồ án:

Đồ án được chia làm 3 chương bao gồm các nội dung sau:

Chương 1: Giới thiệu tổng quan về phân tích mã nguồn chương trình: Giới

thiệu chung về phân tích mã nguồn, phân tích lý thuyết về phương pháp phân tích

Trang 14

Chương 3: Xây dựng chương trình chuyển đổi mã nguồn Java sang sơ đồ khối:

Đưa ra phân tích thiết kế cũng như thuật toán cài đặt chương trình và kết quả đã đạtđược

Phần cuối cùng là kết luận chung và hướng phát triển tiếp theo của đề tài

Trang 15

Chương 1: Giới thiệu tổng quan về phân tích mã nguồn chương trình

Nội dung của chương này sẽ trình bày các vấn đề sau:

Giới thiệu chung vể phân tích mã nguồn

Phương pháp phân tích mã nguồn tĩnh

Sử dụng cây cú pháp trừu tượng (AST) để phân tích

1.1 Giới thiệu chung vể phân tích mã nguồn

Quá trình phân tích chương trình là quá trình phân tích các hành vi của mộtchương trình Phân tích chương trình bao gồm các động cơ, cách thức cơ bản và cácphương thức Có hai cách cơ bản để tiếp cận quá trình phân tích chương trình đó làphân tích tĩnh và quá trình phân tích động Mỗi phương pháp tiếp cận khác nhau sẽkhác nhau về phương pháp cụ thể nhưng đều cung cấp những cái nhìn dưới các góc

độ khác nhau về chương trình được phân tích Phân tích tĩnh là quá trình phân tíchđược thực hiện mà chương trình được phân tích chưa thực sự được chạy [7] Quátrình phân tích động được thực hiện khi mã nguồn được chạy thực sự trong một hệthống nào đó Để quá trình phân tích động hiệu quả, đầu vào cần một là chươngtrình đầy đủ, chính xác về mặt ngữ pháp của ngôn ngữ chương trình Mục đích củaquá trình phân tích động là tìm ra lỗi khi chương trình được chạy hơn là khi chươngtrình chưa được thực hiện[8] Để có thể tìm được toàn bộ lỗi trong chương trình,cần thực hiện đầy đủ các quá trình phân tích tĩnh lẫn phân tích động, điều này giúpcho người sử dụng giảm chi phí gỡ lỗi cũng như bảo dưỡng chương trình

1.2 Phương pháp phân tích mã nguồn tĩnh

Phân tích tĩnh là quá trình phân tích có thể xác định được lỗi một các nhanhchóng ngay cả khi chương trình chưa được chạy Việc phát hiện được lỗi sớmkhông những giảm chi phí cho việc gỡ lỗi mà nó còn có thể sớm đưa ra các phảnhồi để người lập trình có thể sớm có phương pháp để gỡ lỗi.[7]

Lý thuyết của quá trình phân tích tĩnh là tìm hiểu cách thức hoạt động của từngcâu lệnh Thông tin thu được trong quá trình phân tích sẽ được dùng để làm rõnhững phần trong mã nguồn gây lỗi

Trang 16

1.2.1 Các loại phân tích tĩnh

Các công cụ sử dụng phương pháp phân tích tĩnh được sử dụng rộng rãi trongcác chương trình dịch Các công cụ được phân làm nhiều loại như phân tích tĩnh đểxác định kiểu, phân tích ngữ pháp, phân tích để hiểu chương trình, phân tích tìm lỗi,

…[2]

+Phân tích kiểu

Phân tích kiểu sẽ giúp người lập trình biết được các lỗi lập trình như gán nhầmbiến, bằng việc bắt các lỗi trong thời gian dịch việc phân tích tĩnh có thể tránh đượccác lỗi về thời gian chạy Phân tích kiểu hạn chế bằng việc phân tích để tìm ra cáclỗi dựa vào quá trình khẳng định sai và phủ nhận sai Phân tích kiểu là một phầntrong quá trình phân tích mã nguồn, do đó kết quả đưa ra sau quá trình phân tíchkiểu chưa thể nào là hoàn thiện để phân tích chương trình.[3]

+Phân tích ngữ pháp

Phân tích ngữ pháp là quá trình phân tích kĩ lưỡng hơn quá trình phân tích kiểu.Phân tích ngữ pháp sẽ đưa ra những vấn đề liên quan đến khoảng cách, chính tả,ngữ pháp, …Trong quá trình lập trình, lập trình viên sẽ phải tuân thủ theo một cấutrúc ngữ pháp nhất định tùy thuộc vào từng ngôn ngữ Trong quá trình phân tíchtĩnh dùng để phân tích ngữ pháp sẽ quy định các chuẩn ngữ pháp của ngôn ngữ đó.Phân tích ngữ pháp của chương trình sẽ đưa ra lỗi có khả năng đọc và những lỗi khảnăng bảo dưỡng của mã nguồn chứ không chỉ ra được những lỗi có thể xảy ra khichạy chương trình

Các bộ dịch khác nhau sẽ có các tùy chọn khác nhau dành cho phân tích ngữpháp của mã nguồn Các bộ dịch có thể sử dụng cờ khác nhau để báo lỗi khi xảy ra

sự cố với ngữ pháp Để tìm ra lỗi ngữ pháp trong một chương trình lớn thì rất khó

Do đó để quá trình phân tích ngữ pháp hiệu quả, khi chương trình bắt đầu quá trìnhphân tích tĩnh thì cần thu hẹp dần đầu vào cho quá trình phân tích tĩnh Quá trìnhphân tích tĩnh cho một chương trình lớn cần được tiến hành dần dần, từ nhỏ đến lớn

+ Phân tích chương trình tổng quan

Phân tích tổng quan chương trình giúp cho người sử dụng có cái nhìn tổng quát

về mã nguồn đã được viết Môi trường phát triển tích hợp (Integrated DevelopmentEnvironments-IDEs) luôn bao gồm ít nhất một vài hàm để xác định tổng quan củachương trình Một số ví dụ về quá trình phân tích tổng quan như là “Tìm các cách

sử dụng của phương thức này” hay “Tìm giá trị của biến được khai báo chungnày” Một số công cụ sử dụng quá trình phân tích này có thể còn được tích hợpthêm các chức năng như tự động xử lý các hàm, thủ tục trong chương trình như thaytên biến hoặc là chia các hảm đơn lẻ vào các chương trình con.[1] Một số chươngtrình dịch còn cho phép người dùng sinh mã hoặc một số chương trình còn cho phép

Trang 17

người dùng sử dụng phương pháp kĩ thuật ngược để tìm hiểu về mã nguồn, nhờ đó

đã đưa cho người lập trình một cái nhìn tổng quát về mã nguồn, đặc biệt là mãnguồn lớn Điều này rất cần thiết cho những người lập trình muốn có cái nhìn kháiquát nhất về một chương trình lớn với nhiều dòng lệnh mà không phải do chính họviết ra

+ Phân tích thẩm định và phân tích thuộc tính chương trình:

Phân tích thẩm định chương trình bằng phương pháp phân tích tĩnh là quá trìnhtìm hiểu một phần của chương trình hoặc một đoạn mã nguồn và cần phải chứngminh rằng đoạn mã nguồn được phân tích là đúng theo tiêu chuẩn đặc tả của thiết kếban đầu Nếu như đặc tả chương trình quy định tất cả những gì mà chương trình cầnphải làm theo đúng thế thì quá trình phân tích thẩm định cần phải cần phải có đủchức năng tương ứng để kiểm tra tình đúng đắn của chương trình so với đặc tả thiết

kế ban đầu

Trong quá trình phân tích thẩm định, người ta có thể sẽ cần đến việc kiểm tratương đương để kiểm tra chính xác từng dòng lệnh khớp với yêu cầu ban đầu Tuynhiên khái niệm kiểm tra tương đương là khái niệm thường được dùng trong kiểmtra phần cứng Hiếm khi nào người lập trình có được bản thiết kế chi tiết, đầy đủ đểtiến hành kiểm tra tương đương, hơn nữa công việc để viết đặc tả chi tiết đến cùngcòn mất nhiều thời gian và công sức hơn cả công việc lập trình Do đó, kiểu kiểmtra này thường không được dùng đến, cùng với đó là quá trình kiểm tra tươngđương không phải có thể áp dụng cho tất cả các chương trình được viết với kíchthước khác nhau

Một loại phân tích khác được dùng nhiều hơn trong thực tế là phân tích cácthuộc tính của chương trình hay còn được gọi là kiểm tra thuộc tính Các công cụ sửdụng phương pháp phân tích này tập trung tìm hiểu các thành phần của chươngtrình theo thứ tự thời gian Kiểu kiểm tra này sẽ tìm ra thứ tự các thành phần trongchương trình được thực hiện hay chưa được thực hiện Ví dụ như “thành phần lưutrữ bộ nhớ trong chương trình cần được đọc trước khi được giải phóng” Hầu hếtcác chương trình phân tích thuộc tính đều cho phép người lập trình tự viết đặc tảcủa họ để kiểm tra các thành phần trong chương trình họ viết Khi quá trình kiểmtra phát hiện ra mã nguồn không đúng với đặc tả của người lập trình thì nó sẽ đưa rathông báo với người lập trình bằng các bảng lỗi Ví dụ như khi chương trình mặc lỗi

về bộ nhớ nó sẽ đưa ra thông báo: “allocate memory should always be freed”

+ Phân tích tìm lỗi:

Phân tích tìm lỗi không phải là quá trình phân tích để tìm ra các vấn đề về địnhdạng chương trình, các lỗi ngữ pháp như phân tích ngữ pháp hay kiểm tra chươngtrình có được viết đúng đặc tả hay không như quá trình phân tích thuộc tính, hay

Trang 18

phân tích thẩm định Thay vào đó phân tích tìm lỗi sẽ tìm ra những vị trí nào trong

mã nguồn có sự thể hiện của nó không đúng như ý định ban đầu của người lập trình.Các chương trình phân tích tĩm lỗi thì dễ dàng được sử dụng bởi vì nó bao gồm một

bộ các luật, được coi như các mẫu thử của chương trình và từ đó tìm ra lỗi dựa trêncác mẫu thử đó

Một số công cụ tìm lỗi sử dụng cùng một giải thuật sắp xếp, tuy nhiên các công

cụ tìm lỗi khi phát hiện ra lỗi trong chương trình nó sẽ đưa ra thông báo lỗi cùng với

đó là các phương án khả thi có thể thực hiện để sửa lỗi đó trong chương trình

1.2.2 Quá trình phân tích chương trình tĩnh

Quá trình phân tích là quá trình phân chia chương trình nguồn thành các đoạn

mã nguồn và xử lý trên từng đoạn mã nguồn đó, cùng với đó là đưa ra dạng thể hiệntrung gian cho từng đoạn mã nguồn Quá trình phân tích sẽ tập trung vào việc phântích ngữ pháp của ngôn ngữ cần được dịch Phần này, ta tập trung việc tìm hiểuphân tích ngữ pháp của chương trình [7]

Ngữ pháp của ngôn ngữ lập trình sẽ thể hiện các quy tắc đúng đắn của mộtchương trình được viết bằng ngôn ngữ đó, còn các thành phần thuộc về từ ngữ học(semantic) có nghĩa là chương trình đó sẽ thế nào sau khi chạy Để đặc tả ngữ phápchúng ta sử dụng kí pháp Backus (BNF-Backus Naur Form) Khi các kí tự để thểhiện phần ngữ pháp trong chương trình sẽ được dùng trong kí pháp BNF có thểđược xử lý dễ dàng nhưng các thành phần thuộc về từ ngữ nghĩa của chương trình(semantic) thì rất khó biểu diễn Để biểu diễn các thành phần này, chúng ta cần đếncách biểu diễn phi hình thức và các ví dụ có tính gợi ý

+ Định nghĩa ngữ pháp:

Để phân tích ngữ pháp của chương trình, chúng ta sẽ sử dụng kí pháp BNFhoặc hay con gọi là kí pháp phi nội dung (context-free grammar) Ngữ pháp bảnchất đã miêu tả cấu trúc phân cấp của ngôn ngữ lập trình được sử dụng[3]

Ví dụ: câu lệnh if-else của ngôn ngữ lập trình Java:

If (biểu thức) câu lệnh else câu lệnh

Cấu trúc ngữ pháp trên thể hiện câu lệnh if-else từ khóa if là từ khóa thể hiện câu lệnh if bắt đầu Dấu mở ngoặc đơn thể hiện bắt đầu biểu thức, đóng ngoặc đơn kết thúc biểu thức bắt đầu câu lệnh đầu tiên, từ khóa else bắt đầu là sự kết thúc của

câu lệnh đầu, bắt đầu của câu lệnh tiếp theo Để phân tích câu lệnh này, ta sẽ sử

dụng biến epr để thể hiện cho biểu thức, biến stmt biểu thị cho câu lệnh thì cấu trúc

ngữ pháp của câu lệnh trên có thể được thể hiện như sau:

Stmt if (epr) stmt else stmt

Trang 19

Trong đó mũi tên ” có thể được đọc là “có thể có dạng như sau” Mũi tên

còn được hiểu là luật sản xuất, trong kí pháp BNF thì if, else là các ký tự kết thúc

(terminal) còn epr, stmt là các kí tự không kết thúc (nonterminal)

+ Kí pháp phi nội dung có bốn thành phần chính:

 Bộ các kí tự kết thúc còn được gọi là các kí hiệu kết thúc Các kí tự kết thúcnày là các từ khóa của câu lệnh, từ khóa của chương trình được được quy định bởingôn ngữ lập trình

 Bộ các kí hiệu không kết thúc hay còn được gọi là các biến kí pháp Mỗi kíhiệu không kết thúc là chuỗi các kí tự đầu cuối mà người ta dùng để biểu chươngtrình chạy

 Bộ các luật sản xuất bao gồm các kí tự được gọi là phía bên trái hoặc bênphải của luật sản xuất, mũi tên ”, dãy các kí tự kết thúc và không kết thúc

 Một kí tự bắt đầu

+ Để đặc tả ngữ pháp của chương trình, chúng ta sẽ sử dụng các luật sản xuấtvới kí tự bắt đầu sẽ được miêu tả đầu tiên Các kí tự toán học như <, >=, hoặc các từ

khóa được in đậm như while sẽ là các kí tự cuối Các từ viết in nghiêng là các kí tự

không kết thúc, còn các kí tự không in nghiêng còn lại sẽ được xếp vào các loại kí

tự kết thúc Để cho thuận tiện, các luật sản xuất có cùng kí hiệu không kết thúcgiống như phần đầu thì có thể được nhóm lại, các thành phần sẽ cách nhau bởi dấu |,được đọc là “hoặc”

Ví dụ 2.2.1 : Để đơn giản, ở đây ta sẽ sử dụng ví dụ về chuỗi phép cộng trừ Vìcác cộng, trừ liên quan đến các con số do đó chúng ta sẽ có những chuỗi cộng,chuỗi trừ Các dấu cộng hoặc trừ xuất hiện giữa các số do đó ta sẽ có các “chuỗiphân chia bởi dấu cộng hoặc trừ“ Cấu trúc ngữ pháp cho các số này sẽ được biểudiễn trong BNF bằng luật sản xuất sau:

digit 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (a4)

Trang 20

Phía bên phải của luật sản xuất giống với phía bên trái do đó ta có thể nhóm lạinhư sau:

A có luật sản xuất A X Y Z, do đó cây phân tích sẽ có node xuất phát nhãn A với

3 node con nhãn là X, Y, Z từ trái qua phải [2]

Cây phân tích sẽ bao gồm các thành phần sau:

Trong trường hợp A thì node A sẽ có 1 lá nhãn là

Quay trở lại với với ví dụ 2.1.2b Để xây dựng cây phân tích cho biểu thức 9-5+2 thì mỗi node trong cây sẽ là các kí hiệu ngữ pháp Các node trong và lá của nó

để thể hiện các luật sản xuất Trong ví dụ sau đây, list là node bắt đầu, node lá sẽ có

Trang 21

nhãn là list, +, digit Kết quả của cây phân tích sẽ là chuỗi cần được phân tích 9 – 5

+2

Hình 1: Ví dụ cây ngữ pháp

1.2.4 Sử dụng cây phân tích các câu lệnh trong chương trình

Các từ khóa trong câu lệnh cho phép chúng ta nhận ra chúng bởi vì đa số cáccâu lệnh đều bắt đầu bằng các từ khóa hoặc kí tự đặc biệt Chỉ có các lệnh gán, lệnhgọi hàm, thủ tục thì sẽ nằm ngoài quy luật này Do đó để phân tích các loại câu lệnhtrong ngôn ngữ lập trình, người ta cũng dùng đến cây phân tích ngữ pháp Biến

stmts có thể rỗng nên trong luật sản xuất, chúng ta sử dụng đến kí tự rỗng Luật sản

xuất đầu tiên đã thể hiện điều này[2]

Ví dụ trong ngôn ngữ Java, chúng ta có thể phân tích các câu lệnh trong ngônngữ lập trình này như sau:

stmt id = expression ; | if (expression) statement | if (expression) stmt else

xuất hiện để tránh việc dấu chấm phẩy sẽ xuất hiện ở cuối mỗi câu lệnh if- và

while- khi xuất hiện các câu lệnh lồng nhau Dấu chấm phẩy sẽ xuất hiện khi các

câu lệnh con xuất hiện lồng bên trong chương trình

1.3 Sử dụng cây cú pháp trừu tượng (AST) để phân tích

Trang 22

Phân tích chương trình sử dụng cây ngữ pháp là một phương pháp miêu tả mãnguồn một cách trực quan Các chương trình được phân tích bằng cây ngữ pháptrừu tượng thì mã nguồn của chương trình sẽ được thể hiện trực tiếp trên node củacây Node trong cây ngữ pháp trừu tượng có được là từ luật sản xuất ngữ pháp củangôn ngữ lập trình Những luật sản xuất này sẽ đưa ra các kí tự có trong ngôn ngữlập trình để hỗ trợ cho quá trình phân tích dễ dàng và không có nhập nhằng Tuynhiên, với mục tiêu xây dựng cây ngữ pháp dễ dàng phân tích như vậy thì cây ngữpháp trừu tượng có thể trở nên rất khó để hiểu Cây ngữ pháp trừu tượng là cấu trúcngữ pháp được sử dụng để phân tích chương trình tĩnh Mục đích của cây ngữ pháptrừu tượng là cung cấp một phiên bản chuẩn của chương trình phù hợp để chuẩn bịcho quá trình phân tích Cây ngữ pháp trừu tượng được xây dựng dựa trên sự kếthợp giữa cấu trúc của mã nguồn chương trình và luật sản xuất ngữ pháp.

Ví dụ việc sử dụng cây phân tích ngữ pháp để phân tích cây ngữ pháp trừu

tượng để phân tích cấu trúc ngữ pháp của câu lệnh if-then-else Cần để ý rằng trong câu lệnh if-then-else có thể có hoặc không có thành phần else do đó trong ví dụ này

ta sẽ xét phần chính của câu lệnh if-then:

Hình 2: Cây ngữ pháp trừu tượng (Abstract Syntax Tree) [2]

Tùy thuộc vào yêu cầu của từng trường hợp mà cây ngữ pháp trừu tượng có thể

có ít cấu trúc hơn mã nguồn Ví dụ như trong phương thức gọi thì có thể chuyểnthành hàm gọi, hoặc là vòng lặp for-do-loop có thể chuyển thành vòng lặp while-do.Quá trình phân tích tĩnh có thể đưa ra thông báo lỗi hoặc không đưa ra thôngbáo lỗi về kiểu theo cách mà các bộ dịch vẫn thông báo bởi vì thông tin về kiểu làthông kin rất quan trọng khi phân tích các chương trình viết bằng ngôn ngữ lập trìnhhướng đối tượng Kiểu của một đối tượng sẽ xác định bộ các phương thức mà đốitượng đó có thể gọi Sử dụng cây ngữ pháp trừu tượng người ta có thể phân tích ngữnghĩa của chương trình Sau quá trình phân tích ngữ nghĩa của chương trình, bướctiếp theo của quá trình phân tích tĩnh sẽ là xây dựng dạng thể hiện trung gian củachương trình nguồn Dạng thể hiện trung gian của chương trình nguồn là dạng thểhiện dễ dàng để tối ưu việc phân tích mã nguồn, sau đó dạng thể hiện sẽ được thayđổi tiếp tùy theo các bước phân tích mã nguồn của quá trình phân tích tĩnh [2]

Trang 23

Kết chương 1

Trong quá trình phân tích chương trình, việc tìm hiểu các dạng biến đổi củachương trình ban đầu để hỗ trợ cho quá trình phân tích là quá trình quan trọng Đểphân tích chương trình thì việc phân tích từng câu lệnh, các khối dữ liệu chuyển quagiữa các thành phần trong chương trình cần dùng đến biểu đồ luồng điều khiển củachương trình đó

Kết quả của quá trình phân tích tĩnh được sử dụng vào nhiều ứng dụng từ việcphát hiện ra lỗi trong mã nguồn đến cấu trúc hóa chương trình

Trong chương tiếp theo ta sẽ tìm hiểu về sơ đồ khối và đưa ra bài toán ứngdụng của phân tích mã nguồn để chuyển đổi mã nguồn về dạng sơ đồ khối

Trang 24

Chương 2: Bài toán chuyển đổi mã nguồn sang sơ đồ khối

Nội dung của chương này sẽ trình bày các vấn đề sau:

Tầm quan trọng của sơ đồ khối (flowchart)

Giới thiệu bài toán chuyển đổi mã nguồn sang sơ đồ khối

Một số phần mềm chuyển đổi mã nguồn sang sơ đồ khối

2.1 Tầm quan trọng của sơ đồ khối ( flowchart)

Sơ đồ khối có vai trò rất quan trọng trong các lĩnh vực và đặc biệt trong côngnghệ thông tin Ngay từ khi mới bắt đầu học tin học ta đã làm quen với sơ đồ khối

để biểu diễn một thuật toán Nó rất dễ quan sát và hình dung khiến cho người đọcnắm bắt nhanh hơn, người viết dễ dàng biểu diễn được ý tưởng của mình

Ví dụ khi phải viết một chương trình tính N!  trước tiên ta mô phỏng thuậttoán tính N! bằng sơ đồ khối như sau:

Trang 25

Hình 3: Ví dụ sơ đồ khối

Sau khi vẽ sơ đồ khối, sẽ rất dễ dàng để triển khai công việc qua các ngôn ngữlập trình

2.2 Giới thiệu bài toán chuyển đổi mã nguồn sang sơ đồ khối

Như ta đã thấy ở trên vai trò của sơ đồ khối trong công nghệ thông tin rất lớn.Thông thường trước khi lập trình đều vẽ trước sơ đồ khối để quan sát và đánh giá.Vấn đề là trong khi học tập, nghiên cứu, cũng như làm việc chúng ta rất hay gặpnhững trường hợp phải đọc mã nguồn của người khác để phục vụ cho công việc củamình Vì không phải là người trực tiếp viêt ra mã nguồn đó nên rất khó và tốn thờigian để hiểu nội dung cũng như ý tưởng của nó

Do đó thật là tiện lợi nếu như có thể chuyển đổi những mã nguồn phức tạp đó

về dạng sơ đồ khối Lúc đó ta sẽ tiết kiệm được rất nhiều thời gian và tiền bạc

Trang 26

Vì lý do đó nên em đưa ra bài toán chuyển đổi mã nguồn sang sơ đồ khối đểlàm ứng dụng trong đồ án này

2.3 Một số phần mềm tiêu biểu chuyển đổi mã nguồn sang flowchart

Trên thị trường hiện nay cũng có một vài phần mềm có chức năng tương tự, nổibật là 2 phần mềm sau

2.3.1 Visustin

Phần mềm có thể tự động chuyển mã nguồn của hơn 30 ngôn ngữ lập trình sangflowchart: Ada, ASP, assembler, BASIC, C, C++, C#, Clipper, COBOL,ColdFusion, Delphi, Fortran, Java, JavaScript, JCL, JSP, LotusScript, Matlab,Pascal, Perl, PHP, PL/I, PL/SQL, PowerScript, PureBasic, Python, QB, REALbasic,REXX, SAS, TSQL, VB, VBA, VBScript, VB.NET, Visual FoxPro and XSLT

Hình 4: Ví dụ Visustin

2.3.2 Code visual to flowchart

Có thể chuyển đổi rất nhiều ngôn ngữ sang flowchart: C, C++, VC++(VisualC++ .NET), VB(Visual Basic), VBA, Qbasic(quickbasic), GWBasic,VBScript(VBS), ASP, Visual C# (C sharp), Visual Basic NET(VB.NET), VisualJ# .NET, VC++.NET, ASP.NET, Java, JSP, JavaScript(JScript), Delphi(Object

Pascal), PowerBuilder(PowerScript), PHP, Perl, Unix Bourne shell Script ( sh ),

Trang 27

Bourne Again shell(BASh), Korn shell (K shell, ksh ), pdksh, POSIX shell, C shell( csh ), tcsh, Fortran, Visual Foxpro, Peoplesoft SQR, PL/SQL, T-SQL(Transact-sql)

Hình 5: Ví dụ Code visual to flowchart

Kết chương 2

Trong chương này ta đã tìm hiểu sơ lược về sơ đồ khối, tầm quan trọng của nớđối với công nghệ thông tin Và cũng trong chương này ta đã đưa ra bài toán chuyểnđổi mã nguồn sang sơ đồ khối

Trong chương kế tiếp sẽ là phần ứng dụng chuyển đổi mã nguồn sang sơ đồkhối thực hiện với ngôn ngữ java

Trang 28

Chương 3: Xây dựng chương trình chuyển đổi mã nguồn java sang flowchart

Nội dung của chương này sẽ trình bày các vấn đề sau:

Mô tả phần mêm và giới hạn chương trình

Chi tiết xây dựng chương trình

Kết quả chương trình

Thử nghiệm đánh giá và so sánh

3.1. Mô tả phần mềm và giới hạn chương trình

3.1.1 Mô tả

Ứng dụng có tên gọi là : chuyển đổi mã nguồn java sang biểu đồ flowchart Do

đó ta có thể dễ dàng hình dung công dụng của nó đó là từ mã nguồn (java) khó đọccho người không viết ra nó chuyển đổi về biểu đồ flowchart rất dễ dàng để đọchiểu

Ngôn ngữ java rất phổ biến hiện nay, rất nhiều người làm việc, nghiên cứu, họctập sử dụng java Trong lúc học tập, nghiên cứu hay làm việc nhiều khi ta phải đọccode do người khác viết để hiểu một vấn đề hay một thuật toán nào đó Sẽ là rất khóhoặc rất tốn thời gian để hiểu đoạn code đó nếu không có giải thích (comment) hoặccode viết không theo định dạnh thông thường (như xuống dòng không theo chuẩn,viết tất cả trên một dòng, … ) Khi đó ứng dụng này sẽ rất hữu hiệu để giải quyếtvấn đề đó Ứng dụng sẽ chuyển đoạn code khó hiểu đó về dạng sơ đồ khối(flowchart), từ đó người sử dụng sẽ có thể dễ dàng đọc và hiểu ý tưởng của ngườiviết

3.1.2 Giới hạn chương trình.

Do java là một ngôn ngữ lập trình với những câu lệnh phong phú, rất nhiều từkhóa, cấu trúc lệnh, mà chương trình được giới hạn trong phạm vi đồ án tốt nghiệp,nên không thể chuyển đổi tất các câu lệnh của java sang sơ đồ khối (flowchart)được Do đó trong ứng dụng đồ án này chỉ chuyển đổi những câu lệnh, cấu trúc lệnhhay sử dụng nhất của ngôn ngữ java đó là:

+ Cấu trúc if – then – else

+ Vòng lặp while

Trang 29

+ Vòng lặp for

Đó là những cấu trúc cơ bản của ngôn ngữ java

3.2. Thiết kế và xây dựng chương trình

3.2.1 Thiết kế tổng quan của chương trình

Ứng dụng có đầu vào là một mã nguồn (source code) của một chương trìnhnào đó, đầu ra là sơ đồ khối (flowchart) của mã nguồn đó Để thực hiện được điều

đó hệ thống sẽ thực hiện 2 giai đoạn lớn

+ Giai đoạn 1: Tạo cây cú pháp trừu tượng (AST) từ mã nguồn

+ Giai đoạn 2: Từ cây AST vẽ sơ đồ khối lên màn hình

Ta có sơ đồ thực hiện của hệ thống như sau:

GetSourceCode

MakeAST

DrawFlowChart

Hình 6: Sơ đồ thực hiện phân tích chương trình

3.2.2 Chi tiết xây dựng chương trình

Như đã giới thiệu ở trên hệ thống xây dựng qua 2 giai đoạn lớn Bây giờ ta sẽ đichi tiết từng giai đoạn

3.2.2.1. Xây dựng cây cú pháp trừu tượng (AST) từ mã nguồn

Đây là giai đoạn quan trọng mang tính quyết định của hệ thống Nếu xây dựngđược cấu trúc cây tốt thì sẽ dễ dàng thực hiện bước tiếp theo là vẽ sơ đồ khối

Trang 30

Hình 7: Sơ đồ chuyển từ source code sang cây AST

Trong phần này chúng ta sẽ tìm hiểu 2 vấn đề chính là:

+ Cấu trúc cây cú pháp trừu tượng

+ Thuật toán xây dựng cây cú pháp trừu tượng

Trang 31

a Cấu trúc cây cú pháp trừu tượng

Dưới đây là định nghĩa một nút của cây:

public class Lg_TreeNode {

String label;

String content;

List<Lg_TreeNode>child=newArrayList<Lg_TreeNode>();

}

Mỗi nút của cây có 3 thành phần:

+ label: nhãn của nút

+ content: phần mã nguồn được chèn tới nút đó với nhãn tương ứng

+ child: các nút con của nút đó Một nút có thể có một hoặc nhiều con

Label của một nút bao gồm các nhãn sau:

- “normal” dùng để chỉ các đoạn lệnh chứa các câu lệnh tuần tự

Ví dụ: Đoạn lệnh sau chứa nhãn “normal”

Int n;

Int m;

m=23;

n=m+3;

- “if” dùng để chỉ cấu trúc lệnh if then else

Ví dụ: đoạn lệnh sau có nhãn “if”

Trang 32

}

- “for” dùng để chỉ đoạn lệnh for

Ví dụ: Đoạn lệnh sau có nhãn “for”

- “while” dùng để chỉ đoạn lệnh while

Ví dụ: Đoạn lệnh sau có nhãn “while”

- “if_body” dùng để chỉ đoạn lệnh thực hiện bên trong của if

Ví dụ: Trong đoạn lệnh của ví dụ nhãn “if” đoạn lệnh có nhãn “if_body” là:

n=n+5;

m++;

- “else_body” dùng để chỉ đoạn lệnh thực hiện bên trong của else

Ví dụ: Trong đoạn lệnh của ví dụ nhãn “if” đoạn lệnh có nhãn “else_body” là:

n=n-4;

m ;

Ngày đăng: 22/11/2014, 08:41

HÌNH ẢNH LIÊN QUAN

Hình 1: Ví dụ cây ngữ pháp - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 1 Ví dụ cây ngữ pháp (Trang 19)
Hình 2: Cây ngữ pháp trừu tượng (Abstract Syntax Tree) [2] - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 2 Cây ngữ pháp trừu tượng (Abstract Syntax Tree) [2] (Trang 20)
Hình 3: Ví dụ sơ đồ khối - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 3 Ví dụ sơ đồ khối (Trang 23)
Hình 4: Ví dụ Visustin - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 4 Ví dụ Visustin (Trang 24)
Hình 5: Ví dụ Code visual to flowchart - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 5 Ví dụ Code visual to flowchart (Trang 25)
Hình 7: Sơ đồ chuyển từ source code sang cây AST Trong phần này chúng ta sẽ tìm hiểu 2 vấn đề chính là: - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 7 Sơ đồ chuyển từ source code sang cây AST Trong phần này chúng ta sẽ tìm hiểu 2 vấn đề chính là: (Trang 28)
Hình 9: Ví dụ 2 chuyển source code sang AST - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 9 Ví dụ 2 chuyển source code sang AST (Trang 34)
Hình 10: Lớp Converter - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 10 Lớp Converter (Trang 35)
Hình 11: Sơ đồ chuyển từ AST sang flowchart - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 11 Sơ đồ chuyển từ AST sang flowchart (Trang 39)
Hình 13: Ví dụ chuyển đổi từ AST sang Flowchart - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 13 Ví dụ chuyển đổi từ AST sang Flowchart (Trang 41)
Hình 14: Ví dụ chuyển đổi tử Source code sang AST đến Flowchart - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 14 Ví dụ chuyển đổi tử Source code sang AST đến Flowchart (Trang 41)
Hình 15: Giao diện của chương trình - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 15 Giao diện của chương trình (Trang 42)
Hình 16: Giao diện ví dụ 3.3.1 Kết quả là: - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 16 Giao diện ví dụ 3.3.1 Kết quả là: (Trang 43)
Hình 19: Kết quả ví dụ 3.3.2 - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 19 Kết quả ví dụ 3.3.2 (Trang 44)
Hình 20: Giao diện ví dụ 3.3.3 Kết quả chương trình sau khi ấn nút “Draw” là: - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 20 Giao diện ví dụ 3.3.3 Kết quả chương trình sau khi ấn nút “Draw” là: (Trang 45)
Hình 21: Kết quả ví dụ 3.3.3 - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 21 Kết quả ví dụ 3.3.3 (Trang 46)
Hình 22: Giao diện ví dụ 3.3.4 Sau khi ấn nút draw kết quả của chương trình là: - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 22 Giao diện ví dụ 3.3.4 Sau khi ấn nút draw kết quả của chương trình là: (Trang 47)
Hình 23: Kết quả ví dụ 3.3.4 - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 23 Kết quả ví dụ 3.3.4 (Trang 48)
Hình 24: Giao diện ví dụ 3.3.5 Kết quả sau khi nhấn nút “Draw” là: - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 24 Giao diện ví dụ 3.3.5 Kết quả sau khi nhấn nút “Draw” là: (Trang 49)
Hình 27: Kết quả ví dụ 3.3.6 - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 27 Kết quả ví dụ 3.3.6 (Trang 51)
Hình 28: Giao diện ví dụ 3.3.7 Kết quả sau khi nhấn nút “Draw” - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 28 Giao diện ví dụ 3.3.7 Kết quả sau khi nhấn nút “Draw” (Trang 52)
Hình 29: Kết quả ví dụ 3.3.7 - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 29 Kết quả ví dụ 3.3.7 (Trang 53)
Hình 30: Giao diện chương trình khi chạy thử nghiệm 1 Kết quả cho bởi ứng dụng - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 30 Giao diện chương trình khi chạy thử nghiệm 1 Kết quả cho bởi ứng dụng (Trang 54)
Hình 31: Kết quả chương trình khi chạy thử nghiệm 1 - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 31 Kết quả chương trình khi chạy thử nghiệm 1 (Trang 55)
Hình 32: Kết quả thực nghiệm 1 khi chạy bằng phần mềm visustin - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 32 Kết quả thực nghiệm 1 khi chạy bằng phần mềm visustin (Trang 56)
Hình 33: Giao diện chương trình khi chạy thử nghiệm 1 Kết quả của ứng dụng - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 33 Giao diện chương trình khi chạy thử nghiệm 1 Kết quả của ứng dụng (Trang 58)
Hình 34: Kết quả chương trình khi chạy thử nghiệm 2 Kết quả chạy bằng visutin: - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 34 Kết quả chương trình khi chạy thử nghiệm 2 Kết quả chạy bằng visutin: (Trang 59)
Hình 35: Kết quả thực nghiệm 2 khi chạy bằng phần mềm visustin - kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển
Hình 35 Kết quả thực nghiệm 2 khi chạy bằng phần mềm visustin (Trang 60)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w