Bai Giang Co So Lap Trinh

Embed Size (px)

Citation preview

  • 8/3/2019 Bai Giang Co So Lap Trinh

    1/61

    Bi ging: C s lp trnh===================================================================

    MC LC

    CHNG I: TNG QUAN V NGN NG LP TRNH C....................................................31. Cc khi nim chng trnh, lp trnh, lp trnh vin.......................................................32. S pht trin ca cc cng c lp trnh.............................................................................3

    3. Mt s ngn ng lp trnh thng dng.............................................................................34. Gii thiu v ngn ng lp trnh C...................................................................................3

    II. Cc khi nim c bn............................................................................................................41. Cc yu t c bn...............................................................................................................42. Cu trc mt chng trnh ..............................................................................................63. Mi trng lm vic.........................................................................................................8

    III. Cc kiu d liu trong C......................................................................................................81. Cc kiu d liu c bn.....................................................................................................82. Chuyn i kiu d liu...................................................................................................103. Th t u tin cc php ton...........................................................................................11

    IV. Nhp xut d liu trong C.................................................................................................122. Cc lnh xut d liu ......................................................................................................133. Trnh by mn hnh..........................................................................................................14

    CHNG II: CC CU LNH IU KHIN.........................................................................18I. Cc cu lnh la chn:.........................................................................................................18

    1. if else ......................................................................................................................182. SWITCH ........................................................................................................................19

    II. Cc lnh lp .......................................................................................................................221. Vng lp xc nh FOR...................................................................................................222. Vng lp khng xc nh DO WHILE.......................................................................233. WHILE............................................................................................................................24

    III. Cc lnh r nhnh v iu kin : .......................................................................................251. BREAK............................................................................................................................252. CONTINUE.....................................................................................................................253. GOTO ............................................................................................................................25

    CHNG III: HM TRONG NGN NG LP TRNH C.....................................................26I. Khi nim v hm.................................................................................................................26

    1. Hm th vin...................................................................................................................262. Hm t to.......................................................................................................................26

    II. Cch xy dng hm.............................................................................................................261. Xy dng hm..................................................................................................................262. S dng hm....................................................................................................................28

    3. Nguyn tc hot ng ca hm........................................................................................294. Truyn tham s cho hm..................................................................................................29III. Hm quy........................................................................................................................32

    1. nh ngha hm quy....................................................................................................322. Mt s ch khi vit hm quy....................................................................................323) Xy dng macro..............................................................................................................344) Mt s th vin hm chun v hm thng dng.............................................................34

    CHNG IV: CC KIU D LIU C CU TRC.............................................................39I. Kiu d liu mng................................................................................................................39

    1. Khi nim v mng..........................................................................................................393. Mng nhiu chiu............................................................................................................42

    4. Bi tp..............................................................................................................................421. Khi nim con tr ...........................................................................................................47

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 1

  • 8/3/2019 Bai Giang Co So Lap Trinh

    2/61

    Bi ging: C s lp trnh===================================================================

    2. a ch con tr.................................................................................................................474. S dng con tr trong mng nhiu chiu.........................................................................485. S dng con tr trong hm..............................................................................................48

    III. Kiu d liu struct..............................................................................................................491. Khai bo struct.................................................................................................................49

    2. Truy cp vo phn t ca struct.......................................................................................503. Phi hp mng v d liu kiu struct..............................................................................50IV. Kiu d liu t nh ngha : ..............................................................................................52

    1. Kiu lit k (t kho enum).............................................................................................522. Kiu typedef.....................................................................................................................53

    CHNG V: D LIU KIU TP...........................................................................................55I. Khi nim v tp...................................................................................................................55

    1. Khi nim tp...................................................................................................................552. Cu trc v phn loi tp.................................................................................................553. Cc bc x l tp ..........................................................................................................56

    II. Tp d liu nh phn...........................................................................................................57

    1. To tp nh phn.............................................................................................................572. c tp d liu nh phn.................................................................................................583. Truy nhp tp d liu nh phn.......................................................................................59

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 2

  • 8/3/2019 Bai Giang Co So Lap Trinh

    3/61

    Bi ging: C s lp trnh===================================================================

    CHNG I: TNG QUAN V NGN NG LP TRNH C

    I. GII THIU NGN NG LP TRNH

    1. Cc khi nim chng trnh, lp trnh, lp trnh vin

    - Chng trnh: l tp hp dy cc lnh iu khin my tnh thc hin.- Lp trnh (my tnh): l k thut ci t mt hoc nhiu thut ton tru tng c linquan vi nhau bng mt hoc nhiu ngn ng lp trnh to ra mt chng trnh mytnh.- Lp trnh vin: L ngi vit chng trnh my tnh.

    2. S pht trin ca cc cng c lp trnh.

    3. Mt s ngn ng lp trnh thng dng.

    4. Gii thiu v ngn ng lp trnh C- Ngn ng C do Dennis Ritchie sng tc nm 1972 ti phng th nghim BellTelephone (thuc cng ty vin thng AT & T ca M) vit h iu hnh UNIX.* u im ca ngn ng C:- C l ngn ng mnh v mm do.- C c dng ph bin.- C l ngn ng c th chuyn dch, d thch nghi- C l ngn ng t t kho.- C l ngn ng c cu trc modun: Cc chng trnh con l cc hm c th c s

    dng nhiu ln trong cng mt chng trnh hoc trong cc chng trnh khc.* Khuyt im ca ngn ng C:- C php kh hc (nu cha hiu r bn cht).- Mt s k hiu c nhiu ngha khc nhau: V d k hiu * l ton t nhn, ton tkhng nh hng, ton t thay th, ...* Cch khi ng CVo th mc Bin trong th mc ci t TC => chy tp TC.exe

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 3

    Phn sonni dungchng

    trnh

    Thanhmenu

  • 8/3/2019 Bai Giang Co So Lap Trinh

    4/61

    Bi ging: C s lp trnh===================================================================

    Ch : Khi mn mnh lm vic ca C hin th, mun chng trnh chy c, ta cnthit lp li mt vi thng s cho ph hp (ch cn ci t mt ln u tin):Vo menu Options/ Environment/ Directories

    Include Directories: Th mc cha cc tp tin m chng ta gi trong chng trnh (tptin .h vit sau #include)Library Directories: Th mc cha cc tp tin th vin (*.Lib)Output Directories: Th mc cha cc tp tin i tng (*.OBJ), tp tin *.exe saukhi bin dch.Source Directory: Th mc cha cc tp tin ngun (*.OBJ, *.Lib)

    * Chy chng trnh: n Ctrl + F9

    II. Cc khi nim c bn

    1. Cc yu t c bn

    1.1 B ch vit trong CB ch vit trong ngn ng C bao gm nhng k t, k hiu sau: (phn bit ch

    in hoa v in thng): 26 ch ci latinh ln A,B,C...Z 26 ch ci latinh nh a,b,c ...z. 10 ch s thp phn 0,1,2...9. Cc k hiu ton hc: +, -, *, /, =, , (, ) Cc k hiu c bit: :. , ; " ' _ @ # $ ! ^ [ ] { } ... Du cch hay khong trng.

    1.2 Cc t kho trong CT kha l cc t dnh ring (reserved words) ca C m ngi lp trnh c th s

    dng n trong chng trnh ty theo ngha ca tng t.auto break case char continue default dodouble else extern float for goto if intlong register returnshort sizeof static struct switch typedef unionunsigned void volatile while

    _cs _ds _es _ss_AH _AL _AX _BH _BL _BX_CH _CL _CX _DH _DL _DX

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 4

  • 8/3/2019 Bai Giang Co So Lap Trinh

    5/61

    Bi ging: C s lp trnh===================================================================

    _BP _DI _SI _SP1.3 Ch thch

    - Tc dng: ch thch cho mt cu lnh hay mt on chng trnh vit. Dngch thch ny s b b qua khi bin dch chng trnh.

    - K hiu: /* ch thch */hoc // ch thch

    V d 1:#include#includemain(){

    printf("chao"); //in ra mn hnh t chaogetch(); //tm dng chng trnh ch n phm Enter tip tc

    }V d 2:#include #include main(){

    char ten[50]; /* khai bao bien ten kieu char 50 ky tu */clrscr(); /*lenh xoa man hinh*/

    printf("Xin cho biet ten cua ban: "); /*Xuat chuoi ra man hinh*/scanf("%s",ten); /*Doc vao 1 chuoi la ten cua ban*/

    printf("\nXin chao ban %s\n",ten);printf("Chao mung ban den voi Ngon ngu lap trinh C");getch(); /*Dung chuong trinh, cho go phim*/

    }1.4 Du chm cu- Du ; dng kt thc mt cu lnh.

    1.5 Cch khai bo* Khai bo bin:

    kieu_du_lieu danh_sach_bien;ch : Danh sch c th l mt bin hoc nhiu bin c cng mt kiu d liu c vitcch nhau bi du , . Ta c th gn lun gi tr cho tng bin.v d :

    int i ;float x,y,z ;int i=3 ;

    * Khai bo hng s const kieu_du_lieu ten_hang = gia_tri_hang ;v du :

    const int x=2 ;

    * Khai bo hng s tng trng#define Ten_hang gia_tri ; /* vit sau dng #include */

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 5

  • 8/3/2019 Bai Giang Co So Lap Trinh

    6/61

    Bi ging: C s lp trnh===================================================================

    v d 4:#include #include

    #define PI 3.14 /*khai bo hng s tng trng */main(){

    float R,Dien_tich;

    printf("R= ");scanf("%f",&R);Dien_tich = PI*R*R;printf("Dien tich = %f\n",Dien_tich);getch();return(0);

    }

    1.6 Php gn gi trTn_mt_bin = biu_thc;

    v d:i=3; /* i c gn gi tr l 3 */i=i+4; /* i cng 4 c kt qu l 7, gi tr 7 ny li t vo nh c a ch ca i*/

    ch : Ta c th s dng php gn kp gn mt gi tr cho nhiu binv d:a=b=c=3; /*gn gi tr 3 cho cc bin a, b, c */a=b + (c=3); //gn 3 cho bin c, sau cng vo vi b gn kt qu nhn c cho a

    2. Cu trc mt chng trnh

    * Chng trnh n gin:#include /* gi cc tp tin x l *//* ------------------ HM CHNH -------------------------*/main(){

    ......... /* Cc cu lnh */return(0); /* C th b lnh ny */

    }// ------------------ DINH NGHIA HAM -----------------------Kiu_d_liu tn hm (cc tham s);{

    ............ /* Cc cu lnh */return (... ) /* Tr li mt gi tr c th cho hm */

    }* Cu trc tng th:

    Chuyn sang b tin x l

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 6

  • 8/3/2019 Bai Giang Co So Lap Trinh

    7/61

    Bi ging: C s lp trnh===================================================================

    #include#definetypedefs (nh ngha kiu d liu)funtion prototype (nguyn mu cc hm: khai bo tn hm vi tham s)

    Khai bo bin ngoi (External variables)

    main() (function chnh){

    Khai bo cc bin, hngS dng cc hm khc

    }

    function th hai{

    Khai bo cc bin, hngS dng cc hm khc

    }

    function th ba{

    Khai bo cc bin, hngS dng cc hm khc

    }

    v d 5:#include #include /*------------------HAM CHINH ----------------*/main(){

    clrscr(); //cau lenh xoa man hinh

    float x=1.5;float y,z;int n=3, p=5, q=10;

    float f(float, int, int); //khai bao mau ham

    y= f(x,n,p);printf("Gia tri cua y = %f\n",y);

    z= f(x+0.5,q,n-1);

    printf("Gia tri cua z = %f\n",z);getch();

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 7

  • 8/3/2019 Bai Giang Co So Lap Trinh

    8/61

    Bi ging: C s lp trnh===================================================================

    }/*------------------DINH NGHIA HAM f ----------------*/float f(float x, int b, int c){

    float gia_tri; //khai bao bien cuc bogia_tri = x*x+b*x+c;return gia_tri;

    }

    3. Mi trng lm vic- TC c th chy trong mi trng MS_DOS hoc mi trng Windows.

    III. Cc kiu d liu trong C

    1. Cc kiu d liu c bn

    1.1 Kiu s nguyn

    Kiu s nguyn (hay cn gi l kiu m c): l kiu d liu dng lu ccgi tr nguyn. Kiu s nguyn trong C c chia thnh cc kiu d liu con, mi kiuc mt min gi tr khc nhau

    Kiu bin T kho S byte Di gi trCharacter char 1 -128 127Integer int 2 -32768 32767Short integer short 2 -32768 32767Long integer long 4 -2,147,483,648 2,147,483,647Unsigned character unsigned char 1 0 255Unsigned integer unsigned int 2 0 65,535Unsigned Short integer unsigned short 2 0 65,535Unsigned Long integer unsigned long 4 0 4,294,967,295

    * Cc php ton i vi s nguyn: +, -, *, / (ly phn nguyn), % (ly phn d).v d: 5/3 c 1

    5%3 c 2ch : Mun ly c kt qu chnh xc l s thc ca php chia hai s nguyn, ta phivit(float) x/y

    1.2 Kiu s thc

    Kiu s thc dng lu cc s thc hay cc s c du chm thp phn- Dng vit thp phn bnh thng: 3.14; -0.4545;- Dng vit c phn m (dng vit khoa hc)v d: 5.6543E +02 (= 5.6543* 102)

    phn nh tr phn m

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 8

  • 8/3/2019 Bai Giang Co So Lap Trinh

    9/61

    Bi ging: C s lp trnh===================================================================

    -0.001234 = -1.234*103 s c vit li lL -1.234E -03ch : Phn nh tr v phn m u c du i km. Hai phn ny phi c vit linnhau.

    Kiu bin T kho

    Sbyte

    Di gi tr

    Single-precision float-point(s thc vi chnh xc n)

    float 4 1.2E-38 3.4E38 chnh xc khong 7 ch s

    Double-precision float-point(s thc vi chnh xc kp)

    double 8 2.2E-308 1.8E308 chnh xc khong 15 ch s

    Long Double-precision float-point( di ln)

    longdouble

    10 3.4E-4932 3.4E4932 chnh xc khong 19 ch s

    ch : Ta c th vit E hoc e u c.* Cc php ton: +, - , *, / (kt qu l s thc)

    1.3 Kiu k t (char)

    - Mi k t chim 1 byte trong b nh.V d: h A 0 ?

    Mi gi tr kiu k t l mt phn t ca mt tp hu hn cc k t c sp xp cth t => ta c th so snh c.

    (bng m ASCII vi 128 k t u trang 47 Ngn ng lp trnh C)* Cc hm x l k t:

    Hm Kiu gi tr nhn c Tc dng

    toASCII(c) int Chuyn c thnh m ASCIItolower(c) char Chuyn thnh ch thngtoupper(c) char Chuyn thnh ch hoach : Cc hm trn nm trong tp v d 5:#include#include#includemain(){

    char ChuThuong,ChuHoa;ChuThuong = getchar(); //doc mot ky tu tu ban phimChuHoa = toupper(ChuThuong); //Chuyen thanh chu hoa

    putchar(ChuHoa); //in ra man hinhgetch();

    }

    1.4 Hng xu k t

    Xu k t l d liu k t c lu tr trong mt mng cc nh lin nhau trong cui cng cha m s l 0 (tc l null hay \0)

    v d:Ha Noi

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 9

  • 8/3/2019 Bai Giang Co So Lap Trinh

    10/61

    Bi ging: C s lp trnh===================================================================

    H a N o i \0

    1.5 Kiu Boolean

    - l biu thc m kt qu ch nhn mt trong hai gi tr true (ng vi 1) hoc false (ngvi 0)

    * Cc php ton logic

    TON T PHP TON LOGIC NGHA&& AND Php v

    || OR Php hoc! NOT Php ph nh

    * Bng s tht

    X Y X&&Y X||Y0 0 0 00 s khc khng 0 1

    s khc khng 0 0 1s khc khng s khc khng 1 1

    * Cc php ton quan h (kt qu tr v l true,1 hoc false,0):!= so snh khc nhau== so snh bng nhau>= so snh ln hn hoc bng so snh ln hn< so snh nh hn

    V d:3

  • 8/3/2019 Bai Giang Co So Lap Trinh

    11/61

    Bi ging: C s lp trnh===================================================================

    (2 byte) (4) (4) (8) (10)V d:

    int i;long j;float k;i + j c kt qu l d liu kiu long.i + j + k c kt qu l d liu kiu float.

    ch : Khng c kiu char v short trong dy nguyn tc trn.* S u tin cho kiu s:- Trong biu thc ton hc, cc bin c kiu d liu char hoc short u c quy i vkiu d liu int ri mi thc hin tnh (v cc php ton s hc khng c nh nghacho kiu char v short).v d:

    char a;int b;float c;a + b cho kt qu c kiu d liu l int (v a c chuyn sang kiu d liu int rimi cng vo b)a + b + c cho kt qu c kiu d liu l float

    * S chuyn i cho kiu k t char- Trong php ton, char t chuyn i thnh int- Trong php tnh tng (hiu) vi mt k t khc, kt qu s l tng (hiu) ca a vi mASCII ca k t.V d:

    char a = 5;B + a chnh l B + 5 = 66 + 5 = 71 => c kt qu l k t G

    3. Th t u tin cc php ton

    * Bng tng hp n gin v th t u tin ton t s hc v quan h

    TON T CHIU TNHTON

    ( ) L R- (ton t 1 ngi) RL

    * / % L R+ - L R< >= L R== != L R&& L R|| L R

    V d:5*(2+3) = 5*6=30

    5/3*2 = 1*2 = 2Vd6: Chng trnh minh ha

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 11

  • 8/3/2019 Bai Giang Co So Lap Trinh

    12/61

    Bi ging: C s lp trnh===================================================================

    #include#includemain(){

    int a;a=5/3*2;

    printf("kq: %f",a); //in ra man hinh gia tri cua agetch(); //lenh tam dung chuong trinh cho an phim Enter

    }* Bng tng hp y

    TON T CHIU TNH TON( ) [] -> L R

    - ++ -- ! sizeof( ) (ton t mt ngi) R

    L* / % L R+ - L R> L R< >= L R== != L R& L R^ L R| L R

    $$ L R|| L R?: RL= += -= *= /= %= &= ^= |= = RL

    IV. Nhp xut d liu trong C

    1. Cc lnh nhp d liu(c d liu t bn phm):scanf( ), getchar( ), getch( ), gets()

    * Hm scanf( )scanf(dy m quy cch, dy a ch cc bin);

    Hm scanf ( ) s dng nhng m quy cch sau:%c : c mt k t c khai bo l char %d : c mt s nguyn%u : c s nguyn unsigned int%hd :------------------- shortint%hu : -------------------unsigned int

    %lu : ------------------- unsigned long

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 12

  • 8/3/2019 Bai Giang Co So Lap Trinh

    13/61

    Bi ging: C s lp trnh===================================================================

    %f : c s thc float, (nhp s theo mt trong hai cch: thng thng hocvit theo s m)

    %e : c s thc float, (nhp s theo mt trong hai cch: thng thng hocvit theo s m)

    %lf hoc %lu : c s thc double%s : c xu k t khng cha du cch, dng vi a ch xu.%o : c vo s nguyn di dng h m c s 8 (octal)%x : ----------------------------------------------------- 16 (hexa)Ch 1: Trng hp c s, my tnh s b qua du trng, cch, du xung dng chon khi gp ch s th bt u ly ra c v ch dng li nu k t khng phi l ch

    s. Sau my tnh ghp chng li thnh s cn ly.i vi trng hp c ch, my tnh s c chnh xc tuyt i v s lng.

    v d:Nhp Hm Kt qu my tnh nhn cm^^*(25 scanf(%d%c,&x,&y); x=m y=25123^*hfn scanf(%d%c,&x,&y); x=123 y=^ (vd7)

    Ch 2: Nu chn thm k hiu vo gia 2 m qui cch th khi c d liu, my tnh snhy qua cc du cch, du ngn cch Enter c s liu hay mt k t.- Nguyn tc ca hm scanf( ) : D liu g t bn phm c lu tr trong b nh m ch x l. Hm scanf( ) ly d liu t b nh m .* Hm getchar( )

    c= getchar( ) ;

    c vai tr gn ging nh lnh scanf( %c ,&c) dng ly 1 k t c g vo tbn phm.* Hm c xu k t gets( )- Hm ny nm trong tp stdio.h- Tc dng: c mt xu k t c cha c du cch cho n khi n phm Enter th dng.

    2. Cc lnh xut d liu

    *Mu hm:

    printf(dy m qui cch, dy cc biu thc);

    V d:int n;float x;char ch;

    printf(In ra cac gia tri: %d, %f v %c, n, x, ch);Dy m qui cch ngha%c : in ra k t kiu char, c th dng cho kiu short v int%d : in ra s nguyn int, c th dng cho kiu char %u : in ra kiu s nguyn khng du, unsign int, c th

    dng cho unsign char, unsign short%ld : in ra s nguyn kiu long

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 13

  • 8/3/2019 Bai Giang Co So Lap Trinh

    14/61

    Bi ging: C s lp trnh===================================================================

    %lu : -------------------------unsigned long%x, %X : ------------------- vit di dng s hexa (h m 16)%o : ------------------------------------------ octal (h m 8)%f : in ra s thc di dng bnh thng (phn thp phn

    c 6 ch s), dng cho kiu float v double%e, %E : in ra kiu d thc di dng s m (phn nh tr c

    6 ch s phn thp phn), dng cho kiu float,double. Du e hay E s tng ng vi kt qu e hocE s in ra.

    %g, %G : chn ci no ngn hn trong hai kiu %f hoc %e in ra.

    %s : in ra xu k t vi a ch cho trc.

    * Khun in: %m, %m.n- Dng vit c quy cch cc d liu c in ra

    + D liu l ch, s: thm mt s nguyn m vo ngay sau % th khi in d liu ra sdnh m v tr dng vit d liu .+ D liu l s thc: thm hai s nguyn m v n (vit theo qui tc m.n) vo ngaysau % th khi in d liu ra s dnh tng m ch s trong c n ch s phn thp

    phn.v d:

    int x=1;printf(%3d,x); => kt qu l: ^1

    float x=1.2345printf(%5.3f,x) => kt qu l : 1.234

    * Cn l tri : B sung du vo ngay sau du %* K t xo tri : B sung \b vo cui ca xu k t. Mi k hiu \b s xo c mt kt.v d : printf(In ra cac gia tri \b\b); s cho in ra dng ch: In ra cac gia t* In ra du %: ta phi vit 2 ln %%* In ra mn hnh son tho:

    cprintf(dy m qui cch, dy cc biu thc);

    3. Trnh by mn hnh

    - s dng cc hm ny, ta cn khai bo:#include

    gotoxy(int X, int Y); //Di chuyn con tr n v tr c to ct l X, to dngl Y.

    clrscr( ); // xo mn hnh v a con tr v v tr (1,1)

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 14

  • 8/3/2019 Bai Giang Co So Lap Trinh

    15/61

    Bi ging: C s lp trnh===================================================================

    clreol(); //Clear End Of Line: xo cc k t nm bn phi im nhc.

    textcolor(tn mu hoc m mu); // chn mu cho ch

    textbackground(tn mu hoc m mu); //chn mu cho nn

    Ch : Tn mu l cc ch ci in hoa. Ta c th cng thm 128 vo m mu hoc+BLINK vo tn mu c c mu nhp nhy.

    V d 8:

    #include #include main(){

    textbackground(RED);clrscr();

    gotoxy(3,10);textcolor(BLACK);

    cprintf("\nxin chao"); //in ra man hinh soan thaocprintf("\nChao mung ban den voi Ngon ngu lap trinh C");

    getch();}

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 15

  • 8/3/2019 Bai Giang Co So Lap Trinh

    16/61

    Bi ging: C s lp trnh===================================================================

    N TP1) Lnh hin th d liu:

    printf(dy m quy cch, dy cc biu thc); //in ra cc k t l gi tr ca cc

    biu thc

    putchar(c); // in ra mt k t l gi tr ca bin c

    puts(xu k t); // in ra mt xu k t

    fprintf(stdprn, d liu a ra my in %d\n, k); //in ra my in

    fprintf(stdout, d liu a ra my in %d\n, k); //in ra mn hnh = printf

    cprintf(dy m qui cch, dy cc biu thc); // in ra mn hnh son tho c s

    dng cc cu lnh trang tr mn hnh.

    2) Lnh nhp d liuscanf(dy m quy cch, dy a ch cc bin); //nhp d liu cho cc bin trong

    danh sch a ch.

    c= getchar( ) ; //nhp 1 k t cho bin c.

    gets(str); //nhp 1 xu k t cho bin str

    (kt thc bng Enter)

    3) Lnh xo b nh m ca bn phm

    fflush(stdin);

    4) Lnh trang tr mn hnh

    gotoxy(ct x, dng y) ;

    textcolor(mu hoc m mu) ; //chn mu cho ch

    textbackground(mu hoc m mu); //chn mu cho nn

    wherex() ; //cho bit to ct

    wherey() ; //cho bit to dng.

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 16

  • 8/3/2019 Bai Giang Co So Lap Trinh

    17/61

    Bi ging: C s lp trnh===================================================================

    N TP CHNG I

    1. Hy xy dng chng trnh tnh chu vi, din tch hnh ch nht vi chiu di v chiu rng

    nhp vo t bn phm.

    2. Hy xy dng chng trnh tnh tng, hiu, tch, thng ca 2 s nguyn nhp vo t bn

    phm.

    3. Hy xy dng mt phn mm ng dng l tr chi p ng yu cu sau:

    - Nhp vo mt m ASCII

    - Nhp vo k t m bn d on (ngi th nht).

    - Hin th kt qu ca m ASCII m ngi trc nhp (ngi th hai).

    4. Hy xy dng phn mm ng dng l tr chi p ng yu cu sau:

    - Bt u nhp 3 s nguyn dng (ngi th nht)

    - Xo mn hnh (ngi th nht)

    - Nhp li 3 s bn nh (ngi th 2).

    - Hin th 3 s ban u.

    5. Xy dng chng trnh p ng yu cu sau:

    - Nhp s nguyn a t bn phm

    - Tnh tngv tch ca cc s nguyn lin tip k t s nhp (a, a+1. a+2. a+3. a+4)

    6. Xy dng chng trnh tnh s tin li lnh c sau mt nm bit s tin gi ban u l S(nhp vo t bn phm), li sut hng thng l 2%. Bit rng mi thng ngi gi s rt li mt

    ln.

    7. Hy xy dng chng trnh nhp k t u tin ca tn cc bn trong nhm v hin th ra

    mn hnh bng 2 cch: vit hoa, vit thng.

    8. Hy xy dng phn mm ng dng p ng yu cu sau:

    - Nhp vo 5 k t

    - Chuyn cc k t thnh cc k t vit hoa.- Hin th ra mn hnh nh sau:

    + dng u l tt c cc k t vit hoa

    + cc dng sau, mi dng hin th mt k t.

    9. Xy dng chng trnh tnh bnh phng v cn bc hai ca mt s nguyn c nhp vo t

    bn phm.

    10. Xy dng chng trnh tnh lp phng ca tng 3 s nguyn dng nhp vo t bn phm

    11. Xy dng chng trnh tnh gi tr ca f = a*x*x + b*x + c vi a, b, c l cc s cho trc,x l s c nhp v t bn phm.

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 17

  • 8/3/2019 Bai Giang Co So Lap Trinh

    18/61

    CHNG II: CC CU LNH IU KHIN

    I. Cc cu lnh la chn:

    1. if else a) Mu lnh:* Mu lnh 1:

    if (biu thc lgic)cngvic1;

    elsecngvic2;

    - Cch thc hin: Nu biu thc lgic nhn gi tr ng th my tnh s thc hin cngvic1. Trng hp ngc li (biu thc logic nhn gi tr sai) th my tnh thc hincng vic 2.V d:

    if (a>b)max=a;elsemax=b;

    * Mu lnh 2:

    if (biu thc lgic)cngvic;

    - Cch thc hin: Nu biu thc lgic nhn gi tr ng th my tnh s thc hin lnhtrong cu trc ifV d:

    if ((x==a)&&(y==b)&&(z==c))printf(ban da nhap dung ca ba so);

    * Ch : cngvic, cngvic1, cngvic2 c th l mt cu lnh n hoc mt cu lnh

    ghp (nm gia hai du {}) hoc cng c th l cu lnh c cu trc.b) V dV d 9: Vit chng trnh tm s ln nht trong 2 ch s c nhp vo t bnphm.#include #include main(){

    clrscr();

    int a,b,max;

  • 8/3/2019 Bai Giang Co So Lap Trinh

    19/61

    Bi ging: C s lp trnh===================================================================

    printf("Nhap hai so:\n");scanf("%d%d",&a,&b);

    if (a>b)max=a;elsemax=b;

    printf("So lon nhat la: %d",max);getch();

    }

    2. SWITCH

    a) Mu lnh

    switch (biu thc){case hng_1: [cng_vic1]case hng_2: [cng_vic2]...case hng_n: [cng_vicn][default: [cng_vicn+1]]}

    * Gii thch:- biu thc, hng1, hng2, ..., hngn c th nhn gi tr l cc s nguyn hoc char (s ti thnh int)- cng vic c th l mt cu lnh n hoc 1 cu lnh ghp hoc 1 cu trc lnh khc.Trong cng vic thng s dng thm lnh break thot lun ra khi cu trc lnhswitch.* Cch thc hin:- Nu biu thc nhn gi tr hng no th cng vic tng ng vi hng c thchin. Sau , nu khng gp lnh break th n s thc hin tip cng vic cc trnghp hng cn li.

    - Nu tt c cc hng u khng phi l gi tr ca biu thc th cng vic th n+1 sc thc hin.

    b) V dV d 10:#include#includemain(){

    clrscr();

    int a=1;

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 19

  • 8/3/2019 Bai Giang Co So Lap Trinh

    20/61

    Bi ging: C s lp trnh===================================================================

    switch(a){

    case 0: printf("so do la 0\n");case 1: printf("so do la 1\n");case 2: printf("so do la 2\n");default: printf("khong phai so 0 1 2");

    }getch();

    }

    V d 10_break:#include#includemain(){

    clrscr();int a=1;

    switch(a){

    case 0: printf("so do la 0\n");break;

    case 1: printf("so do la 1\n");break;

    case 2: printf("so do la 2\n");break;

    default: printf("khong phai so 0 1 2");}getch();

    }

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 20

  • 8/3/2019 Bai Giang Co So Lap Trinh

    21/61

    Bi ging: C s lp trnh===================================================================

    BI TPB i 1: Hy vit chng trnh tm s ln nht trong hai s nhp vo t bn phm m

    khng phi s dng bin ph max?B i 2: Hy vit chng trnh tm s ln nht trong hai s v tnh hiu dng ca hai s

    .B i 3: Hy vit phn mm gii phng trnh bc nht ax-b=0B i 4: Hy vit phn mm gii phng trnh bc hai ax2+bx+c=0 vi a, b, c l cc s

    nhp vo t bn phmB i 5: Hy vit phn mm tnh s tin li lnh c sau thi gian t thng bit:

    - Nu gi t hn 6 thng th li sut hng thng l 2%- Nu gi t 7 thng n 1 nm th li sut hng thng l 3% (p dng cho ton b

    thi gian gi).- Nu gi trn 1 nm th li sut hng thng l 4% (p dng cho ton b thi giangi).Phng thc gi: C sau mi thng ngi gi s c rt li mt ln.

    B i 6: Cho bn s a, b, c, d c vo t bn phm. Hy tm gi tr cc i gn cho binc tn l Max v in ra mn hnh.

    B i 7: Vit chng trnh nhp mt s nguyn x vi 2

  • 8/3/2019 Bai Giang Co So Lap Trinh

    22/61

    Bi ging: C s lp trnh===================================================================

    II. Cc lnh lp

    1. Vng lp xc nh FOR

    * Mu lnh

    for ([khi to]; [iu kin]; [bthc thay i gtr bin iu khin])cng_vic;

    Trong :- khi to: l biu thc cho bit gi tr khi to ca bin iu khin- iu kin : l biu thc cho bit iu kin ca bin iu khin thc hin cng vic- bthc thay i gtr bin iu khin : l biu thc cho bit gi tr ca bin kiu khinc thay i nh th no sau mi vng lp.- cng vic : c th l mt cu lnh n hoc mt cu lnh ghp (gm nhiu lnh nt gia 2 du )

    V d 1:for (ch = A; ch

  • 8/3/2019 Bai Giang Co So Lap Trinh

    23/61

    Bi ging: C s lp trnh===================================================================

    #include #include #include main(){

    clrscr();char chu[80];int tong, dem;

    //doc vao xau ki tufor (dem=0; (chu[dem]=getchar())!= '\n'; ++dem); //lenh rongtong=dem;

    //hien thi xau ki tu duoi dang chu hoafor (dem=0; dem

  • 8/3/2019 Bai Giang Co So Lap Trinh

    24/61

    Bi ging: C s lp trnh===================================================================

    #include main(){clrscr();int n, tong=0;do

    {printf("Nhap so: ");scanf("%d",&n);tong+=n;}

    while (tong

  • 8/3/2019 Bai Giang Co So Lap Trinh

    25/61

    Bi ging: C s lp trnh===================================================================

    {clrscr();int n, tong=0;while (tong

  • 8/3/2019 Bai Giang Co So Lap Trinh

    26/61

    Bi ging: C s lp trnh===================================================================

    CHNG III: HM TRONG NGN NG LP TRNH CI. Khi nim v hm

    1. Hm th vin- Hm th vin: l nhng chng trnh con chun, thng dng c lp sn v cchng trnh dch qun l. Cc hm ny c cha trong cc n v chng trnh khcnhau di dng cc tp tiu (header) nh stdio.h, conio.h, ...

    2. Hm t to- Hm t to: l chng trnh con c ngi lp trnh vit.V d 14a:#include#includemain()

    {float f_thi_du(float, int, int); //mau ham, prototypefloat x=1.5;float y, z;int n=3, p=5, q=10;

    y=f_thi_du(x, n, p);printf("gia tri cua y la %f\n",y);

    z=f_thi_du(x+0.5, q, n-1);

    printf("gia tri cua y = %f\n",z);getch();

    }

    //Khai bao hamfloat f_thi_du(float x, int b, int c){

    float gia_tri; //khai bao bien cuc bogia_tri=x*x+b*x+c;return gia_tri;

    }

    II. Cch xy dng hm1. Xy dng hm* Khai bo hm:

    Kiu_gtr_ca_hm Tn_hm(cc_tham_s_hnh_thc){

    Cngvic;

    [return (gtr ca hm);]}

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 26

  • 8/3/2019 Bai Giang Co So Lap Trinh

    27/61

    Bi ging: C s lp trnh===================================================================

    Trong :- Kiu gi tr ca hm: L mt trong cc kiu d liu c bn (float, int, ...)- Tn hm: Do ngi lp trnh t.- Cc tham s hnh thc: Tham s hnh thc l danh sch tn cc bin v kiu d liutng ng ca n dng khi khai bo hm.

    V d:float f_thi_du(float x, int b, int c)

    Ch : Tham s thc s l cc tham s cung cp cho hm khi ta gi hm ra s dng.Tham s thc s c th l tn bin, c th l biu thc hoc cng c th l mt gi trc th.V d:

    y=f_thi_du(x, n, p);z=f_thi_du(x+0.5, q, n-1);

    * Mt s dng khai bo c bit.- Hm khng c gi tr: l hm khi s dng s khng nhn c gi tr no. V vy,trong khi khai bo hm, ta khng cn dng lnh return. Khi khai bo hoc m t muhm, ta dng t kho void (l kiu d liu c bit ca C m t s vic khng c gitr).V d:

    void hm_khng_ c_gi_tr(int n);- Hm khng c tham s: i vi nhng hm khng c tham s, ta dng t kho void m t s vic.V d:

    float thi_d(void)void thi_d(void) //hm khng c gi tr v khng c tham s.

    - Hm khng khai bo kiu gi tr ca hm: Khi hm s c nhn kiu gi trngm nh l intV d:

    hm(float x); //hm nhn gi tr l s int

    V d 15: chuyn i ch thng thnh ch hoaCch 1:#include#includechar chuyen_chu_hoa(char ch){

    char kytu;kytu=(ch>='a' && ch='a' && ch

  • 8/3/2019 Bai Giang Co So Lap Trinh

    28/61

    Bi ging: C s lp trnh===================================================================

    char thuong,hoa;printf("Hay go vao mot ky tu: ");scanf("%c",&thuong);hoa=chuyen_chu_hoa(thuong);

    printf("\nChu hoa tuong ung la %c\n\n",hoa);getch();

    }

    Cch 2: S dng hm if chuyn ch thng thnh ch hoachar chuyen_chu_hoa(char ch){

    char kytu;if kytu=(ch>='a' && ch

  • 8/3/2019 Bai Giang Co So Lap Trinh

    29/61

    Bi ging: C s lp trnh===================================================================

    #include#include

    float f_thi_du(float, int, int); //khai bao mau ham, prototype

    main(){

    float x=1.5;float y, z;int n=3, p=5, q=10;

    y=f_thi_du(x, n, p);printf("gia tri cua y la %f\n",y);

    z=f_thi_du(x+0.5, q, n-1);printf("gia tri cua y = %f\n",z);getch();

    }

    //Khai bao hamfloat f_thi_du(float x, int b, int c){

    float gia_tri; //khai bao bien cuc bogia_tri=x*x+b*x+c;return gia_tri;

    }

    3. Nguyn tc hot ng ca hm

    - Hm nhn cc thng s vo v tr li kt qu cho tn hm.V d:

    y=f_thi_du(x, n, p);Trong ln gi ny, hm f_thi_du nhn tham s l x, n, p v tr li kt qu l gi tr ca

    biu thc x*x+n*x+p.=> V vy, y chnh l gi tr ca biu thc x*x+n*x+p.

    ? Hy xc nh cc thng s truyn vo v gi tr nhn c ca hm khi gi hm nhsau:z=f_thi_du(x+0.5, q, n-1);

    4. Truyn tham s cho hmTruyn tham s cho hm chnh l vic truyn gi tr cho hm . Gi tr ca tham s

    thc s trc v sau khi gi hm khng thay i.

    V d 17 : Xy dng hm hon v 2 s nguyn cho trc

    #include

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 29

  • 8/3/2019 Bai Giang Co So Lap Trinh

    30/61

    Bi ging: C s lp trnh===================================================================

    #includemain(){

    clrscr();//khai bao mau hamvoid hoan_vi(int, int); //void hoan_vi(int a, int b)

    int n=10, p=20;printf("Truoc khi goi ham: %d %d\n",n,p);hoan_vi(n,p);

    printf("Sau khi goi ham: %d %d\n",n,p);getch();

    }void hoan_vi(int a, int b){

    int t;printf("Truoc khi hoan vi: %d %d\n",a,b);t=a;a=b;

    b=t;printf("Sau khi hoan vi: %d %d\n",a,b);

    }5. Phn loi bin* Bin ton cc- L bin c khai bo trc khi khai bo hm. Bin ton cc c s dng mi nitrong chng trnh v c tc dng ngay t chng trnh ngun theo sau khai bo bin.V d :int a ;main(){....}

    int n ;float x ;

    ham1(....){.....}ham2(){.....}* Bin a phng- L bin ch c gi tr trong thi gian hm hot ng . Sau khi hm kt thc, nhng binkhai bo bn trong hm cng vi cc tham s ca hm s c gii phng.V d :#include

    int i; //Bien toan cucmain()

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 30

  • 8/3/2019 Bai Giang Co So Lap Trinh

    31/61

    Bi ging: C s lp trnh===================================================================

    {void thi_du(void);for (i=1; i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    32/61

    Bi ging: C s lp trnh===================================================================

    III. Hm quy

    1. nh ngha hm quy- Hm quy l hm c th c li gi ti chnh n.

    V d: Tnh giai tha ca n bit1 , 0

    !( 1)!* , 1

    nn

    n n n

    ==

    >=

    Ta xy dng hm GIAI_THUA nh sau:

    int GIAI_THUA (int n){

    if (n==0) return(1)else return(n*GIAI_THUA(N-1));

    }

    V d (Sinh vin t lm): Tm c s chung ln nht ca hai s x,y bitUCLN(x,y) = x nu y=0

    UCLN(y, phn d ca x/y) nu y0

    2. Mt s ch khi vit hm quy

    Khi vit hm quy, my tnh s s dng b nh xp chng kiu LIFO (Last In, First

    Out stack) cha cc kt qu trung gian. V vy, chng trnh khi chy s tn nhiu bnh. Nu chng trnh c th s dng vng lp thay th th ta nn dng vng lp.V d: Xy dng hm tm c chung ln nht ca hai s x, y theo phng php sau:UCLN(x,y)= x nu y=0

    UCLN(y,x%y) nu y0Gii :int UCLN(int x, int y){

    if (y==0) return(x) ;else return(UCLN(y,x%y)) ;

    }V d 19: Xy dng chng trnh tnh giai tha ca s nguyn n nhp vo t bn phm#include#include

    main(){

    int n;long int GIAI_THUA(int n);

    //Doc so nprintf("Nhap n= ");

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 32

  • 8/3/2019 Bai Giang Co So Lap Trinh

    33/61

    Bi ging: C s lp trnh===================================================================

    scanf("%d",&n);//in ra giai thua

    printf("n! = %ld \n",GIAI_THUA(n));getch();

    }

    //xay dung ham tinh giai thualong int GIAI_THUA(int n){

    if (n==0) return (1);else return (n*GIAI_THUA(n-1));

    }

    V d 20:Xy dng chng trnh cho 3 cc trong cc C1 cha N a xp t ln nnh. Yu cu chuyn cc a n cc C2 vi nguyn tc:

    - c php chuyn a qua cc trung gian C3- Trn mi cc, cc a c xp phi tho mn nguyn tc: a nh trn, a

    ln di.

    C1 C2 C3

    #include#includevoid DICH_CHUYEN(int N, int C1, int C2, int C3);

    main(){

    clrscr();int N;

    printf("Nhap N= "); scanf("%d",&N);DICH_CHUYEN(N,1,2,3);getch();

    }

    //xay dung ham DICH_CHUYENvoid DICH_CHUYEN(int N, int C1, int C2, int C3)

    { if (N==1) printf("%d den %d\n",C1,C2);

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 33

  • 8/3/2019 Bai Giang Co So Lap Trinh

    34/61

    Bi ging: C s lp trnh===================================================================

    else{

    DICH_CHUYEN(N-1,C1,C3,C2);DICH_CHUYEN(1,C1,C2,C3);DICH_CHUYEN(N-1,C3,C2,C1);

    printf("\n");}

    }

    3) Xy dng macro- Macro l mt tp hp cc lnh v biu thc c i din bng mt tn c th. Khi tacn s dng tp hp cc lnh v biu thc , ta ch cn gi tn macro.Khai bo:

    #define tn_macro dy_cc_lnh_v_biu thc.V d:

    #define In_gtri(x) printf(x= %d,x)#define cube(y) (y*y*y)V d 21 :#include#include

    #define hang 3

    #define In_gtri(x) printf("%d\n",x)#define cube(y) (y*y*y)

    main(){

    clrscr();int x, y, z;x=hang;z=cube(x);In_gtri(x);In_gtri(z);getch();

    }ch : -Trong trng hp macro c cha nhiu lnh th gia cc lnh phi c du ;ngn cch.

    - macro khng c tnh quy v tnh modun ho nh hm.

    4) Mt s th vin hm chun v hm thng dng

    a) Th vin hm chun

    stdio.h Th vin cc hm Input/Outputmath.h Th vin cc hm ton hc du chm ng (sqrt, sin,...)

    stdlib.h Th vin cc hm cp pht b nh.string.h Cc hm v xu k t

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 34

  • 8/3/2019 Bai Giang Co So Lap Trinh

    35/61

    Bi ging: C s lp trnh===================================================================

    ctype.h Cc hm v chuyn i k t.

    b) Mt s hm thng dng

    * Hm to s ngu nhinrandomize; //Hm to b s ngu nhinrandom(n); //Hm to s ngu nhin trong khong t 0 ti n-1

    Ch : - Nu ta s dng hm rand() th chng trnh s to ra mt s ngu nhin nmtrong khong t 0 n 32767.

    - Nu mun s dng hm to s ngu nhin, ta phi gi tp tin x l stdlib.h

    V d 22:#include#include#include

    main(){

    randomize();printf("So ngau nhien trong khoang tu 0-99: %d\n",random(100));getch();

    }

    * Cc hm thi gian- Hm ngy thng- Turbo C nh ngha cu trc ngy thng v thi gian nh sau:struct date

    {int da_year; //nm hin tichar da_day; //ngy hin tichar da_mon; //thng

    }Khi :void getdate(struct date *datep); //hm ly ngy thng ca myvoid setdate(struct date *datep);//hm xc lp ngy thng

    V d 23: Vit chng trnh ly ngy thng ca my#include#include#include

    main(){

    clrscr();

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 35

  • 8/3/2019 Bai Giang Co So Lap Trinh

    36/61

    Bi ging: C s lp trnh===================================================================

    struct date d;getdate(&d);

    printf("Nam hien tai la: %d\n",d.da_year);printf("Thang hien tai la: %d\n",d.da_mon);printf("Ngay hien tai la: %d\n",d.da_day);getch();

    }V d 24: Vit chng trnh xc lp ngy thng cho my#include#include#include#include //su dung ham systemmain(){

    clrscr();

    struct date ngay_moi,ngay_cu;

    getdate(&ngay_cu);printf("ngay thang goc: %d / %d / %d \n",ngay_cu.da_day, ngay_cu.da_mon,

    ngay_cu.da_year);//system("date");

    ngay_moi.da_year = 2000;ngay_moi.da_mon = 1;ngay_moi.da_day = 1;setdate(&ngay_moi);

    printf("Ngay thang duoc xac lap: %d / %d / %d \n",ngay_moi.da_day,ngay_moi.da_mon, ngay_moi.da_year);

    system("date"); //ham system dung de goi lenh cua dos

    setdate(&ngay_cu); printf("Tro lai ngay thang goc: %d / %d / %d \n",ngay_cu.da_day,

    ngay_cu.da_mon, ngay_cu.da_year);system("date");getch();

    }

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 36

  • 8/3/2019 Bai Giang Co So Lap Trinh

    37/61

    Bi ging: C s lp trnh===================================================================

    BI TP CHNG II - III.Bi 1: Cho hm

    F(x) = 5x2 + 5x + 1 khi -1 < x = 1

    Vit chng trnh c mt s thc x t bn phm v in ra mn hnh gi tr ca F(x)Bi 2: Tnh s tin thc lnh ca mt nhn vin trong x nghip theo cng thc:

    Thc lnh = (lng chnh * s ngy cng)/26 + (ph cp) - (tm ng)vi quy nh: ngh qu 5 ngy s b tr 20% tng thc lnh, lm thm qu 3 ngyc tng 10% tng thc lnh.

    Bi 3: Vit chng trnh tm v in ra mn hnh mi c ca s nguyn dng c vot bn phm

    Bi 4: Dng cu trc swich ... case tnh s ngy ca thng bt k thuc nm bt k cvo t bn phm.

    (Bit rng nhng nm nhun thng 2 c 29 ngy, cn nm khng nhun, thng 2 ch c28 ngy. Nm nhun l nm chia ht cho 4 nhng khng chia ht cho 100).

    Bi 5: Tm s hon ho khng vt qu N (vi N nhp vo t bn phm). Bit s honho l s c tng cc c nguyn dng b hn n bng chnh n.V d: 6 c cc c nguyn dng b hn n l 1, 2, 3Ta c 1+2+3=6 nn 6 l s hon ho.

    Bi 6: Vit chng trnh tm cc s chnh phng khng vt qu s n c vo t bn

    phm.Bi 7: Vit chng trnh hin th cc s nguyn t ln hn 2 v nh hn s n nhp vo

    t bn phm.Bi 8: Vit chng trnh tm nhng s c 3 ch s m tng cc lp phng ca cc ch

    s ca chng bng chnh chng.Bi 9: Mt ngi c N triu ng mun i ngn hng ly cc t 10000, 5000, 2000,

    1000, 500, 200. Hy vit chng trnh hin th cc phng n i tin ra mnhnh.

    Bi 10: Vit chng trnh tnh giai tha ca s nguyn n vi n nhp vo t bn phm.Bi 11: S dn ca mt a phng hin nay l N triu ngi, t l tng dn s l s%

    /nm. Hy vit chng trnh tnh xem sau bao nhiu nm th s dn nc ta tngln gp k ln.

    Bi 12: Vit chng trnh m s ch s ca mt s nguyn c vo t bn phm.Bi 13: Vit chng trnh tnh thi gian gi tit kim ngn hng bit s tin gi ban

    u l T, li sut thng l s%, s tin cn lnh trong tng lai l Ts. Tin tit kimc gi theo phng thc sau mi thng, li s c gp vo s tin cho vay tnh li cho thng tip theo (gi l li lu k).

    Bi 14: Phn tch mt s nguyn N thnh tch cc tha s nguyn t.Bi 15: Vit chng trnh gii phng trnh bc 2 ax2+bx+c=0 vi a, b, c l cc s nhp

    vo t bn phm.Bi 16: Vit chng trnh nhp vo N s nguyn v in ra mn hnh theo th t tng dn.Bi 17: Vit chng trnh nhp vo mt s t nhin t bn phm v in ra cc ch s l

    c mt trong .

    Bi 18: Hy vit chng trnh s dng quy hin th dy s Fibonacci theo nh nghasau:

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 37

  • 8/3/2019 Bai Giang Co So Lap Trinh

    38/61

    Bi ging: C s lp trnh===================================================================

    F1=1; F2=1;Fn = Fn-1+Fn-2

    Bi 19: Vit chng trnh nhp vo t bn phm mt dy cc s nguyn khc 0 cho nkhi nhp s 0 th dng vic nhp d liu li. Tnh gi tr trung bnh.

    Bi 20: Vit chng trnh c mt k t vo t bn phm v in ra mn hnh m ASCIIca n. Chng trnh ch kt thc khi n phm 0.

    Bi 21: Hy vit chng trnh in ra bng n! vi n = 1..14n n!1 12 23 64 245 1206 7207 ...Bi 22: Vit hm tnh an vi a l s thc, n l s nguyn dng nhp vo t bn phmBi 23: Vit hm tnh din tch ca cc hnh: hnh vung, hnh trn, hnh thang trong

    cng mt chng trnh. Sau hi v chn mt phng n tnh din tch bngcch chn trong bng chn lnh sau:

    0. Ri khi chng trnh. Quay v DOS1. Tnh din tch hnh vung2. Tnh din tch hnh trn3. Tnh din tch hnh thangHy n mt s chn:

    Bi 24: Hy vit chng trnh tnh n! v tnh

    !/( !*( ))k

    C n k n k n

    =

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 38

  • 8/3/2019 Bai Giang Co So Lap Trinh

    39/61

    Bi ging: C s lp trnh===================================================================

    CHNG IV: CC KIU D LIU C CU TRCI. Kiu d liu mng1. Khi nim v mng

    - Khi nim: Mng l mt nhm cc phn t hu hn c cng kiu d liu c bn.Cc yu t xc nh mt mng gm c:

    Tn mngKiu d liu chung ca cc phn t trong mngKiu d liu ca ch s v phm vi ca ch s.

    Ch : Kiu d liu ca cc phn t mng l mi kiu d liu m mt bin c thnhn. Tuy nhin, kiu d liu ca ch s ch c th l kiu m c (nguyn, k t,lgic, lit k hay on con) ch khng c l kiu thc hay kiu chui.V d:

    int A[100];char text[80];static char message[25];static float n[12*4]; /*Khai bao voi bieu thuc*/

    Mng l tp hp cc gi tr c cng kiu d liu. Mng c th c 1 chiu hoc nhuchiu (mng a chiu).

    1. Mng 1 chiu:C bn nht s l mng 1 chiu, mi 1 phn t trong mng s l nhng gi tr c cng

    kiu d liu vi nhau.Cch khai bo: c 2 cchMint number[10];Mint number[] = {5,3,6,7,8};

    Cch trn c s dng khi bn mun khai bo 1 mng kiu int c 10 phn t (10 ls lng phn t ln nht m mng number c th cha c).

    Cch th 2 c s dng khi ta mun khai bo 1 mng tnh ( c sn cc gi tr

    trong mng). trng hp ny ta khng cn phi khai bo s lng phn t trongmng.

    Truy xut mng: v mng l 1 tp hp cc phn t nn khi dng ta phi thng quaindex (ch s mng). N ging nh ta c 1 ci bn vi nhiu ngn, khi mun tm 1 th g ta phi nh l n ngn th my. Index l 1 kiu s nguyn chy t 0 ti s

    phn t ln nht trong mng tr 1.VD: mng c 10 phn t th index s i t 0 cho ti 9. Phn t u tin l 0 v cuicng l 9.

    Mint number[3];

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 39

  • 8/3/2019 Bai Giang Co So Lap Trinh

    40/61

    Bi ging: C s lp trnh===================================================================

    number[0] = 10; // phn t th nht mang gi tr l 10number[1] = 40;number[2] = 90; // phn t th 3 mang gi tr l 90number[3] = 100; // bo li dng ny v index t 0 -> 2 (v khai bo mng c 3 phn t)

    Thng thng mng c duyt bng cc vng lp, sau y l 1 VD:M#includevoid main(){

    int number[5];int i;// Nhp vofor(i = 0 ; i < 5 ; i++) {

    printf("Nhap so thu %d : ", (i+1));

    scanf("%d", &number[i]);}

    // Xut rafor(i = 0 ; i < 5 ; i++) {

    printf("So thu %d : %d", (i+1), number[i]);

    }getch();

    }

    Vng lp s gip chng ta i ln lt t phn t u ti phn t cui cng ca mng.

    2. Mng 2 chiu:Mng 2 chiu l 1 mng m mi phn t trong n l 1 mng 1 chiu (mng ca

    mng)

    * Cch khai bo:Mint number[3][4];

    Da vo cu lnh khai bo trn ta s c 1 mng 2 chiu cc s int. Mng ny tn

    number v c tng cng 12 phn t (3 hng - 4 ct)Note: index ca mng 2 chiu c quy c bng s hng v s ct. Cng ging nhkhi ta cn v 1 ci bng th ch cn bit s hng v s ct ca bng .

    * Cch s dng: tng t nh mng 1 chiu, mun ghi d liu vo u th ta phi chra index .VD:Mint number[3][4];number[0][0] = 10; // Phn t u tin ca mng mang gi tr l 10 (hng 1, dng 1)number[0][1] = 20; // Phn t hng th 1, ct th 2 mang gi tr l 20

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 40

  • 8/3/2019 Bai Giang Co So Lap Trinh

    41/61

    Bi ging: C s lp trnh===================================================================

    //.......number[2][3] = 100; // Phn t cui cng ca mng

    Nh vy vn l nguyn tc index, index ca hng th khng b hn hoc bng shng v index ca ct th b hn hoc bng s ct.

    V th m khi p dng trong vng lp, ch n gin l lng 2 vng lp vo nhau.VD:

    M#include#includevoid main(){

    clrscr();int A[3][4];int i, j;// Nhp vofor(i = 0 ; i < 3 ; i++){

    for(j = 0 ; j < 4 ; j++){

    printf("Nhap so o A[%d][%d] : ",i,j);scanf("%d", &A[i][j]);

    }printf(\n);

    }

    // Xut rafor(i = 0 ; i < 3 ; i++){

    for(j = 0 ; j < 4 ; j++){

    printf("%d ", A[i][j]);}printf("\n");

    }getch();

    }

    Mt s lu v mng:- Index: Bt u t 0 v kt thc s phn t mng - 1.- Trong C khi 1 mng c khai bo n s t ng ly 1 vng nh trong RAM v n skhng t ng Reset vng nh . VD nh sau:M

    int number[5];printf("%d", number[0]);

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 41

  • 8/3/2019 Bai Giang Co So Lap Trinh

    42/61

    Bi ging: C s lp trnh===================================================================

    on code trn s ra 1 con s bt k d bn cha h gn gi tr cho n. y gi l dliu rc trong C. iu ny cng c ngha l khi ta khai bo mng c 100 phn t th n chim b nh tng ng cho 100 phn t mc d bn ch mi dng c vi phn ttrong mng.

    Tc dng ca mng: Trong cc bi tp v mng chng ta s hiu r hn v nnhng trong 1 lp trnh mng cn c p dng lm ra kiu d liu l String (kiuchui). D trong C khng c kiu String nhng ta vn c th suy lun c String chnhl mng 1 chiu ca kiu char (k t). VD:

    Mchar name[40];

    printf("Nhap ten cua ban: ");scanf("%s", &name);

    printf("Ten cua ban la: %s", name);

    3. Mng nhiu chiu4. Bi tp

    BT4_1:1. Vit hm nhp mt mng s nguyn gm n phn t.2. Vit hm in mng s nguyn gm n phn t3. Vit hm tm phn t ln nht ca mng4. Vit hm tm phn t ln nht trong mng (tr v gi tr v ch s).5. Vit hm tm phn t nh nht trong mng (tr v gi tr v ch s).

    6. Vit hm in ra cc s nguyn t trong mng7. Vit hm m cc s nguyn t trong mng8. Vit hm trung bnh cng cc s nguyn t trong mng9. Vit hm lit k cc s chnh phng trong mng10. Vit hm sp xp mng theo th t tng dn.11. Vit hm in ra cc s l theo th t tr tuyt i tng dn, cc s chn theo th t tr

    tuyt i gim dn.

    BT4_2: Vit chng trnh nhp vo mt mng 1 chiu, sau tm xem trong mng con tng no c s phn t nhiu nht.

    BT4_3: Vit chng trnh nhp vo mt mng 1 chiu, sau tm xem trong mng con tng no c tng ln nht.

    BT4_4: Vit chng trnh nhp vo mng 1 chiu c n phn t (c th dng hmrandomize cho nhanh) sau xut ra phn t no xut hin trong mng nhiu nht vxut hin bao nhiu ln.

    BT4_5: Cho mng s nguyn di n.- In ra mng con cc phn t dng di nht- In ra mng con c tng ln nht.BT4_6: Vit chng trnh gn gi tr ngu nhin cho N phn t ca mng A.

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 42

  • 8/3/2019 Bai Giang Co So Lap Trinh

    43/61

    Bi ging: C s lp trnh===================================================================

    1. Hin th cc phn t ca mng A.2. Sp xp mng theo chiu tng dn.3. Chia mng ra thnh 2 mng con trong c 1 mng (B) cc s dng v 1 mng (C)cc s m.4. Xo mt phn t th i trong mng C5. Chn thm s x vo mng C vi x nhp t bn phm sao cho mng C vn l mng ccs dng tng dn.6. Vit hm m s nguyn x xut hin trong mng A (x nhp vo t bn phm).7. Tm xem on tng dn trong mng A m c s phn t ln nht.

    BT4_7: Vit chng trnh1. Nhp N s nguyn t bn phm (lu vo mng A)2. Hin th cc s nguyn ra mn hnh3. Chia N s nguyn thnh 2 mng:- Mng B gm cc s nguyn m- Mng C gm cc s nguyn dng4. Sp xp cc phn t trong mng A theo chiu tng dn5. Chn thm mt s nguyn a bt k t bn phm vo mng A m vn m bo tnhtng dn6. Nhp mt s nguyn a bt k t bn phm v xo tt c cc phn t bng a trongmng A7. m s phn t trong mng A chia ht cho 38. Sa tt c cc phn t chia ht cho 3 trong mng A thnh 100.

    Bi lm:

    BT4_7#include#includestatic int A[100],B[100],C[100],N;int i,min,x,y;void Nhap(void){

    for(i=0;i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    44/61

    Bi ging: C s lp trnh===================================================================

    void SapXep(void){

    int i, j, index,tg;for(i=0;i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    45/61

    Bi ging: C s lp trnh===================================================================

    }void Chen(void){

    int a,k;printf("\nBan muon chen so a= ");scanf("%d",&a);

    for(i=0;ia){for(k=N;k>i;k--) A[k]=A[k-1];A[i]=a;

    break;}

    }if (i==N) A[N]=a;

    N++;printf("\nMang A sau khi chen so %d la: \n",a);HienThi(A,N);

    }void TimSoChiaHetCho3(void){

    int x=0;for(i=0;i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    46/61

    Bi ging: C s lp trnh===================================================================

    getch();}

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 46

  • 8/3/2019 Bai Giang Co So Lap Trinh

    47/61

    Bi ging: C s lp trnh===================================================================

    II. Kiu d liu con tr1. Khi nim con tr

    - Con tr l bin nhn gi tr c kiu d liu s nguyn- Khai bo:

    int *tn_bin_con_tr;v d :int *con_tro; //bin con tr c tn l con_tro

    - Khi mi khai bo :+ Bin con tr c t mt nh c a ch do my tnh quy nh.+ Bin con tr cha c gi tr c th+ Bin con tr tr n vng nh khng bit trc.

    V vy, ta phi dng lnh gn : = & ;

    2. a ch con tr

    - Ta c :con_tro: Gi tr ca con tr l a ch ca bin xut hin trong lnh gn :

    con_tro = &bien ;*con_tro : Gi tr m con tr tr n (chnh lgi tr ca bien)&con_tro : a ch ca con tr trong b nh

    => *con_tro vbien u ch gi tr cabien con_tro v &bien u ch a ch cabien

    - ch : mun hin th gi tr l a ch ca nh, ta dng m quy cch %p

    V d 26: Hy chy chng trnh sau

    #include #include main(){

    int bien;int *con_tro; //con tro

    bien=10; printf("\nDia chi cua bien la: %p", &bien); //dia chi bien printf("\nGia tri cua bien la: %d", bien); //10

    con_tro=&bien; //con_tro duoc gan gia tri la dia chi cua bienprintf("\nDia chi cua con tro la: %p", &con_tro); //dia chi con_tro

    printf("\nGia tri cua con tro la: %p",con_tro); // = gia tri bien

    printf("\nGia tri duoc tro toi la: %d",*con_tro); // = 10getch();

    }

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 47

  • 8/3/2019 Bai Giang Co So Lap Trinh

    48/61

    Bi ging: C s lp trnh===================================================================

    3. S dng con tr trong mng mt chiu- Mi mng mt chiu c coi l mt bin con tr.Trong mng 1 chiu A, A chnh l a ch ca phn t u tin trong mng.=> A tng ng vi &A[0]

    V d:int A[], *con_tro;con_tro=A;

    hoc con_tro = &A[0];

    V vy, truy xut n phn t th n ca mng, ta c:A[n] == *(con_tro+n)

    4. S dng con tr trong mng nhiu chiu

    5. S dng con tr trong hm

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 48

  • 8/3/2019 Bai Giang Co So Lap Trinh

    49/61

    Bi ging: C s lp trnh===================================================================

    III. Kiu d liu struct- Khi nim: struct l kiu d liu m trong mi phn t ca n c nhiu trng vicc kiu d liu c th khc nhau.

    1. Khai bo struct

    * Cch 1: Khai bo trc tip.

    struct [Tn_struct]{ kiu_d_liu tn_trng1;

    kiu_d_liu tn_trng2;...kiu_d_liu tn_trngn;

    } bien1, bien2, . bien n ; /*danh_sach_bien_nhan_struct*/

    Ch : Danh sch bin nhn d liu kiu struct l tn cc bin c vit cch nhau bidu ,

    V d:struct DiaChi

    { int SoNha;char Pho[20];char ThanhPho[20];

    } OngA, BaB;

    * Cch 2: Khai bo gin tip.

    struct { kiu_d_liu tn_trng1;

    kiu_d_liu tn_trng2;...kiu_d_liu tn_trngn;

    }

    struct bien1, bien2, . bien n ; /*danh_sach_bien_nhan_struct*/

    V d:struct DiaChi

    { int SoNha;char Pho[20];char ThanhPho[20];

    }struct DiaChi OngA, BaB;* Cch 3: Khai bo struct lng nhauV d:struct Date

    {unsigned char Ngay ;

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 49

  • 8/3/2019 Bai Giang Co So Lap Trinh

    50/61

    Bi ging: C s lp trnh===================================================================

    unsigned char thang;unsigned int nam;}

    structNhanSu{char HoTen[30] ;struct Date NgaySinh ;unsigned int GioiTinh;struct DiaChi NoiO ;float Luong;} NguoiA, NguoiB;

    2. Truy cp vo phn t ca struct

    Mun truy cp n 1 trng ca mt bin bt k c kiu d liu struct, ta vit:

    Tn_bin.Tn_trng

    V d:OngA.SoNha = 10;OngA. Pho = Ha Dong;OngA.ThanhPho = Ha Noi

    3. Phi hp mng v d liu kiu struct- Mng_struct l mng m mi phn t ca n c kiu d liu struct.

    V d:struct DiaChi NoiO[100];- Mun truy cp vo 1 trng ca bin th i trong mng ta vit:

    Tn_bin_mng[ch_s].Tn_Trng;

    V d:for (i=0; i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    51/61

    Bi ging: C s lp trnh===================================================================

    {int SoNha;char Pho[20];char ThanhPho[20];

    };

    struct DiaChi NoiO[10];for (i=0; i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    52/61

    Bi ging: C s lp trnh===================================================================

    IV. Kiu d liu t nh ngha :

    1. Kiu lit k (t kho enum)- Kiu d liu lit k: l kiu d liu m khi nh ngha, ta lit k tt c cc phn t can.

    C php:enum Tn_kiu_d_liu_lit_k {Danh sach gi tr};enum Tn_kiu_d_liu_lit_k Tn_bin;Trong : Danh sch cc gi tr l dy cc gi tr c th c vit cch nhau bi du,V d:enum Mau {trang, den, vang};enum Mau MauAo;

    V d 28:

    #include#includemain(){ clrscr();

    enum Mau{trang, den, vang};enum Mau MauAo;MauAo=trang;if (MauAo==trang) printf("Ao mau trang");getch();

    }Ch : Khi nh ngha kiu lit k, gi tr u tin ca danh sch gi tr c s th tmc nh l 0, cc s th t ca cc phn t ng sau n tng dn thm 1 n v.

    Trong trng hp mun gn s t ban u cho gi tr u tin ca danh sch gi trta b sung thm gtr1=s th t u tinV d:enum Mau {trang=0, den, vang};enum Mau MauAo;

    v d 29 :

    #include#includemain(){ clrscr();

    enum Mau{trang=1, den, vang};enum Mau MauAo;

    printf("%d",den); /*2*/getch();

    }

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 52

  • 8/3/2019 Bai Giang Co So Lap Trinh

    53/61

    Bi ging: C s lp trnh===================================================================

    2. Kiu typedefT kho typedefdng t tn mi cho kiu d liu c hoc nh ngha tn camt kiu d liu mi.

    V d1:typedeffloat So; /* nh ngha tn mi ca kiu d liu float l So */typedefSo SoThuc; /* nh ngha tn mi ca kiu d liu So l SoThuc */

    V d 2:typedefstruct NhanSu{

    char HT[30];unsigned int GioiTinh;} NS_Phong1;

    NS_Phong1 st;

    /*struct NhanSu{

    char HT[30];unsigned int GioiTinh;}

    struct NhanSu st;*/

    * u im: Khi s dng Typedef, m chng trnh ngn gn, d c v d chuyn m

    sang my khc.V d:Cch 1:char st1[50], st2[50], st3[50], st4[50], st5[50]Cch 2:typedefchar st[50];st st1, st2, st3, st4, st5;

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 53

  • 8/3/2019 Bai Giang Co So Lap Trinh

    54/61

    Bi ging: C s lp trnh===================================================================

    BT1: Vit chng trnh nhp thng tin Nhn s cho N nhn vin Cng ty THNH DuyPhng (vi N nhp vo t bn phm)Trong gm cc thng tin v:

    - M nhn vin- H tn nhn vin- Nm sinh- Qu qun- Ngy k hp ng- H s lng

    1. m xem c bao nhiu nhn vin sinh nm 19902. Hin th danh sch nhng ngi c h s lng > 2.13. Hin th H tn v h s lng ca ngi c h s lng cao nht4. Gi s nhng ngi trn 40 tui c hng thm ph cp sc kho l 200,000ng/thng. Hy tnh tng s tin cng ty dng chi tr ph cp trong mt thng.

    BT2:Vit chng trnh to mt mng danh sch cc loi my in ca mt ca hng, thng tinca my in bao gm:- Loi my- Ni sn xut- Thi gian bo hnh- Gi tin

    Vit hm nhp 1 dy cc loi my in c thng tin trn In ra mn hnh danh sch cc loi my in

    In ra mn hnh cc loi my in c thi gian bo hnh ln hn 3 nm v gi tin lnhn 1000000

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 54

  • 8/3/2019 Bai Giang Co So Lap Trinh

    55/61

    Bi ging: C s lp trnh===================================================================

    CHNG V: D LIU KIU TP

    I. Khi nim v tp

    1. Khi nim tp- Tp (tp d liu) l mt tp hp cc d liu c cng mt kiu d liu c gp li vinhau thnh mt dy v cha trong thit b nh ngoi (a cng, a CD,...).- c im ca tp:+ C tn+ Cha d liu, chng trnh, ...+ Tp cha trong b nh ngoi => tn ti ngay c khi mt in(Cc cu trc d liu khc nh mng, bn ghi, c t chc trong b nh RAM)Ch : Tp cng c th t chc trong b nh trong ca my tnh nhng n ch l nhngtp c tnh cht tm thi, trung gian v s khng tn ti khi dng chng trnh hoc khi

    mt in.+ S phn t ca tp khng xc nh c khi ta nh ngha (khc vi mng)

    2. Cu trc v phn loi tp

    * Cu trc tp:- Cc phn t ca tp c sp xp thnh mt dy. Ti mi thi im, chng trnh chc th truy nhp c vo mt phn t ca tp thng qua gi tr ca mt bin m ( binm c dng nh du v tr truy nhp ca tp).- Sau khi c mt phn t ca tp, bin tr t ng ch n phn t tip theo trong tp.

    - Khi chy chng trnh, vng nh m c thit lp lu tr tm thi cc thng tinca d liu. Vng nh m cho php thng tin d liu c ghi vo tp hoc c ra ttp mt cc nhanh chng nht bng cch ghi hoc c c mt khi d liu tng iln.Cch thit lp vng nh m: Khai bo

    FILE *fpt;trong : FILE l mt cu trc d liu c bit dng thit lp vng nh m.

    fpt l con tr (con tr cu trc tp hoc bin tp = file point) tr ti a chu ca b nh m ny.Ch : Mi tp c kt thc bng mt du hiu c bit l EOF (End Of File. Hm

    feof s nhn gi tr False nu bin tp ang tr ti v tr cui tp

    Bin tp (ca s nhn tp)

    * Phn loi tp: Da vo bn cht ca d liu, tp c chia ra thnh 2 loi:

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 55

    EOF (F)

  • 8/3/2019 Bai Giang Co So Lap Trinh

    56/61

    Bi ging: C s lp trnh===================================================================

    - Tp vn bn: l tp cha cc phn t l cc k t, cc du chm cu. Cc k t nyc t chc thnh tng dng vi du kt thc dng l CR v LF (\r v \n). Tp vn

    bn dng k t ^Z (Ctrl_Z) c m ASCII l 26 lm k hiu kt thc tp.=> Tp vn bn c th c c trn mn hnh, son tho bng cc phn mm son thovn bn, c th s dng hm x l k t,Ch : Mn hnh, bn phm, my in l cc tp vn bn c bit.- Tp d liu nh phn: L tp cha cc phn t l cc s nh phn biu din thng tin.Thng tin y c th l cc s thc float, cu trc struct, tp cha m lnh my tnh,...

    3. Cc bc x l tp*Bc 1: Khai bo bin tp- Mu lnh:

    Trong : FILE l t kho (c vit hoa).V d :FILE *tep ;

    * Bc 2: M tp ( ghi, c)- Mu lnh:

    V d:+ M tp ghi:

    tep=fopen(VD.TXT, w);hoctep=fopen(C:\\TC\\VD.TXT, w);

    + M tp c:tep=fopen(VD.TXT, r);

    hoctep=fopen(C:\\TC\\VD.TXT, r);

    Bng k hiu kiu x l tp:i vi tp vn bn:

    KIU

    X L

    NGHA

    r read only: M tp vn bn tn ti cw writing only: M tp vn bn mi ghia M tp vn bn c v ghi thm d liu tip ni vo cui tp. Nu tp

    cha c th my tnh s t ng to tp mi.r+ M tp vn bn c v c, ghi d liuw+ M tp vn bn mi ghi, c. Nu my tnh tn ti tp c tn trng

    vi tn tp trong lnh th tp c s b hu, thay vo l tp mi.a+ M tp vn bn c (nu cha c tp th my tnh s t to ra mt tp

    mi) c hoc ghi thm d liu tip ni vo cui tp.i vi tp nh phn:

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 56

    FILE * ;

    Bin_tp=fopen(Tn_tp_trn a, Kiu_x_l_tp);

  • 8/3/2019 Bai Giang Co So Lap Trinh

    57/61

    Bi ging: C s lp trnh===================================================================

    KIUX L

    NGHA

    rb read only, binary: M tp vn bn tn ti cwb writing only, binary: M tp vn bn mi ghiab M tp vn bn c v ghi thm d liu tip ni vo cui tp. Nu tp

    cha c th my tnh s t ng to tp mi.r+b M tp vn bn c v c, ghi d liuw+b M tp vn bn mi ghi, c. Nu my tnh tn ti tp c tn trng

    vi tn tp trong lnh th tp c s b hu, thay vo l tp mi.a+b M tp vn bn c (nu cha c tp th my tnh s t to ra mt tp

    mi) c hoc ghi thm d liu tip ni vo cui tp.

    * Bc 3: Ghi, c tp (x l d liu)- Trong bc 3, ngi lp trnh c th s dng cc hm c sn hoc cc hm t xy

    dng vit chng trnh.* Bc 4: ng tp- Mu lnh:

    fclose(tep);

    Khung chng trnh x l tp:

    #include main(){

    FILE *tep;tep=fopen(VD.dat, w);if (tep = = NULL)printf(\n Khong mo duoc tep);else{

    /*Xu li du lieu */.......

    fclose(tep);}

    }

    II. Tp d liu nh phn

    1. To tp nh phnNu hm m tp mi c ch x l l w th tp s rng, con tr tp ch vo cui tp(EOF) => ca s tp khng c gi tr cc nh.Ch : Trong trng hp tn tp trong hm trng vi tn ca mt tp c th tp c skhng cn na.

    V d 31: To tp cc s nguyn.

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 57

  • 8/3/2019 Bai Giang Co So Lap Trinh

    58/61

    Bi ging: C s lp trnh===================================================================

    Cch 1:

    #includemain(){ FILE *f1; /* Khai bao con tro cau truc tep*/

    f1=fopen("SONGUYEN.DAT", "wb"); /*Mo tep voi che do ghi du lieu*/

    for (int i=1; i

  • 8/3/2019 Bai Giang Co So Lap Trinh

    59/61

    Bi ging: C s lp trnh===================================================================

    #include #include #include main(){ int i;FILE *f1;f1=fopen("SONGUYEN.DAT","rb"); /* Mo tep nhi phan de doc*/

    while (fread(&i, sizeof(int), 1, f1), !feof(f1))printf("%4d",i);

    fclose(f1);getch();

    }* Mu lnh c gi tr v kim tra tp:Mu 1:do

    BiuThc1;if(BiuThc2)

    while (BiuThc2);

    Mu 2:do{ fread(&i, sizeof(int), 1, f1); /* c trc */

    if (!feof(f1))printf(\n%d,i);

    }while (!feof(f1));

    3. Truy nhp tp d liu nh phn

    - Hm truy nhp trc tip l fseek- Mu lnh :

    fseek(fptr, No*kch_thc_1_phn_t, SEEK_SET) ;Trong :

    fptr l tn con tr tp (do ngi lp trnh t)No l v tr s th t ca phn t trong tp. (Phn t u tin ca tp l 0)Kch_thc_1_phn_t: thng c thc hin bng hm sizeof().=> No*Kch_thc_1_phn_t cho bit to tnh theo byt ca phn t cn truy nhpvo.Tham s cui cng trong mu lnh l mt trong 3 trng hp:SEEK_SET (hoc 0): di chuyn v tr truy nhp bt u t u tpSEEK_CUR(hoc 1): di chuyn tnh t v tr hin ti ca ca s hin ti ca tpSEEK_END (hoc 2): di chuyn tnh t to cui tp

    V d: (14.8, 14.9 gio trnh Ngn ng lp trnh C _ trang 276, 277, 278)

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 59

  • 8/3/2019 Bai Giang Co So Lap Trinh

    60/61

    Bi ging: C s lp trnh===================================================================

    CC THUT TON SP XP- Selection Sort - Sp xp kiu chn- Insertion Sort - Sp xp kiu chn- Bubble Sort - Sp xp ni bt

    1.Selection Sort - Sp xp kiu chnGii thut:y l phng php sp xp n gin nht c tin hnh nh sau:u tin chn phn t nh nht trong n phn t t danh sch X[1]X[n] v hon v nvi phn t X[1].Chn phn t c kha nh nht trong n-1phn t t danh sch X[2] X[n] v hon vn vi X[2].Tng qut bc th i, chn phn t c kho nh nht trong n-i+1 phn t t danh schX(i) X(n) v hon v n vi X(i).Sau n-1 bc ny th mng c sp xp.=>Phng php ny c gi l phng php chn bi v n lp li qu trnh chn

    phn t nh nht trong s cc phn t cha c sp.

    2. Insertion Sort - Sp xp kiu chnVn :Sp th t cc phn t ca mt danh sch:X1, X2,, XnSao cho (theo mt trng kha no ) chng c th t tng dn:X1 X2 XnHoc c th t gim dn:X1 X2 XnGii thut :Bc 1, xen phn t X[2] vo danh sch c th t X[1] sao cho X[1], X[2] l mtdanh sch c th t.Bc 2, xen phn t X[3] vo danh sch c th t X[1], X[2] sao cho X[1], X[2],X[3] l mt danh sch c th t.Tng qut, bc i, xen phn t X[i+1] vo danh sch c th tX[1],X[2],..X[i]sao cho X[1], X[2],.. X[i+1] l mt danh sch c th t.Phn t ang xt X[j] s c xen vo v tr thch hp trong danh sch cc phn t c sp trc X[1],X[2],..X[j-1] bng cch so snh kho ca X[j] vi kho ca X[j-1] ng ngay trc n. Nu kho ca X[j] nh hn kho ca X[j-1] th hon i X[j-1]v X[j] cho nhau v tip tc so snh kho ca X[j-1] (lc ny X[j-1] cha ni dung caX[j]) vi kho ca X[j-2] ng ngay trc n...

    3. Bubble Sort - Sp xp ni bt

    Vn :Sp th t cc phn t ca mt danh sch:X1, X2,, XnSao cho (theo mt trng kha no ) chng c th t tng dn:

    ===================================================================Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t 60

  • 8/3/2019 Bai Giang Co So Lap Trinh

    61/61

    Bi ging: C s lp trnh===================================================================

    X1 X2 XnHoc c th t gim dn:X1 X2 XnSp xp kiu Ni bt (bubble sort) l mt gii thut sp xp n gin. N lp i lp liqu trnh duyt danh sch cn sp xp, so snh hai phn t v i v tr nu chng ng

    sai v tr.Gii thut nh sau:1.So snh 2 phn t cnh nhau. Nu phn t trc ln hn phn t sau th i v tr(swap) ca chng cho nhau.2.Thc hin vic vi mi cp phn t., t cp u tin ti cp cui cng. Ti thiim ny, phn t cui cng s l phn t c gi tr ln nht.3.Lp li cc bc trn vi cc phn t tr phn t cui cng. Cho ti khi khng cncp no cn so snh.