1
+ /*
2
+ * EJERCICIO:
3
+ * - Crea ejemplos de funciones básicas que representen las diferentes
4
+ * posibilidades del lenguaje:
5
+ * Sin parámetros ni retorno, con uno o varios parámetros, con retorno...
6
+ * - Comprueba si puedes crear funciones dentro de funciones.
7
+ * - Utiliza algún ejemplo de funciones ya creadas en el lenguaje.
8
+ * - Pon a prueba el concepto de variable LOCAL y GLOBAL.
9
+ * - Debes hacer print por consola del resultado de todos los ejemplos.
10
+ * (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades)
11
+ *
12
+ * DIFICULTAD EXTRA (opcional):
13
+ * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
14
+ * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
15
+ * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
16
+ * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
17
+ * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
18
+ * - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
19
+ *
20
+ * Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos.
21
+ * Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda.
22
+ */
23
+
24
+ // Main function
25
+ fn main ( ) {
26
+ hello_world ( ) ;
27
+
28
+ let resultado: i32 = suma ( 10 , 5 ) ;
29
+ println ! ( "{resultado}" ) ;
30
+
31
+ let ( string1, string2) = multiple_return ( ) ;
32
+ println ! ( "{} {}" , string1, string2) ;
33
+
34
+ let names: [ & str ; 3 ] = [ "Juan" , "Manolo" , "Luis" ] ;
35
+ more_than_1_parameter ( & names) ;
36
+
37
+ function_out ( ) ;
38
+
39
+ builtin_functions ( ) ;
40
+
41
+ hello_rust1 ( ) ;
42
+
43
+ exercice_extra ( "Zipi" , "Zape" ) ;
44
+ }
45
+
46
+ /*
47
+ FUNCIONES BÁSICAS DEL LENGUAJE
48
+ */
49
+
50
+ // Function without return and parameters
51
+ fn hello_world ( ) {
52
+ println ! ( "Hello World!" )
53
+ }
54
+
55
+ // Function with parameters and return
56
+ fn suma ( a : i32 , b : i32 ) -> i32 {
57
+ a + b
58
+ }
59
+
60
+ // Function with parameters and return of many values
61
+ fn multiple_return ( ) -> ( & ' static str , & ' static str ) {
62
+ ( "Hola" , "Troleomotor10" )
63
+ }
64
+
65
+
66
+ // Function with more than 1 parameter
67
+ fn more_than_1_parameter ( names : & [ & str ] ) {
68
+ for name in names {
69
+ println ! ( "{name}" ) ;
70
+ }
71
+ }
72
+
73
+ /*
74
+ FUNCIONES DENTRO DE FUNCIONES
75
+ */
76
+
77
+ fn function_out ( ) {
78
+ fn function_in_function ( ) {
79
+ println ! ( "Hello, Rust 2!" )
80
+ }
81
+ function_in_function ( ) ;
82
+ }
83
+
84
+ /*
85
+ FUNCIONES DEL LENGUAJE (built-in)
86
+ */
87
+
88
+ fn builtin_functions ( ) {
89
+ let variable: & str = "github" ;
90
+ println ! ( "{}" , variable. len( ) ) ;
91
+
92
+ }
93
+
94
+ /*
95
+ VARIABLES LOCALES Y GLOBALES
96
+ */
97
+
98
+ fn hello_rust1 ( ) {
99
+ let global_var: i32 = 33 ;
100
+ fn hello_rust2 ( ) {
101
+ let local_var: i32 = 55 ;
102
+ //println!("{}", global_var); -> No va a funcionar
103
+ println ! ( "{}" , local_var) ;
104
+ }
105
+ hello_rust2 ( ) ;
106
+ println ! ( "{}" , global_var) ;
107
+ //println!("{}", local_var); -> No va a funcionar
108
+ }
109
+
110
+ /*
111
+ EJERCICIO EXTRA
112
+ */
113
+
114
+ fn exercice_extra ( text1 : & str , text2 : & str ) {
115
+ let mut contador: i32 = 0 ;
116
+ for x in 1 ..101 {
117
+ if x % 3 == 0 && x % 5 == 0 {
118
+ println ! ( "{} {}" , text1, text2) ;
119
+ } else if x % 3 == 0 {
120
+ println ! ( "{text1}" ) ;
121
+ } else if x % 5 == 0 {
122
+ println ! ( "{text2}" ) ;
123
+ } else {
124
+ println ! ( "{x}" ) ;
125
+ contador += 1 ;
126
+ }
127
+ }
128
+ println ! ( "Los numeros en lugar de los textos han salido: {contador} veces" ) ;
129
+ }
0 commit comments