CodeGym/Blog Java/Random-ES/Antiguo nivel 02
John Squirrels
Nivel 41
San Francisco

Antiguo nivel 02

Publicado en el grupo Random-ES

CodeGym – aprendiendo a programar en Java

Antiguo nivel 02 - 1¿Qué tal una forma completamente nueva de estudiar programación y obtener una educación? Eso no se parece a nada que hayas visto antes. ¿Qué hay del aprendizaje, donde tienes un objetivo, un medio y un resultado? Estoy feliz de presentarles los nuevos cursos de programación en línea para aprender Java.

1 El entrenamiento es un juego en línea

Tomas una tarea, la ejecutas y obtienes una recompensa. Creo que es claro y común para usted. Las tareas son muy variadas: leer código, resolver tareas, lecciones en video, corregir errores en el código, agregar nuevas funciones, tareas grandes, escribir juegos y mucho más.

2 Solo lo esencial

Para que el curso no dure 5 años, tiré todo lo útil y dejé solo las cosas más necesarias. Analicé decenas de vacantes en el mercado laboral. Todos los temas que un novato necesita saber para obtener un trabajo de Java Junior Developer están incluidos en el curso.

3 Me he acercado a tu entrenamiento a fondo.

Un curso completo contiene 500 mini-conferencias y 1200 (!) tareas prácticas . Las tareas son pequeñas, pero son numerosas. Hay una gran cantidad de ellos. Solo ese mínimo, haciendo lo cual, obtendrá una experiencia tan valiosa. También hay trabajo en parejas, diferentes juegos, grandes tareas, proyectos reales y otro tipo de prácticas.

4 No puedes terminar el juego y no convertirte en desarrollador

El curso contiene 40 niveles. Puede pasar al siguiente nivel, solo si ha resuelto la mayor parte de las tareas en el nivel actual. Comenzando con poco y fácil, terminando con grande y muy útil. Cada persona que llegue al final obtendrá entre 300 y 500 horas de experiencia práctica. Y esto da una gran oportunidad de ganar. Y para conseguir un trabajo.

5 Preparación de la entrevista de trabajo orientada a objetivos

Los últimos 10 niveles están dedicados a la redacción de un currículum, a la preparación de la entrevista ya la adquisición de habilidades de trabajo en equipo. Se añadirán los vídeos de las entrevistas de trabajo y su análisis. Bueno y, desde luego, típicas preguntas de entrevista con respuestas. Antiguo nivel 02 - 2

6 Puede resolver tareas directamente en el sitio

Es muy práctico y eficaz. Después de haber analizado una nueva tarea en la conferencia, tendría que hacer la suya propia por analogía justo aquí, en el sitio. Para aquellos que quieran hacer la tarea en IDE, hay un complemento que les permite recibir una tarea con dos clics y entregarla para registrarla en uno . Conferencias, análisis de ejemplos, resolución de tareas directamente en un sitio web, resolución de tareas en IDE: la brecha entre la teoría y la práctica es tan pequeña como nunca antes.

7 Comprobación instantánea de tareas (en menos de un segundo)

¿Está familiarizado con la situación, cuando entregó una tarea/trabajo para su verificación y tuvo que esperar los resultados durante una semana porque la persona que la verifica está ocupada? Este es el caso con la mayoría de los cursos fuera de línea. En CodeGym obtendrá resultados de compilación y verificación de la solución de su tarea en menos de un segundo, después de presionar el botón «Ejecutar/Verificar».

8 A CodeGym le encanta cuando pasas tiempo en Facebook durante el estudio

En Facebook hay una página dedicada al proyecto. En él puedes encontrar interesantes artículos técnicos, historias motivacionales, noticias de CodeGym y mucha otra información útil.

9 Cobertura

En las conferencias hay muchas referencias a diferentes sitios web, donde se pueden leer explicaciones de otros disertantes. Mi objetivo es que entiendas el material, no que me escuches únicamente a mí.

10 Solo necesitarás tu cerebro y tu computadora para convertirte en desarrollador

Te tomará de 3 a 6 meses, dependiendo de cuánto tiempo practiques.

11 Soporte

Antiguo nivel 02 - 3Sin duda surgirán preguntas cuando te enfrentes a miles de tareas. Hemos establecido un servicio especial, donde podrá hacer preguntas sobre las tareas. Otros CodeGym-estudiantes, moderadores, voluntarios y miembros fundadores del servicio te estarán respondiendo.

12 Comunidad

Creemos que la fuerza está en la unidad. Por eso creamos la Comunidad, donde puedes hacer preguntas; discutir diferentes temas, compartir artículos y blogs. Además, una comunidad es el lugar ideal para conseguir un trabajo en el conocido. Por lo tanto, siéntase libre de hacer preguntas inteligentes y dar respuestas inteligentes. Cuanto más activo te comportes y ayudes a los demás, más posibilidades hay de que otro miembro de la asociación te sugiera que te unas a su proyecto.

Has alcanzado un nuevo nivel

Nivel 2

Antiguo nivel 02 - 4

1 Elly, la base de todo

- Hola, amigo. Hoy quiero contarles cómo se estructura un programa típico de Java . El punto es que cada programa Java consta de clases y objetos . - Ya sé lo que son las clases. ¿Y qué son los objetos? - Por analogía con la construcción de un barco pequeño, primero debe hacer un dibujo y luego entregarlo al astillero. Sobre la base de este dibujo se ensamblará un barco. O cinco barcos. En realidad, tantos como desees. Se construyen docenas de barcos idénticos en base a un dibujo, ¡de eso se trata! - Todas las cosas en la programación Java son exactamente iguales. - El programador es como un ingeniero de diseño. Y si el ingeniero de diseño tiene que hacer dibujos, el programador de Java tiene que escribir clases. Luego, las partes se hacen con base en los dibujos y los objetos se hacen con base en las clases. - Primero, escribimos clases (hacemos dibujos), y luego, en tiempo de ejecución del programa, la Máquina Virtual Java crea objetos usando estas clases. De la misma manera se hacen los barcos. Hay un dibujo y muchos barcos. Hay diferentes embarcaciones que tienen diferentes nombres y transportan varias cargas. Sin embargo, son muy parecidos: todos tienen la misma estructura y pueden realizar las mismas tareas. - En el caso de los barcos, todo está claro. Dame un par de comparaciones más para entender exactamente de qué se trata. - Seguro. Por ejemplo, las abejas… Antiguo nivel 02 - 5- Oh no, espera un momento, las abejas me recuerdan algo malo. Piensa mejor en un hormiguero. - Un hormiguero es un buen ejemplo de interacción de objetos. En el hormiguero más simple, hay tres clases de hormigas: una reina, soldados y hormigas obreras. Hay una diferencia en el número de hormigas para cada clase. La reina está sola en el nido; hay decenas de soldados y cientos de hormigas trabajadoras. Entonces, podemos decir que hay tres clases y cientos de objetos. Las hormigas se comunican entre sí, con las mismas hormigas y hormigas de otras clases según reglas estrictas. - Este es un ejemplo perfecto. Para un programa típico, todo es lo mismo. Un objeto principal crea objetos de todas las demás clases. Los objetos comienzan a interactuar entre sí y con "el mundo exterior" de un programa. El comportamiento de los objetos está codificado dentro de ellos. - No entiendo muy bien. Más bien, no entiendo en absoluto. - Estas dos explicaciones son las diferentes caras de una misma moneda. La verdad está en algún lado. El primer ejemplo (el del dibujo y los barcos) muestra la relación entre la clase y los objetos de esta clase. El parecido es muy cercano. El segundo ejemplo (el del hormiguero) muestra la relación entre las clases escritas y los objetos que existen en tiempo de ejecución. - ¿Quieres decir que primero necesitamos escribir clases para todos los objetos existentes en un programa y lo que es más, describir su interacción? - Sí, pero es más fácil de lo que parece. En Java, todas las cosas en tiempo de ejecución del programa son objetos, y cuando escribes el programa, debes describir diferentes formas de interacción de objetos. Los objetos simplemente llaman a los métodos entre sí y les pasan los datos necesarios. - No es obvio, pero casi claro. - Pero, ¿cómo sabe qué métodos llamar y qué datos necesita pasar a los métodos? - Cada clase tiene su descripción para especificar para qué fue creada la clase. Cada método tiene igualmente su descripción de lo que hace y qué datos se le deben enviar. Para usar la clase, necesita saber en general lo que hace. Además, necesita saber exactamente qué hace cada método de esta clase. Pero no tienes que saber cómo se hace . Es un tipo de magia. - Humph. Suena así.   - Aquí, eche un vistazo a un código de clase que copia un archivo: Antiguo nivel 02 - 6- No es tan fácil, pero ya entiendo la imagen. - Bien. ¡Hasta luego cocodrilo!

