Vous êtes sur la page 1sur 18

Universidad Nacional del Litoral Facultad de IngenierÌa y Ciencias HÌdricas Departamento de Inform·tica

y Ciencias HÌdricas Departamento de Inform ·tica FUNDAMENTOS DE PROGRAMACI”N Asignatura correspondiente al

FUNDAMENTOS DE PROGRAMACI”N

Asignatura correspondiente al plan de estudios de la carrera de IngenierÌa Inform·tica

UNIDAD 3 ESTRUCTURAS DE CONTROL

Ing. Horacio Loyarte Æ 2008

Unidad 3

2

Unidad 3 2 UNIDAD 3 Estructuras de Control Resumen de Conceptos Introducci Ûn La formalizaci Ûn

UNIDAD 3

Estructuras de Control

Resumen de Conceptos

IntroducciÛn

La formalizaciÛn algorÌtmica que se comenzÛ a desarrollar en el tema anterior, ha permitido resolver algunos problemas sencillos empleando algoritmos computacionales.

El objetivo de este tema es desarrollar nuevas herramientas algorÌtmicas para resolver problemas m·s complejos, mediante el diseÒo de algoritmos estructurados. Esto sentar· las bases para facilitar m·s adelante el desarrollo de programas en un lenguaje estructurado.

En nuestros primeros diseÒos de algoritmos sÛlo se utilizaron tres acciones primitivas fundamentales: lectura, asignaciÛn y escritura. Estos algoritmos fueron resueltos en base a una estructura secuencial de acciones: los pasos o acciones indicados se ejecutan uno tras otro, a medida que van apareciendo; es decir, secuencialmente.

Pero en el diseÒo de algoritmos, generalmente es necesario modificar el orden secuencial de ejecuciÛn del conjunto de acciones. El diseÒo estructurado de algoritmos brinda recursos para resolver este tipo de situaciones.

Teorema Fundamental de la ProgramaciÛn Estructurada

Baum y Jacopini demostraron que: "Todo problema computacional --sin importar su complejidad-- puede resolverse empleando solo tres estructuras b·sicas de control. Estas son: una de tipo SECUENCIAL, otra de tipo CONDICIONAL y una de tipo REPETITIVO".

Cada una de esas estructuras conforma un segmento algorÌtmico perfectamente identificable de acceso y salida ˙nicos.

Un algoritmo estructurado est· conformado por segmentos de cÛdigo. Cada uno de estos segmentos tiene un ˙nico punto de entrada y un ˙nico punto de salida.

Los algoritmos asÌ diseÒados son m·s legibles, y permiten seguir m·s f·cilmente su lÛgica, ayudando a la detecciÛn de errores, modificaciÛn y mantenimiento.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

3

De acuerdo a lo mencionado, las acciones algorÌtmicas se encuadran en alguna de las estructuras b·sicas de control siguientes:

Secuenciales

Condicionales

Repetitivas Se analizar·n -a continuaciÛn- cada una de ellas.

Estructura B ·sicas de Control
Estructura B ·sicas de Control

Estructura B·sicas de Control

Estructura Secuencial

Las acciones correspondientes a esta estructura se van ejecutando en el orden en que aparecen, es decir secuencialmente. Esta estructura puede representarse esquem·ticamente:

acciÛn A

acciÛn B

acciÛn C

RecuÈrdese que los ejercicios correspondientes a las actividades del tema anterior, fueron resueltos empleando tres acciones primitivas fundamentales:

Lectura, AsignaciÛn y Escritura. Su estructura general corresponde a las acciones de tipo secuencial.

Por convenciÛn, tales acciones al escribirlas en pseudocÛdigo deben ser finalizadas con el signo de puntuaciÛn " ; " punto y coma).

Estructura Condicional Si-Entonces

Esta estructura implica una toma de decisiÛn en el algoritmo, donde el ejecutante (la computadora) puede seguir un camino u otro, seg˙n el valor de verdad de una expresiÛn lÛgica. El esquema representativo de esta estructura es el siguiente:

