You are on page 1of 58

Kỹ Thuật Lập Trình

Th.S Đoàn Thiện Minh

LOGO
* 1
Chương 1

Kỹ thuật lập trình


Nội dung

1 Các khái niệm cơ bản


2 Lưu đồ thuật toán

3 Bài tập

* 2
1. Các khái niệm cơ bản
Tổng quan Kỹ thuật lập trình

▪ Kỹ thuật lập trình.

Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình

* 3
1. Các khái niệm cơ bản
Tổng quan Kỹ thuật lập trình

▪ Thế nào được gọi là lập trình ?


★ Viết chương trình ★ Viết chương trình
tính giai thừa của 100 tính giai thừa của n
★ Viết chương trình in ★ Viết chương trình in
ra 100 số nguyên tố ra n số nguyên tố đầu
đầu tiên tiên
★ Giải bài toán cổ ★ Giải bài toán cổ
«Vừa gà vừa chó, ba «Vừa gà vừa chó,
mươi sáu con, bó lại vừa vặn X con, bó lại
cho tròn, một trăm cho tròn, đủ Y chân
chân chẵn» chẵn»

* 4
1. Các khái niệm cơ bản
Tổng quan Kỹ thuật lập trình

▪ Khái niệm lập trình.


Với mỗi bài toán (vấn đề) đặt ra, cần:
➢ Thiết kế giải thuật để giải quyết bài toán đó
➢ Cài đặt giải thuật bằng:
■ Một ngôn ngữ lập trình
■ Một chương trình máy tính

* 5
1. Các khái niệm cơ bản
Tổng quan Kỹ thuật lập trình

▪ Lập trình như thế nào gọi là tốt

Đúng / Chính xác Khả năng nâng cấp


● Thỏa mãn các nhiệm vụ ● Dễ dàng chỉnh sửa
● Được khách hàng chấp ● Dễ dàng nâng cấp trong điều
nhận kiện bài toán thay đổi
Ổn định Tái sử dụng
● hoạt động ổn định ● Tái sử dụng hoặc
● không có lỗi hoặc lỗi nhẹ ● Mã nguồn dễ kế thừa cho bài
có thể chấp nhận được toán khác

* 6
1. Các khái niệm cơ bản
Tổng quan Kỹ thuật lập trình

▪ Lập trình như thế nào gọi là tốt

Tương thích
Hiệu quả
● Thích ứng tốt các môi
● Ra đời đúng thời điiểm
trường khác nhau
● Dễ bảo trì
Hiệu suất
● Giá trị sử dụng lại lớn
● Chương trình ít tốn dung
● Sử dụng đơn giản, thân thiện
lượng bộ nhớ
● Nhiều chức năng tiện ích
● Tốc độ nhanh, sử dụng ít
CPU
● Thời gian thực thi nhanh

* 7
1. Các khái niệm cơ bản
Tổng quan Kỹ thuật lập trình

▪ Lập trình như thế nào gọi là tốt


★ Tư duy và phương pháp lập trình
★ Hiểu sâu về máy tính
★ Nắm vững ngôn ngữ
★ Rèn luyện

* 8
1. Các khái niệm cơ bản

Hoạt động của chương trình máy tính


● Chương trình máy tính được nạp
vào bộ nhớ chính (primary memory)
như là một tập các lệnh viết bằng
ngôn ngữ mà máy tính hiểu được,
tức là một dãy tuần tự các số nhị
phân (binary digits).
● Tại bất cứ một thời điểm nào, máy
tính sẽ ở một trạng thái (state) nào
đó. Đặc điểm cơ bản của trạng thái
là con trỏ lệnh (instruction pointer)
trỏ tới lệnh tiếp theo để thực hiện.
● Thứ tự thực hiện các nhóm lệnh
được gọi là luồng điều khiển (flow of
control).
* 9
1. Các khái niệm cơ bản

Hoạt động của chương trình máy tính

● Bắt đầu mỗi chu trình lệnh,


CPU nhận lệnh từ bộ nhớ
chính.
● PC (Program Counter):
thanh ghi giữ địa chỉ của
lệnh sẽ được nhận
● Lệnh được nạp vào thanh
ghi lệnh IR (Instruction
Register)
● Sau khi lệnh được nhận
vào, nội dung PC tự động
tăng để trỏ sang lệnh kế
tiếp
* 10
1. Các khái niệm cơ bản
SƠ ĐỒ CƠ BẢN CỦA MÁY TÍNH

