View
142
Download
1
Category
Preview:
Citation preview
Figure:
Lenguajes
Generaciones de lenguajes de programación
Evolución de los paradigmas de lenguajes
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
Lenguaje imperativo
Proceso de traducción
Reconocedores de lenguajeDiagrama sintáctico de una sentencia if
Reconocedores de lenguajesDiagrama sintáctico de una expresión
Proceso completo de creación de un programa
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
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
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}
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}
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.
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.
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
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
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
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)
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)
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)
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)
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)
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)
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
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?
Recommended