14/04/2010
GV:VÕ HNG BO CHÂU 1
CHƯƠNG 2
NGÔN NGC++
1
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
MC TIÊU
ySdng được mt trình biên dch C/C++ nào đó đ
viết chương trình.
yViết được chương trình cơbn dùng các cu trúc điu
2
khi
n trên các ki
u dliu c
ơ
b
n
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
NI DUNG CHI TIT
yKhái quát vngôn ngC++
yKiu dliu cơbn, phép toán
yNhp xut dliu
yCác cu trúc điu khin
3
yHàm
yMng và mu tin
yCon trvà tham chiếu
yNhâp xut và tp tin
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
KHÁI QUÁT VC++
y1970, Denis Ritchie (Bell Lab.) phát trin ngôn ng
C.
{Dng System Implementation Language (SIL)
{Phát trin tngôn ngCPL (Combined Programming
Language) BCPL (Basic CPL) và ngôn ng
B
4
Language)
,
BCPL (Basic CPL) và ngôn ng
B
.
{Brian Kernighan, D. Ritchie (1978), The C Programming
Language, Prentice-Hall
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
14/04/2010
GV:VÕ HNG BO CHÂU 2
KHÁI QUÁT VC++
yĐu 1980, Bjarne Stroustrup phát trin ngôn ng
C++
{Trên sơsngôn ngSimula 67
{Tương thích hoàn toàn vi C
{
M
r
ng C v
i c
u trúc OOP
5
{
M
r
ng C v
i c
u trúc OOP
{Tên gi “C with Classes”
{Năm 1983, Ricj Mascitti đnghC++
{Bjarne Stroustrup (1985), The C++ Programming Language,
Prentice-Hall
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
CU TRÚC CHƯƠNG TRÌNH C++
#include <iostream.h>
void main (void)
{
cout << "Hello World\n";
}
Hello.cpp
6
C++
Program
C
Code
Object
Code
Execut-
able
C++
COMPILER
NATIVE
C++
TRANSLATOR
LINKER
C
COMPILER
C++
Program
Hello.cpp
Hello.obj
Hello.exe
}
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
MRNG CA C++
yBiến, đi tượng:
{Có thkhai báo bt k vtrí nào (trước khi sdng)
{Khai báo biến còn mang ý nghĩa thc thi câu lnh, to đi tượng
ySdng ghi chú
h
/*
N
i
d
hi
hú*/
7
{
c
h
1:
/*
N
i
d
un
g
ghi
c
hú*/
{Cách 2: //Dòng ghi chú
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
yKhai báo hng s
{Cách 1: #define Tên_hng Giá_tr
{Cách 2: const Kiu_dl Tên_hng = Giá_tr
Trong cách 1:
{
Không
xác
đ
nh
đ
ượ
c
ki
u
d
li
u
c
a
h
ng
s
8
{
Không
c
đ
nh
đ
ư
c
ki
u
d
li
u
c
a
h
ng
s
{Giá trhng không th cutrúc
{Không thxác đnh đachcahng
Trong cách 2:
{Kiudliucahng sđượcxácđnh
{Giá trhng th cutrúc
{ thxác đnh đachcahng
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
14/04/2010
GV:VÕ HNG BO CHÂU 3
LNH ĐƠN & LNH PHC
yLnh đơnlà mt
stính toán được
kết thúc bng du
chm phy.{
int min, i = 10, j = 20;
min = (i < j ? i : j)
;
Ví d:
9
yNhiu lnh đơn có
thkết ni li
thành mt lnh
phcbng cách
rào chúng bên
trong các du
ngoc xon.
min = (i < j ? i : j)
;
min + 5;
cout << min << '\n';
;
}
Lnh rng Lnh vô dng
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
NHP XUT DLIU
yC++ cung cp các lnh nhp xut dliu trong thưvin
<iostream.h>, trong đó có các đi tượng
yĐly dliu tbàn phím vào biến ta dùng lnh sau:
cin>>Biến 1>>Biến 2>>....;
á
đ
i
i
l
d
li
đ
10
yTo
á
nt>> ca
đ
i
tư
ng c
i
n
l
y
d
li
ut
np
m
đ
t
vào biếnbênphinótheotht
yVilnh này, khi nhpgiátrcho các biếnthìgiacác
giá trphi phân cách nhau bng Enter hocSpacehoc
Tab
d: cin >> intVar >> floatVar;
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
NHP XUT DLIU
yĐnhp dliu cho mt chui n ký t
Hàm cin.getline(Tên_biến,S_ký_t_ti_đa) trong đó:
{Tên_biến: tên ca biến chui
{S ký t ti đa mà biến chui có th nhn
d: char hoten[30]; cin getline(hoten 30);
11
d:
char
hoten[30];
cin
.
getline(hoten
,
30);
yHàm cin>> để li ký t “\n” trong b đệm có th làm trôi
phương thc cin.getline()
Îkhc phc: dùng cin.ignore(1) để b qua ký t “\n”
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
yĐđưadliu ra màn hình ta dùng lnh sau:
cout<<Biuthc1<<Biuthc 2<...;
Toán t<< sđưagiátrcác biuthcbênphinó
timànhình.
12
yMunđtcontrmàn hình xung đudòngtiếp
theo ta phiđưarakýtxung dòng ’\n’ hocdùng
endl
cout<<Biuthc<<’\n’;
Ví d:cout<<a<<c+b<<’\n’; cout<<100<<endl;
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
14/04/2010
GV:VÕ HNG BO CHÂU 4
VÍ D NHP XUT
13
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
yCác hàm x nhpxut: thưvin“iomanip.h
yĐthiếtlpđrng cho giá trcnin
{Hàm cout.width(S_ct)
{Hàm setw(S_ct)
d
:
cout<<setw(
5
)<<X
;
14
d
:
cout<<setw(
5
)<<X
;
yĐhinthsthc
{Hàm setf(chiu)
{Hàm precision(n) thiếtlp
nsphnlthpphân
d: cout.setf(ios::showpoint)
cout.precision(2)
showpoint du ca các biến kiu s
hex In ra s dưi dng hexa
dec In ra s dưi dng cơ s 10
oct In ra s dưi dng cơ s 8
left Căn l bên trái
right Căn l bên phi
internal Căn l gia
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
#include <iostream.h>
main(){
int age;
cout << "When were you born? ";
15
cin >> age;
cout << "After 10 years, you will be "
<< 2008 age + 10 << "years old\n"
return 1;
}
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
yPhép toán gán
int y, x;
16
y = (x = 100);
Hay
y = x = 100;
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
14/04/2010
GV:VÕ HNG BO CHÂU 5
17
int n, m = 10;
n = m++;
cout << n++ << endl;
int n, m = 10;
n = m;
m = m + 1;
cout << n << endl;
¾Phép toán tăng, gim
int n,m = 10;
n = ++m;
cout << ++n << endl;
cout << n << endl;
n = n + 1;
int n,m = 10;
m = m + 1;
n = m;
n = n + 1;
cout << n << endl;
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
18
yPhép toán điu kin
if ( a > 100.0 )
m = 5;
else m = a > 100.0 ? 5 : a + 10;
m = a + 10;
if ( a > b )
max = a; max = a > b ? a : b;
else
max = b;
OOP-CHƯƠNG 2-NGÔN NG C++ GV: Võ Hng Bo Châu
Độưu tiên phép toán
Phép
toán
Mô tảƯu tiên Th t trong
biu thc
Toán
hng
Ví d
:: Truy cpbiếntoàncc17Phi sang 1 ::x
:: Phân định thành phncalp17Trái sang2
NAME::x
.Tru
y
c
p
thành
p
h
n ca đ
i 16 - nt - - nt -
o
bj
.
n
19
ypp
tượng hay mu tin
-> Truy cp đến thành phn ca con
tr đối tượng (hoc mu tin)
16 - nt - - nt - obj->n
[] Truy cpchs16 - nt - - nt - a[i]
() Gihàm 16 -nt -
() Chuynđổikiu16-nt -
int(ch)
++ Tăng sau 16 Phi sang 1 n++
-- Gimsau 16 -nt - -nt - n--
OOP-CHƯƠNG 2-NGÔN NG C++
GV: Võ
Hng Bo
Châu
Phép
toán
Mô tảƯu
tiên
Th t trong
biu thc
Toá n
hng
Ví d
sizeof Kích thước ca đối tượng
hoc ca kiu d liu
15 - nt - - nt - sizeof(a)
++ Tăng trước15-nt --nt -
++n
-
-
Gim
trưc
15
-
nt
-
-
nt
-
-
-
n
20
Gim
trước
15
-
nt
-
-
nt
-
n
~Bitwise NOT 15 - nt - - nt - ~s
!Phủđnh 15 - nt - 1 !q
+Chuyn thành dương 15 - nt - - nt - +n
-Chuyn thành âm 15 - nt - - nt - -n
*Ly giá trtiđịach15 Phi sang - nt - *ptr
&Truy cpđịach15 - nt - - nt - &x
OOP-CHƯƠNG 2-NGÔN NG C++
GV: Võ
Hng Bo
Châu