intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PDF | Số trang:22

92
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Nhập môn lập trình phần mở đầu giới thiệu cho người học một số nội dung như: Các thành phần trong chương trình C, kiểu dữ liệu cơ sở trong C, toán tử trong C,...và một số nội dung khác. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Nhập môn lập trình: Mở đầu - 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 int main() main() {{ printf(“Nhap printf(“Nhap mon mon lap lap trinh\n"); trinh\n"); Hàm main 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 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ì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, 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 int main(void) main(void) {{ int int a, a, b; b; Nh p 2 s nguyên vào a và 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 các bi u th c “a”, return return 0; 0; “b” và “a-b” theo nh }} ng %i Nhap Nhap 22 so so nguyen: nguyen: 21 21 17 17 21 21 -- 17 17 == 44 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 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 printf("maximum long int = %li\n", LONG_MAX); long int = %li\n", LONG_MAX); printf("maximum printf("maximum unsigned unsigned long long == %lu\n", %lu\n", big); big); return return 0; 0; }} 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 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 int main() main() Trong NNLT C, ký t {{ chính là s nguyên char char lower_a lower_a == 'a'; 'a'; char lower_m = 'm'; char lower_m = 'm'; 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' + printf(“Ky tu in hoa '%c'\n", lower_m - 'a' + '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 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 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, hex=%d\n", hex=%d\n", dec, dec, oct, 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 return 0; dec=20, 0; dec=20, oct=16, oct=16, hex=32 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 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 g=0.000012 h=5000000000.000000 f=3.141600 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á 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, 1e- 1e-7, -1.29e15) H ng s ki u float k t thú thúc b i “F” (3.5F, 1e- 1e-7F) H ng s ki u long double double k t thúthúc b i “L” (-1.29e15L, 1e- 1e-7L) H ng s không có có “.”, “e” ho c “F” có ki u int. Ví d : 10000, -35. (M t và vài trì trình biên d ch t ng chuy n thà 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à 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 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; L i 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
  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 #definePI PI 3.141592653590L 3.141592653590L #define DAYS_IN_WEEK #define DAYS_IN_WEEK 77 u ý: không #define #defineSUNDAY SUNDAY 00 có “=” và “;” 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 21 Toán t trong C
  12. 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 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 int main(void) main(void) phép chia l y nguyên {{ k nh n giá tr 1 int int ii == 5, 5, jj == 4, 4, k; k; double f = 5.0, double f = 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 “h” có ki u double. return return 0; 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 int main(void) main(void) {{ int int ii == 5, 5, jj == 4; 4; double f; double f; ff == (double)i (double)i // j; j; Phép chia s nguyên 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); return return 0; 0; }} NH P MÔN L P TRÌNH 12/23/2009 26
  14. Phép t ng (gi m) 1 NNLT C cócó 2 toá toán t c bi t h tr vi c t ng (gi m) giá giá tr 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 int ii == 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 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 intmain(void) main(void) 2. i = j; {{ int int i, i, jj == 5; 5; ii == ++j; ++j; printf("i=%d, ng ng: printf("i=%d, j=%d\n", j=%d\n", i, i, j); j); jj == 5; 1. i = j; 5; ii == j++; 2. j++; j++; printf("i=%d, printf("i=%d, j=%d\n", j=%d\n", i, i, j); j); return i=6, i=6, j=6 j=6 return 0; 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á giá 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 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á toán t lu n lý: && 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 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 12/23/2009 31 Toán t lu n lý u ý khi s d ng cá các toá toán t lu n lý: N u không cócó các d u (), cá các phé phép toá toán c th c hi n t trái sang ph i if((i if(i if((i 0)) 0) 0)) printf("%i\n", printf("%i\n", a[i]); 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 Không nên:(a nên:(a
  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);1); 28388 0110 1110 1110 0100 28388 0110 1110 1110 0100 return return 0; 0; 7097 7097 0001 0001 1011 1011 1011 1011 1001 1001 }} 0x4c21, 0x4c21, 0x7fbf, 0x7fbf, 0x339e 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 int 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á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 int main(void) main(void) {{ ii khac khac khong khong int int ii == 0; 0; if(i if(i == 0) 0) printf("i printf("i nhan nhan gia gia tri tri khong\n"); khong\n"); else else printf(“i printf(“i khac khac khong\n"); khong\n"); return return 0; 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á quát: bi n op= bi u th c 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án t sizeof sizeof(Obj) Cho bi t kích th cc a it ng theo n v byte #include #include int int main(void) main(void) {{ long long big; big; printf("\"big\" printf("\"big\" isis %u %u bytes\n", bytes\n", sizeof(big)); sizeof(big)); printf("a short is %u bytes\n", sizeof(short)); printf("a short is %u bytes\n", sizeof(short)); printf("a printf("a double double isis %u %u bytes\n", bytes\n", sizeof sizeof (double)); (double)); return "big" "big" is is 44 bytes bytes return 0; 0; aa short }} short is is 22 bytes bytes aa double double is 8 bytes 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 int i, i, jj == 100, 100, kk == -1; -1; int int i, i, jj == 100, 100, kk == -1; -1; ii == (j (j >> k) k) ?? jj :: k; k; ii == (j (j k) k) k) ii == j; ii == j; j; j; Ng c l i Ng c Ng c l il i Ng c l i ii == k; ii == k; k; 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 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; jj == 18 18 }} NH P MÔN L P TRÌNH 12/23/2009 40
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
4=>1