Anda di halaman 1dari 13

I

EVALUACION PRACTICA 2018-2

JOSÉ GIOVANNI MORENO ROJAS

UNIVERSIDAD SANTO TOMÁS

VICERRECTORÍA DE LA UNIVERSIDAD ABIERTA Y A DISTANCIA

FACULTAD DE CIENCIAS Y TECNOLOGÍAS

INGENIERÍA EN INFORMÁTICA

TEORIA DE LENGUAJES

TUNJA

2018
II

Contenido

Introducción ................................................................................................................................................ 3

Objetivos ...................................................................................................................................................... 4

Actividades a realizar ................................................................................................................................. 5

Desarrollo de actividades ........................................................................................................................... 6

Referencias................................................................................................................................................. 13

Tabla de Ilustraciones

Ilustración 1 Proceso de Compilación ........................................................................................................... 6

Ilustración 2 Esquema Maquina de Turing ................................................................................................... 8


3

Introducción

La teoría de autómatas es el estudio de dispositivos de cálculo abstractos, es decir, de las “máquinas”.

Antes de que existieran las computadoras, en la década de los años treinta, A. Turing estudió una

máquina abstracta que tenía todas las capacidades de las computadoras de hoy día, al menos en lo que

respecta a lo que podían calcular. El objetivo de Turing era describir de forma precisa los límites entre lo

que una máquina de cálculo podía y no podía hacer; estas conclusiones no sólo se aplican a las máquinas

abstractas de Turing, sino a todas las máquinas reales actuales.


4

Objetivos

Comprender las diferencias entre la sintaxis, la semántica y gramática dentro de un lenguaje

especifico.

Exponer y debatir el concepto de compilador e interprete y comprender su diferencia.

Realizar un algoritmo o programa en lenguaje de programación que demuestre las partes

morfológicas y semánticas del código escrito.

Identificar las principales características de los lenguajes formales.


5

Actividades a realizar

1. Esquematice en un diagrama de flujo de datos, la forma como los lenguajes de

programación hacen su proceso de compilación (para aquellos que compilan). No usar

gráficos de internet.

2. Explique las diferencias entre compilador e interprete. Plantee ejemplos de lenguajes de

programación en cada uno.

3. Explique qué función cumple la máquina de Turing y como esta influida o aportaba a los

lenguajes.

4. En qué y cómo afecta la teoría de los autómatas finitos a los lenguajes de programación.

Elabore un video tutorial de máximo 3 minutos, donde sustente el concepto y detalle su

respuesta.

5. Elabore en un mismo programa en los siguientes lenguajes de programación C++ y Java.

A través de un diagrama, establezca diferencias en relación con la forma como traducen,

compilan e interpretan las sentencias hasta obtener la compilación de memoria y disco.


6

Desarrollo de actividades

1.

Ilustración 1 Proceso de Compilación

Fuente: Autoría Propia


7

2.

Programa Definición Diferencias Ejemplo

Compilador Un compilador es un  Los intérpretes se diferencian de los C


compiladores en que mientras estos C++
programa que traduce de traducen un programa desde su Pascal
descripción en un lenguaje de FORTRAN
un lenguaje fuente programación al código de máquina del COBOL
sistema, los intérpretes sólo realizan la
(normalmente un traducción a medida que sea necesaria,
típicamente, instrucción por instrucción,
lenguaje de y normalmente no guardan el resultado
de dicha traducción.
programación de alto

nivel) a un lenguaje  El compilador genera un ejecutable que


va dirigido a una plataforma en
objeto (normalmente concreto, es decir, no se puede portar a
otra, en tal caso es necesario recompilar.
código máquina) Mientras tanto, el intérprete no genera
ningún ejecutable, esto hace que un
Interprete Un interpretador es un programa pueda portarse y por tanto BASIC
ejecutarse en diferentes plataformas.
programa informático QBASIC

capaz de analizar y  La ejecución de un programa procesado QUICKBASIC


por un compilador se realiza de forma
ejecutar otros programas, más rápida ya que el programa ha sido VISUALBASIC
traducido a código máquina. Por el
escritos en un lenguaje contrario, la ejecución del interprete es SMALLTALK
más lenta por lo que a cada línea del
de alto nivel. programa es necesario realizarle una JAVA
traducción.

 Los programas compilados pueden


generar errores que afecten la
estabilidad de la plataforma, en cambio,
los errores que se generan por el
intérprete generalmente se detectan y se
corrigen durante la ejecución, ya que
esta se lleva a cabo al mismo tiempo
que la traducción.
8

3. Conocida también como “la máquina de computación lógica de Turing “, es un modelo

matemático que fue desarrollado por Alan Turing presentada en 1936, conocido por sus

aportes a la lógica y las matemáticas, además ayudo en la criptografía en la segunda

guerra mundial, es el modelo en el que se asientan los ordenadores actuales.

Consiste en cinta infinita dividida en celdas (memoria), una cabeza móvil que se mueve a

través de la cinta para leer y escribir símbolos en ella, y una tabla de instrucciones o

programa de acción. Como tal va a responder entre dos opciones, SI y NO.

Ilustración 2 Esquema Maquina de Turing

Fuente: Autoría Propia

Se trata de un dispositivo que se comporta como un autómata finito, este puede simular el

comportamiento de una computadora, es decir, que tiene una unidad de almacenamiento y

una de control. Gracias a lo anterior se puede determinar que, si un problema no puede ser

resuelto por una de estas máquinas, tampoco puede ser resuelto por una computadora.
9

Estas máquinas se pueden adaptar a toda clase de algoritmo de lenguajes formales de

computador. En base a esto, se puede deducir que es un autómata superior a los autómatas

finitos o a los autómatas con pila.

El cómputo se determina a partir de una tabla de estados de la forma: (estado, valor)

(nuevo estado, nuevo valor, dirección). Esta tabla toma como parámetros, el estado actual

de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el

nuevo estado de la máquina y el valor a escribir en la cinta. En las celdas de la memoria se

pueden escribir y leer símbolos. Inicialmente todas las celdas contienen un símbolo

especial denominado "blanco". Las instrucciones que determinan el funcionamiento de la

máquina tienen la forma, "si estamos en el estado x leyendo la posición y, donde hay

escrito el símbolo z, entonces este símbolo debe ser reemplazado por este otro símbolo, y

pasar a leer la celda siguiente, bien a la izquierda o bien a la derecha".

4. Los Autómatas Finitos son máquinas teóricas que van cambiando de estado dependiendo

de la entrada que reciban. La salida de estos Autómatas está limitada a dos valores:

aceptado y no aceptado, que pueden indicar si la cadena que se ha recibido como entrada

es o no válida. Generalmente utilizaremos los Autómatas Finitos para reconocer lenguajes

regulares, es decir, una palabra se considerará válida sólo si pertenece a un determinado

lenguaje, además procesa secuencias de símbolos mediante una unidad de control que

admite un numero finito de estados diferentes. (Jurado Malaga, 2008)

Formalmente denotamos a un autómata finito determinista mediante una 5-upla (𝑄, Σ, 𝛿,

𝑞0, 𝐹), donde 𝑄 es el conjunto finito de estados, Σ es el alfabeto finito de entrada, 𝑞0 ∈ 𝑄

es el estado inicial, 𝐹 ⊆ 𝑄 es el conjunto de estados finales, y 𝛿 es la función de transición


10

de transformar 𝑄 × Σ 𝑎 𝑄. Esto es, 𝛿 (𝑞, 𝜎) es un estado para cada estado 𝑞 y el símbolo de

entrada 𝜎 ∈ Σ. (Robles Guzman, 2004)

La teoría de autómatas es una rama de la teoría de la computación que estudia las

máquinas abstractas y los problemas que éstas son capaces de resolver. La teoría de

autómatas está estrechamente relacionada con la teoría del lenguaje formal ya que los

autómatas son clasificados a menudo por la clase de lenguajes formales que son capaces

de reconocer. También son de gran utilidad en la teoría de la complejidad computacional.

5. Calcular el número mayor y el número menor de una serie de números.

Usando lenguaje C++

1 //Código Fuente: Calcula el número mayor y menor.


2 int menor(int, int, int);
3 int mayor(int, int, int);
4 #include<iostream>
5 using namespace std;
6 int main()
7 {
8 int a,b,c;
9 cout<<"ingrese tres numeros\n";
10 cin>>a>>b>>c;
11 cout<<"el menor es: "<<menor(a,b,c)<<endl;
12 cout<<"el mayor es: "<<mayor(a,b,c)<<endl;
13 cin.ignore();return 0;
14 }
15 int menor(int a,int b,int c)
16 {
17 if(a<b) b=a;
18 if(a<c) c=a;
19 if(b<c) c=b;
20 return c;
21 }
22 int mayor(int a,int b,int c)
23 {
11

24 if(a>b) b=a;
25 if(a>c) c=a;
26 if(b>c) c=b;
27 return c;
28 }

Usando lenguaje Java

1 public static void main(String[] args) {


2 Scanner in = new Scanner(System.in);
3 int num, max = 0, min = 0;
4
5 for (int i = 1; i < 11; i++) {
6 System.out.print(i + " Ingrese un numero: ");
7 num = in.nextInt();
8 if (min != 0 && max != 0) {
9 if (num > max) {
10 max = num;
11 }
12 if (num < min) {
13 min = num;
14 }
15 } else {
16 min = num;
17 max = num;
18 }
19 }
20 System.out.println("Numero Maximo: " + max);
21 System.out.println("Numero Minimo: " + min);
22 }
12

Diferencias en cuanto a la traducción, compilación e interpretación de los dos lenguajes


13

Referencias
Jurado Malaga, E. (2008). Teorías de Autómatas y Lenguajes Formales. Obtenido de

http://biblioteca.unex.es/tesis/Teorias_automatas.pdf

Robles Guzman, H. (2004). DIVERSAS REPRESENTACIONES DE UN AUTÓMATA

FINITO DETERMINISTA. Universidad Autonoma del Estado de Hidalgo.

Anda mungkin juga menyukai