Professional Documents
Culture Documents
HCM
BỘ MÔN CÔNG NGHỆ PHẦN MỀM - KHOA CÔNG NGHỆ THÔNG TIN
CHƯƠNG 5
CÁC THÀNH PHẦN CƠ BẢN
1
Nội dung
Định Kiểu dữ
Từ khóa Biến
danh liệu
Chuyển
Lệnh gán Biểu thức Toán tử
kiểu
2
Ví dụ
• Chương trình tính diện tích hình tròn
3
Từ khoá
• Từ khóa là từ được định nghĩa sẵn, có ý nghĩa đặc biệt.
Chúng không thể được sử dụng để đặt tên cho biến, hàm
hoặc một đối tượng khác.
4
Định danh
• Định danh là tên để xác định một phần tử trong chương
trình như biến, hàm, mảng….
• Tất cả các định danh đều phải tuân thủ theo các quy tắc sau:
• Chỉ bao gồm chữ cái, chữ số, và dấu gạch dưới (_)
• Phải bắt đầu bằng chữ cái hoặc dấu gạch dưới, không được bắt
đầu bằng chữ số
• Không trùng với từ khoá
• Có độ dài tuỳ ý
• Ví dụ:
• Định danh hợp lệ: area, radius, top_of_page, temp1…
• Định danh không hợp lệ: 2A, for, search elem
5
Định danh
• Note:
• Python phân biệt hoa thường→ area, Area, và AREA khác
nhau
• Tip:
• Định danh nên có ý nghĩa phù hợp với mục đích sử dụng → dễ
đọc, dễ hiểu, dễ bảo trì
• Có 2 cách để đặt định danh có nhiều từ:
• Sử dụng dấu gạch dưới: radius_of_circle
• Camel Case: radiusOfCircle
• Quiz:
• Định danh nào sau đây hợp lệ?
miles, Test , a+b, b–a, 4#R, $4, #44, if
6
Kiểu dữ liệu
• Một kiểu dữ liệu gồm:
• Một tập các giá trị có thể nhận được
• Một tập các phép toán có thể thực hiện trên các giá trị đó
• Các kiểu dữ liệu cơ bản:
• Integer
• Floating-Point Number
• Complex Number
• String
• Boolean
7
Kiểu dữ liệu
1. Integer
• Chứa các giá trị nguyên: -3, 3, 0, -1, 1234,…
• Kiểu: int
• Giá trị nguyên có thể biểu diễn ở các hệ đếm khác nhau
Prefix Base
0b (zero + 'b') 2
0B (zero + 'B')
0o (zero + 'o') 8
0O (zero + 'O')
0x (zero + 'x') 16
0X (zero + X')
8
Kiểu dữ liệu
2. Floating-Point Number
• Chứa các giá trị thực: -3.5, 3.1419, 4.2e-4…
• Kiểu: float
9
Kiểu dữ liệu
3. Complex Number
• Số phức có dạng: <real part> + <imaginary part>j
• Kiểu: complex
10
Kiểu dữ liệu
4. String
• String là chuỗi các ký tự
• Kiểu: str
• Sử dụng nháy đơn hoặc nháy kép
để biểu diễn chuỗi
• ‘Hello’
• “Hello”
• Một chuỗi rỗng: ‘’
• Để đưa các ký tự đặc biệt vào
chuỗi sử dụng backslash (\)
11
Kiểu dữ liệu
4. String
Các ký tự đặc biệt
Escape Example
Sequence
\'
\"
\newline
\\
12
Kiểu dữ liệu
4. String
Các ký tự có nghĩa đặc biệt
Escape Interpretation
Sequence
\t Horizontal Tab (TAB) character
\n New line
\a Bell (BEL) character
\b Backspace character
\r Carriage Return (CR) character
13
Kiểu dữ liệu
4. String
Example:
14
Kiểu dữ liệu
5. Boolean
• Kiểu Boolean gồm 2 giá trị True (1) hoặc False (0)
• Kiểu: bool
15
Biến
• Biến là tên tham chiếu đến các giá trị khác nhau được lưu trữ trong bộ
nhớ. Mỗi giá trị đều thuộc một kiểu dữ liệu nhất định.
• Đặt tên biến phải tuân thủ theo quy tắc định danh.
• Tạo biến
• Gán một giá trị cho biến
variable = expression
• ‘=’ : phép gán, không phải phép so sánh =
• Một biến có thể được gán nhiều giá trị khác nhau
16
Biến
Một biến phải được
• NOTE: tạo ra trước khi sử
dụng
17
Biến
• NOTE: radius 1.5
Python là ngôn ngữ định kiểu động
2
Dynamic Typing (Định kiểu động)
• Trình thông dịch sẽ kiểm tra kiểu
dữ liệu khi thực thi code
• Kiểu dữ liệu của biến có thể thay
đổi
18
Biến
Tham chiếu đối tượng
• Python là ngôn ngữ lập trình hướng đối tượng → Mỗi dữ liệu
trong chương trình Python đều được gọi là đối tượng (object).
• Đối tượng có thể là số, chuỗi, danh sách hoặc là một ảnh kỹ
thuật số
• Mỗi đối tượng đều được lưu trữ tại một vị trí trong bộ nhớ.
radius PyFloatObject {
value = 1.5
}
PyIntObject {
value = 2
}
Introduction to CSE 19
Biến
Tham chiếu đối tượng
x PyIntObject {
value = 7
}
y PyIntObject {
value = 3
}
PyStrObject {
value = “abc”
}
• Không còn bất kỳ tham chiếu nào đến đối tượng nguyên có giá trị là
7. Chuyện gì sẽ xảy ra với đối tượng này???
Introduction to CSE 20
Biến
• NOTE:
Vòng đời của một đối tượng
• Vòng đời của một đối tượng bắt đầu khi nó được tạo ra, tại
thời điểm đó phải có ít nhất một tham chiếu đến nó.
• Khi không có bất kỳ tham chiếu đến đối tượng:
→ Vòng đời kết thúc
→ Đối tượng không thể truy cập
→ Thu hồi bộ nhớ
Introduction to CSE 21
Lệnh gán
• Cú pháp:
variable = expression
• Expression: giá trị cụ thể, biến, hàm, biểu thức chứa các toán tử.
22
Lệnh gán
• Cú pháp gán 1 giá trị cho nhiều biến:
var1 = var2 =…varn = expression
• Ví dụ:
i=j=k=1
Tương đương
k=1
j=k
i=j
23
Lệnh gán
• Cú pháp phép gán đồng thời:
var1, var2, ..., varn = exp1, exp2, ..., expn
• Đánh giá các biểu thức bên phải và gán tương ứng đồng thời với
các biến ở bên trái
Sử dụng biến tạm Sử dụng phép gán đồng thời
24
Lệnh gán
• Ví dụ: Nhập vào đồng thời 3 số và tính trung bình 3 số đã
nhập.
25
Biểu thức
• Một biểu thức là sự kết hợp của không hoặc nhiều toán tử
(Operator) và một hoặc nhiều toán hạng (Operand).
• Operands: giá trị cụ thể, biến, lời gọi hàm.
• Operators: các phép tính toán.
• Interpreter đánh giá biểu thức → trả ra một giá trị.
• Ví dụ:
• 42, n, print(“hello”)
• 3*((i % 4)*(5 +(j – 2)/(k+3)))
• x >= y
• x >= 0 and y >= 0
26
Operators
• Python chia các operators thành các nhóm:
• Arithmetic operators
• Comparison operators
• Logical operators
• Identity operators
• Membership operators
• Bitwise operators
• Assignment operators
27
Arithmetic operators
Arithmetic operators được sử dụng để thực hiện các phép toán
thông thường :
Operator Ý nghĩa Kiểu của toán hạng Example
9 + 4 → 13 , 9 + 4.5 → 13.5
(2 + 3j) + (3 + 3j) →(5+6j)
int, float, complex, str,
+ Cộng ‘yo’ + ‘u’ → ‘you’
bool
True + False → 1
True + True → 2
9 - 4 → 5 , 9 - 4.5 → 4.5
int, float, complex,
- Trừ (3 +3j) – (2+3j) → (1 +0j)
bool
True - False → 1
9*4.5 → 40.5
(2 + 3j) * (3 + 3j) → (-3+15j)
int, float, complex,
* Nhân (2 + 3j) *9 → (18+27j)
str, bool
True * False → 0
‘you‘ * 3 → 'youyouyou'
28
Arithmetic operators
4 ** 0.5 → 2.0
** Số mũ int, float, complex 4.5 ** 3 → 91.125
(1+2j) ** 2 → (-3+4j)
29
Comparison Operators
• Comparison operators được sử dụng để so sánh 2 giá trị.
• Trả về kết quả True hoặc False
Cú Kiểu của
Operator Ý nghĩa Example
pháp toán hạng
1 == 2 → False
int, float,
== a == b Bằng "he" == "He" → False
complex, str
1.1 + 2.2 == 3.3 →False
int, float, 3 != 3.0 → False
!= a != b Không bằng
complex, str (1+2j) != (4+2j) → True
> a>b Lớn hơn int, float, str 7 > 5 → True
< a<b Bé hơn int, float, str 'he' < 'an‘ → False
>= a >= b Lớn hơn hoặc bằng int, float, str 100 >= 100 → True
<= a <= b Bé hơn hoặc bằng int, float, str 100 <= 50 → False
30
Logical Operators
• Logical operators được sử dụng để kết hợp các biểu thức so sánh.
• Kiểu của toán hạng: bool.
• Trả về True hoặc False
Cú
Operator Ý nghĩa Example
pháp
((9/3 == 3) and (2*3 ==6))
Trả về True khi cả a và b đều → True
and a and b
True, ngược lại trả về False (('A'== 'a') and (3==3))
→ False
Trả về True khi a hoặc b True, ((2==3) or ('A'=='A'))
or a or b
ngược lại trả về False → True
not not a Phủ định not(3 == 3) → False
31
Logical Operators
NOTE: Đánh giá các toán hạng Non-Boolean
• Giá trị số
• 0: False.
• Giá trị khác 0: True.
• String
• Chuỗi rỗng là False.
• Chuỗi khác rỗng là True.
• Các đối tượng khác: list, tuple, dictionary, and set
• False nếu nó rỗng và True nếu khác rỗng
32
Logical Operators
NOTE: Đánh giá các toán hạng Non-Boolean
a b a and b a or b not a
True True/False b a False
34
Membership Operators
• Membership operators được sử dụng để kiểm tra một giá trị
có thuộc trong một đối tượng như String, List, Set, …
35
Bitwise Operators
• Bitwise operators được sử dụng để tính toán trên số nhị phân.
36
Assignment operators
Assignment operators được sử dụng để gán giá trị cho biến:
37
Độ ưu tiên của các toán tử
Order Operator Order Operator
1 or 9 +, -
2 and 10 *, /, //, %
3 not x 11 +x, -x, ~x
in, not in, is, is not, <, <=,
4 12 **
>, >=, !=, ==
x[index], x[index:index], x(arg
5 | 13
uments...), x.attribute
6 ^ (expressions...),
14 [expressions...], {key: value...}
7 & , {expressions...}
8 <<, >>
39
Câu lệnh
• Chương trình gồm một hợp các câu lệnh
• Câu lệnh được chia làm 2 loại:
• Lệnh đơn
• Lời gọi hàm
• Lệnh gán
• Lệnh nhảy: break, continue, return
• …
• Lệnh phức
• Chứa một hoặc nhiều câu lệnh khác
• Ảnh hưởng hoặc điều khiển việc thực thi của các câu lệnh khác
• Ví dụ: if , for, while, try,…
40
Thụt lề
• Khối lệnh:
• Nhóm các câu lệnh cho một mục đích cụ thể
• Hầu hết các ngôn ngữ lập trình như C / C ++, Java sử dụng dấu ngoặc
nhọn {} để tạo một khối câu lệnh
• Python sử dụng thụt lề để đánh dấu khối lệnh
• Khoảng trắng được sử dụng để thụt lề
• Một khối lệnh bắt đầu bằng thụt lề và kết thúc bằng dòng đầu tiên
không có thụt lề
• Tất cả các câu lệnh có cùng khoảng cách về bên phải thuộc cùng một
khối lệnh
41
Chú thích
• Chú thích được sử dụng để:
• Chú thích code Python có thể khó hiểu
• Giúp code dễ đọc hơn
• Ngăn chặn việc thực thi code khi debug/test.
• Chú thích không được biên dịch và thực thi
• Tạo chú thích:
• Sử dụng # cho dòng đơn
• Sử dụng cặp ba dấu nháy đôi cho nhiều dòng
42
Chú thích
43