apuntes prog iii (java) jjpg[1]

Upload: frederic-moroni

Post on 10-Jul-2015

1.804 views

Category:

Documents


0 download

TRANSCRIPT

Programacin III

UAA

M.I. Jos de Jess Palos Garca

Primera Unidad: Introduccin a Java 1. Programacin Orientada a Objetos.La programacin orientada a objetos modela el mundo real, cualquier cosa del mundo puede ser modelada como un objeto. As una circunferencia es un objeto, un automvil es un objeto, una ventana es un objeto, un libro es un objeto e incluso un prstamo o una tarjeta de crdito son objetos. Un programa Java se denomina orientado a objetos debido a que la programacin en Java se centra en la creacin, manipulacin y construccin de objetos. Un objeto tiene propiedades (un estado) y un comportamiento. Las propiedades o el estado se detienen utilizando datos y el comportamiento se define utilizando mtodos. Los objetos se definen utilizando clases en Java. Una clase es similar a una plantilla para construir objetos. Con la excepcin de los tipos de datos primitivos, todo en Java es un objeto. En Java, al contrario de lo que sucede en C++, no hay funciones globales: todas las funciones se invocan a travs de un objeto. Por ejemplo, se puede definir un objeto cuadrado mediante una clase cuadrado (Fig. l.2), con un lado (propiedad) y calcularSuperficie como el mtodo que encuentre o calcule la superficie del cuadrado Un objeto es una realizacin concreta de una descripcin de una clase. El proceso de creacin de objetos se denomina instanciacin (crear instancias) de una clase. AI instanciar una clase, se crean objetos. As, es posible crear un objeto cuadrado instanciando la clase con un lado determinado, por ejemplo se puede crear un cuadrado de lado 10 y otro cuadrado de lado 25. Se puede encontrar el rea de los respectivos cuadrados usando el mtodo calcularSuperficie. Un programa consta de una o ms clases que se disponen en una jerarqua en modo rbol, de modo que una clase hija puede heredar propiedades y comportamientos de su clase padre (ascendente). Java con un conjunto de clases predefinidas, agrupadas en paquetes que se pueden utilizar en los programas. La programacin orientada a objetos proporciona mayor flexibilidad, modularidad y reusabilidad. En la actualidad est ya muy implantado este tipo de programacin y Java se es ahora uno de los lenguajes ms usados de propsito general. El paradigma orientado a objetos se enfoca a las caractersticas de comportamiento y estructura de las entidades como unidades completas, lo que nos permite disear software de manera modular y con un alto manejo de estructuras de datos complejas. El paradigma orientado a objetos se apoya en los siguientes conceptos: La Abstraccin (de datos) involucra la formulacin de un concepto (clase) poniendo atencin en las similitudes y diferencias entre las entidades de un conjunto, para extraer las caractersticas esenciales que lo distingan y evitar las caractersticas no relevantes. Y as, se establece una sola representacin del concepto que tenga esas caractersticas pertinentes. Es la capacidad de crear tipos de datos definidos por el usuario extrayendo las propiedades esenciales de un concepto, sin preocuparse de los detalles exactos de la 1

Programacin III

UAA

M.I. Jos de Jess Palos Garca

implementacin. Algunos simplemente lo definen como la capacidad de enfocarse en lo esencial. La Encapsulacin asegura que los usuarios de un objeto no alteren de manera inesperada el estado interno de un objeto; solo sus mtodos internos estn autorizados para acceder a ellos. Cada objeto expone una interfaz pblica que especifica como otros objetos podran interactuar con l. La abstraccin y la encapsulacin estn representadas por la clase. La clase es una abstraccin, porque define los atributos y mtodos de un determinado conjunto de objetos con caractersticas comunes, y es una encapsulacin por que constituye una caja negra que encierra tanto los datos que almacena como los mtodos que permiten manipularlos. La Herencia Es la capacidad de definir una nueva clase a partir de otra clase. De esta forma, la reutilizacin del cdigo est garantizada. Las clases estn clasificadas en una jerarqua estricta, donde la clase padre es conocida como superclase y la clase hijo como clase derivada. Esto significa que la clase derivada dispone de todos los atributos y mtodos de su superclase. El Polimorfismo es la propiedad que permite a una operacin tener diferente comportamiento en diferentes objetos. Es decir, diferentes objetos reaccionan de manera diferente al mismo mensaje (de modo que un mismo mtodo pueda tener mltiples implementaciones).

