Skip to content

Commit 9ccb526

Browse files
authored
Merge pull request #8919 from pedamoci/main
#2 - javascript
2 parents 893847f + 123ee57 commit 9ccb526

File tree

8 files changed

+1022
-0
lines changed

8 files changed

+1022
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
// ----------------------- FUNCIONES BASICAS -----------------------
2+
// Sin parámetros ni retorno
3+
function saludar() { // función normal
4+
console.log('Hola, mundo')
5+
}
6+
const preguntar = ()=> { // función flecha
7+
console.log('Todo bien?')
8+
}
9+
saludar()
10+
preguntar()
11+
12+
// Con parámetros sin retorno
13+
function saludoPersonalizado(nombre) {
14+
console.log(`Hola, ${nombre}`)
15+
}
16+
const nacimiento = (edad) => {
17+
const actualYear = new Date().getFullYear()
18+
console.log('Año de nacimiento: ', actualYear - edad)
19+
}
20+
saludoPersonalizado('Jaime')
21+
nacimiento(98)
22+
23+
// Con parámetros y retorno
24+
function sumar(num1, num2) {
25+
return num1 + num2
26+
}
27+
const multiplicar = (num1, num2) => {
28+
return num1 * num2
29+
}
30+
console.log('Suma: ', sumar(5, 3))
31+
console.log('Multiplicación: ', multiplicar(7, 8))
32+
33+
// ----------------------- FUNCIONES DENTRO DE FUNCIONES -----------------------
34+
// Función normal dentro de función normal
35+
function areaTrianguloRectangulo(altura, base) {
36+
const areaCuadrado = altura * base
37+
function area(areaCuadrado) {
38+
return areaCuadrado / 2
39+
}
40+
return area(areaCuadrado)
41+
}
42+
console.log('Area del triángulo rectángulo: ', areaTrianguloRectangulo(10, 5))
43+
44+
// Función flecha dentro de función flecha
45+
const volumenCilindro = (radio, altura) => {
46+
const areaCirculo = (r) => Math.PI * (r ** 2)
47+
return areaCirculo(radio) * altura
48+
}
49+
console.log('Volumen de la cilindro: ', volumenCilindro(3, 10))
50+
51+
// Función flecha dentro de función normal
52+
function areaHexagono(lado, base, hipotenusa) {
53+
const perimetro = lado * 6
54+
const apotema = (b, h) => {
55+
return Math.sqrt((-(b **2)) + (h ** 2))
56+
}
57+
return (perimetro * apotema(base, hipotenusa)) / 2
58+
}
59+
console.log('Area del hexágono: ', areaHexagono(6, 10, 12))
60+
61+
// Función normla dentro de función flecha
62+
const areaCirculo = (radio) => {
63+
function area(r) {
64+
return Math.PI * (r ** 2)
65+
}
66+
return area(radio)
67+
}
68+
console.log('Area del círculo: ', areaCirculo(7))
69+
70+
// ----------------------- FUNCIONES DENTRO DEL LENGUAJE -----------------------
71+
console.log('Según la función isFinite 10/3 es finito? ', isFinite(10/3))
72+
73+
// ----------------------- VARIABLES LOCALES Y GLOBALES -----------------------
74+
let global = 'Soy global' // Variable global
75+
function bloqueUno () {
76+
let localFunction = 'Soy local de función' // Variable local de la función
77+
const bloqueDos = () => {
78+
let localFunctionFlecha = 'Soy local de función flecha' // Variable local de la función flecha
79+
console.log(`La variable global es: ${global}, la variable local de la función es: ${localFunction} y la variable local de la función flecha es: ${localFunctionFlecha}`)
80+
}
81+
console.log(`La variable global es: ${global}, la variable local de la función es: ${localFunction} y la variable local de la función flecha es: UNDIFINED`)
82+
bloqueDos()
83+
}
84+
console.log(`La variable global es: ${global}, la variable local de la función es: UNDIFINED y la variable local de la función flecha es: UNDIFINED`)
85+
bloqueUno()
86+
87+
// ----------------------- DIFICULTAD EXTRA -----------------------
88+
function impresora(s1, s2) {
89+
let cantNumImpresos = 0
90+
for (let i = 1; i <= 100; i++) {
91+
if (i % 3 === 0 && i % 5 === 0) {
92+
console.log(s1 + s2)
93+
} else if (i % 3 === 0) {
94+
console.log(s1)
95+
} else if (i % 5 === 0 ) {
96+
console.log(s2)
97+
} else {
98+
cantNumImpresos++
99+
console.log(i)
100+
}
101+
}
102+
return cantNumImpresos
103+
}
104+
let str1 = prompt('ingresa la primera cadena de texto: ')
105+
let str2 = prompt('ingresa la segunda cadena de texto: ')
106+
console.log(`Se ha impreso el un número en lugar del texto: ${impresora(str1, str2)} veces`)
Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
// ----------------------------- ESTRUCTURAS DE DATOS -----------------------------
2+
// ARRAYS
3+
4+
const frutas = new Array('Manzana', 'Pera', 'Banana')
5+
// OBJECTS
6+
7+
const persona = new Object({nombre: 'Aang', edad: 112, profesion: 'Avatar'});
8+
// SETS
9+
10+
const notasMusicales = new Set(['do', 're', 'mi', 'fa', 'sol', 'la']);
11+
// MAPS
12+
13+
const capacidad = new Map([[0, "zero"], [1, 'one'], [2, 'two'], [3, 'tree'], [4, 'four']]);
14+
15+
// ----------------------------- OPERACIONES BASICAS -----------------------------
16+
// Inserción
17+
frutas.push('Naranja') // Array
18+
persona.tribu = 'Nómadas del aire' // Object
19+
notasMusicales.add('si') // Set
20+
capacidad.set(5, 'five') // Map
21+
22+
// Borrado
23+
frutas.splice(1, 1) // Array
24+
delete persona.edad // Object
25+
notasMusicales.delete('fa') // Set
26+
capacidad.delete(5) //Map
27+
28+
// Actualización
29+
frutas[0] = 'Mango' // Array
30+
persona.profesion = 'Maestro del aire' // Object
31+
// Los Sets no permiten actualización directa
32+
capacidad.set(3, 'three') // Map
33+
34+
// Ordenación
35+
frutas.sort() // Array
36+
// Los Objects no tienen funciones de ordenación directa
37+
// Los Sets no tienen funciones de ordenación directa
38+
// Los Maps no tienen funciones de ordenación directa
39+
40+
// ----------------------------- DIFICULTAD EXTRA -----------------------------
41+
let agenda = new Object({
42+
3321904500: 'Erick',
43+
6598204500: 'Jaime',
44+
3321968740: 'Raul',
45+
3654928824: 'Mateo',
46+
1218322247: 'Laura',
47+
9633455572: 'Miguel',
48+
3321994421: 'Omar',
49+
2076589124: 'Oscar',
50+
4863465825: 'Jose',
51+
5739514862: 'Fernando',
52+
8134679852: 'Eloy',
53+
7159852456: 'Daniel',
54+
3322577770: 'Erick',
55+
3999994500: 'Erick',
56+
})
57+
58+
function verificarInfo() {
59+
//Verifica si el nombre o número ingresado por el usuario esta en la agenda
60+
while (true) {
61+
let info = prompt("Ingrese el nombre o telefono")
62+
if (Object.hasOwn(agenda, parseInt(info))) {
63+
return {'tel': info}
64+
} else if (Object.values(agenda).includes(info)) {
65+
return {'name': info}
66+
}
67+
alert("Persona/Telefono NO agendado/a")
68+
}
69+
}
70+
71+
function verificarTel() {
72+
//Verifica que el número de telefono ingresado tenga entre 8 y 11 digitos
73+
while (true) {
74+
let tel = parseInt(prompt("Ingrese el teléfono (debe tener entre 8 y 11 dígitos)"))
75+
if (!isNaN(tel) && tel.toString().length >= 8 && tel.toString().length <= 11) {
76+
return tel;
77+
}
78+
alert("Número de teléfono inválido. Debe tener entre 8 y 11 dígitos.")
79+
}
80+
}
81+
82+
function updateNombre() {
83+
//Actualiza el nombre de un contacto
84+
let infoUpdate = verificarInfo()
85+
if (infoUpdate.name !== undefined) {
86+
// busca a los contactos por nombre si hay varios devuelve los numeros y si hay uno permite cambiar el nombre
87+
let tel = Object.keys(agenda).filter(key => agenda[key] === infoUpdate.name)
88+
if (tel.length !== 1){
89+
alert(`Tienes varios contactos con ese nombre, verifica y actualiza el contacto que quieres por alguno de estos números ${tel}`)
90+
} else {
91+
let newName = prompt('Ingrese el nuevo nombre')
92+
agenda[parseInt(tel)] = newName
93+
alert(`Se ha actualizado el nombre del número ${tel} por ${newName}`)
94+
}
95+
} else {
96+
// busca el contacto por el telefono y le cambia el nombre
97+
let newName = prompt('Ingrese el nuevo nombre')
98+
agenda[parseInt(infoUpdate.tel)] = newName
99+
alert(`Se ha actualizado el nombre del número ${infoUpdate.tel} por ${newName}`)
100+
}
101+
}
102+
103+
function updateTelefono(tel) {
104+
// Actualiza el telefono de un contacto
105+
let infoUpdate = verificarInfo()
106+
if (infoUpdate.name !== undefined) {
107+
// busca a los contactos por nombre si hay varios devuelve los numeros y si hay uno permite cambiar el telefono
108+
let tel = Object.keys(agenda).filter(key => agenda[key] === infoUpdate.name)
109+
if (tel.length !== 1){
110+
alert(`Tienes varios contactos con ese nombre, verifica y actualiza el contacto que quieres por alguno de estos números ${tel}`)
111+
} else {
112+
let newTel = verificarTel()
113+
delete agenda[tel]
114+
agenda[newTel] = infoUpdate.name
115+
alert(`Se ha actualizado el número de ${infoUpdate.name} a ${newTel}`)
116+
}
117+
} else {
118+
// busca el contacto por el telefono y le cambia el telefono
119+
let newTel = verificarTel()
120+
let lastName = agenda[infoUpdate.tel]
121+
delete agenda[infoUpdate.tel]
122+
agenda[newTel] = lastName
123+
alert(`Se ha actualizado el número de ${lastName} a ${newTel}`)
124+
}
125+
}
126+
127+
function search() {
128+
// te permite buscar, insertar, actualizar y borrar un contacto
129+
// ademas te pregunta si queres hacer otra operacion
130+
let operation = prompt("Ingrese la operación a realizar: buscar, insercion, actualizar, borrar")
131+
switch (operation) {
132+
case "buscar":
133+
let infoSearch = verificarInfo()
134+
if (infoSearch.name !== undefined) {
135+
// busca los telefonos que coincidan con el nombre ingresado y devuelve todos
136+
let tel = Object.keys(agenda).filter(key => agenda[key] === infoSearch.name)
137+
if (tel.length !== 1){
138+
alert(`Tienes ${tel.length} contactos llamados ${infoSearch.name} con los números ${tel}`)
139+
} else{
140+
alert(`El telefono de ${agenda[tel]} es ${tel}`)
141+
}
142+
} else {
143+
// busca el nombre del número de telefono ingresado
144+
let name = agenda[infoSearch.tel]
145+
alert(`El dueño del telefono ${infoSearch.tel} es ${name}`)
146+
}
147+
break;
148+
149+
case "insercion":
150+
let name = prompt("Ingrese el nombre")
151+
tel = verificarTel()
152+
agenda[tel] = name
153+
alert(`Se ha agendado a ${name} con el número ${tel}`)
154+
break;
155+
156+
case "actualizar":
157+
let updateOption = alert('¿Que queres actualizar nombre o telefono?')
158+
while (updateOption !== 'nombre' && updateOption !== 'telefono') {
159+
(updateOption === 'nombre') ? updateNombre()
160+
: updateTelefono()
161+
}
162+
break;
163+
164+
case "borrar":
165+
let infoRemove = verificarInfo()
166+
if (infoRemove.name !== undefined) {
167+
// busca todos los números que estan agendados con el mismo nombre
168+
let tel = Object.keys(agenda).filter(key => agenda[key] === infoRemove.name)
169+
if (tel.length !== 1){
170+
let aviso = prompt('Tienes varios contactos con ese nombre, ¿Deseas borrar todos? Y/N')
171+
while (aviso !== 'Y' && aviso !== 'N') {
172+
if (aviso === 'Y'){
173+
let telRemoved = [...tel]
174+
while (tel.length !== 0) {
175+
// va eliminando de un telefono a la vez desde el último hasta el primero
176+
let i = tel.length - 1
177+
delete agenda[parseInt(tel[i])]
178+
tel.pop()
179+
}
180+
alert(`Los contacto con nombre ${infoRemove.name} y números ${telRemoved} han sido borrado`)
181+
break;
182+
} else {
183+
alert(`Los números que tienes agendados como ${infoRemove.name} son ${tel}`)
184+
break;
185+
}
186+
}
187+
} else {
188+
delete agenda[tel]
189+
alert(`El contacto con nombre ${infoRemove.name} y número ${tel} ha sido borrado`)
190+
}
191+
} else {
192+
let nameRemoved = agenda[infoRemove.tel]
193+
delete agenda[infoRemove.tel]
194+
alert(`El contacto con nombre ${nameRemoved} y número ${infoRemove.tel} ha sido borrado`)
195+
}
196+
break;
197+
default:
198+
break;
199+
}
200+
let stop = prompt('Quieres hacer otra operación? Y/N')
201+
while (stop !== 'Y' && stop !== 'N') {
202+
if (stop === 'Y') {
203+
search()
204+
} break;
205+
}
206+
}
207+
208+
search()

0 commit comments

Comments
 (0)