SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Chapter 14: Repetitive Statements


CHAPTER 14: REPETITIVE STATEMENTS

Objectives
                The objectives are:

                        •   Introduce repetitive statements.
                        •   Describe FOR statements, and provide a step-by-step examination of
                            a block of code containing this statement.
                        •   Describe WHILE …DO statements, and provide a step-by-step
                            examination of a block of code containing this statement.
                        •   Describe REPEAT…UNTIL statements, and provide a step-by-step
                            examination of a block of code containing this statement.
                        •   Add repetitive statements to your test form, and examine the effects
                            of three types of sorting.



Introduction
                Repetitive statements are statements that enable developers to execute one or
                more other statements multiple times. There are several different types of
                repetitive statements, including FOR statements, WHILE…DO statements, and
                REPEAT…UNTIL statements.

                This section describes these types of repetitive statements and the best
                circumstances for using them. It also provides a step-by-step guide for each code
                element to explain what happens at each point in an example. Finally, this section
                provides several exercises that enable you to write your own repetitive
                statements, and use them for different types of sorting.




           Microsoft Official Training Materials for Microsoft Dynamics ™             Page    277
          Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0


Repetitive Statements
                   A repetitive statement is a statement that allows developers to execute one or
                   more other statements multiple times. There are several kinds of repetitive
                   statements. One of the differences between each type of repetitive statement is
                   the number of times their statements are executed, and how that number is
                   determined. A repetitive statement is often called a loop, because when the
                   execution reaches the end of the repetitive statement, it loops back to the
                   beginning.

                   This section reviews three different types of repetitive statements:

                           •    FOR statements
                           •    WHILE…DO statements
                           •    REPEAT…UNTIL statements


                   FOR Statements
                   The FOR statement is used when a statement is to be executed a predetermined
                   number of times. There are two FOR statements:

                           •    FOR…TO
                           •    FOR…DOWNTO


                   FOR…TO Statements
                   The most common FOR statement, FOR…TO, has this syntax:

                   FOR <control variable> := <start value> TO <end value> DO
                   <statement>

                   The control variable must be a variable of type Boolean, Date, Time, or any
                   numeric type. The start value and the end value must be either expressions that
                   evaluate to the same data type as the control variable or be variables of that same
                   data type. For example:

                   FOR idx := 4 TO 8 DO
                   Total := Total + 2.5;

                   In this case, the control variable (idx), the start value (4) and the end value (8) are
                   all integers. The following steps describe what happens:




Page   278    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement
Chapter 14: Repetitive Statements


       Step                                   Code
           1. The start value expression      idx := 4
              is evaluated and the
              control variable is set to
              the result.
           2. The end value expression        End value is 8
              (after the TO) is evaluated.
           3. The control variable is         IF idx > 8, THEN
              compared to the end value.      The FOR statement ends.
              If it is greater than the end
              value, the FOR statement
              is terminated.
           4. The statement (after the        Total := Total + 2.5
              DO) is executed.
           5. The control variable is         idx := idx + 1 (5)
              incremented by one.
           6. Go to step 3 and test the
              control variable again.

      The net result, for this example, is that the Total variable is increased by 2.5 a
      total of 5 times, therefore increasing it by 12.5. Note that both the start value and
      the end value are evaluated only one time, at the beginning of the FOR statement.

      Also note that the control variable's value is not changed in the FOR loop, as the
      results of doing so is not predictable. Also, the value of the control variable
      outside of the FOR loop (after it ends) is not defined.

      Using BEGIN and END
      If several statements need to be run inside the loop, then developers use a
      compound statement by adding BEGIN and END. Here is an example:

      FOR idx := 4 TO 8 DO BEGIN
       Total := Total + 2.5;
       GrandTotal := GrandTotal + Total;
      END;



      FOR…DOWNTO Statement
      The second FOR statement, the FOR.. DOWNTO statement, has this syntax:

      FOR <control variable> := <start value> DOWNTO <end value>
      DO <statement>




 Microsoft Official Training Materials for Microsoft Dynamics ™                Page    279
Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0

                   The rules for the control variable, start value and end value are the same as for
                   the FOR…TO statement. The only difference between the two is that in the
                   FOR… TO statement, the control variable increases in value until it is greater
                   than the end value, whereas in the FOR.. DOWNTO statement, the control
                   variable decreases in value until it is less than the end value. Here is an example
                   and the explanation using an array and a compound statement:

                   FOR idx := 9 DOWNTO 1 DO BEGIN
                   TotalSales := TotalSales + Sales[idx];
                   NumberSales := NumberSales + 1;
                   END;



                   This process for executing this code is explained in the following steps.
                    Step                                   Code
                        1. The start value expression      Idx := 9
                           is evaluated and the
                           control variable is set to
                           the result.
                        2. The end value expression        End value is 1
                           (after the TO) is evaluated.
                        3. The control variable is         IF idx < 1, THEN
                           compared to the end value.       The FOR statement ends.
                           If it is less than the end
                           value, the FOR statement
                           is terminated.
                        4. The statement (after the        TotalSales := TotalSales + Sales[9];
                           DO) is executed.                NumberSales := NumberSales + 1;
                        5. The control variable            Idx := idx - 1 (8)
                           decrements by one.
                        6. Go to step 3 and test the
                           control variable again.

                   Through each execution of the first statement in the compound statement, a
                   different element of the Sales array is accessed − first 9 and then 8, and so on.

                   The WHILE…DO Statement
                   The WHILE loop is used when a statement is to be executed as long as some
                   condition holds true. Here is the syntax of a WHILE statement:

                   WHILE <Boolean expression> DO <statement>




