94
CHAPTER 5: Decision Making and Looping CSEB113 PRINCIPLES of PROGRAMMING CSEB134 PROGRAMMING I by Badariah Solemon 1 BS (Sept 2012)

Programming note C#

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Programming note C#

CHAPTER 5: Decision Making and Looping

CSEB113 PRINCIPLES of PROGRAMMING CSEB134 PROGRAMMING I

byBadariah Solemon

1BS (Sept 2012)

Page 2: Programming note C#

Topics1. Decision making using:

– Simple if selection– Simple if…else selection and using ?: operator– Handling multiple conditions– Nested if…else selection– if…else if selection– switch selection

2. Looping:– Design: Counter-controlled vs Sentinel-controlled– Using while loop– Using do…while loop– Using for loop

3. Data validation in selection and repetition structures4. Combinations of control structures5. Using continue and break statements

2BS (Sept 2012)

Page 3: Programming note C#

DECISION MAKING

Topic 1

BS (Sept 2012) 3

Page 4: Programming note C#

Intro to Decision Making • Re-call the Apples problem:

• In this problem, we have identified two conditions/ constraints:1. The quantity purchased must be more than zero2. The cost per Kg apples must be more than zero

• Because of those conditions, before the C program calculates the total cost of apples purchased, we must make it DECIDE that both conditions have been met.

• We can get our C programs to make decisions of this sort using Selection Structure

BS (Sept 2012) 4

Compute and display the total cost of apples given the number of kilogram (Kg) of apples purchased and the cost per Kg of apples

Page 5: Programming note C#

What is Selection Structure?• Take actions depending on the outcome of a condition. A condition is a

logical expression that is either True or False.• General forms of selection structure (SYNTAX):

BS (Sept 2012) 5

if (condition) then-statement;

else else-statement;

if(condition)then-statement;

(condition)? then-statement : else-statement;

if (condition) then-statement;

else if (condition) elseif-statement;

…else

else-statement;

switch (ControlVariable){ case constant 1:

statement; break;

case constant-n: statement;break;

default: statement;

}

1

2

3 4

Page 6: Programming note C#

SIMPLE if SELECTION

Topic 1-1

BS (Sept 2012) 6

Page 7: Programming note C#

if Selection• Is used when a statement or group of statements is to be executed when

the logical expression of the condition is TRUE.• Syntax:

– The expression of the condition must be specified using Relational and Equality operators as follows:

BS (Sept 2012) 7

if (condition)single then-

statement;

No semicolon at the end of the if statement.

Type Operator Meaning Example expression

Result if x=5 and y=4

Relational > x is greater than y x > y 5 > 4 is TRUE

< x is less than y x < y 5 < 4 is FALSE

>= x is greater than or equal to y x >= y 5 >= 4 is TRUE

<= x is less than or equal to y x <= y 5 <= 4 is FALSE

Equality == x is equal to y x == y 5 == 4 is FALSE

!= x is not equal to y x != y 5 != 4 is TRUE

an expression that can return true or false

Page 8: Programming note C#

Example – Relational Operator

• Case Apples: the algorithm is refined by making the program decide that the following condition is met:– The quantity purchased must be more than zero

BS (Sept 2012) 8

BeginPrompt and get QtyApplePrompt and get Costif QtyApple > 0

Compute: TotalCost = Cost * QtyApple End if Display TotalCostEnd

Prompt and get QtyApple

Compute: TotalCost = Cost * QtyApple

Print TotalCost

Begin

End

Prompt and get Cost

QtyApple > 0? TF

Page 9: Programming note C#

Example – Relational Operator

• Based on the refined algorithm, the C program is as follows:

BS (Sept 2012) 9

Page 10: Programming note C#

if with Compound Statements

• In the example that we have seen so far, there is only one statement to be executed after the if statement.

• To execute more than one statement after the condition is satisfied, we have to put curly braces { } around those statements.

• Syntax:

• Example:

BS (Sept 2012) 10

if (QtyApple > 0){

printf(“Calculating the total cost\n”);Total = Cost * QtyApple;

}

Compute: TotalCost = Cost * QtyApple

QtyApple > 0? TF

Print message

if (condition){

multiple then-statements;}

Page 11: Programming note C#

Example – Equality Operator• This example demonstrates the use of equality operators ==

and !=• Note that == is different that =. Why?

BS (Sept 2012) 11

Prompt and get status

Print “Kids”

status == 1? TF

Print “Adults”

status != 0? TF

Page 12: Programming note C#

ExerciseWhat is the output of this program? the If values entered are:a) 789 and 12b) 44 and 44c) 3 and 9901

BS (Sept 2012) 12

Page 13: Programming note C#

SIMPLE if…else SELECTION

Topic 1-2

BS (Sept 2012) 13

Page 14: Programming note C#

Simple if..else• Is used when a statement or group of statements is

to be executed when the logical expression of the condition is FALSE.

• Syntax:

• Example:

BS (Sept 2012) 14

if (condition)Single then-statement ;

elseSingle else-statement ;

if (QtyApple > 0)Total = Cost * QtyApple;

