Bài giảng Lập trình cơ bản với C - Chương 3: Toán tử, Biểu thức và nhập xuất trong C
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình cơ bản với C - Chương 3: Toán tử, Biểu thức và nhập xuất trong 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:
- bai_giang_lap_trinh_co_ban_voi_c_chuong_3_toan_tu_bieu_thuc.ppt
Nội dung text: Bài giảng Lập trình cơ bản với C - Chương 3: Toán tử, Biểu thức và nhập xuất trong C
- Toán tử, Biểu thức và Nhập xuất trong C Chương 3 Operators and Expression 1
- Mục Tiêu § Toán tử và biểu thức: § Khái niệm biểu thức § Phân loại các toán tử số học, quan hệ, luận lý, luận lý nhị phân § Độ ưu tiên của các toán tử § Toán tử gán và khái niệm ép kiểu (Cast) §Nhập/Xuất trong C § Các hàm định dạng Nhập/Xuất: scanf()/printf() § Các hàm Nhập/Xuất ký tự:getchar()/putchar(char c) Lập trình cơ bản C/Chương 3/ 2 of 25
- Toán tử, Biểu thức Operators and Expression 3
- Biểu thức (Expressions) Sự kết hợp các toán tử và các toán hạng Toán Tử Ví dụ: 2 * y + 5 Toán hạng Lập trình cơ bản C/Chương 3/ 4 of 25
- Bốn Kiểu Toán Tử Số học Luận Lý (Arithmetic) (Logical) Quan hệ Nhị phân (Relational) (Bitwise) Lập trình cơ bản C/Chương 3/ 5 of 25
- Biểu thức số học Được biểu diễn trong C bằng cách sử dụng các toán tử số học Ví dụ : ++i % 7 5 + (c = 3 + 8) a * (b + c/d) - 22 Lập trình cơ bản C/Chương 3/ 6 of 25
- Toán tử quan hệ và luận lý Ðược dùng để kiểm tra mối quan hệ giữa hai biến hay giữa một biến và một hằng Toán tử quan hệ Toán tử Ý nghĩa > Lớn hơn >= Lớn hơn hoặc bằng < Nhỏ hơn <= Nhỏ hơn hoặc bằng == Bằng != Không bằng Lập trình cơ bản C/Chương 3/ 7 of 25
- Toán tử quan hệ và luận lý (tt.) Toán tử luận lý là những ký hiệu dùng để kết hợp hay phủ định biểu thức chứa các toán tử quan hệ Toán tử Ý nghĩa && AND: Kết quả là True khi cả 2 điều kiện đều đúng || OR : Kết quả là True khi chỉ một trong hai điều kiện là đúng ! NOT: Tác động trên các giá trị riêng lẻ, chuyển đổi True thành False và ngược lại. Ví dụ: if (a>10) && (a<20) Những biểu thức dùng toán tử luận lý trả về 0 thay cho false và 1 thay cho true Lập trình cơ bản C/Chương 3/ 8 of 25
- Toán tử luận lý nhị phân Dữ liệu chỉ được xử lý sau khi đã chuyển đổi giá trị SỐ thành giá trị NHỊ PHÂN Toán tử Mô tả Bitwise AND Mỗi vị trí của bit trả về kết quả là 1 nếu bit của hai ( x & y) toán hạng là 1. Bitwise OR Mỗi vị trí của bit trả về kết quả là 1 nếu bit của một ( x | y) trong hai toán hạng là 1. Bitwise NOT Ðảo ngược giá trị của toán hạng (1 thành 0 và ngược ( ~ x) lại). Bitwise XOR Mỗi vị trí của bit trả về kết quả là 1 nếu bit của hai ( x ^ y) toán hạng là khác nhau Lập trình cơ bản C/Chương 3/ 9 of 25
- Toán tử luận lý nhị phân (tt.) Ví dụ • 10 & 15 1010 & 1111 1010 10 • 10 | 15 1010 | 1111 1111 15 • 10 ^ 15 1010 ^ 1111 0101 5 • ~ 10 ~1010 1 11110101 -11 Lập trình cơ bản C/Chương 3/ 10 of 25
- Độ ưu tiên của toán tử số học Loại toán tử Toán tử Tính kết hợp Một ngôi - ++ Phải đến trái Hai ngôi ^ Trái đến phải Hai ngôi * / % Trái đến phải Hai ngôi + - Trái đến phải Hai ngôi = Phải đến trái Lập trình cơ bản C/Chương 3/ 11 of 25
- Độ ưu tiên của toán tử so sánh Độ ưu tiên của toán tử so sánh (quan hệ) luôn được tính từ trái sang phải Lập trình cơ bản C/Chương 3/ 12 of 25
- Độ ưu tiên của toán tử luận lý Thứ tự ưu tiên Toán tử 1 NOT 2 AND 3 OR Khi có nhiều toán tử luận lý, áp dụng quy tắc tính từ phải sang trái Lập trình cơ bản C/Chương 3/ 13 of 25
- Độ ưu tiên giữa các toán tử Khi một biểu thức có nhiều loại toán tử thì độ ưu tiên giữa chúng phải được thiết lập. Thứ tự ưu tiên Kiểu toán tử 1 Số học (Arithmetic) 2 So sánh (Comparison) 3 Luận lý (Logical) Lập trình cơ bản C/Chương 3/ 14 of 25
- Độ ưu tiên giữa các toán tử (tt.) Ví dụ : 2*3+4/2 > 3 AND 3 3 AND 3 3 AND 3 3 AND 3 3] AND [3<5] OR [10<9] 5) True AND True OR False 6) [True AND True] OR False True OR False 7) True Lập trình cơ bản C/Chương 3/ 15 of 25
- Thay đổi độ ưu tiên n Dấu ngoặc đơn ( ) có độ ưu tiên cao nhất n Có thể được thay đổi bởi dấu ngoặc đơn ( ) n Khi các cặp ngoặc đơn lồng nhau ( ( ( ) ) ), cặp ngoặc đơn trong cùng nhất sẽ được thực thi trước n Nếu trong biểu thức có nhiều cặp ngoặc đơn thì việc thực thi sẽ theo thứ tự từ trái sang phải Ví dụ : 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (2 11)) Lập trình cơ bản C/Chương 3/ 16 of 25
- Thay đổi độ ưu tiên (tt.) Cách tính : 1) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (True AND False)) Dấu ngoặc đơn bên trong sẽ được tính trước 2) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR False) 3) 5+9*3^2-4 >10 AND (2+16-8/4 > 6 OR False) Kế đến dấu ngoặc đơn ở ngoài được tính đến 4) 5+9*3^2-4 > 10 AND (2+16-2 > 6 OR False) 5) 5+9*3^2-4 > 10 AND (18-2 > 6 OR False) 6) 5+9*3^2-4 > 10 AND (16 > 6 OR False) Lập trình cơ bản C/Chương 3/ 17 of 25
- Thay đổi độ ưu tiên (tt.) 7) 5+9*3^2-4 > 10 AND (True OR False) 8) 5+9*3^2-4 > 10 AND True 9) 5+9*9-4>10 AND True Biểu thức bên trái được tính trước 10) 5+81-4>10 AND True 11) 86-4>10 AND True 12) 82>10 AND True 13) True AND True 14) True Lập trình cơ bản C/Chương 3/ 18 of 25
- Toán tử gán Toán tử gán (=) có thể được dùng với bất kỳ biểu thức C hợp lệ nào (Tên biến) (Biểu thức) (Giá trị trái) (Giá trị phải) (Toán tử gán) Lập trình cơ bản C/Chương 3/ 19 of 25
- Gán liên tiếp Nhiều biến có thể được gán với cùng một giá trị trong một câu lệnh đơn Tuy nhiên, không thể áp dụng quy tắc trên khi khai báo biến Lập trình cơ bản C/Chương 3/ 20 of 25
- Chuyển đổi kiểu tự động Lập trình cơ bản C/Chương 3/ 21 of 25
- Ép kiểu Giá trị một biểu thức được ép thành một kiểu nhất định bằng cách dùng kỹ thuật ép kiểu (cast). Cú pháp : (kiểu dữ liệu) cast Kiểu Bất cứ kiểu dữ liệu hợp lệ trong C Ví dụ: Giá trị số nguyên tả về bởi (int) f được float x,f; chuyển thành số thực khi nó được toán tử GÁN xử lý. Song, giá trị của f f = 3.14159; vẫn không đổi. x = (int) f; Giá trị của x sẽ là 3.0 Lập trình cơ bản C/Chương 3/ 22 of 25
- Nhập/Xuất trong C Operators and Expression 23
- Nhập/Xuất chuẩn § Thư viện chuẩn có các hàm I/O - quản lý việc nhập, xuất, các thao tác trên ký tự và chuỗi. § Thiết bị nhập chuẩn thường là bàn phím. § Thiết bị xuất chuẩn thường là màn hình (console). § Nhập và xuất có thể được xử lý qua các tập tin Elementary Programming with C/Session 4/ 24 of 27
- Tập tin Header § #include - câu lệnh tiền xử lý § stdio.h - tập tin header (header file) § Chứa các macro sử dụng cho nhiều hàm nhập/xuất trong C § Các macro trong stdio.h giúp các hàm printf(), scanf(), putchar(), getchar() thực thi Elementary Programming with C/Session 4/ 25 of 27
- printf ( ) § Hiển thị dữ liệu ra thiết bị xuất chuẩn Cú pháp printf ( “control string”, argument list); § Danh sách đối số (argument list): hằng, biến, biểu thức hoặc các hàm phân cách bởi dấu phẩy § Xâu điều khiển (control string): được đặt trong dấu nhấy kép “ ”, chứa các lệnh định dạng tương ứng về kiểu và thứ tự cho các đối số trong danh sách § Các ký tự văn bản: các ký tự có thể in được § Các lệnh định dạng: ký hiệu % + mã định dạng § Các ký tự không in được : tab, blank , new_line Elementary Programming with C/Session 4/ 26 of 27
- Mã định dạng Định dạng printf() scanf() Ký tự đơn (single character) %c %c Chuỗi (string) %s %s Số nguyên có dấu (signed decimal integer) %d %d Kiểu float - dạng dấu chấm thập phân (decimal notation) %f %f hoặc %e Kiểu float - dạng dấu chấm thập phân %lf %lf Kiểu float - dạng lũy thừa (exponential notation) %e %f or %e Kiểu float ( %f hay %e , khi ngắn hơn) %g Số nguyên không dấu (unsigned decimal integer) %u %u Số nguyên hệ 16 không dấu - sử dụng “ABCDEF” %x %x (unsigned hexadecimal integer) Số nguyên hệ 8 không dấu (unsigned octal integer) %o %o Trong bảng trên : c, d, f, lf, e, g, u, s, o và x là các bộ đặc tả kiểu Elementary Programming with C/Session 4/ 27 of 27
- Mã định dạng (tt.) Mã định Các qui ước in dạng %d Các con số trong số nguyên %f Các chữ số phần nguyên sẽ được in ra. Phần thập phân sẽ chỉ in 6 chữ số. Nếu phần thập phân ít hơn 6 chữ số, nó sẽ được thêm các chữ số 0 vào từ bên phải, ngược lại nó sẽ làm tròn số từ bên phải. %e Một con số bên trái của dấu chấm thập phân và 6 vị trí bên phải, như %f ở trên Elementary Programming with C/Session 4/ 28 of 27
- Mã định dạng (tt.) ST Lệnh Chuỗi điều Nội dung chuỗi Danh sách Giải thích Hiển thị T khiển điều khiển đối số danh sách trên màn đối số hình 1. printf(“%d”,300); %d Chỉ chứa lệnh 300 Hằng 300 định dạng 2. printf(“%d”,10+5); %d Chỉ chứa lệnh 10 + 5 Biểu thức 15 định dạng 3. printf(“Good Morning Mr. Lee.”); Good Chỉ chứa các ký Rỗng Rỗng Good Morning Mr. tự văn bản Morning Lee. Mr. Lee. 4. int count = 100; %d Chỉ chứa lệnh count Biến 100 printf(“%d”,count); định dạng 5. printf(“\nhello”); \nhello Chứa ký tự không Rỗng Rỗng hello on được in và các ký a new tự văn bản line 6. #define str “Good Apple “ %s Chỉ chứa lệnh str Hằng ký Good định dạng hiệu Apple printf(“%s”,str); 7. %d %d Chứa lệnh định count, Hai biến 0 , 100 int count,stud_num; dạng và ký tự stud_num count=0; không được in stud_num=100; printf(“%d %d\n”,count, stud_num); Elementary Programming with C/Session 4/ 29 of 27
- Các ký tự đặc biệt \\ In ra ký tự \ \ “ In ra ký tự “ %% In ra ký tự % Elementary Programming with C/Session 4/ 30 of 27
- Ví dụ cho hàm printf() Chương trình hiển thị số nguyên, thập phân, ký tự và chuỗi #include void main() { int a = 10; float b = 24.67892345; char ch = ‘A’; printf(“Integer data = %d”, a); printf(“Float Data = %f”,b); printf(“Character = %c”,ch); printf(“This prints the string”); printf(“%s”,”This also prints a string”); } Elementary Programming with C/Session 4/ 31 of 27
- Bổ từ trong hàm printf( ) 1. Bổ từ ‘-‘ Canh lề trái phần tử dữ liệu từ vị trí bên trái. 2. Bổ từ xác định độ rộng trường Xác định độ rộng nhỏ nhất cho phần tử dữ liệu. 3. Độ chính xác Xác định số lượng lớn nhất các số được in bên phải dấu chấm thập phân. 4. Bổ từ ‘0’ Dùng để thêm số 0 vào trường thay vì để khoảng trống mặc định Elementary Programming with C/Session 4/ 32 of 27
- Bổ từ trong hàm printf( ) (tt.) 5. Bổ từ ‘l’ Có thể được dùng hiển thị các đối số nguyên kiểu int hay double. Mã định dạng tương ứng là %ld 6. Bổ từ ‘h’ Được sử dụng để hiển thị dạng short int. Mã định dạng tương ứng như là %hd 7. Bổ từ ‘*’ Được sử dụng khi người dùng không muốn xác định độ rộng trường nhưng muốn chương trình xác định điều đó. Elementary Programming with C/Session 4/ 33 of 27
- Ví dụ về các bổ từ /* This program demonstrate the use of Modifiers in printf() */ #include void main(){ printf(“The number 555 in various forms:\n”); printf(“Without any modifier: \n”); printf(“[%d]\n”,555); printf(“With – modifier :\n”); printf(“[%-d]\n”,555); printf(“With digit string 10 as modifier :\n”); printf(“[%10d]\n”,555); printf(“With 0 as modifier : \n”); printf(“[%0d]\n”,555); printf(“With 0 and digit string 10 as modifiers :\n”); printf(“[%010d]\n”,555); printf(“With -,0 and digit string 10 as modifiers:\n”); printf(“[%-010d]\n”,555); } Elementary Programming with C/Session 4/ 34 of 27
- scanf( ) n Được sử dụng để nhập dữ liệu. Dạng tổng quát của hàm scanf() scanf(“control string”, argument list); n Những định dạng dùng trong hàm printf() cũng được sử dụng với cùng cú pháp trong hàm scanf() n So sánh với hàm printf printf\() scanf() Danh sách đối Là các tên biến, hằng, hằng Là địa chỉ các biến số biểu tượng và các biểu thức Tùy chọn %g Có Không Mã định dạng Khác nhau Giống nhau %f và %e Elementary Programming with C/Session 4/ 35 of 27
- Ví dụ với hàm scanf( ) #include void main(){ int a; float d; char ch, name[40]; printf(“Please enter the data\n”); scanf(“%d %f %c %s”,&a,&d,&ch,name); printf(“\n The values accepted are: %d,%f,%c,%s”,a, d,ch,name); } Elementary Programming with C/Session 4/ 36 of 27
- Vùng đệm Nhập/Xuất § Là một không gian lưu trữ tạm thời trong bộ nhớ hoặc trên thẻ điều khiển thiết bị § Được sử dụng để đọc và viết các ký tự ASCII § Bộ đệm Nhập/Xuất: Buffered File I/O, Console I/O n Các hàm Console I/O chuyển các thao tác đến thiết bị xuất nhập chuẩn của hệ thống n Trong ‘C’ các hàm console I/O đơn giản nhất là: § getchar( ) § putchar( ) Elementary Programming with C/Session 4/ 37 of 27
- getchar( ) n Hàm không có đối số. n Dùng đọc dữ liệu nhập, một ký tự từ bàn phím n Các ký tự đặt trong vùng đệm đến khi người dùng gõ phím enter #include void main() { char letter; printf(“\nPlease enter any character:“); letter = getchar(); printf(“\nThe character entered by you is %c“, letter); } Elementary Programming with C/Session 4/ 38 of 27
- putchar( ) n Hàm xuất ký tự trong ‘C’ n Có một đối số Đối số Hàm Chức năng Biến ký tự putchar(c) Hiển thị nội dung của biến ký tự c Hằng ký tự putchar(‘A’) Hiển thị ký tự A Hằng số putchar(‘5’) Hiển thị số 5 Mã định dạng putchar(‘\t’) Xen một khỏang trống tại vị trí con trỏ Mã định dạng putchar(‘\n’) Xen một lệnh xuống dòng tại vị trí con trỏ Elementary Programming with C/Session 4/ 39 of 27
- putchar( ) #include void main(){ putchar(‘H’); putchar(‘\n’); putchar(‘\t’); putchar(‘E’); putchar(‘\n’); putchar(‘\t’); putchar(‘\t’); putchar(‘L’); putchar(‘\n’); putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); putchar(‘L’); putchar(‘\n’); putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); putchar(‘O’); } Elementary Programming with C/Session 4/ 40 of 27