0 ) kapital = kapital * ( 1 + RANTESATS/100 ); else kapital = kapital * 1/( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", ar,kapital>0 ? kapital:-kapital); } return 0; } Gör antingen det ena eller det andra! sant falskt"> 0 ) kapital = kapital * ( 1 + RANTESATS/100 ); else kapital = kapital * 1/( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", ar,kapital>0 ? kapital:-kapital); } return 0; } Gör antingen det ena eller det andra! sant falskt">

Presentation laddar. Vänta.

Presentation laddar. Vänta.

Anders Sjögren Selektion i C ”vägval” if och switch - satserna.

Liknande presentationer


En presentation över ämnet: "Anders Sjögren Selektion i C ”vägval” if och switch - satserna."— Presentationens avskrift:

1 Anders Sjögren Selektion i C ”vägval” if och switch - satserna

2 Anders Sjögren Selektion if Minns ni pro- grammet som beräknar kapital- ökningen vid någon ränta?

3 Anders Sjögren Mata in ett negativt kapital så räknas det baklänges! Selektion if /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 int main ( void ) { floatkapital ; intar ; printf("Insatt kapital? "); scanf("%f", &kapital); printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= ANTAL_AR ; ar++ ) { if ( kapital > 0 ) kapital = kapital * ( 1 + RANTESATS/100 ); else kapital = kapital * 1/( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", ar,kapital>0 ? kapital:-kapital); } return 0; } Gör antingen det ena eller det andra! sant falskt

4 Anders Sjögren Selektion if if - satsen har i exemplet formen if ( uttryck ) sats else sats

5 Anders Sjögren Selektion if en enklare form får man om man skippar else - delen if ( uttryck ) sats else sats exempel

6 Anders Sjögren Selektion if /* Beräknar kapitaltillväxt på 10 år */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 int main ( void ) { floatkapital ; intar ; printf("Insatt kapital? "); scanf("%f", &kapital); if ( kapital < 0 ) kapital= -kapital; printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= ANTAL_AR ; ar++ ) { kapital = kapital * ( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", ar, kapital); } return 0; } antag att man i något av de första ränte-programmen vill rätta till negativa kapital- inmatningar program utan ifprogram med if då kan man göra så här.

7 Anders Sjögren Selektion if if ( uttryck ) sats Hmm, undrar hur man gör om man vill utföra flera satser ?

8 Anders Sjögren Sammansatt sats Inga problem, man bildar en sats av flera satser i en sammansatt sats! Enkelt va !?

9 Anders Sjögren Sammansatt sats { sats_1 sats_2 ” } Inga problem, man bildar en sats av flera satser i en sammansatt sats! Enkelt va !? blocket betraktas språkmässsigt som en sats. OBS! Satsen av- slutas inte med };,semikolon ingår i ”måsvingen”

10 Anders Sjögren Selektion if detta skulle kunna ändras till det här scanf("%f", &kapital); if ( kapital < 0 ) { kapital= -kapital; printf("Det inmatade negativa värdet "); printf("har korrigerats till positivt \n"); } printf("\n År Saldo\n == =====\n"); I senaste ränteexemplet såg det ut så här scanf("%f", &kapital); if ( kapital < 0 ) kapital= -kapital; printf("\n År Saldo\n == =====\n");

11 Anders Sjögren Selektion if detta skulle nu kunna ändras till det här scanf("%f", &kapital); if ( kapital < 0 ) { kapital= -kapital; printf("Det inmatade negativa värdet "); printf("har korrigerats till positivt \n"); } printf("\n År Saldo\n == =====\n"); I senaste ränteexemplet såg det ut så här scanf("%f", &kapital); if ( kapital < 0 ) kapital= -kapital; printf("\n År Saldo\n == =====\n");

12 Anders Sjögren Selektion nästlade if - satser programmet om kapitaltillväxt har förändrats igen. Provkör med olika tio-potens på indata för att lista ut förändringen

13 Anders Sjögren Selektion nästlade if - satser programmet om kapitaltillväxt har förändrats igen. Provkör med olika tio-potens på indata för att lista ut förändringen programmet skriver i tabellen ut saldot i grund- potensform!

14 Anders Sjögren Selektion nästlade if - satser resultat av en programkörning, exekveringsresultat!

15 Anders Sjögren Selektion nästlade if - satser printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= ANTAL_AR ; ar++ ) { if ( kapital > 0 ) kapital = kapital * ( 1 + RANTESATS/100 ); else kapital = kapital * 1/( 1 + RANTESATS/100 ); /* enheter i tabellen */ if ( -10 < kapital && kapital < 10 ) printf("%3d%11.2f kr\n", ar, kapital>0 ? kapital : -kapital); else if ( -100 < kapital && kapital < 100 ) printf("%3d%11.2f da(deka)kr\n", ar, (kapital>0 ? kapital :.... else if ( -1000 < kapital && kapital < 1000 ) printf("%3d%11.2f h(hekto)kr\n", ar, (kapital>0 ? kapital :... else printf("%3d%11.2f kkr\n", ar, (kapital>0 ? kapital : -kapital)/1000); } return 0; } den nya koden ”gör antingen A eller B eller C.....”, endast ett alternativ utförs!

16 Anders Sjögren Selektion switch - satsen Tänk om man skulle lägga in en enkel kalkylator i ränte- programmet ? provkör!

17 Anders Sjögren Selektion switch - satsen /* Beräknar kapitaltillväxt på x år framåt eller bakåt */ #include #define RANTESATS 8.5 void TabellPaSkarmen( int, float ); void Kalkylator( void ); int main ( void ) { floatkapital ; intantalAr; printf("Insatt kapital och antal år ?(-->1000 10)--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); Kalkylator(); printf("\nSlut"); return 0; } tillkommen kod i main()

18 Anders Sjögren void Kalkylator( void ) /* Enkel kalkylator */ { float x, y; char c; printf( "\nKalkylator som klarar de fyra räknesätten t ex 3+2\n"); printf( "a, avslutar\n"); while (printf("-->"), scanf("%f%c%f", &x, &c, &y ) == 3) { switch(c) { case '+': printf("%f\n", x + y); break; case '-': printf("%f\n", x - y); break; case '*': printf("%f\n", x * y); break; case '/': if (y != 0) printf("%f\n", x / y); else printf("Division med noll\n"); break; default: printf("Felaktig operator\n"); break; } return; } Selektion switch - satsen heltalstyp om inte break finns med testas varje ”case”, man trillar igenom. kan tas bort om man vill


Ladda ner ppt "Anders Sjögren Selektion i C ”vägval” if och switch - satserna."

Liknande presentationer


Google-annonser