1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Nhập môn tin học: Toán tử và biểu thức - TS. Đào Nam Anh

94 106 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

Định dạng
Số trang 94
Dung lượng 588,64 KB

Nội dung

Bài giảng Nhập môn tin học: Toán tử và biểu thức và biểu thức trình bày các nội dung: Biểu thức, các toán tử số học, toán tử gán, biểu thức số học, toán tử quan hệ, luận lý nhị phân, ép kiểu trong C, độ ưu tiên của các toán tử. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

NHẬP MÔN TIN HỌC TOÁN TỬ VÀ BIỂU THỨC

TS Đào Nam Anh

Trang 2

Tài liệu chính của khóa học:

 TS.Nguyễn Thị Thu Hà,

TS.Nguyễn Hữu Quỳnh,

TS.Nguyễn Thị Thanh Tân,

Giáo trình Nhập môn tin học,

Khoa CNTT, Đại học Điện lực, 2013

 Programiz.com

Slides do TS.Đào Nam Anh thực hiện

Trang 4

 C có một tập các toán tử phong phú Toán tử là công cụ dùng

để thao tác dữ liệu Một toán tử là một ký hiệu dùng để đại

diện cho một thao tác cụ thể nào đó được thực hiện trên dữ

liệu

4

Trang 5

TOÁN TỬ VÀ BIỂU THỨC

GIỚI THIỆU

 C có một tập các toán tử phong phú Toán tử là công cụ dùng

để thao tác dữ liệu Một toán tử là một ký hiệu dùng để đại

diện cho một thao tác cụ thể nào đó được thực hiện trên dữ

liệu

C định nghĩa bốn loại toán tử: toán tử số học (arithmetic),

quan hệ (relational), luận lý (logical), và toán tử luận lý nhị

phân (bitwise) Bên cạnh đó, C còn có một số toán tử đặc biệt

5

Trang 6

 C có một tập các toán tử phong phú Toán tử là công cụ dùng

để thao tác dữ liệu Một toán tử là một ký hiệu dùng để đại

diện cho một thao tác cụ thể nào đó được thực hiện trên dữ

liệu

C định nghĩa bốn loại toán tử: toán tử số học (arithmetic),

quan hệ (relational), luận lý (logical), và toán tử luận lý nhị

phân (bitwise) Bên cạnh đó, C còn có một số toán tử đặc biệt

 Toán tử thao tác trên hằng hoặc biến Hằng hoặc biến này

được gọi là toán hạng (operands) Khái niệm hằng và biến đã

được đề cập ở chương trước Toán tử được phân loại: toán tử một ngôi, hai ngôi hoặc ba ngôi Toán tử một ngôi chỉ thao tác trên một phần tử dữ liệu, toán tử hai ngôi trên hai phần tử dữ

Trang 7

TOÁN TỬ VÀ BIỂU THỨC

1 Biểu thức (Expressions)

 Một biểu thức (expression) là tổ hợp các toán tử và toán hạng Toán tử thực hiện các thao tác như cộng, trừ, so sánh v.v

Toán hạng là những biến hay những giá trị mà các phép toán

được thực hiện trên nó Trong ví dụ a + b, “a” và “b” là toán hạng và “+” là toán tử Trong một biểu thức, xác phép toán

thường được thực hiện theo một thứ tự cụ thể (hoặc riêng biệt)

để cho ra giá trị cuối cùng

7

Trang 8

 Một biểu thức (expression) là tổ hợp các toán tử và toán hạng Toán tử thực hiện các thao tác như cộng, trừ, so sánh v.v

Toán hạng là những biến hay những giá trị mà các phép toán

được thực hiện trên nó Trong ví dụ a + b, “a” và “b” là toán hạng và “+” là toán tử Trong một biểu thức, xác phép toán

thường được thực hiện theo một thứ tự cụ thể (hoặc riêng biệt)

để cho ra giá trị cuối cùng

Trang 10

: Tính giá trị biểu thức

4 × z + 12 với z = 15

Chúng ta thay thế mọi z với giá trị 15, và đơn giản hóa biểu thức

theo quy tắc: thi hành phép toán trong dấu ngoặc trước tiên, kế đến lũy thừa, phép nhân và chia rồi phép cộng và trừ

4 × z + 12 trở thành

4 × 15 + 12

10 CNTT Nhập môn tin học

Trang 11

TOÁN TỬ VÀ BIỂU THỨC

1 Biểu thức (Expressions)

: Tính giá trị biểu thức

4 × z + 12 với z = 15

Chúng ta thay thế mọi z với giá trị 15, và đơn giản hóa biểu thức

theo quy tắc: thi hành phép toán trong dấu ngoặc trước tiên, kế đến lũy thừa, phép nhân và chia rồi phép cộng và trừ

4 × z + 12 trở thành

4 × 15 + 12 = phép nhân thực hiện trước phép cộng)

60 + 12

11 CNTT Nhập môn tin học

Trang 12

: Tính giá trị biểu thức

4 × z + 12 với z = 15

Chúng ta thay thế mọi z với giá trị 15, và đơn giản hóa biểu thức

theo quy tắc: thi hành phép toán trong dấu ngoặc trước tiên, kế đến lũy thừa, phép nhân và chia rồi phép cộng và trừ

4 × z + 12 trở thành

4 × 15 + 12 = phép nhân thực hiện trước phép cộng)

60 + 12 = 72

12 CNTT Nhập môn tin học

Trang 13

TOÁN TỬ VÀ BIỂU THỨC

1 Biểu thức (Expressions)

: Tính giá trị biểu thức

4 × z + 12 với z = 15

Chúng ta thay thế mọi z với giá trị 15, và đơn giản hóa biểu thức

theo quy tắc: thi hành phép toán trong dấu ngoặc trước tiên, kế đến lũy thừa, phép nhân và chia rồi phép cộng và trừ

4 × z + 12 trở thành

4 × 15 + 12 = phép nhân thực hiện trước phép cộng)

60 + 12 = 72

13 CNTT Nhập môn tin học

Trang 14

Các biểu thức toán học trong C được biểu diễn bằng cách sử dụng toán tử số học cùng với các toán hạng dạng số và ký tự Những

biểu thức này gọi là biểu thức số học (arithmetic expressions)

Trang 16

Những toán tử số học (arithmetic operators) được sử

dụng để thực hiện những thao tác mang tính số học

Chúng được chia thành hai lớp: Toán tử số học một

ngôi (unary) và toán tử số học hai ngôi (binary)

Trang 17

TOÁN TỬ VÀ BIỂU THỨC

2 Các toán tử số học (Arithmetic Operators)

Những toán tử số học (arithmetic operators) được sử

dụng để thực hiện những thao tác mang tính số học

Chúng được chia thành hai lớp: Toán tử số học một

ngôi (unary) và toán tử số học hai ngôi (binary)

Trang 18

Những ngôn ngữ lập trình như Basic, hỗ trợ toán tử mũ Tuy

nhiên, ANSI C không hỗ trợ ký hiệu ^ cho phép tính lũy thừa Ta

có thể dùng cách khác tính lũy thừa trong C là dùng hàm pow()

đã được định nghĩa trong thư n <math.h>

18

Trang 19

TOÁN TỬ VÀ BIỂU THỨC

2 Các toán tử số học (Arithmetic Operators)

Những ngôn ngữ lập trình như Basic, hỗ trợ toán tử mũ Tuy

nhiên, ANSI C không hỗ trợ ký hiệu ^ cho phép tính lũy thừa Ta

có thể dùng cách khác tính lũy thừa trong C là dùng hàm pow()

đã được định nghĩa trong thư n <math.h> ch ng m

Trang 20

Các toán tử hai ngôi

 Trong C, các toán tử hai ngôi có chức năng giống như trong các ngôn ngữ khác Những toán tử như +, -, * và / có thể được

áp dụng cho hầu hết kiểu dữ liệu có sẵn trong C

Khi toán tử / được áp dụng cho một số nguyên hoặc ký tự, bất

kỳ phần dư nào sẽ được cắt bỏ Ví dụ, 5/2 sẽ bằng 2 trong

phép chia số nguyên

Toán tử % sẽ cho ra kết quả là số dư của phép chia số nguyên

ng n, 5%2 sẽ có kết quả là 1 Tuy nhiên, % không thể

được sử dụng với những kiểu có dấu chấm động

20 CNTT Nhập môn tin học

Trang 21

TOÁN TỬ VÀ BIỂU THỨC

2 Các toán tử số học (Arithmetic Operators)

Các toán tử t ngôi (unary)

 Toán tử một ngôi là các toán tử chỉ tác động lên t toán

hạng Các toán tử một ngôi trong C bao gồm toán tử trừ một

