Professional Documents
Culture Documents
Bin tp bi:
duongvanhieu
Gio Trnh Lp Trnh Cn Bn
Bin tp bi:
duongvanhieu
Cc tc gi:
unknown
1/199
2.6.1. Mc tiu bi hc
2.6.2. Mng 1 chiu v Mng nhiu chiu
2.6.3. Bi tp
2.7. Chng VII. Kiu con tr
2.7.1. Mc tiu bi hc
2.7.2. Kiu d liu con tr
2.7.3. Bi tp
2.8. Chng VIII. Chui k t
2.8.1. Mc tiu ca bi hc
2.8.2. Chui k t v cc thao tc trn chui k t
2.8.3. Bi tp
2.9. Chng IX. Kiu cu trc
2.9.1. Mc tiu ca bi hc
2.9.2. Kiu cu trc v cc thao tc trn kiu cu trc
2.9.3. Bi tp v kiu cu trc
2.10. Chng X. Kiu tp tin
2.10.1. Mc tiu bi hc
2.10.2. Kiu tp tin v cc thao tc trn kiu tp tin
2.10.3. Bi tp
Tham gia ng gp
2/199
Phn I.Tng quan v mn hc
Tng quan
MC CH YU CU
- Cc lnh c cu trc.
I TNG MN HC
3/199
- Sinh vin nm th 2 chuyn ngnh in t (Vin thng, T ng ha)
NI DUNG CT LI
Trong khun kh 45 tit, gio trnh c cu trc thnh 2 phn: Phn 1 gii thiu v lp
trnh cu trc, cc khi nim v lp trnh, gii thut Phn 2 trnh by c h thng v
ngn ng lp trnh C, cc cu lnh, cc kiu d liu
[1] Nguyn Vn Linh, Gio trnh Tin Hc i Cng A, Khoa Cng Ngh Thng Tin,
i hc Cn Th, 1991.
4/199
[2] Nguyn nh T, Hong c Hi , Gio trnh l thuyt v bi tp ngn ng C; Nh
xut bn Gio dc, 1999.
[3] Nguyn Cn, C Tham kho ton din, Nh xut bn ng Nai, 1996.
[5] Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall
Publisher, 1988.
T KHA
Bi ton, chng trnh, gii thut, ngn ng gi, lu , biu thc, gn, r nhnh, lp,
hm, mng, con tr, cu trc, tp tin.
5/199
Gii thiu v Cu Trc D Liu V Gii Thut
Mc tiu ca bi hc
Trng tm ca phn ny l gii thut & cch biu din gii thut. Chnh nh iu ny ta
mi c th gii quyt cc yu cu bng chng trnh my tnh.
6/199
Cu trc d liu v gii thut
M t cc bc gii bi ton.
V s x l da trn cc bc.
Da trn s x l vit chng trnh x l bng ngn ng gi (ngn ng
bnh thng ca chng ta).
Chn ngn ng lp trnh v chuyn chng trnh t ngn ng gi sang ngn
ng lp trnh to thnh mt chng trnh hon chnh.
Thc hin chng trnh: nhp vo cc tham s, nhn kt qu.
Trong nhiu trng hp, t bi ton thc t chng ta phi xy dng m hnh ton ri
mi xc nh c cc bc gii. Vn ny s c trnh by chi tit trong mn
Cu Trc D Liu.
GII THUT
V d 1: Gi s c hai bnh A v B ng hai loi cht lng khc nhau, chng hn bnh A
ng ru, bnh B ng nc mm. Gii thut hon i (swap) cht lng ng trong
hai bnh l:
Bc 1: Nhp vo hai s a v b.
7/199
Bc 2: So snh 2 s a,b chn s nh nht gn cho UCLN.
Bc 3: Nu mt trong hai s a hoc b khng chia ht cho UCLN th thc hin
bc 4, ngc li (c a v b u chia ht cho UCLN) th thc hin bc 5.
Bc 4: Gim UCLN mt n v v quay li bc 3
Bc 5: In UCLN - Kt thc.
Ngn ng t nhin
Bc 1: Nhn gi tr ca cc tham s a, b
8/199
Bc 2: Xt gi tr ca a xem c bng 0 hay khng? Nu a=0 th lm bc 3,
nu a khc khng th lm bc 4.
Bc 3: (a bng 0) Nu b bng 0 th ta kt lun phng trnh v s nghim, nu
b khc 0 th ta kt lun phng trnh v nghim.
Bc 4: ( a khc 0) Ta kt lun phng trnh c nghim x=-b/a
Ngn ng s (Lu )
9/199
Mt s gii thut c bn
V d 1: Cn vit chng trnh cho my tnh sao cho khi thc hin chng trnh , my
tnh yu cu ngi s dng chng trnh nhp vo cc s hng ca tng (n); nhp vo
dy cc s hng ai ca tng. Sau , my tnh s thc hin vic tnh tng cc s ai ny
v in kt qu ca tng tnh c.
tnh tng trn, chng ta s dng phng php cng tch ly ngha l khi u cho
S=0. Sau mi ln nhn c mt s hng ai t bn phm, ta cng tch ly ai vo S (ly
gi tr c lu tr trong S, cng thm ai v lu tr li vo S). Tip tc qu trnh ny
n khi ta tch ly c an vo S th ta c S l tng cc ai. Chi tit gii thut c m t
bng ngn ng t nhin nh sau:
- Bc 1: Nhp s cc s hng n.
- Bc 5: Nhp ai
10/199
- Bc 6: Cho S=S+ai (lu tr gi tr S + ai trong S)
- Bc 7: Tng i ln 1 n v v quay li bc 4.
- Bc 1: Nhp 2 s a v b
11/199
V d 3: Vit chng trnh cho php nhp vo 1 s n, sau ln lt nhp vo n gi tr
a1, a2,,an. Hy tm v in ra gi tr ln nht trong n s a1, a2, , an.
gii quyt bi ton trn, chng ta p dng phng php th v sa. Ban u gi s
a1 l s ln nht (c lu trong gi tr max); sau ln lt xt cc ai cn li, nu ai
no ln hn gi tr max thi lc max s nhn gi tr l ai. Sau khi xt ht cc ai th
max chnh l gi tr ln nht cn tm.
- Bc 1: Nhp s n
- Bc 2: Nhp s th nht a1
- Bc 3: Gn max=a1
- Bc 4: Gn i=2
- Bc 6: Nhp ai
12/199
- Bc 8: Tng i ln mt n v v quay li bc 5
- Bc 9: In max - kt thc
- Bc 1: Gn i=1
- Bc 2: Gn j=i+1
- Bc 6: Tng j ln mt n v v quay li bc 4
- Bc 7: Tng i ln mt n v v quay li bc 3
13/199
M t gii thut sp xp bng lu
Tun t (Sequential):
Cc cng vic c thc hin mt cch tun t, cng vic ny ni tip cng vic kia.
- Cu trc 2: Nu < iu kin> (ng) th thc hin <cng vic 1>, ngc li (iu kin
sai) th thc hin <cng vic 2>
14/199
- Cu trc 3: Trng hp < i> thc hin <cng vic i>
Cu trc lp (Repeating)
- Lp khng xc nh: l loi lp m khi vit chng trnh ngi lp trnh cha xc nh
c cng vic s lp bao nhiu ln. S ln lp s c xc nh khi chng trnh thc
thi.
KIU D LIU
Kiu d liu s cp
15/199
NGN NG LP TRNH
INPUT b
Ngn ng cp cao (High level language): Ra i v pht trin nhm phn nh cch thc
ngi lp trnh ngh v lm. Rt gn vi ngn ng con ngi (Anh ng) nhng chnh
xc nh ngn ng ton hc. Cng vi s pht trin ca cc th h my tnh, ngn ng
lp trnh cp cao cng c pht trin rt a dng v phong ph, vic lp trnh cho
my tnh v th m cng c nhiu khuynh hng khc nhau: lp trnh cu trc, lp trnh
hng i tng, lp trnh logic, lp trnh hm... Mt chng trnh vit bng ngn ng
cp cao c gi l chng trnh ngun (source programs). my tnh "hiu" v thc
hin c cc lnh trong chng trnh ngun th phi c mt chng trnh dch dch
chung trnh ngun (vit bng ngn ng cp cao) thnh dng chng trnh c kh nng
thc thi.
16/199
Chng trnh dch
Nh trn trnh by, mun chuyn t chng trnh ngun sang chng trnh ch phi
c chng trnh dch. Thng thng mi mt ngn ng cp cao u c mt chng trnh
dch ring nhng chung quy li th c hai cch dch: thng dch v bin dch.
Thng dch (interpreter): L cch dch tng lnh mt, dch ti u thc hin ti .
Chng hn ngn ng LISP s dng trnh thng dch.
Bin dch (compiler): Dch ton b chng trnh ngun thnh chng trnh ch ri sau
mi thc hin. Cc ngn ng s dng trnh bin dch nh Pascal, C...
Gia thng dch v bin dch c khc nhau ch: Do thng dch l va dch va thc
thi chng trnh cn bin dch l dch xong ton b chng trnh ri mi thc thi nn
chng trnh vit bng ngn ng bin dch thc hin nhanh hn chng trnh vit bng
ngn ng thng dch.
17/199
Bi tp
Mc ch yu cu
Ni dung
Bng ngn ng t nhin v lu , anh (ch) hy m t gii thut cho cc bi ton sau:
2.Tnh tng bnh phng ca n s nguyn c dng sau: S= a21 + a22 + + a2n, vi n v ai
(i=1..n) l cc s s nhp t bn phm.
a) 12 13 11 10 10 9 8 7 6 5
b) 11 12 13 14 3 4 5 6 7 11 8
18/199
Phn II.Ngn ng Lp trnh C
Chng I. Gii thiu v ngn ng C & Mi trng TurBo
C 3.0
Mc tiu ca bi hc
19/199
Tng quan v ngn ng lp trnh C
20/199
Tnh tng thch (compatible): C c b tin x l v mt th vin chun v
cng phong ph nn khi chuyn t my tnh ny sang my tnh khc cc
chng trnh vit bng C vn hon ton tng thch.
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.
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.
21/199
Mi trng lp trnh Turbo C
Gi Turbo C
Chy Turbo C cng ging nh chy cc chng trnh khc trong mi trng DOS hay
Windows, mn hnh s xut hin menu ca Turbo C c dng nh sau:
Dng trn cng gi l thanh menu (menu bar). Mi mc trn thanh menu li c th c
nhiu mc con nm trong mt menu ko xung.
Dng di cng ghi chc nng ca mt s phm c bit. Chng hn khi g phm F1 th
ta c c mt h thng tr gip m ta c th tham kho nhiu thng tin b ch.
Mun vo thanh menu ngang ta g phm F10. Sau dng cc phm mi tn qua tri
hoc phi di chuyn vng sng ti mc cn chn ri g phm Enter. Trong menu ko
xung ta li dng cc phm mi tn ln xung di chuyn vng sng ti mc cn chn
ri g Enter.
22/199
Son tho chng trnh mi
Mun son tho mt chng trnh mi ta chn mc New trong menu File (File ->New)
Trn mn hnh s xut hin mt vng trng cho ta son tho ni dung ca chng
trnh. Trong qu trnh son tho chng trnh ta c th s dng cc phm sau:
- Ctrl-F1: Tr gip theo ng cnh (tc l khi con tr ang trong mt t no o, chng
hn int m bn g phm Ctrl-F1 th bn s c c cc thng tin v kiu d liu int)
Cc phm xo k t/ dng:
23/199
Xa t v tr con tr n cui dng Ctrl-Q-Y
Xa k t bn phi con tr Ctrl-T
S dng khi :
Phm tt ngha
Ctrl-K-B nh du u khi
Ctrl-K-K nh du cui khi
Ctrl-K-C Chp khi vo sau v tr con tr
Ctrl-K-V Chuyn khi ti sau v tr con tr
Ctrl-K-Y Xo khi
Ctrl-K-W Ghi khi vo a nh mt tp tin
Ctrl-K-R c khi (tp tin) t a vo sau v tr con tr
Ctrl-K-H Tt/m khi
Ctrl-K-T nh du t cha chon tr
Ctrl-K-P In mt khi
24/199
F2 Lu chng trnh ang son vo a Ctrl-K-S
F3 To tp tin mi
Di chuyn con tr mt khong ng thi y dng vn
Tab Ctrl-I
bn
ESC Hy b thao tc lnh Ctrl-U
ng tp tin hin ti Alt-F3
Hin hp thoi tm kim Ctrl-Q-F
Hin hp thoi tm kim v thay th Ctrl-Q-A
Tm kim tip tc Ctrl-L
#include <stdio.h>
#include<conio.h>
int main ()
char ten[50];
scanf(%s,ten);
getch();
return 0;
25/199
khng cn c phn m rng (s t ng c phn m rng l .C hoc .CPP s ni thm
trong phn Option). Sau g phm Enter.
thc hin chng trnh hy dng Ctrl-F9 (gi phm Ctrl v g phm F9).
V d: Thc hin chng trnh va son tho xong v quan st trn mn hnh thy kt
qu ca vic thc thi chng trnh sau g phm bt k tr li vi Turbo.
#include <stdio.h>
#include<conio.h>
int main ()
char ten[50];
26/199
printf(Xin cho biet ten cua ban !);
scanf(%s,ten);
printf(Chao mung ban den voi Ngon ngu lap trinh C);
getch();
return 0;
Ghi li chng trnh ny (F2) v cho thc hin (Ctrl-F9). Hy so snh xem c g khc
trc?
27/199
Chng II. Cc thnh phn c bn trong C
Mc tiu bi hc
B ch vit trong C.
Cc t kha.
Danh biu.
Cc kiu d liu
Bin v cc biu thc trong C.
Cu trc ca mt chng trnh vit bng ngn ng lp trnh C
28/199
Kiu d liu s cp chun trong C
Kiu s nguyn
Kiu char: lu cc s nguyn t -128 n 127. Kiu char s dng bit tri nht lm
bit du.
29/199
3 short int T -32,768 n 32,767
4 int T -32,768 n 32,767
Kiu enum, short int, int : Lu cc s nguyn t -32768 n 32767. S dng bit bn tri
nht lm bit du.
Kiu s thc
30/199
Ngoi ra ta cn c kiu d liu void, kiu ny mang ngha l kiu rng khng cha gi
tr g c.
31/199
Tn v hng trong C
Tn (danh biu)
Tn hay cn gi l danh biu (identifier) c dng t cho chng trnh, hng, kiu,
bin, chng trnh con... Tn c hai loi l tn chun v tn do ngi lp trnh t.
Hng (Constant)
Hng s thc
S thc bao gm cc gi tr kiu float, double, long double c th hin theo 2 cch
sau:
- Cch 1: S dng cch vit thng thng m chng ta s dng trong cc mn Ton,
L, iu cn lu l s dng du thp phn l du chm (.);
32/199
- Cch 2: S dng cch vit theo s m hay s khoa hc. Mt s thc c tch lm 2
phn, cch nhau bng k t e hay E
Phn m: l mt s nguyn
Hng s nguyn
S nguyn gm cc kiu int (2 bytes) , long (4 bytes) c th hin theo nhng cch
sau.
- Hng s nguyn 2 bytes (int) h thp phn: L kiu s m chng ta s dng thng
thng, h thp phn s dng cc k s t 0 n 9 biu din mt gi tr nguyn.
S bt phn : 0dndn-1dn-2d1d0 ( di c gi tr t 0 n 7)
0345=229 , 020=16
K t gi tr
33/199
A 10
B 11
C 12
D 13
E 14
F 15
V d:
- Hng s nguyn 4 byte (long): S long (s nguyn di) c biu din nh s int trong
h thp phn v km theo k t l hoc L. Mt s nguyn nm ngoi min gi tr ca s
int ( 2 bytes) l s long ( 4 bytes).
- Cc hng s cn li: Vit nh cch vit thng thng (khng c du phn cch gia 3
s)
V d:
12 (mi hai)
34/199
1345.67 (mt ba trm bn mi lm chm su mi by)
Hng k t
V d: a, A, 0, 9
Chng ta c th thc hin cc php ton s hc trn 2 k t (thc cht l thc hin php
ton trn gi tr ASCII ca chng)
Hng chui k t
Ch :
35/199
Bin v Biu thc Trong C
Bin
V d:
V d:
36/199
int main()
{}
b)Khai bo bin trong: Cc bin c t bn trong hm, chng trnh chnh hay mt
khi lnh. Cc bin ny ch c tc dng hay nh hng n hm, chng trnh hay khi
lnh cha n. Khi khai bo bin, phi t cc bin ny u ca khi lnh, trc cc
lnh gn,
V d 1:
#include <stdio.h>
#include<conio.h>
int main ()
{ int j,i; /*khai bao bien ben trong chuong trinh chinh*/
clrscr();
i=1; j=2;
bienngoai=3;
getch();
return 0;
V d 2:
#include <stdio.h>
37/199
#include<conio.h>
int main ()
clrscr();
i=4; j=5;
if(j>i)
else
getch();
return 0;
Biu thc
38/199
Mi ton hng c th l mt hng, mt bin hoc mt biu thc khc.
(-b + sqrt(Delta))/(2*a)
Cc ton t s hc
Ton t ngha
+ Cng
- Tr
* Nhn
/ Chia
% Chia ly phn d
-- Gim 1 n v
++ Tng 1 n v
x = x + 1 ging nh ++x
x = x 1 ging nh x
39/199
Tuy nhin gia tin t v hu t c s khc bit khi s dng trong 1 biu thc. Khi 1
ton t tng hay gim ng trc ton hng ca n, C thc hin vic tng hay gim
trc khi ly gi tr dng trong biu thc. Nu ton t i sau ton hng, C ly gi tr ton
hng trc khi tng hay gim n. Tm li:
x = 10
y = ++x //y = 11
Tuy nhin:
x = 10
x = x++ //y = 10
++ -- sau l * / % ri mi n + -
Ton t ngha
Cc ton t quan h
> Ln hn
>= Ln hn hoc bng
< Nh hn
<= Nh hn hoc bng
== Bng
!= Khc
Cc ton t Logic
&& AND
|| OR
! NOT
40/199
Bng chn tr cho cc ton t Logic:
P q p&&q p||q !p
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0
10>5&&!(10<9)||3<=4 Kt qu l ng
Cao nht: !
== !=
&&
Thp nht: ||
Cc ton t Bitwise:
Cc ton t Bitwise ni n kim tra, gn hay s thay i cc Bit tht s trong 1 Byte
ca Word, m trong C chun l cc kiu d liu v bin char, int. Ta khng th s dng
cc ton t Bitwise vi d liu thuc cc kiu float, double, long double, void hay cc
kiu phc tp khc.
Ton t ngha
& AND
| OR
^ XOR
41/199
~ NOT
>> Dch phi
<< Dch tri
p q p^q
0 0 0
0 1 1
1 0 1
1 1 0
Ton t ? cng vi :
E1 ? E2 : E3
V d:
X = 10
X = 10
if (X < 9) Y = 100
else Y = 200
42/199
Ton t con tr & v *
V d: m = &count
V d: q = *m
Ton t du phy ,
V d: x = (y=3,y+1);
Cc cp du ngoc vung thc hin thao tc truy xut phn t trong mng.
Tng kt v u tin
43/199
Cao nht () []
! ~ ++ -- (Kiu) * &
*/%
+-
<< >>
< <= > >=
&
^
|
&&
||
?:
= += -= *= /=
Thp nht ,
C nhiu php gn khc nhau, i khi ta c th s dng vit tt trong C na. Chng hn:
Cch vit ny lm vic trn tt c cc ton t nh phn (php ton hai ngi) ca C. Tng
qut:
c th c vit:
44/199
Bi tp
BI TP
a) A b) a c) Z d) z
45/199
Chng III. Cc cu lnh n trong C
Mc tiu ca bi hc
Cu lnh l g?
Cch s dng cu lnh gn gi tr ca mt biu thc cho mt bin.
Cch s dng lnh scanf nhp gi tr cho bin.
Cch s dng lnh printf xut gi tr ca biu thc ln mn hnh v cch
nh dng d liu.
46/199
Cu lnh v cc lnh n trong C
CU LNH
Phn loi
Lnh n l mt lnh khng cha cc lnh khc. Cc lnh n gm: lnh gn, cc cu
lnh nhp xut d liu
Lnh c cu trc l lnh trong cha cc lnh khc. Lnh c cu trc bao gm: cu
trc iu kin r nhnh, cu trc iu kin la chn, cu trc lp v cu trc lnh hp
thnh. Lnh hp thnh (khi lnh) l mt nhm bao gm nhiu khai bo bin v cc lnh
c gom vo trong cp du {}.
CC LNH N
Lnh gn
V d:
int main() {
int x,y;
return 0;
47/199
Nguyn tc khi dng lnh gn l kiu ca bin v kiu ca biu thc phi ging nhau,
gi l c s tng thch gia cc kiu d liu. Chng hn v d sau cho thy mt s
khng tng thch v kiu:
int main() {
int x,y;
y = Xin chao;
return 0;
Khi bin dch chng trnh ny, C s bo li "Cannot convert char * to int" tc
l C khng th t ng chuyn i kiu t char * (chui k t) sang int.
int main() {
int x,y;
float r;
char ch;
r = 9000;
return 0;
48/199
}
Chuyn i kiu ca <Biu thc> thnh kiu mi <Tn kiu>. Chng hn nh:
float f;
f = (float) 10 / 4; /* f lc ny l 2.5*/
Ch :
V d:
int x, y;
L hm cho php c d liu t bn phm v gn cho cc bin trong chng trnh khi
chng trnh thc thi. Trong ngn ng C, l hm scanf nm trong th vin stdio.h.
C php:
Gii thch:
49/199
- Chui nh dng: dng qui nh kiu d liu, cch biu din, rng, s ch s
thp phn... Mt s nh dng khi nhp kiu s nguyn, s thc, k t.
nh
ngha
dng
%[s
k Nhp s nguyn c ti a <s k s>
s]d
%[s
k s] Nhp s thc c ti a <s k s> tnh c du chm
f
%c Nhp mt k t
V d:
%d Nhp s nguyn
Nhp s nguyn ti a 4 k s, nu nhp nhiu hn 4 k s th ch nhn c
%4d
4 k s u tin
%f Nhp s thc
Nhp s thc ti a 6 k s (tnh lun du chm), nu nhp nhiu hn 6 k
%6f
s th ch nhn c 6 k s u tin (hoc 5 k s vi du chm)
V d:
scanf(%d%f,&bien1,&bien2);
/*Doc gia tri cho bien1 co kieu nguyen, bien2 co kieu thuc*/
scanf(%d%f%c,&bien1,&bien2,&bien3);
Lu :
50/199
Chui nh dng phi t trong cp du nhy kp ().
Cc bin (a ch bin) phi cch nhau bi du phy (,).
C bao nhiu bin th phi c by nhiu nh dng.
Th t ca cc nh dng phi ph hp vi th t ca cc bin.
nhp gi tr kiu char c chnh xc, nn dng hm fflush(stdin) loi b
cc k t cn nm trong vng m bn phm trc hm scanf().
nhp vo mt chui k t (khng cha khong trng hay kt thc bng
khong trng), chng ta phi khai bo kiu mng k t hay con tr k t, s
dng nh dng %s v tn bin thay cho a ch bin.
c vo mt chui k t c cha khong trng (kt thc bng phm Enter)
th phi dng hm gets().
V d:
int biennguyen;
float bienthuc;
char bienchar;
scanf(%3d,&biennguyen);
scanf(%5f,&bienthuc);
scanf(%2d%5f,&biennguyen, &bienthuc);
Nu ta nhp lin tip 2 s cch nhau bi khong trng nh sau: 1223 3.142325
scanf(%2d%5f%c,&biennguyen, &bienthuc,&bienchar)
51/199
Nu ta nhp lin tip 2 s cch nhau bi khong trng nh sau: 12345 3.142325:
Nu ta nhp chui nh sau: Nguyen Van Linh ? th gi tr ca bin chuoi1 hay chuoi2
ch l Nguyen .
scanf(%s%s,chuoi1, chuoi2);
gets(chuoi1);
Nu nhp chui : Nguyen Van Linh ? th gi tr ca bin chuoi1 l Nguyen Van Linh
C php:
Gii thch:
52/199
- Chui nh dng: dng qui nh kiu d liu, cch biu din, rng, s ch s
thp phn... Mt s nh dng khi i vi s nguyn, s thc, k t.
nh dng ngha
%d Xut s nguyn
%[.s ch s thp Xut s thc c <s ch s thp phn> theo quy tc lm trn
phn] f s.
%o Xut s nguyn h bt phn
%x Xut s nguyn h thp lc phn
%c Xut mt k t
%s Xut chui k t
%e hoc %E hoc %g
Xut s nguyn dng khoa hc (nhn 10 m x)
hoc %G
V d
%d In ra s nguyn
In s nguyn ti a 4 k s, nu s cn in nhiu hn 4 k s
%4d
th in ht
%f In s thc
In s thc ti a 6 k s (tnh lun du chm), nu s cn in
%6f
nhiu hn 6 k s th in ht
In s thc c 3 s l, nu s cn in c nhiu hn 3 s l th
%.3f
lm trn.
V d:
include<stdio.h>
int main(){
float bien_thuc=123.456703;
53/199
printf(Gia tri nguyen cua bien nguyen =%d\n,bien_nguyen);
return 0;
Kt qu in ra mn hnh nh sau:
Kt qu ta nhn c thm:
(int)bien_thuc);
hoc=%e,bien_thuc, bien_thuc);
Kt qu in ra mn hnh:
54/199
Lu : i vi cc k t iu khin, ta khng th s dng cch vit thng thng
hin th chng.
K t Gi tr
iu thp lc K t c hin th ngha
khin phn
\a 0x07 BEL Pht ra ting chung
Di chuyn con tr sang tri 1 k t
\b 0x08 BS
v xa k t bn tri (backspace)
\f 0x0C FF Sang trang
\n 0x0A LF Xung dng
\r 0x0D CR Tr v u dng
\t 0x09 HT Tab theo ct (ging g phm Tab)
\\ 0x5C \ Du \
\ 0x2C Du nhy n ()
\ 0x22 Du nhy kp ()
\? 0x3F ? u chm hi (?)
K t c m ACSII trong
\ddd ddd
h bt phn l s ddd
K t c m ACSII trong
\xHHH oxHHH
h thp lc phn l HHH
V d:
#include <stdio.h>
#include<conio.h>
int main ()
55/199
{ clrscr();
getch();
getch();
return 0;
56/199
57/199
Bi tp v cc cu lnh n trong C
Mc ch yu cu
Lm quen v nm vng cc lnh n gin (printf, scanf), cc kiu d liu chun (int,
long, char, float...), cc php ton v cc hm chun ca ngn ng lp trnh C. Thc hin
vit cc chng trnh hon chnh s dng cc lnh n gin v cc kiu d liu chun
.
Ni dung
*******************************************
THIEP MOI
Ti 05/42 Trn Ph - Cn Th
Rt mong c n tip !
H Thu Hng
*******************************************
2. Vit chng trnh nhp vo bn knh r ca mt hnh trn. Tnh chu vi v din tch ca
hnh trn theo cng thc :
Chu vi CV = 2*Pi*r
In cc kt qu ln mn hnh
58/199
Chu vi CV = a+b+c
Trong : p=CV/2
In cc kt qu ln mn hnh
a) In ra m Ascii ca k t .
b) In ra k t k tip ca n.
9. Vit chng trnh nhp vo ngy, thng, nm. In ra ngy thng nm theo dng dd/
mm/yy. (dd: ngy, mm: thng, yy : nm. V d: 20/11/99 )
59/199
Chng IV. Cc lnh c cu trc
Mc tiu ca bi hc
60/199
Khi lnh trong lp trnh C
KHI LNH
V d 1:
char ten[30];
scanf(%s, ten);
V d 2:
#include <stdio.h>
#include<conio.h>
int main ()
{ /*y l u khi*/
char ten[50];
scanf("%s",ten);
getch();
return 0;
61/199
Mt khi lnh c th cha bn trong n nhiu khi lnh khc gi l khi lnh lng nhau.
S lng nhau ca cc khi lnh l khng hn ch.
Minh ha:
lnh;
lnh;
lnh;
lnh;
lnh;
- Trong cc khi lnh khc nhau hay cc khi lnh lng nhau c th khai bo cc bin
cng tn.
V d 1:
lnh;
lnh;
62/199
}
lnh;
lnh;
V d 2:
lnh;
V d:
int a, b, c;
lnh;
63/199
{
int c, d;
lnh;
64/199
Cu trc r nhnh trong lp trnh C
Dng khng y
C php:
<Cng vic>
Lu c php:
Gii thch:
Nu iu kin ng (!= 0) th thc hin cu lnh hoc khi lnh lin sau iu kin.
Nu iu kin sai th b qua lnh hoc khi lnh lin sau iu kin (nhng lnh v khi
lnh sau vn c thc hin bnh thng v n khng ph thuc vo iu kin sau
if).
65/199
V d 1:
#include <stdio.h>
#include <conio.h>
int main ()
float a;
if (a !=0 )
getch();
return 0;
Gii thch:
- Lnh getch() lun lun c thc hin v n khng phi l lnh lin sau iu kin if.
#include <stdio.h>
#include<conio.h>
int main ()
66/199
{
int a,b;
scanf("%d%d",&a,&b);
if (a>b)
printf("\n Gia tri cua a lon hon gia tri cua b");
getch();
return 0;
Gii thch:
printf("\n Gia tri cua a lon hon gia tri cua b");
Dng y
C php:
67/199
<Cng vic 1>
else
Lu c php:
Gii thch:
#include <stdio.h>
#include <conio.h>
int main ()
68/199
{
float a;
if (a !=0 )
else
getch();
return 0;
Gii thch:
#include <stdio.h>
#include<conio.h>
int main ()
int a, b;
69/199
scanf("%d%d",&a,&b);
if (a>b)
else
getch();
return 0;
Gii thch:
a lon hon b
a=40 b=30
70/199
a=40 b=50
- Thng c 30 ngy: 4, 6, 9, 10
#include <stdio.h>
#include<conio.h>
int main ()
int thg;
scanf("%d",&thg);
if (thg==1||thg==3||thg==5||thg==7||thg==8||thg==10||thg==12)
else if (thg==4||thg==6||thg==9||thg==11)
else if (thg==2)
getch();
71/199
return 0;
Gii thch:
Lu :
V d 1:
72/199
if ( so1>0)
a=so2;
a=so3;
V d 2:
if (so1>0)
a=so2;
a=so3;
73/199
Cu trc la chn
CU TRC LA CHN
Cu trc la chn cho php la chn mt trong nhiu trng hp. Trong C, l cu
lnh switch.
C php:
case gi tr 1 :
break;
case gi tr n:
break;
[ default :
break; ]
Lu :
74/199
Gii thch:
- C nh th, so snh ti gi tr n.
Lu :
- Biu thc trong switch() phi c kt qu l gi tr kiu s nguyn (int, char, long, ).
#include <stdio.h>
75/199
#include<conio.h>
int main ()
clrscr();
scanf("%d",&songuyen);
phandu=(songuyen % 2);
switch(phandu)
break;
break;
getch();
return 0;
- 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 <stdio.h>
#include<conio.h>
76/199
int main ()
float thuong;
char pheptoan;
clrscr();
scanf("%d%d",&so1,&so2);
fflush(stdin);
scanf("%c",&pheptoan);
switch(pheptoan)
case '+':
break;
case '-':
break;
case '*':
break;
77/199
case '/':
if (so2!=0)
{ thuong=float(so1)/float(so2);
break;
default :
getch();
return 0;
Trong v d trn, ti sao phi xa k t trong vng m trc khi nhp php ton?
- Thng c 30 ngy: 4, 6, 9, 10
#include <stdio.h>
#include<conio.h>
int main ()
78/199
{ int thang;
clrscr();
scanf("%d",&thang);
switch(thang)
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
break;
case 4:
case 6:
case 9:
case 11:
break;
case 2:
79/199
printf ("\ Thang 2 co 28 hoac 29 ngay");
break;
default :
break;
getch();
return 0;
Trong v d trn, ti sao phi s dng case 1:, case 3:, case 12: ?
80/199
Cu trc vng lp v cc cu lnh c bit
CU TRC VNG LP
Cu trc vng lp cho php lp li nhiu ln 1 cng vic (c th hin bng 1 cu lnh
hay 1 khi lnh) no cho n khi tha mn 1 iu kin c th.
Vng lp for
Lnh for cho php lp li cng vic cho n khi iu kin sai.
C php:
<Cng vic>
Lu :
Gii thch:
81/199
<Cng vic>: c th hin l 1 cu lnh hay 1 khi lnh. Th t thc hin ca cu lnh
for nh sau:
- Biu thc 2: l mt biu thc kim tra iu kin ng sai dng vng lp.
- Trong mi biu thc c th c nhiu biu thc con. Cc biu thc con c phn bit
bi du phy.
#include <stdio.h>
#include<conio.h>
int main ()
{ int i;
clrscr();
printf("%d ",i);
82/199
getch();
return 0;
#include <stdio.h>
#include<conio.h>
int main ()
clrscr();
tong=0;
tong+=i;
getch();
return 0;
83/199
V d 3: Vit chng trnh in ra trn mn hnh mt ma trn c n dng m ct nh sau:
1234567
2345678
3456789
#include <stdio.h>
#include<conio.h>
int main ()
clrscr();
scanf("%d%d",&n,&m);
for (dong=0;dong<n;dong++)
printf("\n");
for (cot=1;cot<=m;cot++)
printf("%d\t",dong+cot);
getch();
return 0;
84/199
Vng lp while
C php:
<Cng vic>
Lu :
Gii thch:
- Nu iu kin ng (!=0) th thc hin cng vic ri quay li kim tra iu kin tip.
Lu :
85/199
- Lnh while gm c biu thc iu kin v thn vng lp (khi lnh thc hin cng
vic)
#include <stdio.h>
#include<conio.h>
int main ()
{ int i;
clrscr();
i=1;
while (i<=10)
printf("%d ",i++);
getch();
return 0;
#include <stdio.h>
#include<conio.h>
86/199
int main ()
clrscr();
scanf("%d",&n);
tong=0;
i=1;
while (i<=n)
tong+=i;
i++;
getch();
return 0;
1234567
2345678
3456789
87/199
#include <stdio.h>
#include<conio.h>
int main ()
clrscr();
scanf("%d%d",&n,&m);
dong=0;
while (dong<n)
printf("\n");
cot=1;
while (cot<=m)
printf("%d\t",dong+cot);
cot++;
dong++;
getch();
return 0;
88/199
}
Vng lp do while
C php:
do
<Cng vic>
Lu :
Gii thch:
- Trc tin cng vic c thc hin trc, sau mi kim tra Biu thc iu kin.
89/199
- Nu iu kin cn ng th thc hin cng vic ri quay li kim tra iu kin tip.
Lu :
#include <stdio.h>
#include<conio.h>
int main ()
{ int i;
clrscr();
i=1;
do
printf("%d ",i++);
while (i<=10);
getch();
return 0;
90/199
#include <stdio.h>
#include<conio.h>
int main ()
clrscr();
scanf("%d",&n);
tong=0;
i=1;
do
tong+=i;
i++;
} while (i<=n);
getch();
return 0;
91/199
1234567
2345678
3456789
#include <stdio.h>
#include<conio.h>
int main ()
clrscr();
scanf("%d%d",&n,&m);
dong=0;
do
printf("\n");
cot=1;
do
printf("%d\t",dong+cot);
cot++;
} while (cot<=m);
dong++;
92/199
} while (dong<n);
getch();
return 0;
So snh cc vng lp
- Kim tra iu kin trc thc hin cng vic sau nn on lnh thc hin cng vic c
th khng c thc hin .
Vng lp dowhile:
- Thc hin cng vic trc kim tra iu kin sau nn on lnh thc hin cng vic
c thc hin t nht 1 ln.
CC CU LNH C BIT
Lnh break
C php: break
Dng thot khi vng lp. Khi gp cu lnh ny trong vng lp, chng trnh s thot
ra khi vng lp v ch n cu lnh lin sau n. Nu nhiu vng lp --> break s thot ra
khi vng lp gn nht. Ngoi ra, break cn c dng trong cu trc la chn switch.
Lnh continue
C php: continue
93/199
- Khi gp lnh ny trong cc vng lp, chng trnh s b qua phn cn li trong vng
lp v tip tc thc hin ln lp tip theo.
94/199
Bi tp
Mc ch yu cu
Lm quen v bit cch s dng kiu d liu cu trc kt hp vi cc kiu d liu hc.
Phn bit kiu d liu mng v kiu cu trc. Thc hin cc bi tp trong phn ni dung.
Ni dung
1. Hy nh ngha kiu:
struct Hoso{
char HoTen[40];
float Diem;
char Loai[10];
};
Vit chng trnh nhp vo h tn, im ca n hc sinh. Xp loi vn ha theo cch sau:
im Xp loi
9, 10 Gii
7, 8 Kh
5, 6 Trung bnh
di 5 Khng t
95/199
Dang Kim C 4 Khong dat
........................................................................................................
96/199
Chng V. Chng trnh con
Mc tiu bi hc chng trnh con trong lp trnh C
97/199
Hm v cch xy dng mt hm
Mt tin li khc ca vic s dng chng trnh con l ta c th d dng kim tra xc
nh tnh ng n ca n trc khi rp ni vo chng trnh chnh v do vic xc
nh sai st tin hnh hiu nh trong chng trnh chnh s thun li hn. Trong C,
chng trnh con c gi l hm. Hm trong C c th tr v kt qu thng qua tn hm
hay c th khng tr v kt qu.
#include <stdio.h>
#include <conio.h>
98/199
}
int main()
int a, b, c;
scanf("%d%d%d",&a,&b,&c);
getch();
return 0;
Hm th vin
Mt s th vin:
99/199
values.h
...
Hm ngi dng
XY DNG MT HM
nh ngha hm
Cu trc ca mt hm t thit k:
<kiu kt qu> Tn hm ([< kiu t s> < tham s >][,< kiu t s >< tham s >][])
100/199
[return [<Biu thc>];]
Gii thch:
C php:
101/199
}
int u;
if (a<b)
u=a;
else
u=b;
u--;
return u;
S dng hm
#include<stdio.h>
unsigned int u;
102/199
if (a<b)
u=a;
else
u=b;
u--;
return u;
int main()
UC = ucln(a,b);
return 0;
Nguyn tc hot ng ca hm
- Chng trnh s thc hin tip cc cu lnh trong thn hm bt u t lnh u tin
n cu lnh cui cng.
103/199
- Khi gp lnh return hoc du } cui cng trong thn hm, chng trnh s thot khi
hm tr v chng trnh gi n v thc hin tip tc nhng cu lnh ca chng trnh
ny.
Mc nhin, vic truyn tham s cho hm trong C l truyn theo gi tr; ngha l cc gi
tr thc (tham s thc) khng b thay i gi tr khi truyn cho cc tham s hnh thc
#include <stdio.h>
#include <conio.h>
int i;
for(i=1;i<=50;i++) printf(%c,ch);
printf(\n);
int main()
char c = A;
InKT(*); /* In ra 50 dau * */
InKT(+);
InKT(c);
return 0;
104/199
Lu :
- Trong hm InKT trn, bin ch gi l tham s hnh thc c truyn bng gi tr (gi
l tham tr ca hm). Cc tham tr ca hm coi nh l mt bin cc b trong hm v
chng c s dng nh l d liu u vo ca hm.
#include <stdio.h>
#include <conio.h>
int t;
a=b;
b=t;
return 0;
int main()
int a, b;
clrscr();
105/199
scanf("%d%d",&a,&b);
hoanvi(a,b);
getch();
return 0;
Gii thch:
* Lu
Trong on chng trnh trn, nu ta mun sau khi kt thc chng trnh con gi tr ca
a, b thay i th ta phi t tham s hnh thc l cc con tr, cn tham s thc t l a
ch ca cc bin.
#include <stdio.h>
106/199
#include <conio.h>
long t;
return 0;
int main()
long a, b;
clrscr();
scanf("%ld%ld",&a,&b);
hoanvi(&a,&b); /* Phi l a ch ca a v b */
getch();
107/199
return 0;
Gii thch:
Lu : Kiu con tr v cc php ton trn bin kiu con tr s ni trong phn sau.
HM QUY
nh ngha
#include <stdio.h>
#include <conio.h>
108/199
if (n==0)
return 1;
else
return n*giaithua_dequy(n-1);
kq=1;
for (i=2;i<=n;i++)
kq=kq*i;
return kq;
int main()
int n;
clrscr();
scanf("%d",&n);
109/199
n,giaithua_khongdequy(n));
getch();
return 0;
110/199
Bi tp
Mc ch yu cu
Ni dung
3. Vit hm in n k t c trn mt dng. Vit chng trnh cho nhp 5 s nguyn cho
bit s lng hng bn c ca mt hng A 5 ca hng khc nhau. Dng hm trn v
biu so snh 5 gi tr , mi tr dng mt k t ring.
1 ( hng 0 )
1 1 ( hng 1 )
1 2 1 ( hng 2 )
1331
14641
1 5 10 10 5 1
1 6 15 20 15 6 1 (hng 6)
111/199
......................................................
Vit chng trnh in ln mn hnh tan gic Pascal c n hng (n nhp vo khi chy
chng trnh) bng cch to hai hm tnh giai tha v tnh t hp.
112/199
10. Vit chng trnh phn tch mt s nguyn dng ra tha s nguyn t.
113/199
Chng VI. Kiu mng
Mc tiu bi hc
114/199
Mng 1 chiu v Mng nhiu chiu
MNG 1 CHIU
Khai bo
ngha:
- S phn t: l mt hng s nguyn, cho bit s lng phn t ti a trong mng l bao
nhiu (hay ni khc i kch thc ca mng l g).
115/199
- y, ta khai bo mt bin mng gm c s phn t phn t, phn t th nht l tn
mng [0], phn t cui cng l tn mng[s phn t -1]
V d:
int a[10]; /* Khai bo bin mng tn a, phn t th nht l a[0], phn t cui cng l
a[9].*/
V tr 0 1 2 3 4 5 6 7 8 9
Tn phn t a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
Khi khai bo, khng cho bit r s phn t ca mng, kiu khai bo ny thng c p
dng trong cc trng hp: va khai bo va gn gi tr, khai bo mng l tham s hnh
thc ca hm.
a. Va khai bo va gn gi tr
C php:
116/199
Mi phn t ca mng c truy xut thng qua Tn bin mng theo sau l ch s nm
trong cp du ngoc vung [ ]. Chng hn a[0] l phn t u tin ca mng a c
khai bo trn. Ch s ca 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 coi nh l mt bin c
kiu d liu l kiu c ch ra trong khai bo bin mng.
V d 1:
int a[10];
Trong khai bo ny, vic truy xut cc phn t c ch ra trong hnh 1. Chng hn phn
t th 2 (c v tr 1) l a[1]
#include <stdio.h>
#include <conio.h>
int main()
int n,i,j,tam;
int dayso[]={66,65,69,68,67,70};
clrscr();
for (i=0;i<n;i++)
117/199
printf("%d ",dayso[i]);
return 0;
#include<conio.h>
#include<stdio.h>
int main()
unsigned int N;
do
Du=N % 2;
N = N/2;
} while(N>0);
for(i=K-1;i>=0;i--)
118/199
printf("%d",NhiPhan[i]);
getch();
return 0;
Chng trnh s c chia thnh cc hm Nhap (Nhp cc s), SapXep (Sp xp) v
InMang (In cc s); cc tham s hnh thc ca cc hm ny l 1 mng khng ch nh
r s phn t ti a, nhng ta cn c thm s phn t thc t c s dng ca mng l
bao nhiu, y l mt gi tr nguyn.
#include<conio.h>
#include<stdio.h>
int i;
119/199
int i;
printf("%d ",a[i]);
printf("\n");
int t,i;
for(i=0;i<N-1;i++)
for(int j=i+1;j<N;j++)
if (a[i]>a[j])
t=a[i];
a[i]=a[j];
a[j]=t;
int main()
int b[20], N;
scanf("%d",&N);
120/199
Nhap(b,N);
InMang(b,N);
SapXep(b,N); /* Gi hm sp xp*/
InMang(b,N);
getch();
return 0;
Khai bo
C php:
121/199
<Kiu> <Tn mng><[S phn t chiu 1]><[S phn t chiu 2]>
Dng\
0 1 2 3 4 5 6 7 8
Ct
0 m[0][0] m[0][1] m[0][2] m[0][3] m[0][4] m[0][5] m[0][6] m[0][7] m[0][8]
1 m[1][0] m[1][1] m[1][2] m[1][3] m[1][4] m[1][5] m[1][6] m[1][7] m[1][8]
2 m[2][0] m[2][1] m[2][2] m[2][3] m[2][4] m[2][5] m[2][6] m[2][7] m[2][8]
3 m[3][0] m[3][1] m[3][2] m[3][3] m[3][4] m[3][5] m[3][6] m[3][7] m[3][8]
4 m[4][0] m[4][1] m[4][2] m[4][3] m[4][4] m[4][5] m[4][6] m[4][7] m[4][8]
5 m[5][0] m[5][1] m[5][2] m[5][3] m[5][4] m[5][5] m[5][6] m[5][7] m[5][8]
6 m[6][0] m[6][1] m[6][2] m[6][3] m[6][4] m[6][5] m[6][6] m[6][7] m[6][8]
7 m[7][0] m[7][1] m[7][2] m[7][3] m[7][4] m[7][5] m[7][6] m[7][7] m[7][8]
Ta c th truy xut mt phn t ca mng hai chiu bng cch vit ra tn mng theo sau
l hai ch s t trong hai cp du ngoc vung. Chng hn ta vit m[2][3].
122/199
Vi cch truy xut theo cch ny, Tn mng[Ch s 1][Ch s 2] c th coi l 1 bin c
kiu c ch ra trong khai bo bin mng.
V d 1: Vit chng trnh cho php nhp 2 ma trn a, b c m dng n ct, thc hin
php ton cng hai ma trn a,b v in ma trn kt qu ln mn hnh.
#include<conio.h>
#include<stdio.h>
int i,j;
for(i=0;i<M;i++)
scanf("%d",&a[i][j]);
int i,j;
for(i=0;i<M;i++){
printf("%d ",a[i][j]);
printf("\n");
123/199
}
int i,j;
for(i=0;i<M;i++)
c[i][j]=a[i][j]+b[i][j];
int main()
Nhap(a,M,N);
Nhap(b,M,N);
InMaTran(a,M,N);
124/199
InMaTran(b,M,N);
CongMaTran(a,b,M,N,c);
InMaTran(c,M,N);
getch();
return 0;
#include<conio.h>
#include<stdio.h>
int main()
clrscr();
for(i=0;i<M;i++)
125/199
printf("Phan tu o dong %d cot %d: ",i,j);
scanf("%f",&a[i][j]);
for(i=0;i<M;i++)
printf("%.2f ",a[i][j]);
printf("\n");
for(i=0;i<Min;i++)
T=T+a[i][i];
getch();
return 0;
126/199
Bi tp
Mc ch yu cu
Lm quen vi kiu d liu c cu trc trong C, kiu mng. Thc hin cc bi tp trong
phn ni dung bng cch kt hp kiu d liu mng, cc kiu d liu hc v cc phn
hc trong cc bi tp trc.
Ni dung
2. Vit chng trnh sp xp mt mng theo th t tng dn sau khi loi b cc phn
t trng nhau.
4. Vit chng trnh nhp vo mt dy cc s theo th t tng, nu nhp sai quy cch
th yu cu nhp li. In dy s sau khi nhp xong. Nhp thm mt s mi v chn s
vo dy c sao cho dy vn m bo th t tng. In li dy s kim tra.
V d:
12341291
25582545
94203528
127/199
15864806
- Dng 3 : gm cc s nguyn t.
V d : 1 2 3 4 5 7 9 10 o thnh 10 9 7 5 4 3 2 1 .
cij= ai1*b1j + ai2 *b2j + ai3 *b3j + ... + aik *bkj (i=0,1,2,...m-1;j=0,1,2...n-1)
- Xt ct i (i =0,1...n-2)
128/199
+ Nu a[k,i]=0 th tng k ln xt phn t khc
Ly hng i cng vo hng k sau khi thc hin php nhn trn.
Vit chng trnh tnh nh thc cp n thng qua cc bc nhp ma trn, in ma trn, a
ma trn v dng tam gic, in ma trn tam gic, in kt qu tnh nh thc.
13. Vit chng trnh thc hin vic trn hai dy c th t thnh mt dy c th t. Yu
cu khng c trn chung ri mi sp th t. Khi trn phi tn dng c tnh cht
sp ca hai dy con.
129/199
Chng VII. Kiu con tr
Mc tiu bi hc
130/199
Kiu d liu con tr
Cc bin chng ta bit v s dng trc y u l bin c kch thc v kiu d liu
xc nh. Ngi ta gi cc bin kiu ny l bin tnh. Khi khai bo bin tnh, mt lng
nh cho cc bin ny s c cp pht m khng cn bit trong qu trnh thc thi
chng trnh c s dng ht lng nh ny hay khng. Mt khc, cc bin tnh dng
ny s tn ti trong sut thi gian thc thi chng trnh d c nhng bin m chng
trnh ch s dng 1 ln ri b.
Ch pht sinh trong qu trnh thc hin 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 nh
c cp pht cho bin c th thay i.
Sau khi s dng xong c th gii phng tit kim ch trong b nh.
131/199
V d 1: Khai bo 2 bin a,b c kiu int v 2 bin pa, pb l 2 bin con tr kiu int.
float f, *pf;
Ghi ch: Nu cha mun khai bo kiu d liu m con tr ptr ang ch n, ta s dng:
void *ptr;
pa=&a; pb=&b;
a b B nh
pa pb 2 byte 2 byte
Lu :
int Bien_Nguyen;
float *Con_Tro_Thuc;
132/199
...
Con_Tro_Thuc=&Bien_Nguyen;
Ni dung ca nh con tr ch ti
int x=100;
int *ptr;
ptr=&x;
int y= *ptr;
#include <stdio.h>
#include <conio.h>
int main()
int a,b,*pa,*pb;
a=2;
133/199
b=3;
clrscr();
printf("\nGia tri cua bien a=%d \nGia tri cua bien b=%d ",a,b);
pa=&a;
pb=&b;
getch();
return 0;
Trc khi s dng bin con tr, ta nn cp pht vng nh cho bin con tr ny qun
l a ch. Vic cp pht c thc hin nh cc hm malloc(), calloc() trong th vin
alloc.h.
C php cc hm:
134/199
void *malloc(size_t size): Cp pht vng nh c kch thc l size.
V d: Gi s ta c khai bo:
0 1 2 3 4 5 6 7 8 9
pa 2 byte pb 2 byte
Trong qu trnh thao tc trn bin con tr, nu ta cn cp pht thm vng nh c kch
thc ln hn vng nh cp pht, ta s dng hm realloc().
ngha:
int a, *pa;
135/199
pa = realloc(pa, 6); /* Cp pht li vng nh c kch thc 6 byte*/
Mt vng nh cp pht cho bin con tr, khi khng cn s dng na, ta s thu hi li
vng nh ny nh hm free().
V d: v d trn, sau khi thc hin xong, ta gii phng vng nh cho 2 bin con tr
pa & pb:
free(pa);
free(pb);
V d:
a = 5 ; p = &a ; q = p ; /* ng */
a = 5 ; p = &a ; q = p ; /* ng */
f = (float*)p; /* ng nh p kiu*/
136/199
Ta c th cng (+), tr (-) 1 con tr vi 1 s nguyn N no ; kt qu tr v l 1 con
tr. Con tr ny ch n vng nh cch vng nh ca con tr hin ti N phn t.
int *pa;
pb = pa + 7;
pc = pb - 3;
0 1 2 3 4 5 6 7 8 9
pa pc pb
d. Lu :
CON TR V MNG
Ta c cc quy tc sau:
137/199
&<Tn mng>[0] tng ng vi <Tn mng>
#include <stdio.h>
#include <conio.h>
int i;
for(i=0;i<N;i++)
int i;
for(i=0;i<N;i++){
138/199
int main()
int a[20],N,i;
clrscr();
NhapMang(a,N); /* NhapContro(a,N)*/
for(i=0;i<N;i++)
printf("%d ",a[i]);
for(i=0;i<N;i++)
printf("%d ",*(a+i));
getch();
return 0;
Truy xut tng phn t ang c qun l bi con tr theo dng mng
139/199
Trong <Tn bin> l bin con tr, <V tr> l 1 biu thc s nguyn.
V d: Gi s c khai bo:
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
int main(){
int *a;
int i;
clrscr();
a=(int*)malloc(sizeof(int)*10);
for(i=0;i<10;i++)
a[i] = 2*i;
for(i=0;i<10;i++)
printf("%d ",a[i]);
for(i=0;i<10;i++)
printf("%d ",*(a+i));
getch();
return 0;
Kt qu chng trnh:
140/199
Vi khai bo trn, hnh nh ca con tr a trong b nh:
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
a 2 byte
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
int main()
int i,mang_int[10];
int *contro_int;
clrscr();
for(i=0;i<=9;i++)
mang_int[i]=i*2;
contro_int=&mang_int[5];
141/199
printf("\nNoi dung cua mang_int ban dau=");
for (i=0;i<=9;i++)
printf("%d ",mang_int[i]);
for (i=0;i<5;i++)
printf("%d ",contro_int[i]);
for(i=0;i<5;i++)
contro_int[i]++;
printf("\n--------------------------------------------------------");
for (i=0;i<=9;i++)
printf("%d ",mang_int[i]);
for (i=0;i<5;i++)
printf("%d ",contro_int[i]);
if (contro_int!=NULL)
free(contro_int);
getch();
return 0;
Kt qu chng trnh
142/199
Con tr v mng nhiu chiu
int a[n][m];
int *contro_int;
...
...
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
143/199
int main()
int i,j;
int mang_int[4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20};
int *contro_int;
clrscr();
contro_int=(int*)mang_int;
for (i=0;i<4;i++)
printf("\n");
for (j=0;j<5;j++)
printf("%d\t",mang_int[i][j]);
printf("\n---------------------------------");
for (i=0;i<20;i++)
printf("%d ",contro_int[i]);
for(i=0;i<20;i++)
contro_int[i]++ ;
printf("\n--------------------------------------------------------");
144/199
printf("\nNoi dung cua mang_int sau khi tang 1=");
for (i=0;i<4;i++)
printf("\n");
for (j=0;j<5;j++)
printf("%d\t",mang_int[i][j]);
for (i=0;i<20;i++)
printf("%d ",contro_int[i]);
if (contro_int!=NULL)
free(contro_int);
getch();
return 0;
#include<stdio.h>
145/199
#include<conio.h>
int c=*a;
*a=*b;
*b=c;
int main()
int m=20,n=30;
clrscr();
HoanVi(&m,&n);
getch();
return 0;
146/199
147/199
Bi tp
Mc tiu
Tip cn vi mt kiu d liu rt mnh trong C l kiu con tr. T , sinh vin c th
xy dng cc ng dng bng cch s dng cp pht ng thng qua bin con tr.
Ni dung
Thc hin cc bi tp chng trc (chng VI : Kiu mng) bng cch s dng con
tr.
148/199
Chng VIII. Chui k t
Mc tiu ca bi hc
149/199
Chui k t v cc thao tc trn chui k t
KHI NIM
KHAI BO
char Ten[12];
Ghi ch:
- Chiu di ti a khng nn khai bo tha trnh lng ph b nh, nhng cng khng
nn khai bo thiu.
char *Ten;
150/199
Va khai bo va gn gi tr
V d:
#include<stdio.h>
#include<conio.h>
int main()
getch();
return 0;
V d: char Ten[20];
gets(Ten);
Ta cng c th s dng hm scanf() nhp d liu cho bin chui, tuy nhin lc ny ta
ch c th nhp c mt chui khng c du khong trng.
151/199
Ngoi ra, hm cgets() (trong conio.h) cng c s dng nhp chui.
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
char Ten[12];
getch();
return 0;
152/199
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
getch();
return 0;
Xc nh di chui - Hm strlen()
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main(){
char Chuoi[255];
int Dodai;
153/199
printf("Nhap chuoi: ");gets(Chuoi);
Dodai = strlen(Chuoi)
getch();
return 0;
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
char Chuoi[255],*s;
154/199
s=strupr(Chuoi) ;
getch();
return 0;
Mun chuyn i chui ch hoa thnh chui ton ch thng, ta s dng hm strlwr(),
cc tham s ca hm tng t nh hm strupr()
V d: Vit chng trnh cho php chp ton b chui ngun vo chui ch.
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
char Chuoi[255],s[255];
strcpy(s,Chuoi);
getch();
155/199
return 0;
Ghi ch:
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
156/199
{
char Chuoi[255],*s;
s=strstr(Chuoi,hoc);
getch();
return 0;
Kt qu tr v tng t nh kt qu tr v ca hm strcmp()
157/199
Khi to chui, hm memset()
158/199
Bi tp
Mc ch yu cu
Ni dung
3. Vit chng trnh nhp mt chui k t v kim tra xem chui c i xng khng.
Nguyn
Vn Minh
Minh
Nguyn Vn
V d: Nguyn Vn Minh
In ra :
159/199
Nguyn
Vn
Minh
11. Vit chng trnh nhp vo mt danh sch h v tn ca n ngi theo kiu ch
thng, i cc ch ci u ca h, tn v ch lt ca mi ngi thnh ch hoa. In kt
qu ln mn hnh.
12. Vit chng trnh nhp vo mt danh sch h v tn ca n ngi, tch tn tng ngi
ra khi h v tn ri sp xp danh sch tn theo th t t in. In danh sch h v tn
sau khi sp xp.
160/199
Chng IX. Kiu cu trc
Mc tiu ca bi hc
161/199
Kiu cu trc v cc thao tc trn kiu cu trc
Khi nim
Kiu cu trc (Structure) l kiu d liu bao gm nhiu thnh phn c kiu khc nhau,
mi thnh phn c gi l mt trng (field)
S khc bit gia kiu cu trc v kiu mng l: cc phn t ca mng l cng kiu cn
cc phn t ca kiu cu trc c th c kiu khc nhau.
1 2 3 4 5 6 Trng7
y l cu trc c 7 trng
0 1 2 3 4 5 6 7 8 9 10 11 12 13 Phn t14
y l mng c 15 phn t
Cch 1:
..
};
162/199
Cch 2: S dng t kha typedef nh ngha kiu:
typedef struct
..
} <Tn cu trc>;
Trong :
- <Kiu> <Trng i> (i=1..n): mi trng trong cu trc c d liu thuc kiu g (tn
ca trng phi l mt tn c t theo quy tc t tn ca danh biu).
struct NgayThang
};
typedef struct
163/199
unsigned char Thang;
} NgayThang;
struct SinhVien
char MSSV[10];
char HoTen[40];
int Phai;
char DiaChi[40];
};
typedef struct
char MSSV[10];
char HoTen[40];
NgayThang NgaySinh;
int Phai;
char DiaChi[40];
} SinhVien;
164/199
Khai bo bin cu trc
Vic khai bo bin cu trc cng tng t nh khai bo bin thuc kiu d liu chun.
C php:
NgayThang NgaySinh;
SinhVien SV;
Khi s dng cch truy xut theo kiu ny, cc thao tc trn <Bin cu trc>.<Tn
trng> ging nh cc thao tc trn cc bin ca kiu d liu ca <Tn trng>.
V d : Vit chng trnh cho php c d liu t bn phm cho bin mu tin SinhVien
v in bin mu tin ln mn hnh:
#include<conio.h>
#include<stdio.h>
#include<string.h>
typedef struct
165/199
{
} NgayThang;
typedef struct
char MSSV[10];
char HoTen[40];
NgayThang NgaySinh;
int Phai;
char DiaChi[40];
} SinhVien;
void InSV(SinhVien s)
s.NgaySinh.Ngay,s.NgaySinh.Thang,s.NgaySinh.Nam,s.DiaChi);
int main()
166/199
SinhVien SV, s;
printf("Thang: ");scanf("%d",&SV.NgaySinh.Thang);
printf("Nam: ");scanf("%d",&SV.NgaySinh.Nam);
flushall();
InSV(SV);
InSV(s);
getch();
return 0;
Lu :
- Cc bin cu trc c th gn cho nhau. Thc cht y l thao tc trn ton b cu trc
khng phi trn mt trng ring r no. Chng trnh trn dng s=SV l mt v d.
167/199
- Vi cc bin kiu cu trc ta khng th thc hin c cc thao tc sau y:
#include<conio.h>
#include<stdio.h>
#include<string.h>
typedef struct
float Thuc;
float Ao;
} SoPhuc;
/* Hm in s phc ln mn hnh*/
void InSoPhuc(SoPhuc p)
printf("%.2f + i%.2f\n",p.Thuc,p.Ao);
int main()
168/199
SoPhuc p1,p2,p;
clrscr();
InSoPhuc(p1);
InSoPhuc(p2);
p.Thuc = p1.Thuc+p2.Thuc;
InSoPhuc(p);
getch();
return 0;
169/199
Khi to cu trc
Vic khi to cu trc c th c thc hin trong lc khai bo bin cu trc. Cc trng
ca cu trc c khi to c t gia 2 du { v }, chng c phn cch nhau bi
du phy (,).
CON TR CU TRC
Khai bo
Vic khai bo mt bin con tr kiu cu trc cng tng t nh khi khai bo mt bin
con tr khc, ngha l t thm du * vo pha trc tn bin.
170/199
V d: Sau khi khi to gi tr ca cu trc:
p = &Ngay;
#include<conio.h>
#include<stdio.h>
typedef struct
} NgayThang;
int main()
NgayThang Ng={29,8,1986};
NgayThang *p;
clrscr();
171/199
p=&Ng;
Ng.Ngay,Ng.Thang,Ng.Nam);
p->Ngay,p->Thang,p->Nam);
(*p).Ngay,(*p).Thang,(*p).Nam);
getch();
return 0;
Kt qu:
172/199
Bi tp v kiu cu trc
Mc ch yu cu
Lm quen v bit cch s dng kiu d liu cu trc kt hp vi cc kiu d liu hc.
Phn bit kiu d liu mng v kiu cu trc. Thc hin cc bi tp trong phn ni dung.
Ni dung
1. Hy nh ngha kiu:
struct Hoso{
char HoTen[40];
float Diem;
char Loai[10];
};
Vit chng trnh nhp vo h tn, im ca n hc sinh. Xp loi vn ha theo cch sau:
im Xp loi
9, 10 Gii
7, 8 Kh
5, 6 Trung bnh
di 5 Khng t
173/199
Dang Kim C 4 Khong dat
........................................................................................................
174/199
Chng X. Kiu tp tin
Mc tiu bi hc
175/199
Kiu tp tin v cc thao tc trn kiu tp tin
Tp tin nh kiu (Typed File): l loi tp tin bao gm nhiu phn t c cng
kiu: char, int, long, cu trc v c lu tr trn a di dng mt chui
cc byte lin tc.
Tp tin khng nh kiu (Untyped File): l loi tp tin m d liu ca chng
gm cc cu trc d liu m ngi ta khng quan tm n ni dung hoc kiu
ca n, ch lu n cc yu t vt l ca tp tin nh ln v cc yu t tc
ng ln tp tin m thi.
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 thao tc vi thng s l bin tp tin
i din cho tp tin .
176/199
Sau khi c/ghi xong d liu, con tr s chuyn dch thm mt phn t v pha cui tp
tin. Sau phn t d liu cui cng ca tp tin l du kt thc tp tin EOF (End Of File).
V d: FILE *f1,*f2;
M tp tin
Trong :
Ch ngha
r M tp tin vn bn c
w To ra tp tin vn bn mi ghi
a Ni vo tp tin vn bn
rb M tp tin nh phn c
wb To ra tp tin nh phn ghi
ab Ni vo tp tin nh phn
177/199
r+ M mt 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/ghi
r+b M ra 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
FILE *f;
f = fopen(TEST.txt, w);
if (f!=NULL)
/* ng tp tin*/
ng tp tin
178/199
Trong f l con tr tp tin c m bi hm fopen(). Gi tr tr v ca hm l 0 bo
rng vic ng tp tin thnh cng. Hm tr v EOF nu c xut hin li.
ngha: Kim tra xem chm ti cui tp tin hay cha v tr v EOF nu cui tp tin
c chm ti, ngc li tr v 0.
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 v u tp tin nh khi m n, ta s dng hm rewind().
TRUY CP TP TIN VN BN
Hm putc()
Hm fputs()
179/199
Trong , buffer l con tr c kiu char ch n v tr u tin ca chui k t c ghi
vo. Hm ny tr v gi tr 0 nu buffer cha chui rng v tr v EOF nu gp li.
III.1.3 Hm fprintf()
nh dng ngha
%d Ghi s nguyn
Ghi s thc c <s ch s thp phn> theo quy tc lm
%[.s ch s thp phn] f
trn s.
%o Ghi s nguyn h bt phn
%x Ghi s nguyn h thp lc phn
%c Ghi mt k t
%s Ghi chui k t
%e hoc %E hoc %g hoc
Ghi s thc dng khoa hc (nhn 10 m x)
%G
#include<stdio.h>
#include<conio.h>
int main()
FILE *f;
clrscr();
f=fopen("D:\\Baihat.txt","r+");
if (f!=NULL)
180/199
{
fputs("Ta con em, mui hoang lan; ta con em, mui hoa sua.",f);
fclose(f);
getch();
return 0;
c d liu t tp tin vn bn
Hm getc()
Hm fgets()
181/199
Trong :
Hm fscanf()
Trong : format: chui nh dng (ging hm scanf()); varlist: danh sch cc bin mi
bin cch nhau du phy (,).
V d: Vit chng trnh chp tp tin D:\Baihat.txt trn sang tp tin D:\Baica.txt.
#include<stdio.h>
#include<conio.h>
int main()
FILE *f1,*f2;
clrscr();
f1=fopen("D:\\Baihat.txt","rt");
f2=fopen("D:\\Baica.txt","wt");
182/199
int ch=fgetc(f1);
while (! feof(f1))
fputc(ch,f2);
ch=fgetc(f1);
fcloseall();
getch();
return 0;
C php: size_t fwrite(const void *ptr, size_t size, size_t n, FILE *f)
Trong :
- f: con tr tp tin c m.
C php: size_t fread(const void *ptr, size_t size, size_t n, FILE *f)
183/199
Trong :
- n: s phn t c c t tp tin.
- f: con tr tp tin c m.
Vic ghi hay c d liu t tp tin s lm cho con tr tp tin dch chuyn mt s byte,
y chnh l kch thc ca kiu d liu ca mi phn t ca tp tin.
Trong :
0 SEEK_SET V tr u tp tin
1 SEEK_CUR V tr hin ti ca con tr tp tin
2 SEEK_END V tr cui tp tin
184/199
V d
#include<stdio.h>
#include<conio.h>
int main()
FILE *f;
clrscr();
f=fopen("D:\\CacSo.txt","wb");
if (f!=NULL)
double d=3.14;
int i=101;
long l=54321;
fwrite(&d,sizeof(double),1,f);
fwrite(&i,sizeof(int),1,f);
fwrite(&l,sizeof(long),1,f);
rewind(f);
fread(&d,sizeof(double),1,f);
fread(&i,sizeof(int),1,f);
fread(&l,sizeof(long),1,f);
185/199
printf("Cac ket qua la: %f %d %ld",d,i,l);
fclose(f);
getch();
return 0;
V d 2: Mi sinh vin cn qun l t nht 2 thng tin: m sinh vin v h tn. Vit
chng trnh cho php la chn cc chc nng: nhp danh sch sinh vin t bn phm
ri ghi ln tp tin SinhVien.dat, c d liu t tp tin SinhVien.dat ri hin th danh sch
ln mn hnh, tm kim h tn ca mt sinh vin no da vo m sinh vin nhp t
bn phm.
#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef struct
char Ma[10];
char HoTen[40];
} SinhVien;
FILE *f;
186/199
int n,i;
SinhVien sv;
f=fopen(FileName,"ab");
fflush(stdin);
for(i=1;i<=n;i++)
fwrite(&sv,sizeof(sv),1,f);
fflush(stdin);
fclose(f);
getch();
FILE *f;
SinhVien sv;
f=fopen(FileName,"rb");
187/199
printf(" MSSV | Ho va ten\n");
fread(&sv,sizeof(sv),1,f);
while (!feof(f))
printf(" %s | %s\n",sv.Ma,sv.HoTen);
fread(&sv,sizeof(sv),1,f);
fclose(f);
getch();
char MSSV[10];
FILE *f;
int Found=0;
SinhVien sv;
fflush(stdin);
f=fopen(FileName,"rb");
188/199
fread(&sv,sizeof(sv),1,f);
if (strcmp(sv.Ma,MSSV)==0) Found=1;
fclose(f);
if (Found == 1)
else
getch();
int main()
int c;
for (;;)
clrscr();
printf("2. In DSSV\n");
printf("4. Thoat\n");
189/199
if(c==1)
WriteFile("d:\\SinhVien.Dat");
else if (c==2)
ReadFile("d:\\SinhVien.Dat");
else if (c==3)
Search("d:\\SinhVien.Dat");
else break;
return 0;
190/199
Bi tp
Mc ch yu cu
Nm vng cch s dng kiu d liu tp tin. Phn bit n vi tt c cc kiu d liu c
cu trc hc. Lm quen v bit cch thao tc trn tp tin. Vn dng cc kin thc
hc vit cc chng trnh trong phn ni dung.
Ni dung
5. Vit chng trnh cho php nhp t bn phm v ghi vo 1 tp tin tn DSHH.Dat vi
mi phn t ca tp tin l mt cu trc bao gm cc trng : mh (m hng: char[5]), sl
(s lng : int), dg ( n gi: float), st (S tin: float) theo yu cu:
- Mi ln nhp mt cu trc
- Nhp n gi (dg).
191/199
- Tnh s tin = s lng * n gi.
Kt thc vic nhp bng cch nh ENTER vo m hng. Sau khi nhp xong yu cu in
ton b danh sch hng ha c s gii m v tn hng theo mu sau:
192/199
Tham gia ng gp
Ti liu: Gio Trnh Lp Trnh Cn Bn
Bin tp bi: duongvanhieu
URL: http://voer.edu.vn/c/ab1e3116
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu ca bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/6cb00baf
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/54bb3843
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu ca bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/54a70db7
Giy php: http://creativecommons.org/licenses/by/3.0/
193/199
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/70deba69
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/5aa417b4
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu ca bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/fcaf32e3
Giy php: http://creativecommons.org/licenses/by/3.0/
194/199
Module: Cu lnh v cc lnh n trong C
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/22bf7c22
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu ca bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/bbb0f95e
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
195/199
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/00bb1ba5
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/c44c9b95
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/35a956c4
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/2e4b56f6
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu bi hc
Cc tc gi: unknown
196/199
URL: http://www.voer.edu.vn/m/4780ad23
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/078a112e
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu ca bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/c217a4e2
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/a60b108d
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu ca bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/16253bc0
Giy php: http://creativecommons.org/licenses/by/3.0/
197/199
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mc tiu bi hc
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/0eee65ab
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp
Cc tc gi: unknown
URL: http://www.voer.edu.vn/m/6ba9186a
Giy php: http://creativecommons.org/licenses/by/3.0/
198/199
Chng trnh Th vin Hc liu M Vit Nam
Chng trnh Th vin Hc liu M Vit Nam (Vietnam Open Educational Resources
VOER) c h tr bi Qu Vit Nam. Mc tiu ca chng trnh l xy dng kho
Ti nguyn gio dc M min ph ca ngi Vit v cho ngi Vit, c ni dung phong
ph. Cc ni dung u tun th Giy php Creative Commons Attribution (CC-by) 4.0
do cc ni dung u c th c s dng, ti s dng v truy nhp min ph trc
ht trong trong mi trng ging dy, hc tp v nghin cu sau cho ton x hi.
Hanoi Spring l mt nn tng cng ngh tin tin c thit k cho php cng chng d
dng chia s ti liu ging dy, hc tp cng nh ch ng pht trin chng trnh ging
dy da trn khi nim v hc liu m (OCW) v ti nguyn gio dc m (OER) . Khi
nim chia s tri thc c tnh cch mng c khi xng v pht trin tin phong
bi i hc MIT v i hc Rice Hoa K trong vng mt thp k qua. K t , phong
tro Ti nguyn Gio dc M pht trin nhanh chng, c UNESCO h tr v c
chp nhn nh mt chng trnh chnh thc nhiu nc trn th gii.
199/199