Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programando Estructuras de Control
Programando Estructuras de Control
Introduccin
Uno de los aspectos ms importantes de la programacin es el control en el orden de ejecucin
de las instrucciones. Las Estructuras de
Control/Enunciados de Control permiten a un
programador determinar el orden en el que se
ejecutan las instrucciones de un programa. Estas
Basic
estructuras de control permiten hacer dos cosas: 1)
Commands
Saltarse algunas instrucciones y ejecutar otras, y 2)
repetir una o ms instrucciones mientras se cumpla
cierta condicin.
Los programas de RAPTOR utilizan seis tipos de
instrucciones, como se puede ver en la figura de la
derecha. En lecturas previas hemos aprendido los
cuatro comandos bsicos, En esta lectura
aprenderemos acerca de las instrucciones de
Seleccion y Loop.
Flow of Control
Commands
mayora de los problemas del mundo real, el control secuencial por s solo no permite construir
soluciones, debido a que los problemas del mundo real incluyen condiciones que determinan el
paso siguiente. Por ejemplo, la frase Si es de noche, entonces prendes las luces de tu casa
requiere tomar una decisin de acuerdo a la hora del da. La condicin (la hora del da)
determina si la accin se debe realizar o no. Este tipo de instrucciones utilizan un control de
seleccin y lo describiremos en los siguientes prrafos.
Instruccin 1
Instruccin 2a
Instruccin 2b
Instruccin 3
Instruccin 3
2 of 15
Observa que las dos trayectorias de la instruccin de seleccin pueden contener cero o ms
instrucciones, pero sera inapropiado que ambas trayectorias estuvieran vacas o que tuvieran las
mismas instrucciones, porque entonces no tendra sentido tu decisin.
Expresiones de decisin
Las instrucciones de control por seleccin requieren de una expresin que pueda evaluarse como
Yes/No (o verdadero y falso). Una expresin de decisin es una combinacin de valores
(constantes y/o variables y operadores). Las siguientes reglas para construir expresiones de
decisin son muy importantes, as que revsalas con cuidado.
Como recordars de nuestra lectura anterior acerca de las expresiones de asignacin, una
computadora slo puede realizar una operacin a la vez. Cuando se evala una expresin de
decisin, las operaciones de la expresin no se evalan de izquierda a derecha simplemente, sino
de acuerdo a reglas de orden de precedencia pre-establecidas. El orden en que se interpretan
las operaciones puede hacer una diferencia radical en el valor final Yes/No que se calcule. En
caso de duda del orden de precedencia, es preferible emplear parntesis para agrupar las
expresiones. Puesto que las expresiones de decisin contienen clculos similares a los de las
expresiones de asignacin, el orden de precedencia incluye operadores de las expresiones de
asignacin.
El orden de precedencia para evaluar a las expresiones de decisin sigue las reglas siguientes:
1. calcular todas las funciones en primer lugar
2. calcular las expresiones que se encuentren entre parntesis
3. calcular las exponenciaciones (^,**), es decir, elevar un nmero a una potencia
4. calcular multiplicaciones y divisiones, de izquierda a derecha
5. calcular sumas y restas, de izquierda a derecha,
6. evaluar operadores relacionales (= != /= < <= > >=), de izquierda a
derecha,
7. evaluar operador lgico not, de izquierda a derecha,
8. evaluar operador lgico and, de izquierda a derecha,
9. evaluar operador lgico xor, de izquierda a derecha,
10. evaluar operador lgico or, de izquierda a derecha,
De esta lista, en las reglas 6 a 10 encontramos operadores relacionales y lgicos, que se explican
en la tabla siguiente:
Operacin
=
!=
/=
<
<=
>
>=
Descripcin
"es igual a"
"no es igual a"
"es menor que"
"es menor o igual a"
"es mayor que"
"es mayor o igual a"
3 of 15
Ejemplo
3 = 4 es No(falso)
3 != 4 es Yes(verdad)
3 /= 4 es Yes(verdad)
3 < 4 es Yes(verdad)
3 <= 4 es Yes(verdad)
3 > 4 es No(falso)
3 >= 4 es No(falso)
and
or
Yes(verdad) si cualquiera es
Yes
Yes(verdad) si los valores
"yes/no" no son iguales
Invierte el valor
Yes si No; No si Yes
xor
not
Los operadores relaciones (= != /= < <= > >=), comparan dos valores del mismo tipo (ya
sean nmeros, textos o valores yes/no). Por ejemplo, 3 = 4 or "Wayne" = "Sam" son
comparaciones vlidas, pero 3 = "Mike" no es vlido.
Los operadores lgicos (and , or, xor), combinan dos valores Booleanos (verdad/falso) en un
nico valor Booleano. EL operador lgico not, convierte un valor Booleano en su valor
opuesto. Algunos ejemplos se muestran lneas abajo:
Ejemplo
(3<4) and (10<20)
(flaps_angle < 30) and
(air_speed < 120)
5 and (10<20)
5 <= x <= 7
Vlido o No-Vlido?
Vlido
Vlido, suponiendo que flaps_angle y
air_speed son valores numricos
No vlido el valor del lado izquierdo "and" es un
nmero, no un valor Yes/No
No vlido, 5 <= x se evala como Yes/No y el
resultado se compara mediante un operador
relacional, yes/no <= 7, que es una expresin novlida.
4 of 15
5 of 15
Existen muchas posibilidades en la ejecucin de este programa de ejemplo para listarlas todas.
En la siguiente tabla se muestran algunas de ellas. Trata de visualizar el patrn de ejecucin en la
cuarta columna.
6 of 15
Decision
Statement3
Possibilidad 1
Instruccin 1
Instruccin 2
Decisin ("yes")
Instruccin 4
Possibilidad 2
Instruccin 1
Instruccin 2
Decisin ("no")
Instruccin 3
Instruccin 2
Decisin ("yes")
Instruccin 4
Possibilidad 3
Instruccint 1
Instruccin 2
Decisin ("no")
Instruccin 3
Instruccin 2
Decisin ("no")
Instruccin 3
Instruccin 2
Decisin ("yes")
Instruccin 4
Possibilidad 4
(puedes ver el
patrn de cada
posibilidad?)
7 of 15
Los dos ejemplos siguientes muestran la validacin de la entrada del usuario. Felizmente puede
verse un partrn. Casi todos los ciclos de valicin que escribas incluyen una instruccin de
entrada, una decisin y un mensaje de error.
8 of 15
En el ejemplo, se usa una variable contador que se llama Count. Podemos emplear
cualquier nombre para denotarla, pero se procura emplear un nombre descriptivo y
comprensivo de su papel en la iteracin.
Es preferible que la expresin de decisin que controla a la iteracin sea una desigualdad
como mayor o igual a. Esto es ms seguro que un igual a.
Los siguientes programas en RAPTOR muestran errores comunes que se deben evitar cuando se
emplean iteraciones. Intenta encontrar los errores en cada programa (Al final de la pgina se
explican en caso de que no logres identificarlos). Estos tres ejemplos tienen iteraciones infinitas
es decir, que nunca terminan--.
9 of 15
Los siguientes seis programas de ejemplo, muestran posibles variantes de la iteracin con
contador de ciclos. Los seis ejemplos realizan lo mismo ejecutan el bloque de instrucciones
representados por la caja vaca un nmero Limit de veces. Puedes emplear la variante que
tenga ms sentido para t. En cada ejemplo, pon atencin a la inicializacin de Count y a la
expresin de Decisin.
10 of 15
Iteraciones de Entrada
Algunas veces se requerir en un programa que el usuario introduzca varios datos para
procesarlos. Hay dos tcnicas para lograrlo en forma adecuada. El primer mtodo consiste en
tener un valor especial que indique cuando se han terminado de introducir los datos. Un
segundo mtodo es preguntar antes al usuario sobre la
cantidad de datos que se van a introducir, utilizando
este valor para implementar una iteracin con contador
de ciclos. Estos dos mtodos se ejemplifican en los
siguientes dos diagramas de flujo. En ambos casos, los
rectngulos vacos significan el procesamiento de los
datos ingresados. Observa cmo se controla el ingreso
de los datos y no nos preocupemos por la forma en
que estos datos son procesados,
Iteraciones"Totalizadoras"
Otro uso comn de las iteraciones es calcular la suma
de una serie de valores que ingresa el usuario. Esto se
llama iteracin totalizadora o de suma. El
programa que se muestra produce una Suma de una
serie de valores ingresados por el usuario.
Para crear una suma se deben agregar dos
instrucciones adicionales a la iteracin:
Una instruccin para inicializar antes de la
iteracin, una variable Suma a zero (0)
11 of 15
Por ejemplo,
Suma 0
Una instruccin de asignacin dentro de la iteracin que agregue cada valor ingresado a
la variable totalizadora Suma.
Por ejemplo,
Suma Suma + Valor
Asegrate de comprender una asignacin como Suma Suma + Valor, que significa
calcular la expresin a la derecha de la flecha, tomando el valor actual de Suma y agregarle el
nuevo Valor ingresado. El resultado de la expresin registrarlo en la variable Suma.
El nombre Suma de la variable, no es mgico. Se puede emplear cualquier otro nombre, como
Total o Sumatoria.
Iteraciones ''De conteo''
Otro uso comn de las
iteraciones es para contar el
nmero de veces que
ocurre un evento. Por
ejemplo el programa de la
derecha.
Nota
las
similitudes con el ejemplo
anterior.
Estos dos ltimos ejemplos
nos muestran cmo el
mismo
patrn
de
instrucciones se presenta y
puede
emplearse
para
resolver
problemas
similares. Al estudiar y
comprender estos ejemplos,
se pueden tener las bases
para resolver problemas
ms complejos..
12 of 15
Resumen
En estas notas hemos visto cmo escribir instrucciones de Seleccin y de Iteracin en
RAPTOR. Las instrucciones de Seleccin se emplean cuando se requiere elegir entre un dos
grupos de instrucciones a ejecutar. Las instrucciones de Iteracin se emplean para repetir un
bloque de instrucciones. Si tienes dudas para determinar entre usar una u otra podra serte til
responder a las siguientes preguntas:
Necesitas decidir entre hacer algo o no hacerlo ?
(Seleccin)
Necesitas hacer una u otra instruccin (pero no ambas)? (Seleccin)
Necesitas elegir una opcin entre muchas otrass?
(Seleccin de cascada)
Necesitas hacer alguna cosa ms de una vez?
(Iteracin)
Conoces cantas veces debes repetir algo? (Iteracin con contador de ciclo)
Cuando se emplean instrucciones de Seleccin es til tener en mente las siguientes preguntas:
La expresin de decisin permite que se ejecuten las instrucciones correctas?
La expresin de decisin permite que se salten las instrucciones correctas?
Cuando se emplean instrucciones de Iteracin es til tener en mente las siguientes preguntas:
Qu instrucciones deben repetirse?
Se han inicializado las variables adecuadas anters de comenzar la iteracin?
La expresin de decisin se evala a "Yes" en algn momento de la ejecucin?
Si se trata de una iteracin con contador de ciclo, se repite el nmero correcto de veces?
(Un error comn en las iteraciones con contador de ciclo, es que si debe repetirse N
veces, se repita N-1 o N+1 veces)
13 of 15
There are 3 basic types of program flow: Sequential, Selection, and Loop (Iteration).
When to use Selection statements and/or Loop statements for a particular problem
solving task.
Selection statements are used to execute or skip one or more programming statements.
Loop statements are used when one or more programming statements must be repeated.
The difference between "counter-controlled loops," "input loops," and "running total"
loops.
Infinite loops are bad and special care should be used to make sure your loops always
terminate.
Reading Self-Check
Which control structure would be most appropriate for the following problems:
Sequential, Selection, Cascading Selection, or a Loop
____________ Printing an appropriate message for a cadets class year.
____________ Checking for a correct input and continually re-checking if incorrect.
____________ Computing the average GPA of your CS110 section.
____________ Determining the volume of a sphere given a radius.
____________ Initializing all of the variables at the beginning of a program.
____________ Determining whether a vowel, constant or digit has been typed in.
____________ Writing out a message if an integer variable contains a negative value.
____________ Writing Odd or Even depending on an integer variables value.
____________ Writing out the squares of the numbers 1 though 100.
____________ Reading in scores until a user enters a negative number.
Which of the following Decision expressions will always evaluate to "Yes", always evaluate to
"No", or could possibly be either "Yes" or "No"?
____________ GR_Score
____________ GR_Score
____________ GR_Score
____________ GR_Score
>
>
<
<
100
100
100
100
14 of 15
Write a series of RAPTOR statements that determines if X has the value 1, 2, or 3, and prints
out ONE, TWO, or THREE accordingly.
Write a complete program that converts between degrees Fahrenheit and Celsius. The user must
first enter the conversion that is desired (F to C or C to F) using any means you want and then
enter the value to be converted. The formulas for conversion are:
F = 9/5 C + 32 and C = 5/9 (F 32)
Write a complete program that plays the game of HI-LO. The program asks one user for a
number between 1 and 100 and verifies that such a number has been entered. It then asks a
second user for a guess and reads it in. If the guess is correct a congratulation message is
written to the screen and the program ends. Otherwise the message HI or LOW is displayed
(if the guess is higher or lower) and another guess is asked for and read in.
15 of 15