27/12/201111
Giới thiệu
• Mục tiêu mơn học
MƠN HỌC
Cung cấp cho sinh viên kiến thức căn bản về kỹ thuật lập
trình và lập trình theo tiếp cận hướng đối tượng, một
phương pháp lập trình rất thơng dụng hiện nay.
PHƯƠNG PHÁPLẬP TRÌNH
• Nội dung
•
•
•
•
1
Một số thuật ngữ liên quan đến máy tính và lập trình.
Sơ lược về ngơn ngữ lập trình
Ngơn ngữ minh họa Pseudo code và C/C++
Các giải thuật cơ bản
• Kỹ năng tư duy và thực hành trên ngôn ngữ cụ thể.
2
Phương thức
• Phương thức học
CHƯƠNG 1: NHẬP MƠN VỀ
MÁY TÍNH VÀ LẬP TRÌNH
• Giờ lý thuyết: giảng và báo cáo
• Giờ thực hành tại phịng máy
• Kiểm tra và thi
• Kiểm tra thực hành: kỹ năng lập trình
• Thi lý thuyết : trắc nghiệm khách quan
• Tài liệu tham khảo
• Slide bài giảng Lập Trình Căn Bản
• Giáo trình Phương Pháp Lập trình – Khoa CNTT
• Tài liệu khác
• CDROM bài tập và thực hành
3
4
1
27/12/201111
NỘI DUNG
1.
2.
3.
4.
5.
6.
7.
8.
Hệ thống số, các quy tắc chuyển đổi
Các khái niệm cơ bản
Các thành phần cơ bản trong ngôn ngữ C++
Các kiểu dữ liệu trong C++
Biến, hằng, cách khai báo
Lệnh xuất nhập
Định dạng kết quả xuất
Các toán tử
HỆ THỐNG SỐ- CÁC QUY TẮC
CHUYỂN ĐỔI
55
Biểu diễn số trong các hệ đếm
• Hệ đếm là tập hợp các ký hiệu và qui tắc sử
dụng tập ký hiệu đó để biểu diễn và xác định
các giá trị các số. Mỗi hệ đếm có một số ký số
(digits) hữu hạn. Tổng số ký số của mỗi hệ đếm
gọi là cơ số (base hay radix), ký hiệu là b.
• b ≥ 2, b là số ngun dương
7
6
Hệ đếm thập phân (Decimal system,
b=10)
Ví dụ:
• Số 123 được biểu diễn như sau:
• 123 = 1 * 102 + 2 * 101 + 3*100
• Số 5246 có thể được biểu diễn như sau:
• 5246 = 5 * 103 + 2 *102 + 4 * 101 + 6 * 100
= 5 * 1000 + 2 * 100 + 4 * 10 + 6 * 1
254.68 =?
= 2 * 102 + 5 * 101 + 4 * 100 + 6 * 10-1 + 8 *
10-2
8
2
27/12/201111
Hệ đếm nhị phân (Binary system, b=2)
• Ví dụ:
• 10101(2) = 1x24 + 0x23 + 1x22 + 0x21 + 1x20 =
16 + 0 + 4 + 0 + 1 = 21 (10)
• 11101.11(2) = 1x24 + 1x23 + 1x22 + 0x21 + 1x20
+ 1x2-1 + 1x2-2 = 29.75 (10)
Hệ đếm bát phân (Octal system, b=8)
• Ví dụ:
• 235 . 64 (8) = 2x82 + 3x81 + 5x80 + 6x8-1 +
4x8-2 = 157. 8125(10)
9
Hệ đếm thập lục phân
(Hexa-decimal system, b=16)
10
Bảng qui đổi tương đương 16 chữ số đầu tiên của
4 hệ đếm
• Khi thể hiện ở dạng hexa-decimal, ta có 16 ký
tự gồm 10 chữ số từ 0 đến 9, và 6 chữ in A, B,
C, D, E, F để biểu diễn các giá trị số
• Ví dụ:
34F5C (16) = 3x164 + 4x163 + 15x162 + 5x161 +
12x160 = 216294 (10)
11
Hệ 10
Hệ 2
Hệ 8
Hệ 16
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
00
01
02
03
04
05
06
07
10
11
12
13
14
15
16
17
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
12
3
27/12/201111
Đổi một số nguyên từ hệ thập phân
sang hệ b
• Lấy số nguyên thập phân N(10) lần lượt chia
cho b cho đến khi thương số bằng 0.
• Kết quả số chuyển đổi N(b) là các dư số
trong phép chia viết ra theo thứ tự ngược lại
Chuyển thập phân(10) -> nhị
phân(2)
• Ví dụ 1:
• Số 12 (10) = ?(2). Dùng
phép chia cho 2 liên
tiếp, ta có một loạt các
số dư như sau:
13
Ví dụ 2:
0.6875 (10) = ? (2)
14
Chuyển nhị phân -> thập phân
10101(2) = 1x24 + 0x23 + 1x22 + 0x21 + 1x20
= 16 + 0 + 4 + 0 + 1 = 21 (10)
15
16
4
27/12/201111
Chuyển cơ số 8 ->10
Chuyển cơ số 10 -> 8
• Ví dụ: Chuyển số (3287,5100098)10 -> ?8
Phần nguyên
thương là
:
8
410
:
8
51
2
51
:
8
6
3
6
:
8
0
Vậy (3287)10
Phần lẻ:
dư
3287
410
7
• Ví dụ:
235 . 64 (8) = 2x82 + 3x81 + 5x80 + 6x8-1 +
4x8-2 = 157. 8125 (10)
6
=
(6328)8
phần nguyên là
0,5100098
x
8
= 4,0800784
0,0800784
x
8
= 0,6406272
0
4
0,6406270
x
8
= 5,1250176
5
0,1250176
x
8
= 1,0001408
1
Vậy (0,5100098)10
=
Kết quả chung là: (3287,5100098)10
=
(90,4051)8
(6327,4051)8
17
Chuyển cơ số 16 -> 10
18
Chuyển cơ số 10 -> 16
Thực hiện:
• Cho M = (3A,2F)16
M = 3.161 + 10.160 , 2.16-1 +15.16-2
M = 48 + 10 + 2/16 + 15/256 =( 58,1836)10
Phần nguyên
625
:
16
42
:
16
Thương là:
42
2
10 (A)
2
:
16
0
2
0,625
x
16
Phần nguyên là:
Phần lẻ:
3
(2A3)16
=10,000
Kết quả chuyển đổi là: M = (675,625)10
19
dư
Phần lẻ là
10 = (A)
= 2A3,A)16
20
5
27/12/201111
Chuyển số nhị phân sang hệ 16
SỐ THẬP PHÂN
CƠ SỐ 16
NHỊ PHÂN 4 BIT
0
0
0000
1
1
0001
2
2
0010
3
3
0011
4
4
0100
5
5
0101
6
6
0110
7
7
0111
8
8
1000
9
9
1001
10
A
1010
11
B
1011
12
C
1100
13
D
1101
14
E
1110
15
F
1111
CÁC KHÁI NIỆM CƠ BẢN
22 22
21
Lập trình
Thuật tốn (giải thuật)
• Lập trình máy tính (programming) gọi tắt là lập
trình là kỹ thuật cài đặt một hoặc nhiều thuật tốn
trừu tượng có liên quan với nhau bằng một hoặc
nhiều ngơn ngữ lập trình để tạo ra một chương
trình máy tính.
23
23
• Thuật tốn là một bộ các quy tắc hay quy
trình cụ thể nhằm giải quyết một vấn đề
trong một số bước hữu hạn
24
24
6
27/12/201111
Sử dụng lưu đồ (Flowchart):
Ví dụ:
Thuật tốn để giải phương trình bậc nhất:
P(x): ax + b = c, (a, b, c là các số thực), có thể
là một bộ các bước sau đây:
• Nếu a = 0
• b = c thì P(x) có nghiệm bất kỳ
• b ≠ c thì P(x) vơ nghiệm
• Nếu a ≠ 0
• P(x) có duy nhất một nghiệm x = (c - b)/a
25
25
26
26
27
27
28
28
Các Ví Dụ
7
27/12/201111
Ngơn ngữ lập trình
Ngơn ngữ lập trình
(programming language):
(programming language):
• Là một tập con của ngơn ngữ máy tính, là
một hệ thống được ký hiệu hóa để miêu tả
những tính tốn (qua máy tính) trong một
dạng mà cả con người và máy đều có thể đọc
và hiểu được.
• Một tập hợp các chỉ thị được biểu thị nhờ
ngơn ngữ lập trình để thực hiện các thao tác
máy tính nào đó thơng qua một chương
trình
29
29
• Ngơn ngữ lập trình có thể phân theo 2 cách:
• Ngơn ngữ cấp cao – ngơn ngữ cấp thấp
• Ngơn ngữ hướng thủ tục – ngơn ngữ hướng đối tượng
• Ngơn ngữ c++ là ngơn ngữ bậc cao có chứa các
đặc trưng của cả 2 loại ngơn ngữ: hướng thủ tục
và hướng đối tượng
30
30
Lớp và đối tượng
Cấu trúc của một chương trình C++
• Lớp được phân loại dựa vào hai đặc điểm:
Dữ liệu
Phương pháp có thể áp dụng cho dữ liệu
này
• Một đối tượng là một trường hợp cụ thể của
lớp.
• Một chương trình gồm nhiều đoạn được sắp xếp
theo một trình tự logic, mỗi đọan thực hiện một
chức năng trong chương trình gọi là modules
• Trong C++ modules có thể là lớp hoặc hàm
• Mỗi hàm có một tên riêng
• Các lệnh của 1 hàm phải đặt trong { }
• Mỗi lệnh được kết thúc bằng dấu ;
31
31
32
32
8
27/12/201111
Cấu trúc của một chương trình C++
Hàm main()
• Mỗi chương trình trong C++ phải có duy nhất một
hàm main(), dùng để điều khiển chương trình
• Cấu trúc của hàm main
<data type> main()
{
program statement;
return value;
}
• Những khai báo, những chỉ thị tiền xử lý.
#include < Thuvien.h>
#define ....
• Khai báo các biến tồn cục
• Hàm main ()
{
Các lệnh trong hàm main;
}
33
33
Ví dụ: chương trình C++ đơn giản
#include <iostream.h>
#include <conio.h>
int main ()
{
cout << "Hello World!";
getch();
return 0;
}
34
34
Các tập tin thư viện thông dụng
Đây là các tập tin chứa định nghĩa các
hàm thông dụng khi lập trình C/C++.
Muốn sử dụng các hàm trong các tập tin
header này thì phải khai báo #include
<FileName.h> ở phần đầu của chương trình, với
FileName.h là tên tập tin thư viện.
35
35
36
9
27/12/201111
Các tập tin thư viện thông dụng
Các tập tin thư viện thông dụng
Các tập tin thư viện thông dụng gồm:
• Stdio.h(C), iostream.h(C++): định nghĩa
các hàm vào ra chuẩn như các hàm xuất dữ
liệu (printf())/cout), nhập giá trị cho biến
(scanf())/cin), nhận ký tự từ bàn phím
(getc()), in ký tự ra màn hình (putc()), nhập
một chuỗi ký tự từ bàm phím (gets()), xuất
chuỗi ký tự ra màn hình (puts())
• Conio.h: định nghĩa các hàm vào ra trong
chế độ DOS, như clrscr(), getch(), …
• math.h: Định nghĩa các hàm tốn học như:
abs(), sqrt(), log(), log10(), sin(), cos(),
tan(), acos(), asin(), atan(), pow(), exp(), …
• alloc.h: định nghĩa các hàm vào ra cấp thấp
gồm các hàm open(), _open(), read(),
_read(), close(), _close(), creat(), _creat(),
creatnew(), eof(), filelength(), lock(), …
37
38
Bộ ký tự dùng trong ngôn ngữ C++
CÁC THÀNH PHẦN CƠ BẢN TRONG
CHƯƠNG TRÌNH C/C++
39 39
Các chữ cái : A, B, C ..., Z, a,b,c,...z
Các chữ số : 0,1,..., 9.
Ký tự gạch nối _ (underscore, chú ý phân
biệt dấu - ).
• Dấu cách ( space) : dùng để phân biệt các
từ
Ví dụ :
Lop Hoc( 7 kí tự) cịn LopHoc( 6 kí tự).
•
•
•
40
40
10
27/12/201111
Tên(định danh identifier)
Tên(định danh identifier)
• Tên ( định danh ) : là 1 dãy kí tự bắt đầu bằng
chữ hoặc ký tự gạch dưới, theo sau là chữ cái,
chữ số hoặc ký tự gạch nối underscore (_).
• Tên : dùng làm tên hằng, tên biến, nhãn, tên
hàm....
• Chú ý :
• + Tên : chữ hoa và chữ thường được xem là
khác nhau
+ Thông thường :
. Ðặt chữ hoa cho các hằng, chữ thường
cho các đại lượng còn lại (biến, hàm..).
. Nên đặt 1 cách gợi nhớ ( 8 kí tự đầu là
có nghĩa và tuỳ thuộc chương trình ).
Ví dụ :
- Tên đúng : _abc, Delta_1, BETA.
- Tên sai : 1xyz ( vì bắt đầu là 1 chữ số )
A#B ( vì có dâu #)
X-1 (vì sử dụng dấu gạch ngang).
41
41
42
42
Tên(định danh identifier)
Từ khóa (keyword)
Ví dụ:
int x, y;
int HeA. HeB, HeC;
float u,v;
…
• Một số từ được giữ bởi C++ cho một số
mục đích riêng và khơng thể được dùng cho
các định danh gọi là từ khóa
43
43
44
44
11
27/12/201111
Chú thích trong chương trình
Từ khóa (keyword)
asm
continue
float
new
signed
try
auto
default
for
operator
sizeof
typedef
break
delete
friend
private
static
union
case
do
goto
protected
struct
unsigned
catch
double
if
public
switch
virtual
char
else
inline
register
template
void
class
enum
int
return
this
volatile
const
extern
long
short
throw
while
• Chú thích được dùng để giải thích một vài
khía cạnh của chương trình. Trình biên dịch
bỏ qua hồn tồn các chú thích trong
chương trình.
• C++ cung cấp hai loại chú thích:
• Chú thích trên 1 dịng: //
• Chú thích trên nhiều dịng: /* và */
45
45
46
46
Các ký tự đặc biệt
\’ : dấu nháy đơn
\” : dấu nháy kép
\\ : dấu chéo ngược
\n : ký tự xuống dòng
\0 : ký tự rỗng ( null)
\t : phím tab
\f : trang kế tiếp
KIỂU DỮ LIỆU TRONG C++
47
47
48 48
12
27/12/201111
Kiểu số nguyên
Name
char
Description
Size
Range*
Character or small
1byte
integer.
signed: -128 to 127
unsigned: 0 to 255
Kiểu số thực
short int
Short Integer.
(short)
2bytes
signed: -32768 to 32767
unsigned: 0 to 65535
int
4bytes
signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
Integer.
long int
(long)
Long integer.
4bytes
signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
49
49
Name
Description
Size
Range*
float
Floating point number. 4bytes
3.4e +/- 38
(7 digits)
double
Double precision
8bytes
floating point number.
1.7e +/- 308
(15 digits)
long
double
Long double precision
1.2e +/- 4932
10bytes
floating point number.
(19 digits)
50
50
Kiểu bool
bool
Boolean value. It can take one of
1byte
two values: true or false.
true or
false
51
51
BIẾN-HẰNG – CÁCH KHAI BÁO
52 52
13
27/12/201111
BIẾN-CÁCH KHAI BÁO BIẾN
BIẾN-CÁCH KHAI BÁO BIẾN
Biến đại lượng thay đổi, mỗi biến có 1 tên và
địa chỉ vùng nhờ danh riêng cho nó.
• CÁCH KHAI BÁO BIẾN:
< Kiểu dữ liệu > < Danh sách các biến >;
Ví dụ:
int a;
float mynumber;
• Nếu các biến có cùng kiểu dữ liệu thì có thể
khai báo:
<kiểu dữ liệu>
bởi dấu phẩy>;
Ví dụ:
int a, b, c;
53
53
BIẾN-CÁCH KHAI BÁO BIẾN
54
54
BIẾN-CÁCH KHAI BÁO BIẾN
• PHẠM VI CỦA BIẾN
• KHỞI TẠO GIÁ TRỊ CHO BIẾN
type identifier = initial_value ;
Ví dụ:
int a = 0;
type
55
55
identifier
initial_value
56
56
14
27/12/201111
VÍ DỤ
•
•
•
•
•
•
•
•
•
•
•
•
HẰNG – CÁCH KHAI BÁO HẰNG
#include <iostream>
using namespace std;
int main ()
{
int a=5;
// initial value = 5
int b(2);
// initial value = 2
int result;
// initial value undetermined(chua XD)
a = a + 3;
result = a - b;
cout << result;
return 0;
}
HẰNG (Constants): Là một đại lượng mà
giá trị của nó khơng đổi
57
57
Hằng ngun ( Int )
58
58
Hằng long Int
Có giá trị từ -32768 đến 32767
Khi viết theo hệ 16 bằng cách thêm tiền tố Ox
Hoặc theo cơ số 8 bằng cách thêm tiền tố O
Ví dụ :
• Giống như hằng ngun, chỉ khác thêm L
hoặc l ở cuối.
• Ví dụ:
75u
// unsigned int
75l
// long
75ul
// unsigned long
O3068 =6*80 +0*81 + 3* 82 = 198 trong hệ 10
O3458 = 5*80 +4*81+ 3*82 = 229 trong hệ 10
Ox147 =7*160+4*161+1*162=327 trong hệ 10
59
59
60
60
15
27/12/201111
Hằng thực ( float và double )
Hằng ký tự
Có 2 cách viết
- Cách 1 : dạng thập phân: phần nguyên, dấu
chấm thập phân và phần phân.
* Ví dụ : 214.35 , - 234.34.
- Cách 2 : Viết theo dạng khoa học
* Ví dụ :
1.543e7 = 15430000
123.456E-4 = 0.0123456 ( 123.456/105)
• Viết trong 2 dấu nháy kép. Giá trị của
hằng chính là mã ASCII của chữ.
• Ví dụ :
'A' = 65;
'd' = 100,
'9 ' - '0 ' = 57 - 48 = 9
61
61
62
62
Định nghĩa hằng
Ví dụ
Cú pháp:
// defined constants: calculate circumference
#include <iostream>
using namespace std;
#define PI 3.14159
#define NEWLINE '\n'
int main ()
{
double r=5.0;
// radius
#define identifier value
Ví dụ:
#define PI 3.14159265
#define NEWLINE '\n'
63
63
64
64
16
27/12/201111
Ví dụ
Khai báo hằng (const)
double circle;
circle = 2 * PI * r;
cout << circle;
cout << NEWLINE;
getch();
return 0;
Cú pháp:
const <kiểu dữ liệu> tên hằng = giá trị
Ví dụ:
const int pathwidth = 100;
const char tabulator = '\t';
}
65
65
66
66
Lệnh xuất chuẩn (cout)
• Cú pháp:
cout<
CÁC LỆNH XUẤT NHẬP CHUẨN
Trong đó :
Biểu thức có thể là:
–Biến
–Hằng
–Chuổi
67 67
68
68
17
27/12/201111
Lệnh xuất chuẩn (cout)
Lệnh nhập chuẩn (cin)
• Ví dụ:
cout << "This is a sentence.";
cout << "This is another sentence.";
cout << "Second sentence.\nThird sentence.";
• Cú pháp:
cin>>tên biến;
ví dụ:
int a;
cout<<“nhap gia tri cho a: ”;
cin>>a;
cout<<“gia tri cua a la :”<
69
69
Định dạng kết quả xuất
70
70
Định dạng kết quả xuất
• setw(n): ấn định độ rộng để in một số là n
• setprecision(n): ấn định số chữ số thập phân sẽ
hiển thị.
• dec: hiển thị giá trị số ở hệ thập phân
• hec: hiển thị giá trị số ở hệ thập lục phân
• oct : hiển thị giá trị số ở hệ bát phân
71
71
• Lưu ý: muốn sử dụng các định dạng thì
trong chương trình ta phải khai báo :
#include <iomanip.h>
72
72
18
27/12/201111
Ví dụ
•
•
•
•
•
•
#include <iostream.h>
#include <iomanip.h>
void main()
{
cout <
cout <
CÁC TỐN TỬ
1.
2.
3.
4.
5.
6.
7.
8.
9.
//kết quả “...12”
cout <
•
cout <
•
cout <
• return;
• }
Tốn tử gán
Tốn tử số học
Các tốn tử gán phức hợp
Tốn tử tăng giảm
Tóan tử quan hệ
Tốn tử logic
Tốn tử điều kiện
Tốn tử lấy kích thước
Chuyển đổi kiểu dữ liệu
73
73
TỐN TỬ GÁN(=)
74
TỐN TỬ GÁN(=)
Tốn tử gán dùng để gán một giá trị nào đó
cho một biến
• Ví dụ:
a=5// gán giá trị nguyên 5 cho biến a
Vế trái của phép gán bắt buộc phải là một
biến, vế phải có thể là hằng, biến hay kết
quả của một biểu thức.
Toán tử gán ln được thực hiện từ trái sang phải
Ví dụ: a = b;
//gán giá trị của biến a bằng giá trị
đang chứa trong biến b
Cho phép vế phải có thể chứa các phép gán khác.
Ví dụ: a = 2 + (b = 5);
75
tương đương
với
b = 5;
a = 2 + b;
76
19
27/12/201111
TỐN TỬ SỐ HỌC
Tên
Tốn tử
TỐN TỬ SỐ HỌC
Ví dụ
+
Cộng
12 + 4.9 // kết quả 16.9
-
Trừ
3.98 - 4 // kết quả -0.02
*
Nhân
2 * 3.4 // kết quả 6.8
/
Chia
9 / 2.0 // kết quả 4.5
%
Lấy phần dư
13 % 3 // kết quả 1
Trừ tốn tử lấy phần dư (% ) thì tất cả các
tốn tử số học có thể chấp nhận pha trộn các
tốn hạng số ngun và tốn hạng số thực.
• Nếu cả hai tốn hạng là số ngun thì kết
quả sẽ là một số ngun.
• Một hoặc cả hai tốn hạng là số thực thì
kết quả sẽ là một số thực (real hay
double)
77
TỐN TỬ GÁN PHỨC HỢP
78
Ví dụ:
Tốn Tử
Ví dụ
Tương đương với
+=
n += 25
n = n + 25
-=
n -= 25
n = n – 25
*=
n *= 25
n = n * 25
/=
n /= 25
n = n / 25
%=
n %= 25
n = n % 25
79
#include <iostream.h>
int main ()
{
int a, b=3;
a = b;
a+=2;
// tương đương với a=a+2
cout << a;
return 0;
}
80
20
27/12/201111
TỐN TỬ TĂNG - GIẢM
TỐN TỬ TĂNG - GIẢM
• Tốn tử tăng (++) và tốn tử giảm (--) có tác
dụng làm tăng hoặc giảm 1 giá trị lưu trong
biến. Chúng tương đương với +=1 hoặc -=1.
Vì vậy, các dịng sau là tương đương:
a++;
a+=1;
a=a+1;
• Tốn tử tăng/giảm có 2 dạng:
• Tiền tố :++a
• Hậu tố: a++
81
TỐN TỬ TĂNG - GIẢM
82
TỐN TỬ TĂNG - GIẢM
• Trường hợp tốn tử được sử dụng như là
một tiền tố ++a: giá trị của a tăng trước khi
biểu thức được tính và giá trị đã tăng được
sử dụng trong biểu thức
• Trong trường hợp tốn tử được sử dụng như
là một hậu tố a++ : giá trị trong biến a được
tăng sau khi đã tính tốn.
83
Ví dụ 1:
B=3;
A=++B;
Kết quả: A chứa giá trị 4, B chứa giá trị 4
Ví dụ 2:
B=3;
A=B++;
Kết quả: A chứa giá trị 3, B chứa giá trị 4
84
21
27/12/201111
TỐN TỬ QUAN HỆ
TỐN TỬ QUAN HỆ
Tên
Tốn tử
Ví dụ
==
So sánh bằng
5 == 5 // kết quả 1
!=
So sánh không bằng
5 != 5 // kết quả 0
<
So sánh nhỏ hơn
5 < 5.5 // kết quả 1
<=
So sánh nhỏ hơn hoặc bằng 5 <= 5 // kết quả 1
>
So sánh lớn hơn
>=
So sánh lớn hơn hoặc bằng 6.3 >= 5 //kết quả1
Các toán hạng của một toán tử quan hệ phải
ước lượng về một số. Các ký tự là các toán
hạng hợp lệ vì chúng được đại diện bởi các
giá trị số. Ví dụ (giả sử mã ASCII):
'A' < 'F' // kết quả là 1
(tương đương với 65 < 70)
5 > 5.5 // kết quả 0
85
TỐN TỬ ĐIỀU KIỆN
TỐN TỬ LOGIC
Tốn tử
!
&&
||
Ý nghĩa
Ví dụ
• Cú pháp
Phủ định
!(5 == 5) // kết quả là 0
và
5 < 6 && 6 < 6 // kết quả là 0
Hoặc
5 < 6 || 6 < 5 // kết quả là 1
0: SAI (false)
86
Khác 0: ĐÚNG (true)
87
E1 ? E2 : E3
Trong đó E1, E2, E3 là các biểu thức.
• Ý nghĩa:
Nếu E1 đúng thì E2 được ước lượng và nó trở
thành giá trị của biểu thức.
Ngược lại, nếu E1 sai, E3 được ước lượng và trở
thành giá trị của biểu thức.
88
22
27/12/201111
TỐN TỬ ĐIỀU KIỆN
TỐN TỬ ĐIỀU KIỆN
• Ví dụ:
X = 10
Y = X > 9 ? 100 : 200
E1
E2
E3
Nếu X>9 thì Y được gán giá trị 100, ngược lại,nếu
X nhỏ hơn 9 thì Y sẽ nhận giá trị là 200.
• Phép tốn điều kiện cũng là một biểu thức nên
nó có thể được sử dụng như một tốn hạng của
phép tốn điều kiện khác.
• Ví dụ:
int m = 1, n = 2, p =3;
int min =(m < n ? (m < p ? m : p) : (n < p ? n : p));
E1
E2
E3
89
TỐN TỬ ĐIỀU KIỆN(ví dụ)
#include <iostream>
int main ()
{
int a,b,c;
a=2;
b=7;
c = (a>b) ? a : b;
cout << c;
return 0;
}
90
TỐN TỬ LẤY KÍCH THƯỚC
• sizeof(data_Type) : để tính kích thước của bất kỳ
hạng mục dữ liệu hay kiểu dữ liệu nào.
• Kết quả trả về là kích thước của kiểu dữ liệu đã
chỉ định theo byte.
• Ví dụ:
cout << "char size = " << sizeof(char) << " bytes\n";
91
92
23
27/12/201111
TỐN TỬ BITWISE
Tốn
tử
TỐN TỬ BITWISE
Tên
Ví dụ
~
Phủ Định Bit
~'\011'
// được '\366'
&
Và bit
'\011' & '\027‘ // được '\001'
|
Hoặc bit
'\011' | '\027‘ // được '\037'
^
Hoặc exclusive bit '\011' ^ '\027‘ // được '\036'
<<
Dịch trái bit
'\011' << 2
// được '\044'
>>
Dịch phải bit
'\011' >> 2
// được '\002'
93
ĐỘ ƯU TIÊN CỦA CÁC TOÁN TỬ
TOÁN TỬ
TOÁN TỬ
ĐỘ Ư/TIÊN
Ví dụ :
105 & 7 = 1// 01101001 & 0000 0111= 00000001
105 | 7 = 127//01101001 | 0000 0111= 01101111
0x60 = 0x96 /* 0110 1001 = 1001 0110 */
ĐỘ ƯU TIÊN
()
1
&
8
!, ++, --, sizeof()
2
*, /, %
+, -
3
4
<<, >>
5
<, <=, >, >=
= =, !=
6
7
^
|
&&
||
?:
9
10
11
12
13
=, +=, -=, *=, /=
14
95
94
CHUYỂN ĐỔI KIỂU DỮ LIỆU
• Phép chuyển đổi kiểu cho phép chuyển đổi dữ
liệu từ kiểu này sang kiểu khác.
• Cách cơ bản nhất được thừa kế từ ngôn ngữ C là :
(Kiểu dữ liệu)<biểu thức>
Ví dụ:
96
24
27/12/201111
CHUYỂN ĐỔI KIỂU DỮ LIỆU
• (int) 3.14 // chuyển 3.14 sang int để được 3
• (long) 3.14 // chuyển 3.14 sang long để được 3L
• (double) 2 // chuyển 2 sang double để được 2.0
• (char) 122 // chuyển 122 sang char có mã là 122
• (unsigned short) 3.14 // được 3 như là một
unsigned short
97
25