ngôi ‘-’, toán tử tăng ‘++’ và toán tử giảm ‘ ’

21

Trang 22

Các toán tử t ngôi (unary)

 Toán tử một ngôi là các toán tử chỉ tác động lên t toán

hạng Các toán tử một ngôi trong C bao gồm toán tử trừ một

ngôi ‘-’, toán tử tăng ‘++’ và toán tử giảm ‘ ’

Toán tử trừ một ngôi

 Toán tử trừ một ngôi được ký hiệu giống như phép trừ hai

ngôi, được sử dụng thay đổi dấu đại số của một giá trị Ví dụ:

Trang 23

TOÁN TỬ VÀ BIỂU THỨC

2 Các toán tử số học (Arithmetic Operators)

Các toán tử Tăng và Giảm

Sự khác nhau giữa việc xử lý trước hay sau trong toán tử một

ngôi thật sự có ích khi nó được dùng trong một biểu thức Khi

toán tử đứng trước toán hạng, C thực hiện việc tăng hoặc giảm giá trị trước khi sử dụng giá trị của toán hạng Ðây là tiền xử lý (pre-fixing) Nếu toán tử đi sau toán hạng, thì giá trị của toán

hạng được sử dụng trước khi tăng hoặc giảm giá trị của nó Ðây

là hậu xử lý (post-fixing)

23

Trang 24

Các toán tử Tăng và Giảm

Sự khác nhau giữa việc xử lý trước hay sau trong toán tử một

ngôi thật sự có ích khi nó được dùng trong một biểu thức Khi

toán tử đứng trước toán hạng, C thực hiện việc tăng hoặc giảm giá trị trước khi sử dụng giá trị của toán hạng Ðây là tiền xử lý (pre-fixing) Nếu toán tử đi sau toán hạng, thì giá trị của toán

hạng được sử dụng trước khi tăng hoặc giảm giá trị của nó Ðây

là hậu xử lý (post-fixing) Xem xét ví dụ sau :

a = 10;

b = 5;

c = a * b++;

24

Trang 25

TOÁN TỬ VÀ BIỂU THỨC

2 Các toán tử số học (Arithmetic Operators)

Các toán tử Tăng và Giảm

Sự khác nhau giữa việc xử lý trước hay sau trong toán tử một

ngôi thật sự có ích khi nó được dùng trong một biểu thức Khi

toán tử đứng trước toán hạng, C thực hiện việc tăng hoặc giảm

giá trị trước khi sử dụng giá trị của toán hạng Ðây là tiền xử lý

(pre-fixing) Nếu toán tử đi sau toán hạng, thì giá trị của toán

hạng được sử dụng trước khi tăng hoặc giảm giá trị của nó Ðây

là hậu xử lý (post-fixing) Xem xét ví dụ sau :

a = 10;

b = 5;

c = a * b++;

25

Giá trị hiện thời của b được sử dụng cho tính toán

và sau đó giá trị của b sẽ tăng sau Tức là, c được gán 50 và sau đó giá trị của b được tăng lên thành

6

Trang 26

Các toán tử Tăng và Giảm

Sự khác nhau giữa việc xử lý trước hay sau trong toán tử một

ngôi thật sự có ích khi nó được dùng trong một biểu thức Khi

toán tử đứng trước toán hạng, C thực hiện việc tăng hoặc giảm

giá trị trước khi sử dụng giá trị của toán hạng Ðây là tiền xử lý

(pre-fixing) Nếu toán tử đi sau toán hạng, thì giá trị của toán

hạng được sử dụng trước khi tăng hoặc giảm giá trị của nó Ðây

là hậu xử lý (post-fixing) Xem xét ví dụ sau :

Giá trị hiện thời của b được sử dụng cho tính toán

và sau đó giá trị của b sẽ tăng sau Tức là, c được gán 50 và sau đó giá trị của b được tăng lên thành

6

Trang 27

TOÁN TỬ VÀ BIỂU THỨC

2 Các toán tử số học (Arithmetic Operators)

Các toán tử Tăng và Giảm

Sự khác nhau giữa việc xử lý trước hay sau trong toán tử một

ngôi thật sự có ích khi nó được dùng trong một biểu thức Khi

toán tử đứng trước toán hạng, C thực hiện việc tăng hoặc giảm

giá trị trước khi sử dụng giá trị của toán hạng Ðây là tiền xử lý

(pre-fixing) Nếu toán tử đi sau toán hạng, thì giá trị của toán

hạng được sử dụng trước khi tăng hoặc giảm giá trị của nó Ðây

là hậu xử lý (post-fixing) Xem xét ví dụ sau :

Giá trị hiện thời của b được sử dụng cho tính toán

và sau đó giá trị của b sẽ tăng sau Tức là, c được gán 50 và sau đó giá trị của b được tăng lên thành

6

Giá trị của c sẽ là 60, và b sẽ là 6 bởi vì b được tăng

1 trước khi thực hiện phép nhân với a, sau đó giá trị được gán vào c

Trang 28

Toán tử tăng /giảm

 Trong trường hợp mà tác động của việc tăng hay giảm là riêng

lẻ thì toán tử có thể đứng trước hoặc sau toán hạng đều được

 Hầu hết trình biên dịch C sinh mã rất nhanh và hiệu quả đối với việc tăng và giảm giá trị Mã này sẽ tốt hơn so với khi ta dùng toán tử gán Vì vậy, các toán tử tăng và giảm nên được dùng bất cứ khi nào có thể

28 CNTT Nhập môn tin học

Trang 29

Toán tử gán (Assignment Operator) là toán tử thông dụng nhất trong mọi ngôn ngữ Trong C, toán tử gán có thể được dùng cho bất kỳ biểu thức C hợp lệ Dạng thức chung cho toán tử gán là:

Tên biến = biểu thức;

29 TOÁN TỬ VÀ BIỂU THỨC

3 Toán tử gán

Trang 30

Toán tử gán (Assignment Operator) là toán tử thông dụng nhất trong mọi ngôn ngữ Trong C, toán tử gán có thể được dùng cho bất kỳ biểu thức C hợp lệ Dạng thức chung cho toán tử gán là:

Tên biến = biểu thức;

Gán liên tiếp

Nhiều biến có thể được gán cùng một giá trị trong một câu lệnh đơn Việc này thực hiện qua cú pháp gán liên tiếp Ví dụ:

a = b = c = 10;

Dòng mã trên gán giá trị 10 cho a, b và c Tuy nhiên, việc này

không thể thực hiện lúc khai báo biến Ví dụ,

int a = int b = int c= 0;

Trang 31

TOÁN TỬ VÀ BIỂU THỨC

Toán tử quan hệ (Relational Operators) được dùng để kiểm tra mối quan hệ giữa hai biến, hay giữa một biến và một hằng Ví dụ, việc xét số lớn hơn của hai số a và b được thực hiện thông qua

dấu lớn hơn (>) giữa hai toán hạng a và b (a > b)

Trong C, true (đúng) là bất cứ giá trị nào khác không (0), và

false (sai) là bất cứ giá trị nào bằng không (0) Biểu thức dùng

toán tử quan hệ trả về 0 cho false và 1 cho true Ví dụ biểu thức

sau :

a == 14 ; Biểu thức này kiểm tra xem giá trị của a có bằng 14 hay không Giá trị của biểu thức sẽ là 0 (false) nếu a có giá trị khác 14 và 1 (true) nếu nó là 14

31 CNTT Nhập môn tin học

Trang 32

Ý nghĩa của các toán tử quan hệ

Trang 33

Toán tử luận lý (Logical Operators) là các ký hiệu dùng để kết

hợp hay phủ định biểu thức có chứa các toán tử quan hệ Những

biểu thức dùng toán tử luận lý trả về 0 cho false và 1 cho true

Các toán tử luận lý cơ bản trong C là && (AND), || (OR), !

|| OR : trả về kết quả là true khi chỉ một trong

hai toán hạng đều true

! NOT: Chuyển đổi giá trị của toán hạng duy

nhất từ true thành false và ngược lại

TOÁN TỬ VÀ BIỂU THỨC

5 Toán tử quan hệ (Relational Operators)

và Toán tử luận lý (Logical Operators)

Trang 34

Lưu ý: Bất cứ toán tử luận lý nào có ký hiệu là hai ký tự thì

không được có khoảng trắng giữa hai ký tự đó, ví dụ : == sẽ

không đúng nếu viết là = =

 Giả sử một chương trình phải thực thi những bước nhất định

nếu điều kiện a < 10 và b == 7 được thoả mãn Ðiều kiện này

được viết ra bằng cách dùng toán tử quan hệ kết hợp với toán

tử luận lý AND Toán tử AND được viết là &&:

(a < 10) && (b == 7);

34

Trang 35

Lưu ý: Bất cứ toán tử luận lý nào có ký hiệu là hai ký tự thì

không được có khoảng trắng giữa hai ký tự đó, ví dụ : == sẽ

không đúng nếu viết là = =

 Giả sử một chương trình phải thực thi những bước nhất định

nếu điều kiện a < 10 và b == 7 được thoả mãn Ðiều kiện này

được viết ra bằng cách dùng toán tử quan hệ kết hợp với toán

tử luận lý AND Toán tử AND được viết là &&:

(a < 10) && (b == 7);

Tương tự, toán tử OR dùng để kiểm tra xem có một trong số

các điều kiện kiểm tra là đúng hay không Nó có dạng là dấu

(||) Cùng ví dụ trên nhưng điều kiện cần kiểm tra là: chỉ cần

một trong hai câu lệnh là đúng thì ta có mã sau :

TOÁN TỬ VÀ BIỂU THỨC

5 Toán tử quan hệ (Relational Operators)

và Toán tử luận lý (Logical Operators)

Trang 36

Toán tử luận lý thứ ba là NOT được biểu diễn bằng ký hiệu dấu chấm than ‘!’ Toán tử này đảo ngược giá trị luận lý của biểu

thức Ví dụ, để kiểm tra xem biến s có bé hơn 10 hay không, ta viết đều kiện kiểm tra như sau:

(s < 10);

c

(! (s >= 10)) /* s không lớn hơn hay bằng 10 */

36 CNTT Nhập môn tin học

Trang 37

Cả toán tử quan hệ và luận lý có quyền ưu tiên thấp hơn toán tử

số học Ví dụ, 5 > 4 + 3 được tính tương đương với 5 > (4 + 3),

nghĩa là 4+3 sẽ được tính trước và sau đó toán tử quan hệ sẽ được

thực hiện Kết quả sẽ là false, tức là trả về 0

TOÁN TỬ VÀ BIỂU THỨC

5 Toán tử quan hệ (Relational Operators)

và Toán tử luận lý (Logical Operators)

Trang 38

 Ví dụ xét toán hạng có giá trị là 12, toán tử luận lý nhị phân (Bitwise Logical Operators) sẽ coi số 12 này như 1100

 Toán tử luận lý nhị phân xem xét các toán hạng dưới dạng

chuỗi bit chứ không là giá trị số thông thường Giá trị số có thể thuộc các cơ số: thập phân (decimal), bát phân (octal) hay thập lục phân (hexadecimal) Riêng toán tử luận lý nhị phân sẽ

chuyển đổi toán hạng mà nó thao tác thành biểu diễn nhị phân tương ứng, đó là dãy số 1 hoặc là 0

38 CNTT Nhập môn tin học

Trang 39

 Toán tử luận lý nhị phân gồm &, | , ^ , ~ , vv …

39 CNTT Nhập môn tin học

TOÁN TỬ VÀ BIỂU THỨC

6 Luận lý nhị phân (Bitwise Logical Operators)

và biểu thức (Expressions)

Trang 40

 Toán tử luận lý nhị phân xem kiểu dữ liệu số như là số nhị

phân 32-bit, giá trị số được đổi thành giá trị bit để tính toán

trước rồi sau đó sẽ trả về kết quả ở dạng số ban đầu Ví dụ:

 Biểu thức 10 & 15 có nghĩa là (1010 & 1111) trả về giá trị

1010 có nghĩa là 10

40 CNTT Nhập môn tin học

Trang 41

 Toán tử luận lý nhị phân xem kiểu dữ liệu số như là số nhị

phân 32-bit, giá trị số được đổi thành giá trị bit để tính toán

trước rồi sau đó sẽ trả về kết quả ở dạng số ban đầu Ví dụ:

 Biểu thức 10 & 15 có nghĩa là (1010 & 1111) trả về giá trị

Trang 42

 Toán tử luận lý nhị phân xem kiểu dữ liệu số như là số nhị

phân 32-bit, giá trị số được đổi thành giá trị bit để tính toán

trước rồi sau đó sẽ trả về kết quả ở dạng số ban đầu Ví dụ:

 Biểu thức 10 & 15 có nghĩa là (1010 & 1111) trả về giá trị

Ngày đăng: 30/01/2020, 17:57

TỪ KHÓA LIÊN QUAN

w