programacion avanzada introducci´on - facultad de ...hp.fciencias.unam.mx/~alg/pavz/intro.pdf ·...

45
Programaci´ on Avanzada Introducci´ on Amparo L´ opez Gaona Agosto 2008 Amparo L´ opez Gaona () Programaci´ on Avanzada Introducci´ on Agosto 2008 1 / 35

Upload: vudang

Post on 01-Oct-2018

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Programacion AvanzadaIntroduccion

Amparo Lopez Gaona

Agosto 2008

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 1 / 35

Page 2: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Objetivo

Que el alumno conozca los conceptos basicos de la programacion orientadaa objetos junto con su diagramacion en UML.Adicionalmente adquirira experiencia en el desarrollo de programas enJava.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 2 / 35

Page 3: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Contenido

1 Conceptos generales.

2 Clases.

3 Objetos.

4 Herencia.

5 Manejo de excepciones.

6 Interfaces.

7 Iteradores.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 3 / 35

Page 4: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Bibliografıa

Lopez Gaona, Amparo. Introduccion al desarrollo de programas conJava. Las prensas de Ciencias. UNAM. 2007.

Booch, Grady. Object-oriented analysis and design with applications.The Addison-Wesley Object Technology Series. Addison-Wesley, 3rdedition. 2007.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 4 / 35

Page 5: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Metodo de Evaluacion

La evaluacion de los alumnos es en base al trabajo desarrollado a lo largodel curso. Este trabajo consiste en:

La realizacion de tareas que pueden ser ejercicios escritos, programas,o lecturas.

La aprobacion de examenes, y

Un programa final cuyo objetivo es aplicar los conocimientosadquiridos en el curso.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 5 / 35

Page 6: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Direcciones

Electronica: [email protected]

Fısica: Cub. 109 del Depto de Matematicas de la Facultad de Cienciasde la UNAM.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 6 / 35

Page 7: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Introduccion

El equipo de futbol de alumnos del posgrado en Computacion va aenfrentarse en un partido amistoso con el equipo de tutores. El partido serealizara a las 12 del dıa en pleno verano.Amalia, anticipando las necesidades de los jugadores solicita a un alumnoespecial que se encargue de llevar diez litros de agua de limon.

Opciones del alumno para cumplir con su tarea:

1 Preparar el agua en base a la receta de su abuela. (especificaciondetallada de los pasos a seguir para preparar agua de limon).

2 Acudir a un especialista, es decir a una persona que se dedicaprofesionalmente a preparar agua de limon.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 7 / 35

Page 8: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Introduccion

El equipo de futbol de alumnos del posgrado en Computacion va aenfrentarse en un partido amistoso con el equipo de tutores. El partido serealizara a las 12 del dıa en pleno verano.Amalia, anticipando las necesidades de los jugadores solicita a un alumnoespecial que se encargue de llevar diez litros de agua de limon.Opciones del alumno para cumplir con su tarea:

1 Preparar el agua en base a la receta de su abuela. (especificaciondetallada de los pasos a seguir para preparar agua de limon).

2 Acudir a un especialista, es decir a una persona que se dedicaprofesionalmente a preparar agua de limon.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 7 / 35

Page 9: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Introduccion

El equipo de futbol de alumnos del posgrado en Computacion va aenfrentarse en un partido amistoso con el equipo de tutores. El partido serealizara a las 12 del dıa en pleno verano.Amalia, anticipando las necesidades de los jugadores solicita a un alumnoespecial que se encargue de llevar diez litros de agua de limon.Opciones del alumno para cumplir con su tarea:

1 Preparar el agua en base a la receta de su abuela. (especificaciondetallada de los pasos a seguir para preparar agua de limon).

2 Acudir a un especialista, es decir a una persona que se dedicaprofesionalmente a preparar agua de limon.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 7 / 35

Page 10: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

... Introduccion (Diseno de solucion: Uso de una receta)

Agua de Lim’on

Ingredientes: Utensilios:1L Agua 1 Jarra3 Limones 1 cuchillo4 cucharadas de Az’ucar 1 exprimidor

1 palaProcedimiento:1. Lavar los limones.2. Incorporar el az’ucar al agua.3. Probar que est’e dulce, en caso necesario agregar m’as az’ucar.4. Agregar el jugo de los limones.

