JavaScript. The concept of a cycle. Loop statements for, while, do-while

The concept of a loop. Loop statements for, while, do-while. Examples


Contents


Search other resources:

1. The concept of a loop process. Loop. Types of loop statements in JavaScript

When writing programs of varying complexity, there is often a need to repeatedly perform the same type of operations. Loop statements are used to perform frequently repeated operations in JavaScript.

There are the following types of loop statements:

  • for – loop with a parameter;
  • for-in – loop of moving through objects;
  • while – loop with precondition;
  • do-while – loop with postcondition.

The programmer chooses which of the cycles to apply in a particular case. Loops for, while, do-while can replace each other.

 

2. Loop for. Execution syntax. The work of the for loop

The implementation of the for loop in JavaScript is very similar to the same loop in C++, C#, Java. In general, the for loop can be represented as follows:

for (init_expr; cond_expr; modification)
{
  // Loop body
  // ...
}

here

  • init_expr – loop counter initialization expression. There can be several initialization expressions, in which case each expression is separated by a comma;
  • cond_expr – conditional expression;
  • modification – one or more loop counter modification expressions. The loop counter can update its value in both descending and ascending order.

Any of the init_expr, cond_expr, modification parts may be missing.

The for loop works according to the following algorithm.

  1. First, one or more init_expr initialization expressions are executed.
  2. The conditional expression cond_expr is checked. If the result of checking the conditional expression is true (cond_expr = true), the transition to step 3 occurs. If cond_expr=false, then the loop exits, that is, the transition to step 6.
  3. Execution of one iteration of the loop body.
  4. After one iteration of the body of the loop, control is transferred to the modification operator. Here the value of the loop counter is changed.
  5. Go to step 2 – check condition.
  6. End of cycle execution.

 

2.1. An example of calculating the arithmetic mean of array elements

The example calculates the arithmetic mean of the elements of an array of floating point numbers. To get the number of elements in an array, use the length property of that array.

// Loop for
// Calculate the average of array elements

// 1. The given array
var A = [2.8, 3.5, 1.4, 3.2, 1.7];

// 2. Declare variables
var avg = 0 // the result is the arithmetic average.

// 3. Loop for calculating the sum of array elements,
//   here A.length - number of array elements
for (var i = 0; i < A.length; i++)
  avg += A[i]

// 4. Calculate the average
avg = avg / A.length

// 5. Display the result
console.log("avg = ", avg)

Result

avg = 2.5199999999999996

 

2.2. An example of the formation of a Fibonacci series for a given maximum value

 

// Loop for
// Form a Fibonacci series for a given n

// 1. Given n
var n = 50

// 2. Declare additional variables
var t1, t2, t3
var s = "" // resulting string formed from numbers

// 3. Calculation of elements of the Fibonacci series.
//   The resulting string is formed
t1 = 1
t2 = 1
t3 = t1 + t2
s = s + t1 + " " + t2 + " "

for (t1 = 1, t2 = 1; t3 <= n;) {
  t3 = t1 + t2;
  s = s + t3 + " ";
  t1 = t2;
  t2 = t3;
}

// 4. Display the resulting string s
console.log(s)

Result

1 1 2 3 5 8 13 21 34 55

 

2.3. Example of function tabulation y = sin(x)

The example shows how to use a for loop to create data based on the results of tabulating the sin(x) function.

// Function tabulation y = sin(x)
// in the range [a; b] in step h.

// 1. Given a, b - range and step h = 0.1
var a = 0, b = 2, h = 0.1;
var x, y;

// 2. Cyclic tabulation process with output to the screen of the result
for (var t = a; t <= b; t += h) {
  // Round result to 2 decimal places
  x = Number.parseFloat(t).toFixed(2);
  y = Number.parseFloat(Math.sin(t)).toFixed(2);

  // Display the result on the screen
  console.log("x = ", x, " y = ", y);
}

Result

x = 0.00   y = 0.00
x = 0.10   y = 0.10
x = 0.20   y = 0.20
x = 0.30   y = 0.30
x = 0.40   y = 0.39
x = 0.50   y = 0.48
x = 0.60   y = 0.56
x = 0.70   y = 0.64
x = 0.80   y = 0.72
x = 0.90   y = 0.78
x = 1.00   y = 0.84
x = 1.10   y = 0.89
x = 1.20   y = 0.93
x = 1.30   y = 0.96
x = 1.40   y = 0.99
x = 1.50   y = 1.00
x = 1.60   y = 1.00
x = 1.70   y = 0.99
x = 1.80   y = 0.97
x = 1.90   y = 0.95

 

3. Loop while

The while loop is called a precondition loop. This means that for the execution of the first and each subsequent iteration of the loop, the condition for executing the loop is first checked.

The general form of the while loop operator is the same as in C++, C#, Java:

while (condition) {
  // Loop body
  // ...
}

