270 likes | 396 Vues
This lecture by Martin van Bommel covers essential control statements in programming that influence the execution flow of code. It focuses on iteration through loops and conditional execution via if-statements. Learn about the structure of control statements, including relational and logical operators, and how to effectively use braces for controlling the flow of execution. The lecture also discusses various looping mechanisms, the importance of the index variable, and how to avoid infinite loops while iterating through collections of data.
E N D
CSCI 125 & 161 Lecture 7 Martin van Bommel
Control Statements • Statements that affect the sequence of execution of other statements • Normal is sequential • May want to repeat statements - iteration • May or may not want particular statement executed at all - conditional
Control Statement Structure • Control line - first line (e.g. while) • Body - statements enclosed in { } that are repeated • Body typically indented to show range of control statement
Conditional Execution • May want to execute a statement only if some condition applies • May wish to choose between two alternative courses of actions depending on some test • Simplest form - if statement
if Statement if (conditional-test) { …statements executed if test true... } } else { …statements executed if test false... }
Relational & Logical Operators == Equal != Not equal > Greater < Less >= Greater or equal <= Less or equal • Logical operate on results of comparisons ! Not (true if operand false – one operand) && And (true if both true) || Or (true if either true)
Example 1 • “x is not equal to either 2 or 3” if (x != 2 || x != 3) • No, it should be if (!(x == 2 || x == 3)) • or if (x != 2 && x != 3)
Example 2 • “x is in the range from 0 to 10 exclusive” if (0 < x < 10) • No, it should be if (0 < x && x < 10)
Example • Leap year every fourth year, except centuries, then just every fourth century • year is divisible by 4 but not by 100, or • year is divisible by 400 • Try ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)
Bad Example if (x < 5) cout << ”A”; if (x > 5) cout << ”B”; else cout << ”C”;
If Blocking Rule • For any if statement that requires (1) more than a single line, or (2) an else clause, always use braces to enclose in a separate block the statements under the control of the if statement .
Single-line if statement if (condition) statement where: condition is the Boolean value to test statement is a single statement to be executed if condition is true
Multiline if statement if (condition) { statements; } where condition is the Boolean value to test statements is a block of statements to be executed if condition is true
if-else statements if (condition) { statementsT ; } else { statementsF ; }
Cascading if statement if (condition1) { statements1 ; } else if (condition2) { statements2; . . . } else { statementsnone }
Iteration and Loops • Iteration - process of repeating an operation • Essential for large amounts of data - repeating statements shortens programs • Loop - any portion of program repeated via control statement • e.g. while loop
The while statement while (condition) { statements } where condition tested before first and every iteration statements executed each time condition true
while operation • Condition test performed before every cycle, including first. • If condition is initially false, body of loop not executed at all. • Condition test performed only at beginning of each loop cycle. • Even if condition becomes false during cycle, cycle is completed.
while example • Sum up digits of a number sum = 0; while (n > 0) { sum = sum + n % 10; n = n / 10; }
Infinite loops • A loop cycle that never stops – infinite loop • Condition of while statement never false • e.g. while (n >= 0) { sum += n % 10; n /= 10; }
Repeat-N-Times Idiom • for (i = 0; i < N; i++) {statements to be repeated } • May want to add up 10 input numbers for (i = 0; i < 10; i++) { cin >> value; sum = sum + value; }
Index Variable in Counting Loop for (i = 0; i < N; i++) • Variable i is called the index variable • Any variable may be used - traditionally i • Must be declared at beginning of function • Initial value of i in loop is 0 - first cycle • Next cycles value is 1, 2, etc. • On last cycle, value is N – 1 • After loop, value of i is N
Non-Zero Counting Loop • It is possible to modify for loop to begin at another number for (i = first; i <= last; i++) • Note the <= operator instead of < • Value of i ranges from first to last • Used if value of i required in body of loop
for statement for (init; test; step) { statements } where init is an expression evaluated at beginning test is a condition for continuing the loop step is an expression to prepare next cycle
for example • Countdown from 10 to 0 for (t=10; t >= 0; t--) { cout << t; } cout << ”Liftoff!\n”;
for more • Note that expressions init, test, and step are optional, but the semicolons must appear for (;;) - infinite loop for (;t<10;) same as while (t<10)
Nested for loops • Create a 10 x 10 multiplication table for (row=1; row<=10; row++) { for (col=1; col<=10; col++) { cout << (row * col); } cout << endl; }