Un algoritmo es la especificacion de los datos y la descripcion de lospasos que deben seguirse para resolver un problema. En estos pasosesta implıcito el orden en que se deben ejecutar, cada paso esta definidosin ambiguedad y al ejecutarse en el orden especificado se obtiene siempreel mismo resultado.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 9 / 35

Page 11: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

... Introduccion (Diseno de solucion: Uso de una receta)

Agua de Lim’on

Ingredientes: Utensilios:1L Agua 1 Jarra3 Limones 1 cuchillo4 cucharadas de Az’ucar 1 exprimidor

1 palaProcedimiento:1. Lavar los limones.2. Incorporar el az’ucar al agua.3. Probar que est’e dulce, en caso necesario agregar m’as az’ucar.4. Agregar el jugo de los limones.

Un algoritmo es la especificacion de los datos y la descripcion de lospasos que deben seguirse para resolver un problema. En estos pasosesta implıcito el orden en que se deben ejecutar, cada paso esta definidosin ambiguedad y al ejecutarse en el orden especificado se obtiene siempreel mismo resultado.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 9 / 35

Page 12: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

... Introduccion

Diseno de solucion: (2) Acudir a un especialista.En este caso, se requiere una persona que sepa preparar el agua de limon,por ejemplo un juguero, y el joven se despreocupa de los detalles de lapreparacion.

Para resolver el problema se busca a una persona que ofrezca el servicioque se necesita, en caso un juguero (El Sr. Limon) y darle un mensaje conla peticion.En este caso, es responsabilidad del Sr. Limon satisfacer la peticion y paraello seguira su propio metodo para preparar agua de limon, el cliente nonecesita conocer este metodo.En el ejemplo, se habla en terminos de personas que realizan acciones, enel contexto de la programacion orientada a objetos se habla de objetos queresponden a mensajes recibidos mediante la ejecucion de metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 10 / 35

Page 13: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

... Introduccion

Diseno de solucion: (2) Acudir a un especialista.En este caso, se requiere una persona que sepa preparar el agua de limon,por ejemplo un juguero, y el joven se despreocupa de los detalles de lapreparacion.Para resolver el problema se busca a una persona que ofrezca el servicioque se necesita, en caso un juguero (El Sr. Limon) y darle un mensaje conla peticion.En este caso, es responsabilidad del Sr. Limon satisfacer la peticion y paraello seguira su propio metodo para preparar agua de limon, el cliente nonecesita conocer este metodo.En el ejemplo, se habla en terminos de personas que realizan acciones, enel contexto de la programacion orientada a objetos se habla de objetos queresponden a mensajes recibidos mediante la ejecucion de metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 10 / 35

Page 14: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Conceptos basicos de la orientacion a objetos

En la programacion orientada a objetos un programa es una coleccion deobjetos que se comunican entre sı a traves de mensajes con el objetivo dellegar a la solucion del problema.La POO tiene como conceptos basicos:

Objeto.

Mensaje.

Clase.

El marco conceptual en el cual se implementan estos conceptos incluye losconceptos de:

Abstraccion.

Encapsulacion.

Herencia.

Polimorfismo.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 11 / 35

Page 15: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Objeto

Un objeto es un ente (concreto o abstracto) involucrado en nuestroproblema, que exhibe un comportamiento bien definido.Constan de tres tipos de caracterısticas:

Identidad.Estructura. (asociado un estado)Comportamiento.

Ejemplos: ...

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 12 / 35

Page 16: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Objeto

Un objeto es un ente (concreto o abstracto) involucrado en nuestroproblema, que exhibe un comportamiento bien definido.Constan de tres tipos de caracterısticas:

Identidad.Estructura. (asociado un estado)Comportamiento.

Ejemplos: ...

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 12 / 35

Page 17: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Objeto

Un objeto es un ente (concreto o abstracto) involucrado en nuestroproblema, que exhibe un comportamiento bien definido.Constan de tres tipos de caracterısticas:

Identidad.Estructura. (asociado un estado)Comportamiento.

Ejemplos: ...

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 12 / 35

Page 18: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Clase

