Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 157 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
157
Dung lượng
1,79 MB
Nội dung
TRNG I HC PHM VN NG KHOA CÔNG NGH THÔNG TIN TRN TN T BÀI GING (Dùng cho sinh viên các lp i hc Công ngh thông tin, i hc S phm tin hc) - Tài liu lu hành ni b - LI NÓI U C s lp trình là hc phn giúp cho sinh viên nm c kin thc c bn cài t thành công mt thut toán thành chng trình bng ngôn ng lp trình C. Qua ó, trang b cho sinh viên kin thc nn tip cn và hc tp tt các ngôn ng lp trình khác trong các hc k tip theo. Bài ging c biên son và ging dy cho sinh viên nm th nht, bc i hc ngành Công ngh thông tin và ngành S phm tin hc k t nm 2008, theo hình thc ào to niên ch. Hin nay chng trình ào to ti Trng i hc Phm Vn ng c chuyn i sang ào to theo hc ch tín ch. Chính vì vy, bài ging c chnh s a, b sung cho phù hp v!i hình thc ào to theo hc ch tín ch. C∀ng nhân ây tôi xin chân thành cám n hi ng chuyên môn khoa Công ngh thông tin, Th.S Hunh Triu V# và Th.S Võ c Lân ã dành thi gian c và óng góp nhiu ý kin quý báu bài ging c hoàn chnh hn, áp ng nhu cu hc tp c∃a sinh viên Khoa Công ngh thông tin - Trng i hc Phm Vn ng. Bài ging không sao tránh kh%i nhng thiu sót, mong các bn ng nghip óng góp ý kin bài ging hoàn thin hn trong các ln chnh s a sau. Xin chân thành cám n quý thy cô, các bn ng nghip ! Qung Ngãi, ngày 25/12/2013 TRN TN T Bài ging C s lp trình -1- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. CHNG 1: CÁC THÀNH PHN C BN Mc tiêu Kt thúc chng, sinh viên có th: Nm c các thành phn c bn ca ngôn ng lp trình C: b ký hiu, t khóa, tên và cách t tên, cách ghi li chú thích. Nm c cu trúc chung ca mt chng trình C. Hiu và vn dng c các phép toán, các hàm ã c xây dng cho các kiu d liu c s: kiu s nguyên, kiu s thc, kiu ký t, kiu boolean. 1.1 B ký hiu và t khóa 1.1.1 B ký hiu - 26 ch cái la tinh hoa: A, B, …, Z. - 26 ch cái la tinh thng: a, b, …, z. - 10 ch s thp phân: 0,1,…,9. - Các ký hiu toán hc: +, -, *, /, = <, >, (, ). - Các ký hiu c bit: . , ; “ ‘ _ @ # $ ! ^ [ ] { } … - Du cách hay khong trng. 1.1.2 T khóa Là các t dùng riêng ca ngôn ng lp trình C và mi t khóa có mt ý ngha và tác dng c th. * Chú ý: - Không th nh ngha li t khóa. - Các t khóa trong C c vit di dng ch thng. Mt s t khóa thông dng hay dùng trong ngôn ng lp 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 chng trình, ngi lp trìnhcó th dùng rt nhiu tên: tên chng trình, tên bin, tên hng, tên hàm,… Mi tên u phi khai báo trc 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à du gch ni di. Bài ging C s lp trình -2- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. - Tên không c bt u bng ch s. - Tên không c ch a các ký t c bit nh du cách, du chm câu,… S ký t ti a trong tên ca Turbo C là 32. - Tên không c trùng vi t khóa. - C là ngôn ng lp trình phân bit ch hoa và ch thng, vì vy tên NGHIEM s! khác vi các tên: Nghiem, nghiem,…. - Không c t tên bng ting Vit (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 vit chng trình bn nên thêm vào các li chú thích cho chng trình sáng sa và d∀ hiu. Trình biên dch s! không biên dch các chú thích to ra mã chng trình mà nó có tác dng thuyt minh thêm cho d∀ hiu. Phn v#n bn nm gia cp ký hiu m∃ /* và óng */ chính là phn chú thích. Phn chú thích có th nm trên nhiu dòng, mi∀n là nm trong cp du m∃ và óng nêu trên. Lu ý: Trong C++ li chú thích nm sau cp du // và vit trên mt dòng. 1.2 Cu trúc chung ca mt chng trình C Cu trúc t%ng th ca mt chng trình C thng có các khi thông dng sau: ………………………………………………………………………………… #include <…> /* gi các tp tin tin x lý */ #define <…> /* nh ngha các hng s */ typedefs <…> /* nh ngha kiu d liu */ ………………………………………………………………………………… Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */ ………………………………………………………………………………… Khai báo các bin ngoài …………………………………………………………………………………. <Kiu d liu tr v> main() /* chng trình C bt buc phi có hàm main */ { Khai báo các bin cc b, các hng ca hàm main Các câu lnh thc hin ca hàm main return <Kt qu tr v> } Bài ging C s lp trình -3- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. ………………………………………………………………………………… Function prototype /* nh ngha ni dung tng minh ca hàm */ { Khai báo các bin, hng ca hàm. Các câu lnh thc hin ca hàm. } ………………………………………………………………………………… Nh vy, mt chng trình C thng bao gm các thành phn: các ch∋ tin x lý, các nh ngha: kiu, hng, khai báo bin ngoài, các hàm t to, hàm main. Trong ó: + #include <…> /* gi các tp tin tin x lý */ Ví d 1.1: #include <stdio.h> + #define <Tên hng s> <Giá tr hng> /* nh ngha các hng s */ Ví d 1.2: #define MAX 100 + typedef <tên kiu c(> <tên kiu mi> /* nh ngha kiu d liu */ Ví d 1.3: typedef int Songuyen; + Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */ Trong phn khai báo nguyên m&u hàm, bn ch∋ ra kiu giá tr tr v ca hàm, tên hàm, tham s hình th c ca hàm. Ví d 1.4: Khai báo nguyên m&u hàm tính din tích hình tròn float Tinh_dien_tich(float radius); + Khai báo các bin ngoài (bin toàn cc): Là ni khai báo các bin có tm tác dng trong c chng trình. Ví d 1.5: int n; + Trong chng trình C có th có nhiu hàm, trong ó hàm main là hàm chính, bt buc phi có và các câu lnh c thc hin tun t t trên xung di. V nguyên tc hàm phi tr li mt giá tr cho tên hàm, nhng nu không mun s dng giá tr tr v, bn có th vit nh sau: void main(). T khóa void ch∋ hàm không có giá tr riêng ca nó (t c hàm không mang mt giá tr c th nào khi thc hin xong hàm) + /* nh ngha ni dung tng minh ca hàm */ Ví d 1.6: )nh ngha ni dung hàm tính din tích hình tròn vi tham s là radius (bán kính ca hình tròn). float Tinh_dien_tich(float radius) #define PI 3.14 Bài ging C s lp trình -4- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. { float dientich; dientich = PI*radius*radius; return(dientich); } Lu ý: )nh ngha ca hàm Tinh_dien_tich s! c vit phía di hàm main. * Mt s ví d: Ví d 1.7: Chng trình in ra màn hình ch “Chao cac ban” và “Hen gap lai” Gii #include <stdio.h> main() { printf(“Chao cac ban\n”); printf(“Hen gap lai\n”); getch(); } Gii thích chng trình ví d 1.7 #include <stdio.h>: Khai báo tp tin tin x lý stdio.h (vit tt ca t standard input/output) là tp tin tin x lý ch a các hàm vào/ra chu∗n. Trong chng trìnhcó s dng hàm printf (hàm ra chu∗n) c nh ngha trong tp tin stdio.h. Hàm printf là hàm cho in ra màn hình ni dung nm trong cp du “ ” Ký t \n là ký t iu khin xung dòng mi. Phn thân ca chng trình bao gm on chng trình: main() { …. } getch(); Khi chng trình vit ra màn hình 2 câu “Chao cac ban” và “Hen gap lai” thì dng li cho ngi s dng xem. Nu không có lnh này thì chng trình tr∃ v màn hình v#n bn chng trình, ngi s dng s! không xem c kt qu, lúc ó phi bm t% hp phím Alt + F5 mi xem c kt qu. Ví d 1.8: Chng trình tính din tích hình tròn. Gii Bài ging C s lp trình -5- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn 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(); } Gii thích chng trình ví d 1.8 float R, Dien_tich; Khai báo bin R và Dien_tich có kiu s thc. 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 bin R. %f là mã nh dng qui nh c giá tr vào cho bin R có kiu s thc, &R c hiu là c giá tr vào cho ô nh ca bin R. Dòng lnh printf(“Dien tich hinh tron co ban kinh %f là %f”,R,Dien_tich); In ra giá tr ca bin R và bin Dien_tich vi qui cách in là s thc. Ví d 1.9: Chng trình tính din tích hình tròn có s dng chng trình con. Gii #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 ging C s lp trình -6- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. return(dientich); } Gii thích chng trình ví d 1.9 #define PI 3.14. )ây là khi ghép nh ngha mt macro. Vi nh ngha này, khi ngôn ng lp trình C dch chng trình, bt c ch nào trong chng trình xut hin tên PI s! c thay th bng 3.14. Vic tính din tích c thc hin bng hàm Tinh_dien_tich vi tham s là radius. Nguyên m&u hàm Tinh_dien_tich c khai náo trc hàm main() và nh ngha tng minh ni dung ca hàm ∃ sau hàm main. 1.3 Kiu d liu c s 1.3.1 Kiu d liu D liu là dng biu di∀n vt lý ca thông tin. Nhng dng d liu c bn c x lý trong máy tính in t gm: Các ký t, hình nh, âm thanh, tri th c, s kin, lut d&n. Theo ngha rng, d liu thô là các s, ký t, hình nh hay các kt qu khác ca các thit b chuyn %i các lng vt lý thành các ký hiu. Các d liu loi này thng c x lý tip b∃i con ngi hoc a vào máy tính. Trong máy tính, d liu c lu tr và x lý ti ó hoc chuyn cho mt ngi hay mt máy tính khác. D liu thô là mt thut ng tng i, b∃i vì d liu ã c x lý ti bc này có th là d liu thô ∃ bc tip theo. Trong máy tính in t, d liu c biu di∀n bng chui các ký hiu ca mt bng ch cái nào ó, mà ph% bin nht là bng ch cái nh phân (gm 2 ký hiu “0” và “1”). Mt chng trình máy tính là mt tp hp d liu c hiu là các lnh. Kiu d liu là mt tp hp các giá tr mà mt bin thuc kiu ó có th nhn c và trên ó xác nh mt s phép toán. Các kiu d liu này thng c quy nh b∃i ngôn ng lp trình, hay nói cách khác mi ngôn ng lp trìnhcó mt tp các kiu d liu khác nhau. Trong các ngôn ng lp trình, mi kiu d liu ch∋ biu di∀n c mt min giá tr xác nh nào ó, s gii hn này là do ph thuc vào kích thc ca vùng nh biu di∀n s ó. Vì vy, các thông tin c trng ca mt kiu d liu bao gm: + Tên kiu d liu. + Kích thc vùng nh biu di∀n nó (t c min giá tr). + Các phép toán s dng trên kiu d liu ó. 1.3.2 Kiu s nguyên Là tp hp các s nguyên có th biu di∀n c trong máy tính và c nh ngha vi mt s t khóa. Mi t khóa tng ng vi mt kiu s nguyên có di biu di∀n giá tr trong phm vi nht nh. Nhng kiu s nguyên c bn trong ngôn Bài ging C s lp trình -7- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. ng lp trình C là kiu s nguyên có du, c nh ngha vi t khóa int chim 2 byte. Bng các t khóa s nguyên và phm vi biu din Kiu bin T khóa S byte Phm vi biu din 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 Lu ý: Kiu char thc cht là kiu ký t, song C cho phép dùng các ký t nh là s nguyên. Vì vy, khi tính toán trong biu thc s hc thì kiu char c s dng nh là s nguyên (ch mã ASCII tng ng ca ký t ó) nhng khi tính toán trong biu th c ký t thì nó c hiu là ký t. ây chính là s m!m d∀o ca ngôn ng lp trình C. Có nhiu phép tính c nh ngha cho s nguyên: phép tính s hc, phép tính quan h, phép tính logic s hc. Bng lit kê các phép tính s hc i vi kiu s nguyên Phép toán Ký hiu Ví d Cng + a + b Tr - a - b Nhân * a * b Chia ly phn nguyên / a / b Chia ly s d % a % b V nguyên tc phép chia 2 s nguyên cho kt qu là s nguyên. Mun nhn c kt qu là s thc, bn phái vit (float) a / b. Ví d 1.10: a = 15; b = 2; Vy kt qu a/b s! là 15/2 = 7. Bn mun nhn kt qu ca phép chia là s thc phi vit: (float) a/b; Lúc ó 15/2 = 7.5 ) kh∃i to mt bin có kiu nguyên ta vit: int i; i = 10; Hoc vit int i = 10; Bài ging C s lp trình -8- Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng. Hng s nguyên có nh kiu trc: ) ghi hng s nguyên vi kiu nh trc bn ghi thêm mt ký t vào cui dãy s: L cho kiu long, U cho kiu Unsigned Integer, UL cho kiu Unsigned Long. Ví d 1.11: 20000U là hng s nguyên theo kiu Unsigned Integer; * Cách biu din s nguyên di dng s Hecxa: + Ngoài cách vit theo dng s thp phân, C còn quy c cho phép vit s nguyên di dng s Hecxa, ký t bt u 0x hoc 0X. Ch+ng hn s 65 trong h thp phân c vit di dng s Hecxa là 0X41. + Nu vit s nguyên di dng s ∃ h c s 8 thì ký t bt u 0. Ch+ng hn s 65 trong h thp phân c vit di dng s ∃ h c s 8 là: 0101. Hai cách vit trên rt thun li cho nhng ngi lp trình h thng. Lúc ó, mt byte có th biu di∀n hai ch s Hecxa vì mt s Hecxa c biu di∀n bng mt cm s nh phân 4 bít. Ch+ng hn: s 255 trong h thp phân, biu di∀n trong h Hecxa là 0xFF. Ví d 1.12: Chng trình tính t%ng 2 s nguyên. Gii #include <stdio.h> main() { int m=5,n=10; long tong; tong = m+n; getch(); } 1.3.3 Kiu s thc Là tp hp các s thc có th biu di∀n c trong máy tính và c nh ngha b∃i mt s t khóa: float, double, long double. Trong máy tính s thc c biu di∀n di 2 dng: dng bình thng và dng có phn m( (dng s khoa hc). + Dng bình thng: 3.14, 5.0 + Dng s khoa hc: 1.254567E+02 tng ng vi 1.254567*10 2 = 125.4567 Phm vi biu di∀n và chính xác ca s thc ln hn nhiu so vi s nguyên nên s thc thích hp vi nhng i lng cn giá tr ln 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 Vn 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ìnhcó 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 cp 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 có 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 Vn 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ìnhcó 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 Vn 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 ó có 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ìnhcó 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ó có tác dng thuy t minh thêm cho d∀ hi u Phn v#n bn nm gi a cp ký hi u m∃ /* và óng */ chính là phn chú thích Phn chú thích có th nm trên nhiu dòng, mi∀n là nm trong cp 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 ca 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ác... Vn 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 có 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 có tm tác dng trong c ch ng trình Ví d 1.5: int n; + Trong ch ng trình C có th có nhiu hàm, trong ó hàm main là hàm chính, bt buc phi có 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