here

  • condition – some conditional expression. The loop body is iterated over iteration if condition = true. If condition becomes false when checking the condition, the loop exits.

 

3.1. An example of determining the maximum value in an array

 

// Loop while
// Finding the maximum in an array

// 1. The array is specified
var A = [2, 3, 8, -4, 9, 6, 7]

// 2. Set maximum to the first element of an array
var max = A[0]

// 3. Finding loop
var i = 1

while (i < A.length) {
  if (max < A[i]) max = A[i];
  i++;
}

// 4. Display the result
console.log("max = ", max)

Result

max = 9

 

3.2. Finding a number according to a condition

Task.

A number a is given for which the condition is satisfied

1 < a ≤ 1.5

Among the numbers

1+1/2, 1+1/3, 1+1/4, ...

find the first one that is less than the number a.

Solution.

// Loop while
// Finding the first number less than a
// in a series of numbers: 1+1/2, 1+1/3, 1+1/4,...

// 1. The number a is specified
var a = 1.05;

// Declare additional variables
var res, t

t = 2;
res = 1 + 1 / t;

while (res >= a) {
  t = t + 1;
  res = 1 + 1 / t;
}

console.log("t = ", t);
console.log("res = ", res);

Result

t = 21
res = 1.0476190476190477

 

3.3. Processing strings in a while loop. Example

Task.

Text is given. Find the position of the first occurrence of the ‘+’ character in this text.

Solution.

 

// Processing text in a while loop.

// Find position of first occurrence of '+' character in text

// 1. Read the text
var str = prompt("Input text:")

// 2. Position determination cycle
var pos; // result - searching position

pos = 0

while (str[pos]!='+')
  pos++;

// 3. Display the result
alert("Position = " + pos)

 

4. Loop do-while

A do-while loop is also called a postcondition loop. This means that the body of the loop comes first, then the condition is checked. Thus, the loop body is executed at least once. If we consider the for and while loops, then there may be situations when the body of these loops will not be executed even once. This is the main difference between the do-while loop and the for, while loops.

The general form of declaring a do-while loop in JavaScript is the same as in C++, C#, Java:

do
{
  // Loop body
  // ...
} while (condition);

here

  • condition – some condition. The loop body is executed if condition=true. As soon as the value of condition becomes false, the loop exits and moves to the next statement.

In some cases, the do-while loop feature results in more descriptive code. An example of such a case could be receiving data from the keyboard and processing it depending on the situation. If you use for or while statements, then you can not do without re-call the input line or enter additional flags that determine the first iteration step in the loop. The use of the do-while loop will not cause extra lines of code to solve the problem correctly (see Example 4.1).

 

4.1. Data processing during input. An example of calculating the sum for a sequence of entered numbers

The do-while loop organizes the input of numbers from the keyboard by calling the dialog box with the prompt() function. The end of the input is the number 0. As a result, the sum of the entered numbers is calculated.

 

// Loop do-while
// Processing of data during input.

// Given a sequence of numbers that ends in zero.
// Calculate the sum of the entered numbers.

// 1. Declare variables
var num   // the number that will be entered from the keyboard
var sum = 0.0 // calculated sum

// 2. The loop of calculation
do {
  // Display a number entry window
  num = prompt("Enter number: ", '0');
  sum += parseFloat(num);
} while (num!=0);

// 3. Display the result
document.write("sum = " + sum)

 

4.2. Calculating the maximum digit of a number

Task.

Given a natural number. Calculate the maximum digit of this number.

Solution.

// Loop do-while

// Calculate the maximum digit of a number entered from the keyboard

// 1. Declare variables
var num // given number
var max // maximum digit of a number

// 2. Input data
num = parseInt(prompt("Enter number: "))

// 3. Calculating the maximum digit of a number - do-while loop
max = num % 10 // get the last digit

do {
  if (max<num%10)
    max = num%10
  num = parseInt(num/10)
} while (num>0)

// 4. Display the result
alert("max = " + max)

 

4.3. String processing. Replacing characters in text

TaskIn the given text, replace all ‘+’ characters with ‘-‘ characters. Use a do-while loop to solve.

Solution.

When solving this problem, it should be taken into account that strings are immutable sequences. Therefore, it will not work to directly replace the character in the original text. In this task, a new (different) text is formed, which then replaces the original text.

 

// Processing text in a do-while loop.

// In the given text, replace all '+' characters with '-' characters.

// 1. Input text
var text = prompt("Input text:")

// 2. Replacement cycle
var i = 0 // index of the processed character in the text
var text2 = "" // additional text

do {
  // Handling the character text[i]
  if (text[i] == '+')
    text2 = text2 + "-"
  else
    text2 = text2 + text[i]

  // Increase counter
  i++
} while (i < text.length)

// 3. Replace original text
text = text2

// 4. Display the result
document.write("text = " + text)

 


Related topics