Práctica Nº 1

Anuncio
Seminario de Lenguajes – Opción Delphi – Curso 2011
SEMINARIO DE LENGUAJES - OPCION DELPHI
Práctica Nº 1
Ejercicio 1
Se busca implementar una aplicación con la interfaz
indicada en la Figura 1
El botón de la izquierda incrementa en 1 el valor de
temperatura de un dispositivo, mientras que el de la
derecha lo decrementa. La temperatura máxima
permitida es 45º mientras que la mínima es -9º. Cada
botón se deshabilita cuando se alcanza el límite
respectivo. Además, el panel cambia de color según la
temperatura actual. Para más detalles ejecute
Ejercicio1.exe.
Palabras claves: Color, Enabled, Form.BorderStyle,
IntToStr, StrToInt, MessageDlg.
Figura 1
Ejercicio 2
Desarrolle una aplicación que permita modificar
el tamaño de un label. El mismo se encuentra
ubicado dentro de un panel y puede ser
“estirado” una cierta cantidad de pasos. La
interfaz a utilizar es la indicada en la Figura 2.
Los botones inferiores permiten realizar el
estiramiento antes mencionado.
Si ejecuta Ejercicio2.Exe verá que el label
visualiza permanentemente su tamaño actual.
Además los botones se deshabilitan cuando el
label ya no puede estirarse en esa dirección.
Tenga en cuenta que esta condición puede
Figura 2
variar en caso de modificarse el tamaño del
formulario.
Dando doble click sobre el label se ubica automáticamente en el centro del formulario
volviendo a su tamaño inicial.
Palabras claves: Left, Top, Height, Width, Form.BorderIcons, try-except, OnExit.
Ejercicio 3
La criptografía es una técnica, basada en la aritmética, que altera la representación de un
lenguaje. Su aplicación en informática es la protección de la información. En el caso de un
texto, el proceso consiste en convertirlo en otro texto incomprensible a simple vista. A esta
modificación se la denomina cifrar. El resultado de esta modificación (el mensaje cifrado) se
llama texto cifrado, en contraste con el mensaje inicial, llamado texto simple o texto claro.
El cifrado se realiza a partir de una clave numérica que tanto el emisor como el receptor del
mensaje conocen. De esta forma, el mensaje puede ser descifrado al llegar a destino.
El procedimiento consiste en desplazar cada carácter del mensaje original una cantidad
constante de caracteres determinada por cada dígito de la clave numérica. Para ello se
requiere de una tabla de conversión, como la de la Figura 3, que a cada carácter del
mensaje le asocia un valor numérico.
1
Seminario de Lenguajes – Opción Delphi – Curso 2011
Figura 3
Por ejemplo si la clave es 3759 y el mensaje a cifrar es “DELPHI 2011”, el cifrado se realiza
de la siguiente manera:
I sp 2 0 1 1  Mensaje original
9 27 47 45 46 46  Código sin cifrar (mirar tabla)
 Clave, se repite las veces que sea
3 7 5 9 3 7 5 9 3 7 5
necesaria
7 12 17 25 11 16 32 2 48 53 51  Código cifrado
G L Q Y K P Ó B 3 8 6  Mensaje cifrado (mirar la tabla)
D E L P H
4 5 12 16 8
Para descifrar, el desplazamiento se realiza en sentido contrario.
a) Escriba una unidad que contenga las siguientes funciones:

function MensajeValido(mensaje:string):boolean;
Devuelve true o false según sea o no válido el mensaje pasado como parámetro. Para
ser considerado válido todos los caracteres que lo forman deben aparecer en la tabla de
la Figura 3.
Ejemplo : MensajeValido(„HOLA‟)
retornará TRUE pero MensajeValido(„¡HOLA!‟)
retornará FALSE porque los símbolos “¡” y “!” no están en la tabla de la Figura 3.

function ClaveValida(clave:string):boolean;
Devuelve TRUE si la clave pasada como parámetro sólo contiene dígitos (como
caracteres) y FALSE en caso contrario.
Ejemplo: ClaveValida(„34235654‟) retorna TRUE y ClaveValida(„23A2S‟) retorna FALSE.

function Cifrar(mensaje, clave: string): string;
Recibe el mensaje a cifrar junto con la clave a utilizar y retorna el mensaje cifrado
Ejemplo Cifrar(„DELPHI 2011‟, „3759‟) retorna „GLQYKPOB386‟

function DesCifrar(mensaje, clave: string): string;
Recibe el mensaje cifrado y la clave a utilizar y retorna el mensaje descifrado
Ejemplo: DesCifrar(„GLQYKPOB386‟, „3759‟) retorna „DELPHI 2011‟

function RecuperarClave(textoClaro, textoCifrado: string): string;
Recibe dos mensajes: uno sin cifrar y el otro cifrado y devuelve la clave utilizada. Si no
es posible hallarla devuelve el string „No hay clave‟. En caso de existir la clave, debe
analizarse cuál es el patrón que se repite para devolver únicamente este patrón sin
repeticiones.
Ejemplo: RecuperarClave(„DELPHI 2011‟, „GLQYKPOB386‟) retorna „3759‟
2
Seminario de Lenguajes – Opción Delphi – Curso 2011
b) Utilice la unidad anterior para implementar la aplicación cuya interfaz se muestra en la
Figura 4.
Figura 4
Esta aplicación debe permitir cifrar, descifrar y recuperar la clave numérica.
Tenga en cuenta los siguientes detalles de implementación:
-
Los botones “Cifrar”, “Descifrar” y “Recuperar clave numérica” permanecerán
deshabilitados si la información que se solicita en las componentes que aparecen a
izquierda no ha sido indicada o es inválida. Además, para el 3er. botón, los textos de
entrada deben tener igual longitud.
-
Los campos ubicados a la derecha de los botones en cada uno de los paneles, no
pueden ser editados directamente por el usuario, sin embargo no deben
deshabilitarse pues ello impediría al usuario copiar su contenido al portapapeles de
Windows si así lo quisiera. Además el color del texto de estos campos debe cambiar
cuando el usuario modifica los campos de la izquierda en el panel correspondiente.
Este cambio de color advierte que su contenido está desactualizado pudiendo no
corresponderse con los visualizados en los campos de la izquierda.
-
Los campos de ingreso de datos no admiten caracteres en minúscula siendo
transformados inmediatamente en sus respectivas versiones en mayúscula.
Para más detalles ejecute Ejercicio3.exe.
Palabras claves: Unit, Uses, private, public, TEdit(Text, Font.Color, OnChange, Readonly,
CharCase)
Ejercicio 4
Desarrollar un analizador de textos que dado un texto permita obtener información referida
a las palabras, caracteres y números que contiene.
Se utilizará la interfaz de la Figura 5 formada por un MainMenu, un ToolBar y un Memo.
El menú se detalla en la Figura 6. El texto a analizar puede ingresarse directamente en el
Memo desde teclado o cargarse desde un archivo existente a través de la opción
„Archivo\Abrir’ del menú principal.
La opción „Archivo\Guardar como…’ permite ingresar un nombre de archivo para guardar el
texto del Memo. Si se selecciona „Archivo\Guardar’ se salvará con el último nombre de
archivo ingresado; si no existe ninguno deberá realizar las mismas acciones que
3
Seminario de Lenguajes – Opción Delphi – Curso 2011
‘Archivo\Guardar como …’. Los botones del ToolBar que aparecen debajo del menú
comparten los eventos con las opciones correspondientes.
El análisis a realizar corresponde a la opción ‘Estadística’ del menú principal cuyo detalle se
observa en la figura 7.
Figura 5
Figura 6
Figura 7
Algunos detalles a tener en cuenta:
- Las imágenes que aparecen en el menú y en los botones están caragdas en un
componente TImageList.
- Sobre el Memo, a la derecha, aparece el último nombre de archivo ingresado. Este
nombre será el que se utilice para guardar si se selecciona ‘Archivo\Guardar’.
- Las opciones para guardar el texto permanecen deshabilitadas mientras el Memo
esté vacío.
- Se asume que los números enteros no utilizan signos de puntuación (ej: coma o
punto para separar los miles).
4
Seminario de Lenguajes – Opción Delphi – Curso 2011
El carácter separador de decimales es el punto, es decir, ‘.’
El texto puede contener acentos los cuales no serán tenidos en cuenta para el
procesamiento. Es decir que las palabras ‘sólo’ y ‘solo’ serán consideradas iguales.
Tampoco se distinguen mayúsculas de minúsculas.
- Por simplicidad se asumirá que el texto no tiene más de 10000 palabras.
Para más detalles ejecute Ejercicio4.exe.
-
Palabras claves: TMemo (Text, OnChange, Lines.LoadFromFile, Lines.SaveToFile),
TForm
(BorderIcons,
OnCloseQuery),
TOpenDialog(Execute,
Filename),
TSaveDialog(Execute, Filename),TImageList,
ExtractFileName, UpperCase,
DecimalSeparator.
Ejercicio 5
Desarrolle una aplicación similar al popular juego de arcade de los „70 denominado “snake”
(http://es.wikipedia.org/wiki/Snake_%28videojuego%29). El juego consiste en manipular una
serpiente a través de un escenario con el fin de alimentarla. Esta puede moverse libremente
pero debe esquivar los obstáculos y no chocar con los bordes del escenario.
La serpiente tiene un breve lapso de tiempo para alimentarse de roedores e insectos. Cada
vez que caza una presa aumenta de tamaño y el tiempo para encontrar una nueva víctima
es renovado.
La aplicación cuenta con dos formularios: uno donde se desarrolla el juego (Figura 8) y otro
que permite configurar escenarios (Figura 9).
El formulario principal (Figura 8) posee un menú que permite iniciar el juego, salir del juego,
editar escenarios y seleccionar un escenario para jugar.
Figura 8
El formulario de escenarios (Figura 9) tiene dos modos de funcionamiento: uno que permite
la creación y modificación de escenarios y otro que permite la selección del escenario para
jugar. En ambos modos de funcionamiento este formulario muestra en una etiqueta el
número de escenario que se está visualizando y dos botones de navegación para cargar
desde un archivo un nuevo escenario.
5
Seminario de Lenguajes – Opción Delphi – Curso 2011
En el modo de selección se muestra un botón para elegir el escenario que será dibujado en
el formulario principal en el momento de jugar.
En el modo de edición el formulario muestra:
 un botón para crear un escenario vacío con un nuevo número (no repetido).
 un botón para descartar los cambios realizados de un escenario previamente
guardado.
 un botón para guardar las modificaciones realizadas en el escenario actual.
 Una imagen con el bloque que se dibuja sobre el escenario con el mouse.
 Un grupo de imágenes con los bloques que se pueden seleccionar para ser
dibujados.
Figura 9
El dibujo sobre el área del escenario se puede realizar de dos maneras. El bloque
seleccionado será graficado sobre la celda del escenario:
 cada vez que se presiona el botón izquierdo del mouse.
 cada vez que se mueve el mouse con el botón derecho presionado.
Tanto las imágenes, como la aplicación de demostración y el formulario con la distribución
de las celdas están disponibles para bajar de la página web de la cátedra.
Para más detalles sobre el funcionamiento ejecute Snake.exe.
Palabras claves: TComponent(FindComponent, tag), TControl(Invalidate), TImage(picture),
TImageList(Count, GetBitmap), TPanel(controlCount, controls), TTimer(Enabled, Interval),
TProgressBar, OnMouseMove, OnKeyDown(VK_RIGHT, VK_LEFT, VK_UP, VK_DOWN),
FileExists, Random
6
Descargar