Tin học đại cương - NNLT mở đầu

pdf 22 trang vanle 3430
Bạn đang xem 20 trang mẫu của tài liệu "Tin học đại cương - NNLT mở đầu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftin_hoc_dai_cuong_nnlt_mo_dau.pdf

Nội dung text: Tin học đại cương - NNLT mở đầu

  1. NMLTNMLT MMӢӢ ĈĈҪҪUU Trҫn Phѭӟc Tuҩn tranphuoctuan.khoatoan.dhsp@gmail.com ĈĈӅӅ FѭѫFѭѫngng bbààii gigiҧҧngng „ Mөc tiêu môn hӑc: Cung cҩp cho sinh viên các kӻ Qăng cѫ bҧn ÿӇ lұp trình giҧi quyӃt các vҩn ÿӅ, bài toán. Các chѭѫng trình ÿѭӧc thӇ hiӋn bҵng NNLT C. Riêng vӅ ngôn ngӳ lұp trình C, các sinh viên ÿѭӧc cung cҩp các kӻ Qăng: Ĉ͕c và vi͇t ÿ˱ͫc ch˱˯ng trình ÿ˯n gi̫n Hi͋u c̭u trúc ngôn ngͷ S͵ dͭng thành th̩o các th˱ vi͏n chu̱n Nh̵n bi͇t và s͵a chͷa các l͟i th˱ͥng g̿p khi l̵p trình „ Các môn hӑc tiên quyӃt: không. „ Nӝi dung bài giҧng: NHҰP MÔN LҰP TRÌNH 12/23/2009 2
  2. NNӝӝii dungdung mônmôn hhӑӑcc „ Tәng quan „ Các kiӇu dӳ liӋu cѫ bҧn „ LӋnh nhұp, xuҩt dӳ liӋu „ Các cҩu trúc ÿiӅu khiӇn „ Hàm „ Struct „ Mҧng „ Con trӓ „ Chuӛi ký tӵ NHҰP MÔN LҰP TRÌNH 12/23/2009 3 TTәәngng quanquan „ Khái niӋm chѭѫng trình – lұp trình „ Cҩu trúc mӝt chѭѫng trình ÿѫn giҧn „ Khái niӋm Thuұt toán – biӇu diӉn thuұt toán „ Khái niӋm NNLT, Vѫ lѭӧc lӏch sӱ phát triӇn NNLT „ Ngôn ngӳ lұp trình C NHҰP MÔN LҰP TRÌNH 12/23/2009 4
  3. CCáácc ththàànhnh phphҫҫnn ccӫӫaa chchѭѫѭѫngng trtrììnhnh CC VVíí ddөө chchѭѫѭѫngng trtrììnhnh CC Ghi chú Thѭ viӋn nhұp xuҩt chuҭn /*VIDU.CPP*//*VIDU.CPP*/ #include#include intint main() main() {{ printf(“Nhapprintf(“Nhap monmon laplap trinh\n");trinh\n"); Hàm main printf(“Viprintf(“Vi dudu dondon gian\n");gian\n"); returnreturn 0;0; }} NhapNhap monmon laplap trinhtrinh ViVi dudu dondon giangian Báo CT kӃt thúc cho HĈH NHҰP MÔN LҰP TRÌNH 12/23/2009 6
  4. MMӝӝtt ssӕӕ OѭOѭuu ýý ttӯӯ vvíí ddөө „ Phҫn ghi chú ÿѭӧc trình biên dӏch bӓ qua „ Phân biӋt chӳ in hoa và chӳ in thѭӡng „ Câu lӋnh luôn ÿѭӧc kӃt thúc bҵng dҩu ; „ Chuӛi ký tӵ phҧi ghi giӳa cһp nháy kép “ „ In xuӕng dòng dùng ký tӵ \n „ Chѭѫng trình nên thông báo kӃt quҧ thӵc hiӋn vӟi hӋ thӕng: Tӕt – 0, có lӛi – 1, 2, 3 „ Chѭѫng trình có mӝt hàm main NHҰP MÔN LҰP TRÌNH 12/23/2009 7 VVíí ddөө 22 Khai báo 2 biӃn sӕ #include nguyên, “a” và “b” #include intint main(void) main(void) {{ intint a,a, b;b; Nhұp 2 sӕ nguyên vào a và b printf(“Nhapprintf(“Nhap 22 soso ngguyen:ngguyen: "); "); scanf("%iscanf("%i %i",%i", &a,&a, &b);&b); printf("%iprintf("%i %i %i == %i\n",%i\n", a,a, b,b, aa b); b); ViӃt các biӇu thӭc “a”, returnreturn 0;0; “b” và “a-b” theo ÿӏnh }} Gҥng %i NhapNhap 22 soso nguyen:nguyen: 2121 1717 2121 17 17 == 44 NHҰP MÔN LҰP TRÌNH 12/23/2009 8
  5. BiBiӃӃnn –– VariableVariable inta, b; „ Chӭa dӳ liӋu có thӇ thay ÿәi ÿѭӧc trong chѭѫng trình. „ Muӕn sӱ dөng phҧi khai báo. „ Tên: gӗm chӳ cái, ký sӕ, dҩu nӕi (_), không ÿѭӧc bҳt ÿҫu bҵng ký sӕ. „ BiӃn khai báo trong khӕi ÿѭӧc gӑi là biӃn cөc bӝ, không thuӝc khӕi nào ÿѭӧc gӑi là biӃn toàn cөc „ Có tác dөng trong toàn khӕi kӇ tӯ lúc ÿѭӧc khai báo. NHҰP MÔN LҰP TRÌNH 12/23/2009 9 LLӋӋnhnh xuxuҩҩtt printfprintf Xuҩt dӳ liӋu ra màn hình: printf("%i - %i = %i\n", a, b, a -b); Các ký tӵ hҵng ÿѭӧc in nguyên văn Các ký tӵ ÿӏnh dҥng ÿѭӧc thay bҵng giá trӏ cӫa biӇu thӭc tѭѫng ӭng: %i: ký tӵ ÿӏnh dҥng sӕ nguyên kiӇu int Các ký tӵ ÿiӅu khiӇn: \n – xuӕng dòng; \t – dҩu tab; \\ – dҩu \; \“– dҩu “ Thѭ viӋn: stdio.h NHҰP MÔN LҰP TRÌNH 12/23/2009 10
  6. LLӋӋnhnh nhnhұұpp scanfscanf Nhұp dӳ liӋu tӯ bàn phím scanf("%i %i", &a, &b); Trong chuӛi ÿӏnh dҥng chӍ có ký tӵ ÿӏnh dҥng và khoҧng trҳng. Dӳ liӋu phҧi ÿѭӧc nhұp vào các biӃn. Trѭӟc tên biӃn phҧi ghi dҩu & - toán tӱ ÿӏa chӍ. NӃu không có toán tӱ ÿӏa chӍ, giá trӏ cӫa biӃn sӁ không ÿѭӧc cұp nhұt Thѭ viӋn: stdio.h NHҰP MÔN LҰP TRÌNH 12/23/2009 11 KiKiӇӇuu ddӳӳ liliӋӋuu ccѫѫ ssӣӣ trongtrong CC
  7. CCáácc kikiӇӇuu ssӕӕ nguyênnguyên ccӫӫaa CC „ C hӛ trӧ khá nhiӅu kiӇu sӕ nguyên „ Các giá trӏ lӟn nhҩt và nhӓ nhҩt ÿѭӧc ÿӏnh nghƭa trong thѭ viӋn “limits.h” KiӇu ÿӏnh dҥng kích thѭӟc nhӓ nhҩt lӟn nhҩt char %c 1 CHAR_MIN CHAR_MAX unsigned char %c 1 0 UCHAR_MAX short [int] %hi 2 SHRT_MIN SHRT_MAX unsigned short%hu 2 0 USHRT_MAX int %i 2 or 4 INT_MIN INT_MAX unsigned int %u 2 or 4 0 UINT_MAX long [int] %li 4 LONG_MIN LONG_MAX unsigned long %lu 4 0 ULONG_MAX NHҰP MÔN LҰP TRÌNH 12/23/2009 13 VVíí ddөө vvӅӅ ssӕӕ nguyênnguyên #include#include #include#include intint main() main() {{ unsignedunsigned longlong bigbig == ULONG_MAX;ULONG_MAX; printf("minimumprintf("minimum int int = = %i,%i, ",", INT_MIN);INT_MIN); printf("maximumprintf("maximum int int = = %i\n",%i\n", INT_MAX);INT_MAX); printf("maximumprintf("maximum unsignedunsigned == %u\n",%u\n", UINT_MAX);UINT_MAX); printf("maximumprintf("maximum longlong int int = = %li\n",%li\n", LONG_MAX);LONG_MAX); printf("maximumprintf("maximum unsignedunsigned longlong == %lu\n",%lu\n", big);big); returnreturn 0;0; minimum int = -32768, maximum int = 32767 }} minimum int = -32768, maximum int = 32767 maximummaximum unsignedunsigned == 6553565535 maximummaximum longlong int int = = 21474836472147483647 maximummaximum unsignedunsigned longlong == 42949672954294967295 NHҰP MÔN LҰP TRÌNH 12/23/2009 14
  8. VVíí ddөө kikiӇӇuu kýký ttӵӵ In ra mã ASCII cӫa ký tӵ #include#include #include#include Trong NNLT C, ký tӵ intint main() main() Trong NNLT C, ký tӵ {{ chính là sӕ nguyên charchar lower_a lower_a == 'a';'a'; charchar lower_m lower_m == 'm';'m'; printf("minimumprintf("minimum charchar == %i,%i, ",", CHAR_MIN);CHAR_MIN); printf("maximumprintf("maximum charchar == %i\n",%i\n", CHAR_MAX);CHAR_MAX); printf(“Sauprintf(“Sau '%c' '%c' lala '%c'\n", '%c'\n", lower_a,lower_a, lower_alower_a ++ 1);1); printf(“Kyprintf(“Ky tutu inin hoahoa '%c'\n", '%c'\n", lower_mlower_m 'a' 'a' ++ 'A');'A'); return 0; return 0; minimum char = -128, maximum char = 127 }} minimum char = -128, maximum char = 127 SauSau 'a' 'a' lala 'b' 'b' KyKy tutu inin hoahoa 'M' 'M' NHҰP MÔN LҰP TRÌNH 12/23/2009 15 SSӕӕ nguyênnguyên trongtrong ccáácc ccѫѫ ssӕӕ khkháácc „ Các hӋ Fѫ sӕ có thӇ thӵc hiӋn ÿѭӧc: Fѫ sӕ 8 (octal), Fѫ sӕ 10 (decimal), Fѫ sӕ 16 (hexadecimal) 0x: sӕ 6ӕ 0: sӕ octal hexadecimal #include#include intint main(void) main(void) {{ intint decdec = = 20,20, oct oct = = 020,020, hexhex == 0x20;0x20; printf("dec=%d,printf("dec=%d, oct=%d, oct=%d, hex=%d\n",hex=%d\n", dec, dec, oct, oct, hex);hex); printf("dec=%d,printf("dec=%d, oct=%o, oct=%o, hex=%x\n",hex=%x\n", dec, dec, oct, oct, hex);hex); return 0; return 0; dec=20,dec=20, oct=16, oct=16, hex=32hex=32 } } dec=20,dec=20, oct=20, oct=20, hex=20hex=20 NHҰP MÔN LҰP TRÌNH 12/23/2009 16
  9. SSӕӕ ththӵӵcc „ C hӛ trӧ nhiӅu kiӇu sӕ thӵc lѭu trӳ dҩu chҩm ÿӝng. „ Các giá trӏ lӟn nhҩt và nhӓ nhҩt ÿѭӧc ÿӏnh nghƭa trong thѭ viӋn “float.h” KiӇu ÿӏnh dҥng kích thѭӟc nhӓ nhҩt Oӟn nhҩt float %f %e %g 4 FLT_MIN FLT_MAX double %lf %le %lg 8 DBL_MIN DBL_MAX long double %Lf %Le %Lg 10 LDBL_MIN LDBL_MAX NHҰP MÔN LҰP TRÌNH 12/23/2009 17 VVíí ddөө ssӕӕ ththӵӵc:c: #include#include #include#include intint main(void) main(void) {{ doubledouble ff == 3.1416,3.1416, gg == 1.2e-5,1.2e-5, hh == 5000000000.0;5000000000.0; printf("f=%lf\tg=%lf\th=%lf\n",printf("f=%lf\tg=%lf\th=%lf\n", f,f, g,g, h);h); printf("f=%le\tg=%le\th=%le\n",printf("f=%le\tg=%le\th=%le\n", f,f, g,g, h);h); printf("f=%lg\tg=%lg\th=%lg\n",printf("f=%lg\tg=%lg\th=%lg\n", f,f, g,g, h);h); printf("f=%7.2lf\tg=%.2le\th=%.4lg\n",printf("f=%7.2lf\tg=%.2le\th=%.4lg\n", f,f, g,g, h);h); returnreturn 0;0; } } f=3.141600f=3.141600 g=0.000012g=0.000012 h=5000000000.000000h=5000000000.000000 f=3.141600e+00f=3.141600e+00 g=1.200000e-05g=1.200000e-05 h=5.000000e+09h=5.000000e+09 f=3.1416f=3.1416 g=1.2e-05g=1.2e-05 h=5e+09h=5e+09 f=f= 3.143.14 g=1.20e-05g=1.20e-05 h=5e+09h=5e+09 NHҰP MÔN LҰP TRÌNH 12/23/2009 18
  10. HHҵҵngng –– ConstantConstant const int days_in_week = 7; Chӭa dӳ liӋu không thӇ thay ÿәi ÿѭӧc trong chѭѫng trình. „ Muӕn sӱ dөng phҧi khai báo. „ Phҧi có kiӇu (Wѭѫng tӵ nhѭ biӃn) „ Hҵng sӕ có chӭa “.” hoһc “e” có kiӇu double (3.5, 1e-7, -1.29e15) „ Hҵng sӕ kiӇu float kӃt thúc bӣi “F” (3.5F, 1e-7F) „ Hҵng sӕ kiӇu long double kӃt thúc bӣi “L” (-1.29e15L, 1e-7L) „ Hҵng sӕ không có “.”, “e” hoһc “F” có kiӇu int. Ví dө: 10000, -35. (Mӝt vài trình biên dӏch tӵ ÿӝng chuyӇn thành long int nӃu giá trӏ hҵng tràn kiӇu int) „ Khai báo hҵng long int phҧi thêm vào cuӕi “L” (9000000L) NHҰP MÔN LҰP TRÌNH 12/23/2009 19 VVíí ddөө vvӅӅ hhҵҵngng Các hҵng pi, days_in_week, sunday ÿѭӧc tҥo vӟi tӯ khóa const #include#include intint main(void) main(void) {{ constconst longlong doubledouble pipi == 3.141592653590L;3.141592653590L; constconst int int days_in_week days_in_week == 7;7; Lӛi constconst sunday sunday = = 0;0; days_in_weekdays_in_week == 5;5; returnreturn 0;0; }} NHҰP MÔN LҰP TRÌNH 12/23/2009 20
  11. HHҵҵngng xxӱӱ lýlý trtrѭѭӟӟcc biênbiên ddӏӏchch „ Các hҵng có thӇ ÿѭӧc xác lұp trѭӟc khi biên dӏch Bҧn chҩt là tìm kiӃm và thay thӃ Thѭӡng ÿѭӧc ÿһt tên vӟi các chӳ cái in hoa Tìm tӯ “PI”, thay bҵng 3.1415 #include#include #define#definePI PI 3.141592653590L3.141592653590L #define#defineDAYS_IN_WEEK DAYS_IN_WEEK 77 /ѭu ý: không có “=” và “;” #define#defineSUNDAY SUNDAY 00 intint day day == SUNDAY;SUNDAY; longlong flag flag == USE_API;USE_API; Không thay thӃ “PI” NHҰP MÔN LҰP TRÌNH 12/23/2009 21 ToToáánn ttӱӱ trongtrong CC
  12. ToToáánn ttӱӱ trongtrong CC „ Phép toán sӕ hӑc „ Ép kiӇu „ Các toán tӱ trên bit „ Các toán tӱ so sánh „ Phép gán „ Toán tӱ sizeof „ BiӇu thӭc ÿiӅu kiӋn NHҰP MÔN LҰP TRÌNH 12/23/2009 23 ToToáánn ttӱӱ ssӕӕ hhӑӑcc „ NNLT C hӛ trӧ các phép toán sӕ hӑc: + cӝng - trӯ * nhân / chia % chia lҩy dѭ /˱u ý: “/” cho k͇t qu̫ phͭ thu͡c vào ki͋u cͯa các toán h̩ng “%” không th͹c hi͏n ÿ˱ͫc vͣi các s͙ th͹c NHҰP MÔN LҰP TRÌNH 12/23/2009 24
  13. VVíí ddөө vvӅӅ totoáánn ttӱӱ chiachia ““//”” „ Trình biên dӏch dӵa vào kiӇu cӫa các toán hҥng ÿӇ quyӃt ÿӏnh phép chia tѭѫng ӭng “i”, “j” kiӇu int, “/” là intint main(void)main(void) phép chia lҩy nguyên {{ Æ k nhұn giá trӏ 1 intint ii == 5,5, jj == 4,4, k;k; doubledouble f f == 5.0,5.0, gg == 4.0,4.0, h;h; “f”, “g” kiӇu double, “/” là phép chia sӕ thӵc kk == ii // j;j; Æ h nhұn giá trӏ 1.25 hh == ff // g;g; hh == ii // j;j; Phép chia nguyên, bҩt NӇ “h” có kiӇu double. returnreturn 0;0; .Ӄt quҧ là 1.00000 }} NHҰP MÔN LҰP TRÌNH 12/23/2009 25 ÉÉpp kikiӇӇuu „ Ép kiӇu làm thay ÿәi t̩m thͥi kiӇu cӫa mӝt biӃn trong mӝt biӇu thӭc. intint main(void) main(void) {{ intint i i == 5,5, jj == 4;4; doubledouble f; f; Phép chia sӕ nguyên ff == (double)i(double)i // j;j; ÿѭӧc thӵc hiӋn, kӃt ff == ii // (double)j;(double)j; quҧ, 1, ÿѭӧc ÿәi sang ff == (double)i(double)i // (double)j;(double)j; kiӇu double, 1.00000 ff == (double)(i(double)(i // j);j); returnreturn 0;0; }} NHҰP MÔN LҰP TRÌNH 12/23/2009 26
  14. PhPhéépp ttăăngng (gi(giҧҧm)m) 11 „ NNLT C có 2 toán tӱ ÿһc biӋt hӛ trӧ viӋc tăng (giҧm) giá trӏ cӫa mӝt biӃn thay ÿәi 1 ÿѫn vӏ ++ Wăng 1 giҧm 1 „ Các toán tӱ này có thӇ ÿһt ӣ trѭӟc hoһc sau biӃn. intint i i == 5,5, jj == 4;4; “i” Å 6 “j” Å 3 ii ++;++; j; j; “i” Å 7 ++++ i;i; NHҰP MÔN LҰP TRÌNH 12/23/2009 27 TrTrѭѭӟӟcc hayhay sausau ?? Thӭ tӵ thӵc hiӋn các toán tӱ ++ và phө thuӝc vào vӏ trí cӫa chúng (tUѭӟc hay sau) so vӟi biӃn: #include#include 7ѭѫng ÿѭѫng: 1. j++; intint main(void) main(void) 2. i = j; {{ intint i,i, jj == 5;5; i = ++j; i = ++j; 7ѭѫng ÿѭѫng: printf("i=%d,printf("i=%d, j=%d\n",j=%d\n", i,i, j);j); j = 5; 1. i = j; j = 5; 2. j++; ii == j++;j++; printf("i=%d,printf("i=%d, j=%d\n",j=%d\n", i,i, j);j); i=6, j=6 returnreturn 0;0; i=6, j=6 }} i=5,i=5, j=6j=6 NHҰP MÔN LҰP TRÌNH 12/23/2009 28
  15. KiKiӇӇuu luluұұnn lýlý trongtrong CC „ Trong C không có kiӇu dӳ liӋu luұn lý (thӇ hiӋn các giá trӏ ĈÚNG – SAI), thay vào ÿó các biӇu thӭc so sánh sӁ cho kӃt quҧ là SӔ „ Giá trӏ 0 (0.0) ӭng vӟi kӃt quҧ SAI (FALSE) „ Các giá trӏ khác nhѭ 1, -3.5, -7, 10.4, (khác không) ÿӅu ÿѭӧc xem là ĈÚNG (TRUE) NHҰP MÔN LҰP TRÌNH 12/23/2009 29 CCáácc totoáánn ttӱӱ soso ssáánhnh „ NNLT C hӛ trӧ các phép so sánh: lӟn hѫn >= lӟn hѫn hay bҵng == bҵng != không bҵng „ Tҩt cҧ ÿӅu cho kӃt quҧ 1 khi so sánh ÿúng và 0 trong trѭӡng hӧp ngѭӧc lҥi. NHҰP MÔN LҰP TRÌNH 12/23/2009 30
  16. ToToáánn ttӱӱ luluұұnn lýlý „ NNLT C hӛ trӧ các toán tӱ luұn lý: && và (and) || hoһc (or) ! phӫ ÿӏnh (not) „ Tҩt cҧ ÿӅu cho kӃt quҧ 1 hoһc 0 Wѭѫng ӭng các trѭӡng hӧp ĈÚNG hoһc SAI intint i, i, jj == 10,10, kk == 28;28; ii == ((j((j >> 5)5) &&&& (k(k > 24);24); NHҰP MÔN LҰP TRÌNH 12/23/2009 31 ToToáánn ttӱӱ luluұұnn lýlý „ /ѭu ý khi sӱ dөng các toán tӱ luұn lý: N͇u không có các ḓu (), các phép toán ÿ˱ͫc th͹c hi͏n tͳ trái sang ph̫i if(iif((iif(iif((i > 0) 0)>> 0))0)) printf("%i\n",printf("%i\n", a[i]);a[i]); Nên viӃt “i 0” sӁ không ÿѭӧc tính KhôngKhông nên:nên:(a(a << bb << c)c) Nên:Nên:((a((a << b)b) &&&& (b<(b< c)c) NHҰP MÔN LҰP TRÌNH 12/23/2009 32
  17. ToToáánn ttӱӱ trêntrên bitbit „ Các toán tӱ trên bit chӍ có tác dөng trên các kiӇu sӕ nguyên: & And | Or ^ XOr >> Ĉҭy phҧi 0x6eb90x6eb9 01100110 11101110 10111011 10011001 0x5d270x5d27 01010101 11011101 00100010 01110111 intint main(void) main(void) 0x4c210x4c21 01000100 11001100 00100010 00010001 {{ shortshort aa == 0x6eb9;0x6eb9; 0x6eb90x6eb9 01100110 11101110 10111011 10011001 shortshort bb == 0x5d27;0x5d27; 0x5d270x5d27 01010101 11011101 00100010 01110111 unsignedunsigned shortshort cc == 7097;7097; 0x7fbf0x7fbf 01110111 11111111 10111011 11111111 0x6eb9 0110 1110 1011 1001 printf("0x%x,printf("0x%x, ",", aa && b);b); 0x6eb9 0110 1110 1011 1001 0x5d27 0101 1101 0010 0111 printf("0x%x,printf("0x%x, ",", aa || b);b); 0x5d27 0101 1101 0010 0111 0x339e 0011 0011 1001 1110 printf("0x%x\n",printf("0x%x\n", aa ^^ b);b); 0x339e 0011 0011 1001 1110 printf("%u,printf("%u, ",", cc >>> 1);1); 2838828388 01100110 11101110 11101110 01000100 returnreturn 0;0; 70977097 00010001 10111011 10111011 10011001 }} 0x4c21,0x4c21, 0x7fbf,0x7fbf, 0x339e0x339e 35483548 00000000 11011101 11011101 11001100 28388,28388, 35483548 NHҰP MÔN LҰP TRÌNH 12/23/2009 34
  18. PhPhéépp ggáánn „ Có thӇ sӱ dөng liên tiӃp nhiӅu phép gán „ Giá trӏ ÿѭӧc gán sӁ sҹn sàng cho lӋnh kӃ tiӃp “n = 22” gán trѭӟc, lҥi gán “n” cho “m”, “m” intint i,i, j,j, k,k, l,l, m,m, n;n; cho “l”, Æ i, j, k, l, m, n ÿӅu nhұn giá trӏ 22. ii == jj == kk == ll == mm == nn == 22;22; printf("%i\n",printf("%i\n", jj == 93);93); “j” ÿѭӧc gán 93, giá trӏ 93 sӁ ÿѭӧc in ra màn hình NHҰP MÔN LҰP TRÌNH 12/23/2009 35 Phéép gánn /˱u ý: „ VӃ trái phép gán luôn phҧi là biӃn „ Không ÿѭӧc nhҫm lүn giӳa so sánh bҵng “==” và gán “=” #include#include intint main(void) main(void) i khac khong {{ i khac khong intint i i == 0;0; if(iif(i == 0)0) printf("iprintf("i nhannhan giagia tritri khong\n");khong\n"); elseelse printf(“iprintf(“i khackhac khong\n");khong\n"); returnreturn 0;0; } NHҰP MÔN LҰP TRÌNH} 12/23/2009 36
  19. MMӝӝtt ssӕӕ phphéépp ggáánn ÿÿһһcc bibiӋӋtt „ Các phép gán kӃt hӧp toán tӱ khác: += -= *= /= %= &= |= ^= >= „ Tәng quát: biӁn op= biӅu thӫc Wѭѫng ÿѭѫng: biӁn = biӁn op (biӅu thӫc) aa +=+= 27;27; ff /=/= 9.2;9.2; ii *=*= jj ++ 2;2; aa == aa ++ 27;27; ff == ff // 9.2;9.2; ii == ii (j(j ++ 2);2); NHҰP MÔN LҰP TRÌNH 12/23/2009 37 Toáánn ttӱӱ sizeof sizeof(Obj) „ Cho biӃt kích thѭӟc cӫa ÿӕi tѭӧng theo ÿѫn vӏ byte #include#include intint main(void) main(void) {{ longlong big;big; printf("\"big\"printf("\"big\" isis %u%u bytes\n",bytes\n", sizeof(big)); sizeof(big)); printf("aprintf("a shortshort isis %u%u bytes\n",bytes\n", sizeof(short)); sizeof(short)); printf("aprintf("a doubledouble isis %u%u bytes\n",bytes\n", sizeof sizeof (double)); (double)); return 0; "big""big" isis 44 bytesbytes return 0; a short is 2 bytes }} a short is 2 bytes aa doubledouble isis 88 bytesbytes NHҰP MÔN LҰP TRÌNH 12/23/2009 38
  20. BiBiӇӇuu ththӭӭcc chchӑӑnn theotheo ÿÿiiӅӅuu kikiӋӋnn (ÿiӃu kiӉn) ? BT1 : BT2 „ BiӇu thӭc nhұn giá trӏ BT1 nӃu ÿiӅu kiӋn khác 0 (ĈÚNG), các trѭӡng hӧp khác nhұn giá trӏ BT2 intint i, i, jj == 100,100, kk == -1;-1; intint i, i, jj == 100,100, kk == -1;-1; ii == (j(j >> k)k) ?? jj :: k;k; ii == (j(j > k)k) 1Ӂu (j y) ? x : y) NHҰP MÔN LҰP TRÌNH 12/23/2009 39 Ĉӝ ѭѭuu tiêntiên ccӫӫa toáán tӱ „ Thӭ tӵ thӵc hiӋn các toán tӱ trong mӝt biӇu thӭc phө thuӝc vào ÿ͡ ˱u tiên cӫa chúng. „ Có 15 mӭc ѭu tiên. „ Thông thѭӡng, toán tӱ mӝt ngôi có ÿӝ ѭu tiên cao hѫn toán tӱ hai ngôi. „ Các cһp dҩu ngoһc ÿѫn () tKѭӡng ÿѭӧc dùng ÿӇ chӍ rõ thӭ tӵ các toán tӱ. #include#include intint main(void) main(void) {{ intint jj == 33 44 ++ 4848 // 7;7; printf("jprintf("j == %i\n",%i\n", j);j); returnreturn 0;0; jj == 1818 }} NHҰP MÔN LҰP TRÌNH 12/23/2009 40
  21. Bҧngng ththӭ ttӵ ththӵӵc hiӋn cáác toáánn ttӱ Toán tӱ Thӭ Wӵ (nӃu cùng ĈѬT) () [] -> . Æ ! ++ - + (cast) * & sizeof Å * / % Æ + - Æ > Æ = > Æ == != Æ & Æ | Æ ^ Æ && Æ || Æ ?: Å = += -= *= /= %= Å NHҰP MÔN LҰP TRÌNH 12/23/2009 41 LuyӋn tұpp #include#include intint main(void) main(void) {{ intint i i == 0,0, j,j, kk == 7,7, mm == 5,5, n;n; jj = = mm +=+= 2;2; printf("jprintf("j == %d\n",%d\n", j);j); jj == k++k++ >> 7;7; printf("jprintf("j == %d\n",%d\n", j);j); jj == ii === 00 && k;k; printf("jprintf("j == %d\n",%d\n", j);j); nn == !i!i >> kk >>>> 2;2; printf("nprintf("n == %d\n",%d\n", n);n); returnreturn 0;0; }} NHҰP MÔN LҰP TRÌNH 12/23/2009 42
  22. TTóómm llѭѭӧӧcc „ Mӝt sӕ thành phҫn cӫa chѭѫng trình trong C „ Hàm main „ LӋnh xuҩt / nhұp – printf / scanf „ BiӃn „ Các kiӇu sӕ nguyên và sӕ thӵc „ Hҵng – 2 cách khai báo „ Sӱ dөng toán tӱ trong C NHҰP MÔN LҰP TRÌNH 12/23/2009 43