The University of Babylon Department of Software LECTURE NOTES ON PROGRAMMING FUNDAMENTAL USING C++ LANGUAGE By Dr. Samaher Hussein Ali Collage of Information Technology, University of Babylon, Iraq Samaher_hussein@yahoo.com 18 December 2012 1 Control Structures Outline: The if Statement The switch Statement The while Statement The do Statement The for Statement The continue Statement The break Statement The goto Statement The return Statement Home works 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 52 Example of (while Statement) Implementation When the program starts the user is prompted to insert a starting number for the countdown. Then the while loop begins, if the value entered by the user fulfills the condition n>0 (that n is greater than zero) the block that follows the condition will be executed and repeated while the condition (n>0) remains being true. 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 53 Example of (while Statement) The whole process of the previous program can be interpreted according to the following script (beginning in main): 1. User assigns a value to n 2. The while condition is checked (n>0). At this point there are two posibilities: * condition is true: statement is executed (to step 3) * condition is false: ignore statement and continue after it (to step 5) 3. Execute statement: cout << n << ", "; --n; (prints the value of n on the screen and decreases n by 1) 4. End of block. Return automatically to step 2 5. Continue the program right after the block: print FIRE! and end program 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 54 Example of (Do-while Statement) Program echoes any number you enter until you enter 0. Implementation Note: The do-while loop is usually used when the condition that has to determine the end of the loop is determined within the loop statement itself, like in the previous case, where the user input within the block is what is used to determine if the loop has to end. In fact if you never enter the value 0 in the previous example you can be prompted for more numbers forever. 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 5 The For Statement The for statement (also called for loop) is similar to the while statement, but has two additional components: an expression which is evaluated only once before everything else, and an expression which is evaluated once at the end of each iteration. The general form of the for statement is: for (expression1; expression2; expression3) statement; First expression1 is evaluated. Each time round the loop, expression2 is evaluated. If the outcome is nonzero then statement is executed and expression3 is evaluated. Otherwise, the loop is terminated. The general for loop is equivalent to the following while loop: expression1; while (expression2) { statement; expression3; } The most common use of for loops is for situations where a variable is incremented or decremented with every iteration of the loop. The following for loop, for example, calculates the sum of all integers from 1 to n. sum = 0; for (i = 1; i <= n; ++i) sum += i; 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 56 The For Statement Example: Write the produces the product of the set {1,2,3} with itself, giving the output: )1,1( )1,2( )1,3( )2,1( )2,2( )2,3( )3,1( )3,2( )3,3( # include <iostream.h> # include<conio.h> int main() { int i; int j; for (int i = 1; i <= 9; ++i) for (int j = 1; j <= 2; ++j) cout << '(' << i << ',' << j << ")\n"; getch(); } 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 57 The continue Statement The continue statement terminates the current iteration of a loop and instead jumps to the next iteration. It applies to the loop immediately enclosing the continue statement. It is an error to use the continue statement outside a loop. In while and do loops, the next iteration commences from the loop condition. In a for loop, the next iteration commences from the loop’s third expression. Example: a loop which repeatedly reads in a number, processes it but ignores negative numbers, and terminates when the number is zero, may be expressed as: do { cin >> num; if (num < 0) continue; // process num here... } while (num != 0); This is equivalent to: do { cin >> num; if (num >= 0) { // process num here... } } while (num != 0); 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture85 The continue Statement Another Example: write procedure to print the number from 10 to 1 except 5 using the continue statement. Implementation The continue statement causes the program to skip the rest of the loop in the current iteration as if the end of the statement block had been reached, causing it to jump to the start of the following iteration. For example, we are going to skip the number 5 in our count above. 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture 59 The break Statement A break statement may appear inside a loop (while, do, or for) or a switch statement. It causes a jump out of these constructs, and hence terminates them. Like the continue statement, a break statement only applies to the loop or switch immediately enclosing it. It is an error to use the break statement outside a loop or a switch. Example: suppose we wish to read in a user password, but would like to allow the user a limited number of attempts: for (i = 0; i < attempts; ++i) { cout << "Please enter your password: "; cin >> password; if (Verify(password)) // check password for correctness break; // drop out of the loop cout << "Incorrect!\n"; } Here we have assumed that there is a function called Verify which checks a password and returns true if it is correct, and false otherwise. 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture105 The goto Statement The goto statement provides the lowest-level of jumping. It has the general form: goto label; where label is an identifier which marks the jump destination of goto. The label should be followed by a colon and appear before a statement within the same function as the goto statement itself. Example: the role of the break statement in the for loop in the previous section can be emulated by a goto: for (i = 0; i < attempts; ++i) { cout << "Please enter your password: "; cin >> password; if (Verify(password)) // check password for correctness goto out; // drop out of the loop cout << "Incorrect!\n"; } out: // etc... Because goto provides a free and unstructured form of jumping (unlike break and continue), it can be easily misused. Most programmers these days avoid using it altogether in favor of clear programming. Nevertheless, goto does have some legitimate (though rare) uses. 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture115 The return Statement The return statement enables a function to return a value to its caller. It has the general form: return expression; where expression denotes the value returned by the function. The type of this value should match the return type of the function. For a function whose return type is void, expression should be empty: return; The only function we have discussed so far is main, whose return type is always int. The return value of main is what the program returns to the operating system when it completes its execution. Example: the UNIX is conventional return 0 from main when the program executes without errors. Otherwise, a non-zero error code is returned. int main (void) { cout << "Hello World\n"; return 0; } When a function has a non-void return value (as in the above example), failing to return a value will result in a compiler warning. The actual return value will be undefined in this case (i.e., it will be whatever value which happens to be in its corresponding memory location at the time). 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture125 Exercises Q1: Write a program which inputs a person’s height (in centimeters) and weight (in kilograms) and outputs one of the messages: underweight, normal, or overweight, using the criteria: Underweight: weight < height/2.5 Normal: height/2.5 <= weight <= height/2.3 Overweight: height/2.3 < weight Q2: Assuming that n is 20, what will the following code fragment output when executed? if (n >= 0) if (n < 10) cout << "n is small\n"; else cout << "n is negative\n"; Q3: Write a program which inputs a date in the format dd/mm/yy and outputs it in the format month dd, year. For example, 27/12/11 becomes: December 27, 2011 18 December 2012 Dr. Samaher Hussein Ali Notes of Lecture135 Exercises Q4: Write a program which inputs an integer value, checks that it is positive, and outputs its factorial, using the formulas: factorial(0) = 1 factorial(n) = n × factorial(n-1) Q5: Write a program which inputs an octal number and outputs its decimal equivalent. The following example illustrates the expected behavior of the program: Input an octal number: 214 Octal(214) = Decimal(532) Q6: Write a program which produces a simple multiplication table of the following format for integers in the range 1 to 9: 1x1=1 1x2=2 ... 9 x 9 = 81 18 December 2012 Dr. Samaher Hussein Ali 14 5 Notes of Lecture