You are on page 1of 10

_SP02

Structure of programs
Cấu trúc của chương trình
INTRODUCTION
- Software engineering = problem solving activity:
Công nghệ phần mềm = hoạt động giải quyết vấn đề
o Understanding the problem
Hiểu vấn đề
o Designing an algorithms as a solution
Thiết kế những thuật toán như là một giải pháp
o Implementing the algorithm in a computer program
Cài đặt và khởi chạy thuật toán trong một chương trình máy tính
- Algorithms: sequence of steps that take from the input to the output for
solving a problem
Các thuật toán: thứ tự các bước từ dữ liệu đầu vào đến kết quả đầu ra đề giải
quyết vấn đề
o Correct: provide a correct solution according to the specifications
Đúng: cung cấp một giải pháp đúng theo các đặc tả kỹ thuật
o Finite: terminate
Hữu hạn: chấm dứt
o General: work for every instance of a problem
Chung: làm việc cho mọi thể hiện của một vấn đề
o Efficient: use few resources (time, memory, etc.)
Hiệu quả: sử dụng ít tài nguyên (thời gian, bộ nhớ, vv)
Structure of computer programs: cấu trúc của chương trình máy tính
- Program: chương trình
o Library, package: thư viện, gói
 Function, procedure, method: chức năng, thủ tục, phương thức
 Block: khối
o Statement: câu lệnh
 Expression: Biểu thức
 Word, token: từ, kí hiệu
- Book: sách
o Part: phần
 Chapter: Chương
 Section: Phần
o Paragraph: Đoạn
 Sentence: câu
 Phrase: cụm từ
o Word: từ
CONTROL STRUCTURES các cấu trúc điều khiển
Introduction: cơ bản:
- Computer program represents an algorithm resolving a given problem
Chương trình máy tính đại diện cho một thuật toán giải quyết một vấn đề
nhất định
- All computer programs, no matter how simple or how complex, are written
using one or more of three basic structures:
Tất cả các chương trình máy tính dù đơn giản hay phức tạp như thế nào, đều
được viết bằng một hoặc nhiều của ba cấu trúc cơ bản:
o Sequence: Thứ tự
o Selection: Lựa chọn
o Repetition: Lặp
- These structures are called control structures or logic structures, because
they control the program logic
Những cấu trúc trên được gọi là cấu trúc điều khiển hoặc cấu trúc logic, bởi
vì chúng kiểm soát các chương trình logic
1. Sequence structure: cấu trúc thứ tự
- The sequence structure in a computer program directs the computer to
process the statements one after another, in the order listed in the program
E.g. algorithm: 1. Wall, 2. Walk, 3. Turn, 4. Sit
Cấu trúc thứ tự trong một chương trình máy tính ra lệnh cho máy tính thực
thi lệnh theo thứ tự được liệt kê trong chương trình
- A statement may be: một lệnh có thể là:
o Assignment statement: lệnh chuyển tiếp
o Input/ output statement: lệnh vào ra
o Composite statement: lệnh hỗn hợp
2. Selection structure: cấu trúc lựa chọn
- Make a decision, and then take an appropriate action based on that decision
Đưa ra một quyết định, và sau đó có một hành động thích hợp dựa trên quyết
định đó
- Provide the appropriate action to take based on the result of that decision
Cung cấp các hành động thích hợp để làm dựa trên các kết quả của quyết
định đó
- The decision depends on various condition values
Quyết định phụ thuộc vào các giá trị điều kiện khác nhau

3. Repetition structure: cấu trúc lặp


