Ch­ng 3

BiÓu thøc

To¸n h¹ng cã thÓ xem lµ mét ®¹i l­îng cã mét gi¸ trÞ nµo ®ã. To¸n h¹ng bao gåm h»ng, biÕn, phÇn tö m¶ng vµ hµm.

BiÓu thøc lËp nªn tõ c¸c to¸n h¹ng vµ c¸c phÐp tÝnh ®Ó t¹o nªn nh÷ng gi¸ trÞ míi. BiÓu thøc dïng ®Ó diÔn ®¹t mét c«ng thøc, mét qui tr×nh tÝnh to¸n, v× vËy nã lµ mét thµnh phÇn kh«ng thÓ thiÕu trong ch­ng tr×nh.

3.1. BiÓu thøc :

BiÓu thøc lµ mét sù kÕt hîp gi÷a c¸c phÐp to¸n vµ c¸c to¸n h¹ng ®Ó diÔn ®¹t mét c«ng thøc to¸n häc nµo ®ã. Mçi biÓu thøc cã sÏ cã mét gi¸ trÞ. Nh­ vËy h»ng, biÕn, phÇn tö m¶ng vµ hµm còng ®­îc xem lµ biÓu thøc.

Trong C, ta cã hai kh¸i niÖm vÒ biÓu thøc :

BiÓu thøc g¸n.

BiÓu thøc ®iÒu kiÖn .

BiÓu thøc ®­îc ph©n lo¹i theo kiÓu gi¸ trÞ : nguyªn vµ thùc. Trong c¸c mÖnh ®Ò logic, biÓu thøc ®­îc ph©n thµnh ®óng ( gi¸ trÞ kh¸c 0 ) vµ sai ( gi¸ trÞ b»ng 0 ).

BiÓu thøc th­êng ®­îc dïng trong :

VÕ ph¶i cña c©u lÖnh g¸n.

Lµm tham sè thùc sù cña hµm.

Lµm chØ sè.

Trong c¸c to¸n tö cña c¸c cÊu tróc ®iÒu khiÓn.

Tíi ®©y, ta ®· cã hai kh¸i niÖm chÝnh t¹o nªn biÓu thøc ®ã lµ to¸n h¹ng vµ phÐp to¸n. To¸n h¹ng gåm : h»ng, biÕn, phÇn tö m¶ng vµ hµm tr­íc ®©y ta ®· xÐt. D­íi ®©y ta sÏ nãi ®Õn c¸c phÐp to¸n. Hµm sÏ ®­îc ®Ò cËp trong ch­ng 6.

3.2. LÖnh g¸n vµ biÓu thøc:

BiÓu thøc g¸n lµ biÓu thøc cã d¹ng :

v=e

Trong ®ã v lµ mét biÕn ( hay phÇn tö m¶ng ), e lµ mét biÓu thøc. Gi¸ trÞ cña biÓu thøc g¸n lµ gi¸ trÞ cña e, kiÓu cña nã lµ kiÓu cña v. NÕu ®Æt dÊu ; vµo sau biÓu thøc g¸n ta sÏ thu ®­îc phÐp to¸n g¸n cã d¹ng :



v=e;

BiÓu thøc g¸n cã thÓ sö dông trong c¸c phÐp to¸n vµ c¸c c©u lÖnh nh­ c¸c biÓu thøc kh¸c. VÝ dô nh­ khi ta viÕt

a=b=5;

th× ®iÒu ®ã cã nghÜa lµ g¸n gi¸ trÞ cña biÓu thøc b=5 cho biÕn a. KÕt qña lµ b=5 vµ a=5.

Hoµn toµn t­ng tù nh­ :

a=b=c=d=6; g¸n 6 cho c¶ a, b, c vµ d

VÝ dô :

z=(y=2)*(x=6); { ë ®©y * lµ phÐp to¸n nh©n }

g¸n 2 cho y, 6 cho x vµ nh©n hai biÓu thøc l¹i cho ta z=12.

3.3. C¸c phÐp to¸n sè häc :

C¸c phÐp to¸n hai ng«i sè häc lµ

PhÐp to¸n ý nghi· VÝ dô
+ PhÐp céng a+b
- PhÐp trõ a-b
* PhÐp nh©n a*b
/ PhÐp chia a/b ( Chia sè nguyªn sÏ chÆt phÇn thËp ph©n )
% PhÐp lÊy phÇn d­ a%b ( Cho phÇn d­ cña phÐp chia a cho b )

Cã phÐp to¸n mét ng«i - vÝ du -(a+b) sÏ ®¶o gi¸ trÞ cña phÐp céng (a+b).

VÝ dô :

11/3=3

11%3=2

-(2+6)=-8

C¸c phÐp to¸n + vµ - cã cïng thø tù ­u tiªn, cã thø tù ­u tiªn nhá hn c¸c phÐp * , / , % vµ c¶ ba phÐp nµy l¹i cã thø tù ­u tiªn nhá hn phÐp trõ mét ng«i.

C¸c phÐp to¸n sè häc ®­îc thùc hiÖn tõ tr¸i sang ph¶i. Sè ­u tiªn vµ kh¶ n¨ng kÕt hîp cña phÐp to¸n ®­îc chØ ra trong mét môc sau nµy



3.4. C¸c phÐp to¸n quan hÖ vµ logic :

PhÐp to¸n quan hÖ vµ logic cho ta gi¸ trÞ ®óng ( 1 ) hoÆc gi¸ trÞ sai ( 0 ). Nãi c¸ch kh¸c, khi c¸c ®iÒu kiÖn nªu ra lµ ®óng th× ta nhËn ®­îc gi¸ trÞ 1, tr¸i l¹i ta nhËn gi¸ trÞ 0.

C¸c phÐp to¸n quan hÖ lµ :

PhÐp to¸n ý nghi· VÝ dô
> So s¸nh lín hn a>b 4>5 cã gi¸ trÞ 0
>= So s¸nh lín hn hoÆc b»ng a>=b 6>=2 cã gi¸ trÞ 1
< So s¸nh nhá hn a
<= So s¸nh nhá hn hoÆc b»ng a<=b 8<=5 cã gi¸ trÞ 0
== So s¸nh b»ng nhau a==b 6==6 cã gi¸ trÞ 1
!= So s¸nh kh¸c nhau a!=b 9!=9 cã gi¸ trÞ 0

Bèn phÐp to¸n ®Çu cã cïng sè ­u tiªn, hai phÐp sau cã cïng sè thø tù ­u tiªn nh­ng thÊp hn sè thø tù cña bèn phÐp ®Çu.

C¸c phÐp to¸n quan hÖ cã sè thø tù ­u tiªn thÊp hn so víi c¸c phÐp to¸n sè häc, cho nªn biÓu thøc :

i

®­îc hiÓu lµ i<(n-1).

C¸c phÐp to¸n logic :

Trong C sö dông ba phÐp to¸n logic :

PhÐp phñ ®Þnh mét ng«i !

a !a
kh¸c 0
b»ng 0

PhÐp vµ (AND) &&

PhÐp hoÆc ( OR ) ||

a b a&&b a||b
kh¸c 0 kh¸c 0
kh¸c 0 b»ng 0
b»ng 0 kh¸c 0
b»ng 0 b»ng 0

C¸c phÐp quan hÖ cã sè ­u tiªn nhá hn so víi ! nh­ng lín hn so víi && vµ ||, v× vËy biÓu thøc nh­ :

(ad)

cã thÓ viÕt l¹i thµnh :

ad

Chó ý :

C¶ a vµ b cã thÓ lµ nguyªn hoÆc thùc.

3.5. PhÐp to¸n t¨ng gi¶m :

C ®­a ra hai phÐp to¸n mét ng«i ®Ó t¨ng vµ gi¶m c¸c biÕn ( nguyªn vµ thùc ). To¸n tö t¨ng lµ ++ sÏ céng 1 vµo to¸n h¹ng cña nã, to¸n tö gi¶m -- th× sÏ trõ to¸n h¹ng ®i 1.

VÝ dô :

n=5

++n Cho ta n=6

--n Cho ta n=4

Ta cã thÓ viÕt phÐp to¸n ++ vµ -- tr­íc hoÆc sau to¸n h¹ng nh­ sau : ++n, n++, --n, n--.

Sù kh¸c nhau cña ++n vµ n++ ë chç : trong phÐp n++ th× t¨ng sau khi gi¸ trÞ cña nã ®· ®­îc sö dông, cßn trong phÐp ++n th× n ®­îc t¨ng tr­íc khi sö dông. Sù kh¸c nhau gi÷a n-- vµ --n còng nh­ vËy.

VÝ dô :

n=5

x=++n Cho ta x=6 vµ n=6

x=n++ Cho ta x=5 vµ n=6

3.6. Thø tù ­u tiªn c¸c phÐp to¸n :

C¸c phÐp to¸n cã ®é ­u tiªn kh¸c nhau, ®iÒu nµy cã ý nghÜa trong cïng mét biÓu thøc sÏ cã mét sè phÐp to¸n nµy ®­îc thùc hiÖn tr­íc mét sè phÐp to¸n kh¸c.

Thø tù ­u tiªn cña c¸c phÐp to¸n ®­îc tr×nh bµy trong b¶ng sau :

TT PhÐp to¸n Tr×nh tù kÕt hîp
() [] -> Tr¸i qua ph¶i
! ~ & * - ++ -- (type ) sizeof Ph¶i qua tr¸i
* ( phÐp nh©n ) / % Tr¸i qua ph¶i
+ - Tr¸i qua ph¶i
<> Tr¸i qua ph¶i
< >= Tr¸i qua ph¶i
== != Tr¸i qua ph¶i
& Tr¸i qua ph¶i
^ Tr¸i qua ph¶i
| Tr¸i qua ph¶i
&& Tr¸i qua ph¶i
|| Tr¸i qua ph¶i
?: Ph¶i qua tr¸i
= += -= *= /= %= <>= &= ^= |= Ph¶i qua tr¸i
, Tr¸i qua ph¶i

Chó thÝch :

C¸c phÐp to¸n tªn mét dßng cã cïng thø tù ­u tiªn, c¸c phÐp to¸n ë hµng trªn cã sè ­u tiªn cao hn c¸c sè ë hµng d­íi.

§èi víi c¸c phÐp to¸n cïng møc ­u tiªn th× tr×nh tù tÝnh to¸n cã thÓ tõ tr¸i qua ph¶i hay ng­îc l¹i ®­îc chØ ra trong cét tr×nh tù kÕt hîp.

VÝ dô :

*--px=*(--px) ( Ph¶i qua tr¸i )

8/4*6=(8/4)*6 ( Tr¸i qua ph¶i )

Nªn dïng c¸c dÊu ngoÆc trßn ®Ó viÕt biÓu thøc mét c¸ch chÝnh x¸c.

C¸c phÐp to¸n l¹ :

Dßng 1

[ ] Dïng ®Ó biÓu diÔn phÇn tö m¶ng, vÝ dô : a[i][j]

. Dïng ®Ó biÓu diÔn thµnh phÇn cÊu tróc, vÝ dô : ht.ten

-> Dïng ®Ó biÓu diÔn thµnh phÇn cÊu tróc th«ng qua con trá

Dßng 2

* Dïng ®Ó khai b¸o con trá, vÝ dô : int *a

& PhÐp to¸n lÊy ®Þa chØ, vÝ dô : &x

( type) lµ phÐp chuyÓn ®æi kiÓu, vÝ dô : (float)(x+y)

Dßng 15

To¸n tö , th­êng dïng ®Ó viÕt mét d·y biÓu thøc trong to¸n tö for.

3.7. ChuyÓn ®æi kiÓu gi¸ trÞ :

ViÖc chuyÓn ®æi kiÓu gi¸ trÞ th­êng diÔn ra mét c¸ch tù ®éng trong hai tr­êng hîp sau :

Khi g¸n biÓu thøc gåm c¸c to¸n h¹ng kh¸c kiÓu.

Khi g¸n mét gi¸ trÞ kiÓu nµy cho mét biÕn ( hoÆc phÇn tö m¶ng ) kiÓu kh¸c. §iÒu nµy x¶y ra trong to¸n tö g¸n, trong viÖc truyÒn gi¸ trÞ c¸c tham sè thùc sù cho c¸c ®èi.

Ngoµi ra, ta cã thÓ chuyÓn tõ mét kiÓu gi¸ trÞ sang mét kiÓu bÊt kú mµ ta muèn b»ng phÐp chuyÓn sau :

( type ) biÓu thøc

VÝ dô :

(float) (a+b)

ChuyÓn ®æi kiÓu trong biÓu thøc :

Khi hai to¸n h¹ng trong mét phÐp to¸n cã kiÓu kh¸c nhau th× kiÓu thÊp hn sÏ ®­îc n©ng thµnh kiÓu cao hn tr­íc khi thùc hiÖn phÐp to¸n. KÕt qu¶ thu ®­îc lµ mét gi¸ trÞ kiÓu cao hn. Ch¼ng h¹n :

Gi÷a int vµ long th× int chuyÓn thµnh long.

Gi÷a int vµ float th× int chuyÓn thµnh float.

Gi÷a float vµ double th× float chuyÓn thµnh double.

VÝ dô :

1.5*(11/3)=4.5

1.5*11/3=5.5

(11/3)*1.5=4.5

ChuyÓn ®æi kiÓu th«ng qua phÐp g¸n :

Gi¸ trÞ cña vÕ ph¶i ®­îc chuyÓn sang kiÓu vÕ tr¸i ®ã lµ kiÓu cña kÕt qu¶. KiÓu int cã thÓ ®­îc ®­îc chuyÓn thµnh float. KiÓu float cã thÓ chuyÓn thµnh int do chÆt ®i phÇn thËp ph©n. KiÓu double chuyÓn thµnh float b»ng c¸ch lµm trßn. KiÓu long ®­îc chuyÓn thµnh int b»ng c¸ch c¾t bá mét vµi ch÷ sè.

VÝ dô :

int n;

n=15.6 gi¸ trÞ cña n lµ 15

§æi kiÓu d¹ng (type)biÓu thøc :

Theo c¸ch nµy, kiÓu cña biÓu thøc ®­îc ®æi thµnh kiÓu type theo nguyªn t¾c trªn.

VÝ dô :

PhÐp to¸n : (int)a

cho mét gi¸ trÞ kiÓu int. NÕu a lµ float th× ë ®©y cã sù chuyÓn ®æi tõ float sang int. Chó ý r»ng b¶n th©n kiÓu cña a vÉn kh«ng bÞ thay ®æi. Nãi c¸ch kh¸c, a vÉn cã kiÓu float nh­ng (int)a cã kiÓu int.

§èi víi hµm to¸n häc cña th­ viÖn chuÈn, th× gi¸ trÞ cña ®èi vµ gi¸ trÞ cña hµm ®Òu cã kiÓu double, v× vËy ®Ó tÝnh c¨n bËc hai cña mét biÕn nguyªn n ta ph¶i dïng phÐp Ðp kiÓu ®Ó chuyÓn kiÓu int sang double nh­ sau :

sqrt((double)n)

PhÐp Ðp kiÓu cã cïng sè ­u tiªn nh­ c¸c to¸n tö mét ng«i.

Chó ý :

Muèn cã gi¸ trÞ chÝnh x¸c trong phÐp chia hai sè nguyªn cÇn dïng phÐp Ðp kiÓu :

((float)a)/b

§Ó ®æi gi¸ trÞ thùc r sang nguyªn, ta dïng :

(int)(r+0.5)

Chó ý thø tù ­u tiªn :

(int)1.4*10=1*10=10

(int)(1.4*10)=(int)14.0=14



0873315272431868.html
0873359438248433.html
    PR.RU™