Tài liệu Môn học phương pháp lập trình
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)
25 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1010 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Tài liệu Môn học phương pháp lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
27/12/201111
1
1
MÔN HỌC
PHƯƠNG PHÁPLẬP TRÌNH
2
Giới thiệu
• Mục tiêu 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.
• Nội dung
• 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ể.
3
Phương thức
• Phương thức học
• 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
4
CHƯƠNG 1: NHẬP MÔN VỀ
MÁY TÍNH VÀ LẬP TRÌNH
27/12/201111
2
5
NỘI DUNG
1. Hệ thống số, các quy tắc chuyển đổi
2. Các khái niệm cơ bản
3. Các thành phần cơ bản trong ngôn ngữ C++
4. Các kiểu dữ liệu trong C++
5. Biến, hằng, cách khai báo
6. Lệnh xuất nhập
7. Định dạng kết quả xuất
8. Các toán tử
6
HỆ THỐNG SỐ- CÁC QUY TẮC
CHUYỂN ĐỔI
7
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ố nguyên dương
8
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
27/12/201111
3
9
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)
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)
11
Hệ đếm thập lục phân
(Hexa-decimal system, b=16)
• 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)
12
Bảng qui đổi tương đương 16 chữ số đầu tiên của
4 hệ đếm
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
27/12/201111
4
13
Đổ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
14
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:
15
Ví dụ 2:
0.6875 (10) = ? (2)
16
Chuyển nhị phân -> thập phân
10101(2) = 1x24 + 0x23 + 1x22 + 0x21 + 1x20
= 16 + 0 + 4 + 0 + 1 = 21 (10)
27/12/201111
5
17
Chuyển cơ số 10 -> 8
• Ví dụ: Chuyển số (3287,5100098)10 -> ?8
Phần nguyên 3287 : 8 thương là 410 dư 7
410 : 8 51 2
51 : 8 6 3
6 : 8 0 6
Vậy (3287)10 = (6328)8
Phần lẻ: 0,5100098 x 8 = 4,0800784 phần nguyên là 4
0,0800784 x 8 = 0,6406272 0
0,6406270 x 8 = 5,1250176 5
0,1250176 x 8 = 1,0001408 1
Vậy (0,5100098)10 = (90,4051)8
Kết quả chung là: (3287,5100098)10 = (6327,4051)8
18
Chuyển cơ số 8 ->10
• Ví dụ:
235 . 64 (8) = 2x82 + 3x81 + 5x80 + 6x8-1 +
4x8-2 = 157. 8125 (10)
19
Chuyển cơ số 16 -> 10
• 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
20
Chuyển cơ số 10 -> 16
Thực hiện:
Phần nguyên 625 : 16 Thương là: 42 dư 3
42 : 16 2 10 (A)
2 : 16 0 2
Phần nguyên là: (2A3)16
Phần lẻ: 0,625 x 16 =10,000 Phần lẻ là 10 = (A)
Kết quả chuyển đổi là: M = (675,625)10
= 2A3,A)16
27/12/201111
6
21
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 22
22
CÁC KHÁI NIỆM CƠ BẢN
232
Lập trình
• 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 toá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.
242
Thuật toán (giải thuật)
• Thuật toá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
27/12/201111
7
252
Ví dụ:
Thuật toá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
262
Sử dụng lưu đồ (Flowchart):
272
Các Ví Dụ
282
27/12/201111
8
292
Ngôn ngữ lập trình
(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 toá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
303
Ngôn ngữ lập trình
(programming language):
• 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
313
Lớp và đối tượng
• 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.
323
Cấu trúc của một chương trình C++
• 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 ;
27/12/201111
9
333
Cấu trúc của một chương trình C++
• Những khai báo, những chỉ thị tiền xử lý.
#include
#define ....
• Khai báo các biến toàn cục
• Hàm main ()
{
Các lệnh trong hàm main;
}
343
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
main()
{
program statement;
return value;
}
353
Ví dụ: chương trình C++ đơn giản
#include
#include
int main ()
{
cout << "Hello World!";
getch();
return 0;
}
36
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
ở phần đầu của chương trình, với
FileName.h là tên tập tin thư viện.
27/12/201111
10
37
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(),
38
Các tập tin thư viện thông dụng
• math.h: Định nghĩa các hàm toá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(),
39 39
CÁC THÀNH PHẦN CƠ BẢN TRONG
CHƯƠNG TRÌNH C/C++
404
Bộ ký tự dùng trong ngôn ngữ C++
• 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ự).
27/12/201111
11
414
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....
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).
424
Tên(định danh identifier)
• 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 ).
434
Ví dụ:
int x, y;
int HeA. HeB, HeC;
float u,v;
Tên(định danh identifier)
444
Từ khóa (keyword)
• 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
27/12/201111
12
454
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
464
Chú thích trong chương trình
• 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 hoàn toà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à */
474
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
48 48
KIỂU DỮ LIỆU TRONG C++
27/12/201111
13
494
Kiểu số nguyên
Name Description Size Range*
char Character or small integer. 1byte
signed: -128 to 127
unsigned: 0 to 255
short int
(short) Short Integer. 2bytes
signed: -32768 to 32767
unsigned: 0 to 65535
int Integer. 4bytes
signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
long int
(long) Long integer. 4bytes
signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
505
Kiểu số thực
Name Description Size Range*
float Floating point number. 4bytes 3.4e +/- 38 (7 digits)
double Double precision floating point number. 8bytes
1.7e +/- 308
(15 digits)
long
double
Long double precision
floating point number. 10bytes
1.2e +/- 4932
(19 digits)
515
Kiểu bool
bool Boolean value. It can take one of two values: true or false. 1byte
true or
false
52 52
BIẾN-HẰNG – CÁCH KHAI BÁO
27/12/201111
14
535
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:
;
Ví dụ:
int a;
float mynumber;
545
BIẾN-CÁCH KHAI BÁO BIẾN
• Nếu các biến có cùng kiểu dữ liệu thì có thể
khai báo:
<danh sách các biến cách nhau
bởi dấu phẩy>;
Ví dụ:
int a, b, c;
555
BIẾN-CÁCH KHAI BÁO BIẾN
• PHẠM VI CỦA BIẾN
565
BIẾN-CÁCH KHAI BÁO BIẾN
• KHỞI TẠO GIÁ TRỊ CHO BIẾN
type identifier = initial_value ;
Ví dụ:
int a = 0;
type identifier initial_value
27/12/201111
15
575
VÍ DỤ
• #include
• 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;
• }
585
HẰNG – CÁCH KHAI BÁO HẰNG
HẰNG (Constants): Là một đại lượng mà
giá trị của nó không đổi
595
Hằng nguyên ( 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ụ :
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
606
Hằng long Int
• Giống như hằng nguyên, chỉ khác thêm L
hoặc l ở cuối.
• Ví dụ:
75u // unsigned int
75l // long
75ul // unsigned long
27/12/201111
16
616
Hằng thực ( float và double )
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)
626
Hằng ký tự
• 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
636
Định nghĩa hằng
Cú pháp:
#define identifier value
Ví dụ:
#define PI 3.14159265
#define NEWLINE '\n'
646
Ví dụ
// defined constants: calculate circumference
#include
using namespace std;
#define PI 3.14159
#define NEWLINE '\n'
int main ()
{
double r=5.0; // radius
27/12/201111
17
656
Ví dụ
double circle;
circle = 2 * PI * r;
cout << circle;
cout << NEWLINE;
getch();
return 0;
}
666
Khai báo hằng (const)
Cú pháp:
const tên hằng = giá trị
Ví dụ:
const int pathwidth = 100;
const char tabulator = '\t';
67 67
CÁC LỆNH XUẤT NHẬP CHUẨN
686
Lệnh xuất chuẩn (cout)
• Cú pháp:
cout<<biểu thức;
Trong đó :
Biểu thức có thể là:
–Biến
–Hằng
–Chuổi
27/12/201111
18
696
Lệnh xuất chuẩn (cout)
• Ví dụ:
cout << "This is a sentence.";
cout << "This is another sentence.";
cout << "Second sentence.\nThird sentence.";
707
Lệnh nhập chuẩn (cin)
• 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 :”<<a;
717
Đị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
727
Định dạng kết quả xuất
• 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
27/12/201111
19
737
Ví dụ
• #include
• #include
• void main()
• {
• cout <<setw(5) <<12; //kết quả “...12”
• cout <<setw(10);
cout <<hex <<15 // kết quả f
• cout <<oct <<10; // kết quả 12
• cout <<dec <<0x10; // kết quả 16
• return;
• } 74
CÁC TOÁN TỬ
1. Toán tử gán
2. Toán tử số học
3. Các toán tử gán phức hợp
4. Toán tử tăng giảm
5. Tóan tử quan hệ
6. Toán tử logic
7. Toán tử điều kiện
8. Toán tử lấy kích thước
9. Chuyển đổi kiểu dữ liệu
75
TOÁN TỬ GÁN(=)
Toá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.
76
TOÁN TỬ GÁN(=)
Toán tử gán luôn đượ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); tương đương
với
b = 5;
a = 2 + b;
27/12/201111
20
77
TOÁN TỬ SỐ HỌC
Toán tử Tên 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
78
TOÁN TỬ SỐ HỌC
Trừ toán tử lấy phần dư (% ) thì tất cả các
toán tử số học có thể chấp nhận pha trộn các
toán hạng số nguyên và toán hạng số thực.
• Nếu cả hai toán hạng là số nguyên thì kết
quả sẽ là một số nguyên.
• Một hoặc cả hai toán hạng là số thực thì
kết quả sẽ là một số thực (real hay
double)
79
TOÁN TỬ GÁN PHỨC HỢP
Toá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
80
Ví dụ:
#include
int main ()
{
int a, b=3;
a = b;
a+=2; // tương đương với a=a+2
cout << a;
return 0;
}
27/12/201111
21
81
TOÁN TỬ TĂNG - GIẢM
• Toán tử tăng (++) và toá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;
82
TOÁN TỬ TĂNG - GIẢM
• Toán tử tăng/giảm có 2 dạng:
• Tiền tố :++a
• Hậu tố: a++
83
TOÁN TỬ TĂNG - GIẢM
• Trường hợp toá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 toá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 toán.
84
TOÁN TỬ TĂNG - GIẢM
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
27/12/201111
22
85
TOÁN TỬ QUAN HỆ
Toán tử Tên 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 5 > 5.5 // kết quả 0
>= So sánh lớn hơn hoặc bằng 6.3 >= 5 //kết quả1
86
TOÁN TỬ QUAN HỆ
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)
87
TOÁN TỬ LOGIC
Toán tử Ý nghĩa Ví dụ
! 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) Khác 0: ĐÚNG (true)
88
TOÁN TỬ ĐIỀU KIỆN
• Cú pháp
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.
E1 ? E2 : E3
27/12/201111
23
89
TOÁN TỬ ĐIỀU KIỆN
• Ví dụ:
X = 10
Y = X > 9 ? 100 : 200
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.
E1 E2 E3
90
TOÁN TỬ ĐIỀU KIỆN
• Phép toá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 toán hạng của
phép toá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
91
TOÁN TỬ ĐIỀU KIỆN(ví dụ)
#include
int main ()
{
int a,b,c;
a=2;
b=7;
c = (a>b) ? a : b;
cout << c;
return 0;
}
92
TOÁ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";
27/12/201111
24
93
TOÁN TỬ BITWISE
Toán
tử
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'
94
TOÁN TỬ BITWISE
Ví dụ :
105 & 7 = 1// 01101001 & 0000 0111= 00000001
105 | 7 = 127//01101001 | 0000 0111= 01101111
0x60 = 0x96 /* 0110 1001 = 1001 0110 */
95
ĐỘ ƯU TIÊN CỦA CÁC TOÁN TỬ
TOÁN TỬ ĐỘ Ư/TIÊN
( ) 1
!, ++, --, sizeof() 2
*, /, % 3
+, - 4
> 5
, >= 6
= =, != 7
TOÁN TỬ ĐỘ ƯU TIÊN
& 8
^ 9
| 10
&& 11
|| 12
? : 13
=, +=, -=, *=, /= 14
96
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)
Ví dụ:
27/12/201111
25
97
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
Các file đính kèm theo tài liệu này:
- 3chuong1_compatibility_mode_4262.pdf