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+ function sinParametros ( ) {
7+ console . log ( "prueba de función sin parametros" ) ;
8+ }
9+
10+ function conParametro ( texto : string ) {
11+ console . log ( `prueba de función con parametro: ${ texto } ` )
12+ }
13+
14+ function conParametros ( texto1 : string , texto2 : string ) {
15+ console . log ( `prueba de función con parametros: ${ texto1 } y ${ texto2 } ` )
16+ }
17+
18+ function conRetorno ( ) : string {
19+ return "prueba de función con retorno" ;
20+ }
21+
22+ function conRetornoParametrosOpcionales ( valor1 :number , valor2 ?:number ) : string {
23+ let res : string ;
24+ if ( valor2 ) {
25+ let suma = valor1 + valor2 ;
26+ res = `la suma de ambos valores es: ${ suma } ` ;
27+ } else {
28+ res = `el único parámetro ingresado es: ${ valor1 } ` ;
29+ }
30+ return res ;
31+ }
32+
33+ function conParametrosPorDefecto ( valor1 : number , valor2 : number = 4 ) {
34+ let suma :number = valor1 + valor2 ;
35+ console . log ( `la suma de ${ valor1 } mas ${ valor2 } es: ${ suma } ` )
36+ }
37+
38+ //Otra característica de TypeScript es la posibilidad de pasar una lista indefinida de valores y que los reciba un vector.
39+ //El concepto de parámetro Rest se logra antecediendo tres puntos al nombre del parámetro:
40+ function conParametroRest ( ...valores :number [ ] ) {
41+ let suma :number = 0 ;
42+ for ( let i of valores ) {
43+ suma += i ;
44+ }
45+ console . log ( `la suma de todos los parametros es: ${ suma } ` )
46+ }
47+
48+ sinParametros ( ) ;
49+ conParametro ( "parámetro" ) ;
50+ conParametros ( "var1" , "var2" ) ;
51+ console . log ( conRetorno ( ) ) ;
52+ console . log ( conRetornoParametrosOpcionales ( 3 ) ) ;
53+ console . log ( conRetornoParametrosOpcionales ( 3 , 5 ) ) ;
54+ conParametrosPorDefecto ( 7 ) ;
55+ conParametroRest ( 3 , 4 , 5 ) ;
56+ /**El operador Spread permite descomponer una estructura de datos en elementos individuales.
57+ Es la operación inversa de los parámetros Rest. La sintaxis se aplica anteponiendo al nombre de la variable tres puntos:*/
58+ function sumar ( valor1 :number , valor2 :number , valor3 :number ) :number {
59+ return valor1 + valor2 + valor3 ;
60+ }
61+
62+ const vec = [ 10 , 20 , 30 ] as const ;
63+ console . log ( `la suma de los datos es: ${ sumar ( ...vec ) } ` ) ;
64+
65+ /*
66+ * - Comprueba si puedes crear funciones dentro de funciones.*/
67+ function funcionPrincipal ( ) {
68+ console . log ( "llamado de la primera función" )
69+ function funcionAnidada ( ) {
70+ console . log ( "llamado a la función anidada" )
71+ }
72+ funcionAnidada ( ) ;
73+ }
74+ funcionPrincipal ( ) ;
75+
76+
77+ /*
78+ * - Utiliza algún ejemplo de funciones ya creadas en el lenguaje.*/
79+ function contarLetrasEnFrase ( frase : string ) {
80+ console . log ( `la frase "${ frase } " contiene ${ frase . length } caracteres incluyendo espacios` ) ;
81+ }
82+ contarLetrasEnFrase ( "Probando funciones ya creadas en typescript" ) ;
83+
84+ /*
85+ * - Pon a prueba el concepto de variable LOCAL y GLOBAL.*/
86+ let varGlobal :boolean = true ;
87+ function testVarGlobal ( ) {
88+ let varLocal :boolean = false ;
89+ if ( varGlobal && varLocal ) {
90+ console . log ( "puedo usar la variable global y la local dentro del método" )
91+ }
92+ }
93+ console . log ( `puedo acceder a la variable global con el valor ${ varGlobal } pero es imposible acceder al la variable local (dentro del método)` )
94+
95+ /*
96+ * DIFICULTAD EXTRA (opcional):
97+ * Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
98+ * - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
99+ * - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
100+ * - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
101+ * - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
102+ * - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
103+ *
104+ * Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos.
105+ * Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda.
106+ */
107+
108+ function returnNumber ( texto1 : string , texto2 : string ) :number {
109+ let count :number = 0 ;
110+ for ( let i = 0 ; i < 100 ; i ++ ) {
111+ if ( i % 3 == 0 && i % 5 == 0 ) {
112+ console . log ( `los dos parámetros son ${ texto1 } y ${ texto2 } ` ) ;
113+ } else if ( i % 3 == 0 ) {
114+ console . log ( `primer parámetro: ${ texto1 } ` ) ;
115+ } else if ( i % 5 == 0 ) {
116+ console . log ( `segundo parámetro: ${ texto2 } ` ) ;
117+ } else {
118+ console . log ( i ) ;
119+ count ++ ;
120+ }
121+ }
122+ return count ;
123+ }
124+
125+ console . log ( "El número total de números mostrados es: " + returnNumber ( "valor1" , "valor2" ) ) ;
0 commit comments