else printf(“Invalid quantity!\n”);

Compute: TotalCost = Cost

* QtyApple

Print message

QtyApple > 0? TF

No semicolon at the end of the if and else.

Page 15: Programming note C#

if…else with Compound Statements

• put curly braces { } around a group of statements• Syntax: Example:

BS (Sept 2012) 15

if (condition){

Multiple then-statements ;}else{

Multiple else-statements;}

if (QtyApple > 0){

printf(“Calculating the total cost\n”);Total = Cost * QtyApple;

}else{

printf(“Invalid quantity!\n”); Total = 0.0;

}

Compute: TotalCost = Cost * QtyApple

QtyApple > 0? TF

Print message

Total = 0.0

Print message – invalid quantity

Page 16: Programming note C#

Other Variations of Syntax of if…else

BS (Sept 2012) 16

1. With one then-statement and multiple else-statements. Syntax: if (condition)

Single then-statement;else{

Multiple else-statements;}

if (QtyApple > 0)Total = Cost * QtyApple;

else{

printf(“Invalid quantity!\n”); Total = 0.0;

flag = ‘I’;}

Compute: TotalCost = Cost * QtyApple

QtyApple > 0? TF

Total = 0.0

Print message – invalid quantity

flag = ‘I’

Example:

Page 17: Programming note C#

Other Variations of Syntax of if…else

BS (Sept 2012) 17

if (condition){

Multiple then-statements;}else

single else-statement ;

2. With multiple then-statements and one else-statement.

Syntax:

if (QtyApple > 0){

Total = Cost * QtyApple; flag = ‘V’;

}else

printf(“Invalid quantity!\n”);

Example:Compute:

TotalCost = Cost * QtyApple

QtyApple > 0? TF

Print message – invalid quantity

flag = ‘I’

Page 18: Programming note C#

Effect of Omitting { }• This what might happens if the { } are omitted

BS (Sept 2012) 18

int score;

 printf(“Enter the score: ”);scanf(“%d”,&score);

if (score >= 60) { printf(“You have done very well\n”);

printf(“I’ll give you a present\n”);}else printf(“You have failed the course\n”); printf(“Sorry no present for you\n”); printf(“Go and study more”);

Enter the score: 75You have done very wellI’ll give you a presentSorry no present for youGo and study more

Page 19: Programming note C#

Test your skill• What happens if we omit the { }?

BS (Sept 2012) 19

int score;

 printf(“Enter the score: ”);scanf(“%d”,&score);

if (score >= 60)

printf(“You have done very well\n”);printf(“I’ll give you a present\n”);

else{ printf(“You have failed the course\n”); printf(“Sorry no present for you\n”); printf(“Go and study more”);}

Page 20: Programming note C#

Conditional Operator ( ? : )• Used to simplify an if…else statement.• Syntax:

• The statement above is equivalent to:

BS (Sept 2012) 20

( condition) ? Single then-statement : single else-statement;

if (condition) single then-statement;else

single else-statement;

Page 21: Programming note C#

Example• if…else statement:

• Conditional statement:

BS (Sept 2012) 21

if (total > 60)printf("Passed!!\n");

elseprintf("Failed!!\n");

printf("%s!!\n", total > 60? "Passed" : "Failed");

total > 60 ? printf("Passed\n") : printf(“Failed\n");

Print “Failed”

total > 0? TF

Print “Passed”

OR

Page 22: Programming note C#

Example 2

BS (Sept 2012) 22

#include <stdio.h>void main(void){

char grade;int marks;printf("Enter marks");scanf("%d\n", &marks);

grade = (marks > 60)? 'P': 'F';

printf("\nGrade = %c\n", grade);

}

(marks > 60)? printf("%c",'P'): printf("%c",'F');

Page 23: Programming note C#

HANDLING MULTIPLE CONDITIONS

Topic 1-3

BS (Sept 2012) 23

Page 24: Programming note C#

Multiple Conditions – Apples Case

• Re-call that in the Apples Case problem, we have identified two conditions/ constraints:1. The quantity purchased must be more than zero2. The cost per Kg apples must be more than zero

• So far, we have handled only the first condition in these statements:

• We can get our program to check multiple conditions in one logical expression, using logical operator &&. Example:

BS (Sept 2012) 24

if (QtyApple > 0)Total = Cost * QtyApple;

if (QtyApple > 0 && Cost > 0)Total = Cost * QtyApple;

Page 25: Programming note C#

Logical Operators• To connect two conditions:

BS (Sept 2012) 25

Operator Read as Evaluation Example

&& AND All the conditions must be true for the whole expression to be true.

if (x == 10 && y == 9)

The if condition is true only when value x is 10, AND value of y is 9.

|| OR The truth of one condition is enough to make the whole expression true

if (x == 10 || y == 9)

The if condition is true when either one of x OR y has the right value.

! NOT Reverse the meaning of a condition

if (!(points > 90))

Means if points NOT bigger than 90

Page 26: Programming note C#

Results of a Logical Expression

• Each logical expression with multiple conditions has either True or False value, depending of the value of each condition in it.

• This table lists possible result of a logical expression. Symbols A and B indicate conditions.

BS (Sept 2012) 26

A B A && B A || B !A !B

True True True True False False

True False False True False True

False True False True True False

False False False False True True

Page 27: Programming note C#

Example

BS (Sept 2012) 27

#include<stdio.h>void main ( ){

int x=5, y=0;;

printf(“x=%d y=%d\n\n”, x,y);

if (x>0 && y>=0)printf(“x greater than zero and ” “y greater than or equal to zero\n\n”);

if (x==0 || y==0)printf(“x and y equal to zero\n\n”);

if (!(x==y))printf(“x is not equal to y\n”);

}

x=5 y=0

x greater than zero and y greater than or equal to zero

x and y equal to zero

X is not equal to y

Page 28: Programming note C#

Exercise• What is the output of this program? If input data are:

– f 25 - m 25 - F 25 - M 25 – f 17 - m 17 - F 17 - M 17

BS (Sept 2012) 28

#include<stdio.h>void main ( ){

char gender;int age;float loan;

printf(“Enter your gender (f/F or m/M) and age:”);scanf(“%c %d”, &gender, &age);

if (gender == ‘f’ && age > 20){

car_loan = 200000.00;printf(“Your car loan is %.2f\n”, loan);printf(“Well done.\n”);

}}

Page 29: Programming note C#

Evaluating Multiple Operators in a Logical Expression

• The C rules for evaluating logical expression with multiple mix of operators are parentheses rule, precedence rule and associativity rule.

• For a complete list, refer to Appendix C (Hanly &Koffman)

BS (Sept 2012) 29

Precedence Operation AssociativityHighest (evaluated first)

Lowest (evaluated last)

[ ] ( )!

< > <= >=== !=

&&||? :

LLLLLLR

Page 30: Programming note C#

Example

BS (Sept 2012) 30

#include<stdio.h>void main ( ){

int x=8, b=-3, c=0, x;

if(a) printf(“a=%d, !a=%d\n”, a, !a);if(b) printf(“b=%d, !b=%d\n”, a, !a);

if(c) printf(“Never gets printed\n”);else printf(“c=%d, !c=%d\n”, c, !c);

if (a>b && B>c || a==b) printf(“Answer is TRUE\n”);else printf(“Answer is FALSE\n”);

x = a>b || b>c && a==b;

printf(“x=%d, !x=%d\n”, x, !x);}

Single variable – returns True or False based on its value- 0 : False- 1(non-zero): True

a=8 !a=0b=-3 !a=0c=0 !c=1Answer is FALSEx=1 !x=0

logical expression – returns True or False

and the result can be assigned to an integer variable

Page 31: Programming note C#

NESTED if…else SELECTION

Topic 1-4

BS (Sept 2012) 31

Page 32: Programming note C#

What is Nested if..else?• if and if…else contained in another if…else selection.• However, as if…else statements become nested, programs

become harder to understand.– To improve readability, indent each pair of if…else statement

• Example syntax (*numbers of ‘if’s and the numbers of ‘else’s are not necessarily equal):

BS (Sept 2012) 32

if (outer-condition){ … //if outer is True, execute this block

if (inner1-condition){ inner1 -then-statement; } //if inner1 is True, execute this block

else{ inner1-else-statement n; } //if inner1 is False, execute this block

}else{ … //if outer is False, execute this block

if (inner2-condition){ inner 2-then-statement; } //if inner2 is True, execute this block

else{ inner2-else-statement n; } //if inner2 is False, execute this block

}

Page 33: Programming note C#

Example

BS (Sept 2012) 33

#include<stdio.h>void main ( ){

int day, time;

printf(“Enter day and time: ”);scanf(“%d %d”, &day, &time);

if (day>0 && day<=6){ if (time<=900) printf(“\nSleep\n”); else { if (time <=1900) printf(“\nWork\n”); else printf(“\nRelax\n”);

}}else{ if (time<=1100) printf(“\nSleep\n”); else printf(“\nHave fun\n”); }

}

Enter day and time: 3 1000

Relax

Draw a flowchart for this program

Page 34: Programming note C#

if…else if SELECTION

Topic 1-5

BS (Sept 2012) 34

Page 35: Programming note C#

What is if…else if selection?

BS (Sept 2012) 35

if (score >= 90) printf(“A\n”);

else if (score >= 80) printf(“B\n”);

else if (score >= 70) printf(“C\n”);

else if (score >= 60)

printf(“D\n”);

else

printf(“F\n”);

• One type of nested selection structure• If any one of the condition is already

satisfied, the other conditions will be ignored completely.

score>=90? TF

Print “A”

score>=80?

score>=60?

score>=70?

TF

TF

Print “F”

Print “C”

Print “B”

Print “D”

F T

Page 36: Programming note C#

Re-writing if…else if • if..else if statements can be re-written to multiple single

if statements. But this applies to condition that uses equality operator only. Example:

BS (Sept 2012) 36

…if (number == 1) printf(“One\n”);else if (number == 2) printf(“Two\n”);else if (number == 3) printf(“Three\n”);else printf(“Others\n”);