E falso verdadero < exp. lÛgica > B A S
E
falso
verdadero
< exp. lÛgica >
B
A
S

Donde <exp. lÛgica> es cualquier proposiciÛn que arroje un resultado lÛgico:

Verdadero o Falso. La presencia de esta estructura en un algoritmo le indica al ejecutante que:

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

4

debe evaluar la expresiÛn lÛgica planteada.

si es verdadera, debe ejecutar las acciones indicadas en

A. Luego ir al fin de la estructura.

si es falsa, resolver el bloque B. Luego ir al fin de la

estructura.

En el diagrama seÒalado, tanto el bloque A, como el B, pueden representar acciones primitivas elementales o alguna otra estructura de control. Nse Òalado, tanto el bloque A, como el B, pueden repr Ûtese que esta estructu ra Ûtese que esta estructura condicional tiene un solo punto de entrada y un ˙nico estructu ra condicional tiene un solo punto de entrada y un punto de salida representados por punto de salida representados por un pequeÒo cÌrculo con una E y una S respectivamente. En pseudocÛdigo se expresar· esta estructura de la manera siguiente:

Si <exp. lÛgica> entonces A sino B

FinSi

Donde las palabras claves Si y FinSi representan respectivamente la entrada y el fin de la estructura. AquÌ tambiÈn, si la expresiÛn lÛgica arroja Verdadero, el ejecutante realiza A y luego va a FinSi; si la expresiÛn lÛgica arroja Falso realiza B y pasa a FinSi.

Ejemplo:

Problema: Determinar el valor de la funciÛn arbitraria y=f(x) que se indica a la derecha para un valor de la variable x que se lee como dato.

 

3ln(

x

)

5

x

si x > 2

y

 

2

x

1

si

x <= 2

SoluciÛn empleando pseudocÛdigo:

Proceso FArbitraria Leer X; Si X > 2 entonces

y3*ln(x)-5*x;

 

sino

y2*x-1;

FinSi Escribir 'Valor de la funciÛn: y=', y; Fin Proceso

 

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

5

Unidad 3 5 Soluci Ûn empleando diagrama de flujo: Inicio x falso verdad X > 2

SoluciÛn empleando diagrama de flujo:

Inicio x falso verdad X > 2 y 2x - 1 y 3Ln(x) - 5x
Inicio
x
falso
verdad
X
>
2
y 2x - 1
y 3Ln(x) - 5x
'Valor de la FunciÛn: y = ',y
Fin

ObsÈrvese que la visualizaciÛn bidimensional que ofrece el diagrama permite una mejor legibilidad de la lÛgica del algoritmo respecto del pseudocÛdigo.

En una estructura condicional, la salida por Verdadero, siempre tendr· al menos una acciÛn para ejecutar; pero es posible que no haya acciones en la salida por Falso de la expresiÛn lÛgica. Esta variante de la estructura condicional se expresar· en pseudocÛdigo de la manera siguiente:

Si <exp.lÛgica> entonces A

FinSi

Y en un diagrama de flujo:

E falso verdad < exp. lÛgica > A S
E
falso
verdad
< exp. lÛgica >
A
S

Es recomendable respetar la forma gr·fica del esquema, tal como se propone. Esto es porque la forma de diamante o rombo se emplear· para otras estructuras, y si se altera el esquema, puede resultar confuso el seguimiento de su lÛgica.

Estructura Repetitiva Mientras-Hacer

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

6

Unidad 3 6 Esta estructura permite ejecutar una acci Ûn o grupo de acciones en forma

Esta estructura permite ejecutar una acciÛn o grupo de acciones en forma reiterada, cierto n˙mero de veces, mientras se cumpla una condiciÛn. El esquema gr·fico que se emplear· en los diagramas de flujo ser· el siguiente:

E falso < exp. lÛgica > verdad P Q R D
E
falso
< exp. lÛgica >
verdad
P
Q
R
D

El pequeÒo cÌrculo con la E indica la entrada o ingreso a la estructura, donde debe evaluarse una expresiÛn lÛgica. Si el valor obtenido es Verdadero el control de ejecuciÛn permanece dentro de la estructura y se ejecutan las acciones allÌ encerradas; en el ejemplo propuesto: P, Q, y R . El cÌrculo con la D seÒala el punto delimitador del Mientras e indica que se debe volver a evaluar la expresiÛn lÛgica del comienzo. El valor de verdad que se obtenga determinar· si el control de ejecuciÛn permanece o sale del esquema.

La sintaxis correspondiente en pseudocÛdigo es:

Mientras <exp. lÛgica> Hacer acciÛn A acciÛn B acciÛn C FinMientras

El punto D del diagrama se corresponde con el delimitador FinMientras. En ese lugar se indica al ejecutante que debe volver a observar el valor de verdad de la proposiciÛn lÛgica. Si esta arroja verdadero se vuelven a ejecutar las acciones A, B, C; si arroja falso, el control escapa de la estructura para pasar a ejecutar la prÛxima acciÛn despuÈs del FinMientras.

Como en la estructura condicional, aquÌ tambiÈn se tiene un ˙nico punto de entrada y un ˙nico punto de salida.

Dos caracterÌsticas particulares de la estructura repetitiva Mientras:

Es posible que en un algoritmo las acciones encerradas en la estructura nunca lleguen a ejecutarse, si la expresiÛn lÛgica arroja un falso en la primer evaluaciÛn.

En el grupo de acciones que abarca la estructura es necesaria la presencia de cierta acciÛn, que permita alguna vez, modificar el valor de verdad de la expresiÛn lÛgica que controla el Mientras. De lo contrario se estarÌa en presencia de un bucle infinito.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

7

Al disponer de un proceso repetitivo o iterativo en un algoritmo, se pueden plantear soluciones a problemas m·s complejos o que involucren una gran cantidad de datos. Se ver· que los problemas y sus correspondientes algoritmos no difieren en mucho de lo que UD. venÌa haciendo hasta ahora; solo se incorpora a la secuencia de acciones una estructura que las itere (repita). De este modo se puede lograr la repeticiÛn sistem·tica de un proceso, lo que las itere (repita). De este modo se puede lograr la repetici implica importantes ventajas desde el implica importantes ventajas desde el punto de vista computacional debido a la velocidad con que pueden operar las computadoras. una estructura que las itere (repita). De este modo se puede lograr la repetici Ûn sistem·tica

øQuÈ ocurre ahora con la lectura de numerosos datos . Aprovechando el proceso iterativo se puede leer un dato o grupo de datos, realizar sobre ellos el proceso correspondiente, luego repetir la lectura para el segundo dato o grupo de datos, procesarlo y asÌ sucesivamente. Para aclarar esto obsÈrvese el ejemplo siguiente.

Problema: Leer una serie de datos numÈricos correspondientes a las edades de 90 personas. Obtener e informar el valor de la suma y la media (promedio) de dicho conjunto de datos.

SoluciÛn empleando Diagrama de Flujo

In icio Conte o  0 Suma  0 fa lso Conteo < 9 0
In icio
Conte
o 
0
Suma
 0
fa lso
Conteo
<
9 0
verdad
x
Co nteo Co nteo
+
1
Suma  S uma
+
x
Media Suma /C o nte o
'S uma
=
'
, S uma
' Me dia
=
'
,
M edia
Fin

SoluciÛn en pseudocÛdigo

Proceso Media Conteo 0; Suma 0; Mientras Conteo < 90 Hacer Leer X;

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

8

Unidad 3 8 Conteo  Conteo + 1; Suma  Suma + X; FinMientras Media 

Conteo Conteo + 1; Suma Suma + X; FinMientras Media Suma/Conteo; Escribir 'Suma=', Suma; Escribir 'Media=', Media; FinProceso

NÛtese que la acciÛn Conteo Conteo +1 permite controlar la estructura al incrementar en una unidad la variable Conteo. En cierto momento Conteo tomar· el valor 90 y el control de ejecuciÛn escapar· del Mientras para pasar a la acciÛn que permite calcular la media. Los datos se ingresan en la variable x de a uno por vez ( 90 veces ).

Estructuras de Control Adicionales

De acuerdo al Teorema Fundamental de la ProgramaciÛn Estructurada enunciado por Baum y Jacopini serÌan suficientes las estructuras hasta aquÌ planteadas para resolver cualquier problema computacional. Pero en diversas situaciones --limitados por tan pocas herramientas-- es posible encontrar diseÒos de algoritmos algo intrincados, engorrosos, o faltos de claridad. Por tal motivo, se estudiar· el uso de estructuras adicionales, que no son sino variantes de las ya vistas y pueden ayudar a clarificar el diseÒo de ciertas soluciones.

Estructura Condicional de SelecciÛn M˙ltiple

En varias situaciones se presentar· el caso de que la decisiÛn a tomar para bifurcar el flujo o control de ejecuciÛn en un algoritmo no se basa en un

proposiciÛn lÛgica ˙nica con dos posibles alternativas; sino, que los caminos

posibles a seguir ser·n: 3, 4,

Tal situaciÛn puede resolverse con la Estructura Condicional Si-Entonces. Se analizar· en un ejemplo la resoluciÛn de un caso como el descrito.

,10 o m·s.

Ejemplo Un club deportivo posee N socios. Tiene 5 categorÌas de asociados: 1, 2, 3, 4 y 5; que corresponden respectivamente a vitalicios, mayores, juveniles cadetes e infantiles. A cada categorÌa le corresponde abonar una cuota mensual diferente, a excepciÛn de las categorÌas cadetes e infantiles que pagan igual monto. Adem·s, los cadetes y juveniles --por este mes-- tienen un descuento del 25%, y el resto de las categorÌas un 10%. El club desea conocer el monto correspondiente a la recaudaciÛn mensual por el abono de cuotas de asociados, suponiendo que abona la totalidad de los mismos.

Datos generales del problema:

N:

n˙mero de asociados.

C1, C2, C3, C4: monto de cada cuota.

Y por cada socio:

Cat:

categorÌa del socio.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

9

Unidad 3 9 SoluciÛn : Proceso Club C  0 ; Suma  0 ; Leer

SoluciÛn:

Proceso Club

C0 ;

Suma0 ;

Leer

N, C1, C2, C3, C4 ;

Mientras C<N Hacer Leer Cat ; CC+1 ; Si Cat=1 Entonces Cuota C1*0.90; Sino Si Cat=2 Entonces Cuota C2*0.90; Sino Si Cat=3 Entonces Cuota C3*0.75 ; Sino Si Cat=4 Entonces Cuota C4*0.75; Sino Cuota C4*0.90; FinSi

FinSi

FinSi

FinSi Suma Suma + Cuota ; FinMientras Escribir 'RecaudaciÛn del mes:', Suma ; FinProceso

Como se puede observar en la soluciÛn planteada para el ejemplo, el empleo de la estructura condicional Si-Entonces resuelve el caso; pero a pesar de la sencillez del problema, el seguimiento de la lÛgica es confuso.

Para tal situaciÛn se propone una estructura que contempla la posibilidad de establecer una selecciÛn entre varias posibilidades clarificado el algoritmo. Esta estructura se denomina Estructura Condicional de SelecciÛn M˙ltiple, y se trata de una generalizaciÛn de la estructura condicional. En ella, en lugar de evaluar una condiciÛn o expresiÛn lÛgica, se coteja el valor de cierta variable, llamada variable de control de la estructura, con una lista de valores posibles. El valor determinar· cual es la prÛxima acciÛn a ejecutar.

Seg˙n V Hacer

1:

A:

2:

B;

3,4:

C;

.

.

n:

Q;

FinSeg˙n

Donde V es la variable de control, que debe ser de tipo numÈrico y adem·s entera positiva sin incluir el cero. Al encontrar esta estructura, el ejecutante (la computadora) realiza lo siguiente:

Observa el valor de la variable V.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

10

Buscar en la lista de valores propuestos el valor que coincida con el de V.

