Respuesta: Programa para free pascal 3. La tarea: Lectura de texto con teclado telefónico.
Figura 1. Configuración estándar
En esta tarea se pide implementar un programa de lectura de texto escrito con el teclado del teléfono. Este teclado está típicamente formado por los dígitos del 0 al 9 y las teclas * y # . La dificultad principal reside en que la cantidad de teclas es significativamente menor que las necesarias para representar las letras y los caracteres de puntuación; por lo tanto se debe ofrecer un método para que el usuario pueda ingresar texto completo a partir de las teclas disponibles.
En esta tarea vamos a trabajar con la configuración estándar que asocia un conjunto de caracteres a cada letra como ilustra la figura:
Se implementará el método para el ingreso de texto conocido como “Multi-tap” donde cada símbolo se obtiene pulsando repetidas veces una tecla.
4. El método multi-tap
En este método cada tecla del 0 al 9 tiene asociado una secuencia de caracteres. En general se parte de una configuración estándar que es la siguiente:
Tecla Caracteres
0 0
1 . , ? 1
2 a b c 2
3 d e f 3
4 g h i 4
5 j k l 5
6 m n o 6
7 p q r s 7
8 t u v 8
9 w x y z 9
# espacio
* minúscula/mayúscula
4.1 Ingreso de letras, números, espacios y símbolos
El método multi-tap puede resumirse en la siguiente regla:
Regla Multi-tap: Si c1,c2,…,cn es la secuencia de caracteres asociada con la tecla D, entonces para escribir el carácter ck hay que pulsar k veces la tecla D.
Las secuencias de caracteres se recorren circularmente. Esto significa que si la tecla D se pulsa (n+1) veces se obtiene el carácter c1 y así sucesivamente.
Por ejemplo, para escribir el texto:
hola10
se puede digitar lo siguiente:
44666555211110L
4.2 Pausa entre caracteres
El símbolo P (pausa) representa una separación entre dos repeticiones de la misma tecla con el fin de que no se interprete como una única repetición. Por ejemplo, para escribir el texto:
casa
se puede digitar lo siguiente:
222P277772L
Para las teclas # y 0 no es necesario introducir P entre dos apariciones consecutivas de estas teclas, ya que estas teclas tienen 1 símbolo asociado cada una. Por ejemplo para escribir el siguiente texto (un 0, seguidos de dos espacios, seguidos de tres 0):
0 000
se puede digitar lo siguiente:
0##000L
4.3 Cambiar entre mayúscula y minúscula
El programa comienza por defecto a escribir en minúscula. Para cambiar el modo (mayúscula/minúscula) se utiliza el símbolo * (asterisco), luego de ingresar un * el texto siguiente cambiará a mayúscula o minúscula según el modo anterior. En el texto pueden existir símbolos consecutivos de asterisco. Por ejemplo, para escribir el texto:
hOlA
se puede digitar lo siguiente:
44*666*555*2L
5. La entrada y salida del programa
El programa toma como entrada cada línea de texto y despliega el texto asociado debajo de ella.
Todas las líneas terminan con el caracter: L, excepto la última que solo contiene el símbolo: S indicando el fin del programa (o Salir del programa).
Luego de cada fin de línea L hay un retorno de carro (enter).
Ejemplo de Sesión
446665552L
hola
*222P277772L
CASA
6*33#555P55526P666#*7*33P37776661L
Me llamo Pedro.
*23###444###66677771L
AD I OS.
S
6. Se pide
Escribir un programa Pascal que se comporte de acuerdo a esta especificación.
Se debe utilizar el lenguaje Pascal tal como fue dado en el curso (ver FreePascal Y Pascal Estándar)
El programa entregado debe seguir el comportamiento que se presenta en esta letra. El formato de la entrada y la salida debe ser EXACTAMENTE IGUAL. De lo contrario la corrección automática de la tarea fallará.
Por ejemplo, se considera que una solución es incorrecta si se imprimen mensajes del tipo:
Bienvenido al programa para escribir en multi-tap”,
Por favor ingrese los parámetros iniciales: ,
“Chau.”
o cualquier variante que no respete lo que se establece en la letra.
Tampoco debe ponerse un read o readln al final para pausar el programa.
Se puede utilizar los siguientes conceptos visto en las clases teóricas y prácticas:
Tipos de datos:
Integer
Boolean
Char
Instrucciones:
Asignación
Entrada y Salida(read, write, WriteLn, ReadLn)
Secuencia
Selección (if, case)
Repetición (for, while, repeat)
En esta parte ‘’‘NO SE PUEDE”“ utilizar arreglos, subprogramas (procedimientos y funciones)
Para la corrección las tareas se compilarán con la versión 2.2.2 para Windows. La compilación y la ejecución se realizarán en línea de comandos. El comando de compilación se invocará de la siguiente manera:
fpc -Co -Cr -Mtp -gl programa.pas
Asegúrese de que el programa compila y funciona correctamente en las máquinas de facultad antes de entregar.
No está permitido utilizar facilidades de Free Pascal que no forman parte del estándar y no se dan en el curso. Así por ejemplo, no se puede utilizar ninguna de las palabras siguientes: uses, crlscr, gotoxy, crt, readkey, longint, string, break, etcétera.
En esta tarea como en todos los problemas de este curso, se valorará, además de la lógica correcta, la utilización de un buen estilo de programación de acuerdo a los criterios impartidos en el curso. De esta manera, se hará énfasis en buenas prácticas de programación que lleven a un código legible, bien documentado y mantenible, tales como:
indentación adecuada
utilización correcta y apropiada de las estructuras de control
código claro y legible
algoritmos razonablemente eficientes
utilización de comentarios que documenten y complementen el código
utilización de constantes simbólicas
nombres mnemotécnicos para variables, constantes, etcétera. |