Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 7: Các thành phần cơ bản và các kiểu dữ liệu của C
7.1 Danh hiệu
7.2 Các kiểu dữ liệu chuẩn của C
7.3 Hằng (constant)
7.4 Biến (variable)
7.5 Biểu thức
7.6 Các phép toán của C
7.7 Cấu trúc tổng quát của một chương trình C
Bài tập cuối chương
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 7: Các thành phần cơ bản và các kiểu dữ liệu của C", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 7: Các thành phần cơ bản và các kiểu dữ liệu của C
ật đó lên 1, nếu bằng 1 thì đưa về 0 và in ra kết quả. #include #include #define MASK 0x0200 main() { int a; clrscr(); CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit printf ("Moi nhap mot so: "); scanf (%d, &a); if (a & MASK) printf ("Bit 9 bang 1 \n"); else printf ("Bit 9 bang 0 \n"); printf ("Tri cua bien a truoc khi dao bit 9 la %d \n", a); a = a ^ MASK; if (a & MASK) printf ("Bit 9 sau khi dao bang 1 \n"); else printf ("Bit 9 sau khi dao bang 0 \n"); printf ("Tri cua bien a sau khi dao bit 9 la %d \n", a); getch(); } CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Toán tử NOT (~) cho phép thực hiện việc đảo tất cả các bit của một giá trị từ 0 lên 1 và từ 1 xuống 0. Phép toán như vậy ta gọi là phép bù 1 giá trị hiện hành. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Toán tử dịch trái (>) cho phép thực hiện việc dời các bit của toán hạng sang bên trái hoặc sang phải. Cú pháp như sau: biểu_thức_nguyên << số_bit_dời biểu_thức_nguyên >> số_bit_dời Với biểu_thức_nguyên và số_bit_dời có thể là hằng, biến hoặc biểu thức kiểu nguyên. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Trong phép dịch trái, các bit ở bên phải của toán hạng sẽ được ghi vào các giá trị là 0 CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Ví dụ: CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Trong phép dịch phải ta có hai trường hợp: - Nếu toán hạng bên trái có dữ liệu thuộc dạng unsigned (unsigned int, unsigned long, unsigned char) thì phép dịch phải sẽ ghi 0 vào các bit bên trái của kết quả. - Còn nếu toán hạng bên trái có dữ liệu thuộc dạng signed (int, long, char) thì phép dịch phải sẽ ghi bit dấu vào các bit bên trái của kết quả. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Ví dụ: CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.4 Toán tử trên bit Ví dụ: CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.5 Toán tử tăng giảm Trong C có hai toán tử đặc biệt gọi là toán tử tăng (++) và toán tử giảm (--) dùng để tăng hoặc giảm một biến nào đó đi 1.Cú pháp sử dụng: ++ biến biến ++ – – biến biến – – với biến có thể thuộc loại bất kỳ hoặc pointer. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.5 Toán tử tăng giảm Ký hiệu ++ và có thể được đặt trước (gọi là tiền tố) hoặc sau (gọi là hậu tố) một tên biến. Ví dụ: ++ a; hoặc a ++; chính là a = a + 1; CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.5 Toán tử tăng giảm Ví dụ: int i = 12; double a, b; a = ++i; b = i ++; CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.5 Toán tử tăng giảm Cần lưu ý rằng cặp dấu ++ hoặc phải được viết liền nhau và cần phải rõ ràng, trong những trường hợp có thể lầm lẫn, ví dụ như 2 biểu thức: a++ + b và a + ++b là khác nhau. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.5 Toán tử tăng giảm Các phép toán tăng giảm này nhanh hơn nhiều so với thao tác bình thường là cộng hoặc trừ biến đó với 1 rồi gán trở lại cho biến đó vì chúng rất gần với các phép toán tăng giảm của ngôn ngữ máy CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.5 Toán tử tăng giảm Ví dụ: Trong thân vòng while của chương trình tính tổng từ 1 tới n, ta có thể viết như sau s = 0; so = 1; while (so <= n) { s = s + so; so++; } CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Phép toán gán là phép toán cơ bản trong mỗi ngôn ngữ lập trình. Trong C phép gán có hai dạng theo cú pháp sau đây. Gán đơn giản biến = trị Gán phức tạp biến op = tri Với trị có thể là hằng, biến hoặc là biểu thức op có thể là * / % + – hoặc > & ^ | CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Phép gán trị phức tạp biến op = tri chính là biến = biến op tri Ví dụ: int a, b = 2; a = 4; a = 4 b *= a * 3; b = 24 CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Trong phép gán đơn, Nếu hai toán hạng có cùng kiểu thì toán hạng bên phải sẽ được gán vào toán hạng bên trái. Nếu không, trước khi gán toán hạng bên phải sẽ được chuyển theo kiểu của toán hạng bên trái, điều này có thể sẽ gây ra kết quả sai hoặc không chính xác, nếu như kiểu của toán hạng bên trái thấp hơn kiểu của toán hạng bên phải. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Kiểu toán hạng trái Kiểu toán hạng phải Trị có thể mất sau khi gán signed char unsigned char Giá trị > 127, thành số âm char short int Mất trị từ bit 8 trở đi char int Mất trị từ bit 8 trở đi char long Mất trị từ bit 8 trở đi short int long int Mất 16 bit cao (một int) int float Mất phần thập phân và phần trị lớn hơn một int float double Độ chính xác do làm tròn CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Đối với phép gán phức, việc chuyển kiểu được thực hiện theo việc chuyển kiểu tự động trong khi thực hiện việc tính toán biểu thức và việc chuyển kiểu của phép gán đơn giản. Phép gán phức hợp này tỏ ra rất hiệu quả nhất là khi các toán hạng bên trái là những biến khá dài. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Ví dụ: Thay vì viết: n = n * (x + 5) + n * (a + 8); ta chỉ cần viết: n *= x + 5 + a + 8; Hoặc phức tạp hơn a[i][j] –= b[i][j]; thay vì phải viết dài dòng a[i][j] = a[i][j] – b[i][j]; . CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.6 Toán tử gán Đối với C, nếu một biểu thức gán được kết thúc bằng một dấu ";" thì ta có một lệnh gán, còn nếu biểu thức gán này được sử dụng trong một biểu thức phức hợp khác thì biểu thức gán sẽ có trị là trị của biến sau khi gán. Ví dụ: int a = 4, b = 3; b + = (a = 2 * b) + (a *= b); Thực hiện (a = 2 * b), nghĩa là a=6, sau đó tính tiếp. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.7 Toán tử phẩy - Biểu thức phẩy Cú pháp: biểu_thức_1, biểu_thức_kết_quả Với biểu_thức_1 và biểu_thức_kết_quả là hai biểu thức bất kỳ. Ví dụ: m = (a = 2, t = a + 3); sẽ cho a = 2, t = 5 và m = t = 5 hoặc x = (t = 1, t + 4); sẽ cho t = 1 và x = 5 CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.8 Toán tử điều kiện - biểu thức điều kiện Trong ngôn ngữ C có một toán tử khá đặc biệt gọi là toán tử điều kiện, ký hiệu của toán tử điều kiện là hai dấu "?" và ":" theo cú pháp sau: dieu-kien ? bieu-thuc1 : bieu-thuc2 với dieu-kien là một biểu thức bất kỳ có kết quả thuộc kiểu chuẩn (scalar type) bieu-thuc1, bieu-thuc2 là hai biểu thức bất kỳ và dĩ nhiên có thể là một biểu thức điều kiện khác. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.8 Toán tử điều kiện - biểu thức điều kiện Ví dụ: Thay vì phải viết dài dòng if ( i >0 ) n = 1; else n = 0; ta chỉ cần dùng biểu thức điều kiện n =(i > 0) ? 1 : 0; CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.8 Toán tử điều kiện - biểu thức điều kiện Ví dụ: Viết chương trình nhập một ký tự, đổi ký tự đó sang ký tự hoa nếu đó là ký tự thường. #include #include main() { char c; clrscr(); printf ("Nhap mot ky tu: "); CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.8 Toán tử điều kiện - biểu thức điều kiện c = getchar(); (1) c =( c >= 'a' && c <= 'z' ) ? c - 32 : c; (2) printf ("Ky tu da duoc doi la: "); putchar (c); getch(); } CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.9 Toán tử sizeof Đây là một toán tử cho ta kích thước của một biến hoặc một kiểu dữ liệu nào đó. Do phạm vi sử dụng của sizeof rất rộng và thường được dùng để lấy kích thước các kiểu dữ liệu phức hợp như struct, union... Việc sử dụng toán tử này cho phép ta không phải quan tâm đến chiều dài cụ thể của các biến. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.9 Toán tử sizeof Toán hạng của sizeof là một biến hoặc một kiểu dữ liệu bất kỳ nào đó đã định nghĩa. sizeof (biến) sizeof biến sizeof (kiểu) Kết quả của toán tử này là một giá trị nguyên chỉ kích thước (tính bằng byte hoặc char) của kiểu dữ liệu hoặc của biến đó. Biến hoặc kiểu này có thể là một biến hoặc một kiểu đơn giản hay phức hợp. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.9 Toán tử sizeof Ví dụ: Nếu có một biến đã khai báo: double f; thì: sizeof (f); sizeof f; hoặc: sizeof (double); sẽ cho ta kết quảlà 8 (byte). CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.10 Độ ưu tiên của các toán tư Trong một biểu thức, các phép toán luôn được thực hiện theo một mức độ ưu tiên khác nhau, và nếu cùng một độ ưu tiên thì các phép toán sẽ được kết hợp với nhau theo một trật tự nhất định. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.6 CÁC PHÉP TOÁN CỦA C 7.6.10 Độ ưu tiên của các toán tư Độ ưu tiên Phép toán Thứ tự kết hợp 1 () [ ] ->. Trái qua phải 2 ! ~ ++ – + (type) * & sizeof Phải qua trái * 3 * / % Trái qua phải 4 + – Trái qua phải 5 > Trái qua phải 6 >= Trái qua phải 7 == != Trái qua phải 8 & Trái qua phải 9 ^^ Trái qua phải 10 | Trái qua phải 11 && Trái qua phải 12 || Trái qua phải 13 ?: Trái qua phải * 14 = += –= *= /= %= >= &= |= ^= Phải qua trái * 15 , Trái qua phải CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.7 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH C Một chương trình C tổng quát bao hàm hai phần: phần khai báo đầu (header) và phần hàm (function). Phần khai báo đầu của một chương trình C bao gồm: - Các lệnh tiền xử lý: include, define ... - Các khai báo hằng, biến ngoài ... - Các prototype của các hàm được sử dụng trong chương trình CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.7 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH C Phần hàm của một chương trình C là phần định nghĩa các hàm sử dụng trong chương trình, trong các hàm này phải có hàm main(). CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.7 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH C Ví dụ: Nhập một số kiểm tra số đó chẵn hay lẻ. #include #include int kiem_tra (int so); /* ham kiem_tra nhan vao doi so la mot so nguyen, tra ve tri - 0 la so chan - 1 la so le */ phần khai báo CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.7 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH C main() { int n; clrscr(); printf ("Nhap mot so: "); scanf ("%d", &n); if (kiem_tra(n)) printf ("So da nhap la so le \n"); CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C 7.7 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH C else printf ("So da nhap la so chan \n"); getch(); } int kiem_tra (int so) { return (so % 2 == 0)? 0:1; } CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C BÀI TẬP CUỐI CHƯƠNG 1. Viết chương trình in ra màn hình trị thập phân của các hằng sau đây 067 01234 0x1al 0x89ad 0xfb 'h' 022 02365 2. Nhập ba số, tìm số lớn nhất và nhỏ nhất trong ba số đó. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C BÀI TẬP CUỐI CHƯƠNG 3. Nhập bốn số, sắp xếp theo thứ tự từ lớn tới nhỏ và từ nhỏ tới lớn theo menu sau: 1. Từ lớn tới nhỏ 2. Từ nhỏ tới lớn 3. Kết thúc Mời bạn chọn thao tác (1...3): 4. Nhập ba cạnh tam giác, kiểm tra ba cạnh đó có thỏa điều kiện hình thành tam giác không, in kết quả kiểm tra. CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C BÀI TẬP CUỐI CHƯƠNG 5. Nhập ba cạnh tam giác, kiểm tra ba cạnh đó có thỏa điều kiện hình thành tam giác không, nếu thỏa in ra kết quả xem tam giác đó là tam giác gì (vuông thì vuông tại đâu, cân thì cân tại đâu ...)? CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C BÀI TẬP CUỐI CHƯƠNG 6. Viết chương trình nhập một ký tự và xử lý theo yêu cầu sau: - Nếu ký tự là hoa thì đổi sang thường, in kết quả đổi - Nếu ký tự là thường thì không làm gì cả, in kết quả - Nếu ký tự là ký số thì in ra màn hình câu: "Day la mot ky so". CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C BÀI TẬP CUỐI CHƯƠNG 7. Dùng hàm pow () để tính bình phương và lũy thừa ba của một số nhập từ bàn phím. 8. Viết chương trình đổi từ độ Fahrenheit (F) sang độ Celcius (C) theo công thức sau: F C 32 9 5 CHƯƠNG 7 CÁC THÀNH PHẦN CƠ BẢN VÀ CÁC KIỂU DỮ LIỆU CỦA C
File đính kèm:
- bai_giang_he_thong_may_tinh_va_ngon_ngu_c_chuong_7_cac_thanh.pdf