Tải bản đầy đủ (.pdf) (26 trang)

Tiểu luận môn học đề tài giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (312.71 KB, 26 trang )

lOMoARcPSD|39270902

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

======***======

TIỂU LUẬN MÔN HỌC

Đề tài: Giải thuật, sơ đồ giải thuật,
code giả mã, mã nguồn

Giáo viên hướng dẫn: Th.S Đoàn Văn Trung
Lớp:
Sinh viên: 2022DHCNTT05

Phạm Hùng Cường
Phạm Văn Đức
Nguyễn Việt Dũng
Lương Văn Duy
Nguyễn Hữu Hải

Hà Nam, tháng 2, năm 2023

1

Downloaded by SAU DO ()

lOMoARcPSD|39270902


Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

PHIẾU GIAO ĐỀ TÀI

BỘ CÔNG THƯƠNG CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Độc lập - Tự do - Hạnh phúc
____________________________________ ________________________________

PHIẾU GIAO ĐỀ TÀI TIỂU LUẬN

Họ và tên: ….

….

Lớp: 2022DHCNTT05 Khoa: Công nghệ thơng tin

Ngành học: Cơng nghệ thơng tin

Tên đề tài: Trình bày hiểu biết của em về giải thuật (Algorithm), sơ đồ giải

thuật (Flowchart), code giả mã (Pseudo Code), mã nguồn

(sourcecode)

Mục đích: - Nêu ra được hiểu biết về giải thuật, sơ đồ giải thuật, code giả mã và

mã nguồn.

- Hoàn thành một bài tiểu luận theo chủ đề chủ đề.


- Hiểu được thế nào là giải thuật, sơ đồ giải thuật, code giả mã

và mã nguồn.

- Biết được cách thức hoạt động, cách sử dụng, cách viết, mục

đích của giải thuật , sơ đồ giải thuật, mã giả, mã nguồn.

Yêu cầu: - Tìm hiểu về giải thuật-Algorthim, sơ đồ giải thuật-Flowchart, code
giả mã-Pseudo code, mã nguồn-Source code.

- Trình bày được các nội dung liên quan đến đề tài

Nơi thực tập: Khoa CNTT - Trường Đại học Công nghiệp Hà Nội
Kết quả thu được : Bài tiểu luận môn học.
Ngày giao đề tài: 23/12/2022
Ngày hoàn thành: 15/02/2023
Giáo viên hướng dẫn : Ths. Đoàn Văn Trung.

ĐẠI DIỆN NHÓM Hà Nam, ngày 22 tháng 2 năm 2023

GIÁO VIÊN HƯỚNG DẪN

2

Downloaded by SAU DO ()

lOMoARcPSD|39270902


Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

PHÂN CÔNG CÔNG VIỆC

Tuần Người thực hiện Nội dung công việc Kết quả đạt được
1 Cả nhóm Nhận đề tài, ngiên cứu
đề tài, tìm hiểu nội dung, Giải thuật do PH.Cường
2 PH. Cường phân chia công việc. Sơ đồ giải thuật do NH.Hải
NH. Hải Mã giả do PV. Đức
PV. Đức Chọn trưởng nhóm Mã nguồn LV.Duy
LV. Duy NV.Dũng làm trưởng nhóm

3 NV. Dũng -Tìm hiểu về giải thuật -Nội dung, tài liệu về chủ đề
Cả nhóm -Tìm hiểu về sơ đồ gt
-Tìm hiểu về mã giả -Hoàn thành vào thứ tư
4 NV. Dũng -Tìm hiểu về mã nguồn
-Hồn thành bài thuyết trình
Cả nhóm -Thứ hai bắt đầu làm bài -4 câu hỏi cho phần thuyết
5 Cả nhóm thuyết trình trên phần trình mỗi câu một phần lý
mềm powerpoint thuyết
-Sáng thứ năm,phân -Bài thuyết trình thành cơng
công, tập thử bài thuyết
trình Hai cuốn tài liệu tham khảo
-Thêm phần câu hỏi
Hoàn thành nội dung cho bài
-Thứ 6, Thuyết trình, 4 tiểu luận
thành viên mỗi thành Hoàn thiện đẩy đủ cho nội
viên thuyết trình một nội dung bài Tiểu luận, Có thêm
dung đã giao trước đó một số hình ảnh, bảng biểu.


-Tìm thêm tài liệu từ Hoàn thành xong bài tiểu
sách, giảo trình, bài luận
giảng về chủ đề để đưa
vào bài tiểu luận,
-Chia công việc cho
nhóm mỗi người một
phần
-Tìm thêm thơng tin trên
mạng
-Thực hiện chỉnh sửa,
hoàn thiện bài tiểu luận
-Hoàn thành các mục
còn thiếu của bài tiểu
luận.
-15/2/2023, Hoàn thiện
bài Tiểu luận

3

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

LỜI NÓI ĐẦU

Ngày nay, khi công nghệ thông tin ngày càng phát triển, khoa học máy
tính khơng ngừng vươn lên. Theo đó ngành cơng nghệ thơng tin cũng phát
triển rất mạnh. Từ đó nghề lập trình viên đã trở thành một công việc phổ biến

và được nhiều người theo học.

Là một lập trình viên thì tất nhiên bạn phải biết lập trình. Và một trong
nhữn vấn đề của lập trình đó là các thuật tốn để giải quyết một thuật tốn thì
cần biết tới giải thuật. Bài tiểu luận của chúng tôi sẽ giúp mọi người tìm hiểu
về giải thuật và các nội dung liên quan tới giải thuật như: sơ đồ giải thuật,
code giả mã và mã nguồn.

4

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

Mục Lục

DANH SÁCH HÌNH VẼ..................................................................................6
DANH SÁCH BẢNG BIỂU.............................................................................7
CHƯƠNG 1 GIẢI THUẬT VÀ SƠ ĐỒ GIẢI THUẬT...............................8
1.1 Giải thuật - Algorithm...............................................................................8
1.1.1. Độ phức tạp của giải thuật......................................................................8
1.1.2. Khái niệm giải thuật................................................................................9
1.1.3. Một số giải thuật quan trọng..................................................................9
1.1.4. Đặc điểm của giải thuật..........................................................................9
1.1.5. Phân tích giải thuật...............................................................................10
1.1.6. Cách viết một giải thuật........................................................................10
1.2 Sơ đồ giải thuật - Flowchart...................................................................11
1.2.1. Flowchart là gì?....................................................................................11

1.2.2. Mục đích vẽ Flowchart..........................................................................11
1.2.3. Cách viết Flowchart..............................................................................12
CHƯƠNG 2 CODE GIẢ MÃ VÀ MÃ NGUỒN.........................................15
2.1 Code giả mã - Pseudo Code....................................................................15
2.1.1 Mã giả hữu ích ra sao?...........................................................................15
2.1.2 Mã giả - Pseudo code là gì.....................................................................15
2.1.3 Ưu điểm và nhược điểm của mã giả.......................................................15
a) Ưu điểm.....................................................................................................15
b) Nhược điểm...............................................................................................16
2.1.4 Cách viết pseudo code............................................................................16
2.2 Mã nguồn - Sourcecode...........................................................................19
2.2.1 Mã nguồn - Sourcecode là gì?................................................................19
2.2.2 Mục đích của mã nguồn.........................................................................19
2.2.3 Vai trị của mã nguồn trong lập trình webside........................................20
2.2.4 Các loại mã nguồn..................................................................................20
2.2.5 Cách mã nguồn được thực thi................................................................24
CHƯƠNG 3 KẾT LUẬN..............................................................................25

5

Downloaded by SAU DO ()

lOMoARcPSD|39270902 Nhóm 3

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn

DANH SÁCH HÌNH VẼ
1. Hình ảnh minh họa Flowchart <trang 14>
2. Logo Wordpress <trang 22>
3. Logo Joomla <trang 23>

4. Logo Drupal <trang 23>
5. Logo Magento <trang 24>
6. Logo Opencart <trang 24>

6

Downloaded by SAU DO ()

lOMoARcPSD|39270902 Nhóm 3

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn

DANH SÁCH BẢNG BIỂU
Một số kí hiệu thường dùng trong Flowchart <trang 14>
Mã nguồn mở/ Mã nguồn đóng <trang 21>

7

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

CHƯƠNG 1 GIẢI THUẬT VÀ SƠ ĐỒ GIẢI THUẬT

1.1 Giải thuật - Algorithm

1.1.1. Độ phức tạp của giải thuật
Các thuật tốn có thể được đánh giá bằng nhiều tiêu chí khác nhau. Thơng


thường, chúng ta sẽ quan tâm đến tốc độ tăng trưởng của thời gian hoặc không gian
cần thiết để giải quyết các trường hợp ngày càng lớn hơn của một vấn đề. Chúng ta
muốn liên kết với một vấn đề một số nguyên gọi là kích thước của vấn đề, là thước
đo số lượng dữ liệu đầu vào. Ví dụ, kích thước của một bài tốn nhân ma trận có thể
là kích thước lớn nhất của ma trận được nhân. Kích thước của một bài tốn đồ thị có
thể là số cạnh.

Thời gian cần thiết của một thuật tốn được biểu thị dưới dạng một hàm của
kích thước của một vấn đề được gọi là độ phức tạp thời gian của thuật toán. Hành vi
hạn chế của độ phức tạp khi kích thước tăng lên được gọi là độ phức tạp thời gian
tiệm cận. Các định nghĩa tương tự có thể được thực hiện cho độ phức tạp không
gian và độ phức tạp không gian tiệm cận.

Về bản chất, độ phức tạp giải thuật là một hàm ước lượng (có thể khơng
chính xác) số phép tính mà giải thuật cần thực hiện (từ đó dễ dàng suy ra thời gian
thực hiện của giải thuật) đối với bộ dữ liệu đầu vào (Input) có kích thước n. Trong
đó, n có thể là số phần tử của mảng trong trường hợp bài tốn sắp xếp hoặc tìm
kiếm, hoặc có thể là độ lớn của số trong bài toán kiểm tra số nguyên tố, …

Giả sử X là một giải thuật và n là kích cỡ của dữ liệu đầu vào. Thời gian và
lượng bộ nhớ được sử dụng bởi giải thuật X là hai nhân tố chính quyết định hiệu
quả của giải thuật X:

 Nhân tố thời gian: Thời gian được đánh giá bằng việc tính số phép tính
chính (chẳng hạn như các phép so sánh trong thuật toán sắp xếp).

 Nhân tố bộ nhớ: Lượng bộ nhớ được đánh giá bằng việc tính lượng bộ
nhớ tối đa mà giải thuật cần sử dụng.


Độ phức tạp của một giải thuật (một hàm f(n)) cung cấp mối quan hệ giữa
thời gian chạy và/hoặc lượng bộ nhớ cần được sử dụng bởi giải thuật.

8

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

1.1.2. Khái niệm giải thuật
Giải thuật Algorithms (hay còn gọi là thuật toán) là một tập hợp hữu hạn các

chỉ thị để được thực thi theo một thứ tự nào đó để thu được kết quả mong muốn.
Giải thuật là độc lập với các ngơn ngữ lập trình. Tức là một giải thuật có thể

được triển khai trong nhiều ngơn ngữ lập trình khác nhau.
1.1.3. Một số giải thuật quan trọng
Xuất phát từ quan điểm của cấu trúc dữ liệu, dưới đây là một số giải thuật quan

trọng mà chúng ta hay gặp và hay sử dụng:
•Giải thuật Tìm kiếm: Giải thuật để tìm kiếm một phần tử trong một cấu trúc
dữ liệu.
•Giải thuật Sắp xếp : Giải thuật để sắp xếp các phần tử theo thứ tự nào đó.
•Giải thuật Chèn: Giải thuật để chèn phần từ vào trong một cấu trúc dữ liệu.
•Giải thuật Cập nhật: Giải thuật để cập nhật (hay update) một phần tử đã tồn
tại trong một cấu trúc dữ liệu.
•Giải thuật Xóa: Giải thuật để xóa một phần tử đang tồn tại từ một cấu trúc
dữ liệu.


1.1.4. Đặc điểm của giải thuật
Khơng phải tất cả các thủ tục có thể được gọi là một giải thuật. Một giải thuật

nên có các đặc điểm sau:
•Tính xác định: Giải thuật nên rõ ràng và không mơ hồ. Mỗi một giai đoạn
(hay mỗi bước) nên rõ ràng và chỉ mang một mục đích nhất định.
•Dữ liệu đầu vào xác định: Một giải thuật nên có 0 hoặc nhiều hơn dữ liệu
đầu vào đã xác định.
•Kết quả đầu ra: Một giải thuật nên có một hoặc nhiều dữ liệu đầu ra đã xác
định, và nên kết nối với kiểu kết quả bạn mong muốn.
•Tính dừng: Các giải thuật phải kết thúc sau một số hữu hạn các bước.
•Tính hiệu quả: Một giải thuật nên là có thể thi hành được với các nguồn có
sẵn, tức là có khả năng giải quyết hiệu quả vấn đề trong điều kiện thời gian
và tài nguyên cho phép.

9

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

•Tính phổ biến: Một giải thuật có tính phổ biến nếu giải thuật này có thể
giải quyết được một lớp các vấn đề tương tự.
• Độc lập: Một giải thuật nên có các chỉ thị độc lập với bất kỳ phần code lập
trình nào.
1.1.5. Phân tích giải thuật
Hiệu quả của một giải thuật có thể được phân tích dựa trên 2 góc độ: trước

khi triển khai và sau khi triển khai:
Phân tích lý thuyết: Có thể coi đây là phân tích chỉ dựa trên lý thuyết. Hiệu
quả của giải thuật được đánh giá bằng việc giả sử rằng tất cả các yếu tố khác (ví dụ:
tốc độ vi xử lý, …) là hằng số và không ảnh hưởng tới sự triển khai giải thuật.
Phân tích tiệm cận: Việc phân tích giải thuật này được tiến hành sau khi đã
tiến hành trên một ngơn ngữ lập trình nào đó. Sau khi chạy và kiểm tra đo lường các
thông số liên quan thì hiệu quả của giải thuật dựa trên các thông số như thời gian
chạy, thời gian thực thi, lượng bộ nhớ cần dùng, …
1.1.6. Cách viết một giải thuật
Không có bất kỳ tiêu chuẩn nào cho trước để viết các giải thuật.
Các ngơn ngữ lập trình đều có các vịng lặp (do, for, while) và các lệnh điều
khiển luồng (if-else), … Có thể sử dụng những lệnh này để viết một giải thuật.
Từ việc định vị vấn đề, chúng ta sẽ thiết kế ra giải pháp để giải quyết vấn đề
đó và sau đó là viết giải thuật.
Ví dụ: Thiết kế một giải thuật để cộng hai số và hiển thị kết quả.

Bước 1: Bắt đầu
Bước 2: Khai báo ba số a, b & c
Bước 3: Định nghĩa các giá trị của a & b
Bước 4: Cộng các giá trị của a & b
Bước 5: Lưu trữ kết quả của Bước 4 vào biến c
Bước 6: In biến c
Bước 7: Kết thúc

10

Downloaded by SAU DO ()

lOMoARcPSD|39270902


Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

1.2 Sơ đồ giải thuật - Flowchart
1.2.1. Flowchart là gì
Flowchart là một từ Tiếng Anh được dịch ra Tiếng Việt có nghĩa là sơ đồ,

biểu đồ. Thực chất là một dạng biểu đồ, đồ thị để biểu diễn một chuỗi các hành
động nối tiếp nhau hoặc cách thức trong một quy trình nào đó, biến nó thành hình
ảnh đơn giản bao gồm các bước, các nhánh thể hiện kết quả tiếp theo hoặc điều kiện
có thể thay đổi kết quả.

Loại biểu đồ này thường được dùng các mũi tên để minh họa cho một bước
dẫn tiếp theo trong một chu trình nào đó. Nó là một cơng cụ chung có thể được điều
chỉnh cho nhiều mục đích khác nhau và có thể được sử dụng để mơ tả các quy trình
khác nhau, chẳng hạn như quy trình sản xuất, quy trình hành chính hoặc dịch vụ
hoặc kế hoạch dự án. Đây là một cơng cụ phân tích quy trình chung và là một trong
bảy công cụ chất lượng cơ bản .

Flowchart có rất nhiều biến thể khác nhau xung quanh nót: sơ đồ từ trên
xuống, sơ đồ vĩ mô, sơ đồ chi tiết (cịn được gọi là sơ đồ quy trình, bản đồ vi mô, sơ
đồ dịch vụ hoặc sơ đồ biểu tượng), sơ đồ triển khai (còn được gọi là sơ đồ đa chức
năng) hay sơ đồ nhiều cấp.

Trong lập trình flow chart thường được gọi là lưu đồ thuật toán, dùng để mơ
tả các thuật tốn giải một đề bài nhất định.

Thực tế flow chart khơng chỉ sử dụng trong lập trình mà còn sử dụng trong
nhiều lĩnh vực khác nhau như kinh doanh, quản lý quy trình, …. Giúp nhân viên
hiểu rõ luồng nghiệp vụ mà mình cần phải làm.


1.2.2. Mục đích vẽ Flowchart
Bởi vì các thơng tin được trình bày dưới dạng flowchart vô cùng ngắn gọn,

hiệu quả. Điều này giúp ích rất lớn trong việc truyền đạt thông tin.
Ngơn ngữ hình ảnh luôn dễ nhớ và dễ hiểu hơn ngôn ngữ chữ viết, vậy nên

