Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Reinier Garcia

Páginas: [1]
1
: )
Saludos a todos.

Aquí les dejo mi respuesta al ejercicio opcional del capítulo CU01195E del curso de Programación Básica con JavaScript. Mi función permite dibujar la bandera de forma completamente proporcional, definiéndose tan solo el ancho de la misma y sin importar cuál este sea. Siempre se va a ver apropiadamente escalada.

Citar
Este ejercicio no forma parte del curso, por eso se califica como opcional. El ejercicio consiste en dibujar la bandera de tu país usando canvas y JavaScript. La respuesta al ejercicio debe ser el código que genere la bandera.

Muy bueno el curso. Gracias a todos.
Bye.

El código html no es relevante. Como ejemplo sirve un simple fichero que contenga tan solo un canvas:
Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Curso Básico de JavaScript</title>

        <!-- *** Características Básicas de la Página Web *** -->
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="Portal web aprenderaprogramar.com">
        <meta name="keywords" content="aprender, programar, cursos, libros">

        <!-- Icono de la página web -->
        <link rel="icon" type="image/png" href="icons/javascript-icon.png"/>

        <!-- ***** Ficheros Externos con Código JavaScript ***** -->

        <!-- ** Dirección del fichero .js con funciones y eventos definidos por el Programador ** -->
        <script type="text/javascript" src="js_files/Page95APICanvas.js"></script>

        <!-- Fichero adicional (dibujar figuras) -->
        <script type="text/javascript" src="js_files/canvasEstrella.js"></script>

    </head>

    <!-- Contenido de la página web -->
    <body>

                    <canvas id="canvas1" width="200" height="400" style="border-style:solid;">
                        Su navegador no tiene soporte para mostrar el contenido
                    </canvas>     

    </body>
    <!-- Fin del contenido de la página web -->
</html>

El código JavaScript principal está definido en un fichero aparte:
Código: [Seleccionar]
//Para cuando culmine con éxito la carga de la pagina
window.onload = function () {

//Asignamos los eventos a los componente html
    AsignarEventos();

};


// Asigno las funciones para cada evento de cada componente
function AsignarEventos() {

    /* Capítulo 95: API Canvas */


    /* Ejercicio Opcional: Dibujar bandera de USA */
    drawUSAFlag(400);

}


/**
 * Crea una bandera de USA, en un objeto canvas seleccionado en el DOM.
 *
 * @param flagWidth Ancho de la bandera.
 */
function drawUSAFlag(flagWidth) {

    var proporcionDePixels = flagWidth;

    /* Defino las dimensiones de cada componente de la bandera, guiándome por las medidas oficiales  */
    var alturaBandera = 1 * proporcionDePixels;
    var anchuraBandera = 1.9 * proporcionDePixels;
    var altoDelCanton = 0.5385 * proporcionDePixels;
    var anchoDelCanton = 0.76 * proporcionDePixels;
    var lineaDeExtrellas = 0.0538 * proporcionDePixels;
    var columnaDeExtrellas = 0.0633 * proporcionDePixels;
    var diametroDeLaEstrella = 0.0616 * proporcionDePixels;
    var anchoDeLasFranjas = 0.0769 * proporcionDePixels;

    /* Colores Oficiales Exactos de cada componente de la bandera */
    var starColor = '#FFFFFF';
    var oldGloryRedColor = '#BE0D34';
    var oldGloryBlueColor = '#002C77';

    /* Selecciono mi canvas en el DOM */
    var elemento = document.getElementById('canvas_usa');

    /* Si se puede seleccionar el canvas... */
    if (elemento && elemento.getContext) {

        /* Defino el contexto */
        var ctx = elemento.getContext('2d');

        /* Si se puede definir el contexto... */
        if (ctx) {

            /* Defino las dimensiones externas de la bandera */
            elemento.width = anchuraBandera;
            elemento.height = alturaBandera;

            /*----------------------------------------------------------------------------------------------------------
             -->  Comienzo dibujando un rectángulo blanco con las dimensiones de la bandera  <-- 
             ---------------------------------------------------------------------------------------------------------*/

            ctx.fillStyle = "#FFFFFF";
            ctx.fillRect(0, 0, anchuraBandera, alturaBandera);

            /*----------------------------------------------------------------------------------------------------------
             -->  Dibujo el Rectángulo Superior Izquierdo (OldGloryBlue)  <-- 
             ---------------------------------------------------------------------------------------------------------*/

            ctx.fillStyle = oldGloryBlueColor;
            ctx.fillRect(0, 0, anchoDelCanton, altoDelCanton);

            /*----------------------------------------------------------------------------------------------------------
             -->  Dibujo las 7 Franjas Rojas (OldGloryRed)  <-- 
             ---------------------------------------------------------------------------------------------------------*/

            /* Dibujo las 4 franjas rojas cortas */
            ctx.fillStyle = oldGloryRedColor;
            ctx.fillRect(anchoDelCanton, 0, (anchuraBandera - anchoDelCanton), anchoDeLasFranjas);
            ctx.fillRect(anchoDelCanton, anchoDeLasFranjas * 2, (anchuraBandera - anchoDelCanton), anchoDeLasFranjas);
            ctx.fillRect(anchoDelCanton, anchoDeLasFranjas * 4, (anchuraBandera - anchoDelCanton), anchoDeLasFranjas);
            ctx.fillRect(anchoDelCanton, anchoDeLasFranjas * 6, (anchuraBandera - anchoDelCanton), anchoDeLasFranjas);

            /* Dibujo las 3 franjas rojas más largas */
            ctx.fillRect(0, (altoDelCanton + (anchoDeLasFranjas * 1)), anchuraBandera, anchoDeLasFranjas);
            ctx.fillRect(0, (altoDelCanton + (anchoDeLasFranjas * 3)), anchuraBandera, anchoDeLasFranjas);
            ctx.fillRect(0, (altoDelCanton + (anchoDeLasFranjas * 5)), anchuraBandera, anchoDeLasFranjas);

            /*----------------------------------------------------------------------------------------------------------
             -->  *** Dibujo ahora las 50 Estrellas Blancas ***  <-- 
             ---------------------------------------------------------------------------------------------------------*/

            // Coordenadas del centro de la 1ra estrella:
            var centroX = columnaDeExtrellas;
            var centroY = lineaDeExtrellas;

            // Defino el Radio de la circunferencia que circunscribe a la estrella:
            var starExternalRadio = (diametroDeLaEstrella / 2);

            // Defino el Radio interno de la estrella:
            var starInnerRadio = starExternalRadio / 2.5;

            /* Defino otros datos de las estrellas */
            var cantidadPicos = 5;
            var starLineWidth = 0; // Grosor de las líneas
            var borderColor = starColor; // Color blanco en este caso
            var fillColor = starColor; // Color blanco en este caso

            /* Dibujo las 5 filas, con 6 estrellas cada una */
            for (var i = 1; i < 10; i += 2) {

                for (var j = 1; j < 12; j += 2) {

                    drawStar(ctx, centroX * j, centroY * i, cantidadPicos, starExternalRadio, starInnerRadio, borderColor, fillColor, starLineWidth);

                }

            }

            /* Dibujo las 4 filas, con 5 estrellas cada una */
            for (var k = 2; k < 9; k += 2) {

                for (var m = 2; m < 11; m += 2) {

                    drawStar(ctx, centroX * m, centroY * k, cantidadPicos, starExternalRadio, starInnerRadio, borderColor, fillColor, starLineWidth);

                }

            }

        }

    }

}

En otro fichero javaScript se define el dibujo de cada estrella.
Código: [Seleccionar]
/**
 * Crea una estrella, en un objeto canvas que se recibe por datos, circunscrito en una circunferencia definida.
 *
 * @param ctx Context "2d" en el que se dibujará la estrella.
 * @param cx coordenada en X del centro de la circunferencia que circunscribe a la estrella.
 * @param cy coordenada en Y del centro de la circunferencia que circunscribe a la estrella.
 * @param spikes Cantidad de puntas de la estrella.
 * @param outerRadius Radio de la circunferencia que circunscribe a la estrella.
 * @param innerRadius Radio de la circunferencia interna de la estrella.
 * @param borderColor Color del borde de la estrella.
 * @param fillColor Color del relleno de la estrella .
 * @param starLineWidth Grosor del trazo de la estrella.
 */
function drawStar(ctx, cx, cy, spikes, outerRadius, innerRadius, borderColor, fillColor, starLineWidth) {
   
    var rot = Math.PI / 2 * 3;
    var x = cx;
    var y = cy;
    var step = Math.PI / spikes;

    ctx.beginPath();
    ctx.moveTo(cx, cy - outerRadius);
   
    for (i = 0; i < spikes; i++) {
       
        x = cx + Math.cos(rot) * outerRadius;
        y = cy + Math.sin(rot) * outerRadius;
        ctx.lineTo(x, y);
        rot += step;

        x = cx + Math.cos(rot) * innerRadius;
        y = cy + Math.sin(rot) * innerRadius;
        ctx.lineTo(x, y);
        rot += step;
       
    }
   
    ctx.lineTo(cx, cy - outerRadius);
    ctx.closePath();
    ctx.lineWidth = starLineWidth;
    ctx.strokeStyle = borderColor;
    ctx.stroke();
    ctx.fillStyle = fillColor;
    ctx.fill();
   
}


2

Respuesta del Ejercicio # 2 del Capítulo 65:

Código: [Seleccionar]
/* Ejercicio # 2: Calcular el area de la base y el volumen de un cilindro */

function cap65Ejercicio2CalcularAreaBaseYVolumenDeCilindro() {

    /* Pido al usuario el valor del radio del cilindro */
    var radioCilindro = Number(prompt('Introduzca el radio del cilindro en metros'));

    /* Se repite hasta que se teclee bien el valor del radio */
    while ((radioCilindro == '') || (isNaN(radioCilindro))) {

        radioCilindro = prompt('Introduzca bien el radio del cilindro en metros');

    }

    /* Pido al usuario el valor de la altura del cilindro */
    var alturaCilindro = Number(prompt('Introduzca la altura del cilindro en metros'));

    /* Se repite hasta que se teclee bien el valor de la altura */
    while ((alturaCilindro == '') || (isNaN(alturaCilindro))) {

        alturaCilindro = prompt('Introduzca bien la altura del cilindro en metros');

    }

    /* Calculo el area y el volumen del cilindro */
    var areaCilindro = Math.PI * Math.pow(radioCilindro, 2);
    var volumenCilindro = areaCilindro * alturaCilindro;

    /* Muestro al usuario el resultado de los cálculos */
    alert('El area del cilindro es de ' + areaCilindro.toFixed(2) + ' metros cuadrados \ny su volumen es de ' + volumenCilindro.toFixed(2) + ' metros cúbicos.');
   
}

3

Respuesta del Ejercicio # 1 del Capítulo 65:

Código: [Seleccionar]
/* Ejercicio 1: Número aleatorio entre 1 y 100 */

function cap65Ejercicio1AdivinarNumeroAleatorio() {

    /* Declaro las variables necesarias */
    var cantidadMaximaNumerosAleatorios = 100;
    var numeroAleatorioEntre1Y100 = Math.floor((Math.random() * cantidadMaximaNumerosAleatorios) + 1);
    var respuestaUsuario = -1;
    var contadorIntentos = 1;
    var limiteMaximoDeIntentos = 12;

    do {

        if (contadorIntentos === 1) { // Se muestra solo la 1ra vez

            respuestaUsuario = prompt('Adivine un número del 1 al ' + cantidadMaximaNumerosAleatorios + '. Tiene ' + limiteMaximoDeIntentos + ' chances. Intento # ' + contadorIntentos);

            if (respuestaUsuario < numeroAleatorioEntre1Y100) { // Respuesta incorrecta por abajo en el 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se quedó corto. Intento # ' + contadorIntentos + '. Adivine el número');

            } else if (respuestaUsuario > numeroAleatorioEntre1Y100) { // Respuesta incorrecta por arriba en el 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se pasó. Intento # ' + contadorIntentos + '. Adivine el número');

            }

        } else { // Para el 2do intento en lo adelante

            if (respuestaUsuario < numeroAleatorioEntre1Y100) { // Respuesta incorrecta por abajo, luego del 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se quedó corto. Intento # ' + contadorIntentos + '. Adivine el número');

            } else if (respuestaUsuario > numeroAleatorioEntre1Y100) { // Respuesta incorrecta por arriba, luego del 1er intento

                contadorIntentos++;
                respuestaUsuario = prompt('Se pasó. Intento # ' + contadorIntentos + '. Adivine el número');

            }

        }

    } while ((respuestaUsuario != numeroAleatorioEntre1Y100) && (contadorIntentos < limiteMaximoDeIntentos))


    /*----------------------------------------------------------------------------------------------------------------------
     -->  Cuando se halló la respuesta correcta o se venció el número de intentos  <-- 
     ---------------------------------------------------------------------------------------------------------------------*/

    if ((respuestaUsuario == numeroAleatorioEntre1Y100) && (contadorIntentos <= limiteMaximoDeIntentos)) { // Acertó el número aleatorio

        if (contadorIntentos === 1) { // Acertó al primer intento. Muy improbable

            alert('Felicidades!! El número es ' + numeroAleatorioEntre1Y100 + '. Acertó al 1er intento. Es increible!!');

        } else { //Acertó luego de varios intentos

            alert('Correcto, el número es ' + numeroAleatorioEntre1Y100 + '. Acertó luego de ' + contadorIntentos + ' intentos');

        }

    } else { // No acertó el número aleatorio, sino que llegó al número máximo de intentos

        alert('Lo sentimos. Ha superado el límite de ' + (limiteMaximoDeIntentos) + ' intentos. El número aleatorio era ' + numeroAleatorioEntre1Y100);

    }

}

4

Respuesta del Ejercicio # 2 del Capítulo 63:

Código: [Seleccionar]
/*----------------------------------------------------------------------------------------------------------------------
 -->  Capítulo 63: Ejercicio 2  <-- 
 ---------------------------------------------------------------------------------------------------------------------*/

function Cap63Ejercicio2CalcularDiasEntreDosFechas() {

    /* Recibimos la 1ra fecha en formato español (dd-mm-yyyy) */
    var fechaInicial = prompt('Teclee la 1ra fecha (dd-mm-yyyy)');

    /* Garantizamos que el usuario teclee la 1ra fecha y que lo haga correctamente */
    while ((!fechaInicial) || (fechaInicial.trim().length === 0) || (!verificarFecha(fechaInicial))) {

        fechaInicial = prompt('Teclee bien la 1ra fecha (dd-mm-yyyy)');
    }

    /* Recibimos la 2da fecha en formato español (dd-mm-yyyy) */
    var fechaFinal = prompt('Teclee la 2da fecha (dd-mm-yyyy)');

    /* Garantizamos que el usuario teclee la 2da fecha y que lo haga correctamente */
    while ((!fechaFinal) || (fechaFinal.trim().length === 0) || (!verificarFecha(fechaFinal))) {

        fechaFinal = prompt('Teclee bien la 2da fecha (dd-mm-yyyy)');
    }

    /* Declaro una variable auxiliar necesaria para dar el resultado al usuario */
    var resultado = "";

    /* Divido en dos arreglos los datos de día, més y año de las dos fechas, que están separados por el caracter "-" */
    var inicial = fechaInicial.split("-");
    var final = fechaFinal.split("-");

    // Obtenemos las dos fechas en milisegundos
    var dateStart = new Date(inicial[2], (inicial[1] - 1), inicial[0]);
    var dateEnd = new Date(final[2], (final[1] - 1), final[0]);

    /* Comparamos las dos fechas y de acuerdo a ello es la respuesta que se le dará al usuario */
    if (dateStart < dateEnd) { // Todo correcto

        // la diferencia entre las dos fechas la dividimos entre 86 400 000, que es la cantidad de ms que tiene un día
        resultado = "La diferencia es de " + Number((dateEnd - dateStart) / 86400000).toFixed(0) + " días";

    } else if (dateStart === dateEnd) { // La misma fecha introducida dos veces

        resultado = "La fecha inicial es igual a la fecha final (0 días de diferencia)";

    } else { // El usuario se equivocó, intercambiando el orden de las fechas (igualmente doy la respuesta)

        // la diferencia entre las dos fechas la dividimos entre 86 400 000, que es la cantidad de ms que tiene un día
        resultado = "La fecha inicial es posterior a la fecha final \ny la diferencia entre ellas es de " + Number((dateStart - dateEnd) / 86400000).toFixed(0) + " días";
    }

    /* Muestro el resultado, sea este cual sea */
    alert(resultado);

}

/* función para validar una fecha */
function isValidDate(aDay, aMonth, aYear) {

    /* El mes en las fechas comienza en índice 0, por lo que se debe reducir en 1 el mes entrante a esta función */
    var month = aMonth - 1;

    /* Creo una fecha temporal para comprobar con sus funciones la validés de la fecha entrante a esta función */
    var dteDate = new Date(aYear, month, aDay);

    /* Devuelve si es válida o no (No puede usarse === pues no son del mismo formato y valor las variables a comparar) */
    return ((aDay == dteDate.getDate()) && (month == dteDate.getMonth()) && (aYear == dteDate.getFullYear()));

}

/* Función para varificar una fecha en formato español (dd-mm-yyyy), tanto por su formato como por su validés como tal */
function verificarFecha(aFecha) {

    /* Por si queremos utilizar el caracter "/" para separar las cifras de la fecha en formato español (dd/mm/yyyy) */
    //  var patron = new RegExp("^([0-9]{1,2})([/])([0-9]{1,2})([/])(19|20)+([0-9]{2})$");

    /* Creamos la expresión regular que describe la fecha en formato español (dd-mm-yyyy) */
    var patron = new RegExp("^([0-9]{1,2})([-])([0-9]{1,2})([-])(19|20)+([0-9]{2})$");

    /* Ahora varifico si el formato en que está escrito la fecha es el correcto */
    if (aFecha.search(patron) === 0) { // Cumple el formato

        /* Divido en un arreglo las partes integrantes de la fecha (año, mes, día), que están separadas por el caracterer "-" */
        var values = aFecha.split("-");

        /* Por último verifico que la fecha sea real (válida) enviando a otra función el día, mes y año */
        if (isValidDate(values[0], values[1], values[2])) { // Si es válida

            return true;

        }
    }

    /* Si no cumple con ambas condiciones (con un formato correcto y con que sea válida) devuelvo false */
    return false;

}

5
Respuesta del Ejercicio # 1 del Capítulo 63 del tutorial básico de programación web con JavaScript:

Código: [Seleccionar]
/* Capítulo 63: Ejercicio 1 */

