Unidad 4
Estructuras de control
En esta unidad nos proponemos explicarte las estructuras de control elementales de un programa. Te presentaremos estructuras condicionales para la toma de decisiones, estructuras iterativas para realizar una acción varias veces y estructuras de selección para realizar alguna acción de acuerdo al valor de una variable.¿Comenzamos?
Estructuras de control condicionales
En los algoritmos presentados previamente te has familiarizado con las instrucciones del lenguaje seudocódigo para ingresar y mostrar datos y para asignar un valor a una variable.
Retomemos el algoritmo de la unidad anterior:
Algoritmo
CalcularPromedio
Definir
NOTA1, NOTA2, NOTA3 Como Entero
Definir
PROMEDIO Como Real
Escribir "Ingrese nota 1"
Leer
NOTA1
Escribir "Ingrese nota 2"
Leer
NOTA2
Escribir "Ingrese nota 3"
Leer
NOTA3
PROMEDIO <- (nota1+nota2+nota3)="" 3="">->Escribir "El promedio de notas es:", PROMEDIO
FinAlgoritmo
En todos los algoritmos que realizamos hasta ahora, como este ejemplo, seguramente habrás observado que, sin importar los valores de los datos o alguna condición en especial, siempre se ejecutaban todas las instrucciones.
Ahora bien, como en la vida diaria, donde por ejemplo ante el resultado de un promedio hay que decir si se aprobó o no, en los algoritmos también nos encontramos con estas situaciones. Hay momentos donde, de acuerdo a una determinada situación, el programa deberá realizar alguna instrucción. Por lo tanto, tenemos la necesidad de contar con una herramienta que nos permita poder ejecutar o no, un grupo de acciones ante una situación. Para esto vamos a utilizar el condicional.
Condicional simple
Ahora, te proponemos un desafío:
Seguramente no tendrás problemas en entenderlo porque es muy claro y se corresponde con palabras de nuestro idioma.
VARIABLES
TEMPERATURA: REAL
INICIO
Mostrar (“Ingrese la temperatura”)
Ingresar (TEMPERATURA)
Si (TEMPERATURA < 20)="">
Mostrar (“Hace frío, no olvide llevar abrigo”)
FinSi
FIN
Analicemos un poco el ejemplo:
Lo primero que hace es mostrar al usuario que tiene que ingresar una temperatura, luego almacena ese valor en la variable TEMPERATURA.
La palabra “SI” da comienzo a la estructura condicional.
Inmediatamente después se encuentra la condición, en este caso TEMPERATURA < 20.=»» la=»» condición=»» podrá=»» evaluarse=»»>
VERDADERO:
Cuando el valor de la variable TEMPERATURA sea un n° menor a 20.
FALSO:
Cuando el valor de la variable TEMPERATURA no sea un n° menor a 20. Dicho de otro modo, cuando sea un valor mayor o igual a 20.
Luego de la condición se encuentra la palabra “entonces”, la cual forma parte de la estructura condicional. Luego de la palabra “entonces” se encuentra la acción que mostrará al usuario que debe llevar un abrigo. Y finalmente la estructura finaliza con una palabra “FinSi”.
A continuación, veamos cómo funciona el condicional simple…
¿Cómo funciona el condicional simple?
Al detectar la palabra “SI” el algoritmo procede a evaluar el valor lógico de la condición.
Si el valor es VERDADERO, el algoritmo ejecuta las acciones que se encuentran entre las palabras “entonces” y “FinSi”. Si, por otro lado, el valor de la condición es FALSO, el algoritmo salta a la palabra “FinSi” y continúa con las siguientes acciones.
La principal carácterística del condicional simple es que puede ejecutarse, o no, un grupo de acciones. Puede suceder que no se ejecute nada, en el caso de que el valor de la condición sea FALSO.
Seguramente recordarás los valores lógicos que te presentamos en la Unidad 3, donde abordamos las operaciones lógicas. Estas operaciones lógicas, junto con las variables booleanas, se utilizan en condiciones.
De forma genérica definimos un condicional simple de la siguiente manera:
Si (CONDICIÓN VERDADERA) entonces
Instrucción1
Instrucción2
................
InstrucciónN
FinSi
VER VIDEO: Te proponemos que veas el siguiente video para comprender mejor el funcionamiento de un Condicional Simple.
Condicional alternativo
Supongamos ahora la situación que se presenta en el siguiente ejemplo:
Este algoritmo nos permite saber si una persona es, o no, mayor de edad. Toda persona será mayor o menor de edad, pero no simultáneamente, es decir, que deberá ocurrir alguna de las dos situaciones, dependiendo de la edad. En el caso de definir la mayoría de edad a los 18 años, para saber si una persona es mayor se deberá evaluar la edad, y si es mayor o igual a 18 se podrá decir que es mayor de edad, en caso contrario se podrá decir que es menor de edad.
VARIABLES
EDAD: ENTERO
INICIOMostrar ("Ingrese su edad")
INGRESAR (EDAD)
Si (EDAD >= 18) entonces
Mostrar ("Es mayor de edad")
Sino
Mostrar ("Es menor de edad")
FinSi
FIN
Esta situación es lo que llamamos en programación condicional alternativo, ya que ocurrirá alguna de las dos situaciones alternativamente.
El funcionamiento del condicional alternativo es muy similar a un condicional simple, con la diferencia que acá tenemos dos grupos de acciones. Estos grupos se ejecutarán alternativamente de acuerdo al valor de la Condición.
Analizando el ejemplo, podemos comentar:
Lo primero que hace es mostrar al usuario que tiene que ingresar su edad, luego almacena ese valor en la variable EDAD.
La palabra “SI” da comienzo a la estructura condicional.
Inmediatamente después se encuentra la condición, en este caso EDAD >= 18.
Luego de la condición se encuentra la palabra “entonces”, que forma parte de la estructura condicional.
Luego de la palabra “entonces” se encuentra una acción para mostrar por pantalla la leyenda “Es mayor de edad”.
Luego se encuentra la palabra “sino” que marca el fin del bloque de acciones que comenzó con la palabra “entonces” y el inicio de otro bloque de acciones.
Luego de la palabra “sino” se encuentra una acción para mostrar por pantalla la leyenda “Es menor de edad”.
Y finalmente la estructura finaliza con una palabra “FinSi”.
A continuación, veremos cómo funciona el condicional alternativo.
¿Cómo funciona el condicional alternativo?
Al detectar la palabra “SI”, el algoritmo procede a evaluar el valor lógico de la condición.
La principal carácterística del condicional alternativo es que siempre se ejecutará un bloque de acciones. Si la condición es VERDADERA se ejecutará el bloque “entonces”, en cambio si la condición es FALSA se ejecutará el bloque “sino”.
De forma genérica definimos un condicional alternativo de la siguiente manera:
Si (CONDICIÓN) entonces
Instrucción1
....... Condición VERDADERA
InstrucciónM
Sino
InstrucciónN
...... Condición FALSA
InstrucciónP
FinSi
Continuamos con otros ejemplos…
Condicional alternativo: ejemplo «Algoritmo Calcular el Promedio»
Veamos ahora en el ejemplo que te presentamos al comenzar la unidad, cómo debería modificarse el algoritmo para que al calcular el promedio de 3 notas, informe si aprobó (promedio >= a 4) o desaprobó (promedio < a=»» 4).=»»>
Algoritmo CalcularPromedio
Definir NOTA1, NOTA2, NOTA3 Como Entero
Definir PROMEDIO Como Real
Escribir "Ingrese nota 1"
Leer NOTA1
Escribir "Ingrese nota 2"
Leer NOTA2
Escribir "Ingrese nota 3"
Leer NOTA3
PROMEDIO <- (nota1+nota2+nota3)="" 3="" escribir="" "el="" promedio="" de="" notas="" es:",="" promedio="" si="" promedio="">= 4 Entonces
Escribir "Aprobó la materio."
Sino
Escribir "Desaprobó la materia."
FinSi
FinAlgoritmo
->
VER VIDEO: Te proponemos que veas el siguiente video para comprender mejor el funcionamiento de un Condicional Alternativo.
Estructuras de control iterativas
En todos los ejemplos que vimos previamente las instrucciones se realizan una única vez.
En otras palabras, sería útil que hiciera lo mismo que hace para una persona, pero para muchas, de forma reiterativa.
Nuestro lenguaje seudocódigo nos permite controlar las repeticiones de distintas maneras y es por eso que a continuación veremos tres estructuras de control iterativas.
1. Ciclo Mientras
Ahora te proponemos que leas detenidamente el siguiente algoritmo y trates de averiguar qué es lo que hace. No te parecerá difícil ya que el seudocódigo es muy similar al idioma castellano.
INICIO
Mostrar (“Ingrese un número mayor a 0”)
Ingresar (NUM)
Mientras (NUM <= 0)="">=>
Mostrar (“Error. Ingrese un número. Deber ser mayor a 0”)
Ingresar (NUM)
FinMientras
Mostrar (“Ingresó el número:”,NUM)
FIN
Lo primero que realiza este algoritmo es mostrar una leyenda al usuario y luego queda a la espera de que ingrese un número por teclado.
Luego, se encuentra esta nueva estructura de control MIENTRAS, seguida de una condición.
De esta manera podemos explicar el modo de trabajar de la estructura Mientras.
Cuando se llega a una estructura Mientras, primero se evalúa la condición, en el caso de ser VERDADERA, se ejecutarán las acciones comprendidas en este bloque, que son aquellas que están hasta encontrar la palabra “FinMientras”.
En el caso de que la condición sea FALSA, se dice que “sale” del Mientras, dando por finalizado el ciclo iterativo, y continuando la ejecución luego del FinMientras.
La estructura genérica de un Mientras es la siguiente:
Mientras (CONDICIÓN) hacer
Instrucción1
............ Condición VERDADERA
InstrucciónN
FinMientras
Retomamos el ejemplo de la Unidad 1…
• Se evalúa primero la condición y luego se ejecuta el bloque, si corresponde.
• Cuando la condición es Verdadera se ejecutan las acciones del cuerpo del bucle.
• Cuando la condición es Falsa finaliza el bucle.
• El cuerpo del bucle puede no ejecutarse, en el caso de que la condición inicialmente sea Falsa. Por lo tanto, puede ejecutarse 0, 1 o más veces.
Ahora te pedimos que vuelvas al ejemplo que te planteamos en la Unidad 1, donde nuestro objetivo es ir de viaje por vacaciones.
Pensá qué tareas se podrían realizar repetidamente para lograr el objetivo… Nosotros te damos un ejemplo. Como todo viaje, necesita un presupuesto de dinero, y no podremos viajar hasta no tener el dinero suficiente, podríamos pensar en una estructura Mientras de la siguiente manera:
Mientras DINERO sea menor que el PRESUPUESTO trabajar para ganar dinero
Esta tarea de trabajar para ganar dinero finalizará cuando tengas el mismo DINERO (o más) que requiere el PRESUPUESTO, es decir, que funciona como un ciclo Mientras de nuestros algoritmos.
Veamos ahora otro ejemplo…
Retomamos el algoritmo de notas y promedios
Volvemos el algoritmo de las notas y de los promedios para continuar el análisis del algoritmo….
El programa sirve para determinar si aprobó o desaprobó un solo alumno. Seguramente estarás pensando que sería más interesante poder realizarlo para todo un curso. Para poder realizar ese cambio, necesitaremos de una estructura Mientras para poder iterar el proceso para cada alumno que ingrese el usuario. De este modo, agreguemos la posibilidad de que el usuario ingrese, además de las notas, el nombre del alumno, y que para finalizar ingrese un asterisco (*) como nombre.
El algoritmo nos quedaría de la siguiente forma:
Como habrás notado, encerramos todo el proceso que se realizó para 1 alumno, dentro de un ciclo Mientras, para poder hacerlo muchas veces. Pero…
VR VIDEO: Para finalizar, te proponemos que veas el siguiente video para comprender mejor el funcionamiento de una estructura Iterativa Mientras.
2. Ciclo Repetir
Veamos ahora qué sucede con este otro ciclo Repetir y para eso te proponemos reflexionar sobre el siguiente caso:
INICIO
Repetir
Mostrar (“Ingrese un número mayor a 0”)
Ingresar (NUM)
Hasta que (NUM > 0)
Mostrar (“Ingresó el número:”,NUM)
FIN
Es muy similar al caso anterior, pero cuidado, porque los pequeños cambios son realmente muy significativos y originan la diferencia de comportamiento entre el “Mientras” y el “Repetir”.
En el caso de que la condición sea FALSA, se realiza una nueva iteración del ciclo, es decir, que vuelve a repetir las acciones que se encuentran entre las palabras “Repetir” y “Hasta Que”. Si en cambio, la condición es VERDADERA, se da por finalizado el ciclo y continúa con la próxima acción.
La estructura genérica de un Repetir es la siguiente:
Repetir
Instrucción1
.......... Condición FALSA
InstrucciónN
Hasta que (CONDICIÓN)
Antes de continuar, repasemos las carácterísticas del Repetir:
¿Resolvemos el algoritmo de notas y promedios con un Repetir?
Como habrás notado en estos ciclos, tanto en el Mientras como en el Repetir, no sabemos previamente la cantidad de veces que se ejecutará.
Esta misma carácterística trae como consecuencia que si cometemos algún error en la programación, podremos hacer que un ciclo sea infinito, es decir, que no finalice ya que estará iterando siempre en el mismo ciclo. Para eso alcanzará con quitar la instrucción ingresar (NUM) del cuerpo del ciclo.
Este cambio provocará que el usuario no pueda volver a ingresar un número, por lo tanto, la variable nunca cambiará de valor, provocando que el ciclo se ejecute eternamente.
Esta condición es lo que se conoce como loop o ciclo infinito y es considerado como un error grave de programación, ya que el control del programa quedará repitiendo el ciclo y nunca podrá salir. De esta manera el programa nunca finalizará ni producirá el resultado esperado.
Dento de las tareas de pruebas que se realizan en el algoritmo se debe asegurar que todos los ciclos lleguen a un fin en algún momento.
Resumiendo..
Tanto en un Mientras como en un Repetir, hay que garantizar que alguna de las instrucciones del cuerpo del ciclo cambie el valor de verdad de la condición. De lo contrario el bucle no finalizará, provocando lo que se conoce como loop o ciclo infinito.
Ahora te proponemos repasar el ejemplo de los promedios de un curso, y realizarlo con un Repetir. Seguramente no tendrás dificultades para realizarlo.
Seguramente habrás notado que la principal diferencia con el Mientras, es que el Repetir se ejecuta por lo menos una vez.
Es por eso que siempre debemos ingresar un alumno, y luego habrá que indicar si tenemos o no más datos. A este funcionamiento se llega debido a que la condición se evalúa luego de haber ejecutado el cuerpo del ciclo.
VER VIDEO: Para finalizar, te proponemos que veas el siguiente video para comprender mejor el funcionamiento de una estructura Iterativa Repetir.
3. Ciclo Para
Veamos ahora otro ciclo, pero con carácterísticas distintas a los ciclos que te presentamos anteriormente.
¿Qué tal resultó el análisis?
VARIABLES
N : ENTERO
INICIO
Para N <- 1="" hasta="" 10="">->
Mostrar (N)
FinPara
FIN
Seguramente estarás pensando que se muestran los números del 1 al 10. Si es así, ¡felicitaciones! Porque este ciclo realiza precisamente eso.
Analicémoslo en profundidad para poder comprenderlo, ya que este ciclo es completamente distinto al “Mientras” y al “Repetir”.
En el ciclo Para se utiliza lo que se llama la variable del índice.
Esta variable tiene que estar definida como una variable de tipo Entero. En nuestro ejemplo, la variable de control es N. La variable de control se inicializa con el número 1 e irá tomando todos los valores enteros hasta llegar al número 10 ¿Cómo se realiza esta asignación?
Luego de inicializarse en 1 (su valor inicial), se ejecuta el cuerpo del ciclo, en este caso una sola acción que muestra el valor de N.
Luego de ejecutar el cuerpo del ciclo, se incrementa en uno el valor de N, es decir, que internamente se realiza una asignación N <- n=»» +=»»>->
El ciclo “Para” evalúa el valor de N y como todavía no llego a 10 (el valor final) vuelve a ejecutar el cuerpo del ciclo. Y así sucesivamente hasta que N alcanza su valor final.
Es importante destacar que el incremento de la variable del índice no se debe realizar en el algoritmo, ya que forma parte del funcionamiento de la estructura del “Para”.
Esta es una diferencia con respecto a los otros dos ciclos en donde debemos asegurarnos que la condición se modifique para poder finalizar.
¿Resolvemos el algoritmo de notas y promedios con un Para?
Otra carácterística de este ciclo Para es que nosotros sabemos cuántas veces se va a ejecutar el ciclo, ya que debemos especificar el valor inicial y final que tendrá la variable del ciclo.
En el ejemplo que vimos en la sección anterior,
Se ejecuta diez veces, ya que N toma los valores desde 1 hasta 10
La estructura genérica de un Para es la siguiente:
Destacamos algunas carácterísticas del Para:Para N <- valorinicial="" hasta="" valorfinal="">->
Instrucción1
.........
InstrucciónN
FinPara
• ValorInicial y ValorFinal deben ser variables o expresiones de tipo entero.
• ValorInicial debe ser menor o igual a ValorFinal para que el ciclo se ejecute, de lo contrario no se ejecutará.
• La cantidad de veces que se ejecuta un ciclo “Para” es ValorFinal – ValorInicial +1.
• Dentro del cuerpo del ciclo es un error grave modificar el valor del índice o bien del ValorInicial o del ValorFinal.
Ahora, hagamos una modificación al algoritmo ya conocido de las notas. El cambio será que, al comenzar el programa, le preguntaremos al usuario cuántos alumnos quiere ingresar. Y de ese modo realizaremos el ciclo la cantidad de veces que nos diga el usuario, ¿te animás a proponer el algoritmo?
VER VIDEO: Para finalizar, te proponemos que veas el siguiente video para comprender mejor el funcionamiento de una estructura Iterativa Para.
Estructuras de control selectiva
Ahora te presentaremos la última estructura de control de esta unidad, con la que podrás evaluar el valor de una variable y seleccionar distintos caminos de ejecución. Esta acción forma parte de una estructura condicional también llamada “múltiple”, pero la vemos en una sección aparte porque presenta muchas carácterísticas especiales.
Estructura Según
Te presentamos un ejemplo para que lo analices y puedas determinar qué es lo que hace:
VARIABLES
Opción : ENTERO
INICIO
Mostrar (“Ingrese su opción”)
Ingresar (Opción)
Según (Opción) Hacer
Caso 1: Mostrar (“Selecciónó opción 1”)
Caso 2: Mostrar (“Selecciónó opción 2”)
Caso 3: Mostrar (“Selecciónó opción 3”)
FinSegún
FIN
En este ejemplo habrás notado que el dato de entrada es uno solo (en este caso se llama opción pero podemos asignarle el nombre de variable que queramos), y podrá tener múltiples valores o alternativas a seguir. De esta forma, se evalúa el valor ingresado y dependiendo de ese valor será el conjunto de instrucciones que se van a ejecutar.
En el algoritmo que te presentamos, Opción deberá ser una variable de tipo ENTERO. Se evalúa el valor de la variable Opción.
Si el valor es 1 se mostrará “Selecciónó opción 1” y luego el control pasa al “FinSegún”, continuando con la ejecución de la siguiente instrucción.
En cambio, si el valor de Opción es 2, se mostrará “Selecciónó opción 2”. Y, si en cambio, el valor es 3 se mostrará “Selecciónó opción 3”.
De esta forma podemos, en este ejemplo, tomar tres caminos distintos ante la evaluación de una variable.
La instrucción “Según” se utiliza cuando tenemos que decidir entre más de dos alternativas de acuerdo al valor de una sola variable, de esa manera es mucho más práctica que el uso anidado de sentencias Si – Sino – Finsi.
¿Cómo funciona la estructura «Según»?
Para ayudar a que aclares su funcionamiento te proponemos que pienses, por ejemplo, en el menú de un sistema. El menú se presenta como una lista de opciones y, en general, se suele identificar cada una ellas con un número o una letra. Luego, el usuario debe indicar ese número o letra para informar cuál es la acción a realizar. El sistema tomará el camino del menú de acuerdo a la opción ingresada.
Veamos la estructura genérica del Según:
Según (Opción) Hacer
Caso 1: Instrucción 1
Caso 2: Instrucción 2
Caso N: Instrucción N
Sino
Instrucción P
FinSegún
Habrás notado que dentro del “Según” se encuentra un “Sino”.
Esta sentencia es opcional y se utilizará en el caso de que la variable del “Según” no tenga ninguno de los valores que se encuentran en la lista.
Veamos otro ejemplo que es de la vida diaria…
Supongamos que nos dicen el número del día de la semana (1 al 7) y tenemos que decir cuál es ese día. Por ejemplo, si es 2, el día será martes (asumimos que la semana comienza el lunes).
Te proponemos que realices el algoritmo y luego revises nuestra versión.
VARIABLES
DIA : ENTERO
INICIO
Mostrar (“Ingrese el número del día (1 a 7)”)
Ingresar (DIA)
Según (DIA) Hacer
Caso 1: Mostrar (“Es Lunes”)
Caso 2: Mostrar (“Es Martes”)
Caso 3: Mostrar (“Es Miércoles”)
Caso 4: Mostrar (“Es Jueves”)
Caso 5: Mostrar (“Es Viernes”)
Caso 6: Mostrar (“Es Sábado”)
Caso 7: Mostrar (“Es Domingo”)
Sino
Mostrar (“No es un día válido”)
FinSegún
FIN
VER VIDEO: Para finalizar, te proponemos que veas el siguiente video para comprender mejor el funcionamiento de una estructura Selectiva Según.
Ejercicio
Te proponemos que realices el análisis del siguiente problema y luego desarrolles el algoritmo.
Problema
Hacer un algoritmo que lea las ventas efectuadas por una farmacia. Por cada venta se ingresa un código indicador (O, E ó T) y un importe.
• Si el código es O, significa que corresponde a una obra social (se abona sólo en efectivo), le corresponde un 40% de descuento.
• Si el código es E, significa que se abona en efectivo, le corresponde un 10% de descuento.
• Si el código es T, significa que se abona con tarjeta, le corresponde un 15% de recargo.
Al terminar el día se ingresa un movimiento con ‘*’ en el código.
Se pide informar:
a) Total de operaciones y monto del día.
b) Total de operaciones y total de montos en efectivo, discriminando cuáles fueron por obra social y cuáles no.
c) Total de operaciones y montos por tarjeta.
Tener en cuenta
: el total de montos debe ser el efectivamente cobrado luego de efectuar los descuentos o recargos correspondientes.
Solución del Problema
A continuación, te presentamos nuestro algoritmo para que puedas comparar y realizar tus propias conclusiones: