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 då kan man göra så här.

7 Anders Sjögren Programkörning Utan if-sats Med if-sats

8 Anders Sjögren Young man´s future choice Marriage - a selection? Marry girl not JSP Young man´s future choice

9 Anders Sjögren Selectionparts Young man´s future choice A selection must contain at least two selection components. If It only contains one there is no selection. Marry girl Be free!! Like this!

10 Anders Sjögren Al Bundy? Young man´s future choice We know the end…? Peg.. - make dinner! Marry girl It is however possible to leave a selection component empty.

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

12 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”

13 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");

14 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");

15 Anders Sjögren Programkörning

16 Anders Sjögren Checkbox eller Radiobutton? Checkbox: if(a)b; if(c)d; if(e)f;... Radio Button: if(a)b; else if(c)d;... else f;

17 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 ( < 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; } ny kod ”gör antingen A eller B eller C.....”, endast ett alternativ utförs!

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

19 Anders Sjögren Nästlade if-satser Strukturdiagram if(a) b; else if(c) d; else f;

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

21 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 easycalc( void ); int main ( void ) { floatkapital ; intantalAr; printf("Insatt kapital och antal år ?(--> )--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); easycalc(); printf("\nSlut"); return 0; } tillkommen kod i main()

22 Anders Sjögren void easycalc( 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

23 Anders Sjögren Ett enkelt Kalkylatorprogram

24 Anders Sjögren Ett enkelt Kalkylatorprogram Provkör programmet easycalc() vid övningen...

25 Anders Sjögren En varning! Tips! Töm tangentbordsbufferten med denna kod while( getchar() != '\n' ) /* nothing */ ; Innan Du använder scanf("%c", &c); Annars är det risk att c innehåller det osynliga '\n' -tecknet ! Returntangenten är också en char! Varför fungerar: scanf("%f%c%f", &x, &c, &y ) ?

26 Anders Sjögren scanf() vad händer i detalj.. scanf("%f%d", &kapital, &antalAr); Insatt kapital och antal år ?(--> )--> tangentbordsbuffert Eko till skärmen! scanf() läser från textfilen CON (tangentbords- bufferten)


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

Liknande presentationer


Google-annonser