Introduccin Resolver problemas no es trivial, pues es necesario comprender qu se quiere resolver, encontrar las herramientas adecuadas para resolver el problema, y luego implementar la solucin con las herramientas disponibles. Un problema es una abstraccin de la realidad para la cual nos interesa conocer una solucin. Una solucin es un procedimiento o mtodo para establecer mecanismos de transformacin del mundo que nos lleve a satisfacer ciertos requerimientos. En las ciencias computacionales se usan distintos lenguajes de programacin para cumplir con estas actividades, entre las cuales se encuentra Java.
Java y su historia Java es un lenguaje de programacin orientado a objetos y cuyas sintaxis derivan en gran medida de C y C++ (por lo que algunos le consideran algo as la evolucin de los mismos) que naci en el ao 1995 gracias a Sun Microsystems y que se ha convertido en el ms conocido y utilizado en el mundo. Mayoritariamente se utiliza para crear aplicaciones web, pero tambin es usado para aplicaciones de otra ndole. Por ejemplo, programas muy reconocidos como JDownloader o el videojuego Minecraft fueron creados utilizando Java. La historia del origen de las siglas Java es un tanto interesante. El trmino fue acuado en una cafetera que frecuentaban algunos miembros del equipo de Sun Mycrosystems. Sin embargo, no est claro si es un acrnimo o no. Algunas fuentes sealan que puede hacer referencia a los nombres de los creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Mientras que otros abogan por el siguiente acrnimo: Just Another Vague Acronym ("slo otro acrnimo ambiguo ms"). Pero la hiptesis que ms fuerza ha tomado es que el nombre se debe a un tipo de caf que vendan en la cafetera cercana y que de ah el cono de Java sea una taza de caf caliente. Esta teora toma fuerza, en parte, debido a que los 4 primeros bytes de los archivos .class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teoras, el nombre fue sacado al parecer de una lista aleatoria de palabras. Caractersticas generales del lenguaje Es un lenguaje de programacin muy reconocido y elogiado entre los programadores debido a que posee ciertas caractersticas y a su vez ofrece ciertas ventajas, tales como: Programacin Orientado a objetos (POO): este tipo de programacin busca simplificar a la misma mediante la identificacin y concepcin de los datos como objetos con una naturaleza propia (atributos) y que busca separar a lo que es inalterable de lo que queremos que sea alterable mediante mtodos, que son algo as como las acciones que nos permiten alterar aquello que deseemos cambiar. Por el momento podemos dejarlo as, ya que es un tema en el que profundizaremos en su debido momento. Su portabilidad: Java posee una filosofa llamada WORA (Write Once, Run Anyware), es decir: escrbelo una vez, crrelo donde sea. Las aplicaciones creadas en Java pueden ejecutarse en cualquier sistema operativo. Solo es necesario que este tenga instalado el entorno virtual del mismo. Esto sucede debido a que las aplicaciones escritas en Java, es decir, en Java
bytecode, no son ledas, interpretadas y ejecutadas directamente por el sistema operativo del computador sino que esta es una tarea de la cual se encarga la Mquina Virtual de Java (JVM), la cual traduce el Java bytecode para que pueda ser comprendido y ejecutado por el debido sistema operativo. El recolector de basura: desde hace tiempo en el mbito de la programacin ha existido un problema con el manejo de la memoria conocido tambin como fuga de memoria o memory leak. Lo que sucede es que cuando usamos programas existe un bloque de memoria reservada en el computador en el cual se van almacenando datos y es el programa el encargado de decirle a dicho bloque de memoria cundo debe deshacerse de aquello que no necesitar ms. El problema se produce debido a que esto se convierte una tarea del programador al momento de crear un programa. Es decir, este debe de manera manual (mediante cdigo) especificarle al programa cundo debe realizar esta accin. Con Java esto es algo que cambia, debido a que l posee un recolector de basura que va recogiendo todos estos datos y una vez considera que no se necesitarn ms los elimina. Por supuesto, esto no es un sistema perfecto, por lo que an con Java se puede llegar a usar recolectores de basura externos. El entorno: el compilador y la Mquina Virtual Ya anteriormente se mencion lo que es la Mquina Virtual de Java y cul es la funcin que cumple la misma, pero esto es solo una parte del proceso por el cual deber pasar el cdigo fuente que inicialmente nosotros creemos. Como algunos sabrn, las computadoras tienen su propio idioma (distinto al nuestro) llamado cdigo mquina y que funciona en base a secuencias binarias de 1 y 0. Por otro lado, existen los compiladores que son los encargados de hacer que el cdigo fuente escrito por nosotros pueda ser comprendido y ejecutado por nuestra computadora, por ello podemos decir que bsicamente el compilador cumple con el papel de un traductor. Sin embargo, en Java este es un proceso distinto a como suele suceder cuando se trabaja en C o C++, ya que en base al cdigo fuente que nosotros creamos no se generar un archivo ejecutable de manera directa, sino que cuando lo compilemos se crear uno con extensin .class que estar escrito en Java bytecode para de esta manera poder ser interpretado por la Mquina Virtual de Java y finalmente ejecutado por el computador. Objetivos de Java
Facilitar un entorno interpretado para: o Aumentar la velocidad de desarrollo. o Generar cdigo portable. Permitir al usuario ejecutar ms de una hebra a la vez. Soportar cambios dinmicos en tiempo de ejecucin. Proporcionar ms seguridad. o Las siguientes caractersticas cumplen los objetivos: o La mquina virtual Java (JVM). o Garbage collection. o Seguridad de cdigo. Estructura de un programa en Java 1) Una sentencia de paquete (package). 2) Una o varias sentencias de importacin (import). 3) Declaraciones de clases privadas deseadas. 4) Una declaracin de clase pblica. a. Declaracin de variables de la clase (estticas). b. Declaraciones de variables de instancia. c. Definiciones de constructores. d. Definiciones de mtodos. e. Comentarios en cualquier parte del programa. Explicando lo anterior: Package: Un package es una agrupacin de clases. Es parecido a una "caja" que contiene las clases que se quiere mantener en un solo lugar. Tambin podra decirse que los packages es el equivalente a las libreras en otros lenguajes. Esta parte del cdigo no es obligatoria, es solo si lo necesita usar mtodos que no estn contenidos en las clases predeterminadas de Java. Import: En ocasiones los programas requerirn utilizar clases existentes en otros Packages, y esto se puede lograr con Import. Clases: Java puede crear diferentes tipos de clases: privadas, pblicas y protegidas; y se utilizan de acuerdo a conveniencia de la estructura del programa. Variables: Java maneja tres tipos de variables: de instancia, de clase y locales.
o Las variables de instancia: son las que se usan para guardar valores o atributos de un objeto en particular. o Las variables de clase: son las que guardan valores o atributos de la clase. o Las variables locales: son las que se declaran en una funcin o mtodo y solamente las puede utilizar esa funcin o mtodo, de ah el nombre de locales. Constructores: Los constructores son la forma de crear los objetos. Mtodos: En Java los mtodos son los utilizados para realizar alguna tarea en especfico. Se puede decir que hay dos tipos de mtodos en Java: El primero, que se llamar set (poner) sirve para manipular y/o fijar valores en las variables, por ejemplo: cuando se especifica que el baln va a ser color blanco. El segundo, denominado get (obtener) sirve para obtener un valor de una variable, por ejemplo: cuando se desea saber la edad de Juan. Comentarios: stos pueden incluirse en cualquier parte del cdigo. Sus lneas sern completamente ignoradas por el compilador, o sea que no afectarn para nada al programa. Cuando una persona est aprendiendo a programar es altamente recomendable que escriba comentarios, ya que esto ayuda mucho a entender lo que est haciendo una funcin, para qu sirve una variable o declaracin y hasta facilita el hacer modificaciones y mejoras al programa en el futuro. Variables Una variables es bsicamente un espacio determinado de la memoria al cual se le asigna un nombre y un contenido de un determinado tipo el cual puede ser nmeros, caracteres, una cadena de caracteres (estas pueden contener nmeros y letras) o un valor booleano (verdadero o falso). De esta manera una variable cuando se crea una variable esta debe estar definida por un nombre que la identifique (que preferiblemente guarde relacin con el uso que se le dar) y por el tipo de variable. Cabe mencionar que el tipo de variable determinar el tamao que puede tener el valor que almacenar la misma y cada vez que se use dicha variable debe hacerse solo con valores de dicho tipo. El siguiente ejemplo ayudar a comprender mejor lo anteriormente mencionado: Vamos a realizar una mudanza y estamos empacando. Cuando vamos a guardar los objetos delicados como los jarrones debemos hacerlo en un
tipo de caja especial, con un tamao determinado (no guardaremos un jarrn grande en una caja pequea) y a la cual le colocaremos una etiqueta de Jarrones (delicado). Esa caja vendra siendo nuestra variable, su material sera nuestro tipo, la etiqueta su nombre y aquello que guardamos en ella sera el valor de nuestra variable. Identificadores Siempre que creamos un mtodo, clase, variable y otros elementos en Java debemos asignarle un nombre y a estos nombres se les conoce tambin como identificadores, pero existen varias reglas que se deben seguir al momento de nombrar algo, tales como: Todos los nombres siempre pueden comenzar con letras maysculas, minsculas, el carcter de moneda ($) o un guin bajo (_), pero nunca con nmeros. Por ejemplo, es correcto nombrar a un dato de las siguientes maneras: o nmero o Nmero o $nmero o _Nmero Pero nunca lo ser: o 1nmero o -nmero o &Nmero Puesto que comienza con un nmero o signos distintos a los mencionados anteriormente. Las palabras claves o reservadas no pueden ser usadas como identificadores: en los lenguajes de programacin existen palabras claves o reservadas que no pueden ser usadas para nada ms que el propsito para el cual fueron creadas. Por ello, si tenemos una palabra reservada Exit, nunca podremos identificar a un dato, clase o mtodo con el mismo nombre. Las palabras reservadas en Java son las siguientes: abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, short, static, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while Los identificadores se distinguen por maysculas y minsculas: como ya se mencion anteriormente, Java es un lenguaje sensible a las maysculas. Por ello dos datos nombrados nmero y Nmero sern distintos, puesto que uno comienza con minscula y otro no. Pero esto
tambin sucede independientemente de la ubicacin de la mayscula en el identificador, por lo que tambin sern dos datos distintos si nombramos a uno como nmero y al otro como nmeRo, aunque no es recomendable utilizar este tipo de identificadores ya que se prestan fcilmente para confusiones. Constantes en Java Los programas de ordenador contienen ciertos valores que no deben cambiar durante su ejecucin. Estos valores se llaman constantes. Se puede decir que una constante es una posicin de memoria que se referencia con un identificador, conocido como nombre de la constante, donde se almacena el valor de un dato que no puede cambiar durante la ejecucin del programa. Una constante en Java se declara de forma similar a una variable, anteponiendo la palabra final. Por ejemplo: final double PI = 3.141591; final int diasSemana = 7; Literales Una literal es la representacin de un valor en el cdigo fuente del programa. Literales Enteros: Cualquier valor numrico entero es un literal entero. Los literales enteros se consideran de tipo int. Para especificar que un literal es de tipo long, debe aadirse, como sufijo, la letra L l. Por ejemplo: o Los siguientes literales son de tipo int: 12, 34, 0, -50, etc. o Los siguientes literales son de tipo long: 9223372036854775807L, 25L, -1L, etc. Literales Reales: Cualquier valor numrico decimal con parte fraccionaria es un literal real. Los literales reales se consideran de tipo double. Para especificar que un literal es de tipo float, debe aadirse, como sufijo, la letra F o f. Por ejemplo: o Los siguientes literales son de tipo doubl: 1.23, 3.456, -2.0, 3.25E+12, 2.7e-5, etc. o Los siguientes literales son de tipo float: 2.75f, -4.567f, 2.0F, 6.73e+2f, etc.
Para representar un literal real en notacin cientfica se usa la letra E e para expresar la potencia de 10. Por ejemplo: o 3.25E+12 representa a 3.25 x 10 elevado a la 12 o 2.7E-5 representa a 2.7 x 10 elevado a la -5 El signo + que acompaa al exponente es opcional. Literales Booleanos: Los nicos literales booleanos son los siguientes: true, false Literales de Carcter: Un literal de carcter consiste de un nico carcter encerrado dentro de un par de comillas simples. Por ejemplo: 'a', '1', '2', '$', etc. Una secuencia de escape es un conjunto de caracteres Literales de Cadena: Un literal de cadena consiste de un conjunto de caracteres encerrados entre comillas dobles. Por ejemplo: o "Hola mundo" o "Bienvenido a Java" o "Algoritmos Computacionales" o "abcde123xy" o "Edad invlida" Operadores Uno de los principales objetivos de los lenguajes de programacin y tal vez el ms primordial es el poder manipular datos para cumplir uno o varios objetivos. En el desarrollo de un programa este eventualmente tendr que realizar operaciones como suma, multiplicacin, determinar el nmero mayor, si dos variables tienen el mismo valor, aumentar en una unidad el valor de una variable numrica, disminuir el mismo y otras operaciones que pueden involucrar desde uno hasta muchos valores y variables. Para poder realizar todo esto eventualmente necesitaremos elementos o herramientas que nos permitan manipular estos valores y variables para que nuestro programa cumpla con su objetivo. A dichos elementos o herramientas se les denominan operadores y existen varios tipos, donde cada uno cumple con un propsito determinado. Expresiones Una expresin es una combinacin de variables, operadores y llamadas de mtodos construida de acuerdo a la sintaxis del lenguaje que devuelve un valor. El tipo de dato del valor regresado por una expresin depende de los elementos usados en la expresin. En conclusin, es una instruccin o sentencia que devuelve un valor llamado valor de retorno y que asigna a una variable un:
Dato numrico Valor lgico Carcter Cadena de caracteres o dato textual Cabe mencionar que las expresiones en Java pueden ser Aritmticas: Los operandos que intervienen en ella son numricos, el resultado es numrico y los operadores son aritmticos. Lgicas o booleanas: Su resultado es CIERTO o FALSO. Se construyen mediante los operadores relacionales y lgicos. Se caracterizan porque: o True y false son palabras reservadas en java. o Las expresiones booleanas estn hechas de operadores lgicos y de comparacin. o Las expresiones booleanas se pueden utilizar en las sentencias if y en los bucles de condicin. o Las expresiones booleanas tambin se pueden usar en una sentencia de asignacin.
Conversin de datos (casting) En java se puede forzar un dato, variable o una expresin a convertirse o cambiarse a un nuevo tipo de dato. El operador cast realiza este proceso, es decir convierte datos, variables o expresiones a un nuevo tipo de dato, su formato es: (nvotipo) dato , var, exp; Por ejemplo: // declaracin int alfa; // Asignacin alfa = 20; // Cambio de tipo (float) alfa; Clases Las clases son una agrupacin de especificaciones o normas que definen como va a ser creado un objeto. Es una definicin abstracta de un objeto.
Define la estructura y el comportamiento compartido por los objetos. Los objetos pueden ser agrupados en clases. Ejemplo de una clase CLASE: EMPLEADO Propiedades: o Nmero de empleado o Nombre o Telfono o Domicilio Mtodos: o Agregar empleado o Modificar empleado o Borrar empleado o Listar Mtodos en una clase Utilizado principalmente en programacin orientada a objetos, el trmino se refiere a las porciones de cdigo asociadas exclusivamente con una clase (se los denomina entonces mtodos de clase o mtodos estticos) o con un objeto (en este caso mtodos de instancia). Anlogamente a los procedimientos en los lenguajes imperativos, un mtodo consiste generalmente de una serie de sentencias para llevar a cabo una accin, un juego de parmetros de entrada que regularn dicha accin y, posiblemente, un valor de salida (o valor de retorno) de algn tipo. El propsito de los mtodos es el de proveer un mecanismo para acceder (leer o modificar) los datos privados que se encuentran almacenados en un objeto o clase. Atributos en una clase Los atributos determinan el estado que tiene un objeto. Estos pueden ser tipo de datos primitivos u objetos de cualquier clase. Por ejemplo: La clase persona tiene como atributos la altura, el color de ojos y la edad. Ejemplo en java: public class Persona { public int altura; public String colorDeOjos public int edad; } Utilizacin: Persona mario = new Persona();
mario.altura = 183; mario.colorDeOjos = marrones; mario.edad = 40; Constructores en una clase Un Constructor es una funcin, mtodo, etc, de las clases, la cual es llamada automticamente cuando se crea un objeto de esa clase. Por ser mtodos, los constructores tambin aceptan parmetros. Cuando en una clase no especificamos ningn tipo de constructor, el compilador aade uno pblico por omisin sin parmetros, el cual NO hace nada. Caractersticas de los Constructores: 1) Un constructor, tiene el mismo nombre de la clase a la cual pertenece. 2) No puede ser Heredado. 3) No retorna ningn valor (Ni void), por lo cual no debe especificarse ningn tipo de dato. 4) Debe declararse como public, slo en casos realmente extraordinarios ser de otro tipo. Arrays y arrays bidimensionales Es un tipo de estructura de datos de un solo que consta de un nmero determinado y fijo de elementos, los cuales podrn ser variables o estructuras. Estas estructuras pueden ser de varias dimensiones. Generalmente cuando consta de una sola se les conocen como vectores y cuando tienen ms de una pasan a ser matrices. Un ejemplo de un vector tamao notaEst[5] y su uso puede ser las notas de un estudiante en una materia, donde en cada casilla del vector se almacenar una nota, comenzando desde el ndice 0 hasta el 4. Quedando algo ms o menos as. ndice: [0] [1] [2] [3] [4]
Contenido: [10] [9] [15] [16] [12] Otro ejemplo en donde se puede ver el uso de un array bidimensional, o mejor conocido como matriz, es si se desea almacenar la notas de los estudiantes de un saln de clases teniendo en cuenta el nmero de asiento que posee cada uno, siendo el primer ndice el nmero de asiento y el segundo la nota, siendo el tamao del arreglo estudiantes[4][2]. Quedando algo as: [0][12] [1][15] [2][9] [3][16]
[4][20] [5][14] [6][7] [8][12] Bsqueda binaria en un array Los algoritmos de bsqueda binaria es uno de los algoritmos ms usados para encontrar elementos en una estructura de datos. La bsqueda binaria al igual que otros algoritmos como el quicksort utiliza la tcnica divide y vencers. Uno de los requisitos antes de ejecutar la bsqueda binaria, es que el conjunto de elementos debe de estar ordenado. Supngase que se tiene el siguiente array: 57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17 De manera tal que al final quede ordenado as: 3 8 17 17 21 22 26 31 36 37 44 47 53 57 89 97 Ordenacin de arrays Una de las formas ms comunes de ordenacin de un array es el famoso mtodo de la burbuja. Se basa en el hecho de ir recorriendo todo el array a ordenar, comparando dos elementos al mismo tiempo e intercambindolos si estn en el orden incorrecto. Al terminar de recorrer los elementos, se determina si hubo algn cambio, y de haberlo, se repite el mtodo hasta que ya no haya cambio alguno. Arrays redimensionales (ArrayList) La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los Arrays, con la ventaja de que el nmero de elementos que almacena, lo hace de forma dinmica, es decir, que no es necesario declarar su tamao como pasa con los Arrays.
Conclusin La importancia de Java radica en la posibilidad de crear o disear software y poder ser ejecutado en diferentes plataformas donde se requiere, sin la necesidad de estar modificndolo. Es una herramienta diseada con muchos elementos parecidos a otros lenguajes pero en una versin mejorada, ms sencilla de manejar, con menos complejidad y con barreras de seguridad en su lenguaje y ejecucin.
Bibliografa http://milibretajava.blogspot.com/2012/07/estructura-de-un-programa-en- java.html http://puntocomnoesunlenguaje.blogspot.com/2012/04/literales-variables-y- constantes.html http://i7exe.blogspot.com/2013/08/que-es-un-literal-en-java.html http://profesores.fi-b.unam.mx/carlos/java/java_basico2_5.html http://www.adrformacion.com/curso/java/leccion2/ExpresionesOperadores.ht m http://www.edu4java.com/es/progbasica/progbasica6.html http://elenlaceentropico.wordpress.com/2012/06/07/2-4-conversiones-de- tipos-en-java/ http://www.programacionfacil.com/java/operador_cast http://labojava.blogspot.com/2012/05/introduccion-oopatributos-de- instancia.html http://programandoenjava.over-blog.es/article-32829724.html http://ronnyml.wordpress.com/2009/07/09/busqueda-lineal-y-busqueda- binaria/ https://sites.google.com/site/fernandoagomezf/programacion-en-c/tips-de- programador-c/algoritmos/ordenacion-de-arrays-metodo-de-la-burbuja http://jarroba.com/arraylist-en-java-ejemplos/ http://www.academica.mx/blogs/lenguaje-programaci%C3%B3n-en-java-3 Contenido Original realizado por Navarro Julin