Estos conceptos son los pilares de la POO que permiten facilitar la comunicacin, incrementar la productividad y la consistencia, facilitar la modificacin de los programas y reducir la complejidad en esfuerzos de resolucin de problemas.

2. Orgenes de JavaJava no fue creado originalmente para la red internet. Sun Microsystems comenz a desarrollarlo con el objetivo de crear un lenguaje, independiente de la plataforma y del sistema operativo, para el desarrollo de electrnica de consumo (dispositivos electrnicos inteligentes, como televisores, vdeos, equipos de msica, etc.). El proyecto original, denominado Green comenz apoyndose en C++, pero a medida que se progresaba en su desarrollo el equipo creador de comenz a encontrarse con dificultades, especialmente de portabilidad. Para evitar estas dificultades, decidieron desarrollar su propio lenguaje y en agosto de 1991 naci un nuevo lenguaje orientado a objetos. Este lenguaje fue bautizado con el nombre de Oak. En 1993, el proyecto Green se volvi a renombrar y pas a llamarse First Penon Juc. Sun invirti un gran presupuesto y esfuerzo humano para intentar vender esta tecnologa, hardware y software, sin gran xito. A mitad de 1993, se lanz Mosaic, el primer navegador para la Web y comenz a crecer el inters por Internet (y en particular por la World Wide Web). Entonces, se redise el lenguaje para desarrollar aplicaciones para internet y, en enero de 1995, Oak se convirti en Java. Sun lanz el entorno JDK 1.0 en 1996, primera versin del kit de desarrollo de dominio pblico, que 2

Programacin III

UAA

M.I. Jos de Jess Palos Garca

se convirti en la primera especificacin formal de la plataforma Java. Desde entonces se han lanzado diferentes versiones, aunque la primera comercial se denomin JDK 1.1 y se lanz a principios de 1997. En diciembre de 1998 Sun lanz la plataforma Java 2 (que se conoci como JDK 1.2 durante su fase de pruebas beta). Esta versin de Java ya represent la madurez de la plataforma Java. Sun renombr Java 1.2 como Java 2. Los programas Java se pueden incluir ( o ) en pginas HTML y descargarse por navegadores Web para llevar animaciones e interacciones a los clientes Web. Sin embargo, la potencia de Java no se limita a aplicaciones Web, Java es un lenguaje de programacin de propsito general que posee caractersticas completas para programacin de aplicaciones independientes o autnomas. Java, como lenguaje, es fundamentalmente orientado a objetos. Se dise desde sus orgenes como verdadero lenguaje orientado a objetos, al contrario que otros lenguajes, como C++ y Ada, que tienen propiedades de lenguajes procedimentales. La programacin orientada a objetos (POO) es tambin, actualmente, un enfoque de programacin muy popular que est reemplazando poco a poco a las tcnicas tradicionales de programacin procedimental o estructurada. Tarea Investigar versiones de Java ms recientes www.sun.com Java SE, Java EE y su evolucin.

3. El entorno de desarrollo de Java 3.1.El compilador de JavaEl significado de Java tal y como se le conoce en la actualidad es el de un lenguaje de programacin y un entorno para ejecucin de programas escritos en el lenguaje Java. AI contrario que los compiladores tradicionales, que convierten el cdigo fuente en instrucciones a nivel de mquina, el compilador Java traduce el cdigo fuente Java en instrucciones que son interpretadas por la Mquina Virtual Java (JVM, Java Virtual Machine). A diferencia de los lenguajes C y C++ en los que est inspirado, Java es un lenguaje interpretado. Aunque hoy en da Java es por excelencia el lenguaje de programacin para Internet, Java no comenz como proyecto Internet y por esta circunstancia es idneo para tareas de programacin de propsito general y, de hecho, muchas de las herramientas Java estn escritas en Java. Java como lenguaje de Internet Java es un lenguaje para programar en Internet que trata de resolver dos problemas claves con el contenido de Internet: 1. En la actualidad, el contenido de la WWW es pasivo y esttico. 2. La entrega (Deliverry) del contenido WWW es dependiente de la configuracin de cada navegador Web de usuario. En el mundo de la Web, Java es una tecnologa facilitadora que permite a los desarrolladores crear pginas Web que se entregarn de modo consistente a todos los usuarios con un navegador habilitado para Java y con independencia de la plataforma hardware y el sistema operativo que se est utilizando. Dado que el cdigo fuente se 3

Programacin III

UAA

M.I. Jos de Jess Palos Garca

interpreta, si existe un intrprete Java para una plataforma especfica hardware o sistema operativo, se pueden escribir programas con el conocimiento de que sern tiles en esa plataforma.

La Figura anterior muestra cmo el cdigo fuente Java se transfiere en Internet. En la computadora servidor (host) se almacena el cdigo fuente. Cuando un usuario de una computadora local se conecta con el servidor a travs de Internet mediante un navegador habilitado para Java, el cdigo fuente se transfiere de la computadora servidor a la computadora local. Java como lenguaje de propsito general A medida que Java se populariza en desarrollos de Internet, gana tambin como lenguaje de propsito general. Java es totalmente portable a gran variedad de plataformas hardware y sistemas operativos. Java tiene muchos conceptos de sintaxis de C y C++, especialmente de C++, del que es un lenguaje derivado. Aade a C++ propiedades de gestin automtica de memoria y soporte a nivel de lenguaje para aplicaciones multihilo. Por otra parte, Java, en principio a nivel medio, es ms fcil de aprender y ms fcil de utilizar que C++ ya que las caractersticas ms complejas de C++ han sido eliminadas de Java: herencia mltiple, punteros (apuntadores) y sentencia goto entre otras. Las implementaciones de la Mquina Virtual Java pueden ser muy eficaces y eso hace posible que los programas Java se ejecuten tan rpidamente como los programas C++. Esta caracterstica clave de Java, unida a sus fortalezas como lenguaje de Internet, lo hacen muy adecuado para desarrollos en sistemas cliente/servidor, soporte masivo de los sistemas informticos de la mayora de las empresas y organizaciones. Las propiedades que se vern ms adelante hacen a Java doblemente idneo para desarrollos cliente/servidor y para desarrollos de Internet. Java ha conseguido una enorme popularidad. Su rpida difusin e implantacin en el mundo de la programacin en Internet y fuera de lnea (offline) ha sido posible gracias a sus importantes caractersticas. Los creadores de Java escribieron un artculo, ya clsico, en el que definan al lenguaje como sencillo, orientado a objetos, distribuido, interpretado, robusto, seguro, arquitectura neutra, alto rendimiento, multihilo y dinmico

4

Programacin III

UAA

M.I. Jos de Jess Palos Garca

3.2.Arquitectura de la tecnologa Java (JRE, JVM, GC)La tecnologa de java se sustenta en 3 mecanismos principales que le permiten adquirir todos los beneficios de un sistema multiplataforma, estos son: JRE El ambiente en tiempo de ejecucin, es el software responsable de permitir al usuario final ejecutar las aplicaciones java, posee una coleccin o librera estndar de clases que son indispensables para el funcionamiento de los programas java, adems de incluir una maquina virtual para el lenguaje java. JVM La maquina virtual de java (Java VM) provee una especificacin de plataforma la cual le permite ejecutar cualquier programa compilado en java (bytecode). De esta forma el compilador de java toma cualquier cdigo hecho en java y genera un archivo precompilado llamado bytecode que es un conjunto de instrucciones que puede ser interpretado por cualquier maquina virtual de java.

