Andrs Francisco Saavedra Cnovas 21060183A Tipos de datos y variables
Antes de nada, vamos a definir las estructuras de datos (u objetos) que hemos usado para construir nuestro simulador de canal.
TForm: Bsicamente, esto es el main del programa, TODO est dentro de un TForm, que es general (podramos decir que es la ventana). TMemo: Este objeto es una especie de editor de texto en forma de cuadro, en el cual, el texto puede ser agregado mediante el usuario (a travs de la interfaz) o mediante el programador, a travs de Lines ( TMemo.Lines.add(texto) ). TButton: Este objeto es un botn que permite realizar acciones cuando, por ejemplo, se pulse. TEdit: Este objeto es un cuadro de texto de una nica lnea, til para introducir valores concretos, como el intervalo del Timer. TTimer: Este objeto crea un Timer, es decir, un temporizador que, internamente, se dispara cuando se cumple el intervalo. TGroupBox: Este objeto visual sirve para agrupar otros objetos de la GUI dentro de un conjunto. TStringList: Este tipo de objeto es una lista ordenada de strings (o cadenas de texto) donde podemos insertar o eliminar strings.
Una vez definido los tipos de objetos, vamos a comentar lo que hemos utilizado.
Memo1 (TMemo): Mostraremos las entradas a nuestro canal. La informacin la veremos en forma binaria. Memo2 (TMemo): Mostraremos las salidas de nuestro canal. La informacin la veremos en forma binaria. Button1 (TButton): Se corresponde con el botn Play. Su funcin es activar el Timer, haciendo que el canal empiece a funcionar. Button2 (TButton): Se corresponde con el botn Pause. Su funcin es parar el Timer. Button3 (TButton): Se corresponde con el botn Stop. Su funcin es parar el Timer y guardar el contenido, tanto de entrada como de salida, en su correspondiente fichero. Reset (TButton): Su funcin es parar el Timer, guardar el contenido, tanto de entrada como de salida, en su correspondiente fichero y limpiar Memo1 y Memo2. Edit1 (TEdit): Este cuadro de texto nos servir para cambiar el intervalo del Timer. Edit2 (TEdit): Este cuadro de texto nos servir para indicar el nmero de smbolos. Edit3 (TEdit): Este cuadro de texto nos servir para indicar la probabilidad de transicin del 0. Edit4 (TEdit): Este cuadro de texto nos servir para indicar la probabilidad de transicin del 1. Timer1 (TTimer): Timer de nuestra aplicacin (invisible para el usuario). Datos (TGroupBox): Caja que agrupa los botones empleados para inyectar datos en entrada. Enviar_00 (TButton): Inyecta el valor 00 en la entrada del canal. Enviar_01 (TButton): Inyecta el valor 01 en la entrada del canal. Enviar_10 (TButton): Inyecta el valor 10 en la entrada del canal. Enviar_11 (TButton): Inyecta el valor 11 en la entrada del canal. Simbolos (TGroupBox): Caja que contiene el TEdit donde indicamos el nmero de smbolos. Probabilidad (TGroupBox): Caja que agrupa los TEdit donde indicamos las probabilidades de transicin, tanto para el 0 como para el 1. Entrada (TStringList): Lista de cadena de caracteres donde vamos almacenando los datos que mandamos a la entrada del canal. Salida (TStringList): Lista de cadena de caracteres donde vamos almacenando los datos que se reciben tras atravesar el canal. fileIndex: Variable utilizada para llevar un ndice de los archivos que se van guardando para evitar que se sobrescriban (al menos en la misma sesin). arrayProb: Array de probabilidades de transicin (2x2), generado con los valores introducidos por el usuario. numeroSimbolos: nmero de smbolos de nuestra codificacin. p: probabilidad de transicin del 0. p_prima: probabilidad de transicin del 1.
A continuacin, mostramos una captura de cmo queda, finalmente, la interfaz del programa de cara al usuario:
Flujograma
Para finalizar, vamos a mostrar un pequeo flujograma donde vamos a representar, de forma sencilla, el funcionamiento de nuestro canal.