Presentation is loading. Please wait.

Presentation is loading. Please wait.

Homework Any Questions?.

Similar presentations


Presentation on theme: "Homework Any Questions?."— Presentation transcript:

1 Homework Any Questions?

2 Statements / Blocks, Section 3.1
An expression becomes a statement when it is followed by a semicolon x = 0; Braces are used to group declarations and statements into a compound statement { y = 1; } /* Note: No semicolon after right brace */ Scope of the variable in the statement block Show an example Why do we need it? The variables defined in the block, they will be removed from the stack

3 if statements, Section 3.2 Shortcut for “equal and not equal to 0” tests Can use: if (expression) if (!expression) In place of if (expression != 0) if (expression == 0) !expr == not expr

4 Else-if, Section 3.3 Consider cascading else-if sequence:
if (i == 1) /* NOTE: Only one will execute */ statement-1; else if (i == 2) statement-2; else if (i == 49) statement-49; else statement-50; /* Default or "catch-all" */ Use indentation

5 Switch, Section 3.4 Also have switch statement **LIKE JAVA**
switch (i) { /* in special limited situations */ case 1: statement-1; break; case 2: statement-2; case 49: statement-49; default: statement-50; } The break is optional. If you don’t type break, it will continue to execute next cases. So it starts from where you want You can put a printf in default for better debugging Switch(c = getchar()){ Case ‘a’: …; }

6 Switch The way the if-else cascade works is to test
Test if i == 1 If that fails, test if i == 2. If that fails, test if i == When we test i == 27, we have done 26 prior tests. With the switch statement, we achieve the same effect, but probably faster: Usually compiled into assembly language as a jump table Array of "go to" instructions subscripted by the value of i If i = 27 we "look up" the “go to” at address 27 in table And execute only that one “go to” Note the need for break statements. The default action is to cascade down to the code for the next case!!

7 Loops –while and for, Section 3.5
This “for” statement” for (expr1; expr2; expr3) statement; Is equivalent to this “while” statement: expr1; while (expr2) { expr3; }

8 For loop Any part of for loop can be left out.
for (init; loop-test; increment) If init or increment expression is left out, just not evaluated (program must initialize and increment by other means) If loop-test is left out, assumes permanently true condition and loops forever. (program must break or goto to end to exit the loop)

9 Comma operator: "," Most often used in for loop statement
Might have been useful for reverse () in hw2 for (i = 0, j = strlen(s) - 1; i < j; i++, j--) Pairs of expressions separated by "," are evaluated left-to-right and type/value of expression is type/value of result. See K & R, pg 53, Precedence Table

10 Do … While, Section 3.6 The do … while tests at the end of the loop
statement(s); } while (expression); Executes the statement(s) once even if the “while” loop expression is false upon entry Used much less often than “for” and “while”

11 Break and Continue, Sections 3.7
The break statement works for: for loop / while loop / do loop and switch. Brings you to end of loop or switch statement ONE LEVEL ONLY. The continue statement works for: for loop / while loop / do loop, but not switch! It causes next iteration of enclosing loop to begin Continue -> it will skip that iteration and continue with next iteration Show an example

12 GOTO, and Labels, Section 3.8
The goto statement breaks TWO OR MORE levels It “goes to” a statement with a label, e.g. ret: It may be OK to use goto if you always do it in a FORWARD direction. (See axtoi, if use a goto ret; then don't need flag or test in “for” loop.) K&R, pg 66: “goto should be used rarely, if at all.” Note: Project coding standards may prohibit “goto”! You can use GOTO and it’s fine with the compiler but I recommend you not to do it Why it’s not good to use it? You can not trace from where you came here. You can’t debug. You don’t know the client tries to access this line of code

13 Binary Search /* binsearch:
find x in v[0] <= v[1] <= . . <= v[n-1] returns subscript of x if found, -1 if not */ int binsearch ( int x, int v[ ], int n) { int low, high, mid; low = 0; high = n - 1; For binary search your data should be sorted -> x[0] < x[1] < … Start from first element to the end Show on the board

14 Binary Search while ( low <= high) { mid = (low + high)/2;
if (x < v[mid]) high = mid - 1; else if (x > v[mid]) low = mid + 1; else /* found match */ return mid; } return -1; /* no match */ Complexity -> log(n)

15 Functions / Program Structure
C makes functions efficient and easy to use Program != a few big functions Program = = many small functions Functions may reside in separate source files Source files compiled and loaded separately Some times you see your main function is getting bigger and bigger and more complex, so it’s better to divide it to some functions Divide your big functions

16 Function Prototypes Return type, function name, and ( ) Argument List
int foo ( ); float foo ( ); Argument List List of Types and optionally Variable Names int foo (int *, int, float); int foo (int array[], int i, float j); Output arguments usually listed first

17 Function Prototypes Special case for null argument lists
Always code function prototype as: int foo (void); Keeps compiler parameter checking enabled Demonstration of bad example: int foo (); x = foo (i, j, k); /* compiler won’t catch! */ Compiler will not find the mistake if you don’y use void

18 Function Declarations
Same as function prototype, except: Must have variable names in argument list Followed by { function statements; } not ; Example: int foo (int array[], int i, float j) { function statements; }


Download ppt "Homework Any Questions?."

Similar presentations


Ads by Google