Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

Trng i hc Khoa hc T nhin

Khoa Cng ngh thng tin


B mn Cng ngh phn mm

NHP MN LP TRNH
ThS. ng Bnh Phng
dbphuong@fit.hcmus.edu.vn

CC KIU D LIU C S

1
&
VC
BB
Ni dung

1 Cc kiu d liu c s

2 Bin, Hng, Cu lnh & Biu thc

3 Cc lnh nhp xut

4 Mt s v d minh ha

Cc kiu d liu c s
2
&
VC
BB
Cc kiu d liu c s

Turbo C c 4 kiu c s nh sau:


Kiu s nguyn: gi tr ca n l cc s
nguyn nh 2912, -1706,
Kiu s thc: gi tr ca n l cc s thc nh
3.1415, 29.12, -17.06,
Kiu lun l: gi tr ng hoc sai.
Kiu k t: 256 k t trong bng m ASCII.

Cc kiu d liu c s
3
&
VC
BB
Kiu s nguyn

Cc kiu s nguyn (c du)


n bit c du: 2n 1 +2n 1 1

Kiu ln Min gi tr
(Type) (Byte) (Range)
char 1 128 +127
int 2 32.768 +32.767
short 2 32.768 +32.767
long 4 2.147.483.648 +2.147.483.647

Cc kiu d liu c s
4
&
VC
BB
Kiu s nguyn

Cc kiu s nguyn (khng du)


n bit khng du: 0 2n 1

Kiu ln Min gi tr
(Type) (Byte) (Range)
unsigned char 1 0 255
unsigned int 2 0 65.535
unsigned short 2 0 65.535
unsigned long 4 0 4.294.967.295

Cc kiu d liu c s
5
&
VC
BB
Kiu s thc

Cc kiu s thc (floating-point)


V d
17.06 = 1.706*10 = 1.706*101
Kiu ln Min gi tr
(Type) (Byte) (Range)
float (*) 4 3.4*1038 3.4*1038
double (**) 8 1.7*10308 1.7*10308

(*) chnh xc n (single-precision) chnh xc


n 7 s l.
(**) chnh xc kp (double-precision) chnh xc
n 19 s l.
Cc kiu d liu c s
6
&
VC
BB
Kiu lun l

c im
C ngm nh mt cch khng tng minh:
false (sai): gi tr 0.
true (ng): gi tr khc 0, thng l 1.
C++: bool
V d
0 (false), 1 (true), 2 (true), 2.5 (true)
1 > 2 (0, false), 1 < 2 (1, true)

Cc kiu d liu c s
7
&
VC
BB
Kiu k t

c im
Tn kiu: char
Min gi tr: 256 k t trong bng m ASCII.
Chnh l kiu s nguyn do:
Lu tt c d liu dng s.
Khng lu trc tip k t m ch lu m ASCII ca
k t .
V d
Lu s 65 tng ng vi k t A
Lu s 97 tng ng vi k t a.
Cc kiu d liu c s
8
&
VC
BB
Bin

V d
int i;
Bin int j, k;
unsigned char dem;
float ketqua, delta;

C php
<kiu> <tn bin>;
<kiu> <tn bin 1>, <tn bin 2>;

Cc kiu d liu c s
9
&
VC
BB
Hng s

C php
<kiu> <tnhng> = <gi tr>;
Hng
thng

V d
int a = 1506; // 150610
int b = 01506; // 15068
int c = 0x1506; // 150616 (0x hay 0X)
float d = 15.06e-3; // 15.06*10-3 (e hay E)
Cc kiu d liu c s
10
&
VC
BB
Hng s

C php
#define <tnhng> <gi tr>
Hng hoc s dng t kha const.
k hiu

V d
#define MAX 100 // Khng c ;
#define PI 3.14 // Khng c ;
const int MAX = 100;
const float PI = 3.14;
Cc kiu d liu c s
11
&
VC
BB
Biu thc

Khi nim
To thnh t cc ton t (Operator) v cc
ton hng (Operand).
Ton t tc ng ln cc gi tr ca ton hng
v cho gi tr c kiu nht nh.
Ton t: +, , *, /, %.
Ton hng: hng, bin, li gi hm...
V d
2 + 3, a / 5, (a + b) * 5,

