Skip to content

Commit d67d961

Browse files
Merge branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE
2 parents e5dd59a + f2d71cc commit d67d961

File tree

7 files changed

+1415
-456
lines changed

7 files changed

+1415
-456
lines changed
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
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'));
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
namespace _04_CADENAS
2+
{
3+
class Program
4+
{
5+
static void Main(string[] args)
6+
{
7+
// Declaracion de Cadenas
8+
string cadena1 = "Hola, soy Jose Esmil y estoy aprendiendo C#";
9+
var cadena2 = "Retos de Programacion!";
10+
11+
// Acceso a caracteres especificos
12+
Console.WriteLine($"Primera Forma (Llaves): { cadena1[0] }");
13+
Console.WriteLine($"Segunda Forma (ElementAt): { cadena2.ElementAt(0) }");
14+
15+
// Longitud de Cadenas
16+
Console.WriteLine($"Longitud (Length): { cadena1.Length }");
17+
Console.WriteLine($"Longitud (Count): { cadena2.Count() }");
18+
19+
// Subcadenas
20+
Console.WriteLine($"Subcadena 1: {cadena1.Substring(6, 15)}");
21+
Console.WriteLine($"Subcadena 2: {cadena2.Substring(9, 13)}");
22+
23+
// Concatenacion
24+
Console.WriteLine($"Concatenacion Concat: { string.Concat(cadena1, cadena2) }");
25+
Console.WriteLine($"Concatenacion +: {cadena2 + cadena1}");
26+
27+
// Repeticion (Metodo new String)
28+
var numeral = cadena1[cadena1.Length - 1];
29+
Console.WriteLine($"Repeticion { new String(numeral, 7) }");
30+
31+
// Recorrido
32+
foreach(var letra in cadena1)
33+
{
34+
Console.Write(letra + " ");
35+
}
36+
37+
// Conversion a Mayusculas y Minusculas
38+
Console.WriteLine($"Mayusculas { cadena1.ToUpper() }");
39+
Console.WriteLine($"Minusculas { cadena2.ToLower() }");
40+
41+
// Reemplazo
42+
var reemplazar1 = cadena1.Replace("soy", "me llamo");
43+
var reemplazar2 = cadena2.Replace("Retos", "Desafios");
44+
Console.WriteLine($"Reemplazo 1: {reemplazar1}");
45+
Console.WriteLine($"Reemplazo 2: {reemplazar2}");
46+
47+
// Division
48+
string[] palabraArr = reemplazar1.Split(' ');
49+
Array.ForEach(palabraArr, (palabra) => Console.WriteLine(palabra));
50+
51+
// Union
52+
string fraseUnida = string.Join('_', palabraArr);
53+
Console.WriteLine($"Frase Unida: {fraseUnida}");
54+
55+
// Interpolacion
56+
string country = "Dominican Republic";
57+
string message = $"Made in {country}";
58+
Console.WriteLine($"Interpolacion: {message}");
59+
60+
// Verificacion (Contains, StartsWith, EndsWith)
61+
Console.WriteLine($"Contains: {country.Contains("Republic")}");
62+
Console.WriteLine($"StartsWith: {country.StartsWith("Republic")}");
63+
Console.WriteLine($"EndsWith: {message.EndsWith("Dominican Republic")}");
64+
65+
// Eliminar Espacios (Trim)
66+
string conEspacios = " C# is cool ";
67+
Console.WriteLine($"Trim: { conEspacios.Trim() }");
68+
Console.WriteLine($"TrimStart: { conEspacios.TrimStart() }");
69+
Console.WriteLine($"TrimEnd: { conEspacios.TrimEnd() }");
70+
71+
72+
// Equals (Equivalente)
73+
Console.WriteLine(country.Equals("Dominican Republic"));
74+
75+
// IsNullOrEmpty
76+
string str = "";
77+
bool isNullOrEmpty = string.IsNullOrEmpty(str);
78+
Console.WriteLine(isNullOrEmpty);
79+
80+
// EJERCICIO EXTRA (COMPROBACIONES)
81+
82+
// Palindromo
83+
Console.WriteLine("Palindromo: " + Check.IsPalindrome("aprendiendo c#", "#c odneidnerpa"));
84+
85+
// Isograma
86+
Console.WriteLine("Isograma: " + Check.IsIsogram("murcielago"));
87+
88+
// Anagrama
89+
Console.WriteLine("Anagrama: " + Check.IsAnagram("roma", "amor"));
90+
91+
}
92+
93+
class Check
94+
{
95+
public static bool IsPalindrome(string word, string word2)
96+
{
97+
return word.Reverse().ToArray().SequenceEqual(word2.ToCharArray());
98+
}
99+
100+
public static bool IsIsogram(string word)
101+
{
102+
var newString = word.ToLower();
103+
HashSet<char> chars = new HashSet<char>();
104+
105+
foreach (char c in newString)
106+
{
107+
if (chars.Contains(c))
108+
{
109+
return false;
110+
}
111+
112+
chars.Add(c);
113+
}
114+
115+
return true;
116+
}
117+
118+
public static bool IsAnagram(string word1, string word2)
119+
{
120+
var arrWord1 = word1.ToCharArray();
121+
var arrWord2 = word2.ToCharArray();
122+
123+
Array.Sort(arrWord1);
124+
Array.Sort(arrWord2);
125+
126+
return arrWord1.SequenceEqual(arrWord2);
127+
}
128+
}
129+
}
130+
}

0 commit comments

Comments
 (0)