Presentation laddar. Vänta.

Presentation laddar. Vänta.

Operatorer.

Liknande presentationer


En presentation över ämnet: "Operatorer."— Presentationens avskrift:

1 Operatorer

2 Operand(er)

3 Operator och operand 3 + 2

4 Aritmetiska operatorer i C
+ addition - subtraktion * multiplikation / division % modulo-operatorn , resten vid positiv heltals-division - negation, unär operator

5 Aritmetiska operatorer i C exempel
negation - 2

6 Aritmetiska operatorer i C exempel
negation, addition

7 Aritmetiska operatorer i C exempel
negation, addition, division / 2

8 Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation / 2 * 3

9 Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1

10 Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1 detta är ett uttryck

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

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

13 Provkörning

14 Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska

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

16 Aritmetiska operatorer i C exempel
vill man ändra prioritetsordning så gör man det med parenteser negation, addition, division, multiplikation, subtraktion ( ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska #include <stdio.h> int main( void ) { printf( "Uttrycket (-2+4)/2*3-1 = %d",(-2+4)/2*3-1 ); return 0; } OBS! Vid multiplikation måste alltid multiplikationstecknet sättas ut: 5( x+3) fungerar inte! 5*(x+3) fungerar!

17 Provkörning

18 Aritmetiska operatorer i C exempel
ett varningens ord om division …

19 Aritmetiska operatorer i C exempel
vad tror du 9/2 är?.....

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

21 Aritmetiska operatorer i C exempel
hmm, ja det är väl 4,5? vad tror du 9/2 är?.....

22 Aritmetiska operatorer i C exempel
vad tror DU ?

23 Aritmetiska operatorer i C exempel
prova ! #include <stdio.h> int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; }

24 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 <stdio.h> int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; }

25 Aritmetiska operatorer i C exempel
så ja! Testa! #include <stdio.h> int main( void ) { printf( "Uttrycket 9/2. = %f", (double)(9/2.) ); return 0; }

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

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

28 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! OBS! dubbla % ! #include <stdio.h> int main( void ) { printf( "Uttrycket 7%%3 = %d", 7%3 ); return 0; }

29 Minuter och sekunder Hur många minuter är 9631 sekunder?
int sek = 9631; printf("%d sekunder är %d minuter och %d sekunder\n", sek, sek/60, sek%60 );

30 Aritmetiska operatorer i C
undrar hur man gör med de där?

31 Aritmetiska funktioner i C
då räcker det inte med operatorer utan man får plocka fram det tunga artilleriet nämligen funktioner !

32 Aritmetiska funktioner i C
några funktioner ur math.h 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 );

33 Aritmetiska funktioner i C exempel
#include <stdio.h> #include <math.h> int main( void ) { printf( "Uttrycket pow(2,16)-1 = %0.0f", pow(2,16)-1 ); return 0; }

34 Aritmetiska funktioner i C
några funktioner ur stdlib.h int abs(int ); long labs(long );

35 ”Öka eller minska med ett” -operatorn

36 ”Ö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 <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t ++i = %d och j++ = %d \n", ++i, 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

37 Provkörning #include <stdio.h> int main( void ) { int i=0, j=5;
printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t ++i = %d och j++ = %d \n", ++i, j++ ); return 0; }

38 ”Öka eller minska med ett” -operatorn
På motsvarande sätt fungerar ”minska med ett”-operatorn #include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t --i * j-- = %d \n", --i * 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

39 Provkörning #include <stdio.h> int main( void ) { int i=0, j=5;
printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t --i * j-- = %d \n", --i * j--); return 0; }

40 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 Jämförelseoperatorer exempel
eftersom du gör så här måste det betyda att jämförelseuttrycken har ett heltalsvärde!? #include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i == j far vardet %d \n", i == j); printf( "och \t\t i != j far vardet %d \n", i!=j ); return 0; }

42 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

43 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

44 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 ¬ 3

45 Tilldelningsoperatorer de vanligaste
#include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i = j = 2 * j far vardet %d \n", i = j = 2 * j ); printf( "och \t\t i = %d och j = %d \n", i, j ); return 0; } 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 .

46 Villkorsoperatorn den enda operatorn med tre operander

47 Villkorsoperatorn den enda operatorn med tre operander
minns ni det här exemplet? I detta program används villkorsoperatorn.

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

49 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.

50 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

51 = *= /= %= += -= <<= >>= &= ~= |=
Operatorprioritet 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 ) ,

52 = *= /= %= += -= <<= >>= &= ~= |=
Operatorprioritet 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 ) , Vad blir värdet av uttrycken nedan? int a=2, b=11, c=5 ; a+=30/-++c-+29%b a+=30/-c++-+29%b #include <stdio.h> int main( void ) { int a=2, b=11, c=5 ; printf( "Uttrycket a+=30/-++c-+29%%b = %d", a+=30/-++c-+29%b ); return 0; } Exekveringsresultat ?? #include <stdio.h> int main( void ) { int a=2, b=11, c=5 ; printf( "Uttrycket a+=30/-c++-+29%%b = %d", a+=30/-c++-+29%b ); return 0; } ??

53 Facit till operatoruppgiften
Vad blir värdet av uttrycket nedan? int a=2, b=11, c=5 ; a+=30/-++c-+29%b a += 30/-++c - +29%b a = /-6 – 29%11 a = 2 –5 – 7 a = -10

54 Facit till operatoruppgiften
Vad blir värdet av uttrycket nedan? int a=2, b=11, c=5 ; a+=30/-c++-+29%b a += 30/-c %b a = /-5 – 29%11 a = 2 –6 – 7 a = -11

55 På web-tentan

56 Slut


Ladda ner ppt "Operatorer."

Liknande presentationer


Google-annonser