- Allow the programmer to specify that an action should be repeated,
depending on the condition value
Cho phép lập trình viên xác định rằng một hành động cần phải được lặp đi
lặp lại, tùy thuộc vào giá trị điều kiện
- When used in a program, the repetition structure, also referred to as a loop,
directs the computer to repeat one or more statements until some condition is
met, at which time the computer should stop repeating the statements
Khi sử dụng trong một chương trình, các cấu trúc lặp lại, cũng được gọi là
một vòng lặp, điều khiển máy tính để lặp lại một hoặc nhiều câu lệnh cho
đến khi một số điều kiện được đáp ứng, lúc đó các máy tính nên ngừng lặp
đi lặp lại các lệnh đó
- Case 1: the repetition number is known in advance. số lặp lại được biết
trước. E.g. algorithm:
B1: Repeat 50 times:
Walk (indent the instructions within a repetition structure)
B2: Turn
B3: Sit
- Case 2: the repetition number is not known in advance
số lặp lại không biết trước.
- Statements in the body of this repetition structure are executed repeatedly as
long as the loop – continuation test is evaluated to false
Các lệnh trong thân của cấu trúc lặp này được thực hiện liên tục miễn là giá
trị các vòng lặp tiếp theo được đánh giá là sai
o The condition is first evaluated: may be none of these statements is
executed
Điều kiện được đánh giá đầu tiên: có thể là không lệnh nào được thực
hiện
o Otherwise, these statements are executed at least one time.
Nếu không, các câu lệnh được thực hiện ít nhất một lần.
o E.g. algorithm: thuật toán:
B1: repeat until you are directly in front of the chair:
Walk
B2: turn
B3: sit
DATA STRUCTURES cấu trúc dữ liệu:
- How to choose or devise the appropriate data structures for a problem?
Làm thế nào để lựa chọn hoặc đưa ra các cấu trúc dữ liệu thích hợp cho một
vấn đề?
o Algorithms will have to manipulate data in some way  the way we
choose to store and organize our data (i.e. data structure) directly
affects the efficiency of our algorithm
Các thuật toán sẽ phải thao tác dữ liệu trong một số cách  cách lựa
chọn để lưu trữ và tổ chức dữ liệu (ví dụ: cấu trúc dữ liệu) trực tiếp
ảnh hưởng đến hiệu quả của thuật toán
o Classic data structures: design, implementation and use
Cấu trúc dữ liệu cổ điển: thiết kế, thực hiện và sử dụng
TYPE: kiểu:
- Primitive type: integer, Boolean, string …
Kiểu nguyên thủy: integer, Boolean, string …
- Composite type: tuple
Kiểu hỗn hợp: tuple
- Abstract data type: data structure that is defined indirectly by the operations
that may be performed on it, and the mathematical properties of those
operations: array, list, tree, hash, graph…
Loại dữ liệu trừu tượng: cấu trúc dữ liệu được xác định gián tiếp bởi các
hoạt động mà có thể được thực hiện trên nó, và các tính chất toán học của
những thao tác: mảng, danh sách, cây, băm, đồ thị ...
FUNCTIONS AND PRODUCRES CHỨC NĂNG VÀ THỦ TỤC
- Function and procedures are part of computer program. They can be custom
defined.
Chức năng và thủ tục là một phần của chương trình máy tính. Chúng có thể
được định nghĩa tùy chỉnh
- A function or a procedure is built out of control structures in order to
manipulate on the determined data structures.
Một chức năng hay một thủ tục được xây dựng trên cấu trúc điều khiển để
thao tác trên các cấu trúc dữ liệu được xác định.
- Functions are really mathematical relations that map every input to exactly
one output. Functions are designed to return their output value.
Chức năng là các mối quan hệ toán học mà nối mỗi đầu vào với chính xác
một đầu ra. Chức năng này được thiết kế để trả về giá trị đầu ra.
- Procedures are recipes for computation that perform side effects
Thủ tục công thức để thực hiện việc tính toán bên lề
- Either function or procedure is used to represent a concern
Cả hàm và thủ tục đều được sử dụng để mô tả một mối quan tâm
Example: Functions and procedures
Ví dụ về hàm và thủ tục
- C, C++, Java: no distinct
C, C++, Java không phân biệt
- Pascal, .NET:
o Function returns value: hàm thì trả về giá trị
o Procedure doesn’t return value. Thủ tục thì không trả về giá trị
- DBMS:
o Procedures (SPROCs): stored compiled queries: truy vấn biên soạn
lưu trữ
o Functions (UDFs): built – in piece of expressions used to build
queries:
SEPARATION OF CONCERNS phân tách các mối quan tâm
1. Principles: các nguyên tắc
- The principle of separation of concerns states that software should be
organized so that each program element does one thing and one thing only
Các nguyên tắc phân tách các mối quan tâm là phần mềm cần được tổ chức
sao cho mỗi phần tử chương trình chỉ làm một việc duy nhất
- Each program element should therefore be understandable without reference
to other elements
Mỗi phần tử chương trình do đó nên được hiểu là không tham chiếu đến các
yếu tố khác
- Program abstractions (procedures, objects, etc.) support the separation of
concern
Trừu tượng chương trình (thủ tục, đối tượng, vv) hỗ trợ việc phân chia các
mối quan tâm
o Procedural programming languages such as C and Pascal can separate
concerns into procedures.
Ngôn ngữ lập trình thủ tục như C và Pascal có thể tách mối quan tâm
vào các thủ tục.
o Object – oriented programming languages such as Java can separate
concerns into objects
Ngôn ngữ lập trình hướng như Java có thể tách mối quan tâm vào đối
tượng
o Service – oriented architecture can separate concerns into services
Kiến trúc hướng dịch vụ có thể tách mối quan tâm vào các dịch vụ
2. Concerns: Mối quan tâm
- A concern is an area of interest or focus in a system
Một mối quan tâm là một khu vực ưa thích hoặc tập trung trong một hệ
thống
- Concerns are the primary criteria for decomposing software into smaller,
more manageable and comprehensible parts that have meaning to a software
engineer
Mối quan tâm là những tiêu chí chính để phân rã các phần mềm thành các
phần nhỏ hơn, dễ quản lý hơn và dễ hiểu, việc này có ý nghĩa đối với một kỹ
sư phần mềm
o Procedural programming, describing concerns as procedures
Lập trình thủ tục, mô tả mối quan tâm như là các thủ tục
o Object – oriented programming, describing concerns as objects
Lập trình hướng chức năng, mô tả mối quan tâm như là các đối tượng
3. Types of separation: Các loại phân chia
- Quality: deal separately different quality aspects of the system: e.g. security
Chất lượng: đối phó khía cạnh chất lượng riêng biệt khác nhau của hệ thống:
ví dụ: Bảo mật
- Time: plan the activity of a system: e.g. software life cycle
Thời gian: kế hoạch hoạt động của một hệ thống: ví dụ: vòng đời phần mềm
- View: consider & analyze separately the system: e.g. control flow, data flow
View: xem xét và phân tích tách hệ thống: ví dụ: kiểm soát dòng chảy, lưu
lượng dữ liệu
- Size: dominate the system complexity: e.g. component
Kích thước: chi phối hệ thống phức tạp: ví dụ: thành phần
4. Stakeholders of concerns: Các mối quan tâm của các bên liên quan
- Functional concerns: related to specific functionalities to be included in a
system
Mối quan tâm chức năng: liên quan đến các chức năng cụ thể được bao gồm
trong một hệ thống
- Quality of service concerns: related to the non – functional behaviors of a
system
Mối quan tâm về chất lượng của dịch vụ: liên quan đến các phi - hành vi
chức năng của một hệ thống
- Policy concerns: related to the overall policies that govern the use of the
system
Mối quan tâm chính sách: liên quan đến các chính sách tổng thể chi phối
việc sử dụng hệ thống
- System concerns: related to attributes of the system as a whole, such as its
maintainability or its configurability
Mối quan tâm hệ thống: liên quan đến các thuộc tính của hệ thống như là
tổng thể, chẳng hạn như khả năng bảo trì của nó hoặc cấu hình của nó
- Organizational concerns: related to organizational goals and priorities such
as:
Mối quan tâm tổ chức: liên quan đến tổ chức các mục tiêu và các ưu tiên
như là:
o Producing a system within budget
Sản xuất một hệ thống trong ngân sách
o Making use of existing software assets
Sử dụng tài sản phần mềm hiện có
o Maintaining the reputation of an organization
Bảo trì danh tiếng của một tổ chức
KEY POINT: CONTROL STRUCTURES
Những điểm chính: các cấu trúc điều khiển
- Control structures: cấu trúc điều khiển
o Sequence: thứ tự
o Selection: lựa chọn
o Repetition: lặp
- Data structures: các cấu trúc dữ liệu:
o Abstracted by mean of operations that can be performed on a domain
of values
Trừu tượng hóa bằng trung bình của các thao tác, có thể được thực
hiện trên một miền giá trị
- Functions and procedures: hàm và thủ tục
o Operation’s representation, depending on different contexts of use:
programming languages, technologies, etc.
Mô tả thao tác, tùy thuộc vào hoàn cảnh sử dụng khác nhau: ngôn ngữ
lập trình, kỹ thuật …
KEY POINT: SEPARATION OF CONCERNS
Những điểm chính: phân tách các mối quan tâm
- Dominate complexity
Chi phối độ phức tạp
- Separate the issues to concentrate on one at a time
Tách các vấn đề tập trung vào cùng một lúc
- “divide & conquer”
Chia để trị
- Support parallelization of efforts and separation of responsibilities
Hỗ trợ song song của các nỗ lực và tách trách nhiệm
DISCUSSION
- What is a good structured program?
- How to write a good structured program?

You might also like