Phép dấu phẩy

Một phần của tài liệu NGÔN NGỮ LA65P5 TRỈNH C pot (Trang 41 - 46)

Dấu phẩy đợc sử dụng thờng xuyên trong C để làm dấu ngăn cách, tách biệt các khai báo biến, các đối số của hàm, v.v. Trong một số trờng hợp nhất định, dấu phẩy lại hành động nh một phép toán chứ không còn là một dấu phân cách nữa. Có thể tạo ra một biểu thức bằng cách ghép hai biểu thức con bằng dấu phẩy. Kết qủa nh sau:

Cả hai biểu thức đợc tính nhng biểu thức bên trái đợc tính trớc. Biểu thức tổng thể nhận giá trị của biểu thức bên phải.

x = (a++ , b ++ );

tăng a, rồi tăng b, sau đó gán giá trị của b (cha tăng) cho x. Vì phép ++ ở đây là kiểu sau, nên giá trị của b - trớc khi đợc tăng - đợc gán cho x. Dùng các dấu ngoặc là cần thiết bởi vì phép dấu phẩy có thứ tự u tiên thấp, thậm chí thấp hơn cả phép gán.

Kết luận

Trong bài này, nhiều khái niệm quan trọng của C đ: đợc trình bày: một câu lệnh C là gì, các khoảng trắng không có ý nghĩa đối với chơng trình dịch của C, và các câu lệnh của C đều kết thúc bằng một dấu chấm phảy. Ngoài ra, chúng ta cũng đ: học về một câu lệnh phức hợp hay còn gọi là một khối. Một khối chứa từ hai câu lệnh trở lên và đợc đóng khung trong các dấu ngoặc nhọn, có thể đợc sử dụng ở bất kỳ chỗ nào mà một câu lệnh đơn có thể đợc sử dụng.

Nhiều câu lệnh đợc tạo thành từ một số biểu thức và các phép toán. Một biểu thức là một mệnh đề nào đó dùng để tính ra đợc một giá trị số. Các biểu thức phức hợp có thể chứa nhiều biểu thức đơn giản hơn (biểu thức con).

Các phép toán là các ký hiệu của C, dùng để hớng dẫn máy tính thực hiện một thao tác trên một hoặc nhiều biểu thức. Một số phép toán là đơn nguyên, có nghĩa là chúng thao tác trên một toán hạng đơn. Tuy nhiên, hầu hết các phép của C đều là nhị nguyên, thao tác trên hai toán hạng. Có một phép tam nguyên, đó là phép điều kiện. Các phép toán của C có một quyền u tiên phân cấp quyết định thứ tự mà theo đó các phép toán sẽ đợc thực hiện trong một biểu thức có chứa nhiều phép toán.

Các phép toán của C trong bài này đợc chia làm ba kiểu:

Các phép toán học thực hiện các phép số học trên các toán hạng của chúng. Các phép quan hệ thực hiện việc so sánh giữa các toán hạng của chúng.

Các phép logic thao tác trên các biểu thức true/false. 0 để biểu diễn cho false, 1 để biểu diễn cho true.

Câu hỏi và trả lời

Các dấu cách và các dòng trắng có làm ảnh hởng đến sự thực hiện của mộtchơng trình không?

Các khoảng trắng (dấu cách, dòng trắng, tabs) thờng đợc dùng để làm chơng trình dễ đọc hơn. Khi chơng trình đợc dịch, các khoảng trắng bị bỏ qua, và vì thế chúng không có hiệu lực gì đối với chơng trình đ: dịch và kết nối.

Các phép đơn nguyên thao tác trên một biến còn phép nhị nguyên làm việc với hai biến.

Phép trừ (-) là đơn nguyên hay nhị nguyên?

Là cả hai. Chơng trình dịch đủ thông minh để biết phải làm gì với phép này. Nó biết phải dùng kiểu nào căn cứ vào số biến trong biểu thức đợc sử dụng. Trong câu lệnh sau, nó là đơn nguyên

x = -y;

ngợc lại, trong trờng hợp sau là nhị nguyên x = a - b;

Một số âm đợc coi là đúng(true) hay sai (false)?

0 là false, và mọi giá trị khác là true. Vì vậy số âm là true. Luyện tập

Câu hỏi

1. Câu lệnh sau đây đợc gọi là gì, và ý nghĩa của nó ra sao? x = 5 + 8;

2. Một biểu thức là gì?

3. Trong một biểu thức có chứa nhiều phép toán, cái gì quyết định thứ tự thực hiện của chúng?

4. Nếu một biến x có giá trị là 10, giá trị của x và a là bao nhiêu sau mỗi lần các câu lệnh sau đây đợc thực hiện tách biệt?

a = x++; a = ++x;

5. Biểu thức 10 % 3 cho giá trị bao nhiêu? 6. Còn biểu thức 5 + 3 * 8 / 2 + 2 ?

7. H:y viết thêm các dấu ngoặc vào biểu thức trong câu 6 để biểu thức mới có giá trị bằng 16.

9. Phép toán nào có thứ tự u tiên cao hơn? a. == hay < b. * hay + c. != hay == d.>= hay > 10. Phép gán phức hợp là gì và nó có ích lợi nh thế nào? Bài tập

1. Chơng trình sau viết không đợc hay lắm. H:y nhập và dịch xem nó có chạy không. #include<stdio.h>

int x, y; main() { printf( "\nNhập hai số"); scanf( "%d %d, &x,&y);printf(

"\n\n%d lớn hơn",(x>y)?x:y);return 0;} 2. H:y viết lại chơng trình trên cho dễ đọc hơn.

3. H:y viết lại chơng trình 4.1 để đếm theo chiều tăng dần thay cho giảm dần.

4. Viết một câu lệnh if để gán giá trị của x cho biến y chỉ khi x nằmg giữa 1 và 20. Giữ nguyên y không đổi nếu x không nằm trong miền này.

5. Dùng phép điều kiện để thực hiện nhiệm vụ của câu 4.

6. Viết lại các câu lệnh if lồng nhau sau đây bằng một câu lệnh if đơn và các phép phức hợp.

if (x < 1) if ( x >10) câu_lệnh;

a. (1 + 2 * 3)

b. 10 % 3 * 3 - (1 + 2) c. ((1 + 2) * 3)

d. (5 == 5) e. (x = 5)

8. Nếu x = 4, y = 6, và z = 2, h:y xem các mệnh đề sau đây là true hay false a. if (x == 4)

b. if (x != y - z) c. if (z = 1)

d. if (y)

9. Viết một câu lệnh if để khẳng định một ngời là ngời lớn (21 tuổi) nhng cha già (65 tuổi).

10. H:y sửa cho chơng trình sau đây chạy đúng.

/∗ àτ χη←νγ τρ⋅νη χ λι ... ∗/ #ινχλυδε <στδιο.η> ιντ ξ = 1; àαιν() { if (x == 1); printf ( " x bằng 1"); otherwise printf (" x không bằng 1"); return }

Một phần của tài liệu NGÔN NGỮ LA65P5 TRỈNH C pot (Trang 41 - 46)