Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 127 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
127
Dung lượng
4,17 MB
Nội dung
T T R R N N G G I I H H C C C C Ô Ô N N G G N N G G H H I I P P T T P P / / H H C C M M T T R R U U N N G G T T Â Â M M C C Ô Ô N N G G N N G G H H T T H H Ô Ô N N G G T T I I N N -- o o 0 0 o o -- G G i i á á o o T T r r ì ì n n h h P P H H N N G G P P H H Á Á P P L L P P T T R R Ì Ì N N H H T T H H Á Á N N G G 8 8 / / 2 2 0 0 0 0 8 8 Giáotrình PP lp trình TT.Công Ngh Thông Tin 2/127 MC LC Chng 1: TNG QUAN V NGÔN NG LP TRÍNH C/C++ 4 1. Lch s ca ngôn ng lp trình C/C++ 4 2. Phng pháp gii quyt mt bài toán 4 3. Các bc trong chu trình phát trin chng trình 5 4. Kho sát mt chng trình C/C++ n gin 7 5. Các chú thích (comments) 9 6. Cu trúc ca mt chng trình C/C++ 10 7. Các tp tin th vin thông dng 11 Chng 2: BIU THC 12 1. Kiu d liu (data types) 12 2. Các nh danh (Identifier names) 13 3. T khóa (keywords) 14 4. Bin (variables) 14 5. T khóa const 17 6. Hng (constants) 17 7. Hng chui ký t (string constants) 18 8. Hng ký t c bit (escape sequences) 18 9. Toán t (operators) 19 10. Các toán t s hc (arithmetic operators) 22 11. Toán t ++ và (increment and decrement operators) 23 12. Toán t quan h & lun lý 24 13. Toán t ? (? operator) 26 14. Toán t sizeof 26 15. Toán t du phy (comma operator) 27 16. Biu thc (expressions) 29 17. Chuyn i kiu trong các biu thc 29 18. Ép kiu (casting) 30 19. Dng vit tt ca câu lnh gán (shorthand assignments) 31 Chng 3: CÁC CU TRÚC IU KHIN 34 1. Gii thiu 34 2. Cu trúc la chn if 35 3. Cu trúc la chn switch case 39 4. Các cu trúc lp (Loop structures) 44 5. Các lnh r nhánh và nhy 50 Chng 4: MNG 61 1. Gii thiu Mng 61 2. Mng 1 chiu 61 Giáotrình PP lp trình TT.Công Ngh Thông Tin 3/127 3. Mng nhiu chiu 64 Chng 5: CON TR 71 1. Gii thiu Con tr 71 2. Bin con tr (pointer variables) 72 3. Mt s ví d v con tr 75 4. Cp phát b nh ng 75 5. Con tr void (void pointers) 78 6. Con tr null (Null pointers) 79 7. Con tr và mng 80 8. Mng con tr 81 Chng 6: HÀM 83 1. Khái nim hàm 83 2. Dng tng quát ca hàm 84 3. Các qui tc v phm vi ca hàm 85 4. Tham s hình thc và tham s thc 85 5. Truyn mng vào hàm 88 6. i s ca hàm main 89 7. Lnh return 90 8. qui 92 9. Nguyên m!u hàm (function prototypes) 93 10. Cu trúc ca mt chng trình vit di dng hàm 94 Chng 7: CHUI KÝ T 96 1. Gii thiu Chui 96 2. Khai báo và kh"i to chui 96 3. Nhp chui 97 4. Xut chui 97 5. Mt s hàm th vin thao tác trên chui 97 6. Mt s ví d v chui 98 7. Mng các chui 99 8. Mng con tr n các chui 101 Chng 8: STRUCTURES – ENUM - typedef 105 1. Structures 105 2. Kiu lit kê (Enumerations, enum) 111 3. typedef 112 Chng 9: TP TIN 114 1. Streams và Files 114 2. Streams (dòng nhp xut) 114 3. Files 115 4. Truy xut file ng!u nhiên 124 5. Các stream chun 124 Giáotrình PP lp trình TT.Công Ngh Thông Tin 4/127 Chng 1 TNG QUAN V NGÔN NG LP TRÌNH C/C++ 1. Lch s ca ngôn ng lp trình C/C++ C #c to b"i Dennis Ritchie " Bell Telephone Laboratories vào n$m 1972 cho phép lp trình viên phát trin các ng dng hiu qu hn các ngôn ng lp trình hin có ti th%i im ó. im mnh và mm d&o ca C cho phép các nhà phát trin " Bell Labs to nên các ng dng phc tp nh h iu hành Unix. Vào n$m 1983, hc vin chun quc gia M' (American National Standards Institute - ANSI) thành lp mt tiu ban chun hóa C #c bit n nh ANSI Standard C. Ngày nay, tt c trình biên dch C/C++ u tuân theo ANSI Standard C. C++ #c xây dng trên nn tng ca ANSI Standard C. C++ là mt ngôn ng lp trình hng i t#ng mà bao hàm ngôn ng C " trong nó. Trong giáotrình này cha kho sát ph(n lp trình hng i t#ng ca C++. 2. Phng pháp gii quyt mt bài toán Mt chng trình máy tính #c thit k gii quyt mt bài toán nào ó. Vì vy, nhng bc c(n tìm kim l%i gii cho mt bài toán c)ng ging nh nhng bc c(n vit mt chng trình. Các bc g*m: - Xác nh yêu c(u ca bài toán. - Ngh+ ra mt phng cách (algorithm) tìm l%i gii. - Thc hin phng cách ó. - Kim tra kt qu xem l%i gii có úng vi yêu c(u ca bài toán. Giáotrình PP lp trình TT.Công Ngh Thông Tin 5/127 Khi vit mt chng trình trong C/C++, ây là nhng bc #c ngh: 1. Xác nh mc ích ca chng trình 2. Ngh+ ra thut toán phù h#p gii quyt bài toán (dùng mã gi, lu *, ) 3. Cài t (vit) thut toán dùng ngôn ng lp trình C/C++ 4. Thc thi chng trình và kim th (testing). 3. Các b c trong chu trình phát trin chng trình Chu trình phát trin chng trình (program development cycle) có nhng bc sau ây. 1. Mt trình son tho v$n bn #c dùng nhp mã ngu*n (source code). 2. Mã ngu*n #c biên dch (compile) to nên tp tin i t#ng (object file). 3. Các tp tin i t#ng #c liên kt (link) to nên tp tin có th thc thi (executable file). 4. Thc hin (run) chng trình ch, ra chng trình có làm vic úng nh ã nh không. Use editor Source code Compile source file Object code Link object file Library files Exec utable program (C-free, Borland C/C++ editor) (.c; .cpp files) (bc.exe) (.h files) (.exe file) Giáotrình PP lp trình TT.Công Ngh Thông Tin 6/127 3.1. So!n tho mã ngu"n (source code editor) Mã ngu*n là mt tp các lnh dùng ch, d!n máy tính thc hin công vic mong mun. Tp tin mã ngu*n #c lu tr vi ph(n phân loi .c (C) hoc .cpp (C++). 3.2. Biên dch (compile) Tp tin mã ngu*n #c vit bng nhng t ging ting Anh nên d- dàng c và hiu. Tuy nhiên, máy tính không th hiu nhng t này. Máy tính yêu c(u các ch, d!n nh phân (binary) trong dng thc ca ngôn ng máy (machine language). Trc khi mt chng trình #c vit bng ngôn ng cp cao nh C/C++ có th thc thi trên máy tính, nó phi #c biên dch t mã ngu*n sang mã máy. Vic dch này #c thc hin b"i mt chng trình gi là trình biên dch (compiler). Các ch, d!n ngôn ng máy #c to b"i trình biên dch #c gi là mã i t#ng (object code) và tp tin cha chúng gi là tp tin i t#ng. Tp tin i t#ng có cùng tên nh tp tin mã ngu*n nhng có ph(n phân loi .obj. 3.3. T!o tp tin th#c thi (executable files) C/C++ có mt th vin hàm cha mã i t#ng cho nhng hàm ã #c to s.n. Nhng hàm này thc hin các tác v th%ng dùng nh xóa màn hình (clrscr()), nhp mt chui ký t t bàn phím (gets()), tính c$n bc hai (sqrt()), mà chng trình #c vit có th s dng mà không phi vit li. Tp tin i t#ng #c to ra b"i trình biên dch s kt h#p vi mã i t#ng ca các hàm th vin to nên tp tin thc thi. Quá trình này #c gi là liên kt (linking), #c thc hin b"i mt chng trình gi là b liên kt (linker). Giáotrình PP lp trình TT.Công Ngh Thông Tin 7/127 3.4. Th#c thi chng trình Khi chng trình ngu*n #c biên dch và liên kt to nên tp tin thc thi (có ph(n phân loi .exe), nó có th thc thi trên máy tính ti du nhc h thng. Nu chng trình hot ng không úng nh yêu c(u, vn có th là do li lp trình. Trong tr%ng h#p này, ch,nh sa chng trình ngu*n, biên dch li và liên kt li to nên phiên bn mi ca tp tin chng trình. Quá trình bn bc này #c lp i lp li cho n khi tp tin thc thi thc hin úng yêu c(u ca bài toán. 4. Kho sát mt chng trình C/C++ n gin Kho sát mt chng trình n gin dùng xut ra màn hình dòng ch Hello World! // my first program in C/C++ #include <conio.h> #include <iostream.h> int main() { cout << "Hello World!"; //Output “Hello World!” getche(); return 0; } ây là chng trình n gin nhng nó ã bao hàm nhng thành ph(n c bn mà mi chng trình C/C++ u có. Vi ý ngh+a ca tng dòng nh sau: // my first program in C/C++ ây là dòng chú thích, tt c các dòng bt (u bng hai du // #c coi là các dòng chú thích, nó không nh h"ng n hot ng ca chng trình, ch, dùng gii thích mã ngu*n ca chng trình. Giáotrình PP lp trình TT.Công Ngh Thông Tin 8/127 #include <iostream.h> Các lnh bt (u bng du # #c dùng cho các ch, th tin x lý (preprocessor). Trong ví d này, câu lnh #include báo cho trình biên dch bit c(n phi gp th vin iostream.h là tp tin header chun ca C/C++, cha các nh ngh+a v nhp và xut. int main() nh ngh+a hàm main(). Hàm main() là im mà tt c các chng trình C/C++ bt (u thc hin. Nó không ph thuc vào v trí ca hàm, ni dung ca nó luôn #c thc hin (u tiên khi chng trình thc thi. Mt chng trình C/C++ u phi t*n ti mt hàm main(). Hàm main() có th có hoc không có tham s. Ni dung ca hàm main() tip ngay sau ph(n khai báo chính thc #c t trong cp du ngoc { }. cout << "Hello World!"; ây là mt lnh nm trong ph(n thân ca hàm main. cout là mt dòng (stream) xut chun trong C/C++ #c nh ngh+a trong th vin iostream.h. Khi dòng lnh này #c thc thi, kt qu là chui "Hello World!" #c xut ra màn hình. Dòng lnh #c kt thúc bng du chm phy (;). getche(); ây là mt hàm th vin dùng ch% nhp mt ký t t bàn phím. return 0; Lnh return kt thúc hàm main và tr v giá tr biu thc i sau nó, trong tr%ng h#p này là 0. ây là mt kt thúc bình th%ng ca mt chng trình không có li trong quá trình thc hin. Chng trình trên có th vit li nh sau: int main() { cout << " Hello World! "; getch(); return 0;} c)ng cho cùng mt kt qu. Giáotrình PP lp trình TT.Công Ngh Thông Tin 9/127 5. Các chú thích (comments) Các chú thích #c các lp trình viên s dng ghi chú hay mô t trong các ph(n ca chng trình. Trong C/C++ có hai cách chú thích: Chú thích dòng: dùng cp du //. T v trí // n cui dòng #c xem là chú thích Chú thích khi (chú thích trên nhiu dòng) dùng cp /* */. Nhng gì nm gia cp du này #c xem là chú thích. Ví d: /* My second program in C/C++ with more comments Author: Novice programmer Date: 01/01/2008 */ #include <conio.h> #include <iostream.h> int main() { cout << "Hello World! "; // output Hello World! cout << "I hate C/C++."; // output I hate C/C++. getche(); return 0; } Kt qu xut ca chng trình là: Hello World! I hate C/C++. Giáotrình PP lp trình TT.Công Ngh Thông Tin 10/127 6. C$u trúc ca mt chng trình C/C++ Cu trúc mt chng trình C/C++ bao g*m các thành ph(n nh: Các ch, th tin x lý, khai báo bin toàn cc, chng trình chính (hàm main), Kho sát chng trình sau: /* fact.c Purpose: prints the factorials of the numbers from 0 through 10 Author: Mr.Beginner Date: 01/01/2008 */ #include <iostream.h> int factorial(int n); int main() { int i; for(i=0; i<=10; i++) cout<<i<<“!=“<<factorial(i); return 0; } /* This function computes the factorial of its parameter, returning it */ int factorial(int n) { int i, product; product = 1; for (i=2;i<=n;i++) prod *= i; return product; } Phn này thng dùng mô t mc ính chng trình, tác gi, ngày vit, (Phn không bt buc) Khai báo các tp tin th vin Khai báo prototype ca các hàm t to Hàm chính ca chng trình nh ngha các hàm do ngi dùng t xây dng [...]... c Ví d : x = (y=3, y+1); (u tiên y #c gán giá tr 3 và r*i x TT .Công Ngh Thông Tin #c gán giá tri y+1 là 4 27/127 Giáotrình PP l p trình B ng tóm t2t Cao nh t Th p nh t u tiên c a các toán t () [] ! ~ ++ * / + > < –– (type) * & sizeof % > -= >= *= /= %= 28/127 Giáotrình PP l p trình 16 Bi u th*c (expressions) M t bi u th c trong C/C++ là... d; // (4) TT .Công Ngh Thông Tin 20/127 Giáotrình PP l p trình i 100 double 100.0 (1) l f d 200 123.456 1.23456789 double 200.0 double 123.456 double 1.23456789 424.69056789 int n có giá tr là 424 i l 100 (3) f d 200 123.456 1.23456789 double double double double 100.0 200.0 123.456 1.23456789 424.69056789 float p có giá tr là 424.690567 TT .Công Ngh Thông Tin 21/127 Giáotrình PP l p trình i 100 double... gVar; } void increase() { gVar = gVar + 1;} TT .Công Ngh Thông Tin 16/127 Giáotrình PP l p trình void decrease() { gVar = gVar -1 ;} Sau khi th c thi ch ng trình trên, k t qu xu t trên màn hình là: Value of gVar= 100 After increased, gVar= 101; After decreased, gVar= 100; 5 T) khóa const Giá tr c a bi n có th thay i trong su t quá trình th c thi ch ng trình giá tr c a bi n không b thay i, ta t tr c... tgx=tan(t), cotgx=1/tgx 12 Nh p to o n AB 2 i m A(xA,yA), B(xB,yB) Tính và xu t TT .Công Ngh Thông Tin dài 32/127 Giáotrình PP l p trình HD: |AB|=dAB= ( x B − x A ) 2 + ( y B − y A ) 2 ) 13 Nh p to 2 i m A(xA,yA), B(xB,yB) Tính h s góc c a %ng th0ng i qua hai i m ó theo công th c: H s góc = (yB - yA) /(xB - xA) 14 Vi t ch ng trình nh p vào s nguyên n và s th c x Tính và 2 n 2 n in ra bi u th c A = ( x +... +=, -= , *=, /=, và %= Nh ng l nh có d ng: variable = variable operator expression; variable: Tên bi n operator: Toán t s h c (+, -, *, /, %) expression: Bi u th c có th #c vi t d i d ng ng n g n h n nh sau: variable operator= expression; Ví d : x = x + 10; x += 10; x = x – 10; x -= 10; x = x * 10; x *= 10; x = x / 10; x /= 10; x = x % 10; x %= 10; TT .Công Ngh Thông Tin 31/127 Giáotrình PP l p trình. .. là 1E-37 n 1E+37 Ki u void dùng khai báo hàm không tr v giá tr ho c t o nên các con tr t ng quát (generic pointers) Ngo i tr ki u void, các ki u d li u c s" có th có các t nh signed, unsigned, long, short i tr c nó Các t này làm thay i ph m vi t i thi u m i ki u c s" có th ch a B ng sau trình bày t t c các k t h#p h#p l c a ki u d li u v i các t trên TT .Công Ngh Thông Tin 12/127 Giáotrình PP l p trình. .. _creat(), creatnew(), eof(), filelength(), lock(), … TT .Công Ngh Thông Tin 11/127 Giáotrình PP l p trình Ch ng 2 BI U TH C (Expressions) Bi u th c #c t o thành t nh ng thành t nh d li u và toán t D li u có th ch a trong bi n ho c h ng Toán t trong các ngôn ng l p trình có cùng ý ngh+a nh trong toán h c Có nhi u lo i toán t nh toán t gán (=), toán t s h c (+ - * / %), toán t quan h (== < >= !=), toán... môn Toán, Lý, Hóa c a m t h c sinh In ra i m trung bình c a h c sinh ó v i hai s l& th p phân 21 Vi t ch ký s ng trình TT .Công Ngh Thông Tin o ng #c m t s nguyên d ng có úng 3 33/127 Giáotrình PP l p trình Ch ng 3 CÁC C U TRÚC I U KHI N (Control structures) 1 GI4I THI U T t c các ch ng trình máy tính dù n gi n hay ph c t p u #c vi t b ng cách s d ng các c u trúc i u khi n Có 3 lo i c u trúc i u khi... s h c g*m: + (c ng), - (tr ), * (nhân), / (chia), và % (l y ph(n d c a phép chia nguyên) Khi t s và m!u s c a phép chia là s nguyên thì ó là phép chia nguyên nên ph(n d c a phép chia nguyên b c t b Ví d , 5/2 thì k t qu là 2 Toán t l y ph(n d % (modulus operator) ch, áp d ng v i s nguyên và tr v ph(n d Ví d , 7%2 thì k t qu là 1 TT .Công Ngh Thông Tin 22/127 Giáotrình PP l p trình 11 Toán t ++ và... C/C++, giá tr 0 (zero) #c xem là false và giá tr khác 0 (non-zero) #c xem là true Các toán t quan h g*m: Toán t > >= < = 500 // false Các toán t lu n lý: Operator && || . trình này #c gi là liên kt (linking), #c thc hin b"i mt chng trình gi là b liên kt (linker). Giáo trình PP lp trình TT .Công Ngh Thông Tin 7/127 3.4. Th#c thi chng trình. qu xut ca chng trình là: Hello World! I hate C/C++. Giáo trình PP lp trình TT .Công Ngh Thông Tin 10/127 6. C$u trúc ca mt chng trình C/C++ Cu trúc mt chng trình C/C++ bao g*m. ca bài toán. Giáo trình PP lp trình TT .Công Ngh Thông Tin 5/127 Khi vit mt chng trình trong C/C++, ây là nhng bc #c ngh: 1. Xác nh mc ích ca chng trình 2. Ngh+ ra