Enter the score: 2Two

Enter the score: 2Two

…if (number == 1) printf(“One\n”);if (number == 2) printf(“Two\n”);if (number == 3) printf(“Three\n”);if (number < 1 && number > 3) printf(“Others\n”);

Page 37: Programming note C#

Test your skill• What are the outputs of these programs segments? If value of

score entered is 85

• What’s the effect of re-writing the above if..else if statements to multiple if statements?

BS (Sept 2012) 37

if (score >= 90) printf(“A\n”);else if (score >= 80) printf(“B\n”);else if (score >= 70) printf(“C\n”);else if (score >= 60) printf(“D\n”);else printf(“F\n”);

if (score >= 90) printf(“A\n”);if (score >= 80) printf(“B\n”);if (score >= 70) printf(“C\n”);if (score >= 60) printf(“D\n”);if (score < 60) printf(“F\n”);

Page 38: Programming note C#

Exercise• Write a program that prompts the users to enter

the value of Ritcher scale number (n), and print its equivalent effect as a message to the users based on the following table:

BS (Sept 2012) 38

Ritcher scale number (n) Effect n < 5.0 Little or no damage 5.0 <= n < 5.5 Some damage 5.5 <= n < 6.5 Serious damage: walls may crack or

fall 6.5 <= n < 7.5 Disaster: house or building may

collapse n >= 7.5 Catastrophe: most buildings

destroyed

Page 39: Programming note C#

switch SELECTION

Topic 1-6

BS (Sept 2012) 39

Page 40: Programming note C#

switch Statement• A switch statement is used to choose one choice

from multiple cases and one default case.• Syntax:

BS (Sept 2012) 40

switch (ControlVariable) { case constant 1: statement;

break; case constant-n: statement;

break; default: statement;}

The break statement is needed so that once a case has been executed, it will skip all the other cases and go outside the switch statement.

The default clause is executed if the cases are not met.

Page 41: Programming note C#

Rules for switch Statement1. The value for ‘case’ must be integer or character only.

– Examples:

2. The value checked in each ‘case’ must be constant only and not values in range.

BS (Sept 2012) 41

switch (color) {

case ‘R’ : colorstr = ‘r’; break;

}

switch (number) {

case 1 :num += 2;break;

}

The value for each case is followed by colon (:).

if (number==1) num += 2;

if (color==‘R’) colorstr = ‘r’;

case 1 : √ case >= 1 : X

Page 42: Programming note C#

Example

#include <stdio.h>void main() {

int num;printf(“Enter number:");scanf("%d", &num);

switch (num) {

case 1: printf("Bad (D)\n");break;case 2: printf("Good (C)\n");break;case 3: printf("Excellent (A)\

n");break;default: printf(“False grade\n");

}}

BS (Sept 2012) 42

• The logic of this switch selection is similar to if…else if

Enter number: 3Excellent (A)

num==1? TF

Print “Bad (D)”

num==3?

num==2? TF

Print “False grade”

Print “Good (C)”

Print “Excellent (A)”

F T

Page 43: Programming note C#

Omitting break Statement

BS (Sept 2012) 43

#include <stdio.h>void main(){

int majorCode;

printf("Enter your majoring code: ");scanf("%d", &majorCode);switch(majorCode){

case 1 : case 3 :case 5 : printf(“\nScience Student\n”);

break;case 2 :case 4 : printf(“\nArt Student\n”);

} /* end_switch */}

If the break statement is omitted, the execution will be carried out to the next alternatives until the next break statement is found.

Enter your majoring code: 3

Science Student

Page 44: Programming note C#

Example• Observe the equivalent

logical expression. What can you conclude from these two program segments?

BS (Sept 2012) 44

char grade;

printf(“Enter the grade you scored:”);scanf(“%c”,&grade);

switch (grade) { case ‘a’:

case ‘A’:printf(“Excellent!!\n”);printf(“You brilliant..\

n”); break; case ‘b’:

case ‘B’:printf(“Job well done!!\

n”);printf(“You deserve it..\

n”); break;

default: printf(“undefined grade\n”);}

if (grade == ‘a’ || grade == ‘A’){ printf(“Excellent!!\n”); printf(“You brilliant..\n”);}else if (grade == ‘b’ || grade == ‘B’){ printf(“Job well done!!\n”); printf(“You deserve it..\n”);}else printf(“undefined grade\n”);

Page 45: Programming note C#

Exercise1. Using switch statement, write a program

that reads a positive integer number between 1 to 5, and prints the word equivalent to it.

For example, if the user enters 5, the program should print the word “Five” to the screen.

BS (Sept 2012) 45

Page 46: Programming note C#

LOOPING

Topic 2

BS (Sept 2012) 46

Page 47: Programming note C#

Intro to Looping

BS (Sept 2012) 47

• Re-call the Apples problem:

• Before this, we’ve learned to get our program to make decisions using Selection Structure.

• With the program, when a cashier keys in number of kilogram of apples purchased and the cost per Kg of apples the computer will output the total cost of apples purchased for one customer. However, to calculate the total cost for 100 customers, the cashier would need to execute this program 100 times!

• So, the methods by which it is possible to repeat processing without executing the program or writing the same statements over and over is called Looping or Iteration using Repetition Structure.

Compute and display the total cost of apples given the number of kilogram (Kg) of apples purchased and the cost per Kg of apples

Page 48: Programming note C#

What is Repetition Structure?

• Used to repeat a block of statements a number of times (loop) until a certain condition is met without having to write the same statements multiple times.

• Two design of loops:

BS (Sept 2012) 48

• To execute a number of instructions from the program for a finite, pre-determined number of time

• Loop depends of arithmetic or conditional expression.

Counter-controlled

• To execute a number of instructions from the program indifinitely until the user tells it to stop or a special condition is met

• Loop depends on a sentinel value.

Sentinel-controlled

Page 49: Programming note C#

Types of Looping

BS (Sept 2012) 49

while (condition) LoopBody-statement;

do LoopBody-statement;

while (condition);

for (InitializationExp; Condition; UpdateExp)LoopBody-statement;

1

while

2

do…while

3

for

Exp = Expression

NO semicolon (;)

Page 50: Programming note C#

while LOOP

Topic 2-1

BS (Sept 2012) 50

Page 51: Programming note C#

while Statement• Syntax:

• Enclose a group of loop body statements within the braces { }

• As long as the condition is met (returns true), the statement inside the while loop will always get executed.

• When the condition is no longer met (returns false), the program will continue on with the next instruction (the one after the while loop).

BS (Sept 2012) 51

while (condition){

multiple loopBody-statements;}

while (condition)single LoopBody-statement;

an expression that can return true or false

Page 52: Programming note C#

1. Counter-controlled while Loop

• Used to execute a number of instructions from the program for a finite, pre-determined number of time

• Loop depends of arithmetic or conditional expression.

BS (Sept 2012) 52

...int total = 1;while (total <= 3) { printf(“Total = %d\n”, total); total++;}x++;...

total is the loop controlvariable

In this case, this loop will keep on looping until the counter total variable is 5. Once value of total is 6, the loop will terminate

total <= 3? TF

total++

total=1

Print value of totalx++

Total = 1Total = 2Total = 3

Page 53: Programming note C#

Example

BS (Sept 2012) 53

#include<stdio.h>main ( ){

printf(“Hello World\n”);printf(“Hello World\n”);printf(“Hello World\n”);printf(“Hello World\n”);printf(“Hello World\n”);

}

#include<stdio.h>main (){

int num = 1;

while(num < 6) {

printf("Hello World\n"); num++;}

}

Hello WorldHello WorldHello WorldHello WorldHello World

num < 6? TF

num++

num=1

Print “Hello World”End

Begin

Page 54: Programming note C#

Example 2• You may allow the user to set the number of

iteration as shown in example below :

BS (Sept 2012) 54

#include<stdio.h>void main (void){

int counter=1, n=0; printf(“Number of iteration?: “); scanf(“%d”, &n);

while(counter <= n) {

printf("Hello World\n"); counter++;}

}// in this example the output varies

depending on the value of n entered by the user

counter < n? TF

counter++

counter=1, n=0

Print “Hello World”End

Begin

Prompt and get n

Page 55: Programming note C#

Exercise1. For the following code fragment:

– How many times will the while loop body be executed?– What will be the end values computed for the variables sum and count?

2. Write a program that reads 3 integer numbers and prints the sum of the numbers. Repeat the reading and printing processes 10 times using while loop.

BS (Sept 2012) 55

sum =0;count = 2;while (count <= 5){

sum = sum + count;count = count + 3;

}

Page 56: Programming note C#

2. Sentinel-Controlled while Loop

• Counter control loop is used when we know beforehand how many iteration that the loop should execute.

• There will be cases where we (as the programmer) do not know how many times the loop should be executed, because the decision is up to the users.

• In this case, to terminate the loop, we need to use ‘sentinel controlled loop’ method

• In order to exit from the loop, the user must enter a unique data value, called a sentinel value.

• The sentinel value must be a value that could not normally occur as data.

BS (Sept 2012) 56

Page 57: Programming note C#

2. Sentinel-Controlled while Loop

• The algorithm for sentinel-controlled while loop:

• Consider this problem:– Write a program that reads several integer numbers from the user and

prints the sum of the numbers. The program stops reading numbers from the users when they enter ZERO.

BS (Sept 2012) 57

Read/assign a value to control variableWhile value of the control variable is not sentinel value

process the valueread the next valueend_while

Value != sentinel value?

TF

Get a value

Process value

Get next value

Page 58: Programming note C#

• The sentinel value in this case is ZERO

#include <stdio.h>void main(void){

int num, sum = 0;

printf(“Enter a number [zero to end]: ”);scanf(“%d”,&num);

while (num != 0){

sum += num;printf(“Enter a number [zero to end]: ”);scanf(“%d”,&num);

}printf(“Sum = %d\n”, sum);

}

Example

BS (Sept 2012) 58

Sentinel value ZERO will terminate the loop

Enter a number [zero to end]: 3Enter a number [zero to end]: -6Enter a number [zero to end]: 10Enter a number [zero to end]: 0Sum = 7