* 11
Ngôn ngữ lập trình

▪ Ngôn ngữ lập trình là một hệ thống các ký hiệu dùng để


liên lạc, trao đổi với máy tính nhằm thực thi một nhiệm
vụ tính toán

* 12
Ngôn ngữ lập trình

* 13
Ngôn ngữ lập trình

▪ Mã lệnh (Machine code - mã máy)

➔ Máy tính chỉ nhận các


tín hiệu điện tử - có,
không có - tương ứng
với các dòng bits.
➔ Một chương trình ở
dạng đó gọi là mã máy
(machine code).

* 14
Ngôn ngữ lập trình

▪ Hợp ngữ Assembly

➔ Là bước đầu tiên của


việc xây dựng cơ chế
viết chương trình tiện
lợi hơn thông qua các
ký hiệu, từ khóa và cả
mã máy.
➔ Để thực thi được các
chương trình này thì
phải chuyển thành
machine code.

* 15
Ngôn ngữ lập trình

▪ Ngôn ngữ lập trình bậc cao

● Thay vì dựa trên phần cứng


(machine-oriented) cần tìm
cơ chế dựa trên vấn đề
(problem-oriented) để tạo
chương trình.
● Gần gũi với ngôn ngữ tự
nhiên hơn, thường sử dụng
các từ khóa giống tiếng Anh

* 16
Ngôn ngữ lập trình

+1300042774
Ngôn ngữ máy +1400593419
+1200274027

LOAD A
Ngôn ngữ tổ hợp ADD B
STORE C

Ngôn ngữ cấp


cao C=A+B
* 17
Ngôn ngữ lập trình

▪ Tương lai của ngôn ngữ lập trình?

* 18
Các môi trường hỗ trợ lập trình (IDE)

Editor hay IDE

* 19
Trình thông dịch và trình biên dịch

▪ Chương trình dịch nhận đầu vào là chương


trình viết bằng ngôn ngữ lập trình bậc cao thực
hiện chuyển đổi sang ngôn ngữ máy.

Chương trình Chương trình Chương trình


nguồn dịch đích

* 20
a) Trình biên dịch (compiler): chuyển một chương
trình ở ngôn ngữ cấp cao sang ngôn ngữ máy.
• Duyệt, phát hiện lỗi, kiểm tra tính đúng đắn của các câu lệnh
trong chương trình nguồn.
• Dịch toàn bộ chương trình nguồn thành một chương trình
đích có thể thực hiện trên máy và có thể lưu trữ để sử dụng
khi cần thiết.

☞ C # là ngôn ngữ cấp cao, dùng trình biên


dịch.

* 21
Trình thông dịch và trình biên dịch

b) Trình thông dịch (interpreter): phân tích và


thực thi từng câu lệnh của chương trình ngôn ngữ
cấp cao.
✔Kiểm tra tính đúng đắn của câu lệnh tiếp theo trong
chương trình nguồn.
✔Chuyển đổi câu lệnh thành một hay nhiều câu lệnh tương
ứng trong ngôn ngữ máy.
✔Thực hiện các câu lệnh vừa chuyển đổi được

Thông dịch(Interpreter): PHP, Java Script, HTML

* 22
Trình thông dịch và trình biên dịch

* 23
Kiểu tổ chức chương trình

(1) Lập trình thủ tục (procedural programming)


� Tập trung vào xử lí đối với từng bài toán cụ thể.
� Bài toán có thể được phân thành những bài toán
nhỏ hơn để giải quyết ⇒ Xác định các thủ tục
(hàm) cần thiết tương ứng.
� Dùng giải thuật tốt nhất tìm được.
� Cần quan tâm: cách truyền tham số, kiểu tham
số, kiểu hàm,…

* 24
(2) Lập trình cấu trúc (structured programming)
Lập trình cấu trúc là một tập con của lập trình thủ tục.
Trong một chương trình máy tính, các khối chức năng có
thể được thực hiện không chỉ theo trình tự mà còn có thể
theo các tình huống và lặp lại nhiều lần.
Phương pháp lập trình cấu trúc được viết dựa trên ba cấu
trúc: trình tự, quyết định và vòng lặp.

* 25
(3)Lập trình hướng đối tượng (object-oriented
programming-OOP)
✔Đối tượng làm cơ sở cho xây dựng thuật giải,
chương trình lớp đối tượng.
✔Xác định “lớp” cần.
✔Cung cấp tập phép toán/thao tác trên mỗi lớp.
✔Làm cho lớp hoạt động hiệu quả nhờ thừa kế.

* 26
Lập trình

▪ Phát biểu bài toán.


▪ Giải được bài toán.
▪ Viết thuật toán cho lời giải bài toán.
▪ Viết chương trình (soạn thảo mã nguồn) cho
máy tính bằng một NNLT (C#), lưu vào máy
tính, gọi đây là chương trình nguồn

* 27
Lập trình

* 28
Các phương pháp chính mô tả giải thuật

• Mã tự nhiên
• Pseudocode (mã giả)
• Flowchart (lưu đồ)

* 29
Các bước lập trình

▪ Các bước lập trình


✔Bước 1: Phân tích vấn đề và xác định các đặc điểm.
(xác định I-P-O)
✔Bước 2: Lập ra giải pháp. (đưa ra thuật giải)
✔Bước 3: Cài đặt. (viết chương trình)
✔Bước 4: Chạy thử chương trình. (dịch chương trình)
✔Bước 5: Kiểm chứng và hoàn thiện chương trình.
(thử nghiệm bằng nhiều số liệu và đánh giá)

* 30
Input-Process-Output
Mô hình IPO

▪ A computer system has four main component

Khi mô tả giải thuật phải bao gồm:


•Input - Đầu vào
•Output - Đầu ra / kết quả
•Process - Mô tả xử lý của giải thuật
* 31
Xác định bài toán

Input -> Process -> Output

▪Input: Giả thiết, thông tin được cung cấp?


▪Process: Giải quyết vấn đề gì? Giải quyết như
thế nào?
▪Output: Đạt được những yêu cầu nào?

* 32
Input, Process, Output

Ví dụ 1:
Xác định Input, Process, Output của việc làm 1 ly
nước chanh nóng
▪Input :
• Ly, đường, chanh, nước nóng, muỗng.
▪Process :
• Cho hỗn hợp đường, chanh, nước nóng vào ly.
• Dùng muỗng khuấy đều.
▪Output :
• Ly chanh nóng đã sẵn sàng để dùng.

* 33
Input, Process, Output

Ví dụ 2:
Xác định Input, Process, Output của chương trình
tính tiền lương công nhân tháng 10/2014.
Biết: lương = lương căn bản * ngày công
▪Input :
▪ Lương căn bản, ngày công
▪Process :
▪ Lương căn bản nhân với ngày công
▪Output :
▪ lương

* 34
Input, Process, Output

Ví dụ 3:
Xác định Input, Process, Output của chương trình
giải phương trình bậc nhất ax + b = 0

Ví dụ 4:
Xác định Input, Process, Output của chương trình
tìm số lớn nhất của 2 số a và b.

* 35
Thuật toán

▪ Thuật toán
☞ Cách biểu diễn lời giải "bài toán“ rõ ràng,
chi tiết để có thể thực thi được trên máy tính.

* 36
Đặ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ư ý.

* 37
Đặc trưng của thuật toán

� Nhận dữ liệu đầu vào, xử lí và cho kết quả


cuối cùng.
� 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.

* 38
Các phương pháp bểu diễn thuật toán

1) Ngôn ngữ tự nhiên (natural language processing - NLP)


Là một nhánh của trí tuệ nhân tạo tập trung vào các ứng
dụng trên ngôn ngữ của con người
Ví dụ: tìm tổng các phần tử dương trong dãy hữu hạn

* 39
Các phương pháp biểu diễn thuật toán

2) Mã giả (Pseudocode)


Mô tả giải thuật lập trình máy tính ngắn gọn và không
chính thức cấp cao, trong đó sử dụng những quy ước có
cấu trúc của một số ngôn ngữ lập trình, nhưng thường
bỏ đi những chi tiết không cần thiết để giúp hiểu rõ giải
thuật hơn

* 40
Mã giả (Pseudocode)

