- Sử dụng hằng phù hợp khi viết chương trình
- Sử dụng được biểu thức khi viết chương trình
- Sử dụng được một số hàm toán học thông dụng
HẰNG:
Trong một chương trình có những giá trị không thay đổi từ khi chương trình bắt đầu thực hiện cho đến khi kết thúc thì ta gọi đó là hằng.
Ví dụ 1: Chương trình tính chu vi và diện tích của hình tròn với bán kính được nhập từ bàn phím:
Chương trình trên khi chạy cho kết quả như mong muốn, tuy nhiên việc sử dụng giá trị 3.14 trực tiếp trong chương trình có nhược điểm:
- Giả sử ta muốn thay đổi giá 3.14 thành 3.1415 thì ta phải thay đổi ở hai vị trí (dòng 11 và dòng 12). Nếu chương trình có nhiều dòng (hàng trăm dòng) và giá trị 3.14 được sử dụng rải rác trong chương trình thì việc thay đổi 3.14 thành 3.1415 có thể bị sót.
Ví dụ 2: Chương trình nhập vào số lượng và đơn giá của một mặt hàng, sau đó tính và xuất lên màn hình phí chuyên chở (10% giá trị hàng hóa) và thuế giá trị gia tăng (10% giá trị hàng hóa)
Chương trình trên sử dụng hai hằng số 0.01 (10%). Tuy nhiên hai giá trị này có nghĩa khác nhau vì vậy dễ gây nhầm lẫn khi đọc hay sửa đổi chương trình (không biết giá trị nào là tỉ lệ phí chuyên chở và giá trị nào tỉ lệ thuế giá trị gia tăng).
Để giải quyết những hạn chế trên, thay vì sử dụng trực tiếp giá trị hằng ta sẽ đặt cho nó một cái tên và gán cho cái tên đó giá trị mà ta mong muốn. Trong chương trình tại những vị trí muốn sử dụng giá trị hằng sẽ được thay thế bằng cái tên ta đã đặt cho nó.
Khai báo hằng trong chương trình:
Cú pháp: const <kiểu dữ liệu> <tên hằng> = <giá trị>;
Cách đặt tên hằng giống như cách đặt tên cho biến
Ví dụ: const float PI= 3.1415;
const float phantram_cc=0.01;
const float tile_VAT = 0.01;
Chương trình tính phí chuyên chở và VAT có thể viết lại như sau:
Ưu điểm:
- Dễ hiểu, dễ đọc do các giá trị hằng được đặt tên.
- Khi cần thay đổi giá trị của tên hằng ta chỉ cần thay đổi ở dòng khai báo.
Lỗi thường gặp:
Lỗi
|
Thông báo
|
Không
gán giá trị cho tên hằng khi khai báo
|
Error: uninitialized
const…
|
Thay đổi giá trị của tên hằng.
Lưu ý: tên hằng chỉ được gán gía trị một lần khi khai báo
|
Error: assignment
of read-only variable…
|
Gán giá trị không phù hợp kiểu cho tên hằng.
Lưu ý:
Hằng số: ghi bình thường
Hằng ký tự (một ký tự): ghi trong dấu
nháy đơn, Ví dụ ‘A’
Hằng chuỗi (từ 2 ký tự trở lên) ghi
trong dấu nháy kép. Ví dụ: “Le Khuong”
|
Error: cannot
convert…
|
BIỂU THỨC:
Biểu thức được tạo thành từ các toán tử (Operator) và các toán hạng (Operand). Toán tử tác động lên giá trị của toán hạng và cho kết quả. Kiễu dữ liệu của kết quả phụ thuộc vào toánh hang và toán tử.
- Toán tử: +, –, *, /, %….
- Toán hạng: hằng, biến, lời gọi hàm...
Ví dụ:
- 2 + 3 --> toán tử: +, toán hạng: hằng số 2 và 3
- a / 5 --> toán tử: / , toán hạng: tên biến a và hằng số 5
- (a + b) * 6 --> toán tử : + và *, toán hạng: tên biến a, b và hằng số 6
Cú pháp:
<biến> = <giá trị>;
<biến> = <biến>;
<biến> = <biểu thức>;
Ví dụ:
int a, b, c;
a = 10;
b = a;
c=a+b
Lưu ý: <Giá trị>, <biến>, <biểu thức> bên phải dấu = phải cùng kiểu dữ liệu với biến phía bên trái dấu bằng.
Bài tập nhanh: những dòng lệnh nào sau đây có lỗi và tại sao?
int a, b, c;
a+b=c;
b="abc";
c= a b;
TOÁN TỬ TOÁN HỌC:
Toán tử 1 ngôi: Chỉ có một toán hạng trong biểu thức.
++ (tăng 1 đơn vị)
-- (giảm 1 đơn vị)
Đặt trước toán hạng: thực hiện tăng/giảm trước
Đặt sau toán hạng: thực hiện tăng/giảm sau
Ví dụ:
x = 10; y = x++; // y = 10 và x = 11
x = 10; y = ++x; // x = 11 và y = 11
Lưu ý: Toán hạng phải là tên biến và đã được gán giá trị trước đó.
Bài tập nhanh: những dòng lệnh nào sau đây có lỗi và tại sao?
int a=1, b;
float c=1.5;
a=b++;
c++;
b=++5;
Toán tử 2 ngôi: Có hai toán hạng trong biểu thức.
bao gồm: +, –, *, /, % (chia lấy phần dư)
x = x + y ; // x, y là hai biến
Ví dụ:
a = 1 + 2; b = 1 – 2; c = 1 * 2; d = 1 / 2;
e = 1*1.0 / 2;
f = float(1) / 2; //float(1) ép số 1 thành số thực kiều float
g = float(1 / 2);// ép kết quả 1/2 thành số thực kiểu float
h = 1 % 2; //kết quà là 1
x = x * (2 + 3*5); //tương đương x *= 2 + 3*5;
Bài tập nhanh: những dòng lệnh nào sau đây có lỗi và tại sao?
int a=1, b=5, d;
float c;
d= ++a
c=a b;
a+b=d;
Toán tử quan hệ: So sánh 2 biểu thức với nhau
Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng)
Bao gồm: == (bằng), > (lớn hơn), < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng), != (khác)
Ví dụ:
int s1, s2, s3, s4, s5, s6;
s1 = (1 == 2); //s1=0
s2 = (1 != 2); //s2=1
s3 = (1 > 2); //s3=0
s4 = (1 >= 2);//s4=0
s5 = (1 < 2); //s5=1
s6 = (1 <= 2);//s6=1
Toán tử luận lý: Tích hợp nhiều biểu thức quan hệ với nhau.
Bao gồm: && (and), || (or), ! (not)
Ví dụ
s1 = (1 > 2) && (3 > 4);//s1=0
s2 = (1 > 2) || (4 > 3);//s2= 1
s3 = !(1 > 2); s3=1
Toán tử điều kiện: Đây là toán tử 3 ngôi (gồm có 3 toán hạng)
<biểu thức 1> ? <biểu thức 2> : <biểu thức 3>
nếu biểu thức 1 cho giá trị đúng thì giá trị của toàn bộ biểu thức là giá trị biểu thức 2, ngược lại giá trị của toàn bộ biểu thức là giá trị của biểu thức 3
Ví dụ:
int s1;
s1 = (1 > 2) ? 2912 : 1706;//s1=1706
int s2 = 0;
cout<<(1 < 2 ? s2 = 2912 : s2 = 1706); //kết hợp giữa toán tử điều kiện và toán tử gán
Kết quả:
- Xuất lên màn hình 1706 (kết quả của biểu thức)
- Biến s2 được gán giá trị=1706
Các ví dụ:
- Chương trình nhập vào một số nguyên, sau đó xuất lên màn hình đây là số dương hay số âm hay số bằng 0.
- Chương trình nhập vào một ký tự, sau đó xuất lên mành hình đó có phải là chữ a hay không.
- Viết chương trình nhập vào một ký tự, sau đó cho biết ký tự vừa nhập có phải là nguyên âm hay không ('a', 'e', 'i', 'o', 'u')
Độ ưu tiên các toán tử:
Theo bảng bên thì phần biểu thức đặt trong ngoặc () là có độ ưu tiên cao nhất. Các toán tử ! (phủ định) ++ (tăng), -- (giảm), - (số âm [không phải phép trừ]), + (số dương [không phải phép cộng]), các có độ ưu tiên kế tiếp (*, & là phép toán trên con trỏ, sẽ tìm hiểu sau)... Các toán tử chưa học các bạn chưa cần quan tâm.
CÁC HÀM TRONG THƯ VIỆN (math.h)
Thư viện này chứa các hàm toán học hỗ trợ cho việc lập trình được thuận lợi, dễ dàng hơn. Muốn sử dụng các hàm này ta phải khai báo thư viện math.h (#include <math.h>) ở đầu chương trình.
Muốn biết các hàm có trong một thư viện cũng như cách sử dụng ta thực hiện các bước sau:
Danh sách các hàm có trong một thư viện |
- Màn hình trợ giúp các hàm trong math.h sẽ hiển thị trên màn hình.
- Cột bên trái là tên hàm (ví dụ: abs() ), cột bên phải là công dụng của hàm (ví dụ: absolute value). Tại màn hình này nếu muốn biết chi tiết về cách sử dụng hàm, ta click vào tên hàm muốn tra cứu.
Khi sử dụng hàm ta cần lưu ý:
Mô tả cú pháp và công dụng của hàm sqrt |
- Tên Hàm: viết chính xác
- Kiểu giá trị trả về của Hàm:để sử dụng đúng (ví dụ: gán kết quả của hàm vào biến. Khi đó kiểu dữ liệu của biến phải phù hợp với kiểu giá trị trả về của hàm)
- Số tham số và kiểu dữ liệu của tham số: Truyển đủ giá trị cho tham số và giá trị truyền phải phù hợp kiểu dữ liệu với tham số.
Ví dụ: hàm sqrt để lấy căn bậc 2 của một số dương
- Giá trị trả về của hàm có kiểu double
- hàm có một tham số có kiểu double.
Vậy muốn sử dụng hàm ta phải truyền cho hàm một tham số. Để in lên màn hình căn bậc hai của 5 ta viết lệnh:
cout<<sqrt(5);
Bài tập:
- Viết chương trình nhập vào một số nguyên, sau đó xuất lên màn hình đây là số chẳn hay số lẻ hay số bằng 0 (lưu ý toán tử so sánh bằng là == ).
- Viết chương trình nhập vào một số nguyên. Nếu là số dương thì xuất lên màn hình căn bậc 2 của số vừa nhập, ngược lại thông báo số nhập không hợp lệ.
- Viết chương trình nhập vào hai số thực a, b. Nếu b khác 0 thì xuất lên màn hình kết quả a/b, ngược lại xuất lên màn hình "dữ liệu không hợp lệ" (lưu ý toán tử so sánh khác là != )
- Viết chương trình nhập vào 2 số nguyên x, y. Nếu x>0 và y>0 thì xuất lên màn hình kết quả của x lũy thừa y (dùng hàm pow trong thư viện math.h), ngược lại xuất lên màn hình "dữ liệu không hợp lệ".
sao chưa có phần 5 ạ
Trả lờiXóaĐã có lâu rồi mà em
Xóa