Bài giảng Nhập môn lập trình - Chương 3: Các kiểu dữ liệu cơ sở - Cáp Phạm Đình Thăng

pdf 40 trang ngocly 90
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình - Chương 3: Các kiểu dữ liệu cơ sở - Cáp Phạm Đình Thăng", để 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_nhap_mon_lap_trinh_chuong_3_cac_kieu_du_lieu_co_so.pdf

Nội dung text: Bài giảng Nhập môn lập trình - Chương 3: Các kiểu dữ liệu cơ sở - Cáp Phạm Đình Thăng

  1. ĐH CNTT NMLT Chương 3 Các kiểu dữ liệu cơ sở ThS. Cáp Phạm Đình Thăng Chương 3 - 1
  2. ĐH CNTT NMLT 1. Các kiểu dữ liệu cơ sở Ngôn ngữ C có 4 kiểu dữ liệu cơ sở: 1. Kiểu số nguyên 2. Kiểu số thực 3. Kiểu luận lý: Giá trị của nó là đúng hoặc sai. 4. Kiểu ký tự: 256 ký tự trong bảng mã ASCII. ThS. Cáp Phạm Đình Thăng Chương 3 - 2
  3. ĐH CNTT NMLT 1.1 Kiểu số nguyên có dấu Kiểu Độ lớn Miền giá trị (Type) (Byte) (Range) char 1 –128 +127 int 2 –32.768 +32.767 short 2 –32.768 +32.767 long 4 –2.147.483.648 +2.147.483.647 ThS. Cáp Phạm Đình Thăng Chương 3 - 3
  4. ĐH CNTT NMLT 1.2 Kiểu số nguyên không dấu Kiểu Độ lớn Miền giá trị (Type) (Byte) (Range) unsigned char 1 0 255 unsigned int 2 0 65.535 unsigned short 2 0 65.535 unsigned long 4 0 4.294.967.295 ThS. Cáp Phạm Đình Thăng Chương 3 - 4
  5. ĐH CNTT NMLT 1.3 Kiểu số thực Các kiểu số thực (floating-point) Ví dụ • 17.06 = 1.706*10 = 1.706*101 Kiểu Độ lớn Miền giá trị (Type) (Byte) (Range) float (*) 4 3.4*10–38 3.4*1038 double ( ) 8 1.7*10–308 1.7*10308 • (*) Độ chính xác đơn (Single-precision) chính xác đến 7 số lẻ. • ( ) Độ chính xác kép (Double-precision) chính xác đến 19 số lẻ. ThS. Cáp Phạm Đình Thăng Chương 3 - 5
  6. ĐH CNTT NMLT 1.4 Kiểu luận lý Ngôn ngữ C: ngầm định không tường minh: false: sai, giá trị 0. true: đúng, giá trị khác 0, thường là 1 C++: bool Ví dụ: 0 : false, 1: true, 2: true, 2.5: true 1 > 2: false, 1 < 2 : true ThS. Cáp Phạm Đình Thăng Chương 3 - 6
  7. ĐH CNTT NMLT 1.6 Kiểu ký tự Tên kiểu: char Miền giá trị: 256 ký tự trong bảng ASCII Cũng là 1 kiểu số nguyên vì: Dữ liệu được lưu ở dạng số. Ví dụ: lưu 65 cho ký tự ‘A’ . ThS. Cáp Phạm Đình Thăng Chương 3 - 7
  8. ĐH CNTT NMLT 2. Biến Khai báo biến: ; , ; ThS. Cáp Phạm Đình Thăng Chương 3 - 8
  9. ĐH CNTT NMLT 2. Biến Ví dụ: i là một biến có kiểu dữ liệu là số nguyên int i; j, và k là hai biến có kiểu dữ liệu là số thực float j, k; ThS. Cáp Phạm Đình Thăng Chương 3 - 9
  10. ĐH CNTT NMLT 3. Hằng số Cú pháp khai báo hằng số: #define const = ; Ví dụ: #define MAX 1000 //không có ; #define PI 3.14 //Không có ; const int MAX = 1000; const float PI = 3.14; ThS. Cáp Phạm Đình Thăng Chương 3 - 10
  11. ĐH CNTT NMLT 4. Biểu thức Khái niệm: Biểu thức được tạo thành từ các toán tử và các toán hạng Toán tử: +, - , *, / Toán hạng: Hằng, biến, lời gọi hàm Ví dụ: A + 5, C / D, ThS. Cáp Phạm Đình Thăng Chương 3 - 11
  12. ĐH CNTT NMLT 5. Toán tử gán Dùng để gán giá trị cho biến Cú pháp: = ; = ; = ; Phép gán có thể thực hiện liên tiếp ThS. Cáp Phạm Đình Thăng Chương 3 - 12
  13. ĐH CNTT NMLT 5. Toán tử gán Ví dụ: a = 5; A = B; C = E + 5 * D; a = b = c = 8; ThS. Cáp Phạm Đình Thăng Chương 3 - 13
  14. ĐH CNTT NMLT 6. Toán tử 1 ngôi Chỉ có 1 toán hạng trong biểu thức ++ : Tăng 1 đơn vị : Giảm 1 đơn vị Đặt trước toán hạng: thực hiện tăng giảm trước. Đặt sau toán hạng: thực hiện tăng giảm sau. ThS. Cáp Phạm Đình Thăng Chương 3 - 14
  15. ĐH CNTT NMLT 6. Toán tử 1 ngôi Ví dụ: x = 10; y = x++; (x = 11, y = 10) x = 10; y = ++x; (x = 11, y = 11) ThS. Cáp Phạm Đình Thăng Chương 3 - 15
  16. ĐH CNTT NMLT 6. Toán tử 1 ngôi Ví dụ: x = 10; y = x++; (x = 11, y = 10) x = 10; y = ++x; (x = 11, y = 11) ThS. Cáp Phạm Đình Thăng Chương 3 - 16
  17. ĐH CNTT NMLT 7. Toán tử 2 ngôi Có 2 toán hạng trong biểu thức +, - , * , / , % x = x + y  x += y; ThS. Cáp Phạm Đình Thăng Chương 3 - 17
  18. ĐH CNTT NMLT Các toán tử trên bit Các toán tử trên bit Tác động lên các bit của toán hạng (nguyên). & (and), | (or), ^ (xor), ~ (not hay lấy số bù 1) >> (shift right), >=, <<= & 0 1 | 0 1 0 0 0 0 0 1 1 0 1 1 1 1 ^ 0 1 ~ 0 1 0 0 1 1 0 1 1 0 ThS. Cáp Phạm Đình Thăng Chương 3 - 18
  19. ĐH CNTT NMLT Các toán tử trên bit void main() { int a = 5; // 0000 0000 0000 0101 int b = 6; // 0000 0000 0000 0110 int z1, z2, z3, z4, z5, z6; z1 = a & b; // 0000 0000 0000 0100 z2 = a | b; // 0000 0000 0000 0111 z3 = a ^ b; // 0000 0000 0000 0011 z4 = ~a; // 1111 1111 1111 1010 z5 = a >> 2;// 0000 0000 0000 0001 z6 = a << 2;// 0000 0000 0001 0100 } ThS. Cáp Phạm Đình Thăng Chương 3 - 19
  20. ĐH CNTT NMLT Các toán tử quan hệ Các 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);s4 = (1 >= 2); s5 = (1 < 2);s6 = (1 <= 2); ThS. Cáp Phạm Đình Thăng Chương 3 - 20
  21. ĐH CNTT NMLT Các toán tử luận lý Các toán tử luận lý Tổ hợp nhiều biểu thức quan hệ với nhau. && (and), || (or), ! (not) && 0 1 || 0 1 0 0 0 0 0 1 1 0 1 1 1 1 Ví dụ • s1 = (1 > 2) && (3 > 4); • s2 = (1 > 2) || (3 > 4); • s3 = !(1 > 2); ThS. Cáp Phạm Đình Thăng Chương 3 - 21
  22. ĐH CNTT NMLT Toán tử điều kiệ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ụ s1 = (1 > 2) ? 2912 : 1706; int s2 = 0; 1 < 2 ? s2 = 2912 : s2 = 1706; ThS. Cáp Phạm Đình Thăng Chương 3 - 22
  23. ĐH CNTT NMLT Độ ưu tiên của các toán tử Toán tử Độ ưu tiên () [] -> . ! ++ - + * (cast) & sizeof  * / % + - > >= == != & | ^ && || ?:  = += -= *= /= %= &=  ,  ThS. Cáp Phạm Đình Thăng Chương 3 - 23
  24. ĐH CNTT NMLT Độ ưu tiên của các toán tử Quy tắc thực hiện Thực hiện biểu thức trong ( ) sâu nhất trước. Thực hiện theo thứ tự ưu tiên các toán tử. => Tự chủ động thêm ( ) Ví dụ n = 2 + 3 * 5; => n = 2 + (3 * 5); a > 1 && b (a > 1) && (b < 2) ThS. Cáp Phạm Đình Thăng Chương 3 - 24
  25. ĐH CNTT NMLT Viết biểu thức cho các mệnh đề x lớn hơn hay bằng 3 x >= 3 a và b cùng dấu ((a>0) && (b>0)) || ((a 0 && b>0) || (a –5) && (x –5 && x < 5) ThS. Cáp Phạm Đình Thăng Chương 3 - 25
  26. ĐH CNTT NMLT 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; ThS. Cáp Phạm Đình Thăng Chương 3 - 26
  27. ĐH CNTT NMLT 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; } ThS. Cáp Phạm Đình Thăng Chương 3 - 27
  28. ĐH CNTT NMLT Câu lệnh xuất 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 (literal text) • Ký tự điều khiển (escape sequence) • Đặc tả (conversion specifier) ThS. Cáp Phạm Đình Thăng Chương 3 - 28
  29. ĐH CNTT NMLT Chuỗi định dạng Văn bản thường (literal text) Đượ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”); ThS. Cáp Phạm Đình Thăng Chương 3 - 29
  30. ĐH CNTT NMLT Chuỗi định dạng Ký tự điều khiển (escape sequence) 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(“\t”); printf(“\n”); printf(“\t\n”); ThS. Cáp Phạm Đình Thăng Chương 3 - 30
  31. ĐH CNTT NMLT Chuỗi định dạng Đặc tả (conversion specifier) 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 %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 dấu unsigned int/short/long ThS. Cáp Phạm Đình Thăng Chương 3 - 31
  32. ĐH CNTT NMLT 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 ThS. Cáp Phạm Đình Thăng Chương 3 - 32
  33. ĐH CNTT NMLT Đị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 ThS. Cáp Phạm Đình Thăng Chương 3 - 33
  34. ĐH CNTT NMLT Chuỗi định dạng Phối hợp các thành phần int a = 1, b = 2; Xuất 1 cong 2 bang 3 và xuống dòng. • printf(“%d”, a);// Xuất giá trị của biến a • printf(“ cong ”);// Xuất chuỗi “ cong ” • printf(“%d”, b);// Xuất giá trị của biến b • printf(“ bang ”);// Xuất chuỗi “ bang ” • printf(“%d”, a + b);// Xuất giá trị của a + b • printf(“\n”);// Xuất điều khiển xuống dòng \n printf(“%d cong %d bang %d\n”, a, b, a+b); ThS. Cáp Phạm Đình Thăng Chương 3 - 34
  35. ĐH CNTT NMLT 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 trước dấu & ThS. Cáp Phạm Đình Thăng Chương 3 - 35
  36. ĐH CNTT NMLT 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”); ThS. Cáp Phạm Đình Thăng Chương 3 - 36
  37. ĐH CNTT NMLT Một số hàm hữu ích khác Các hàm trong thư việc toán học #include 1 đầu vào: double, Trả kết quả: double • acos, asin, atan, cos, sin, • exp, log, log10 • sqrt • ceil, floor • abs, fabs 2 đầu vào: double, Trả kết quả: double • double pow(double x, double y) ThS. Cáp Phạm Đình Thăng Chương 3 - 37
  38. ĐH CNTT NMLT Một số hàm hữu ích khác Ví dụ int x = 4, y = 3, z = -5; float t = -1.2; float kq1 = sqrt(x1); int kq2 = pow(x, y); float kq3 = pow(x, 1/3); float kq4 = pow(x, 1.0/3); int kq5 = abs(z); float kq6 = fabs(t); ThS. Cáp Phạm Đình Thăng Chương 3 - 38
  39. ĐH CNTT NMLT Bài tập lý thuyết 1. Trình bày các kiểu dữ liệu cơ sở trong C và cho ví dụ. 2. Trình bày khái niệm về biến và cách sử dụng lệnh gán. 3. Phân biệt hằng thường và hằng ký hiệu. Cho ví dụ minh họa. 4. Trình bày khái niệm về biểu thức. Tại sao nên sử dụng cặp ngoặc đơn. 5. Trình bày cách định dạng xuất. ThS. Cáp Phạm Đình Thăng Chương 3 - 39
  40. ĐH CNTT NMLT Bài tập thực hành 4. Viết chương trình nhập vào tên bạn, sau đó chương trình đưa ra dòng chữ: “Chao ”. 5. Viết chương trình chuyển độ F sang độ C. biết công thức chuyển là C=5/9(F-32). 6. Viết chương trình nhập vào một số nguyên 3 chữ số ( từ 100-999). Sau đó in ra các chữ số thuộc hàng trăm, hàng chục, hàng đơn vị. 7. Nhập vào ba số nguyên. Tìm số lớn nhất và số nhỏ nhất. 8. Nhập vào một số tiền X. Đổi số tiền X thành các đồng tiền mệnh giá 5k, 2k, 1k. Ví dụ: 134k = 26 tờ 5k + 2 tờ 2k ThS. Cáp Phạm Đình Thăng Chương 3 - 40