Si encuentra dicho valor, ejecutar las acciones indicadas para esa opciÛn. Luego, ir al fin de la estructura (FinSeg˙n).

Si el valor asignado a la variable, no coincide con ning˙n valor de la lista propuesta, salta al FinSeg˙n sin ejecutar acciones.

Opcionalmente, pueden plantearse acciones para el caso de que la variable de control V no coincida con ning ˙n valor de la lista. La sintaxis altern ativa es V no coincida con ning˙n valor de la lista. La sintaxis alternativa es la
siguiente:para el caso de que la variable de control V no coincida con ning ˙n valor

Seg˙n V Hacer 1: A:

2:

B;

3,4:

C;

.

.

n:

Q;

De Otro Modo R;

FinSeg˙n

Si para m·s de un valor, se debe realizar la misma acciÛn (o grupo de acciones), tales valores pueden agruparse en la misma lÌnea separados por coma. Es el caso de los valores 3 y 4 indicados m·s arriba al describir la sintaxis. Para esos dos valores, debe realizarse la misma acciÛn (o grupo de acciones) que se identificÛ con C.

Nota: A, B, C,

grupo de acciones o estructuras.

Q,

y R pueden representar desde una acciÛn elemental hasta un

El esquema que se emplear· en un diagrama de flujo para la estructura Seg˙n es el siguiente:

E v De Otro 1 2 3,4 n Modo C Q A R B S
E
v
De Otro
1
2
3,4
n
Modo
C
Q
A
R
B
S

Al igual que la estructura condicional, se tiene aquÌ, un ˙nico punto de entrada y un ˙nico punto de salida que en el gr·fico se indican con los pequeÒos cÌrculos que encierran una E y una S. ObsÈrvese en el mismo caso del club que se usÛ como ejemplo introductorio a este tema, cÛmo aplicar la estructura de selecciÛn m˙ltiple.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

11

Ejemplo:

Datos generales del problema:

N: n˙mero de asociados.

C1, C2, C3, C4: monto de cada cuota.

Y por cada socio:

Cat:

categorÌa de un socio.

SoluciÛn

Proceso Club C 0 ; Leer

Suma 0 ;

N, C1, C2, C3, C4 ;

Mientras C < N Leer Cat ;

Hacer

C C + 1 ; Seg˙n Cat Hacer 1: Cuota C1 * 0.90 ;

2:Cuota

C2 * 0.90 ;

3:Cuota

C3 * 0.75 ;

4:Cuota

C4 * 0.75 ;

5:Cuota

C4 * 0.90 ;

FinSeg˙n Suma Suma + Cuota ; FinMientras Escribir 'RecaudaciÛn del mes:', Suma; FinProceso

Un club deportivo posee N socios. Tiene 5 categorÌas de asociados: 1, 2, 3, 4 y 5; que corresponden respectivamente a vitalicios, mayores, juveniles cadetes e infantiles. A cada categorÌa le corresponde abonar una cuota mensual diferente, a excepciÛn de las categorÌas cadetes e infantiles que pagan igual monto. AdemÛn de las categorÌas cadetes e infantiles que pagan igual ·s, los cadetes y juveniles --por ·s, los cadetes y juveniles --por este mes-- tienen un descuento del 25%, y el resto de las categorÌas un 10%. El club desea conocer el monto correspondiente a la recaudaciy el resto de las categor Ìas un 10%. El club desea con Ûn mensual por Ûn mensual por el abono de cuotas de asociados, suponiendo que abona la totalidad de los mismos.1

Compare ambas soluciones del problema, con y sin la estructura de selecciÛn m˙ltiple, y podr· observar la diferente legibilidad en favor del ˙ltimo ejemplo donde se ha empleado la estructura Seg˙n.

Estructura Iterativa Repetir-Hasta que

Esta herramienta algorÌtmica adicional, tiene cierta similitud con el Mientras- Hacer, ya que se debe evaluar cierta proposiciÛn lÛgica, cuyo resultado permite continuar o escapar del bucle iterativo. Su esquema gr·fico se indica abajo:

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

12

E P Q R < exp. lÛgica > falso D verdad
E
P
Q
R
< exp. lÛgica >
falso
D verdad

En presencia de esta estructura, el ejecutante del algoritmo, ingresa a la estructura, resuelve las acciones indicadas en los bloques P, Q, y R; entonces eval˙a la expresiÛn lÛgica: si esta es falsa, vuelve a repetir las acciones. AsÌ sucesivamente Hasta que la expresiÛn lÛgica arroje un resultado verdadero.

Su sintaxis para el pseudocÛdigo es:

Repetir acciÛn P ; acciÛn Q ; acciÛn R ; Hasta que <exp. lÛgica>

Al igual que el Mientras, la estructura Repetir posee algunas caracterÌsticas particulares:

Si la expresiÛn lÛgica arroja un falso en la primer evaluaciÛn, las acciones abarcadas por la estructura ya habr·n sido ejecutadas. Por tanto --siempre-- las acciones de esta estructura ser·n realizadas al menos una vez.

En el grupo de acciones que abarca la estructura es necesaria la presencia de cierta acciÛn, que permita alguna vez, modificar el valor de verdad de la expresiÛn lÛgica que controla el Repetir. De lo contrario se estarÌa en presencia de un bucle infinito.

ObservaciÛn: en las dos estructuras iterativas o de repeticiÛn estudiadas, se puede notar que no es necesario conocer el n˙mero de iteraciones a realizar. Es com˙n hallar problemas donde la proposiciÛn lÛgica que controla a ambas estructuras, sea dependiente de alguno de los datos de entrada del algoritmo.

Estructuras de control anidadas

En el diseÒo de algoritmos, es usual el empleo de estructuras lÛgicas de control en situaciones m·s complejas, las cuales se resuelven combinando las

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

13

estructuras b·sicas y adicionales que se desarrollaron en esta unidad. ObsÈrvense algunos casos: Caso 1
estructuras b·sicas y adicionales que se desarrollaron en esta unidad.
ObsÈrvense algunos casos:
Caso 1
F
V
Decision
AquÌ, se presenta una
estructura condicional con una
acciÛn simple en la salida por
VERDAD. Por FALSO, tiene
otra estructura condicional
anidada
AcciÛn
F
V
Decision
AcciÛn
Ejemplo: observe la soluciÛn
propuesta para el problema del
Club que se usÛ para introducir
el tema de la estructura Seg˙n
AcciÛn

Caso 2.

F Mientras V AcciÛn F V Decision AcciÛn AcciÛn
F
Mientras
V
AcciÛn
F
V
Decision
AcciÛn
AcciÛn

.

El diagrama plantea una estructura iterativa MIENTRAS, la cual

encierra una estructura condicional.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

14

Caso 3. F DecisiÛn AcciÛn AcciÛn AcciÛn F Hasta que V
Caso 3.
F
DecisiÛn
AcciÛn
AcciÛn
AcciÛn
F
Hasta que
V
Caso 4. F Mientras V AcciÛn AcciÛn F Hasta que V AcciÛn
Caso 4.
F
Mientras
V
AcciÛn
AcciÛn
F
Hasta que
V
AcciÛn

En este caso, se tiene un REPETIR anidado dentro de la salida por FALSO de la estructura condicional.

AquÌ una estructura Mientras encierra acciones

de estructura secuencial y adem·s una estructura iterativa Repetir-Hasta que.

IMPORTANTE:. en todos los casos, observe que cada estructura encerrada o anidada en otra, tiene su punto de entrada y su punto de salida, dentro de la estructura anidante.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

15

Unidad 3 15   S Ìntesis 1. Las estructuras de control permiten resolver algor Ìtmicamente

SÌntesis

1. Las estructuras de control permiten resolver algorÌtmicamente problemas m·s complejos. Con ellas es posible tomar decisiones, iterar o repetir grupos de acciones.

2. Cada estructura de control tiene un ˙nico punto de entrada y un ˙nico punto de salida. Esto es propio del modelo o paradigma de la programaciÛn estructurada.

