cs115 fall 2008-2009 senem kumova-metİn1 chapter 4 flow of control-1 operators, if and switch...

Post on 19-Jan-2018

225 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

CS115 FALL Senem KUMOVA-METİN3 Operator Precedence : REVIEW Operator Associativity () ++(postfix) - - (postfix) Left to right +(unary) -(unary) ++(prefix) - -(prefix) ! Right to left * / % Left to right + - Left to right >= Left to right == != Left to right && Left to right || Left to right ?: Right to left = += -= *= /= etc. Right to left, Left to right

TRANSCRIPT

CS115 FALL 2008-2009 Senem KUMOVA-METİN

1

CHAPTER 4

FLOW OF CONTROL-1

Operators, If and switch statements

CS115 FALL 2008-2009 Senem KUMOVA-METİN

2

Operators used for flow of control: REVIEW Relational

Less than: < Greater than: > Less than or equal: <= Greater than or equal: >=

Equality Equal: == Not equal: !=

Logical Negation: ! Logical and: && Logical or: ||

CS115 FALL 2008-2009 Senem KUMOVA-METİN

3

Operator Precedence : REVIEW

Operator  Associativity 

() ++(postfix) - - (postfix)   Left to right 

+(unary) -(unary) ++(prefix) - -(prefix) ! Right to left 

* / %  Left to right 

+ -  Left to right 

< <= > >=  Left to right 

== !=  Left to right 

&&  Left to right 

||  Left to right 

?:  Right to left 

= += -= *= /= etc. Right to left 

,  Left to right 

CS115 FALL 2008-2009 Senem KUMOVA-METİN

4

Relational Operators : REVIEW<, >, <=, >= EXAMPLE 1:

int x=1, y=0;int z=x>y; //????printf(“%d %d”, z, x<y);

EXAMPLE 2:int x=10,y=4;int z= x-y<5; // which one has

// higher precedence?

printf(“%d”,z);

CS115 FALL 2008-2009 Senem KUMOVA-METİN

5

Relational Operators : REVIEW<, >, <=, >= EXAMPLE 3:

int x=7; int z=3<x<5; //Remember

//associativity!!//LEFT TO RIGHT ((3<x)<5)printf(“%d %d”, z, 3<x<5);

CS115 FALL 2008-2009 Senem KUMOVA-METİN

6

Equality Operators: REVIEW Equal: ==

expr1==expr2 TRUE or FALSE

Not equal: != expr1!=expr2 TRUE or FALSE

EXAMPLE :int x=0; printf(“%d %d”, x==1, x!=0);

CS115 FALL 2008-2009 Senem KUMOVA-METİN

7

Logical Operators: REVIEW

Negation: !

Logical and: &&

Logical or: ||

CS115 FALL 2008-2009 Senem KUMOVA-METİN

8

Logical Operators: REVIEW EXAMPLE 1:

int x=1;int z= !x-1;int t= !!x;printf(“%d %d”, z, t);

EXAMPLE 2:

int x=5; printf("%d %d", !x, !!x);

CS115 FALL 2008-2009 Senem KUMOVA-METİN

9

Logical Operators: REVIEW EXAMPLE 3:

int x=1, y=0;printf(“%d %d”, x&&y, x&&y&&y);printf(“%d %d”, x||y, x||y||y);

EXAMPLE 4:int x=4, y=3;printf(“%d %d”, x&&y, x&&y&&y); //1 1printf(“%d %d”, x||y, x||y||y); //1 1

CS115 FALL 2008-2009 Senem KUMOVA-METİN

10

Short Circuit Evaluation (With operands && , ||)

expression1 && expression2 If expression1 is FALSE, No need to

check the other, RESULT will be FALSE

expression1 || expression2 If expression1 is TRUE, No need to

check the other, RESULT will be TRUE

SHORTCIRCUIT

CS115 FALL 2008-2009 Senem KUMOVA-METİN

11

Short Circuit Evaluation (With operands && , ||)

EXAMPLE:

cnt =3;if(cnt>4 && (c=getchar())!=EOF){…… }

/* cnt>4 will return FALSE so c=getchar())!=EOF expression will never be evaluated */

CS115 FALL 2008-2009 Senem KUMOVA-METİN

12

Compund Statements Series of declarations and statements

surrounded by braces

EXAMPLE 1:int a =1,b=1,c=1;{ a+=b+=c; // b=b+c; a=a+b; printf(“%d %d %d”, a,b,c);

} EXAMPLE 2:

{ a=1;{ b=2; c=3; }

}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

13

The if statements1 if(expression)

statement;

2 if(expression) statement_1; else statement_2;

3

if(expression_1) statement_1; else if (expression _2) statement_2; else if (expression_3) statement_3; . . else statement_n;

CS115 FALL 2008-2009 Senem KUMOVA-METİN

14

if without else/* DOES NOT CARE ON THE ELSE CONDITION */

#include<stdio.h>#include<stdlib.h> // for exit() function

main(){ int x;

printf(“Type a number or Press 0 to exit “);scanf(“%d”, &x);

if(x==0) { printf(“ eXiting .....\n ”);

exit(0); }

}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

15

if with else......main(){ int x;

printf(“Type 0 for addition or 1 for subtraction\n“);

scanf(“%d”, &x);

if(x==0) { printf( “ PERFORM ADDITION...”\n) ;}else

{ printf( “ PERFORM SUBTRACTION...”\n);}

}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

16

if- else if - else/* IF YOU HAVE MORE THAN 2 CASES */......scanf(“%d”,&x);if(x==0) { printf("x is 0\n"); } else if(x==1) { printf("x is 1\n"); } else if(x==2) { printf("x is 2\n"); } else if(x==3) { printf("x is 3\n"); } else {printf(“ wrong number !!”)}......

CS115 FALL 2008-2009 Senem KUMOVA-METİN

17

EXAMPLE : if- else if – elseCalculator’s Menu

int a=9,b=5,c;char x;scanf(“%c”,&x);if(x==‘A’) { printf(“ADDITION\n"); c=a+b; }

else if(x==‘S’) { printf(“SUBTRACTION\n"); c=a-b; }

else if(x==‘M’) { printf(“MULTIPLICATION\n“); }

else if(x==‘D’) { printf(“DIVISION\n"); }

else {printf(“ wrong number !!”); }......

CS115 FALL 2008-2009 Senem KUMOVA-METİN

18

Nested if StatementEXAMPLE 1: if(expression1)

{ if(expression2) { statement2 } statement1

} /* if expression1 is TRUE , statement1 will be evaluated

whether expression 2 is TRUE or FALSE */

/* if expression1 and expression 2 are TRUE , statement2 will be evaluated */

EXAMPLE 2: if(expression1)

{ if(expression2) { statement1 }else { statement2 }

}else { statement3 }

CS115 FALL 2008-2009 Senem KUMOVA-METİN

19

Example 1: Find if x is a multiple of 2 and 5 #include <stdio.h> int main() {

int a; printf("Input an integer and push return:\n"); scanf("%d", &a);

if (a%2==0) { if(a%5==0)

printf("%d is a multiple of 2 and 5\n", a); else printf("%d is only a multiple of 2\n",a);

} else{ if(a%5==0)

printf("%d is only a multiple of 5\n",a); else printf("%d is not a multiple of 2 or 5\

n",a); }return 0;

}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

20

Example 2: Find if x is a multiple of 2 and 5#include <stdio.h> int main() {

int a; printf("Input an integer and push return:\n"); scanf("%d", &a);

if (a%2==0 && a%5==0) { /* Start of if block */

printf("%d is a multiple of 2 and 5\n", a); } else {

/* This is the else branch */ printf("%d is not a multiple of both 2&5\n",

a); } return 0;

}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

21

CONDITIONAL OPERATOR : REVIEW

expression1?expression2:expression3

same as

if(expression1) expression2

else expression3

CS115 FALL 2008-2009 Senem KUMOVA-METİN

22

CONDITIONAL OPERATOR : EXAMPLE

y = (x < 5) ? 5 : 10;

if (x < 5) y = 5;

elsey = 10;

CS115 FALL 2008-2009 Senem KUMOVA-METİN

23

The switch StatementA multiway conditional statement generalizing the if else statement

switch (expression) { case expr1: /*one or more statements*/ case expr2: /*one or more statements*/ case expr3: /*one or more statements*/ /* ...more cases if necessary */

default: /* do this if all other cases fail */

}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

24

The switch Statement : Example1

int x;

if(x==1) printf(“x equals to 1”); else if(x==3) printf(“x equals to 3”); else if(x==4) printf(“x equals to 4”); else printf(“x does not equal to 1,3 or 4”);

switch (x) // switch and check if x equals to any case { case 1 : printf(“x equals to 1”);

case 3 : printf(“x equals to 3”);case 4 : printf(“x equals to 4”); default: printf(“x does not equal to 1,3 or 4”); }

CS115 FALL 2008-2009 Senem KUMOVA-METİN

25

The switch Statement: Example2

char x;

if(x==‘A’) printf(“x equals to A”); else if(x==‘B’) printf(“x equals to B”); else if(x==‘C’) printf(“x equals to C”); else printf(“x does not equal to A,B or C”);

switch(x) // switch and check if x equals to any case { case ‘A’: printf(“x equals to A”);

case ‘B’: printf(“x equals to B”);case ‘C’: printf(“x equals to C”); default : prinf(“x does not equal to A,B or C”); }

CS115 FALL 2008-2009 Senem KUMOVA-METİN

26

Example: switch Statement #include <stdio.h>main() { int i; printf("Enter a positive integer from 1 to 4: "); scanf("%d", &i); switch(i) { case 1: printf(“You have entered 1 \n");

case 2: printf(“You have entered 2 \n"); case 3: printf(“You have entered 3 \n"); case 4: printf(“You have entered 4 \n"); default: printf(“not 1,2,3 or 4\n");

}}

OUTPUT ???

CS115 FALL 2008-2009 Senem KUMOVA-METİN

27

Example: switch Statement

You'll notice that the program will select the correct case but will also run through all the cases below it (including the default) until the switch block's closing bracket is reached.

To prevent this from happening, we'll need to insert another statement into our cases... BREAK

CS115 FALL 2008-2009 Senem KUMOVA-METİN

28

Example: switch Statement

#include <stdio.h>main() {

int i; printf("Enter a positive integer from 1 to 4: "); scanf("%d", &i); switch(i)

{ case 1: printf(“You have entered 1 \n"); break; case 2: printf(“You have entered 2 \n"); break; case 3: printf(“You have entered 3 \n"); break; case 4: printf(“You have entered 4 \n"); break;

default: printf(“not 1,2,3 or 4\n"); }}

CS115 FALL 2008-2009 Senem KUMOVA-METİN

29

The break statement/* BREAK CAUSES AN EXIT FROM THE INNERMOST ENCLOSING LOOP OR SWITCH STATEMENT */

double x;while(1) // an infinite loop{ scanf(“%lf”,&x);if(x<0.0) break; /* exit loop if x is negative */printf(“%f\n”,fsqrt(x));}

// break jumps to here

top related