KEMBAR78
Lecture 5 | PDF | Control Flow | Computing
0% found this document useful (0 votes)
8 views20 pages

Lecture 5

This document outlines the content of Lecture 5 for the CS 101 Introduction to Programming course in Spring 2024, focusing on control structures such as for loops, while statements, and constants. It includes code examples, explanations of syntax and semantics, and the use of increment/decrement operators. The lecture also discusses the behavior of break and continue statements in different loop structures.

Uploaded by

gurvardaan01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views20 pages

Lecture 5

This document outlines the content of Lecture 5 for the CS 101 Introduction to Programming course in Spring 2024, focusing on control structures such as for loops, while statements, and constants. It includes code examples, explanations of syntax and semantics, and the use of increment/decrement operators. The lecture also discusses the behavior of break and continue statements in different loop structures.

Uploaded by

gurvardaan01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Introduction to Programming (CS 101)

Spring 2024

Lecture 5:
- for loop, increment/decrement operators, constants
Instructor: Preethi Jyothi

- Based on material developed by Prof. Abhiram Ranade


Recap-I (nested if): Dangling else problem

What is the output from the following


piece of code? The formatting of the
statements may not correctly re ect the #include <simplecpp>
underlying behaviour.
main_program{
int n = -1;
if(n < 10)
A Number's more than 10 if(n > 0)
cout << "Positive number\n";
No output else
B
cout << "Number's more than 10\n";

C Positive number }
fl
Recap-II (while statement)

What does this program output (in words)?


For n = 44, what value of p is printed? #include <simplecpp>
main_program{

A 44 unsigned int n;
cin >> n;
unsigned int p = 1;
B 42
while(p * 2 <= n)
C 32 p *= 2;

cout << p;
D 64
}
Recap-III (while and break)

Demo in class and code (guess.cpp) shared on Moodle


Constants
CS 101, 2025
Constants
• A constant is a variable with a xed value de ned before the program runs

• We use the const keyword to de ne constants:


const int i = 1;

i is a constant 1 is a literal

• const is an annotation to any type that ensures that it will not be changed

• A statement i = 5; after the const de nition above will lead to a compiler error

• Why use constant variables instead of just literals themselves?


• Improved readability
• Modular if the value needs to be changed; can make the change in just one place
fi
fi
fi
fi
for statement
CS 101, 2025
Motivation: for statement
• Example: Write a program to print a table of cubes of numbers from 1 to 100

int i = 1;

repeat(100) {
cout << i << "|" << i*i*i << endl;
i+=1;
}

• The idiom above, which is, "do something for every number between x and y" occurs
very commonly

• The for loop, with its syntax, makes it easy to implement this idiom
previous statement before for
for syntax and semantics
initialization
• Syntax:
for(initialization; condition; update) {
body false
} condition

• Example:
true
for(int i = 1; i <= 100; i++) {
body
cout << i << " " << i*i << endl;
} update
• Semantics:
• Before the rst iteration of the loop, initialization is executed
• Within each iteration: next statement after for
• If condition evaluates to false, the loop terminates.
• If condition evaluates to true, body is executed, followed by update. Then, the next
iteration begins.
fi
while and for
initialization condition initialization condition update

int d = 2; for(int d = 2; x > 1; d+=1) {


while(x > 1) { while(x % d == 0) {
while(x % d == 0) { x /= d;
x /= d; cout << d << " ";
cout << d << " "; }
} }
update
d+=1;
}
• Note that a new variable d (int d) is de ned in the initialization. d is accessible within the
loop body, i.e. the scope of d is the for loop's body. d is accessible within "condition" and
"update" as well.
• Note that the scope of d in the code on the left extends beyond the outer while loop.
However, the scope of d in the code on the right is only within the for loop; d is not
accessible outside the for loop.
fi
for examples
• repeat(n) { ... } can be replaced with:

for(int i = 0; i < n; i+=1) { ... }


OR
for(int i = n; i > 0; i-=1) { ... }

• for( ; ;) is allowed. That is, empty condition, empty initialization and empty
update is allowed.
• This would be an in nite loop, like while(true)
• Would need a break statement to get out of the loop
fi
Increment, decrement operators

• for(int i = 0; i < n; i+=1) { ... } is more commonly written as

for(int i = 0; i < n; i++) { ... }


OR
for(int i = 0; i < n; ++i) { ... }

using the increment (++) operator.

• There is similarly a -- decrement operator (i--, --i)

• Both ++i and i++ in the for loop above work as shorthand for i = i + 1
... with an important caveat
Increment, decrement operators
• An important difference between the pre-increment (++i) and post-increment (i++) operators:

• ++i will rst increment i and evaluate to the incremented value

• i++ will evaluate to the original value of i prior to incrementing

• Similarly, the pre-decrement (--i) and post-decrement (i--) operators


output
for(int i = 0; i < 10;) { This would output 1 to 10
cout << ++i << "\n";
}

output
for(int i = 0; i < 10;) {
This would output 0 to 9
cout << i++ << "\n";
}
fi
Increment, decrement operators
• What is the output of this program?

int x = 0, y = 0;

for(int i = 0; i < 3; i++) {


x += i++;
}

for(int i = 0; i < 3; ++i) {


y += ++i;
} output
cout << x << "\n"; 2
cout << y << "\n";
4
output
nested for example
• What does this program do?

#include <simplecpp>

main_program {
for(int i = 0; i < 3; ++i) {
for(int j = 0; j < 3; j++) cout << j;
cout << "\n";
}
} 012
012
012
output
Another for example
• What does this program do?

Note the empty body


char c; of this for loop.
unsigned int n;

for(cin >> c; c<'0' || c>'9'; cin >> c);


for(n=0; c>='0' && c<='9'; n=n*10+(c-'0'), cin>>c);

output
The rst for loop will Note the , (comma) operator. Different
ignore non-digit letters till
the rst digit is from , used as a separator (E.g., int
encountered. Then, a i, j;). Expressions separated by a
number is accumulated comma are evaluated left-to-right.
from the digits.
fi
fi
break across different loop structures
• Note consistent behaviour of break across while,
while(condition) {
do-while and for loop structures:
// ...
break; • Causes a jump to the statement immediately
body following the enclosing loop
}

do { • break can appear only within a loop body or


// ... within switch (case) blocks
break; • break within nested loops will terminate only the
body enclosing loop (and not break out of all nested
}while(condition) loops)
for(initialization;condition;update) {
// ...
break;
body
}
continue across different loop structures

while(condition) {
// ...
continue;
body
}
• Note consistent behaviour of continue across while,
do {
// ... do-while and for loop structures:
continue; • Causes a jump to the end of the loop body
body
}while(condition)

for(initialization;condition;update) {
// ...
continue;
body
}
continue in a nested loop
• What is the output of this program?

main_program {
for(int i = 0; i < 3; i++) { 0, 1
for(int j = 0; j < 3; j++) { 0, 2
1, 1
if(j == 0) 1, 2
continue; 2, 1
2, 2
cout << i << "," << j << endl;
} output
}
}
Next class: Internal Representations of data types
CS 101, 2025

You might also like