Skip to content

Commit

Permalink
Merge pull request #7334 from EloyParga/main
Browse files Browse the repository at this point in the history
#2 - JavaScript
  • Loading branch information
Roswell468 authored Dec 11, 2024
2 parents 0edbdf6 + 2e21e9a commit 4358631
Show file tree
Hide file tree
Showing 2 changed files with 283 additions and 0 deletions.
85 changes: 85 additions & 0 deletions Roadmap/02 - FUNCIONES Y ALCANCE/javascript/EloyParga.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// FUNCIONES BÁSICAS EN JAVASCRIPT

// 1. Funcion sin parametros ni retorno
function saludoSimple(){
console.log("Hola, JS");
}


// 2. Función con un parametro
function saludarNombre(nombre) {
console.log(`Hola ${nombre}, buenos días`);
}


// 3. Función con varios parametros
function sumar (a , b){
console.log(`La suma de ${a} + ${b} = ${a+b}`);
}


/** 4. Función con @return */
function restar (a , b){
return a-b;
}
let resultado = restar(10,5);
console.log(`El resultado de 10 - 5 = ${resultado}`);


// 5. Función dentro de otra función
function calculadora(a , b){
function multiplicar (x , y) {
return x * y;
}
const suma = a+b;
const multiplicacion = multiplicar(a, b); // llamada a la subfuncion
console.log(`Suma : ${suma} , Multiplicación : ${multiplicacion}`);
}
calculadora(10,5);


// 6. Funciones prefinidas
let numeros = [1,2,3,4,5,];
console.log("Lista de numeros: ", numeros);
let numerosCuadrados =numeros.map((n) => n**2);
console.log("Numeros Cuadradosa ", numerosCuadrados);


//VARIABLES LOCALES Y GLOBALES
let variableGlobal = "Soy una variable global";

function alcance(){
let variableLocal = "Soy una variable Local";
console.log("VARIABLE: ", variableLocal);
console.log("VARIABLE: ", variableGlobal);
}
alcance();
/** Esto da error : Porque @param variableLocal
* no existe fuera del @method alcance()
*/
// console.log(variableLocal);


// DIFICULTAD EXTRA : FUNCION MULTIPLOS

function fizzBuzz(fizz , buzz) {
let cont = 0; // Contador que evalua cuantas veces se imprime números en vez de texto

for (let i = 1; i<=100 ; i++){
if (i % 3 === 0 && i % 5 === 0) {
console.log(fizz,buzz); //Multiplo 3 y 5
}else if(i % 3 === 0){
console.log(fizz,) //Multiplo 3
}else if (i % 5 === 0) {
console.log(buzz); //Multiplo 5
}else{
console.log(i); //No multiplo
cont++; // Incrementa el contador
}
}

return cont; //Retorna el total de numeros impresos
}

const impresos = fizzBuzz("Fizz", "Buzz");
console.log(`Total de numeros impresos en lugar de Texto ${impresos}`);
198 changes: 198 additions & 0 deletions Roadmap/03 - ESTRUCTURAS DE DATOS/javascript/EloyParga.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
// 1. Arrays
let arrayDatosSub = ["Spira", "Drazz", "Espaby", "Kainyan77"];
console.log("Array Inicial: ",arrayDatosSub);

//Insercción
arrayDatosSub.push("EloyParga"); //Añade un elemento al final
console.log("Despues de la insercción" , arrayDatosSub);

//Boorar
arrayDatosSub.slice(0,1);
console.log("Despues de Borrar", arrayDatosSub );

//Actualización
arrayDatosSub[2] = "ESPABY";
console.log("Despues de Actualizar ", arrayDatosSub)

//Ordenación
/**
* @method sort()
* por defecto ordena lexicograficamente
* por @param podemos pasarle de forma OPCIONAL
* una regla que defina el orden de los elementos
*/
arrayDatosSub.sort((a, b) => a.length - b.length); // Odena de menor a mayor longitud de palabra
console.log("Despues de ordenar " , arrayDatosSub)


//2. Objetos
let listaTrabajadores = {
trabajador1: "Manolo",
trabajador2: "Jony"
}
console.log("Objeto Inicial ", listaTrabajadores);

//Insercción
listaTrabajadores.trabajador3 = "Pepe";
console.log ("Despues de insertar ", listaTrabajadores)

//Borrar
delete listaTrabajadores.trabajador1
console.log("Despues de borrar ", listaTrabajadores);

//Actualizar
listaTrabajadores.trabajador2 = "Jonathan";
console.log("Despues de actualizar ", listaTrabajadores);


// 3.Mapas
let mapa = new Map();
mapa.set("a", 1);
mapa.set("b", 2);
console.log("Mapa Inicial: ", mapa);

// Inserción
mapa.set("c", 3);
console.log("Despues de la Inserción: ", mapa);

// Borrar
mapa.delete("b");
console.log("Despues de Borrar: ", mapa);

// Actualizar
mapa.set("c", 10);
console.log("Despues de Actualizar: ", mapa);



//DIFICULTAD EXTRA: AGENDA DE CONTACTOS
const readline = require("readline");

const agenda = new Map();

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});

//validar que el numero sea válido
function validacionNum(numero){
return /^[0-9]{1,11}$/.test(numero)
}

//Funciones para las operaciones de la agenda
function insertarContacto(nombre, numero) {
if(!validacionNum(numero)){
console.log("Numero de telefono no valido, debe contener solo numeros y maximo 11 digitos");
return;
}
agenda.set(nombre, numero);
console.log("Contacto añadido");
}

function buscarContacto(nombre) {
if(agenda.has(nombre)) {
console.log(`Contacto encontrado: ${nombre} - ${agenda.get(nombre)}`);
}else{
console.log("Contacto no encontrado");
}
}

function actualizarContacto(nombre, Newnumero){
if(!agenda.has(nombre)){
console.log("El contacto no existe");
}

if(!validacionNum(Newnumero)){
console.log("Numero de telefono no valido, debe contener solo numeros y maximo 11 digitos");
return;
}

agenda.set({nombre, Newnumero});
console.log("Contacto actualizado");
}

function eliminarContacto(nombre,){
if(agenda.delete(nombre)){
console.log("Contacto Eliminado");
}else{
console.log("El contacto no existe");
}
}

function mostrarAgenda(){
if(agenda.size === 0){
console.log("La agenda esta vacia");
}else{
console.log("==CONTACTO DE LA AGENDA==");
agenda.forEach((nombre, numero) => {
console.log(`- ${nombre}: ${numero}`);
})
}
}


//MENU AGENDA

function menu(){
console.log("\n=== AGENDA CONTACTOS ===");
console.log("1. Insertar Contacto");
console.log("2. Buscar Contacto");
console.log("3. Actualizar Contacto");
console.log("4. Eliminar Contacto");
console.log("5. Mostrar todos los contacto");
console.log("6. SALIR");

rl.question("Selecciona una opción: ", (opcion) => {
switch(opcion){
case "1":
rl.question("Introduce el nombre", (nombre)=> {
rl.question("Introduce el numero de telefono", (numero)=> {
insertarContacto(nombre, numero);
menu();
});
});
break;

case "2":
rl.question("Introduce el nombre del contacto", (nombre) => {
buscarContacto(nombre);
menu();
});
break;

case "3":
rl.question("Introduce el nombre", (nombre)=> {
rl.question("Introduce el nuevo numero de telefono", (numero)=> {
actualizarContacto(nombre, numero);
menu();
});
});
break;

case "4":
rl.question("Introduce el nombre del contacto que desea eliminar", (nombre) => {
eliminarContacto(nombre);
menu();
});
break;

case "5":
mostrarAgenda();
menu();
break;

case "6":
console.log("Ha salido de la agenda. ¡ADIOS!");
rl.close();
break;

default:
console.log("Opcion no valida");
menu();
}
});
}

//Inicializar el menu
menu();

0 comments on commit 4358631

Please sign in to comment.