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

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

26 2 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

Tiêu đề Giải thuật, sơ đồ giải thuật, code giả mã, mã nguồn
Tác giả 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
Người hướng dẫn Th.S Đoàn Văn Trung
Trường học Trường Đại học Công nghiệp Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Tiểu luận môn học
Năm xuất bản 2023
Thành phố Hà Nam
Định dạng
Số trang 26
Dung lượng 312,71 KB

Nội dung

Các định nghĩa tương tự có thể được thực hiện cho độ phức tạp khônggian 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

Trang 1

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

Trang 2

PHIẾU GIAO ĐỀ TÀI

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àiNơ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.

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

Trang 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,phân chia công việc

Chọn trưởng nhóm

Giải thuật do PH.Cường

Sơ đồ giải thuật do NH.Hải

Mã giả do PV Đức

Mã nguồn LV.DuyNV.Dũng làm trưởng nhóm

-Nội dung, tài liệu về chủ đề

3 NV Dũng

Cả nhóm

-Thứ hai bắt đầu làm bài thuyết trình trên phần mềm powerpoint-Sáng thứ năm,phân công, tập thử bài thuyết trình

-Thêm phần câu hỏi -Thứ 6, Thuyết trình, 4 thành viên mỗi thành viên thuyết trình một nộidung đã giao trước đó

-Hoàn thành vào thứ tư

-Hoàn thành bài thuyết trình-4 câu hỏi cho phần thuyết trình mỗi câu một phần lý thuyết

-Bài thuyết trình thành công

4 NV Dũng

Cả nhóm

-Tìm thêm tài liệu từ sách, giảo trình, bài 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

Hai cuốn tài liệu tham khảo

Hoàn thành nội dung cho bài tiểu luận

5 Cả nhóm -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

Hoàn thiện đẩy đủ cho nội dung bài Tiểu luận, Có thêm một số hình ảnh, bảng biểu.Hoàn thành xong bài tiểu luận

Trang 4

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 toán để giải quyết một thuật toá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.

Trang 5

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

Trang 6

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>

Trang 7

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>

Trang 8

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 toán có thể được đánh giá bằng nhiều tiêu chí khác nhau Thôngthường, chúng ta sẽ quan tâm đến tốc độ tăng trưởng của thời gian hoặc không giancầ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 tamuố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 toá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 toán đồ thị cóthể là số cạnh

Thời gian cần thiết của một thuật toán được biểu thị dưới dạng một hàm củakí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 vihạ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 giantiệm cận Các định nghĩa tương tự có thể được thực hiện cho độ phức tạp khônggian 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 toá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

Trang 9

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ậtnê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

Trang 10

•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ácthô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ềukhiể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 đầuBước 2: Khai báo ba số a, b & cBước 3: Định nghĩa các giá trị của a & bBước 4: Cộng các giá trị của a & bBước 5: Lưu trữ kết quả của Bước 4 vào biến cBước 6: In biến c

Bước 7: Kết thúc

Trang 11

1.2 Sơ đồ giải thuật - Flowchart

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ềuchỉ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 toá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

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

Trang 12

 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êncù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

Trang 13

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ụngcá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 để hoà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ỏ đó

Trang 14

Một số kí hiệu thường dùng trong Flowchart:

STT Kí Hiệu Ý Nghĩa STT Kí Hiệu Ý Nghĩa

Mình cũng thường dùng công cụ này nhất

Trang 15

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ủamình trước khi viết Nó giúp bạn tạo các thuật toá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ậtngữ 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ậttoá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 toán và cấutrú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ôngchí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 toán dưới dạng chú thích và văn bản thông tinbằ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ôngthể 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ộ chochương trình Nhờ vậy, System Designers có thể dễ dàng truyền đạt các yêu cầu củacá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ả

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

Trang 16

đang đóng vai trò như cầu nối giữa phần mềm với thuật toá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ànghơ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ủachươ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

Ở đâ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

Ngày đăng: 27/03/2024, 16:03

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w