num != 0? TF

Prompt and get num

sum += num

Prompt and get num

Print value of sum

Page 59: Programming note C#

Example

BS (Sept 2012) 59

#include <stdio.h>main (){ int sum=0, score=0, count=0; printf("Enter first score or (-99 to quit):"); scanf("%d", &score);

while (score != -99) { count++;

sum += score; printf("Enter next score or (-99 to quit):"); scanf("%d", &score); } printf("Sum of %d scores: %d", count, sum);}

Sentinel value -99 will terminate the loop

score!= -99? TF

Prompt and get score

sum += score

Prompt and get score

Print value of count and sum

count++

Enter first score (or -99 to quit): 80Enter next score (or -99 to quit): 77Enter next score (or -99 to quit): -99Sum of 2 scores: 157

Page 60: Programming note C#

Exercise1. Write a program that calculates and prints the

average of several real numbers. Assume the last value read is the sentinel 9.9. Use a while loop to accomplish the task. Sample input/ouput:

2. Write a program that computes and displays the sum of a collection of Celsius temperatures entered until a sentinel value of -275 is entered.

BS (Sept 2012) 60

10.0 12.3 5.6 21.3 9.9

Average: 8.6

Page 61: Programming note C#

do…while LOOP

Topic 2-2

BS (Sept 2012) 61

Page 62: Programming note C#

1. Counter-controlled do/while Loop

• Syntax:

• the LoopBody-statement inside it will be executed once no matter what.

• Then only the condition will be checked to decide whether the loop should be executed again or just continue with the rest of the program.

BS (Sept 2012) 62

do {

multiple LoopBody-statements;} while (condition); Semicolon here is a MUST

do single LoopBody-statement;

while (condition);

NO semicolon

Page 63: Programming note C#

Example

BS (Sept 2012) 63

#include<stdio.h>main ( ){

printf(“Hello World\n”);printf(“Hello World\n”);printf(“Hello World\n”);printf(“Hello World\n”);printf(“Hello World\n”);

}

#include<stdio.h>main (){

int num = 1;

do {

printf("Hello World\n");num++;

} while(num <=5); }

End

Begin

num <= 5? TF

num++

num=1

Print “Hello World”

Hello WorldHello WorldHello WorldHello WorldHello World

Page 64: Programming note C#

Example 2• You may allow the user to set the number of

iteration as shown in example below :

BS (Sept 2012) 64

#include<stdio.h>void main (void){

int counter=1, n=0; printf(“Number of iteration?: “); scanf(“%d”, &n);

do { printf("Hello World\n"); counter++;} while(counter <= n);

}// in this example the output varies

depending on the value of n entered by the user

Prompt and get n

End

Begin

counter <= n? TF

counter++

num=1

Print “Hello World”

Page 65: Programming note C#

while Loop vs do..while Loop

BS (Sept 2012) 65

int total = 10;

while (total < 10) { printf(“Total = %d\n”, total); total++;}

printf(“Bye”);

int total = 10;

do { printf(“Total = %d\n”, total); total++;} while (total < 10);

printf(“Bye”);

total < 10? TF

total++

total=10

Print value of totalPrint “Bye”

total < 10? TF

total++

total=10

Print value of total

Print “Bye”

while loop

do…while loop

Page 66: Programming note C#

Exercise1. For the following code fragment:

– How many times will the do…while loop body be executed?– What will be the end values computed for the variables sum and count?

2. Re-write the program that reads 3 integer numbers and prints the sum of the numbers, which keeps on repeating the reading and printing processes 10 times using do…while loop.

BS (Sept 2012) 66

sum =0;count = 2;do {

sum = sum + count;count = count + 3;

} while (count <= 5);

Page 67: Programming note C#

2. Sentinel-controlled do/while Loop

• The algorithm for sentinel-controlled do…while loop:

• Example:

BS (Sept 2012) 67

Start doprocess the valueread a value to the control variable While value of the control variable is not sentinel value

int sum=0, score=0, count=0; do {

count++;sum += score;printf("Enter score or (-99 to quit):");scanf("%d", &score); } while (score != -99);

printf("\nSum of %d scores: %d", count, sum);

Enter score (or -99 to quit): -99

Sum of 1 scores: 0

Page 69: Programming note C#

for LOOP

Topic 2-3

BS (Sept 2012) 69

Page 70: Programming note C#

• Syntax:

InitializationExp : initialize the loop control variableCondition : determine whether the condition or test expression

returns True or falseUpdateExp : change value of the loop control variable at the end

of each loop

BS (Sept 2012) 70

for Loop

for (InitializationExp; Condition; UpdateExp)single LoopBody-statement;

MUST semicolons

NO semicolon

for (InitializationExp; Condition; UpdateExp){

multiple LoopBody-statements;}

Page 71: Programming note C#

1. Counter-controlled for Loop

• Example:

BS (Sept 2012) 71

int total;for (total = 1; total <= 3; total++) printf(“Total = %d\n”, total);

Control variable

total <= 3? TF

total++

total=1

Print value of total