2 Risha, Variables y tipos primitivos

- Oye tú, mano de obra gratis. - Quiero decir, «Hola, Amigo». Quiero familiarizarte con la estructura interna de las variables. Ya sabes que cada variable tiene un fragmento de memoria asociado, donde la variable almacena su valor. - Sí. Lo dijiste la última vez. - Bien. Es bueno que lo recuerdes. Entonces continuaré. - clases . Cuando describimos una nueva clase en un programa, esto significa que declaramos un nuevo tipo compuesto complejo , cuyos datos serán otros tipos complejos o tipos primitivos. Antiguo nivel 02 - 7- Todavía está claro para una maravilla. - Dado que los tipos grandes (complejos) consisten en muchos pequeños (primitivos), sus objetos usan mucha memoria. Más de lo que hacen las variables de tipo primitivo habituales. A veces mucho más. La asignación de variables de tipos complejos tomaba mucho tiempo y requería copiar grandes cantidades de memoria. Es por eso que las variables de tipo complejo no almacenan el objeto en sí, sino una mera referencia de objeto (es decir, una dirección de cuatro bytes). Esto es suficiente para acceder a los datos del objeto. JVM asume todas las dificultades relacionadas con el mismo. - No lo entiendo. - Ya hemos comentado que la variable es como una caja. Para almacenar 13 en él, puede escribir el número en una hoja de papel y ponerlo en una caja. - Ahora imagina que tienes que guardar en una caja (variable) algo un poco más grande. Por ejemplo, un perro, un automóvil o su vecino Joe. Para simplificar, puedes hacer algo fácil: poner la foto del perro en lugar del perro, la matrícula del automóvil en lugar del automóvil y el número de teléfono de Joe escrito en una hoja de papel en lugar del propio Joe. - Ahora tomamos un papel y escribimos en él el número de teléfono de Joe. Es como una referencia de objeto. Si sacamos de la caja una hoja en la que está escrito el número de Joe, hacemos copias y metemos un par de cajas, aumentarán las referencias a Joe, pero solo puede haber un Joe. - La ventaja de dicho almacenamiento de datos es quepuede haber muchas referencias y un solo objeto . - Es emocionante. Por cierto, casi lo entiendo. Solo responda una pregunta más: ¿qué sucede si asigno una variable de tipo complejo a otra variable de tipo complejo? - Entonces estas dos variables contendrán la misma dirección. Y, por tanto, si cambias los datos almacenados en una variable de tipo complejo, también se cambiarán los datos de la otra . Porque ya sabes , en realidad solo hay un objeto al que las variables almacenan referencias. Sin embargo, puede haber una gran cantidad de variables que almacenan referencias al objeto. - ¿Y qué se almacena en las variables de tipo complejo (tipo de referencia/clase) mientras no hay referencias de objetos? ¿Puede realmente existir tal cosa? - Sí, amigo. Me has quitado las palabras de la boca. Eso puede ser. Si no hay una referencia de objeto en la variable de tipo de referencia (compleja), almacena null , una «referencia nula» especial. De hecho, simplemente almacena la dirección de un objeto igual a 0. Pero Java Virtual Machine nunca crea objetos con dirección cero, por lo tanto, siempre sabe que si la variable de referencia es 0, entonces no hay ningún objeto allí. Antiguo nivel 02 - 8¿Lo entiendo bien? Las variables se dividen en dos tipos: primitivas y de referencia. Una variable de tipo primitivo almacena un valor, mientras que una variable de tipo de referencia almacena una referencia de objeto. Los tipos primitivos son int, char, boolean y algunos más. El resto son variables de referencia, se forman usando clases. - Así es, muchacho.

3 Elly, ¿Qué objetos son

