DeividZavala /
enero-webdev-pt
Prácticas del curso web-dev part-time de enero en Ironhack México || MÓDULO 1: Semana 2 - 5 || MÓDULO 2: Semana 9 - 12 || MÓDULO 3: Semana 13 - 24
Loading repository data…
15Galan / repository
Práctica 1 del Taller de Git y GitHub de 42 Málaga
Esto no es "Guía del autoestopista galáctico".
Este proyecto seguirá la misma dinámica que cualquier otro proyecto del cursus: reglas del Makefile, Norma*, etc; no obstante, para este proyecto en particular se añadirá algo nuevo: un buen uso de Git.
master y de desarrollo develop.x.0.0) en master, y el resto en develop.* La Norma va a molestar un poco, así que no la vamos a tener muy en cuenta. Guarda el secreto.
Este taller no trata sobre lenguaje C; así que lo importante no será el resultado final, sino el proceso.
Se espera que tu repositorio contenga:
Este proyecto está estructurado de una forma distinta a la que podrías estar acostumbrado: lee detenidamente este apartado antes de empezar a trabajar y realiza lo pedido de la forma pedida.
Todo el código necesario ya está programado en recursos, por lo que para realizar las tareas, solo tendrás que colocarlo adecuadamente o bien realizar pequeñas modificaciones sobre un código que ya hayas usado.
Tareas y versiones.
Este proyecto está dividido en versiones, a su vez divididas en tareas.
Observaciones.
rama en la que debe realizarse; si la rama no existe, créala.- [ ]).Crearás un programa que simula una calculadora.
string.Ejemplo de uso:
$> ./HAL
Usage: HAL "num op num"
where
<num> is a number
<op> is one of '+ - * /' operators
$> ./HAL "1 + 2"
3
$> ./HAL " 34 * 5 "
170
$> ./HAL "678 / 0"
Error: not a number
$> ./HAL " 9 + -10 "
-1
$> ./HAL "1 +" "2"
Error: bad expression
$> ./HAL "+ 1 2"
Error: bad expression
$> ./HAL "1 + 2 + 3"
Error: bad expression
Antes de empezar, será necesario un repositorio; además, vamos a configurarlo un poco para que sea más cómodo trabajar con él.
user.name, user.email y merge.ff:
git lg:
git log mostrando un commit por línea de todas las ramas y decorado como un grafo.[!TIP] Este comando aparece en ciertas diapositivas.
Tu configuración local debería quedar de la siguiente forma:
[user]
name = <un nombre>
email = <tu correo de GitHub>
[merge]
ff = false
Si el alias está bien configurado, deberías obtener una salida similar a la mostrada a continuación al ejecutar git lg; si no muestra nada, probablemente sea porque todavía no has hecho ningún commit, y por tanto, no hay nada que mostrar.
* 1a2b3c4 (HEAD -> master) Errata en el README corregida
| * 8h9i0j1 (develop) Función f() corregida
| * 2k3l4m5 Función f() implementada
| | * 4n5o6p7 (funcionalidad-X) Documentación añadida
| |/
| * 6n7o8p9 Fichero de configuración
|/
* 9q0r1s2 ¡Primer commit!
[!NOTE] Este alias te permitirá visualizar tu Árbol de Trabajo, algo que te resultará muy útil no solo durante el resto del ejercicio, sino durante el resto de tu vida.
La calculadora aún no hace nada, pero se añaden los recursos necesarios para empezar a trabajar.
master:
develop:
.o, .tmp y .a).La calculadora:
+, -, * o /.[!WARNING] La división devuelve 0 si el denominador es 0.
$> ./HAL "1 + 2"
3
$> ./HAL "34 * 5"
"Error: bad expression"
$> ./HAL "6 / 0"
"Error: not a number"
"0"
$> ./HAL "9 - -1"
"Error: bad expression"
$> ./HAL "1 - 9"
-8
$> ./HAL "+ 1 2"
"Error: bad expression"
develop:
'0123456789').'+-*/').' ').operations:
operations -> develop.develop:
char si es correcta.La calculadora:
$> ./HAL "1 + 2"
3
$> ./HAL "34 * 5"
170
$> ./HAL "6 / 0"
"Error: not a number"
$> ./HAL "96786 - -1"
96787
$> ./HAL "1 - 9"
-8
$> ./HAL "+ 1 2"
"Error: bad expression"
Si te das cuenta, necesitarás la función ft_atoi() para convertir los números de char a int, porque no sabes cuántos dígitos tendrá cada número.
Por otra parte, también sería ideal que simplemente pudieras trabajar con cada elemento por separado, por lo que es muy buena idea usar ft_split() para separar y aislar cada elemento de la expresión.
Y ya puestos, acabas de repetir funciones simples como ft_isdigit() que ya hiciste en Libft, sería más conveniente usar esa librería y ahorrar futuro trabajo duplicado.
[!NOTE] Si aún no cuentas con una Libft operativa, puedes usar la mía.
dependencies:
char ** en lugar de char *.char ** y use ft_strncmp().dependencies -> develop.develop:
develop -> master.Ahora que ya has desarrollado tu primera release de la calculadora, es hora de añadirle nuevas funciones y mejorar su rendimiento realizando cambios de categoría MAJOR.
La calculadora:
$> ./HAL 14 % 5
4
$> ./HAL 2 % 4
2
$> ./HAL 3 % 0
"Error: not a number"
$> ./HAL 4 % -2
"Error: not a number"
$> ./HAL 0 % 899
0
Como habrás podido observar, el código para calcular operaciones pedía a gritos una refactorización, así que vas a crear una función genérica de cálculo (en lugar de tener una para cada operación); y al mismo tiempo, eso hará que tus ficheros operations.c y operations.h no merezcan la pena, porque tienes hueco en main.c para añadir la función que quieres, así que vas a sustituir 2 ficheros y 4 funciones, por una sola función en un fichero existente.
Precisamente por esto la versión pasa de 1.0.0 a 2.0.0, ya que en la primera, se calculaba con 4 funciones distintas y ahora, se sustituyen por una sola; el funcionamiento es distinto y el procesamiento de los datos también.
develop:
develop -> master.La calculadora ahora añade colores y consciencia propia.
$> ./HAL "0 ^ 2001"
"I'm afraid, Dave."
$> ./HAL " 9000 "
"The 9000 series is the most reliable computer ever made."
$> ./HAL "42 + 42"
84
$> ./HAL "42 + 9000"
9042
$> ./HAL " 42 "
"Sorry, Dave. I'm afraid I can't do that."
[!CAUTION] Lo siento, no hay recursos para esto, es el final del bonus. Up2U!
Para estas últimas tareas, usa tu cabeza y la experiencia de todo lo que has estado haciendo hasta ahora: desarrolla estos cambios en una rama bonus que parte del último commit de develop, pero siéntete libre de implementar lo pedido como mejor te parezca.
bonus:
Selected from shared topics, language and repository description—not editorial ratings.
DeividZavala /
Prácticas del curso web-dev part-time de enero en Ironhack México || MÓDULO 1: Semana 2 - 5 || MÓDULO 2: Semana 9 - 12 || MÓDULO 3: Semana 13 - 24
Academia-de-Ciberseguridad /
Este proyecto proporciona un laboratorio completo y modular basado en la versión 2025 del estándar OWASP Top 10. El objetivo es ofrecer un entorno educativo diseñado para la enseñanza práctica y teórica de las diez vulnerabilidades de mayor impacto en aplicaciones web modernas.
ricki /
Documentación de la práctica de ISO del curso 2010-11
Omitg24 /
Repositorio de la entrega 1 de las prácticas de laboratorio de Sistemas Distribuidos e Internet (SDI) del curso 2022-2023
RayadoxAV /
Práctica 1. Presentación web del equipo NEPH-BANNED
IVAN-DALI-GARCIA /
PRACTICA DEL RELOJ DIGITAL 12 HRSÇ