Chỉång III HÀỊNG, BIÃÚN V MNG Trong chỉång trçnh C sỉí dủng cạc dảng thäng tin (kiãøu giạ trë) sau: säú ngun (int), säú thỉûc hay säú dáúu pháøy âäüng (float), säú dáúu pháøy âäüng cọ âäü chênh xạc gáúp âäi (double) v k tỉû (char) Hàòng chênh l mäüt giạ trë thäng tin củ thãø Biãún v mng l cạc âải lỉåüng mang tin Mäùi loải biãún (mng) cọ thãø chỉïa mäüt dảng thäng tin no âọ, vê dủ biãún kiãøu int chỉïa âỉåüc cạc säú ngun, biãún kiãøu float chỉïa âỉåüc cạc Ngỉåìi ta chia biãn ( mng) thnh: Biãún (mng) tỉû âäüng Biãún (mng) ngoi Biãún (mng) ténh Biãún (mng) tỉû âäüng chè täưn tải (âỉåüc cáúp phạt bäü nhåï) no chụng âỉåüc sỉí dủng Biãún (mng) ngoi v ténh täưn tải sút thåìi gian lm viãûc ca chỉång trçnh Cạch täø chỉïc váûy vỉìa tiãút kiãûm bäü nhåï (vç cng mäüt khong nhåï lục thç phán cho biãún ny, lục thç phán cho biãún khạc), vỉìa cho phẹp sỉí dủng mäüt tãn biãún cho cạc âäúi tỉåüng khạc m khäng gáy mäüt sỉû nháưm láùn no I Kiãøu dỉỵ liãûu Trong C sỉí dủng cạc kiãøu dỉỵ liãûu sau: K tỉû (char) Säú ngun (int) Säú dáúu pháøy âäüng âäü chênh xạc âån (float) Säú dáúu pháøy âäüng âäü chênh xạc gáúp âäi (float) Mäüt giạ trë kiãøu char chiãúm mäüt byte (8bit) v biãøu diãùn âỉåüc mäüt k tỉû thäng qua bng m ASCII Thỉûc cháút dỉỵ liãûu kiãøu char l mäüt säú ngun khäng dáúu khong tỉì âãún Dỉåïi âáy l phảm vi v kêch cåỵ biãøu diãùn ca giạ trë kiãøu char Kiãøu Phảm vi biãøu diãùn Säú k tỉû Kêch thỉåïc char 255 256 byte Giạ trë kiãøu ngun (int) Trong C cho phẹp sỉí dủng: Säú ngun (int), säú ngun di (long) v säú ngun khäng dáúu (unsigned) Kêch thỉåïc v phảm vi biãøu diãùn ca chụng l: Kêch Kiãøu int long int unsigned Phảm vi biãøu diãùn -32768 32767 -2145483648 2145483648 65535 thỉåïc byte byte byte Giạ trë dáúu pháøy âäüng Trong C cho phẹp sỉí dủng loải giạ trë dáúu pháøy âäüng l float v double Kêch thỉåïc v phảm vë biãøu diãøn l: Säú chỉỵ Kiãøu Phảm vi biãøu diãùn säú cọ nghéa Kêch thỉåïc 1.5e-45 3.4e+38 float 7-8 byte 5.0e-324 Gii thêch: Mạy cọ thãø lỉu trỉỵ âỉåüc double 15-16 bytesäú 1.7e+308 dáúu phy däüng cọ giạ trë tuût âäúi khong tỉì 1.5e-45 âãún 3.4e+38 Säú cọ giạ trë tuût âäúi nh hån 1.5e-45 âỉåüc xem bàòng Phảm vi biãøu diãùn ca säú double âỉåüc hiãøu theo nghéa tỉång tỉû II Hàòng Hàòng l cạc âải lỉåüng m cạc giạ trë ca khäng thay âäøi quạ trçnh toạn Cạc loải hàòng âỉåüc sỉí dủng: Hàòng dáúu cháúm âäüng (float v double) âỉåüc viãút theo hai cạch Cạch 1: (K phạp tỉû nhiãn): Säú âỉåüc viãút theo cạch thäng thỉåìng chè cọ khạc l dáúu pháøy tháûp phán âỉåüc thay båíi dáúu cháúm Vê dủ: 44.356, -43442.54546 Cạch 2: (K phạp khoa hc): Säú âỉåüc tạch thnh hai pháưn l pháưn âënh trë v pháưn báûc Pháưn âënh trë l mäüt säú ngun hồûc säú thỉûc âỉåüc viãút theo k phạp tỉû nhiãn, pháưn báûc l mäüt säú ngun Hai pháưn ny cạch båíi k tỉû e hồûc E Vê dủ: 123.456e-5 (Biãøu diãùn giạ trë 0.00123456) 0.123E5 (Biãøu diãùn giạ trë 12300) Hàòng int l säú ngun cọ giạ trë khong tỉì -32768 32767 Hàòng long âỉåüc viãút theo kiãøu: -4234253l hồûc -4234253l (Thãm l hồûc L) Mäüt säú ngun vỉåüt ngoi miãưn xạc âënh ca int cng âỉåüc xem l hàòng long Hàòng int hãû âỉåüc viãút theo cạch: 0x1x2x3 ÅÍ âáy x1, x2, x3, l säú ngun khong tỉì âãún Hàòng ngun hãû ln ln nháûn giạ trë dỉång Hàòng int hãû 16 âỉåüc viãút theo cạch: 0xx1x2x3 hồûc 0Xx1x2x3 ÅÍ âáy x1, x2, x3, l säú ngun khong tỉì âãún v cạc chỉỵ cại tỉì a(A) âãún f(F) Hàòng Hàòng k tỉû l mäüt k tỉû riãng biãût âỉåüc viãút dáúu nhạy âån (‘), vê dủ: ‘a’, giạ trë ‘a’ chênh l m ASCII ca chỉỵ a Nhỉ váûy giạ trë ca ‘a’ l 97 Hàòng k tỉû cọ thãø tham gia vo cạc phẹp toạn mi säú ngun khạc Vê dủ, giạ trë ca biãøu thỉïc: ‘a’ - ‘A’ = 97 - 65 = 32 Hàòng k tỉû cn cọ thãø âỉåüc viãút theo cạch ‘\x1x2x3 ’ ÅÍ âáy x1, x2, x3, l mäüt säú hãû m hãû giạ trë ca bàòng m ASCII ca k tỉû cáưn biãøu diãùn Vê dủ: Chỉỵ a cọ m hãû 10 l 97 âäúi hãû l 141 Hàòng xáu k tỉû: l mäüt dy cạc k tỉû báút k âàût giỉỵa hai dáúu nhạy kẹp (“) Vê dủ: “Dai Hoc Su Pham” “” /* Xáu räùng */ Cạch âënh nghéa mäüt hàòng: #define Hồûc: const = III Biãún Mi biãún cáưn phi khai bạo trỉåïc sỉí dủng Cạch khại bạo mäüt biãún: type Vë trê khại bạo biãún: Cạc biãún khai bạo cáưn âàût sau dáúu { âáưu tiãn ca thán hm v cáưn âỉïng trỉåïc mi cáu lãûnh Nhỉ váûy, sau mäüt cáu lãûnh gạn chàơng hản thç khäng âỉåüc khai bạo nỉỵa Viãûc khåíi âáưu cho cạc biãún: Nãúu khai bạo, sau tãn iãún ta âàût dáúu = v mäüt giạ trë no âọ thç âáy chênh l cạch vỉìa khai bạo vỉìa khåíi âáưu cho mäüt biãún Vê dủ: int a, b = 45, c =50; Khai bại mng: Mng mäüt chiãưu: [Number of elements] Mng nhiãưu chiãưu: [Num of elements1][Num of elements ] Vê dủ: Khai bạo mng chiãu: int a[10] /*Khai bạo mäüt mng chỉïa 10 säú ngun*/ Khai bạo mng chiãưu: int b[5][4] /Khai bạo mäüt ma tráûn cọ 5dng cäüt*/ Chụ : Cạc pháưn ca mng âỉåüc cáúp phạt cạc khong nhåï liãn tiãúp bäü nhåï Nọi cạch khạc pháưn tỉí cọ âëa chè liãn tiãúp bäü nhåï Trong bäü nhåï, cạc pháưn tỉí ca mng hai chiãưu âỉåüc sàõp xãúp theo hng Truy cáûp âãún tỉìng pháưn tỉí ca mng: – Mäùi pháưn tỉí ca mng âỉåüc xạc âënh nhåì cạc chè säú ca – Chè säú ca mng phi cọ giạ trë int khäng vỉåüt quạ kêch thỉåïc ca chiãưu tỉång ỉïng Vê dủ: a[i] V Chụ : Cho phẹp láúy âëa chè ca mng mäüt chiãưu: &a[I] V khäng cháúp nháûn phẹp tênh: &b[i][j] Khäúi lãûnh: Âënh nghéa: Mäüt khäúi lãûnh l gäưm dy cạc cáu lãûnh âỉåüc bao båíi cạc dáúu { v } Vê dủ: { a = 4; b = 5; printf(“\n %6d%6d”,a,b) Mạy xem mäüt khäúi lãûnh cng mäüt cáu lãûnh riãng l Nọi cạhc khạc, chäø no chỉång trçnh âàût âỉåüc mäüt cáu lãûnh thç cọ thãø âàût mäüt khäúi lãûnh Khai bạo biãún åí âáưu khäúi lãûnh: Cạc khai bạo chàóng nhỉỵng cọ thãø âàût åí âáưu mäùi hm m cn cọ thãø viãút åí âáưu khäúi lãûnh Vê dủ: { int a ,b; float x, y,z; a=b=3; x=5; y=a*x; z= 5-b*y; printf(“\ny = %8.2f\nz = %8.2f”,y,z); Sỉû lng ca cạc khäúi lãûnh: Bãn mäüt khäúi lãûnh lải cọ thãø viãút thãm cạc khäúi lãûnh khạc Sỉû läưng theo cạch váûy l khäng hảnh chãú Phảm vi hoảt âäüng ca biãún v mng: Mäüt âiãøm cáưn nhåï k l: nãúu ta quan miãûn cạc biãún v cạc mng khại bạo mäüt khäúi lãûnh s täưn tải sút thåìi gian lm viãûc ca chỉång trçnh v âỉåüc sỉí dủng ton bäü chỉång trçnh, thç cạch hiãøu váûy l khäng dụng Thỉûc cháút l: Khi mạy bàõt âáưu lm viãûc våïi khọi lãûnh thç cạc biãún v cạc mng khai bạo bãn måïi âỉåüc hçnh thnh v âỉåüc cáúp phạt bäü nhåï Cạc biãún ny chè täưn tải thåìi gain mạy lm viãûc bãn Tỉì âọ cáưn nhåï: - Giạ trë ca mäüt biãún hay mäüt mng khai bạo bãn mäüt khäúi lãûnh khäng thãø âỉa âãø sỉí dủng åí báút k chäø no ngoi khäúi lãûnh âọ - ÅÍ báút k chäø no bãn ngoi mäüt khäúi lãûnh ta khäng thãø can thiãûp âãún cạc biãún v cạc mng âỉåüc khại bạo bãn khäúi lãûnh âọ - Nãúu bãn mäüt khäúi lãûnh ta dng mäüt biãún (hay mäüt mng) cọ tãn l a, thç âiãưu ny khäng lm thay âäøi gêa trë ca mäüt biãún khạc cng cọ tãn l a (nãúu cọ) âỉåüc dng åí âáu âọ bãn ngoi khäúi lãûnh âọ - Tuy nhiãn, nãúu mäüt biãún (mng) â âỉåüc khai bạo åí ngoi mäüt khäúi lãûnh v trng tãn våïi cạc biãún khai bạo bãn khäúi lãûnh v Vê dủ: #include "stdio.h" main() { int a, b=50, c, d=30; float x=35, y,z; a=c=40; y=z=a+b+c+d; { float y,z; y=z=a+b-x; printf("\ny = %8.2f \nz = %8.2f",y,z); } printf("\ny ngoai = %8.2f \nz ngoai = %8.2f",y,z); getch(); return 0; } VI Vi nẹt vãư hm v chỉång trçnh Hm l mäüt âån vë âäüc láûp ca chỉång trçnh Tênh âäüc láûp ca hm âỉåüc thãø hiãûn trãn hai âiãøm: Khäng cho phẹp xáy dỉûng mäüt hm bãn hm khạc Mäùi hm cọ cạc biãún, mng, Riãng ca mçnh v chụng chè âỉåüc sỉí dủng näüi bäü bãn hm âọ Mäüt chỉång trçnh bao gäưm mäüt hồûc nhiãưu hm Hm main() l thnn pháưn bàõt büc ca chỉång trçnh Chỉång trçnh bàõt âáưu thỉûc hiãûn tỉì lãûnh âáưu tiãn ca hm main() v kãút thỉïc gàûp dáúu } cúi cng Khi chỉång trçnh lm viãûc mạy cọ thãø âi tỉì hm ny Viãûc truưn dỉỵ liãûu v kãút qu tỉì hm ny sang hm khạc âỉåüc thỉûc hiãûn theo mäüt hai cạch sau: Sỉí dủng âäúi ca hm Sỉí dủng biãún ngoi, mng ngoi, biãún ténh ngoi v mng ténh ngoi VII Biãún, mng tỉû âäüng: Âënh nghéa: Biãún (mng) khại bạo bãn thán ca mäüt hm (kãø c hm main()) gi l biãún (mng) tỉû âäüng Âäúi ca hm cng âỉåüc xem l biãún tỉû âäüng Âàûc trỉng ca biãún, mng tỉû âäüng: Phảm vë hoảt âäüng: Cạc biãún (mng) tỉû âäüng chè hoảt âäüng bãn thán ca Thåìi gian täưn tải: Cạc biãún (mng) tỉû âäüng ca mäüt hm s täưn tải (âỉåüc cáúp phạt bäü nhåï) khong thåìi gian tỉì mạy bàõt âáưu lm viãûc våïi hm âãún mạy hm Do chỉång trçnh bàõt âáưu lm viãûc tỉì cáu lãûnh âáưu tiãn ca hm main() v mạy hm main() thç chỉång trçnh kãút thục, nãn nãúu cạc biãún, mng khai bạo main() s täưn tải sút thåìi gian lm viãûc ca chỉång trçnh Khi âáưu: Chè cọ thãø ạp dủng cå chãú khåíi âáưu cho biãún tỉû âäüng VIII Biãún, mng ngoi: Âënh nghéa: Biãún (mng) khai bạo ngoi hm gi l biãún (mng) ngoi Âàûc trỉng ca biãún, mng ngoi: Phảm vë hoảt âäüng: Cạc biãún (mng) ngoi hoảt âäüng tỉì vë trê khại bạo cho âãún cúi chỉång trçnh Nhỉ váûy, nãúu mäüt biãún (mng) ngoi âỉåüc khai bạo åí âáưu chỉång trçnh (âỉïng trỉåïc táút ca cạc hm) thç cọ thãø âỉåüc sỉí dủng báút k hm no miãùn l hm âọ khäng cọ cạc biãún (mng) tỉû Thåìi gian täưn tải: Cạc biãún (mng) ngoi s täưn tải (âỉåüc cáúp phạt bäü nhåï) sút thåìi gian lm viãûc ca chỉång trçnh Cạc quy tàõc vãư khåíi âáưu: Cạc biãún (mng) ngoi cọ thãø khåíi âáưu (mäüt láưn) vo lục dëch chỉång trçnh bàòng cạch sỉí dủng cạc biãøu thỉïc hàòng Nãúu khäng âỉåüc khåíi âáưu, mạy s gạn giạ trë khäng Khi khåíi âáưu mng ngoi cọ thãø khäng cáưn chè kêch thỉåïc (säú pháưn tỉí) ca Khi âọ, my s dnh cho mng mäüt khong nhåï â âãø thu nhán danh giạ trë khåíi âáưu Khi chè kêch thỉåïc củ thãø ca mng, thç kêch thỉåïc ny cáưn khäng nh hån kêch thỉåïc ca bäü khåíi âáưu Bäü khåíi âáưu ca mäüt mng char cọ thãø: Vê dủ: #include "stdio.h" int a= 35, t[][3] ={ {2,4,5},{6,7,8}}; float y[5] = {45.8, 35.6}; float x[4][2] = {{32.5,21.6},{32,65}}; char ch1[]={'I', 'l','o','v','e'}; char ch2[]="I love"; char ch3[6]={'I', 'l','o','v','e'}; char ch4[6]="I love"; main() { clrscr(); printf("\n\na = %6d t(1,2) = %6d t(1,1) = %6d",a,t[1][2],t[1][1]); printf("\n\nx(1,1) = %6.2f x(0,1) = %6.2f x(1,1) = %6.2f",x[1][1],x[0][1],x[1][1]); printf("\n\n%5s %10s %10s %15s",ch1,ch2,ch3,ch4); getch(); return 0; } IX Biãún ténh, mng ténh Khi khai bạo biãún (mng ) ténh ta viãút thãm tỉì khoạ static vo âàòng trỉåïc Cụ phạp: static [Säú pháưn tỉí] Biãún (mng) ténh cọ thãø âàût bãn hồûc bãn ngoi cạc hm Nãúu âàût bãn trong, ta cọ cạc biãún (mng) ténh trong, trỉåìng håüp trại lải, ta cọ cạc biãún (mng) ténh ngoi Cạc biãún (mng) ténh (trong v ngoi) giäúng biãún (mng) ngoi åí chäø: + Chụng âỉåüc cáúp phạt bäü nhåï sút thåìi gian hoảt âäüng ca chỉång trçnh, + Chụng cọ thãø âỉåüc khåíi âáưu mäüt láưn dëch chỉång trçnh nhåì cạc biãøu thỉïc hàòng Cạc quy tàõc âáưu âäúi våïi biãún (mng) ngoi ạp dủng cho biãún mng ténh Sỉû khạc giỉỵa biãún (mng) ngai våïi biãún (mng) ténh chè åí phảm vi hoảt âäüng + Cạc biãún (mng) ténh hoảt âäüng âỉåüc bãn thán ca hm m tải âọ chụng âỉåüc khai bạo + Phảm vi hoảt âäüng ca cạc biãún (mng) ténh ngoi âỉåüc tỉì chụng khai bạo âãún cúi tãûp gäúc chỉïa chụng ... ca mng âỉå c x c âënh nhåì c c chè säú ca – Chè säú ca mng phi c giạ trë int khäng vỉåüt quạ kêch thỉå c ca chiãưu tỉång ỉïng Vê dủ: a[i] V Chụ : Cho phẹp láúy âëa chè ca mng mäüt chiãưu: &a[I]... lm viã c ca chỉång trçnh C c quy tà c vãư khåíi âáưu: C c biãún (mng) ngoi c thãø khåíi âáưu (mäüt láưn) vo l c dëch chỉång trçnh bàòng c ch sỉí dủng c c biãøu thỉ c hàòng Nãúu khäng âỉå c khåíi... viã c ca chỉång trçnh C ch täø chỉ c váûy vỉìa tiãút kiãûm bäü nhåï (vç cng mäüt khong nhåï l c thç phán cho biãún ny, l c thç phán cho biãún kh c) , vỉìa cho phẹp sỉí dủng mäüt tãn biãún cho c c