Bài giảng: Nhập môn lập trình - Trần Phước Tuấn

Chia sẻ: Phan Thanh Sang | Ngày: | Loại File: PDF | Số trang:22

0
164
lượt xem
53
download

Bài giảng: Nhập môn lập trình - Trần Phước Tuấn

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cung cấp cho sinh viên các kỹ nă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 Ngôn ngữ lập trình C. Riêng về ngôn ngữ lập trình C, các sinh viên được cung cấp các kỹ năng: Đọc và viết được chương tình đơn giản.

Chủ đề:
Lưu

Nội dung Text: Bài giảng: Nhập môn lập trình - Trần Phước Tuấn

  1. NMLT M U Tr n Ph c Tu n tranphuoctuan.khoatoan.dhsp@gmail.com http://baigiang.tranphuoctuan.com ng bài gi ng M c tiêu môn h c: Cung c p cho sinh viên các k 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 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. 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 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 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 4
  3. Các thành ph n c a ch ng trình C Ví d ch ng trình C Ghi chú chú Th vi n nh p xu t chu n /*VIDU.CPP*/ /*VIDU.CPP*/ #include #include int main() int main() {{ printf(“Nhap mon lap trinh\n"); printf(“Nhap mon lap trinh\n"); Hàm main printf(“Vi du don gian\n"); printf(“Vi du don gian\n"); return 0; return 0; }} Nhap mon lap trinh Nhap mon lap 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 6
  4. M ts u ý t ví d 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 trì bá 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 Ví d 2 Khai báo 2 bi n s #include #include nguyên, “a” và “b” int main(void) int main(void) {{ int a, b; int a, b; Nh p 2 s nguyên vào a và b printf(“Nhap 2 so ngguyen: "); printf(“Nhap 2 so ngguyen: "); scanf("%i %i", &a, &b); scanf("%i %i", &a, &b); printf("%i - %i = %i\n", a, b, a - b); printf("%i - %i = %i\n", a, b, a - b); Vi t các bi u th c “a”, return 0; return 0; “b” và “a-b” theo nh } } ng %i Nhap 2 so nguyen: 21 17 Nhap 2 so nguyen: 21 17 21 - 17 = 4 21 - 17 = 4 NH P MÔN L P TRÌNH 12/23/2009 8
  5. Bi n – Variable int a, 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 cb 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 L nh xu t - printf 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. 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 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 Ki u d li u c s trong C
  7. Các ki u s nguyên c a C 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 Ví d v s nguyên #include #include #include #include int main() int main() {{ unsigned long unsigned long big = ULONG_MAX; big = ULONG_MAX; printf("minimum int = %i, ", INT_MIN); printf("minimum int = %i, ", INT_MIN); printf("maximum int = %i\n", INT_MAX); printf("maximum int = %i\n", INT_MAX); printf("maximum unsigned = %u\n", UINT_MAX); printf("maximum unsigned = %u\n", UINT_MAX); printf("maximum long int = %li\n", LONG_MAX); printf("maximum long int = %li\n", LONG_MAX); printf("maximum unsigned long = %lu\n", big); printf("maximum unsigned long = %lu\n", big); return 0; return 0; } minimum int = -32768, maximum int = 32767 minimum int = -32768, maximum int = 32767 } maximum unsigned = 65535 maximum unsigned = 65535 maximum long int = 2147483647 maximum long int = 2147483647 maximum unsigned long = 4294967295 maximum unsigned long = 4294967295 NH P MÔN L P TRÌNH 12/23/2009 14
  8. Ví d ki u ký t In ra mã ASCII c a ký t #include #include #include #include int main() int main() Trong NNLT C, ký t {{ chính là s nguyên char lower_a = 'a'; char lower_a = 'a'; char lower_m = 'm'; char lower_m = 'm'; printf("minimum char = %i, ", CHAR_MIN); printf("minimum char = %i, ", CHAR_MIN); printf("maximum char = %i\n", CHAR_MAX); printf("maximum char = %i\n", CHAR_MAX); printf(“Sau '%c' la '%c'\n", lower_a, lower_a + 1); printf(“Sau '%c' la '%c'\n", lower_a, lower_a + 1); printf(“Ky tu in hoa '%c'\n", lower_m - 'a' + 'A'); printf(“Ky tu in hoa '%c'\n", lower_m - 'a' + 'A'); return 0; return 0; } minimum char = -128, maximum char = 127 minimum char = -128, maximum char = 127 } Sau 'a' la 'b' Sau 'a' la 'b' Ky tu in hoa 'M' Ky tu in hoa 'M' NH P MÔN L P TRÌNH 12/23/2009 15 S nguyên trong các c s khác Các h s có th th c hi n c: s 8 (octal), s 10 (decimal), s 16 (hexadecimal) 0x: s 0: s octal hexadecimal #include #include int main(void) int main(void) {{ int int dec = 20, oct = 020, hex = 0x20; dec = 20, oct = 020, hex = 0x20; printf("dec=%d, oct=%d, printf("dec=%d, oct=%d, hex=%d\n", dec, oct, hex=%d\n", dec, oct, hex); hex); printf("dec=%d, oct=%o, printf("dec=%d, oct=%o, hex=%x\n", dec, oct, hex=%x\n", dec, oct, hex); hex); return 0; return 0; dec=20, oct=16, hex=32 dec=20, oct=16, hex=32 }} dec=20, oct=20, hex=20 dec=20, oct=20, hex=20 NH P MÔN L P TRÌNH 12/23/2009 16
  9. 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 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 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 Ví d s th c: #include #include #include #include int main(void) int main(void) {{ double f = 3.1416, g = 1.2e-5, h = 5000000000.0; double f = 3.1416, g = 1.2e-5, h = 5000000000.0; printf("f=%lf\tg=%lf\th=%lf\n", f, g, h); printf("f=%lf\tg=%lf\th=%lf\n", f, g, 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", f, g, h); printf("f=%lg\tg=%lg\th=%lg\n", f, g, h); printf("f=%7.2lf\tg=%.2le\th=%.4lg\n", f, g, h); printf("f=%7.2lf\tg=%.2le\th=%.4lg\n", f, g, h); return 0; return 0; } f=3.141600 } f=3.141600 g=0.000012 h=5000000000.000000 g=0.000012 h=5000000000.000000 f=3.141600e+00 f=3.141600e+00 g=1.200000e-05 g=1.200000e-05 h=5.000000e+09 h=5.000000e+09 f=3.1416 f=3.1416 g=1.2e-05 g=1.2e-05 h=5e+09 h=5e+09 f= f= 3.14 3.14 g=1.20e-05 g=1.20e-05 h=5e+09 h=5e+09 NH P MÔN L P TRÌNH 12/23/2009 18
  10. H ng – Constant 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. bá 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, 1e-7, -1.29e15) 1e- H ng s ki u float k t thúc b i “F” (3.5F, 1e-7F) thú 1e- H ng s ki u long double k t thúc b i “L” (-1.29e15L, 1e-7L) double thú 1e- H ng s không có “.”, “e” ho c “F” có ki u int. Ví d : 10000, -35. có (M t vài trình biên d ch t và trì ng chuy n thành long int n u giá tr thà giá h ng tràn ki u int) Khai báo h ng long int ph i thêm vào cu i “L” (9000000L) bá và 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 int main(void) int main(void) { { const long double pi = 3.141592653590L; const long double pi = 3.141592653590L; const int days_in_week = 7; const int days_in_week = 7; L i const sunday = 0; const sunday = 0; days_in_week = 5; days_in_week = 5; return 0; return 0; } } NH P MÔN L P TRÌNH 12/23/2009 20
  11. H ng x lý tr c biên d ch 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 PI #define PI 3.141592653590L 3.141592653590L #define DAYS_IN_WEEK #define DAYS_IN_WEEK 7 7 u ý: không #define SUNDAY #define SUNDAY 0 0 có “=” và “;” int day = SUNDAY; int day = SUNDAY; long flag = USE_API; long flag = USE_API; Không thay th “PI” NH P MÔN L P TRÌNH 12/23/2009 21 Toán t trong C
  12. Toán t trong C Phép toán s h c Phé toá É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 Toá 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 12/23/2009 24
  13. Ví d v toán t chia “/” 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à int main(void) int main(void) phép chia l y nguyên { { k nh n giá tr 1 int int i = 5, i = 5, jj = = 4, 4, k; k; double f = 5.0, double f = 5.0, g g = = 4.0, 4.0, h; h; “f”, “g” ki u double, “/” là phép chia s th c k k = = i i / / j; j; h nh n giá tr 1.25 h h = = f f / / g; g; h h = = i i / / j; j; Phép chia nguyên, b t “h” có ki u double. return 0; return 0; t qu là 1.00000 } } NH P MÔN L P TRÌNH 12/23/2009 25 Ép ki u É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. int main(void) int main(void) { { int i = 5, j = 4; int i = 5, j = 4; double f; double f; f f = = (double)i / j; (double)i / j; Phép chia s nguyên c th c hi n, k t f f = = i / (double)j; i / (double)j; qu , 1, c i sang f f = = (double)i / (double)j; (double)i / (double)j; ki u double, 1.00000 f f = = (double)(i / j); (double)(i / j); return 0; return 0; } } NH P MÔN L P TRÌNH 12/23/2009 26
  14. Phép t ng (gi m) 1 NNLT C có 2 toán t có toá c bi t h tr vi c t ng (gi m) giá tr giá c a m t bi n thay i 1 n v ++ ng 1 -- gi m 1 Các toán t này có th t tr c ho c sau bi n. int i = 5, j = 4; int i = 5, j = 4; “i” 6 “j” 3 i ++; i ++; -- j; -- j; “i” 7 ++ i; ++ i; NH P MÔN L P TRÌNH 12/23/2009 27 Tr c hay sau ? Th t th c hi n các toán t ++ và -- ph thu c vào v trí c a chúng (t c hay sau) so v i bi n: #include #include ng ng: 1. j++; int main(void) int main(void) 2. i = j; { { int int i, j = 5; i, j = 5; i = ++j; i = ++j; printf("i=%d, j=%d\n", i, j); ng ng: printf("i=%d, j=%d\n", i, j); j = 5; 1. i = j; j = 5; i = j++; 2. j++; i = j++; printf("i=%d, j=%d\n", printf("i=%d, j=%d\n", i, j); i, j); return 0; i=6, i=6, j=6 j=6 return 0; } } i=5, i=5, j=6 j=6 NH P MÔN L P TRÌNH 12/23/2009 28
  15. Ki u lu n lý trong C 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) giá khá (khá 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ép so sánh: phé sá < bé n 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
  16. Toán t lu n lý NNLT C h tr các toán t lu n lý: toá && và (and) || ho c (or) ! ph nh (not) T tc u cho k t qu 1 ho c 0 ng ng các tr ng h p ÚNG ho c SAI int i, j = 10, k = 28; int i, j = 10, k = 28; i = ((j > 5) && (k < 100)) || (k > 24); i = ((j > 5) && (k < 100)) || (k > 24); NH P MÔN L P TRÌNH 12/23/2009 31 Toán t lu n lý u ý khi s d ng các toán t lu n lý: cá toá N u không có các d u (), các phép toán có cá phé toá c th c hi n t trái sang ph i if((i printf("%i\n", a[i]); printf("%i\n", a[i]); Nên vi t “i < 10” c ki m tra tr c, n u không úng giá tr a bi u th c s là 0 và “a[i] > 0” s không c tính Không nên:(a < b < c) Không nên:(a < b < c) Nên:((a < b) && (b< c) Nên:((a < b) && (b< c) NH P MÔN L P TRÌNH 12/23/2009 32
  17. Toán t trên bit 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 > 1); 28388 0110 1110 1110 0100 28388 0110 1110 1110 0100 return 0; return 0; 7097 0001 1011 1011 1001 7097 0001 1011 1011 1001 }} 0x4c21, 0x7fbf, 0x339e 0x4c21, 0x7fbf, 0x339e 3548 0000 1101 1101 1100 3548 0000 1101 1101 1100 28388, 3548 28388, 3548 NH P MÔN L P TRÌNH 12/23/2009 34
  18. Phép gán 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” int i, j, k, l, m, n; int i, j, k, l, m, n; cho “l”, … i, j, k, l, m, n u nh n giá tr 22. i = j = k = l = m = n = 22; i = j = k = l = m = n = 22; printf("%i\n", j = 93); printf("%i\n", j = 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án 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 int main(void) int main(void) { i khac khong i khac khong { int i = 0; int i = 0; if(i = 0) if(i = 0) printf("i printf("i nhan gia tri khong\n"); nhan gia tri khong\n"); else else printf(“i printf(“i khac khong\n"); khac khong\n"); return 0; return 0; }} NH P MÔN L P TRÌNH 12/23/2009 36
  19. M t s phép gán c bi t Các phép gán k t h p toán t khác: += -= *= /= %= &= |= ^= = T ng quát: quá bi n op= bi u th c ng ng: bi n = bi n op (bi u th c) a += 27; a += 27; f /= 9.2; f /= 9.2; i *= j + 2; i *= j + 2; a = a + 27; a = a + 27; f = f / 9.2; f = f / 9.2; i = i * (j + 2); i = i * (j + 2); NH P MÔN L P TRÌNH 12/23/2009 37 Toán t sizeof sizeof(Obj) Cho bi t kích th cc a it ng theo n v byte #include #include int main(void) int main(void) { { long big; long big; printf("\"big\" is %u bytes\n", sizeof(big)); printf("\"big\" is %u bytes\n", sizeof(big)); printf("a short is %u bytes\n", sizeof(short)); printf("a short is %u bytes\n", sizeof(short)); printf("a double is %u bytes\n", sizeof (double)); printf("a double is %u bytes\n", sizeof (double)); return 0; "big" is 4 bytes "big" is 4 bytes return 0; a short is 2 bytes } } a short is 2 bytes a double is 8 bytes a double is 8 bytes NH P MÔN L P TRÌNH 12/23/2009 38
  20. Bi u th c ch n theo i u ki n ( 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 int i, j = 100, k = -1; int i, j = 100, k = -1; int i, j = 100, k = -1; int i, j = 100, k = -1; i = (j > k) ? j : k; i = (j > k) ? j : k; i = (j < k) ? j : k; i = (j < k) ? j : k; u (j > k) u (j < k) u (j < k) u (j > k) i = j; i = j; i = j; i = j; Ng c l i Ng c l i Ng c l i Ng c l i i = k; i = k; i = k; i = k; Có th nh ngh a s n m t macro tìm s l n: #define max(x, y) ((x>y) ? x : y) NH P MÔN L P TRÌNH 12/23/2009 39 u tiên c 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 () t ng c dùng ch rõ th t các toán t . #include #include int main(void) int main(void) { { int j = 3 * 4 + 48 / 7; int j = 3 * 4 + 48 / 7; printf("j = %i\n", j); printf("j = %i\n", j); return 0; return 0; j = 18 j = 18 } } NH P MÔN L P TRÌNH 12/23/2009 40

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản