Presentation is loading. Please wait.

Presentation is loading. Please wait.

Week 8: Decisions Bryan Burlingame 21 October 2015.

Similar presentations


Presentation on theme: "Week 8: Decisions Bryan Burlingame 21 October 2015."— Presentation transcript:

1 Week 8: Decisions Bryan Burlingame 21 October 2015

2 Announcements & The Plan for Today™  Homework #4 due with MidTerm  Midterm in Lab next Week  Basic decisions

3 Midterm In lab! Open books, notes, basically anything printed Access to the Matlab website and any ME30 related website, only No calculators!  First part by hand, second part on PC

4 Midterm (con’t) Mathematics  Bitwise logic ( &, |, ^, > )  Modulo division ( % )  Standard algebraic operators ( *, /, +, - )  Base conversion (binary, decimal, hexadecimal) Matlab  Basic operations  Graphing What makes a complete graph?  Linear approximations Logic  Flowcharts and Pseudo code

5 Boolean Logic Recall: bitwise logic Very similar in concept & shares the same truth tables Recall 0 is false, everything else is true Mind the order of operations (and, xor, or) Boolean and bitwise logic can be mixed  Bitwise logic is simply a mathematical operation

6 Boolean Logic And && FalseTrue False TrueFalseTrue Or || FalseTrue False True Exclusive Or (Xor) ^^ FalseTrue False True False

7 Numeric Comparison Operators  ! (not) Changes true to false and false to true , >= Less than, and less than or equal to are different operations Note: !( =  ==, != (not equal) Note: equivalence uses a double ‘=‘, assignment uses a single ‘=‘, be wary = returns the value being assigned  Technically, a = b = c = d = 5; is legal. Why? = is performed right to left, so the d is assigned 5, which returns 5. That 5 is assigned to c

8 Examples float b = 17.0; float d = 3.14; float c = 20.0; float e = 33.0; (b < c); //true (b + c); //true (not zero) ((int)(b/c)); //false (is zero, why?) (b e); //false (b e); // true (b e) || (c < e); //true (b e) || (b + c); //true, why? printf(“%f”, b) && (b + c); //true, why?

9 Shortcut evaluation When performing a logic operation, C only does as much as necessary to know the truth state Ex: int a = 4; (a == 0) && (a++); //false on (a == 0) printf(“%d”, a); // prints 4 (a == 4) || (a++); //true on (a == 4) printf(“%d”, a); // prints 4 (a == 4) && (a++); // true on both a == 4 and a++ printf(“%d”, a); // prints 5

10 Flow control These Boolean operations are used along with flow control (or branching) statements to control the flow of a program Decisions TrueFalse

11 Flow control if/if else/else – do this, do that, or do the other switch – choose between a bunch of items for – Do something for some number of times  also commonly referred to as iteration i.e. iterating over a range or iterating over a data set while – For as long as some decision is true, keep doing some stuff do.. while – Do something. At the end, if some thing is true, do it again.

12 Selection Structure Overview Three kinds of selections structures  if (also called, ‘single-selection’) if condition is true Perform action if condition is false, action is skipped, program continues  if/else (also called, ‘double-selection’) if condition is true Perform action else ( if condition is false ) Perform a different action (this will be skipped if condition is true)  switch (also called ‘multiple-selection’) Allows selection among many actions depending on the integral value of a variable or expression

13 Single Selection IF - Flowchart TRUE FALSE Speed > 65 connector flow line decision symbol action symbol Print “You’re speeding” The symbol > is a Relational Operator. The Expression “speed > 65” evaluates to 1 if true, 0 if false

14 Double-Selection IF - Flowchart TRUE Speed > 65 FALSE Print “Over speed limit” Print “Within speed limit”

15 IF-ELSE statement example Pseudocode (notice indentation!) If speed is greater than 65 mph print “Over speed limit!” else print “Within speed limit”

16 if - example int speed = 5; int b = 4; if( speed > 65 ) { // do everything until the closing } printf( “You are speeding!\n” ); } // technically, when one statement is between // the curly braces, the braces are optional. // Even so, don’t omit them else if( speed < 65 ) { // note the indentation. printf( “Speed is within legal limits\n” ); } else { printf( “Speed is precisely 65\n” ); }

17 Switch char x = 'a'; switch( x ) { case 'a': printf("Print a"); break; // a ends here case 'b': printf("Print b"); case 'c': printf("Print c"); break; // b or c end here default: printf("Print other"); // Always have a default }

18 for Loop Structure – Flow Chart initialization T F Terminal decision statement Iteration operation Initializes the loop control variable: ex. i = 0; Tests the loop control variable to see if it is time to quit looping: ex. i < 10; Increments the loop control variable: ex. i++

19 for - example int a = 5; int b = 4; for( a = 0; a < 5; ++a ) { //for( initialization, termination, iteration) printf( “%d\n”, a ); } // starts at 0 and keeps going as long as a is // less than 5 Outputs: 0 1 2 3 4

20 while Loop - Flowchart View Statement is executed while condition is true  Note that the condition must first be true in order for the statement to be executed even once statement TRUE FALSE condition

21 while - example int a = 0; int b = 4; while( a < 5 ) // boundary condition { //does the same thing as the for loop, previously printf( “%d\n”, a ); ++a; // changes the boundary condition } // starts at 0 and keeps going as long as a is // less than 5 Outputs: 0 1 2 3 4

22 do/while Structure – Flow Chart statement is executed at least once statement TRUE FALSE condition

23 do - example int a = 0; int b = 4; do // notice that there isn’t a decision here { printf( “%d\n”, a ); ++a; } while( a < 5 ); // the decision is at the end Outputs: 0 1 2 3 4

24 Ternary operator Returns a value based on a comparison (comparison) ? (true value) : (false value); Ex: int bob = 4; int jim = 23; int ann = 43; ann = (bob > 2) ? 2 : jim; // ann = 2 Since bob is greater than 2, return the “true value” ann = (bob < 2) ? 2 : jim; // ann = 23 Since bob is not less than 2, return the “false value” Can be used inline, but be careful bob + ann ? 23 : 45; // evaluates to 23 bob + (ann ? 23 : 45); // evaluates to 27, why?  Good style would always put the ternary operator between parentheses when used inline This operator is commonly very fast

25 References Modular Programming in C http://www.icosaedro.it/c-modules.html http://www.icosaedro.it/c-modules.html math.h http://www.opengroup.org/onlinepubs/007 908799/xsh/math.h.html http://www.opengroup.org/onlinepubs/007 908799/xsh/math.h.html


Download ppt "Week 8: Decisions Bryan Burlingame 21 October 2015."

Similar presentations


Ads by Google