Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de...

Post on 25-Jan-2016

221 views 0 download

Transcript of Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de...

Java

Java es un lenguaje de programación presentado en 1995 enfocado a:

• soportar los fundamentos de la programación orientada a objetos.

• generar código independiente de la arquitectura de la computadora

Actualmente se utiliza particularmente para desarrollar aplicaciones para Internet.

Introducción a la Programación Orientada a Objetos

VARIABLES, CONSTANTES Y EXPRESIONES

ASIGNACIÓN.

TIPOS ELEMENTALES. PRECEDENCIA DE LOS OPERADORES. CASTING

ESTRUCTURAS DE CONTROL. CONDICIONAL E ITERACIÓN. RECURSIVIDAD

ESTRUCTURA DE UNA CLASE EN JAVA.

MÉTODOS.

EL MÉTODO MAIN.

Elementos Básicos de Java

Variables y Constantes

Declaración [< modificador>] < tipo > < ident > [ , < ident > ] ;

Introducción a la Programación Orientada a Objetos

int i,I,j101;

static char fin =‘.’;

boolean eureka;

La declaración establece el nombre, tipo, alcance y determina si es variable o constante.Una declaración de constante establece también el valor.En el caso de una variable el valor puede quedar establecido en la declaración o no.

Tipos de Dato

Factorizar Propiedades. Todas las variables de un tipo comparten una misma representación, toman valores de un mismo conjunto y pueden participar de las mismas operaciones.

Efectuar Controles. El lenguaje establece restricciones que aseguran la consistencia entre los operadores provistos y los operandos. Estas restricciones van a ser controladas por el compilador o en ejecución.

Administrar la Memoria. El compilador decide cuánto espacio de almacenamiento va a requerir cada dato en ejecución, de acuerdo a su tipo.

Tipos Elementales

Introducción a la Programación Orientada a Objetos

Nombre de Tipo

valor memoria requerida

Rango

byte integer 1 byte -128 a 127

short integer 2 bytes -32768 a 32767

int integer 4 bytes -2147483648 a2147483647

long integer 8 bytes

float floating-point 4 bytes

double floating-point 8 bytes

char single character

2 bytes UNICODE

boolean true or false 1 bit

Tipos Elementales

Introducción a la Programación Orientada a Objetos

Tipos de Dato

Operadores booleanos•Conjunción •Disyunción •Negación

Operadores relacionales

igual ==

distinto !=

menor <

menor o igual <=

mayor >

mayor o igual >=

Expresiones

Introducción a la Programación Orientada a Objetos

Evaluación

•Completa•En cortocircuito

Conversión

Jerarquía de Tipos

byte →short→int→long→float→double

Expresiones

Introducción a la Programación Orientada a Objetos

Reglas de Precedencia y Asociatividad

++, --, !, unary – undary +, type-cast

*, /, %

+, -

<, >, <=, >=

==, !=

&&

||

?:

=, +=, -=, *=, /=, %=

Expresiones

Introducción a la Programación Orientada a Objetos

Asignación

< ident > = < expresion >;

< tipo >< ident > = < exp > [,< ident > = < exp > ];

Cuando la expresión que aparece a la derecha de una asignación no coincide con el tipo de la variable que está a la izquierda puede producirse una conversión automática o un error.

El error puede salvarse mediante una operación de casting.

Expresiones

Introducción a la Programación Orientada a Objetos

Conversión automática de tipos

Expresiones

Introducción a la Programación Orientada a Objetos

Si al hacer la conversión de un tipo a otro se dan las 2

siguientes premisas:

•Los dos tipos son compatibles.

•El tipo de la variable destino es de un rango mayor al tipo de

la variable que se va a convertir.

Entonces, la conversión entre tipos es automática

Casting

Expresiones

Introducción a la Programación Orientada a Objetos

•Cuando  el número a convertir está fuera del rango del tipo a que se quiere convertir, entonces la conversión automática es imposible.

•El programador se ve obligado a realizar una conversión forzada (explicita), que se denomina casting.

•La sintaxis para realizar un casting es:

destino = (tipo_destino) valor

•En el caso de los tipos numéricos, al "recortar" el valor de la variable de rango mayor perdemos precisión

Estructuras de Control en Java

Instrucciones

< declaración de variable > | < expresion > ; | < bloque > | < instruccion if > | < instruccion while > | < instruccion for > |< instruccion switch > | < instruccion try > | < instruccion return > | < break > | < continue > |

Introducción a la Programación Orientada a Objetos

< instruccion > ::=

Estructuras de Control en Java

{ [< instruccion > ]* }

{ promedio = total / n ; System.out.print("El promedio es "); System.out.println(promedio); }

{ int temp; temp = x; x = y;

y = temp; }

Introducción a la Programación Orientada a Objetos

< bloque> ::=

Bloques

Estructuras de Control en JavaBloques

Un bloque define un nuevo ambiente de referenciamiento.

Las variables declaradas dentro de un bloque son locales y no son visibles fuera de él.

Un mismo nombre no puede ligarse a dos variables en el mismo bloque ni en bloques anidados.

Una variable puede ser referenciada a partir de la instrucción que sigue a su declaración.

Adoptaremos la convención de declarar las variables de un bloque al principio e inicializarlas explícitamente.

Introducción a la Programación Orientada a Objetos

Estructuras de Control en Java

if < expresion booleana > < instruccion > else < instrucción >

Condicional

Introducción a la Programación Orientada a Objetos

< instruccion if > ::=

if (x > y) { max = x; min = y ;} else { max = y; min = x ;}

if (x > y) { int temp; temp = x; x = y; y = temp;}

if (x > y) max = x;else max = y;

Condicional

Estructuras de Control en Java

Introducción a la Programación Orientada a Objetos

Estructuras de Control en Java

if (x > y) if (x > z) max = x; else max = z; else if (y > z) max = y; else max = z;

Condicional

Introducción a la Programación Orientada a Objetos

if (nota > 9) estado = ´A´; else if (nota > 7) estado = ´B´ ; else if (nota > 4) estado = ´C´ ; else if (nota < 4) estado = ´D´ ;

Estructuras de Control en Java

estado = ´B´;if (promedio > 7) if (inasistencias<3) estado = ´A´; else estado = ´C´;

Condicional

Introducción a la Programación Orientada a Objetos

estado = ´B´; if (promedio > 7) { if (inasistencias<3) estado = ´A´; } else estado = ´C´

Estructuras de Control en Java

switch

switch (<expression>) { [ case <constante> : <instruccion> ]* default: <instruccion> }

Condicional

Introducción a la Programación Orientada a Objetos

<instruccion switch>::=

Estructuras de Control en Java

switch switch ( nota ) { case 10: case 9: estado = ´A´ ; break; case 8: case 7: estado = ´B´ ; break; case 6: case 5: estado = ´C´ ; break; default: estado = ´D´; }

Condicional

Introducción a la Programación Orientada a Objetos

Estructuras de Control en Java

while (<expresion booleana>) <instrucción>

do <instrucción>while (<expresion booleana>)

Iteración

Introducción a la Programación Orientada a Objetos

< instruccion while > ::=

< instruccion do while> ::=

Estructuras de Control en Java

int numero; int digitos = 0; System.out.println (“Ingrese el numero”);numero = ES.leerEntero ();while ( número > 0 ) { numero /=10; digitos++; } System.out.println(digitos);

Iteración

Introducción a la Programación Orientada a Objetos

Estructuras de Control en Java

int numero; int digitos = 0; System.out.println (“Ingrese el numero”);numero = ES.leerEntero ();do { numero /=10; digitos++; } while ( número > 0 ); System.out.println(digitos);

Iteración

Introducción a la Programación Orientada a Objetos

Estructuras de Control en Java

for ( <asignacion>; <expresion> ; <expresion>) [ <instrucción>]*

for ( n = 1 ; n <= 10 ; n++ ) System.out.println( n, n*n );

Iteración

for ( int n = 1 ; n <= 10 ; n++ ) System.out.println( n, n*n );

Introducción a la Programación Orientada a Objetos

< instruccion for > ::=

Estructuras de Control en Java

sum = 0 ; for ( n = 1 ; n <= 10 ; n++ ) sum = sum + n ;

for ( n = 1, sum = 0 ; n <= 10 ; n++ ) sum = sum + n ;

for (n=1,sum=0; n<=10; sum=sum+n,n++);

Iteración

Introducción a la Programación Orientada a Objetos

for ( n = 1, sum = 0 ; sum <= 100 ; n++ ) sum = sum + n ;

for ( int n = 1, sum = 0 ;sum <= 100 ; n++ ) sum = sum + n ;

Estructura de un programa en JAVA

La unidad básica de programación en Java es la clase.

Un programa en Java está constituido por una colección de clases .

La implementación de una clase consiste en definir sus miembros:

•Atributos: variables de instancia y de clase

•Servicios: constructores y métodos

Introducción a la Programación Orientada a Objetos

Estructura de un programa en JAVA

( ) { } [ ] : ,

Símbolos separadores

Comentarios

•Los que ocupan varias líneas y se encierran entre símbolos /* y */ o /** y */•Los que comienzan con el símbolo // y terminan junto con la línea

Introducción a la Programación Orientada a Objetos

Estructura de un programa en JAVA

[ < Modificador > ]* [< Tipo del Resultado > ]

< Identificador > ( [< Parámetros Formales > ]* )

{ < bloque > }

MétodosSintaxis

Introducción a la Programación Orientada a Objetos

Estructura de un programa en JAVA

Métodos

Para que un programa en JAVA pueda ejecutarse es necesario definir una clase que incluya un método llamado main().

class Hello { public static void main (String args[]) { System.out.println("Hello World!"); }}

Introducción a la Programación Orientada a Objetos

Estructura de un programa en JAVA

Métodos

•La primera línea define una clase llamada Hello.

•La segunda clase define el método main, asociado a los modificadores public y static. Es importante que no omitan ni alteren el encabezamiento de main.

•La palabra void indica que el método main no retorna ningún valor.

•La forma (String args[]) es la definición de los argumentos que recibe el método main.

•La instrucción System.out.println muestra un literal en pantalla.

Introducción a la Programación Orientada a Objetos

BlueJ

Introducción a la Programación Orientada a Objetos

Procesador Número

ProcesarNumero

sumaDigitos ( n:entero ) : entero

estaDigito ( n:entero, d:entero ) : booleano

sumaP ( n:entero ) : booleano

class ProcesadorNumero {public static int sumaDig(int n ){// Retorna la suma de los dígitos del número n}public static boolean estaDig (int n, int d ){//Retorna true si y solo si d es un dígito del número n }}

• Clases como unidad de programación• Identificadores• Modificadores public static• Símbolos delimitadores { } /* */ // () , ;

Elementos de Java

public static int sumaDig(int n ){//Retorna la suma de los dígitos del número n int s=0;while (n>0) { s = s + n % 10; n = n/10; }return s;}

El tipo elemental intParámetros y variables localesAsignaciones y expresiones, operadores y operandosLa iteración whileLa instrucción de retorno

Elementos de Java

Para que un programa en JAVA pueda ejecutarse es necesario que una clase incluya un método llamado main().

public static void main (String args[]) { int s = sumaDig(25036); System.out.println(“La suma es “+s); }

Introducción a la Programación Orientada a Objetos

Elementos de Java

•Es importante que no omitan ni alteren el encabezamiento de main.

•La palabra void indica que el método main no retorna ningún valor.

•La forma (String args[]) es la definición de los argumentos que recibe el método main.

•La instrucción System.out.println muestra un literal en pantalla.

Introducción a la Programación Orientada a Objetos

Elementos de Java

public static boolean estaDig(int n,int d ){/* Retorna true si y solo si d es un dígito del número n */boolean esta = false;while (n>0) && !esta { if (d == n % 10) esta = true; n = n/10; }return esta;}

Elementos de Java

Implemente una consulta en Java, consistente con el planteo recursivo propuesto, para calcular la suma de los dígitos pares de un número N. 

public static int sumaP(int n){

}

Problema

Planteo

Caso trivial: la suma de los dígitos pares de un número N impar, menor a 10 es 0. Caso trivial: la suma de los dígitos pares de un número N par, menor a 10 es N. Caso Recursivo: la suma de los dígitos pares de un número N =dm,dm-1,…,d1,d0 (m>0) con d0 par es la suma de los dígitos pares de N’= dm,dm-1,…,d1, más d0,

Caso Recursivo: la suma de los dígitos pares de un número N =dm,dm-1,…,d1,d0 (m>0) con d0 impar es la suma de los dígitos pares de N’= dm,dm-1,…,d1,

 

Dada la siguiente definición recursiva:

 

 

0 si N < 10 y N es impar

1 si N < 10 y N es par

contarPPI (N) contarPPI(N/10) +1 si N = d1.. dk con k>1,

k impar y dk es par contarPPI(N/10) en cualquier otro caso.

 

Explique verbalmente qué valor computa la definición.

Implemente un método en Java a partir de la definición, asumiendo que dispone de un método que retorna la cantidad de dígitos de un número y otro que decide si un número es par.

Reformule la implementación de modo que la cantidad de dígitos se calcule una única vez.

 

Problema