1 Programacin II. CONCEPTOS BASICOS JAVA Modulo 1. Repaso conceptos y estructuras basicas 2 Programacin II. Introduccion a Java
- Cambio de estructura estatica (HTML) a paginas dinamicas (JAVA) Modulo 1. Repaso conceptos y estructuras basicas 3 Programacin II. Modulo 1. Repaso conceptos y estructuras basicas 4 Programacin II. Introduccion a Java - Soporte para ejecutar programas sin la necesidad de descargar plug-in Modulo 1. Repaso conceptos y estructuras basicas 5 Programacin II. Introduccion a Java
- Brinda seguridad en cuanto codigo malicioso - Reconoce una cantidad considerable de formatos de imagenes, sonido y video. Modulo 1. Repaso conceptos y estructuras basicas 6 Programacin II. Java Origen
- 1990: Inicio del proyecto verde por Patrick Naughton. - 1991: James Gosling escribi el compilador original y lo denomin "Oak" - 1992: sistema prototipo conocido como "*7". - 1993: el equipo concluy que el mercado para consumidores electrnicos smart y las cajas Set-Up en particular, no eran del todo eficaces Modulo 1. Repaso conceptos y estructuras basicas 7 Programacin II. Java Origen
- 1994: cese del proyecto verde, coincidio con la Web. El lenguaje hecho por Sun cumplia los requerimientos para Web. - 1995: browser Hot Java fue dado a conocerse. (soporte applets) - 1996: Sun crea Java Soft para continuar con Java. - 1996: Java Soft dio a conocer el Java Developmet Kit (JDK) 1.0 - 1996: Netscape Comunications Inc, mostr las ventajas de Java y rpidamente se asoci con Java Soft para explotar su nueva tecnologa Modulo 1. Repaso conceptos y estructuras basicas 8 Programacin II. Java VERSIONES
JDK 1.0 (23 de enero de 1996) JDK 1.1 (19 de febrero de 1997) J2SE 1.2 (8 de dieciembre de 1998) 2SE 1.3 (8 de mayo de 2000) J2SE 1.4 (6 de febrero de 2002) J2SE 5.0 (30 de septiembre de 2004) Java SE 6 (11 de diciembre de 2006) Java SE 7 ( ao 2006 ) Java SE 8 Modulo 1. Repaso conceptos y estructuras basicas 9 Programacin II. Java Caracteristicas
Es Simple Java reduce en un 50% los errores ms comunes de programacin con lenguajes como C y C++ al eliminar muchas de las caractersticas de stos, entre las que destacan:
* aritmtica de punteros * no existen referencias * registros (struct) * definicin de tipos (typedef) * macros (#define) * necesidad de liberar memoria (free)
Modulo 1. Repaso conceptos y estructuras basicas 10 Programacin II. Java Caracteristicas
Es Orientado a Objetos
Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres caractersticas propias del paradigma de la orientacin a objetos: encapsulacin, herencia y polimorfismo. Modulo 1. Repaso conceptos y estructuras basicas 11 Programacin II. Java Caracteristicas
Es Distribuido
Java en s no es distribuido, sino que proporciona las libreras y herramientas para que los programas puedan ser distribuidos, es decir, que se corran en varias mquinas, interactuando Modulo 1. Repaso conceptos y estructuras basicas 12 Programacin II. Java Caracteristicas
Es Robusto Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de ejecucin, maneja la memoria para eliminar las preocupaciones por parte del programador de la liberacin o corrupcin de memoria
Java proporciona: * Comprobacin de punteros * Comprobacin de lmites de arrays * Excepciones * Verificacin de byte-codes Modulo 1. Repaso conceptos y estructuras basicas 13 Programacin II. Java Caracteristicas
Es de Arquitectura Neutral Java no es dependiente del sistema operativo donde se encuentre ejecutando, esto lo hace por medio de la JVM y los programas objeto (byte-codes) Modulo 1. Repaso conceptos y estructuras basicas 14 Programacin II. Java Caracteristicas
Es Seguro El cdigo Java pasa muchas pruebas antes de ejecutarse en una mquina. El cdigo se pasa a travs de un verificador de byte-codes que comprueba el formato de los fragmentos de cdigo y aplica un probador de teoremas para detectar fragmentos de cdigo ilegal -cdigo que falsea punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto-.
El Cargador de Clases tambin ayuda a Java a mantener su seguridad Modulo 1. Repaso conceptos y estructuras basicas 15 Programacin II. Java Caracteristicas
Es Portable Ms all de la portabilidad bsica por ser de arquitectura independiente, Java implementa otros estndares de portabilidad para facilitar el desarrollo.Tambin ayuda a Java a mantener su seguridad
Por ejemplo el sistema abstracto de ventanas. Modulo 1. Repaso conceptos y estructuras basicas 16 Programacin II. Java Caracteristicas
Es Interpretado
Java es ms lento que otros lenguajes de programacin, como C++, ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional. Modulo 1. Repaso conceptos y estructuras basicas 17 Programacin II. Java Caracteristicas
Es Multihilo
Java permite muchas actividades simultneas en un programa. Los threads (a veces llamados, procesos ligeros), son bsicamente pequeos procesos o piezas independientes de un gran proceso.
El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Modulo 1. Repaso conceptos y estructuras basicas 18 Programacin II. Java Caracteristicas
Es Dinamico
Si su sistema ejecuta una aplicacin Java sobre la red y encuentra una pieza de la aplicacin que no sabe manejar, Java es capaz de traer automticamente cualquiera de esas piezas que el sistema necesita para funcionar. Modulo 1. Repaso conceptos y estructuras basicas 19 Programacin II. Comentarios
En Java hay tres tipos de comentarios:
// comentarios para una sola lnea
/* comentarios de una o ms lneas */
/** comentario de documentacin, de una o ms lneas */
Modulo 1. Repaso conceptos y estructuras basicas 20 Programacin II. Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. No hay longitud maxima.
Ejemplos vlidos a, pepe, r456, tu_re_da, AnTeNa, antena, usd$
Ejemplos no vlidos 345abc, mi variable, Nombre.Largo, caada, camin
Modulo 1. Repaso conceptos y estructuras basicas 21 Programacin II. Palabras clave
abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while
Modulo 1. Repaso conceptos y estructuras basicas 22 Programacin II. Palabras Reservadas
Adems, el lenguaje se reserva unas cuantas palabras ms, pero que hasta ahora no tienen un cometido especfico. Son:
cast future generic inner operator outer rest var
Modulo 1. Repaso conceptos y estructuras basicas 23 Programacin II. Acumuladores
Es una variable, que , como su nombre lo indica se encarga de acumular valores. Esto se vuelve muy til, por ejemplo, cuando queremos encontrar la suma de los nmeros del 0 al 9, en el acumulador, vamos guardando los valores de dichas cifras. Puede ser tanto real como entera. Su valor inicial, en la mayora de los casos es cero.
Modulo 1. Repaso conceptos y estructuras basicas 24 Programacin II. Contadores
Es una variable de tipo entero, que nos ayuda, en el programa a contabilizar el nmero de ejecuciones de una misma accin, de un grupo de alumnos etc. Un acumulador tiene tres valores distintos: * Valor Inicial: es el valor con el cual iniciamos nuestro contador. Generalmente es cero. Esta asignacin puede hacerse cuando se declara la variable. * Valor Final: despus de la ejecucin del ciclo, el valor del contador, ser distinto a su valor inicial, este puede ser mayo o menor que el mismo, todo depende si fue una cuenta creciente o decreciente. * Valor de Cambio: Es el valor Constante, en el cual se ir incrementando nuestro contador, este puede ser positivo o negativo; es decir, si la cuenta se realiza de manera ascendente o descendente. Modulo 1. Repaso conceptos y estructuras basicas 25 Programacin II. Tipos de Datos Simples
boolean Representa Valores True / False byte Representa enteros de 8 bits char Datos de tipo caracter double Valores de punto flotante pero con doble precisi float Valores de tipo Real con precisin Simple int Sirve para representar valores de tipo entero long Entero Largo short Entero corto Modulo 1. Repaso conceptos y estructuras basicas 26 Programacin II. Operadores Aritmeticos
+ Suma - REsta * Multiplicacion / Division % Devuelve el resto de una divisin ++ Incremento en 1 -- Decrementa en 1 Modulo 1. Repaso conceptos y estructuras basicas 27 Programacin II. Operadores Logicos
&& Y lgico. Condicion1 && Condicion2 || O lgico. Condicion1 || Condicion2 ! Negacin. !(Condicion1) Modulo 1. Repaso conceptos y estructuras basicas 28 Programacin II. Operadores Relacionales
== Es igual a != O lgico. Condicion1 || Condicion2 ! Negacin. !(Condicion1) > Mayor que < Menor que >= Mayor o Igual que <= Menor o Igual que Modulo 1. Repaso conceptos y estructuras basicas 29 Programacin II. Bloque If .... else
La sentencia if (o si condicional), le permite a un programa decidir, mediante la evaluacin de una condicin, ejecutar una u otra accin o acciones. La sintaxis General es La siguiente:
if(condicion1) Accion1;
Si son varias acciones, van entre llaves. Modulo 1. Repaso conceptos y estructuras basicas 30 Programacin II. Bloque If .... elseif .....
Esta estructura, es una consecuencia de las estructuras if anidadas, sus formato es el siguiente: if(condicion1) Sentencia 1; elseif(condicion2) Sentencia 2; elseif(condicion3) Sentencia 3; ... else Sentencia n; Modulo 1. Repaso conceptos y estructuras basicas 31 Programacin II. Bloque Switch
switch(expresin) { case 1: Sentecia 1; break; case 2: Sentecia 2; break; . . . default: Sentencias; break; } Esta sentencia, permite ejecutar, una u otra u otra accin, al evaluar una condicin, cuyo resultado es el que indica que bloque (o bloques) de instrucciones se van a ejecutar. Su sintaxis es la siguiente: Modulo 1. Repaso conceptos y estructuras basicas 32 Programacin II. Ciclo While
while(condicin) {
Accin;
} Funciona de la siguiente manera: primero evala la condicin, si da como resultado cierta realiza la accin, luego vuelve a evaluar la condicin, si su resultado es falso, se sale del ciclo y contina con la ejecucin del programa. Hay que tener mucho cuidado, cuando trabajamos con ciclos, ya que podemos caer en un ciclo infinito, es decir que nunca se sale de l. Por lo cual en las acciones debemos siempre colocar algo que haga que se modifique el resultado de la condicin, lo cual puede ser una bandera, un contador o un acumulador. Modulo 1. Repaso conceptos y estructuras basicas 33 Programacin II. Ciclo For
for( valor inicial; condicin; incremento) {
accion;
}
Valor inicial: es el valor con el cual inicializamos nuestra variable de control. Condicin: si la cumple, ejecuta la accin o acciones e incrementa o decrementa la variable de control, sino la cumple la condicin, se sale del ciclo. Incremento; que puede ser positivo o negativo (decremento) En algunas ocasiones, sabemos a ciencia cierta el nmero de veces que se tiene que repetir una misma accin o bloque de acciones. Y para ello es que nos sirve, esta estructura. Su sintaxis es la siguiente: Modulo 1. Repaso conceptos y estructuras basicas 34 Programacin II. Ciclo Do While
do { sentencia; . . } while(<exp>);
La diferencia fundamental, entre el ciclo while y do...while, es que en este ultimo, las sentencias se realizarn por lo menos una vez, en cambio, con while, solo se cumplirn mientras se cumpla la condicin, lo cual puede ser nunca. Es te ciclo funciona de la siguiente manera, realiza la accin o conjunto de acciones, luego evala una condicin de resultar cierta vuelve a realizar la/s accion/es. Cuando sea falsa, se sale del ciclo. Modulo 1. Repaso conceptos y estructuras basicas 35 Programacin II. Errores de Compilacion / Sintaxis
Los errores de programacin en Java, as como en otros lenguajes, ocurren ms que todo en la sintaxis y errores en la lgica. Los errores en la sintaxis son causados cuando el compilar Java (javac) no puede reconocer la sentencia. Esto causa que el compilador devuelva un mensaje de error, usualmente con una lnea de cdigo de referencia. Tambin se conoce a los errores de sintaxis como errores en tiempo de compilacin. Modulo 1. Repaso conceptos y estructuras basicas 36 Programacin II. Errores de Logica
Los errores de lgica son conocidos como BUGS. Estos son los errores que nos tomarn tiempo hasta encontrarlos. Modulo 1. Repaso conceptos y estructuras basicas 37 Programacin II. Errores mas comunes
El nombre de la Clase pblica no coincide con el nombre del archivo Una Clase no est en el directorio correcto Usando equals contra la asignacin ( == versus = ) Error en maysculas y minsculas. Olvidar que los ndices en Java empiezan en 0. NullPointerException Modulo 1. Repaso conceptos y estructuras basicas 38 Programacin II. Declaracion de Variables
Para usar una variable en un programa hay que declararla.
El ordenador conoce as cmo codificar la informacin que se va a almacenar en la posicin de memoria correspondiente. Al declarar una variable, se reserva el espacio de memoria necesario para almacenar un valor del tipo de la variable. El identificador asociado a la variable se puede utilizar para acceder al dato almacenado en memoria y para modificarlo. Ej: Boolean bandera; int a,b,c;
Modulo 1. Repaso conceptos y estructuras basicas 39 Programacin II. Declaracion de Variables
Las variables se han de declarar antes de poder usarlas.
Los identificadores de las variables son los nombres que utilizaremos para referirnos a ellas.
Al declarar una variable, hay que definir su tipo: la variable slo admitir valores del tipo especificado.
En una misma declaracin se pueden declarar varias variables, siempre que sean del mismo tipo. En este caso, los identificadores de las variables se separan por comas.
Modulo 1. Repaso conceptos y estructuras basicas 40 Programacin II. Inicializacion de Variables
En una declaracin, las variables se pueden inicializar:
int i = 0; float pi = 3.1415927f; double x = 1.0, y = 1.0;
La inicializacin puede consistir en una expresin compleja que se evala cuando se ejecuta el programa.
Modulo 1. Repaso conceptos y estructuras basicas 41 Programacin II. Subprogramas
La programacin modular es una de las tcnicas fundamentales de la programacin. Se apoya en el diseo descendente y en la filosofa de divide y vencers, es decir se trata de dividir el problema dado, en problemas ms simples en que cada uno de los cuales lo implementaremos en un mdulo independiente. A cada uno de estos mdulos es a lo que llamamos subalgoritmos o subprogramas.
Modulo 1. Repaso conceptos y estructuras basicas 42 Programacin II. Subprogramas (Procedimientos)
Un procedimiento es un subprograma o un subalgoritmo que ejecuta una determinada tarea, pero que tras ejecutar esa tarea no tienen ningn valor asociado a su nombre, no retorna un valor. Algoritmo calc_mitad Var N: entero Mit: real Inicio Escribir Introduce un nmero Leer n Mitad (n,mit) Escribir La mitad esmit fin Modulo 1. Repaso conceptos y estructuras basicas 43 Programacin II. Subprogramas (Procedimientos)
Ejemplo:
public static void calc_mitad() { int n = 10; int mit;
mit = n/2;
System.out.println(mit); } Modulo 1. Repaso conceptos y estructuras basicas 44 Programacin II. Subprogramas (Funciones)
Desde el punto de vista matemtico, una funcin es una operacin que toma uno o varios operandos, y devuelve un resultado. Y desde el punto de vista algortmico, es un subprograma que toma uno o varios parmetros como entrada y devuelve a la salida unnico resultado.
Funcion <nombre_funcion> (n_parametro: tipo, n_parametro: tipo): tipo funcion Var <variables locales funcion> Inicio <acciones> retorno <valor> fin <nombre_funcion>
Modulo 1. Repaso conceptos y estructuras basicas 45 Programacin II. Subprogramas (Funciones)
Ejemplo:
public static int calc_mitad() { int n = 10; int mit;
return n/2;
}
Modulo 1. Repaso conceptos y estructuras basicas 46 Programacin II. Vectores
Un array es una estructura de datos que contiene una coleccin de datos del mismo tipo, caracteristicas:
- Los arrays se utilizan como contenedores para almacenar datos relacionados - Todos los datos incluidos en el array son del mismo tipo - El tamao del array se establece cuando se crea el array - A los elementos del array se acceder a travs de la posicin que ocupan dentro del conjunto de elementos del array.
Modulo 1. Repaso conceptos y estructuras basicas 47 Programacin II. Vectores (Declaracion)
Para declarar un array, se utilizan corchetes para indicar que se trata de un array y no de una simple variable del tipo especificado.
tipo identificador[]; O bien, tipo[] identificador;
Modulo 1. Repaso conceptos y estructuras basicas 48 Programacin II.
Matriz Creacion matriz = new tipo[filas][columnas];
Ejemplo int[][] datos = new int[2][3];
Modulo 1. Repaso conceptos y estructuras basicas 49 Programacin II.
Manipulacion Vectores
- El ndice del primer componente de un vector es siempre 0. - El tamao del array puede obtenerse utilizando la propiedad vector.length - Por tanto, el ndice de la ltima componente es vector.length-1
Modulo 1. Repaso conceptos y estructuras basicas 50 Programacin II. Manipulacion Matriz
En Java, el ndice de la primera componente de un vector es siempre 0, por lo que matriz[0][0] ser el primer elemento de la matriz.
El tamao del array puede obtenerse utilizando la propiedad array.length: matriz.length nos da el nmero de filas matriz[0].length nos da el nmero de columnas
Por tanto, el ltimo elemento de la matriz es matriz[matriz.length- 1][matriz[0].length-1] Modulo 1. Repaso conceptos y estructuras basicas 51 Programacin II.
Inicializacion de Vectores
int vector[] = {1, 2, 3, 5, 7}; int matriz[][] = { {1,2,3}, {4,5,6} };
** El compilador deduce automticamente las dimensiones del array.
Modulo 1. Repaso conceptos y estructuras basicas 52 Programacin II. Vectores como parametros Ejemplo -
static float media (float datos[]) { int i; int n = datos.length; float suma = 0; for (i=0; i<n; i++) suma = suma + datos[i]; return suma/n; } Modulo 1. Repaso conceptos y estructuras basicas 53 Programacin II. Vectores como parametros Ejemplo -
static int[] leerVector (int datos) { int i; int[] vector = new int[datos]; for (i=0; i<datos; i++) vector[i] = leerValor(); return vector; }
Modulo 1. Repaso conceptos y estructuras basicas 54 Programacin II. Matriz Ejemplo - public static void mostrarMatriz (double matriz[][]) { int i,j; int filas = matriz.length; int columnas = matriz[0].length; // Recorrido de las filas de la matriz for (i=0; i<filas; i++) { // Recorrido de las celdas de una fila for (j=0; j<columnas; j++) { System.out.println ( matriz[+i+][+j+]=+ matriz[i][j] ); } } } Modulo 1. Repaso conceptos y estructuras basicas 55 Programacin II.
** IMPORTANTE **
Cuando se pasa un array como parmetro, se copia una referencia al array y no el conjunto de valores en s. Por tanto, tenemos que tener cuidado con los efectos colaterales que se producen si, dentro de un mdulo, modificamos un vector que recibimos como parmetro.
Modulo 1. Repaso conceptos y estructuras basicas 56 Programacin II. Copia de Arreglos
Para copiar los elementos de un array, hemos de crear un nuevo array y copiar los elementos uno a uno:
int[] datos = new int[numeros.length];
for (i=0; i<numeros.length; i++) datos[i] = numeros[i]
Modulo 1. Repaso conceptos y estructuras basicas 57 Programacin II. Copia de Arreglos
Tambin podemos utilizar una funcin predefinida en la biblioteca de clases estndar de Java:
System.arraycopy(from,fromIndex,to,toIndex,n);
int[] datos = new int[numeros.length]; System.arraycopy(numeros,0,datos,0,numeros.length);
Modulo 1. Repaso conceptos y estructuras basicas 58 Programacin II.
Biblioteca: java.util.Arrays
- Arrays.sort(v) ordena los elementos del vector. - Arrays.equals(v1,v2) comprueba si dos vectores son iguales. - Arrays.fill(v,val) rellena el vector v con el valor val. - Arrays.toString(v) devuelve una cadena que representa el contenido del vector.
Modulo 1. Repaso conceptos y estructuras basicas 59 Programacin II. Ordenamiento: Metodo Burbuja. public static int[] OrdenarBurbuja(int[] n){ int temp; int t = n.length; for (int i = 1; i < t; i++) { for (int k = t- 1; k >= i; k--) { if(n[k] < n[k-1]){ temp = n[k]; n[k] = n[k-1]; n[k-1]= temp; }//fin if }// fin 2 for }//fin 1 for return n; }//fin Modulo 1. Repaso conceptos y estructuras basicas 60 Programacin II. Busqueda Lineal o Secuencial Vector -
static int buscar (double vector[], double dato) { int i; int N = vector.length; int pos = -1; for (i=0; i<N; i++) if (vector[i]==dato) pos = i; return pos; }
Como hacer el algoritmo mas eficiente ?
Modulo 1. Repaso conceptos y estructuras basicas 61 Programacin II. Separadores
() - parntesis. Para contener listas de parmetros en la definicin y llamada a mtodos. Tambin se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.
{} - llaves. Para contener los valores de matrices inicializadas automticamente. Tambin se utiliza para definir un bloque de cdigo, para clases, mtodos y mbitos locales. Modulo 1. Repaso conceptos y estructuras basicas 62 Programacin II. Separadores
[] - corchetes. Para declarar tipos matriz. Tambin se utiliza cuando se referencian valores de matriz. ; - punto y coma. Separa sentencias.
, - coma. Separa identificadores consecutivos en una declaracin de variables. Tambin se utiliza para encadenar sentencias dentro de una sentencia for.
. - punto. Para separar nombres de paquete de subpaquetes y clases. Tambin se utiliza para separar una variable o mtodo de una variable de referencia. Modulo 1. Repaso conceptos y estructuras basicas 63 Programacin II. Bloque