Programeer opdrachtenOpdracht : opdr2_pascal.txt

Terug naar de inzendingen
Opdracht 2, Pascal Schiks
19 Jan 2005
 Bah bah bah.....
 Ik heb het eens in FORTRAN gedaan, die taal heb ik al een hele tijd niet meer
 onderhanden gehad.
 Wat een elende zeg, zo primitief, echt waardeloos
 Nu ja... ik heb het overleeft
 
 Compileren met : [B]f77 hotel.for -o hotel[/B]
 
 1 
*****hotel.for*****
  
 2C Title    : hotel.for
 3C Function : Control hotelroom lighting, according Opdracht 2 van Pascal
 4C Author   : Pascal Schiks (C) 2005 GTNU/GPL
 5C
 6C     Main program calling control logic in an endless loop
 7C
 8      PROGRAM HOTEL
 9      IMPLICIT NONE
 10      INTEGER SWLOGIC
 11      INTEGER SWITCH
 12      INTEGER LIGHTS
 13C
 14      PRINT *,'Pascal\'s FORTRAN versie van opdracht 2'
 15C
 16      DO WHILE (.TRUE.)
 17        PRINT *,"Enter switch value 1,2,3,4 of 8"
 18        READ *,SWITCH
 19        LIGHTS=SWLOGIC(SWITCH)
 20        IF(LIGHTS.EQ.0) PRINT *,"Beide lampen UIT"
 21        IF(LIGHTS.EQ.1) PRINT *,"Plafonlamp AAN"
 22        IF(LIGHTS.EQ.2) PRINT *,"Schemerlamp AAN"
 23        IF(LIGHTS.EQ.3) PRINT *,"Beide lampen AAN"
 24      ENDDO
 25C
 26      STOP
 27      END
 28C
 29C This function controls the logic.
 30C The parameter represents the switch status
 31C Return value represents Light status
 32C I'm not familiar to FORTAN OOP if that is posible annyhow
 33C With OOP, this would be an object for each hotelroom
 34C
 35      INTEGER FUNCTION SWLOGIC(SWITCHES)
 36      IMPLICIT NONE
 37      INTEGER SWITCHES
 38      LOGICAL SW0,SW1,SW2,SW3
 39      LOGICAL L1,L2
 40      SAVE L1,L2
 41C
 42C No switch pushed or invalid value is passed, so no action is required
 43C
 44        IF((SWITCHES .NE. 0).OR.(SWITCHES.LT.0).OR.(SWITCHES.GT.8)) THEN
 45C
 46C To ease boolean logic get status of each seperate switch
 47C
 48          SW1=IAND(SWITCHES,1).EQ.1 ! Main lamp switch at bed
 49          SW2=IAND(SWITCHES,2).EQ.2 ! small lamp switch at bed
 50          SW3=IAND(SWITCHES,4).EQ.4 ! Main hotelroom switch
 51          SW0=IAND(SWITCHES,8).EQ.8 ! Light off switch at the Lobby 
 52C
 53C Main OFF switch at hotellobby pushed
 54C
 55          IF(SW0) THEN
 56            L1=.FALSE.
 57            L2=.FALSE.
 58          ELSE
 59C
 60C Switches at bed
 61C
 62            IF(SW1) L1=.NOT.L1
 63            IF(SW2) L2=.NOT.L2
 64C
 65C Main hotelroom switch
 66C
 67            IF(SW3) THEN
 68              IF(.NOT.L1) THEN
 69                L1=.TRUE.
 70                L2=.TRUE.
 71              ELSE 
 72                L1=.FALSE.
 73                L2=.FALSE.
 74              ENDIF
 75            ENDIF ! SW3
 76          ENDIF
 77C
 78        ENDIF ! any switch pushed
 79C
 80C Return lamp status
 81C
 82        SWLOGIC=0
 83        IF(L1) SWLOGIC=SWLOGIC+1
 84        IF(L2) SWLOGIC=SWLOGIC+2
 85      RETURN
 86      END
 87C
 88C Program end
 89C