Cơ sở lập trình

157 403 2
Cơ sở lập trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRNG I HC PHM VN NG KHOA CÔNG NGH THÔNG TIN TRN TN T BÀI GING  (Dùng cho sinh viên các lp i hc Công ngh thông tin, i hc S phm tin hc)     - Tài liu lu hành ni b -  LI NÓI U C s lp trình là hc phn giúp cho sinh viên nm c kin thc c bn  cài t thành công mt thut toán thành chng trình bng ngôn ng lp trình C. Qua ó, trang b cho sinh viên kin thc nn  tip cn và hc tp tt các ngôn ng lp trình khác trong các hc k tip theo. Bài ging c biên son và ging dy cho sinh viên nm th nht, bc i hc ngành Công ngh thông tin và ngành S phm tin hc k t nm 2008, theo hình thc ào to niên ch. Hin nay chng trình ào to ti Trng i hc Phm Vn ng c chuyn i sang ào to theo hc ch tín ch. Chính vì vy, bài ging c chnh s a, b sung cho phù hp v!i hình thc ào to theo hc ch tín ch. C∀ng nhân ây tôi xin chân thành cám n hi ng chuyên môn khoa Công ngh thông tin, Th.S Hunh Triu V# và Th.S Võ c Lân ã dành thi gian c và óng góp nhiu ý kin quý báu  bài ging c hoàn chnh hn, áp ng nhu cu hc tp c∃a sinh viên Khoa Công ngh thông tin - Trng i hc Phm Vn ng. Bài ging không sao tránh kh%i nhng thiu sót, mong các bn ng nghip óng góp ý kin  bài ging hoàn thin hn trong các ln chnh s a sau. Xin chân thành cám n quý thy cô, các bn ng nghip ! Qung Ngãi, ngày 25/12/2013 TRN TN T Bài ging C s lp trình -1- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. CHNG 1: CÁC THÀNH PHN C BN Mc tiêu Kt thúc chng, sinh viên th:  Nm c các thành phn c bn ca ngôn ng lp trình C: b ký hiu, t khóa, tên và cách t tên, cách ghi li chú thích.  Nm c cu trúc chung ca mt chng trình C.  Hiu và vn dng c các phép toán, các hàm ã c xây dng cho các kiu d liu c s: kiu s nguyên, kiu s thc, kiu ký t, kiu boolean. 1.1 B ký hiu và t khóa 1.1.1 B ký hiu - 26 ch cái la tinh hoa: A, B, …, Z. - 26 ch cái la tinh thng: a, b, …, z. - 10 ch s thp phân: 0,1,…,9. - Các ký hiu toán hc: +, -, *, /, = <, >, (, ). - Các ký hiu c bit: . , ; “ ‘ _ @ # $ ! ^ [ ] { } … - Du cách hay khong trng. 1.1.2 T khóa Là các t dùng riêng ca ngôn ng lp trình C và mi t khóa mt ý ngha và tác dng c th. * Chú ý: - Không th nh ngha li t khóa. - Các t khóa trong C c vit di dng ch thng. Mt s t khóa thông dng hay dùng trong ngôn ng lp trình C auto break case char continue default do double else extern float for goto if int long register return short sizeof static struct switch typedef union usnigned void volatile while asm …. 1.1.3 Tên và cách t tên Trong chng trình, ngi lp trình th dùng rt nhiu tên: tên chng trình, tên bin, tên hng, tên hàm,… Mi tên u phi khai báo trc khi s dng. Qui tc t tên: - Tên bao gm dãy các ký t lin nhau nh các ch cái a,…,z, A,… Z, các ch s 0, …, 9 và du gch ni di. Bài ging C s lp trình -2- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. - Tên không c bt u bng ch s. - Tên không c ch a các ký t c bit nh du cách, du chm câu,… S ký t ti a trong tên ca Turbo C là 32. - Tên không c trùng vi t khóa. - C là ngôn ng lp trình phân bit ch hoa và ch thng, vì vy tên NGHIEM s! khác vi các tên: Nghiem, nghiem,…. - Không c t tên bng ting Vit (C xem cách làm ó là sai cú pháp) . - Các ví d v t tên: + Mt s tên t úng: Gia_tri, _DX, pi, …. + Mt s tên t sai: 3X, PI$, Bien 1, 1.1.4 Chú thích Khi vit chng trình bn nên thêm vào các li chú thích  cho chng trình sáng sa và d∀ hiu. Trình biên dch s! không biên dch các chú thích  to ra mã chng trình mà nó tác dng thuyt minh thêm cho d∀ hiu. Phn v#n bn nm gia cp ký hiu m∃ /* và óng */ chính là phn chú thích. Phn chú thích th nm trên nhiu dòng, mi∀n là nm trong cp du m∃ và óng nêu trên. Lu ý: Trong C++ li chú thích nm sau cp du // và vit trên mt dòng. 1.2 Cu trúc chung ca mt chng trình C Cu trúc t%ng th ca mt chng trình C thng các khi thông dng sau: ………………………………………………………………………………… #include <…> /*  gi các tp tin tin x lý */ #define <…> /* nh ngha các hng s */ typedefs <…> /* nh ngha kiu d liu */ ………………………………………………………………………………… Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */ ………………………………………………………………………………… Khai báo các bin ngoài …………………………………………………………………………………. <Kiu d liu tr v> main() /* chng trình C bt buc phi hàm main */ { Khai báo các bin cc b, các hng ca hàm main Các câu lnh thc hin ca hàm main return <Kt qu tr v> } Bài ging C s lp trình -3- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. ………………………………………………………………………………… Function prototype /* nh ngha ni dung tng minh ca hàm */ { Khai báo các bin, hng ca hàm. Các câu lnh thc hin ca hàm. } ………………………………………………………………………………… Nh vy, mt chng trình C thng bao gm các thành phn: các ch∋ tin x lý, các nh ngha: kiu, hng, khai báo bin ngoài, các hàm t to, hàm main. Trong ó: + #include <…> /*  gi các tp tin tin x lý */ Ví d 1.1: #include <stdio.h> + #define <Tên hng s> <Giá tr hng> /* nh ngha các hng s */ Ví d 1.2: #define MAX 100 + typedef <tên kiu c(> <tên kiu mi> /* nh ngha kiu d liu */ Ví d 1.3: typedef int Songuyen; + Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */ Trong phn khai báo nguyên m&u hàm, bn ch∋ ra kiu giá tr tr v ca hàm, tên hàm, tham s hình th c ca hàm. Ví d 1.4: Khai báo nguyên m&u hàm tính din tích hình tròn float Tinh_dien_tich(float radius); + Khai báo các bin ngoài (bin toàn cc): Là ni khai báo các bin tm tác dng trong c chng trình. Ví d 1.5: int n; + Trong chng trình C th nhiu hàm, trong ó hàm main là hàm chính, bt buc phi và các câu lnh c thc hin tun t t trên xung di. V nguyên tc hàm phi tr li mt giá tr cho tên hàm, nhng nu không mun s dng giá tr tr v, bn th vit nh sau: void main(). T khóa void  ch∋ hàm không giá tr riêng ca nó (t c hàm không mang mt giá tr c th nào khi thc hin xong hàm) + /* nh ngha ni dung tng minh ca hàm */ Ví d 1.6: )nh ngha ni dung hàm tính din tích hình tròn vi tham s là radius (bán kính ca hình tròn). float Tinh_dien_tich(float radius) #define PI 3.14 Bài ging C s lp trình -4- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. { float dientich; dientich = PI*radius*radius; return(dientich); } Lu ý: )nh ngha ca hàm Tinh_dien_tich s! c vit phía di hàm main. * Mt s ví d: Ví d 1.7: Chng trình in ra màn hình ch “Chao cac ban” và “Hen gap lai” Gii #include <stdio.h> main() { printf(“Chao cac ban\n”); printf(“Hen gap lai\n”); getch(); } Gii thích chng trình ví d 1.7  #include <stdio.h>: Khai báo tp tin tin x lý stdio.h (vit tt ca t standard input/output) là tp tin tin x lý ch a các hàm vào/ra chu∗n. Trong chng trình s dng hàm printf (hàm ra chu∗n) c nh ngha trong tp tin stdio.h.  Hàm printf là hàm cho in ra màn hình ni dung nm trong cp du “ ”  Ký t \n là ký t iu khin xung dòng mi.  Phn thân ca chng trình bao gm on chng trình: main() { …. }  getch(); Khi chng trình vit ra màn hình 2 câu “Chao cac ban” và “Hen gap lai” thì dng li cho ngi s dng xem. Nu không lnh này thì chng trình tr∃ v màn hình v#n bn chng trình, ngi s dng s! không xem c kt qu, lúc ó phi bm t% hp phím Alt + F5 mi xem c kt qu. Ví d 1.8: Chng trình tính din tích hình tròn. Gii Bài ging C s lp trình -5- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. #include <stdio.h> main() { float R,Dien_tich; printf(“Nhap ban kinh R = “); scanf(“%f”,&R); Dien_tich = 3.14*R*R; printf(“Dien tich hinh tron co ban kinh %f là %f”,R,Dien_tich); getch(); } Gii thích chng trình ví d 1.8  float R, Dien_tich; Khai báo bin R và Dien_tich kiu s thc.  printf(“Nhap ban kinh R = “); in ra màn hình dòng: Nhap ban kinh R =  scanf(“%f”,&R); Hàm c giá tr t bàn phím vào cho bin R. %f là mã nh dng  qui nh c giá tr vào cho bin R kiu s thc, &R c hiu là c giá tr vào cho ô nh ca bin R.  Dòng lnh printf(“Dien tich hinh tron co ban kinh %f là %f”,R,Dien_tich); In ra giá tr ca bin R và bin Dien_tich vi qui cách in là s thc. Ví d 1.9: Chng trình tính din tích hình tròn s dng chng trình con. Gii #include <stdio.h> main() float Tinh_dien_tich(float radius); main() { float R; pritnf(“Nhap ban kinh R = “); scanf(“%f”,&R); printf(“Dien tich hinh tron = %f “,Tinh_dien_tich(R)); getch(); } float Tinh_dien_tich(float radius) #define PI 3.14 { float dientich; dientich = PI*radius*radius; Bài ging C s lp trình -6- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. return(dientich); } Gii thích chng trình ví d 1.9  #define PI 3.14. )ây là khi ghép nh ngha mt macro. Vi nh ngha này, khi ngôn ng lp trình C dch chng trình, bt c ch nào trong chng trình xut hin tên PI s! c thay th bng 3.14.  Vic tính din tích c thc hin bng hàm Tinh_dien_tich vi tham s là radius. Nguyên m&u hàm Tinh_dien_tich c khai náo trc hàm main() và nh ngha tng minh ni dung ca hàm ∃ sau hàm main. 1.3 Kiu d liu c s 1.3.1 Kiu d liu D liu là dng biu di∀n vt lý ca thông tin. Nhng dng d liu c bn c x lý trong máy tính in t gm: Các ký t, hình nh, âm thanh, tri th c, s kin, lut d&n. Theo ngha rng, d liu thô là các s, ký t, hình nh hay các kt qu khác ca các thit b chuyn %i các lng vt lý thành các ký hiu. Các d liu loi này thng c x lý tip b∃i con ngi hoc a vào máy tính. Trong máy tính, d liu c lu tr và x lý ti ó hoc chuyn cho mt ngi hay mt máy tính khác. D liu thô là mt thut ng tng i, b∃i vì d liu ã c x lý ti bc này th là d liu thô ∃ bc tip theo. Trong máy tính in t, d liu c biu di∀n bng chui các ký hiu ca mt bng ch cái nào ó, mà ph% bin nht là bng ch cái nh phân (gm 2 ký hiu “0” và “1”). Mt chng trình máy tính là mt tp hp d liu c hiu là các lnh. Kiu d liu là mt tp hp các giá tr mà mt bin thuc kiu ó th nhn c và trên ó xác nh mt s phép toán. Các kiu d liu này thng c quy nh b∃i ngôn ng lp trình, hay nói cách khác mi ngôn ng lp trình mt tp các kiu d liu khác nhau. Trong các ngôn ng lp trình, mi kiu d liu ch∋ biu di∀n c mt min giá tr xác nh nào ó, s gii hn này là do ph thuc vào kích thc ca vùng nh biu di∀n s ó. Vì vy, các thông tin c trng ca mt kiu d liu bao gm: + Tên kiu d liu. + Kích thc vùng nh biu di∀n nó (t c min giá tr). + Các phép toán s dng trên kiu d liu ó. 1.3.2 Kiu s nguyên Là tp hp các s nguyên th biu di∀n c trong máy tính và c nh ngha vi mt s t khóa. Mi t khóa tng ng vi mt kiu s nguyên di biu di∀n giá tr trong phm vi nht nh. Nhng kiu s nguyên c bn trong ngôn Bài ging C s lp trình -7- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. ng lp trình C là kiu s nguyên du, c nh ngha vi t khóa int chim 2 byte. Bng các t khóa s nguyên và phm vi biu din Kiu bin T khóa S byte Phm vi biu din Character char 1 -128 +127 Integer int 2 -32768…+32767 Short Integer short 2 -32768…+32767 Unsigned character unsigned char 1 0…255 Unsigned Integer unsigned int 2 0 65535 Unsigned Short Integer unsigned short 2 0 65535 Long Integer long 4 -2147483648… +2147483647 Unsigned Long Integer Unsigned long 0… 4294967295 Lu ý: Kiu char thc cht là kiu ký t, song C cho phép dùng các ký t nh là s nguyên. Vì vy, khi tính toán trong biu thc s hc thì kiu char c s dng nh là s nguyên (ch mã ASCII tng ng ca ký t ó) nhng khi tính toán trong biu th c ký t thì nó c hiu là ký t. ây chính là s m!m d∀o ca ngôn ng lp trình C. nhiu phép tính c nh ngha cho s nguyên: phép tính s hc, phép tính quan h, phép tính logic s hc. Bng lit kê các phép tính s hc i vi kiu s nguyên Phép toán Ký hiu Ví d Cng + a + b Tr - a - b Nhân * a * b Chia ly phn nguyên / a / b Chia ly s d % a % b V nguyên tc phép chia 2 s nguyên cho kt qu là s nguyên. Mun nhn c kt qu là s thc, bn phái vit (float) a / b. Ví d 1.10: a = 15; b = 2; Vy kt qu a/b s! là 15/2 = 7. Bn mun nhn kt qu ca phép chia là s thc phi vit: (float) a/b; Lúc ó 15/2 = 7.5 ) kh∃i to mt bin kiu nguyên ta vit: int i; i = 10; Hoc vit int i = 10; Bài ging C s lp trình -8- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. Hng s nguyên nh kiu trc: ) ghi hng s nguyên vi kiu nh trc bn ghi thêm mt ký t vào cui dãy s: L cho kiu long, U cho kiu Unsigned Integer, UL cho kiu Unsigned Long. Ví d 1.11: 20000U là hng s nguyên theo kiu Unsigned Integer; * Cách biu din s nguyên di dng s Hecxa: + Ngoài cách vit theo dng s thp phân, C còn quy c cho phép vit s nguyên di dng s Hecxa, ký t bt u 0x hoc 0X. Ch+ng hn s 65 trong h thp phân c vit di dng s Hecxa là 0X41. + Nu vit s nguyên di dng s ∃ h c s 8 thì ký t bt u 0. Ch+ng hn s 65 trong h thp phân c vit di dng s ∃ h c s 8 là: 0101. Hai cách vit trên rt thun li cho nhng ngi lp trình h thng. Lúc ó, mt byte th biu di∀n hai ch s Hecxa vì mt s Hecxa c biu di∀n bng mt cm s nh phân 4 bít. Ch+ng hn: s 255 trong h thp phân, biu di∀n trong h Hecxa là 0xFF. Ví d 1.12: Chng trình tính t%ng 2 s nguyên. Gii #include <stdio.h> main() { int m=5,n=10; long tong; tong = m+n; getch(); } 1.3.3 Kiu s thc Là tp hp các s thc th biu di∀n c trong máy tính và c nh ngha b∃i mt s t khóa: float, double, long double. Trong máy tính s thc c biu di∀n di 2 dng: dng bình thng và dng phn m( (dng s khoa hc). + Dng bình thng: 3.14, 5.0 + Dng s khoa hc: 1.254567E+02 tng ng vi 1.254567*10 2 = 125.4567 Phm vi biu di∀n và  chính xác ca s thc ln hn nhiu so vi s nguyên nên s thc thích hp vi nhng i lng cn giá tr ln và  chính xác cao. [...]... PI*radius*radius; Gi ng viên: Th.S Tr n T n T - Khoa CNTT – i h c Ph m V n ng Bài gi ng C s l p trình -6- return(dientich); } Gi i thích ch ng trình ví d 1.9 #define PI 3.14 )ây là kh i ghép nh ngha mt macro Vi nh ngha này, khi ngôn ng l p trình C dch ch ng trình, b t c ch nào trong ch ng trình xu t hi n tên PI s! c thay th bng 3.14 Vi c tính di n tích c thc hi n bng hàm Tinh_dien_tich... ngôn ng l p trình phân bi t ch hoa và ch NGHIEM s! khác vi các tên: Nghiem, nghiem,… th ng, vì v y tên - Không c t tên bng ti ng Vi t (C xem cách làm ó là sai cú pháp) - Các ví d v t tên: + Mt s tên t úng: Gia_tri, _DX, pi, … + Mt s tên t sai: 3X, PI$, Bien 1, 1.1.4 Chú thích Khi vi t ch ng trình bn nên thêm vào các l i chú thích cho ch ng trình sáng sa và d∀ hi u Trình biên... input/output) là t p tin tin x lý ch a các hàm vào/ra chu∗n Trong ch ng trình s dng hàm printf (hàm ra chu∗n) c nh ngha trong t p tin stdio.h Hàm printf là hàm cho in ra màn hình ni dung nm trong c p d u “ ” Ký t \n là ký t iu khi n xu ng dòng mi Phn thân ca ch ng trình bao gm on ch ng trình: main() { … } getch(); Khi ch ng trình vi t ra màn hình 2 câu “Chao cac ban” và “Hen gap lai” thì... thì dng li cho ng i s dng xem N u không l nh này thì ch ng trình tr∃ v màn hình v#n bn ch ng trình, ng i s dng s! không xem c k t qu, lúc ó phi b m t% hp phím Alt + F5 mi xem c k t qu Ví d 1.8: Ch ng trình tính di n tích hình tròn Gi i Gi ng viên: Th.S Tr n T n T - Khoa CNTT – i h c Ph m V n ng Bài gi ng C s l p trình -5- #include main() { float R,Dien_tich; printf(“Nhap... 1.1.3 Tên và cách t tên Trong ch ng trình, ng i l p trình th dùng r t nhiu tên: tên ch ng trình, tên bi n, tên hng, tên hàm,… M i tên u phi khai báo tr c khi s dng Qui tc t tên: - Tên bao gm dãy các ký t lin nhau nh các ch cái a,…,z, A,… Z, các ch s 0, …, 9 và d u gch n i d i Gi ng viên: Th.S Tr n T n T - Khoa CNTT – i h c Ph m V n ng Bài gi ng C s l p trình -2- - Tên không c bt... ký hi u “0” và “1”) Mt ch ng trình máy tính là mt t p hp d li u c hi u là các l nh Kiu d liu là mt t p hp các giá tr mà mt bin thuc kiu ó th nh n c và trên ó xác nh mt s phép toán Các ki u d li u này th ng c quy nh b∃i ngôn ng l p trình, hay nói cách khác mi ngôn ng l p trình mt t p các ki u d li u khác nhau Trong các ngôn ng l p trình, mi ki u d li u ch∋ bi... thích to ra mã ch ng trình mà nó tác dng thuy t minh thêm cho d∀ hi u Phn v#n bn nm gi a c p ký hi u m∃ /* và óng */ chính là phn chú thích Phn chú thích th nm trên nhiu dòng, mi∀n là nm trong c p d u m∃ và óng nêu trên L u ý: Trong C++ li chú thích nm sau cp d u // và vit trên mt dòng 1.2 C u trúc chung c a m t ch ng trình C C u trúc t%ng th ca mt ch ng trình C th ng các... V n ng Bài gi ng C s l p trình -4- { float dientich; dientich = PI*radius*radius; return(dientich); } L u ý: )nh ngha ca hàm Tinh_dien_tich s! c vi t phía d i hàm main * M t s ví d : Ví d 1.7: Ch ng trình in ra màn hình ch “Chao cac ban” và “Hen gap lai” Gi i #include main() { printf(“Chao cac ban\n”); printf(“Hen gap lai\n”); getch(); } Gi i thích ch ng trình ví d 1.7 #include... các bn ng nghip ! Qung Ngãi, ngày 25/12/2013 TR N T N T Bài gi ng C s l p trình CH NG 1: M c tiêu K t thúc ch -1- CÁC THÀNH PH N C B N ng, sinh viên th : N m c các thành ph n c b n ca ngôn ng l p trình C: b ký hiu, t khóa, tên và cách t tên, cách ghi li chú thích N m c c u trúc chung ca mt ch ng trình C Hiu và v n dng c các phép toán, các hàm ã c xây dng cho các kiu... Khai báo nguyên m&u hàm tính di n tích hình tròn float Tinh_dien_tich(float radius); + Khai báo các bi n ngoài (bi n toàn cc): Là n i khai báo các bi n tm tác dng trong c ch ng trình Ví d 1.5: int n; + Trong ch ng trình C th nhiu hàm, trong ó hàm main là hàm chính, bt buc phi và các câu l nh c thc hi n tun t t trên xu ng d i V nguyên tc hàm phi tr li mt giá tr cho

Ngày đăng: 09/04/2014, 05:58

Tài liệu cùng người dùng

Tài liệu liên quan