Skip to content

Commit a91f1fa

Browse files
committed
Merge branch 'main' of github.com:adra-dev/roadmap-retos-programacion
2 parents 163515f + 6a171a2 commit a91f1fa

File tree

30 files changed

+2720
-494
lines changed

30 files changed

+2720
-494
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
|02|[FUNCIONES Y ALCANCE](./Roadmap/02%20-%20FUNCIONES%20Y%20ALCANCE/ejercicio.md)|[📝](./Roadmap/02%20-%20FUNCIONES%20Y%20ALCANCE/python/mouredev.py)|[▶️](https://youtu.be/auxClgiX6UM)|[👥](./Roadmap/02%20-%20FUNCIONES%20Y%20ALCANCE/)
3434
|03|[ESTRUCTURAS DE DATOS](./Roadmap/03%20-%20ESTRUCTURAS%20DE%20DATOS/ejercicio.md)|[📝](./Roadmap/03%20-%20ESTRUCTURAS%20DE%20DATOS/python/mouredev.py)|[▶️](https://youtu.be/brxtPtUbU7M)|[👥](./Roadmap/03%20-%20ESTRUCTURAS%20DE%20DATOS/)
3535
|04|[CADENAS DE CARACTERES](./Roadmap/04%20-%20CADENAS%20DE%20CARACTERES/ejercicio.md)|[📝](./Roadmap/04%20-%20CADENAS%20DE%20CARACTERES/python/mouredev.py)|[▶️](https://youtu.be/CKzY7nHwulA)|[👥](./Roadmap/04%20-%20CADENAS%20DE%20CARACTERES/)
36-
|05|[VALOR Y REFERENCIA](./Roadmap/05%20-%20VALOR%20Y%20REFERENCIA/ejercicio.md)|[🗓️ 05/02/24](https://discord.gg/YEU3gzfe?event=1201413529924796416)||[👥](./Roadmap/05%20-%20VALOR%20Y%20REFERENCIA/)
36+
|05|[VALOR Y REFERENCIA](./Roadmap/05%20-%20VALOR%20Y%20REFERENCIA/ejercicio.md)|[📝](./Roadmap/05%20-%20VALOR%20Y%20REFERENCIA/python/mouredev.py)||[👥](./Roadmap/05%20-%20VALOR%20Y%20REFERENCIA/)
37+
|06|[RECURSIVIDAD](./Roadmap/06%20-%20RECURSIVIDAD/ejercicio.md)|[🗓️ 12/02/24](https://discord.gg/wbqPzvPg?event=1204001786575200306)||[👥](./Roadmap/06%20-%20RECURSIVIDAD/)
3738

3839
## Instrucciones
3940

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
//=====================================================
2+
// 00 - Sintaxis, variales, tipos de datos y hola mundo
3+
//=====================================================
4+
5+
// 1. WEB OFICIAL
6+
// Rust official documentation: https://www.rust-lang.org
7+
8+
// 2. COMENTARIOS EN RUST
9+
// One line comment
10+
/* Multiple line comments
11+
just like C!!
12+
*/
13+
14+
// CREANDO UNA VARIALE Y UNA CONSTANTE
15+
16+
// Variable
17+
let a = 5;
18+
19+
// Creando una constante:
20+
const GRAVEDAD_TERRESTRE: 9.81;
21+
22+
// CREA VARIABLES REPRESENTANDO TODOS LOS TIPOS DE DATOS
23+
24+
// NOTA: el compilador infiere el tipo de dato y no es necesatio indicarlo, pero se puede hacer.
25+
26+
// Tipo escalar:
27+
// Tipos integer, pueden ser con signo (i) o sin signo (u): i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize.
28+
let entero_8bits i8 = -128;
29+
let positivo_8bits u8 = 255;
30+
let entero_16bits i16 = =-32768;
31+
let positivo_16bits u16 = 62535;
32+
let entero_32bits i32 = 42;
33+
let positivo_32bits u32 = 73;
34+
let entero_64bits i64 = 137;
35+
let positivo_64bits u64 = 20000000;
36+
let entero_128bits i128 = 1;
37+
let positivo_128bits u128 = 345;
38+
let entero_arquitectura isize = 546236;
39+
let positivo_arquitectura usize = 243653426;
40+
// Tipos integer literals: son enteros en otras notaciones(0x, 0o, 0b)
41+
let moure_dev = 1_987; //Decimal, sin prefijo, se puede usar _ para leerlo mejor sin que afecte en nada.
42+
let que_champu = 0x7C3; //Hexadecimal (todos los numeros hexadecimales empiezan por 0x, 7C3 es 1987 en hexadecimal)
43+
let usas_para = 0o3703; //Octal (notacion octal empieza por 0o)
44+
let la_barba = 0b11111000011; //Binario (0b indica binario)
45+
46+
// Coma flotante (f32 y f64, IEEE-754 standard)
47+
let x f32 = 1.234;
48+
let y f64 = -1.23456789;
49+
50+
//Tipo boolean:
51+
let delicioso = true;
52+
let love: = 0; // notacion explicita
53+
54+
// Tipo character (ocupan 4 bytes y represaentan valores Unicode):
55+
let g = 'j';
56+
let v: char = 'B';
57+
let heart = 💓;
58+
59+
// Tipos compuestos: Tupla. almacena varios datos de diferente tipo.
60+
let tuplita: (i32, f64, u8) = (500, 6.4, 1);
61+
// Tipos compuestos: array. Almacena varios valores del mismo tipo.
62+
let array = [1,2,3,4,5];
63+
64+
//Cadenas de caracteres: para este caso hay que usar la funcion String::from o el metodo .to_string().
65+
let mi_cadena: String = String::from("mi casa");
66+
let mi_otra_cadena: String = "mi otra casa".to_string();
67+
// Seria incorrecto escribir algo como let mi-cadena: String = "mi casa".
68+
69+
// IMPREME POR PANTALLA "HOLA MUNDO"
70+
71+
fn main() {
72+
println("Hola, mundo");
73+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
/*
2+
* EJERCICIO:
3+
* - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje:
4+
* Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits...
5+
* (Ten en cuenta que cada lenguaje puede poseer unos diferentes)
6+
* - Utilizando las operaciones con operadores que tú quieras, crea ejemplos
7+
* que representen todos los tipos de estructuras de control que existan
8+
* en tu lenguaje:
9+
* Condicionales, iterativas, excepciones...
10+
* - Debes hacer print por consola del resultado de todos los ejemplos.
11+
*
12+
* DIFICULTAD EXTRA (opcional):
13+
* Crea un programa que imprima por consola todos los números comprendidos
14+
* entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3.
15+
*
16+
* Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo.
17+
*/
18+
19+
package main
20+
21+
import "fmt"
22+
23+
func defer_example() {
24+
defer fmt.Println("Mundo!")
25+
fmt.Println("Hola")
26+
return
27+
}
28+
func is_multiple_of(num int, multiple int) bool {
29+
return num % multiple == 0
30+
}
31+
32+
func main() {
33+
// Operadores aritmeticos
34+
my_sum := 3 + 4
35+
my_diff := 5 - 3
36+
my_mult := 2 * 2
37+
my_division := 6 / 3
38+
my_modulo := 10 % 2
39+
40+
fmt.Printf("Suma: 3 + 4 = %d \n", my_sum)
41+
fmt.Printf("Resta: 5 - 3 = %d \n", my_diff)
42+
fmt.Printf("Multiplicacion: 2 * 2 = %d \n", my_mult)
43+
fmt.Printf("Division: 6 / 3 = %d \n", my_division)
44+
fmt.Printf("Resto: 10 %% 2 = %d \n", my_modulo)
45+
46+
// Operadores relacionales
47+
my_op_1 := 5 == 3
48+
my_op_2 := 5 != 3
49+
my_op_3 := 5 < 3
50+
my_op_4 := 5 <= 3
51+
my_op_5 := 5 > 3
52+
my_op_6 := 5 >= 3
53+
54+
fmt.Printf("Operador ==: 5 == 3 -> %t \n", my_op_1)
55+
fmt.Printf("Operador !=: 5 != 3 -> %t \n", my_op_2)
56+
fmt.Printf("Operador <: 5 < 3 -> %t \n", my_op_3)
57+
fmt.Printf("Operador <=: 5 <= 3 -> %t \n", my_op_4)
58+
fmt.Printf("Operador >: 5 > 3 -> %t \n", my_op_5)
59+
fmt.Printf("Operador >=: 5 >= 3 -> %t \n", my_op_6)
60+
61+
// Operadores logicos
62+
my_op_7 := my_op_5 && my_op_1
63+
my_op_8 := my_op_6 || my_op_3
64+
my_op_9 := !my_op_2
65+
66+
fmt.Printf("Resultado: (5 > 3) && (5 == 3) = %t \n", my_op_7)
67+
fmt.Printf("Resultado: (5 >= 3) && (5 < 3) = %t \n", my_op_8)
68+
fmt.Printf("Resultado: !(5 != 3) = %t \n", my_op_9)
69+
70+
// Operadores bit a bit
71+
a := 55
72+
b := 11
73+
74+
fmt.Printf("Bitwise AND: a & b = %d \n", a & b)
75+
fmt.Printf("Bitwise OR: a | b = %d \n", a | b)
76+
fmt.Printf("Bitwise XOR: a ^ b = %d \n", a ^ b)
77+
fmt.Printf("Desplazamiento a la izq: a << 1 = %d \n", a << 1)
78+
fmt.Printf("Desplazamiento a la dcha: a >> 1 = %d \n", a >> 1)
79+
fmt.Printf("Bitwise AND NOT(clear): a &^ b = %d \n", a &^ b)
80+
81+
// Operadores miscelaneos
82+
c := 22
83+
d := &c
84+
85+
fmt.Printf("La direccion en memoria de c es %v \n", &c)
86+
fmt.Printf("El valor de c es %v \n", *d)
87+
88+
// Estructuras de control
89+
if e := a + b; e > c {
90+
fmt.Println("e > a + b")
91+
} else {
92+
fmt.Println("e < a + b")
93+
}
94+
95+
for i := 0; i < 10; i++ {
96+
fmt.Println(i)
97+
}
98+
99+
switch name := "Angel"; name {
100+
case "Angel":
101+
fmt.Println("Es Angel")
102+
default:
103+
fmt.Println("Es otra persona")
104+
}
105+
106+
defer_example()
107+
108+
// PROBLEMA EXTRA
109+
fmt.Println("Problema EXTRA")
110+
fmt.Println("-------------------------------")
111+
for i := 10; i <= 55; i++ {
112+
if is_multiple_of(i, 2) && !is_multiple_of(i, 3) && i != 16 {
113+
fmt.Println(i)
114+
}
115+
}
116+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//=========================================
2+
// 01 - OPERADORES Y ESTRUCTURAS DE CONTROL
3+
//=========================================
4+
5+
// EJEMPLO DE TODOS LOS TIPOS DE OPERADORES
6+
7+
let mut a: u8 = 2;
8+
let b: u8 = 4;
9+
let c: u8 = 8;
10+
11+
// Aritmeticos:
12+
13+
14+
// Logicos:
15+
Pritln ("AND: a < b && c > b da {}", a < b && c > b);
16+
Pritln ("OR: a < b || b > c da {}", a < b && b > c);
17+
Pritln ("NOT: !! a < b da {}", !! a < b);
18+
19+
// Comparacion:
20+
Println ("{} es distinto de {}, es {}", a, b, a != b );
21+
Println ("{} es igual de {}, es {}", a, b, );
22+
Println ("{} es mayor que {}, es {}", a, b, );
23+
Println ("{} es menor que {}, es {}", a, b, );
24+
Println ("{} es mayor o igual que {}, es {}", a, b, );
25+
Println ("{} es menor igual de que {}, es {}", a, b, );
26+
27+
// Asignacion:
28+
Println ("{} += 1, ahora vale {}", a, a);
29+
Println ("{} -= 1, ahora vale {}", a, a);
30+
Println ("{} *= 2, ahora vale {}", a, a);
31+
Println ("{} /= 2, ahora vale {}", a, a);
32+
Println ("{} %= 2, ahora vale {}", a, a);
33+
34+
// Pretenencia:
35+
36+
// Bits:
37+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
'''
2+
FUNCIONES
3+
'''
4+
5+
# Función sin parámetros ni retorno
6+
def greet():
7+
print('Hi!')
8+
9+
greet()
10+
11+
# Función con parámetros sin retorno
12+
def greetPerson(name):
13+
print(f'¡Hello {name}!')
14+
15+
greetPerson('César')
16+
17+
# Función con varios parámetros sin retorno
18+
def add(number1, number2):
19+
print(f'{number1} + {number2} = {number1 + number2}')
20+
21+
add(5, 8)
22+
23+
# Función con varios parámetros con retorno
24+
def subtract(number1, number2):
25+
return number1 - number2
26+
27+
result = subtract(175, 123)
28+
print(f'175 - 123 = {result}')
29+
30+
# Función con parámetros variables
31+
def average(*args):
32+
sum = 0
33+
for arg in args:
34+
sum += arg
35+
return sum/len(args)
36+
37+
result = average(9, 8, 7, 9, 9, 8, 10, 10)
38+
print(result)
39+
40+
# Función con parámetros variables con identificador
41+
def capitals(**kwargs):
42+
for country, city in kwargs.items():
43+
print(f"{country} - {city}")
44+
return
45+
46+
countries = {
47+
'Mexico': 'Mexico City',
48+
'Argentina': 'Buenos Aires',
49+
'Spain': 'Madrid',
50+
'Chile': 'Santiago'
51+
}
52+
53+
capitals(**countries)
54+
55+
# Funciones anónimas o lambda
56+
exponentiate = lambda number, exponent: number ** exponent
57+
result = exponentiate(2, 8)
58+
59+
print(f'2 ** 8 = {result}')
60+
61+
# Funciones dentro de funciones
62+
def exterior_function(x):
63+
def interior_function(y):
64+
return y * 2
65+
66+
result = x + interior_function(x)
67+
return result
68+
69+
operation = exterior_function(5)
70+
print(operation)
71+
72+
# Funciones nativas
73+
my_list = [5, 6, 7, 3, 6, 7, 9, 3, 5, 8]
74+
print(f'Esta es la función nativa: print()\nMi lista: {my_list}')
75+
print(f'Tipo de dato: {type(my_list)}')
76+
print(f'Longitud de mi lista: {len(my_list)}')
77+
print(f'Máximo de mi lista: {max(my_list)}')
78+
print(f'Mínimo de mi lista: {min(my_list)}')
79+
print(f'Suma de mi lista: {sum(my_list)}')
80+
input('Esta es la función input, \n para continuar escribe un número: ')
81+
82+
'''
83+
VARIABLE LOCAL Y GLOBAL
84+
'''
85+
86+
global_var = "Soy global"
87+
88+
def myFunction():
89+
local_var = "Soy local"
90+
print(f'Accediendo a la variable global dentro de la función: {global_var}')
91+
print(f'Accediendo a la variable local dentro de la función: {local_var}')
92+
93+
myFunction()
94+
95+
print(f'Accediendo a la variable global fuera de la función: {global_var}')
96+
try:
97+
print(f'Accediendo a la variable loca fuera de la función: {local_var}')
98+
except NameError as err:
99+
print(f'Error: {type(err).__name__}')
100+
print(f'No se puede acceder a la variable local desde afuera de su bloque')
101+
102+
'''
103+
EXTRA
104+
'''
105+
106+
def printNumbers(text1, text2):
107+
printed_numbers = 0
108+
for number in range(1, 101):
109+
if number % 3 == 0 and number % 5 == 0:
110+
print(f"{text1} y {text2}")
111+
elif number % 3 == 0:
112+
print(text1)
113+
elif number % 5 == 0:
114+
print(text2)
115+
else:
116+
print(f"{number}")
117+
printed_numbers += 1
118+
return printed_numbers
119+
120+
prints = printNumbers(text2 = 'Múltiplo de 5', text1 = 'Múltiplo de 3')
121+
print(prints)

0 commit comments

Comments
 (0)