Basic programming course: Lesson #5 Control structures. Part 2. Cycles.

SEC-S20W3 (2).png
Portada diseñada en Canva

Explique los ciclos de forma detallada. Que son y como se usan?

En esta oportunidad estaremos desarrollando el tema de ciclos o estructuras de control repetitivas, las cuales se utilizan con el fin de ejecutar un conjunto de instrucciones varias veces en función del resultado de la evaluación de una expresión relacional y/o lógica.

Para que las estructuras de control repetitivas funcionen, se necesitan de dos tipos de variables, estas son:

Contador

Un contador es una variable de tipo entero, la cual aumenta o disminuye su valor de forma constante, generalmente es de uno en uno (+1) pero tambien el programador es quien asigna el valor en el cual se realizara el conteo. Las variables contadoras requieren ser inicializadas.

Este tipo de variables se utilizan para contar la cantidad de veces que se ejecuta una acción o bien sea, para contar el número de veces que se cumple una condición, entre otras cosas.

Sintaxis

 contador = contador + constante
 //Ejemplo:
 contador = contador + 1

Acumulador

Un acumulador es una variable numérica que puede ser de tipo entero o real, que durante la ejecución de un programa va sumándose o restándose así misma valores contenidos en otras variables, logrando acumular la sumatoria o resta de todos ellos en una sola variable.

Es decir, que un acumulador es utilizado para ir acumulando los resultados sucesivos obtenidos en un ciclo o bucle. Las variables acumuladoras requieren ser inicializadas.

Sintaxis

   acumulador = acumulador + variable
   //Ejemplo:                                                         
   acumulador = acumulador + X

Ciclo mientras

El ciclo o estructura repetitiva mientras permite ejecutar una o varias líneas de código de forma repetitiva siempre y cuando se cumpla una condición especifica o su evaluación sea verdadera. Si por el contrario, la evaluación de la condición es falsa el ciclo dejara de ejecutarse.

Esto quiere decir, que si la evaluación de una condición siempre es verdadera, el ciclo sera infinito, ya que la única forma de interrumpir el ciclo es cuando el resultado de la evaluación de la condición es falso. Este es un detalle muy importante a considerar al momento de crear nuestro programa.

Sintaxis:

    mientras <condición de finalización> hacer 
         ....
        Bloque de Instrucciones....
        <instrucción 1>
        <instrucción 2>
         ....
    FinMientras

Ejemplo:

En este programa se utiliza un contador (c) y un acumulador (a) y se utiliza la estructura mientras para hacer el conteo de números de 5 en 5, y se establece que la condición para que se realice el ciclo mientras que c <= 3, es decir, que este ciclo solo se repetirá 3 veces.

Por lo que las instrucciones a ejecutar es el mostrar en pantalla el valor del contador y el valor del acumulador, el cual en cada ciclo ira sumando 5.

image.png

Al ejecutar el programa, podemos visualizar que se muestra el valor del contador y como el acumulador en cada ciclo va incrementando su valor de forma constante (+5) y cuando la evaluación de la condición da resultado falso, entonce se detiene el ciclo.

image.png


Ciclo Hacer-Mientras:

Hacer mientras es una estructura repetitiva que se ejecuta hasta que la evaluación de una condición sea verdadera. La evaluación de dicha condición se realiza al final del ciclo, es decir que el bloque de código o las instrucciones se ejecutarán por lo menos una vez.

En este caso, se ejecutarse un bloque de instrucciones que forma el cuerpo del ciclo y luego se evalúa la condición, si el resultado es falso, el bloque de instrucciones se ejecutara nuevamente y se volverá a evaluar la condición. En el momento que el resultado de la evaluación de la condición sea verdadero se detendrá el ciclo.

Sintaxis:

 Repetir
        <instrucciones>
  Hasta Que <condición>

Ejemplo:

Podemos ver que se inicializa un contador (c) con un valor de 1 y se utiliza un ciclo Repetir, en el cual se va a imprimir el valor del contador (c) y se establece la condición hasta que c>5, esto quiere decir que el ciclo se detendrá cuando el valor del contador sea mayor que 5.

Es por ello que al ejecutar nuestro programa, se muestra en pantalla los números del 1 al 5.

image.png

Ahora bien, vemos este otro ejemplo, en el que nuestro contador se inicializa con un valor de 6, asi que se da inicio al ciclo y se cumple la instrucción de imprimir el valor de (c), pero al evaluar la condición y dar como resultado que es verdadero que c>5 y por ende se detiene el ciclo. Aquí queda demostrado que esta estructura de control, permite la ejecución por lo menos una vez de las instrucciones que componen este ciclo.

image.png

¿Cual es la diferencia del ciclo Mientras y Hacer-Mientras?

Amabas estructuras funcionan de forma bastante similar, la mayor diferencia que existe entre ambas, es que la estructura repetitiva mientras evalúa la condición antes de ejecutar el bloque de código o instrucciones, y si el resultado es Falso, se detiene el ciclo. Por otro lado, tenemos a la estructura repetitiva Hacer - mientras, la cual ejecuta un bloque de código por lo menos una vez y se realiza la evaluación de la condición o expresión al final del ciclo y este se detiene cuando el resultado de la condición es verdadero.

Investiga como se utiliza la estructura segun-caso y danos un ejemplo.

El según es una estructura de control que se utiliza para tomar decisiones en función del valor de una variable o expresión. Su principal función es la de seleccionar una acción específica de entre varias opciones posibles.

Ahora bien, se puede utilizar el según combinado con la sentencia «caso» para establecer distintas opciones, que pueden tomar las variables y las acciones que se deben ejecutar en cada caso.

Cada "caso" representara una opción diferente, y el programa ejecutará las instrucciones asociadas al "caso" que coincida con el valor de la variable.

Sintaxis

   segun (variable) hacer
        caso  opcion1:
        //  Bloque de código para opcion1
    break;
         caso opcion2:
        // Bloque de código para opcion2
        break;
    caso opcion3:
        // Bloque de código para opcion3
        break;
          ....
    De Otro Modo:
       // Bloque de código si ninguno de los casos coincide.
   finsegun

Ejemplo:

Vemos que podemos hacer uso de la estructura de control Según - caso para establecer diferentes opciones que ejecutan un bloque de instrucciones según sea el valor de una variable. En este caso, nuestra variable es día, y depende del valor introducido por el usuario, se mostrara en pantalla un mensaje diferentes para cada caso.

image.png

Vemos que al ejecutar nuestro programa, se solicita introducir el día de la semana. Al introducir "Martes" se nos muestra el mensaje: "Hoy es el segundo día de la semana" y este mensaje varia según el día que introduzca el usuario.

image.png

Vemos que esta estructura de control, permite reducir lineas de código y lograr un resultado mas rápido y de forma directa, ya que se pueden considerar múltiples opciones para una misma variable.

Explica lo que hace el siguiente código:

 Algoritmo seguncaso
        Definir  op, n, ns, a Como Entero;
        Definir exit Como Logico;
 
          exit = Falso;
          a=0;

          Repetir 
              Imprimir  "Selecciona una opcion:";
              Imprimir  "1. Sumar numeros.";
              Imprimir  "2. Mostrar resultados."
              Imprimir  "3. Finalizar programa."; 
              Leer op;
    
    Segun op Hacer
        caso 1:
            Imprimir "Cuantos numeros desea sumar?";
            Leer n; 
            Para i desde 1 hasta n Hacer
                Imprimir "Ingresa un numero: ";
                Leer ns; 
                a = a + ns;
            FinPara
            Imprimir "Completado! Presione cualquier tecla para continuar.";
            Esperar Tecla;
            Limpiar Pantalla;
        caso 2:
            Imprimir "Este es el resultado actual de las sumas: " a;
            Imprimir "Presione cualquier tecla para continuar.";
            Esperar Tecla;
            Limpiar Pantalla;
        caso 3: 
            Limpiar Pantalla;
            Imprimir "Bye =)";
            exit = Verdadero;
        De Otro Modo:
            Imprimir "Opcion invalida."; 
            Imprimir "Presione cualquier tecla para continuar.";
            Esperar Tecla;
            Limpiar Pantalla;
    FinSegun
    Hasta Que exit
    FinAlgoritmo

A continuación les comparto mi comprensión acerca de este programa en el cual se utilizan diferentes estructuras de control anidadas, como lo son segun-caso, Mientras: y hacer-Mientras.

En la primera partes del código, se declaran las variables que se utilizaran mas adelantes, estas son: op, n, ns, a y se declaran de tipo Entero.

Ademas, inicializa el contador **a=0 ** y una variable exit que es de tipo lógico, y con el valor "Falso" para terminar el ciclo.

 Algoritmo seguncaso
    Definir  op, n, ns, a Como Entero;
    Definir exit Como Logico;

    exit = Falso;
    a=0;