Total = 1Total = 2Total = 3

Page 72: Programming note C#

Example 2• You may allow the user to set the number of

iteration as shown in example below :

BS (Sept 2012) 72

#include<stdio.h>void main (void){

int counter=1, n=0; printf("Number of iteration?: "); scanf("%d", &n);

for(counter=1; counter<=n; counter+++) printf("Hello World\n");}

// in this example the output varies depending on the value of n entered by the user

counter <= n? TF

counter++

counter=1, n=0

Print “Hello World”End

Begin

Prompt and get n

Page 73: Programming note C#

while Loop vs for Loop

BS (Sept 2012) 73

int total = 1;

while (total <= 3) { printf(“Total = %d\n”, total); total++;}printf(“Bye”);

total <= 3? TF

total++

total=1

Print value of totalPrint “Bye”

int total;

for(total=1; total<=3; total++) { printf(“Total = %d\n”, total);}printf(“Bye”);

total <= 3? TF

total++

total=1

Print value of totalPrint “Bye”

Both produce same output and have similar order of execution!Because using a for loop is just another way of writing a while loop.

Page 74: Programming note C#

Differences between while Loops and for Loops

• Although the two are similar in their order of execution, they are different as follows:

BS (Sept 2012) 74

Item for loop while loop

Initialization expression

Is one of the loop expressions Must be given prior to the loop

Condition (or test expression )

Is one of the loop expressions Is one of the loop expressions

Update expression Is one of the loop expressions Must be in the loop body

When number of iteration is known

Is very convenient Is less convenient

When number of iteration is unknown

Is less convenient Is ver y convenient

Page 75: Programming note C#

Omitting for Loop Expressions

• It is also possible to omit one or more of the for loop expressions.

• HOW? • Example:

BS (Sept 2012) 75

int num=1;

for (;num<=5;num++) { printf("Hello World\n");}

1. Assign initial value to control variable

2. Place semicolon without the expression

Page 76: Programming note C#

2. Sentinel-controlled for Loop

• Example:

BS (Sept 2012) 76

#include <stdio.h>main (){ int sum=0, score; printf("Enter first score (or -99 to quit):");

for ( scanf("%d", &score); score != -99; scanf("%d", &score)) { sum += score; printf("Enter next score (or -99 to quit):"); } printf("Sum of all scores: %d", sum);}

Page 77: Programming note C#

DATA VALIDATION

Topic 3

BS (Sept 2012) 77

Page 78: Programming note C#

Intro to Data Validation• Good programmers would ensure that only valid data are

entered and processed by their programs.• Say for example we want to write a program that reads

the score marks from the user, and print its equivalent grade.

• Say that the valid score marks range is between 0 to100. So, if user keys in value other than 0 to100, the program should do something such as the following:– Option 1: Tell the users that they have entered a wrong

input and terminate the program.– Option 2: Tell the users that they have entered a wrong

input and ask them to reenter the input.

BS (Sept 2012) 78

Page 79: Programming note C#

Data Validation: if…else ifOption 1: Tell the users that they have entered a wrong input

and terminate the program.

BS (Sept 2012) 79

printf(“Enter the score: ”);scanf(“%d”,&score);

if (score >= 90 && score <= 100) printf(“A\n”);

else if (score >= 80 && score < 90) printf(“B\n”);

else if (score >= 70 && score < 80) printf(“C\n”);

else if (score >= 60 && score < 70) printf(“D\n”);