Una clase representa la esencia de los objetos.Es la abstraccion de un conjunto de objetos con caracterısticascomunes.Fabrica de objetos.Los objetos son ejemplares (instancias) de las clases.Es en donde se especifican los atributos y metodos que tendran susobjetos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 13 / 35

Page 19: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Clase

Una clase representa la esencia de los objetos.Es la abstraccion de un conjunto de objetos con caracterısticascomunes.Fabrica de objetos.Los objetos son ejemplares (instancias) de las clases.Es en donde se especifican los atributos y metodos que tendran susobjetos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 13 / 35

Page 20: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Marco conceptual

A PIE (Abstraction, Polymorphism, Inheritance, Encapsulation)

Abstraccion.Descripcion o especificacion de un sistema que haceenfasis en algunos detalles o propiedades y suprime otros.

Encapsulacion. Oculta los detalles de un objeto que no contribuyen asus caracterısticas esenciales, por ejemplo su estructura y laimplementacion de los metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 14 / 35

Page 21: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Marco conceptual

A PIE (Abstraction, Polymorphism, Inheritance, Encapsulation)

Abstraccion.Descripcion o especificacion de un sistema que haceenfasis en algunos detalles o propiedades y suprime otros.

Encapsulacion. Oculta los detalles de un objeto que no contribuyen asus caracterısticas esenciales, por ejemplo su estructura y laimplementacion de los metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 14 / 35

Page 22: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Marco conceptual

A PIE (Abstraction, Polymorphism, Inheritance, Encapsulation)

Abstraccion.Descripcion o especificacion de un sistema que haceenfasis en algunos detalles o propiedades y suprime otros.

Encapsulacion. Oculta los detalles de un objeto que no contribuyen asus caracterısticas esenciales, por ejemplo su estructura y laimplementacion de los metodos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 14 / 35

Page 23: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

... Marco conceptual

Herencia. Define relaciones entre clases que comparten estructura ocomportamiento (denominadas superclases) y las nuevas clasesagregan o redefinen los componentes de sus superclases.

Polimorfismo. Permitir utilizar el mismo nombre para metodos endistintas clases que realizan una accion en forma distinta.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 15 / 35

Page 24: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

¿Que es Java?

Lenguaje para POO desarrollado por James Gosling para SunMicrosystems, de distribucion gratuita:

Orientado a objetos.Facilita la escritura de codigo correcto.

No tiene apuntadores.Recolector de Basura.Fuertemente tipado.No tiene herencia multiple.

Incluye bibliotecas de clases e interfaces. java.lang, java.io,java.util, java.awt, java.applet, java.sql, etc.Extensible.

Extender clases existentes.Crear clases y paquetes.

Compilado e interpretado.Portable.Hilos Multiples (multithreaded).

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 16 / 35

Page 25: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Compilacion/Ejecucion de un programa

errores)

ErroresSi

No

Linux

System 8

Macintosh

JVM

Nomina.java

Nomina.class

Windows XP

(corrección de

javac Nomina.java

java Nomina

����

����

�����������������������������������

���������������

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 17 / 35

Page 26: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Elementos del lenguaje Java

Comentarios.

Tipos de datos.

Operadores.

Proposiciones.

Con estos elementos se pueden crear programas:

Objetos.

Clases.

Interaccion entre ellos.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 18 / 35

Page 27: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Comentarios

Existen tres formas de especificar comentarios en Java:

// Comentario de una lınea

/** Al estilo de C, C++, para abarcar muchas* l\’ineas*/

/*** Para generar documentaci\’on (p\’aginas HTML) de manera autom\’atica.* usando el sistema javadoc y los comandos para ello.* @author, @param, @return, @see, etc.*/

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 20 / 35

Page 28: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Identificadores

Identificador se construye como una sucesion de caracteres alfanumericosque empiezan con letra o guion bajo.

Rectangulo, a~no, edad, x25,leeDatos, etc.

Palabras reservadasabstract else interface staticboolean extends long superbreak false main switchbyte final native synchronizedcase finally new thiscatch float null throwchar for package throwsclass if private truecontinue implements protected trydefault import public voiddo instanceof return volatiledouble int short while

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 21 / 35

Page 29: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Identificadores

Identificador se construye como una sucesion de caracteres alfanumericosque empiezan con letra o guion bajo. Rectangulo, a~no, edad, x25,leeDatos, etc.

Palabras reservadasabstract else interface staticboolean extends long superbreak false main switchbyte final native synchronizedcase finally new thiscatch float null throwchar for package throwsclass if private truecontinue implements protected trydefault import public voiddo instanceof return volatiledouble int short while

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 21 / 35

Page 30: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Tipos de datos

Los tipos de datos son los elementos basicos a partir de los cuales se puededefinir la estructura de los objetos.Determinan el tipo de valor y de operacion que se puede hacer con undato.

Tipos primitivos.

Tipo Descripcion

byte Entero de 8 bits

short Entero de 16 bits

int Entero de 32 bits

long Entero de 64 bits

float Real en 32 bits

double Real en 64 bits

char Un caracter en 16-bits (Unicode)

boolean Booleano

Referencias.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 22 / 35

Page 31: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

... Tipos de datos

Con estos tipos de datos se pueden definir:

Variables. Especificando el tipo/clase del dato/objeto seguido de suidentificador:double salario, altura;double salario = 10000.00;

Constantes. Variables precedidas de la palabra final.final int IVA = 15;

Literales. Constantes sin identificador asociado y pueden ser:

Enteras. Numero entero con o sin signo. 8, 25, 7893, 023 6= 23.Reales. Numeros con o sin signo con punto decimal. 34.534, 34e2.Caracteres. ’a’, ’4’, etc. ’\t’, ’\n’,Cadenas de caracteres. Sucesiones de caracteres encerrados encomillas. "Soy una cadena con e~nes y comillas \ 2salto delınea \n"Booleanas. true, false.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 23 / 35

Page 32: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Operadores

Aritmeticos. +, -, *, /, %, ++, --.

Logicos: conjuncion &&, disyuncion ‖ y negacion !.

De relacion: >, <, >=, <=, == , !=

De asignacion: =

Asignacion sencilla: altura = 1.80;Asignacion multiple: i = j = k = l = a+b;Asignacion compuesta:var op= expr es equivalente a var = var op expr.suma = suma + dato;suma += dato;

Concatenacion de cadenas: +" Anita "+"lava "+"la "+"tina""La calificacion es "+ calificacion

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 24 / 35

Page 33: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Precedencia y asociatividad de operadores

Operador Descripcion Asoc++ -- Incremento y decremento (Pre) D++ -- Incremento y decremento (Post) I˜ Negacion de bits de un entero D! Negacion D- + Menos y mas unarios D(tipo) Conversion explıcita de tipo D* /% Multiplicacion, Division, Residuo I+ - Suma, resta I<<, >>, >>> Corrimientos de bits Iinstanceof <, <= > >= Operadores de relacion I== != Operadores de igualdad I& Conjuncion de bits Iˆ Disyuncion exclusiva, en bits I| Disyuncion de bits I&& Conjuncion I|| Disyuncion I?: Operador condicional D= op= Asignacion DAmparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 25 / 35

Page 34: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Alcance de una variable

El alcance de una variable es la porcion del programa en que una variablepuede ser usada. Este es dentro del bloque que se declaro y los bloquesinternos a el.

{ ...{ int i = 0;

...{double i = 8.9; ...}

}}

El alcance de una variable permite clasificarla en:

Variable miembro.

Variable local.

Parametro de un metodo.

Parametro de un manejador de excepciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 27 / 35

Page 35: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.

if (numerador/denominador < 1 && denominador != 0) ...if (denominador != 0 && numerador/denominador < 1) ...

La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Page 36: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.if (numerador/denominador < 1 && denominador != 0) ...

if (denominador != 0 && numerador/denominador < 1) ...La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Page 37: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.if (numerador/denominador < 1 && denominador != 0) ...if (denominador != 0 && numerador/denominador < 1) ...

La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Page 38: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Control de flujo/Comportamiento selectivo

if (condicion)bloque 1

elsebloque 2

Evaluacion de la condicion con corto circuito.Ejemplo: Determinar si el cociente en un numero de la forma num/den esmenor que uno.if (numerador/denominador < 1 && denominador != 0) ...if (denominador != 0 && numerador/denominador < 1) ...

La evaluacion del && se detiene cuando encuentra un valor falso.

La evaluacion del ‖ se detiene al encontrar un valor verdadero.

Sin la evaluacion de corto circuito se harıan las dos comparaciones.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 28 / 35

Page 39: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Comportamiento selectivo/Varias alternativas

Si se desea tomar el valor de una variable y de acuerdo a este hacer unconjunto de proposiciones se puede usar la proposicion switch.Por ejemplo imprimir el dıa de la semana correspondiente a un numero:

int dia;...switch (dia) {case 1: System.out.println("Lunes"); break;case 2: System.out.println("Martes"); break;case 3: System.out.println("Miercoles"); break;case 4: System.out.println("Jueves"); break;case 5: System.out.println("Viernes"); break;case 6: System.out.println("Sabado"); break;case 7: System.out.println("Domingo"); break;default: System.out.println("Numero de mes incorrecto!!!"); break;

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 30 / 35

Page 40: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Comportamiento iterativo

Repeticion opcional.Se evalua la condicion, si es verdadera se hace el bloque deinstrucciones o cuerpo.

while (condicion)bloque de instrucciones

Repeticion al menos una vez.Se realiza el cuerpo hasta que la condicion sea falsa.

dobloque de instrucciones

while (condicion)

Repeticion enumerativa

for (inicializacion; condicion; actualizacion)bloque de instrucciones

esta instruccion es equivalente a:

inicializacion;while (condicion) {

bloque de instrucciones;actualizacion;

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 31 / 35

Page 41: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Ejemplos

1 for (int i = 1; i <= n ; i++)fac *= i; //Calcula n!

2 Si en el cuerpo se modifica el valor de alguna de las variables delencabezado, el numero de repeticiones puede variar.

int limite = 1;for (int i = 0; i <= limite ; i++) {System.out.println(i);limite ++;

}

3 Es posible anidar las iteraciones:

for (int tabla = 1; tabla <= 10 ; tabla ++)for(int renglon =1; renglon < = 10; renglon++) {producto = tabla * renglon;System.out.println(tabla +"*" + renglon + " = " + producto);

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 33 / 35

Page 42: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Ejemplos

1 for (int i = 1; i <= n ; i++)fac *= i; //Calcula n!

2 Si en el cuerpo se modifica el valor de alguna de las variables delencabezado, el numero de repeticiones puede variar.

int limite = 1;for (int i = 0; i <= limite ; i++) {System.out.println(i);limite ++;

}

3 Es posible anidar las iteraciones:

for (int tabla = 1; tabla <= 10 ; tabla ++)for(int renglon =1; renglon < = 10; renglon++) {producto = tabla * renglon;System.out.println(tabla +"*" + renglon + " = " + producto);

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 33 / 35

Page 43: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Ejemplos

1 for (int i = 1; i <= n ; i++)fac *= i; //Calcula n!

2 Si en el cuerpo se modifica el valor de alguna de las variables delencabezado, el numero de repeticiones puede variar.

int limite = 1;for (int i = 0; i <= limite ; i++) {System.out.println(i);limite ++;

}

3 Es posible anidar las iteraciones:

for (int tabla = 1; tabla <= 10 ; tabla ++)for(int renglon =1; renglon < = 10; renglon++) {producto = tabla * renglon;System.out.println(tabla +"*" + renglon + " = " + producto);

}

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 33 / 35

Page 44: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Interrupcion del flujo

break Ocasiona la salida del switch y la ejecucion de la instruccioninmediatamente despues.

return Ocasiona la salida de un metodo y ejecucion de la instruccioninmediata a la llamada al metodo.

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 34 / 35

Page 45: Programacion Avanzada Introducci´on - Facultad de ...hp.fciencias.unam.mx/~alg/pAvz/intro.pdf · Adicionalmente adquirir´a experiencia en el desarrollo de programas en Java

Entrada/Salida

Existen tres flujos estandar para entrada/salida.

Entrada, referenciado por la variable de clase System.in que es unareferencia a un objeto que implementa el flujo (stream) estandar deentrada.

Salida, referenciado por System.out

Error, referenciado por System.err

Con el metodo System.in.read se lee un caracter y lo regresa o bien -1si no leyo nada.Para la salida (estandar o erronea) existen los metodos

print

println

Amparo Lopez Gaona () Programacion Avanzada Introduccion Agosto 2008 35 / 35