[ Foro de Pascal ]

Problema con un programa de decodificación de nºs

25-May-2010 18:26
Álvaro Cáceres Muñoz
1 Respuestas

Buenas tardes.

Llevo unos 2 meses intentando crear un programa que te lea unos nºs y los identifique con letras (como un traductor).
La sintáxis se encuentra en el archivo que les he enviado, pero más o menos es la siguiente:

_Tenemos una variable que es number, el nº. Lo he asignado a integer.
_Empieza el programa.
_Te muestra unas opciones: Escribir directamente (no sé cómo meter un CLRSCR dentro de otro CLRSCR, si no pondría que la opción 1 es "meterse en el menú de decodificación, en el cual, al escribir el nº, aparece la letra), 3. Ayuda (es que 2 es una de las letras), 4. Salir (tampoco conozco una orden para finalizar el programa, pero, al escribir el 4, y teclear enter 1 ó 2 veces, se cierra la aplicación);
_Lee number;
_En el caso de que number sea:
 -el numero que sea: Empiece;
                       Escriba la letra;
                       Acabe;
 -el numero 3: Empiece;
                 Escriba ('Esto es la ayuda de...');
                 Acabe;
 -un nº diferente (else): Escriba ('No es válido. Sayonara, baby.');
                          Acabe;
_Lee;
_Acaba.

Lo que pregunto es:
1. ¿Cómo hago para meter un CLRSCR dentro de otro?
2. ¿Cómo hago para que me repita el proceso de traducción indefinidamente (porque cuando tecleas el nº, te lo traduce e intentas teclear algo más, y ENTER, acaba el programa)?
3. ¿Qué orden debo utilizar para acabar el programa?
4. ¿Sería posible teclear distintos nºs en una misma línea, que te los leyera todos al pulsar ENTER, y que te mostrara el texto traducido?

Gracias por su ayuda,

Álvaro Cáceres
 


26-May-2010 09:44
Antonio P.G.

Hola Álvaro.

Respecto a las preguntas:

1. "ClrScr" es una instrucción (en realidad, un procedimiento de la unidad crt) que lo que hace es limpiar la ventana en la que uno se encuentre. En el caso de este programa, limpia la pantalla entera al comienzo del programa. No se puede "meter uno dentro de otro". Lo que sí se puede hacer es ejecutarlo varias veces a lo largo del programa, algo así como "borra la pantalla, por fa". Además, a parte de borrar la pantalla (o ventana actual), establece el cursor en la primera posición.

2. Todo (o prácticamente todo) lenguaje tiene bucles. En el curso hay un capítulo (en concreto el tema 6) que trata acerca de esto. La pregunta a la hora de plantearse qué bucle va uno a usar es: ¿va a hacer recorrido completo´, es decir, a ejecutarse un número determinado de veces? Si es así, si conocemos ese número de veces a priori, usaremos un "for". ¿No es así? Entonces, ¿va a ejecutarse obligatoriamente al menos una vez? Si es así, usaremos un bucle "repeat", sino, un "while".

3. El programa termina con el "end.". Si con esa pregunta se refiere a que acabe tras introducir el "4", entonces estaría bien meter una condición de la siguiente forma:

"
...
si el número es distinto de 4 entonces
__leer línea;
end."

Así, cuando se introduzca un 4, no se ejecutará "readln".

4. Si que es posible, pero para ello, hay que conocer el funcionamiento de los arrays. No es muy complicado.

Por último, respecto al programa, decir que para que no suceda esa "excepción" con el número 2, se podría leer una letra al principio como primera opción ("A","B",...), y luego, cuando estemos en la opción de traducir, se podría leer el número.

Espero haber sido de ayuda. Cualquier duda, estaré por aquí.

¡Ciao!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)