Cc kiu d liu c s
12
&
VC
BB
Ton t gn

Khi nim
Thng c s dng trong lp trnh.
Gn gi tr cho bin.
C php
<bin> = <gi tr>;
<bin> = <bin>;
<bin> = <biu thc>;
C th thc hin lin tip php gn.

Cc kiu d liu c s
13
&
VC
BB
Ton t gn

V d
void main()
{
int nA, nB, nC, nD, nE, nThuong;
nA = 10;
nB = nA;
nThuong = nA / nB;
nA = nB = nC = nD = nE = 156;
nE = 156;
nD = nE;
nC = nD;
nB = nC;
nA = nB;
}

Cc kiu d liu c s
14
&
VC
BB
Cc ton t ton hc

Ton t 1 ngi
Ch c mt ton hng trong biu thc.
++ (tng 1 n v), -- (gim 1 n v)
t trc ton hng
V d ++x hay --x: thc hin tng/gim trc.
t sau ton hng
V d x++ hay x--: thc hin tng/gim sau.
V d
x = 10; y = x++; // y = 10 v x = 11
x = 10; y = ++x; // x = 11 v y = 11
Cc kiu d liu c s
15
&
VC
BB
Cc ton t ton hc

Ton t 2 ngi
C hai ton hng trong biu thc.
+, , *, /, % (chia ly phn d)
x = x + y x += y;
V d
a = 1 + 2; b = 1 2; c = 1 * 2; d = 1 / 2;
e = 1*1.0 / 2; f = float(1) / 2; g = float(1 / 2);
h = 1 % 2;
x = x * (2 + 3*5); x *= 2 + 3*5;
Cc kiu d liu c s
16
&
VC
BB
Cc ton t trn bit

Cc ton t trn bit


Tc ng ln cc bit ca ton hng (nguyn).
& (and), | (or), ^ (xor), ~ (not hay ly s b 1)
>> (shift right), << (shift left)
Ton t gp: &=, |=, ^=, ~=, >>=, <<=
& 0 1 | 0 1
0 0 0 0 0 1
1 0 1 1 1 1

^ 0 1 ~ 0 1
0 0 1 1 0
1 1 0 17
Cc kiu d liu c s
&
VC
BB
Cc ton t trn bit

V d
void main()
{
int nA = 5; // 0000 0000 0000 0101
int nB = 6; // 0000 0000 0000 0110

int nZ1, nZ2, nZ3, nZ4, nZ5, nZ6;


nZ1 = nA & nB; // 0000 0000 0000 0100
nZ2 = nA | nB; // 0000 0000 0000 0111
nZ3 = nA ^ nB; // 0000 0000 0000 0011
nZ4 = ~nA; // 1111 1111 1111 1010
nZ5 = nA >> 2; // 0000 0000 0000 0001
nZ6 = nA << 2; // 0000 0000 0001 0100
}

Cc kiu d liu c s
18
&
VC
BB
Cc ton t quan h

Cc ton t quan h
So snh 2 biu thc vi nhau
Cho ra kt qu 0 (hay false nu sai) hoc 1
(hay true nu ng)
==, >, <, >=, <, <=, !=
V d
s1 = (1 == 2); s2 = (1 != 2);
s3 = (1 > 2); s4 = (1 >= 2);
s5 = (1 < 2); s6 = (1 <= 2);

Cc kiu d liu c s
19
&
VC
BB
Cc ton t lun l

Cc ton t lun l
T hp nhiu biu thc quan h vi nhau.
&& (and), || (or), ! (not)
&& 0 1 || 0 1
0 0 0 0 0 1
1 0 1 1 1 1

V d
s1 = (1 > 2) && (3 > 4);
s2 = (1 > 2) || (3 > 4);
s3 = !(1 > 2);
Cc kiu d liu c s
20
&
VC
BB
Ton t iu kin

Ton t iu kin
y l ton t 3 ngi (gm c 3 ton hng)
<biu thc 1> ? <biu thc 2> : <biu thc 3>
<biu thc 1> ng th gi tr l <biu thc 2>.
<biu thc 1> sai th gi tr l <biu thc 3>.
V d
s1 = (1 > 2) ? 2912 : 1706;
int s2 = 0;
1 < 2 ? s2 = 2912 : s2 = 1706;

Cc kiu d liu c s
21
&
VC
BB
Ton t phy

Ton t phy
Cc biu thc t cch nhau bng du ,
Cc biu thc con ln lt c tnh t tri
sang phi.
Biu thc mi nhn c l gi tr ca biu
thc bn phi cng.
V d
x = (a++, b = b + 2);
a++; b = b + 2; x = b;

Cc kiu d liu c s
22
&
VC
BB
u tin ca cc ton t

Ton t u tin
() [] -> .
! ++ -- - + * (cast) & sizeof
* / %
+ -
<< >>
< <= > >=
== !=
&
|
^
&&
||
?:
= += -= *= /= %= &=
,

Cc kiu d liu c s
23
&
VC
BB
u tin ca cc ton t

Quy tc thc hin


Thc hin biu thc trong ( ) su nht trc.
Thc hin theo th t u tin cc ton t.
=> T ch ng thm ( )
V d
n = 2 + 3 * 5;
=> n = 2 + (3 * 5);
a > 1 && b < 2
=> (a > 1) && (b < 2)
Cc kiu d liu c s
24
&
VC
BB
Vit biu thc cho cc mnh

x ln hn hay bng 3
x >= 3
a v b cng du
((a>0) && (b>0)) || ((a<0) && (b<0))
(a>0 && b>0) || (a<0 && b<0)
p bng q bng r
(p == q) && (q == r) hoc (p == q && q == r)
5 < x < 5
(x > 5) && (x < 5) hoc (x > 5 && x < 5)
Cc kiu d liu c s
25
&
VC
BB
Cu lnh

Khi nim
L mt ch th trc tip, hon chnh nhm ra
lnh cho my tnh thc hin mt s tc v
nht nh no .
Trnh bin dch b qua cc khong trng (hay
tab hoc xung dng) chen gia lnh.
V d
a=2912;
a = 2912;
a
=
2912; 26
Cc kiu d liu c s
&
VC
BB
Cu lnh

Phn loi
Cu lnh n: ch gm mt cu lnh.
Cu lnh phc (khi lnh): gm nhiu cu
lnh n c bao bi { v }
V d
a = 2912; // Cu lnh n

{ // Cu lnh phc/khi lnh


a = 2912;
b = 1706;
}

Cc kiu d liu c s
27
&
VC
BB
Cu lnh xut

Th vin
#include <stdio.h> (standard input/output)
C php
printf(<chui nh dng>[, <s1>, <s2>, ]);
<chui nh dng> l cch trnh by thng tin
xut v c t trong cp nhy kp .
Vn bn thng (literal text)
K t iu khin (escape sequence)
c t (conversion specifier)

Cc kiu d liu c s
28
&
VC
BB
Chui nh dng

Vn bn thng (literal text)


c xut y ht nh lc g trong chui nh
dng.
V d
Xut chui Hello World
printf(Hello ); printf(World);
printf(Hello World);
Xut chui a + b
printf(a + b);

Cc kiu d liu c s
29
&
VC
BB
Chui nh dng

K t iu khin (escape sequence)


Gm du \ v mt k t nh trong bng sau:
K t iu khin ngha
\a Ting chung
\b Li li mt bc
\n Xung dng
\t Du tab
\\ In du \
\? In du ?
\ In du

V d
printf(\t); printf(\n);
printf(\t\n); Cc kiu d liu c s
30
&
VC
BB
Chui nh dng

c t (conversion specifier)
Gm du % v mt k t.
Xc nh kiu ca bin/gi tr mun xut.
Cc i s chnh l cc bin/gi tr mun xut,
c lit k theo th t cch nhau du phy.
c t ngha
%c K t char
%d, %ld S nguyn c du char, int, short, long
%f, %lf S thc float, double
%s Chui k t char[], char*
%u S nguyn khng du unsigned int/short/long

Cc kiu d liu c s
31
&
VC
BB
Chui nh dng

V d
int a = 10, b = 20;
printf(%d, a); Xut ra 10
printf(%d, b); Xut ra 20
printf(%d %d, a, b); Xut ra 10 20