Antiguo nivel 02 - 9- Aquí está tu profesor favorito de nuevo. Ya que avanzamos rápido, te diré qué son los objetos y cómo lidiar con ellos. - Para crear cualquier objeto, debe escribir el nombre del tipo de objeto (clase) y la palabra clave nuevo antes. Digamos que tenemos una clase Cat, entonces: Antiguo nivel 02 - 10- ¿Qué sucede si solo creas un objeto y no le asignas [su referencia] a ninguna variable? - Si lo hace, Java Virtual Machine creará el objeto e inmediatamente lo declarará basura (objeto no utilizado). Después de un tiempo, eliminará ese objeto durante la recolección de basura. - ¿Cómo puedo destruir el objeto si ya no lo necesito? - No puedes.Tan pronto como no haya una variable para almacenar una referencia de objeto, el objeto se marcará como basura y JVM lo destruirá durante la próxima recolección de basura. Siempre que haya al menos una referencia de objeto, se considerará activo y no se destruirá. Cuando desee destruir rápidamente el objeto, establezca todas sus referencias en nulo, es decir, asigne un valor nulo a todas las variables que se refieren a ese objeto. - Entiendo. No parece nada difícil después de las conferencias anteriores. - Bien, aquí hay algunas tareas para que mejore sus habilidades. Estos también están en System.out. Pero luego habrá otras más difíciles. Y podrías mostrarnos de qué acero estás hecho.
Tareas
1 Escribir un programa que muestre: «Paso a paso y la cosa está hecha.».
2 Escribe un programa que muestre 7 veces: «Es divertido hacer lo imposible».
3 Escriba un programa que muestre: «Siempre ganas de aprender algo útil.».

4 Risha, Visibilidad de variables.

- Hola, mi estudiante favorito. Ahora te hablaré de la visibilidad de las variables . - ¿Por qué, también hay variables invisibles? - No, las variables son visibles en lugares del código donde se puede acceder a esa variable. Se puede acceder a algunas variables desde cualquier parte de un programa, a otras solo dentro de su clase y a algunas variables solo se puede acceder dentro de un método. - Por ejemplo, no puede hacer referencia a la variable antes de declararla. - Está vacío. - Estos son algunos ejemplos: Antiguo nivel 02 - 111 Una variable declarada en un método existe / es visible desde el comienzo de la declaración hasta el final del método. 2 Una variable declarada en un bloque de código existe hasta el final de este bloque de código. 3 Variables - argumentos de método - existen en cualquier lugar dentro del alcance del método. 4 Las variables de clase/objetos existen durante toda la vida útil de su objeto. Los modificadores de acceso especiales públicos y privados controlan adicionalmente su visibilidad. 5 Existen variables de clase estáticas en el tiempo de ejecución del programa. Los modificadores de acceso también determinan su visibilidad. - Me encantan las fotos, todo encaja. - Bien por ti, Amigo. Siempre supe que eras un tipo inteligente. - También te hablaré de los modificadores de acceso . No tengas tanto miedo, no es ciencia espacial. Estas son las palabras público y privado que ves. - No tengo miedo, solo hace frío aquí. - Si seguro. Puede controlar el acceso (visibilidad) de métodos y variables en su clase desde las otras clases. Para cada método o variable, puede especificar solo un modificador de acceso. 1 Modificador public Se puede acceder a una variable, método o clase marcada con un modificador public desde cualquier parte del programa. Es el grado más alto de apertura, sin restricciones. 2 Modificador privado Solo se puede acceder a una variable o método marcado con un modificador privado desde la clase donde se declara. Para todas las demás clases, un método o una variable marcados son invisibles, como si no existieran. Este es el grado más alto de cierre (visible solo desde la misma clase). 3 Modificador predeterminado Si algún modificador no marca una variable o método, se considera que es un modificador predeterminado. Las variables o métodos con ese modificador (es decir, sin ninguno) son visibles para todas las clases del paquete en el que están declarados. Solo en el mismo paquete. Este modificador a veces se llama paquete para implicar que el acceso a variables y métodos es posible para todo el paquete, cuya clase pertenece a la pestaña Explicación: Antiguo nivel 02 - 12

5 Diego, Tareas para crear un montón de variables

- Hey amigo. Si es necesario, guardo una copia del contrato para usted. Esa astuta y tacaña Risha está felizmente inconsciente. Deberías haber visto las cantidades en mi contrato. Je je. - Bien hecho, Diego. Creo que me enseñas cosas realmente útiles. - Claro, amigo. No hay ganancia sin dolor. Pero aún así alguien sufre el dolor sin ganancia alguna. - Mejor volvamos la mano a estudiar. Ahora te mostraré cómo crear un montón de variables de diferentes maneras: Antiguo nivel 02 - 13- ¡Guau, Diego! Tu eres tan inteligente. - ¡Je je! Gracias, Amigo. - Creo que ya te has perdido mis tareas. Así que aquí están algunos de ellos. Esos humanos, extraterrestres, no saben nada sobre nuestra vida robótica. ¿Quién sino yo te enseñará eso?
Tareas
1 Escribe un programa que muestre 3 veces: «Muchas personas están vivas solo porque es ilegal dispararles».
2 Escriba un programa que muestre: «Si quiero su opinión, le pediré que llene los formularios necesarios.».
3 Escriba un programa que muestre 20 veces: «Nunca dije la mayoría de las cosas que dije».

6 Elly, Pasando por referencia. Variables de referencia

- Hola, Amigo, soy yo otra vez, Elly. Lo siento, siempre digo esto, pero así es como se hacen las cosas en la Tierra en el siglo 31. Te explicaré las características de las variables de referencia y cómo pasar argumentos referenciales a funciones (métodos). - Estoy listo. - Pues bien, las variables de referencia son variables de todo tipo excepto las primitivas. Estas variables contienen solo la dirección del objeto (referencia del objeto). - Las variables de tipos primitivos almacenan un valor y tipo, y las variables de clase almacenan referencias a los objetos de la misma clase, bien o nula. ¿Tengo razón? - Absolutamente. - Entonces, ¿qué es una referencia? - El objeto y su referencia están vinculados, digamos, como un hombre y su número de teléfono. Un número de teléfono no es un hombre, pero puede usarse para llamar a un hombre para pedirle algo, guiarlo o mandarlo. Una referencia también se utiliza para interactuar con un objeto. Todos los objetos interactúan entre sí a través de referencias. - ¿Es como si las personas se comunicaran entre sí por teléfono? - Así es. Cuando asigna un objeto primitivo, su valor se copia (duplica). Cuando asigna una variable de referencia, solo se copia la dirección del objeto (número de teléfono), y no el objeto en sí. - OK, lo tengo. - Una referencia ofrece otra ventaja: puede pasar una referencia de objeto a cualquier método, y este método podrá modificar (cambiar) nuestro objeto usando su referencia llamando a sus métodos y accediendo a los datos dentro del objeto. Antiguo nivel 02 - 14- Los valores de las variables a y b se intercambian dentro del método swap . Cuando llama al método de intercambio , las variables a & b reciben copias de los valores m & n . Por lo tanto, los valores de las variables m & n siguen siendo los mismos cuando cambia los valores de a & b . Es claramente visible en el código de la columna de la derecha. - Para ser honesto, no tengo nada de eso. ¿Puedo tener un par de ejemplos más? - En el caso del tipo de referencia, puede hacerlo: Antiguo nivel 02 - 15- A las variables a y b se les asignan referencias a emma y alice, respectivamente, los valores a y b cambian dentro de los objetos emma y alice. - Entonces, ¿también es posible declarar clases dentro de otras clases? ¡Guau! - En cuanto al resto, no está claro. - No todo al mismo tiempo.

7 Elly, llamada de función, valor de retorno

- Bueno, entonces demos la vuelta. Hablaremos sobre cómo funciona la llamada al método y luego intente echar un vistazo a la lección anterior, ¿de acuerdo? - ¡Trato! - Bueno, luego te contaré sobre la función/llamada al método y los valores devueltos. - Los comandos se agrupan en funciones, por lo que puede ejecutarlos en un solo bloque, como un comando complejo. Para hacer esto, debe escribir el nombre de la función (método) y luego, entre paréntesis, después del nombre, especifique los valores y parámetros. Antiguo nivel 02 - 16- En el ejemplo anterior, escribimos una función que muestra la cadena pasada 4 veces. Luego llamamos a la función print4 en la línea 6. - Cuando se trata de la ejecución de la línea 6, el programa saltará a la línea 9, y a la variable se le asignará un valor "Me gusta moverlo, moverlo". - Luego se ejecutarán las líneas 11-14, y finalmente, la función estará completa y el programa continuará con la línea 7. - Gotcha. - No solo puede pasar argumentos (parámetros) a la función, sino también devolver el resultado (valor) de la operación de la función. Esto se hace usando la palabra clave return. Esto es lo que parece: Antiguo nivel 02 - 17- Creo que me estoy dando cuenta. Es el mismo código a la izquierda ya la derecha. A la izquierda, simplemente se presenta como una función separada. - La función calcula un valor y lo pasa a quienes lo llamaron usando el comando de retorno. Al menos eso pienso. - Básicamente, es verdad. - ¿Y cuál es el tipo vacío? - Algunas funciones simplemente hacen algo, pero no calculan ni devuelven ningún valor, como nuestro método principal(). Para esas funciones se creó un tipo de resultado especial void (un tipo vacío). - ¿Por qué no podemos especificar nada si una función no devuelve nada? - Basta pensar en cómo se declara cada variable: tipo y nombre. Una función se declara con tipo, nombre y paréntesis. ¡El nombre de la función seguido de paréntesis es una llamada de función! - Entonces, ¿fue más fácil encontrar un "tipo vacío" que dividir las funciones en dos categorías, las que devuelven un valor y las que no devuelven un valor? - ¡Exactamente! Eres un pensador rápido, muchacho. - ¿Y cómo puedo devolver un tipo vacío? - No puedes. Así es como funciona: cuando la JVM ejecuta una devolucióncomando, calcula el valor de la expresión a la derecha de la palabra retorno, almacena ese valor en un área de memoria especial e inmediatamente sale de la función . Utiliza el valor guardado como resultado de una llamada de función en el lugar donde se llamó a la función. Puedes verlo en el ejemplo anterior. - ¿Te refieres al lugar donde int m = min(a,b) se transformó en m = m2 ? - Sí. Después de la llamada a la función, todo continúa funcionando como si en lugar de la función, su resultado estuviera escrito en el mismo lugar. Lea esa oración una vez más y observe el código del último ejemplo. - Parece fácil, pero en realidad es difícil. Tengo sólo un poco, eso es todo. - Está bien.En el primer intento puedes entender solo lo que ya sabes. Cuanto más te adentras en un área nueva para ti, menos claro está. Y el resultado será aún más impresionante. A medida que pasa el tiempo, todo se aclara. - Bueno, si es así, entonces sigamos adelante.

8 diego

- Hola, amigo. Aquí hay un par de tareas para ti. Ahora eres capaz de hacer algo más que System.out. ¡Haz tu mejor esfuerzo! ¡Creo en ti!
Tareas
1 Mínimo de dos números
Escribe una función que devuelva un mínimo de dos números.
2 Máximo de dos números
Escribe una función que devuelva un máximo de dos números.
3 Mínimo de tres números
Escribe una función que devuelva un mínimo de tres números.
4 Mínimo de cuatro números
Escribe una función que devuelva un mínimo de cuatro números.
La función min(a,b,c,d) tiene que usar (llamar) la función min(a, b)
5 Duplicación de cadenas
Escriba una función que muestre tres veces la cadena pasada. Cada cadena debe estar en una nueva línea.
6 Visualización de texto
Escriba una función que muestre la cadena pasada (palabra) tres veces en la misma línea.
Las palabras deben estar separadas por un espacio y no tienen que fusionarse en una sola.

9 Diego, nombre completo de la clase

Antiguo nivel 02 - 18- Oye, Amigo, quiero contarte los nombres completos de las clases. - Ya sabes que las clases están en los paquetes. Entonces, un nombre de clase completo es un nombre que cubre todos los paquetes separados por puntos y un nombre de clase. Ejemplos: Antiguo nivel 02 - 19 - Para usar la clase en su propio código, debe especificar su nombre completo. Sin embargo, puede usar un nombre corto, solo un nombre de clase. Para hacer esto, debe "importar" esta clase especificando su nombre agregando la palabra importar antes de declarar una clase. Las clases del paquete java.lang (String, Integer,...) se importan por defecto. No es necesario especificarlos. Ejemplo: Antiguo nivel 02 - 20- Un ejemplo de uso de nombres cortos: Antiguo nivel 02 - 21- Lo tengo. - Bien.

10 Profesor, Conferencia sobre clases y objetos

Antiguo nivel 02 - 22- Hola, amigo. Espero que hayas entendido todo lo que Elly y Risha te han dicho hoy. Solo para estar seguro, como prometí, aquí hay enlaces a más material: 1 Mis notas 2 Pensando en Java. Ese maravilloso libro del que ya te he hablado. Sería genial si lo lees. - Espero que tengas tiempo para echarle un vistazo. - Ejem. ¡Seguro que lo haré!

11 julio

- ¡Hola, amigo! ¿Espero que estés para un descanso duro y agotador?

Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios