Computing Test

# Example Test Paper

```Answer all four questions, and hand the sheets in at the end of the
test.
1. Circle any of the following which are NOT valid variable names in
Fortran 77 (12 marks)

IHATECOMPUTINGTESTS?  4DOWN   HORB.F  FiNaL  77SUN

2. Are the following  Fortran 77 statements valid? (circle YES
or NO. If no, why? (18 marks)

(a)  DIMENSION  IMK (-100),SIN(-10)	YES   NO
(b)  IF ((A EQ B) .AND. (C GE D)) THEN	YES   NO
(c)  C  =  A//(1.76)	YES   NO
(d)  C  = 1.76*E(J)	YES   NO
(e)  DIMENSION A(N),B(N),IMK(N)	YES   NO
(d)  COMMON /A,B,IMK(N), N	YES   NO
3. Write down below the value of i and j at the two points indicated
with Comment lines (C) (20 marks)
program test93
data a,b /-5.0, 4.0/
i = (a**2)/(sqrt(b))
if ((i.lt. 0) .or. (i.gt. 10)) then
j = sqrt(b)*a
elseif (i.eq.3 .or. i.eq.8) then
j = a*b
else
j = -1*j
endif
C Value of i and j at this point :
i = bloggs (j)
write (*,*) i,j,a,b
C Value of i and j actually printed above :
stop
end
function bloggs (j)
bloggs = j*3
return
end

3. You will get full marks for finding ten errors in the following program. For
each that you spot, mark it with a C if you think it will result in a
compilation error or L if you think it is an error in logic producing erroneous
execution or output or misleading information on the screen. Cosmetic
imperfections which result in neither of the above must NOT be flagged (50
marks).

C234567890123456789012345678901234567890123456789012345678901234567890<>
program howmany
C     Program to match up a single character entered from a keyboard

C     with a pre-defined string and print any matches to a file
C     and to the screen.
C     character/5 names(3)
character temp**1, string*80
data names  ('Bob ', 'JohnS', 'Linda', 'Salty'/
open (unit=7, file='namelost',status='unknown')
10  format (a)
if (temp(10:10) .eq. 'B') then
C The following will catch the first character ty\$ed from keyboard
string = temp(1:1) // ' Matches the name ' / names (1)
elseif (temp(1:1) .gt. 'J    ') then
string = temp(1:1) // ' Matches the name ' //  names(2)
else
string = temp(1:1) // ' Matches the name ' //  names(3)
print *, string
write (7,10)  string
goto 5
20   print *, ' Ctrl+W entered from keyboard.Data on file namelist'
call exit
30   print *, ' Error in data. Try again'
goto 5
end
```