nếu bạn không muốn viết một đoạn ” văn tế ” dài đôi ba trang A4 để mô tả 1 quy
trình nào đó, mà chưa chắc người đọc người ta đã hiểu thì nên học vẽ Flow chart

Diễn giải các công việc tưởng chừng như phức tạp thành từng quy trình
nghiên cứu, hoạt động làm việc theo trình tự rõ ràng. Từ đó dễ dàng đánh giá, phân
tích và chọn ra quy trình tối ưu nhất.

11

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

1.2.3. Cách vẽ Flowchart
a) Một số quy tắt vẽ
Quy tắc 1: Sử dụng nhất quán các thành phần
Yếu tố đầu tiên chính là tính nhất qn từ hình khối, đường dẫn, văn bản.

Trong đó:
 Hình elip: Thể hiện điểm bắt đầu và kết thúc của một quy trình.
 Hình chữ nhật: Các bước hay hành động triển khai do cá nhân đảm nhiệm.
 Hình thoi: Dùng khi có quyết định hay phê chuẩn cần lựa chọn.

 Đường dẫn mũi tên chỉ hướng của dòng chảy các bước.

1. Hình ảnh minh họa Flowchart

Quy tắc 2: Sắp xếp luồng dữ liệu khoa học trên cùng một trang
Khi bạn muốn tạo ra một biểu đồ hoàn chỉnh, hiệu quả và tốt nhất thì nên tối ưu trên
cùng một trang. Đây có thể nói là một quy tắc vơ cùng quan trọng và then chốt
trong quá trình vẽ biểu đồ Flowchart.

12

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

Trong trường hợp, biểu đồ có kích thước lớn, bạn có thể sử dụng các mẹo
như sau:

 Tối ưu câu từ, ý nghĩa một cách ngắn gọn và xúc tích nhất, ;làm cho lưu đồ
nhỏ hơn. Phông chữ đi kèm lúc này cần hiệu chỉnh to lên để bù đắp việc
giảm tỷ lệ trên. Tổng quan về phần nhìn bạn dễ nhận thấy giao diện không bị
quá bé.

 Tùy theo số lượng bước, người dùng có thể sắp xếp đường dẫn từ trái sang
phải. Sau đó, những trình tự cịn lại sẽ hạ xuống dịng dưới thực hiện tiếp.

 Ngoài ra, một cách xử lý khác là chia Flowchart lớn ra thành các tập hợp
nhỏ. Đầu tiên, bạn hãy vẽ lưu đồ miêu tả tổng quan các bước hoàn chỉnh của

quy trình. Trong mỗi bản chính này sẽ chứa một siêu liên kết đến các sơ đồ
riêng biệt hiển thị chi tiết bước đó.
Quy tắc 3: Đặt dòng trả về phía dưới biểu đồ
Quy tắc cịn lại trong vẽ Flowchart đó chính là đặt dịng trả về phía dưới biểu

đồ luồng. Thực tế, chúng ta đọc văn bản từ đầu trang xuống một cách tự nhiên theo
tuần tự. Do đó, mọi dòng trả ngược về trước cần đặt bên dưới.
Trong trường hợp xuất hiện 2 dòng cần trả về tuyệt đối không được trùng nhau.

b) Cách vẽ Flowchart trong lập trình
Nhìn sơ qua, việc vẽ Flowchart có vẻ khá đơn giản. Khi bạn chỉ cần sử dụng

các loại hình khối và mũi tên trong đó.
Có 4 bước cơ bản để vẽ một sơ đồ giải thuật:
Bước 1: Xác định điểm bắt đầu và kết thúc
Bước 2: Xác định biến truyền vào và ra
Bước 3: Xác định các lệnh rẽ nhánh, lặp và điều kiện
Bước 4: Bật máy tính lên và vẽ thôi
Thông thường, mỗi flow chart sẽ tương ứng với một chức năng (function

trong sản phẩm của bạn). Bạn không cần vẽ chi tiết việc mình cần làm gì trong
code. Mà chỉ cần vẽ ra luồng chính để hồn thành chức năng đó mà thơi.

Nếu chức năng đó phức tạp, chúng ta lại bóc nhỏ chúng ra thành các chức
năng đơn giản hơn. Và vẽ flow chart cho các chức năng nhỏ đó.

13

Downloaded by SAU DO ()


lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

Một số kí hiệu thường dùng trong Flowchart: Ý Nghĩa
Sắp xếp
STT Kí Hiệu Ý Nghĩa STT Kí Hiệu Hướng đi
1 Nhiều tài liệu
Bắt đầu, kết thúc 8 Kết nối
Chuẩn bị
2 Điều kiện, rẽ 9

nhánh,lựa chọn

3 Nhập thông tin 10

4 Thực hiện xử lí 11

5 Tài liệu đi kèm 12

6 Lưu trữ 13

7 Chờ đợi 14

Một số công cụ vẽ Flowchart:
-Draw.io
Làm việc với Draw.io, bạn sẽ được thực hiện từng thao tác từ nhỏ đến lớn
cũng như được tùy chỉnh và cá nhân hóa lưu đồ của mình. Đây là một cơng cụ miễn
phí và là webapp nên có thể dùng ở bất cứ đâu, miễn là có máy tính.
Mình cũng thường dùng công cụ này nhất.

-Creately
Creately nằm trong top những website tạo lưu đồ uy tín nhất trên thế giới thể
hiện qua việc luôn là đối tác lớn và được đề xuất sử dụng bởi NASA, Amazon,
Paypal,.. Cũng là webapp nên dùng rất tiện lợi
-Lucidchart
Lucidchart là một website vẽ lưu đồ với hệ thống các kiểu lưu đồ cực kì
phong phú, phù hợp với nhiều lĩnh vực. Lucidchart sẽ tự động tìm kiếm cho bạn
những kiểu phù hợp hoặc có những gợi ý sao cho các bạn có thể làm việc được một
cách tốt nhất, từ cơ bản cho tới nâng cao.

14

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

CHƯƠNG 2 CODE GIẢ MÃ VÀ MÃ NGUỒN

2.1 Code giả mã - Pseudo Code

2.1.1 Mã giả hữu ích ra sao?
Mã giả (code giả mã)-Pseudocode giúp bạn lập kế hoạch cho ứng dụng của
mình trước khi viết. Nó giúp bạn tạo các thuật tốn theo định dạng dễ đọc hơn cú
pháp code.
Ví dụ JavaScript rất dễ đọc nếu bạn biết ngơn ngữ lập trình này. Các thuật
ngữ cụ thể như window.prompt hoặc console.log không tiết lộ nhiều về thuật toán.
Nếu bạn phỏng vấn để trở thành một kỹ sư phần mềm, nhà tuyển dụng sẽ
không mong muốn bạn ghi nhớ cú pháp. Họ sẽ hỏi kiến thức của bạn về các thuật

toán và cấu trúc. Bạn sẽ viết code tốt hơn nhiều nếu xây dựng các thuật tốn và cấu
trúc của mình trước khi bắt đầu viết code.

2.1.2 Mã giả - Pseudo code là gì
Pseudocode (mã giả hay code giả mã) là một cách mơ tả lập trình khơng
chính thức, không yêu cầu bất kỳ cú pháp ngôn ngữ lập trình nào. Pseudocode chỉ
đơn giản là việc triển khai một thuật tốn dưới dạng chú thích và văn bản thông tin
bằng tiếng Anh. Do không thuộc về bất kỳ ngơn ngữ lập trình nào, cú pháp của mã
giả cũng không giống cú pháp của ngôn ngữ lập trình. Chính vì vậy, máy tính khơng
thể thơng dịch hay phiên dịch pseudocode.
Mục đích của pseudocode chính là tạo ra một dàn ý hoặc bản nháp sơ bộ cho
chương trình. Nhờ vậy, System Designers có thể dễ dàng truyền đạt các yêu cầu của
các dự án đến lập trình viên.

2.1.3 Ưu điểm và nhược điểm của mã giả
a) Ưu điểm

Pseudocode là một trong những cách tốt nhất để bắt đầu triển khai một
thuật toán. Nhờ pseudocode, khả năng đọc code của các lập trình viên tương lai
dễ dàng được cải thiện. Cho dù sau này họ lựa chọn sử dụng loại ngơn ngữ lập
trình nào đi chăng nữa.

Trong rất nhiều ngành nghề, tiếp cận tài liệu đóng vai trị cực kỳ quan trọng.
Và điều này cũng tương tự trong ngành cơng nghiệp phần mềm. Ở đó, pseudocode

15

Downloaded by SAU DO ()

lOMoARcPSD|39270902


Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

đang đóng vai trị như cầu nối giữa phần mềm với thuật tốn hoặc lưu đồ
(flowchart). Lúc này, pseudocode chính là tài liệu thô truyền tải những yêu cầu của
dự án đến các thành viên.

Pseudocode giúp cho giai đoạn viết code của lập trình viên trở nên dễ dàng
hơn. Bởi, mục tiêu chính của mã giả chính là giải thích chính xác từng dịng, từng
đoạn trong chương trình.

b) Nhược điểm
Pseudocode không cung cấp một đồ thị biểu diễn trực quan về logic của

chương trình.
Khơng có định dạng cố định cho mã giả.
Mỗi công ty đều viết pseudocode theo cách riêng của mình bởi khơng có

một tiêu chuẩn cố định cho mã giả.
2.1.4 Cách viết pseudo code

Để viết pseudocode, bạn có thể tham khảo quy trình dưới đây:
1. Sắp xếp đầu công việc theo trình tự và viết pseudocode tương ứng.
2. Bắt đầu thiết lập các mục tiêu chính và mục tiêu nhánh của các mã giả.

Viết một chương trình đầy đủ bằng pseudocode đòi hỏi rất nhiều câu lệnh và
keyword khác nhau giống như lập trình thơng thường. Hãy dựa vào các keyword
với những câu lệnh pseudocode để xây dựng các thuật toán.

Điều kiện

Câu lệnh có điều kiện rất quan trọng trong lập trình. Các câu lệnh này là câu
lệnh IF hoặc câu lệnh IF/ELSE, có thể thêm logic vào code. Các câu lệnh này được
viết bằng pseudocode, sử dụng:
 IF
 ELSE
 ELSE IF
 THEN
Ở đây, chương trình thực hiện một câu lệnh IF/ELSE đơn giản được viết
bằng pseudocode. Hãy xem thử bạn có thể xác định những gì code này đang cố
gắng thực hiện chỉ bằng cách đọc nó.
START

16

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

PROGRAM isOdd
Create variable Choice
Ask the user for a number
READ INPUT into Choice
IF Choice is even THEN
PRINT "No"
ELSE
PRINT "Yes"
ENDIF
END

Đó là một chương trình khá đơn giản, yêu cầu người dùng đưa ra một con số
và làm một điều gì đó tùy thuộc vào việc số đó là số lẻ hay số chẵn.

Phép lặp
Một phần thiết yếu khác của lập trình là phép lặp (iteration), cịn được gọi là
tạo vòng lặp. Một số vòng lặp phổ biến là for và while. Cả hai đều có thể được viết
bằng pseudocode.
START
PROGRAM forLoop
FOR 1 through 12
PRINT "Hello"
ENDFOR
END
Thuật tốn này dành cho một chương trình sẽ in 12 lần chữ “Hello”. Điều
này cho thấy việc viết một vòng lặp trong pseudocode đơn giản như thế nào.
Các vòng lặp while cũng được viết rất dễ dàng
START
PROGRAM whileLoop
Create variable Counter
SET Counter equal to 1
WHILE Counter is less than 10
Print "Hello"

17

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3


INCREMENT Counter
ENDWHILE
END
Một thuật tốn khá đơn giản khác sử dụng vịng lặp while để in ra “Hello”.
Cả hai ví dụ vịng lặp đều có khởi đầu và kết thúc rõ ràng cho phép lặp.
Bạn cũng có thể viết những vịng lặp do-while. Các keyword trong
pseudocode sẽ là REPEAT và UNTIL.
START
PROGRAM doWhileLoop
Create variable Counter
SET Counter equal to 1
REPEAT
Print "Hello"
INCREMENT Counter
UNTIL Counter is equal to 10
END
Giống như vòng lặp do-while, điều này sẽ thực hiện một hành động cho đến
khi các tiêu chí nhất định được đáp ứng. Một khi nó được đáp ứng, vịng lặp sẽ
thoát ra.
Hàm
Hàm là người bạn tốt nhất lập trình viên. Chúng chứa code có thể được gọi
đi gọi lại và sử dụng trong tất cả các ngơn ngữ lập trình cấp cao. Thêm hàm vào
pseudocode rất dễ dàng.
START
PROGRAM sampleFunction
PRINT "This is a function"
END
Bạn có thể gọi các hàm trong pseudocode.
call sampleFunction

Hàm rất đơn giản và bạn có thể thêm bất kỳ logic nào bạn thích.

18

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

Xử lý lỗi
Có thể viết code phản ứng với lỗi là điều rất quan trọng khi các ứng dụng
được phát triển. Bạn có thể bao gồm những code này vào pseudocode của mình.
Bạn có thể xử lý các lỗi và ngoại lệ (exception) bằng cách sử dụng
keyword: EXCEPTION. Ở đây, một thuật toán đơn giản sẽ “bắt” được lỗi
START
PROGRAM catchError
Create variable Number
Ask the user for a number
READ INPUT into Number
EXCEPTION
WHEN Number is not a number
PRINT "Error: Please pick a number"
END
2.2 Mã nguồn - Sourcecode

2.2.1 Mã nguồn - Sourcecode là gì?
Source code hay còn được gọi là mã nguồn (bộ mã nguồn) được tạo bởi các
lập trình viên bằng cách sử dụng những ngơn ngữ lập trình như: Java, PHP, Ruby,
C#,...Các dòng lệnh được hiển thị dưới dạng văn bản, mỗi một source code (mã

nguồn) là tập hợp của rất nhiều dòng lệnh khác nhau giúp tạo ra những tác vụ mà
người dùng có thể thực hiện ngay trên website. Source code càng thân thiện người
dùng sẽ càng có nhiều trải nghiệm tích cực, điều này góp phần nâng cao cảm xúc
mua bán trao đổi của khách hàng đối với website nói chung và với doanh nghiệp nói
riêng.
Trong lập trình website, mã nguồn chính là một trong những thành tố cơ bản
giúp kết nối giao diện của trang web với hệ thống cơ sở dữ liệu. Mục đích cuối cùng
đó là tạo ra một website hoàn chỉnh.

2.2.2 Mục đích của mã nguồn
Mục đích chính của mã nguồn là làm nền tảng để tạo ra các phần mềm.
Ngồi ra mã nguồn cịn có nhiều mục đích khác như: hạn chế cho những người có

19

Downloaded by SAU DO ()

lOMoARcPSD|39270902

Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn Nhóm 3

kĩ năng mới có thể truy cập, những người có quyền hạn với mã nguồn mới có thể
truy cập, điều chỉnh và cài đặt phần mềm.

Một mục đích khác nữa là giúp các nhà phát triển, lập trình viên khác có thể
tiếp tục xây dựng chương trình tương tự trên các hệ điều hành khác, hoặc nâng cấp
phiên bản hiện tại lên.

Tuy nhiên cũng là một bài tốn, với lập trình thì sẽ có vơ vàn cách giải quyết,
thế nên việc ghi chú lại mục đích của dòng mã là rất cần thiết. Để các lập trình viên,

các nhà phát triển khác hiểu người đi trước đã làm gì, sau đó họ sẽ tiếp bước thực
hiện công việc.

2.2.3 Vai trò của mã nguồn trong lập trình webside
Website ngày nay được ví như là bộ mặt của một công ty, tổ chức trên mạng
Internet. Website ra đời để tiếp cận và tăng tương tác với khách hàng mà công ty
muốn hướng đến. Nhằm phục vụ nhu cầu (xem tin tức, đọc profile công ty,..) khách
hàng họ truy cập vào Website. Họ thực hiện rất nhiều thao tác, tương ứng với nhiều
câu lệnh khác nhau.
Mã nguồn là khung xương cho toàn bộ những thao tác đó. Bao gồm những
hành động đơn giản như kéo chuột, rê chuột, nhấp đúp cho đến phức tạp như cho
hàng vào giỏ, điền thông tin vào form, download ebook, tìm kiếm tài liệu v.v..

2.2.4 Các loại mã nguồn

Hiện nay source code được chia thành hai loại là mã nguồn mở và mã nguồn

đóng. Tùy vào nhu cầu và mục đích sử dụng website mà các lập trình viên có thể

lựa chọn mã nguồn đóng hoặc mở.

Mã nguồn mở Mã nguồn đóng

Là dạng mã nguồn được chia sẻ Là dạng mã nguồn được các lập trình

Khái cơng khai, người dùng có thể tự tải viên thiết lập riêng cho một website

niệm xuống, chỉnh sửa và tiến hành sử nào đó. Muốn chỉnh sửa cần phải có

dụng theo ý mình. tài khoản truy cập.


Tính Tính bảo mật thấp vì các hacker Tính bảo mật cao vì tồn bộ mã
bảo
mật cũng có thể tìm thấy các mã nguồn nguồn đều được thiết kế riêng theo

mở này vậy nên các thông tin dữ từng yêu cầu và được thiết lập cả bảo

liệu của bạn rất dễ bị đánh cắp. mật vậy nên hacker rất khó xâm nhập.

20

Downloaded by SAU DO ()


×