Skip to main content
Engineering LibreTexts

7.4: 'for' and 'while' Loops

  • Page ID
    14953
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    We discuss the for and while loops in this section.

    Suppose we want to have part of our program re-run a preset number of times. For this, we use a for loop. The basic format of this structure is:

    for (put counter conditions here)
    (put calculations here)
    end

    Example 7.4.1: Comparing 'for' and 'sum'

    Let’s compare two methods for adding up the first five integers. Using the sum command we can use

    >> sum(1:5)
    ans =
    15

    Now, using a for loop to create a cumulative sum:

    totalsum=0; % initialize
    for i=1:5
    totalsum=totalsum+i;
    end
    disp(totalsum)

    The variable totalsum will have value 15.

    In example 7.4.1, the for loop was the long way of doing the problem (and therefore stresses the power of the sum function), but the following example shows a more in-depth for loop.

    Example 7.4.2: Using 'for'

    Let’s find the first 10 Fibonacci numbers using the recursive definition.

    %initialize the matrix
    A=zeros(1,10);
    A(1)=0;
    A(2)=1;

    for i=3:10
    A(i)=A(i-1)+A(i-2);
    end

    disp(A)

    The output for this would be

    A =
    0 1 1 2 3 5 8 13 21 34

    Now, suppose want to have part of our program run until a certain condition is met, even though we may not know how many times the loop will need to
    run until that happens. For this, we use a while loop.

    The basic format of this structure is:

    while (put conditions for the loop to keep running)
    (put calculations here)
    end

    Let’s rewrite the last example with a slight twist. Let’s find the Fibonacci numbers until they exceed 1000.

    Example 7.4.3: Using 'while'

    %initialize the matrix (we dont know how big it will be so
    % we will grow it in the while loop).

    A(1)=0;
    A(2)=1;
    j=2; %initialize a counter
    while A(j) < 1000
    j=j+1; %move the counter along
    A(j)=A(j-1)+A(j-2);
    end

    disp(A)

    The output for this would be

    A =
    0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

    The loop concludes when we pass 1000.


    This page titled 7.4: 'for' and 'while' Loops is shared under a CC BY-NC 3.0 license and was authored, remixed, and/or curated by Troy Siemers (APEX Calculus) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.