06-Tong Quan Ve Ngon Ngu C

Embed Size (px)

DESCRIPTION

Tin Dai Cuong

Citation preview

  • 1TRNG I HC BCH KHOA H NIVIN CNG NGH THNG TIN V TRUYN THNG

    TIN HC I CNGBi 6. Tng quan v ngn ng C

    Ni dung

    6.1. Lch s pht trin

    6.2. Cc phn t c bn ca ngn ng C

    6.3. Cu trc c bn ca chng trnh C

    6.4. Bin dch chng trnh C

    6.5. Trnh bin dch Turbo C++

    2

    Ni dung

    6.1. Lch s pht trin

    6.2. Cc phn t c bn ca ngn ng C

    6.3. Cu trc c bn ca chng trnh C

    6.4. Bin dch chng trnh C

    6.5. Trnh bin dch Turbo C++

    3 4

    6.1. Lch s pht trin

    Ra i ti phng th nghim BELL ca tp on AT&T (Hoa K)

    Do Brian W. Kernighan v Dennis M. Ritchie pht trin vo u 1970, hon thnh 1972

    C da trn nn cc ngn ng BCPL (Basic Combined Programming Language) v ngn ng B.

    Tn l ngn ng C nh l s tip ni ngn ng B.

  • 26.1. Lch s pht trin

    c im ca ngn ng lp trnh C

    Ngn ng lp trnh h thng

    Tnh kh chuyn, linh hot cao

    C th mnh trong x l d liu s, vn bn,c s d liu

    C thng c s dng vit ccchng trnh h thng

    H iu hnh Unix c 90% m C, 10% hpng

    Cc trnh iu khin thit b (device driver)

    X l nh 55 6

    6.1. Lch s pht trin

    1978: C c gii thiu trong phin bn u ca cun sch "The C programming language"

    Sau , C c b sung thm nhng tnh nngv kh nng mi ng thi tn ti nhiu phin bn nhng khng tng thch nhau.

    Nm 1989, Vin tiu chun quc gia ca Hoa K (American National Standards Institute - ANSI) cng b phin bn chun ha ca ngn ng C: ANSI C hay C chun hay C89

    6.1. Lch s pht trin

    Cc phin bn ngn ng C

    ANSI C: C chun (1989)

    Cc phin bn khc thng b sung thmth vin ca ANSI C

    Hin nay cng c nhiu phin bn ca ngn ngC khc nhau, gn lin vi mt b chng trnhdch c th ca ngn ng C

    Turbo C++ v Borland C++ ca Borland Inc.

    MSC v VC ca Microsoft Corp.

    GCC ca GNU project

    77

    Ni dung

    6.1. Lch s pht trin

    6.2. Cc phn t c bn ca ngn ng C

    6.3. Cu trc c bn ca chng trnh C

    6.4. Bin dch chng trnh C

    6.5. Trnh bin dch Turbo C++

    8

  • 3V d

    #include

    #include

    void main(){

    printf(Hello World\n);

    getch();

    }

    9

    6.2.1. Tp k t

    Tp k t l tp cc phn t c bn to nn chng trnh

    T hp cc k t t

    Lin kt cc t theo c php cu lnh

    T chc cc cu lnh chng trnh

    V d:

    include, void, main

    printf(), getch();

    10

    6.2.1. Tp k t

    Tp k t trong C

    26 ch ci hoa:A B C ... X Y Z

    26 ch ci thng:a b c x y z.

    10 ch s: 0 1 2 3 4 5 6 7 8 9.

    Cc k hiu ton hc:+ - * / = < >

    Cc du ngn cch: . ; , : space tab

    Cc du ngoc:( ) [ ] { }

    Cc k hiu c bit:_ ? $ & # ^ \ ! ~ .v.v.

    11

    6.2.2. T kha

    T kha (keyword)

    C sn trong mi ngn ng lp trnh

    Dnh ring cho cc mc ch xc nh

    t tn cho kiu d liu: char, int, float, double

    M t cc lnh, cc cu trc lp trnh: if, else, switch, case, while, do

    Ch :

    Tt c t kha trong C u vit bng ch ci thng

    12

  • 46.2.2. T kha

    T kha hay dng trong Turbo C

    13

    6.2.3. nh danh

    nh danh (Identifier hoc cn gi l Tn) l mt dy cc k t dng gi tn cc i tng trong chng trnh.

    Cc i tng trong chng trnh Bin

    Hng s

    Hm

    Kiu d liu (s lm quen cc mc sau)

    nh danh c th c t bi Ngn ng lp trnh cc t kha

    Ngi lp trnh14

    6.2.3. nh danh

    Quy tc t tn nh danh trong C

    Cc k t c s dng: ch ci, ch s v du gch di _ (underscore)

    Bt u ca nh danh phi l ch ci hoc du gch di _, khng c bt u nh danh bng ch s.

    nh danh do ngi lp trnh t khng c trng vi cc t kha ca C

    Ch : C l ngn ng c phn bit ch hoa v ch thng

    15

    6.2.3. nh danh

    V d

    nh danh hp l:

    i, x, y, a, b, _function, _MY_CONSTANT, PI, gia_tri_1

    nh danh khng hp l

    1_a, 3d, 55x (bt u bng ch s)

    so luong, ti le (c du cch - k t khng hp l)

    int, char (trng vi t kha ca ngn ng C)

    16

  • 56.2.3. nh danh

    Mt s quy c (code convention) Nn s dng du gch di hoc vit hoa phn

    tch cc nh danh gm nhiu t

    nh danh nn c tnh gi nh

    Quy c thng c s dng:

    Hng s dng ch ci hoa

    Cc bin, hm, cu trc dng ch ci thng

    V d

    nh danh Loi i tng

    HANG_SO_1, CONSTANT_2 Hng s

    a, b, i, j, count Bin

    nhap_du_lieu, tim_kiem, xu_li Hm

    sinh_vien, mat_hang Cu trc17

    Sohoanhao

    SOHOANHAO

    so_hoan_hao

    SoHoanHao

    SoHoAnhAo

    18

    6.2.4. Cc kiu d liu

    nh ngha:

    Kiu d liu cho bit cch lu tr d liu trong b nh, di gi tr v cc php ton c th thc hin trn d liu.

    V d:

    Kiu d liu int (s nguyn) trong C

    Mt d liu thuc kiu d liu int

    L mt s nguyn c du

    2 byte

    Nhn gi tr t t - 32,768 (- 215) n 32,767 (215 - 1)

    19

    6.2.4. Cc kiu d liu

    V d (tip) Mt s php ton c nh ngha trn kiu d liu

    int ca C

    Tn php ton K hiu

    o du -

    Cng +

    Tr -

    Nhn *

    Chia ly phn nguyn /

    Chia ly phn d %

    So snh >, =,

  • 6V d

    #include

    #include

    #define PI 3.14

    void main(){

    float r, s;

    printf(Nhap ban kinh hinh tron:);

    scanf(%f,&r);

    s = PI * r * r;

    printf(Dien tich hinh tron %f\n,s);

    getch();

    } 21

    6.2.5. Hng s

    nh ngha:

    hng (constant) l i lng c gi tr khng i trong chng trnh.

    Biu din hng s nguyn: trong C, mt hng s nguyn c th biu din di 3 dng

    Dng thp phn

    Dng thp lc phn

    Dng bt phn

    Gi tr thp phn Gi tr thp lc phn Gi tr bt phn

    2007 0x7D7 03727

    396 0x18C 061422

    6.2.5. Hng s

    Biu din hng s thc: trong C, mt hng s thc c th biu din di 2 dng

    Dng s thc du phy tnh

    Dng s thc du phy ng

    V d

    S thc du phy tnh S thc du phy ng

    3.14159 31.4159 E-1

    123.456 12.3456 E+1 hoc 1.23456 E+2

    23

    6.2.5. Hng s

    Biu din hng k t: trong C, mt hng k t c th biu din theo hai cch

    Bng k hiu ca k t t gia hai du nhy n

    Bng s th t ca k t trong bng m ASCII (s nguyn -> tun th quy tc biu din hng s nguyn)

    V d

    K t cn biu din Cch 1 Cch 2

    Ch ci A A 65, 0x41, 0101

    Du nhy n \ 39, 0x27, 047

    K t tab \t 0, 0x09, 011

    24

  • 76.2.5. Hng s

    Biu din hng xu k t:

    Hng xu k t c biu din bi dy cc kt thnh phn c trong xu v c ttrong cp du nhy kp.

    V d:

    ngon ngu lap trinh C

    Tin hoc dai cuong

    Dai hoc Bach Khoa Ha Noi

    25

    V d

    #include

    #include

    void main(){

    float a, b, x;

    printf(Nhap he so a=);scanf(%f,&a);

    printf(Nhap he so b khac 0, b=);scanf(%f,&b);

    x = -b/a;

    printf(Nghiem cua phuong trinh %f,x);

    getch();

    } 26

    6.2.6. Bin

    nh ngha:

    Bin (variable) l i lng m gi tr c th thay i trong chng trnh.

    Ch :

    Hng s v bin c s dng lu tr d liu trong chng trnh

    Hng s v bin phi thuc mt kiu d liu no

    Hng s v bin u phi t tn theo quy tc

    27

    6.2.7. Hm

    M t:

    Hm (function) l mt chng trnh con c chc nng nhn d liu u vo (cc tham s u vo), thc hin mt chc nng no v a ra cc kt qu.

    Hm ngha K hiu ton hc V d

    Pow(x,y) X m y Xy Pow(2,3)=8

    Sin(x) Sin ca x Sinx Sin(0)=0

    Cos(x) Cos ca x Cosx Cos(0)=1

    28

  • 86.2.8. Biu thc

    nh ngha:

    Biu thc l s ghp ni cc ton t (operator) v cc ton hng (operand) theo mt quy tc xc nh.

    Cc ton hng c th l bin, hng

    Cc ton t rt a dng: cng, tr, nhn, chia..

    V d: biu thc tnh th tch hnh ch nht

    chieu_dai * chieu_rong * chieu_cao

    - chieu_dai, chieu_rong, chieu_cao l cc hng hoc bin s ng vai tr ton hng

    - Php * ng vai tr ton t29

    6.2.9. Cu lnh

    Cu lnh (statement) din t mt hoc mtnhm cc thao tc trong gii thut.

    Chng trnh c to thnh t dy cccu lnh.

    Cui mi cu lnh bt buc c du chmphy ; nh du kt thc cu lnh

    30

    6.2.9. Cu lnh

    Phn nhm: Nhm cc cu lnh n: nhng cu lnh

    khng cha cu lnh khc. V d: php gn,php cng, php tr

    Nhm cc cu lnh phc: nhng cu lnhcha cu lnh khc.

    V d: lnh khi t trong cp ngoc nhn { }

    31

    6.2.10. Ch thch

    Ch thch (comment):

    Li m t, gii thch vn tt cho mt cu lnh,mt on chng trnh hoc c chng trnh

    Gip vic c v hiu chng trnh d dnghn

    Ch thch khng phi l cu lnh -> khng nhhng ti chng trnh

    Cch vit ch thch: trong C c hai cch

    Ch thch mt dng: s dng //

    Ch thch nhiu dng: s dng /* v */

    32

  • 9Ni dung

    6.1. Lch s pht trin

    6.2. Cc phn t c bn ca ngn ng C

    6.3. Cu trc c bn ca chng trnh C

    6.4. Bin dch chng trnh C

    6.5. Trnh bin dch Turbo C++

    33

    V d

    #include //Khai bao tep tieu devoid main(){// Khai bao cac bienint a, b; //int : kieu so nguyeint tong, hieu, tich;

    // Nhap vao tu ban phim 2 so nguyen

    printf(\nNhap vao so nguyen thu nhat: ); //In ra man hinh

    scanf(%d,&a); //Doc tu phim gia tri cua a

    printf(\n Nhap vao so nguyen thu hai: );

    scanf(%d,&b);34

    V d

    // Tinh tong, hieu, tich cua 2 so do

    tong = a+b; hieu = a b;tich = a*b;

    // Hien thi cac gia tri ra man hinh

    printf(\n Tong cua 2 so vua nhap la %d, tong);

    printf(\n Hieu cua 2 so vua nhap la %d, hieu);

    printf(\n Tich cua 2 so vua nhap la %d, tich);

    // Doi nguoi dung an phim bat ki

    getch();

    }35

    36

    Gm 6 phn c th t nh sau:

    Phn1: Khai bo tp tiu : #include

    Phn 2: nh ngha kiu d liu mi: typedef ...

    Phn 3: Khai bo cc hm nguyn mu

    Phn 4: Khai bo cc bin ton cc

    Phn 5: Hm main()

    Phn 6: Ni dung cc hm khai bo

    6.3. Cu trc c bn ca chng trnh C

  • 10

    37

    Phn 1: Khai bo tp tiu :

    Thng bo cho chng trnh dch bit l chng trnh c s dng nhng th vin no.

    VD: #include

    #include

    6.3. Cu trc c bn ca chng trnh C

    Th vin Chc nng

    stdio.h Cc hm vo/ra c bn

    conio.h Cc hm giao tip ngi dng s dng MS-DOS API

    math.h Cc hm ton hc c bn

    ctype.h Cc hm x l k t

    string.h Cc hm x l xu

    stdlib.h Cc hm tin ch

    time.h Cc hm iu khin thi gian 38

    Phn 2: nh ngha cc kiu d liu mi

    nh ngha cc kiu d liu mi (nu cn) dng cho c chng trnh.

    Phn 3: Khai bo cc hm nguyn mu: Gip cho chng trnh dch bit c nhng

    thng tin c bn ca cc hm s dng trong chng trnh.

    Phn 4: Khai bo cc bin ton cc V d:

    int a, b;

    int tong, hieu, tich;

    6.3. Cu trc c bn ca chng trnh C

    39

    Phn 5: Hm main( )

    Khi thc hin, chng trnh s bt u bng vic thc hin cc lnh trong hm main( ).

    Trong hm main( ) c th c lnh gi ti cc hm khc.

    Phn 6: Ni dung ca cc hm khai bo

    Ci t (vit m) cho cc hm khai bo nguyn mu phn 3.

    6.3. Cu trc c bn ca chng trnh C Vit mt chng trnh p

    Ch thch m t hm/chng trnh:

    Chc nng

    u vo

    u ra

    nh du bn quyn

    Ch thch cc bin quan trng

    Ch thch cc bc x l d liu theo thut ton

    Li dng cho cc lnh lng nhau

    nh danh i tng r rng

    Module ha chng trnh

    40

  • 11

    Ni dung

    6.1. Lch s pht trin

    6.2. Cc phn t c bn ca ngn ng C

    6.3. Cu trc c bn ca chng trnh C

    6.4. Bin dch chng trnh C

    6.5. Trnh bin dch Turbo C++

    41 42

    Preprocessor Loi b cc ch thch Dch cc ch th tin x l bt u l #

    C Compiler Bin dch m ngun thnh m assembly.

    Assembler To ra m object.

    Trn UNIX file .o Trn MS-DOS file.OBJ

    Link Editor Nu tp ngun tham chiu n cc hm

    th vin/hm c nh ngha th Link editor kt hp cc hm ny vi hm main() to ra tp c th thc thi c

    Trong MS-DOS l file .exe

    6.4. Bin dch chng trnh C

    Ni dung

    6.1. Lch s pht trin

    6.2. Cc phn t c bn ca ngn ng C

    6.3. Cu trc c bn ca chng trnh C

    6.4. Bin dch chng trnh C

    6.5. Trnh bin dch Turbo C++

    43

    6.5.1. Gii thiu

    Trnh bin dch (compiler): dch m ngun (source code) thnh file thc thi

    Cc trnh bin dch C ph bin

    Turbo C++ ca hng Borland

    MSC ca Microsoft

    GCC ca GNU

    Dev C++ ca Bloodshed Software

    Turbo C++ c nhiu phin bn

    Phin bn la chn: Turbo C++ 3.0

    44

  • 12

    6.5.2. Ci t v s dng Turbo C++ 3.0

    Ci t

    B1: Chun b b ci ca Turbo C++ 3.0 (~4 MB) Copy b ci ny vo my ca bn, gi s vo th mc C:\TC_Setup.

    B2: n th mc cha b ci Turbo C++ 3.0 (nh gi s trn l C:\TC_Setup) v kch hot file INSTALL.EXE chy chng trnh ci t. Chng trnh ci t s yu cu bn ch ra a trn cha b ci Turbo C++ 3.0

    Enter the SOURCE drive to use:

    Hy nhp vo tn a, chng hn C (ta b ci Turbo C++ 3.0 th mc C:\TC_Setup).

    45

    6.5.2. Ci t v s dng Turbo C++ 3.0

    B3: Chng trnh yu cu bn nhp vo ng dn ti th mc cha cc file ca Turbo C++ 3.0

    Enter the SOURCE Path:

    Thng thng chng trnh s t tm cho bn, v bn ch cn n Enter chuyn sang bc tip theo.

    B4: Xc nh th mc ci t. Th mc ny s cha cc file ca Turbo C++ 3.0 bn s dng sau ny.

    Directories [C:\TC]

    Option[IDE CMD LIB CLASS BGI HELP EXMPL]

    http://sites.google.com/site/buitrongtung

    HD.zip

    46

    6.5.2. Ci t v s dng Turbo C++ 3.0

    Start Installation Th mc ci t mc nh s l \TC nm trn th mc

    gc ca a cha b ci. Nu bn mun thay i th mc ci t th hy dng cc phm v di chuyn hp sng n phn Directories, g Enter v nhp vo ng dn mi, sau n phm Esc tr v.

    Dng cc phm v di chuyn hp sng n phn Start Installation v n Enter. Chng trnh s t ng thc hin v hon tt qu trnh ci t cho bn.

    Lu : Bn c th copy ton b th mc ci t ca Turbo C++ 3.0 v my v s dng, nhng bn phi ch cho Turbo C++ bit ng dn ti cc tp tiu v cc tp th vin bng cch vo menu Option, chn Directories.

    47

    6.5.2. Ci t v s dng Turbo C++ 3.0

    Giao din s dng ca chng trnh

    48

  • 13

    6.5.2. Ci t v s dng Turbo C++ 3.0

    49

    Video: Setup TurboC

    6.5.2. Ci t v s dng Turbo C++ 3.0

    Khi ng chng trnh: tm n th mc BIN trong th mc ci t v chy file TC.EXE

    To ca s son tho mi: chn menu File (hoc n Alt-F), sau chn mc New m ca s son tho mi.

    G chng trnh ngun vo ca s son tho

    Lu chng trnh vi tn file,v d: HelloWorld.cpp

    Bin dch chng trnh: bm F9

    Chy chng trnh: Ctrl + F9 50

    6.5.2. Ci t v s dng Turbo C++ 3.0

    51

    Video: S dng TurboC

    Tho lun

    52