Lecture-8

Transcription

Lecture-8
Programming Fundamental
Instructor Name:
Lecture-8
Today’s Lecture
 Repetition Structure (Loops) continued
 Do-while loop
2
Repetition Structure
Property of While Loop
 The property of while loop is that the body of while loop may execute zero
times or more.
 The reason is that the condition of while loop is first evaluated and then
the body of while loop executes.
 But we may face situations where we need to perform some task (body of
while loop) at-least once.
 Guess some situations
?
3
Repetition Structure
do-while Statement
 Let's consider a scenario where we want to take an integer input from user
until user have entered a positive number. In this case we will use a dowhile loop like this.
do
{
TakeInputFromUser()
}
while(input < 0)
 In this case we have to run loop at-least once because we want input from
user at-least once. This loop will continue running until user enters a
positive number.
4
Repetition Structure
do-while Statement – Flow Chart
5
Repetition Structure
do-while Statement Syntax
do
statement
while( condition );
VS
do
{
statement
}
while( condition );
It is good programming practice to always including braces in a
do...while statement helps eliminate ambiguity between the while
statement and the do...while statement containing one statement.
6
Repetition Structure
do-while Statement
 Consider another scenario where
a computer program has a character
stored from a-z. It gives to user five chances or tries to guess the character.
In this case, the task of guessing the character must be performed at least
once. To ensure that a block of statements is executed at least once, do
while loop is perfect choice
 In this case we have to run loop at-least once because we want input
(guess) from user to check whether the character is guessed or not.
 Broadly speaking, in while loop, the condition is tested at the beginning of
the loop before the body of the loop is performed. Whereas in do-while
loop, the condition is tested after the loop body is performed.
8
 Therefore, in do-while loop, the body of the loop is executed at least once.
Repetition Structure
Problem Analysis
 A character in the program to be guessed by User
 Lets call this character is ‘z’
 User is allowed to guess it in maximum five (5) attempts, so we need to
track the number of attempts a user made to guess the character
 We need a variable to store the number of tries, lets call it tryNum. It
would be of type int.
 Program prompts user to guess a character, we will store this character in a
variable, lets call it c. it would be of type char.
 A character can be assigned as c=‘a’;
9
Repetition Structure
Problem Analysis
 After getting the character in variable c we need to compare it with our
character that is ‘z’ in the program
 To keep track of number of attempts we will use if/else structure
 If character is same as we have in our program a message will appear to
congratulate the user other wise in the else clause we will add 1 in the
counter variable
 In the while condition we will check the counter value if it is less than or
equals to 5 we will ask user to guess character again
 Once the character is matched we must exit the loop
 Lets have a look on Flow chart of program
10
Repetition Structure
Problem/Scenario – Flow Chart
11
Repetition Structure
Program Code
using namespace std;
#include<iostream>
void main ( ) {
int tryNum = 0 ;
char c ;
do{
cout << “Please enter a character between a-z for guessing : “ ;
cin >> c ;
if ( c == ‘z’){
cout << “Congratulations, Your guess is correct” ;
tryNum = 6;
}
else {
tryNum = tryNum + 1;
}
} while ( tryNum <= 5);
}
12
Repetition Structure
Problem Solution
 There is an elegant way to exit the loop when the correct number is
guessed
 A change in the while condition is required to exit program elegantly
 The condition will check whether the number of tries is less than or equals
to five and the variable c is not equals to ‘z’
 Our while condition will now become a compound statement by using
logical &&
 When one of the condition in compound condition will become false the
control will exit the loop
 The change code will look like this:
13
Repetition Structure
Program Code
using namespace std;
#include<iostream>
void main ( ) {
int tryNum = 0 ;
char c ;
do{
cout << “Please enter a character between a-z for guessing : “ ;
cin >> c ;
if ( c == ‘z’){
cout << “Congratulations, Your guess is correct” ;
}
else {
tryNum = tryNum + 1;
}
} while ( tryNum <= 5 && c != ‘z’);
}
14
Increment Operator
What is Increment Operator
 An increment operator is used to increment the value of a variable by one
(1).
 We have seen an increment statement in the previous slide like this:
tryNum = tryNum + 1;
 This form of statement is very common and it is used in every repetition
structure
 The C++ provides a unary operator that increased the value of its operand
by 1
 This operator is called increment operator and is written as ++
 The above statement can be replaced with the statement
tryNum++;
15
Decrement Operator
What is Decrement Operator
 The statement tryNum++ increments the value of variable tryNum by 1
 There is another operator called decrement operator and it used the
operator - A decrement operator is used to decrement the value of a variable by one
(1).
 For example we have a statement that decrements the value of variable x
is written as :
x = x - 1;
 The above statement can be replaced with the statement
x--;
16
Increment Operator
Categories of Increment Operator
 An increment operator is categories as
 Prefix increment
 Post fix increment
 Similarly for decrement we have prefix decrement and postfix decrement
 Apparently the difference is that in case of pre increment the operator ++
is placed before variable while in case of post increment operator ++ is
placed after variable
 Both of these cases are equivalent if we are simply incrementing the value
of a variable. Then it doesn’t matter that we are doing pre increment or
post increment
17
Increment Operator
Difference of Pre & Post Increment
 The difference of pre and post increment matters when we used them in a
expression where it is used to assign value to anther variable
 Here the used of these operators is very tricky and you must use them
carefully
 Let suppose we have a variable j and we use pre increment (++j) , the
value of j is first increased by 1 and then it will be used in the expression
 If we use post increment (j++), the value of j is used in expression and after
than the value of j is incremented by 1.
 If j=5 , we write the expression
x=++j;
 What would be the value of x?
18
Increment Operator
Difference of Pre & Post Increment
19
Increment/Decrement Operator
Things to remember
 Increment /Decrement operator should not be used on constant
We cannot use increment /decrement operator on the constant values
because increment /decrement operator operates on only variables. It
increments /decrements the value of the variable by 1 and stores the
incremented/decremented value back to the variable
 Increment and Decrement operator only increases or decreases the value of
variable by 1.
 If you want to increase or decrease the value by a number other than one
for example you want j=j+5
 C++ provides operators to perform such kind of tasks in short. These
operators are called compound assignment operator.
 Compound Assignment Operator do two things they perform an action
(addition, subtraction, multiplication, division, etc) and do some
assignment.
20
Increment/Decrement Operator
Problems
 What would the value of x if, x=0,y=0
x=++y;
x=y++;
x+=y++;
x+=++y;
x=y--;
x=y++ + ++y + y + y--;
x=--y + --y + --y + --y + --y;
x=++y + y++ + ++y + ++y + y++;
x*=y++ + ++y;
x=x + x++ + y++ + ++y + ++x + y++;
21
22