Java para novatos PDF

Title Java para novatos
Author Manase Romeo
Pages 459
File Size 2.8 MB
File Type PDF
Total Downloads 40
Total Views 90

Summary

JAVA para novatos Cómo aprender programación orientada a objetos con Java sin desesperarse en el intento. A. M. Vozmediano ensegundapersona.es Java para novatos: Cómo aprender programación orientada a objetos con Java sin desesperarse en el intento. © 2013, 2017 Alfredo Moreno Vozmediano Primera ed...


Description

JAVA para novatos Cómo aprender programación orientada a objetos con Java sin desesperarse en el intento. A. M. Vozmediano ensegundapersona.es

Java para novatos: Cómo aprender programación orientada a objetos con Java sin desesperarse en el intento. © 2013, 2017 Alfredo Moreno Vozmediano Primera edición en este formato, junio de 2017. ISBN: 9781521386330 Todos los derechos reservados. Esta obra está protegida por las leyes de copyright y tratados internacionales.

ensegundapersona.es Información y suscripciones: http://ensegundapersona.es/suscribete

Introducción 1 A quién va dirigido este libro Este libro está destinado a aquellas personas que quieren aprender a programar según el paradigma de orientación a objetos y, más concretamente, que quieren aprender a programar en lenguaje Java. No es necesario que hayas programado previamente, aunque si ya sabes programar el proceso será mucho más sencillo, como es lógico. El libro NO da por hecho que el lector o lectora tenga conocimientos previos sobre programación ni sobre el lenguaje Java, aunque sí supondremos que conoces algunos conceptos genéricos relacionados con la informática como, por ejemplo, qué es el sistema de numeración binario o la diferencia entre un Megabyte y un Kilobyte. No es que sean cuestiones imprescindibles para el programador, pero a veces hay que echar mano de ellas. Si no conoces esos conceptos, te sugerimos que antes les eches un vistazo a cualquier libro sobre introducción a la informática.

2 Qué encontrarás y qué no encontrarás en este libro En este libro encontrarás toda la información necesaria para convertirte en un programador o programadora de lenguaje Java y, por añadidura, aprenderás a programar siguiendo el paradigma de orientación a objetos, ya que en Java no hay modo de hacerlo de otra forma. El libro comienza con las cuestiones más básicas, como la construcción del primer programa o la utilización del compilador de Java, y avanza hacia temáticas más elaboradas como los flujos dirigidos a ficheros o las estructuras de datos dinámicas. No obstante, se trata de un libro de introducción y aprendizaje, no de un manual avanzado. Las librerías de Java son gigantescas y un solo libro difícilmente puede abarcarlas. Por suerte, es muy sencillo acceder a la documentación oficial de Java a través de la web de Oracle, la empresa que lo desarrolla en la actualidad (https://docs.oracle.com/javase/8/docs/api/). Si concluyes este libro con éxito (en realidad, mucho antes de hacerlo), podrás utilizar esa documentación cuando necesites usar cualquier componente de la librería, además de las toneladas de documentación no oficial que existen en internet. Sin embargo, sin una base adecuada, toda esa documentación se convierte en

un galimatías incomprensible. Esa base es la que pretendemos ofrecerte con este libro. El libro que tienes en las manos (o en la pantalla) es un manual de aprendizaje. Eso significa que está diseñado para leerlo de principio a fin e ir aprendiendo las técnicas del lenguaje mediante un enfoque constructivista, es decir, construyendo nuevos aprendizajes sobre los anteriores. Eso no quiere decir, por supuesto, que sea obligatorio leerlo en ese orden. Es perfectamente posible leer solo las partes que te interesen, o volver sobre ellas cuando sea necesario, pero quien nunca haya trabajado con Java o con lenguajes orientados a objetos encontrará seguramente más claro y productivo empezar por el principio e ir avanzando a lo largo del texto. En cada capítulo se ha incluido una colección de ejercicios propuestos y/o resueltos. No soy muy amigo de las colecciones de ejercicios. Pienso que es mucho más productivo que el aprendiz pergeñe sus propios programas, llegando hasta donde sus habilidades le permitan en ese momento. Los ejercicios propuestos suelen ser aburridos, por más que el autor intente hacerlos interesantes, y no tienen por qué resultar atractivos para el aprendiz, pudiendo llegar a matar su curiosidad inicial. Sin embargo, mucha gente se siente perdida, sobre todo al principio, si no cuenta con unos cuantos ejercicios con los que practicar. Así que tómate los ejercicios como si fueran unas cuantas tablas gimnásticas con las que sacar músculo por las tardes, no como desafíos que tienes que resolver a toda costa si quieres tener éxito en tu carrera como programador. Es decir: si un ejercicio te resulta aburrido, sencillamente pasa de él y continúa. Por último, diremos otra cosa que este libro NO es: no es un manual de programación en pseudocódigo. No encontrarás ni una solo línea de pseudocódigo (ni un diagrama de flujo) en él. Este libro va al grano y desde el principio empezaremos a trabajar con Java y a ejecutar nuestros programas en una máquina real. Si eso resulta demasiado para ti y prefieres ir más despacio, encontrarás muchos libros de introducción a la programación que comienzan por pseudocódigo para luego dar el salto a un lenguaje real. Sin ir más lejos, yo mismo hice eso en “Aprender a programar en C: de 0 a 99 en un solo libro”.

3 Aviso a navegantes

Soy programador y profesor de informática. Trabajé como programador en la empresa privada, y más tarde di el salto a la enseñanza. He sido profesor de informática durante los últimos diecisiete años. En todo este tiempo, aunque he tocado muchos palos, me he centrado sobre todo en la enseñanza de la programación. Conforme los planes de estudio se actualizaban he pasado por múltiples lenguajes: C, C++, Visual Basic, Java, PHP, Python… Durante todo este tiempo he desarrollado multitud de materiales para mi alumnado, algunos tan breves como un apunte en un blog, otros visuales como una presentación de diapositivas, y otros mucho más elaborados y extensos como este libro que estás leyendo ahora. Esta ya larga experiencia me ha permitido comprobar qué cosas funcionan para la mayoría de la gente y qué cosas no lo hacen; en qué orden es mejor introducir los conceptos para no incrementar la confusión que inevitablemente sufre el aprendiz en las primeras semanas; dónde hay que hacer más hincapié y dónde no, etc. Pero no te voy a engañar: aprender a programar es difícil. Siempre encuentro personas que abandonan en el camino, algunas de ellas con unas facultades para programar muy evidentes. La gente que abandona siempre lo hace por una razón: porque tiran la toalla. Aprender a programar es una tarea larga, difícil y a veces ingrata. Se tardan en ver resultados, y eso puede desalentar al más animoso. Es necesario un compromiso personal por parte del aprendiz y una gran fuerza de voluntad, exactamente igual que al enfrentarse a cualquier otro aprendizaje complejo. Nadie pretende aprender un idioma extranjero en 24 horas y, si alguien te promete que puede lograrlo, seguramente te está tratando de embaucar. Programar también es una labor apasionante, creativa y absorbente. Pasado un cierto punto de no retorno, cuando los conceptos básicos ya están asimilados y el aprendiz piensa todo el tiempo en modo programador, la parte más dura habrá quedado atrás y a partir de entonces la experiencia es mucho más disfrutable, porque delante de ti solo encontrarás desafíos tecnológicos más que conceptuales. El objetivo de este libro es acompañarte en la parte más ardua del camino y ayudarte a traspasar ese punto de no retorno. Pero no lo dudes: eso no puede hacerlo ningún libro ni profesor por ti. Solo puedes hacerlo tú.

Así que, ya lo sabes. Hay dos tipos de aprendices de programación: los que abandonan y los que no. Si tú perteneces al primer o al segundo grupo es algo que te corresponderá a ti decidir, y nadie podrá tomar la decisión por ti. Estoy convencido de que, con el esfuerzo debido, cualquier persona puede aprender a programar. Lo he visto muchas veces. Piensa que, por muy difícil que resulte, por muy arcana que parezca la labor del programador, los lenguajes de programación no dejan de ser más que invenciones humanas, artefactos creados por gente como tú o como yo que cada día usan a lo largo y ancho del globo millones de personas como tú o como yo. Y si ellos han podido aprender, tú también puedes. Y ahora, ¿estás preparado (o preparada) para empezar?

4 Organización del texto Para ayudarte a orientarte en la geografía de este libro, te ofrecemos aquí un breve esquema de qué encontrarás en los siguientes capítulos y dónde encontrarlo. Hemos dividido el libro en seis capítulos de nivel de dificultad creciente, de modo que el libro pueda leerse de principio a fin, pero también consultarse con facilidad por partes. En el Capítulo 1 introduciremos algunos conceptos fundamentales para entender cómo trabaja Java: qué tipos de lenguajes de programación existen, qué diferencias hay entre compilar e interpretar y cómo funciona la semicompilación de Java y la máquina virtual JVM. Después hablaremos de las herramientas que vamos a necesitar para desarrollar programas con Java, construiremos nuestro primer programa (que compilaremos y ejecutaremos) y presentaremos los tipos de datos primitivos. En el Capítulo 2 nos meteremos de lleno en el paradigma de la programación orientada a objetos. La idea es desarrollar dentro del paradigma desde el principio, y por eso lo introduciremos tan pronto, siguiendo la tendencia más reciente en las metodologías de enseñanza de la programación de ordenadores. Haremos varias analogías para que el lector pueda asimilar bien los conceptos fundamentales, y a partir de ellas presentaremos las clases, objetos, métodos y atributos de forma clara y con ejemplos.

En el Capítulo 3 hablaremos de las estructuras de control que nos permitirán crear algoritmos en el interior de las clases: secuencias, selecciones e iteraciones serán los protagonistas de este capítulo. Proporcionaremos algunas reglas de estilo y también introduciremos el control de excepciones, tan importante en Java. En el Capítulo 4 profundizaremos en el paradigma de orientación a objetos desde el punto de vista de Java, hablando de constructores y destructores, interfaces, clases abstractas, herencia, wrappers, polimorfismo y clases anidadas, todo ello con múltiples ejemplos que faciliten la comprensión del lector/a. En el Capítulo 5 estudiaremos las clases para almacenamiento de datos complejos: arrays clásicos y colecciones de Java, principalmente. Hablaremos de ordenación, búsqueda, iteradores y arrays de objetos. Por supuesto, no nos olvidaremos de profundizar en los Strings. Por último, en el Capítulo 6 nos centraremos en los flujos de datos y, en concreto, en los flujos que permiten leer y escribir datos en ficheros en memoria secundaria. Trabajaremos con ficheros de texto y binarios, así como con ficheros de organización secuencial, aleatoria e indexada.

5 ¿Alguna sugerencia? Ningún texto está por completo libre de errores y este, sin duda, no es una excepción. Si encuentras cualquier cosa que te chirríe, o simplemente quieres hacer alguna sugerencia, puedes escribirnos a [email protected]. Te aseguramos que lo tendremos muy en cuenta para futuras ediciones.

CAPÍTULO 1: INTRODUCCIÓN A LA PROGRAMACIÓN CON JAVA

En este capítulo introduciremos las herramientas fundamentales que cualquier programador de Java necesita llevar en su caja de herramientas y conocer en profundidad. Comenzaremos con un repaso muy breve de algunos conceptos clave para comprender lo que vendrá después, como la diferencia entre compiladores e intérpretes o las máquinas virtuales. Luego hablaremos del JDK de Java y del software que necesitaremos instalar en nuestra máquina para poder desarrollar aplicaciones en Java. Entonces será el momento de dar el salto a Java. Haremos una pequeña introducción histórica al mismo y rápidamente crearemos nuestro primer programa. Gracias a él, aprenderemos la estructura básica de un programa en Java y usaremos el compilador y la máquina virtual. Acabaremos el capítulo hablando de los tipos de datos primitivos de Java, las constantes, las variables, las expresiones y los operadores. Con esto ya tendremos a nuestra disposición los ladrillos básicos con los que, más adelante, poder levantar un edificio.

1

Conceptos fundamentales

Es este apartado vamos a introducir muy someramente algunos conceptos básicas (muy pocos, en realidad) que debes tener claros antes de empezar a programar. Del mismo modo que nadie se lanzaría a conducir un coche sin conocer al menos lo más importante del código de circulación, ni nadie construiría su propia casa sin saber algo sobre materiales e instalaciones, es demasiado aventurado pensar que podemos programar un ordenador sin saber algunas cosas importantes sobre esos silenciosos compañeros de escritorio. Sin embargo, si tienes tiene cierta experiencia con ordenadores o ya has programado antes, es posible que prefieras pasar al apartado 3, donde empezaremos a hablar de Java. Por último, si quieres una introducción mucho más extensa y formal a los conceptos que encontrarás a continuación, puedes encontrarla en el libro “Aprender a programar en C: de 0 a 99 en un solo libro”, donde dedico muchas más páginas a habar de todo esto.

1.1

Programar un ordenador es como hablar con un

extraterrestre Imagínate que un buen día te tropiezas con un extraterrestre (y no es una metáfora: me refiero a un extraterrestre de verdad, o sea, de los de las películas). El extraterrestre se ha perdido de algún modo en nuestro pequeño planeta y no sabe nada sobre costumbres locales. ¿Cómo podrías comunicarte con él? Parece, en principio, una tarea imposible. Pero existe un lenguaje que sin duda compartimos: el de las matemáticas. Según todos los indicios, los principios matemáticos son universales y, por lo tanto, verdaderos tanto aquí como en la galaxia de Andrómeda. No, no te asustes. No vamos a hablar de cálculo diferencial ni del teorema de Chaucy. Esos son asuntos fascinantes, pero no imprescindibles para aprender a programar. Nos referimos más a matemáticas del tipo dos y dos son cuatro. Así que nuestro extraterrestre debe saber que dos y dos son cuatro, aunque a las ideas de “dos”, “cuatro” y “más” las llame de otra forma. Supongamos, para simplificar, que el extraterrestre conoce algunos rudimentos de la lengua terrícola (castellano, para más señas), lo suficiente para entender esos términos aritméticos simples (“dos”, “cuatro”, “más”, “por”, “mayor que”, “igual que”, y esas cosas). No sería difícil, por otro lado, enseñárselos. ¿Cómo podríamos, basándonos en esos términos, pedirle al extraterrestre que hiciese una tarea más complicada, como, digamos, averiguar cuál es el valor medio de una serie de diez números? Primero, le tendríamos que decir que necesita conocer cuáles son esos diez números, ¿no? Eso ya se lo diré yo, que para eso soy el autor del hallazgo del extraterrestre. Cuando tenga los diez números, deberá sumarlos y, el resultado de esa suma, dividirlo entre diez. Así que esto es lo que le diríamos al extraterrestre, gritando mucho como cuando un japonés nos pregunta por dónde se va al Ayuntamiento: “Primero, me tienes que pedir los diez números” “Luego, cuando te los haya dado, los sumas” “Cuando tengas la suma, lo divides entre diez y me dices el resultado” Formalicemos un poco lo que tendríamos que pedir al extraterrestre que hiciera:

Paso 1: Pedir diez números (llamémosles N1, N2, N3, … N10) al terrícola. Paso 2: Calcular suma = N1 + N2 + N3 + … + N10 Paso 3: Calcular media = suma / 10 Paso 4: Comunicar el valor de media al terrícola Pues bien, esto es un programa. Si nuestro extraterrestre es un ordenador y si los cuatro pasos anteriores los escribimos en un lenguaje un poco más formal que el que hemos empleado, tendremos un programa comprensible por el ordenador (recuerda: él es el extraterrestre, y tú el terrícola) Podemos complicar el conjunto de órdenes que le transmitimos para pedirle al extraterrestre que haga cosas mucho más complicadas, como resolver una integral indefinida o calcular el tiempo previsto para mañana, pero, en esencia, esta es la idea. Ahora tratemos de pedirle que haga algo un poco más complicado: que, primero, me pregunte cuántos números le voy a dar, y que luego me vaya pidiendo los números, para después calcular el valor medio de todos ellos. Tendríamos así un programa básicamente igual al anterior, pero más general, ya que no tiene por qué funcionar siempre con 10 números, sino que lo hará con cualquier cantidad de ellos. Piénsalo un momento antes de mirar la solución. Aquí está el meollo de todo lo que vendrá luego. Ponte en el lugar del extraterrestre que, al fin y al cabo, es quien recibirá las instrucciones: Paso 1: Preguntar al terrícola cuántos números piensa decirme (llamar a esta cantidad A) Paso 2: Usar la letra S para referirme a la suma de los números que voy a empezar a pedir al terrícola enseguida. S valdrá cero inicialmente. Repetir A veces los pasos 3 y 4: Paso 3: Pedir al terrícola un número (lo llamaré N) Paso 4: Sumar N a los números que ya había sumado antes (S = S + N). Paso 5: Calcular media = S / A Paso 6: Comunicar al terrícola el resultado de mis cálculos (es decir, el valor de media)

Pasémosle al extraterrestre este conjunto ordenado de instrucciones y pidámosle que las siga: estaremos ejecutando el programa. ¿Que no te lo crees? Pues mira, más abajo hemos puesto ese programa escrito en un lenguaje de programación que tal vez te suene: lo llaman Java. Cuando mires el código, no dejes que los árboles te impidan ver el bosque. No es necesario que entiendas hasta el último detalle, solo intenta descubrir la espina dorsal del programa y verás que es la misma que escribíamos en castellano un poco más arriba: System.out.println("¿Cuántos números piensas decirme?"); int a = Integer.parseInt(System.console().readLine()); int i = 0, s = 0; while (i < a) { System.out.println("Dime un número"); int n = Integer.parseInt(System.console().readLine()); s = s + n; i = i + 1; } float media = s / a; System.out.println("La media vale: " + media);

1.2

Algoritmos

Técnicamente, la lista de instrucciones para nuestro extraterrestre que hemos escrito más arriba es un algoritmo. Para realizar cualquier programa es necesario idear previamente un algoritmo. Puede hacerse con papel y lápiz, con un programa de diseño superavanzado o en la oscuridad hermética del interior de nuestro cerebro: el cómo no importa. Lo importante es idear el algoritmo. Sin algoritmo, no existiría el programa. Un algoritmo, por ser un poco más formales, es una secuencia ordenada de pasos que conducen a la solución de un problema. Los algoritmos tienen tres características fundamentales: 1) Son precisos, es decir, deben indicar el orden de realización de los pasos. 2) Están bien definidos, es decir, si se sigue el algoritmo dos veces usando los mismos datos, debe proporcionar la misma solución. 3) Son finitos, esto es, deben completarse en un número determinado de

pasos. Por ejemplo, vamos a diseñar un algoritmo simple que determine si un número N es par o impar: 1) Inicio 2) Si N es divisible entre 2, entonces ES PAR 3) Si N no es divisible entre 2, entonces NO ES PAR 4) Fin Si te fijas bien, este algoritmo cumple las tres condiciones enumeradas anteriormente (precisión, definición y finitud) y resuelve el problema planteado. Lógicamente, al ordenador no le podemos dar estas instrucciones tal y como las hemos escrito, sino que habrá que expresarlo en un lenguaje de programación. Al hacerlo así, habremos convertido un algoritmo en un programa. ¿Fácil, no?

2

Los lenguajes de programación

Podemos definir un lenguaje de programación como un conjunto de símbolos que se combinan de acuerdo con una sintaxis bien definida para posibilitar la transmisión de instrucciones a la CPU (definición extraída de QUERO, E., Fundamentos de programación, Ed. Paraninfo, 2003). Dicho de otro modo: el lenguaje de programación es el código con el que podemos transmitir al ordenador las órdenes de un programa. Hasta ahora hemos usado pseudocódigo (y, en menor medida, diagramas de flujo) para escribir esas órdenes. Ahora llega el momento de traducir ese pseudocódigo en un código real, el lenguaje de programación, comprensible por la máquina. Lenguajes de programación hay muchos, cada uno con s...


Similar Free PDFs