3. La estructura condicional Si-Entonces permite tomar un camino u otro en la secuencia de ejecuciÛn, en base al valor de verdad de una proposiciÛn lÛgica.

4. La estructura iterativa Mientras-Hacer permite evaluar una expresiÛn lÛgica al inicio y si su valor de verdad arroja verdadero se ejecutan las acciones incluidas en la estructura; luego se vuelve a evaluar la expresiÛn lÛgica y asÌ sucesivamente. Las acciones incluidas en esta estructura se podr·n ejecutar 0 o m·s veces.

5. La estructura de selecciÛn m˙ltiple Seg˙n-Hacer permite ejecutar una o m·s acciones selectivamente en base al valor de una variable de control que es evaluada al inicio.

6. La estructura iterativa Repetir-Hasta Que act˙a similarmente a la estructura Mientras-Hacer solo que la expresiÛn lÛgica se eval˙a al final; si esta arroja verdadero se abandona la estructura, y se contin˙a iterando en caso de arrojar falso.

7. A medida que lo problemas se hacen m·s complejos es usual tener que combinar estructuras encerrando o anidando unas dentro de otras. En estos casos recordar que cada estructura anidada debe estar completamente incluida dentro de la estructura exterior o anidante.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

16

Ejercicios

Actividades

Ejercicio 3.1. Realice un seguimiento (prueba de escritorio) del algoritmo siguiente para cada uno de los juegos
Ejercicio 3.1. Realice un seguimiento (prueba de escritorio) del algoritmo siguiente para cada uno de los Realice un seguimiento (prueba de escritorio) del algoritmo siguiente para cada uno de los juegos de datos propuestos:

Proceso Ejer1 Leer a, b, c; Si c = 0 entonces Escribir 'DivisiÛn por cero'

sino

FinSi

FinProceso

r a / c; t b * c; v r - t; Escribir 'v=', v;

a) Datos: 120, 80, 2

b) Datos: 0, 4, 1

c) Datos: 45, 92, 0

Ejercicio 3.2. Dada la funciÛn arbitraria siguiente, escribir un algoritmo que calcule e informe el resultado de la funciÛn para un valor de x de la variable independiente que debe ingresarse como dato.

y 

x

x 3

2 si x < 1

si x >=1

Ejercicio 3.3. Se ingresa un n˙mero entero como dato. Determine si es par o impar e informe un mensaje alusivo.

Ejercicio 3.4. Ingresar 3 valores numÈricos y determinar e informar el mayor.

Ejercicio 3.5. Ingresar como datos los tres lados de un tri·ngulo rect·ngulo. Estos datos se leen sin ning˙n orden. Determinar si los datos corresponden a ese tipo de tri·ngulo. En caso de que no tratarse de un tri·ngulo ract·ngulo indicar un mensaje alusivo; si lo es calcular e informar su ·rea.

Ejercicio 3.6. Resuelva el siguiente problema empleando la estructura iterativa Mientras-Hacer. Emplee pseudocÛdigo y diagrama de flujo. Problema: En un curso de cierta universidad se desea determinar cuantos estudiantes varones superan la altura 1.90 m y cuantas mujeres superan 1.75m. Se leen como datos el sexo y la altura de los 112 integrantes del curso.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

17

Ejercicio 3.7. Resuelva el problema anterior considerando que la cantidad de estudiantes es desconocida. La entrada de datos termina con la altura cero.

Ejercicio 3.8. Resuelva el problema del ejemplo del club empleando un diagrama de flujo. Resuelva el problema del ejemplo del club empleando un diagrama de flujo.

Ejercicio 3.9. Resuelva el siguiente problema empleando pseudoc Ûdigo. Problema: En cierta carrera universitaria la asignatura Algebra Resuelva el siguiente problema empleando pseudocÛdigo. Problema: En cierta carrera universitaria la asignatura Algebra est· organizada en 5 comisiones de 24 alumnos cada una. Se ingresa por cada alumno la calificaciÛn obtenida en una evaluaciÛn parcial y el n˙mero de comisiÛn al que pertenece. Estos pares de datos llegan sin orden alguno. Informe el promedio de cada comisiÛn.

