1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Computer Science MATLAB For and While loops

  1. Nov 1, 2011 #1
    I had a test in my computer science course in which I was asked if any while loop can be replaced with a for loop. I put true. I guess the answer was false. My professor said that if you had a while loop in which you asked the user to input a certain value that had to be within a certain range and kept on iterating over the loop until the user inputted a value within the range that you wouldn't be able to do this with a for loop.

    I however thought that any for loop can be written with a while loop and any while loop can be rewritten with a for loop. I think I may have even read something about this in my textbook but am unable to come up away with doing what my professor said with a for loop but believe that it's possible. Can anyone please come up with a way to do such a thing with a for loop?

    for example a while loop

    A=0;
    while A<1
    x=input('Enter a value');
    if x>4 && x<10
    A=1
    else
    end

    this would force the user to enter a number between 4 and 10, not including 4 and 10, and would just keep on iterating over the loop until the user does.

    I found this in my book
    "Any problem that can be solved using a while loop could also be solved using a for loop"
     
    Last edited: Nov 1, 2011
  2. jcsd
  3. Nov 1, 2011 #2
    With MatLab, the for loop behaves differently than in some other languages. While in some other languages, such as those based on C, the behavior of any while loop may also be implemented with a for loop, this is not so for MatLab. The MatLab for loop does not allow infinite looping; it supports executing code repeatedly with a finite number of index values. Any changes to the index variable of the for loop in the body of the loop would not affect the next iteration.
     
  4. Nov 1, 2011 #3

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    Check what computer language(s) the book is talking about. That statement is certainly true in C or Java, but it's false in Fortran or Matlab.

    In C or Java, the expressions in the "for" statement can be almost anything in the language (including reading input from the user, if you want to do that). In other languages, the only thing that a "for" statement can do is make an integer variable step through a sequence of values.
     
  5. Dec 1, 2011 #4
    The book is talking about MATLAB it is the book we are using for the course in which we learn MATLAB.

    Can anyone provide me with a while loop that cannot be rewritten with a for loop?

    I believe that there are two parts to this argument.

    A. while loop you can iterate forever

    It's true that you can't iterate for ever with a for loop, but you can get very close.
    for k=1:Inf
    ...
    end
    will make matlab complete 9223372036854775807 iterations.

    B. You can use a while loop when you don't know how many iterations are needed. Rewriting a while loop with a for loop that uses this aspect of the while loop proposes a problem

    for k=1:inf
    ...
    end

    will complete 9223372036854775807 iterations no matter if only 5 iterations are needed or 100... but we can get around this by

    for k=1:inf
    ...
    if CONDITION
    break
    else
    end

    were if a condition is true we can terminate out of the loop and if not we can keep on iterating until the condition is met... this gets around this problem...

    9223372036854775807 is an incredible amount of iterations. Can we really have a loop go on forever anyways? Wouldn't a infinite while loop eventually terminate because the computer running the program would eventually crash or break? Just because we can code an infinite while loop doesn't mean it would necessarily go on forever. If I ran an infinite while loop on my computer by no means would it go on forever for 1000+ years because my computer would break by then.
     
    Last edited: Dec 1, 2011
  6. Dec 1, 2011 #5
    I believe you can rewrite any while loop of form

    while CONDITION
    ...
    end

    with

    For k=1:Inf
    ...
    if CONDITION
    break
    else
    end

    were the CONDITION is exactly the same for both loops

    as
    For k=1:Inf
    ...
    if CONDITION
    break
    else
    end
    well do exactly the same thing as a while loop - iterate as many as times as needed until a condition is met... once it's met terminate from the loop... as I've shown this can be done with a for loop
     
  7. Dec 1, 2011 #6
    If you ran MatLab code with "for k=1:inf" you would get a warning message indicating a for loop index is too large, and has been truncated to a specific integer.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Computer Science MATLAB For and While loops
  1. While loop (Replies: 1)

  2. Matlab while loop help (Replies: 15)

Loading...