Algorithm
Algorithm
1-3
1.1 Tại sao cần có chương trình?
Máy tính – Là thiết bị điện tử có thể lập trình
được, nhằm lưu trữ truy xuất và xử lý dữ liệu.
Chương trình / Phần mềm – Gồm các lệnh
trong bộ nhớ máy tính để cho nó làm việc gì
đó theo nhu cầu của người sử dụng.
Lập trình viên - Người viết lệnh (chương
trình) để làm cho máy tính thực hiện một
nhiệm vụ.
1-5
Danh mục các thành phần phần cứng chính
1-6
Đơn vị xử lý trung tâm (CPU)
CPU - Thành phần phần
cứng để chạy các
chương trình
Bao gồm:
• Đơn vị điều khiển
– Truy xuất và giải mã lệnh
chương trình
– Điều phối hoạt động máy
tính
1-7
Vai trò của CPU trong việc chạy một
chương trình
Chuyển qua:
• Fetch: lấy lệnh chương trình tiếp theo
• Decode: diễn giải lệnh và tạo ra một tín
hiệu
• Execute: định tuyến tín hiệu đến thành
phần thích hợp để thực hiện một hoạt
động.
1-8
Bộ nhớ chính
• Lưu trữ cả lệnh chương trình và dữ liệu
1-9
Tổ chức bộ nhớ chính
• Bit
- Phần nhỏ nhất của bộ nhớ
– Viết tắt của binary digit
– Có giá trị 0 (tắt) hoặc 1 (trên) 8 bits
• Byte
– 8 bit liên tiếp 0 1 1 0 0 1 1 1
– Có một địa chỉ
• Word
- Thường là 4 byte liên tiếp 1 byte
1-10
Bộ lưu trữ thứ cấp
1-12
Đầu ra Thiết bị
1-13
Chương trình phần mềm chạy trên
máy tính
• Hệ thống phần mềm
– Các chương trình quản lý phần cứng máy tính và các
chương trình chạy trên máy tính
– Hệ điều hành
• Kiểm soát hoạt động của máy tính
• Quản lý các thiết bị được kết nối
• Chạy các chương trình
– Các chương trình tiện ích
• Hỗ trợ các chương trình nhằm nâng cao hoạt động máy tính
• Ví dụ: phần mềm chống vi rút, sao lưu dữ liệu, nén dữ liệu
– Công cụ phát triển phần mềm
• Được các lập trình viên sử dụng để tạo phần mềm
• Ví dụ: trình biên dịch, môi trường phát triển tích hợp (IDE) 1-14
1.3 Chương trình và Ngôn ngữ lập
trình
• Chương trình
Một tập hợp các hướng dẫn chỉ đạo một
máy tính để thực hiện một nhiệm vụ
1-15
Chương trình và Ngôn ngữ lập trình
Các loại ngôn ngữ
– Cấp thấp: được sử dụng để giao tiếp
trực tiếp với phần cứng máy tính.
– Cấp cao: gần gũi hơn với ngôn ngữ
con người
1-16
Từ một chương trình cấp cao đến một
file có thể thực thi được
1-17
Từ một chương trình cấp cao đến một
file có thể thực thi được
1-18
Từ một chương trình cấp cao đến một
file có thể thực thi được
1-19
1.4 Chương trình được tạo ra
bằng gì?
Các phần tử phổ biến trong ngôn ngữ lập
trình:
– Key Words
– Lập trình viên xác định các định danh
– Các phép toán
– Chấm câu
– Cú pháp
1-20
Ví dụ
#include <iostream>
using namespace std;
int main()
{
double num1 = 5,
num2, sum;
num2 = 12;
1-25
Lines vs. Statements
Trong một tập tin nguồn,
Một dòng là tất cả các ký tự được nhập trước
dấu xuống dòng .
Dòng trống cải thiện khả năng đọc của
chương trình.
Đây là bốn dòng mẫu . Dòng 3 là trống:
1. double num1 = 5, num2, sum;
2. num2 = 12;
3.
4. sum = num1 + num2;
1-26
Lines vs. Statements
Trong một tập tin nguồn,
Một câu lệnh là một lệnh cho máy tính để thực
hiện một hoạt động.
Một câu lệnh có thể chứa các từ khóa, toán
tử, xác định các định danh do người lập
trình xác định và dấu chấm câu.
Một câu lệnh có thể vừa trên một dòng
hoặc nó có thể chiếm nhiều các dòng.
Đây là một câu lệnh đơn sử dụng hai dòng:
double num1 = 5,
num2, sum;
1-27
Biến
• Một biến là một vị trí được đặt tên trong bộ nhớ máy
tính (trong RAM)
• Nó chứa một phần dữ liệu. Dữ liệu mà nó nắm giữ
có thể thay đổi trong khi chương trình đang chạy.
• Tên của biến phải phản ánh mục đích
Nó phải được xác định trước khi nó có thể được sử
dụng. Định nghĩa biến cho biết tên biến và kiểu dữ
liệu mà nó có thể giữ.
• Ví dụ định nghĩa biến:
double num1;
1-28
1.5 Đầu vào, Xử lý và Đầu ra
Ba bước mà nhiều chương trình thực
hiện
1) Thu thập thông tin dữ liệu đầu vào
- từ bàn phím
- từ các tệp trên ổ đĩa
2) Xử lý dữ liệu đầu vào
3) Hiển thị kết quả dưới dạng đầu ra
- gửi nó lên màn hình hoặc máy in
- viết nó cho một tập tin
1-29
1.6 Qui trình lập trình
1. Xác định chương trình là để làm gì?
2. Mô phỏng chương trình đang chạy
trên máy tính.
3. Sử dụng các công cụ thiết kế để tạo ra
4. một mô hình của chương trình.
Biểu đồ phân cấp, lưu đồ, mã giả, vân vân.
4. Kiểm tra mô hình cho các lỗi logic.
5. Viết mã nguồn chương trình.
6. Biên dịch mã nguồn.
1-30
Quy trình lập trình (tiếp)
7. Sửa bất kỳ lỗi nào được tìm thấy trong quá
trình biên soạn.
8. Liên kết chương trình để tạo tập tin thực thi.
9. Chạy chương trình bằng cách sử dụng dữ
liệu đầu vào thử nghiệm.
10.Sửa bất kỳ lỗi nào được tìm thấy trong khi
chạy chương trình.
Lặp lại các bước 4 - 10 nhiều lần cần thiết.
11. Xác thực kết quả của chương trình.
Chương trình có thực hiện những gì đã được xác
định trong bước 1? 1-31
Quy trình lập trình (tiếp)
7. Sửa bất kỳ lỗi nào được tìm thấy trong quá
trình biên soạn.
8. Liên kết chương trình để tạo tập tin thực thi.
9. Chạy chương trình bằng cách sử dụng dữ
liệu đầu vào thử nghiệm.
10.Sửa bất kỳ lỗi nào được tìm thấy trong khi
chạy chương trình.
Lặp lại các bước 4 - 10 nhiều lần cần thiết.
11. Xác thực kết quả của chương trình.
Chương trình có thực hiện những gì đã được xác
định trong bước 1? 1-32
Thuật toán
Giới thiệu:
Trí thông minh là một trong những đặc điểm quan trọng
giúp phân biệt giữa con người với các sinh vật khác trên
trái đất.
Nhờ có trí thông minh mà con người có thể giải quyết
các vấn đề hang ngày, đưa ra các chiến lược để xử lý
các tình huống khác nhau phát sinh trong cuộc sống
hàng ngày.
Ví dụ: Một người đến Ngân hàng để rút tiền, đây là trí
thông minh cơ bản. Khi Con người gặp bất cứ vấn đề
gì, họ sẽ nghĩ ra giải pháp để giải quyết vấn đề theo
một trình tự nào đó
1-33
Vấn đề và giải quyết vấn đề
1-34
Vấn đề và giải quyết vấn đề
Câu trả lời là không
Chúng ta bắt buộc phải giải quyết các vấn đề trong suốt
cuộc đời.
Có thể nói rằng bất cứ hoạt động nào mà con người
hay máy móc làm để đạt được một mục tiêu cụ thể cần
phải giải quyết vấn đề.
1-35
Vấn đề và giải quyết vấn đề
1-36
Vấn đề và giải quyết vấn đề
Ví dụ 1: Nếu bạn đang xem một kênh tin tức trên TV và bạn
muốn chuyển kênh
1-37
Vấn đề và giải quyết vấn đề
1-38
Vấn đề và giải quyết vấn đề
1-39
Vấn đề và giải quyết vấn đề
1-40
Vấn đề và giải quyết vấn đề
- Như vậy vấn đề là một loại rào cản để đạt được một
cái gì đó và giải quyết vấn đề là một quá trình để loại bỏ
rào cản đó bằng cách thực hiện một chuỗi các hoạt
động.
- Các vấn đề mở
- Nếu bạn có thể giải quyết một vấn đề đã cho thì bạn
cũng có thể viết một thuật toán cho nó.
1-41
Thuật toán
1-42
Thuật toán
1-43
Thuật toán
Mỗi vấn đề chỉ có thể được giải quyết bằng một thuật
toán?
1-44
Thuật toán
Vậy thì thuật toán sẽ cần phải có những yêu cầu gì?
1-45
Thuật toán
1-46
Thuật toán
Trước khi viết thuật toán để giải quyết một vấn đề gì đó,
chúng ta cần xác định:
- Đầu vào là gì?
- Đầu ra là gì?
1-48
Thuật toán
Bài toán 1: Tính diện tích của hình tròn bán kính r.
Thuật toán:
Step1: Read\input the Radius r of the Circle
Step2: Area=PI*r*r // calculation of area
Step3: Print Area
1-49
Thuật toán
Bài toán 2: Viết thuật toán đọc hai số và tìm tổng của
chúng.
Đầu vào cho thuật toán: Số thứ nhất (Num1), Số thứ
hai(Num2).
Đầu ra mong đợi: Tổng của hai số(Sum).
Thuật toán:
Step1: Start
Step2: Read\input the first num1.
Step3: Read\input the second num2.
Step4: Sum=num1+num2 // calculation of sum
Step5: Print Sum
Step6: End
1-50
Thuật toán
Thuật toán:
Step1: Start
Step 2: Read Temperature in Fahrenheit F
Step 3: C =5/9*(F-32)
Step 4: Print Temperature in Celsius: C
Step5: End
1-51
Các loại thuật toán
Thuật toán thường được biểu diễn bằng các ngôn ngữ
sau:
* Dùng ngôn ngữ tự nhiên (NNTN - natural language)
* Dùng mã giả (pseudocode): ngôn ngữ tự nhiên (NNTN)
+ Ngôn ngữ lập trình (NNLT)
* Dùng lưu đồ - sơ đồ khối (flowchart)
1-58
Các phương pháp biểu diễn thuật toán
* Vay mượn các cú pháp của một ngôn ngữ lập trình
- dùng một phần ngôn ngữ tự nhiên
- 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
- xử lý, rẽ nhánh và lặp
- 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
1-61
Biểu diễn bằng mã giả
Ví dụ: Một đoạn mã giả của thuật toán giải pt bậc hai
if Delta > 0 then
x1=(-b-sqrt(delta))/(2*a) x2=(-
b+sqrt(delta))/(2*a)
xuất kết quả : phươngtrình có hai nghiệm là x1 và x2
end else
if delta = 0 then
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
Biểu diễn bằng lưu đồ
2. Phân tích hiệu quả: Một lưu đồ của một vấn đề có thể
được sử dụng để phân tích vấn đề một cách hiệu quả.
3. Tài liệu về Chương trình / Hệ thống: Sơ đồ
chương trình là một phần quan trọng của một tài
liệu chương trình tốt. Tài liệu chương trình được sử
dụng cho nhiều các mục đích như khám phá các
thành phần trong chương trình, độ phức tạp của
chương trình v.v.
Biểu diễn bằng lưu đồ
4. Bảo trì chương trình hiệu quả: Sau khi chương trình được
phát triển và chạy, nó cần bảo trì theo thời gian. Với sự giúp
đỡ của lưu đồ việc bảo trì trở nên dễ dàng hơn.
5. Viết chương trình: Mọi thiết kế giải pháp của một vấn đề
cuối cùng đều chuyển thành chương trình máy tính. Viết mã
của giải pháp dựa vào lưu đồ trở nên dễ dàng.
Bài tập
1) Thuật toán là gì?
2) Giải thích nhu cầu của một thuật toán?
3) Viết thuật toán tìm tuổi trung bình của nhóm 10
người chơi?
4) Viết thuật toán cho bài toán này:
A đi chợ để mua một số loại trái cây và rau quả.
Anh ta đang sử dụng 500 đồng để đi chợ. Từ một
cửa hàng, anh ta mua 2,0 kg Táo với giá 50,0 Đ/ kg,
1,5 kg Xoài có giá 3,5 Đ/ kg, 2,5 kg Khoai tây có giá
10,0 Đ/ kg và 1,0 kg Cà chua có giá 15 Đ/ kg.
Anh ta đưa ra 500 đồng cho chủ tiệm. Tìm số tiền
mà chủ cửa hàng sẽ trả lại cho A. và tổng số mặt
hàng đã mua.
Bài tập