Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
Conceptos Unidad 1 Lenguajes Autómatas
1 Introducción a la
Teoría de Lenguajes
Formales.
1.1 Alfabeto.
1.2 Cadenas.
1.3 Lenguajes
1.4 Tipos de lenguajes
1.5 Herramientas computacionales ligadas
con lenguajes
1.6 Estructura de un traductor
1.7 Fases de un compilador
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Materia de lenguajes y autómatas 1 del Tecnológico de Tepic, maestra Sonia. Si llevas la materia de autómatas con Sonia, copienselo y rólenlo a sus amigos.
Tutorial de JFLAP en español que explica paso a paso todas las funcionalidades de la herramienta y al final contiene varias prácticas que van de un nivel de dificultad bajo hacia uno más alto.
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
Conceptos Unidad 1 Lenguajes Autómatas
1 Introducción a la
Teoría de Lenguajes
Formales.
1.1 Alfabeto.
1.2 Cadenas.
1.3 Lenguajes
1.4 Tipos de lenguajes
1.5 Herramientas computacionales ligadas
con lenguajes
1.6 Estructura de un traductor
1.7 Fases de un compilador
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
Materia de lenguajes y autómatas 1 del Tecnológico de Tepic, maestra Sonia. Si llevas la materia de autómatas con Sonia, copienselo y rólenlo a sus amigos.
Tutorial de JFLAP en español que explica paso a paso todas las funcionalidades de la herramienta y al final contiene varias prácticas que van de un nivel de dificultad bajo hacia uno más alto.
1. PROGRAMACIÓN HIBRIDA
En la programación software, sistemas híbridos inteligentes denotan a los sistemas software
que emplean, en paralelo, una combinación de modelos de inteligencia artificial, métodos y
técnicas de éstos subcampos
Cada sistema inteligente natural es un híbrido porque éstos desarrollan operaciones
mentales tanto en niveles simbólicos como sub-simbólicos. Desde hace pocos años se ha
ido desarrollando una discusión sobre la importancia en la inteligencia artificial de la
integración de todos éstos sistemas. Basados en las nociones de que se habían ya creado
simples y específicos sistemas de inteligencia artificial (como sistemas para la visión de
computadores, síntesis del habla, etc., o software que emplean alguno de los modelos
mencionados arriba) algunos autores proponen aque es ahora el momento de la integración
para crear complejos, grandes sistemas de inteligencia artificial. Investigadores destacados
sobre estas ideas son Marvin Minsky, Aaron Sloman, Deb Roy, Kristinn R. Thórisson y
Michel Arbib.
La metodología de diseño Creacionista (CDM, por sus siglas en inglés) (nótese en su
nombre referencias al deseo humano de ser el Arquitecto) es una filosofía de desarrollo
software diseñado específicamente para la creación de grandes sistemas A.I. CDM está
basado en pasos de diseño iterativos que guíen hacia la creación de una red de llamados
módulos interactivos, que se comunican por flujos tipados explícitos y mensajes discretos.
02
La organización Mindmakers es un portal online para la gente que trabaja en la integración
e incremento de la coloboración en el campo de la Inteligencia Artificial
Al trabajar con un lenguaje de alto nivel, en ocasiones nos encontramos con el problema de
que necesitamos que haga determinada función o trabajo pero desafortunadamente ésta solo
existe en otro lenguaje que no es el que necesitamos utilizar, o simplemente, no
encontramos esa función en ningún lenguaje de alto nivel.
03
Ventajas de la Programación Híbrida
ü Para mejorar la escalabilidad
ü Cuando muchas tareas producen desbalanceo
ü Aplicaciones que combinan paralelismo de grano grueso
y fino
ü Reducción del tiempo de desarrollo de código
ü Cuando el número de procesos MPI es fijo
ü En caso de mezcla de paralelismo funcional y de datos
En este momento el lenguaje ensamblador constituye una herramienta no solo eficaz, sino
simple para producir un parche para el compilador de nuestro lenguaje preferido.
Tal vez el mayor problema con el que nos enfrentemos sea el de cómo conectar ambos
2. programas (el de alto y el de bajo niveles) y cómo pasar variables de un programa al otro.
Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que
aparecen en el código fuente del ensamblador pero que no generan ninguna instrucción de
máquina, pero proporcionan directivas para que el ensamblador pueda operar con datos,
ramificaciones condicionales, generación de listados y con macros durante el proceso de
ensamble.
DIRECTIVAS PARA COMPILACIÓN HIBRIDA
Turbo Pascal permite escribir procedimientos y funciones en código ensamblador e
incluirlas como parte de los programas en lenguaje Pascal; para esto, Turbo Pascal cuenta
con dos palabras reservadas: Assembler y Asm.
Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que se está
escribiendo está totalmente escrita en código ensamblador.
Ejemplo de un procedimiento híbrido:
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h ; procedimiento Clr Scr de la unidad CRT de Turbo Pascal
Mov BH,18h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje ensamblador en
cualquier parte del programa sin necesidad de escribir procedimientos completos en
ensamblador.
Ejemplo de un programa con un bloque de instrucciones en ensamblador:
;El programa solicita que se introduzcan dos número, después calcula la suma por medio de
la instrucción Add de ensamblador y finalmente imprime el resultado en la pantalla.
; realiza la suma de dos cantidades enteras (N1 y N2) introducidas previamente por el
usuario, después almacena el resultado en la variable Res y finalmente presenta el resultado
en la pantalla.
Program hibrido;
Uses Crt;
Var
N1,N2,Res : integer;
Begin
Writeln(“Introduce un número: “);
Readln(N1);
Writeln(“Introduce un número: “);
Readln(N2);
Asm
3. Mov AX,N1;
Add AX,N2;
Mov Res,AX
End;
Writeln(“El resultado de la suma es: “,Res);
Readln;
End.
;Este programa solicita al usuario que presione alguna tecla, cuando la tecla es presionada,
ésta se utiliza para rellenar la pantalla. Termina cuando se presiona la tecla enter. Utiliza
tres procedimientos:
Limpia_Pantalla: Este se encarga de borrar la pantalla
Cursor_XY: Este procedimiento reemplaza al Goto XY de Pascal
Imprime_Car: Este procedimiento imprime en pantalla el carácter que se le pasa como
parámetro.
Program Hibrido2;
Uses Crt;
Var
Car: Char;
i,j : integer;
;Este procedimiento limpia la pantalla y pone blanco sobre azul
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h
Mov Bh,17h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
;Este procedimiento imprime el carácter en la pantalla
Procedure Imprime_Car(C: Char);
Assembler;
Asm
Mov Ah,02h
Mov Dl,C
Int 21h
End;
;Este procedimiento tiene la misma función que el procedimiento Goto XY de Turbo Pascal
Procedure Cursor_XY(X,Y: Byte);
Assembler;
Asm
Mov Ah,02h
Mov Bh,00h
Mov Dh,Y
Mov Dl,X
4. Int 10h
End;
Begin
Limpia_Pantalla;
Repeat
Limpia_Pantalla;
Cursor_XY(0,0);
Write(‘Introduce un carácter: ‘);
Car:=Read Key;
Imprime_Car(Car);
Limpia_Pantalla;
If car #13 then
Begin
For i:=0 to 24 do
For j:=0 to 79 do
Cursor_XY(j,i);
Imprime_Car(Car);
End;
Cursor_XY(30,24);
Write(‘Presiona enter para salir u otro para seguir…’);
Readln;
Until car = #13;
End.
Tal vez el mayor problema es cómo conectar dos programas, el de alto y el de bajo niveles,
y cómo pasar variables de un programa al otro.
Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que
aparecen en el código fuente del ensamblador pero que no generan ninguna instrucción de
máquina, pero proporcionan directivas para que el ensamblador pueda operar con datos,
ramificaciones condicionales, generación de listados y con macros durante el proceso de
ensamble.
El formato de este pseudo-operador es PUBLIC número, variable o rótulo
Ejemplo de uso de PUBLIC:
PUBLIC nombre
Instrucciones
RET
nombre ENDP