diff --git a/Roadmap/02 - FUNCIONES Y ALCANCE/rust/Coshiloco.rs b/Roadmap/02 - FUNCIONES Y ALCANCE/rust/Coshiloco.rs new file mode 100644 index 0000000000..6ac5416581 --- /dev/null +++ b/Roadmap/02 - FUNCIONES Y ALCANCE/rust/Coshiloco.rs @@ -0,0 +1,119 @@ +/* + * EJERCICIO: + * - Crea ejemplos de funciones básicas que representen las diferentes + * posibilidades del lenguaje: + * Sin parámetros ni retorno, con uno o varios parámetros, con retorno... + * - Comprueba si puedes crear funciones dentro de funciones. + * - Utiliza algún ejemplo de funciones ya creadas en el lenguaje. + * - Pon a prueba el concepto de variable LOCAL y GLOBAL. + * - Debes hacer print por consola del resultado de todos los ejemplos. + * (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades) + * + * DIFICULTAD EXTRA (opcional): + * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número. + * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que: + * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro. + * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro. + * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas. + * - La función retorna el número de veces que se ha impreso el número en lugar de los textos. + * + * Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos. + * Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda. + */ + +use std::cmp; + + +fn saludar() { + println!("Hola, Rust!"); +} + + +fn sumar(a: i32, b: i32) { + let suma = a + b; + println!("Suma: {}", suma); +} + + +fn multiplicar(a: i32, b: i32) -> i32 { + a * b +} + + +fn externa() { + fn interna() { + println!("Estoy dentro de una función externa"); + } + interna(); +} + + +fn demo_max() { + let maximo = cmp::max(3, 5); + println!("El máximo entre 3 y 5 es: {}", maximo); +} + + +static GLOBAL: i32 = 10; + +fn usar_variable_global() { + println!("Variable global: {}", GLOBAL); +} + +fn usar_variable_local() { + let local = 5; + println!("Variable local: {}", local); +} + +//EJERCICIO EXTRA +/* +* DIFICULTAD EXTRA (opcional): +* Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número. +* - La función imprime todos los números del 1 al 100. Teniendo en cuenta que: +* - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro. +* - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro. +* - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas. +* - La función retorna el número de veces que se ha impreso el número en lugar de los textos. +* +* Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos. +* Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda. +*/ + +fn ejercicio_extra(cadena_uno: String, cadena_dos: String) -> i32 { + let mut contador = 0; + for i in 1..100 { + if i % 3 == 0 { + println!("{}", cadena_uno); + } + if i % 5 == 0 { + println!("{}", cadena_dos); + } + if i % 3 == 0 && i % 5 == 0 { + println!("{}{}", cadena_uno, cadena_dos); + } + contador += 1; + } + println!("El contador vale: {}", contador); + return contador; +} + + + + +fn main() { + saludar(); + sumar(3, 7); + println!("Multiplicación: {}", multiplicar(4, 5)); + externa(); + demo_max(); + usar_variable_global(); + usar_variable_local(); + ejercicio_extra("Hola".to_string(), "Mundo".to_string()); +} + + + + + + +