Chổồng I : Tọứng quan Trang 1 Chơng I. TỉNG QUAN I. Giồùi thióỷu vóử ngọn ngổợ C: I.1. Lởch sổớ ngọn ngổợ C: Ngọn ngổợ C õổồỹc Dennis Ritchie thióỳt kóỳ taỷi phoỡng thờ nghióỷm Bell nm 1972 vồùi muỷc õờch vióỳt hóỷ õióửu haỡnh UNIX. Tuy nhión nhồỡ tờnh ổu vióỷt vaỡ linh õọỹng cuớa C nón C õaợ õổồỹc giồùi tin hoỹc sổớ duỷng khừp nồi nhổ mọỹt ngọn ngổợ chờnh thọỳng. Do coù nhióửu phión baớn C cuớa nhióửu nhaỡ saớn xuỏỳt phỏửn móửm nón nm 1983 ANSI (American National Standard Institute) xỏy dổỷng tióu chuỏứn ANSI C. Tọứ chổùc ISO cuợng xỏy dổỷng chuỏứn cho C. Hai chuỏứn naỡy giọỳng nhau vaỡ õổồỹc bióỳt õóỳn vồùi tón chung laỡ ANSI C. I.2. ặu õióứm cuớa ngọn ngổợ C: Hióỷn nay coù rỏỳt nhióửu ngọn ngổợ lỏỷp trỗnh khaùc nhau nhổ PASCAL, JAVA, DELPHI, BASIC, . Mọựi ngọn ngổợ coù mọỹt sọỳ õióứm maỷnh rióng tuy nhión ngọn ngổợ C õổồỹc sổớ duỷng rọỹng raợi nhồỡ nhổợng ổu õióứm sau: C laỡ ngọn ngổợ maỷnh vaỡ móửm deớo (linh õọỹng). C coù thóứ õổồỹc sổớ duỷng õóứ vióỳt hóỷ õióửu haỡnh, trỗnh bión dởch cuớa ngọn ngổợ khaùc, trỗnh õióửu khióứn, soaỷn thaớo vn baớn, õọử hoaỷ, baớng tờnh, . Ngọn ngổợ C õổồỹc sổớ duỷng rọỹng raợi bồới caùc nhaỡ lỏỷp trỗnh chuyón nghióỷp vaỡ nhồỡ coù chuỏứn ANSI C nón coù tờnh khaớ chuyóứn cao : chổồng trỗnh vióỳt cho maùy tờnh IBM-PC coù thóứ õổồỹc bión dởch vaỡ chaỷy trón hóỷ thọỳng maùy tờnh khaùc nhổ VAX. Chổồng trỗnh dởch coù hióỷu quaớ cao : õóỳn 80% tờnh nng cuớa chổồng trỗnh õoù vióỳt trón maợ maùy. Ngọn ngổợ C coù thóứ sổớ duỷng khaù nhióửu chổồng trỗnh dởch vaỡ caùc thổ vióỷn tióỷn ờch C coù ờt tổỡ khoaù nón suùc tờch vaỡ cọ õoỹng. C laỡ ngọn ngổợ coù cỏỳu truùc modul thọng qua vióỷc sổớ duỷng caùc haỡm. I.3. Nhổồỹc õióứm cuớa ngọn ngổợ C: Tuy nhión C cuợng coù mọỹt sọỳ nhổồỹc õióứm sau : Ngọn ngổợ C coù cuù phaùp laỷ vaỡ khoù hoỹc. Nhổợng ngổồỡi õaợ tổỡng vióỳt ngọn ngổợ khaùc coù thóứ vổồỹt qua õổồỹc khoù khn naỡy. Mọỹt sọỳ kờ hióỷu coù yù nghộa khaùc nhau tuyỡ thuọỹc vaỡo ngổợ caớnh sổớ duỷng. C quaù móửm deớo coù thóứ laỡm cho chổồng trỗnh coù veớ bỏỳt ọứn. I.4. Thuỏỷt toaùn (Algorithm): Thuỏỷt toaùn laỡ mọỹt chuọựi caùc chố dỏựn chờnh xaùc õem õóỳn mọỹt lồỡi giaới cho mọỹt baỡi toaùn. Khi xỏy dổỷng thuỏỷt toaùn ta chuù yù noù phaới thoaớ maợn caùc õióửu kióỷn sau : + Tờnh khaớ thi: thuỏỷt toaùn phaới thổỷc hióỷn õổồỹc khi xỏy dổỷng chổồng trỗnh õóứ chaỷy õổồỹc trón maùy tờnh. Chổồng I : Tọứng quan Trang 2 + Sọỳ bổồùc cỏửn thổỷc hióỷn trong thuỏỷt toaùn laỡ hổợu haỷn õóứ sau mọỹt sọỳ lỏửn lỷp nhỏỳt õởnh ta phaới õổồỹc nghióỷm cuớa baỡi toaùn + Tờnh tọỳi ổu: thọng thổồỡng õọỳi vồùi mọỹt baỡi toaùn coù nhióửu phổồng phaùp giaới khaùc nhau ta phaới choỹn ra trong sọỳ õoù phổồng phaùp giaới tọỳi ổu nhỏỳt vóử thồỡi gian thổỷc hióỷn, cho kóỳt quaớ chờnh xaùc nhỏỳt, khọỳi lổồỹng tờnh toaùn ờt nhỏỳt vaỡ õồn giaớn khi vióỳt chổồng trỗnh. Vờ duỷ : + Phaùt bióứu baỡi toaùn : Trong lồùp coù bao nhióu ngổồỡi tón Xuỏn ? + ỏửu vaỡo : Danh saùch lồùp Tón cỏửn kióứm tra : Xuỏn + ỏửu ra : Sọỳ ngổồỡi coù tón Xuỏn + Thuỏỷt toaùn : Lỏỳy danh saùch lồùp Lỏỳy tón cỏửn kióứm tra : Xuỏn Xoùa bọỹ õóỳm vóử 0 Lỏửn lổồỹt õọỳi vồùi tổỡng tón trong danh saùch : So saùnh vồùi tón cỏửn kióứm tra, nóỳu õuùng thỗ cọỹng 1 vaỡo bọỹ õóỳm Thọng baùo giaù trở bọỹ õóỳm ( sọỳ sinh vión coù tón Xuỏn ) I.5. Lổu õọử : A Thổỷc hióỷn cọng vióỷc A A Goỹi chổồng trỗnh con A Nhỏỷp xuỏỳt dổợ lióỷu A B uùng Sai Begin End Tuỡy thuọỹc vaỡo traỷng thaùi õuùng sai cuớa bióứu thổùc B maỡ reợ nhaùnh thờch hồỹp Bừt õỏửu vaỡ kóỳt thuùc mọỹt thuỏỷt toaùn Chỉång I : Täøng quan Trang 3 I.6. Cạc bỉåïc cå bn khi viãút chỉång trçnh C: • Thiãút kãú chỉång trçnh : Xạc âënh âáưu vo, âáưu ra ca bi toạn Xáy dỉûng thût toạn âãø gii quút bi toạn. • Soản tho : Sỉí dủng chỉång trçnh soản tho TURBO C hồûc BORLAND C hồûc C++, sau âọ lỉu lải file âọ våïi tãn l *.c ( âäúi våïi C++ l *.cpp ) • Dëch : Chỉång trçnh soản tho cng l trçnh biãn dëch. Trçnh biãn dëch s cọ nhiãûm vủ dëch chỉång trçnh ngưn sang m mạy qua 2 gian âoản: dëch ra táûp tin *.obj v liãn kãút cạc file *.obj lải våïi nhau qua trçnh liãn kãút. Nãúu cọ läùi thç ta quay tråí lải bỉåïc soản tho âãø sỉỵa chỉỵa. • Chảy chỉång trçnh Nãúu cọ läùi thç ta phi kiãøm tra lải thût toạn, läùi logic, âãún khi cho kãút qu âụng. II. Cạc pháưn tỉí cå bn ca ngän ngỉỵ C: II.1. Bäü kê tỉû ca C: Ngän ngỉỵ C âỉåüc xáy dỉûng trãn bäü kê tỉû sau : • Cạc chỉỵ cại hoa A Z, cạc chỉỵ cại thỉåìng a z • Cạc chỉỵ säú 0 9 • Dáúu cháúm cáu : , ; . ? • Cạc kê tỉû âàûc biãût nhỉ []{}!@#$%^&*()-=\+| . • Cạc kê tỉû khäng nhçn tháúy nhỉ khong tràõng, dáúu tab, k tỉû xúng dng. • Kê tỉû gảch dỉåïi _ Âáy chè l táûp con ca Bng m ASCII Ta khäng âỉåüc phẹp sỉí dủng cạc kê tỉû ngoi bäü kê tỉû trãn. II.2. Cạc tỉì khoạ (keyword): Tỉì khoạ l tỉì dng riãng, khäng thãø âënh nghéa lải, mäùi tỉì khoạ cọ mäüt nghéa riãng. Ta khäng âỉåüc sỉí dủng tỉì khoạ vo mủc âêch khạc nhỉ âàût tãn cho biãún, hàòng, mng; cáưn phi viãút chênh xạc tỉì khoạ. auto asm break case cdecl char const continue default do double else enum extern far float for goto huge if int interrupt long near pascal register return short signed sizeof static struct switch typedef Union unsigned void volatile while _cs _ds _es _ss _AH _AL _AX _BH _BL _BX _CH _CL _CX _DH _DL _DX _BP _DI _SI _SP Chổồng I : Tọứng quan Trang 4 II.3. Tón vaỡ caùch õỷt tón: Chổồng trỗnh sổớ duỷng rỏỳt nhióửu tón: tón bióỳn, tón hũng, tón haỡm, Caùc tón phaới õổồỹc khai baùo trổồùc khi sổớ duỷng Caùch õỷt tón : Tón laỡ daợy kờ tổỷ lióửn nhau gọửm caùc chổợ caùi thổồỡng vaỡ hoa, caùc chổợ sọỳ vaỡ dỏỳu gaỷch dổồùi. Tón khọng õổồỹc chổùa caùc kờ tổỷ õỷc bióỷt nhổ dỏỳu chỏỳm cỏu, dỏỳu caùch . Tón khọng õổồỹc bừt õỏửu bũng chổợ sọỳ C phỏn bióỷt chổợ hoa vaỡ chổợ thổồỡng : bien,Bien vaỡ BIEN laỡ caùc tón khaùc nhau. Khọng õổồỹc sổớ duỷng tổỡ khoùa õóứ õỷt tón. Tón coù thóứ daỡi tồùi 31 kờ tổỷ, tuy nhión khọng nón õỷt tón quaù daỡi. Tón bióỳn, tón hũng nón phaớn aùnh caùi maỡ noù lổu trổợ Tón haỡm nón phaớn aùnh cọng vióỷc maỡ noù laỡm. Vờ duỷ : bien_dem, nghiem1, hoan_vi, . : õuùng. 1st, bien dem, registry laỡ caùc vờ duỷ sai . Chuù yù : + C coù phỏn bióỷt chổợ hoa vaỡ chổợ thổồỡng + Tỏỳt caớ caùc tổỡ khoaù vaỡ haỡm chuỏứn õóửu laỡ chổợ thổồỡng, caùc macro chuỏứn õóửu laỡ chổợ hoa II.4. Lồỡi chuù giaới: Lồỡi chuù giaới trong chổồng trỗnh coù muỷc õờch laỡm cho ngổồỡi õoỹc dóự hióứu, chổồng trỗnh saùng suớa, thuỏỷn lồỹi trong vióỷc tỗm kióỳm, sổợa chổợa, gồợ rọỳi, . nhỏỳt laỡ õọỳi vồùi chổồng trỗnh lồùn, phổùc taỷp. Ta cỏửn coù thoùi quen sổớ duỷng caùc cỏu chuù thờch. Khọng sổớ duỷng chuù thờch vồùi nhổợng lóỷnh õaợ quaù roợ raỡng. Lồỡi chuù giaới khọng coù taùc duỷng taỷo ra maợ chổồng trỗnh. Trỗnh bión dởch seợ boớ qua tỏỳt caớ caùc cỏu ghi chuù. Ta khọng sổớ duỷng caùc cỏu chuù thờch lọửng vaỡo nhau Lồỡi chuù giaới ồớ bỏỳt kyỡ õỏu trong chổồng trỗnh, õổồỹc õỷt giổợa cỷp kờ hióỷu /* vaỡ */ , chuù giaới coù thóứ nũm trón nhióửu doỡng. Vờ duỷ : /* õỏy laỡ haỡm hoaùn vở haỡm naỡy sổớ duỷng con troớ */ Trong C++, sau mọựi doỡng, lồỡi chuù giaới coù thóứ nũm sau kờ hióỷu //. Mọựi kờ hióỷu // chố coù taùc duỷng trón doỡng õoù. Vờ duỷ : int dem=0; // dem laỡ bióỳn õóỳm. II.5. Cỏu lóỷnh vaỡ dỏỳu chỏỳm cỏu: Mọựi cỏu lóỷnh õổồỹc kóỳt thuùc bũng dỏỳu chỏỳm phỏứy ; Nhổợng doỡng khọng phaới laỡ cỏu lóỷnh thỗ kóỳt thuùc khọng coù dỏỳu chỏỳm cỏu. Caùc cỏu lóỷnh cuỡng nhoùm nón õỷt thúng cọỹt. Mọựi cỏu lóỷnh nón vióỳt trón mọỹt doỡng (nóỳu coù thóứ ) Chổồng I : Tọứng quan Trang 5 Vờ duỷ : #include <stdio.h> // khọng phaới laỡ lóỷnh main() { int i,j; i=0; return 0; // ba doỡng trón laỡ 3 lóỷnh nón coù dỏỳu ; } III. Cỏỳu truùc chung cuớa chổồng trỗnh : Chổồng trỗnh C laỡ mọỹt tỏỷp hồỹp nhióửu haỡm trong õoù phaới coù 1 haỡm chờnh goỹi laỡ main(). Haỡm laỡ õoaỷn maợ lóỷnh õọỹc lỏỷp õổồỹc õỷt tón vaỡ thổỷc hióỷn mọỹt cọng vióỷc xaùc õởnh khi õổồỹc goỹi õóỳn. Mọỹt haỡm coù thóứ goỹi õóỳn nhióửu haỡm khaùc. Haỡm main() laỡ haỡm õổồỹc maùy tờnh thổỷc hióỷn trổồùc tión trong mọỹt chổồng trỗnh. void ham1(void) { } void ham2(void) { } main() { ham1(); ham2(); } Chổồng I : Tọứng quan Trang 6 Mọỹt chổồng trỗnh C thổồỡng coù cỏỳu truùc nhổ sau : /* Caùc chố thở tióửn xổớ lờ */ #include #define . typedef /* õởnh nghộa caùc kióứu dổợ lióỷu */ /* khai baùo nguyón mỏựu caùc haỡm*/ kióứu_dổợ_lióỷu tón_haỡm(tham_sọỳ); khai baùo caùc bióỳn toaỡn cuỷc; /* chổồng trỗnh chờnh */ main() { /* caùc cỏu lóỷnh*/ return 0; } /* khai baùo caùc haỡm*/ kióứu_dổợ_lióỷu tón_haỡm(tham_sọỳ) { /* caùc cỏu lóỷnh */ return (giaù_trở_traớ_vóử); } Vờ duỷ : #include <stdio.h> // chố thở tióửn xổớ lờ void main() // haỡm main() { printf(\nChao cac ban !); // cỏu lóỷnh } Vờ duỷ : tờnh dióỷn tờch hỗnh chổợ nhỏỷt bióỳt chióửu daỡi vaỡ chióửu rọỹng coù sổớ duỷng haỡm #include <stdio.h> #include <conio.h> int tich(int x,int y); // khai baùo nguyón mỏựu haỡm main() { int x,y; // khai baùo bióỳn printf(\nNhap chieu dai:);scanf(%d,&x); // haỡm õoỹc tổỡ baỡn phờm printf(\nNhap chieu rong:);scanf(%d,&y); printf(\nDien tich hinh chu nhat: %d,tich(x,y)); // haỡm in ra maỡn hỗnh getch(); // õoỹc mọỹt kờ tổỷ õóứ chồỡ return 0; } int tich(int x,int y) // õởnh nghộa haỡm { return (x*y); } Chổồng I : Tọứng quan Trang 7 Vờ duỷ : tờnh dióỷn tờch hỗnh chổợ nhỏỷt bióỳt chióửu daỡi vaỡ chióửu rọỹng khọng duỡng haỡm #include <stdio.h> #include <conio.h> main() { int x,y; printf(\nNhap chieu dai:);scanf(%d,&x); printf(\nNhap chieu rong:);scanf(%d,&y); printf(\nDien tich hinh chu nhat: %d,x*y); getch(); return 0; } IV. Baỡi tỏỷp: 1. Xỏy dổỷng thuỏỷt toaùn vaỡ veợ sồ õọử khọỳi cuớa caùc baỡi toaùn sau: a. Tờnh n! b. Tờnh = n i i 1 c. Giaới phổồng trỗnh ax + b = 0 d. Giaới phổồng trỗnh ax 2 + bx + c = 0 e. Giaới phổồng trỗnh ax 3 + bx 2 + cx + d = 0 f. Giaới phổồng trỗnh ax 4 + bx 3 + cx 2 + dx + e = 0 2. Tờnh chu vi, dióỷn tờch cuớa hỗnh troỡn bióỳt baùn kờnh r = 3 cm. 3. ổa ra maỡn hỗnh doỡng chổợ : Mọn hoỹc ngọn ngổợ lỏỷp trỗnh C . . nhióửu chổồng trỗnh dởch vaỡ ca c thổ vióỷn tióỷn ờch C coù ờt tổỡ khoaù nón su c tờch vaỡ c õoỹng. C laỡ ngọn ngổợ coù c ỳu tru c modul thọng qua vió c. ca c vờ duỷ sai . Chuù yù : + C coù phỏn bióỷt chổợ hoa vaỡ chổợ thổồỡng + Tỏỳt caớ ca c tổỡ khoaù vaỡ haỡm chuỏứn õóửu laỡ chổợ thổồỡng, ca c macro chuỏứn