else if (score >= 0 && score < 60 printf(“F\n”);

else printf(“Error, input should only be between 0 –

100 \n”);

Page 80: Programming note C#

Data Validation: while LoopOption 2(1): Tell the users that they have entered a wrong

input and ask them to reenter the input using while loop.

BS (Sept 2012) 80

  printf(“Enter score: ”); scanf(“%d”, &score);

while (score < 0 || score > 100) {

printf(“Sorry, input must be between 0 – 100\n”); printf(“Re-enter the score: ”); scanf(“%d”,&score);

}if (score >= 90 && score <= 100) printf(“A\n”);else if (score >= 80 && score < 90) printf(“B\n”);else if (score >= 70 && score < 80) printf(“C\n”);else if (score >= 60 && score < 70) printf(“D\n”);else printf(“F\n”);

Sentinel-controlled while loop with multiple sentinel values in the range of < zero or > 100

Page 81: Programming note C#

Data Validation: do..while Loop

Option 2(2): Tell the users that they have entered a wrong input and ask them to reenter the input using do…while loop.

BS (Sept 2012) 81

  do{printf(“Enter score: ”);scanf(“%d”,&score);if (score < 0 || score > 100) printf(“Sorry, input must be between 0 – 100\n”);

}while (score < 0 || score > 100);if (score >= 90 && score <= 100) printf(“A\n”);else if (score >= 80 && score < 90) printf(“B\n”);else if (score >= 70 && score < 80) printf(“C\n”);else if (score >= 60 && score < 70) printf(“D\n”);else printf(“F\n”);

Sentinel-controlled do…while loop with multiple sentinel values in the range of < zero or > 100

Page 82: Programming note C#

Data Validation: for LoopOption 2(3): Tell the users that they have entered a wrong

input and ask them to reenter the input using for loop.

BS (Sept 2012) 82

printf("Enter the score:");

for ( scanf("%d", &score); score < 0 || score > 100; scanf("%d", &score))

{ printf(“Sorry, input must be between 0 – 100\n”); printf("Enter the score:"); }

if (score >= 90 && score <= 100) printf(“A\n”);else if (score >= 80 && score < 90) printf(“B\n”);else if (score >= 70 && score < 80) printf(“C\n”);else if (score >= 60 && score < 70) printf(“D\n”);else printf(“F\n”);

Sentinel-controlled for loop with multiple sentinel values in the range of < zero or > 100

Page 83: Programming note C#

COMBINATIONS OF CONTROL STRUCTURES

Topic 4

BS (Sept 2012) 83

Page 84: Programming note C#

Possible Combinations• Possible combinations are limitless. Four basic forms of

combinations are as follows:1. One or more selection structures inside a repetition structure.2. One or more repetition structures inside a selection structure.3. Nested selection structures – one or more selection structures

inside a selection structure4. Nested repetition structures – one or more repetition

structures inside a repetition structure• This course covers the first three forms only and we have seen

examples of nested selection structures before.

BS (Sept 2012) 84

Page 85: Programming note C#

1. Selection Structures inside a Repetition Structure

• Example: a simple if..else inside a while loop

BS (Sept 2012) 85

x <= 3? TF

x++

x=1

Print “Kids”

Print “Bye”

Prompt and get status

status == 1?

Print “Adults”

TF

Page 86: Programming note C#

2. Repetition Structures inside a Selection Structure

• Example: a while loop inside a simple if..else

BS (Sept 2012) 86

status == 1?

TF

x++

x=1

Print “Kids”

Print “Bye”

Prompt and get status

x <= 3?

Print “Adults”

TF

x=1

Page 87: Programming note C#

Exercise1. Write C programs that calculate and

display the average of 10 floating point numbers read from user by implementing while, do…while and for loops to accomplish the task.

2. Write programs that keep printing the multiples of the integers 2, namely 2, 4, 8, 16, 32, 64 and 128. Your loop should terminate at 128.

Use while, do…while and for loops to implement this.

• Implement appropriate data validation in the programs

BS (Sept 2012) 87

Page 88: Programming note C#

continue AND break STATEMENTS

Topic 5

BS (Sept 2012) 88

Page 89: Programming note C#

The break statement• The continue and break statements are used to

modify the program flow when a selection structure or a repetition structure is used.

• The break statement can be used to forced exit of selection or terminate repetition structure.

• Example:

BS (Sept 2012) 89

for (num=1;num<=5;num++) { if (num==2) break; printf("Hello World\n"); }

When the value of num is equals to 2, the program will terminate from the for loop.

OUTPUT?

Page 90: Programming note C#

The break statement• You can use the break statement at any time. • This can be very useful if you want to stop running a

loop because a condition has been met other than the loop end condition.

BS (Sept 2012) 90

int i; i = 0; while ( i < 20 ) {

i++; if ( i == 10)

break; }

The while loop will run, as long i is smaller then twenty. But, the while loop must stop (break) if i equals to ten

Page 91: Programming note C#

The continue Statement• Can be used to skip the rest of the loop body

statements and continue with the next repetition of the loop (start from the top again - the loop variable must still be incremented).

• Example:

BS (Sept 2012) 91

for (num=1;num<=5;num++) { if (num==2) continue; /* end_if */ printf(“Number %d\n”,num); } /*end_for */

When the value of num is equal to 2, the program will skip the printf statement and continue with the for loop.

OUTPUT?

Page 92: Programming note C#

The continue Statement

• In a for loop, any modification to the control variable will be done before the condition is checked.

• In a while and do…while structures, the loop condition will be checked as soon as the continue statement is encountered to determine whether the loop will be continued .

• Example:

BS (Sept 2012) 92

int i=0;

while ( i < 20 ) { i++; continue; printf("Nothing to see\n"); }

In the example above, the printf function is never called because of the continue statement.

Page 93: Programming note C#

Summary1. We can get our C programs to make decisions using Selection

Structure including if, if…else, ?: operator, if…else if and switch.

2. Also we can get our programs to repeat (loop) processing without writing the same statements over and over using Repetition Structure including while loop, do…while loop, for loop

3. All the while, do…while , and for loops can be implemented as counter-controlled loop or sentinel-controlled loop.– When number of iteration is known, use counter-controlled

loop– When decision to proceed with iteration depends on a value

or a range of values, use sentinel-controlled loop

BS (Sept 2012) 93

Page 94: Programming note C#

Summary4. The expression of the condition in the selection and

repetition structures must be specified using Relational operators (such as >, >=, <, <=) and Equality operators (==, !=) and several conditions may be combined using Logical operators (&&, ||, and !).

5. You may combine sequence, selection and repetition structures in a C program

6. You may use the continue and break statements to modify the program flow when a selection structure or a repetition structure is used.

BS (Sept 2012) 94