Grading Guide for Assignment 4. Due 8 October 1998
1. (a) i= 1; s= 1;                                 
   (b) i= 0; s= 0;                                    ID   _______________________      
   (c) i= 1; s= 1;                                  
   (d) i= -1; s= 0;                                   Sect. Instr. _______________
   (e) i= x.length(); s= 0;
                                                      Sect. Time   _______________
2. (a) i= i+1; s= s+i;                                 
   (b) i= i+1; s= s+i;                                Sect. room   _______________
   (c) i= i+1; s= i*i;                                
   (d) i= i+1; if (x.charAt(i) == '_') s= s+1;        Q1 (max: 5)    _____________
   (e) i= i-1; if (x.charAt(i) == '_') s= s+1;        
                                                      Q2 (max: 5)    _____________ 
3. (a) i == 100
   (b) i == 200                                       Q3 (max: 5)    _____________
   (c) i == 25
   (d) i == x.length()-1                              Q4 (max: 4)    _____________
   (e) i == 0
                                                      Q5 (max: 4)    _____________
4. i= 0; x= 5;                                        
   // Invariant: i rectangles have been drawn,        Q6 (max: 4)    _____________
   //  and next one to draw goes at pos. (x,x).       
   while (i< 10) {                                    Q7 (max: 0)       ungraded
       g.drawRect(x,x,50,50);
       i= i+1; x= x+3; }                              Q8 (max: 4)    _____________
                                              
5. int r= 5;                                          Q9 (max: 4)    _____________
   // Invariant: Next circle to draw has radius r,    
   //  and those with smaller radii have been drawn   Total (35)     _____________
   while (r <= 40) {                                     
       g.drawOval(75-r,100-r,2*r, 2*r);               
       r= r+5;}                                                                        
                                                      
6. i= 0;                                             Notes:  
   // Invariant: First i circles have been drawn,     On question 1,2, and 3:
   //  and next one to draw has center (20,5+10*i).   1 point for each part.   
   while (i != 10) {
       g.drawOval(5+10*i-5,20-5,2*5,2*5);             On questions 4, 5, 6, 8, and 9:
       i= i+1; }                                      1 point for the initialization
                                                         truthifying the invariant.
7. k= 0; x= 100; y= 100;                              1 point for the condition.
   // Invariant: k lines have been drawn. Next        1 point for the body making
   // line to draw begins at position (x,y)              progress toward termination.
   while (k != 54) {                                 1 point for the body maintaining
       k= k+1; int x1= x; int y1= y;                     the invariant.
       if (k % 4 == 1) x1= x1+2*k;
       if (k % 4 == 2) y1= y1+2*k;
       if (k % 4 == 3) x1= x1-2*k;
       if (k % 4 == 0) y1= y1-2*k;
       g.drawLine(x,y,x1,y1);
       x= x1; y= y1;
                                               9. char cu= 'A'; char cl= 'a';
8. char c= 'A';                                  // Inv: cl contains a lower-case char. or
   // invariant: All the upper-case chars        //  '{' and cu contains the corresponding
   //  that precede c have been printed,         //  upper-case char. The part of output 
   //  and c is the next one to print.           //  that precedes cl has been printed.
   while (c<='Z') {                             while (cl<='z') {
       System.out.print(c);                         System.out.print(cl); cl++;
       c++; }                                       System.out.print(cu); cu++; }