Professional Documents
Culture Documents
ING301
Laboratorio # 2
EJERCICIO 1
DEFP ORI
;Las posiciones que inicialmente se conocen son:
DEFP A
;ORI, A, B y C.
DEFP B
DEFP C
DEFP AUP
DEFP BUP
DEFP CUP
GLOBAL DEST
;Estas variables globales servirn para almacenar
GLOBAL INI ;los valores que se ingresarn ms adelante para
;indicarle al programa qu hacer.
GLOBAL CONTA
GLOBAL CONTB
GLOBAL CONTC
DEFP VARA
DEFP VARB
DEFP VARC
PROGRAM E01
SET CONTA = 1
SET CONTB = 1
SET CONTC = 1
SETP VARA = A
SETP VARB = B
SETP VARC = C
SETP AUP = A
SETP BUP = B
SETP CUP = C
SHIFTC AUP BY Z 100
SHIFTC BUP BY Z 100
SHIFTC CUP BY Z 100
LABEL 1
MOVED ORI
IF CONTA > 0
PRINTLN "RECOGIENDO DE A"
MOVED AUP
MOVED VARA
;es A, entonces nos movemos a la posicin del cubo
CLOSE
;A y lo tomamos. Lo mismo se hace en las
MOVED AUP
;siguientes estructuras selectivas con B y C.
SHIFTC VARA BY Z -30
SET CONTA = CONTA - 1
GOTO 4
ENDIF
IF CONTA = 0
PRINTLN "NO HAY BLOQUE EN A"
GOTO 1
ENDIF
ENDIF
IF INI = 'B'
IF CONTB > 0
PRINTLN "RECOGIENDO DE B"
MOVED BUP
MOVED VARB
CLOSE
MOVED BUP
SHIFTC VARB BY Z -30
SET CONTB = CONTB - 1
GOTO 4
ENDIF
IF CONTB = 0
PRINTLN "NO HAY BLOQUE EN B"
GOTO 1
ENDIF
ENDIF
IF INI = 'C'
IF CONTC > 0
PRINTLN "RECOGIENDO DE C"
MOVED CUP
MOVED VARC
CLOSE
MOVED CUP
SHIFTC VARC BY Z -30
SET CONTC = CONTC - 1
GOTO 4
ENDIF
IF CONTC = 0
PRINTLN "NO HAY BLOQUE EN C"
GOTO 1
ENDIF
ENDIF
LABEL 4
IF DEST = 'A'
;Aqu analizamos la posicin final a la cual
SHIFTC VARA BY Z 30
MOVED AUP
;se llevar el cubo tomado previamente.
MOVED VARA
OPEN
SET CONTA = CONTA + 1
ENDIF
IF DEST = 'B'
SHIFTC VARB BY Z 30
MOVED BUP
MOVED VARB
OPEN
EJERCICIO 2
DEFP
DEFP
DEFP
DEFP
DEFP
DEFP
POS1
POS2
POS3
POS4
POS5
POS6
DEFP
DEFP
DEFP
DEFP
DEFP
POS7
POS8
POS9
POS10
POS11
PROGRAM E02
PRINTLN
PRINTLN
PRINTLN
PRINTLN
PRINTLN
"ACTIVE
"ACTIVE
"ACTIVE
"ACTIVE
"ACTIVE
<I1>
<I2>
<I3>
<I4>
<I5>
PARA
PARA
PARA
PARA
PARA
WAIT IN[3] = 1
SETP
SETP
SETP
SETP
SETP
SETP
SETP
SETP
SETP
SETP
POS2=POS1
POS3=POS1
POS4=POS1
POS5=POS1
POS6=POS1
POS7=POS1
POS8=POS1
POS9=POS1
POS10=POS1
POS11=POS1
SHIFTC POS2 BY X
SHIFTC POS3 BY X
SHIFTC POS3 BY Y
SHIFTC POS4 BY X
SHIFTC POS4 BY Y
SHIFTC POS5 BY X
SHIFTC POS5 BY Y
SHIFTC POS6 BY X
SHIFTC POS6 BY Y
SHIFTC POS7 BY X
SHIFTC POS7 BY Y
SHIFTC POS8 BY X
SHIFTC POS8 BY Y
SHIFTC POS9 BY X
SHIFTC POS9 BY Y
SHIFTC POS10 BY X
SHIFTC POS11 BY X
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
POS1
POS2
POS3
POS4
POS5
POS6
POS7
POS8
POS9
POS10
POS11
END
EJERCICIO 3
DEFP
DEFP
DEFP
DEFP
INI
POSA
POSB
POSC
GLOBAL CONTA
GLOBAL CONTB
GLOBAL CONTC
;contadores de cubos
PROGRAM E03
TRIGGER RUT BY IN 10 1
OPEN
DEFINE CONT
SET CONTA = 3 ;cantidad de cubos inicial
SET CONTB = 0
SET CONTC = 0
MOVED AUP
SHIFTC POSA BY Z -30
MOVED AUP
MOVED POSC
OPEN
SET CONTC = CONTC + 1
MOVED CUP
SHIFTC POSC BY Z 30
ENDFOR
;empieza la transferencia de los cubos hacia la columna B
FOR CONT = 1 TO 3
SHIFTC POSC BY Z -30
MOVED CUP
MOVED POSC
CLOSE
SET CONTC = CONTC - 1
MOVED CUP
MOVED BUP
MOVED POSB
OPEN
MOVED BUP
SET CONTB = CONTB + 1
SHIFTC POSB BY Z 30
ENDFOR
END