7 Buenas prácticas en programación
Fecha: 03 de septiembre, 2026
Objetivos:
- Conocer las buenas prácticas
- Valorar la importancia del software libre y de código abierto
- Aplicar este conocimiento en la selección de sistemas operativos
Notas personales recabadas a partir de los tutoriales y ejemplos 😊. Espero que les funcione 💜
7.1 Un algoritmo nos permite resolver un problema ⭐
Un algoritmo es un conjunto de pasos lógicos y ordenados que describe cómo resolver un problema específico. Es una secuencia de instrucciones abstractas e independientes del lenguaje de programación.
Características:
- Definido (Determinístico): Un algoritmo es definido si al seguirlo dos veces con los mismos datos de entrada, siempre se obtiene el mismo resultado. Es reproducible y predecible.
- Implicaciones:
- No hay ambigüedad en los pasos
- No depende del azar o de factores externos
- Cualquier persona que siga el algoritmo llegará al mismo resultado
- Implicaciones:
- Preciso (Orden Específico): implica el orden de realización de cada uno de los pasos. No puedes cambiar el orden arbitrariamente sin afectar el resultado.
- Implicaciones:
- Cada paso debe ejecutarse en el orden correcto
- El orden es fundamental para obtener el resultado esperado
- Las instrucciones deben ser claras y sin ambigüedad
- Implicaciones:
- Finito (Tiene un Fin): Tiene un numero determinado de pasos y siempre termina en algún momento. No puede ejecutarse indefinidamente.
- Implicaciones:
Debe haber un punto de salida o conclusión
No puede entrar en bucles infinitos
Debe producir un resultado en tiempo finito
- Implicaciones:
- Algoritmo = La idea y el plan (abstracto)
- Programa/Software = La implementación concreta (código ejecutable)
Los algoritmos son conceptuales y puede expresarse en lenguaje natural, pseudocódigo o diagramas de flujo.
7.2 🗣️ Lenguaje Natural
7.2.1 En el contexto de algoritmos y programación
- Utiliza palabras comunes y cotidianas para describir procesos o instrucciones.
- Es intuitivo y accesible, ideal para explicar algoritmos sin tecnicismos.
- No requiere conocimientos previos de programación.
- Puede ser ambiguo o impreciso, por lo que no siempre es adecuado para implementación directa.
- Se usa frecuentemente como primer paso antes de escribir pseudocódigo o código real.
7.3 Pseudocódigo
- El pseudocódigo permite escribir algoritmos con sintaxis relajada, sin seguir reglas estrictas de un lenguaje de programación.
- Organiza los pasos lógicos necesarios para construir un algoritmo, sin detallar estructuras de datos complejas.
- Usa un lenguaje sencillo y legible, accesible para personas sin experiencia técnica.
- 🔄 Los pasos escritos en pseudocódigo pueden traducirse fácilmente a cualquier lenguaje de programación.
INICIO
DEFINIR edad COMO ENTERO
LEER edad
SI edad >= 18 ENTONCES
MOSTRAR "Eres mayor de edad"
SINO
MOSTRAR "Eres menor de edad"
FIN
7.4 Diagrama de Flujo
- Representa visualmente un algoritmo mediante símbolos gráficos (óvalos, rectángulos, rombos, etc.).
- Muestra el flujo lógico de decisiones, procesos y entradas/salidas.
- Facilita la comprensión rápida de la estructura del algoritmo.
- Ayuda a identificar errores o redundancias en la lógica.
- Es útil tanto para documentación técnica como para enseñanza.

7.5 ¿Qué es un código?
Se refiere a los scripts, programas/software o fragmentos de instrucciones escritas en lenguajes de programación (como Python, R, Bash, entre otros) que le indica a una computadora qué tareas realizar.
Es la forma en que los humanos comunicamos con las máquinas para resolver problemas, procesar información y automatizar tareas.
Aplicaciones prácticas:
- Procesar y analizar datos
- Crear visualizaciones
- Resolver problemas matemáticos
- Crear herramientas y aplicaciones
- Documentar procesos

7.6 Para escribir un buen software necesitas:
Escribir código mantenible (maintainable code), usar control de versiones (version control) y rastreadores de problemas (issue trackers), revisiones de código (code reviews), pruebas unitarias (unit testing) y automatización de tareas (task automation).

7.7 Pasos para escribir un buen software

7.7.1 Mini historia de los bugs
El término “bug” (insecto en inglés) para referirse a errores en programas tiene una historia curiosa y bien documentada que se remonta a los primeros días de la computación.
En los años 1940s, las computadoras eran máquinas enormes que ocupaban habitaciones completas, como la ENIAC (Electronic Numerical Integrator and Computer). Estos equipos utilizaban miles de tubos de vacío, relés y componentes electrónicos que generaban mucho calor.
El problema: Los insectos reales (polillas (moth), cucarachas y otros bichos) eran atraídos por el calor de las máquinas y se metían dentro de ellas, causando cortocircuitos y fallos en el funcionamiento. 🦗
Cuando los operadores encontraban estos insectos dentro de la máquina, decían que había un “bug” (bicho) en el sistema. Así nació el término de forma literal.
Grace Brewster Murray Hopper (1906-1992) fue una matemática, física y pionera de la programación estadounidense que revolucionó la forma en que escribimos software.

Es un rango militar en la Marina de los Estados Unidos. Grace Hopper alcanzó el rango de contraalmirante (Rear Admiral), uno de los más altos para una mujer en esa época.
7.8 Lenguajes de programación Comunes
| Lenguaje | Uso Principal | Ejemplo |
|---|---|---|
Bash |
Automatización en sistemas Unix/Linux | Scripts de sistema |
Python |
Ciencia de datos, automatización, educación | Análisis de datos, machine learning |
R |
Análisis estadístico y visualización | Gráficos científicos, estadística |
JavaScript |
Desarrollo web, aplicaciones interactivas | Sitios web dinámicos |
Java |
Aplicaciones empresariales, sistemas grandes | Software corporativo |
C++ |
Sistemas de alto rendimiento | Videojuegos, software de sistema |
SQL |
Gestión de bases de datos | Consultas de datos |
7.8.1 Componentes Básicos
| Componente | Descripción |
|---|---|
| Variables | Espacios de memoria que almacenan datos |
| Funciones | Bloques de código reutilizables |
| Condicionales | Decisiones lógicas (si/entonces) |
| Bucles | Repetición de acciones |
| Operadores | Símbolos para realizar operaciones |
| Comentarios | Explicaciones para humanos |
En este semestre veremos programación con Bash, Python y un poco de R. Aquí es donde entra lo que aprendimos con pseudocódigo, ya que nos permite comprender y trasladar ideas a través de los tres lenguajes.

7.9 Plantilla para la documentación de nuestro código
Título (opcional)
Autor (author): Su nombre
Dia (date): Fecha de creación
Paquetes (packages)
Directorio de trabajo (Working directory): En que carpeta se encuentra tu datos y programa.
Información descriptiva del programa (Description): ¿Para qué sirve el programa? Ej: El siguiente programa realiza la suma de dos numeros enteros a partir de la entrada del usuario y posteriormente la imprime en pantalla.
Usage ¿Cómo se utiliza?
Argumentos (Arguments)
Información de entrada (Data Inputs): Ej: Solo numeros enteros (sin decimales).
Información de salida (Outpus): Graficas, figuras, tablas, etc.

7.10 Puntos claves para buenas prácticas en informática ⭐

7.11 Referencias
- Presentación de Reproducibilidad de Miriam Lerma
- Presentación introducción a Git, GitHub y Zenodo de Miriam Lerma
- Presentación de Introducción a la Bioinformática - Heladia Salgado
- Mi próximo artículo científico en R de Florencia D´Andrea
- Kristie Reproducible Research
- Presentación de Kristie
- FAIR- bioinformatic
- Unidad 1 Bioinformática e investigación reproducible
- The five pillars of computational reproducibility: bioinformatics and beyond
- Investigación reproducible y análisis de datos
- Haydee tutorial: Temas Selectos de Análisis Numérico y Computación Científica: Computo científico para el análisis de datos
- Alejandra Medina tutorial: Control de versiones con GitHub y RStudio
- Wilson, et al. 2014. Best Practices for Scientific Computing. PLOS Biology
- Evelia Coss - tutorial Buenas practicas en R
- Evelia Coss - Make your CV tutorial
- Markdwn Guide - Getting Started
- Allison Horst - Imagenes
- Statistical Computing using R and Python
- Training Materials
- Visual Studio Code
- Articulo reproducibilidad
- Curso de Joselyn Cristina Chávez Fuentes
- Me ayudo mucho este Video
- Documentación de funciones de Andrés Arredondo Cruz
