CS 0007 Chapters 1-5 Quiz Name: _________________________


10/11/99


Part 1: Program Segment Questions

For this section, you will be asked to write program segments. Do not write an entire program. Try to write as legibly as possible. Be careful with spacing an indenting. The two segments are worth 25 points each.

  1. Write a function that takes an integer as a parameter (passed by value) and returns true if the number is prime and false otherwise.

Hints:

  1. Use a for loop and the mod operator.
  2. Return true right off the bat if the number is 1 or 2.
  3. Initialize the return value to something. In your loop, set it to something else if you are able to determine that the initial value is wrong during one of the loop iterations.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Write a procedure that takes an integer as a parameter (passed by value) and returns another integer through the second parameter (pass by variable). The first parameter will specify how many integers to gather from the user. The second parameter will be used to pass back the sum. For example, if you call the procedure and send it 4 through the first parameter, the procedure will do something like this:

Enter an integer: 2

Enter an integer: 4

Enter an integer: 10

Enter an integer: 1

…and return 17 through the second parameter.


Part 2: Scope

Local variables are variables declared within a scope. Global variables are variables declared outside a scope. Parameters in functions and procedures act as local variables with respect to scope. Use the following program to answer the questions in this part. Each of the questions is worth 5 points.

program scope (intput,output);

var

a,d: integer;

function addemup (x,y:integer):integer;

var

stop:boolean;

selection:char;

z:integer;

begin {addemup}

code

end; {addemup}

procedure menu;

var

choice:char;

procedure getinput (var option:char);

var b,c:integer;

begin {getinput}

code

end; {getinput}

begin {menu}

code

end; {menu}

begin {scope}

code

end. {scope}

 

 

  1. List all the variables and the functions/procedures that the main program has access to.
  2.  

  3. List the local variables that addemup has access to.
  4.  

  5. List the global variables that addemup has access to.
  6.  

  7. List all the variables and the functions/procedures that menu has access to.
  8.  

  9. List all the variables and the functions/procedures that getinput has access to.

Part 3: Parameters

Determine the output of the following program (15 points):

program blah (input,output);

var

x,y,z:integer;

procedure Silly (var x,y:integer);

var

z:integer;

begin {Silly}

z:=x;

x:=y;

y:=z;

writeln (x,y,z);

end; {Silly}

begin {blah}

x:=1; y:=3; z:=2;

writeln (x,y,z);

Silly (x,z);

writeln (y,z,x);

end. {blah}


Part 4: Debugging

Determine if there are any bugs in the following program. If there is, circle the word/symbol/statement/construct that is in error and label it with a number. Then at the bottom of this page, show your labels and write the corresponding reason for the statement being in error. This question is worth 10 points.

program myproggie (input,output);

var

x,y,sum,z:real;

a,b,c:integer;

function add(num1,num2:real):integer;

begin {add}

add:=num1+num2;

end; {add}

begin {myproggie}

write (‘Enter a real number: ‘);

readln (x);

write (‘Enter another real number: ‘);

readln (y);

sum:=add(x,y);

write (‘Enter two integers: ‘);

readln (a,b);

c:=a+b/2;

writeln (‘The average is ‘c);

if 12 > a+b then do

writeln (‘Foo’);

else

z:=12;

end; {myproggie}