Luego se aplica una estructura de control hacer-Mientras, para que se realice un bloque de código hasta que al final se evalué la condición exit*, si esta da como resultado Verdadero, entonces se finaliza el ciclo.

Dentro de este ciclo se va a repetir las opciones que tendrá disponible el usuario para realizar, en este caso se presentan 3 opciones a elegir y la elección sera a través de un numero el cual se almacenara en la variable op.

  Repetir 
        Imprimir  "Selecciona una opción:";
        Imprimir  "1. Sumar números.";
        Imprimir  "2. Mostrar resultados."
        Imprimir  "3. Finalizar programa."; 
        Leer op;

Al ejecutar el programa, podremos visualizar las opciones disponibles:

image.png

Para hacer la comparación del valor almacenado en la variable OP, se utiliza la estructura de control segun-caso para establecer el bloque de código con las instrucciones a realizar en los 3 casos.

El primer caso es cuando el usuario selecciona la opcion1 que ofrece la posibilidad de sumar números, por lo que si esto pasa, entonces se mostrara un mensaje al usuario para que indique cuantos números desea sumar y este valor se almacenara en la variable (n).

Al tener este valor almacenado en la variable (n) entonces se utiliza la estructura de control Para, la cual permite la iteracion de un proceso de impresión, por lo que en este caso se establece que sera inicia desde 1 hasta el valor que tenga (n), por lo que se ejecutara la impresión del mensaje "Ingresa un numero" y el este numero se almacenara en la variable (ns), continua con el uso del acumulador (a) el cual va a ir sumándose a si mismo los valores introducidos por el usuario y de esta manera se cierra el ciclo.

Al terminar el ciclo, continua mostrando el mensaje :"Completado! Presione cualquier tecla para continuar."; y se procede a colocar las instrucciones para que al usuario presionar cualquier tecla se limpie la pantalla, se evalué la condición y comience el ciclo nuevamente y el usuario pueda elegir otra opción.

      Segun op Hacer
        caso 1:
            Imprimir "Cuantos números desea sumar?";
            Leer n; 
            Para i desde 1 hasta n Hacer
                Imprimir "Ingresa un numero: ";
                Leer ns; 
                a = a + ns;
            FinPara
            Imprimir "Completado! Presione cualquier tecla para continuar.";
            Esperar Tecla;
            Limpiar Pantalla;

Al seleccionar la opción 1, debemos introducir la cantidad de numero que deseamos sumar y luego tendremos que ir introduciendo dichos valores.

image.png

Continuamos con el caso 2, el cual corresponde a la opción 2, en la cual si el usuario hace esta selección se le mostrara el resultado de la suma realizada. Así que las instrucciones a ejecutar son:

Imprimir el mensaje "Este es el resultado actual de las sumas:" y mostrar el valor del acumulador (a) en el cual esta almacenada la sumatoria de los números introducidos por el usuario y al igual que para finalizar en el caso uno, se muestra el mensaje: Presione cualquier tecla para continuar y que se limpie la pantalla. Al hacer esto, se evalué la condición final si el resultado es falso se iniciara el ciclo nuevamente y el usuario pueda elegir otra opción.

     caso 2:
            Imprimir "Este es el resultado actual de las sumas: " a;
            Imprimir "Presione cualquier tecla para continuar.";
            Esperar Tecla;
            Limpiar Pantalla;

Vemos que al presionar una tecla volvemos nuevamente al menú de opciones y al seleccionar la opción dos, podemos visualizar la sumatoria de los números introducidos anteriormente cuando seleccionamos la opción 1.

image.png

Si la opción que elige el usuario es la 3, entonces se procede a ejecutar el bloque de código del Caso 3, el cual permite finalizar programa. La instrucción a ejecutar si el usuario introduce el numero 3, es limpiar la pantalla y que se muestre el mensaje "Bye" y se le asigna el valor Verdadero a la variable exit para que al evaluarse la condición, se pueda finalizar la repetición del ciclo.

   caso 3: 
            Limpiar Pantalla;
            Imprimir "Bye =)";
            exit = Verdadero;

Para continuar debemos presionar una tecla y al volver al menú de opciones y seleccionar la opción 3.

image.png

Vemos que inmediatamente se limpia la pantalla y nos aparece el mensaje "bye" y se finaliza el programa.

image.png

Finalmente se establecen las instrucciones De Otro Modo: la cual se ejecuta cuando se introduce un valor diferente a las opciones disponible, en este caso, se mostrara un mensaje indicando que se ha introducido una opción invalidad y se indica que presione una tecla para continuar y se procede a limpiar la pantalla, para continuar con el ciclo nuevamente, y se le da cierre a al ciclo segun.

    De Otro Modo:
            Imprimir "Opcion invalida."; 
            Imprimir "Presione cualquier tecla para continuar.";
            Esperar Tecla;
            Limpiar Pantalla;
    FinSegun

Si por alguna razón, introducimos un valor diferente a las opciones disponibles, inmediatamente nos aparece el mensaje indicándonos que la opción introducida es invalidad y al presionar cualquier tecla volveremos al menú de opciones.

image.png

Ya solo queda establecer la condición que le dará cierre al ciclo de repetición principal, el cual se ejecutara hasta que la variable de tipo lógicaexit tenga un valor verdadero.

   Hasta Que exit
   FinAlgoritmo

Escriba un programa en pseudo-codigo que pida al usuario un numero mayor que 10 (Hacer-Mientras), después sume todos los números con un acumulador (Mientras) Ejemplo: El usuario introduce 15. El programa suma 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15.

Comencé estableciendo el nombre de mi algoritmo al cual le asigne el nombre de tarea_s20w5.

Luego con la declaración de las variables a utilizar que son (num) en donde se almacenara el valor que introduzca el usuari y una variable que funcione como acumulador ( acum) y un contador (cont) estas son de tipo entero,.

    Algoritmo tarea_s20w5
    Definir num, acum, cont como entero;

Siguiendo con las indicaciones dadas en esta tarea, utilice la estructura de control Hacer-Mientras, para crear un ciclo en el cual se solicita al usuario que introduzca un numero mayor a 10, si esta condición no se cumple y su evaluación es falsa, es decir, que introduce un numero menor a 10, entonces se repetirá este ciclo hasta que el usuario introduzca un valor que sea mayor que 10.

   Repetir
    Imprimir "Introduzca un número mayor que sea mayor que 10:"
    Leer num
Hasta Que num > 10 

Al introducir un numero mayor a 10 se detiene el ciclo Hacer-Mientras y se continua con las siguientes instrucciones, la cual corresponde a una nueva estructura de control, solo que esta vez utilizare el ciclo Mientras, antes de abrir este ciclo, es necesario iniciar el acumulador en 0 y mi contador en 1.

Luego establezco la estructura de control repetitiva Mientras para que ejecute una serie de instrucciones. El ciclo se ejecutara mientras el contador sea igual o menor que el valor del numero introducido por el usuario (cont <= num), si esta condicion es evaluada y el resultado es verdadero, el acumulador va a ir sumando el valor del contador y a su vez el contador va a ir sumando de 1 en 1 mientras el ciclo va avanzando, este se detendrá, cuando el valor del contador supere el valor del numero introducido por el usuario.

Con esto se garantiza que a medida que se va repitiendo el ciclo partiendo de uno, cada vez se va a ir acumulando en el contador un numero mas, por lo que la suma va a ser en serie, es decir, 1+2+3+4 y así sucesivamente hasta que el contador supere el valor del numero introducido por el usuario, en este caso, la evaluación de la condición sera Falso y se detendrá el ciclo.

    acum = 0;
    cont = 1;
        
Mientras cont <= num Hacer
    acum = acum + cont 
    cont = cont + 1 
FinMientras

Para finalizar el programa, solo se debe mostrar el resultado de la sumatoria al usuario. Así que se mostrara un mensaje en el cual se anuncie el resultado de la sumatoria en serie de los números indicados por el usuario.

   Imprimir "La sumatoria total de los números del 1 al ", num, " es de:", acum;
                
   FinAlgoritmo

Al ejecutar nuestro programa podemos observar que el ciclo funciona y hasta que no se introduce un numero mayor a 10 no deja de repetir la misma instrucción, luego procede a mostrar la sumatoria de los números en base al numero introducido, en este caso, coloque 11.

y efectivamente la sumatoria de todos estos 11 numeros en serie da como resultado 66.

1+2+3+4+5+6+7+8+9+10+11 =66

image.png


Me gustaría invitar a @raqueluchap77, @leigth y @samantha10 para que participen en esta quinta lección del curso básico de programación.

Todas las imágenes utilizadas, fueron capturas de pantallas tomadas desde mi computadora - PSeInt

Sort:  

Upvoted. Thank You for sending some of your rewards to @null. It will make Steem stronger.

Loading...