1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use...
-
Upload
austin-goodwin -
Category
Documents
-
view
214 -
download
2
Transcript of 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use...
![Page 1: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/1.jpg)
1
Homework / Exam• Turn in HW3 today• Exam 1 next class
– Open Book / Open Notes– Recommended Use of Book / Notes in Exam:
• Avoids reliance on “rote memorization” of details• Use for reference to tables, figures, etc.• Look up a specific syntax detail you’ve forgotten• Don’t expect to copy code for the answer to a problem!!• If you find yourself copying code – STOP! THINK!
• Start Chapter 4 for class after Exam
![Page 2: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/2.jpg)
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
{
x = 0;
y = 1;
} /* Note: No semicolon after right brace */
![Page 3: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/3.jpg)
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)
![Page 4: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/4.jpg)
4
if-else Matching, Section 3.2• Else is matched with the “closest previous
else-less if”• Example (compiler won’t interpret as the code
has been indented on the left. See right side):if (a) if (a)
if (b) if(b)statement; statement;
else elsestatement; statement;
![Page 5: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/5.jpg)
5
Switch, Section 3.4• 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"
*/
![Page 6: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/6.jpg)
6
Switch• Also have switch statement **LIKE JAVA**
switch (i) { /* in special limited situations */ case 1: statement-1; break; case 2: statement-2; break; . . . case 49: statement-49; break; default: statement-50; }
![Page 7: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/7.jpg)
7
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 == 3. . . . – 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!!
![Page 8: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/8.jpg)
8
ASCII Hex to Integerint axtoi (char s[ ]){
int i, n, flag;n = 0; flag = 1;for ( i = 0; flag; i++) /* for (i = 0; ; i++) with ending 2 */switch (s[i]) {
case '0': case '1': case '2': case '3': case '4': /* fall... */ case '5': case '6': case '7': case '8': case '9': /* through */ n = 16*n + (s[i] - '0'); break; /* need this so don't fall through */
![Page 9: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/9.jpg)
9
ASCII Hex to Integer (Ending 1) case 'a':case 'b':case 'c':case 'd':case 'e': case 'f':
n = 16*n + (s[i] - 'a' + 10); break;
case ‘A’: case ‘B’: case ‘C’: case ‘D’: case ‘E’: case ‘F’: n = 16*n + (s[i] - ‘A' + 10); break; default: /* stop “for” loop on non hex digit */ flag = 0; break;
}return n;
}
![Page 10: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/10.jpg)
10
ASCII Hex to Integer (Ending 2) case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
n = 16*n + (s[i] - 'a' + 10); break;
case ‘A’: case ‘B’: case ‘C’: case ‘D’: case ‘E’: case ‘F’: n = 16*n + (s[i] - ‘A' + 10); break; default: /* stop “for” loop on non hex digit */
goto ret; }ret: return n;
}
![Page 11: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/11.jpg)
11
Loops –while and for, Section 3.5
• This “for” statement”for (expr1; expr2; expr3)
statement;• Is equivalent to this “while” statement:
expr1;while (expr2) {
statement;expr3;
}
![Page 12: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/12.jpg)
12
For loop• Note 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)
![Page 13: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/13.jpg)
13
Comma operator: ","
• Most often used in for loop statement• Might have been useful for reverse () in hw1
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
![Page 14: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/14.jpg)
14
Do … While, Section 3.6
• The do … while tests at the end of the loop
do {
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”
![Page 15: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/15.jpg)
15
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
![Page 16: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/16.jpg)
16
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, pg66: “goto should be used rarely, if at all.”
• Note: Project coding standards may prohibit “goto”!
![Page 17: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/17.jpg)
17
GOTO and Labels, Section 3.8• Don’t implement if-else this way!
if (!condition) goto elselabel;
printf("if clause\n");
goto nextlabel;
elselabel:
printf("else clause\n");
nextlabel:
/* next statement in program */
![Page 18: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/18.jpg)
18
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;
![Page 19: 1 Homework / Exam Turn in HW3 today Exam 1 next class –Open Book / Open Notes –Recommended Use of Book / Notes in Exam: Avoids reliance on “rote memorization”](https://reader035.fdocuments.in/reader035/viewer/2022072016/56649ee65503460f94bf67a8/html5/thumbnails/19.jpg)
19
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 */
}