intTypePromotion=3

Bài giảng Tin học đại cương: Bài 7 - ĐH Bách khoa Hà Nội

Chia sẻ: Khang Duy | Ngày: | Loại File: PDF | Số trang:18

0
54
lượt xem
5
download

Bài giảng Tin học đại cương: Bài 7 - ĐH Bách khoa Hà Nội

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

Bài 7 Kiểu dữ liệu và biểu thức trong C thuộc bài giảng "Tin học đại cương", cùng nắm kiến thức trong chương này thông qua các các nội dung sau: các kiểu dữ liệu chuẩn trong C, khai báo và khởi động 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, các lệnh vào ra dữ liệu với các biến.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học đại cương: Bài 7 - ĐH Bách khoa Hà Nội

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Nội dung VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG 7.1. Các kiểu dữ liệu chuẩn trong C 7.2. Khai báo và khởi tạo biến, hằng TIN HỌC ĐẠI CƯƠNG 7.3. Biểu thức trong C Phần 3. Lập trình C 7.4. Các phép toán trong C 7.5. Một số toán tử đặc trưng 7.6. Các lệnh vào ra dữ liệu với các biến Bài 7. Kiểu dữ liệu và biểu thức trong C 2 7.1. C|c kiểu dữ liệu chuẩn trong C 7.1. C|c kiểu dữ liệu chuẩn trong C Kiểu dữ liệu Ý nghĩa Kích thước Miền dữ liệu Kiểu dữ liệu Ý nghĩa Kích thước Miền dữ liệu unsigned long Số nguyên không 4 byte 0 dấu 4,294,967,295 unsigned char Kí tự 1 byte 0  255 long Số nguyên có dấu 4 byte -2,147,483,648  char Kí tự 1 byte -128  127 2,147,483,647 float Số thực dấu phẩy 4 byte  3.4E-38  unsigned int Số nguyên không 2 byte 065.535 động,  3.4E+38 dấu độ chính x|c đơn short int Số nguyên 2 byte -32.76832.767 double Số thực dấu phẩy 8 byte  1.7E-308   có dấu động, 1.7E+308 int Số nguyên có dấu 2 byte -32.76832.767 độ chính x|c kép long double Số thực dấu phẩy 10 byte  3.4E-4932   động, 1.1E+4932 độ chính x|c kép mở rộng 3 4 1
  2. Nội dung 7.2.1. Khai b|o v{ khởi tạo biến 7.1. Các kiểu dữ liệu chuẩn trong C • Một biến trước khi sử dụng phải được khai b|o • Cú pháp khai báo: 7.2. Khai báo và khởi tạo biến, hằng kieu_du_lieu ten_bien; 7.3. Biểu thức trong C Hoặc: 7.4. Các phép toán trong C kieu_du_lieu ten_bien1, …, ten_bienN; • Ví dụ: Khai b|o một biến x thuộc kiểu số nguyên 2 7.5. Một số toán tử đặc trưng byte có dấu (int), biến y, z,t thuộc kiểu thực 4 byte (float) như sau: 7.6. Các lệnh vào ra dữ liệu với các biến int x; float y,z,t; x = 3; y = x + 1; 5 6 7.2.1. Khai b|o v{ khởi tạo biến (2) 7.2.2. Khai b|o hằng Kết hợp khai b|o v{ khởi tạo • Cách 1: Dùng từ khóa #define: • Cú pháp: kieu_du_lieu ten_bien = gia_tri_ban_dau; – Cú pháp: Hoặc: #define ten_hang gia_tri kieu_du_lieu bien1=gia_tri1, bienN=gia_triN; – Ví dụ: • Ví dụ: #define MAX_SINH_VIEN 50 int a = 3;// sau lenh nay bien a se co gia tri bang 3 #define CNTT “Cong nghe thong tin” float x = 5.0, y = 7.6; // sau lenh nay x co gia // tri 5.0, y co gia tri 7.6 #define DIEM_CHUAN 23.5 7 8 2
  3. 7.2.2. Khai b|o hằng 7.2.2. Khai b|o hằng • Chú ý: • C|ch 2: Dùng từ khóa const : – Gi| trị của c|c hằng phải được x|c định ngay khi – Cú pháp: khai báo. const kieu_du_lieu ten_hang = gia_tri; – Trong chương trình, KHÔNG thể thay đổi được – Ví dụ: gi| trị của hằng. const int MAX_SINH_VIEN = 50; – #define l{ chỉ thị tiền xử lý (preprocessing const char CNTT[20] = “Cong nghe thong tin”; directive) • Dễ đọc, dễ thay đổi const float DIEM_CHUAN = 23.5; • Dễ chuyển đổi giữa c|c nền tảng phần cứng hơn • Tốc độ nhanh hơn 9 10 Nội dung 7.3.1. C|c loại biểu thức 7.1. Các kiểu dữ liệu chuẩn trong C 7.2. Khai báo và khởi tạo biến, hằng • a. Biểu thức số học: – L{ biểu thức m{ gi| trị của nó l{ c|c đại lượng số 7.3. Biểu thức trong C học (số nguyên, số thực). 7.4. Các phép toán trong C – C|c to|n tử l{ c|c phép to|n số học (cộng, trừ, 7.5. Một số toán tử đặc trưng nh}n, chia…), c|c to|n hạng l{ c|c đại lượng số học (số, biến, hằng). 7.6. Các lệnh vào ra dữ liệu với các biến – Ví dụ: • 3 * 3.7 • 8 + 6/3 • a + b – c // Với a, b, c l{ c|c biến thuộc một kiểu dữ liệu số n{o đó. 11 12 3
  4. 7.3.1. C|c loại biểu thức 7.3.1. C|c loại biểu thức • b. Biểu thức logic: • c. Biểu thức quan hệ: – L{ biểu thức m{ gi| trị của nó l{ c|c gi| trị logic, – L{ những biểu thức trong đó có sử dụng c|c tức l{ một trong hai gi| trị: Đúng (TRUE) hoặc to|n tử quan hệ so s|nh như lớn hơn, nhỏ hơn, Sai (FALSE). bằng nhau, kh|c nhau… • Gi| trị nguyên kh|c 0: Đúng (TRUE), • Gi| trị 0: Sai (FALSE). – Chỉ có thể nhận gi| trị l{ một trong 2 gi| trị – C|c phép to|n logic gồm có Đúng (TRUE) hoặc Sai (FALSE) • AND: VÀ logic, kí hiệu l{ &&  Biểu thức quan hệ l{ một trường hợp riêng • OR: HOẶC logic, kí hiệu l{ || của biểu thức logic. • NOT: PHỦ ĐỊNH, kí hiệu l{ ! 13 14 7.3.1. C|c loại biểu thức 7.3.1. C|c loại biểu thức • Ví dụ về biểu thức quan hệ: • Ví dụ về biểu thức logic: 15 16 4
  5. 7.3.1. Sử dụng biểu thức Nội dung • L{m vế phải của lệnh g|n. 7.1. Các kiểu dữ liệu chuẩn trong C • L{m to|n hạng trong c|c biểu thức kh|c. 7.2. Khai báo và khởi tạo biến, hằng • L{m tham số thực trong lời gọi h{m. 7.3. Biểu thức trong C • L{m chỉ số trong c|c cấu trúc lặp for, 7.4. Các phép toán trong C while, do while. 7.5. Một số toán tử đặc trưng • L{m biểu thức kiểm tra trong c|c cấu trúc rẽ 7.6. Các lệnh vào ra dữ liệu với các biến nhánh if, switch. 17 18 7.4. Các phép toán trong C 7.4.1. Phép to|n số học • Bao gồm: – Nhóm c|c phép to|n số học – Nhóm c|c phép to|n quan hệ – Nhóm các phép toán logic – Nhóm các phép toán thao tác trên bit – Ngo{i ra C còn cung cấp một số phép to|n kh|c nữa như phép g|n, phép lấy địa chỉ… 19 20 5
  6. 7.4.2. Phép toán trên bit (bitwise) 7.4.2. Phép toán trên bit 1) 1) 21 22 7.4.3. Phép to|n quan hệ 7.4.4. Phép toán logic 23 24 6
  7. 7.4.5. Phép toán gán 7.4.5. Phép toán gán • Cú pháp • Biểu thức g|n l{ biểu thức nên nó cũng có gi| trị. • Gi| trị của biểu thức g|n bằng gi| trị của biểu_thức: tên_biến = biểu_thức;  Có thể g|n gi| trị của biểu thức g|n cho một biến • Lấy gi| trị của biểu_thức gán cho tên_biến kh|c hoặc sử dụng như một biểu thức bình thường • Ví dụ: • Ví dụ: int a, b, c; int a, b, c; a = b = 2007; a = 3; c = (a = 20) * (b = 30); b = a + 5; c = a * b; 25 26 7.4.5. Phép toán gán 7.4.6. Thứ tự ưu tiên c|c phép to|n • Phép to|n g|n thu gọn: x = x + y; giống như x += y; • Dạng lệnh g|n thu gọn n{y còn |p dụng được với c|c phép to|n kh|c: +, -, *, /, %, >>,
  8. Ví dụ Nội dung • a < 10 && 2 * b < c 7.1. Các kiểu dữ liệu chuẩn trong C •  ( a < 10 ) && ( ( 2 * b ) < c ) 7.2. Khai báo và khởi tạo biến, hằng 7.3. Biểu thức trong C 7.4. Các phép toán trong C 7.5. Một số toán tử đặc trưng 7.6. Các lệnh vào ra dữ liệu với các biến 29 30 7.5.1. C|c phép to|n tăng giảm một đơn vị Tiền tố v{ hậu tố • Tăng hoặc giảm một đơn vị cho biến: • Tiền tố: Thay đổi gi| trị của biến trước khi sử dụng – = + 1; • Hậu tố: Tính to|n gi| trị của biểu thức bằng gi| trị ban đầu của biến, sau đó mới thay đổi gi| trị của  ++; biến – = - 1; • Ví dụ:  --; int a, b, c; a = 3; // a bang 3 – Ví dụ: b = a++;// Dang hau to int a = 5; // b bằng 3; a bằng 4 float x = 10; c = ++b;// Dang tien to a++; // tương đương với a = a + 1; // b bằng 4, c bằng 4; x--; // tương đương với x = x – 1; 31 32 8
  9. 7.5.2. Phép to|n lấy địa chỉ biến (&) 7.5.3. Phép to|n chuyển đổi kiểu bắt buộc • Biến thực chất l{ một vùng nhớ được đặt tên (l{ tên của • Chương trình dịch sẽ tự động chuyển đổi kiểu biến) trên bộ nhớ của m|y tính. – char  int  long int  float  • Mọi ô nhớ trên bộ nhớ m|y tính đều được đ|nh địa chỉ. Do double  long double đó mọi biến đều có địa chỉ • Ngược lại • & ; – Số nguyên long int 50,000 không phải l{ một số nguyên – Ví dụ: int a = 2006; kiểu int vì phạm vi biểu diễn của kiểu int l{ từ (-32,768  &a; // co gia tri la 158 hay 9E đến 32,767). 1  Phải ép kiểu . • Cú pháp: .. .. . 157 a D6 07 158 159 () ; 160 . . . 33 34 7.5.3. Phép to|n chuyển đổi kiểu bắt buộc (2) 7.7.4. Biểu thức điều kiện • Ví dụ: • Cú pháp #include #include – biểu_thức_1 ? biểu_thức_2 : biểu_thức_3 void main() – Gi| trị của biểu thức điều kiện { long int li; int i; float f; clrscr(); • Gi| trị của biểu_thức_2 nếu biểu_thức_1 có gi| trị li = 0x123456; f = 123.456; kh|c 0 (tương ứng với gi| trị logic ĐÚNG), • Ngược lại: Gi| trị của biểu_thức_3 nếu biểu_thức_1 có i = (int) li; gi| trị bằng 0 (tương ứng với gi| trị logic SAI). printf(“\n li = %ld; i = %d”,li, i); • Ví dụ: i = (int) f; float x, y, z; // khai báo biến printf(“\n f = %f; i = %d”,f, i); x = 3.8; y = 7.6; //gán giá trị cho các biến x, y getch(); z = (x
  10. Nội dung 7.6. C|c lệnh v{o ra dữ liệu 7.1. Các kiểu dữ liệu chuẩn trong C • C cung cấp 2 h{m v{o ra cơ bản: 7.2. Khai báo và khởi tạo biến, hằng – printf() – scanf() 7.3. Biểu thức trong C • Muốn sử dụng 2 h{m printf() và 7.4. Các phép toán trong C scanf() ta cần khai b|o tệp tiêu đề 7.5. Một số toán tử đặc trưng stdio.h: 7.6. Các lệnh vào ra dữ liệu #include Hoặc #include “stdio.h” 37 38 7.6.1. Hàm printf a. Mục đích v{ cú ph|p (2) a. Mục đích và cú pháp: • Cú pháp: printf(xau_dinh_dang [, danh_sach_tham_so]); • Mục đích: – Hiển thị ra m{n hình c|c loại dữ liệu cơ bản –xau_dinh_dang: Qui định c|ch thức hiển như: Số, kí tự v{ x}u kí tự thị dữ liệu ra m{n hình m|y tính. – Một số hiệu ứng hiển thị đặc biệt như xuống –danh_sach_tham_so: Danh s|ch c|c biến sẽ dòng, sang trang,… được hiển thị gi| trị lên m{n hình theo c|ch thức được qui định trong xau_dinh_dang. 39 40 10
  11. a. Mục đích v{ cú ph|p (3) a. Mục đích v{ cú ph|p (4) • Ví dụ: Chương trình sau • Trong xau_dinh_dang chứa: #include – C|c kí tự thông thường: Được hiển thị ra m{n #include hình. void main() { int a = 5; – C|c nhóm kí tự định dạng: X|c định quy c|ch float x = 1.234; hiển thị c|c tham số trong phần printf(“Hien thi mot so nguyen %d và mot danh_sach_tham_so. so thuc %f”,a,x); – C|c kí tự điều khiển: Dùng để tạo c|c hiệu ứng getch(); hiển thị đặc biệt như xuống dòng (‘\n’) hay sang } trang (‘\f’)… • Sẽ cho ra kết quả: Hien thi mot so nguyen 5 va mot so thuc 1.234000 41 42 a. Mục đích v{ cú ph|p (5) a. Mục đích v{ cú ph|p (6) • Mỗi nhóm kí tự định dạng chỉ dùng cho một • danh_sach_tham_so phải phù hợp với c|c kiểu dữ liệu nhóm kí tự định dạng trong xau_dinh_dang Ví dụ: %d dùng cho kiểu nguyên về: %f dùng cho kiểu thực – Số lượng – Kiểu dữ liệu • Nếu giữa nhóm kí tự định dạng v{ tham số – Thứ tự tương ứng không phù hợp với nhau thì sẽ hiển thị ra kết quả không như ý. 43 44 11
  12. b. Một số nhóm định dạng phổ biến b. Một số nhóm định dạng phổ biến (2) Nhóm kí tự Kiểu dữ liệu Kết quả Nhóm kí tự Kiểu dữ liệu Kết quả định dạng định dạng %c int, char Kí tự đơn lẻ %ld, %li long Số thập ph}n %i, %d int, char Số thập ph}n %lo long Số b|t ph}n (không có 0 đằng trước) %o int, char Số b|t ph}n (không có 0 đằng trước) %lx, %LX long Số hexa (chữ thường/chữ hoa) %x, %X int, char Số hexa (chữ thường/chữ hoa) %lu unsigned long Số thập ph}n %u unsigned Số thập ph}n int/char 45 46 c. Một số nhóm định dạng phổ biến (3) c. Độ rộng hiển thị - số nguyên • Đối với số nguyên hoặc ký tự hoặc xâu ký tự: Nhóm kí tự Kiểu dữ liệu Kết quả – Có dạng %md, với m l{ số nguyên không }m định dạng – Ví dụ: Có số a = 1234 %s char [] Hiển thị x}u kí tự Lệnh: kết thúc bởi ‘\0’ printf("%5d",a);//danh 5 cho de hien thi a %f float/double Số thực dấu phẩy printf(“\n%5d",34); tĩnh Cho ra kết quả: 1234 %e, %E float/double Số thực dấu phẩy 34 động ( kí hiệu cho dấu c|ch đơn (space) ) 48 47 12
  13. c. Độ rộng hiển thị - số nguyên (2) c. Độ rộng hiển thị - số thực • m, n l{ 2 số nguyên không }m • Ví dụ: printf("\n%3d %15s %3c", 1, "nguyen van a", 'g'); %m.nf printf("\n%3d %15s %3c", 2, "tran van b", 'k'); Trong đó: • Kết quả: – m vị trí để hiển thị số thực 1 nguyen van a g – n vị trí trong m vị trí đó để hiển thị phần thập phân. 2 tran van b k 49 50 c. Độ rộng hiển thị - số thực (2) c. Độ rộng hiển thị - Chú ý • Ví dụ: • Khi số chỗ cần thiết để hiển thị nội dung dữ printf("\n%f",17.345); liệu lớn hơn trong định dạng: printf("\n%.2f",17.345); – Tự động cung cấp thêm chỗ mới để hiển thị chứ không cắt bớt nội dung của dữ liệu. printf("\n%7.2f",17.345); – Ví dụ: a=1000 • Kết quả: printf(“So a la: %1d”, a); 17.345000 – Kết quả: 17.34 17.34 So a la: 1000 51 52 13
  14. d. Căn lề phải, lề tr|i d. Căn lề phải, lề tr|i (2) • Căn lề phải: – Khi hiển thị dữ liệu, mặc định C căn lề phải • Ví dụ: • Căn lề trái: printf("\n%-3d %-15s %.2f %-3c", – Nếu muốn căn lề tr|i khi hiển thị dữ liệu ta chỉ 9, "nguyen van a", 7.5, 'g'); cần thêm dấu trừ - v{o ngay sau dấu %. printf("\n%-3d %-15s %.2f %-3c", 10, “nguyen ha", 6.75, 'k'); • Kết quả: 9 nguyen van a 7.50 g 10 nguyen ha 6.75 k 53 54 7.6.2. Hàm scanf a. Mục đích v{ cú ph|p (3) • Xau_dinh_dang: a. Mục đích và cú pháp: – Gồm c|c ký tự được qui định cho từng loại dữ • Mục đích: liệu được nhập v{o. – H{m scanf() dùng để nhập dữ liệu từ b{n phím – Ví dụ: Với dữ liệu định nhập v{o l{ kiểu nguyên • Cú pháp: thì x}u định dạng l{ : %d scanf(xau_dinh_dang[,danh_sach_dia_chi]); • Danh_sach_dia_chi: • Ví dụ: – Bao gồm c|c địa chỉ của c|c biến (to|n tử &), int a; float b; ph}n t|ch nhau bởi dấu phẩy (,) scanf(“%d %f”, &a, &b); 55 56 14
  15. a. Mục đích v{ cú ph|p (4) b. Một số nhóm định dạng phổ biến • danh_sach_dia_chi phải phù hợp với c|c Nhóm kí tự Kiểu dữ liệu Chú thích nhóm kí tự định dạng trong xau_dinh_dang định dạng về: %c char Kí tự đơn lẻ – Số lượng – Kiểu dữ liệu %d int Số thập ph}n – Thứ tự %o int Số b|t ph}n %x int Số hexa %u unsigned int Số thập ph}n 57 58 c. Một số nhóm định dạng phổ biến (3) Ví dụ #include Nhóm kí tự Kiểu dữ liệu Chú thích #include void main() định dạng { %s char* Nhập x}u kí tự kết // khai bao bien thúc bởi ‘\0’ int a; float x; %f float Số thực dấu phẩy char ch; char str[30]; tĩnh // Nhap du lieu %ld long Số nguyên printf(“Nhap vao mot so nguyen”); scanf(“%d”,&a); %lf double Số thực dấu phẩy printf(“\n Nhap vao mot so thuc”); tĩnh scanf(“%f”,&x); 60 59 15
  16. Ví dụ Ví dụ printf(“\n Nhap vao mot ki tu”); • Kết quả: fflush(stdin); scanf(“%c”,&ch); Nhap vao mot so nguyen: 2007 printf(“\n Nhap vao mot xau ki tu”); Nhap vao mot so thuc: 17.1625 fflush(stdin); scanf(“%s”,str); Nhap vao mot ki tu: b Nhap vao mot xau ki tu: ngon ngu lap trinh C // Hien thi du lieu vua nhap vao printf(“\n Nhung du lieu vua nhap vao”); Nhung du lieu vua nhap vao printf(“\n So nguyen: %d”,a); So nguyen: 2007 printf(“\n So thuc : %.2f”,x); So thuc: 17.16 printf(“\n Ki tu: %c: ”,ch); Ki tu: b printf(“\n Xau ki tu: %s”,str); Xau ki tu: ngon getch(); } 61 62 c. Một số quy tắc cần lưu ý c. Một số quy tắc cần lưu ý (tiếp) • Quy tắc 1: Khi đọc số • Quy tắc 2: Khi đọc kí tự: – H{m scanf() quan niệm rằng mọi kí tự số, dấu Hàm scanf() cho rằng mọi kí tự có trong bộ chấm (‘.’) đều l{ kí tự hợp lệ. đệm của thiết bị vào chuẩn đều là hợp lệ, kể – Khi gặp c|c dấu ph}n c|ch như tab, xuống dòng cả các kí tự tab, xuống dòng hay dấu cách. hay dấu c|ch (space bar) thì scanf() sẽ hiểu l{ kết thúc nhập dữ liệu cho một số 63 64 16
  17. c. Một số quy tắc cần lưu ý (tiếp) 7.6.3. C|c lệnh v{o ra kh|c • Quy tắc 3: Khi đọc xâu kí tự: • Hàm gets(): + Hàm scanf() nếu gặp các kí tự dấu trắng, Dùng để nhập v{o từ b{n phím một x}u kí tự bao dấu tab hay dấu xuống dòng thì nó sẽ hiểu là gồm cả dấu c|ch, điều m{ h{m scanf() không l{m được. kết thúc nhập dữ liệu cho một xâu kí tự. • Cú pháp : + Trước khi nhập dữ liệu kí tự hay xâu kí tự gets (biến_xâu_kí_tự); ta nên dùng lệnh fflush(stdin) để xóa • Ví dụ: bộ đệm. char str[30]; printf(“Nhap vao mot xau ki tu:”); fflush(stdin); gets(str); 65 66 7.6.3. C|c lệnh v{o ra kh|c (2) 7.6.3. C|c lệnh v{o ra kh|c (3) • Hàm puts(): • H{m getch(): thường dùng để chờ người sử dụng ấn một phím bất kì rồi sẽ kết thúc Hiển thị ra m{n hình nội dung x}u_kí_tự v{ chương trình. sau đó đưa con trỏ xuống dòng mới. • Cú pháp • Cú pháp: puts(xâu_kí_tự); getch(); • Ví dụ: • Sử dụng h{m gets(), puts(), cần puts(“Nhap vao xau ki tu:”); khai b|o tệp tiêu đề stdio.h • Tương đương với: • Sử dụng h{m getch(), cần khai b|o tệp printf(“%s\n”, “Nhap vao xau ki tu:“); tiêu đề conio.h Hoặc printf(“Nhap vao xau ki tu:\n”); 67 • (Hàm tương tự getchar()) 68 17
  18. 7.6.3. C|c lệnh v{o ra kh|c (4) C|c lệnh nhập xuất kh|c • Ví dụ: • Kết quả: #include #include Nhap vao mot xau ki tu: void main() ngon ngu lap trinh C { char str[30]; Xau vua nhap vao: puts(“Hay cho biet ho ten ban:”); ngon ngu lap trinh C fflush(stdin); gets(str); printf(“Xin chao ”); An phim bat ki de ket thuc ... puts(str); puts(“An phim bat ki de ket thuc...”); getch(); } 69 70 18

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản