Prácticas y Ejercicios de Programación en C – Resolución de una Serie.

Prácticas y Ejercicios de Programación en C – Resolución de una Serie.

No. 57 de 57 de articulos. Practicas C

El ejercicio y práctica de programación en lenguaje C con solución que se propone, es el siguiente:

Realizar una práctica de programación que resuelva la siguiente serie, mediante un bucle for.

Serie: 10,-9,8,-7,6,-5,4,-3,2,-1

Una forma de resolución simple, y como se puede observar en la serie, es que la misma es decreciente de 10 a 1, y simplemente se alterna el valor del signo del número que se visualiza. Teniendo en cuenta esto una posible solución, puede ser la siguiente.

// Crear un ejecicio de programación resuelto con el lenguaje de programación C
// que visualice la siguiente serie.
// 10, -9, 8, -7, 6 ,-5, 4, -3, 2, -1
// www.aprendoencasa.com
// Ejercicios y practicas de programación resueltas en lenguaje C

#include <stdio.h>
#include <stdlib.h>

int main()
{

    // el primer metodo de resolución que se puede aplicar para solucionar el
    // ejercicio o practica de programación que se plantea se puede deducir, viendo
    // la serie, como se puede apreciar la serie empieza en 10 y termina en el valor
    // 1, alternando numeros positivos y negativos, para resolverlo se puede utilizar
    // un bucle de tipo for.
    int contador = 0;
    int signo = 1;
    
    for(contador=10;contador>0;contador--) {
        printf("%d ,",contador*signo);
        signo*=-1;
    }

    return 0;
}

 

El ejercicio anterior al ejecutar el mismo ha de producir una salida, similar a la que se muestra en la imagen siguiente.

 

Bucles – While

Bucles – While

No. 12 de 12 de articulos. JavaScript

El siguiente tipo de bucle que se comenta, es el bucle while, el cual se puede traducir por mientras. La sentencia tiene la siguiente sintaxis en JavaScript.

// Ejercicios de programación JavaScript
// sintaxis del bucle condicional while

while( condicion ) {
  acción/es...;
  acción/es...;
}

El funcionamiento del bucle se puede interpretar de la siguiente forma. En primer lugar al entrar al bucle se evalúa la condición, y en caso de que la misma de una evaluación positiva se ejecutan las instrucciones contenidas en el ámbito del bucle, una vez ejecutadas las sentencias del bucle se vuelve a evaluar la condición repitiéndose de nuevo el ciclo.

La diferencia entre el bucle while y el bucle do…while, es que en el primero se evalúa la condición y en caso de no cumplirse no se realiza ninguna acción, mientras que en el segundo como mínimo se ejecutan una vez las acciones interiores del bucle.

El primer ejercicio que se propone con solución en JavaScript, es realizar un bucle que visualice los números del 1 al 10, en orden creciente y decreciente a la vez.

// Ejercicios de programación en JavaScript
// http://www.aprendoencasa.com

var numero = 1;
while( numero < 11 ) {
  console.log( numero + " - " + (11-numero) );
  numero++;
}

 

Una vez ejecuta el programa el resultado que se ha de obtener en la consola del navegador, ha de ser similar al que se muestra en la imagen siguiente.

El siguiente ejercicio que se propone es indicar un numero entero y realizar el desglose del mismo por dígitos, es decir mostrar millares, centenas, decenas, etc. Utilizando para realizar el ejercicio bucles de tipo while.

// Ejercicios de programación en JavaScript
// Desglosar valor numerico en millares, decenas, etc.
// http://www.aprendoencasa.com


var numero = 123456;
while( numero>0 ) {
  resto = numero%10;
  numero = parseInt(numero/10);
  console.log(resto);
}

 

Una vez que se ha ejecutado el programa, el resultado que se ha de obtener en la consola del navegador, ha de ser similar al que muestra en la imagen siguiente.

Bucles – for … in

Bucles – for … in

No. 11 de 12 de articulos. JavaScript

El siguiente bucle que se va a comentar es, el bucle for…in, se podría definir como un bucle incondicional, ya que no utiliza una condición para su funcionamiento.

El bucle se podría traducir por Para…En. Y tiene la siguiente sintaxis.

// Bucle for...in

for(var variable in objeto) {
  Acción/es...;
  Acción/es...;
}

El funcionamiento del bucle seria el siguiente, al entrar al bucle se define una variable, normalmente con var, de esta forma la variable queda disponible de forma local a toda la función donde se encuentra el bucle, a continuación se especifica el objeto sobre el cual se quiere realizar la iteración, en cada iteración se lee una de las propiedades del objeto y el nombre de la misma es asignado a la variable definida anteriormente, el bucle finaliza cuando no encuentra más propiedades que leer del objeto.

El siguiente ejemplo muestra el funcionamiento del bucle for…in, visualizando el nombre de todas las propiedades de un objeto definido previamente.

// Declaración de objeto
var objeto = new Object();

// Declaración de propiedades del objeto
objeto.propiedad1 = "valor_propiedad_1";
objeto.propiedad2 = "valor_propiedad_2";
objeto.propiedad3 = "valor_propiedad_3";
objeto.propiedad4 = "valor_propiedad_4";

// Iterar sobre todas las propiedades del objeto

for ( var leepropiedad in objeto ) {
  console.log(leepropiedad);
}

Al ejecutar el programa, el resultado que ha de mostrar el navegador en su consola, ha de ser similar al que se muestra a continuación. Como se puede apreciar se muestra el nombre de la propiedad y no el valor de la misma.

 

A continuación se visualiza otro ejemplo de utilización del bucle, en el que se itera sobre todas las propiedades del objeto, mostrando su nombre y valor.

// Declaracion del objeto
var coche = new Object();

// Declaracion de propiedades del objeto
coche.numero_ruedas = 4;
coche.color = "rojo";
coche.combustible = "diesel";
coche.ocupantes = 2;
coche.marca = "cualquiera";
coche.modelo = "indiferente";

// Bucle for...in que itera sobre todas las propiedades
// del objeto mostrando en esta ocasión el nombre de la
// propiedad y su valor.

for(var propiedad in coche) {
  console.log(propiedad + " = " + coche[propiedad]);
}

 

Bucles – Do … While

Bucles – Do … While

No. 10 de 12 de articulos. JavaScript

Después de haber utilizado el bucle For (“Para”), a continuación, se describe el primero de los bucles denominados condicionales, ya que dependen de que una condición se cumpla para repetir las acciones que en ellos se especifican.

Este bucle es el denominado do…while, el cual se puede traducir por haz…mientras, el bucle tiene la siguiente sintaxis.

do {
  Acción/es…;
  Acción/es…;
} while ( condición_a_evaluar );

El funcionamiento del bucle seria el siguiente, el flujo del programa entra en el bucle y ejecuta una vez las acciones que se especifican dentro del bloque, cuando haya ejecutado las acciones se evalúa la condición especificada, y en caso de cumplirse se vuelve a repetir el conjunto de acciones, en caso contrario se da por finalizada la ejecución del bucle.

Teniendo en cuenta la sintaxis anterior realizar un ejercicio en el cual se muestren los valores de 1 a 10.

// Ejercicios y prácticas de programación en JavaScript
// Crear variables auxiliares
var contador=0;
// Inicializar el contador 
contador=1;
// repetir mientras que el contador tenga
// un valor inferior a 10
do {
  // visualizar el valor de contador
  console.log(contador);
  // incrementar contador en una unidad
  contador=contador+1;
} while(contador<11);

// Se ha de tener en cuenta que el no incrementar
// el contador puede tener como consecuencia
// la ejecución de un bucle infinito y por tanto
// el bloqueo del programa.
// Gracias por su visita a www.aprendoencasa.com

El resultado que se ha de obtener en la consola del navegador ha de ser similar al que se muestra a continuación.

¡¡ Otro ejercicio con más dificultad !!, no desesperéis si no os sale, intentar realizar ejercicios más simples, hasta lograr entender el que se os plantea a continuación. Recordar que, para un programador, la paciencia y constancia no son virtudes, ¡son obligaciones! 🙂

El ejercicio que se plantea es rellenar una lista de un formulario con los números del 1 al 20 y traspasar a otra lista los números primos de la primera lista.

Para realizar estas acciones se han insertado tres botones, uno que genera los números del 1 al 20 en la primera lista, un segundo botón que permite borrar los números generados de la primera lista y por último otro botón que lee los números de la primera lista y traspasa a la segunda solo aquellos que sean primos.

<!DOCTYPE HTML>
<html>
<head>
  <title>Bucle Do...While</title>
  <meta charset="utf-8">
  <meta name="author" content="josé sáez">
  <meta name="generator" content="www.aprendoencasa.com">
  <link rel="stylesheet" type="text/css" href="estilos.css">
</head>
<body>
<!-- titulo -->
<h3>Bucle Do...While</h3>
<!-- formulario -->
<form action="#" name="formulario1" id="formulario1">
    <!-- seccion izquierda con lista de números -->
    <section class="izquierda">
        <label for="lista1">Lista con números generados</label>
        <br>
        <select name="lista1" id="lista1" size="20"></select>
    </section>
    <!-- seccion central con los botones de acción -->
    <section class="centro">
        <button id="generar_numeros" name="generar_numeros" id="generar_numeros">Generar Números</button>
        <button id="borrar_lista" name="borrar_lista" id="borrar_lista">Borrar Lista</button>
        <button id="generar_primos" name="generar_primos" id="generar_primos">Generar Primos</button>
    </section>
    <!-- sección derecha con la lista de números primos -->
    <section class="derecha ultimo">
        <label for="lista2">Lista con números primos</label>
        <br>
        <select name="lista2" id="lista2" size="20"></select>
    </section>
    <div class="limpiar"></div>
</form>

<!-- cargar archivo de javascript -->
<script src="principal.js"></script>
</body>
</html>
/*
    Incluir fuentes de google
*/
@import url('https://fonts.googleapis.com/css?family=Sansita');


/* fuente para todo el documento */
body {
    font-family: 'Sansita', sans-serif;
}

/* Formulario */
body form {
    width: 90%;
    margin: 0 auto;
    padding: 1%;
    box-sizing: border-box;
    border: 1px solid grey;
    box-shadow: 2px 2px 2px rgba(0,0,0,0.5);
}

/* Sección izquierda del formulario */
.izquierda, .centro, .derecha {
    box-sizing: border-box;
    float: left;
    margin-right: 5%;
    width: 30%;
}

label {
    margin-bottom: 5px;
    display: block;
    text-align: center;
}

select {
    width: 100%;
    background-color: #66CC99;
    color: #ffffff;
}

button {
    border: none;
    background-color: #0099CC;
    padding: 5px;
    width: 100%;
    color: #ffffff;
    height: 40px;
    margin: 5px;
}

.ultimo {
    margin-right: 0px;
}




.limpiar {
    clear: both;
}
/*
    Bucle do ... while ejercicios y prácticas de programación aprendoencasa.com
*/

window.onload = function() {
    document.getElementById("generar_numeros").addEventListener("click",function(e){
        e.preventDefault();
        var lista = document.getElementById("lista1");
        lista.options.length = 0;
        var contar=1;
        do {
            let opcion = document.createElement("option");
            opcion.text = contar;
            lista.add(opcion);
            contar=contar+1;
        } while(contar<=20);
    });
    document.getElementById("borrar_lista").addEventListener("click",function(e){
        e.preventDefault();
        var lista = document.getElementById("lista1");
        lista.options.length = 0;
    });
    document.getElementById("generar_primos").addEventListener("click",function(e){
        e.preventDefault();
        let listap = document.getElementById("lista1");
        let listas = document.getElementById("lista2");
        let cuantoslistap = listap.options.length;
        if(cuantoslistap>0) {
            let contar=0;
            do {
                let numero = 0;
                numero = listap.options[contar].text;
                let divisor_inicial = 2;
                let divisor_final = numero;
                let divisores = divisor_inicial;
                let primo = "si";
                for(let d = divisor_inicial; d < divisor_final && primo=="si" ; d++ ) {
                    if( numero%d == 0 ) {
                        primo="no";
                    }
                }
                if(primo=="si") {
                    let opcion = document.createElement("option");
                    opcion.text = numero;
                    listas.add(opcion);
                }
                contar++;
            } while(contar<cuantoslistap);
        }
    })
}

 

Bucles – For

Bucles – For

No. 9 de 12 de articulos. JavaScript

Uno de los procedimientos más utilizados en cualquier lenguaje de programación es la utilización de bucles. Un bucle es la repetición de un conjunto de sentencias, un numero determinado de veces o su repetición mientras se cumpla una condición.

En varios lenguajes de programación se establecen diferencias entre las diferentes sentencias para realizar bucles, distinguiéndolas principalmente en bucles condicionales y bucles incondicionales.

En JavaScript no se aprecia tal distinción ya que las sentencias que sirven para realizar iteraciones, tienen todo un factor de condición.

Aun así, es conveniente saber aplicar un tipo u otro y esto dependerá en gran medida de que se sepa el principio y final de un bucle, o el bucle dependa de una condición. Dependiendo de esta medida a tomar se utilizará una sentencia u otra.

La primera sentencia para realizar bucles, es el bucle denominado For (“Para”), el cual tiene la siguiente sintaxis:

for ( variable = valor_inicial ; condición_a_evaluar ; incremento ) {
     acción/es a realizar ;
     acción/es a realizar ;
};

 

El funcionamiento de la sentencia For, es el siguiente, cuando el flujo del programa entra en el bucle, se asigna en primer lugar “valor_inicial”, a la “variable” especificada, a continuación se realiza la evaluación de la condición especificada en “condición_a_evaluar”, si la condición se cumple, es decir es verdadera se ejecutan las acciones especificadas dentro del bloque correspondiente al bucle, otra forma de expresarlo es que se ejecutan las ordenes que estén situadas entre las llaves { } del bucle, una vez ejecutadas las sentencias del bloque, se aplica a “variable” el incremento especificado por “incremento” y se vuelve a evaluar la condición, repitiéndose el proceso de nuevo si es verdadera y finalizando la ejecución del bucle en caso de ser falsa.

A este tipo de bucle se les denomina incondicionales, aunque como se ha comentado anteriormente tengan condición, y normalmente se han de utilizar cuando se conoce el principio y el final de repetición del bucle.

Teniendo en cuenta la sintaxis anterior, el siguiente ejercicio práctico con solución, plantea un algoritmo que visualice los números del 1 al 10.

/*
  Algoritmo que visualiza los números del 1 al 10
*/

var numeros = 0;
for( numeros = 1 ; numeros < 11 ; numeros++ ) {
    console.log(numeros);
}

/*
  Algoritmo que visualiza los números del 10 al 1
*/

for (let contar = 10 ; contar > 0 ; contar-- ) {
    console.log(contar);
}

/*
  Ejercicios y prácticas de programación en JavaScript
  Gracias por visitar www.aprendoencasa.com
*/

 

 

Poco a poco iremos incrementado la dificultad de los ejercicios y es por eso que intercalaremos explicaciones de otros temas. En esta ocasión el bucle For, que hemos utilizado en el ejemplo anterior, utiliza para aplicar el incremento de valor a la unidad el operador ++.

Se puede utilizar para incrementar o decrementar el valor de la variable el operador unario “Incremento” ( ++ ), y el operador unario “Decremento”.

La función del operador ++ es la de aumentar en una unidad el valor del operando, dependiendo de donde se situa respecto al operando se denomina preIncremento o posIncremento. Observe el siguiente ejemplo:

/*
  Ejemplo práctico operador Incremento y Decremento
*/
var NumeroA = 10;
var NumeroB = 10;
var NumeroC = 0;
var NumeroD = 0;
NumeroC = NumeroA++;
NumeroD = ++NumeroB;
console.log("A = "+NumeroA);
console.log("B = "+NumeroB);
console.log("C = "+NumeroC);
console.log("D = "+NumeroD);

El resultado una vez ejecutado en el navegador es el siguiente.

Como se puede ver en el ejemplo la variable “NumeroC”, contiene como valor 10, esto es mientras que el resto contiene como valor 11, es debido a que se ha utilizado el operador como postincremento y por tanto primero se realiza en primer lugar la asignación y posteriormente se aumenta el valor de la variable “NumeroA”, en una unidad.

Volviendo a la sentencia For para realizar bucles, el incremento no necesariamente ha de ser de una unidad, ya que se puede utilizar el concepto de acumulador para el incremento, variable=variable+valor.

El siguiente ejemplo práctico muestra un ejercicio en el cual se realiza la visualización de los números pares entre 2 y 20.

/*
 Ejercicios y prácticas resueltas en JavaScript
 Sentencia For - Bucles
 www.aprendoencasa.com
 
 Ejercicio: Visualizar los números pares entre 2 y 20
 
*/

for(let numero=2; numero<=20 ; numero=numero+2 ) {
  console.log( numero );
}

El resultado en el navegador ha de ser el siguiente.

El siguiente ejercicio resuelto que se muestra solicita mediante un formulario html, los valores de inicio y final del bucle for, y visualiza como quedaría el bucle generado y el resultado que se obtendría del mismo.

 

<!DOCTYPE HTML>
<html>
<head>
  <title>Bucle For - Javascript</title>
  <meta charset="utf-8">
  <meta name="author" content="José Sáez">
  <meta name="generator" content="www.aprendoencasa.com">
  <link rel="stylesheet" type="text/css" href="estilos.css">
</head>
<body>
    <!-- Titulo -->
    <h3>Bucle For - Javascript</h3>
    <!-- Parrafos explicación -->
    <p>Ejercicios y prácticas de programación en JavaScript con solución</p>
    <p>El siguiente ejercicio muestra el uso del bucle For en JavaScript permitiendo la introducción de los valores iniciales y finales del bucle, mostrando el resultado en el navegador.</p>
    <!-- Formulario de petición de datos -->
    <form action="#" name="formulario1" id="formulario1">
        <label for="Inicio">Inicio</label><br>
        <input type="text" name="Inicio" id="Inicio" /><br>
        <label for="Final">Final</label><br>
        <input type="text" name="Final" id="Final" /><br><br>
        <!-- Botones -->
        <button id="generar" name="generar">Generar</button>
        <button id="ejecutar" name="ejecutar">Ejecutar</button>
    </form>
    <br>
    <!-- Ventana previsualización Orden -->
    <label for="generado">Previsualizar Sentencia</label><br>
    <textarea name="generado" id="generado" cols="60" rows="5" readonly></textarea>
    <br>
    <!-- Ventana previsualización resultado -->
    <label for="resultado">Resultado</label><br>
    <textarea name="resultado" id="resultado" cols="60" rows="5" readonly></textarea>
    <!-- Inserción de script javascript -->
    <script src="principal.js"></script>
</body>
</html>

 

/*
    FUENTES GOOGLE FONTS
    ====================
    Importar fuentes del servidor google
*/

@import url('https://fonts.googleapis.com/css?family=Sansita');
@import url('https://fonts.googleapis.com/css?family=PT+Sans');
@import url('https://fonts.googleapis.com/css?family=Nova+Mono');


/* Establecer la fuente del titulo */
body h3 {
    font-family: 'Sansita', sans-serif;
}

/* Establecer la fuente de los parrafos */
body p {
    font-family: 'PT Sans', sans-serif;
}


/* Establecer estilos para el area de texto de previsualizacion de la sentencia For */
#generado {
    background-color: #EEEEEE;
    color: #ffffff;
    font-family: 'Nova Mono', monospace;
}
/*
    Funcion a ejecutar al cargar la página
*/
window.onload = function() {
    /* Asignar evento al botón generar sentencia */
    document.getElementById('generar').addEventListener("click",function(e){
        e.preventDefault();
        var areagenerado = document.getElementById("generado");
        areagenerado.innerHTML = "for (let x = "+document.getElementById("Inicio").value +
        " ; x <= "+document.getElementById("Final").value + " ; x++) {\n" +
        " console.log( '-' + x  );\n" +
        "}";
    });
    /* Asignar evento al botón generar previsualización */
    document.getElementById("ejecutar").addEventListener("click",function(e){
        e.preventDefault();
        var arearesultado = document.getElementById("resultado");
        var mensaje = "";
        var inicio = document.getElementById("Inicio").value;
        var final = document.getElementById("Final").value;
        for(let x=inicio; x<=final; x++) {
            mensaje=mensaje+"-"+x;
        }
        arearesultado.innerHTML = mensaje;
    });
}

 

j

Ejercicio 1 - Bucle For

Realizar un ejercicio que visualice los números del 1 al 10 en orden inverso.

j

Ejercicio 2 - Bucle For

Vamos a complicar los ejercicios. Realizar un ejercicio en el cual se visualice una cuenta de 1 a 10, y a la vez, una cuenta inversa de 10 a 1.

j

Ejercicio 3 - Bucle For

Más complicación!!, realizar un ejercicio en el cual se visualicen los números primos del 1 al 20.

Control de Flujo – Switch

Control de Flujo – Switch

No. 8 de 12 de articulos. JavaScript

La sentencia switch al igual que la anterior sentencia “si condicional” permite realizar ciertas acciones dependiendo del valor y evaluación de una variable. Es decir, realiza la comprobación del valor de una variable y según su valor ejecuta unas ordenes u otras.

La sintaxis que se ha de utilizar para la sentencia switch, es la siguiente.

switch ( variable_a_evaluar ) {
  case Valor :
    acción/es a realizar …;
    break;
  case Valor :
    acción/es a realizar …;
    break;
  default:
    acción/es a realizar;
    break;
}

Para comprender su funcionamiento mejor, vamos a plantear un caso en el cual se solicita el “estado civil” de una persona, las opciones posibles serán “casado”, “separado”, “soltero” y “viudo”, a las distintas opciones le asignaremos un valor a cada una desde 1 a 4, y la sentencia switch ha de evaluar el valor y según cual sea visualizar un mensaje u otro. El ejercicio planteado podría ser el siguiente.

var estadocivil = 1;
switch ( estadocivil ) {
case 1:
    document.write(“El  usuario/a está casado/a”);
    break;
  case 2:
    document.write(“El usuario/a está separado/a”);
    break;
  case 3:
    document.write(“El usuario/a está soltero/a”);
    break;
case 4:
    document.write(“El usuario/a está viudo/a”);
    break;
default:
    document.write(“El usuario/a  no ha tecleado una opción válida”);
    break;
}

 

La sentencia “break”, que incluye cada grupo de instrucciones, hace que el programa solo ejecute las acciones que corresponden al valor evaluado, si se omite el programa continuara ejecutando las sentencias de los diferentes casos expresados en la sentencia switch.

Aprovechando esta circunstancia, se puede utilizar “break” o no para examinar “rangos” de valores, supongamos que se quiere realizar un programa en el cual se solicita un valor de 1 a 10 y dependiendo de si el valor introducido es de 1 a 4, el descuento de un artículo será del 2%, si es de 5 a 8 será del 3% y si es de 9 a 10 será del 4%. Teniendo en cuenta los parámetros anteriores puede quedar así su programación.

var tipo = 7;

switch( tipo ) {
  case 1:
  case 2:
  case 3:
  case 4:
       descuento = 2/100;
       break;
  case 5:
  case 6:
  case 7:
  case 8:
       descuento = 3/100;
       break;
  case 9:
  case 10:
       descuento = 4/100;
       break;
  default:
       descuento = 0;
       break;
}

 

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies