8/2/2019 bg lap trinh c
1/98
1
NGN NGLP TRNH
C/C++Nguyn nh Thun
Khoa Cng Ngh Thng Tini hc Nha Trang
Nha Trang, 7-2007
8/2/2019 bg lap trinh c
2/98
2
Ni dung mn hc
Chng 1: Tng quan
Chng 2: Cc ton t
Chng 3: Cc cu trc iu khin
Chng 4: D liu c cu trc
Chng 5: Cc hm trong C
Chng 6: Cc cu trc d liu khcChng 7: ha trong C
8/2/2019 bg lap trinh c
3/98
3
Chng 1: Tng quan
1.1 Gii thiu
c nhiu sch trn th gii vit v C/C++ v huht l ca ngi, nht l cc lp trnh vin lun xemC/C++ l cng c mnh v uyn chuyn.
C l kt qu ca qu trnh pht trin khi u t ngnng BCPL (do Martin Richards a ra vo nm 1967)l sn phm ca d n Combine Programming
Language gia 2 trng i hc London vCambridge. Ngn ng B (do Ken Thompson pht trint ngn ng BCPL vo nm 1970 khi vit h iuhnh UNIX u tin trn my PDP-7) v ngn ng B
l tin thn ca ngn ng C.
8/2/2019 bg lap trinh c
4/98
4
1.1 Gii thiu (tip) Nm 1978, hai tc gi Brian Kernighan v Dennish
Ritchie v cho xut bn quyn The C ProgrammingLanguage (Prentice-Hall) v c ph bin rng rin nay. V vy ngn ng C thng c gn cho
Tiu chun K&R. Hin nay c gn 30 trnh bin dch C ang ph bin
trn th trng v chng khng nht qun nhau. ci thin tnh trng ny, chun ANSI C cng c rai vo nm 1978, nhm chm lo vic pht trin ccmi trng v cc hm th vin ca C.
8/2/2019 bg lap trinh c
5/98
5
Cc c im ca ngn ng C:o Tnh c ng (compact): C ch c 32 t kha chun v 40 ton t chun,
nhng hu ht u c biu din bng nhng chui k t ngn gn.o Tnh cu trc (structured): C c mt tp hp nhng ch th ca lp trnhnh cu trc la chn, lp T cc chng trnh vit bng C ct chc r rng, d hiu.
o Tnh tng thch (compatible): C c b tin x l v mt th vin chun vcng phong ph nn khi chuyn t my tnh ny sang my tnh khc ccchng trnh vit bng C vn hon ton tng thch.
o Tnh linh ng (flexible): C l mt ngn ng rt uyn chuyn v c php,chp nhn nhiu cch th hin, c th thu gn kch thc ca cc m
lnh lm chng trnh chy nhanh hn.o Bin dch (compile): C cho php bin dch nhiu tp tin chng trnh ring
r thnh cc tp tin i tng (object) v lin kt (link) cc i tng li vi nhau thnh mt chng trnh c th thc thi c (executable)
thng nht.
8/2/2019 bg lap trinh c
6/98
6
1.2 Mi trng lm vic Turbo C
1. Gi Turbo C
2. Son tho chng trnh mi
3. Ghi chng trnh ang son tho vo a
4. Thc hin chng trnh5. M mt chng trnh c trn a
6. Thot khi Turbo C v tr v DOS (hay Windows)
7. S dng mt s lnh trn thanh menu
8/2/2019 bg lap trinh c
7/98
7
1.3 Cc thnh phn trong chng trnh C
- B k t
- Cc t kho trong C
- Li ch thch t trong cp du /* v */
hoc sau //
8/2/2019 bg lap trinh c
8/98
8
V d 1:
/*VIDU.CPP*/
#include
int main()
{
printf(Day la vi du \n");
printf(don gian Lap trinh C\n");
return 0;
}
/*VIDU.CPP*/
#include
int main()
{printf(Day la vi du \n");
printf(don gian Lap trinh C\n");
return 0;
}
ThThvin nhp xut chunvin nhp xut chunGhi chGhi ch
Hm mainHm main
Bo CT kt thc cho HHBo CT kt thc cho HH
8/2/2019 bg lap trinh c
9/98
9
V d 2
#include
#include
int main(void)
{
int a, b;
printf(Nhap 2 so ngguyen: ");
scanf("%d %d", &a, &b);
printf("%d - %d = %d\n", a, b, a - b);
getch();
return 0;
}
#include
#include
int main(void)
{
int a, b;
printf(Nhap 2 so ngguyen: ");scanf("%d %d", &a, &b);
printf("%d - %d = %d\n", a, b, a - b);
getch();
return 0;
}
Khai bo 2 bin snguyn, a v b
Nhp 2 s nguynvo a v b
Vit cc biu thc a,b v a-b theo nh
dng %dNhap 2 so nguyen: 21 17
21 - 17 = 4
Nhap 2 so nguyen: 21 17
21 - 17 = 4
8/2/2019 bg lap trinh c
10/98
10
Ghi ch:
Phn ch thch c trnh bin dch b qua
Cc t c phn bit ch hoa v ch thng
Cu lnh lun c kt thc bng du ;
Chui k t phi ghi gia cp nhy kp
In xung dng dng k t \n
Chng trnh C gm 1 hoc nhiu hm, hmc gi thc hin u tin l hm main.
8/2/2019 bg lap trinh c
11/98
11
1.4 Cc bc c bn khi vit
chng trnh
1. Phn tch, c t bi ton
2. Tm li gii (thut ton) v kiu d liu.
3. Vit chng trnh bng ngn ng lp trnh
4. Chy th sa li.5. Tng kt chng trnh
8/2/2019 bg lap trinh c
12/98
12
1.5 Cc kiu d liu c bn
trong C
voidKhng gi tr
8 bytesdoubleS thc chnhxc kp
4 bytesfloatS thc
2 bytesintS nguyn
1 bytecharK t
Kch thcT khaKiu
8/2/2019 bg lap trinh c
13/98
13
Kiu logic trong C
Trong C khng c kiu d liu logic(nhn cc gi trNG SAI), thay vo cc biu thc so snh s cho kt qu
l S Biuthc c gi tr0 (0.0) ng vi kt
qu SAI (FALSE)
Biu thc c gi tr khc khng nh : 1,3.5, -7, 10.4, u c xem l NG
(TRUE)
8/2/2019 bg lap trinh c
14/98
14
1.5 Cc kiu d liu c bn (tip)
B chuyn kiu (modifiers)signed (c du)
unsigned (khng du)
short (s nguyn ngn)long (s nguyn di gp i)
8/2/2019 bg lap trinh c
15/98
15
DataType
3.4 * (10**-4932) to 1.1 * (10**+4932)80 bitslong double
1.7 * (10**-308) to 1.7 * (10**+308)64 bitsdouble
3.4 * (10**-38) to 3.4 * (10**+38)32 bitsfloat-2,147,483,648 to 2,147,483,64732 bitslong
0 to 4,294,967,29532 bitsunsigned long
-32,768 to 32,76716 bitsint
-32,768 to 32,76716 bitsshort int
0 to 65,53516 bitsunsigned int
-32,768 to 32,76716 bitsenum
-128 to 1278 bitschar0 to 2558 bitsunsigned char
RangeLengthType
8/2/2019 bg lap trinh c
16/98
16
1.6 Khai bo trong C
- Tt c cc yu t trong chng trnh do ngi lp trnh
t ra phi c khai bo trc khi s dng, khai botrc ht phi t tn cho yu t.
- Tn hay cn gi l danh hiu(identifier) dng t cho
bin, hng, kiu, hm, ... Tn c t theo qui nh: Gm ch ci, ch s, du gch chn. Khng bt u bng ch s Khng trng vi t kha.
Tn chun l mt s tn do C t sn nh: sin, cos... di ti a ca tn l khng gii hn, tuy nhin ch
c 31 k tu tin l c ngha.
8/2/2019 bg lap trinh c
17/98
17
1. Khai bo bin
Khai bo:
Bin l i lng c ngi lp trnh nhngha v c t tn thng qua vic khai bobin. Bin dng cha d liu trong qutrnh thc hin chng trnh v gi tr ca binc th thay i trong qu trnh ny.
Mi bin thuc v mt kiu d liu xc nh vc gi tr thuc kiu .
;
8/2/2019 bg lap trinh c
18/98
18
1. Khai bo bin (tip)
V d:
int a, b, c; /*Ba bin a, b,c c kiu int*/long int chu_vi; /*Bin chu_vi c kiu long*/float nua_chu_vi; /*Bin nua_chu_vi c kiu float*/double dien_tich; /*Bin dien_tich c kiu double*/
a) Khai bo bin ngoi (bin ton cc): Cc bin c tbn ngoi tt c cc hm(k c hm main) v phm vis dng trong ton b chng trnh.
b) Khai bo bin trong(bin cc b): Cc bin c t bn trong hm hay khi lnh. Cc bin ny ch c tcdng trong hm hoc khi lnh tng ng
8/2/2019 bg lap trinh c
19/98
19
1. Khai bo bin (tip)
V d 1:#include
#includeint a; //khai bao bien ngoaiint main ()
{int I,j; //khai bao bien ben trong hm main
clrscr();i=1; j=2;a=3;printf("\n Gia tri cua i la %d",i);printf("\n Gia tri cua j la %d",j);
printf("\n Gia tri cua bienngoai a la %d",a);getch();return 0;
}
8/2/2019 bg lap trinh c
20/98
20
2. Khai bo hng
Khai bo
Hoc c khai bo thng qua gn gi tru Hng (Constant) l i lng khng i trong qu trnh thc thi
ca chng trnh. Hng bao gm hng s nguyn, hng s thc, hng k t, hng
chui k t.a) Hng s:
Hng s nguyn: 10, -167Hng s thc: 1.234, -0.34E3
- Ngm nh, trnh bin dch ghp hng vo kiu d liu tng ng
nh nhtV d: hng s 10 c kiu inthng s 60000 c kiu unsignedhng s 100000 c kiu long
- C qui c cc hng s thc c kiu double
const [kiu] = ;
8/2/2019 bg lap trinh c
21/98
21
2. Khai bo hng (tip)
- Trng hp mun ch r kiu ca hng, dng tip v
ng(suffix): U(unsigned), L (long), F(float)- V d:
- 1,123,31000,-234 c kiu int- -34L, 20000L c kiu long- 34U, 40000 c kiu unsigned- 23.45F, 34,4-3F c kiu float- 12.23, 4522,78 c kiu double
- Hng bt u 0X l hng thuc h c s 16- Hng bt u 0 l hng thuc h c s 8- V d:
-
int i=0x20, j=20, k=020; // i=32 v k=16 trong h c s 10-
8/2/2019 bg lap trinh c
22/98
22
V d v hngCc hng pi, t, heso c to vi t kha const
#include
int main(void)
{
const long double pi = 3.141592653590L;const t = 7;
const heso = 9.123;
days_in_week = 5;
return 0;
}
#include
int main(void)
{
const long double pi = 3.141592653590L;
const t = 7;
const heso = 9.123;
days_in_week = 5;
return 0;
}
LiLi
8/2/2019 bg lap trinh c
23/98
23
b) Hng k t- Hng k t l mt k t ring bit c vit trong
cp du nhy n ( ). Mi mt k t tng ngvi mt gi tr trong bng m ASCII. Hng k tcng c xem nh tr s nguyn.
V d: a, A, 0, 9- C th thc hin cc php ton s hc trn 2 k
t (thc cht l thc hin php ton trn gi tr
ASCII c
a chng)
8/2/2019 bg lap trinh c
24/98
24
b) Hng k t(tip)Mt s k t khng tin c (c tr ASCII t 0 n 31) trnh
bin dch C nhn bit iu ny bng cp k t bt ubng \:\n newline\t tab
\b backspace\r carriage return\f form feed\a alert\ \ \\ \
8/2/2019 bg lap trinh c
25/98
25
Hng chui k tHng chui k t l mt chui hay mt xu k t
c t trong cp du nhy kp ( ).- Cc chui c lu tr trong b nh nh l mt
dy cc k t lin tip v kt thc bng k t
rng (NULL) c m ASCII l 0.V d: Ngon ngu lap trinh C
Khoa CNTT-DHNT
- Phn bit: A v A
8/2/2019 bg lap trinh c
26/98
26
Hng x l trc bin dch Cc hng c thc xc lp trc khi bin
dch Bn cht l tm kim v thay th
Thng c t tn vi cc ch ci in hoa
#include
#define PI 3.141592653590L#define DAYS_IN_WEEK 7
#define SUNDAY 0
int day = SUNDAY;
#include
#define PI 3.141592653590L#define DAYS_IN_WEEK 7
#define SUNDAY 0
int day = SUNDAY;
Tm t PI, thay bng 3.1415....
Lu : khngc = v ;
8/2/2019 bg lap trinh c
27/98
27
3. Biu thc Biu thc l s kt hp gia cc ton t (operator) v
cc ton hng (operand) theo ng mt trt t nht nh. Mi ton hng c th l mt hng, mt bin hoc mt
biu thc khc. Trong trng hp, biu thc c nhiu ton t, ta dng
cp du ngoc n () chnh ton t no c thchin trc.
V d: Biu thc nghim ca phng trnh bc hai:
(-b + sqrt(Delta))/(2*a)Trong 2 l hng; a, b, Delta l bin.
8/2/2019 bg lap trinh c
28/98
28
Chng 2: Cc ton t
1. Ton t gn
2. Ton t s hc
3.Ton t quan h
4. Ton t logic
5. Ton t thao tc bit
6. Ton tsizeof
7. Ton t chn theo iu kin
8, Ton t con tr
9. Ton t du phy
10.Th tu tin ca cc php ton
11. Hm xut d liu
12. Hm nhp d liu
8/2/2019 bg lap trinh c
29/98
29
1. Ton t gn:
C php
C th s dng lin tip nhiu php gn
Gi trc gn s sn sng cho lnh k tip
int i, j, k, l, m, n;
i = j = k = l = m = n = 22;
printf("%i\n", j = 93);
int i, j, k, l, m, n;
i = j = k = l = m = n = 22;
printf("%i\n", j = 93);
n = 22 gn trc, lign n cho m, m
cho l,
i, j, k, l, m,n u nhn gi tr 22.
j c gn 93, gi tr 93 sc in ra mn hnh
=
8/2/2019 bg lap trinh c
30/98
30
Ton t gn (tip)
C th s dng lin tip nhiu php gn
int i, j, k, l, m, n;
i = j = k = l = m = n = 11;
printf("%i\n", j = 91);
int i, j, k, l, m, n;
i = j = k = l = m = n = 11;
printf("%i\n", j = 91);
n = 11 gn trc, li
gn n cho m, mcho l, i, j, k, l, m,n u nhn gi tr 11.
j c gn 91, gi tr 91 sc in ra mn hnh
8/2/2019 bg lap trinh c
31/98
31
Mt s php gn c bit Cc php gn kt hp ton t khc:
+= -= *= /= %=
&= |= ^=
=
Tng qut:
=
tng ng:
=
a += 27;a += 27;
a = a + 27;a = a + 27;
f /= 9.2;f /= 9.2;
f = f / 9.2;f = f / 9.2;
i *= j + 2;i *= j + 2;
i = i * (j + 2);i = i * (j + 2);
8/2/2019 bg lap trinh c
32/98
32
2. Cc cc php ton s hc
+ cng
- tr* nhn
/ chia
% chia ly dLu :
/ cho kt qu ph thuc vo kiu ca cc ton hng
% khng thc hinc vi cc s thc
8/2/2019 bg lap trinh c
33/98
33
V d v ton t chia /
Trnh bin dch da vo kiu ca cc ton
hng quyt nh php chia tng ngint main(void)
{
int i = 5, j = 4, k;
double f = 5.0, g = 4.0, h;
k = i / j;
h = f / g;
h = i / j;
return 0;
}
int main(void)
{
int i = 5, j = 4, k;
double f = 5.0, g = 4.0, h;
k = i / j;
h = f / g;
h = i / j;
return 0;
}
i, j kiu int, / lphp chia ly nguyn k nhn gi tr 1
f, g kiu double, /l php chia s thc h nhn gi tr 1.25
Php chia nguyn, btk h c kiu double.
Kt qu l 1.00000
8/2/2019 bg lap trinh c
34/98
34
Php tng (gim) 1 NNLT C c 2 ton tc bit h tr vic tng (gim)
gi tr ca mt bin thay i 1 n v++ tng 1
-- gim 1
Cc ton t ny c tht trc hoc sau bin.
int i = 5, j = 4;
i ++;
-- j;
++ i;
int i = 5, j = 4;
i ++;
-- j;
++ i;
i 6
j 3
i 7
8/2/2019 bg lap trinh c
35/98
35
Tr
c hay sau ?Th t thc hin cc ton t ++ v -- ph thuc
vo v tr ca chng (trc hay sau) so vi bin:#include
intmain(void)
{int i, j = 5;
i = ++j;
printf("i=%d, j=%d\n", i, j);
j = 5;
i = j++;
printf("i=%d, j=%d\n", i, j);
return 0;
}
#include
int main(void)
{int i, j = 5;
i = ++j;
printf("i=%d, j=%d\n", i, j);
j = 5;
i = j++;printf("i=%d, j=%d\n", i, j);
return 0;
}
i=6, j=6
i=5, j=6
i=6, j=6
i=5, j=6
Tng ng:1. j++;2. i = j;
Tng ng:1. i = j;2. j++;
8/2/2019 bg lap trinh c
36/98
36
Chuyn kiu/p kiu (Type Casting) Chuynkiu lm thay i tm thikiu ca mt
bin trong mt biu thc.int main(void)
{
int i = 5, j = 4;
double f;
f = (double)i / j;
f = i / (double)j;
f = (double)i / (double)j;
f = (double)(i / j);
return 0;
}
int main(void)
{
int i = 5, j = 4;
double f;
f = (double)i / j;
f = i / (double)j;
f = (double)i / (double)j;f = (double)(i / j);
return 0;
}
Php chia s nguync thc hin, kt
qu, 1, c i sang
kiu double, 1.00000
8/2/2019 bg lap trinh c
37/98
37
3. Cc ton t quan h (Relational Operators)
NNLT C h tr cc ton t quan h:
< b hn ln hn>= ln hn hay bng
== bng
!= khc
Tt cu cho kt qu1 khi so snh ng
v 0 trong trng hp ngc li.
8/2/2019 bg lap trinh c
38/98
38
4. Ton t logic
NNLT C h tr cc ton t logic:
&& v (and)
|| hoc (or)
! phnh (not)
Tt cu cho kt qu 1 hoc 0 tng ng
cc trng hp NG hoc SAIint i, j = 10, k = 28;
i = ((j > 5) && (k < 100)) || (k > 24);
int i, j = 10, k = 28;
i = ((j > 5) && (k < 100)) || (k > 24);
8/2/2019 bg lap trinh c
39/98
39
5. Ton t thao tc bit (Bitwise Operators)
Cc ton t trn bit ch c tc dng trn cc kiu s
nguyn:& And
| Or
^ Xor
~ Not
> Shift Right
8/2/2019 bg lap trinh c
40/98
40
6. Ton tsizeof
sizeof(Obj)
Cho bit kch thc ca i tng theo s byte#include
int main(void){
long big;
printf("\"big\" is %u bytes\n", sizeof(big));
printf("a short is %u bytes\n", sizeof(short));
printf("a double is %u bytes\n", sizeof (double));
return 0;
}
#include
int main(void){
long big;
printf("\"big\" is %u bytes\n", sizeof(big));
printf("a short is %u bytes\n", sizeof(short));
printf("a double is %u bytes\n", sizeof (double));
return 0;
}
"big" is 4 bytes
a short is 2 bytes
a double is 8 bytes
"big" is 4 bytes
a short is 2 bytes
a double is 8 bytes
8/2/2019 bg lap trinh c
41/98
41
7. Ton t chn theo iu kin(iu kin) ? BT1 : BT2
Biu thc nhn gi trBT1 nu iu kin khc 0(NG), cc trng hp khc nhn gi trBT2
int i, j = 100, k = -1;
i = (j > k) ? j : k;
int i, j = 100, k = -1;
i = (j > k) ? j : k;
int i, j = 100, k = -1;
i = (j < k) ? j : k;
int i, j = 100, k = -1;
i = (j < k) ? j : k;
Nu (j > k)i = j;Ngc li
i = k;
Nu (j > k)i = j;
Ngc li
i = k;
Nu (j < k)i = j;
Ngc li
i = k;
Nu (j < k)i = j;Ngc li
i = k;
8/2/2019 bg lap trinh c
42/98
42
8. Ton t con tr
+ Mt con tr l a ch trong b nh ca mt bin. Mt bincon tr l mt bin c khai bo ring cha mt con
trn mt i tng ca kiu ch ra n.+ C hai ton tc s dng thao tc vi cc con tr.- Ton t th nht l &, l mt ton t quy c tr vach b nh ca h s ca n.V d: p = &n
t vo bin m a ch b nh ca bin count.Chng hn, bin n v tr b nh 2000, gi s n c gi trl 100. Sau cu lnh trn p s nhn gi tr 2000.- Ton t th hai l *, l mt b sung cho & y l mtton t quy c tr v gi tr ca bin c cp pht ti
a ch theo sau .V d: m = *pSt gi tr ca n vo m. By gi m s c gi tr l 100 v100 c lu tr ti a ch 2000.
8/2/2019 bg lap trinh c
43/98
43
9. Ton t du phy ,
Ton t du , c s dng kt hp cc
biu thc li vi nhau. Bn tri ca ton tdu , lun c xem l kiu void. iu c ngha l biu thc bn phi tr thnh gi
tr ca tng cc biu thc c phn cchbi du phy. V d: x = (y=3,y+1);
Trc ht gn 3 cho y ri gn 4 cho x. Cpdu ngoc n l cn thit v ton t du ,c u tin thp hn ton t gn.
8/2/2019 bg lap trinh c
44/98
44
10. u tin ca ton t
Th t thc hin cc ton t trong mt biu thc phthuc vo u tinca chng.
C 15 mc u tin.
Thng thng, ton t mt ngi c u tin cao hnton t hai ngi.
Cc cp du ngoc n () thng c dng ch rth t cc ton t.
#include
int main(void){
int j = 3 * 4 + 48 / 7;
printf("j = %i\n", j);
return 0;
}
#include
int main(void)
{
int j = 3 * 4 + 48 / 7;
printf("j = %i\n", j);
return 0;
} j = 18j = 18
8/2/2019 bg lap trinh c
45/98
45
Bng th t thc hin cc ton t
Ton t Th t (nu cng T)() [] -> .
! ++ -- - + (cast) * & sizeof * / %
+ -
>
< = > == !=
&
|
^
&&
||
?:
= += -= *= /= %=
8/2/2019 bg lap trinh c
46/98
46
V d
#include
int main(void)
{
int i = 0, j, k = 7, m = 5, n;
j = m += 2;
printf("j = %d\n", j);
j = k++ > 7;
printf("j = %d\n", j);
j = i == 0 & k;
printf("j = %d\n", j);n = !i > k >> 2;
printf("n = %d\n", n);
return 0;
}
#include
int main(void)
{
int i = 0, j, k = 7, m = 5, n;
j = m += 2;
printf("j = %d\n", j);j = k++ > 7;
printf("j = %d\n", j);
j = i == 0 & k;
printf("j = %d\n", j);n = !i > k >> 2;
printf("n = %d\n", n);
return 0;
}
8/2/2019 bg lap trinh c
47/98
47
11. Hm xut - printf
Xut d liu ra mn hnh:
printf("%d- %d=%d\n",a,b, a- b);
Cc k t hng c in nguyn vn
Cc k tnh dng c thay bng gi tr ca biu thc tngng:
%d: k tnh dng s nguyn kiu int
Cc k tiu khin: \n xung dng; \t du tab;\\ du \; \ du
Th vin: stdio.h
printf(Chui nh dng , Cc biu thc);
8/2/2019 bg lap trinh c
48/98
48
11. Hm xut printf (tip)
In s thc c 3 s l, nu s cn in c nhiu hn 3 s l th lm trn.%.3f
In s thc ti a 6 k s (tnh lun du chm), nu s cn in nhiu hn 6k s th in ht
%6f
In s thc%f
In s nguyn ti a 4 k s, nu s cn in nhiu hn 4 k s th in ht%4d
In ra s nguyn%d
V d
Xut s nguyn dng khoa hc (nhn 10 m x)%e hoc %E hoc %g hoc%G
Xut chui k t%s
Xut mt k t%c
Xut s nguyn h thp lc phn%x
Xut s nguyn h bt phn%o
Xut s thc c theo quy tc lm trn s.%[.s ch s thp phn] f
Xut s nguyn%d
8/2/2019 bg lap trinh c
49/98
49
12. Hm nhp - scanf
Nhp d liu t bn phm
scanf("%d %d", &a, &b);
Trong chui nh dng ch c k tnh dng v khong
trng. D liu phi c nhp vo cc bin.
Trc tn bin phi ghi du & - ton ta ch. Nu
khng c ton ta ch, gi tr ca bin s khng ccp nht
Th vin: stdio.h
scanf(Chui nh dng, a ch ca cc bin);
8/2/2019 bg lap trinh c
50/98
50
12. Hm nhp scanf(tip)
Nhp s thc ti a 6 k s (tnh lun du chm), nu nhp nhiu hn 6 k s th chnhn c 6 k s u tin (hoc 5 k s vi du chm)
%6f
Nhp s thc%f
Nhp s nguyn ti a 4 k s, nu nhp nhiu hn 4 k s th ch nhn c 4 k su tin
%4d
Nhp s nguyn%d
V d:
Nhp mt k t%c
Nhp s thc c ti a tnh c du chm%[s k s] f
Nhp s nguyn c ti a %[s k s]d
nghanh dng
8/2/2019 bg lap trinh c
51/98
51
Chng 3: Cc cu trc iu khin
1. Lnh if
2. Lnh switch3. Lnh for
4. Lnh while
5. Lnh do .. While
8/2/2019 bg lap trinh c
52/98
52
1. Lnh if Dng thc hin hay khng mt
pht biu theo mt iu kin. Dng 1:if () ;
V dif (delta > 0){
x1 = (-b + sqrt(delta))/2/a;x2 = (-b - sqrt(delta))/2/a;}
Bthc K
Lnh S
T
Ch c 1pht biutrong thnca if
F
8/2/2019 bg lap trinh c
53/98
53
Dng 2 ca lnh if Dng chn la pht biu no sc thc hin
gia 2 pht biu. C php:if (< Bthc K >) ; else ;
#include #include int main ()
{float a;printf("Nhap a = "); scanf("%f",&a);if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
elseprintf(Khong the tim nghich dao cua a);
getch();return 0;
}
Bthc K
Lnh S1
T
F
Lnh S2
8/2/2019 bg lap trinh c
54/98
54
Trng hp c bit Xt pht biu sau: if () if () ; else ;
else s thuc v if no gn 1 cha c else
else else?
K2
S1
Yes
No
S2
K2
Yes
No
8/2/2019 bg lap trinh c
55/98
55
2. Lnh switch Dng chn mt
trong s nhng
pht biu thchin ty theo gi trca biu thc chn.
Cc gi tr case: ch
ra cc trng hpphn nhnh. Cc gi tr case l
mt hay nhiu gi
tr ri rc theo saul du : v mt phtbiu tng ng, ktthc l break.
C php:switch ()
{case : ; break;case : ; break;
[default : ;]}
BiuThc
S1 S2 Sn+1Sn
Gtr1 Gtr2 GtrN default
V d 1
8/2/2019 bg lap trinh c
56/98
56
V d 1
Nhp vo mt s nguyn, chia s nguyn ny cho 2 ly phn d. Kim tranu phn d bng 0 th in ra thng bo s chn, nu s d bng 1 thin thng bo s l.
#include #includeint main (){ int songuyen, phandu;
clrscr();printf("\n Nhap vao so nguyen ");scanf("%d",&songuyen); phandu=(songuyen % 2);switch(phandu)
{
case 0: printf("%d la so chan ",songuyen); break;case 1: printf("%d la so le ",songuyen); break;}
getch();return 0;
}
V d 2
8/2/2019 bg lap trinh c
57/98
57
V d 2
V d 2: Nhp vo 2 s nguyn v 1 php ton.- Nu php ton l +, -, * th in ra kt qua l tng, hiu, tch ca 2 s.- Nu php ton l / th kim tra xem s th 2 c khc khng hay khng? Nu khc khng th in ra
thng ca chng, ngc li th in ra thng bo khong chia cho 0.#include #includeint main (){ int so1, so2; float thuong; char pheptoan;
printf("\n Nhap vao 2 so nguyen "); scanf("%d%d",&so1,&so2);fflush(stdin); /*Xa k t enter trong vng m trc khi nhp php ton */
printf("\n Nhap vao phep toan "); scanf("%c",&pheptoan);switch(pheptoan){ case '+': printf("\n %d + %d =%d",so1, so2, so1+so2); break;
case '-': printf("\n %d - %d =%d",so1, so2, so1-so2); break;case '*': printf("\n %d * %d =%d",so1, so2, so1*so2); break;case '/': if (so2!=0)
{ thuong=float(so1)/float(so2);printf("\n %d / %d =%f", so1, so2, thuong); }else printf("Khong chia duoc cho 0"); break;
default : printf("\n Chua ho tro phep toan %c", pheptoan); break;}getch();return 0;
}
3 Lnh for
8/2/2019 bg lap trinh c
58/98
58
3. Lnh for
Lnh for cho php lp li cc lnh cho n khi Biu thciu kin 2 l sai
C php: for (;;)
Bthc 2
Lnh S
T
F
BThc 3
Bthc 1V d: Vit chng trnh nhp vo mt s nguynn. Tnh tng ca cc s nguyn t 1 n n.
#include #includeint main (){ unsigned int n,i,tong;
printf("\n Nhap vao so n:");scanf("%d",&n);
tong=0;for (i=1; i
8/2/2019 bg lap trinh c
59/98
59
4. Lnh whileDng lp li mt cng vic no
cho n khi iu kin sai.
C phpwhile()
while kim tra iu kin trc ri mithc hin lnh S.
S lp lp l khng bit trc.S ln lp ti thiu l 0 v ti a l
khng xc nh.Ch : Trong thn ca while phi c
t nht mt pht biu c kh nngthayi gi trcaiu kin. Nukhng s lp v tn (infinite loop)
V d:gt=1; i=1;
while (i
8/2/2019 bg lap trinh c
60/98
60
V d v lnh whileV d 2: Vit chng trnh nhp vo mt s nguyn n. Tnh tng ca cc
s nguyn t 1 n n.#include #includeint main (){ unsigned int n,i,tong;
printf("\n Nhap vao so nguyen duong n:"); scanf("%d",&n);tong=0;i=1;while (i
8/2/2019 bg lap trinh c
61/98
61
5. Lnh do .. while
Vng lp do while dng lp li mt cng vic
no khi iu kin cn ng.C php:
do while ()
Thc hin xong lnh S mi kim tra iu kin. S lp lp l khng bit trc. S ln lp ti thiu l 1 v ti a l khng xc
nh. Ch : Trong thn ca do .. While phi c t
nht mt pht biu c kh nng thayi gi trcaiu kin. Nu khng s lp v tn (infiniteloop)
BTK
S
F
T
8/2/2019 bg lap trinh c
62/98
62
V d v lnh do .. whileVit chng trnh nhp vo mt s nguyn n. Tnh tng ca cc s nguyn
t 1 n n.#include
#includeint main (){ unsigned int n,i,tong;
printf("\n Nhap vao so nguyen duong n:"); scanf("%d",&n);tong=0;i=1;do{
tong+=i;
i++;} while (i
8/2/2019 bg lap trinh c
63/98
63
6. CC CU LNH C BIT1. Lnh break C php: breakDng thot khi vng lp. Khi gp cu lnh ny trong vng lp, chng trnh s
thot ra khi vng lp v chn cu lnh lin sau n. Nu nhiu vng lp th
break s thot ra khi vng lp gn nht. Ngoi ra, break cn c dng trongcu trc la chn switch.
2. Lnh continue C php: continue- Khi gp lnh ny trong cc vng lp, chng trnh s b qua phn cn li trongvng lp v tip tc thc hin ln lp tip theo.
- i vi lnh for, biu thc 3 sc tnh tr v quay li bc 2.- i vi lnh while, do while; biu thc iu kin sc tnh v xt xem c thtip tc thc hin na hay khng? (da vo kt qu ca biu thc iukin).
V d: while (x != y){
if (x==a) continue;b+=6;if (y==b) break;
}
Chng 4: Cc hm trong C
8/2/2019 bg lap trinh c
64/98
64
Chng 4: Cc hm trong C
1. Khi nim hm trong C Ti sao phi dng chng trnh con:
C cng vic cn phi c thc hin ti nhiu ni trong chngtrnh => tch cng vic thnh chng trnh con
Phn on, module chng trnh thun tin trong qun l,trnh by v pht trin.
Trong C, chng trnh con c gi l hm. Hm trong C cth tr v kt qu thng qua tn hm hay c th khng tr vkt qu.
Hm c hai loi: hm chun (hm c trnh bin dch C vitsn) v hm tnh ngha.
Mt hm khi c nh ngha th c thc gi trongchng trnh. Trong C, hm main() c gi thc hin u tin
V d
8/2/2019 bg lap trinh c
65/98
65
V d
Vit hm main dng nhp vo 2 s nguyn a,b v in ra mn hnh s ln trong 2s nhp
#include
#include int max(int a, int b);
int main(){
int a, b, c;printf("\n Nhap vao 3 so a, b,c ");scanf("%d%d%d",&a,&b,&c);printf("\n So lon la %d",max(a, max(b,c)));getch();return 0;
}
int max(int a, int b){
return (a>b) ? a:b;}
Ghi ch
8/2/2019 bg lap trinh c
66/98
66
Ghi ch
- Dng int max(int a, int b); gi l Prototype ca hm, qui nhkiu tr v ca hm, s lng tham s v kiu ca chng.
- Cc Prototype ca cc hm sn c cha trong cc tp tin *.h- Hm c thc gi bi hm main(), hoc t mt hm khchoc chnh n( qui).
- Hm c th c tham s hoc khng.- Hm ch c 1 im vo (lnh u tin ca hm) nhng c th
c nhiu im ra (lnh return).- Mt hm c thc vit ngay trong vn bn chng trnh(nh trn), hoc c vit trong tp tin khc v a vochng trnh bng ch th #include, hoc c bin dch ringr v kt ni li.
- Khc vi ngn ng lp trnh Pascal:- Ngn ng C khng c khi nim th tc (tht ra th tc khngkhc hm, th tc khng quan tm n gi tr tr v)
- Khng cho php cc hm lng vo nhau
2. Hm th vin/hm chun
8/2/2019 bg lap trinh c
67/98
67
2. Hm th vin/hm chun
Hm th vin l nhng hm c nh ngha sn trong mt th vinno , mun s dng cc hm th vin th phi khai bo th vin trckhi s dng bng lnh #include
ngha ca mt s thvin thng dng:1. stdio.h : Th vin cha cc hm vo/ ra chun (standard input/output). Gm cc
hm printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(),fread(), fwrite(), getchar(), putchar(), getw(), putw()
2. conio.h : Th vin cha cc hm vo ra trong ch DOS (DOS console). Gmcc hm clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(),
clreol(),3. math.h: Th vin cha cc hm tnh ton gm cc hm abs(), sqrt(), log().log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),
4. alloc.h: Th vin cha cc hm lin quan n vic qun l b nh. Gm cchm calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(),
5. io.h: Th vin cha cc hm vo ra cp thp. Gm cc hm open(), _open(),
read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(),filelength(), lock(),6. graphics.h: Th vin cha cc hm lin quan n ha. Gm initgraph(),
line(), circle(), putpixel(), getpixel(), setcolor(), ...Mun s dng cc hm th vin th ta phi xem c php ca cc hm v s dng
theo ng c php (xem trong phn tr gip ca Turbo C).
3. Hm ca ngi s dng
8/2/2019 bg lap trinh c
68/98
68
g g
Hm ngi dng l nhng hm do ngi lptrnh t to ra nhm p ng nhu cu x l ca
mnh.Cu trc ca hm:
([ ][,][])
{ [Khai bo][return ;]
}
8/2/2019 bg lap trinh c
69/98
69
Truyn Bng Tr - Tham bin - Tham ChiuV d: Vit chng trnh hon v 2 phn t
#include// Truyn bng tham trvoid Swap1 (int x, int y)
{
int temp = x;
x = y;
y = temp;
}// Truyn bng tham bin (con tr)void Swap2 (int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
// Truyn bng tham chiuvoid Swap3 (int &x, int &y)
{
int temp = x;
x = y;
y = temp;
}
12345
6789
1011
12131415161718
int main(){ int m=12; n=28;
Swap1(m,n);printf(m=%d n=%d\n,m,n);Swap2(&m,&n);printf(m=%d n=%d\n,m,n);Swap3(m,n);
printf(m=%d n=%d\n,m,n);return 0;
}
??
4. Tham tr v tham bin
8/2/2019 bg lap trinh c
70/98
70
Mc nhin, vic truyn tham s cho hm trong C l truyn theo gi tr; ngha lcc gi tr thc (tham s thc) khng b thay i gi tr khi truyn cho cctham s hnh thc
V d 1: Gi s mun in ra cc, mi dng gm 50 k t no . n gin tavit hm, hm ny s in ra trn mt dng 50 k t cho trc.
#include #include void InKT(char ch)
{ int i;for(i=1;i
8/2/2019 bg lap trinh c
71/98
71
nh ngha: Mt hm c gi l quy nu bn trong thn hm c lnh gi n chnh n.V d: nh ngha giai tha ca mt s nguyn dng n nh sau:
n!=1* 2 * 3 ** (n-1) *n = (n-1)! *n (vi 0!=1)
Nh vy, tnh n! ta thy nu n=0 th n!=1 ngc li th n!=n * (n-1)!Vi nh ngha trn th hm quy tnh n! c vit:#include #include
/*Hm tnh n! bng quy*/unsigned int giaithua_dequy(int n){
if (n==0) return 1;else return n*giaithua_dequy(n-1);
}
/*Hm tnh n! khng quy*/unsigned int giaithua_khongdequy(int n)
{ unsigned int kq,i;kq=1;for (i=2;i
8/2/2019 bg lap trinh c
72/98
72
c im cn lu khi vit hm quy
- Hm quy phi c 2 phn:+ Phn dng hay phi c trng hp nguyn t. Trong v d
trn th trng hp n=0 l trng hp nguyn t.+ Phn quy: l phn c gi li hm ang c nh ngha.Trong v d trn th phn quy l n>0 th n! = n * (n-1)!
- S dng hm quy trong chng trnh s lm chng trnh dc, d hiu v vn c nu bt r rng hn. Tuy nhintrong a s trng hp th hm quy tn b nh nhiu hnv tc thc hin chng trnh chm hn khng quy.
- Ty tng bi c c th m ngi lp trnh quyt nh c nn dng quy hay khng (c nhng trng hp khng dng quy
th khng gii quyt c bi ton).
6. Tham s ca hm main()
8/2/2019 bg lap trinh c
73/98
73
- L 2 tham s : argc v argv
- Tham s argc l s nguyn ch tham s trn dng lnh, c gi tr nh nht =1,
v bn thn tn chng trnh l tham s th nht- Tham s argv l mng cc con tr, trn cc tham s trn dng lnh: char
*argv[ ];
argv[0]: cha a ch ca tn chng trnh
argv[1]: cha a ch ca tham s th nht
argv[2]: cha a ch ca tham s th hai
V d: Chng trnh sau c bin dch thnh MYPRO.EXE, nu nhp trn dng lnhMYPRO th c dng nhc nh, nu nhp MYPRO LAN th Chao ban LAN
#include
main(int argc, char *argv[])
{
if (argc !=2) printf(Phai nhap Ten);
else printf(Chao ban %s\n,argv[1]);
}
Chng 5: D liu c cu trc
8/2/2019 bg lap trinh c
74/98
74
1. Kiu mng:- Mng l mt tp hp cc phn t cnh c cng mt kiu, gi l
kiu phn t. Kiu phn t c th l c cc kiu bt k: k t, s,chui k t; cng c khi ta s dng kiu mng lm kiuphn t cho mt mng (trong trng hp ny ta gi l mng camng hay mng nhiu chiu).
- C th chia mng lm 2 loi: mng 1 chiu v mng nhiu chiu.- Khai bo mng vi s phn t xc nh
C php: ngha:- Tn mng: y l mt ci tn t ng theo quy tc t tn ca
danh biu. Tn ny cng mang ngha l tn bin mng.- S phn t: l mt hng s nguyn, cho bit s lng phn t ti
a trong mng l bao nhiu (ni khc l kch thc ca mng).- Kiu: mi phn t ca mng c d liu thuc kiu g.- Khi khai bo mt bin mng gm c s phn tphn t, phn t
th nht l tn mng[0], phn t cui cng l tn mng[sphn t-1]
8/2/2019 bg lap trinh c
75/98
75
1. Kiu mng(tip)V d: int a[10]; /* Khai bo bin mng a gm 10 phn t , phn t thnht l a[0], phn t cui cng l a[9].*/
C th coi mng a l mt dy lin tip cc phn t trong b nh nh sau:
2. Khai bo mng vi s phn t khng xc nhC php:
Khi khai bo, khng cho bit r s phn t ca mng, kiu khai bony thng c p dng trong cc trng hp: va khai bo vagn gi tr, khai bo mng l tham s hnh thc ca hm.
a. Va khai bo va gn gi trC php: []= {Cc gi tr phn cch bi du ,}Nu va khai bo va gn gi tr th mc nhin C s hiu s phn tca mng l s gi tr m chng ta gn cho mng trong cp du {}.
b. Khai bo mng l tham s hnh thc ca hm, trong trng hp ny takhng cn chnh s phn t ca mng l bao nhiu.
V tr 0 1 2 3 4 5 6 7 8 9Tn phn t a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
8/2/2019 bg lap trinh c
76/98
76
1. Kiu mng(tip)- Truy xut tng phn t ca mng+ Mi phn t ca mng c truy xut thng qua Tn bin mngtheo sau l ch s nm trong cp du ngoc vung [ ]. Chng hna[0] l phn tu tin ca mng a c khai bo trn. Ch sca phn t mng l mt biu thc m gi tr l kiu s nguyn.+ Vi cch truy xut theo kiu ny, Tn bin mng[Ch s] c th coinh l mt bin c kiu d liu l kiu c ch ra trong khai bobin mng.
V d 2: Va khai bo va gn tr cho 1 mng 1 chiu cc s nguyn. In
mng s nguyn ny ln mn hnh.#include #include int main(){
int n,i,j,tam;
int dayso[]={66,65,69,68,67,70};n=sizeof(dayso)/sizeof(int); /*Ly s phn t*/printf("\n Noi dung cua mang ");for (i=0;i
8/2/2019 bg lap trinh c
77/98
77
1. Kiu mng(tip)V d 4: Nhp vo mt dy n s v sp xp cc s theo th t tng.#include#includevoid Nhap(int a[],int N)
{ int i;for(i=0; i< N; i++){
printf("Phan tu thu %d: ",i);scanf("%d",&a[i]);
}}
void InMang(int a[], int N){ int i;
for (i=0; i
8/2/2019 bg lap trinh c
78/98
78
1. Kiu mng(tip)V d: Vit chng trnh cho php nhp 2 ma trn a, b c m dng n ct, thc hin php toncng hai ma trn a,b v in ma trn kt qu ln mn hnh.
#include#include
void Nhap(int a[][10],int M,int N){ int i,j;for(i=0;i
8/2/2019 bg lap trinh c
79/98
79
Mng nhiu chiu
20253828Brisbane
13193224Melbourne
17223426Sydney
Ma ngMa thuMa hMa xun
int Mua[3][4];
... 32 19 13 28 38 25 ...26 34 22 17 24 20
First row Second row Third rowhng u hng hai hng ba
Cch t chc trong b nh
2. Kiu chui k t
8/2/2019 bg lap trinh c
80/98
80
- Kiu chui k t l mt trnghp c bit ca mng cc k
t. Chui k t kt thc bngk t c m ASCII l 0 (\0)
- Do , char[10]; //lu tr tia 9 k t
Ghi ch:+ Khi p dng cc php tontrn chui, ta phi s dngcc hm (string.h)
V d:-Hm strcpy(chui1,chui 2):chp chui 2 vo chui 1
-Hm strcmp(chui1,chui2):so snh 2 chui tr v 0 nu 2
chui bng nhau .
V d: Nhp vo mt chui v hin thtrn mn hnh chui va nhp.#include
#include#includeint main(){ char Ten[12];
printf("Nhap chuoi: ");gets(Ten);printf("Chuoi vua nhap: ");puts(Ten);getch();
return 0;}
3. Kiu con tr
8/2/2019 bg lap trinh c
81/98
81
- Cc bin trc y u l bin c kch thc v kiu d liu xc nh. Gi cc binkiu ny l bin tnh. Khi khai bo bin tnh, cc nh sc cp pht m khng bittrong qu trnh chy chng trnh c s dng ht chng hay khng.
- Cc bin tnh dng ny s tn ti trong sut thi gian thc thi chng trnh d cnhng bin m chng trnh ch s dng 1 ln ri b. Cc hn ch v bin tnh:
- Cp pht nh d, gy ra lng ph nh.
- Cp pht nh thiu, chng trnh thc thi b li.
- gii quyt nhng hn ch trn, ngn ng C cung cp cho ta mt loi bin c bitgi l bin ng vi cc c im sau:- Ch pht sinh trong qu trnh chy chng trnh ch khng pht sinh lc bt u chng trnh.
- Khi chy chng trnh, kch thc ca bin, vng nh v a ch vng nhc cp pht chobin c th thay i.
- Sau khi s dng xong c th gii phng tit kim ch trong b nh.
- V th, ngn ng C li cung cp cho ta mt loi bin c bit na khc phc tnhtrng ny, l bin con tr (pointer) vi cc c im:
- Bin con tr khng cha d liu m ch cha a ch ca d liu hay cha a ch ca nh
- Kch thc ca bin con tr khng ph thuc vo kiu d liu, lun c kch thc cnh l 2
bytes nu trong cng 1 on v 4 bytes nu khc on.
3. Kiu con tr(tip)
8/2/2019 bg lap trinh c
82/98
82
a. Khai bo bin con trC php: *
V d 1: Khai bo 2 bin a,b c kiu int v 2 bin pa, pb l 2 bin con tr kiu int.int a, b, *pa, *pb;V d 2: Khai bo bin f kiu float v bin pf l con tr floatfloat f, *pf;
b. Cc php ton trn con tr
+. Php gn con tr: Hai con tr cng kiu c th gn cho nhau.V d: int a, *p, *a ; float *f;a = 5 ;p = &a ;q = p ;/* ng */f = p ; /* sai do khc kiu */
+ Cng, tr con tr vi mt s nguyn: C th cng (+), tr (-) 1 con tr vi 1 snguyn N no ; kt qu tr v l 1 con tr. Con tr ny chn vng nh cchvng nh ca con tr hin ti N phn t.
- n v tng hay gim ca con tr c kch thcca bin c trn
4. Con trc dng nh mng.
8/2/2019 bg lap trinh c
83/98
83
V d: Cho 1 mng 1 chiu cc s nguyn a c 5 phn t, truy cp cc phn t theokiu mng v theo kiu con tr.
#include
#include /* Nhp mng bnh thng*/void NhapMang(int a[], int N){ int i;
for(i=0;i
8/2/2019 bg lap trinh c
84/98
84
a. Hm cp pht:void *malloc(size_t size): Cp pht vng nh c kch thc l size.
void *calloc(size_t nitems, size_t size): Cp pht vng nh c kch thc l
nitems*size.V d: Gi s ta c khai bo:int a, *pa, *pb; pa = (int*)malloc(sizeof(int)); /* Cp pht vng nh c kchthc bng vi kch thcca mt s nguyn */pb= (int*)calloc(10, sizeof(int)); /* Cp pht vng nh c th cha c 10 s
nguyn*/Lu : Khi s dng hm malloc() hay calloc(), ta phi p kiu v nguyn mu cchm ny tr v con tr kiu void.
b. Thu hi vng nh: Mt vng nh cp pht cho bin ng do bin con tr gia ch, khi khng cn s dng na, ta s thu hi li vng nh ny nh hmfree().C php: void free(void *block)
ngha: Gii phng vng nhc qun l bi con tr block.V d: v d trn, sau khi thc hin xong, thu hi vng nh cho 2 bin con tr pa
v pb nh sau:free(pa); free(pb);
Chng 6: Cc cu trc dliu khc
8/2/2019 bg lap trinh c
85/98
85
1. Kiu cu trc(Structure): l kiu d liu bao gmnhiu thnh phn c kiu khc nhau, mi thnh
phn c gi l mt trng (field)a. Khai bo:
Cch 1:struct {
; ;..
;};
Cch 2: S dng t khatypedef nh ngha kiu:typedef struct{
; ;..
;} ;
1. Kiu cu trc(tip)
8/2/2019 bg lap trinh c
86/98
86
struct svien{
char hoten[30];char diachi[40];float dtb;
};
typedef struct{
char hoten[30];char diachi[40];float dtb;
} sinhvien;
Khai bo bin:struct svien sv1,sv2;
sinhvien sv3, sv4;
b. Truy xut n mt trng ca bin cu trcCch 1: .Cch 2: ->
V d v kiu cu trc
8/2/2019 bg lap trinh c
87/98
87
#include#include#includetypedef struct
{ unsigned char Ngay,Thang,Nam;} NgayThang;
typedef struct{ char MSSV[10];
char HoTen[40];NgayThang NgaySinh;int Phai;char DiaChi[40];
} SinhVien;
/* Hm in ln mn hnh 1 mu tin SinhVien*/void InSV(SinhVien s){
printf("%7s %20s %2d-%2d-%4d %s\n",s.MSSV,s.HoTen,s.NgaySinh.Ngay,s.NgaySinh.Thang,s.NgaySinh.Nam,s.DiaChi);
}
V d v kiu cu trc(tip)
8/2/2019 bg lap trinh c
88/98
88
int main(){
SinhVien SV, s;
printf("Nhap MSSV: ");gets(SV.MSSV);printf("Nhap Ho va ten: ");gets(SV.HoTen);printf("Sinh ngay: ");scanf("%d",&SV.NgaySinh.Ngay);printf("Thang: ");scanf("%d",&SV.NgaySinh.Thang);printf("Nam: ");scanf("%d",&SV.NgaySinh.Nam);
printf("Gioi tinh (0: Nu), (1: Nam): ");scanf("%d",&SV.Phai);flushall();printf("Dia chi: ");gets(SV.DiaChi);InSV(SV);s=SV; /* Gn tr cho mu tin s*/InSV(s);
getch();return 0;}
V d v con trn kiu cu trc
8/2/2019 bg lap trinh c
89/98
89
#include#includetypedef struct
{ unsigned char Ngay,Thang,Nam;} NgayThang;int main(){
NgayThang Ng={25,2,2007};
NgayThang *p;p=&Ng;printf("Truy cap cau truc thong thuong %d-%d-%d\n",
Ng.Ngay,Ng.Thang,Ng.Nam);printf("Truy cap qua con tro %d-%d-%d\n",
p->Ngay,p->Thang,p->Nam);printf("Truy cap qua vung nho con tro %d-%d-%d\n",(*p).Ngay,(*p).Thang,(*p).Nam);
getch();return 0;
}
2. Kiu tp tin
8/2/2019 bg lap trinh c
90/98
90
a. Khi nim:
- L kiu d liu cho php lu tr d liu b nh ngoi (a). Khi kt thc
chng trnh th d liu vn cn do chng ta c th s dng nhiu ln.- Ngoi ra, kiu tp tin c th c kch thc ln vi s lng cc phn t
khng hn ch (ch b hn ch bi dung lng ca b nh ngoi). Bin tp tin: l mt bin thuc kiu d liu tp tin dng i din cho
mt tp tin. D liu cha trong mt tp tin c truy xut qua cc thaotc vi thng s l bin tp tin i din cho tp tin .
Con tr tp tin: Khi mt tp tin c m ra lm vic, ti mi thiim, s c mt v tr ca tp tin m ti vic c/ghi thng tin s xy ra.Ngi ta hnh dung c mt con trang chn v tr v t tn n lcon tr tp tin.
b. Khai bo:FILE ;
V d: FILE *f1,*f2;
c. Cc thao tc trn tp tin
8/2/2019 bg lap trinh c
91/98
91
+M tp tinC php: FILE *fopen(char *Path, const char *Mode)
Trong :
- Path: chui chng dn n tp tin trn a.- Type: chui xc nh cch thc m tp tin s m.
V d: M mt tp tin tn C:\BAITAP\VIDU.TXT ghi.FILE *f;f = fopen(C:\\BAITAP\\VIDU.TX, w);if (f!=NULL){
/* Cc cu lnh thao tc vi tp tin*/
/* ng tp tin*/}
Bng cc gi tr ca ModeCh h
8/2/2019 bg lap trinh c
92/98
92
Ch nghar Mtp tin vn bn c
w To ra tp tin vn bn mi ghi
a Ni vo tp tin vn bnrb Mtp tin nh phn c
wb To ra tp tin nh phn ghi
ab Ni vo tp tin nh phnr+ Mmt tp tin vn bn c/ghi
w+ To ra tp tin vn bn c ghi
a+ Ni vo hay to mi tp tin vn bn c/ghir+b Mra tp tin nh phn c/ghi
w+b To ra tp tin nh phn c/ghi
a+b Ni vo hay to mi tp tin nh phn
c. Cc thao tc trn tp tin
8/2/2019 bg lap trinh c
93/98
93
+ Hm ng tp tin: Hm fclose() c dng ng tp tinc m bi hm fopen(). Hm ny s ghi d liu cn litrong vng m vo tp tin v ng li tp tin.
C php: int fclose(FILE *f)+ Hm kim tra n cui tp tin hay cha?
C php: int feof(FILE *f)
Kim tra xem chm ti cui tp tin hay cha v tr vEOF nu cui tp tin c chm ti, ngc li tr v 0.+ Hm di chuyn con tr tp tin vu tp tin - Hm rewind()
Khi ta ang thao tc mt tp tin ang m, con tr tp tin lun
di chuyn v pha cui tp tin. Mun cho con tr quay vutp tin nh khi m n, ta s dng hm rewind().C php: void rewind(FILE *f)
d. Truy cp vo tp tin vn bn
8/2/2019 bg lap trinh c
94/98
94
+ Hm ghi d liu ln tp tin vn bn: Hm putc()Hm ny c dng ghi mt k t ln mt tp tin vn bn ang c m lm vic.
C php: int putc(int c, FILE *f)Trong , tham s c cha m Ascii ca mt k t no . M ny c ghi ln tp tin lin ktvi con tr f. Hm ny tr v EOF nu gp li.
+ Hm ny dng ghi mt chui k t cha trong vng m ln tp tin vn bn.C php: int puts(const char *buffer, FILE *f)
Trong , buffer l con tr c kiu char chn v tr u tin ca chui k tc ghi vo. Hmny tr v gi tr 0 nu buffer cha chui rng v tr v EOF nu gp li.
V d: Vit chng trnh ghi chui k t ln tp tin vn bn C:\BAITHO.TXT#include#includeint main(){ FILE *f;
f=fopen(C:\\BAITHO","r+");if (f!=NULL) {
fputs(Chi co thuyen moi hieu.\n",f);fputs( Bien menh mong duong nao.",f);fclose(f);
}getch();return 0;
}
d. Truy cp vo tp tin vn bn(tip)
8/2/2019 bg lap trinh c
95/98
95
+ Hm dng ghi d liu c nh dng ln tp tin vn bn.C php: fprintf(FILE *f, const char *format, varexpr)
Trong : format: chui nh dng (ging vi cc nh dngca hm printf()), varexpr: danh sch cc biu thc, mi biuthc cch nhau du phy (,).
+ Hm dng c d liu t tp tin vn bn ang c mlm vic.
C php: int getc(FILE *f)Hm ny tr v m Ascii ca mt k t no (k c EOF)trong tp tin lin kt vi con tr f.
+ Hm c d liu t tp tin vn bn vo danh sch cc bin theonh dng.
C php: fscanf(FILE *f, const char *format, varlist)Trong : format: chui nh dng (ging hm scanf());varlist: danh sch cc bin mi bin cch nhau du phy (,).
V d
8/2/2019 bg lap trinh c
96/98
96
Vit chng trnh chp tp tin C:\BAITHO.TXT trn sang tp tin D:\BAIHAT.TXT.#include#include
int main(){ FILE *f1,*f2;f1=fopen(C:\\BAITHO.TXT","rt");f2=fopen("D:\\BAIHAT.TXT","wt");if (f1!=NULL && f2!=NULL){
int ch=fgetc(f1);while (! feof(f1)){
fputc(ch,f2);ch=fgetc(f1);
}fcloseall();
}getch();return 0;
}
e. Truy cp vo tp tin nh phn
8/2/2019 bg lap trinh c
97/98
97
+ Hm ghi d liu ln tp tin nh phn - Hm fwrite()C php: size_t fwrite(const void *ptr, size_t size, size_t n, FILE *f)Trong :
- ptr: con tr chn vng nh cha thng tin cn ghi ln tp tin.- n: s phn t s ghi ln tp tin.- size: kch thc ca mi phn t.- f: con tr tp tin c m.- Gi tr tr v ca hm ny l s phn tc ghi ln tp tin. Gi tr ny bng n tr
khi xut hin li.
+c d liu t tp tin nh phn - Hm fread()C php: size_t fread(const void *ptr, size_t size, size_t n, FILE *f)Trong :- ptr: con tr chn vng nh s nhn d liu t tp tin.
- n: s phn tc c t tp tin.- size: kch thc ca mi phn t.- f: con tr tp tin c m.- Gi tr tr v ca hm ny l s phn t c c t tp tin. Gi tr ny bng n
hay nh hn n nu chm n cui tp tin hoc c li xut hin..
e. Truy cp vo tp tin nh phn(tip)
8/2/2019 bg lap trinh c
98/98
98
+ Hm di chuyn con tr tp tin - Hm fseek()- Vic ghi hay c d liu t tp tin s lm cho con tr tp tin dch chuynmt s byte, y chnh l kch thc ca kiu d liu ca mi phn t ca
tp tin.- Khi ng tp tin ri m li n, con tr lun v tr ngay u tp tin.Nhng nu ta s dng kiu m tp tin l a ghi ni d liu, con tr tptin s di chuyn n v tr cui cng ca tp tin ny.- Ta cng c thiu khin vic di chuyn con tr tp tin n v tr chnhbng hm fseek().
C php: int fseek(FILE *f, long offset, int whence)Trong :
- f: con tr tp tin ang thao tc.- offset: s byte cn dch chuyn con tr tp tin k t v tr trc . Phn tu tin
l v tr 0.
- whence: v tr bt u tnh offset, ta c th chn im xut pht l:0 SEEK_SET V tr u tp tin1 SEEK_CUR V tr hin ti ca con tr tp tin2 SEEK_END V tr cui tp tin
- Kt qu tr v ca hm l 0 nu vic di chuyn thnh cng. Nu khng thnh cng,1 gi tr khc 0 ( l 1 m li) c tr v.
Top Related