Skip to content

Commit 1b77ba7

Browse files
authored
Merge pull request mouredev#7786 from 04khaos/soluciones
#1 - C
2 parents 17e313a + 5d8137f commit 1b77ba7

File tree

1 file changed

+227
-0
lines changed
  • Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/c

1 file changed

+227
-0
lines changed
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
#include <stdio.h>
2+
3+
void operadores();
4+
void condicionales();
5+
void iterativas();
6+
void desafio();
7+
8+
9+
/* OPERADORES
10+
Este programa (código) demuestra los operadores más comunes en C, clasificados en:
11+
- Aritméticos: para realizar cálculos matemáticos
12+
- Comparación: para comparar valores y generar resultados booleanos
13+
- Lógicos: para realizar operaciones con condiciones (AND, OR, NOT)
14+
- Asignación: para modificar el valor de una variable
15+
- Bits: para trabajar con operaciones a nivel de bits (AND, OR, desplazamientos) */
16+
17+
void operadores() {
18+
19+
// Operadores Aritméticos
20+
printf("== Operadores Aritméticos ==\n");
21+
int a = 5, b = 10, c = 5; // Variables globales de la función
22+
{
23+
printf("Suma: %d + %d = %d\n", a, b, a + b);
24+
printf("Resta: %d - %d = %d\n", a, b, a - b);
25+
printf("Multiplicación: %d * %d = %d\n", a, b, a * b);
26+
printf("División: %d / %d = %d\n", a, b, a / b); // División por 0 da error
27+
printf("Módulo: %d %% %d = %d\n\n", a, b, a % b);
28+
29+
printf("Signo negativo: %d → %d\n", c, -c);
30+
c++; // Incremento
31+
printf("Incremento: %d → %d\n", c - 1, c); // Mostrar el valor antes y después del incremento
32+
c--; // Decremento
33+
printf("Decremento: %d → %d\n\n", c + 1, c); // Mostrar el valor antes y después del decremento
34+
}
35+
36+
//Operadores de Comparación
37+
printf("== Operadores de Comparación ==\n 0 (false) || 1 (true)\n");
38+
{
39+
printf("Igualdad: (%d == %d) = %d\n", a, b, a == b);
40+
printf("Diferencia: (%d != %d) = %d\n", a, b, a != b);
41+
printf("Mayor que: (%d > %d) = %d\n", a, b, a > b);
42+
printf("Menor que: (%d < %d) = %d\n", a, b, a < b);
43+
printf("Mayor o igual: (%d >= %d) = %d\n", a, b, a >= b);
44+
printf("Menor o igual: (%d <= %d) = %d\n\n", a, b, a <= b);
45+
}
46+
47+
// Operadores Lógicos
48+
printf("== Operadores Lógicos ==\n 0 (false) || 1 (true)\n");
49+
{
50+
// AND (&&) - Solo es true si ambas son verdaderas
51+
printf("¿Ambas son verdaderas? (%d == %d && %d > %d) = %d\n", a, c, b, c, a == c && b > c);
52+
// OR (||) - Es true si al menos una es verdadera
53+
printf("¿Alguna es verdadera? (%d == %d || %d < %d) = %d\n", b, c, b, a, b == c || b < a);
54+
// NOT (!) - Invierte el valor de una condición
55+
printf("Inverso (a == c); !(%d == %d) = %d\n\n", a, c, !(a == c));
56+
}
57+
58+
// Operadores de Asignación
59+
printf("== Operadores de Asignación ==\n");
60+
{
61+
int x = 2; // Variable local
62+
63+
x = 2; // Valor inicial de x
64+
printf("(x = 2) = %d\n", x);
65+
x += 7; // Equivalente a: x = x + 7"
66+
printf("(x += 7) = %d\n", x);
67+
x -= 3; // Equivalente a: x = x - 3
68+
printf("(x -= 3) = %d\n", x);
69+
x *= 5; // Equivalente a: x = x * 5
70+
printf("(x *= 5) = %d\n", x);
71+
x /= 10;
72+
printf("(x /= 10) = %d\n", x);
73+
x %= 2;
74+
printf("(x %%= 2) = %d\n\n", x);
75+
}
76+
77+
// Operadores de Bits
78+
printf("== Operadores de Bits ==\n");
79+
{
80+
int x = 3; // Variable local
81+
// Operaciones de bits con AND, OR, XOR, etc..
82+
printf("(a & x) = %d\n", a & x);
83+
printf("(a | x) = %d\n", a | x);
84+
printf("(a ^ x) = %d\n", a ^ x);
85+
printf("(~a) = %d\n", ~a);
86+
printf("(x << 1) = %d\n", x << 1);
87+
printf("(x >> 1) = %d\n\n", x >> 1);
88+
}
89+
}
90+
91+
92+
93+
94+
/* CONDICIONALES
95+
Este segmento explora las estructuras condicionales en C, que toma decisiones
96+
basadas en condiciones, cambiando su flujo según lo que ocurra. */
97+
98+
/* "if - else" Mejor cuando se comparan rangos de valores o condiciones
99+
complejas (>, <, !=). Más flexible para evaluaciones no exactas */
100+
101+
void condicionales() {
102+
103+
printf("== Condicionales (if, else) ==\n");
104+
int age = 20;
105+
106+
if (age >= 18)
107+
{
108+
printf("Tienes %d, eres mayor de edad\n", age);
109+
}
110+
else
111+
{
112+
printf("Tienes %d, eres menor de edad\n", age);
113+
}
114+
115+
if (age >= 1 && age <= 18) { // Entre 1 y 17 años
116+
printf("¿Cuál es tu videojuego favorito?\n\n");
117+
}
118+
else if (age < 26) { // Desde los 18 hasta los 25 años
119+
printf("¿Cuál es tu lenguaje de programación favorito?\n\n");
120+
}
121+
else { // Desde los 25 años en adelante..
122+
printf("¿Cuántos años de experiencia tienes programando?\n\n");
123+
}
124+
125+
126+
// if-else + switch
127+
128+
printf("== Condicionales (if-else + switch) ==\n> Sistema de roles\n");
129+
int rol = 3; // Cambia el valor manualmente para probar distintos casos
130+
131+
if (rol >= 1 && rol <= 3)
132+
{
133+
printf("> Tu rol asignado: %d\n", rol);
134+
}
135+
else
136+
{
137+
printf("> ERROR\n");
138+
}
139+
140+
/* "switch" Útil cuando se evalúa una variable contra valores específicos,
141+
como enteros o caracteres. Es más legible cuando hay muchas opciones */
142+
143+
switch (rol) {
144+
case 1:
145+
printf("¡Bienvenido jugador! Puedes explorar y disfrutar del mundo, ¿quieres ver el tutorial?\n\n");
146+
break;
147+
case 2:
148+
printf("Saludos, Moderador. Puedes administrar ciertas funciones y mantener el orden\n\n");
149+
break;
150+
case 3:
151+
printf("Guild Master. Tienes control total sobre este mundo\n\n");
152+
break;
153+
default:
154+
printf("Error: Rol no reconocido. Verifica el valor asignado\n\n");
155+
}
156+
}
157+
158+
159+
160+
161+
/* ITERATIVAS (BUCLES)
162+
Estas estructuras permiten repetir bloques de código bajo ciertas condiciones.
163+
Se usan cuando queremos ejecutar algo varias veces sin escribir el código manulamente */
164+
165+
void iterativas() {
166+
167+
printf("== Estructuras Iterativas ==\n");
168+
169+
170+
// Bucle while - Se ejecuta mientras la condición sea verdadera
171+
printf("> Bucle while:\n");
172+
int i = 1;
173+
174+
while( i <= 5) {
175+
printf("Iteración %d\n", i);
176+
i++; // Incrementamos i hasta 5 para evitar un bucle infinito
177+
}
178+
printf("\n");
179+
180+
181+
// Bucle for: Utiliza una variable de control con inicio, condición y actualización
182+
printf("> Bucle for:\n");
183+
int f = 1;
184+
185+
for (f = 1; f <= 3; f++) {
186+
printf("Iteración %d\n", f);
187+
}
188+
printf("\n");
189+
190+
// Bucle do-while: Garantiza al menos una ejecución antes de comprobar la condición
191+
printf("> Bucle do-while:\n");
192+
int d = 10; // Se ejecuta sin importar si la condición es falsa o verdadera al principio
193+
194+
do {
195+
printf("Iteración %d\n", d);
196+
d++;
197+
}
198+
while (d <= 5);
199+
printf("\n");
200+
}
201+
202+
203+
204+
205+
void desafio() {
206+
207+
//
208+
printf("== Desafio Extra ==\n");
209+
210+
for (int x = 10; x <= 55; x++) {
211+
if (x != 16 && x % 2 == 0 && x % 3 != 0)
212+
printf("%d. ", x);
213+
}
214+
printf("\n");
215+
}
216+
217+
218+
// FIN. Gracias por ver :p
219+
220+
int main(void) {
221+
operadores();
222+
condicionales();
223+
iterativas();
224+
desafio();
225+
226+
return 0;
227+
}

0 commit comments

Comments
 (0)