1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng cơ sở lập trình thuật toán (algorithm) trịnh tấn đạt

40 10 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 đề Bài Giảng Cơ Sở Lập Trình Thuật Toán
Tác giả Trịnh Tấn Đạt
Trường học Đại học Sài Gòn
Chuyên ngành Công nghệ thông tin
Thể loại bài giảng
Năm xuất bản 2024
Thành phố Sài Gòn
Định dạng
Số trang 40
Dung lượng 691,39 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dung  Vấn đề, bài toán  Thuật toán o Khái niệm o Các đặc trưng của thuật toán o Phương pháp biểu diễn thuật toán : mã giả, lưu đồ khối.. Thuật toán Thuật toán Algorithm:  Là

Trang 1

Thuật Toán (Algorithm)

Trịnh Tấn Đạt

Khoa CNTT - Đại Học Sài Gòn

Email: trinhtandat@sgu.edu.vn

Website: https://sites.google.com/site/ttdat88/

Trang 2

Nội dung

 Vấn đề, bài toán

 Thuật toán

o Khái niệm

o Các đặc trưng của thuật toán

o Phương pháp biểu diễn thuật toán : mã giả, lưu đồ khối

 Giải bài toán trên máy tính

Trang 3

Vấn đề, bài toán

Vấn đề (issue/problem):

o Những vướng mắc, khó khăn trong cuộc sống mà ta cần giải quyết

 Bài toán (problem):

o Một loại vấn đề mà để giải quyết, cần đến tính toán (phép toán số, luận lí, quan

hệ)

o Khi giải bài toán, cần quan tâm 02 yếu tố: đầu vào (input) và đầu ra (output)

Trang 4

Giải quyết vấn đề, bài toán

 Bất kỳ vấn đề, bài toán ngoài đời nào cũng có thể được chia thành trình tự nhiều công việc nhỏ hơn

 Trình tự các công việc nhỏ này được gọi là giải thuật giải quyết công việc ngoài đời

 Mỗi công việc nhỏ hơn cũng có thể được chia nhỏ hơn nữa nếu nó còn phức tạp,

Ví dụ: ???

Vấn đề mấu chốt của việc dùng máy tính giải quyết công việc ngoài đời là lập trình

Trang 5

Thuật toán

Thuật toán (Algorithm):

 Là cách biểu diễn lời giải "bài toán“ rõ ràng (không mập mờ), chi tiết để có thể thực thi được trên máy tính

 Là một dãy hữu hạn các bước nhằm xác định các thao tác mà máy tính có thể thực

hiện được sao cho sau khoảng thời gian hữu hạn (có tính dừng) thì cho ra kết quả

Ví dụ: Bài toán giải phương trình bậc 1 (1 ẩn ; ax + b = 0)

Trang 6

• Ph ương trình có nghiệm duy nhất x = -b/a

Đầu vào: a, b thuộc R

Đầu ra: nghiệm phương trình ax + b = 0

Trang 7

Các đặc trưng của thuật toán

 Tính hữu hạn: có hữu hạn bước và phải dừng

 Tính xác định: các bước rõ ràng, thực thi được

 Tính đúng: quá trình thực thi theo các bước đã chỉ ra phải đi đến kết quả như ý

 Tính hiệu quả: khối lượng, không gian, thời gian tính toán không quá “lớn”

 Tính tổng quát: áp dụng được cho mọi trường hợp của bài toán

Trang 8

Ví dụ

– Một lớp học cần chọn lớp trưởng theo các bước:

1 Lập danh sách sinh viên

Trang 9

Ví dụ

Sửa lại:

a) Lập danh sách theo: họ tên, ngày tháng năm sinh, điểm các môn, điểm trung bình cuối năm

b) Sắp xếp theo ĐTB giảm Nếu ĐTB bằng nhau  cùng hạng

c) Nếu có 01 HS đứng đầu  chọn, ngược lại chọn người có điểm toán cao nhất, nếu không chọn được  bốc thăm

 Phân biệt mập mờ và lựa chọn có quyết định:

– Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn nhưng không đủ điều kiện quyết định, ví dụ: bước 1, 2

– Lựa chọn có quyết định là hoàn toàn xác định duy nhất trong điều kiện cụ thể của vấn đề, ví dụ bước c

Trang 11

Phương pháp biểu diễn thuật toán

o Dùng ngôn ngữ tự nhiên (NNTN - natural language)

o Dùng mã giả (pseudocode): ngôn ngữ tự nhiên (NNTN) + ngôn ngữ

lập trình (NNLT)

o Dùng lưu đồ - sơ đồ khối (flowchart)

Trang 12

Biểu diễn bằng ngôn ngữ tự nhiên

 Dùng ngôn ngữ thường ngày để liệt kê các bước của thuật toán

 Không thể hiện rõ cấu trúc của thuật toán

 Dài dòng, có thể gây hiểu lầm hoặc khó hiểu

 KHÔNG yêu cầu người viết hay đọc nắm quy tắc

o Không có một quy tắc cố định

 Tính dễ đọc:

o Viết các bước con lùi vào bên phải

o Đánh số bước theo quy tắc phân cấp như 1, 1.1,

Trang 13

Biểu diễn bằng mã giả

 Vay mượn các cú pháp của một ngôn ngữ lập trình

o dùng một phần ngôn ngữ tự nhiên

o bị phụ thuộc vào ngôn ngữ lập trình

 Mọi ngôn ngữ lập trình đều có những thao tác cơ bản

o xử lý, rẽ nhánh và lặp

o t ận dụng được các khái niệm trong ngôn ngữ lập trình

 Dễ dàng nắm bắt nội dung thuật toán

Trang 14

Biểu diễn bằng mã giả - Ví dụ

xuất kết quả : phương trình có nghiệm kép là -b/(2*a)

else {trường hợp delta < 0 }

xuất kết quả : phương trình vô nghiệm

Một đoạn mã giả của thuật toán giải pt bậc hai

Trang 15

Biểu diễn bằng lưu đồ

 Các nhà lập trình đưa ra dạng

lưu đồ để minh họa từng bước

quá trình xử lý một vấn đề (bài

toán)

Trang 16

Biểu diễn bằng lưu đồ

o Biểu diễn bằng mô hình – hình vẽ

o Sự phân cấp các trường hợp

o Quá trình xử lý của thuật toán

 Phân biệt hai loại thao tác:

o Chọn lựa theo một điều kiện nào đó

o Xử lý, hành động

Trang 17

Biểu diễn bằng lưu đồ

 Chọn lựa theo một điều kiện nào đó:

o Biểu diễn bằng một hình thoi, bên trong chứa biểu thức điều kiện

 Ví dụ: thao tác "nếu a = b thì thực hiện thao tác B2, ngược lại thực hiện B4" là thao tác chọn lựa

Trang 18

Biểu diễn bằng lưu đồ

 Thao tác chọn lựa: có thể có hai hướng đi

o một hướng ứng với điều kiện thỏa

o một hướng ứng với điều kiện không thỏa

o 2 nhánh có nhãn

• Đ/Đúng,Y/Yes

• S/Sai,N /N o

Trang 19

Biểu diễn bằng lưu đồ

 Xử lý, hành động:

o Biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung xử lý

 Ví dụ: "Chọn một môn học và in ra." là một thao tác thuộc loại hành động

Trang 20

Biểu diễn bằng lưu đồ

 Quá trình thực hiện các thao tác:

o Đường đi – route

o Biểu diễn bằng cung có hướng

• nối giữa 2 thao tác: thực hiện lần lượt

Trang 21

Biểu diễn bằng lưu đồ

 Ðiểm cuối (terminator)

o Biểu diễn bằng hình ovan

o Điểm khởi đầu

• chỉ có cung đi ra

• bên trong ovan ghi chữ: bắt đầu/start/begin

o Điểm kết thúc

• Chỉ có cung đi vào

• bên trong ovan ghi chữ: kết thúc/end

 Mỗi lưu đồ chỉ có 1 điểm bắt đầu và 1 điểm kết thúc

Trang 22

Biểu diễn bằng lưu đồ

 Điểm nối (connector)

o Nối các phần khác nhau của một lưu đồ

o Nối sang trang

o Sử dụng với lưu đồ phức tạp

• Giảm độ rắc rối

• Đặt ký hiệu liên hệ giữa các điểm nối

Trang 23

Đầu vào: a, b thuộc R

Đầu ra: nghiệm phương trình ax + b = 0

Trang 24

Xuất “Phương trình có nghiệm x = -b/a”

Đầu vào: a, b thuộc R

Đầu ra: nghiệm phương trình ax + b = 0

Trang 26

Cài đặt thuật toán bằng C/C++

Trang 27

Ví dụ 1

 Chuẩn bị cà phê

Trang 28

Ví dụ 2

Trang 29

Ví dụ 3

 Kiểm tra 2 số a và b giống hay khác nhau

Trang 30

Ví dụ 4

 Kiểm tra điểm thi có hợp lệ hay không?

Trang 32

Ví dụ 6

 Xếp lon bia vào thùng (tối đa chứa được 24 lon)

Trang 33

Giải bài toán trên máy tính

 Các bước giải quyết vấn đề, bài toán bằng máy tính điện tử (MTĐT):

1) Xác định vấn đề, bài toán: xác định rõ yêu cầu của bài toán, bài toán cho gì

(Input) và yêu cầu tìm gì (Output)

2) Lựa chọn phương pháp giải: Có thể có nhiều cách khác nhau để giải bài toán

Các phương pháp có thể khác nhau về thời gian thực hiện, chi phí lưu trữ dữ liệu, độ chính xác, … => tùy theo nhu cầu cụ thể mà chọn phương pháp giải thích hợp

Trang 34

Giải bài toán trên máy tính

3) Xây dựng thuật toán: xây dựng mô hình chặt chẽ, chính xác hơn và chi tiết hơn

cho phương pháp giải đã chọn Xác định rõ ràng dữ liệu vào, ra cho các bước thực hiện cơ bản và trật tự thực hiện các bước đó Nên áp dụng phương pháp thiết kế có cấu trúc, từ thiết kế tổng thể tiến hành làm mịn dần từng bước

4) Cài đặt chương trình: mô tả thuật giải bằng chương trình Dựa vào thuật giải đã

được xây dựng, căn cứ quy tắc của một ngôn ngữ lập trình để soạn thảo ra chương trình thể hiện giải thuật thiết lập ở bước 3

Trang 35

Giải bài toán trên máy tính

5) Hiệu chỉnh chương trình: Cho chương trình chạy thử để phát hiện và điều chỉnh

sai sót nếu tìm thấy Có hai loại lỗi: lỗi cú pháp và lỗi ngữ nghĩa

6) Thực hiện chương trình: Cho MTĐT thực hiện chương trình Tiến hành phân tích

kết quả thu được Việc phân tích kết quả nhằm khẳng định kết quả đó có phù hợp hay không Nếu không, cần kiểm tra lại toàn bộ các bước một lần nữa

Trang 36

Từ bài toán đến chương trình

Trang 37

Từ bài toán đến chương trình

Chương trình (Program)

 Là một tập hợp các mô tả, các phát biểu, nằm trong một hệ thống qui ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển máy tính làm việc Theo Niklaus Wirth thì: Chương trình = Thuật toán + Cấu trúc dữ liệu

 Các thuật toán và chương trình đều có cấu trúc dựa trên 3 cấu trúc điều khiển cơ bản:

o Tuần tự (Sequential): Các bước thực hiện tuần tự một cách chính xác từ trên xuống, mỗi bước chỉ thực hiện đúng một lần

o Chọn lọc (Selection): Chọn 1 trong 2 hay nhiều thao tác để thực hiện

o Lặp lại (Repetition): Một hay nhiều bước được thực hiện lặp lại một số lần

Trang 38

Ôn Tập

1 Thuật toán là gì? Trình bày các tính chất quan trọng của một thuật toán?

2 Các bước xây dựng chương trình (giải bài toán trên máy tính)?

3 Các cách biểu diễn thuật toán? Ưu và khuyết điểm của từng phương pháp?

Cho ví dụ minh họa

Trang 39

Bài Tập

 Viết mã giả và vẽ lưu đồ thuật toán cho các chương trình sau:

1 Đổi từ tiền VND sang tiền USD

2 Tính điểm trung bình của học sinh gồm các môn Toán, Lý, Hóa

3 Giải phương trình bậc 2: ax2 + bx + c = 0

4 Đổi từ độ sang radian và đổi từ radian sang độ

(công thức / = a/180, với : radian, a: độ)

5 Kiểm tra 2 số a, b giống nhau hay khác nhau

6 Nhập năm sinh của một người Tính tuổi người đó

7 Nhập 2 số a và b Tính tổng, hiệu, tính và thương của hai số đó

8 Nhập bán kính của đường tròn Tính chu vi và diện tích của hình tròn đó

9 Nhập vào 2 số nguyên Tính min và max của hai số đó

10 Giải hệ phương trình bậc nhất hai ẩn

Trang 40

Bài tập

 Nâng cao: Vẽ lưu đồ thuật toán cho các chương trình sau:

1 Nhập vào số nguyên dương n Tính tổng S = 1 + 2 + 3 + 4 + … + n

2 Nhập vào số nguyên dương n Kiểm tra n có phải là số nguyên tố hay không?

Ngày đăng: 08/12/2023, 15:40

TỪ KHÓA LIÊN QUAN