Tải bản đầy đủ (.pdf) (82 trang)

Chapter2 Kiểu dữ liệu c++

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (613.1 KB, 82 trang )

Nộidung chương 2
2.1 Tổ chứcchương trình C/C++
2
2
Biế
à
á
kiể
dữ
liệ
bả
2
.
2
Biế
nv
à
c
á
c
kiể
u
dữ
liệ
ucơ
bả
n
2.3 Các kiểudữ liệudẫnxuấttrựctiếp
2
4
Định


nghĩa
kiểu
dữ
liệu
mới
2
.
4
Định
nghĩa
kiểu
dữ
liệu
mới
2.5 Các lệnh ₫iều khiển chương trình
2
.
6
Hàm và thư viện
2
.
6
Hàm



thư

viện
Chương 2: Tổng quan về C và C++

2
2.1 Tổ chức chương trình C/C++
T
d
á

gi ltdi t
200
8
T
ạo
d

á
n

n
g
v
i
sua
l
s
t
u
di
o .ne
t

200

8
Chương 2: Tổng quan về C và C++
3
Chương trình tính giai thừa: Phiên bảnC
#include <stdio.h>
#include <conio.h>
int
gthua
(
int
);
Lệnh tiềnxử lý: Khai báo sử dụng hàm thư viện
Khai báo hàm
int
gthua
(
int
);
void main() {
char c = 'N';
int N = 1;
it
k
Lời chú thích
Chương trình chính
Khai báo biến
i
n
t
k

q;
do {
printf(“\n Nhap mot nguyen duong"); /* Viet ra man hinh*/
scanf("%d",&N); /* Nhap tu ban phim cho N*/
k
q
=
g
thua
(
N
);
q
g
();
printf(“\n Giai thua cua %d la %d", N, kq);
printf(“\n Ban co muon tiep tuc khong? Y/N");
c = getch();
} while (c=='y' || c=='Y');
}
}
int gthua(int n) {
int kq = 1;
while (n > 1)
k
q
*= n
;
Định nghĩa hàm (thân hàm)
Chương 2: Tổng quan về C và C++

4
q
;
return kq;
}
Chương trình tính giai thừa: Phiên bản C++
#include <iostream.h>
#include <conio.h>
int
g
thua
(
int
);
g
(
);
void main() {
char c = 'N';
int N = 1;
do
{
do
{
cout << “\nNhap mot so nguyen duong: “
cin >> N;
int kq = gthua(N);
cout << “\nGiai thua cua ” << N << “ la “ << kq
cout << “\nBan co muon tiep tuc khong? Y/N";
c = getch();

} while (c == 'y' || c == 'Y');
}
int gthua(int n) {
int kq = 1;
while (n > 1)
kq *= n ;
Chương 2: Tổng quan về C và C++
5
return kq;
}
Qui tắc soạn thảo mã nguồn
1. Tên biến, tên hàm, tên kiểumới:
 Tránh sử dụng các từ khóa và tên kiểucơ sở
C
hỉ


á

t
‘A’ ’Z’ ‘
’’
’‘
0
’’
9

‘’

C

hỉ


ư

c

ng c
á
c


t
ự sau:
‘A’

’Z’
,

a



z

,

0




9

,

_

 Chỉ₫ượcbắt ₫ầubằng chữ cái hoặc dấu _
 Phân biệtgiữachữ hoa và chữ thường.
 Nên ₫ặt tên ngắn gọn và có ý nghĩa (có tính mô tả)
2. Sau mỗicâulệnh có chấmphảy (;)
3
Đ
{}

i


lệ h
khô
ó
dấ
3
.
Đ
oạn
{

}



ượcco
i

n

m
lệ
n
h
,
khô
ng c
ó
dấ
u
chấmphảysau₫ó, trừ khi khai báo kiểu
4
Cấu
trúc

nguồn
theo
kiểu
phân
cấp
=>
dễ
₫ọc
4

.
Cấu
trúc

nguồn
theo
kiểu
phân
cấp
=>

dễ
₫ọc
5. Bổ sung chú thích hợplý(/*
chú thích một ₫oạn
*/ hoặc
//
chú thích một dòng
)
Chương 2: Tổng quan về C và C++
6
6. Chia một file lớn thành nhiều file nhỏ
Các từ khóa trong C
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for si
g

ned void
g
default goto sizeof volatile
do if static while
Chương 2: Tổng quan về C và C++
7
Từ khóa trong C++
asm auto bool break
case catch char class
const
const cast
continue
default
const
const
_
cast

continue
default
delete else extern do
enum false double explicit
float
dynamic cast
export
for
float

dynamic
_

cast

export

for
friend goto if inline
int long mutable namespace
new
operator
private
protected
new
operator

private

protected

public register reinterpret_cast return
short signed sizeof static
static cast
struct
switch
template
static
_
cast

struct


switch
template

this throw true try
typedef typeid typename union
unsigned
using
virtual
void
Chương 2: Tổng quan về C và C++
8
unsigned
using

virtual

void

volatile wchar_t while
Biên dịch (compile)
 Trong Visual studio .Net 2008: Gọi Compile (Ctrl + F7) ₫ể biên
dịch riêng rẽ hoặc Build (F6) ₫ể kết hợp biên dịch và liên kết
cho toàn bộ dự án
cho

toàn

bộ

dự


án
 Các kiểu lỗi biên dịch (compile error):
—Lỗi cú pháp: Sử dụng tên sai qui ₫ịnh hoặc chưa khai báo, thiếu
dấuchấmphảy; dấu ₫óng }
dấu

chấm

phảy

;
,
dấu

₫óng

}
—Lỗi kiểu: Các số hạng trong biểu thức không tương thích kiểu, gọi
hàm với tham số sai kiểu



 Các kiểu cảnh báo biên dịch (warning):
—Tự ₫ộng chuyển ₫ổi kiểu làm mất chính xác
Hàm khai báo có kiểutrả về nhưng không trả về

Hàm

khai


báo



kiểu

trả

về

nhưng

không

trả

về
—Sử dụng dấu = trong trường hợp nghi vấn là so sánh ==
—…
Chương 2: Tổng quan về C và C++
9
Liên kết (link)
 Liên kết là quá trình ghép nhiều file ₫ích (*.obj, *.lib)
₫ể
tạo
r
a
c
h

ươ
n
g
t
rình
c
h
ạy
cuố
i

n
g
*
.e
x
e
₫ể
tạo
a
c ươ g
t
c ạy
cuố
cù g
.e e
 Trong Visual studio .Net 2008: Gọi Build (F6)
 Lỗi liên kếtcóthể là do:

S


dụng hàm nhưng không có ₫ịnh nghĩahàm
—Biếnhoặchàm₫ược ₫ịnh nghĩa nhiềulần
—…
Chương 2: Tổng quan về C và C++
10
Chạy thử và gỡ rối (debug)
 Chạy thử trong Visual studio .Net 2008: Start
without debugging hoặc Ctrl+F5
 Tìm lỗi:
—Lỗi khi chạy là lỗi thuộc về phương pháp, tư duy, thuật toán,
không phảivề cú pháp
không

phải

về



pháp
—Lỗi khi chạy bình thường không ₫ược báo
—Lỗi khi chạy rất khó phát hiện, vì thế trong ₫a số trường hợp
cầntiếnhành
debug
cần

tiến

hành


debug
.
 Chạy Debug trong Visual studio .Net 2008:
—Chạy tới chỗ ₫ặt cursor: F9
—Chạy từng dòng lệnh: F10
—Chạy vào trong hàm: F11

Chạytiếpbìnhthường:
F
5
Chương 2: Tổng quan về C và C++
11
Chạy

tiếp

bình

thường:
F
5
—Xem kết quả dưới cửa sổ Output hoặc gọi QuickWatch
Tổ chức bộ nhớ
Hệ điều hành
Mã chương trình
Các CT khác
Đỉnh ngăn xếp
Dữ liệu toàn cục
Vùng nhớ tự do

Array_A
n
SP
Ngăn xếp
(th biế biế
Vùng

nhớ

tự

do
i
k
f
(th
am
biế
n,
biế
n
cục bộ)
Vùng nhớ tự do
a
count
i
Chương 2: Tổng quan về C và C++
12
2.2 Biến và dữ liệu
 Biểu thức = dữ liệu + phép toán

 Biểu diễn dữ liệu: Thông qua biến hoặc hằng số, kèm
theo kiểu
 Nội dung trong phần này:
Cá kiể dữ liệ bả


c
kiể
u
dữ

liệ
u cơ
bả
n
— Các phép toán áp dụng
—Tương thích và chuyển ₫ổi kiểu

Khai báo biến, phân loại biến
Chương 2: Tổng quan về C và C++
13
2.2.1 Các kiểu dữ liệu cơ bản của C/C++
Kiểu Kích cỡ thông dụng Phạm vi tối thiểu
(tính bằng bit)
cha
r
8 −127 to 127
signed char 8 −127 127
unsigned char 8 0 255
int 16/32 −32767 32767

signed int
16/32
nt
signed

int
16/32
-
nt
-
unsigned int 16/32 0 65535
short 16 −32767 32767
signed short 16 nt
unsigned short 16 0 65535
long 32 −2147483647 2147483647
signed long 32 nt
unsigned long
32
0 4294967295
unsigned

long

32

0



4294967295


float 32 Độ chính xác 6 chữ số
double 64 Độ chính xác 10 chữ số
long double 80 Độ chính xác 10 chữ số
bl
(C )
Chương 2: Tổng quan về C và C++
14
b
oo
l
(C
++
)

wchar_t (C++) 16 −32767 32767
Các phép toán cơ bản
Phép toán Ký hiệuKiểu nguyên Kiểu số thựcKiểu bool
Gán
=
XXX
Số h

* /
X
X
Số

h
ọc

+,

-,
*
,
/
,

+=, -=, *=, /=
X
X
x
%, %=
Xx
++,
Xx
So sánh
>, <, >=, <=,
==, !=
XXX
Logic
&&, ||, !
XXX
Logic bit
&, |, ^, ~
&
=
, |
=
,

^=
Xx
&, |,
Dịch bit
<<,>>, <<=,>>=
Xx
Lựa chọn
? :
XXX
Lũ thừ ?
Khô ó!
Chương 2: Tổng quan về C và C++
15

y
thừ
a
?
Khô
ng c
ó!
Tương thích và chuyển ₫ổi kiểu
 Những kiểu dữ liệu tương thích nhau có thể tự ₫ộng
chuyển ₫ổi kiểu:

Giữacáckiểusố nguyên với nhau (lưuý phạm vi giá trị)
—Giữacáckiểusố thựcvới nhau (lưuý ₫ộ chính xác)

G
i

ữa
các
ki
ểu
số
n
guyê
n

số
t
h
ực
(
l
ưu
ý

p
h

m
v
i
g
i
á
t
r



G ữa
các
ểu
số
guyê

số
t ực
(
ưu
ý
p ạ
v

t ị

₫ộ chính xác)
—Kiểu bool sang số nguyên, số thực: true => 1, false => 0

Số
nguyên
số
thực
sang
kiểu
bool
:

0

=> true
0
=> false
Số
nguyên
,
số
thực
sang

kiểu
bool
:


0

=>

true
,
0

=>

false
 Nếucólỗihoặccảnh báo => khắcphụcbằng cách ép
chuyển ₫ổikiểu

VD:

i = int(5.1) % 2; //C
j
=
(
int
)
5.1 + 2
;
// C++
Chương 2: Tổng quan về C và C++
16
j(
)
;
2.2.2 Khai báo biến
char c = 'N';
bool b = true;
int kq;
Khai báo và khởi tạo giá trị
Chỉ khai báo giá trị bất ₫ịnh
double d;
long count, i=0;
unsigned vhexa=0x00fa;
unsigned
voctal
0
82;
Chỉ

khai


báo
,
giá

trị

bất

₫ịnh
Khai báo kết hợp, chỉ i=0
Đặt giá trị ₫ầu hexa
Đặtiátị ₫ầ tl
66
hứ khô hải
82
 C: Toàn bộ biến phải khai báo ngay ₫ầu thân hàm

C++: Có thể khai báo
tại
chỗ nào cần
unsigned
voctal
=
0
82;

Đặt
g



t
r


₫ầ
u oc
t
a
l
->
66
c
hứ

khô
ng p
hải

82

C++:



thể

khai

báo


tại

chỗ

nào

cần
 Phân loại biến:
—Biến toàn cục: Khai báo ngoài hàm, lưu giữ trong vùng nhớ dữ liệu
chương trình
chương

trình
—Biến cục bộ: Khai báo trong thân hàm, lưu giữ trong ngăn xếp
(vùng nhớ tự do)
—Tham biến: Khai báo trên danh sách tham số của hàm
,
lưu
g
iữ
Chương 2: Tổng quan về C và C++
17
, g
trong ngăn xếp
Ví dụ khai báo các loại biến
int N = 1;
void main() {
char
c

='
N
'
;
Biến toàn cục
char
c

N;
do {
cout<<“\nNhap so> 0:";
cin>>N;
int
kq
=
gthua
(N
);
Biếncụcbộ
int
kq

gthua
(N
);


} while (c == 'y' || c == 'Y')
}
Hai biến cục bộ

Biến

cục

bộ
int gthua(int n) {
int kq = 1;
while (n > 1)
kq
*=
n

;
cùng tên ở hai phạm
vi khác nhau,
không liên quan gì
₫ến nhau!
kq

n
;
return kq;
}
Tham biến
₫ến

nhau!
Chương 2: Tổng quan về C và C++
18
Tham


biến
2.3 Các kiểu dữ liệu dẫn xuất trực tiếp
 Kiểu liệt kê
 Kiểu hằng
 Kiểu con trỏ
 Kiểu mảng
 Kiểu tham chiếu (C++)
Chương 2: Tổng quan về C và C++
19
2.3.1 Kiểu liệt kê (enum)

 Tương tự như một ki

u số nguyên.
 Được dùng khi:
—Cần hạn chế phạm vi sử dụng
—Hoặc khi muốn sử dụng tên cụ thể thay cho hằng số nguyên
 Ví dụ
void main()
{
enum Color {Red Green Blue};
enum

Color

{Red
,
Green
,

Blue};
enum WeekDay {Mon = 2,Tue, Wed, Thu, Fri, Sat, Sun = 1 };
//Tue=3, Wed=4…
int n=Red;
cout<<n; //
in ra số
0
cout<<n;

//
in

ra

số

0
Color c=Green;
n=c; //n=1;
}
 Lưu ý: không thể gán trực tiếp một giá trị nguyên cho một biến
enum mà phải ép kiểu
VD:
c=
2
;//
Error
Chương 2: Tổng quan về C và C++
20
VD:


c=
2
;//
Error
c=Color(2);//OK
2.3.2 Kiểu hằng (const)
 Khi muốn một biến không bị thay ₫ổi trong suốt
chương trình => khai báo hằng số
void main() {
const double pi = 3.1412;
const int x= 1;
pi = 3.14; // error
x
=

2
;
//
error
x

2
;
//
error
}
Chương 2: Tổng quan về C và C++
21
2.3.3 Kiểu con trỏ

 Trong chương trình, mỗibiếnchiếmmộtsố byte
nhất ₫ịnh và lưu ở mộtvị trí cụ thể trong bộ nhớ
máy
tính
máy
tính
 Con trỏ là mộtbiếnmang₫ịachỉ củamộtô nhớ
(
của m

tbiếnkhácho

cm

thàm
)
(



)
 Cách khai báo: Data_type* pointer_var_name;
int x = 2;
int
*
p =
&
x
;
// p

chua dia chi cua x
int
p =
&
x
;
// p
chua dia chi cua x
*p = 3; // x=3
int y;
p
= &
y
;
//

p
chua dia chi cua
y
p
y
;
//
py
*p = 5; // y = 5, x = 3
Chương 2: Tổng quan về C và C++
22
Kết luậnvề con trỏ
 Con trỏ là mộtbiếnchứa ₫ịachỉ byte ₫ầu củamộtbiếndữ liệu,
₫ượcsử dụng ₫ể truy cập gián tiếpdữ liệu ₫ó


N
ế
u
khai báo
con
trỏ

không
khởi
tạo
mặc
₫ịnh
con
trỏ
mang

N
ế
u

khai

báo

con

trỏ

không

khởi
tạo
,
mặc
₫ịnh
con

trỏ
mang
một ₫ịachỉ bất ₫ịnh
 Để khởi tạo giá trị cho con trỏ, ta có thể cho nó trỏ vào một ₫ịa
chỉ nhớ cụ thể hoặc ₫ịachỉ củamộtbiến khác thông qua toán tử
chỉ

nhớ

cụ

thể

hoặc

₫ịa

chỉ

của

một


biến

khác

thông

qua

toán

tử

lấy ₫ịa chỉ &
 Con trỏ có thể mỗi lúc ₫ại diện cho một biến dữ liệu khác, do ₫ó


a
chỉ mà
con
trỏ
mang

th

thay ₫

i ₫
ượ
c



a

chỉ



con

trỏ

mang



th


thay



i


ượ
c
.
 Dùng toán tử * ₫ể truy nhập nội dung của biến mà con trỏ trỏ
tới, có thể ₫ọc hoặc thay ₫ổi nội dung của biến ₫ó.

Kh
b
d
h
d
ế


Kh
ông
b
ao gi

s

d
ụng toán t

truy n
h
ậpnội
d
ung, n
ế
ucon tr

chưamangmột ₫ịachỉ ô nhớ mà chương trình có quyềnkiểm
soát
Chương 2: Tổng quan về C và C++
23

2.3.4 Kiểu mảng
012 N-1
Chỉ số



achỉ₫ầu
₫ịa chỉ cuối
 Số phầntử củamảng: N

Số
lượng
các
phần
tử củamảng (tĩnh) là
cố
₫ịnh

Số

lượng
các
phần
tử

của

mảng

(tĩnh)




cố
₫ịnh
 Các phầntử có cùng kiểu
 Các phầntử₫ượcsắpxếpkế tiếptrongbộ nhớ
C
hể
h
hầ
h
d
h
hỉ


C
ót
hể
truy n
h
ậptừng p
hầ
nt

mộtcác
h
t


d
o t
h
eo c
hỉ
s

hoặctheo₫ịachỉ
Chương 2: Tổng quan về C và C++
24
Khai báo mảng
 Số phầntử củamảng phảilàhằng số nguyên.
 Khai báo không khởitạo:
int a[5];
enum {index = 5};
double b[index];
const int N = 2;
char c[N];
 Khai báo vớisố
p
hầnt

và khởit

o
g
iá tr

các
p

hầnt

p

g

p
int d[3]= {1, 2, 3};
double e[5]= {1, 2, 3};
char f
[
4
]
=
{
0
};
[
]{
};
Chương 2: Tổng quan về C và C++
25
Khai báo mảng (tiếp)
 Khai báo và khởitạo giá trị các phầntử, số phầntử₫ượctự
₫ộng xác ₫ịnh
it
[] {1 2 3 4 5}
i
n
t

a
[]
=
{1
,
2
,
3
,
4
,
5}
;

double b[]= {1, 2, 3};
double c[]= {0};
h [] {‘ ’}
c
h
ar

s
[]
=
{‘
a
’}
;
 Khai báo mảng nhiềuchiều
double M[2][3];

int X[3][]={{1,2},{3,4},{5,6}};
short T[3][2]={1,2,3,4,5,6};
Chương 2: Tổng quan về C và C++
26

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×