Foros del Web » Programación para mayores de 30 ;) » Programación General »

Programa para free pascal

Estas en el tema de Programa para free pascal en el foro de Programación General en Foros del Web. Hola! necesito ayuda con free pascal ya que tengo que hacer un programa que use el método multitap para teclado de teléfonos celulares, es decir ...
  #1 (permalink)  
Antiguo 28/08/2011, 16:26
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación Programa para free pascal

Hola! necesito ayuda con free pascal ya que tengo que hacer un programa que use el método multitap para teclado de teléfonos celulares, es decir si yo pongo 2 = a, 22=b, 222=c, 2222=2 y que al volver a poner 22222 me vuelva a la a. (que sea algo cíclico). La verdad que no tengo idea como poder hacerlo, si me conviene usar el comando repeat o el while para que se repita el procedimiento en caso de pasarme de 2222 por ejemplo.
La mínima ayuda me sirve! Al menos que declaración de variables me conviene y como usar repeat o de que otra forma sería más viable.
Y una última cosa! Me gustaría también como hacer para definir lo siguiente:
Si tengo que escribir "casa": (la cual tiene dos teclas seguidas que corresponden al número 2) tendré que poner: 222P277772L (siendo L el fin de línea) pero ¿cómo hago para definir esa P =pausa?
Cualquier ayuda me sirve gracias a todos la atención!
  #2 (permalink)  
Antiguo 29/08/2011, 08:10
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Programa para free pascal

Hola Valentina! me parece sencillo, solamente tendrías que definir un caracter o cadena (que no vas a usar en los mensajes) como Pausa. Luego, tu función de transformación deberá ser capaz de reconocer ese caracter o cadena en la conversión de la cadena que estás introduciendo. Por ejemplo, si decidieras usar el doble ##, tu cadena sera: 222##2777772L
  #3 (permalink)  
Antiguo 29/08/2011, 11:55
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
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.
  #4 (permalink)  
Antiguo 29/08/2011, 11:56
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Programa para free pascal

eso es lo que debo hace y no tengo una minima idea, es tan solo con los comandos especificados anteriormente, gracias por contestar JOSEMe se agredece.

Etiquetas: free, pascal, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:58.