Giáo trình phương pháp lập trình - ĐH CÔNG NGHI pot

127 312 0
Giáo trình phương pháp lập trình - ĐH CÔNG NGHI pot

Đ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

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áo trình PP lp trình TT.Công Ngh Thông Tin 2/127 MC LC Chng 1: TNG QUAN V NGÔN NG LP TRÍNH C/C++ 4 1. Lch s ca ngôn ng lp trình C/C++ 4 2. Phng pháp  gii quyt mt bài toán 4 3. Các bc trong chu trình phát trin chng trình 5 4. Kho sát mt chng trình C/C++ n gin 7 5. Các chú thích (comments) 9 6. Cu trúc ca mt chng trình C/C++ 10 7. Các tp tin th vin thông dng 11 Chng 2: BIU THC 12 1. Kiu d liu (data types) 12 2. Các nh danh (Identifier names) 13 3. T khóa (keywords) 14 4. Bin (variables) 14 5. T khóa const 17 6. Hng (constants) 17 7. Hng chui ký t (string constants) 18 8. Hng ký t c bit (escape sequences) 18 9. Toán t (operators) 19 10. Các toán t s hc (arithmetic operators) 22 11. Toán t ++ và (increment and decrement operators) 23 12. Toán t quan h & lun lý 24 13. Toán t ? (? operator) 26 14. Toán t sizeof 26 15. Toán t du phy (comma operator) 27 16. Biu thc (expressions) 29 17. Chuyn i kiu trong các biu thc 29 18. Ép kiu (casting) 30 19. Dng vit tt ca câu lnh gán (shorthand assignments) 31 Chng 3: CÁC CU TRÚC IU KHIN 34 1. Gii thiu 34 2. Cu trúc la chn if 35 3. Cu trúc la chn switch case 39 4. Các cu trúc lp (Loop structures) 44 5. Các lnh r nhánh và nhy 50 Chng 4: MNG 61 1. Gii thiu Mng 61 2. Mng 1 chiu 61 Giáo trình PP lp trình TT.Công Ngh Thông Tin 3/127 3. Mng nhiu chiu 64 Chng 5: CON TR 71 1. Gii thiu Con tr 71 2. Bin con tr (pointer variables) 72 3. Mt s ví d v con tr 75 4. Cp phát b nh ng 75 5. Con tr void (void pointers) 78 6. Con tr null (Null pointers) 79 7. Con tr và mng 80 8. Mng con tr 81 Chng 6: HÀM 83 1. Khái nim hàm 83 2. Dng tng quát ca hàm 84 3. Các qui tc v phm vi ca hàm 85 4. Tham s hình thc và tham s thc 85 5. Truyn mng vào hàm 88 6. i s ca hàm main 89 7. Lnh return 90 8.  qui 92 9. Nguyên m!u hàm (function prototypes) 93 10. Cu trúc ca mt chng trình vit di dng hàm 94 Chng 7: CHUI KÝ T 96 1. Gii thiu Chui 96 2. Khai báo và kh"i to chui 96 3. Nhp chui 97 4. Xut chui 97 5. Mt s hàm th vin thao tác trên chui 97 6. Mt s ví d v chui 98 7. Mng các chui 99 8. Mng con tr n các chui 101 Chng 8: STRUCTURES – ENUM - typedef 105 1. Structures 105 2. Kiu lit kê (Enumerations, enum) 111 3. typedef 112 Chng 9: TP TIN 114 1. Streams và Files 114 2. Streams (dòng nhp xut) 114 3. Files 115 4. Truy xut file ng!u nhiên 124 5. Các stream chun 124 Giáo trình PP lp trình TT.Công Ngh Thông Tin 4/127 Chng 1 TNG QUAN V NGÔN NG LP TRÌNH C/C++ 1. Lch s ca ngôn ng lp trình C/C++ C #c to b"i Dennis Ritchie " Bell Telephone Laboratories vào n$m 1972  cho phép lp trình viên phát trin các ng dng hiu qu hn các ngôn ng lp trình hin có ti th%i im ó. im mnh và mm d&o ca C cho phép các nhà phát trin " Bell Labs to nên các ng dng phc tp nh h iu hành Unix. Vào n$m 1983, hc vin chun quc gia M' (American National Standards Institute - ANSI) thành lp mt tiu ban  chun hóa C #c bit n nh ANSI Standard C. Ngày nay, tt c trình biên dch C/C++ u tuân theo ANSI Standard C. C++ #c xây dng trên nn tng ca ANSI Standard C. C++ là mt ngôn ng lp trình hng i t#ng mà bao hàm ngôn ng C " trong nó. Trong giáo trình này cha kho sát ph(n lp trình hng i t#ng ca C++. 2. Phng pháp  gii quyt mt bài toán Mt chng trình máy tính #c thit k  gii quyt mt bài toán nào ó. Vì vy, nhng bc c(n  tìm kim l%i gii cho mt bài toán c)ng ging nh nhng bc c(n  vit mt chng trình. Các bc g*m: - Xác nh yêu c(u ca bài toán. - Ngh+ ra mt phng cách (algorithm)  tìm l%i gii. - Thc hin phng cách ó. - Kim tra kt qu  xem l%i gii có úng vi yêu c(u ca bài toán. Giáo trình PP lp trình TT.Công Ngh Thông Tin 5/127 Khi vit mt chng trình trong C/C++, ây là nhng bc #c  ngh: 1. Xác nh mc ích ca chng trình 2. Ngh+ ra thut toán phù h#p  gii quyt bài toán (dùng mã gi, lu *, ) 3. Cài t (vit) thut toán dùng ngôn ng lp trình C/C++ 4. Thc thi chng trình và kim th (testing). 3. Các b c trong chu trình phát trin chng trình Chu trình phát trin chng trình (program development cycle) có nhng bc sau ây. 1. Mt trình son tho v$n bn #c dùng  nhp mã ngu*n (source code). 2. Mã ngu*n #c biên dch (compile)  to nên tp tin i t#ng (object file). 3. Các tp tin i t#ng #c liên kt (link)  to nên tp tin có th thc thi (executable file). 4. Thc hin (run) chng trình  ch, ra chng trình có làm vic ú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áo trình PP lp trình TT.Công Ngh Thông Tin 6/127 3.1. So!n tho mã ngu"n (source code editor) Mã ngu*n là mt tp các lnh dùng  ch, d!n máy tính thc hin công vic mong mun. Tp tin mã ngu*n #c lu tr vi ph(n phân loi .c (C) hoc .cpp (C++). 3.2. Biên dch (compile) Tp tin mã ngu*n #c vit bng nhng t ging ting Anh nên d- dàng  c và hiu. Tuy nhiên, máy tính không th hiu nhng t này. Máy tính yêu c(u các ch, d!n nh phân (binary) trong dng thc ca ngôn ng máy (machine language). Trc khi mt chng trình #c vit bng ngôn ng cp cao nh C/C++ có th thc thi trên máy tính, nó phi #c biên dch t mã ngu*n sang mã máy. Vic dch này #c thc hin b"i mt chng trình gi là trình biên dch (compiler). Các ch, d!n ngôn ng máy #c to b"i trình biên dch #c gi là mã i t#ng (object code) và tp tin cha chúng gi là tp tin i t#ng. Tp tin i t#ng có cùng tên nh tp tin mã ngu*n nhng có ph(n phân loi .obj. 3.3. T!o tp tin th#c thi (executable files) C/C++ có mt th vin hàm cha mã i t#ng cho nhng hàm ã #c to s.n. Nhng hàm này thc hin các tác v th%ng dùng nh xóa màn hình (clrscr()), nhp mt chui ký t t bàn phím (gets()), tính c$n bc hai (sqrt()), mà chng trình #c vit có th s dng mà không phi vit li. Tp tin i t#ng #c to ra b"i trình biên dch s kt h#p vi mã i t#ng ca các hàm th vin  to nên tp tin thc thi. Quá trình này #c gi là liên kt (linking), #c thc hin b"i mt chng trình gi là b liên kt (linker). Giáo trình PP lp trình TT.Công Ngh Thông Tin 7/127 3.4. Th#c thi chng trình Khi chng trình ngu*n #c biên dch và liên kt  to nên tp tin thc thi (có ph(n phân loi .exe), nó có th thc thi trên máy tính ti du nhc h thng. Nu chng trình hot ng không úng nh yêu c(u, vn  có th là do li lp trình. Trong tr%ng h#p này, ch,nh sa chng trình ngu*n, biên dch li và liên kt li  to nên phiên bn mi ca tp tin chng trình. Quá trình bn bc này #c lp i lp li cho n khi tp tin thc thi thc hin úng yêu c(u ca bài toán. 4. Kho sát mt chng trình C/C++ n gin Kho sát mt chng trình n gin dùng  xut 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à chng trình n gin nhng nó ã bao hàm nhng thành ph(n c bn mà mi chng trình C/C++ u có. Vi ý ngh+a ca tng dòng nh sau: // my first program in C/C++ ây là dòng chú thích, tt c các dòng bt (u bng hai du // #c coi là các dòng chú thích, nó không nh h"ng n hot ng ca chng trình, ch, dùng  gii thích mã ngu*n ca chng trình. Giáo trình PP lp trình TT.Công Ngh Thông Tin 8/127 #include <iostream.h> Các lnh bt (u bng du # #c dùng cho các ch, th tin x lý (preprocessor). Trong ví d này, câu lnh #include báo cho trình biên dch bit c(n phi gp th vin iostream.h là tp tin header chun ca C/C++, cha các nh ngh+a v nhp và xut. int main() nh ngh+a hàm main(). Hàm main() là im mà tt c các chng trình C/C++ bt (u thc hin. Nó không ph thuc vào v trí ca hàm, ni dung ca nó luôn #c thc hin (u tiên khi chng trình thc thi. Mt chng trình C/C++ u phi t*n ti mt hàm main(). Hàm main() có th có hoc không có tham s. Ni dung ca hàm main() tip ngay sau ph(n khai báo chính thc #c t trong cp du ngoc { }. cout << "Hello World!"; ây là mt lnh nm trong ph(n thân ca hàm main. cout là mt dòng (stream) xut chun trong C/C++ #c nh ngh+a trong th vin iostream.h. Khi dòng lnh này #c thc thi, kt qu là chui "Hello World!" #c xut ra màn hình. Dòng lnh #c kt thúc bng du chm phy (;). getche(); ây là mt hàm th vin dùng  ch% nhp mt ký t t bàn phím. return 0; Lnh return kt thúc hàm main và tr v giá tr biu thc i sau nó, trong tr%ng h#p này là 0. ây là mt kt thúc bình th%ng ca mt chng trình không có li trong quá trình thc hin. Chng trình trên có th vit li nh sau: int main() { cout << " Hello World! "; getch(); return 0;} c)ng cho cùng mt kt qu. Giáo trình PP lp 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 lp trình viên s dng  ghi chú hay mô t trong các ph(n ca chng trình. Trong C/C++ có hai cách  chú thích: Chú thích dòng: dùng cp du //. T v trí // n cui dòng #c xem là chú thích Chú thích khi (chú thích trên nhiu dòng) dùng cp /* */. Nhng gì nm gia cp du 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; } Kt qu xut ca chng trình là: Hello World! I hate C/C++. Giáo trình PP lp trình TT.Công Ngh Thông Tin 10/127 6. C$u trúc ca mt chng trình C/C++ Cu trúc mt chng trình C/C++ bao g*m các thành ph(n nh: Các ch, th tin x lý, khai báo bin toàn cc, chng trình chính (hàm main), Kho sát chng 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; } Phn này thng dùng  mô t mc ính chng trình, tác gi, ngày vit, (Phn không bt buc) Khai báo các tp tin th vin Khai báo prototype ca các hàm t to Hàm chính ca chng trình nh ngha các hàm do ngi dùng t xây dng [...]... 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áo trì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áo trì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áo trì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áo trì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áo trì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áo trì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áo trì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áo trình PP l p trình. .. _creat(), creatnew(), eof(), filelength(), lock(), … TT .Công Ngh Thông Tin 11/127 Giáo trì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áo trì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áo trì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 gi là liên kt (linking), #c thc hin b"i mt chng trình gi là b liên kt (linker). Giáo trình PP lp trình TT .Công Ngh Thông Tin 7/127 3.4. Th#c thi chng trình. qu xut ca chng trình là: Hello World! I hate C/C++. Giáo trình PP lp trình TT .Công Ngh Thông Tin 10/127 6. C$u trúc ca mt chng trình C/C++ Cu trúc mt chng trình C/C++ bao g*m. ca bài toán. Giáo trình PP lp trình TT .Công Ngh Thông Tin 5/127 Khi vit mt chng trình trong C/C++, ây là nhng bc #c  ngh: 1. Xác nh mc ích ca chng trình 2. Ngh+ ra

Ngày đăng: 27/06/2014, 15:20

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan