Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
295,3 KB
Nội dung
NMLT M U Tr n Ph c Tu n tranphuoctuan.khoatoan.dhsp@gmail.com http://baigiang.tranphuoctuan.com ng gi ng M c tiêu môn h c: Cung c p cho sinh viên k ng c b n l p trình gi i quy t v n , 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, sinh viên c cung c p k ng: c 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 th vi n chu n Nh n bi t s a ch a l i th ng g p l p trình Các môn h c tiên quy t: không N i dung gi ng: NH P MÔN L P TRÌNH 12/23/2009 N i dung môn h c 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 n Hà m Struct M ng Con tr Chu i ký t NH P MÔN L P TRÌNH 12/23/2009 T ng quan 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, 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 Các thành ph n c a ch ng trình C Ví d ch ng trình C Th Ghi chú vi n nh p xu t chu n /*VIDU.CPP*/ /*VIDU.CPP*/ #include #include Hàm main int int main() main() {{ printf(“Nhap printf(“Nhap mon mon lap lap trinh\n"); trinh\n"); printf(“Vi du don gian\n"); printf(“Vi du don gian\n"); return return 0; 0; }} Nhap Nhap mon mon lap lap trinh trinh Vi du don gian Vi du don gian Báo CT k t thúc cho H H NH P MÔN L P TRÌNH 12/23/2009 M ts Ph n ghi u ý t ví d c trình biên d ch b qua Phân bi t ch in hoa ch in th ng Câu l nh 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ì trình nên thông bá báo k t qu th c hi n v i h th ng: T t – 0, có l i – 1, 2, … Ch ng trình có m t hàm main NH P MÔN L P TRÌNH 12/23/2009 Ví d Khai báo bi n s nguyên, “a” “b” #include #include int int main(void) main(void) {{ int int a, a, b; b; Nh p s nguyên vào a b printf(“Nhap printf(“Nhap 22 so so ngguyen: ngguyen: "); "); scanf("%i %i", &a, &b); scanf("%i %i", &a, &b); printf("%i printf("%i %i %i == %i\n", %i\n", a, a, b, b, aa b); b); Vi t bi u th c “a”, “b” “a-b” theo nh }} ng %i NH P MÔN L P TRÌNH return return 0; 0; Nhap Nhap 22 so so nguyen: nguyen: 21 21 17 17 21 21 17 17 == 44 12/23/2009 Bi n – Variable int a, b; Ch a d li u có th thay i c 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 u b ng ký s cb t Bi n khai báo kh i c g i bi n c c b , không thu c kh i c g i bi n toàn c c Có tác d ng toàn kh i k t lúc NH P MÔN L P TRÌNH c khai báo 12/23/2009 L nh xu t - printf Xu t d li u 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 th c t ng ng: %i: ký t c thay b ng giá tr c a bi u nh d ng s nguyên ki u int Các ký t i u 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 L nh nh p - scanf 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 kho ng tr ng D li u ph i nh d ng c nh p vào bi n Tr c tên bi n ph i ghi d u & - toán t a ch N u 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 Ki u d li u c s C 11 Các ki u s nguyên c a C C h tr nhi u ki u s nguyên Các giá tr l n nh t nh nh t vi n “limits.h” c nh ngh a th Ki u nh d ng kích th c nh nh t l n nh t char %c CHAR_MIN CHAR_MAX unsigned char %c UCHAR_MAX short [int] %hi SHRT_MIN SHRT_MAX unsigned short%hu USHRT_MAX int %i or INT_MIN INT_MAX unsigned int %u or UINT_MAX long [int] %li LONG_MIN LONG_MAX unsigned long %lu ULONG_MAX NH P MÔN L P TRÌNH 12/23/2009 13 Ví d v s nguyên #include #include #include #include int int main() main() {{ unsigned unsigned long long big big == ULONG_MAX; ULONG_MAX; printf("minimum printf("minimum int int == %i, %i, ", ", INT_MIN); INT_MIN); printf("maximum int = %i\n", INT_MAX); printf("maximum int = %i\n", INT_MAX); printf("maximum printf("maximum unsigned unsigned == %u\n", %u\n", UINT_MAX); UINT_MAX); printf("maximum long int = %li\n", printf("maximum long int = %li\n", LONG_MAX); LONG_MAX); printf("maximum printf("maximum unsigned unsigned long long == %lu\n", %lu\n", big); big); return return 0; 0; }} NH P MÔN L P TRÌNH minimum minimum int int == -32768, -32768, maximum maximum int int == 32767 32767 maximum unsigned = 65535 maximum unsigned = 65535 maximum maximum long long int int == 2147483647 2147483647 maximum maximum unsigned unsigned long long == 4294967295 4294967295 12/23/2009 14 Ví d ki u ký t In mã ASCII c a ký t #include #include #include #include int int main() main() {{ char char lower_a lower_a == 'a'; 'a'; char lower_m = 'm'; char lower_m = 'm'; Trong NNLT C, ký t s nguyên printf("minimum printf("minimum char char == %i, %i, ", ", CHAR_MIN); CHAR_MIN); printf("maximum char = %i\n", CHAR_MAX); printf("maximum char = %i\n", CHAR_MAX); printf(“Sau printf(“Sau '%c' '%c' la la '%c'\n", '%c'\n", lower_a, lower_a, lower_a lower_a ++ 1); 1); printf(“Ky tu in hoa '%c'\n", lower_m 'a' + 'A'); printf(“Ky tu in hoa '%c'\n", lower_m - 'a' + 'A'); return return 0; 0; }} minimum minimum char char == -128, -128, maximum maximum char char == 127 127 Sau 'a' la 'b' Sau 'a' la 'b' Ky Ky tu tu in in hoa hoa 'M' 'M' NH P MÔN L P TRÌNH 15 12/23/2009 S nguyên c s khác Các h s có th th c hi n c: 10 (decimal), s 16 (hexadecimal) s (octal), 0: s octal s 0x: s hexadecimal #include #include int int main(void) main(void) {{ int int dec dec == 20, 20, oct oct == 020, 020, hex hex == 0x20; 0x20; printf("dec=%d, printf("dec=%d, oct=%d, oct=%d, printf("dec=%d, oct=%o, printf("dec=%d, oct=%o, return return 0; 0; }} NH P MÔN L P TRÌNH hex=%d\n", hex=%d\n", dec, dec, oct, oct, hex=%x\n", dec, oct, hex=%x\n", dec, oct, dec=20, dec=20, oct=16, oct=16, dec=20, oct=20, dec=20, oct=20, 12/23/2009 hex); hex); hex); hex); hex=32 hex=32 hex=20 hex=20 16 S th c 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 nh nh t c nh ngh a th vi n “float.h” Ki u nh d ng kích th float %f %e %g double %lf %le %lg long double %Lf %Le %Lg 10 NH P MÔN L P TRÌNH c nh nh t n nh t FLT_MIN FLT_MAX DBL_MIN DBL_MAX LDBL_MIN LDBL_MAX 17 12/23/2009 Ví d s th c: #include #include #include #include int int main(void) main(void) {{ double double 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", f, g, h); printf("f=%le\tg=%le\th=%le\n", f, g, 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); return return 0; 0; }} f=3.141600 f=3.141600 f=3.141600e+00 f=3.141600e+00 f=3.1416 f=3.1416 f= 3.14 f= 3.14 NH P MÔN L P TRÌNH g=0.000012 g=0.000012 g=1.200000e-05 g=1.200000e-05 g=1.2e-05 g=1.2e-05 g=1.20e-05 g=1.20e-05 12/23/2009 h=5000000000.000000 h=5000000000.000000 h=5.000000e+09 h=5.000000e+09 h=5e+09 h=5e+09 h=5e+09 h=5e+09 18 H ng – Constant const int days_in_week = 7; Ch a d li u không th thay i c ch ng trình Mu n s d ng ph i khai bá báo Ph i có ki u ( ng t nh bi n) H ng s có ch a “.” ho c “e” có ki u double (3.5, 1e1e-7, -1.29e15) H ng s ki u float k t thú thúc b i “F” (3.5F, 1e1e-7F) H ng s ki u long double double k t thú thúc b i “L” (-1.29e15L, 1e1e-7L) H ng s có “.”, “e” ho c “F” có ki u int Ví d : 10000, -35 (M t ng chuy n vài trì trình biên d ch t thành long int n u giá giá tr h ng tràn ki u int) Khai bá 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 Ví d v h ng Các h ng pi, days_in_week, sunday c t o v i t khóa const #include #include L i int intmain(void) main(void) {{ const const long long double double pi pi == 3.141592653590L; 3.141592653590L; const const int int days_in_week days_in_week == 7; 7; const const sunday sunday == 0; 0; days_in_week days_in_week == 5; 5; return return 0; 0; }} NH P MÔN L P TRÌNH 12/23/2009 20 H ng x lý tr c biên d ch Các h ng có th c xác l p tr c biên d ch B n ch t tìm ki m thay th Th ng c t tên v i ch in hoa Tìm t “PI”, thay b ng 3.1415 #include #include #define #definePI PI #define DAYS_IN_WEEK #define DAYS_IN_WEEK #define #defineSUNDAY SUNDAY 3.141592653590L 3.141592653590L 77 00 u ý: “=” “;” int int day day == SUNDAY; SUNDAY; long long flag flag == USE_API; USE_API; Không thay th “PI” NH P MÔN L P TRÌNH 12/23/2009 Toán t C 21 Toán t C Phé Phép toá toán s h c Ép ki u Các toán t bit Các toán t so sánh Phép gán Toá Toán t sizeof Bi u th c i u ki n NH P MÔN L P TRÌNH 12/23/2009 23 Toán t s h c NNLT C h tr 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 toán h ng “%” không th c hi n c v i s th c NH P MÔN L P TRÌNH 12/23/2009 24 Ví d v toán t chia “/” Trình biên d ch d a vào ki u c a toán h ng nh phép chia t ng ng “i”, “j” ki u int, “/” phép chia l y nguyên k nh n giá tr int int main(void) main(void) {{ int ii == 5, int 5, double f = 5.0, double f = 5.0, “f”, “g” ki u double, “/” phép chia s th c h nh n giá tr 1.25 Phép chia nguyên, b t “h” có ki u double t qu 1.00000 kk hh hh == == == ii ff ii // // // jj gg == == quy t 4, 4, 4.0, 4.0, k; k; h; h; j; j; g; g; j; j; return return 0; 0; }} NH P MÔN L P TRÌNH 12/23/2009 25 Ép ki u Ép ki u làm thay bi u th c i t m th i ki u c a m t bi n m t int int main(void) main(void) {{ int int ii == 5, 5, jj == 4; 4; double f; double f; ff ff ff ff Phép chia s nguyên c th c hi n, k t qu , 1, c i sang ki u double, 1.00000 == == == == (double)i (double)i // j; j; ii // (double)j; (double)j; (double)i (double)i // (double)j; (double)j; (double)(i (double)(i // j); j); return return 0; 0; }} NH P MÔN L P TRÌNH 12/23/2009 26 Phép t ng (gi m) NNLT C có c bi t h tr vi c t ng (gi m) giá có toá toán t giá tr c a m t bi n thay i n v ++ ng gi m Các toán t có th “i” “j” t tr “i” NH P MÔN L P TRÌNH Tr c ho c sau bi n int int ii == 5, 5, jj == 4; 4; ii ++; ++; - j; j; ++ ++ i; i; 27 12/23/2009 c hay sau ? Th t th c hi n toán t ++ ph thu c vào v trí c a chúng (t c hay sau) so v i bi n: #include #include int intmain(void) main(void) {{ int i, int i, jj == 5; 5; ii == ++j; ++j; printf("i=%d, printf("i=%d, j=%d\n", j=%d\n", jj == 5; 5; ii == j++; j++; printf("i=%d, printf("i=%d, j=%d\n", j=%d\n", return return 0; 0; }} NH P MÔN L P TRÌNH ng j++; i = j; i, i, j); j); ng i = j; j++; ng: ng: i, i, j); j); i=6, i=6, i=5, i=5, 12/23/2009 j=6 j=6 j=6 j=6 28 Ki u lu n lý C Trong C ki u d li u lu n lý (th hi n giá tr ÚNG – SAI), thay vào ó bi u th c so sánh s cho k t qu S Giá tr (0.0) ng v i k t qu SAI (FALSE) Các giá giá tr khác nh 1, -3.5, -7, 10.4, … (khá (khác không) u c xem ÚNG (TRUE) NH P MÔN L P TRÌNH 12/23/2009 29 Các toán t so sánh NNLT C h tr phé phép so sá sánh: < >= == != bé n bé n hay b ng l nh n l n h n hay b ng b ng không b ng T t c u cho k t qu so sánh úng tr ng h p ng c l i NH P MÔN L P TRÌNH 12/23/2009 30 Toán t lu n lý NNLT C h tr toá toán t lu n lý: && || ! (and) ho c (or) ph nh (not) T tc u cho k t qu ho c ÚNG ho c SAI ng ng tr ng h p int int 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 31 12/23/2009 Toán t lu n lý u ý s d ng cá toá toán t lu n lý: N u có d u (), cá phé phép toá toán trái sang ph i c th c hi n t if((i if(i 10) && a[i] (a[i] >> 0) >> 0)) if((iy) ? x : y) NH P MÔN L P TRÌNH 39 12/23/2009 u tiên c a toán t Th t th c hi n toán t 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 có u tiên cao h n toán t hai Các c p d u ngo c n () t ng c dùng ch rõ th t toán t #include #include int int main(void) main(void) {{ int int jj == 33 ** 44 ++ 48 48 // 7; 7; printf("j printf("j == %i\n", %i\n", j); j); return return 0; 0; NH P MÔN L P TRÌNH }} 12/23/2009 jj == 18 18 40 B ng th t th c hi n toán t Toán t Th () [] -> ! ++ - + (cast) * & sizeof * / % + > < = > == != & | ^ && || ?: = += -= *= /= %= … NH P MÔN L P TRÌNH (n u T) 41 12/23/2009 Luy n t p #include #include int int main(void) main(void) {{ int int ii == 0, 0, j, j, kk == jj == mm += += 2; 2; printf("j printf("j == %d\n", %d\n", jj == k++ > 7; k++ > 7; printf("j printf("j == %d\n", %d\n", jj == ii == & == & k; k; printf("j = %d\n", printf("j = %d\n", nn == !i !i >> kk >> >> 2; 2; printf("n = %d\n", printf("n = %d\n", return return 0; 0; }} NH P MÔN L P TRÌNH 12/23/2009 7, 7, mm == 5, 5, n; n; j); j); j); j); j); j); n); n); 42 Tóm l c M t s thành ph n c a ch ng trình C Hàm main L nh xu t / nh p – printf / scanf Bi n Các ki u s nguyên s th c H ng – cách khai báo S d ng toá toán t C NH P MÔN L P TRÌNH 12/23/2009 43 [...]... MÔN L P TRÌNH 12/23/2009 Toán t trong C 21 Toán t trong C Phé Phép toá 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á Toán t sizeof Bi u th c i u ki n NH P MÔN L P TRÌNH 12/23/2009 23 Toán t s h c 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... printf("n = %d\n", printf("n = %d\n", return return 0; 0; }} NH P MÔN L P TRÌNH 12/23/2009 7, 7, mm == 5, 5, n; n; j); j); j); j); j); j); n); n); 42 Tóm l c 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á toán t trong C NH P MÔN L P TRÌNH 12/23/2009 43 ... tr khá khác nh 1, -3.5, -7, 10.4, … (khá (khác không) u c xem là ÚNG (TRUE) NH P MÔN L P TRÌNH 12/23/2009 29 Các toán t so sánh NNLT C h tr các phé phép so sá sánh: < >= == != bé n bé n hay b ng l nh 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 Toán t lu n lý NNLT C h tr các toá toán t lu n lý: && || ! và... giá tr a bi u th c s là 0 và “a[i] > 0” s không c tính Không Không nên:(a nên:(a ... f=3.141600e+00 f=3.1416 f=3.1416 f= 3.14 f= 3.14 NH P MÔN L P TRÌNH g=0.000012 g=0.000012 g=1.200000e-05 g=1.200000e-05 g=1.2e-05 g=1.2e-05 g=1.20e-05 g=1.20e-05 12/23/2009 h=5000000000.000000 h=5000000000.000000... P MÔN L P TRÌNH }} 12/23/2009 jj == 18 18 40 B ng th t th c hi n toán t Toán t Th () [] -> ! ++ - + (cast) * & sizeof * / % + > < = > == != & | ^ && || ?: = += -= *= /= %= … NH P MÔN... toàn c c Có tác d ng toàn kh i k t lúc NH P MÔN L P TRÌNH c khai báo 12/23/2009 L nh xu t - printf Xu t d li u hình: printf("%i - %i = %i
", a, b, a - b); Các ký t h ng c in nguyên v n Các ký