CHÖÔNG 1: Trong chöông naøy trình baøy: # Lieät keâ caùc böôùc giaûi quyeát vaán ñeà . # Thuaät toaùn # Veõ löu ñoà # Kyù hieäu söû duïng trong löu ñoà # Bieán # Kieåu döõ lieäu # Kieåm tra chöông trình baèng caùch chaïy thoâ # Caáu truùc moät chöông trình C 1.1 Giôùi thieäu: Maùy tính ñöôïc duøng ñeå giaûi quyeát vaán ñeà vaø thöïc hieän caùc pheùp tính .Tuy nhieân ,ñeå thöïc hieän ñöôïc ñieàu naøy ,chuùng ta phaûi cung caáp giaûi phaùp döôùi caùc caâu leänh caàn thieát ñeå giaûi quyeát vaán ñeà cuï theå. Noùi caùch khaùc,chuùng ta phaûi cung caáp cho maùy tính daõy leänh ñeå giaûi quyeát baøi toaùn .Daõy leänh naøy ñöôïc goïi laø chöông trình .Khi vieát moät chöông trình ñeå giaûi quyeát vaán ñeà cuï theå,thì chöông trình coù theå ñöôïc söû duïng ñeà giaûi quyeát vaán ñeà töông töï. VD:vieát chöông trình tính ñieåm cho 100 sinh vieân trong moät lôùp ,thì chöông thình naøy cuõng coù theå söû duïng ñeå tính ñieåm cho 100 sinh vieân khaùc. 1.2 Phöông phaùp giaûi quyeát vaán ñeà: Giaûi quyeát vaán ñeà laø moät quaù trình phöùc taïp ñoøi hoûi phaûi suy nghó ,leân keá hoaïch ,laäp luaän chính xaùc ,kieân trì vaø chuù yù tôùi töøng chi tieát . Maùy tính khoâng theå töï giaûi quyeát ñöôïc vaán ñeà neáu laäp trình vieân khoâng cung caáp giaûi phaùp .Giaûi phaùp naøy ñöôïc goïi laø thuaät toaùn(algorithm). Caùc böôùc giaûi quyeát vaán ñeà: 1. Nghieân cöùu chi tieát vaán ñeà . 2. Taäp hôïp caùc thoâng tin thích hôïp . 3. Xöû lyù caùc thoâng tin . 4. Ñi ñeán keát quaû. VD 1:ñeå kieåm tra moät soá chaün hay leû ,caàn thöïc hieän caùc böôùc sau: * ñoïc vaøo moät soá * chia soá ñoù cho 2 * neáu phaàn dö laø 0 thì ñoù laø soá chaün. * ngöôïc laïi ñoù laø soá leû. Vôùi caùc böôùc theo thöù töï treân ,chuùng ta tieán haønh bieåu dieãn chuùng thaønh caùc leänh baèng moät ngoân ngöõ laäp trình cuï theå. 1.3 Thuaät toaùn(Algorithm): thuaät toaùn laø böôùc ñaàu tieân ñeå giaûi quyeát vaán ñeà Thuaät toaùn laø gì?
Thuaät toaùn laø caùc böôùc suùc tích vaø hôïp logic caàn thieát ñeå giaûi quyeát moät vaán ñeà.
ÔÛ ví duï 1 ,danh saùch caùc böôùc ñeå kieåm tra moät soá laø chaün hay leû chính laø thuaät toaùn. VD 2: moät haønh khaùch ñi xe löûa töø Oxford ñeán London : Caùc böôùc caàn thöïc hieän : # thoâng tin veà haønh khaùch .Ngaøy ñaêng kí choã ,nôi xuaát phaùt ,nôi ñeán.
# ngöôøi baùn veù ghi nhaän caùc thoâng tin veà khaùch haøng,kieåm tra choã coøn troáng. # neáu coøn ñuû thì cho ñaët veù,ngöôïc laïi seõ ñöa veù chôø. # veù chôø seõ thaønh veù chính thöùc neáu coù haønh khaùch khaùc huûy veù. # neáu khoâng nhaän ñöôïc traû lôøi thì haønh khaùch naøy khoâng ñaët ñöôïc veù chính thöùc. Phaân tích nhö treân seõ deã daøng cho vieäc laäp trình . 1.4 Löu ñoà (flowchart):laø coâng cuï duøng ñeå moâ taû thuaät toaùn Löu ñoà laø gì?
Löu ñoà laø moät bieåu ñoà minh hoïa cho daõy caùc thao taùc caàn tieán haønh ñeå giaûi quyeát moät vaán ñeà.
Caùc caâu leänh ñöôïc moâ taû baèng caùc kí hieäu cuï theå .Caùc kí hieäu naøy ñöôïc noái vôùi nhau baèng muõi teân ñeå chæ roõ thöù töï thöïc hieän . Löu ñoà laø coâng cuï deã söû duïng ñeå vieát chöông trình vaø ñeå phuïc vuï cho caùc muïc ñích sau: # Moâ taû tröïc quan deã hieåu hôn moâ taû baèng töôøng thuaät. # Döïa vaøo löu ñoà ta coù theå xem laïi vaø gôõ roái chöông trình moät caùch deã daøng . # Cung caáp taøi lieäu chöông trình . # Nhôø veõ löu ñoà ,deã daøng hieåu ñöôïc chöông trình hoaëc thaûo luaän giaûi phaùp. 1.5 Reõ nhaùnh (branching):
Reõ nhaùnh laø moät quaù trình choïn ra moät trong hai hay nhieàu con ñöôøng cho vieäc thöïc hieän tính toaùn sau ñoù . 1.6
Laëp:
Laëp laø vieäc söû duïng nhieàu laàn moät hoaëc nhieàu böôùc . Coù hai loaïi voøng laëp:coá ñònh vaø thay ñoåi. Voøng laëp coá ñònh neáu caùc thao taùc ñöôïc laëp laïi vôùi moät soá laàn coá ñònh. Voøng laëp thay ñoåi neáu caùc thao taùc ñöôïc laëp laïi nhieàu laàn cho tôùi khi thoaõ maõn ñieàu kieän.Soá laàn laëp coù theå thay ñoåi. 1.7 Keát noái (connector) : Moät löu ñoà phöùc taïp thöôøng :coù theå khoâng vöøa treân moät trang giaáy ,coù theå khoù noái lieàn nhau tröïc tieáp . Trong caùc tröôøng hôïp naøy ,löu ñoà coù theå ñöôïc chia caét thaønh nhieàu phaàn vaø chuùng ta seõ keát hôïp chuùng laïi vôùi nhau baèng caùc ñieåm keát noái. Moät ñieåm keát noái ñöôïc ñaùnh soá (soá duy nhaát cho moät trang),moät muõi teân veõ ñieåm ñeán noái taïi vò trí chia caét cuûa bieåu ñoà .Moät keát noái khaùc coù soá töông töï (treân trang khaùc ) vaø muõi teân ñi ra ñöôïc veõ töø nôi bieåu ñoà ñöôïc chia caét ,theå hieän söï noái lieàn vôùi phaàn kia cuûa bieåu ñoà. 1.8 Höôùng daãn veõ löu ñoà: Caàn ghi nhôù caùc ñieåm sau ñaây khi veõ löu ñoà: # Luùc ñaàu taäp trung vaøo caùc logic toång quaùt cuûa baøi toaùn vaø veõ caùc ñöôøng chính cuûa löu ñoà. # Sau khi ñaõ hoaøn taát caùc ñöôøng chính ,veõ theâm caùc ñöôøng phuï ,nhaùnh va voøng laëp. # Moät löu ñoà chæ coù duy nhaát moät ñieåm baét ñaàu vaø moät ñieåm keát thuùc . # Ñeå cho löu ñoà coù tính ñoäc laäp vôùi chöông trình ,caøng ít caùc thuaät ngöõ lieân quan tôùi maùy tính caøng toát # Khoâng caàn thieát phaûi moâ taû töøng böôùc cuûa baøi toaùn trong löu ñoà .Chæ moâ taû caùc böôùc coù yù nghóa.
# Söû duïng caùc thuaät ngöõ moâ taû thích hôïp ñeå trình logic cuûa vaán ñeà .Khoâng duøng caùc thuaät ngöõ mô hoà,khoù hieåu. # Ngöôøi söû duïng hoaëc laäp trình vieân khaùc phaûi hieåu ñöôïc löu ñoà naøy. 1.9 Bieán: Khi chöông trình caàn xöû lyù döõ lieäu ,noù caàn nôi ñeå löu tröõ taïm thôøi taäp tin naøy .Nôi löu tröõ thoâng tin goïi la ø boä nhôù. Moät chöông trình coù theå xöû lyù nhieàu döõ lieäu .Vì theá chöông trình caàn caáp phaùt boä nhôù cho töøng döõ lieäu ,khi caáp phaùt boä nhôù caàn quan taâm hai yeáu toá sau: # Phaûi caáp phaùt dung löôïng bao nhieâu? # Vò trí caáp phaùt cho töøng döõ lieäu phaûi ñöôïc ghi nhaän. Chöông trình coù theå söû duïng nhieàu vò trí boä nhôù ñöôïc ñaïi dieän bôøi caùc teân bieán. 1.9.1 Caùc quy taéc ñaët teân bieán: ÔÛ moãi ngoân ngöõ laäp trình coù caùch ñaët teân bieán khaùc nhau .Coù vaøi quy öôùc ñaët teân bieán sau: # Teân bieán phaûi baét ñaàu baèng moät chöõ caùi . # Kyù töï theo sau coù theå laø chöõ hay soá vaø cuõng coù theå laø caùc kyù töï ñaët bieät. # Traùnh söû duïng maãu töï o (chöõ o) vì deã nhaàm vôùi soá 0 (soá khoâng),hay chöõ i deå nhaàm vôùi soá 1 # Teân bieán phaân bieät chöõ hoa ,chöõ thöôøng . # Teân bieán phaûi moâ taû ñöôïc yù nghóa noù löu tröõ. 1.9.2 Bieán ñeám (counter variable): Bieán ñöôïc söû duïng thöôøng xuyeân khi vieát chöông trình lieân quan tôùi voøng laëp goïi laø bieán ñeám.Bieán ñeám duøng ñeå theo doõi soá laàn thöïc hieän voøng laëp.Noù ñöôïc khôûi taïo baèng giaù trò 0,vaø taêng daàn leân sau ñoù .Bieán naøy thöôøng ñaët teân laø cnt. 1.10 Giôùi thieäu caùc kieåu döõ lieäu: Kieåu döõ lieäu laø gì? Caùc loaïi döõ lieäu khaùc nhau ñöôïc löu tröõ trong caùc bieán :numbers (123456,soá aâm,soá döông ),names(Jones) ,caùc giaù trò logic(yes,no).Döõ lieäu ñöôïc löu tröõ tronh caùc bieán coù caùc kieåu khaùc nhau vaø do ñoù chuùng caàn dung löôïng boä nhôù khaùc nhau .Kieåu döõ lieäu quyeát ñònh dung löôïng boä nhôù ñöôïc caáp ñeå bieán löu tröõ kieåu döõ lieäu cuï theå.Ñeå chæ ñònh vuøng nhôù cho töøng loaïi döõ lieäu chuùng ta phaûi :khai baùo bieán thuoäc moät kieåu döõ lieäu cuï theå . Thuaät ngöõ khai baùo bieán coù nghóa laø moät vuøng nhôù ñöôïc caáp vaø ñöôïc tham chieáu baèng teân bieán. Daïng toång quaùt ñeå khai baùo bieán laø:data type (teân bieán),Numeric:chöùa caùc giaù trò soá;Alphanumeric:chöùa caùc thoâng tin moâ taû. 1.10.1 Kieåu int: Ñaây laø kieåu döõ lieäu chöùa caùc con soá – moät trong nhöõng kieåu döõ lieäu cô baûn trong baát kyø ngoân ngöõ laäp trình naøo.Kieåu naøy chöùa moät daõy caùc con soá . 1.10.2 Kieåu float: Moät bieán ñöôïc khai baùo laø kieåu float coù theå ñöôïc söû duïng ñeå chöùa caùc giaù trò bao goàm caû phaàn thaäp phaân.Chöông trình bieân dòch kieåu döõ lieäu phaân bieät bieán float vaø bieán int. Bieán int chæ chöùa caùc soá nguyeân nhöng bieán float chöùa caû soá nguyeân vaø phaân soá 1.10.3 Kieåu char: Kieåu char ñöôïc duøng ñeå chöùa moät kyù töï. 1.10.4 Kieåu double:
Kieåu double ñöôïc söû duïng khi caàn löu tröõ döõ lieäu coù ñoä chính xaùc cao hôn maø kieåu float khoâng ñaùp öùng ñöôïc. 1.10.5 Kieåu döõ lieäu cô baûn vaø kieåu daãn xuaát: Boán kieåu döõ lieäu treân ñöôïc duøng ñeå bieãu dieãn döõ lieäu thöïc söï trong boä nhôù maùy tính .Caùc kieåu döõ lieäu naøy coù theå ñöôïc thay ñoåi cho phuø hôïp vôùi caùc tình huoáng bieãu dieãn khaùc nhau .Kieåu döõ lieäu coù ñöôïc do söï thay ñoåi treân moät kieåu cô baûn goïi laø kieåu daãn xuaát (derived data type). Moät soá töø boå nghóa (modifier)ñöôïc söû duïng ñeå thay ñoåi kieåu döõ lieäu cô baûn goàm:unsigned ,long, short 1.01.6 Kieåu unsigned: unsigned cho bieát bieán chæ chöùa ñöôïc soá döông,unsigned coù theå ñöôïc söû duïng vôùi kieåu döï lieäu int vaø float .Söû duïng int vôùi unsigned ,mieàn soá döông coù theå gaáp ñoâi. 1.10.7 Kieåu long vaø short: Töø long vaø short ñöôïc söû duïng khi chieàu daøi cuûa soá nguyeân daøi hôn hoaëc ngaén hôn chieàu daøi chuaån.Long integer ñöôïc kí hieäu laø long int vaø short integer laø short int. Baûng lieät keâ mieàn giaù trò cuûa bieán Kieåu döõ lieäu Mieàn giaù tròKích thöôùc löu tröõ (bit) Char -128ñeán127 8 Int -32,768ñeán32,767 16 Float 6soá leû thaäp phaân 32 Double 10soá leû thaäp phaân 64 Unsigned int 0ñeán 65,535 16 Short int -32,768ñeán 32,767 16 Long int -2,147,483,647ñeán 2,147,483,647 32 Long double 10 soá thaäp phaân 128 1.10.8 Töø khoùa(keyword): Maëc duø chuùng ta coù theå ñaët teân baát kyø,nhöng coù moät soá teân ñöôïc daønh rieâng cho muïc ñích rieâng bieät vaø caùc laäp trình vieân khoâng ñöôïc söû duïng .Taát caû caùc kieåu döõ lieäu chuùng ta bieát ñöôïc xem nhö caùc töø khoaù. Seõ khoâng xaûy ra vaán ñeà gì neáu töø khoaù vaø teân bieán phaân bieät ñöôïc. 1.11 Chaïy thöû chöông trình: Chaïy thöû chöông trình laø phöông phaùp thöû baèng tay ñeå kieåm tra tính ñuùng ñaén cuûa thuaät toaùn. 1.12 Moät chöông trình C maãu: Moät chöông trình C goàm: #include<…> void main() { //khai baùo caùc bieán //caùc leänh } Giaûi thích: Void main():doøng naøy cho bieát baét ñaàu chöông trình maø moãi chöông trình C phaûi coù. Daáu môû ngoaëc moùc {}phaàn giöõa hai ngoaëc moùc laø caùc leänh cuûa chöông trình .Caùc leänh naøy taïo thaønh phaàn thaân cho chöông trình .
Caùc caâu leänh ñaàu tieân trong chöông trình laø caùc caâu leânh khai baùo bieán..Taát caûcaùc leänh phaûi ñöôïc khai baùo tröùôc khi söû duïng trong chöông trình .Khai baùo bieán chæ roõ cho chöông trình söû duïng caùc bieán nhö theá naøo . Caùc caâu leänh naèm döôùi phaàn khai baùo bieán chæ ra caùc thao taùc caàn thöïc thi bôûi chöông trình . Caùc caâu leänh trong laäp trình C phaûi ñöôïc keát thuùc baèng daáu chaám phaåy ;