▪ Ví dụ 5:

* 41
Mã giả (Pseudocode)

Ví dụ:
Giải phương trình bậc 2:
if Delta > 0 then begin
x1=(-b-sqrt(delta))/(2*a)
x2=(-b+sqrt(delta))/(2*a)
xuất kết quả : phương trì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

* 42
Sơ đồ khối (Flowchart)

3) Sơ đồ khối (Flowchart) : (chọn lựa & hành động).


▪Để dễ hơn về quy trình xử lý, 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).

* 43
Sơ đồ khối (Flowchart)

* 44
Các công cụ vẽ lưu đồ

* 46
Các công cụ vẽ lưu đồ

▪ https://app.diagrams.net/
▪ https://www.diagrameditor.com/
▪ https://app.code2flow.com/
▪ Microsoft Word

* 47
Sơ đồ khối (Flowchart)

Ví dụ 6: Quy Trình pha ca phê

* 48
Sơ đồ khối (Flowchart)

Ví dụ 7: Quy trình tính lương căn bản

* 49
Sơ đồ khối (Flowchart)

Ví dụ: Cho số nguyên n. Tính trị tuyệt đối của n

• Đầu vào: Số nguyên n

• Đầu ra: |n|

* 50
Sơ đồ khối (Flowchart)

Ví dụ 7: Quy trình tính lương căn bản

* 51
Sơ đồ khối (Flowchart)

Ví dụ: Nhập vào số nguyên n, kiểm tra xem n chẵn hay


lẻ và xuất ra màn hình.

* 52
Sơ đồ khối (Flowchart)

▪ Ví dụ 8: kiểm tra tính hợp lệ của điểm kiểm tra

* 53
Sơ đồ khối (Flowchart)

▪ Ví dụ 9: Kiểm tra loại số

* 54
Bài tập

▪ Xác định Input, Process, Output của 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.

* 55
Bài tập

6. Hãy nhập 2 số a và b. Hãy đổi giá trị của a và b theo


2 cách:
• Dùng biến phụ t: t = a; a = b; b = t;
• Không dùng biến phụ: a = a + b; b = a - b; a = a - b;

* 56
Bài tập
Vẽ lưu đồ cho các chương trình sau
1)So sánh 2 số a, b nhập vào từ bàn phím
2)Đổi từ tiền VND sang tiền USD.
3)Tính điểm trung bình của học sinh gồm các môn Toán, Lý,
Hóa.
4)Đổi từ độ sang radian và đổi từ radian sang độ (công thức α/π =
a/180, với α: radian, a: độ)
5) Giải phương trình bậc nhất ax + b = 0
6)Nhập vào số nguyên n. Nếu n>5 thì tăng n lên 2 đơn vị và trả
về giá trị n, ngược lại trả về giá trị 0.
7)Tính XY
8)Giải phương trình bậc 2: ax2 + bx + c = 0

* 57
Bài tập

8) Tìm số lớn nhất trong 3 số a, b, c nhập vào từ bàn phím


9)Hãy đổi giá trị của a và b theo 2 cách:
• Dùng biến phụ t: t = a; a = b; b = t;
• Không dùng biến phụ: a = a + b; b = a - b; a = a - b;
10) Một công ty, mỗi giờ làm việc của một công nhân được trả
10,000 đồng/giờ trong 8 giờ đầu làm việc theo qui định.

Nếu làm tăng ca (phải làm nhiều hơn 8 giờ qui định), thì mỗi giờ
vượt qui định được trả thêm 30%. Tính tiền công cho một công
nhân tùy theo giờ làm việc của họ.

* 58
Bài tập

11. Nhập vào hai số x, y. Xuất ra màn hình tổng, hiệu, tích, thương của hai số
trên.

12. Nhập vào ba cạnh a, b, c của tam giác. Xuất ra màn hình tam giác đó
thuộc loại tam giác gì? (Thường, cân, vuông, đều hay vuông cân).

13. Nhập vào số nguyên n. Nếu n>5 thì tăng n lên 2 đơn vị và trả về giá trị n,
ngược lại trả về giá trị 0.

14. Nhập vào số nguyên n. Tính n! với 0 ≥ n

15. Cho số nguyên n. Tính trị tuyệt đối của n

* 59

You might also like