Page   280    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement
Chapter 14: Repetitive Statements

      This is simpler than the FOR statement. As long as the Boolean expression
      evaluates to True, the statement, or statements if using BEGIN and END, are
      executed repeatedly. Once the Boolean expression evaluates to False, the
      statement is skipped and execution continues with the statement following it.

      Here is an example, showing the use of a compound statement:

      WHILE Sales[idx + 1] <> 0 DO BEGIN
       idx := idx + 1;
       TotalSales := TotalSales + Sales[idx];
      END;

      Here is the explanation of this code:

       Step                                   Code
           1. The Boolean expression is       Is Sales[idx + 1] <> 0?
              evaluated. If it is true,
              continue with step 2. If
              not, the WHILE statement
              is terminated.
           2. The statement (after the        idx := idx + 1;
              DO) is executed.                TotalSales := TotalSales + Sales[idx];
           3. Go to step 1 and test the
              Boolean expression again.

      Note that the Boolean expression is tested before the statement is even executed
      one time. If it evaluates to False from the beginning, the statement is never
      executed.

      Also, note that the Sales[idx] that is added to Total Sales in the WHILE loop is
      the same value that was tested in the Sales[idx + 1] at the beginning of the
      WHILE loop. The intervening idx := idx + 1 statement is what causes this. In
      addition, once the WHILE loop has ended, idx still refers to the last non-zero
      element in the Sales array.

      The REPEAT…UNTIL Statement
      The REPEAT statement is used when one or more statements are to be executed
      until some condition becomes true. Here is the syntax of the REPEAT statement:

      REPEAT <statement> { ; <statement> } UNTIL <Boolean
      expression>




 Microsoft Official Training Materials for Microsoft Dynamics ™              Page      281
Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0

                   There are several differences between the REPEAT and WHILE statements:

                           •   First, there can be more than one statement between the REPEAT
                               and the UNTIL, even if no BEGIN and END is used.
                           •   Secondly, the Boolean expression is not evaluated until the end, after
                               the statements have already been executed once.
                           •   Third, when the Boolean expression is evaluated, it loops back to the
                               beginning if the expression evaluates to False and terminates the
                               loop if the expression evaluates to True.

                   Here is an example, which is almost identical to the example used for the
                   WHILE statement:

                   REPEAT
                    idx := idx + 1;
                    TotalSales := TotalSales + Sales[idx];
                   UNTIL Sales[idx] = 0;

                   The following table offers an explanation.

                    Step                                   Code
                        1. The statements (between         idx := idx + 1;
                           the REPEAT and the              TotalSales := TotalSales + Sales[idx];
                           UNTIL) are executed.
                        2. The Boolean expression is       Is Sales[idx] = 0?
                           evaluated. If it is true, the
                           REPEAT statement is
                           terminated. If not, go back
                           to step 1.

                   Note that since the Boolean expression is not evaluated until the end, the
                   statements incrementing the index and adding the TotalSales are executed even
                   though the value of those Sales might be zero. Therefore, at the end of this loop,
                   idx refers to the first Sales which equals zero, rather than the last non-zero Sales
                   as in the WHILE loop.

                   Also note that the Boolean expression had to be rewritten, since you are now
                   testing for a False condition to continue the loop, rather than a True expression as
                   in the WHILE loop.




Page   282    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement
Chapter 14: Repetitive Statements


Lab 14.1 − Code with Repetitive Statements
                In the previous section on arrays, the test form was left so that the first 10 items
                you added to the list were listed, but from then on, nothing showed in the list.
                You now change this so that the last ten items you added to the list always show.

                Steps: Add a FOR Loop
                The steps are as follows.

                        1. Design form 123456756.
                        2. Click VIEW→C/AL GLOBALS and add a variable named idx of type
                           integer to the current variable list.
                        3. Select the Execute button and open the C/AL Editor to access the
                           OnPush trigger code.
                        4. Find the code following the comment that says "Display results in
                           Amount column on form." Modify it so that it looks like this:


                            Counter := Counter + 1;
                            IF Counter > ARRAYLEN(Amount) THEN BEGIN
                              Counter := ARRAYLEN(Amount);
                              FOR idx := 2 TO Counter DO
                               Amount[idx-1] := Amount[idx];
                            END;
                            Amount[Counter] := Result;

                            Note that once Counter becomes greater than the length of the
                            Amount array, you set it back to be equal to that length.


                        5. Then, move each of the elements in the Amount array up by one
                           index, using a FOR statement. Element 2 is moved to element 1, then
                           element 3 is moved to element 2, and so on. Finally, element 10 is
                           moved to element 9 and then the FOR loop ends. The new result is
                           then moved into the last element in the array.
                        6. Close, compile, save, and then run the form.
                        7. Enter some values, click the Execute button, and watch what
                           happens. Until the list is filled, nothing changes, but watch what
                           happens when you have pressed the Execute button more than ten
                           times.




           Microsoft Official Training Materials for Microsoft Dynamics ™                Page    283
          Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0


                   Steps: Sorting − Phase I
                   The sorting steps are as follows.

                           1. Design the form and add a new Command button with its Caption
                              property set to Sort.
                           2. Select the Sort button and press F9 to open the C/AL Editor. In the
                              OnPush trigger, add the following code:


                               FOR idx := ARRAYLEN(Amount) DOWNTO 2 DO
                                IF Amount[idx] < Amount[idx-1] THEN BEGIN
                                  TempAmount := Amount[idx];
                                  Amount[idx] := Amount[idx-1];
                                  Amount[idx-1] := TempAmount;
                                END;

                           3. For this code to compile, you also need to add a variable called
                              TempAmount of type Decimal.
                           4. Close, save, compile, and then run the form.
                           5. Fill in some values and click the Execute button, entering differing
                              quantities each time until the column is full.
                           6. Click the Sort button.
                               What happens?


                           7. Click the Sort button again.
                               What happened this time?


                           8. Continue clicking the Sort button until nothing further happens.
                              Note that at this point all entries are sorted. Now, examine the
                               previous code and answer the following questions. Execute the code
                               manually if necessary.


                                       o    Why in the FOR statement do we only go down to 2
                                            rather than all the way to 1?
                                       o    Why do we not need a BEGIN after the DO in the FOR
                                            statement?
                                       o    What is taking place in the three lines of the compound
                                            statement (between BEGIN and END)?




