Kỹ thuật lập trình - 1 -
TRƯỜNG ĐẠI HỌC ĐÀ LẠT
F 7 G
GIÁO TRÌNH
KỸ THUẬT LẬP TRÌNH
TRẦN TUẤN MINH
2002
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 2 -
MỤC LỤC
MỤC LỤC.......................................................................................................................... 2
CHƯƠNG 1 : CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG C++...................................... 4
1.1 Mở đầu...................................................................................................................... 4
1.2 Các Yếu Tố Cơ Bản Của Ngôn Ngữ C++ : ........................................................... 6
1.3 Các Kiểu Dữ Liệu Cơ Bản Trong C++ : .............................................................. 8
1.4 Các Hằng :............................................................................................................. 10
1.5 Biến : ...................................................................................................................... 13
1.6 Câu lệnh gán :........................................................................................................ 14
1.7 Từ khóa : typedef................................................................................................... 15
1.8 Sơ Lược Về Nhập, Xuất Chuẩn Trong C++......................................................... 15
BÀI TẬP........................................................................................................................... 19
CHƯƠNG 2 : CÁC TOÁN TỬ TRONG C++............................................................... 21
2.1 Các toán tử số học :................................................................................................ 21
2.2 Toán tử quan hệ và logic :..................................................................................... 23
2.3 Các Toán Tử Thao Tác Bit.................................................................................... 24
2.4 Các toán tử khác. ................................................................................................... 27
2.5 Biểu Thức :............................................................................................................. 27
2.6 Độ ưu tiên của các toán tử .................................................................................... 31
BÀI TẬP........................................................................................................................... 33
CHƯƠNG 3. HÀM VÀ CHƯƠNG TRÌNH..................................................................... 36
3.1 Cấu trúc chung của chương trình C++ :................................................................. 36
3.2 Hàm. ....................................................................................................................... 38
3.3 Một số thư viện trong C++ .................................................................................... 45
BÀI TẬP........................................................................................................................... 48
CHƯƠNG 4. CÁC CÂU LỆNH ĐIỀU KHIỂN.............................................................. 49
4.1 Câu lệnh if........................................................................................................... 49
4.2 Câu lệnh switch.................................................................................................... 53
4.4 Câu lệnh while ( Lặp với điều kiện được kiểm tra trước )................................... 61
4.5 Câu lệnh do .. while ( Lặp với điều kiện được kiểm tra sau ) ............................. 63
4.6 Câu lệnh goto và nhãn :......................................................................................... 68
4.7 Các câu lệnh break, continue :............................................................................ 68
4.8 Câu lệnh rổng :....................................................................................................... 69
4.10 Các ví dụ :............................................................................................................. 71
BÀI TẬP........................................................................................................................... 77
CHƯƠNG 5. CÁC CẤU TRÚC DỮ LIỆU CƠ BẢN..................................................... 79
5.1 Mảng :.................................................................................................................... 79
5.2 Xâu ký tự :.............................................................................................................. 91
5.3 Kiểu Cấu trúc :....................................................................................................... 94
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 3 -
5.4 Mảng cấu trúc : ...................................................................................................... 97
5.5 Kiểu enum............................................................................................................ 102
BÀI TẬP......................................................................................................................... 104
CHƯƠNG 6 : CON TRỎ................................................................................................ 110
6.1 Con trỏ :................................................................................................................ 110
6.2 Con trỏ và mảng 1 chiều :.................................................................................... 118
6.3 Con trỏ và xâu ký tự : .......................................................................................... 120
6.4 Con trỏ và mảng 2 chiều :.................................................................................... 122
6.5 Con trỏ và cấu trúc............................................................................................... 125
6.6. Mảng con trỏ : ..................................................................................................... 127
6.7 Tìm hiểu thêm về hàm:........................................................................................ 128
BÀI TẬP......................................................................................................................... 136
CHƯƠNG 7 : LẬP TRÌNH ĐƠN THỂ......................................................................... 137
7.1 Đơn thể chương trình :.......................................................................................... 137
7.2 Dự án (Project)..................................................................................................... 139
7.3 Các lớp lưu trử :.................................................................................................... 145
7.4 Đệ qui ................................................................................................................... 152
7.5 Bộ tiền xử lý trong C++ :.................................................................................... 155
BÀI TẬP :....................................................................................................................... 158
CHƯƠNG 8 : LẬP TRÌNH VỚI TẬP TIN.................................................................... 160
8.1 Mở đầu : ............................................................................................................... 160
8.2 Các loại tập tin :................................................................................................... 160
8.3 Mở đầu vê nhập/xuất tập tin trong C++.............................................................. 161
8.4 Nhập/Xuất nhò phân không đònh dạng................................................................. 175
8.5 Truy cập ngẫu nhiên. ........................................................................................... 176
BÀI TẬP......................................................................................................................... 180
TÀI LIỆU THAM KHẢO.............................................................................................. 181
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 4 -
CHƯƠNG 1 : CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG C++.
1.1 Mở đầu.
1.2 Các yếu tố cơ bản của ngôn ngữ C++.
1.3 Các kiểu dữ liệu cơ bản trong C++.
1.4 Các hằng.
1.5 Biến.
1.6 Câu lệnh gán.
1.7 Từ khóa typedef.
1.8 Sơ lược về nhập, xuất trong C++.
1.1 Mở đầu.
1.1.1 Giới thiệu ngôn ngữ C/ C++ :
Ý tưởng quan trọng nhất của C xuất phát từ ngôn ngữ BCPL do Martin
Richards thiết kế. nh hưởng của BCPL lên C gián tiếp thông qua ngôn ngữ B do
Ken Thompson viết năm 1970 cho hệ thống UNIX đầu tiên trên máy PDP-7.
Từ ngôn ngữ B, Dennish Ritchie và Brian Kernighan phát triển thành ngôn ngữ
C vào những năm 1970 tại phòng thí nghiệm của hãng AT & T để phát triển cốt lõi
của hệ điều hành UNIX.
Trong nhiều năm, chuẩn cho C trên thực tế là một phiên bản được cung cấp
cùng với hệ điều hành Unix version 5. Nó được mô tả lần đầu tiên trong cuốn :
” The C programming language “
của Dennish Ritchie và Brian Kernighan.
Cùng với sự phổ biến các máy tính cá nhân, có nhiều bản cài đặt của C được
tạo ra. Đa số các cài đặt đều tương thích tốt với nhau ( tức là một chương trình được
viết cho trình biên dòch này thường biên dòch thành công đối với một trình biên dòch
khác ). Tuy nhiên, vì không dựa trên một chuẩn chung nên cũng có nhiều tương phản.
Để khắc phục tình trạng này, vào mùa hè 1983 một hội đồng được thành lập để
tạo ra một chuẩn cho C, gọi là chuẩn ANSI ( American National Standards Institute :
Viện đònh chuẩn Quốc gia Mỹ). Sau 6 năm, chuẩn cuối cùng ANSI C được đề nghò
vào tháng 12/1989, và bản đầu tiên được dùng vào năm 1990. Ngày nay các trình biên
dòch C chính đều giữ đúng theo ANSI chuẩn.
C là một ngôn ngữ có khả năng tổ hợp những thành phần tốt nhất của ngôn ngữ
bậc cao và sự điều khiển linh hoạt của ngôn ngữ assembly .
- Có thể xem C là ngôn ngữ "cấp thấp" theo nghóa tương đối, nghóa là C có
thể xử lý trực tiếp các đối tượng ký tự, số, đòa chỉ. Ngoài ra, C còn sinh mã tối ưu, tập
các toán tử hiệu quả cho phép thao tác đến các bit.
- Tuy nhiên C vẫn có đầy đủ các đặc điểm mà bất kỳ một ngôn ngữ cấp cao
nào cần phải có :
- Tính khả chuyển ( portable ) .
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 5 -
- Cho phép dễ dàng triển khai phương pháp lập trình có cấu trúc .
- Cho phép xây dựng cấu trúc chương trình, diễn đạt thuật toán rõ ràng, trong
sáng.
Bởi các lý do trên người ta còn thường nói C là ngôn ngữ bậc trung. Sau đây là
bảng vò trí của C/C++ trong thế giới các ngôn ngữ :
Bậc cao nhất
Ada
Modula-2
Pascal
COBOL
FORTRAN
BASIC
Bậc trung
C
C++
FORTH
Macro-assembler
Ngôn ngữ C đã không ngừng cải tiến và phát triển.
Năm 1987 hãng Borland đã đưa ngôn ngữ C vào thò trường của IBM-PC
thông qua Turbo C.
Vào những năm 1980, Bjarne Stroustrup đã cho ra đời ngôn ngữ C++ bằng
cách cài vào ngôn ngữ C khái niệm lập trình hướng đối tượng.
Năm 1988, hãng Zortech giới thiệu một trình biên dòch C++ cho các máy tính
MS-DOS
Cho tới nay đã xuất hiện nhiều phiên bản C++ trong môi trường Microsoft
Windows : Borland C++, Turbo C++ của hãng Borland; Visual C++ của Microsoft.
Hiện nay có nhiều chương trình lớn được viết hay được viết lại bằng C/C++ :
- Hệ điều hành UNIX.
- Hệ điều hành Windows.
- Hệ quản trò cơ sở dữ liệu Dbase.
- Các chương trình soạn thảo văn bản.
- Các bảng tính điện tử.
. . . . . . . . . . . . . .
Trong giáo trình này ta sẽ minh họa bằng Borland C++ 3.1 for DOS.
1.1.2 Chương trình C++ đầu tiên.
Chương trình C++ đơn giản sau đây xuất một dòng văn bản ra man hình.
//Chương trình C++ đầu tiên.
#include<iostream.h>
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 6 -
int main()
{
cout<<”\nChương trình C++ đầu tiên.”;
return 0;
}
Kết quả thực hiện chương trình sẽ xuất ra màn hình câu :
Chương trình C++ đầu tiên.
Ta xét chương trình trên.
- Dòng đầu của chương trình :
Là một dòng ghi chú, xác đònh bởi ký hiệu //.
C++ sẽ bỏ qua đoạn văn bản trên dòng nằm sau ký hiệu // trong quá trình biên
dòch.
- Dòng 2 của chương trình : #include<iostream.h>
Là một chỉ thò tiền xử lý. Những dòng bắt đàu từ ký hiệu # sẽ được C++ xử lý
trước khi biên dòch.
Ý nghóa của nó là nạp tập tin tiêu đề iostream.h vào trong chương trình. Tập
tin iostream.h được dùng cho bất ký chương trình C++ nào có xử dụng các thao tác
Nhập/Xuất dữ liệu.
- Dòng 3 của chương trình : int main()
main() là tên của hàm, ta họi là hàm chính, là bắt buộc phải có đối với bất kỳ
một chương trình C++ nào. int là kiểu số nguyên, chỉ kiểu dữ liệu của hàm.
Sau tên hàm hàm main() là thân của hàm main(), xác đònh bởi :
{ : bắt đầu vào thân hàm
} : Kết thúc hàm.
- Dòng 4 : cout<<”\nChương trình C++ đầu tiên.”;
Là câu lệnh thực hiện việc xuất hằng xâu ký tự ra màn hình. Kết thúc mỗi câu
lệnh trong C++ bằng dấy (;) .Một hằng xâu ký tự được rào bởi cặp dấu “ “. cout là đối
tượng xuất chuẩn, liên kết với màn hình. Toán tử << có tác dụng chèn dữ liệu vào
dòng xuất. Ký tự \n điều khiển việc xuống dòng.
KNLT: Mỗi chương trình nên bắt đầu bằng một ghi chú chỉ rõù mục đích của nó.
1.2 Các Yếu Tố Cơ Bản Của Ngôn Ngữ C++ :
1.2.1 Ký hiệu cơ sở :
Ngôn ngữ C++ được xây dựng từ bộ ký hiệu cơ sở sau :
-Bộ 26 chữ cái La-Tinh viết thường (nhỏ): a,b,...,z.
-Bộ 26 chữ cái La-Tinh viết hoa (lớn) : A,B,...,Z.
-Bộ 10 chữ số hệ thập phân : 0,1,...,9.
-Bộ dấu các toán tử số học : + - * /
-Bộ dấu các toán tử so sánh : < > =
- Ký tự gạch nối : _ ( Khác dấu trừ - ).
-Các ký hiệu khác : ' " ; , . : [ ] # $ & { } % ! . . . .
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 7 -
Đặc biệt có khoảng trắng dùng để ngăn cách các từ (phím Space).
Các ký hiệu cơ sở đều có trên bàn phím.
1.2.2 Các từ
Từ trong C++ được xây dựng bởi các ký hiệu cơ sở trên. Có 2 loại từ :Từ
khóa và tên.
a. Từ khóa (Key Word):
Là những từ có ý nghóa hoàn toàn xác đònh, chúng thường được dùng để khai báo các
kiểu dữ liệu , để viết các toán tử, và các câu lệnh. Sau đây là các từ khóa trong Borland C++
(Turbo C++) :
Asm auto break case catch char
Class const continue default delete do
Double else enum extern float for
Friend goto if inline int long
New operator private protected public register
Return short signed sizeof static struct
Switch template this throw try typedef
Union unsigned virtual void volatile while
Cdecl _cs _ds _es _export far
Huge interrupt _loadds near Pascal _regparam
_saveregs _seg _ss
Ghi chú :
Các từ khóa chỉ được viết thường, chẳng hạn không được viết INT mà phải viết
int.
b. Tên hoặc danh hiệu (identifier):
Là từ do người sử dụng tự đặt để giải quyết bài toán của mình. Từ tự đặt
dùng để đặt tên cho hằng, biến, hàm, tên kiểu dữ liệu mới,...
Tên được đặt theo quy tắc : phải bắt đầu bằng một chữ cái hoặc dấu gạch
nối,sau đó là các chữ cái, chữ số hoặc dấu gạch nối , và không được trùng với từ khóa.
Tên có thể viết bằng chữ thường hoặc chữ hoa.
Chiều dài cực đại của tên mặc đònh là 32. Nhưng có thể đặt lại một giá trò khác
từ 1 đến 32 trong chức năng : Option - Complier - Source - Identìier length trong môi
trường kết hợp của C++.
Trong C++ có phân biệt chữ thường và chữ hoa.
Ví dụ :
- Các ví dụ sai :
21holpljpmljn // Ký tự đầu là số
ts#bnk uio0986 // Sư dụng ký hiệu #
Khoang trang // Sử dụng khỏang trắng
f(x) // Sử dụng dấu ngoặc tròn
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 8 -
. . . . . . . . . . . . . . . . . .
- Các ví dụ đúng :
T123tyu09
_dll098786
1.3 Các Kiểu Dữ Liệu Cơ Bản Trong C++ :
Trong C++ có 5 kiểu dữ liệu cơ bản là :
- Các kiểu Ký tự .
- Các kiểu nguyên .
- Kiểu Số thực dấu chấm động độ chính xác đơn : float
- Kiểu Số thực dấu chấm động độ chính xác kép : double
- Kiểu void.
Các kiểu dữ liệu khác đều dựa vào các kiểu dữ liệu trên.
Kiểu void sẽ được trình bày trong các chương sau, trong phần này ta chỉ giới
thiệu các kiểu còn lại.
1.3.1 Kýù tự :
Có nhiều kiểu ký tự. Một kiểu ký tự được khai báo bởi từ khóa char. Một giá
trò kiểu char được lưu trử trong 8 bit và biểu diễn được 1 ký tự thông qua bảng mã
ASCII .
Chẳng hạn :
Ký tự Mã ASCII (hệ 10)
0 48
1 49
A 65
a 97
. . . .
Có các kiểu ký tự tương ứng với các từ khóa :
signed char ( như char, có dấu)
unsigned char (Không dấu).
Sau đây là bảng kích thước, phạm vi biểu diễn của các kiểu ký tự :
KIỂU Phạm vi biểu diễn Kích thước Số ký tự
Char
-128 → 127
1 byte 256
signed char
-128 → 127
1 byte 256
unsigned char
0 → 255
1 byte 256
Ghi chú :
Có thể chia 256 ký tự thành 3 nhóm :
- Nhóm 1 : Là các ký tự điều khiển, có mã ASCII từ 0 đến 31. Các ký tự này nói
chung là không hiển thò ra màn hình.
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 9 -
Chẳng hạn, Ký tự mã 10 chuyển con trỏ xuống dòng dưới (trên cùng cột); ký tự
mã 13 chuyển con trỏ về đầu dòng. . .
- Nhóm 2 : Là các ký tự văn bản, có mã ASCII từ 32 đến 126. Các ký tự này có thể
đưa ra màn hinh hoặc máy in.
- Nhóm 3 : Là các ký tự đồ họa, có mã số từ 127 đến 255. Các ký tự này có thể đưa ra
màn hình.
1.3.2 Kiểu nguyên :
Trong C++ cho phép sử dụng các kiểu số nguyên được khai báo bởi từ khóa
int, hoặc đi kèm theo int với các từ khóa long, short, unsigned.
Số lượng bit được dùng để lưu trử một giá trò int phụ thuộc vào kích thước từ
(word) của máy. Thường thì máy 16-bit sẽ dùng 16 bit để lưu trử một giá trò int ,
trong khi đó máy 32-bit sẽ dùng 32 bit .
Kích thước và phạm vi biểu diễn của chúng được cho trong bảng sau :
Kiểu Phạm vi biểu diễn Kích thước
Int Chiếm 1 từ của máy.
short int , short
-32768 → 32767 (-2
15
→ 2
15
-1)
16 bit
unsigned short int
0 → 65535 (0 → 2
16
-1)
16 bit
long int , long
-2147483648 → 2147483647
(-2
31
→ 2
31
-1 )
32 bit
unsigned long int
0 → 4294967295 ( 0 → 2
32
-1)
32 bit
unsigned int Số nguyên không âm , chiếm 1 từ của máy.
Ghi chú :
Giá trò kiểu ký tự được xem là một số nguyên 8-bit.
1.3.3 Kiểu số thực :
C++ cho phép sử dụng 3 kích thước giá trò thực, tương ứng với 3 từ khóa : float,
double và long double.
Kích thước và phạm vi biểu diễn của chúng được cho trong bảng sau :
Kiểu Ý nghóa Phạm vi biểu diễn Kích
thước
Độ chính
xác
Float Số thực chính
xác đơn
-3.4E+38 → 3.4E+38
32 bit 6 số thập
phân
Double Số thực chính
xác kép
-1.7E+308 → 1.7E+308,0
64 bit 10 số thập
phân
long double Kích thước 96 bit hoặc 128 bit
Ghi chú :
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 10 -
Lưu trử trong máy :
(*) Một số thực kiểu float x với | x| < 3.4E-38 được xem là bằng 0.
-3.4E+38 -3.4E-38 0 3.4E-38 3.4E+38
(**) Một số thực kiểu double x với ( | x| < 1.7E-308 ) được xem là bằng 0.
-1.7E+308 -1.7E-308 1.7E-308 1.7E+308
1.4 Các Hằng :
Hằng là các đại lượng mà giá trò của nó không thay đổi trong quá trình tính
toán. Ta thường dùng các ký tự hoa để biểu diễn các hằng ký hiệu.
Trong C++ có các loại hằng sau đây:
1.4.1 Hằng số thực
Giá trò được lấy là float và double. Viết theo 2 cách :
1. Dạng thập phân (dấu chấm cố đònh) :
Bao gồm : Phần nguyên, dấu chấm thập phân, phẩn phân.
Phần nguyên
⋅
Phần phân
Ví dụ : 214.35 -43.345 234.0
Ghi chú :
Phần nguyên hay phần phân có thể vắng mặt nhưng dấu châm không thể thiếu.
Chẳng hạn cho phép viết : .12 7.
2. Dạng khoa học hay dạng mũ ( dấu chấm động ) :
Có 3 thành phần : Phần đònh trò , ký hiệu E hoặc e , và phần bậc.
Phần đònh trò là một số nguyên hoặc số thực dạng thập phân. Phần bậc là một
số nguyên. Hai phần này cách nhau bởi ký tự E hoặc e.
Phần đònh trò E hoặc e Phần bậc
Ví dụ :
12.234E-3 // biểu diễn giá trò 0.012234
0.35E4 // biểu diễn giá trò 3500.0
-12.22e-3 // biểu diễn giá trò -0.01222
1e6 // biểu diễn giá trò 1 000 000
1.4.2 Hằng nguyên
1. Hằng int :
Là số nguyên có kiểu int .
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 11 -
Ghi chú :
21 (hằng nguyên) khác 21.0 (hằng thực)
2. Hằng long :
Biểu diễn : thêm L hoặc l vào sau hằng int.
Ví dụ : -2345L ; 4356l
Ghi chú :
Một số nguyên vượt ra khỏi miền xác đònh của int được xem là hằng long.
3. Hằng unsigned :
Biểu diễn : thêm u vào sau hằng int.
Có giá trò từ 0 đến 65535.
4. Hằng int hệ 8 :
Hằng int hệ 8 luôn nhận giá trò dương.
Dạng biểu diễn : 0c
1
c
2
c
3
…
Với : c
i
là một số nguyên trong khoảng từ 0 đến 7.
Ví dụ :
- Hằng int hệ 8 : 0345
- Giá trò của nó trong hệ 10 : 3*8*8 + 4*8 + 5 = 229.
5. Hằng int hệ 16 :
Trong hệ này sử dụng 16 ký tự :
0,1,2,3,4,5,6,7,8,9,
a hoặc A
b hoặc B
c hoặc C
d hoặc D
e hoặc E
f hoặc F
Dạng biểu diễn : 0x c
1
c
2
c
3
… hoặc 0X c
1
c
2
c
3
…
Trong đó c
i
là một chữ số hệ 16.
Ví dụ :
Các hằng nguyên hệ 16 : 0xa3 ; 0Xa3 ; 0xA3 ; 0XA3 là như nhau. Giá trò của
nó trong hệ 10 là : 10*16 + 3 = 163.
1.4.3 Hằng ký tự :
- Là một ký tự được viết trong 2 dấu nháy đơn.
Chẳng hạn ‘a’ , ‘A’, ‘3’, ‘+’ . . . Trình biên dòch của C++ sẽ lưu trử các hằng
này bằng cách dùng các mã số ASCII (hệ 10) của nó, tương ứng là 97,65, 43, 51 . . .
- Ký tự có thể biểu diễn bởi hệ 8.
Cách viết : ‘\c
1
c
2
c
3
’ , trong đó c
i
là các ký hiệu trong hệ 8.
- Ký tự có thể biểu diễn bởi hệ 16.
Cách viết : ‘\xc
1
c
2
c
3
’ hoặc ‘\Xc
1
c
2
c
3
’ trong đó c
i
là các ký hiệu trong hệ 16.
Hệ 8 Hệ 16
Ký tự
Mã ASCII Biểu diễn Mã ASCII Biểu diễn
Mã ASCII
hệ 10
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 12 -
‘a’ 141 ‘\141’ 61 ‘\x61’ 97
‘A’ 101 ‘\101’ 41 ‘\x41’ 65
- Đối với một số hằng ký tự đặc biệt, ta sử dụng cách viết sau (thêm dấu \) :
Cách viết Ký tự
‘\’ ’ ‘
‘\” ‘ “
‘\\’ \
‘\n’ \n (chuyển dòng)
‘\0’ \0 (NULL)
‘\t’ Tab
‘\b’ Backspace
‘\r’ CR (Về đầu dòng)
‘\f’ LF (sang trang)
Ghi chú :
1. Hằng ký tự có thể tham gia vào các biểu thức như mọi số nguyên khác.
Ví dụ : ‘9’ -’0’ = 57 -48 = 9
2. Cần phân biệt :
‘0’ : là ký số 0 có mã ASCII hệ 10 là 48.
‘\0’ : là ký tự NULL có mã ASCII hệ 10 là 0.
1.4.4 Hằng xâu ký tự ( Chuỗi ):
Là một dãy ký tự được bao trong 2 dấu nháy kép.
Ví dụ :
“Da Lat”
“” // Xâu rổng
Ghi chú :
- Xâu ký tự được lưu trử trong máy dưới dạng một mảng các ký tự. Trình biên
dòch tự động thêm ký tự NULL ‘\0’ ( được xem là dấu hiệu kết thúc xâu ) vào cuối
mỗi xâu.
- Hằng ký tự ‘a’ khác xâu ký tự “a”.
1.4.5 Biểu thức hằng :
Biểu thức hằng chỉ bao gồm các hằng. Các biểu thức như vậy được xác đònh
vào lúc biên dòch.
1.4.6 Đònh nghóa một hằng
1. Dùng chỉ thò #define ( Có thể đònh nghóa lại giá trò hằng ) :
- Cách viết : #define TÊN-HẰNG GIÁ_TRỊ_HẰNG // Không có dấu ; ở sau
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 13 -
- Tác dụng : TÊN-HẰNG sẽ được thay thế bởi GIÁ_TRỊ_HẰNG cho phần còn lại của
văn bản chương trình.
Ví dụ :
#define MAX 100 // Thay thế MAX bằng 100
2. Dùng từ khóa const ( Không đònh nghóa lại được giá trò hằng ) :
C++ sử dụng từ khóa const để đònh nghóa một hằng dưới dạng một tên .
- Cú pháp : Const kiểu TÊN-HẰNG = GIÁ_TRỊ_HẰNG; // có dấu ;
- Tác dụng : Cho phép đònh nghóa một hằng ký hiệu có tên là TÊN-HẰNG biểu thò một
gia trò là GIÁ_TRỊ_HẰNG và sau này không thể sửa đổi GIÁ_TRỊ_HẰNG của TÊN-
HẰNG được .
Ví dụ :
Const long double PI = 3.141592653589793;
Trong C++ có một số hằng được đònh nghóa trước :
Tên hằng Mô tả Tập tin tiêu đề
INT_MIN Giá trò nhỏ nhất của int limits.h
INT_MAX Giá trò lớn nhất của int limits.h
UINT_MIN Giá trò nhỏ nhất của unsigned
int
limits.h
UINT_MAX Giá trò lớn nhất của unsigned int limits.h
LONG_MIN Giá trò nhỏ nhất của long int limits.h
LONG_MA
X
Giá trò lớn nhất của long int limits.h
FLT_MIN Giá trò nhỏ nhất float float.h
FLT_MAX Giá trò lớn nhất của float float.h
DBL_MIN Giá trò nhỏ nhất double float.h
DBL_MAX Giá trò lớn nhất của double float.h
LDBL_MIN Giá trò nhỏ nhất long double float.h
LDBL_MAX Giá trò lớn nhất của long double float.h
1.5 Biến :
1.5.1 Đònh nghóa :
Biến là một phần bộ nhớ được đặt tên, được dùng, để giữ một giá trò mà có thể
thay đổi trong chương trình.
Vậy biến gắn với tên và kiểu dữ liệu, có giá trò thay đổi trong quá trình tính
toán.
1.5.2 Khai báo biến :
Mỗi biến phải được khai báo trước khi sử dụng. Cú pháp khai báo như sau :
- Khai báo một biến :
Kdl Bien;
- Khai báo nhiều biến cùng một kiểu :
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 14 -
Kdl Bien1,Bien2,Bien3;
Trong đó :
- Kdl là kiểu dữ liệu nào đó như char, int, double, . . .
- Bien, Bien1,. . . là tên chỉ tên của biến.
Giữa Kdl và Tên biến phải cách nhau ít nhất 1 khoảng trắng.
Trong phần tên biến, nếu có nhiều biến thì giữa 2 biến phải phân cách bởi dấu
phảy (,).
Ví dụ :
int a,b,c; // khai báo 3 biến kiểu int
long c,d; // khai báo 2 biến kiểu long
unsigned i,j; // Khai báo 2 biến kiểu unsigned
char k; // khai báo 1 biến kiểu char
float x,y; // khai báo 2 biến kiểu double
Ghi chú :
Biến của kiểu dữ liệu nào thì chỉ có thể nhận các giá trò của kiểu dữ liệu đó.
1.5.3 Khởi đầu cho các biến :
Nếu trong khai báo, ngay sau tên biến ta đặt dấu = (phép gán ) và một giá trò
dữ liệu tương ứng thi đó chính là cách vừa khai báo vừa khởi đầu cho 1 biến.
Ví dụ :
int a = 20;
long m = 12456, n;
float x, y = 32.1;
Ghi chú :
Có thể thực hiện viêc khởi đầu cho biến nhờ lệnh gán.
1.5.4 Lấy đòa chỉ cho biến :
Mỗi biến được cấp phát một vùng nhớ gồm một số byte liên tiếp. Số hiệu của
byte đầu chính là đòa chỉ của biến.
Để nhận đòa chỉ biến ta dùng toán tử & với cú pháp : &Bien .
1.6 Câu lệnh gán :
- Có dạng :
b = bt;
Trong đó b là biến. bt là một biểu thức ( một công thức toán học nào đó).
Trước tiên tính biểu thức bt và sau đó gán giá trò tính được cho biến b.
Ví dụ :
float x;
x = 2.5;
x = x*x; // khi đó x nhận giá trò là 6.25
- có khả năng có nhiều dấu gán liền nhau :
m = n = 2;
Có nghóa là : n lấy giá trò 2, rồi m lấy giá trò của n, nên có giá trò bằng 2.
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 15 -
Ghi chú :
Trong C++ có nhiều trường hợp cho phép gán giữa các tên có kiểu khác nhau,
khi đó có sự chuyển đổi kiểu một cách tự động. ta sẽ xét sau.
1.7 Từ khóa : typedef
Từ khóa typefef được dùng để đổi lại tên một kiểu dữ liệu đã có như char,
int, float, mảng ... thành một tên mới.
Cách viết là đặt từ khóa typedef vào trước 1 khai báo thông thường :
Ví dụ :
a) typedef int intgia; // Kiểu intgia thực chất là kiểu int
intgia x,y; // x,y là biến kiểu ingia (int)
b) typedef double dgia; // Kiểu dgia thực chất là kiểu double
dgia a,b; // a,b là biến kiểu dgia
1.8 Sơ Lược Về Nhập, Xuất Chuẩn Trong C++.
1.8.1 Luồng I/O (I/O Streams)
C++ xử lý việc nhập liệu và xuất liệu như sau:
• Khi các ký tự được vào từ bàn phím, chúng vào một luồng nhập (input stream)
được gọi là istream mà nó truyền các ký tự từ bàn phím đến chương trình.
• Tương tự khi xuất liệu chương trình được hiển thò trên màn hình, các ký tự
xuất được đặt vào trong một luồng xuất (output stream) mà nó truyền các ký tự đến
màn hình.
ostream
istream
Bàn phím
Chương
trình
C++ không có các tính năng nhập và xuất xây dựng trong ngôn ngữ. Thay vào đó các
istream và ostream được cung cấp bởi một thư viện đặc biệt, mà giao diện của nó
trong tập tin tiêu đề (hearder) <iostream.h> (các tên istream và ostream không phải là
một phần của ngôn ngữ C++ mà chúng là tên của hai lớp). Thư viện này đònh nghóa ba
đối tượng dữ liệu quan trọng:
• Một đối tượng istream mang tên cin, mà nó được kết hợp với bàn phím.
• Một đối tượng ostream mang tên cout, mà nó được kết hợp với màn hình.
• Một đối tượng ostream mang tên ceer, mà nó được kết hợp với màn hình và
được dùng để hiển thò các thông báo sai.
Nhập và xuất là các phép toán trên những đối tượng dữ liệu này.
1.8.2 Nhập dữ liệu từ bàn phím :
Mệnh đề nhập có thể mô tả như sau:
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 16 -
cin >> Bien; //Nhập giá trò 1 biến
cin >> Bien1 >> Bien2 >> ... >> Bienn;//Nhập giá trò n biến.
Trong đó:
• cin là istream đã được khai báo trong <iostream.h>.
• >> là toán tử nhập.
• Biến-i là biến mà đối với loại của nó >> được đònh nghóa.
Ví dụ:
cin >> A >> B >> C >> D;
Bất kỳ ký tự khoảng trắng ‘ ‘, dấu tab ‘\t’, dòng mới ‘\n’ đều có thể được dùng
để tách các giá trò nhập để nhập vào dữ liệu khi mệnh đề trên được thực hiện.
1.8.3 Xuất dữ liệu ra màn hình :
Mệnh đề xuất có thể mô tả như sau:
cout << Bt; // cho 1 biểu thức
cout << Bt1 << Bt2 << ... << Btn;//n biểu thức
Trong đó:
• cout là ostream đã được khai báo trong <iostream.h>.
• << là toán tử xuất.
• Biểu-Thức-i là biểu thức mà đối với kiểu của nó << được đònh nghóa.
Chằng hạn :
Cout<<”\nChào các bạn “;
Cout<<endl<<”giá trò x = “<< x;
Ghi chú : Luồng nhập xuất có bộ đệm . Tức là các công việc đọc (nhập), ghi (xuất)
không thực hiện trực tiếp từ thiết bò vật lý, mà là thông qua bộ đệm để đọc hay ghi dữ
liệu.
Chẳng hạn khi nhập dữ liệu từ bàn phím, có thể phân biệt 2 trường hợp :
1. Nếu trên bộ đệm có đủ dữ liệu, thì hàm cin ( và các hàm khác ) sẽ nhận
một phần dữ liệu mà chúng yêu cầu. Phần còn lại (chưa được nhận) vẫn ở trên bộ
đệm.
2. Khi trên bộ đệm không đủ dữ liệu theo yêu cầu, thì máy tạm dừng để người
dùng đưa thêm dữ liệu từ bàn phím vào bộ đệm (cho đến khi bấm phín Enter).
Để đảm bảo mọi thứ trong bộ đệm đã được hiển thò về mặt vật lý trước khi mọi
cái vào xuất hiện, ta có thể dùng các lệnh sau : Cout.flush();
1.8.4 Đònh dạng dạng kết xuất
Có thể chỉnh dạng kết xuất bằng cách chèn vào các xử lý dạng thức (format
manipulators) từ tập tin header <iomanip.h>.
Dec
Đònh dạng dữ liệu kiểu số ở dạng hệ 10.
Hex
Đònh dạng dữ liệu kiểu số ở dạng hệ 16.
Oct
Đònh dạng dữ liệu kiểu số ở dạng hệ 8 .
setw (Width)
Hiển thò giá trò kế tiếp trong một vùng với độ rộng Width được chỉ ra.
setprecision (Precision)
Hiển thò các giá trò với độ chính xác Precision được chỉ ra (mặc nhiên
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 17 -
là 6).
setiosflags (FlagList)
Đặt các cờ đònh dạng trong FlagList, trong đó FlagList là một dãy
gồm một hoặc nhiều cờ, cách nhau bởi ký hiệu | như là :
Flag1 | Flag2 | ... | Flagn.
Sau đây là một số các cờ đònh dạng sẳn :
ios::showpoint Hiển thò dấu chấm thập phân và các số 0 kéo theo.
ios::fixed Hiển thò các giá trò thực ở dạng dấu chấm cố đònh.
ios::scientific Hiển thò các giá trò thực ở dạng dấu chấm di động.
ios::left Hiển thò các giá trò canh trái trong một vùng.
Ios::right Hiển thò các giá trò canh phải trong một vùng.
Ví dụ :
Chương trình Kết quả thực hiện
#include <iostream.h>
#include <iomanip.h>
int main ()
{
double X = 2.66666666
Y = 3;
cout << “\n(“ << X << “)”<< “\n(“
<< Y << “)\n”;
(2.666667)
(3)
cout << setiosflags(ios::fixed)
<< “\n(“ << X << “)”
<< “\n(“ << Y << “)\n”;
(2.666667)
(3)
cout << setiosflags(ios::showpoint )
<< “\n(“ << X << “)”<< “\n(“ << Y << “)\n”;
(2.666667)
(3.000000)
cout << setiosflags(ios::showpoint | ios::fixed)
<< “\n(“ << X << “)”<< “\n(“ << Y << “)\n”;
(2.666667)
(3.000000)
cout << setiosflags(ios::showpoint | ios::fixed)
<< setprecision(3)
<< “\n(“ << X << “)”<< “\n(“ << Y << “)\n”;
(2.667)
(3.000)
cout << setiosflags(ios::showpoint | ios::fixed)
<< setprecision(3)
<< “\n(“ << setw(10) << X << “)”
<< “\n(“ << Y << “)\n”;
( 2.667)
(3.000)
cout << setiosflags(ios::showpoint | ios::fixed)
<< setprecision(3)
<< “\n(“ << setw(10) << X << “)”
<< “\n(“ << setw(10) << Y << “)\n”;
( 2.667)
( 3.000)
}
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 18 -
Ghi chú :
ios::right là mặc nhiên, và setw() chỉ gây ảnh hưởng cho giá trò kế nó được
hiển thò, trong khi những xử lý đònh dạng khác gây ảnh hưởng đến sự xuất hiện của tất
cả các giá trò theo sau chúng trong mệnh đề xuất.
KNLT : Một câu lệnh quá dài có thể viết trên nhiều dòng.
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 19 -
BÀI TẬP
Bài 1 :
Viết chương trình in ra màn hình các dữ liệu có đònh dạng :
// Hàng đầu là vò trí cột màn hình :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 7 8 B C
B O R L A N D C + +
T U R B O C + +
1 2 3 4 5
1 2 3 4 5
1 2 3 . 4 5 6 0 0 0
1 2 3 . 4 5 6
1 2 3 . 4 5 6
1 . 2 3 4 5 6 E + 0 5
Bài 2 :
Viết chưong trình in ra màn hình :
Day la nua tren dau tich phan ( ma ASCII he 16 la F4 ) : ⌠
Day la nua duoi dau tich phan ( ma ASCII he 16 la F5 ) : ⌡
Day la dau tich phan : ∫
Bài 3 :
Xuất ký tự ‘z’ ra màn hình bằng cách dùng :
1. Biểu diễn ký tự trong hệ 8.
2. Biểu diễn ký tự trong hệ 16.
Bài 4 :
double X = 100.56, Y = 3.;
cout << “\n(“ << X << “)”
<< “\n(“ << Y << “)\n”;
cout << setiosflags(ios::showpoint | ios::fixed)
<< “\n(“ << X << “)”<< “\n(“ << Y << “)\n”;
cout << setiosflags(ios::showpoint | ios::fixed)
<< setprecision(2)
<< “\n(“ << setw(5) << X << “)”
<< “\n(“ << Y << “)\n”;
cout << setiosflags(ios::showpoint | ios::fixed)
<< setprecision(3)
<< “\n(“ << setw(4) << X << “)”
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 20 -
<< “\n(“ << setw(8) << Y << “)\n”;
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 21 -
CHƯƠNG 2 : CÁC TOÁN TỬ TRONG C++.
2.1 Các toán tử số học.
2.2 Các toán tử quan hệ và logic .
2.3 Các toán tử thao tác bit.
2.4 Các toán tử khác.
2.5 Biểu thức.
2.6 Độ ưu tiên của các toán tử.
Trong C++ có các loại toán tử : phép gán, các toán tử số học, các toán tử quan hệ và
logic, các toán tử thao tác trên Bit . . .
2.1 Các toán tử số học :
C++ có 8 toán tử số học :
Toán tử Ý nghóa Ví dụ Ghi chú
- Lấy đối -a ; -(a+b) Toán tử 1 ngôi
-- Tự giảm dần --x Toán tử 1 ngôi
++ Tự tăng dần ++x Toán tử 1 ngôi
+ Cộng a + b Toán tử 2 ngôi
- Trừ a –b Toán tử 2 ngôi
* Nhân a * b Toán tử 2 ngôi
/ Chia a /b Toán tử 2 ngôi
% Chia lấy phần dư a%b Toán tử 2 ngôi
2.1.1 Phép chia / :
Là toán tử 2 ngôi, toán hạng là các số ( thực hay nguyên ).
a) Nếu cả 2 toán hạng đều là số nguyên thì kết quả là là số nguyên ( chặt cụt phần
phân ).
b) Nếu có ít nhất 1 toán hạng là số thực thì cho ra một số thực .
Ví dụ :
int x = 3;
float y = 3.;
cout<<x/2; // xuất ra màn hình giá trò 1 (số nguyên )
cout<<y/2; // xuất ra màn hình giá trò 1.5 ( số thực )
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 22 -
2.1.2 Phép chia nguyên lấy phần dư % :
Là toán tử 2 ngôi, toán hạng là số nguyên , kết quả cho ra số nguyên.
13 % 3 = 1
-13 % 3 = -1
Ghi chú :
Kết quả luôn cùng dấu với số bò chia.
2.1.3 Toán tử tăng ++:
Là toán tử 1 ngôi, toán hạng là nguyên hay thực .
Dạng viết 1 : ++ n ;
Tác dụng : n tăng thêm 1 trước khi sử dụng giá trò n.
Dạng viết 2 : n++ ;
Tác dụng : n tăng thêm 1 sau khi sử dụng giá trò n.
Minh họa :
n = 5; n = 5;
x = n++ ; //x = n;
//n = n+1;
x = ++n ; //n = n+1;
//x = n;
cout<<x; // x == 5 cout<<x; // x == 6
cout <<n; // n == 6 cout <<n; // n == 6
2.1.4 Toán tử giảm -- :
Là toán tử 1 ngôi, toán hạng là nguyên hay thực .
Dạng viết 1 : -- n ;
Tác dụng : n giảm bớt 1 trước khi sử dụng giá trò n.
Dạng viết 2 : n-- ;
Tác dụng : n sẽ giảm bớt 1 sau khi sử dụng giá trò n
Minh họa :
n = 5; N = 5;
x = n-- ; //x = n;
//n = n-1
x = --n ; // n = n-1;
//x = n;
cout<<x; // x == 5 cout<<x; // x == 4
cout <<n; // n == 4 cout <<n; // n == 4
Ghi chú :
Các toán tử tăng, giảm thường được sử dụng trong các câu lệnh for, while ...để
tăng hay giảm giá trò các biến điều khiển. Nhưng trong biểu thức, không nên sử dụng
tùy tiện các toán tử tăng , giăm, vì có thể dẫn đến kết quả sai.
2.1.5 Thứ tự ưu tiên các toán tử số học :
Ưu tiên của các toán tử số học được cho trong bảng sau đây theo thứ tự từ trên
xuống dưới. Các toán tử cùng độ ưu tiên sẽ được thực hiện từ trên trái sang phải.
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 23 -
Ưu tiên Toán tử
1 ++ -- -
2 * / %
3 + -
Ghi chú :
Các ký hiệu trong các toán tử ++, -- không được viết rời.
2.2 Toán tử quan hệ và logic :
Các toán tử quan hệ và logic thường được sử dụng chung với nhau, được dùng
để tạo ra các kết quả đúng, sai. Trong C++, mọi số khác 0 đều được coi là giá trò đúng
(true), giá trò duy nhất sai (false) mang hình thức số 0.
2.2.1 Các toán tử quan hệ :
Các toán tử quan hệ được dùng để so sánh 2 giá trò với nhau.
Sau đây là bảng các toán tử quan hệ và ý nghóa của chúng :
Toán tử Ý nghóa Ví dụ
> Lớn hơn a > b 3>7 có giá trò 0
>= Lớn hơn hay bằng a >= b 3 >= 7 có gía trò 0
< Nhỏ hơn a < b 3<7 có giá trò 1
<= Nhỏ hơn hay bằng a <= b 3 <= 7 có gía trò 1
== Bằng nhau a == b 3 == 7 có giá trò 0
!= Khác nhau a != b 3 != 7 có giá trò 1
Ghi chú :
Các ký hiệu trong các toán tử >=,<=, ==, != không được viết rời.
2.2.2 Các toán tử logic :
Các toán tử logic được dùng để nối kết hai giá trò, hoặc trong trường hợp phủ
đònh sẽ tạo một giá trò đảo ngược. Các giá trò có thể nguyên hay thực .
Trong C++ có 3 toán tử logic :
- Phép phủ đònh 1 ngôi : !
- Phép và (AND) : &&
- Phép hoặc (OR) : || // ký hiệu đường ống trên bàn phím
Ý nghóa của các toán tử được cho trong bảng sau :
A B !a a&&b a||b
Khác không (1) Khác không (1) 0 1 1
Khác không (1) Bằng không 0 0 1
Bằng không Khác không (1) 1 0 1
Bằng không Bằng không 1 0 0
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 24 -
2.2.3 Thứ tự ưu tiên của các toán tử quan hệ và logic :
Ưu tiên Toán tử
1 !
2 > >= < <=
3 == !=
4 && ||
Ghi chú :
Các toán tử quan hệ và logic được dùng để thiết lập điều kiện rẽ nhánh trong
câu lệnh if và điều kiện kết thúc vòng lặp trong các câu lệnh for, while và do.
2.3 Các Toán Tử Thao Tác Bit.
Khác với các ngôn ngữ lập trình cấp cao khác, C++ cung cấp nhiều toán tử có
thể tác động tới những bit thực sự ở bên trong 1 biến.
Các toán tử thao tác bit chỉ dùng cho số nguyên hoặc ký tự.
Các toán tử thao tác bit bao gồm :
Toán tử Ý nghóa Ví dụ
& Phép và (AND) theo bit a&b
| Phép hoặc (OR) theo bit a|b
^ Phép hoặc loại trừ (XOR) theo bit a^b
<< Dòch trái (Shift left) a << 4
>> Dòch phải (Shift right) a>>4
~ Lấy phần bù theo bit (Not ) ~a
Ghi chú :
Cách viết các toán tử : &&, &, ||, | nếu lẫn lộn sẽ bò lỗi cú pháp, hoặc trong
một số trường hợp chương trình chạy được nhưng cho kết quả sai.
2.3.1 Bảng giá trò của các toán tử ~, &, |, ^ :
a B ~a a&b a|b a^b
1 1 0 1 1 0
1 0 0 0 1 1
0 1 1 0 1 1
0 0 1 0 0 0
2.3.2 Các toán tử dòch chuyển :
Các toán tử dòch chuyển trái << , hoặc phải >> đều có thể dòch chuyển tất cả
các bit nằm trong 1 byte hay 1 từ - theo một số lượng ấn đònh ở bên phải .
Chẳng hạn :
Trần Tuấn Minh Khoa Toán – Tin học
Kỹ thuật lập trình - 25 -
n<<2 Dòch chuyển các bit của biến n sang trái 2 bit
n>>2 Dòch chuyển các bit của biến n sang phải 2 bit
1. Toán tử dòch chuyển trái :
Khi thực hiện toán tử dòch chuyển trái các bit ở bên phải của biến sẽ được điền
vào các giá trò 0.
Ví dụ :
int n = 201;
n << 2;
Hệ 2 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1
Dòch trái 2 bit
Hệ 2 0 0 0 0 0 0 1 1 0 0 1 0 0 1
0 0
Đổi n sang hệ 10 : 804.
2. Toán tử dòch chuyển phải :
Tùy theo kiểu dữ liệu của toán hạng bên trái, C++ sẽ thực hiện một trong 2
cách sau :
a. Nếu là kiểu unsigned (int, long, char) :
Phép dòch chuyển phải sẽ điền giá trò 0 vào các bit bên trái.
Ví dụ :
unsigned int n = 39470; //hệ 10;
n >> 2;
Đổi n sang hệ 2 : 1001 1010 0010 1110
Hệ 2 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0
Dòch phải 2 bit
Hệ 2
0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1
Kết quả : 0010 0110 1000 1011
Đổi n sang hệ 10 : 9867.
b. Nếu là kiểu signed (int, long, char) :
Phép dòch chuyển phải sẽ điền bit dấu (số 1) vào các bit bên trái.
Ví dụ :
int n = 26066; //hệ 10;
Đổi n sang hệ 2 : 0110 0101 1101 0010
n >> 2;
Dòch chuyển phải n >> 2 sẽ là :
Bít dấu
Hệ 2 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0
Dòch phải 2 bit
Hệ 2
1 1 1 1 1 0 0 1 0 1 1 1 0 1 0 0
Trần Tuấn Minh Khoa Toán – Tin học