function Cap63Ejercicio1CalcularLapsoDeTiempo() {
   
    var nombre = prompt('Teclee su nombre');

    if ((!nombre) || (nombre.trim().length === 0)) {

        while (nombre.trim() === '') {

            nombre = prompt('Teclee su nombre');

        }

    }

    var tiempo1 = new Date().getTime();

    var pais = prompt('Introduzca su país');

    if ((!pais) || (pais.trim().length === 0)) {

        while (pais.trim() === '') {

            pais = prompt('Teclee su país');

        }

    }

    var tiempo2 = new Date().getTime();

    var cantidadMilisegundos = tiempo2 - tiempo1;

    /*----------------------------------------------------------------------------------------------------------------------
     -->  Ahora doy el resultado de acuerdo a la cantidad de milisegundos calculados entre las dos entradas de datos  <-- 
     ---------------------------------------------------------------------------------------------------------------------*/

    if (cantidadMilisegundos < 1000) { //Menos de un segundo

        alert('Han pasado ' + cantidadMilisegundos + ' milisegundos entre su primera y segunda respuesta');

    } else if (cantidadMilisegundos === 1000) { // Un segundo

        alert('Ha pasado 1 segundo entre su primera y segunda respuesta');

    } else if ((1000 < cantidadMilisegundos) && (cantidadMilisegundos < 60000)) { // Más de 1 segundo y menos de 1 minuto

        alert('Han pasado aproximadamente ' + (cantidadMilisegundos / 1000).toFixed(0) + ' segundos entre su primera y segunda respuesta');

    } else if (cantidadMilisegundos === 60000) { // Un minuto exacto

        alert('Ha pasado 1 minuto entre su primera y segunda respuesta');

    } else if ((60000 < cantidadMilisegundos) && (cantidadMilisegundos < 3600000)) { // Más de 1 minuto y menos de 1 hora

        /* Se valida para cuando son minutos exactos (sin segundos) o cuando son inexactos (con segundos restantes) */
        if (cantidadMilisegundos % 60000 === 0) { // Minutos exactos (sin segundos restantes)

            alert('Han pasado aproximadamente ' + (cantidadMilisegundos / 60000).toFixed(0) + ' minutos entre su primera y segunda respuesta');

        } else { // Minutos inexactos (con segundos restantes)

            alert('Han pasado aproximadamente ' + (cantidadMilisegundos / 60000).toFixed(0) + ' minutos y ' + Number((cantidadMilisegundos % 60000) / 1000).toFixed(0) + ' segundos entre su primera y segunda respuesta');
        }

    } else if (cantidadMilisegundos === 3600000) { // 1 hora exactactamente

        alert('Ha pasado 1 hora exactamente entre su primera y segunda respuesta');

    } else if ((360000 < cantidadMilisegundos) && (cantidadMilisegundos < 86400000)) { // Más de 1 hora y menos de 1 día

        /* Se debe validar para cuando son horas en punto o exactas (sin minutos y/o segundos) o cuando son horas inexactas (con minutos y/o segundos restantes) */

        if (cantidadMilisegundos % 86400000 === 0) { // Horas exactas (en punto)

            alert('Han pasado  ' + (cantidadMilisegundos / 86400000).toFixed(0) + ' horas entre su primera y segunda respuesta');

        } else if (cantidadMilisegundos % 86400000 !== 0) { // Horas inexactas (lo más común al ejecutarlo durante largo tiempo)

            /* Ahora debe validarse si son horas inexactas con minutos en punto o horas inexactas con minutos + segundos restantes */
            if ((cantidadMilisegundos % 86400000) % 60000 === 0) { // Horas inexactas con minutos en punto

                alert('Han pasado  ' + (cantidadMilisegundos / 86400000).toFixed(0) + ' horas y ' + Number((cantidadMilisegundos % 86400000) / 60000).toFixed() + ' minutos entre su primera y segunda respuesta');


            } else if ((cantidadMilisegundos % 86400000) % 60000 !== 0) { // Horas inexactas con minutos + segundos restantes (lo más común en periodos largos)

                alert('Han pasado  ' + (cantidadMilisegundos / 86400000).toFixed(0) + ' horas, ' + Number((cantidadMilisegundos % 86400000) / 60000).toFixed(0) + ' minutos y ' + Number(((cantidadMilisegundos % 86400000) % 60000) / 1000).toFixed(0) + ' segundos entre su primera y segunda respuesta');

            }

        }

    } else if (cantidadMilisegundos === 86400000) { // 1 día exactamente

        alert('Ha pasado 1 día exactamente entre su primera y segunda respuesta');
    }


}

