MỤC LỤC:
Tóm tắt.................................................................................................. trang 2
Giới thiệu............................................................................................... trang 2
Lập trình cấu trúc là gì.............................................................. trang 2
Lập trình cấu trúc trong ngữ cảnh công nghệ phần mềm..................
............................................................................................ trang 3
Lập trình cấu trúc theo quan điểm của TRIZ......................... ......... trang 6
Khắc phục sự phức tạp để đạt độ tin cậy ổn định.................. trang 6
Cấu trúc lệnh(cấu trúc điều khiển)................................. ........ trang 6
Đơn giản hóa các hệ thống............................................... ........ trang 8
Lược bỏ bớt câu lệnh goto............................................... ........ trang 9
Ứng dụng TRIZ trong phương pháp Top – Down................ trang 11
Ứng dụng TRIZ trong phương pháp Bottom – Up............... trang 17
Lập trình cấu trúc được xem như là một xu hướng..... ........ trang 21
Kết luận............................................................................................... trang 22
Page | 1
TÓM TẮT
Bài luận này sẽ trình bày vấn đề áp dụng một số nguyên tắc TRIZ trong lập trình cấu trúc.
Tiếp cận lập trình cấu trúc tập trung vào những mục – nguyên tắc sau của TRIZ:
a. Nguyên tắc 1 (Nguyên tắc phân nhỏ): Chia đối tượng thành các phần độc lập,
làm đối tượng trở nên tháo lặp được, tăng mức độ phân nhỏ của đối tượng.
b. Nguyên tắc 2 (Nguyên tắc tách khỏi): tách các phần gây phiền phức hay ngược
lại tách phần duy nhất cần thiết ra khỏi đối tượng.
c. Nguyên tắc 5 (Nguyên tắc kết hợp): Kết hợp các đối tượng động nhất, các đối
tượng kế cận về mặt thời gian, không gian...
d. Nguyên tắc 6 (Nguyên tắc vạn năng): Đối tượng thực hiện một số chức năng
khác nhau, do đó không cần có sự tham gia của đối tượng khác.
e. Nguyên tắc 7 (Nguyên tắc chứa trong): Một đối tượng chứa bên trong nó đối
tượng khác và đối tượng khác đó lại chứa đối tượng thứ ba, một đối tượng chuyển động xuyên
suốt bên trong đối tượng khác.
f. Nguyên tắc 16 (Nguyên tắc giải tác động thiếu hoặc thừa): Nếu như khó nhận
được 100% hiệu ứng, kết quả cần thiết nên nhận ít hơn hoặc nhiều hơn một chút. Lúc đó bài toán
có thể trở nên đơn giản và dễ giải hơn một cách đáng kể.
I.GIỚI THIỆU:
I.1. LẬP TRÌNH CẤU TRÚC LÀ GÌ:
Lập trình cấu trúc là một tập con của lập trình thủ tục. Trong một chương trình máy tính, các
khối chức năng có thể được thực hiện không chỉ theo trình tự mà còn có thể theo các tình huống và
lặp lại nhiều lần. Phương pháp lập trình cấu trúc được dựa trên các mô hình toán học của Bohm và
Guiseppe, theo đó, một chương trình máy tính có thể được viết dựa trên ba cấu trúc: trình tự, quyết
định và vòng lặp.Trình tự nghĩa là các câu lệnh được thực hiện theo trình tự nhất định: trên
xuống.Quyết định là sự qui định sẽ thực hiện chương trình như thế nào phụ thuộc vào sự thoả mãn
các điều kiện nhất định.
Vòng lặp thể hiện sự thực hiện có tính lặp một số đoạn lệnh của chương trình khi các điều kiện
nào đó vẫn được thỏa mãn.Thông qua các cấu trúc trên, mã chương trình trở nên sáng sủa và dễ
đọc.
Phương pháp lập trình thủ tục hay lập trình cấu trúc thường đi đôi với phương pháp phân tích trên
xuống (top-down). Theo phương pháp này, người thiết kế hệ thống chia các chức năng (hàm)
chính của hệ thống thành các chức năng nhỏ hơn, đến lượt mình, các chức năng nhỏ này lại được
Page | 2
chia tiếp thành các chức năng nhỏ hơn nữa cho đến khi được các khối (hàm) chương trình đủ nhỏ.
Việc phân tích này được thể hiện trực quan theo sơ đồ khối.
I.2. LẬP TRÌNH CẤU TRÚC TRONG NGỮ CẢNH CÔNG NGHỆ PHẦN MỀM
Gần cuối những năm 1960 khi phạm vi phát triển phần mềm ngày càng được mở rộng, lúc đó môn
khoa học công nghệ phần mềm cũng ra đời. Các ngôn ngữ lập rình như COBOL và FORTRAN
hầu như được sử dụng cho các ứng dụng kinh tế và khoa học. Để làm cho những chương trình này
đạt được hiệu quả cả về thời gian và không gian bộ nhớ, thì thường sử dụng những câu lệnh Goto
để xây dựng nên những quy trình phức tạp cho dù bị bị cho là những chương trình phức tạp, rắc
rối.
E.Dijkstra đã cho thấy được nguy hại của những câu lệnh Goto được sử dụng trong một chương
trình đó là dễ dàng để hiểu và đã ủng hộ cho lập trình cấu trúc vì có thể loại bỏ đi được những lệnh
Goto và thay vào đó sử dụng 3 khái niệm điều khiển cơ bản bao gồm (Sequencing, Selection và
Loop). Với những hàm lập trình – người lập trình được khuyến khích để thiết kế/viết code cho
những mô hình của chương trình bước từng bước theo phong cách từ trên xuống dưới.
Nhiều người lập trình ở thời điểm này đã phản đối ý kiến của Dijkstra, cho rằng: “việc viết những
chương trình mà chỉ cần có 3 construct điều khiển thì không dễ chút nào và cho rằng lệnh goto vẫn
cần thiết trong nhiều trường hợp”. Dijkstra đã đưa ra bằng chứng cho thấy rằng bất cứ chương
trình nào đều có thể được viết chỉ với 3 construct kiểm soát trên (ông đưa ra dẫn chứng lệnh goto
có thể được viết với Selection trong khi nhảy ngược trở lại với các vòng lặp (Loops).
Trong lúc thí nghiệm, một vài construct điển khiển khác nữa được đề xuất thêm, bao gồm lựa chọn
nhiều tuyến đường đi, lặp có điều kiện, ngắt vòng lặp, và xử lý ngoại lệ. Vì thế đề xuất lập trình
cấu trúc đã được đồng ý.
Nó được hiểu trong lập trình cấu trúc rằng một quy trình mà có một đầu vào và một đầu ra nên
được tinh chế từng bước một bằng cách sử dụng 3 construct điều khiển cơ bản và những construct
điều khiển khác được biểu diễn trong hình 1 và 2 dưới đây.
Page | 3
Hình 1: 3 construct điều khiển cơ bản
Hình 2: 4 construct điều khiển phụ
Hình 3 và 4 dưới đây là ví dụ minh họa của một đoạn chương trình viết bằng 3 cách khác nhau và
4 cách khác nhau.
Page | 4
Hình 3: đoạn chương trình được viết theo 3 cách khác nhau.
Hình 4: đoạn chương trình được viết theo 4 cách khác nhau.
Để phân biệt được các đối số, các trường hợp đơn giản được minh họa ở hình 3 và 4 bằng cách so
sánh những biểu đồ luồng được vẽ theo 4 cách khác nhau: Goto (hình a), lập trình cấu trúc cơ bản
được viết theo phương pháp copy (hình b1) và phương pháp biến điều khiển (hình b2), và các
construct phụ (hình c).
II. LẬP TRÌNH CẤU TRÚC THEO QUAN ĐIỂM CỦA TRIZ
Page | 5
Bây giờ, chúng ta sẽ xem lập trình cấu trúc theo cách nhìn của TRIZ.
II.1 Cần khắc phục sự phức tạp để đạt được sự tin cậy, ổn định:
Từ quan điểm của TRIZ về sự phát triển của các hệ thống kỹ thuật, chúng ta có thể rõ ràng thấy
những sự cần thiết của công nghệ phần mềm và lập trình cấu trúc. Giống như bât cứ hệ thống kỹ
thuật khác, hệ thống phần mềm phát triển một cách nhanh chóng, ngày càng rộng lớn và mạnh mẽ
hơn trong các chức năng của chúng – đồng nghĩa với độ phức tạp cao hơn. Để phát triển các hệ
thống phần mềm xa hơn – thì cần phát triển một vài phương thức để làm sao cho các hệ thống đó
trở nên đơn giản và dễ dàng kiểm soát, điều khiển. Bởi vì sự quan tâm của khách hàng, người
dùng đó chính là: hiệu suất -> độ tin cậy -> tiện lợi -> giá thành.
II.2 Cấu trúc lệnh (cấu trúc điều khiển):
Một chương trình máy tính về bản chất là một bản mã hóa thuật tóan. Thuật tóan được coi
là dãy hữu hạn các thao tác sơ cấp trên tập đối tượng vào (Input) nhằm thu được kết quả ra
(Output). Các thao tác trong một ngôn ngữ lập trình cụ thể được điều khiển bởi các lệnh hay các
cấu trúc điều khiển, còn các đối tượng chịu thao tác thì được mô tả và biểu diễn thông qua các cấu
trúc dữ liệu.
Trong các ngôn ngữ lập trình cấu trúc, những cấu trúc lệnh sau được sửdụng để xây dựng
chương trình. Dĩ nhiên, chúng ta sẽ không bàn tới cấu trúc nhảy không điều kiện goto mặc dù ngôn
ngữ lập trình cấu trúc nào cũng trang bị cấu trúc lệnh goto.
Page | 6
Page | 7
II.3 Đơn giản hóa các hệ thống bằng cách sử dụng cấu trúc phân cấp, có thứ bậc:
Một hệ thống phần mềm hay một mô hình phần mềm có thể được xem như là một hệ thống trong
nghĩa chung của nó trong TRIZ. Một hệ thống là toàn bộ các thành phần làm việc cùng nhau để thi
hành một chức năng nào đó, nó tạo ra những giá trị xuất ra nhờ sử dụng những giá trị nhập vào
(output – input). Khái niệm cấu trúc phân cấp của hệ thống là một trong những kiến thức cơ bản
trong TRIZ. Nó được phát biểu trong nguyên tắc 7 (Nguyên tắc chứa trong):
- Đặt một đối tượng hay hệ thống trong đối tượng hay hệ thống khác.
- Đặt một vài đối tượng hay vài hệ thống bên trong những đối tượng hay hệ thống khác.
Nguyên tắc này đóng vai trò quan trọng trong thế giới phần mềm, ở đó việc xây dựng cấu trúc của
các hệ thống phần mềm thì phổ biến và dễ dàng. Khuyến khích phát triển một hệ thống phần mềm
theo cấu trúc phân cấp từ cao xuống thấp.
Bên cạnh đó TRIZ còn đưa ra những nguyên tắc để đơn giản hóa bất cứ hệ thống nào khi nó trở
nên phức tạp. Chẳng hạn như nguyên tắc 6 (vạn năng), nguyên tắc 1 (chia nhỏ) và nguyên tắc 2
(tách khỏi).
Nguyên tắc 6 phát biểu rằng:
- Một đối tượng hay một hệ thống có thể thực hiện được nhiều chức năng khác nhau, do đó
không cần sự tham gia của đối tượng hay hệ thống khác.
Ý tưởng của nguyên tắc vạn năng này để đơn giản hóa các hệ thống phức tạp tuy nhiên nó có đôi
chút sự khác biệt nhưng không đáng kể: “đưa ra những chức năng cơ bản – đã chuẩn hóa và sử
dụng chúng mọi nơi trong một diện rộng của ứng dụng”.
Page | 8