Bài giảng môn Tin học đại cương - Chương 4: Ngôn ngữ lập trình C

pdf 52 trang ngocly 2760
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Tin học đại cương - Chương 4: Ngôn ngữ lập trình C", để 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:

  • pdfbai_giang_mon_tin_hoc_dai_cuong_chuong_4_ngon_ngu_lap_trinh.pdf

Nội dung text: Bài giảng môn Tin học đại cương - Chương 4: Ngôn ngữ lập trình C

  1. CHƯƠNG 4 NGÔN NGỮ LẬP TRÌNH C
  2. Ngôn ngữ lập trình C Tổng quan Các thành phần cơ bản của ngôn ngữ C Cấu trúc rẽ nhánh Cấu trúc lặp Hàm Mảng
  3. Nội dung 1 Tổng quan 2 Các thành phần cơ bản của C
  4. Giới thiệu Giới thiệu về ngôn ngữ C . Dennis Ritchie tại Bell Telephone năm 1972. . Tiền thân của ngôn ngữ B, KenThompson, cũng tại Bell Telephone. . Là ngôn ngữ lập trình có cấu trúc và phân biệt chữ Hoa - thường (case sensitive) . ANSI C.
  5. Giới thiệu Đặc điểm của C . Rất mạnh và linh động, có khả năng thể hiện bất cứ ý tưởng nào. . Được sử dụng rộng rãi bởi các nhà lập trình chuyên nghiệp. . Có tính khả chuyển, ít thay đổi trên các hệ thống máy tính khác nhau. . Rõ ràng, cô đọng. . Lập trình đơn thể, tái sử dụng thông qua hàm.
  6. Giới thiệu Môi trường lập trình . Borland C++ 3.1 for DOS. . Visual C++ 6.0, Win32 Console Application.
  7. Các thành phần cơ bản của ngôn ngữ C  Bộ chữ viết . Bộ chữ cái 26 ký tự Latinh: A, B, C, , Z, a, b, c, , z . Bộ chữ số thập phân : 0, 1, 2, , 9 . Các ký hiệu toán học : + – * / = ( ) . Các ký tự đặc biệt : . , : ; [ ] % \ # $ ‘ . Ký tự gạch nối _ và khoảng trắng ‘ ’
  8. Các thành phần cơ bản của ngôn ngữ C Từ khóa (keyword) . Các từ dành riêng trong ngôn ngữ. . Không thể sử dụng từ khóa để đặt tên cho biến, hàm, tên chương trình con. . Một số từ khóa thông dụng: • const, enum, signed, struct, typedef, unsigned • char, double, float, int, long, short, void • case, default, else, if, switch. • do, for, while. • break, continue, goto, return.
  9. Các kiểu dữ liệu sơ cấp C có 2 kiểu sơ cấp như sau: . Kiểu số nguyên: giá trị của nó là các số nguyên như 2912, -1706, . Kiểu số thực: giá trị của nó là các số thực như 3.1415, 29.12, -17.06,
  10. Các kiểu dữ liệu sơ cấp Các kiểu số nguyên Độ lớn STT Kiểu dữ liệu Miền giá trị (Byte) Từ 0 đến 255 (tương đương 256 1 unsigned char 1 byte ký tự trong bảng mã ASCII) 2 char 1 byte -128 127 3 enum 2 bytes -32,768 32,767 4 unsigned int 2 bytes 0 65,535 5 short int 2 bytes -32,768 32,767 6 int 2 bytes -32,768 32,767
  11. Các kiểu số nguyên Kiểu ký tự . Tên kiểu: char . Miền giá trị: 256 ký tự trong bảng mã ASCII. . Chính là kiểu số nguyên do: • Lưu tất cả dữ liệu ở dạng số. • Không lưu trực tiếp ký tự mà lưu mã ASCII của ký tự đó. Ví dụ: . Lưu số 65 tương đương với ký tự ‘A’ . Lưu số 97 tương đương với ký tự ‘a’.
  12. Các kiểu số thực(floating-point) Các kiểu số thực: dùng để lưu các số thực hay các số có dấu chấm thập phân. Gồm 3 kiểu sau: Ví dụ: 17.06 = 1.706*10 = 1.706*101 Kiểu dữ Độ lớn STT (Trị tuyệt đối) Miền giá trị liệu (Byte) 1 float 4 bytes 3.4 * 10-38 3.4 * 1038 2 double 8 bytes 1.7 * 10-308 1.7 * 10308 long 3 10 bytes 3.4 *10-4932 1.1 *104932 double
  13. Tên, biến, hằng và biểu thức Tên (danh biểu-Identifier) Tên hay còn gọi là danh biểu (identifier) được dùng để đặt cho chương trình, hằng, kiểu, biến, chương trình con Tên có hai loại là tên chuẩn và tên do người lập trình đặt. − Tên chuẩn là tên do C đặt sẵn như tên kiểu: int, char, float, ; tên hàm: sin, cos − Tên do người lập trình tự đặt để dùng trong chương trình của mình.
  14. Tên, biến, hằng và biểu thức Tên (danh biểu-Identifier) Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_) để đặt tên, phải tuân thủ quy tắc: − Bắt đầu bằng một chữ cái hoặc dấu gạch dưới. − Không có khoảng trống ở giữa tên. − Không được trùng với từ khóa, không nên đặt tên trùng với tên chuẩn
  15. Tên, biến, hằng và biểu thức Tên (danh biểu-Identifier) Ví dụ: . Các tên hợp lệ: GiaiPhuongTrinh, Bai_Tap1 . Các tên không hợp lệ: 1A, Giai Phuong Trinh . Phân biệt chữ hoa chữ thường, do đó các tên sau đây khác nhau: • A, a • BaiTap, baitap, BAITAP, bAItaP,
  16. Tên, biến, hằng và biểu thức  Biến Biến cho phép cung cấp một tên có ý nghĩa đại diện cho mỗi vị trí vùng nhớ. Tên biến giúp truy cập vào vùng nhớ mà không cần dùng địa chỉ của vùng nhớ đó. Ví dụ int i; int j, k; Biến float ketqua, delta; Cú pháp ; , ;
  17. Tên, biến, hằng và biểu thức  Hằng Hằng là đại lượng có giá trị thuộc một kiểu dữ liệu nhất định, giá trị của hằng không thể thay đổi trong thời gian tồn tại của nó. Cú pháp #define Hoặc: const = ; Ví dụ: #define MAX 100 #define PI 3.14 const int MAX = 100; const float PI = 3.14;
  18. Tên, biến, hằng và biểu thức Biểu thức . Tạo thành từ các toán tử (Operator) và các toán hạng (Operand). . Toán tử tác động lên các giá trị của toán hạng và cho giá trị có kiểu nhất định. . Toán tử: +, –, *, /, % . . Toán hạng: hằng, biến, lời gọi hàm Ví dụ: . 2 + 3, a / 5, (a + b) * 5,
  19. Các toán tử (phép toán) Toán tử gán − Thường được sử dụng trong lập trình. − Gán giá trị cho biến. Cú pháp: • = ; • = ; • = ; • Có thể thực hiện liên tiếp phép gán.
  20. Các toán tử (phép toán) Toán tử gán Phép gán mở rộng x += y  x = x + y x -= y  x = x – y x *= y  x = x*y x /= y  x = x / y x %= y  x = x % y Ví dụ: int a,b,c,d,e,thuong; a=10; b=a; thuong=a/b; a=b=c=d=e=156; a+=5;
  21. Các toán tử (phép toán) Toán tử số học . +, –, *, /, % (chia lấy phần dư). Ví dụ: . a = 1 + 2; b = 1 – 2; c = 1 * 2; d = 1 / 2; . e = 1*1.0 / 2; . h = 5 % 2; Chú ý: − Phép toán (%) không dùng cho kiểu dữ liệu float hay double. − Thứ tự ưu tiên của các toán tử số học: *, /, % , + ,-.
  22. Các toán tử (phép toán) Toán tử tăng, giảm 1 . ++ (tăng 1 đơn vị), (giảm 1 đơn vị). . Đặt trước toán hạng • Ví dụ ++x hay x: thực hiện tăng/giảm trước. . Đặt sau toán hạng • Ví dụ x++ hay x : thực hiện tăng/giảm sau. x = b; x =b++;  b=b+1; x= ++b;  b=b+1; x=b;
  23. Các toán tử (phép toán) Toán tử tăng, giảm 1 Ví dụ Kết quả x=10; y=10,x=11 y=x++; x=10; y=11,x=11 y=++x; a=4;b=2; c=6,a=3 c=b+a ; a=4;b=2; c= a+b ; c=5,a=3 ITTC_HUFI
  24. Các toán tử (phép toán) Toán tử quan hệ . So sánh 2 biểu thức với nhau. . Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng). . ==, >, =, 2 có giá trị 1 (đúng). 5 <= 4 có giá trị 0 (sai). ‘a’!=’b’ có giá trị 1 (đúng).
  25. Các toán tử (phép toán) Các phép toán logic . && : phép AND logic . | | : phép OR logic . ! : phép NOT logic && 0 1 || 0 1 0 0 0 0 0 1 1 0 1 1 1 1 Ví dụ: (1 > 2) && (3 > 4); có giá trị 0 (sai). (1 4); có giá trị 1 (đúng). !(1 > 2); có giá trị 1 (đúng).
  26. Các toán tử (phép toán) Khi một biểu thức có nhiều hơn một kiểu toán tử thì thứ tự ưu tiên phải được thiết lập giữa các kiểu toán tử với nhau. Sau đây là bảng thứ tự ưu tiên giữa các kiểu toán tử khác nhau. Thứ tự Kiểu toán tử 1 Số học 2 Quan hệ 3 Lôgic Ví dụ: Hãy cho biết kết quả của biểu thức sau: 5*6/3+4 10) có giá trị 0 (sai). ITTC_HUFI
  27. Các toán tử (phép toán) Toán tử điều kiện . Đây là toán tử 3 ngôi (gồm có 3 toán hạng) . ? : • đúng thì giá trị là . • sai thì giá trị là . Ví dụ: x = 10; y = x > 9 ? 100 : 200 ; Kết quả y được gán giá trị 100 Nếu x nhỏ hơn 9 thì y sẽ nhận giá trị là 200.
  28. Các toán tử (phép toán) Phép chuyển kiểu (ép kiểu) Cú pháp: (kiểu_mới) (biểu_thức) Ví dụ: int a=5, b =2; float c,d; c = (float) a /b; d=3.2; b = (int)d % 2;
  29. Câu lệnh Khái niệm . Là một chỉ thị trực tiếp, hoàn chỉnh nhằm ra lệnh cho máy tính thực hiện một số tác vụ nhất định nào đó. . Trình biên dịch bỏ qua các khoảng trắng (hay tab hoặc xuống dòng) chen giữa lệnh. Ví dụ: a=2912; a = 2912; a = 2912;
  30. Câu lệnh Phân loại . Câu lệnh đơn: chỉ gồm một câu lệnh. . Câu lệnh phức (khối lệnh): gồm nhiều câu lệnh đơn được bao bởi { và }. Ví dụ: a = 2912; // Câu lệnh đơn { // Câu lệnh phức/khối lệnh a = 2912; b = 1706; }
  31. Phần chú thích Phần chú thích . Đặt giữa cặp dấu /* */ hoặc // (C++). . Ví dụ: int a, b; //khai bao bien a,b kieu int a = 1; //gan 1 cho a b =3; //gan 3 cho b /* thuat toan tim so lon nhat la neu a lon hon b thi a lon nhat nguoc lai b lon nhat */ if (a > b) printf("max: %d", a); else printf("max: %d", b);
  32. Nhập, xuất dữ liệu Xuất dữ liệu Thư viện . #include (standard input/output). Cú pháp . printf( [, , , ]); . là cách trình bày thông tin xuất và được đặt trong cặp nháy kép “ ”. • Văn bản thường. • Ký tự điều khiển. • Đặc tả.
  33. Chuỗi định dạng Văn bản thường Được xuất y hệt như lúc gõ trong chuỗi định dạng. Ví dụ: . Xuất chuỗi Hello World printf(“Hello ”); printf(“World”); printf(“Hello World”); . Xuất chuỗi a + b printf(“a + b”);
  34. Chuỗi định dạng Ký tự điều khiển . Gồm dấu \ và một ký tự như trong bảng sau: Ký tự điều khiển Ý nghĩa \a Tiếng chuông \b Lùi lại một bước \n Xuống dòng \t Dấu tab \\ In dấu \ \? In dấu ? \” In dấu “ Ví dụ printf(“Hello\n”); printf(“\t Ban”);
  35. Chuỗi định dạng Đặc tả . Gồm dấu % và một ký tự. . Xác định kiểu của biến/giá trị muốn xuất. . Các đối số chính là các biến/giá trị muốn xuất, được liệt kê theo thứ tự cách nhau dấu phẩy. Đặc tả Ý nghĩa Kiểu dữ liệu %c Ký tự char %d,%ld Số nguyên có dấu int, short, long %f, %lf Số thực float, double %s Chuỗi ký tự char[], char* %u Số nguyên không unsigned dấu int/short/long
  36. Chuỗi định dạng Ví dụ int a = 10, b = 20; printf(“%d”, a); Xuất ra 10 printf(“%d”, b); Xuất ra 20 printf(“%d %d”, a, b); Xuất ra 10 20 float x = 15.06; printf(“%f”, x); Xuất ra 15.060000 printf(“%f”, 1.0/3); Xuất ra 0.333333
  37. Định dạng xuất Cú pháp . Định dạng xuất số nguyên: %nd. . Định dạng xuất số thực: %n.kd. int a = 1706; float x = 176.85; printf(“%10d”, a);printf(“\n”); printf(“%10.2f”, x);printf(“\n”); printf(“%.2f”, x);printf(“\n”); 1 7 0 6 1 7 6 . 8 5 1 7 6 . 8 5
  38. Chuỗi định dạng Phối hợp các thành phần int a = 1, b = 2; Yêu cầu: Xuất + = printf("%d", a); // Xuất giá trị của biến a printf(" + "); // Xuất “ + ” printf("%d", b); // Xuất giá trị của biến b printf(" = "); // Xuất “ = ” printf("%d", a + b);// Xuất giá trị của a + b printf(“%d + %d = %d”, a, b, a+b);
  39. Câu lệnh nhập Thư viện . #include (standard input/output) Cú pháp . scanf( [, , , ]); . giống định dạng xuất nhưng chỉ có các đặc tả. . Các đối số là tên các biến sẽ chứa giá trị nhập và được đặt sau dấu &
  40. Câu lệnh nhập Ví dụ: Cho a và b kiểu số nguyên scanf(“%d”, &a); // Nhập giá trị cho biến a scanf(“%d”, &b); // Nhập giá trị cho biến b scanf(“%d%d”, &a, &b); Các câu lệnh sau đây sai: scanf(“%d”, a); // Thiếu dấu & scanf(“%d”, &a, &b); // Thiếu %d cho biến b scanf(“%f”, &a); // a là biến kiểu số nguyên scanf(“%9d”, &a); // không được định dạng scanf(“a = %d, b = %d”, &a, &b”);
  41. Cấu trúc chương trình C Khối khai báo Hàm main() Các hàm con (nếu có)  Khối khai báo Gồm khai báo về sử dụng thư viện, khai báo hằng số, khai báo hàm con (các nguyên mẫu hàm), khai báo các biến toàn cục và khai báo các kiểu dữ liệu tự định nghĩa.  Hàm chính (main()) Chứa các biến, các lệnh và các lời gọi hàm cần thiết trong chương trình.
  42. Cấu trúc chương trình C Ví dụ: #include "stdio.h" #include "conio.h" #define PI 3.1415 // Nguyên mẫu hàm (prototype) float Dien_TichHT(float ); // Hàm chính void main() { float r; printf("\nNhap ban kinh duong tron r ="); scanf("%f",&r); printf("Dien tich = %5.2f", Dien_TichHT(r)); } // Định nghĩa hàm con float Dien_TichHT(float r) { return r*r*PI; }
  43. Một số hàm hữu ích khác Các hàm trong thư việc toán học . #include • acos, asin, atan, cos, sin, • exp, log, log10 • sqrt • abs • pow(double x, double y)
  44. CÂU TRẮC NGHIỆM Câu 1. Trong các định danh sau, định danh nào là hợp lệ a. 123go b. chao_ban c. while d. Chu#vi Câu 2. Trong các định danh sau, định danh nào không hợp lệ a. diemtrungbinh b. nhan2songuyen c. vonglap d. switch Câu 3. Độ lớn của kiểu dữ liệu int là bao nhiêu bit a. 1 bit b. 8 bit c. 16 bit d. 32 bit
  45. CÂU TRẮC NGHIỆM Câu 4. Để tính giá trị, chọn cách viết nào: a. x:=-b/2a; b. x=-b/2*a; c. d. x=-b\2\a; Câu 5. Biểu thức: 25/3 + 5/2*3 có giá trị là: a. 8.0; b.15.5; c. 14; d. 15.0; ITTC_HUFI
  46. CÂU TRẮC NGHIỆM Câu 6. Cho phương trình: ax2 + bx + c = 0 Giả sử a#0 và Delta:= b*b- 4*a*c > 0. Một nghiệm của phương trình là: a.x= -b + sqrt(Delta) / (2*a); b.x= (-b + sqrt (Delta) ) /2*a; c.x= (-b + sqrt (Delta) ) / (2*a); d.x= (-b - sqr(Delta) ) /2/a; Câu 7. Biểu thức nào sau đây có giá trị đúng: a. 100 > 76)&& ('B' 4 / 2)); c. (49.5 + 2 < 5) && (2 < 4 / 2); d. 2*(3+5) < 18 / 4*4;
  47. CÂU TRẮC NGHIỆM Câu 8. Khi chạy chương trình: void main(){ int a, b, c, n; n=546; a=n/100; b=(n%100) /10; c=(n%100)%10; printf(“%d”,a+b+c); } Kết quả in ra: a. 546 b. 5 c. 15 d. 6 ITTC_HUFI
  48. CÂU TRẮC NGHIỆM Câu 9. Cho biết định dạng (mã qui cách) của kiểu dữ liệu số thực a. %d b.%u c. %f d. %ld Câu 10. Cho biết giá trị của x khi thực hiện đoạn chương trình sau: int a=11, b=2; float x=(float) a/b; a. 5.0 b. 5.1 c. 5.5 d. 5.2 ITTC_HUFI
  49. CÂU TRẮC NGHIỆM Câu 11. Để khai báo pi là hằng số có giá trị bằng 3.14 ta sử dụng câu lệnh nào dưới đây a. float pi=3.14; b. float const pi=3,14; c. const pi=3.14;; d. const float pi=3.14; Câu 12. Cho biết giá trị của biến x khi thực hiện đoạn chương trình sau: int x, a=1, b=2, c=1; x= a+b*3-2*c++; a. 8 b. 4 c. 6 d. Tất cả đều sai
  50. BÀI TẬP 1.Viết chương trình in ra màn hình như sau: 2. Viết chương trình thực hiện yêu cầu sau: đọc vào từ bàn phím hai cạnh của một hình chữ nhật, tính chu vi và diện tích của hình chữ nhật này. 3. Biết rằng 1 Dollar tương đương 21000 đồng VN. Hãy viết chương trình cho nhập vào số dollar và đổi sang đồng.
  51. Company Logo