Bài 5 Toán t và Bi u th c
M c tiêu:
K t thúc bài h c này, b n có th :ế
S d ng đ c các toán t s h c, so sánh và lu n lý ượ
Chuy n đ i các ki u d li u
N m đ c th t u tiên gi a các toán t . ượ ư
Các b c trong ch ng này đã đ c nghiên c u k gi i thích chi ti t đ chúng ta có th hi u ướ ươ ượ ế
và áp d ng chúng m t cách hoàn ch nh.Ta hãy theo các b c c n th n. ướ
Ph n I - Trong th i gian 1 gi 30 phút đ u:
Ví d 1:
Trong ch ng này, ta s vi t m t ch ng trình tính toán ti n lãi đ n gi n (lãi thu n ch a tính ti nươ ế ươ ơ ư
v n vào) khi ta vay ti n.
Công th c đ tính toán p * n * r /100. đây p nghĩa ti n v n, n s năm r
nghĩa là t l lãi su t.
Ch ng trình khai báo ba bi n s th c ‘float’ có tên là p, n và r. Chú ý r ng, các bi n đ c khai báoươ ế ế ượ
trên cùng m t dòng thì ta dùng d u ph y (,) đ phân chia chúng v i nhau. M i bi n trên đ c ế ượ
gán m t giá tr .
Xét dòng mã sau:
printf(“\nAmount is: %f”, p*n*r/100);
Trong printf() trên, chúng ta đã dùng ‘%f’ đ hi n th giá tr c a bi n ki u float (s th c), giá tr ế
bi n này p*n*r/100, công th c dùng tính lãi đ n gi n đ c đ a vào trong ế ơ ượ ư printf(). Đó p, n r
đ c nhân v i nhau và k t qu đ c chia cho 100. Nh v y ượ ế ượ ư printf() s hi n th lãi đ n. ơ
G i Borland C.
5.1 Tính lãi đ nơ
1. T o ra m t t p tin m i.
2. Gõ đo n mã sau trong ‘Edit window’:
#include <stdio.h>
#include <conio.h>
void main()
{
float p, n, r;
clrscr();
p = 1000;
Toán t và bi u th c 61
n = 2.5;
r = 10.5;
printf(“\n Amount is: %f”, p*n*r/100);
}
3. L u t p tin v i tên ư simple.c.
4. Biên d ch t p tin simple.c.
5. Th c thi ch ng trình ươ simple.c.
6. Tr v trình so n th o.
K t qu :ế
The Amount is: 262.500000
5.2 Dùng toán t s h c
Trong ph n này ta s vi t m t ch ng trình có s d ng toán t s h c. ế ươ
Ch ng trình này khai báo b n bi n s nguyên tên là a, b, c và d. Giá tr s gán cho các bi n a, b ươ ế ế
c là:
a = 50, b = 24, c = 68
Xét dòng mã sau:
d = a*b+c/2;
a nhân v i b. c chia cho 2. K t qu c a a*b đ c c ng v i th ng s c a c/2. Giá tr này s gán ế ượ ươ
cho d qua toán t (=). Bi u th c đ c tính nh sau: ượ ư
1. 50 * 24 = 1200
2. 68 / 2 = 34
3. 1200 + 34 = 1234
4. d = 1234
‘printf( )’ : hi n th giá tr c a bi n d. ế
Xét bi u th c:
d = a*(b+c+(a-c)*b);
đây d u ngo c đ n trong cùng đ u tiên cao nh t. Do v y, (a-c) đ c tính tr c. Sau đó, ơ ư ượ ướ
tính t i các d u ngo c đ n ngoài. K t qu c a (a-c) đ c nhân cho b b i ‘*’ đ u tiên cao ơ ế ượ ư
h n ‘-‘ và ‘+’. Bi u th c đ c tính nh d i đây:ơ ượ ư ướ
1. d = 50 * (24 + 68 + (50 - 68) * 24)
2. d = 50 * (24 + 68 + (-18) * 24)
3. d = 50 * (24 + 68 + (-432))
4. d = 50 * (92 - 432)
62 L p trình c b n C ơ
5. d = 50 * (-340)
6. d = -17000
Các bi u th c khác đ c tính tùy vào các toán t đã đ c dùng. K t qu đ c hi n th b i l nh ượ ượ ế ượ
‘printf()’.
1.T o m i m t t p tin.
2. Gõ đo n mã sau trong ‘Edit window’:
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b,c,d;
clrscr();
a = 50;
b = 24;
c = 68;
d = a*b+c/2;
printf(“\n The value after a*b+c/2 is: %d”, d);
d = a%b;
printf(“\n The value after a mod b is: %d”, d);
d = a*b-c;
printf(“\n The value after a*b-c is: %d”, d);
d = a/b+c;
printf(“\n The value after a/b+c is: %d”, d);
d = a+b*c;
printf(“\n The value after a+b*c is: %d”, d);
d = (a+b)*c;
printf(“\n The value after (a+b)*c is: %d”, d);
d = a*(b+c+(a-c)*b);
printf(“\n The value after a*(b+c+(a-c)*b) is: %d”, d);
}
3. L u t p tin v i tên ư arith.c.
4. Biên d ch t p tin arith.c.
5. Th c thi ch ng trình ươ arith.c.
6. Tr v trình so n th o.
K t qu xu t:ế
The value after a*b+c/2 is: 1234
The value after a mod b is: 2
The value after a*b-c is: 1132
The value after a/b+c is: 70
The value after a+b*c is: 1682
Toán t và bi u th c 63
The value after (a+b)*c is: 5032
The value after a*(b+c+(a-c)+b) is: -17000
5.3 Dùng toán t so sánh và lu n lý
Trong ph n này chúng ta s vi t m t ch ng trình s d ng toán t so sánh và toán t lu n lý. ế ươ
Ba bi n s nguyên tên a, b c đ c khai báo trong ch ng trình này. Các giá tr gán cho bi nế ượ ươ ế
nh sau: a = 5, b = 6 & c = 7.ư
Xét nh ng dòng mã sau:
1. a + b >= c;
Ð u tiên, a+b s đ c tính (toán t s h c đ u tiên cao h n toán t so sánh), k t qu 11. ượ ư ơ ế
K đ n giá tr 11 đ c so sánh v i c. K t qu là 1(true) b i vì 11 > 7.ế ế ượ ế
2. Xét bi u th c khác:
a > 10 && b <5;
Tính toán đ u tiên s a> 10 và b<5, b itoán t so sánh (> <) có quy n u tiên cao h n toán t ư ơ
lu n lý AND (&&). Tính toán theo sau:
1. 5 > 10 && 6<5
2. FALSE && FALSE
3. FALSE t c là, 0
1. T o m t t p tin m i.
2. Gõ đo n mã sau vào ‘Edit window’:
#include <stdio.h>
#include <conio.h>
void main()
{
int a = 5, b = 6, c = 7;
printf ("int a = 5, b = 6, c = 7;\n");
printf("The value of a > b is \t%i\n\n", a > b);
printf("The value of b < c is \t%i\n\n", b < c);
printf("The value of a + b >= c is \t%i\n\n", a + b >= c);
printf("The value of a - b <= b - c is \t%i\n\n", a-b <= b-c);
printf("The value of b-a == b - c is \t%i\n\n", b - a == b - c);
printf("The value of a*b != c * c is \t%i\n\n", a * b < c * c);
printf(“Result of a>10 && b<5 = %d\n\n“, a>10 && b<5);
printf(“Result of a > 100 || b < 50 = %d\n\n”, a>100 || b<50);
}
3. L u t p tin v i tên ư compare.c.
4. Biên d ch t p tin compare.c.
64 L p trình c b n C ơ
5. Th c thi ch ng trình ươ compare.c.
6. Tr v trình so n th o.
K t qu xu t:ế
int a = 5, b = 6, c = 7;
The value of a > b is 0
The value of b < c is 1
The value of a + b >= c is 1
The value of a - b <= b - c is 1
The value of b - a == b - c is 0
The value of a * b != c * c is 1
Result of a > 10 && b < 5 = 0
Result of a > 100 || b < 50 = 1
5.4 Chuy n đ i ki u d li u ểổểữ
Trong ph n này, ta s vi t m t ch ng trình đ hi u rõ vi c chuy n đ i ki u d li u. ế ươ
Trong bi u th c đ u tiên, t t c đ u s nguyên ‘int’ 40 / 17 * 13 / 3 s k t qu 8 ( ế 40 / 17
làm tròn ra 2, 2 * 13 = 26, 26 / 3 làm tròn ra 8)
Bi u th c th hai nh sau: ư
1. Ð nh giá tr : 40 / 17 * 13 / 3.0
2. 40 / 17 làm tròn k t qu là 2ế
3. 2 * 13 = 26
4. Nh ng s ư 3.0 đã ép ki u phép chia cu i cùng thành s ki u double, v y
26.0 / 3.0 = 8.666667
Trong bi u th c th ba:
N u chúng ta di chuy n d u ch m th p phân sang s ế 13 (40 / 17 * 13.0 / 3), k t qu v n s ế
8.666667 b i vì:
1. 40 / 17 làm tròn là 2
2. S 13.0 ép ki u d li u phép nhân thành double nh ng k t qu v n là 26 ư ế
2.0 * 13.0 = 26.0
Toán t và bi u th c 65