Page   284    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement
Chapter 14: Repetitive Statements

                           o    Why is TempAmount used for this?
                           o    If the entries in the column had been made exactly in the
                                wrong order (highest to lowest), how many times does
                                the Sort button have to be clicked to sort the list?


      Steps: Sorting − Phase II
      Obviously, it is better if the user just clicks the Sort button once and has the list
      completely sorted. Note, however, that sometimes one click of the button may
      work, while other times more are needed. A FOR loop is inappropriate for this,
      because you do not know in advance how many times it takes.

      For this situation, a REPEAT loop works best.

              1. Add a new variable called IsSorted of type Boolean.
              2. Modify the Sort button's OnPush code as follows:


                   REPEAT
                    IsSorted := TRUE;
                    FOR idx := ARRAYLEN(Amount) DOWNTO 2 DO
                     IF Amount[idx] < Amount[idx-1] THEN BEGIN
                       TempAmount := Amount[idx];
                       Amount[idx] := Amount[idx-1];
                       Amount[idx-1] := TempAmount;
                       IsSorted := FALSE;
                     END;
                   UNTIL IsSorted;

                   Note that the IsSorted variable is used as a signal to tell whether you
                   are finished sorting.


              3. Set the IsSorted variable to TRUE at the beginning of each
                 REPEAT loop, and if you ever have to swap two elements because
                 the list is not in order, set it to FALSE.
              4. At the end of the REPEAT loop, check to see if it is TRUE. If it is,
                 all of the elements are in order, since none needed to be swapped and
                 therefore you can exit the loop.
                   If not, the loop is repeated again. When using a Boolean variable as a
                   signal in this way, programmers sometimes call it a flag.
                   Also, note that you cannot tell whether the list is sorted unless it is
                   actually run through at least one time. That is why REPEAT is used
                   here, rather than a WHILE loop.




 Microsoft Official Training Materials for Microsoft Dynamics ™                  Page    285
Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0

                           5. Close, save, compile, and run the form.
                           6. Perform the same experiment as before, filling in the table with
                              values and then clicking the Sort button. Note that the list is
                              completely sorted with one click.

                                        o   Look at the IF statement again. You used the less than
                                            (<) operator to compare the elements. What happens if
                                            you changed this to the greater than (>) operator?
                                        o   Test the case where two elements happen to have the
                                            same value. Once you find out, change it back to the less
                                            than operator for the next exercise.


                   Steps: Sorting − Phase III
                   You now have a perfectly good sorting routine, which works well for small
                   arrays. But notice that you wrote it so that it can take arrays of any size. In cases
                   where you have 100 elements, 1,000 elements, or 10,000 elements, you need a
                   really efficient sorting routine. You created "nested" loops when you put one
                   loop (the FOR loop) inside another loop (the REPEAT loop). Whenever there are
                   nested loops, there is always a potential for inefficiency, especially as the number
                   of elements increase. The question becomes how many times will the innermost
                   loop be executed

                   For example, in the case in the Sorting – Phase II section, whenever the FOR
                   loop is executed once, the IF statement is executed 9 times, because the length of
                   the array is 10, but you are not going all the way to 1. If the REPEAT loop has to
                   be executed 9 times, the FOR loop will be executed nine times and the IF
                   statement will be executed 9 * 9 = 81 times. However, if the array length goes up
                   to 100, the IF statement will be executed 99 times per FOR statement and the
                   FOR statement may be executed by the REPEAT loop up to 99 times. In this
                   situation, the IF statement might be executed up to 99 * 99 = 9,801 times.

                   You can reduce this substantially, by remembering what happened when the FOR
                   loop was written by itself. Every time it ran, the lowest element rose to the top.
                   That means that the first element never needs to be tested again, once the first
                   FOR loop was run. Once the second FOR loop was run, you never need to test
                   the first two elements again. Each loop needs fewer and fewer tests to do its job.
                   And this is the worst case. Sometimes, when the Sort button was clicked, the
                   first three elements became sorted and you never needed to test any of the first
                   three again.

                   Here is how you can take advantage of this.

                           1. First, create an integer variable called LowestSwitch.
                           2. Rewrite the sorting routine so it looks like this:




