Información y enlaces
Participa comentando, viendo lo que otros tienen que decir, o enlazandolo desde tu blog.
- Otros artículos
- Tree Nation en Agadez, Niger
- El valor de Xnoccio.com
Una de lenguajes clásicos: el COBOL
Últimamente se ha hablado en la empresa de lenguajes de programación clásicos con los que todos crecimos como el Basic o el Turbo Pascal (por los que cierto bastante afecto, todo sea dicho). De todos los clásicos uno de los más persistentes es el COBOL (y a la postre de los más feos), aún utilizado masivamente en grandes empresas que se sienten incapaces de migrar sus mastodónticos sistemas a otros lenguajes, o simplemente obtienen la fiabilidad deseada.
No pretendo dar un curso de COBOL, pero para los más pirados aquí dejo el código del juego del ahorcado que he hecho en COBOL. Pruébalo, funciona:
* Juego del ahorcado.
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. AHORCADO.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000410 WORKING-STORAGE SECTION.
01 TEMP PIC 9 VALUE 0.
01 CONT PIC 99 VALUE 0.
01 CARACTER PIC X VALUE SPACE.
01 LIFE PIC 9 VALUE 4.
01 ENCONTRADO PIC 9 VALUE 0.
01 LONGITUD PIC 9 VALUE 0.
01 LONGITUD-INICIAL PIC 9 VALUE 0.
01 SCORE PIC 99 VALUE 0.
01 CADENA PIC X(9) VALUE SPACES.
* Copiaremos la cadena origen a una tabla de caracteres.
01 PALABRA.
02 ORIGEN OCCURS 9 TIMES PIC X.
* La palabra de salida.
01 RESULTADO.
02 DESTINO OCCURS 9 TIMES PIC X.
000500 PROCEDURE DIVISION.
000700 PROGRAM-BEGIN.
PERFORM INICIAR-JUEGO.
PERFORM LIMPIAR-PANTALLA.
PERFORM PRINCIPAL UNTIL (ENCONTRADO = 1) OR
(LIFE <= 0) OR (CARACTER = 'Q').
IF ENCONTRADO = 1
DISPLAY "Solucion: " PALABRA
DISPLAY "Has salvado el cuello" LINE 20 COL 30.
IF LIFE = 0
DISPLAY "Solucion: " PALABRA
DISPLAY "Tu cuerpo alimentara los buitres" LINE 20 COL 25
PERFORM DIBUJAR-PLATAFORMA
PERFORM DIBUJAR-PERSONAJE.
001000 PROGRAM-DONE.
001100 STOP RUN.
001100 INICIAR-JUEGO.
PERFORM LIMPIAR-PANTALLA.
DISPLAY "Introduzca palabra minuscula (max. 9 car.): ".
ACCEPT CADENA.
* Contar caracteres hasta primer espacio (sirve para medir
* la longitud de la palabra). Como esta variable irá decreciendo
* salvamos la longitud inicial.
INSPECT CADENA TALLYING LONGITUD FOR CHARACTERS BEFORE
INITIAL SPACE.
MOVE LONGITUD TO LONGITUD-INICIAL.
* Metemos la palabra en la matriz de caracteres e iniciamos
* el destino con *.
MOVE CADENA TO PALABRA.
PERFORM VARYING CONT FROM 1 BY 1 UNTIL CONT > LONGITUD
MOVE ‘*’ TO DESTINO(CONT)
END-PERFORM.
* Limpiamos pantalla y comienza el juego.
001100 LIMPIAR-PANTALLA.
* Limpiar pantalla
PERFORM 25 TIMES
DISPLAY ” ”
END-PERFORM.
001100 PRINCIPAL.
DISPLAY “Salir con ‘Q’ ” LINE 24 COL 1.
DISPLAY “Adivina la palabra: ” LINE 5 COL 30.
DISPLAY “SCORE: ” LINE 1 COL 10
DISPLAY SCORE LINE 1 COL 18
DISPLAY “VIDA: ” LINE 1 COL 60.
DISPLAY LIFE LINE 1 COL 67.
DISPLAY ” “.
PERFORM DIBUJAR-PLATAFORMA.
PERFORM DIBUJAR-PERSONAJE.
DISPLAY RESULTADO LINE 6 COL 30.
ACCEPT CARACTER LINE 7 COL 30.
PERFORM CONTAR-OCURRENCIAS.
* Cuando Longitud a decrecido a 0 es que se han encontrado
* todos los caracteres.
IF LONGITUD <= 0
MOVE 1 TO ENCONTRADO.
001100 CONTAR-OCURRENCIAS.
* ¿Existe la letra?
INSPECT CADENA TALLYING TEMP FOR ALL CARACTER.
IF TEMP > 0
* Si es así reemplazamos todas sus ocurrencias por ‘-’ para
* que no vuelva a aparecer y buscamos en la tabla sus posiciones.
INSPECT CADENA REPLACING ALL CARACTER BY ‘-’
PERFORM ACTUALIZAR-CADENA
ELSE
COMPUTE LIFE = LIFE - 1
END-IF.
MOVE 0 TO TEMP.
001100 ACTUALIZAR-CADENA.
PERFORM VARYING CONT FROM 1 BY 1 UNTIL
(CONT > LONGITUD-INICIAL)
IF ORIGEN(CONT) = CARACTER
MOVE ORIGEN(CONT) TO DESTINO(CONT)
COMPUTE LONGITUD = LONGITUD - 1
ADD 1 TO SCORE
END-IF
END-PERFORM.
001100 DIBUJAR-PLATAFORMA.
DISPLAY “|”|” LINE 12 COL 35.
DISPLAY “|” LINE 13 COL 35.
DISPLAY “|” LINE 14 COL 35.
DISPLAY “|” LINE 15 COL 35.
DISPLAY “|” LINE 16 COL 35.
DISPLAY “=====” LINE 17 COL 35.
DISPLAY “=====” LINE 18 COL 35.
001100 DIBUJAR-PERSONAJE.
IF LIFE < 4
DISPLAY "" LINE 13 COL 38.
IF LIFE < 3
DISPLAY "|" LINE 14 COL 38.
IF LIFE < 2
DISPLAY "/" LINE 14 COL 37
DISPLAY "\" LINE 14 COL 39.
IF LIFE < 1
DISPLAY "/" LINE 15 COL 37
DISPLAY "\" LINE 15 COL 39.
No me digaís que no es bonito…
Impresionado!!. Ahora también podrá utilizar COBOL la industria del videojuego.
Todos pensábamos que COBOL estaba muerto, ya sabemos como murió. Ahorcado!!