Computing Test

Example Test Paper

Answer all four questions, and hand the sheets in at the end of the
test.
Your name in CAPITALS_________________________________________
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')
   5  read (*,10,END=30,err=20) temp
  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