Foundations
Control Flow
Use if statements and loops to choose work and repeat work based on values.
branch
An `if` statement runs one block when a condition is true and can run another block otherwise.
Control Flow
control.ts
Replay: real traced execution (multi-file project)
const limit: number = 4;
let sum: number = 0;
for (let i = 1; i <= limit; i++) {
sum += i;
console.log(`i=${i}, sum=${sum}`);
}
if (sum >= 10) {
console.log("sum reached double digits");
} else {
console.log("sum stayed small");
}
const limit: number = 2;
let sum: number = 0;
for (let i = 1; i <= limit; i++) {
sum += i;
console.log(`i=${i}, sum=${sum}`);
}
if (sum >= 10) {
console.log("sum reached double digits");
} else {
console.log("sum stayed small");
}
const limit: number = 6;
let sum: number = 0;
for (let i = 1; i <= limit; i++) {
sum += i;
console.log(`i=${i}, sum=${sum}`);
}
if (sum >= 10) {
console.log("sum reached double digits");
} else {
console.log("sum stayed small");
}
limit ← 4, sum ← 0
1const limit→ 4: number = 4; //@limit=2, 62let sum→ 0: number = 0;sum ← 1
pass 1 of 41const limit: number = 4; //@limit=2, 62let sum: number = 0;34for (let i1 = 1; i <= limit4; i++) {5 sum += i1;6 console.log(`i=${i1}, sum=${sum1}`);7}outputi=1, sum=1All 4 passes — pass 1 is the card above pass isum1 1 1 2 2 3 3 3 6 4 4 10 if (sum >= 10)
6 console.log(`i=${i}, sum=${sum}`);7}89if (sum10 >= 10) {10 console.log("sum reached double digits");11} else {outputsum reached double digits
limit ← 2, sum ← 0
1const limit→ 2: number = 2;2let sum→ 0: number = 0;sum ← 1
pass 1 of 21const limit: number = 2;2let sum: number = 0;34for (let i1 = 1; i <= limit2; i++) {5 sum += i1;6 console.log(`i=${i1}, sum=${sum1}`);7}outputi=1, sum=1sum ← 3
pass 2 of 21const limit: number = 2;2let sum: number = 0;34for (let i2 = 1; i <= limit2; i++) {5 sum += i2;6 console.log(`i=${i2}, sum=${sum3}`);7}outputi=2, sum=3else
10 console.log("sum reached double digits");11} else {12 console.log("sum stayed small");13}outputsum stayed small
limit ← 6, sum ← 0
1const limit→ 6: number = 6;2let sum→ 0: number = 0;sum ← 1
pass 1 of 61const limit: number = 6;2let sum: number = 0;34for (let i1 = 1; i <= limit6; i++) {5 sum += i1;6 console.log(`i=${i1}, sum=${sum1}`);7}outputi=1, sum=1All 6 passes — pass 1 is the card above pass isum1 1 1 2 2 3 3 3 6 4 4 10 5 5 15 6 6 21 if (sum >= 10)
6 console.log(`i=${i}, sum=${sum}`);7}89if (sum21 >= 10) {10 console.log("sum reached double digits");11} else {outputsum reached double digits
Follow the Loop
limitstarts at4.sumstarts at0.- The loop adds
1, then2, then3, then4. - The running sums are
1,3,6, and10. - Because
sumis10, the final line issum reached double digits. | i | sum after add | | --- | --- | | 1 | 1 | | 2 | 3 | | 3 | 6 | | 4 | 10 | | limit | final sum | branch output | | --- | --- | --- | | 2 | 3 | sum stayed small | | 4 | 10 | sum reached double digits | | 6 | 21 | sum reached double digits |
Exercise: control.ts
Reproduce the default loop ending at sum 10, then try limit 2 and 6 and predict the final branch line.