figure: lenguajes. generaciones de lenguajes de programación

26
Figure: Lenguajes

Upload: chucho-ballesteros

Post on 02-Apr-2015

138 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Figure: Lenguajes. Generaciones de lenguajes de programación

Figure:

Lenguajes

Page 2: Figure: Lenguajes. Generaciones de lenguajes de programación

Generaciones de lenguajes de programación

Page 3: Figure: Lenguajes. Generaciones de lenguajes de programación

Evolución de los paradigmas de lenguajes

Page 4: Figure: Lenguajes. Generaciones de lenguajes de programación

Paradigmas de programación

-Imperativo: los programas tienen estados y hay sentencias que cambian ese estado-Lógico: lógica aplicada a sistemas expertos-Funcional: funciones matemáticas-Orientado al evento: estructura y acción del programa determinada por sucesos-Orientado al objeto-Orientado al aspecto: nivel de abstracción más alto, en desarrollo

Page 5: Figure: Lenguajes. Generaciones de lenguajes de programación

Lenguaje imperativo

Page 6: Figure: Lenguajes. Generaciones de lenguajes de programación

Proceso de traducción

Page 7: Figure: Lenguajes. Generaciones de lenguajes de programación

Reconocedores de lenguajeDiagrama sintáctico de una sentencia if

Page 8: Figure: Lenguajes. Generaciones de lenguajes de programación

Reconocedores de lenguajesDiagrama sintáctico de una expresión

Page 9: Figure: Lenguajes. Generaciones de lenguajes de programación

Proceso completo de creación de un programa

Page 10: Figure: Lenguajes. Generaciones de lenguajes de programación

Reconocedores de lenguajesAutómatas finitos

Alfabeto: conjunto finito, no vacío, de símbolos a partir del cual se construyen las cadenas que se analizan.

Flujo de entrada: cadena que analizará como una secuencia de símbolos, uno a la vez.

Consiste en: S: conjunto finito de estados∑: alfabeto de la máquina (autómata) Δ: función de transición de Sx ∑ a SI: un elemento de S, estado inicialF: un subconjunto de S, estados finales

Page 11: Figure: Lenguajes. Generaciones de lenguajes de programación

Reconocedores de lenguajesAutómatas finitos representación pictórica

S: conjunto finito de estados (r: identificación)

∑: alfabeto de la máquina (autómata)

Δ: función de transición de Sx ∑ a S

I: un elemento de S, estado inicial

F: un subconjunto de S, estados finales

i j

Elemento de ∑

0

i

r

Page 12: Figure: Lenguajes. Generaciones de lenguajes de programación

Reconocedores de lenguajesAutómatas finitos. Ejemplo:

0 1

a

2

E

a

b

b {a, b}

Reconocer cadenas: abka k=0,1,2,…..Cadena mínima: aa

•Se parte analizando el primer símbolo de la izquierda•Se termina cuando se alcanza el último símbolo de la cadena•Se cambia al estado que tiene el símbolo que se está analizando•Si al terminar la cadena se está en un estado final, la cadena es reconocida

S: {0, 1, 2, E}∑: {a, b}I: {0}F: {2}

Page 13: Figure: Lenguajes. Generaciones de lenguajes de programación

Reconocedores de lenguajesAutómatas finitos. Ejemplo:

0 2

a

3

E

a

b

b {a, b}

Reconocer cadenas: abka k>1Cadena mínima: aba

1

b

a

S: {0, 1, 2, 3, E}∑: {a, b}I: {0}F: {3}

Page 14: Figure: Lenguajes. Generaciones de lenguajes de programación

Lenguajes orientados al objeto

-Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. Al parecer, en este centro, trabajaban en simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras.

Page 15: Figure: Lenguajes. Generaciones de lenguajes de programación

Lenguajes orientados al objeto

-Herencia: jerarquía de clases, los objetos heredan propiedades las clases que le preceden- Polimorfismo: objetos de clases distintas comparten nombres de comportamiento que se diferencian en algunos aspectos: ej.: moverse, vehículos/personas-Encapsulamiento: esconder detalles de una clase de objeto a otras clases de objeto: abierto, protegido, cerrado, semicerrado.

Page 16: Figure: Lenguajes. Generaciones de lenguajes de programación

Herencia y jerarquía de clases en Java (1)

Una clase puede se extendida por otra clase más específica:

Ejemplo:

Esfera +-> burbuja | +->pelota +-> futbol | +-> tenis

Page 17: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-17Copyright © 2003 Pearson Education, Inc.

Herencia y jerarquía de clases en Java (2)

extendida significa que se le agregan detalles más específicos pero las clases herederas pueden hace uso de los recursos de la clase extendida. Estos pueden ser variables y/o métodos

Reglas de visibilidad de variables y métodos:

public : se puede hacer referencia desde cualquier clase private : sólo se pueden referenciar desde instrucciones en la clase que se ha declaradoprotected: sólo se puede referenciar desde una subclaselocales al método: sólo pueden ser referenciadas desde el interior del método en que se declaran

Page 18: Figure: Lenguajes. Generaciones de lenguajes de programación

Ventana gráfica (1)class Pizarra extends Frame { Pizarra(){ }

}

Esta clase aumentará los atributos de una clase existenteen java.awt

Al crear un objeto de clase Frame y activarlo, se abre una ventana, lo mismo ocurre con la nueva clase Pizarra

Page 19: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-19Copyright © 2003 Pearson Education, Inc.

class Pizarra extends Frame implements MouseListener { Pizarra(){ }

}

La implementación de una interfaz (MouseListener),obliga a agregarle unos métodos con nombre estándar quese ejecutan cuando se usan los botones del mouse

Ventana gráfica (eventos de mouse)

Page 20: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-20Copyright © 2003 Pearson Education, Inc.

class Pizarra extends Frame implements MouseListener { Pizarra(){ } public void mousePressed(MouseEvent e){;] public void mouseClicked(MouseEvent e){;} public void mouseReleased(MouseEvent e){;} public void mouseEntered(MouseEvent e){;} public void mouseExited(MouseEvent e){;}

}

Estos métodos estándar se ejecutan cuando se usan los botones del mouseTal como está la clase arriba, los eventos del mouse no seránrecibidos y hay hacer lo que sigue:

Ventana gráfica (3)

Page 21: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-21Copyright © 2003 Pearson Education, Inc.

class Pizarra extends Frame implements MouseListener { Pizarra(){ this.addMouseListener(this); } public void mousePressed(MouseEvent e){;} public void mouseClicked(MouseEvent e){;} public void mouseReleased(MouseEvent e){;} public void mouseEntered(MouseEvent e){;} public void mouseExited(MouseEvent e){;}

}

En el constructor, se agrega esta línea que habilita larecepción de eventos de mouse Significa: esta clase atiende los eventos de esta clase(puede ser que una clase atienda los eventos de otra)

Ventana gráfica (4)

Page 22: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-22Copyright © 2003 Pearson Education, Inc.

class Pizarra extends Frame implements MouseListener { int x=0, y=0; Pizarra(){ this.addMouseListener(this); } public void mousePressed(MouseEvent e){;} public void mouseClicked(MouseEvent e){;} public void mouseReleased(MouseEvent e){;} public void mouseEntered(MouseEvent e){;} public void mouseExited(MouseEvent e){;}

public void paint(Graphics g){ g.setColor(Color.red);

g.fillRect(x,y,60, 30); }}

Otro método de utilidad para una ventana es paintEl método paint es llamado automáticamente cada vez que la ventana se activa

Ventana gráfica (5)

Page 23: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-23Copyright © 2003 Pearson Education, Inc.

class Pizarra extends Frame implements MouseListener { int x=0, y=0; Pizarra(){ this.addMouseListener(this); } public void mousePressed(MouseEvent e){ x = e.getX(); y = e.getY(); repaint(); } public void mousePressed(MouseEvent e){;} public void mouseClicked(MouseEvent e){;} public void mouseReleased(MouseEvent e){;} public void mouseEntered(MouseEvent e){;} public void mouseExited(MouseEvent e){;}

public void paint(Graphics g){ g.setColor(Color.red);

g.fillRect(x,y,60, 30); }}

El método paint es llamado indirectamente si se llama directamente repaint

Ventana gráfica (6)

Page 24: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-24Copyright © 2003 Pearson Education, Inc.

class Pizarra extends Frame implements MouseListener { //Lista de objetos puede ir acá Pizarra(){ this.addMouseListener(this); } public void mousePressed(MouseEvent e){ //agregar objetos a lista puede ir en este u otro método repaint(); } public void mousePressed(MouseEvent e){;} public void mouseClicked(MouseEvent e){;} public void mouseReleased(MouseEvent e){;} public void mouseEntered(MouseEvent e){;} public void mouseExited(MouseEvent e){;}

public void paint(Graphics g){ //dibujar la lista de objetos puede ir en este método

}}

El método paint puede dibujar muchos objetos si se desea

Ventana gráfica (7)

Page 25: Figure: Lenguajes. Generaciones de lenguajes de programación

Slide 5-25Copyright © 2003 Pearson Education, Inc.

Crear clase nodoclass Nodo { int x, y;

public Nodo siguiente;

Nodo(int xx, int yy){ x = xx; y = yy; } public void dibujarNodo(Graphics g){

}}

y siguientex

yx

Page 26: Figure: Lenguajes. Generaciones de lenguajes de programación

Crear una lista:

2.- aux = new Nodo( );objeto

aux

null

lista

3.- aux.siguiente = lista;

4.- lista = aux;

objeto

aux

null

lista

objeto

aux

null

lista

5.- aux = new Nodo( );objeto null

lista

objeto

aux

6.- aux.siguiente = lista;objeto null

lista

objeto

aux

1.- Nodo aux, lista; null

aux

¿Qué se debe repetir?