forked from mouredev/roadmap-retos-programacion
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'mouredev:main' into main
- Loading branch information
Showing
19 changed files
with
2,091 additions
and
426 deletions.
There are no files selected for viewing
49 changes: 49 additions & 0 deletions
49
Roadmap/00 - SINTAXIS, VARIABLES, TIPOS DE DATOS Y HOLA MUNDO/java/jcrodmir.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
public class jcrodmir{ | ||
|
||
/* | ||
Programm Language/ Programmiersprache: Java | ||
Official Java Website / offizielle Java WebSite: https://docs.oracle.com/javase/8/docs/ | ||
Other Java Website/ andere Java WebSite : https://www.javatpoint.com/java-tutorial | ||
*/ | ||
|
||
// Diferents types of comment one line/verschiedene Typen von Kommentaren | ||
|
||
/* multiples lines/ mehrere Zeilen | ||
*/ | ||
|
||
/** | ||
* Documentation | ||
* | ||
* */ | ||
|
||
//Create a variable and constant/Variable und Konstante erstellen | ||
/* | ||
The variables at Java have the type of the variable the name and the value, if you want a constant, must add | ||
a the keyword final. | ||
Die Variablen bei Java haben den Typ der Variablen, den Namen und den Wert, wenn Sie eine Konstante wollen, müssen Sie | ||
ein das Schlüsselwort final. | ||
*/ | ||
|
||
int variableNumber = 8; | ||
final int finalNumber= 9; | ||
|
||
//Primitives Types/ primitive Datentypen | ||
/* | ||
Byte/Short/Int/Long/Float/Double/Boolean/Char | ||
*/ | ||
byte ReallySmallNumber=10; | ||
short smallNumber=10000; | ||
int number= 100000; | ||
long ReallyBigNumber=53856421646L; | ||
float decimalNumber= 2.5f; | ||
double decimalBigNumber= 52556.684684446; | ||
boolean trueOrFalse= true; | ||
char character= 'A'; | ||
|
||
public static void main(String[] args) { | ||
System.out.print("Hello World"); | ||
System.out.print("Hallo Welt"); | ||
} | ||
} |
143 changes: 143 additions & 0 deletions
143
Roadmap/01 - OPERADORES Y ESTRUCTURAS DE CONTROL/gdscript/ElHacedorDeCosas.gd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
# Operadores | ||
|
||
#en GDscript todo script tiene que estar asociado a una escena o nodo para poder ejecutarlo | ||
|
||
#Operadores Aritméticos | ||
extends Node | ||
func _ready(): #la función _ready hace que la función se ejecute al momento de iniciar la ecena y solo puede ser usada una vez por script | ||
#suma | ||
print(10 + 3) | ||
#resta | ||
print(10 - 3) | ||
#multiplicación | ||
print(10 * 3) | ||
#división | ||
print(10 / 3.0) #si no se especifica que uno de los dos numeros es flotante te dará siempre como resultado un entero | ||
print(10 / float(3)) #se puede hacer de estas dos formas | ||
#modulo o resto | ||
print(10 % 3) | ||
#potencia | ||
print(10 ** 3) | ||
|
||
#Operadores de comparación | ||
extends Node | ||
func _ready(): | ||
var x = 2 | ||
print ("x = " + str(x)) #para poder hacer print a una variable de tipo texto y una de tipo booleano a la vez | ||
#Igualdad # tienes que convertir esta a texto | ||
print("x == 10 = " + str(x == 10)) | ||
#Desigualdad | ||
print("x != 10 = " + str(x != 10)) | ||
#Mayor que | ||
print("x > 10 = " + str(x > 10)) | ||
#Menor que | ||
print("x < 10 = " + str(x < 10)) | ||
#Mayor o igual que | ||
print("x >= 10 = " + str(x >= 10)) | ||
#Menor o igual que | ||
print("x <= 10 = " + str(x <= 10)) | ||
|
||
#Operadores lógicos | ||
extends Node | ||
func _ready(): | ||
# "and" o "&&" | ||
print("(2 > 3 and 4 + 3 = 7)= " + str(2 > 3 and (4 + 3 == 7))) | ||
# "or" o "||" | ||
print("(2 > 3 or 4 + 3 = 7)= " + str(2 > 3 or (4 + 3 == 7))) | ||
# "not" o "!" | ||
print("not 3 > 2 = " + str(not 3 > 2)) | ||
|
||
#Operadores de asignación | ||
#Las asignaciones en GDScript no pueden estar dentro de expreciones | ||
extends Node | ||
func _ready(): | ||
#Asignación | ||
var y = 7 | ||
#Suma y asignación | ||
y += 2 | ||
print(y) | ||
#Resta y asignación | ||
y -= 2 | ||
print(y) | ||
#Multiplicación y asignación | ||
y *= 2 | ||
print(y) | ||
#División y asignación | ||
y /= 2 | ||
print(y) | ||
#Resto y asignación | ||
y %= 2 | ||
print(y) | ||
#Exponente y asignación | ||
y **= 2 | ||
print(y) | ||
|
||
#Operadores de pertenencia | ||
extends Node | ||
func _ready(): | ||
# in | ||
print("u in pablo = " + str("u" in "pablo")) | ||
print("a in pablo = " + str("a" in "pablo")) | ||
# not in | ||
print("u not in pablo = " + str("u" not in "pablo")) | ||
print("a not in pablo = " + str("a" not in "pablo")) | ||
|
||
#Operadores de bit | ||
extends Node | ||
func _ready(): | ||
var numero_uno = 10 #1010 | ||
var numero_dos = 5 #0101 | ||
# "&" o "AND" | ||
print("10 & 5 = " + str(numero_uno & numero_dos)) #0 = 0000 | ||
# "^" o "XOR" | ||
print("10 ^ 5 = " + str(numero_uno ^ numero_dos)) #15 = 1111 | ||
# "|" o "OR" | ||
print("10 | 5 = " + str(numero_uno | numero_dos)) #15 = 1111 | ||
# "~" o "NOT" | ||
print("~10 = " + str(~numero_uno)) #-11 | ||
# Desplazamiento a la derecha o ">>" | ||
print("10 >> 3 = " + str(numero_uno >> 3)) #1 = 0000001 | ||
# Desplazamiento a la izquierda o "<<" | ||
print("10 << 3 = " + str(numero_uno << 3)) #80 = 1010000 | ||
|
||
#Estructuras de control | ||
|
||
#Condicionales | ||
extends Node | ||
var edad = 21 | ||
func _ready(): | ||
#Condicional "si" o "if" | ||
if (edad < 18): | ||
print ("eres menor de edad") | ||
#Condicional "sino, si" o "elif" | ||
elif (edad > 29): | ||
print("eres un adulto") | ||
#Condicional "sino" o "else" | ||
else: print("eres un joven adulto") | ||
|
||
#Iterativas | ||
extends Node | ||
func _ready(): | ||
for i in 7: | ||
print(i) | ||
for i in range(7): | ||
print(i) | ||
#while | ||
var i = 0 | ||
while (i< 12): | ||
print(i) | ||
i += 2 | ||
|
||
#Excepciones | ||
#GDScript no maneja execpriones y la explicaciñon sacada de la pagina de GDScript es la siguiente: | ||
#"Creemos que los juegos no deben fallar no importa la situación. Si una situación inesperada sucede, | ||
#Godot mostrara un error (el cual puede incluso llevarte al script), | ||
#pero seguidamente intentara recuperarse lo mejor posible y continuar en la medida de lo posible." | ||
|
||
|
||
#Ejercicio extra | ||
extends Node | ||
func _ready(): | ||
for numero in range(10, 56, 2): #en el rango entre 10 y 56 avanza cada 2 numeros | ||
if numero != 16 and numero % 3 != 0: | ||
print(numero) |
60 changes: 60 additions & 0 deletions
60
Roadmap/02 - FUNCIONES Y ALCANCE/python/AbelPerezCollado.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# Func sin parametros ni retorno | ||
def sin_param_retorno(): | ||
print('Funcion no devuelve nada ni tiene parametros') | ||
|
||
# Func con varios parametros con retorno | ||
def suma(num1:int , num2:int): | ||
return num1 + num2 | ||
|
||
# Funciones dentro de funciones | ||
def fun_dentro(param1:int,param2:int): | ||
def suma(n1,n2): | ||
return n1 + n2 | ||
return suma(param1,param2) | ||
|
||
# Funcion con parametros por defecto | ||
def fun_param_defecto(nombre = 'Abel', apellido = 'Perez'): | ||
return f'Bienvenido, {nombre} {apellido}' | ||
|
||
# Ejemplo de funciones ya creadas en el lenguaje | ||
nombre ='Abel' | ||
print(f'El numero de letras de {nombre} es de {len(nombre)}') | ||
|
||
|
||
# Funcion Lambda | ||
square = lambda num : num * num | ||
print(square(3)) | ||
|
||
# Funcion recursiva | ||
|
||
# función recursiva | ||
def factorial(numero): | ||
if numero == 0 or numero == 1: | ||
return 1 | ||
else: | ||
return numero * factorial(numero - 1) | ||
|
||
print(factorial(41)) | ||
|
||
# Concepto de variable Local y Global | ||
var_global = 100 | ||
|
||
def devuelve_numero(num : int): | ||
var_local = num | ||
return var_local | ||
|
||
|
||
# Dificultad extra | ||
|
||
def funcion_dificultad_extra(cad1 : str, cad2:str): | ||
cont = 0 | ||
for num in range(1,101): | ||
if num % 3 == 0 and num % 5 == 0: | ||
print(f'{cad1}{cad2}') | ||
elif num % 3 == 0: | ||
print(cad1) | ||
elif num % 5 == 0: | ||
print(cad2) | ||
else: | ||
cont += 1 | ||
return cont |
135 changes: 135 additions & 0 deletions
135
Roadmap/03 - ESTRUCTURAS DE DATOS/javascript/VolumiDev.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
/** | ||
* Tipos de estructuras de datos: | ||
* ➡️ Objetos | ||
* ➡️ Arreglos (array) | ||
* ➡️ Mapas (map) | ||
* ➡️ Conjuntos (set) | ||
*/ | ||
|
||
// Objetos, podemos almacenar en los atributos distinto tipos de datos primitivos | ||
var persona1 = { | ||
nombre: 'Diego', | ||
edad: 34, | ||
grado: 'DAM' | ||
} | ||
|
||
// Podemos acceder a cada uno de los atributos del objeto de la siguiente manera | ||
console.log('Atributo nombre de persona1', persona1.nombre) | ||
console.log('Atributo edad de persona1', persona1.edad) | ||
console.log('Atributo grado de persona 1', persona1.grado) | ||
console.log('Aqui vemos el objeto completo', persona1) | ||
|
||
// Arrays, coleccion de datos, pueden ser de destintos tipos | ||
var array1 = ['hola', 23, true, 'datos variables'] | ||
console.log('Mostramos el array completo', array1) | ||
console.log('Accedemos a la segunda posicion del array desde el indice.', array1[1]) | ||
|
||
// Mapas | ||
var mapa = new Map() | ||
// ➕ agregacion de elementos al mapa | ||
mapa.set('edad', 35) | ||
mapa.set('nombre', 'Diego') | ||
mapa.set(25, 'piso') | ||
mapa.set(true, 'estudios') | ||
console.log(mapa) | ||
|
||
// ➡️ accedemos al valor por su key. | ||
console.log(mapa.get('edad')) | ||
console.log(mapa.get('nombre')) | ||
console.log(mapa.get(25)) | ||
console.log(mapa.get(true)) | ||
// ➡️ comprobar si una clave existe | ||
console.log('Comprobamos que existe la clave "edad"', mapa.has('edad')) | ||
// ➖ Elimiar un elemento por su key | ||
console.log(mapa) | ||
mapa.delete('nombre') | ||
console.log(mapa) | ||
|
||
// Conjuntos set | ||
var conjunto = new Set(['Diego', 'Laura', 'Eren', 'Laia', 'Diego']) | ||
console.log('Vemos los elementos del conjunto, Diego lo metimos dos veces pero como no es posible que haya elementos repetido no lo incluye', conjunto) | ||
// Añadimos un elemento al conjunto | ||
conjunto.add(35) | ||
console.log(conjunto) | ||
console.log('Comprobamos si exite el valor "Diego" en el conjunto', conjunto.has('Diego')) | ||
console.log(conjunto) | ||
//Eliminamos un elemento al conjunto | ||
conjunto.delete('Laura') | ||
console.log(conjunto) | ||
|
||
// Dificultad extra AGENDA | ||
|
||
|
||
// ** EJECUCION ** | ||
//IMPLEMENTAMOS EL ELEMENTO CON EL QUE VAMOS A HACER LA LECTURA DEL TECLADO | ||
const readline = require('readline') | ||
const rl = readline.createInterface({ | ||
input: process.stdin, | ||
output: process.stdout | ||
}) | ||
|
||
// DEFINIMOS EL MAP QUE ALMACENARA LA INFO | ||
const agenda = new Map(); | ||
let telregEx = /\d{9}/ | ||
|
||
function inicio() { | ||
rl.question('¿Que operacion desea realizar? insertar, buscar, actualizar, eliminar, salir:\n', (resp) => { | ||
resp.toLowerCase() | ||
if (resp === 'insertar'){ | ||
rl.question('Introduce el nombre que deseas almacenar:\n', (nom) => { | ||
rl.question('Introduce el numero de telefono:\n', (tel) => { | ||
if(telregEx.test(tel)){ | ||
agenda.set(nom, tel) | ||
console.log('Contacto insertado') | ||
inicio() | ||
}else { | ||
console.log('El formato del telefono no es correcto') | ||
inicio() | ||
} | ||
}) | ||
}) | ||
} else if (resp === 'buscar'){ | ||
rl.question('Introduce el nombre que deseas buscar:\n', (nom) => { | ||
if(agenda.has(nom)){ | ||
console.log(`Nombre: ${nom} Telefono: ${agenda.get(nom)}`) | ||
inicio() | ||
}else { | ||
console.log('El nombre que has introducido no esta almacenado') | ||
inicio() | ||
} | ||
}) | ||
} else if(resp === 'salir'){ | ||
console.log('Saliendo....') | ||
process.exit(0) | ||
}else if(resp === 'actualizar'){ | ||
rl.question('Introduce el nombre que deseas actualizar\n', (nom) => { | ||
if(agenda.has(nom)){ | ||
rl.question('Actualiza el numero de telefono\n', (tel) => { | ||
if(telregEx.test(tel)){ | ||
agenda.set(nom, tel) | ||
console.log('Contacto actualizado') | ||
inicio() | ||
}else { | ||
console.log('El formato del telefono no es correcto') | ||
inicio() | ||
} | ||
}) | ||
} | ||
}) | ||
}else if(resp === 'eliminar'){ | ||
rl.question('Introduce el nombre que deseas borrar:\n', (nom) => { | ||
if(agenda.has(nom)){ | ||
agenda.delete(nom) | ||
console.log('Contacto borrado') | ||
inicio() | ||
}else{ | ||
console.log('El nombre introducido no existe en el registro') | ||
inicio() | ||
} | ||
}) | ||
} | ||
}) | ||
} | ||
|
||
console.log('**** AGENDA ****') | ||
inicio() |
Oops, something went wrong.