Presentation laddar. Vänta.

Presentation laddar. Vänta.

Anders Sjögren Operatorer. Anders Sjögren Operand(er)

Liknande presentationer


En presentation över ämnet: "Anders Sjögren Operatorer. Anders Sjögren Operand(er)"— Presentationens avskrift:

1 Anders Sjögren Operatorer

2 Anders Sjögren Operand(er)

3 Anders Sjögren Operator och operand 3 + 2

4 Anders Sjögren Aritmetiska operatorer i C

5 Anders Sjögren Aritmetiska operatorer i C +addition - subtraktion ·multiplikation /division %modulo-operatorn, resten vid positiv heltals-division -negation, unär operator

6 Anders Sjögren Aritmetiska operatorer i C +addition - subraktion ·multiplikation /division %modulo-operatorn, resten vid positiv heltals-division -negation, unär operator Exempel

7 Anders Sjögren Aritmetiska operatorer i C exempel

8 negation - 2

9 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition - 2 + 4

10 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division - 2 + 4 / 2

11 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation - 2 + 4 / 2 * 3

12 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1

13 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 detta är ett uttryck

14 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int )

15 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int ) #include int main( void ) { printf( "Uttrycket -2+4/2*3-1 = %d",-2+4/2*3-1 ); return 0; } OP1.EXE

16 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska

17 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion (- 2 + 4 ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska vill man ändra prioritetsordning så gör man det med parenteser

18 Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion (- 2 + 4 ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska vill man ändra prioritetsordning så gör man det med parenteser #include int main( void ) { printf( "Uttrycket (-2+4)/2*3-1 = %d",(-2+4)/2*3-1 ); return 0; } OP2.EXE

19 Anders Sjögren Aritmetiska operatorer i C exempel ett varningens ord om division, och som också brukar dyka upp som tentamensfråga.....

20 Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?.....

21 Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?.....

22 Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?..... hmm, ja det är väl 4,5?

23 Anders Sjögren Aritmetiska operatorer i C exempel vad tror DU ?

24 Anders Sjögren Aritmetiska operatorer i C exempel prova ! #include int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; } OP3.EXE

25 Anders Sjögren Aritmetiska operatorer i C exempel division av två heltal (int) i C ger ett heltal som svar. Om man vill ha ett flyttal (double ) som svar så ordnas detta genom att göra antingen divisor eller dividend till en double. Sätt till en decimalpunkt, här! #include int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; }

26 Anders Sjögren Aritmetiska operatorer i C exempel så ja! Testa! #include int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2.) ); return 0; } OP4.EXE

27 Anders Sjögren Aritmetiska operatorer i C exempel hmm, men vad gör den där modulo-grejen? %

28 Anders Sjögren Aritmetiska operatorer i C exempel hmm, men vad gör den där modulo-grejen? % den ger resten vid heltalsdivision, kika på nästa sida!

29 Anders Sjögren Aritmetiska operatorer i C exempel multiplikation t ex 7*3 är ju detsamma som att addera 7 3 ggr (7+7+7). På motsvarande sätt betyder 7/3 ”hur många ggr går det att subtrahera 3 från 7” (7-3-3). Det går två hela ggr och så får man resten 1 Denna rest får man fram med %. Provkör exemplet! #include int main( void ) { printf( "Uttrycket 7%3 = %d", 7%3 ); return 0; } OP5.EXE

30 Anders Sjögren Aritmetiska operatorer i C exempel multiplikation t ex 7*3 är ju detsamma som att addera 7 3 ggr (7+7+7). På motsvarande sätt betyder 7/3 ”hur många ggr går det att subtrahera 3 från 7” (7-3-3). Det går två hela ggr och så får man resten 1 Denna rest får man fram med %. Provkör exemplet! #include int main( void ) { printf( "Uttrycket 7%3 = %d", 7%3 ); return 0; } OP5.EXE OBS! dubbla % !

31 Anders Sjögren Aritmetiska operatorer i C undrar hur man gör med de där?

32 Anders Sjögren Aritmetiska funktioner i C då räcker det inte med operatorer utan man får plocka fram det tunga artilleriet nämligen funktioner !

33 Anders Sjögren Aritmetiska funktioner i C double acos (double ); double asin (double ); double atan (double ); double ceil (double ); double cos (double ); double cosh (double ); double exp (double ); double fabs (double ); double floor (double ); double log (double ); double log10 (double ); double pow (double, double ); double sin (double ); double sinh (double ); double sqrt (double ); double tan (double ); double tanh (double ); några funktioner ur math.h Exempel

34 Anders Sjögren Aritmetiska funktioner i C exempel #include int main( void ) { printf( "Uttrycket pow(2,16)-1 = %0.0f", pow(2,16)-1 ); return 0; } OP6.EXE

35 Anders Sjögren Aritmetiska funktioner i C intabs(int ); long labs(long ); några funktioner ur stdlib.h

36 Anders Sjögren ”Öka eller minska med ett” - operatorn

37 Anders Sjögren ”Öka eller minska med ett” - operatorn I C ökas (eng.increment) resp minskas (eng. decrement) en heltalsvariabel med värdet 1 på följande sätt, #include int main( void ) { inti=0, j=5; printf( "Variabelvärden: i = %d \n", i ); printf( "Variabelvärden: j = %d \n", j ); printf( "Uttrycket \t ++i = %d och j++ = %d \n", ++i, j++ ); printf( "Variabelvärden: i = %d \n", i ); printf( "Variabelvärden: j = %d \n", j ); return 0; } operatorn ++ som prefix- operator som innebär att i:s värde ökas med ett innan uttrycket beräknas ++ som postfix-operator, j:s värde ökas med ett efter det att uttrycket beräknats OP7.EXE

38 Anders Sjögren ”Öka eller minska med ett” - operatorn På motsvarande sätt fungerar ”minska med ett”-operatorn #include int main( void ) { inti=0, j=5; printf( "Variabelvärden: n = %d \n", i ); printf( "Variabelvärden: i = %d \n", j ); printf( "Uttrycket \t --i * j-- = %d \n", --i * j--); printf( "Variabelvärden: n = %d \n", i ); printf( "Variabelvärden: i = %d \n", j ); return 0; } operatorn -- som prefix- operator som innebär att i:s värde minskas med ett innan uttrycket beräknas -- som postfix-operator, j:s värde minskas med ett efter det att uttrycket beräknats OP8.EXE

39 Anders Sjögren Jämförelseoperatorer

40 Anders Sjögren Jämförelseoperatorer <”mindre än” - operatorn >”större än” - operatorn <=”mindre än eller lika med” - operatorn >=”större än eller lika med” - operatorn ==” lika med” - operatorn ( OBS! dubbelt = ) !=” skilt från” - operatorn

41 Anders Sjögren Jämförelseoperatorer <”mindre än” - operatorn >”större än” - operatorn <=”mindre än eller lika med” - operatorn >=”större än eller lika med” - operatorn ==” lika med” - operatorn ( OBS! dubbelt = ) !=” skilt från” - operatorn Exempel

42 Anders Sjögren Jämförelseoperatorer exempel #include int main( void ) { inti=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i == j får vördet %d \n", i == j); printf( "och \t\t i != j får värdet %d \n", i!=j ); return 0; } OP9.EXE eftersom du gör så här måste det betyda att jämförelseuttrycken har ett heltalsvärde!? provsmaka!

43 Anders Sjögren Jämförelseoperatorer exempel detta betyder att ett falskt villkorsuttryck har värdet 0, –i detta fall har ( i == j ) värdet 0 och ett sant värdet 1, –i detta fall har ( i!=j ) värdet 1 Exempel

44 Anders Sjögren Iteration i C exempel #include #define DELAY 1000000L int main( void ){ long i; while ( 1==1 ) { printf("A"); for ( i=1; i < DELAY ; i++ ) ; printf("\tn"); for ( i=1; i < DELAY ; i++ ) ; printf("\td"); for ( i=1; i < DELAY ; i++ ) ; printf("\te"); for ( i=1; i < DELAY ; i++ ) ; printf("\tr"); for ( i=1; i < DELAY ; i++ ) ; printf("\ts"); for ( i=1; i < DELAY ; i++ ) ; printf("\r \t \t \t \t \t \r"); for ( i=1; i < DELAY ; i++ ) ; } return 0; } minns ni det här exemplet? För att få en oändlig loop kan man lika gärna skriva while ( 1 ). 1

45 Anders Sjögren Tilldelningsoperatorer de vanligaste

46 Anders Sjögren Tilldelningsoperatorer de vanligaste enkel tilldelning =x = y *3 sammansatt tilldelning, två blir en +=x += 3 är detsamma som x = x + 3  =x  = 3 är detsamma som x = x - 3 *=x  = 3 är detsamma som x = x * 3 /= x /= 3 är detsamma som x = x / 3 %=x %= 3 är detsamma som x = x % 3

47 Anders Sjögren Tilldelningsoperatorer de vanligaste enkel tilldelning =x = y *3 sammansatt tilldelning, två blir en +=x += 3 är detsamma som x = x + 3  =x  = 3 är detsamma som x = x - 3 *=x  = 3 är detsamma som x = x * 3 /= x /= 3 är detsamma som x = x / 3 %=x %= 3 är detsamma som x = x % 3 tilldelning sker från höger till vänster, x 

48 Anders Sjögren Tilldelningsoperatorer de vanligaste #include int main( void ) { inti=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i = j = 2 * j får vördet %d \n", i = j = 2 * j ); printf( "och \t\t i = %d och j = %d \n", i, j ); return 0; } OP10.EXE eftersom tilldelning betraktas som ett uttryck så har uttrycket ett värde, i detta fall 10. Det går även att göra multipla tilldelningar från höger till vänster.

49 Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander

50 Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander minns ni det här exemplet? I detta program används villkorsoperatorn.

51 Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander minns ni det här exemplet? I detta program används villkorsoperatorn. om detta uttryck är sant så gör detta annars det här

52 Anders Sjögren Villkorsoperatorn syntax uttryck 1 ? uttryck 2 : uttryck 3 beräkningen går till så att uttryck 1 beräknas först. Om detta uttryck får ett värde som inte är noll ( sant ) så beräknas därefter uttryck 2 och resultatet av hela villkorsuttrycket blir lika med värdet av uttryck 2. Om å andra sidan uttryck 1 får vardet 0 (falskt) beräknas i stället uttryck 3 och resultatet av hela villkorsuttrycket blir lika med värdet av uttryck 3.

53 Anders Sjögren Sant och falskt en kommentar i C finns ingen speciell datatyp ( boolsk ) för att hantera sant resp falskt utan dessa är av typen ”heltal” heltalsvärdet 0 står för falskt i ett relevant sammanhang alla andra heltalsvärden står för sant i ett relevant sammanhang, dvs inte bara heltalsvärdet 1

54 Anders Sjögren högst prioritet har de unära postfixoperatorerna [] (). -> ++ -- sedan kommer de unära prefixoperatorerna ++ -- & * + - ~ ! (typnamn) därefter de aritmetiska ( rikning V till H ) * / % + - skiftoperatorer ( rikning V till H ) > jämförelseoperatorerna ( rikning V till H ) = == != bit-operatorerna ( rikning V till H ) & ^ | logiska operatorer ( rikning V till H ) && || villkorsoperatorn ( rikning H till V ) ? uttryck : tilldelningsoperatorer ( rikning H till V ) = *= /= %= += -= >= &= ~= |= kommaoperatorn ( riktning V till höger ), Operatorprioritet

55 Anders Sjögren högst prioritet har de unära postfixoperatorerna [] (). -> ++ -- sedan kommer de unära prefixoperatorerna ++ -- & * + - ~ ! (typnamn) därefter de aritmetiska ( rikning V till H ) * / % + - skiftoperatorer ( rikning V till H ) > jämförelseoperatorerna ( rikning V till H ) = == != bit-operatorerna ( rikning V till H ) & ^ | logiska operatorer ( rikning V till H ) && || villkorsoperatorn ( rikning H till V ) ? uttryck : tilldelningsoperatorer ( rikning H till V ) = *= /= %= += -= >= &= ~= |= kommaoperatorn ( riktning V till höger ), Operatorprioritet Vad blir värdet av uttrycket nedan? int a=2, b=11, c=5 ; a+=30/-++c-+29%b a+=30/-c++-+29%b op11.ex e op12.ex e

56 Anders Sjögren Slut


Ladda ner ppt "Anders Sjögren Operatorer. Anders Sjögren Operand(er)"

Liknande presentationer


Google-annonser