Guia 03 (Estructuras de Control)

18

Click here to load reader

description

guia 3

Transcript of Guia 03 (Estructuras de Control)

Page 1: Guia 03 (Estructuras de Control)

Universidad Nacional del Litoral Facultad de Ingeniería y Ciencias Hídricas

Departamento de Informática

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

Page 2: Guia 03 (Estructuras de Control)

Unidad 3 2

Ingeniería Informática � Fundamentos de Programación 2008

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.

Page 3: Guia 03 (Estructuras de Control)

Unidad 3 3

Ingeniería Informática � Fundamentos de Programación 2008

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 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:

A

< exp. lógica >falso verdadero

B

E

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:

Page 4: Guia 03 (Estructuras de Control)

Unidad 3 4

Ingeniería Informática � Fundamentos de Programación 2008

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. Nótese que esta estructura condicional tiene un solo punto de entrada y un único

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.

y

2<= xsi 12

2> xsi 5)ln(3

x

xx

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

Page 5: Guia 03 (Estructuras de Control)

Unidad 3 5

Ingeniería Informática � Fundamentos de Programación 2008

Solución empleando diagrama de flujo:

y 3Ln(x) - 5x

X > 2 falso verdad

y 2x - 1

x

'Valor de la Función: y = ' ,y

In icio

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:

A

< exp. lógica >falso verdad

E

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

Page 6: Guia 03 (Estructuras de Control)

Unidad 3 6

Ingeniería Informática � Fundamentos de Programación 2008

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:

P

< exp. lógica >falso

verdad

E

D

Q

R

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.

Page 7: Guia 03 (Estructuras de Control)

Unidad 3 7

Ingeniería Informática � Fundamentos de Programación 2008

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

implica importantes ventajas desde el punto de vista computacional debido a la velocidad con que pueden operar las computadoras. ¿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

C onteo < 9 0

fa ls o

verdad

C o nteo C o nteo + 1

S uma S uma + x

x

Media S uma /C o nte o

' Me dia = ' , M edia

Fin

'S uma = ' , S uma

In ic io

C onteo 0

S uma 0

Solución en pseudocódigo

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

Page 8: Guia 03 (Estructuras de Control)

Unidad 3 8

Ingeniería Informática � Fundamentos de Programación 2008

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, ..,10 o más. 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.

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.

Page 9: Guia 03 (Estructuras de Control)

Unidad 3 9

Ingeniería Informática � Fundamentos de Programación 2008

Solución: Proceso Club C 0 ; Suma 0 ; Leer N, C1, C2, C3, C4 ; Mientras C<N Hacer Leer Cat ; C C+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.

Page 10: Guia 03 (Estructuras de Control)

Unidad 3 10

Ingeniería Informática � Fundamentos de Programación 2008

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 alternativa es la siguiente:

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,...Q, y R pueden representar desde una acción elemental hasta un

grupo de acciones o estructuras. El esquema que se empleará en un diagrama de flujo para la estructura Según

es el siguiente:

1 2 3,4 n

v

.......

A

B

C Q

De OtroModo

R

E

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.

Page 11: Guia 03 (Estructuras de Control)

Unidad 3 11

Ingeniería Informática � Fundamentos de Programación 2008

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.1 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 ; Suma 0 ; Leer N, C1, C2, C3, C4 ; Mientras C < N Hacer Leer Cat ; 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

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:

Page 12: Guia 03 (Estructuras de Control)

Unidad 3 12

Ingeniería Informática � Fundamentos de Programación 2008

P

E

D

Q

R

< exp. lógica >falso

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

Page 13: Guia 03 (Estructuras de Control)

Unidad 3 13

Ingeniería Informática � Fundamentos de Programación 2008

estructuras básicas y adicionales que se desarrollaron en esta unidad.

Obsérvense algunos casos: Caso 1

Caso 2.

.

Decision

Decision

AcciónAcción

Acción

VF

VF

Aquí, se presenta una

estructura condicional con una acción simple en la salida por VERDAD. Por FALSO, tiene otra estructura condicional anidada Ejemplo: observe la solución

propuesta para el problema del Club que se usó para introducir el tema de la estructura Según

Mientras

Decision

Acción Acción

Acción

F

F

V

V

El diagrama plantea una estructura iterativa MIENTRAS, la cual encierra una estructura condicional.

Page 14: Guia 03 (Estructuras de Control)

Unidad 3 14

Ingeniería Informática � Fundamentos de Programación 2008

Caso 3.

Caso 4.

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.

Hasta que

Decisión

Acción Acción

F

F

V

Acción

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

Hasta que

Mientras

Acción

Acción

F

F

V

Acción

V

Aquí una estructura Mientras encierra acciones de estructura secuencial y además una estructura

iterativa Repetir-Hasta que.

Page 15: Guia 03 (Estructuras de Control)

Unidad 3 15

Ingeniería Informática � Fundamentos de Programación 2008

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.

Page 16: Guia 03 (Estructuras de Control)

Unidad 3 16

Ingeniería Informática � Fundamentos de Programación 2008

Actividades

Ejercicios

Ejercicio 3.1.

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 r a / c; t b * c; v r - t; Escribir 'v=', v; FinSi FinProceso

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. 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.

y

x

x

2

3

si x < 1

si x >= 1

Page 17: Guia 03 (Estructuras de Control)

Unidad 3 17

Ingeniería Informática � Fundamentos de Programación 2008

S uma : = 0

In icio

C = 7

Leer X

C : = 0

C C + 1

S uma S uma + X

X /2 = tr unc(X /2 ) fa lso verdad

fa lso

verdad

Escribir 'S uma = ' ,S uma

Fin

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. Ejercicio 3.9. 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: 12, 28, 67, 10, 31, 29, 62

c) Modifique el algoritmo sustituyendo la estructura de control repetitiva por otra similar de modo de obtener la misma información de salida; y realice el un

seguimiento con el mismo juego de datos del ejercicio (b) para verificar su diseño.

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

algoritmo planteado.

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.

Page 18: Guia 03 (Estructuras de Control)

Unidad 3 18

Ingeniería Informática � Fundamentos de Programación 2008

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?