You are on page 1of 43

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.

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

Câu lệnh Thụt lề Chú thích

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.

and else in return


as except is True
assert False lambda try
break finally None while
class for nonlocal with
continue from not yield
def global or
del if pass
elif import raise

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

Phải đặt tên biến nằm bên


trái của phép gán

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

Static Typing (Định kiểu tĩnh)


• Kiểm tra kiểu dữ liệu tại thời
điểm biên dịch code
• Một biến không thể thay đổi kiểu
dữ liệu trong suốt vòng đời của

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

Kiểu của toán


Operator Ý nghĩa Example
hạng
Phép chia trả 9 / 4 → 2.25, 9 / 4.5 → 2.0
/ kết quả thực
int, float, complex
(1 + 2j) / (4 + 2j) → (0.4+0.3j)
Phép chia lấy 9 // 4 → 2
// phần nguyên
int, float
9 // 4.5 → 2.0
Phép chia lấy số 9%4→1
% dư
int, float 9.5 % 4 → 1.5

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


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

False True/False a b True

Operator Cú pháp Ý nghĩa Kết quả


or x1 or x2 or … xn True nếu có bất - Trả về xi đầu tiên có
kỳ xi True giá trị True
- Ngược lại trả về xn
and x1 and x2 and … xn True nếu tất cả xi - xn nếu tất cả xi đều
đều True True
- Xi đầu tiên có giá trị
False
33
Identity Operators
• Identity operators được sử dụng để so sánh các đối tượng có
thực sự giống nhau (theo id)
• Không phải so sánh bằng (theo giá trị)

Operator Ý nghĩa
pháp
Trả về True nếu a và b
is a is b
là đối tượng giống nhau

Trả về True nếu a và b


is not a is not b là 2 đối tượng khác
nhau

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, …

Operator Cú pháp Ý nghĩa

Trả về True nếu b chứa


in a in b
a

Trả về True nếu b


not in a not in b
không chứa a

35
Bitwise Operators
• Bitwise operators được sử dụng để tính toán trên số nhị phân.

Operator Syntax Meaning Example


& a& b Bitwise AND print(10 & 4) → 0
| a|b Bitwise OR print(10 | 4) → 14
^ a^b Bitwise XOR print(10 ^ 4) → 14
~ ~a Bitwise NOT print(~10) → -11
>> a >> b Bitwise right shift print(10 >> 2) → 2
<< a << b Bitwise left shift print(10<<2) → 40

36
Assignment operators
Assignment operators được sử dụng để gán giá trị cho biến:

Operator Syntax Equivalent Operator Syntax Equivalent


= a=b a=b &= a &= b a=a&b
+= a += b a=a+b |= a |= b a=a|b
-= a -= b a=a–b ^= a ^= b a=a^b
*= a *= b a=a*b >>= a >>= b a = a >> b
/= a /= b a=a/b <<= a <<= b a = a << b
%= a %= b a=a%b
//= a //= b a = a // b
**= a **= b a = a ** b

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 <<, >>

Note: 1 – độ ưu tiên thấp nhất, 14 – độ ưu tiên cao nhất


38
Chuyển kiểu
• Chuyển kiểu gồm 2 dạng:
• Ngầm định
• Ép kiểu
Required_data_type (expression)

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

You might also like