Professional Documents
Culture Documents
Bài 04 - Đ
Bài 04 - Đ
*Cho thêm bài tập để SV còn yếu làm thêm – SV check chéo kq cho nhau!
Ký hiệu Ví dụ Ý nghĩa
= float a=1.1, b=2.2; Gán giá trị của vế phải cho vế trái.
int c;
(gán) a = b; *Lưu ý 01: Vế trái của dấu = chỉ là 1 biến.
b = a + 4;
*Lưu ý 02: Vế phải của dấu = có thể là 1 biến hoặc 1 biểu
c = a; //Không lỗi thức tính toán.
(nghiên cứu sau: ép
kiểu) *Lưu ý 03: Nếu gán số thực vào biến số nguyên, thì biến số
nguyên chỉ chứa phần nguyên (không lỗi – không nên làm).
*Hỏi: Sau khi chạy xong, a = 2.2, b =6.2, c = 2
+ float a=1,b=2,c=3.3; (Bước 1) Thực hiện phép cộng bên vế phải.
a = b + c;
(cộng) (Bước 2) Gán kết quả từ vế phải sang cho vế trái (biến a).
*Lưu ý 04: Biến bên VP không đổi g.trị. Biến bên VT đổi
*Hỏi: Sau khi chạy xong, a = 5.3, b = 2.0, c = 3.3
- char a=1, b=2, c=3; Tương tự dấu +.
a = b – c – 5;
(trừ)
*Hỏi: Sau khi chạy xong, a = , b = ?, c = ? Lỗi chương trình
* double a=1,b=2,c=3.3; Tương tự dấu +.
a = b * c * 2;
(nhân)
*Hỏi: Sau khi chạy xong, a = , b = ?, c = ? 13.200000 2.000000 3.300000
/ double a=1,b=2,c=3.3; Tương tự dấu +.
a = c / b * 2;
(chia)
/ int a=1, b=2, c=3, d; *Lưu ý 05: (xem “trình tự tính toán” trước lưu ý số 04)
float x, y,z=3,k,p;
(chia) a = c / b; Kết quả của phép toán (x+y) hay (x*y) hay (x/y) hay (x-y) :
y = c / b;
d = 1.0*c/b; => Là số nguyên, nếu các biến đều là số nguyên.
x = 1.0*c/b;
=> Là số thực, nếu chỉ cần 1 biến là kiểu số thực.
y = 1.0*(c/b);
k = a*b/z;
p = a*z/b;
*Hỏi: Sau khi chạy xong, a = ?, b = ?, c = ?, d = ?, x = ?, y = ? 1 2 3 11.500000 1.000000
0.666667 1.500000
% int a=1, b=3, c=5; - Đây là phép chia lấy phần dư.
float w, k=2.2;
(chia a = c % b; * Lưu ý 06: Phép % chỉ sử dụng được với số nguyên.
lấy dư) w = k % b;
(Vì số thực sẽ luôn chia hết, không có phần dư).
*Hỏi: Sau khi chạy xong, a = ?, b = ?, c = ?, w = ? Lỗi chương trình
Câu hỏi:
1. Xác định giá trị của các biến sau khi chạy chương trình và giải thích:
int a,b,c;
a=5; b=10;
c = a * 5 + b % 3 – 4.2;
2. Xác định giá trị của các biến sau khi chạy chương trình và giải thích:
float a,b,c;
a=5; b=10;
c = a * 5 + b / 3.0 - 4.2;
3. Xác định giá trị của các biến sau khi chạy chương trình và giải thích:
int a,b;
float c;
a=5; b=10;
c = a * (b/3.0 - 4.2);
4. Xác định giá trị của các biến sau khi chạy chương trình và giải thích:
int c;
c = 10 / 3.0 + 5.9 - 13 % 5;
5. Cho chương trình:
int a=2;
float c = 5 / (a + 0.0);
Hỏi: c = ?
Ký hiệu Ví dụ Ý nghĩa
> int a=1, b=2, c; - Phép > dùng để so sánh xem Phía trước có lớn hơn Phía
c = a > b;
(lớn hơn) sau hay không?
+ Nếu đúng thì kết quả trả về là 1.
+ Nếu sai thì kết quả trả về là 0.
*Lưu ý: Số khác 0 là True. Chỉ số 0 là False. (học sau)
*Hỏi: Sau khi chạy xong, a = ?, b = ? c = ?
*Tương tự cho các phép sau:
>= Lớn hơn hoặc bằng Tương tự như trên.
< Bé hơn
Câu hỏi:
1. Xác định giá trị của các biến sau khi chạy chương trình & giải thích:
int a=4,b=7,c;
c = a <= b - a + 5.0/2 + 3.5;
2. Xác định giá trị của các biến sau khi chạy chương trình & giải thích:
int a=4,b=7,c;
c = a > b + 7/(5.0 == a);
- Thực tế, phép so sánh không sử dụng để thực hiện các phép toán mà thường kết hợp với các câu
lệnh so sánh điều kiện: if, for, while,...để kiểm tra điều kiện đúng/sai. Xem ví dụ sau:
Chương trình Ý nghĩa
int a=1,b=2; - Cho a, b giá trị.
if(a>b) - Dùng câu lệnh if(nếu) để kiểm tra điều kiện:
printf("a lon hon b"); o Nếu a>b đúng, thì xuất ra:
if(a<b) "a lon hon b"
printf("a nho hon b"); o Tương tự cho 2 trường hợp còn lại.
if(a==b)
printf("a nho hon b");
4. Phép toán luận lý
- Thực tế, phép luận lý được sử dụng trong so sánh điều kiện: if, for, while,...để kiểm tra điều kiện
đúng/sai. Xem ví dụ sau:
Chương trình Câu hỏi
int a=4,b=2,c=5; - Theo bạn, chương trình này dùng để làm
if(a>=b && a>=c) gì?
printf("a lon nhat");
if(b>=a && b>=c)
printf("b lon nhat");
if(c>=a && c>=b)
printf("c lon nhat");
Ký hiệu Ví dụ Ý nghĩa
++ int a=2, b=3, x, y; *Có 2 dạng: a++, ++a.
a++;
(tăng 1) ++b; - Nếu đứng 1 mình thì giống nhau: (a++) = (++a),
y = 5 + ++a; cũng chính là: (a = a+1)
x = a++ + ++b;
//nên đóng ngoặc cho dễ - Nếu nằm trong 1 biểu thức thì khác nhau:
theo dõi. (a++)+(++b)
x = 5 + (a++); x = 5 + a;
//Tính trước - tăng sau
a++;
x = 5 + (++a); ++a;
//Tăng trước - tính sau
x = 5 + a;
*Hỏi: Sau khi chạy xong, a = ?, b = ?, x = ?, y = ? Viết lại thành từng câu lệnh đơn.
-- int a=2, b=3, x, y; - Tương tự ++
x = a-- + b;
(giảm 1)
y = (++a - b--)/3;
*Hỏi: Sau khi chạy xong, a = ?, b = ?, x = ?, y = ? Viết lại thành từng câu lệnh đơn.
+= int a=4; - Phép viết tắt:
a+=5;
(viết tắt) a += 5; a = a + 5;
*Hỏi: Sau khi chạy xong, a = ?.
-= int a=1,b=2,c=5; - Tương tự +=
a += b + 1;
*= b *= a + 2;//Đoán xem? *Lưu ý: Nếu vế phải là 1 biểu thức, thì biểu thức được
c %= a-1;
/= thực hiện trước, rồi mới tính vào vế trái.
%=
*Hỏi: Sau khi chạy xong, a = ?, b = ?
Cho chương trình:
int a= 7, b=3;
a+=5;
printf("a=%d\n",a++);
printf("kq=%d\n",--b + a);
Hỏi: Kết quả xuất ra màn hình là gì? Tại sao ?
6. Ép kiểu dữ liệu
- Từ 1 biến kiểu A, bạn có thể ép thành kiểu B = bằng cách ghi tên kiểu dữ liệu mong muốn ở phía
trước biến cần ép kiểu.
Chương trình Ý nghĩa
int a; - b là số thực.
float b; - (int)b: ép kiểu giá trị của b thành kiểu số
b = 5.3; nguyên. (tức: chỉ còn giữ lại phần nguyên)
a = (int)b; Và Kết quả gán cho a. Lúc này a = 5.
- Thậm chí, bạn cũng có thể ghi: a = b; thì
chương trình vẫn tự động ép kiểu.
- Trong một số trường hợp thì việc ép kiểu phải ghi rõ ràng, nếu không thì kết quả sẽ không đúng
như mong muốn, xét ví dụ sau:
Chương trình 01 Hỏi
int a=7; b = ?
float b;
b = a/2;