You are on page 1of 11

ESTRUCTURAS SELECTIVAS

Problema 4.1. Tipo de ngulo: Se requiere un programa que lea un valor entre 0 y 360 y determine el tipo de
ngulo, considerando que:
o ngulo agudo: Mayor a cero y menor de 90 grados
o ngulo recto: Es igual a 90 grados
o ngulo obtuso: Es mayor que 90 pero menor a 180 grados
o ngulo llano: Es igual a 180 grados
o ngulo cncavo: Es mayor a 180 pero menor a 360 grados
A continuacin se muestra el anlisis del problema, el algoritmo, tanto en pseudocdigo como en diagrama de flujo;
da clic aqu para acceder a ellos.
/* Programa: tipoAngulo.c
Descripcin: Determina el tipo de ngulo (agudo, recto, obtuso, llano o cncavo)
*/
#include<stdio.h>
#include<stdlib.h>
/* Funcin Principal*/
main ()
{ /*Inicio de la funcin Principal*/
/*Declaracin de variables */
int angulo, t;
/*Mensaje de bienvenida*/
printf ("\nEste programa determina de que tipo es el angulo dado.");
/*Instrucciones */
printf ("\n\nIngrese la medida del angulo (grados): ");
scanf ("%d",&angulo);
if (angulo<=0 || angulo>=360)
printf ("\n No tiene clasificacin");
if (angulo>0 &&angulo<90)
printf ("\n El angulo es agudo");

if (angulo==90)
printf ("\n El angulo es recto");
if (angulo>90 &&angulo<180)
printf ("\nElangulo es obtuso");
if (angulo ==180)
printf ("\n El angulo es llano");
if (angulo>180 &&angulo<360)
printf ("\nElangulo es concavo");
printf ("\n\n\t");
system ("pause");
}

/*Fin de la funcin Principal*/

Table de prueba de escritorio

instruccione
s
Inicio

OPERACION
ES
(ALU)
-

Imprimir ingrese
la medida del
ngulo

90

Si (ngulo<=0
AND ngulo
>=360) entonces

Si (ngulo<90)
entonces

Si (ngulo==90)
entonces
(La condicin se
evalu como
verdadera por
tanto se ejecuta la
instruccin del
cuerpo)

(ngulo <=0 AND


ngulo >= 360)
(120 <=0 AND
120>= 360)
Falso AND
verdadero
Falso
(ngulo >0 AND
ngulo < 90)(120
>0 AND 120< 90)
Falso AND
verdadero
Falso
(ngulo==90)
(120==0)
Verdadero

Leer ngulo

Imprimir El
ngulo es recto
Si (ngulo>90 AND
ngulos<180)
entonces
Si (ngulo==180 )
entonces..

DATOS DE
ENTRADA

Estado DE
LAS
VARIABLES
ngulo
ngulo
-

Ingrese la
medida del
ngulo en
(grados):

ngulo
90
ngulo
90

ngulo
90

ngulo
90

ngulo
90

(ngulo==180)
(120==180)
Falso
(ngulo==180)
(120>90 AND
120<180)

ngulo
90

DATOS DE
SALIDA

ngulo
90

El ngulo es
recto

Si ngulo>180
AND ngulo<360)
entonces

FIN

Falso
(ngulo>180 AND
ngulo < 360)
(120>18 AND
120<360)
Falso

ngulo
90

ngulo
90

ESTRUCTURAS SOLECTIVA DOBLE

Las estructuras selectivas dobles nos permiten elegir una de dos posibles acciones a realizar
dependiendo de la condicin. En pseudocdigo se propone usar las palabras reservadas Si-Sino y en
C se codifican mediante la sentencia if-else, tal como se muestra en la siguiente tabla:

Prueba de escritorio 2x2+5x+3=0

Las estructuras selectivas mltiples permiten escoger uno de varios caminos posibles. Para la
estructura condicional mltiple se proponen las palabras clave Seleccionar-caso en pseudocdigo,
misma que se implementa en lenguaje C utilizando las palabras reservadas switch-case. Esta
secuencia se utiliza cuando existen mltiples posibilidades para la evaluacin de una expresin
matemtica (generalmente una variable), pues de acuerdo al valor que tome la expresin ser el
conjunto de instrucciones que se ejecute.

En este caso la <expresin> no es booleana sino aritmtica y de tipo entero, as cada caso
corresponde a un valor que puede resultar de su evaluacin. De esta forma, el flujo de control que
sigue la ejecucin de una instruccin Seleccionar-casos (switch-case) es el siguiente: se evala la
<expresin> y si el valor corresponde al valor de un caso, es decir a un <valori>, se ejecuta el
bloque de <instruccionesi> hasta encontrar el final de la instruccin, que en el caso de C est
representado por la palabra reservada break, terminando ah la ejecucin de la instruccin. Cuando el
valor no corresponde a ningn caso se ejecuta el bloque de instrucciones correspondiente a otros
casos (default). El conjunto de todos los casos, incluyendo el default, conforman el cuerpo de la
estructura Seleccionar-casos(switch-case).

Representaciones de la estructura condicional mltiple


Pseudocdigo
Casos para<expresin>
caso<valor1>:
<instruccionesCaso1>
caso<valor2>:
<instruccionesCaso2>

otros casos:
<instruccionesOtros>
Fin_Casos

Diagrama de flujo:

Lenguaje
switch (<expresin>)
{
case<valor1>:
<instrucciones1>;
break;
case<valor2>:
<instrucciones2>;
break;
default:
<instruccionesOtras>
}

Calificaciones

instruccione
s
Inicio
Imprimir Inserta
calificacin
Leer calificacin
Casos (Calificacin)
Caso 0: caso 1:
caso2: caso:3: caso
4: caso5:
Caso 6: imprimir
reprobado
Caso7: imprimir
Bien aprobado
Caso8: imprimir
notable,
aprobado
Caso9: imprimir
notable,
aprobado
Caso10: imprimir
Sobresaliente,
aprobado
Otros casos:
imprimir no existe
nota
fin

DATOS DE
ENTRADA

Estado DE
LAS
VARIABLES

DATOS DE
SALIDA

OPERACION
ES
(ALU)
-

10

Inserta una
calificacin

Falso

Calificacin
10

Falso

Falso

Falso

verdadero

Sobresaliente
aprobado

Falso

Calificacin
10

OPERACION
ES
(ALU)
-

Estado DE
LAS
VARIABLES

DATOS DE
SALIDA

Nmeros

instruccione
s
Inicio
Imprimir digita tu
nmero del
zodiaco
Leer nmeros mes

DATOS DE
ENTRADA
-

ESTRUCTURAS REPETITIVAS

En la mayor parte del diseo o implementacin de las soluciones que se plantea a problemas especficos nos
encontramos con instrucciones que deben ejecutarse un nmero determinado de veces, si hacemos un anlisis ms
profundo de estas situaciones, en la mayoras de las ocasiones nos encontramos que las instrucciones son las mismas,
pero que los datos varan, esto se hace posible utilizando las estructuras repetitivas, generalmente llamadas ciclos.

Existen varias estructuras de repeticin implementadas por los diferentes lenguajes de programacin, todas con la
misma idea: repetir un conjunto de instrucciones, llamadas cuerpo del ciclo, las cuales dependen de una condicin.
En la mayora de los ciclos el cuerpo se repite siempre y cuando la condicin se cumpla, sin embargo, tambin existe
una estructura repetitiva que se repite en tanto que no se cumple la condicin.
En esta seccin slo nos enfocaremos en las primeras que son las que estn definidas en el lenguaje C y en la mayora
de los lenguajes estructurados y orientados a objetos actuales. Cabe mencionar que a cada una de las veces que se
repite el ciclo se le conoce como iteracin.
Cuando se utilizan ciclos dentro de un programa, te puedes enfrentar a dos posibles situaciones:
o Que conozcas desde el diseo cuntas veces deben repetirse las instrucciones (repeticin definida).
o Que el nmero de veces que se deban repetir las instrucciones dependa de un valor que se conoce
hasta el momento de la ejecucin del ciclo (repeticin indefinida).
En el primer caso se necesitar una variable que funja como un contador, en la cual se registre el nmero de
iteraciones que se vayan ejecutando. En cambio, en las repeticiones indefinidas generalmente se controlan mediante
interruptores o banderas, o bien, con valores centinela.
En resumen:

Los contadores permiten llevar la cuenta del nmero de iteraciones que se realizan en un ciclo (definido o
indefinido), y en el caso especfico de ciclos definidos son el medio por el cual se controla el fin del ciclo.

Los acumuladores nos permiten guardar resultados parciales de operaciones que se realizan como parte del
cuerpo de un ciclo (puede ser definido o indefinido). En este punto, es importante sealar que en lenguaje C
hay tres diferentes estructuras repetitivas: while (Mientras-hacer), for (Desde-mientras) y do-while
(Hacer-mientras), con todas ellas es posible modelar ciclos definidos o indefinidos, pues las tres son
equivalentes, es decir, cualquiera de ellas se puede expresar en trminos de las otras.

En los siguientes subtemas estudiars a profundidad cada una de ellas y vers su equivalencia.
ESTRUCTURA WHILE

La estructura repetitiva Mientras, codificada en lenguaje C con la palabra reservada while, controla
las repeticiones a partir de una condicin que se evala al inicio del ciclo, de esta manera en cada
iteracin primero se evaluar la condicin y mientras resulte verdadera se repetir el ciclo. En la
siguiente tabla se muestran las representaciones del ciclo Mientras(while).

La manera en la que se
ejecuta una instruccin Mientras (while) es la siguiente: las <instrucciones> del cuerpo del ciclo se ejecutan
mientras la <condicin> es verdadera, cuando esto no se cumple se termina el ciclo; de esta forma, si la primera
vez que se evala la condicin sta es falsa, el cuerpo del ciclo no se ejecuta ni una sola vez.
Para ejemplificar cmo se construye un ciclo indefinido utilizando un valor centinela, se propone el siguiente
problema.
Estructura Desde-mientras (for)
El ciclo Desde-mientras, en ingls y lenguaje C, for, evaluar una condicin y mientras sta sea verdadera se ejecutar el conjunto de
instrucciones definidas en el cuerpo de la estructura, generalmente las repeticiones se controlan por un contador, ya que como parte de su
sintaxis tiene la opcin de inicializar una variable (el contador) e incrementarlo o decrementarlo. Este tipo de estructura es conveniente
utilizarla cuando se conoce de antemano el nmero de veces que se debe repetir el ciclo (ciclos definidos).

Las representaciones de este ciclo se muestran a continuacin:

Tabla 4.8: Representaciones de la estructura repetitiva Desde-mientras (for)


Programa nomina

El problema es similar al que se present en la seccin anterior, se debe leer el pago de cada trabajador y realizar la
suma de cada uno de stos, para lo cual se puede utilizar un acumulador. La diferencia es que, en este caso, no se
utilizar un valor centinela para terminar la lectura de los pagos, pues se preguntar al usuario, al inicio del programa,
cuntos trabajadores hay, as el nmero de iteraciones quedar determinado antes de iniciar el ciclo. De lo anterior
tenemos que si el nmero de empleados es n entonces el ciclo debe repetirse n-veces, para lo cual se utilizar un
contador c que debe tomar los valores 1,2,, n, as que el ciclo debe repetirse siempre que c n. En cuanto a la suma
de los pagos, se utilizar un acumulador, al cual llamaremos nom, que se inicializar en cero dado que se trata de una
suma.
Inicio
Imprimir "Ingrese el total de empleados: "
Leer n
Desde c=1, nom=0, Mientras (c<=n), c=c+1
Imprimir Ingresa el salario del trabajador, c
Leer sal
nom=nom+sal
Fin desde
Imprimir La nmina a pagar es en total $, nom
Fin

A diferencia de las estructuras repetitivas en las que las condiciones se evalan al principio del ciclo, por lo que las
instrucciones que se repiten se ejecuten de 0 hasta N veces, en la estructura Hacer-mientras (do-while) la
evaluacin se lleva acabo al final, esto implica que el conjunto de instrucciones que se repite se ejecuta al menos una
vez.

Tabla 4.9: Representaciones de la estructura repetitiva Hacer-mientras (do-while)


Observa que en el cdigo en C, la nica estructura de control, de todas las que hemos visto, que tiene
punto y coma despus de la expresin o condicin es el do-while.

Estructuras anidadas
Las estructuras de control selectivas y repetitivas se consideran compuestas ya que se forman a partir de otras instrucciones que son las
que se ejecutarn de acuerdo a una condicin dada. Es importante remarcar que las instrucciones que forman el cuerpo de una estructura
pueden ser tambin estructuras compuestas, como se demostr en la solucin del ltimo problema visto (observa el programa newton.c),
en el cual un switch est dentro de un while. As que es posible anidar cualquier tipo de estructura, sin embargo, lo ms comn es anidar
instrucciones if, pues se utilizan cuando se tienen varios casos, por ejemplo, si revisamos nuevamente el problema 4.1, donde se quiere
determinar el tipo de ngulo, es mejor solucin utilizar if-anidados para resolverlo porque as no se evalan condiciones que, una vez que se
ha definido el tipo de ngulo, son innecesarias.
Para ilustrar lo anterior, a continuacin te mostramos el pseudocdigo para la solucin del mismo problema mediante las estructuras
anidadas.
Inicio
Imprimir "Ingrese la medida del angulo (grados): "
Leer angulo
Si angulo0 OR angulo360 entonces
Imprimir No tiene clasificacin"
Sino Si angulo<90 entonces
Imprimir "El ngulo es agudo"
Sino
Si angulo=90 entonces
Imprimir "El angulo es recto"

Sino Si angulo<180 entonces


Imprimir El angulo es obtuso"
Sino Si angulo =180 entonces
Imprimir "El angulo es llano"
Sino
Imprimir El angulo es concavo"
Fin_Si-Sino
Fin_Si-Sino
Fin_Si-Sino
Fin_Si-Sino
Fin_Si-Sino
Fin

You might also like