1 / 11

Unit 3 - The while Loop - Extending the Vic class - Examples

Unit 3 - The while Loop - Extending the Vic class - Examples. Loops in Java. A structure that allows the programmer to repeat something while a condition is true. (also called “iteration”). Three kinds of loops in Java. 1. The “while” loop // we will see today.

Download Presentation

Unit 3 - The while Loop - Extending the Vic class - Examples

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unit 3- The while Loop- Extending the Vic class- Examples

  2. Loops in Java A structure that allows the programmer to repeat something while a condition is true. (also called “iteration”) Three kinds of loops in Java 1. The “while” loop // we will see today 2. The “for” loop // we will see next lesson 3. The “do-while” loop // not on AP exam…in your book

  3. Loops in Java • The “while” loop – used when we want to repeat • something while a condition remains true. Syntax: while(condition) { statement; statement; … } The program will execute these statements while the condition remains true. When the condition becomes false, the program will resume after the curly brace.

  4. Example Rewrite Program 2 from Unit 7 using less than 10 lines of program code.

  5. public class Program2 { public static void main (String[ ] args) { Vic one = new Vic(); Vic two = new Vic(); if(one.seesSlot() && two.seesSlot()) { if (!two.seesCD() && one.seesCD()) { one.takeCD(); two.putCD(); } one.moveOn(); two.moveOn(); } … // Repeat this code 8 times public class Program2 { public static void main (String[ ] args) { Vic one = new Vic(); Vic two = new Vic(); while(one.seesSlot() && two.seesSlot()) { if (!two.seesCD() && one.seesCD()) { one.takeCD(); two.putCD(); } one.moveOn(); two.moveOn(); } } … // Repetition done in the loop!!

  6. Example: Explain what this application program does. public class Mystery { public static void main (String [] args) { Vic.reset(args); Vic v = new Vic(); while(Vic.stackHasCD()) { v.putCD(); v = new Vic(); } } }

  7. The while Loop (cont’d) • Example: // Returns the smallest n // such that 2^n >= x public static int intLog2 (int x) { int n = 0, p = 1; while ( p < x ) { p *= 2; n++; } return n; } Initialization Testing Change

  8. The while Loop (cont’d) • Initialization: The variables tested in the condition must be initialized to some values. If the condition is false at the outset, the loop is never entered. • Testing: The condition is tested before each iteration. If false, the program continues with the first statement after the loop. • Change: At least one of the variables tested in the condition must change within the body of the loop.

  9. Loop Invariants • A loop invariant is an assertion that is true before the loop and at the end of each iteration. • Invariants help us reason about the code. int n = 0, p = 1; while (p < x) { p *= 2; n++; } ... Loop invariant: p = 2n

  10. Extending the Vic Shortcoming: Vic does not have a method to go back to the front of the sequence (the first slot). Extension: called inheritance in OOP. Allows us to keep all of the qualities of a class, plus add any new ones. Introducing the DualDirectionVic Allows us to keep all of the qualities of a Vic, plus add any new ones. The new ones: 1. A method to back up to the first slot. 2. A method to go to the last slot. 3. A boolean method to check for first slot.

  11. class DualDirectionVic extends Vic { private String itsFirstPosition; public DualDirectionVic() { super(); itsFirstPosition = getPosition(); } publicvoid goToFirst() { while(!seesFirstSlot()) backUp(); } public void goToLast() { while(seesSlot()) moveOn(); backUp(); } public boolean seesFirstSlot() { if(itsFirstPosition.equals(getPosition())) return true; else return false; } }

More Related