Page   286    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement
Chapter 14: Repetitive Statements


                  LowestSwitch := 2;
                  REPEAT
                   IsSorted := TRUE;
                   FOR idx := ARRAYLEN(Amount) DOWNTO LowestSwitch
                  DO
                     IF Amount[idx] < Amount[idx-1] THEN BEGIN
                      TempAmount := Amount[idx];
                      Amount[idx] := Amount[idx-1];
                      Amount[idx-1] := TempAmount;
                      IsSorted := FALSE;
                      LowestSwitch := idx + 1;
                     END;
                  UNTIL IsSorted;

                  Instead of sorting down to 2 (comparing with 1) every time, now the
                  FOR loops says to sort down to LowestSwitch (comparing with
                  LowestSwitch - 1). LowestSwitch starts out as 2, but each time two
                  values are switched (in the THEN clause of the IF statement), it is
                  reset to one more than the element currently being switched.
                  Since the FOR loop works down, at the end, LowestSwitch is the
                  lowest element to test next time around. Even in the worst case, it is
                  one higher than the previous value and it might be several higher.
                  Each one higher is one less to test and the savings are compounded
                  as you go through the sort.
                  For example, if the array has ten elements, then in the worst case,
                  you will execute the innermost IF statement 9 * 9 = 81 times. In the
                  worst case, you will execute the innermost IF statement 9 + 8 + 7 + 6
                  + 5 + 4 + 3 + 2 + 1 times = 45 times. If the array has 100 elements,
                  the worst case goes from 9,801 executions down to 4,950.
                  In other words, this simple modification makes the sort go twice as
                  fast and therefore takes half as long to execute.




 Microsoft Official Training Materials for Microsoft Dynamics ™               Page    287
Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0


Conclusion
                   This section has described repetitive statements, which are statements that enable
                   developers to execute one or more other statements multiple times. Several types
                   of repetitive statements, including FOR statements, WHILE…DO statements,
                   and REPEAT…UNTIL statements have been described and examples of each
                   have been provided. You have written your own FOR loops, and then you have
                   sorted your amounts in three ways, FOR and REPEAT statements. The next
                   section describes WITH and CASE statements.




Page   288    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement
Chapter 14: Repetitive Statements


Test Your Knowledge

                       1. Which repetitive statement do you use if you can determine, before
                          you started, how many times your statements have to be executed?



                       2. Which repetitive statement does not require a BEGIN and END to
                          execute more than one statement repetitively?



                       3. Which repetitive statements test the condition at the beginning of
                          each loop?



                       4. Rewrite the following WHILE statement as a REPEAT statement.
                          Describe the differences in how it is executed.


                         WHILE X > 0 DO BEGIN
                           Y := A * X * X + B * X + C;
                           X := X - 1;
                         END;




          Microsoft Official Training Materials for Microsoft Dynamics ™             Page      289
         Your use of this content is subject to your current services agreement
C/SIDE Introduction in Microsoft Dynamics NAV 5.0


Quick Interaction: Lessons Learned
                   Take a moment to write down three key points you have learned from this
                   chapter:

                   1.




                   2.




                   3.




Page   290    Microsoft Official Training Materials for Microsoft Dynamics ™
             Your use of this content is subject to your current services agreement

Weitere ähnliche Inhalte

Was ist angesagt?

Control structures in C++ Programming Language
Control structures in C++ Programming LanguageControl structures in C++ Programming Language
Control structures in C++ Programming LanguageAhmad Idrees
 
C++ decision making
C++ decision makingC++ decision making
C++ decision makingZohaib Ahmed
 
Control structure C++
Control structure C++Control structure C++
Control structure C++Anil Kumar
 
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDYC UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDYRajeshkumar Reddy
 
The future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsThe future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsMarkus Voelter
 
Control Structures
Control StructuresControl Structures
Control StructuresGhaffar Khan
 
C programming decision making
C programming decision makingC programming decision making
C programming decision makingSENA
 
Decision Making Statement in C ppt
Decision Making Statement in C pptDecision Making Statement in C ppt
Decision Making Statement in C pptMANJUTRIPATHI7
 
Control structures ii
Control structures ii Control structures ii
Control structures ii Ahmad Idrees
 

Was ist angesagt? (15)

Control structures in C++ Programming Language
Control structures in C++ Programming LanguageControl structures in C++ Programming Language
Control structures in C++ Programming Language
 
C++ decision making
C++ decision makingC++ decision making
C++ decision making
 
Control structure C++
Control structure C++Control structure C++
Control structure C++
 
Lec 10
Lec 10Lec 10
Lec 10
 
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDYC UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
C UNIT-2 PREPARED Y M V BRAHMANANDA REDDY
 
The future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsThe future of DSLs - functions and formal methods
The future of DSLs - functions and formal methods
 
Flow of control ppt
Flow of control pptFlow of control ppt
Flow of control ppt
 
final pl paper
final pl paperfinal pl paper
final pl paper
 
Variables
VariablesVariables
Variables
 
Control Structures
Control StructuresControl Structures
Control Structures
 
C programming decision making
C programming decision makingC programming decision making
C programming decision making
 
Decision Making Statement in C ppt
Decision Making Statement in C pptDecision Making Statement in C ppt
Decision Making Statement in C ppt
 
C++ STATEMENTS
C++ STATEMENTS C++ STATEMENTS
C++ STATEMENTS
 
Control structures ii
Control structures ii Control structures ii
Control structures ii
 
Unit 5. Control Statement
Unit 5. Control StatementUnit 5. Control Statement
Unit 5. Control Statement
 

Andere mochten auch

Savanna gisella
Savanna gisellaSavanna gisella
Savanna gisellaibernalo12
 
How to choose credit card
How to choose credit cardHow to choose credit card
How to choose credit cardSan Franklin
 
AgCenter Unplugged
AgCenter Unplugged AgCenter Unplugged
AgCenter Unplugged Dave Woerner
 
Savanna
SavannaSavanna
Savanna16dnh
 
Eric smith web based tutorial
Eric smith web based tutorialEric smith web based tutorial
Eric smith web based tutorialEric Smith
 

Andere mochten auch (6)

Savanna gisella
Savanna gisellaSavanna gisella
Savanna gisella
 
How to choose credit card
How to choose credit cardHow to choose credit card
How to choose credit card
 
AgCenter Unplugged
AgCenter Unplugged AgCenter Unplugged
AgCenter Unplugged
 
Biomes
BiomesBiomes
Biomes
 
Savanna
SavannaSavanna
Savanna
 
Eric smith web based tutorial
Eric smith web based tutorialEric smith web based tutorial
Eric smith web based tutorial
 

Ähnlich wie Na50 enus devi_14

Looping statements
Looping statementsLooping statements
Looping statementsJaya Kumari
 
VB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdfVB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdfAdiseshaK
 
Do While Repetition Structure
Do While Repetition StructureDo While Repetition Structure
Do While Repetition StructureShahzu2
 
QTP VB Script Trainings
QTP VB Script TrainingsQTP VB Script Trainings
QTP VB Script TrainingsAli Imran
 
Building high productivity applications
Building high productivity applicationsBuilding high productivity applications
Building high productivity applicationsHutomo Sugianto
 
Introduction to c
Introduction to cIntroduction to c
Introduction to cAjeet Kumar
 
Variable, constant, operators and control statement
Variable, constant, operators and control statementVariable, constant, operators and control statement
Variable, constant, operators and control statementEyelean xilef
 
Variable, constant, operators and control statement
Variable, constant, operators and control statementVariable, constant, operators and control statement
Variable, constant, operators and control statementEyelean xilef
 
04a intro while
04a intro while04a intro while
04a intro whilehasfaa1017
 
Loops IN COMPUTER SCIENCE STANDARD 11 BY KR
Loops IN COMPUTER SCIENCE STANDARD 11 BY KRLoops IN COMPUTER SCIENCE STANDARD 11 BY KR
Loops IN COMPUTER SCIENCE STANDARD 11 BY KRKrishna Raj
 
Fundamentals of Programming Lecture #1.pptx
Fundamentals of Programming Lecture #1.pptxFundamentals of Programming Lecture #1.pptx
Fundamentals of Programming Lecture #1.pptxEyasu46
 
04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptx04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptxManas40552
 

Ähnlich wie Na50 enus devi_14 (20)

Looping statements
Looping statementsLooping statements
Looping statements
 
Loops c++
Loops c++Loops c++
Loops c++
 
VB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdfVB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdf
 
VB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdfVB PPT by ADI PART3.pdf
VB PPT by ADI PART3.pdf
 
Do While Repetition Structure
Do While Repetition StructureDo While Repetition Structure
Do While Repetition Structure
 
QTP VB Script Trainings
QTP VB Script TrainingsQTP VB Script Trainings
QTP VB Script Trainings
 
Java chapter 5
Java chapter 5Java chapter 5
Java chapter 5
 
Comp ppt (1)
Comp ppt (1)Comp ppt (1)
Comp ppt (1)
 
Building high productivity applications
Building high productivity applicationsBuilding high productivity applications
Building high productivity applications
 
Introduction to c
Introduction to cIntroduction to c
Introduction to c
 
Variable, constant, operators and control statement
Variable, constant, operators and control statementVariable, constant, operators and control statement
Variable, constant, operators and control statement
 
Variable, constant, operators and control statement
Variable, constant, operators and control statementVariable, constant, operators and control statement
Variable, constant, operators and control statement
 
Programming
ProgrammingProgramming
Programming
 
04a intro while
04a intro while04a intro while
04a intro while
 
Programming
ProgrammingProgramming
Programming
 
Loops IN COMPUTER SCIENCE STANDARD 11 BY KR
Loops IN COMPUTER SCIENCE STANDARD 11 BY KRLoops IN COMPUTER SCIENCE STANDARD 11 BY KR
Loops IN COMPUTER SCIENCE STANDARD 11 BY KR
 
Fundamentals of Programming Lecture #1.pptx
Fundamentals of Programming Lecture #1.pptxFundamentals of Programming Lecture #1.pptx
Fundamentals of Programming Lecture #1.pptx
 
C++ chapter 4
C++ chapter 4C++ chapter 4
C++ chapter 4
 
04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptx04. WORKING WITH FUNCTIONS-2 (1).pptx
04. WORKING WITH FUNCTIONS-2 (1).pptx
 
programming.ppt
programming.pptprogramming.ppt
programming.ppt
 

Na50 enus devi_14

  • 1. Chapter 14: Repetitive Statements CHAPTER 14: REPETITIVE STATEMENTS Objectives The objectives are: • Introduce repetitive statements. • Describe FOR statements, and provide a step-by-step examination of a block of code containing this statement. • Describe WHILE …DO statements, and provide a step-by-step examination of a block of code containing this statement. • Describe REPEAT…UNTIL statements, and provide a step-by-step examination of a block of code containing this statement. • Add repetitive statements to your test form, and examine the effects of three types of sorting. Introduction Repetitive statements are statements that enable developers to execute one or more other statements multiple times. There are several different types of repetitive statements, including FOR statements, WHILE…DO statements, and REPEAT…UNTIL statements. This section describes these types of repetitive statements and the best circumstances for using them. It also provides a step-by-step guide for each code element to explain what happens at each point in an example. Finally, this section provides several exercises that enable you to write your own repetitive statements, and use them for different types of sorting. Microsoft Official Training Materials for Microsoft Dynamics ™ Page 277 Your use of this content is subject to your current services agreement
  • 2. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 Repetitive Statements A repetitive statement is a statement that allows developers to execute one or more other statements multiple times. There are several kinds of repetitive statements. One of the differences between each type of repetitive statement is the number of times their statements are executed, and how that number is determined. A repetitive statement is often called a loop, because when the execution reaches the end of the repetitive statement, it loops back to the beginning. This section reviews three different types of repetitive statements: • FOR statements • WHILE…DO statements • REPEAT…UNTIL statements FOR Statements The FOR statement is used when a statement is to be executed a predetermined number of times. There are two FOR statements: • FOR…TO • FOR…DOWNTO FOR…TO Statements The most common FOR statement, FOR…TO, has this syntax: FOR <control variable> := <start value> TO <end value> DO <statement> The control variable must be a variable of type Boolean, Date, Time, or any numeric type. The start value and the end value must be either expressions that evaluate to the same data type as the control variable or be variables of that same data type. For example: FOR idx := 4 TO 8 DO Total := Total + 2.5; In this case, the control variable (idx), the start value (4) and the end value (8) are all integers. The following steps describe what happens: Page 278 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement
  • 3. Chapter 14: Repetitive Statements Step Code 1. The start value expression idx := 4 is evaluated and the control variable is set to the result. 2. The end value expression End value is 8 (after the TO) is evaluated. 3. The control variable is IF idx > 8, THEN compared to the end value. The FOR statement ends. If it is greater than the end value, the FOR statement is terminated. 4. The statement (after the Total := Total + 2.5 DO) is executed. 5. The control variable is idx := idx + 1 (5) incremented by one. 6. Go to step 3 and test the control variable again. The net result, for this example, is that the Total variable is increased by 2.5 a total of 5 times, therefore increasing it by 12.5. Note that both the start value and the end value are evaluated only one time, at the beginning of the FOR statement. Also note that the control variable's value is not changed in the FOR loop, as the results of doing so is not predictable. Also, the value of the control variable outside of the FOR loop (after it ends) is not defined. Using BEGIN and END If several statements need to be run inside the loop, then developers use a compound statement by adding BEGIN and END. Here is an example: FOR idx := 4 TO 8 DO BEGIN Total := Total + 2.5; GrandTotal := GrandTotal + Total; END; FOR…DOWNTO Statement The second FOR statement, the FOR.. DOWNTO statement, has this syntax: FOR <control variable> := <start value> DOWNTO <end value> DO <statement> Microsoft Official Training Materials for Microsoft Dynamics ™ Page 279 Your use of this content is subject to your current services agreement
  • 4. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 The rules for the control variable, start value and end value are the same as for the FOR…TO statement. The only difference between the two is that in the FOR… TO statement, the control variable increases in value until it is greater than the end value, whereas in the FOR.. DOWNTO statement, the control variable decreases in value until it is less than the end value. Here is an example and the explanation using an array and a compound statement: FOR idx := 9 DOWNTO 1 DO BEGIN TotalSales := TotalSales + Sales[idx]; NumberSales := NumberSales + 1; END; This process for executing this code is explained in the following steps. Step Code 1. The start value expression Idx := 9 is evaluated and the control variable is set to the result. 2. The end value expression End value is 1 (after the TO) is evaluated. 3. The control variable is IF idx < 1, THEN compared to the end value. The FOR statement ends. If it is less than the end value, the FOR statement is terminated. 4. The statement (after the TotalSales := TotalSales + Sales[9]; DO) is executed. NumberSales := NumberSales + 1; 5. The control variable Idx := idx - 1 (8) decrements by one. 6. Go to step 3 and test the control variable again. Through each execution of the first statement in the compound statement, a different element of the Sales array is accessed − first 9 and then 8, and so on. The WHILE…DO Statement The WHILE loop is used when a statement is to be executed as long as some condition holds true. Here is the syntax of a WHILE statement: WHILE <Boolean expression> DO <statement> Page 280 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement
  • 5. Chapter 14: Repetitive Statements This is simpler than the FOR statement. As long as the Boolean expression evaluates to True, the statement, or statements if using BEGIN and END, are executed repeatedly. Once the Boolean expression evaluates to False, the statement is skipped and execution continues with the statement following it. Here is an example, showing the use of a compound statement: WHILE Sales[idx + 1] <> 0 DO BEGIN idx := idx + 1; TotalSales := TotalSales + Sales[idx]; END; Here is the explanation of this code: Step Code 1. The Boolean expression is Is Sales[idx + 1] <> 0? evaluated. If it is true, continue with step 2. If not, the WHILE statement is terminated. 2. The statement (after the idx := idx + 1; DO) is executed. TotalSales := TotalSales + Sales[idx]; 3. Go to step 1 and test the Boolean expression again. Note that the Boolean expression is tested before the statement is even executed one time. If it evaluates to False from the beginning, the statement is never executed. Also, note that the Sales[idx] that is added to Total Sales in the WHILE loop is the same value that was tested in the Sales[idx + 1] at the beginning of the WHILE loop. The intervening idx := idx + 1 statement is what causes this. In addition, once the WHILE loop has ended, idx still refers to the last non-zero element in the Sales array. The REPEAT…UNTIL Statement The REPEAT statement is used when one or more statements are to be executed until some condition becomes true. Here is the syntax of the REPEAT statement: REPEAT <statement> { ; <statement> } UNTIL <Boolean expression> Microsoft Official Training Materials for Microsoft Dynamics ™ Page 281 Your use of this content is subject to your current services agreement
  • 6. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 There are several differences between the REPEAT and WHILE statements: • First, there can be more than one statement between the REPEAT and the UNTIL, even if no BEGIN and END is used. • Secondly, the Boolean expression is not evaluated until the end, after the statements have already been executed once. • Third, when the Boolean expression is evaluated, it loops back to the beginning if the expression evaluates to False and terminates the loop if the expression evaluates to True. Here is an example, which is almost identical to the example used for the WHILE statement: REPEAT idx := idx + 1; TotalSales := TotalSales + Sales[idx]; UNTIL Sales[idx] = 0; The following table offers an explanation. Step Code 1. The statements (between idx := idx + 1; the REPEAT and the TotalSales := TotalSales + Sales[idx]; UNTIL) are executed. 2. The Boolean expression is Is Sales[idx] = 0? evaluated. If it is true, the REPEAT statement is terminated. If not, go back to step 1. Note that since the Boolean expression is not evaluated until the end, the statements incrementing the index and adding the TotalSales are executed even though the value of those Sales might be zero. Therefore, at the end of this loop, idx refers to the first Sales which equals zero, rather than the last non-zero Sales as in the WHILE loop. Also note that the Boolean expression had to be rewritten, since you are now testing for a False condition to continue the loop, rather than a True expression as in the WHILE loop. Page 282 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement
  • 7. Chapter 14: Repetitive Statements Lab 14.1 − Code with Repetitive Statements In the previous section on arrays, the test form was left so that the first 10 items you added to the list were listed, but from then on, nothing showed in the list. You now change this so that the last ten items you added to the list always show. Steps: Add a FOR Loop The steps are as follows. 1. Design form 123456756. 2. Click VIEW→C/AL GLOBALS and add a variable named idx of type integer to the current variable list. 3. Select the Execute button and open the C/AL Editor to access the OnPush trigger code. 4. Find the code following the comment that says "Display results in Amount column on form." Modify it so that it looks like this: Counter := Counter + 1; IF Counter > ARRAYLEN(Amount) THEN BEGIN Counter := ARRAYLEN(Amount); FOR idx := 2 TO Counter DO Amount[idx-1] := Amount[idx]; END; Amount[Counter] := Result; Note that once Counter becomes greater than the length of the Amount array, you set it back to be equal to that length. 5. Then, move each of the elements in the Amount array up by one index, using a FOR statement. Element 2 is moved to element 1, then element 3 is moved to element 2, and so on. Finally, element 10 is moved to element 9 and then the FOR loop ends. The new result is then moved into the last element in the array. 6. Close, compile, save, and then run the form. 7. Enter some values, click the Execute button, and watch what happens. Until the list is filled, nothing changes, but watch what happens when you have pressed the Execute button more than ten times. Microsoft Official Training Materials for Microsoft Dynamics ™ Page 283 Your use of this content is subject to your current services agreement
  • 8. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 Steps: Sorting − Phase I The sorting steps are as follows. 1. Design the form and add a new Command button with its Caption property set to Sort. 2. Select the Sort button and press F9 to open the C/AL Editor. In the OnPush trigger, add the following code: FOR idx := ARRAYLEN(Amount) DOWNTO 2 DO IF Amount[idx] < Amount[idx-1] THEN BEGIN TempAmount := Amount[idx]; Amount[idx] := Amount[idx-1]; Amount[idx-1] := TempAmount; END; 3. For this code to compile, you also need to add a variable called TempAmount of type Decimal. 4. Close, save, compile, and then run the form. 5. Fill in some values and click the Execute button, entering differing quantities each time until the column is full. 6. Click the Sort button. What happens? 7. Click the Sort button again. What happened this time? 8. Continue clicking the Sort button until nothing further happens. Note that at this point all entries are sorted. Now, examine the previous code and answer the following questions. Execute the code manually if necessary. o Why in the FOR statement do we only go down to 2 rather than all the way to 1? o Why do we not need a BEGIN after the DO in the FOR statement? o What is taking place in the three lines of the compound statement (between BEGIN and END)? Page 284 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement
  • 9. Chapter 14: Repetitive Statements o Why is TempAmount used for this? o If the entries in the column had been made exactly in the wrong order (highest to lowest), how many times does the Sort button have to be clicked to sort the list? Steps: Sorting − Phase II Obviously, it is better if the user just clicks the Sort button once and has the list completely sorted. Note, however, that sometimes one click of the button may work, while other times more are needed. A FOR loop is inappropriate for this, because you do not know in advance how many times it takes. For this situation, a REPEAT loop works best. 1. Add a new variable called IsSorted of type Boolean. 2. Modify the Sort button's OnPush code as follows: REPEAT IsSorted := TRUE; FOR idx := ARRAYLEN(Amount) DOWNTO 2 DO IF Amount[idx] < Amount[idx-1] THEN BEGIN TempAmount := Amount[idx]; Amount[idx] := Amount[idx-1]; Amount[idx-1] := TempAmount; IsSorted := FALSE; END; UNTIL IsSorted; Note that the IsSorted variable is used as a signal to tell whether you are finished sorting. 3. Set the IsSorted variable to TRUE at the beginning of each REPEAT loop, and if you ever have to swap two elements because the list is not in order, set it to FALSE. 4. At the end of the REPEAT loop, check to see if it is TRUE. If it is, all of the elements are in order, since none needed to be swapped and therefore you can exit the loop. If not, the loop is repeated again. When using a Boolean variable as a signal in this way, programmers sometimes call it a flag. Also, note that you cannot tell whether the list is sorted unless it is actually run through at least one time. That is why REPEAT is used here, rather than a WHILE loop. Microsoft Official Training Materials for Microsoft Dynamics ™ Page 285 Your use of this content is subject to your current services agreement
  • 10. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 5. Close, save, compile, and run the form. 6. Perform the same experiment as before, filling in the table with values and then clicking the Sort button. Note that the list is completely sorted with one click. o Look at the IF statement again. You used the less than (<) operator to compare the elements. What happens if you changed this to the greater than (>) operator? o Test the case where two elements happen to have the same value. Once you find out, change it back to the less than operator for the next exercise. Steps: Sorting − Phase III You now have a perfectly good sorting routine, which works well for small arrays. But notice that you wrote it so that it can take arrays of any size. In cases where you have 100 elements, 1,000 elements, or 10,000 elements, you need a really efficient sorting routine. You created "nested" loops when you put one loop (the FOR loop) inside another loop (the REPEAT loop). Whenever there are nested loops, there is always a potential for inefficiency, especially as the number of elements increase. The question becomes how many times will the innermost loop be executed For example, in the case in the Sorting – Phase II section, whenever the FOR loop is executed once, the IF statement is executed 9 times, because the length of the array is 10, but you are not going all the way to 1. If the REPEAT loop has to be executed 9 times, the FOR loop will be executed nine times and the IF statement will be executed 9 * 9 = 81 times. However, if the array length goes up to 100, the IF statement will be executed 99 times per FOR statement and the FOR statement may be executed by the REPEAT loop up to 99 times. In this situation, the IF statement might be executed up to 99 * 99 = 9,801 times. You can reduce this substantially, by remembering what happened when the FOR loop was written by itself. Every time it ran, the lowest element rose to the top. That means that the first element never needs to be tested again, once the first FOR loop was run. Once the second FOR loop was run, you never need to test the first two elements again. Each loop needs fewer and fewer tests to do its job. And this is the worst case. Sometimes, when the Sort button was clicked, the first three elements became sorted and you never needed to test any of the first three again. Here is how you can take advantage of this. 1. First, create an integer variable called LowestSwitch. 2. Rewrite the sorting routine so it looks like this: Page 286 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement
  • 11. Chapter 14: Repetitive Statements LowestSwitch := 2; REPEAT IsSorted := TRUE; FOR idx := ARRAYLEN(Amount) DOWNTO LowestSwitch DO IF Amount[idx] < Amount[idx-1] THEN BEGIN TempAmount := Amount[idx]; Amount[idx] := Amount[idx-1]; Amount[idx-1] := TempAmount; IsSorted := FALSE; LowestSwitch := idx + 1; END; UNTIL IsSorted; Instead of sorting down to 2 (comparing with 1) every time, now the FOR loops says to sort down to LowestSwitch (comparing with LowestSwitch - 1). LowestSwitch starts out as 2, but each time two values are switched (in the THEN clause of the IF statement), it is reset to one more than the element currently being switched. Since the FOR loop works down, at the end, LowestSwitch is the lowest element to test next time around. Even in the worst case, it is one higher than the previous value and it might be several higher. Each one higher is one less to test and the savings are compounded as you go through the sort. For example, if the array has ten elements, then in the worst case, you will execute the innermost IF statement 9 * 9 = 81 times. In the worst case, you will execute the innermost IF statement 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 times = 45 times. If the array has 100 elements, the worst case goes from 9,801 executions down to 4,950. In other words, this simple modification makes the sort go twice as fast and therefore takes half as long to execute. Microsoft Official Training Materials for Microsoft Dynamics ™ Page 287 Your use of this content is subject to your current services agreement
  • 12. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 Conclusion This section has described repetitive statements, which are statements that enable developers to execute one or more other statements multiple times. Several types of repetitive statements, including FOR statements, WHILE…DO statements, and REPEAT…UNTIL statements have been described and examples of each have been provided. You have written your own FOR loops, and then you have sorted your amounts in three ways, FOR and REPEAT statements. The next section describes WITH and CASE statements. Page 288 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement
  • 13. Chapter 14: Repetitive Statements Test Your Knowledge 1. Which repetitive statement do you use if you can determine, before you started, how many times your statements have to be executed? 2. Which repetitive statement does not require a BEGIN and END to execute more than one statement repetitively? 3. Which repetitive statements test the condition at the beginning of each loop? 4. Rewrite the following WHILE statement as a REPEAT statement. Describe the differences in how it is executed. WHILE X > 0 DO BEGIN Y := A * X * X + B * X + C; X := X - 1; END; Microsoft Official Training Materials for Microsoft Dynamics ™ Page 289 Your use of this content is subject to your current services agreement
  • 14. C/SIDE Introduction in Microsoft Dynamics NAV 5.0 Quick Interaction: Lessons Learned Take a moment to write down three key points you have learned from this chapter: 1. 2. 3. Page 290 Microsoft Official Training Materials for Microsoft Dynamics ™ Your use of this content is subject to your current services agreement