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+ //Función básica. declarando una función
25+ let nombre = 'Andy Fernandez' ;
26+ let edad = 35 ;
27+ var color = 'rojo' ;
28+ let objetos = {
29+ coche : 'deportivo' ,
30+ estancia : 'Motel' ,
31+ dolares : 200
32+ }
33+
34+ function identidad ( nombreCompleto , edad ) {
35+ return `El usuario se llama ${ nombreCompleto } y tiene ${ edad } años de edad` ;
36+ }
37+
38+ console . log ( identidad ( nombre , edad ) ) ;
39+ console . log ( '\n' ) ;
40+
41+ function cambioIdentidad ( nombreCompleto , edad , color ) {
42+ //Solo modifica los datos de las variables de forma local
43+ nombreCompleto = 'Martin Pérez' ;
44+ edad = 25 ;
45+ color = 'verde' ;
46+ return `El usuario se llama ${ nombreCompleto } y tiene ${ edad } años de edad y le gusta el color ${ color } ` ;
47+
48+ }
49+
50+ console . log ( cambioIdentidad ( nombre , edad , color ) ) ; //El usuario se llama Martin Pérez y tiene 25 años de edad
51+ console . log ( `El usuario se llama realmente ${ nombre } y tiene ${ edad } años de edad` ) ;
52+ console . log ( '\n' ) ;
53+
54+ function masDatos ( datos ) {
55+ this . dolares = 100 ;
56+
57+ return `El usuario maneja un ${ datos . coche } y se esta quedando en un ${ datos . estancia } de ${ this . dolares } dólares` ;
58+ }
59+
60+ console . log ( masDatos ( objetos ) ) ;
61+
62+ //console.log(`El usuario evito pagar un ${datos.estancia} de ${datos.dolares} de renta`);// Solo se puede acceder a datos desde la funcion masDatos
63+ console . log ( `El usuario evito pagar un ${ objetos . estancia } de ${ objetos . dolares } dólares de renta` ) ;
64+ console . log ( '\n' ) ;
65+
66+ /////Expresiones function
67+
68+ const mayorDedad = function ( edad ) {
69+ if ( edad < 18 ) {
70+ return 'Eres menor de edad' ;
71+ } else {
72+ return 'Eres mayor de edad' ;
73+ }
74+ }
75+
76+ console . log ( mayorDedad ( edad ) ) ; //eres mayor de edad
77+
78+ ///Expresión función con nombre
79+
80+
81+ const hacerMayor = function menor ( edad ) {
82+ if ( edad <= 18 ) {
83+
84+ edad = menor ( edad + 1 ) ;
85+ }
86+ return edad ;
87+ }
88+
89+ console . log ( "Te hiciste mayor ahora tienes " + hacerMayor ( 9 ) + "años de edad." ) ;
90+ console . log ( '\n' ) ;
91+
92+ //Función que recibe como parámetro otra función
93+
94+ let array = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ;
95+
96+ function fun ( x ) {
97+ return x * 2 ;
98+ }
99+
100+ function map ( f , a ) {
101+ let result = [ ] ;
102+ for ( let i = 0 ; i < a . length ; i ++ ) {
103+ result [ i ] = f ( a [ i ] ) ;
104+ }
105+ return result
106+
107+ }
108+
109+ console . log ( map ( fun , array ) ) ; //(9) [2, 4, 6, 8, 10, 12, 14, 16, 18]
110+
111+ // Recursividad
112+
113+ let access = false ;
114+ let pass = 123456 ;
115+ let keys = 3 ;
116+
117+ function checkUser ( ) {
118+ let password = prompt ( "Introduce el password" ) ;
119+ if ( pass == password && password !== "" && keys >= 0 ) {
120+ access = true ;
121+ console . log ( "Puedes acceder" ) ;
122+ alert ( "Puedes acceder" ) ;
123+ } else if ( keys === 0 ) {
124+ console . log ( "Agotado el máximo de intentos, vuelva a intentarlo más tarde" ) ;
125+ return alert ( "Agotado el máximo de intentos, vuelva a intentarlo más tarde" ) ;
126+ } else {
127+ alert ( "Password incorrecto" ) ;
128+ console . log ( "Acceso denegado, Password incorrecto" ) ;
129+ keys -- ;
130+ console . log ( keys ) ;
131+ checkUser ( ) ;
132+ }
133+ }
134+ //DESCOMENTAR PARA PROGAR EL CODIGO
135+ //checkUser();
136+
137+ //Ambito con funcion anidada
138+
139+ function getData ( ) {
140+
141+ let yob = 1989 ;
142+
143+ function tellme ( ) {
144+ return nombre + " tiene " + edad + " años y nació en " + yob ;
145+ }
146+ return tellme ( )
147+ }
148+
149+ console . log ( getData ( ) ) ; //Andy Fernández tiene 35 y nació en1989
150+ console . log ( '\n' ) ;
151+
152+ function getName ( name ) {
153+ function getAge ( age ) {
154+ return name + " " + age ;
155+ }
156+ return getAge ;
157+ }
158+
159+ giveName = getName ( nombre ) ; //Aqui definimos name con el valor nombre
160+ giveAge = giveName ( edad ) ; //Aqui ya que name = nombre por lo tanto age = edad
161+
162+ console . log ( giveAge ) ; // Andy Fernández 35
163+ console . log ( getName ( nombre ) ( edad ) ) ; // Andy Fernández 35
164+ console . log ( '\n' ) ;
165+
166+ //Funciones multianidadas
167+
168+ function salario ( num1 ) {
169+ let clave = 123 ;
170+ //console.log(clave2);// Da error ya que no se puede acceder a la funcion interna de vacaciones()
171+ function vacaciones ( num2 ) { //permanece privado para salario
172+ let clave2 = 456 ;
173+ // console.log(clave3);// Da error ya que no se puede acceder a la funcion interna de tiempoExtra()
174+ console . log ( clave ) // Puede acceder a salario ya que tiene un cierre con este
175+ function tiempoExtra ( num3 ) { //permanece privado para salario y vacaciones
176+ console . log ( clave ) // 123 // Si puede acceder a las variables de funciones exteriores ya que crea un cierre de vacaciones y salario
177+ console . log ( clave2 ) // 456
178+ let clave3 = 789 ;
179+ console . log ( num1 + num2 + num3 ) ;
180+ }
181+ tiempoExtra ( 3 ) ;
182+ }
183+ vacaciones ( 2 ) ;
184+ }
185+ salario ( 1 ) ; //6
186+
187+ //Funciones con parámetros predeterminados
188+
189+ let phone ;
190+
191+ function tellPhone ( number = 911 ) {
192+ return number ;
193+ }
194+
195+ console . log ( tellPhone ( ) ) ;
196+
197+ //Funciones con parámetros rest
198+
199+ function resto ( resto , ...numbers ) {
200+ return numbers . map ( ( n ) => resto - n ) ;
201+ }
202+
203+ let num = resto ( 10 , 5 , 4 , 2 ) ; //A 10 le vamos restando numbers en cada caso
204+ console . log ( num ) ; // [5,6,8]
205+
206+ //Funciones flecha
207+
208+ const saludo = ( ( nombre , edad ) => {
209+ console . log ( `Hola ${ nombre } de ${ edad } años.` )
210+ } )
211+
212+ saludo ( nombre , edad ) ;
213+
214+ //Ejemplo de función ya creada en el lenguaje
215+ const float = 12.4 ;
216+
217+ console . log ( parseFloat ( float ) ) ; //12.4
218+
219+ /* * DIFICULTAD EXTRA (opcional):
220+ * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
221+ * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
222+ * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
223+ * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
224+ * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
225+ * - La función retorna el número de veces que se ha impreso el número en lugar de los textos. */
226+
227+ function numCounter ( cadena1 , cadena2 ) {
228+ let count = 0 ;
229+ for ( let i = 1 ; i <= 100 ; i ++ ) {
230+ if ( i % 3 === 0 && i % 5 === 0 ) {
231+ console . log ( i + ' ' + cadena1 + ' y ' + cadena2 ) ;
232+ } else {
233+ if ( i % 3 === 0 ) {
234+ console . log ( i + ' ' + cadena1 ) ;
235+ } else if ( i % 5 === 0 ) {
236+ console . log ( i + ' ' + cadena2 ) ;
237+ } else {
238+ count ++ ;
239+ console . log ( i + ' ' + count ) ;
240+
241+ }
242+ }
243+ }
244+ return count ;
245+ }
246+
247+ console . log ( numCounter ( 'es múltiplo de 3' , 'es múltiplo de 5' ) ) ;
0 commit comments