next up previous
Next: About this document

Midterm #2 A22.0002 Afternoon session
April 24, 1995 Samuel Marateck
Do any 5 problems and do all the work on the exam sheet

Your Name

1. (20 points points) What does the following program produce as output?

PROGRAM one(input, output);
CONST Blank = ' ';
VAR J, K:integer;
BEGIN
     FOR j:= 1 TO 5 DO
     BEGIN 
         write('*':j); 
         FOR k:= 1 to (6 - j) DO
         BEGIN
            write(blank)
         END;
         writeln('*'
      END
END.

2. (20 points) Write a program that reads a number N (an integer) from the keyboard and:

(a) Prints all the numbers less than or equal to N that are prime numbers. A prime number is one that is divisible only by 1 and the number itself. When a number is divisible by another number there is no remainder. For example, 7 is a prime number because it is not divisible by 2, 3, 4, 5, 6.

Hint: Test whether the values of the loop control variable, J are divisors of N. Here are some questions that should help you do the problem:

Is N read before or in the loop?

If j is the loop control variable, what is its upper limit?

What is the test determining whether j is a divisor of N?

3. (20 points) What does the following program produce?

PROGRAM two(input, output);
VAR J:integer;
    letter:char;

PROCEDURE plot(J:integer);
VAR I:integer;
BEGIN
     FOR I:= 1 TO J DO
            write('*':i);
         writeln
END {plot};

BEGIN
    FOR letter:= 'a' TO 'e' DO
    BEGIN
        J:= ord(letter) - ord('a');
        plot(j)
    END  
END.

4. (20 points) Evaluate the following (you may use the table on the board):

(a) (3 <= 7) AND NOT (9 = 8)	    (b) NOT (4 >= 5) OR (3 <= 3)

(c) NOT ((5 <= 9) OR  (3 < 2))	    (d) (6 <= 8) OR (3 > 5) OR (3 = 3)

5. (20 points) What does the following procedure produce for plot(1,'x')?

     Procedure plot ( top : Integer; ch:char);
     Var j : Integer;
     Begin
               Case top Of
                    1 : For j := 1 To 5 Do 
                              Begin
                                   Writeln (ch:j, ch:(11 - (2 * j)))
                              End;
                    2 : For j := 5 DownTo 1 Do 
                              Begin
                                   Writeln (ch:j, ch:(11 - (2 * j)))
                              End
               End
     End;

6. (20 points) Write a procedure called MakeX that produces the block letter X by using procedure plot shown in problem 5. The block letter should be formed from asterisks (*).





Sam Marateck
Tue Nov 19 20:15:29 EST 1996