Notes Tin hồc cỡ s Chữỡng 01: Giợi thiằu chung và Lêp trẳnh v Ngổn ngỳ lêp trẳnh C Biản soÔn: PhÔm Vôn Sỹ Bở mổn Xỷ lỵ tẵn hi»u v Truy·n thỉng Khoa Kÿ thuªt i»n tû I Hồc viằn Cổng nghằ Bữu chẵnh Viạn thổng ver.18a Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a / 21 Notes PhƯn 01: Giợi thiằu chung Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a / 21 Giỵi thi»u chung Notes Sü phĂt trin cừa mĂy tẵnh, phƯn mÃm v internet  mang lÔi nhỳng thay ời to lợn cuởc sống, hồc têp v nghiản cựu cừa ngữới Ngổn ngỳ lêp trẳnh l mởt ngổn ngỳ nhƠn tÔo bao gỗm mët tªp c¡c tø vüng (tø khâa - keyword) v mët tªp c¡c quy tc (có ph¡p - syntax) dịng biản soÔn cĂc lằnh cho mĂy tẵnh thỹc hiằn mët nhi»m vư mong mn I I I Ngỉn ngú m¡y (0 v 1), ngæn ngú Assembly (mov, sub, ), ngổn ngỳ bêc cao (gƯn giống ngổn ngỳ thổng thữớng) Ngổn ngỳ thổng dch (thổng dch v chÔy trỹc tiáp tứng cƠu lằnh), ngổn ngỳ biản dch (biản dch ton bở chữỡng trẳnh thnh tằp ch th ngổn ngỳ m¡y ho n ch¿nh) Ngỉn ngú thõ tưc, ngỉn ngú kh¡i bĂo Ngổn ngỳ lêp trẳnh C l mởt ngổn ngỳ lêp trẳnh bêc cao cõ tẵnh mÃm thẵch hủp cho vi»c ph¡t triºn c¡c h» thèng, ùng dưng c¦n hiằu nông hoÔt ởng, thẵch ựng vợi cĂc hằ iÃu hnh khĂc I I ữủc sỷ dửng rởng rÂi bi cĂc lêp trẳnh viản, cĂc nh phĂt trin, cởng ỗng nghiản cựu L cỡ s cừa nhiÃu ngổn ngỳ lêp trẳnh hiằn Ôi khĂc Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 21 Notes PhƯn 02: Thiát lêp mổi trữớng lm viằc vợi Ngổn ngỳ lêp trẳnh C Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 21 Thiát lêp mổi trữớng lm viằc vợi Ngổn ngỳ lêp trẳnh C Notes Tián trẳnh thỹc thi v chÔy mởt chữỡng trẳnh C Thổng thữớng, mởt chữỡng trẳnh C trÊi qua bữợc ữủc thỹc thi: TÔo chữỡng trẳnh: sỷ dửng trẳnh soÔn thÊo thẵch hủp soÔn thÊo mởt chữỡng trẳnh C Thỹc hiằn quĂ trẳnh tiÃn xỷ lỵ I Thỹc thi mởt số tao tĂc cƯn thiát (tẳm v thay thá, thảm, ) trữợc thỹc hiằn biản dch Biản dch: dch chữỡng trẳnh C sang m mĂy (ngổn ngỳ mĂy) Liản kát (Link): thỹc hiằn liản kát file ối tữủng biản dch vợi cĂc phƯn m cừa nhỳng hm (thữ viằn) cỏn thiáu tÔo thnh m thỹc thi Ưy ừ NÔp (Load): thỹc hiằn tÊi (nÔp) m thỹc thi Ưy ừ cừa chữỡng trẳnh vo bở nhợ ChÔy chữỡng trẳnh Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 21 Thi¸t lêp mổi trữớng lm viằc vợi Ngổn ngỳ lêp trẳnh C Notes Chồn, ci t v thiát lêp mổi trữớng ph¡t triºn Chån mët c¡c bë cỉng cư sau, tÊi và v thỹc hiằn ci t theo hữợng dăn tr¶n trang chõ Tiny C Compiler: www.tinycc.org Code::Blocks: http://www.codeblocks.org Dev-C++: http://www.bloodshed.net/devcpp.html Visual Studio Express Edition: https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx Biản soÔn: PhÔm Vôn Sü (PTIT) Tin håc cì sð ver.18a / 21 Notes PhƯn 03: Vẵ dử mởt số chữỡng trẳnh C ỡn giÊn Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 21 V½ dư mởt số chữỡng trẳnh C ỡn giÊn Notes Chữỡng trẳnh v½ dư sè 1 // Chuong trinh C don gian // Vi du so 01: In man hinh mot chuoi ky tu # include < stdio h > 10 // Ham main int main ( void ) { printf (" Xin chao \n "); return 0; } Biản soÔn: PhÔm V«n Sü (PTIT) Tin håc cì sð ver.18a / 21 Vẵ dử mởt số chữỡng trẳnh C ỡn giÊn Notes Chữỡng trẳnh vẵ dử số 1: Mởt số giÊi thẵch Chú thẵch: khổng ữủc biản dch, ch ngữới ồc m chữỡng trẳnh hiu hỡn và chữỡng trẳnh I I Chú thẵch dỏng ỡn bưt Ưu bơng \\ Chú thẵch nhiÃu dỏng bưt Ưu bơng \ v kát thúc bơng \ Ch th tiÃn xỷ lỵ: bưt Ưu bơng #, ữủc thỹc hiằn trữợc chữỡng trẳnh ữủc biản dch Dỏng trưng: chữỡng trẳnh cõ th chựa mởt hoc nhiÃu dỏng trưng; khổng ữủc biản dch; chữỡng trẳnh ồc Hm main: mồi chữỡng trẳnh C ph£i câ mët v nh§t mët h m main; iºm bưt Ưu chữỡng trẳnh ữủc thỹc thi Khối lằnh (thƠn hm): ữủc t giỳa dĐu { v dĐu } I I Bao gỗm mởt hoc nhiÃu dỏng lằnh: mởt ch¿ ho°c mët líi gåi h m, Méi c¥u l»nh luổn phÊi kát thúc bơng mởt dĐu chĐm phây (;) Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a / 21 Vẵ dử mởt số chữỡng trẳnh C ỡn giÊn Notes Chữỡng trẳnh vẵ dử số 2 // Chuong trinh C don gian // Vi du so 02: Doc vao hai so nguyen , tinh tong # include < stdio h > 10 11 12 13 14 15 16 17 18 19 20 21 // Ham main int main ( void ) { // Khai bao bien int nSo1 , nSo2 ; int nTong ; // Thuc hien nhap cac so printf (" Nhap so thu nhat : "); // Nhac nguoi su dung scanf ("%d" ,& nSo1 ); // Doc vao mot so nguyen printf (" Nhap so thu hai : " ); // Nhac nguoi su dung scanf ("%d" ,& nSo2 ); // Doc vao mot so nguyen // Tinh tong nTong = nSo1 + nSo2 ; // Hien thi ket qua printf (" Tong cua %d va %d la % d\n" ,nSo1 , nSo2 , nTong ); return 0; } Biản soÔn: PhÔm Vôn Sü (PTIT) Tin håc cì sð ver.18a 10 / 21 Vẵ dử mởt số chữỡng trẳnh C ỡn giÊn Notes Chữỡng trẳnh vẵ dử số 2: Mởt số giÊi thẵch Cp hm printf v scanf cho php tÔo sỹ tữỡng tĂc giỳa ngữới sỷ dửng v chữỡng trẳnh Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 11 / 21 Vẵ dử mởt số chữỡng trẳnh C ìn gi£n Notes C§u tróc chung têng qu¡t cõa mởt chữỡng trẳnh C Chữỡng trẳnh C tờng quĂt gỗm phƯn, õ mởt số phƯn khổng nhĐt thiát ph£i câ Ph¦n 1: C¡c khai b¡o ch¿ Ph¦n 2: CĂc khai bĂo, nh nghắa dỳ liằu mợi PhƯn 3: C¡c khai b¡o bi¸n to n cưc sû dưng chữỡng trẳnh PhƯn 4: CĂc khai bĂo nguyản mău cĂc h m Ph¦n 5: C¡c mỉ t£ (thüc thi) chi tiát cĂc hm PhƯn 6: Hm main Trong chữỡng trẳnh vẵ dử số v 2, cĐu trúc gỗm: PhƯn PhƯn Biản soÔn: PhÔm Vôn Sü (PTIT) Tin håc cì sð ver.18a 12 / 21 Notes Ph¦n 04: V o cì b£n C Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 13 / 21 V o cì b£n C Notes L m vi»c vỵi printf(), printf_s(), scanf(), scanf_s() printf ("hơng-chuội-cũng-kẵ-tỹ-thoĂt"); I Vẵ dử: printf("Xin cho \n"); printf ("hơng-chuội-cũng-kẵ-tỹ-thoĂt-cũng-kỵ-tỹ-nh-kiu", danh-sĂch-tham-số); I Vẵ dử: printf("Toi %d tuoi \n",20); printf (ch-th-thiát-b-ra,"hơng-chuội-cũng-kẵ-tỹ-thoĂt-cũng-kỵ-tỹ-nhkiu",danh-sĂch-tham-số); scanf ("chuội-kỵ-tỹ-nh-kiu",danh-sĂch-tham-số); I Vẵ dử: scanf("%d", &nSo1); scanf (ch-th-thiát-b-vo,"chuội-kỵ-tỹ-nh-kiu",danh-sĂch-tham-số); CĂc phiản bÊn an ton cừa scanf_s Biản soÔn: PhÔm Vôn Sỹ (PTIT) printf v scanf t÷ìng ùng l printf_s v Tin håc cì sð ver.18a 14 / 21 V o cỡ bÊn C Notes CĂc kỵ tỹ iÃu khin hin th \a: TÔo tiáng bip \b: Xõa mởt kỵ tỹ trữợc trọ (backspace) \f: Trang mợi, dch trọ án v trẵ Ưu trang mợi \n: Xuống dỏng, trọ v trẵ Ưu dỏng mợi \v: DĐu tab dồc, dch trọ án dỏng tiáp theo sau d§u tab \\: Hiºn d§u \ \": Hiºn d§u nh¡y k²p (") \': Hiºn d§u nh¡y ìn (') \r: Dàch trä v· ¦u dáng hi»n tÔi \?: Hin th dĐu họi (?) \t: DĐu tab ngang, dch trọ án v trẵ tiáp sau dĐu tab trản mởt hng \xXY: Số XY dÔng hexa Biản soÔn: PhÔm Vôn Sỹ (PTIT) \XY: Số XY dÔng octal Tin håc cì sð ver.18a 15 / 21 V o cì b£n C Notes V½ dư minh håa Trong h m main, nhúng c¥u l»nh sau câ k¸t qu£ hiºn th¸ n o? 11 printf (" Xin chao \a \n"); printf (" Xin cha \ bo \n") ; 14 printf (" Xin chao \ tat ca cac ban \ r"); printf (" Toi " ); 15 printf (" Ha \ tdang \ ta \ bn \ tcom \ n"); 13 H¢y sû dưng printf º in c¡c chuéi sau: Son noi " Bo Son di vang " Ha hoi " Son co di hoc khong ?" Lap trinh 'C ' khong kho Chi thi duong dan thu muc C \\ Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 16 / 21 V o cì b£n C Notes Vẵ dử minh hồa ChÔy thỷ cĂc c¥u l»nh sau: 12 13 14 15 12 13 14 12 13 14 int nSo1 , nSo2 ; scanf ("%d" ,& nSo1 ); // Doc vao mot so nguyen int nSo1 , nSo2 , nTong ; scanf ("%d%d " ,& nSo1 , & nSo2 ) ; int nNgay , nThang , nNam ; printf (" Nhap vao thang nam (dd - tt - nnnn ): "); scanf ("%d -%d -% d" ,& nNgay , & nThang , & nNam ); int nNgay , nThang , nNam ; printf (" Nhap vao thang nam : "); scanf ("%d %* c%d %* c%d" ,& nNgay , & nThang , & nNam ); Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cì sð ver.18a 17 / 21 Notes Ph¦n 05: Thuêt toĂn v CĂch biu diạn thuêt toĂn Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 18 / 21 Thuêt toĂn v CĂch biu diạn thuêt to¡n Notes Thuªt to¡n Thuªt to¡n Thuªt to¡n (algorithm, cán ữủc dch l thuêt giÊi hoc giÊi thuêt) l mởt dÂy hỳu hÔn cĂc bữợc (thừ tửc) cõ trẳnh tỹ x¡c ành mỉ t£ mët c¡ch cư thº c¡c ph²p toĂn hoc hnh ởng cƯn thỹc hiằn giÊi quyát mởt vĐn Ã, mởt bi toĂn Mởt thuêt toĂn cõ °c tr÷ng: I I I I I I Dú liằu Ưu vo (input) Dỳ liằu Ưu (output) Tẵnh xĂc nh: Mội bữợc cừa thuêt toĂn ữủc mổ tÊ chẵnh xĂc, ch cõ mởt cĂch hiu nhĐt v ừ ỡn giÊn cõ th thỹc hiằn ữủc Tẵnh døng: Mët thuªt to¡n ph£i døng sau mët sè húu hÔn bữợc thỹc hiằn Tẵnh hiằu quÊ: CĂc php toĂn (thừ tửc thỹc hiằn) cĂc bữợc phÊi ỡn giÊn viằc thỹc hiằn, tẵnh toĂn Ôt ữủc tẵnh hiằu quÊ Tẵnh tờng quĂt: Thuêt toĂn phÊi cõ tẵnh tờng qu¡t, câ thº ¡p dưng cho mët lỵp ho°c nhi·u lợp ối tữủng Thuêt toĂn cõ th ữủc biu diạn bơng: ngổn ngỳ thổng thữớng, ngổn ngỳ giÊ thuêt (pseudocode - m giÊ), lữu ỗ thuêt toĂn, Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 19 / 21 Thuêt toĂn v CĂch biu diạn thuêt toĂn Notes Lữu ỗ thuêt toĂn CĂc thnh phƯn cỡ bÊn Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ sð ver.18a 20 / 21 Thuªt to¡n v C¡ch biu diạn thuêt toĂn Notes Lữu ỗ thuêt toĂn: Vẵ dử V lữu ỗ thuêt toĂn cừa mởt chữỡng trẳnh s ữủc trin khai trản vi iÃu khin AVR Chữỡng trẳnh thỹc hiằn viằc ồc nhiằt ở tứ cÊm bián LM35, náu nhiằt ở lợn hỡn 32 ở thẳ phĂt thổng bĂo "Trản nhiằt ở õng bông", ngữủc lÔi thổng bĂo "Dữợi nhiằt ở õng bông" Biản soÔn: PhÔm V«n Sü (PTIT) Tin håc cì sð ver.18a 21 / 21 Notes