Garbage Collector Muchos lenguajes de programacin permiten alojar memoria de manera dinmica en tiempo de ejecucin. El proceso para alojar memoria vara de acuerdo a las caractersticas del lenguaje y en ciertas ocasiones los bloques de memoria reservados nunca son liberados, principalmente porque esta tarea se deja a cargo del programador (como en C/C++). Java provee un mecanismo de recoleccin de bloques de memoria intiles y los remueve de manera automtica. Durante la ejecucin de los programas en la maquina virtual, el recolector de basura comienza a verificar si existen bloques de memoria (objetos) que han dejado de ser usados o referenciados de tal manera que los marca para que en el prximo ciclo de verificacin sean eliminados y se recupere espacio de memoria.

5

Programacin III

UAA

M.I. Jos de Jess Palos Garca

A continuacin se muestra el esquema en tiempo de ejecucin de la tecnologa java:

El cdigo fuente (Ejemplo.java) es compilado y se genera un archivo convertido a bytecode (Ejemplo.class), ste es el archivo que ser cargado y ejecutado en alguna maquina objeto. Al tiempo de ejecucin, el cdigo en bytecode es ledo, verificado y puesto para su ejecucin en el intrprete. El interprete tiene dos funciones ejecutar bytecodes y hacer las llamadas apropiadas al hardware. En algunos ambientes de ejecucin una porcin de la verificacin de bytecode es compilada en cdigo nativo de mquina y ejecutado directamente en la plataforma de hardware, por lo que la velocidad de interpretacin-ejecucin se acelera. El lenguaje de programacin java requiere de una infraestructura necesaria para su desarrollo y ejecucin, inicialmente veremos como estn constituidas sus plataformas de ejecucin y desarrollo, posteriormente mencionaremos algunas aplicaciones que se pueden emplear como ambiente ambientes de desarrollo para facilitar la programacin de aplicaciones. JRE y JSDKJRE

Es un paquete que contiene todo el software necesario para correr una aplicacin desarrollada en Java, dentro del paquete esta contenida la librera de clases, que son programas generados en java (bytecode) y que estn expresamente construidos para servir de apoyo para la construccin de aplicaciones por parte del usuario, adems se cuenta con: Libreras de integracin que permiten construir aplicaciones de comunicacin externa. Libreras de interfase grafica de usuario AWT/Swing. Libreras para el manejo de multimedia. Una maquina virtual de java adecuada a la plataforma que permite ejecutar las aplicaciones JSDK Es el conjunto de herramientas para el desarrollo de aplicaciones en Java, esta compuesto por las siguientes herramientas de programacin: javac Compilador de java que se encarga de convertir cdigo fuente a bytecode de java. jar Programa que se encarga de manipular libreras de clases ya compiladas y empaquetadas. 6

Programacin III

UAA

M.I. Jos de Jess Palos Garca

javadoc Programa que se encarga de extraer documentacin automticamente partiendo de los comentarios en el cdigo fuente. jdb Depurador de programas. Adems de las herramientas adicionales para desarrolladores, se agrega el paquete JRE que contiene todas las libreras de clase y la maquina virtual en la que se producirn y ejecutaran las aplicaciones. Las herramientas de desarrollo estn disponibles en 3 posibles versiones: Edicin Micro: Se emplea en ambientes con recursos limitados. Edicin Estndar: Es la edicin comnmente empleada por la mayora de los programadores. Edicin Empresarial: Es una edicin que posee una coleccin muy amplia de recursos adicionales para transacciones en Internet, seguridad y acceso a recursos remotos.

3.3.Ambientes de desarrolloLos ambientes de desarrollo son aplicaciones que nos permiten escribir en un lenguaje de programacin de manera sencilla, ya que se puede verificar gradualmente el producto que estemos desarrollando. De esta forma el ambiente de desarrollo se encuentra totalmente independiente de la plataforma de Java que se emplee, es decir que se puede emplear cualquier versin del kit de desarrollo de software (JSDK) de Sun. Existen varios ambientes de desarrollo en el mercado, los hay desde los libres que no tienen algn costo, hasta las herramientas ms sofisticadas y caras del mercado. El lenguaje Java (plataforma Java) y el ambiente de desarrollo integral no son una sola aplicacin, en tal caso debern ser instaladas de manera independiente. Se recomienda inicialmente instalar la plataforma de Java (JSDK) y posteriormente el ambiente de desarrollo que ms se ajuste a sus necesidades. En la red existen disponibles varios ambientes para el desarrollo de software como: NetBeans: una herramienta creada por una filial de Sun Microsystems, es una buena herramienta de diseo aunque algo lenta si se cuenta con poca memoria principal. Permite el diseo RAID (diseo rpido de interfase) Gel: una herramienta de distribucin libre bastante flexible en uso de recursos y fcil de emplear debido a su poca complejidad, permite la opcin de auto-completar texto. JCreator: es una herramienta amigable y fcil de emplear, cuenta con una versin libre bastante austera y una distribucin comercial bastante competitiva. Es importante recordar que en el mercado se encuentran disponibles varias distribuciones libres para ambientes de desarrollo integral en Java, as que se deja al criterio del alumno el uso de cualquiera de ellas. Tambin se encuentra disponible una plataforma de diseo integral para Java, conocida como Eclipse, desarrollada por IBM. Eclipse es algo ms que un simple ambiente de desarrollo integral (JDT), ya que cuenta con su propio kit de desarrollo para compilacin (ECJ). Desde un principio se considero a Eclipse como una distribucin libre para Java, por lo que su popularidad no se ha disminuido ante su mas claro competidor Sun Microsystems. Desafortunadamente por cuestiones de licencias Eclipse requiere la instalacin de JRE para mantener la portabilidad.

7

Programacin III

UAA

M.I. Jos de Jess Palos Garca

4. Nomenclatura en JavaLos nombres de Java son sensibles a las letras maysculas y minsculas. Por ejemplo, las variables masa, Masa y MASA son consideradas variables diferentes. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten mucha libertad al programador.

4.1.Convenciones de escritura en JavaA continuacin se muestran solo algunas convenciones de escritura (codificacin) del lenguaje java: Package.- Los paquetes son colecciones de clases distribuidas (organizadas) en directorios y por lo general se encuentran relacionadas entre s. El nombre de los paquetes se escriben en minsculas.package proyecto.objetos

Clases.- Los nombres de las clases deben ser sustantivos (desde un punto de vista meramente didctico se le define como el tipo de palabra que significa persona, animal o cosa concreta o abstracta), en algunos casos mezclados, con la primera letra de cada palabra en mayscula.class EjemploUno

Mtodo.- Los nombres de los mtodos deben ser verbos, con palabras mezcladas, con la primera letra en minscula. En caso de emplear mas palabras se le recomienda hacer la primera letra mayscula.calculaPromedio()

Variables.- Todas las variables pueden ser mezclas de palabras procurando emplear la letra minscula para la primera y empleando las letras maysculas para separar al resto de las palabras.apellidoPaterno

Procure limitar el empleo de variables simples (a, b, , x) para el manejo de bucles de control. Constantes.- se recomienda el uso de las constantes con letras maysculas, separando las palabras con guin inferior.TOPE_MAXIMO

8

Programacin III

UAA

M.I. Jos de Jess Palos Garca

4.2.Palabras reservadasLas palabras reservadas son palabras con un significado especial dentro de un lenguaje. En especial, estas palabras son empleadas por el lenguaje Java, y el programador no puede utilizarlas como identificadores. Algunas de estas palabras le resultarn familiares al programador del lenguaje C/C++. Las palabras reservadas sealadas con un asterisco (*) no se utilizan en las ltimas versiones de Java.

Las palabras reservadas se pueden clasificar en las siguientes categoras: Tipos de datos: boolean, float, double, int, char Sentencias condicionales: if, else, switch Sentencias iterativas: for, do, while, continue Tratamiento de las excepciones: try, catch, finally, throw Estructura de datos: class, interface, implements, extends Modificadores y control de acceso: public, private, protected, transient Otras: super, null, this.

4.3.Tipos de datos (primitivos, arreglos, referenciados)El lenguaje de programacin Java cuenta con varios tipos de datos. Estos caen en dos grandes categoras: los tipos clase y los tipos primitivos. Los tipos primitivos son valores simples, no son objetos. Los tipos clase son usados para tipos de datos ms complejos, incluyendo todos los tipos que el programador desarrollara. Datos primitivos El lenguaje Java define ocho tipos primitivos, los cuales pueden ser considerados en cuatro categoras: Lgicos boolean Texto char Enteros byte, short, int y long Punto flotante float y double

9

Programacin III

UAA

M.I. Jos de Jess Palos Garca

Lgicos Los valores lgicos son representados usando los tipos bolanos, los cuales toman uno de dos posibles valores literales: true (verdadero) false (falso). A continuacin se muestra un cdigo de ejemplo que declara e inicializa una variable de tipo boolean. boolean verdad = true; No existe ajuste (cast) entre valores de tipo entero y bolanos, como ocurre en otros lenguajes de programacin como C/C++. Solo pueden usarse cualquiera de las dos literales definidas. Texto El tipo de datos char de Java se utiliza para representar un carcter, ste tipo emplea 16 bits para el almacenamiento de un carcter y lo efecta en formato Unicode. Unicode presenta dos ventajas: 1. permite a Java trabajar con los caracteres de todos los idiomas. 2. sus primeros 127 caracteres coinciden con los del cdigo ASCII. Ahora mostramos un ejemplo de declaracin e inicializacin de una variable tipo carcter. char ch = A; Un literal carcter representa un carcter o una secuencia de escape encerrada entre comillas simples. Por ejemplo, c , D . Una cadena de caracteres (string), es un conjunto de cero o ms caracteres (incluyendo las secuencias de escape) encerrados entre dobles comillas. Los caracteres Java utilizan Unicode, que es un esquema universal para codificacin de caracteres en 16 bits establecido por el consorcio Unicode para soportar el intercambio, proceso y presentacin de los textos escritos en los diferentes idiomas del mundo (vase el sitio Web de Unicode en www . Unicode. org). Unicode toma dos bytes, expresados en cuatro nmeros hexadecimales que corren de ' \u0000' a'\uFFFF'. La mayora de las computadoras utilizan el cdigo ASCII (Unicode incluye los cdigos ASCII de '\u0000' a '\u00FF'). En Java se utiliza el cdigo ASCII, as como Unicode y las secuencias de escape como caracteres especiales. Precaucin: Una cadena debe encerrarse entre dobles comillas. Un carcter es un nico carcter encerrado entre simples comillas. Un carcter Unicode se debe representar mediante el cdigo ' \uXXXX ' . 10

Programacin III Enteros

UAA

M.I. Jos de Jess Palos Garca

Existen cuatro tipos enteros en Java. Cada tipo es declarado usando una de sus palabras claves, byte, short, int long. Se pueden crear literales de tipos enteros usando la forma decimal, octal hexadecimal. 2 077 0xBAAC Forma decimal del numero 2 0 indica un nmero octal 0x indica un nmero hexadecimal

Todas las literales enteras son de tipo int a no ser que se especifique lo contrario, es decir se puede agregar al final de la literal numrica la letra L, que indica que el valor ser entero largo.Punto flotante

Los tipos flotantes pueden declararse como float o double. A continuacin veremos algunos ejemplos de nmero flotantes. Las literales flotantes pueden incluir el punto decimal o el termino exponente (E), adems de las letras F para float y D para double. 3.14 6.02E23 2.718F 123.4E+306D valor simple flotante (double) valor de punto flotante largo valor de punto flotante simple valor doble flotante

Arreglos unidimensionales Los arreglos son estructuras de datos que agrupan elementos del mismo tipo (homogneo). Los arreglos nos permiten referirnos a grupos de objetos por un nombre comn. Los arreglos unidimensionales, son aquellos arreglos que cuentan nicamente con una fila y con una serie de columnas que determinan la dimensin del arreglo. En Java es posible crear arreglos de cualquier tipo, ya sea datos primitivos o clases (tipos compuestos). Declaracin de arreglos La sintaxis es la siguiente: [ ] ;

Cuando queremos que una variable sea un arreglo nicamente anteponemos los corchetes, esto le indica al compilador que la variable de la derecha ser una referencia de arreglo. En el lenguaje Java un arreglo es un objeto an cuando el arreglo sea de tipos de datos primitivos, adems como el resto de los objetos, la declaracin no crea el objeto por s mismo. En su lugar la declaracin de un arreglo crea una referencia que puede ser empleada para un arreglo. El espacio en memoria usado para los elementos del arreglo, es dinmico, por lo que es necesario emplear el operador new para crear el espacio para los elementos del arreglo.

11

Programacin III Creacin de referencias para arreglos

UAA

M.I. Jos de Jess Palos Garca

Se deben crear arreglos como objetos, empleando el operador new, por ejemplo, suponga la creacin de un arreglo de caracteres (primitivo).char[] s; s = new char[26]; for ( int i=0; i= b) for(i=0;i >>> Operacin Desplaza los bits de n a la izquierda k veces Desplaza los bits de n a la derecha k veces Desplaza los bits de n a la derecha k veces (sin signo) Ejemplo nk n>>>k

Operadores de lgica de bits Operador & | ^ ~ Operacin Operador and a nivel de bit Operador or a nivel de bit Operador de or exclusivo Operador de complemento Ejemplo n1 & n2 n1 | n2 n1 ^ n2 ~n1

18

Programacin III

UAA

M.I. Jos de Jess Palos Garca

4.6.2. Precedencia de operadoresCuando en una sentencia aparecen varios operadores el compilador deber de elegir en qu orden aplica los operadores. A esto se le llama precedencia. Los operadores con mayor precedencia son evaluados antes que los operadores con una precedencia relativa menor. Cuando en una sentencia aparecen operadores con la misma precedencia: Los operadores de asignacin son evaluados de derecha a izquierda. Los operadores binarios, (menos los de asignacin) son evaluados de izquierda a derecha. Se puede indicar explcitamente al compilador de Java cmo se desea que se evale la expresin con parntesis balanceados ( ). Para hacer que el cdigo sea ms fcil de leer y mantener, es preferible ser explcito e indicar con parntesis que operadores deben ser evaluados primero. La siguiente tabla muestra la precedencia asignada a los operadores de Java. Los operadores de la tabla estn listados en orden de precedencia: cuanto ms arriba aparezca un operador, mayor es su precedencia. Los operadores en la misma lnea tienen la misma precedencia: Tipo de operadores Operadores posfijos Operadores unarios Creacin o conversin Multiplicacin Suma Desplazamiento Comparacin Igualdad AND a nivel de bit OR a nivel de bit XOR a nivel de bit AND lgico OR lgico Condicional Asignacin Operadores de este tipo [ ] . (parmetros) expr++ expr-++expr --expr +expr -expr ~ ! new (tipo) expr */% + 70) { clasificacion='C'; }else { clasificacion='F'; }

1.2.2. Sentencia switchMediante la sentencia switch se puede seleccionar entre varias sentencias segn el valor de cierta expresin. La forma general de switch es la siguiente:switch ( expresionMultivalor ) { case valor1 : conjuntoDeSentencias; break; case valor2 : conjuntoDeSentencias; break; case valor3: conjuntoDeSentencias; break; default: conjuntoDeSentencias; break; }

Un ejemplo sencillo:int meses; switch ( meses ){ case 1: System.out.println( "Enero" ); break; case 2: System.out.println( "Febrero" ); break; case 3: System.out.println( "Marzo" ); break; //Demas meses // . . . case 12: System.out.println( "Diciembre" ); break; default: System.out.println( "Mes no valido" ); break; }

24

Programacin III

UAA

M.I. Jos de Jess Palos Garca

1.3.Estructuras de Repeticin 1.3.1. Iteraciones con for, while, do whileEl bucle while.- es el bucle bsico de iteracin. Sirve para realizar una accin sucesivamente mientras se cumpla una determinada condicin. La forma general del bucle while es la siguiente:while ( expresinBooleana ) { sentencias; }

Por ejemplo, multiplicar un nmero por 2 hasta que sea mayor que 100:int i = 1; while ( i