6
Respuesta del ejercicio final CU01154E del tutorial básico de programación web co JavaScript:

Código: [Seleccionar]
function cap54_ejercicioFinal() {

    var myExpReg = /^[A-C]\w+\ses\s\w+/;

    var cadenasDeCaracteres = [];

    cadenasDeCaracteres[0] = 'Juan es guapo';
    cadenasDeCaracteres[1] = 'Adriano no es feo';
    cadenasDeCaracteres[2] = 'Adriano deja de ser guapo';
    cadenasDeCaracteres[3] = 'Adriano ya es guapo';
    cadenasDeCaracteres[4] = 'No es ahora';
    cadenasDeCaracteres[5] = 'Ahora es no';
    cadenasDeCaracteres[6] = 'Adriano es guapo';

    var msg = 'Utilizando el patrón: ' + myExpReg + '\n';

    for (var i = 0; i < cadenasDeCaracteres.length; i++) {

        msg += 'La cadena \"' + cadenasDeCaracteres[i] + '\" ' + (myExpReg.test(cadenasDeCaracteres[i]) ? 'CUMPLE' : 'NO CUMPLE') + ' con dicho patrón' + '\n';

    }
   
    alert(msg);

}

7
Lo que sucede es que está mal redactada la explicación y mal interpretada la expresión regular:

En vez de decir:

Citar
a) En forma de literal: var miExpresionRegular = /as?.a/ representa a todas las cadenas que contienen una subcadena con la primera letra de la subcadena una a, seguida de una s, opcionalmente seguida de cualquier letra y seguida de una a.

Debió decir:

Citar
a) En forma de literal: var miExpresionRegular = /as?.a/ representa a todas las cadenas que contienen una subcadena con la primera letra de la subcadena una a, seguida de una s opcional, seguida de un caracter cualquiera y seguida de una a.

8
Ejercicio # 2: Otra variante. Haciendo uso tan solo de lo aprendido hasta el momento en este sitio web.

Código: [Seleccionar]
function cap53_ejercicioFinal2() {

    var miArrayOriginal = ['Moto', 'soto', 'Abaco', 'abeja', 'Sapo', 'nieve', 'Zumba', 'barco'];
    var copiaArrayOriginal = miArrayOriginal;
    var ordenAlfabetico = copiaArrayOriginal.sort(ordenarAlfabeticamenteNoCaseSensitive).join(', ');

    var msg = 'El array original es: [' + miArrayOriginal.join(', ') + ']\n';
    msg += 'Ordenado alfabéticamente es: [' + ordenAlfabetico + ']\n';

    alert(msg);

}


function ordenarAlfabeticamenteNoCaseSensitive(item1, item2) {

    return ( item1.toLowerCase() < item2.toLowerCase()? - 1: (item1.toLowerCase() > item2.toLowerCase()? 1: 0) );

}

9

Ejercicio # 1: Más sencillo y limpio el código.
Código: [Seleccionar]
function cap53_ejercicioFinal1() {

    var miArrayOriginal = [33, 2, 36, 55, 4, 1];
    var copiaArrayOriginal = miArrayOriginal;

    var MenorAMayor = copiaArrayOriginal.sort(function (elem1, elem2) {return elem1 - elem2;}).join(', ');
    var MayorAMenor = copiaArrayOriginal.reverse().join(', ');

    var msg = 'El array original es: [' + miArrayOriginal.join(', ') + ']\n';
    msg += 'Ordenado de mayor a menor es: [' + MayorAMenor + ']\n';
    msg += 'Ordenado de menor a mayor es: [' + MenorAMayor + ']\n';

    alert(msg);

}

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".