CHƯƠNG I GIỚI THIỆU NGÔN NGỮ C GIÅÏI THIÃÛU NGÄN NGặẻ C I Caùc ngổợ lỏỷp trỗnh bỏỷc cao: Cạc ngän ngỉỵ báûc cao âãưu âi hi mäüt trỗnh bión dởch (Compiler) hoỷc thọng dởch (Interpreter) õóứ dởch caùc lóỷnh cuớa ngổợ lỏỷp trỗnh bỏỷc cao sang cạc lãûnh åí mỉïc tháúp âãø mạy cọ thãø thỉûc hióỷn õổồỹc Mọỹt trỗnh bión dởch giọỳng nhổ mọỹt trỗnh hồỹp dởch (Assembler), nhổng laỷi phuùc taỷp hồn nhióửu Trỗnh bión dởch coù sổỷ tổồng ổùng 1-1 giổợa caùc lãûnh ca håüp ngỉỵ v cạc lãûnh mạy Ngỉåüc lải, mäüt lãûnh âån Viãûc tạchngän mäütngỉỵ ngänbáûc ngỉỵ láûp khoới giaớn cuớa cao coùtrỗnh thóứ xa õổa ngổợ maùy laỡ rỏỳt khoù khn õóứ trỗnh nhióửu lóỷnh mạy biãn dëch biãøu diãùn cạc tạc vủ ca Nhỉng cạc ngän ngỉỵ báûc cao cng tạch xa cáúu truùc maùy tờnh thỗ mang õóỳn cho ta hai Caùc ngổợ bỏỷc cao taùch lỏỷp trỗnh vión khoới cạc âàûc củ thãø ca mäùi cáúu trục mạy tờnh Caùc chổồng trỗnh vióỳt bũng ngổợ bỏỷc cao thỗ dóự õoỹc vaỡ dóự baớo trỗ Vờ duỷ: Chổồng trỗnh ngổợ bỏỷc cao: a=b+c-2 Chổồng trỗnh viãút bàịng håüp ngỉỵ: LW R1, b LW R2, c ADD R3, R1, R2 LW R4, SUB R5, R3, R4 SW a, R5 ASSEMBLY: MOV AX, b MOV BX, c ADD AX, BX SUB AX, MOV a, AX II Lëch sỉí phạt triãøn ca ngän ngỉỵ C: Phạt triãøn båíi Brian Kernighan v Dennis Ritchie tải phng thê nghiãûm AT&Bell nàm 1972 Ban âáưu l mäüt ngọnngổợ lỏỷp trỗnh hóỷ thọỳng, laỡ ngổợ õóứ vióỳt cạc hãû âiãưu hnh v cạc tiãûn êch vãư hãû thọỳng Nm 1983 thỗ Vióỷn Tióu Chuỏứn Quọỳc Gia Hoa K (Amrecan National Satndards Institute) chênh thỉïc cäng nháûn Nm 1989 thỗ Tọứ Chổùc Tióu Chuỏứn Quọỳc Tóỳ (International StandardS Organization) chênh thæïc cäng nhán Nàm 1990 thỗ phión baớn chuỏứn õổồỹc thọng qua lỏửn cuọỳi cuỡng, âỉåüc hiãøu mäüt cạch âån gin l “C chøn” (Standard C Kãø tỉì âọ ngän ngỉỵ C âỉåüc hiãøu l “K&R C” CHỈÅNG II CẠC KHẠI NIÃÛM CÅ BN I Táûp k tỉû dng ngän ngỉỵ C: Mi ngổợ lỏỷp trỗnh õóửu õổồỹc xỏy dổỷng lón tổỡ mäüt bäü k tỉû no âọ Cạc k tỉû âỉåüc nhọm theo nhiãưu cạch khạc tảo thnh cạc tỉì Cạc tỉì âỉåüc liãn kãút theo mäüt quy tàõc ngỉỵ phạp no âọ âãø tảo thnh cạc cáu lãûnh Mäüt chổồng trỗnh bao gọửm nhióửu cỏu lóỷnh vaỡ dióứn õaỷt mäüt thûn toạn âãø gii mäüt bi toạn no âọ Ngän ngỉỵ C âỉåüc xáy dỉûng trãn bäü k tỉû sau: 26 chỉỵ cại la tinh låïn: A, B, C, ,Z 26 chỉỵ cại la tinh låïn: a, b, c, ,z 10 chỉỵ säú: 0,1,2, ,9 Caïc kyï hiãûu toaïn hoüc: + - * / = ( ) K tỉû gảch näúi _ (Chụ phán biãût våïi dáúu -) Caïc kyï hiãûu âàûc biãût khaïc: , ; : [ ] { } ? ! \ & | % # $ Dáúu cạch (Space) II Tãn Tãn l khại niãûm ráút quan trng, dng âãø xạc âënh cạc âải lỉåüng khaùc mọỹt chổồng trỗnh Chuùng ta co tón hàịng, biãún, mng, hm, tr, tãn tãûp, tãn cáúu trục, tãn nhn, Tãn âỉåüc âàût theo quy tàõc: Tãn l mäüt dy cạc k tỉû chỉỵ v säú âọ k tỉû âáưu tiãn phi l chỉỵ Khi viãút tãn cho phẹp sỉí dủng dáúu _ mäüt chỉỵ Tãn khäng âỉåüc trng våïi cạc tỉì khoạ cu C Tãn cọ âäü di tu , nhiãn chè cọ k tỉû âáưu cọ nghéa Chụ : Trong C cọ sỉû phán biãût chỉỵ hoa v chỉỵ thỉåìng Thäng thỉåìng sỉí dủng chỉỵ hoa âãø âàût tãn cạc hàịng, dng chỉỵ thỉåìng âãø âàût tãn cạc âải lỉåüng khạc.(Khäng bàõt büc) III Tỉì khoạ Tỉì khoạ l nhỉỵng tỉì cọ nghéa hon ton xạc âënh, chụng thỉåìng âỉåüc sỉí dủng âãø khai bạo cạc kiãøu dỉỵ liãûu, âãø viãút cạc toạn tỉí v cạc cáu lãûnh Cạc tỉì khoạ m chụng ta thỉåìng gàûp laìm viãûc våïi C: int if else char float continue unsigned for double static æhile struct goto switch break return case long sizeof default IV Mọỹt sọỳ chổồng trỗnh vê duû: Vê duû 1: #include “stdio.h” void main() { printf(“Welcom to C! \n”); } Vê duû 2: #include “stdio.h” main() { printf(“Welcom to C! \n”); return 0; } V. Mäüt sọỳ quy từc cỏửn nhồù vióỳt chổồng trỗnh: Quy tàõc âáưu tiãn cáưn nhåï l: Mäùi cáu lãûnh cọ thãø viãút trãn mäüt hay nhiãưu dng nhỉng phi âỉåüc kãút thục bàịng dáúu; Quy tàõc thỉï hai l quy tàõc vãư låìi gii thêch: Cạc låìi gii thêch phi âàût giỉỵa dáúu /* v dáúu */ Quy tàõc thỉï l quy tàõc sỉí dủng cạc hm chøn Khi sỉí dủng mäü hm cáưn biãút nàịm trãn táûp Header (*.h) v phi dng toạn tỉí #include âãø gàõn tóỷp õoù vaỡo chổồng trỗnh Quy từc thổù tổ noùi vóử cỏỳu truùc cuớa mọỹt chổồng trỗnh Mọỹt chổồng trỗnh cọ thãø chè cọ mäüt hm chênh - main(), hồûc cọ thãø thãm nhiãưu hm khạc VI. Khai bạo v toạn tỉí gạn Mi biãún trỉåïc sỉí dủng âãưu phi khai bạo âãø xạc âënh kiãøu ca Âãø khai bạo cạc biãún ngun (Kiãøu int) ta dng tỉì khạo int Âäúi våïi cạc biãún thỉûc (Kiãøu float) ta dng tỉì khoạ float Vê dủ: int a, b, c; /* Khai baïo caïc biãún a, b, c thuäüc kiãøu int */ float x, y, z; /* Khai baïo caïc biãún x, y, z thüc kiãøu float */ Toạn tỉí gạn cọ dảng: v=e âọ v l biãún cn e cọ thãø l biãún hay mäüt biãøu thỉïc toạn hc no âọ Tạc dủng ca lãûnh ny l: trỉåïc tiãn xạc âënh giạ trë biãún e v sau âọ giạ giạ trë âọ cho biãún v VII Âỉa kóỳt quaớ lón maỡn hỗnh óứ õổa kóỳt quaớ maỡn hỗnh ta duỡng cỏu lóỷnh: printf(doỡng õióửu khióứn,v1,v2,v3,v4) Trong âọ: v1,v2,v3, l cạc biãún m giạ trë ca chuùng cỏửn õổồỹc õổa maỡn hỗnh Doỡng õióửu khióứn l mäüt hàịng xáu k tỉû (dy k tỉû âàût dáúu hai âáúu nhạy kẹp “ “) bao gäưm ba loải: - Cạc k tỉû cáưn âỉa ngun xi maỡn hỗnh - Kyù tổỷ õióửu khióứn vióỷc chuyóứn xúng âáưu dng tiãúp theo - Cạc k tỉû dng âãø mä t kiãøu cạch âỉa ca cạc biãún, gi chụng l cạc âàûc t Cạc âàûc t: - \n: k tỉû âiãưu khiãøn viãûc chuøn dng - Âàûc t âäúi våïi biãún säú ngun: %[fw]d • Trong âọ: fw l mäüt säú ngun xạc âënh âäü räüng täúi thiãøu dnh cho trỉåìng (säú vë trê täúi thiãøu trỏửn maỡn hỗnh daỡnh cho mọỹt bióỳn kióứu int ã Khi fw låïn hån âäü di thỉûc tãú ca trỉåìng thỗ mọỹt sọỳ khoaớng troùng seợ õổồỹc bọứ sung vo bãn trại Vê dủ: int a; void main() { a=456; frintf(%6d, a); getch(); } Khờ chaỷy chổồng trỗnh thi trón maỡn hỗnh coù daỷng: 456 ã Khi khọng cọ fw hồûc fw nh hån hay bàịng âäü di thổỷc tóỳ cuớa trổồỡng ra, thỗ õọỹ rọỹng trón maỡn hỗnh daỡnh cho trổồỡng seợ bũn õọỹ daỡi thổỷc tãú ca - Âäúi våïi biãún thỉûc cäú thãø dng âàûc t: %[fw][.pp]f • Trong âọ pp l âäü chênh xạc Nọi mäüt cạch củ thãø hån: trãn mn hỗnh seợhióỷn lón mọỹt giaù trở thổỷc pp chổợ sọỳ sau dáúu cháúm tháûp phán •Nãúu pp=0, biãún thỉûc âỉåüc âỉa mäüt säú ngun (khäng cọ dáúu phán caùch thỏỷp phỏn) ãNóỳu khọng coù pp thỗ maùy seợ ngáưm hiãøu l pp=6 • fw l säú ngun xạc õởnh õọỹ rọỹng tọỳi thióứu trón maỡn hỗnh daỡnh cho trỉåìng • Âäü di thỉûc tãú ca mäüt biãún thỉûc: Lv= Lfw + pp +1(vë trê dnh cho dáúu cháúm phán cạch tháûp phán + (vë trê dnh cho dáúu - nãúu cọ) Vê dủ minh hoả Âàûc taí %d %d %5d %5d %8.0f %f %f %8.3f %8.3f %.3f %.3f %.2f Giạ trë ca biãún -456 456 456 -456 45.78 45.78 -45.78 45.78 -45.7894 45.78 -45.78 0.345 Daûng õổa maỡn hỗnh -456 456 456 -456 45 45.780000 -45.78000 45.780 -45.789 45.780 -45.780 0.35 Chuï yï: Sau âc nhỉỵng âiãưu nọi trãn mäüt cáu hi âàût l lm thãú no âãø âỉa cạc k tỉû: % ‘ “ \ Cáu tr låìi sau: Khi dỏỳu % õổùng ngoaỡi kóỳt cỏỳu õỷc taớ thỗ âỉåüc xem k tỉû thäng thỉåìng nghéa l baớn thỏn noù õổồỹc õổa maỡn hỗnh (maùy in hồûc âéa) Âäúi våïi cạc k tỉû khạc ta dng thãm dáúu \ âàût trỉåïc Nọi mäüt cạch cuỷ thóứ hồn: Khi vióỳt \ thỗ dỏỳu õổồỹc õổa Khi vióỳt \ thỗ dỏỳu õổồỹc õổa Khi vióỳt \\ thỗ dỏỳu \ õổồỹc âỉa VIII Âỉa kãút qu mạy in: Cạch thỉïc âỉa kãút qua mạy in hon ton tỉång tổỷ nhổ caùch õổa maỡn hỗnh Sổỷ khaùc chè åí mäüt vi chi tiãút nh nhå sau: - Dng lãûnh: fprintf thay cho lãûnh printf Âỉa thãm tham säú stdprn vo dng âiãưu khiãøn Nhỉ váûy âãø âỉa kãút qu mạy in ta dng cáu lãûnh: fprintf(stdprn, dng âiãưu khiãøn, v1,v2, v3, ,vk) IX Vo säú liãûu tỉì bn phêm: Âãø âỉa säú liãûu vo tỉì bn phêm hai giạ trë kiãøu int v ba giạ trë kiãøu float cọ thãø dng cạc cáu lãûnh sau: int a, b; float c, d, e; scanf(“%d%d%f%f%f”, &a,&b,&c,&d,&e) Âäúi våïi cáu lãûnh scanf cáưn chụ cạc âiãøm sau: - Khäng dng tãún biãún cáu lãûnh frinf m dng âëa chè ca biãún Phẹp toạn: &biãún cho âëa chè ca biãún - Mäùi biãún ỉïng våïi mäüt âàûc t Nhỉ váûy säú âàûc t bàịng säú biãún - Dng âàûc t %d âäúi våïi biãún ngun - Dng âàûc t %f âäúi våïi biãún thỉûc Mäüt cạch täøng quạt cáu lãûnh scanf cọ dảng: scanf(“t1t2 tk”,&v1,&v2, ,&vk); Trong âọ: - v1, v2, , vk l cạc biãún (kiãøu int vaì kiãøu float) - t1, t2, ,tk l cạc âàûc t tỉång ỉïng Sỉû hoảt âäüng ca cáu lãûnh scanf:Khi gàûp lãûnh ny mạy s dỉìng âãø âåüi thao tạc viãn vo säú liãûu tỉì bn phêm X Mọỹt vaỡi chổồng trỗnh õồn giaớn Chổồng trỗnh 1: Vióỳt chổồng trỗnh tờnh chu vi vaỡ dióỷn tờch hỗnh trn: void main() { float r, c, s; prinf(“Chỉång trinh tinh chu vi vaì dien tich hinh tron”); prinf(“\n Ban kinh r = “); scanf(“%f”, &r); c= 2*r*3.14; s= r*r*3.14; printf(“\n r = %8.3f \n c = %8.3f \ns = %8.3f, r, c,s); } Chổồng trỗnh 2: Vióỳt chổồng trỗnh x ly thỉìa y #include "stdio.h" #include "math.h" void main() { double pow(); /*khai bao ham pow() kieu double*/ double x, y, z; printf("Chuong trinh tinh x luy thua y \n"); printf("x = "); scanf("%lf",&x); printf("y = "); scanf("%lf",&y); z=pow(x,y);/*ham pow la mot ham da co math.h*/ printf("\n x = %8.2f\n y = %8.2f\n z = %8.2f", x, y, z); getch(); } ... bión dởch bióứu dióựn ca? ?c ta? ?c vủ ca Nhỉng c? ? ?c ngän ngỉỵ bá? ?c cao cng taùch xa c? ??ỳu tru? ?c maùy tờnh thỗ mang õóỳn cho ta hai C? ? ?c ngän ngỉỵ bá? ?c cao tạch láûp trỗnh vión khoới ca? ?c õ? ?c tờnh cuỷ... NGặẻ C I Ca? ?c ngổợ lỏỷp trỗnh bỏ? ?c cao: Ca? ?c ngổợ bỏ? ?c cao õóửu õoỡi hoới mọỹt trỗnh bión dởch (Compiler) ho? ?c thọng dởch (Interpreter) õóứ dởch ca? ?c lóỷnh cuớa ngổợ lỏỷp trỗnh bá? ?c cao sang c? ? ?c. .. loải: - C? ? ?c k tỉû c? ?ưn õổa nguyón xi maỡn hỗnh - Kyù tổỷ õióửu khiãøn viã? ?c chuøn xúng âáưu dng tiãúp theo - C? ? ?c k tỉû dng âãø mä t kiãøu c? ??ch âỉa ca c? ? ?c biãún, gi chụng l c? ? ?c âà? ?c t C? ? ?c âà? ?c t: