Sunteți pe pagina 1din 8

Instituto Politcnico Nacional

Escuela Superior de Computo

Mendoza Cern Pablo Jess

Teora Computacional

Reporte de Practica 3

Grupo: 2CV6 Fecha de entrega: 27 de Septiembre del 2013

Introduccin Descripcin de la prctica


Realizacin de un programa que para una expresin regular determinada determine si las cadenas pertenecen a dicha expresin regular. El programa tendr como entrada una expresin regular determinada en un alfabeto binario, por ejemplo:={0,1} ={a,b}. La Expresin regular puede ser cualesquiera, por ejemplo: 0(11)*0, ab(a|b)*, etc. En base a la expresin regular, el programa validar las cadenas que pertenezcan a la expresin regular, mismas que introducir el usuario durante la ejecucin del programa. El programa estar validando las cadenas necesarias hasta que el usuario decida salirse del programa. El programa por cada cadena que el usuario ingrese deber mostrar si es vlida o no vlida de acuerdo a la expresin regular.

Fundamentos tericos
Expresiones Regulares
Las expresiones regulares son usadas para definir patrones, los cuales pueden encontrarse en cadenas o palabras de algn lenguaje, pero no estan restringidas solo a este contexto, pueden ser tambin cualquier patrn que tenga cierta recurrencia en cualquier otro contexto. Son utilizadas en muchas de las herramientas para anlisis lxico, donde se trabaja directamente con cadenas de texto para encontrar los patrones que existen en el lenguaje. Las expresiones regulares se clasifican de la siguiente manera: Sea

un alfabeto, y

una palabra, tal que

, entonces:

por si sola es una expresin regular. Representa el conjunto que contiene todas las cadenas de un solo smbolo. Si y son ambas expresiones regulares, es una expresin regular.

Si

, son expresiones regulares, la unin

resulta en una expresin regular. Si es una expresin regular, entonces tambin lo es. Las expresiones regulares son las mencionadas antes, ninguna otra expresin es regular.

Podemos simplificar la notacin de un lenguaje usando las expresiones regulares ya que funcionan como una plantilla para indicar la forma que deben tener todas las cadenas que forman parte de algn lenguaje.

Desarrollo
Cdigo
///////////AUTOR: MENDOZA CERON PABLO JESUS////////// //////////PRACTICA 3//////////////////////////////// /////GRUPO:2CV6////////////// /////27-Septiembre-13////////// #include <stdio.h> #include <string.h> int main (void) { char cad1[50]; int x,y,z,a; char opc; do{ printf("\tPROGRAMA QUE VALIDA SI UNA CADENA ES CORREO ELECTRONICO O URL"); printf("\n\nFormato de un correo electronico:\tusuario@servidor.com"); printf("\nFormato de una direccion URL:\t\twww.pagina.com"); printf("\n\nEscriba su cadena a evaluar\n"); gets(cad1); if(strstr(cad1,"@")!=NULL&&strstr(cad1,".com")!=NULL) { x=strlen(cad1); y=0; a=0; for(z=0;z<=x;z++) {

if(cad1[z]=='@') { y++; } if(cad1[z]=='.') { a++; } } if(y==1&&a==1) { printf("\nLa cadena:%s\nEs un correo\n",cad1); } else { printf("\nLa cadena:%s\nNo es una direccion URL ni un correo\n",cad1); } } if(strstr(cad1,"www.")!=NULL&&strstr(cad1,".com")!=NULL) { x=strlen(cad1); y=0; a=0; for(z=0;z<=x;z++) { if(cad1[z]=='w') { y++; } if(cad1[z]=='.')

{ a++; } } if(a==2&&y==3) { printf("\nLa cadena:%s\nEs una direccion URL\n",cad1); } else { printf("\nLa cadena:%s\nNo es una direccion URL ni un correo\n",cad1); } } if(strstr(cad1,"www.")==NULL&&strstr(cad1,".com")==NULL&&strstr(ca d1,"@")==NULL) { printf("\nLa cadena:%s\nNo es una direccion URL ni un correo\n",cad1); } if(strstr(cad1,"www.")==NULL,strstr(cad1,".com")==NULL&&strstr(cad 1,"@")==NULL) { printf("\nLa cadena:%s\nNo es una direccion URL ni un correo\n",cad1); } if(strstr(cad1,"www.")==NULL&&strstr(cad1,"@")==NULL) { printf("\nLa cadena:%s\nNo es una direccion URL ni un correo\n",cad1); }

printf("\nDesea validar otra cadena?"); scanf("%c",&opc); }while(opc!='n'); system("pause"); return 0; }

Pruebas

Conclusiones
Hay muchas aplicaciones de las expresiones regulares, tales como verificar contraseas, corres, grupos, paginas web entre otras. Las expresiones regulares son muy importantes ya que sirven como base para los autmatas AFD o AFN y tambin para generar lenguajes o palabras.

Bibliografa
http://delta.cs.cinvestav.mx/~mcintosh/comun/summer2006/algebraPablo_html/ node7.html

S-ar putea să vă placă și