Bài 3: Các Toán tử

nguyentheanh

Tác giả Dự toán GXD
Thành viên BQT
Tham gia
6/7/07
Bài viết
4.561
Điểm thành tích
113
Website
giaxaydung.vn
Qua bài 1 và 2 chúng ta đã nhích dần hơn tới mục tiêu biệt thự và xe hơi, bài này TA sẽ giúp các bạn có lòng kiên trì nhích gần tới mục tiêu hơn một chút nữa. Chúng ta đang trên con đường nghiên cứu ngôn ngữ lập trình C++ để phục vụ công việc tự động hoá thiết kế, tự động hoá lập và quản lý chi phí đầu tư xây dựng công trình.

Ở bài 2 chúng ta đã biết đến sự tồn tại của các biến và các hằng. Trong C++, để thao tác với chúng ta sử dụng các toán tử, đó là các từ khoá và các dấu không có trong bảng chữ cái nhưng lại có trên hầu hết các bàn phím trên thế giới. Hiểu biết về chúng là rất quan trọng vì đây là một trong những thành phần cơ bản của ngôn ngữ C++.

1. Toán tử gán (=)

Toán tử gán dùng để gán một giá trị nào đó cho một biến

Ví dụ: a = 5;
Đây là phép gán cho biến a giá trị 5. Vế trái bắt buộc phải là một biến còn vế phải có thể là bất kì (hằng số, biến hay kết quả của một biểu thức).
Cần phải nhấn mạnh rằng toán tử gán luôn được thực hiện từ trái sang phải và không bao giờ đảo ngược

Ví dụ: a = b;
Là phép gán giá trị của biến a bằng giá trị đang chứa trong biến b (Chú ý rằng: ta chỉ gán giá trị của b cho a và sự thay đổi của b sau đó sẽ không ảnh hưởng đến giá trị của a).

Một thuộc tính của toán tử gán trong C++ góp phần giúp nó vượt lên các ngôn ngữ lập trình khác là việc cho phép vế phải có thể chứa các phép gán khác.

Ví dụ: a = 2 + (b = 5);

tương đương với:
b = 5;
a = 2 + b;


Vì vậy biểu thức sau cũng hợp lệ trong C++

a = b = c = 5;
gán giá trị 5 cho cả ba biến a, b và c

2. Các toán tử số học

Năm toán tử số học được hỗ trợ bởi C++ là:
+ cộng
- trừ
* nhân
/ chia
% lấy phần dư (trong phép chia)

Thứ tự thực hiện các toán tử này giống như trong toán học (nhân chia trước, cộng trừ sau, thực hiện phép tính từ trái sang phải). Điều duy nhất có vẻ hơi lạ đối với bạn là phép lấy phần dư, ký hiệu bằng dấu phần trăm (%). Đây chính là phép toán lấy phần dư trong phép chia hai số nguyên với nhau.
Ví dụ, nếu a = 11 % 3;, biến a sẽ mang giá trị 211 = 3*3 +2.

3. Các toán tử gán phức hợp (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

Một đặc tính làm cho ngôn ngữ C++ nổi tiếng là một ngôn ngữ súc tích là do các toán tử gán phức hợp cho phép chỉnh sửa giá trị của một biến với một trong những toán tử cơ bản sau:

value += increase; tương đương với value = value + increase;
a -= 5; tương đương với a = a - 5;
a /= b; tương đương với a = a / b;
price *= units + 1; tương đương với price = price * (units + 1);
và tương tự cho tất cả các toán tử khác.

4. Toán tử tăng và giảm

Một ví dụ khác của việc tiết kiệm khi viết mã lệnh là toán tử tăng (++) và giảm (--). Chúng tăng hoặc giảm giá trị chứa trong một biến đi 1. Chúng tương đương với +=1 hoặc -=1. Vì vậy, các dòng sau là tương đương:

a++;
a+=1;
a=a+1;


Một tính chất của toán tử này là nó có thể là tiền tố hoặc hậu tố, có nghĩa là có thể viết trước tên biến (++a) hoặc sau (a++) và mặc dù trong hai biểu thức rất đơn giản đó nó có cùng ý nghĩa nhưng trong các thao tác khác khi mà kết quả của việc tăng hay giảm được sử dụng trong một biểu thức thì chúng có thể có một khác biệt quan trọng về ý nghĩa: Trong trường hợp toán tử được sử dụng như là một tiền tố (++a) giá trị được tăng trước khi biểu thức được tính và giá trị đã tăng được sử dụng trong biểu thức; trong trường hợp ngược lại (a++) giá trị trong biến a được tăng sau khi đã tính toán. Xem hình sau sẽ thấy sự khác biệt:

Bai3-tang-va-giam.jpg

 

camerasaigon24h

Thành viên mới
Tham gia
21/4/14
Bài viết
1
Điểm thành tích
1
Dự trên các toán tử trên mình cho ví dụ sử dụng như sau.
bài kiểm tra số nguyên tố đơn giản
#include<stdio.h>
#include<conio.h>
#include<math.h>
int nguyento(int n)
{
if(n<2) return 0;
if(n==2) return 1;
int i=2;
while ((i<=(int)sqrt(n)) && (n%i!=0)) i++;
if(n%i!=0) return 1;
else return 0;
}
int main()
{
int n;
printf("n= "); scanf("%d",&n);
if (nguyento(n)) printf("%d la snt",n);
else printf("%d ko la snt",n);
getch();

}
 

shadow122

Thành viên mới
Tham gia
6/5/14
Bài viết
1
Điểm thành tích
1
Mình thấy bài của bạn bị vượt quá giới hạn trong ví dụ khi mà ở đây còn chưa hướng dẫn đến các vòng lặp mà bạn để vòng lặp vào thì ai mà hiểu được :))
 

vuhoangr3

Thành viên mới
Tham gia
10/9/14
Bài viết
3
Điểm thành tích
1
nên đưa một bài toán nhỏ về toán tử thôi. Nhưng dù sao cũng thanks vì chia sẽ
 

Tải bộ cài phần mềm Dự toán GXD, Đấu thầu GXD, Thanh Quyết toán GXD, Quản lý chất lượng GXD. Dành cho người mua bản quyền
Kích để xem khóa học Dự toán công trình
Kích để xem khóa học Dự toán công trình
Phần mềm quản lý chất lượng công trình QLCL GXD
Tìm hiểu khóa học Thanh Quyết toán GXD

Các bài viết mới

Top