Cafecito
Imagen de portada
Imagen de perfil

Programación Desde Cero

Educación
0Seguidos
2Seguidores
Ayudame con un café

Desafío C++ número 6 (solución)

Desafío C++ número 6 (solución)
✅ La respuesta correcta es la B.

✏️ Explicación:

El código original ocasiona un error debido a que la función recibe el primer parámetro por referencia, pero en la invocación se está pasando como argumento la expresión a+b. Esta operación genera un valor temporal (con el resultado de a+b) que se descarta tan pronto la expresión es usada, por lo que no es posible crear una referencia a él.

❌ A. Además de que no soluciona el error antedicho, no corresponde poner una instrucción return debido a que la función es de tipo void.
✔️ B. Esta es la opción correcta. Aunque el argumento a+b sigue estando almacenado de manera temporal, const extiende su tiempo de vida, permitiendo leer ese valor (mas no modificarlo) dentro de la función.
❌ C. En esta opción se indica que todos los parámetros sean pasados por referencia, lo cual altera el resultado final sin corregir el error.
❌ D. Cambiar el tipo de la función y hacer que retorne un valor entero no soluciona el problema.

💻 Código ejecutable: https://repl.it/@programacionde1/C-Desafio-6
Ver más

Desafío C++ número 6

Desafío C++ número 6
Siguiendo con los desafíos de programación: uno con C++.⭐️✨⚡️

Si bien podríamos modificar tanto la función como la invocación para evitar el error, en este caso tenemos 4 variantes de la función, pero solo una de ellas corrige el error. Cuál es

Aclaración: el programa que se muestra es solo para “jugar” a descifrar el error. No tiene ningún sentido ni “hace” nada en especial.

Desafío Java número 3 (solución)

Desafío Java número 3 (solución)
✅ La respuesta correcta es la C: la línea 6 genera un error.

✏️ Explicación: el método recibe un arreglo de String y retorna el String más largo contenido en el arreglo. Para esto, itera por todos los elementos, quedándose con el primero que tenga la mayor longitud.

❌ A. Las líneas 3 y 4 declaran dos variables (objetos) de tipo String cuyos valores son null. Esto es totalmente válido, por lo que no habrá error en tiempo de compilación ni en tiempo de ejecución. Solo será cuestión de tener cuidado de no utilizar objetos nulos (que es lo que sucede en la línea 6) para evitar errores.
❌ B. El operador == usado con objetos de tipo String compara las referencias (direcciones de memoria), independientemente del valor que tengan esos strings. Entonces, es válido comparar para saber si dos referencias son iguales.
✔️ C. El error se provoca durante la ejecución, por ser null el objeto cadena1, entonces se arroja una NullPointerException. Lo interesante es que el hecho de que cadena2 sea nulo no genera ningún error. Podríamos probar esto cambiando la línea 3 para asignar cualquier string válido a cadena1, por ejemplo: String cadena1="hola"; y entonces el código no daría errores, aunque cadena2 continúe siendo null. Esto se debe a que no es posible usar el operador "." (punto) sobre un objeto nulo: null.equals() es una operación inválida.

💻 Código ejecutable: https://repl.it/@programacionde1/Desafio-Java-3
Ver más

Lo que todo programador debe saber

En Twitter alguien pidió que nombren una cosa que todo programador -de cualquier nivel- debería saber. Las respuestas han sido muy interesantes. Aquí van algunas (sin ningún orden en particular):

* Git (y la diferencia con GitHub)
* Googlear
* El principio “DRY” (“don’t repeat yourself”)
* Escribir código limpio y con buenas prácticas, aunque sea una aplicación pequeña
* Depurar (“debuggear”) código y analizar errores
* Inglés
* Cómo y cuándo hacer preguntas, y siempre antes intentar buscar una solución por nuestra cuenta
* Está bien no saber algo y tener que pedir ayuda
* Humildad y saber aceptar críticas constructivas
* Manejo de errores y escribir buenos mensajes de error
* Vencer el “síndrome del impostor”
* Continuar aprendiendo siempre, y aprender de manera eficiente
* Practicar lo aprendido
* Colocar información útil en un “catch” después de un “try”
* Comandos básicos de consola
* Leer documentación
* Hacer pausas y no programar por largas horas sin descanso
* Patrones
* Empatía con el usuario final del software
* Saber expresarse, habilidades de comunicación
* Probar (“testear”) el código
* Documentar correctamente el código, escribir buenos comentarios
* Manejar la herramienta “Devtools” del navegador
* Escribir buenos nombres de variables y buenas prácticas en general
* No hacer “deploy” los viernes 😁
* Estructuras de datos, algoritmos y complejidad algorítmida
* Usar sangrías y dar correcto formato al código
* Saber leer e interpretar código escrito por otros
* Abstracción

Ver la publicación original en Twitter: https://twitter.com/StasKlymenko/status/1280799877509808128
Ver más

Resumen sobre punteros en C++

Resumen sobre punteros en C++
Un resumen sobre punteros en C++ (usando el estándar C++11 en adelante). Estos son los punteros “raw” o “crudos” que suelen estudiarse académicamente para comprender las bases de las estructuras de datos. Luego, para facilitarnos las cosas, tenemos los punteros “inteligentes”, pero eso es otro tema 😁

▶️ Video sobre punteros: https://youtu.be/s8T7cPnYrz0

Convenciones en el código

Convenciones en el código
En ejercicios académicos y de práctica de programación tal vez no es crucial que apliquemos convenciones a nuestro código porque el foco está puesto en el aprendizaje pero, cuando ese código forma parte de un proyecto real, adoptar un estilo homogéneo pasa a ser importante.

👉 Existen convenciones propias de algunos lenguajes y de algunas organizaciones, que los programadores pueden elegir utilizar de manera optativa (lo que no significa que sea incorrecto no usarlas). Algunos ejemplos:

📌 Guía de estilos de Google para varios lenguajes: Java, C++, Python, R, HTML/CSS, Javascript…: https://google.github.io/styleguide/

📌 Estándares de código C++: https://isocpp.org/wiki/faq/coding-standards

📌 Python PEP 8: https://www.python.org/dev/peps/pep-0008/

📌 Estilos de código para Angular: https://angular.io/guide/styleguide

📌 Guía de estilos de Kotlin: https://kotlinlang.org/docs/reference/coding-conventions.html
Ver más

Open source o código abierto. ¿Qué es?

Open source o código abierto. ¿Qué es?
¿Qué es el software de código abierto? ¿Significa que es gratis? ¿Si utilizo bibliotecas de código abierto en mi proyecto no podré venderlo? 🤔

Son cuestiones importantes a conocer. Y las licencias son todo un mundo aparte. Hay una interesante comparación en Wikipedia (https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences).

Estas webs pueden ayudar a escoger una licencia (en inglés):
🔸 Open Source Initiative: https://opensource.org/licenses/category
🔸 Choose an open source license: https://choosealicense.com/
🔸 TL;DR Legal: https://tldrlegal.com/
🔸 Public License Selector: https://ufal.github.io/public-license-selector
Ver más