Está en la página 1de 4

ESCUELA POLITÉCNICA NACIONAL

Facultad de Ingeniería de Sistemas Informáticos y


Computación

Materia: COMPILADORES Y LENGUAJES

Código: SIC-424

Grupo: GR2

Tema: Idetificador de paridad en C++


Grupo de Trabajo Número 3

Integrantes: Cruz Choez David Alejandro, Chancusig


Jairo David, Cordovillo Morocho Henrry Jordan
Fecha de Entrega: 22/05/2018
Período Lectivo: Marzo/18-Agosto/18
Objetivos

 Crear un programa en C que permita identificar la paridad de una cadena de bits.


 Analizar cómo funciona un autómata en el trabajo de identificar una cadena de bits mediante una
matriz de estados.

Marco Teórico

Identificador de paridad:

Consiste en añadir un bit de más a la cadena que queremos enviar, y que nos indicará si el número
de unos (bits puestos a 1) es par o es impar. Si es par incluiremos este bit con el valor = 0, y si no
es así, lo incluiremos con valor = 1.

El receptor ahora, repite la operación de contar la cantidad de “unos” que hay (menos el último bit)
y si coincide, es que no ha habido error.

Bit de paridad

El bit de paridad, a diferencia de los bits de inicio y de parada, es un parámetro opcional que se
utiliza en las comunicaciones serie para determinar si el dispositivo remoto está recibiendo
correctamente el carácter de datos que se transmite.

El bit de paridad puede tener una de las especificaciones siguientes:

Ninguna: Especifica que el sistema local no debe crear un bit de paridad para los caracteres de datos
que se están transmitiendo. También indica que el sistema local no comprueba el bit de paridad de
los datos recibidos de un sistema principal remoto.

Par: Especifica la suma del número total de unos binarios de un solo carácter es un valor par. En
caso negativo, el bit de paridad debe ser un 1 para asegurarse de que el número total de unos binarios
sea par.

Por ejemplo, si la letra a (1100001 binario) se transmite bajo la paridad par, el sistema de envío
suma el número de unos binarios que, en este caso, es tres y deja el bit de paridad en un 1 para
mantener un número par de unos binarios. Si la letra A (1000001 binario) se transmite bajo las
mismas circunstancias, el bit de paridad sería un 0, por lo que el número total de unos binarios se
mantendría como un número par.
Impar: Funciona bajo las mismas directrices que la paridad par, con la excepción de que el número
total de unos binarios debe ser un número impar.

Desarrollo

Diseñar una matriz de estados que nos permita identificar si una cadena de bits es par o impar,
para lo cual utilizamos autómatas de estado finito de los cuales obtuvimos, 2 matrices:

0 1 0 1
S0 1 0 S0 0 1
S1 0 1 S1 1 0

Matriz de estados - paridad par Matriz de estados -paridad impar

Para lo cual utilizamos las siguientes líneas de código:


int matEstadosPar[2][2] = {{0,1},{1,0}};
int matEstadosImpar[2][2] = {{1,0},{0,1}};

Ulitizamos un menú, para definir el tipo de paridad que deseamos evaluar:


MENU
Seleccione el tipo de paridad:
a) Par
b) Impar
c) Salir
Seleccione una opcion:

Se ocupa un ciclo do{}while(); para repetir el menú las veces que se desea. Para el manejo de la
matriz de estados utilizamos un ciclo for para avanzar dento del array de bits y a la vez por la
matriz de estados.
for (int i = 0; i < bits.length(); i++) {
if(bits[i]=='1'){
estado = matEstadosImpar[1][estado];
} else if(bits[i]=='0'){
estado = matEstadosImpar[0][estado];
}
}

Conclusiones
 Utilizar máquinas de estado finito en algunos casos resulta ser mas productivo
 Las máquinas de estado finito se las representa de mejor manera en matrices de estado lo cual
facilita la programación.

Recomendaciones

 Usar adecuadamente la máquina de estado finito.


 Analizar la matriz de estados para ver si funciona.
 Si la matriz de estado finito está bien diseñada es más optima la finalidad.

Referencias

[1] R. S. STEARNS , D. R. ROSENKRANTZ, P.M LEWIS, «Compiler Design Theory (The Systems
programming series),» ISBN-13: 978-0201144550, 1976, p.52.

También podría gustarte