Nhằm giúp các bạn đang học chuyên ngành Công nghệ thông tin có thêm tài liệu tham khảo trong quá trình học tập, mời các bạn cùng tham khảo bài 6 Kiểu dữ liệu và biểu thức trong C thuộc bài giảng Tin học đại cương dưới đây. Nội dung bài giảng giới thiệu đến các bạn những nội dung về các kiểu dữ liệu chuẩn trong C, khai báo và khởi tạo biến, hằng, biểu thức trong C, các phép toán trong C, một số toán tử đặc trưng,...
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài Kiểu liệu biểu thức C Nội dung 6.1 Các kiểu liệu chuẩn C 6.2 Khai báo khởi tạo biến, 6.3 Biểu thức C 6.4 Các phép toán C 6.5 Một số toán tử đặc trưng 6.6 Các lệnh vào liệu với biến 6.1 Các kiểu liệu chuẩn C Kiểu liệu Ý nghĩa Kích thước Miền liệu unsigned char Kí tự khơng dấu byte 255 char Kí tự có dấu byte -128 127 unsigned int Số nguyên khơng dấu byte 065.535 int Số ngun có dấu byte -32.76832.767 6.1 Các kiểu liệu chuẩn C Kiểu liệu Ý nghĩa Kích thước Miền liệu unsigned long Số nguyên không dấu byte 0 4,294,967,295 long Số nguyên có dấu byte float Số thực dấu phẩy động, độ xác đơn Số thực dấu phẩy động, độ xác kép byte -2,147,483,648 2,147,483,647 3.4E-38 3.4E+38 double byte 1.7E-308 1.7E+308 Nội dung 6.1 Các kiểu liệu chuẩn C 6.2 Khai báo khởi tạo biến, 6.3 Biểu thức C 6.4 Các phép toán C 6.5 Một số toán tử đặc trưng 6.6 Các lệnh vào liệu với biến 6.2.1 Khai báo khởi tạo biến • Một biến trước sử dụng phải khai báo • Cú pháp khai báo: KieuDuLieu tenBien; Hoặc: KieuDuLieu tenBien1, …, tenBienN; • Ví dụ: Khai báo biến x thuộc kiểu số nguyên byte có dấu (int), biến y, z,t thuộc kiểu thực byte (float) sau: int x; float y,z,t; x = 3; y = x + 1; 6.2.1 Khai báo khởi tạo biến (2) Kết hợp khai báo khởi tạo • Cú pháp: KieuDuLieu tenBien = gia_tri_ban_dau; Hoặc: KieuDuLieu tenBien1=gia_tri1, tenBienN=gia_triN; • Ví dụ: int a = 3;// sau lenh bien a se co gia tri bang float x = 5.0, y = 7.6; // sau lenh x co gia // tri 5.0, y co gia tri 7.6 6.2.2 Khai báo số • Cách 1: Dùng từ khóa #define: – Cú pháp: # define TEN_HANG_SO gia_tri – Ví dụ: #define MAX_SINH_VIEN 50 #define CNTT “Cong nghe thong tin” #define DIEM_CHUAN 23.5 • Cách 2: Dùng từ khóa const : – Cú pháp: const kieu_du_lieu ten_hang = gia_tri; – Ví dụ: const int MAX_SINH_VIEN = 50; const char CNTT[20] = “Cong nghe thong tin”; const float DIEM_CHUAN = 23.5; 6.2.2 Khai báo • Chú ý: – Giá trị phải xác định khai báo – Trong chương trình, KHƠNG thể thay đổi giá trị – #define thị tiền xử lý (preprocessing directive) • Dễ đọc, dễ thay đổi • Dễ chuyển đổi tảng phần cứng • Tốc độ nhanh Nội dung 6.1 Các kiểu liệu chuẩn C 6.2 Khai báo khởi tạo biến, 6.3 Biểu thức C 6.4 Các phép toán C 6.5 Một số toán tử đặc trưng 6.6 Các lệnh vào liệu với biến 10 6.3.1 Các loại biểu thức • a Biểu thức số học: – Là biểu thức mà giá trị đại lượng số học (số nguyên, số thực) – Các toán tử phép toán số học (cộng, trừ, nhân, chia…), toán hạng đại lượng số học (số, biến, hằng) – Ví dụ: • • • • a, b, c biến thuộc kiểu liệu số * 3.7 + 6/3 a + b – c… 11 6.3.1 Các loại biểu thức • b Biểu thức logic: – Là biểu thức mà giá trị giá trị logic, tức hai giá trị: Đúng (TRUE) Sai (FALSE) • Giá trị nguyên khác 0: Đúng (TRUE), • Giá trị 0: Sai (FALSE) – Các phép tốn logic gồm có • AND: VÀ logic, kí hiệu && • OR: HOẶC logic, kí hiệu || • NOT: PHỦ ĐỊNH, kí hiệu ! 12 6.3.1 Các loại biểu thức • c Biểu thức quan hệ: – Là biểu thức có sử dụng tốn tử quan hệ so sánh lớn hơn, nhỏ hơn, nhau, khác nhau… – Chỉ nhận giá trị giá trị Đúng (TRUE) Sai (FALSE) Biểu thức quan hệ trường hợp riêng biểu thức logic 13 6.3.1 Các loại biểu thức • Ví dụ biểu thức quan hệ: 14 6.3.1 Các loại biểu thức • Ví dụ biểu thức logic: 15 6.3.7 Sử dụng biểu thức • • • • Làm vế phải lệnh gán Làm toán hạng biểu thức khác Làm tham số thực lời gọi hàm Làm số cấu trúc lặp for, while, while • Làm biểu thức kiểm tra cấu trúc rẽ nhánh if, switch 16 Nội dung 6.1 Các kiểu liệu chuẩn C 6.2 Khai báo khởi tạo biến, 6.3 Biểu thức C 6.4 Các phép toán C 6.5 Một số toán tử đặc trưng 6.6 Các lệnh vào liệu với biến 17 6.4 Các phép tốn C • Bao gồm: – Nhóm phép tốn số học – Nhóm phép tốn thao tác bit – Nhóm phép tốn quan hệ – Nhóm phép tốn logic – Ngồi C cịn cung cấp số phép tốn khác phép gán, phép lấy địa chỉ… 18 6.4.1 Phép toán số học 19 6.4.7 Phép toán bit 1) 1) 20 10 6.6 Các lệnh vào liệu • C cung cấp hàm vào bản: – printf() – scanf() • Muốn sử dụng hàm printf() scanf() ta cần khai báo tệp tiêu đề stdio.h: #include Hoặc #include “stdio.h” 35 6.6.1 Hàm printf a Mục đích cú pháp: • Mục đích: – Hiển thị hình loại liệu như: Số, kí tự xâu kí tự – Một số hiệu ứng hiển thị đặc biệt xuống dịng, sang trang,… 36 18 a Mục đích cú pháp (2) • Cú pháp: printf(xau_dinh_dang , danh_sach_tham_so); –xau_dinh_dang: Qui định cách thức hiển thị liệu hình máy tính – danh_sach_tham_so: Danh sách giá trị hiển lên hình theo cách thức qui định xau_dinh_dang Có thể sử dụng: • • • • • Tên biến Tên số Biểu thức Hàm Giá trị cụ thể 37 a Mục đích cú pháp (3) • Ví dụ: Chương trình sau #include //Khai bao tep tieu de #include //Khai bao tep tieu de void main() //Viet chuong trinh chinh { int a = 5; float x = 1.234; printf(“Hien thi mot so nguyen a = %d mot so thuc x = %f”,a,x); getch(); } • Sẽ cho kết quả: Hien thi mot so nguyen a = va mot so thuc x =1.234000 38 19 a Mục đích cú pháp (4) • Trong xau_dinh_dang chứa: – Các kí tự thơng thường: Được hiển thị hình – Các nhóm kí tự định dạng: Xác định quy cách hiển thị tham số phần danh_sach_tham_so – Các kí tự điều khiển: Dùng để tạo hiệu ứng hiển thị đặc biệt xuống dòng (‘\n’) hay sang trang (‘\f’)… 39 a Mục đích cú pháp (5) • Mỗi nhóm kí tự định dạng dùng cho kiểu liệu Ví dụ: %d dùng cho kiểu nguyên %f dùng cho kiểu thực • Nếu nhóm kí tự định dạng tham số tương ứng không phù hợp với hiển thị kết khơng ý 40 20 a Mục đích cú pháp (6) • danh_sach_tham_so phải phù hợp với nhóm kí tự định dạng xau_dinh_dang về: – Số lượng – Kiểu liệu – Thứ tự 41 b Một số nhóm định dạng phổ biến Nhóm kí tự định dạng %c %i, %d %o Kiểu liệu char int, char int, char Kết Kí tự đơn lẻ Số thập phân Số bát phân (khơng có đằng trước) %x, %X int, char Số hexa (chữ thường/chữ hoa) %u unsigned int/char Số thập phân 42 21 b Một số nhóm định dạng phổ biến (2) Nhóm kí tự định dạng %ld, %li %lo Kiểu liệu long long Kết Số thập phân Số bát phân (khơng có đằng trước) %lx, %LX long Số hexa (chữ thường/chữ hoa) %lu unsigned long Số thập phân 43 c Một số nhóm định dạng phổ biến (3) Nhóm kí tự định dạng %s char [] %f float/double %e, %E float/double % Kiểu liệu Kết Hiển thị xâu kí tự kết thúc ‘\0’ Số thực dấu phẩy tĩnh Số thực dấu phẩy động Hiển thị kí tự % 44 22 c Độ rộng hiển thị - số nguyên • Đối với số nguyên – Có dạng %md, với m số ngun khơng âm – Ví dụ: Có số a = 1234 Lệnh: printf("%5d",a);//danh cho de hien thi a printf(“\n%5d",34); Cho kết quả: 1234 34 ( kí hiệu cho dấu cách đơn (space) ) 45 c Độ rộng hiển thị - số ngun (2) • Ví dụ: printf("\n%3d %15s %3c", 1, "nguyen van a", 'g'); printf("\n%3d %15s %3c", 2, "tran van b", 'k'); • Kết quả: nguyen van a tran van b g k 46 23 c Độ rộng hiển thị - số thực • m, n số nguyên không âm %m.nf Trong đó: – m vị trí để hiển thị số thực (dấu ‘.’ tính vị trí – n vị trí m vị trí để hiển thị phần thập phân 47 c Độ rộng hiển thị - số thực (2) • Ví dụ: printf("\n%f",17.345); printf("\n%.2f",17.345); printf("\n%7.2f",17.345); • Kết quả: 17.345000 17.35 17.35 48 24 c Độ rộng hiển thị - Chú ý • Khi số chỗ cần thiết để hiển thị nội dung liệu lớn định dạng Tự động cung cấp thêm chỗ để hiển thị trường hợp sau: – Số nguyên – Phần nguyên số thực – Xâu ký tự • Ví dụ: a=1000 printf(“So a la: %1d”, a); – Kết quả: So a la: 1000 49 d Căn lề phải, lề trái • Căn lề phải: – Khi hiển thị liệu, mặc định C lề phải • Căn lề trái: – Nếu muốn lề trái hiển thị liệu ta cần thêm dấu trừ - vào sau dấu % 50 25 d Căn lề phải, lề trái (2) • Ví dụ: printf("\n%-3d %-15s %5.2f %-3c", 9, "nguyen van a", 7.5, 'g'); printf("\n%-3d %-15s %5.2f %-3c", 10, “nguyen ha", 6.75, 'k'); • Kết quả: nguyen van a 10 nguyen 7.50g 6.75k 51 6.6.2 Hàm scanf a Mục đích cú pháp: • Mục đích: – Hàm scanf() dùng để nhập liệu từ bàn phím • Cú pháp: scanf(xau_dinh_dang,danh_sach_dia_chi); • Ví dụ: scanf(“%d %f”, &a, &b); 52 26 a Mục đích cú pháp (3) • Xau_dinh_dang: – Gồm ký tự qui định cho loại liệu nhập vào – Ví dụ: Với liệu định nhập vào kiểu nguyên xâu định dạng : %d • Danh_sach_dia_chi: – Bao gồm địa biến (toán tử &), phân tách dấu phẩy (,) 53 a Mục đích cú pháp (4) • danh_sach_dia_chi phải phù hợp với nhóm kí tự định dạng xau_dinh_dang về: – Số lượng – Kiểu liệu – Thứ tự 54 27 b Một số nhóm định dạng phổ biến Nhóm kí tự định dạng %c %d %o %x %u Kiểu liệu char int int int unsigned int Chú thích Kí tự đơn lẻ Số thập phân Số bát phân Số hexa Số thập phân 55 c Một số nhóm định dạng phổ biến (3) Nhóm kí tự định dạng %s char[] %f float %ld %lf long double % Kiểu liệu Chú thích Hiển thị xâu kí tự kết thúc ‘\0’ Số thực dấu phẩy tĩnh Số nguyên Số thực dấu phẩy tĩnh Đọc ký tự % 56 28 Ví dụ #include #include void main() { // khai bao bien int a; float x; char ch; // Nhap du lieu printf(“Nhap vao mot so nguyen”); scanf(“%d”,&a); printf(“\n Nhap vao mot so thuc”); scanf(“%f”,&x); 57 Ví dụ printf(“\n Nhap vao mot ki tu”); fflush(stdin); scanf(“%c”,&ch); // Hien thi du lieu vua nhap vao printf(“\n Nhung du lieu vua nhap vao”); printf(“\n So nguyen: %d”,a); printf(“\n So thuc : %.2f”,x); printf(“\n Ki tu: %c: ”,ch); getch(); } 58 29 Ví dụ • Kết quả: Nhap vao mot so nguyen: 2007 Nhap vao mot so thuc: 17.1625 Nhap vao mot ki tu: b Nhung du lieu vua nhap vao So nguyen: 2007 So thuc: 17.16 Ki tu: b 59 c Một số quy tắc cần lưu ý • Quy tắc 1: Khi đọc số – Hàm scanf() quan niệm kí tự số, dấu chấm (‘.’) kí tự hợp lệ – Khi gặp dấu phân cách tab, xuống dòng hay dấu cách (space bar) scanf() hiểu kết thúc nhập liệu cho số 60 30 c Một số quy tắc cần lưu ý (tiếp) • Quy tắc 2: Khi đọc kí tự: Hàm scanf() cho kí tự có đệm thiết bị vào chuẩn hợp lệ, kể kí tự tab, xuống dịng hay dấu cách Trước nhập liệu kí tự hay xâu kí tự ta nên dùng lệnh fflush(stdin) để xóa đệm 61 6.6.3 Các lệnh vào khác • Hàm getch(): thường dùng để chờ người sử dụng ấn phím kết thúc chương trình • Cú pháp getch(); • Để sử dụng hàm getch() ta cần khai báo tệp tiêu đề conio.h 62 31 6.6.3 Các lệnh vào khác (4) • Ví dụ: #include #include void main() { int a, b; printf("Nhap a: "); scanf("%d", &a); printf("Nhap b: "); scanf("%d", &b); printf("Tong hai so la: %d", a+b); printf("Nhan mot phim bat ky de ket thuc!"); getch(); } 63 Các lệnh nhập xuất khác • Kết quả: Nhap a: Nhap b: Tong hai so la: 10 Nhan mot phim bat ky de ket thuc! 64 32 ... float c ; c = a/b; // c = ? 32 16 6.7.4 Biểu th? ?c điều kiện • C? ? pháp biểu_ th? ?c_ 1 ? biểu_ th? ?c_ 2 : biểu_ th? ?c_ 3 – Giá trị biểu th? ?c điều kiện • Giá trị biểu_ th? ?c_ 2 biểu_ th? ?c_ 1 c? ? giá trị kh? ?c (tương... toán 27 Nội dung 6. 1 C? ?c kiểu liệu chuẩn C 6. 2 Khai báo khởi tạo biến, 6. 3 Biểu th? ?c C 6. 4 C? ?c phép toán C 6. 5 Một số toán tử đ? ?c trưng 6. 6 C? ?c lệnh vào liệu với biến 28 14 6. 5.1 C? ?c phép toán tăng... Dễ chuyển đổi tảng phần c? ??ng • T? ?c độ nhanh Nội dung 6. 1 C? ?c kiểu liệu chuẩn C 6. 2 Khai báo khởi tạo biến, 6. 3 Biểu th? ?c C 6. 4 C? ?c phép toán C 6. 5 Một số toán tử đ? ?c trưng 6. 6 C? ?c lệnh vào liệu