float x = 15.06;
printf(%f, x); Xut ra 15.060000
printf(%f, 1.0/3); Xut ra 0.333333

Cc kiu d liu c s
32
&
VC
BB
nh dng xut

C php
nh dng xut s nguyn: %nd, %nld
nh dng xut s thc: %n.kf, %n.lf
int a = 1706;
float x = 176.85;
printf(%10d, a); printf(\n);
printf(%10.2f, x); printf(\n);
printf(%.2f, x); printf(\n);

1 7 0 6
1 7 6 . 8 5

1 7 6 . 8 5

Cc kiu d liu c s
33
&
VC
BB
Chui nh dng

Phi hp cc thnh phn


int a = 1, b = 2;
Xut 1 cong 2 bang 3 v xung dng.
printf(%d, a); // Xut gi tr ca bin a
printf( cong ); // Xut chui cong
printf(%d, b); // Xut gi tr ca bin b
printf( bang ); // Xut chui bang
printf(%d, a + b); // Xut gi tr ca a + b
printf(\n); // Xut iu khin xung dng \n
printf(%d cong %d bang %d\n, a, b, a+b);
Cc kiu d liu c s
34
&
VC
BB
Cu lnh nhp

Th vin
#include <stdio.h> (standard input/output)
C php
scanf(<chui nh dng>[, <s1>, <s1>, ]);
<chui nh dng> ging nh dng xut
nhng ch c cc c t.
Cc i s l tn cc bin s cha gi tr
nhp v c t trc du &

Cc kiu d liu c s
35
&
VC
BB
Cu lnh nhp

V d, cho a v b kiu s nguyn


scanf(%d, &a); // Nhp gi tr cho bin a
scanf(%d, &b); // Nhp gi tr cho bin b
scanf(%d%d, &a, &b);
Cc cu lnh sau y sai
scanf(%d, a); // Thiu du &
scanf(%d, &a, &b); // Thiu %d cho bin b
scanf(%f, &a); // a l bin kiu s nguyn
scanf(%9d, &a); // khng c nh dng
scanf(a = %d, b = %d, &a, &b);
Cc kiu d liu c s
36
&
VC
BB
Mt s hm hu ch khc

Cc hm trong th vic ton hc


#include <math.h>
1 u vo: double, Tr kt qu: double
acos, asin, atan, cos, sin,
exp, log, log10
sqrt
ceil, floor
abs, fabs
2 u vo: double, Tr kt qu: double
double pow(double x, double y)
Cc kiu d liu c s
37
&
VC
BB
Mt s hm hu ch khc

V d
int x = 4, y = 3, z = -5;
float t = -1.2;
float kq1 = sqrt(x);
int kq2 = pow(x, y);
float kq3 = pow(x, 1/3);
float kq4 = pow(x, 1.0/3);
int kq5 = abs(z);
float kq6 = fabs(t);
Cc kiu d liu c s
38
&
VC
BB
Bi tp

1. Trnh by cc kiu d liu c s trong C v


cho v d.
2. Trnh by khi nim v bin v cch s dng
lnh gn.
3. Phn bit hng thng v hng k hiu.
Cho v d minh ha.
4. Trnh by khi nim v biu thc.
Ti sao nn s dng cp ngoc n.
5. Trnh by cch nh dng xut.

Cc kiu d liu c s
39
&
VC
BB
Bi tp

6. Nhp nm sinh ca mt ngi v tnh tui ca


ngi .
7. Nhp 2 s a v b. Tnh tng, hiu, tnh v
thng ca hai s .
8. Nhp s lng v n gi.
Tnh tin v thu gi tr gia tng phi tr, bit:
a. tin = s lng * n gi
b. thu gi tr gia tng = 10% tin

Cc kiu d liu c s
40
&
VC
BB
Bi tp

9. Nhp im thi v h s 3 mn Ton, L, Ha


ca mt sinh vin. Tnh im trung bnh ca
sinh vin .
10.Nhp bn knh ca ng trn. Tnh chu vi v
din tch ca hnh trn .
11.Nhp vo s xe (gm 5 ch s) ca bn. Cho
bit s xe ca bn c my nt?

Cc kiu d liu c s
41

You might also like