Ejercicio 3.10. Resuelva el siguiente problema empleando diagrama de flujo. Problema: considere el enunciado del ejercicio anterior. Se desea lograr la misma salida (promedio de cada comisiÛn) para la materia InglÈs. Esta tiene 4 grupos o comisiones, pero se desconoce el n˙mero de alumnos por comisiÛn. Los datos terminan con la calificaciÛn cero y el n˙mero de comisiÛn cero.

Ejercicio 3.11. En el recuadro de la derecha se plantea un algoritmo mediante un diagrama de flujo.

a) Escriba el mismo algoritmo empleando

pseudocÛdigo.

b) Realice un seguimiento del algoritmo con los datos:

28, 67, 10, 31, 29, 62

c) Modifique el algoritmo sustituyendo la estructura de

control repetitiva por otra similar de modo de obtener

misma informaciÛn de salida; y realice el un seguimiento con el mismo juego de datos del ejercicio para verificar su diseÒo.

d) Proponga un enunciado que tenga por soluciÛn el

algoritmo planteado.

Inicio C : = 0 Suma : = 0 Leer X C  C +
Inicio
C : =
0
Suma : =
0
Leer X
C  C
+
1
falso
verdad
X/2 = trunc(X/2)
Suma Suma + X
falso
C
=
7
verdad
Escribir 'Suma = ',Suma
Fin

12,

la

(b)

Ejercicio 3.12. Resolver el problema siguiente empleando la estructura Repetir-Hasta Que. Problema: Ingresar como dato inicial la cantidad C de

estudiantes que aprobaron un examen de FÌsica. Si no hubiera aprobados (C=0), emitir el mensaje ìNadie aprobÛî ; en otro caso determinar el % de esos estudiantes que obtuvieron 9 o m·s de calificaciÛn.

Ejercicio 3.13. Resolver el problema que sigue mediante un diagrama de flujo. Problema: Ingresar como datos N valores numÈricos. Determinar e informar el mayor.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 3

18

Unidad 3 18 Ejercicio 3.14. Problema: Ingresar un n ˙mero natural N como dato. Determinar e

Ejercicio 3.14. Problema: Ingresar un n˙mero natural N como dato. Determinar e informar el factorial del n˙mero.

Ejercicio 3.15. Problema: Ingresar una lista de alumnos (apellido y nombres) con sus correspondientes edades. Determinra e informar las edades y nombres de los 2 mayores.

Cuestionario

3.1 Mencione el teorema de la ProgramaciÛn estructurada.

3.2 SeÒale las diferencias entre las estructuras de control iterativas mientras-hacer y

repetir-hasta que.

3.3. øQuÈ tipos de datos se admite para la variable que controla la estructura de

selecciÛn m˙ltiple Seg˙n-Hacer?

3.4 Al anidar 2 o m·s estructuras de control øquÈ regla debe observarse?

3.5 En una estructura condicional Si-Entonces øes posible plantear una acciÛn por

falso y ninguna acciÛn en la salida por verdadero? (Observe el ejemplo del recuadro)

Si

(A<100) V (R=ëOKí)

Sino

Escribir A

FinSi

3.6 øSi se cambia la expresiÛn lÛgica por la expresiÛn complementaria en un Si-

Entonces (por ejemplo cambiar < por >= ) øquÈ otra modificaciÛn realizarÌa para no alterar la lÛgica del algoritmo?

3.7 øEs posible que una estructura mientras-hacer contenga una sola acciÛn

algorÌtmica? Explique.

3.8 øPuede ser correcta una estructura condicional como la indicada a continuaciÛn.

Explique.

Si R entonces Escribir ëSalida por Verdadí sino Escribir ëSalida por Falsoí

FinSi

3.9 øEs indistinto usar cualquiera de las estructuras iterativas? Si opina que no: øen

quÈ casos es preferible emplear una estructura Mientras en lugar de una Repetir?

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008