Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la...

23
UNIVERSIDAD DEL PAPALOAPAN Campus Tuxtepec Loma Bonita Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA M. C. Bertha López Azamar Profesor-Investigador Tuxtepec, Oaxaca

Transcript of Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la...

Page 1: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

UNIVERSIDAD DEL PAPALOAPAN

Campus Tuxtepec – Loma Bonita

Cuadernillo

INTRODUCCIÓN A LA

PROGRAMACIÓN ESTRUCTURADA

M. C. Bertha López Azamar Profesor-Investigador

Tuxtepec, Oaxaca

Page 2: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 74

7 Sentencias de control

Todo programa se ejecuta de manera secuencial, inicia en una línea de código y termina en

alguna otra línea. Se escriben las líneas de código unas a después de otras, y son evaluadas,

igualmente, una después de otra. Cada sentencia a ejecutar puede ser de uno de dos tipos: las

sentencias secuenciales y las sentencias de bifurcación.

En general la importancia de la programación estructurada, como paradigna de

programación, radica en las sentencias de control y la modularidad, ya que permite que el

programador estructurer mejor el código, evitando escribirlo por duplicado.

Por sentencia secuencial se entiende la realización de una acción concreta, generalmente implica

una línea de código. Por ejemplo: una operación aritmética, imprimir en pantalla un mensaje,

leer un valor de una variable, asignar un valor a una variable, declarar una variable.

Por sentencias de bifurcación se entienden aquellas que permiten cambiar el rumbo del flujo del

programa el ejecutarse el código, al aparecer una intersección, permitiendo tomar un camino

u otro según sea necesario. En este grupo se tiene a las sentencias:

o Condicionales

Alternativas

Repetitivas

o Incondicionales

o De invocación

Las sentencias de bifurcación condicionales, llamadas también sentencias de control, tienen

un cuerpo, es decir, implican un bloque de código (un conjunto de líneas de código que pueden ser

sentencias secuenciales u otras de bifurcación), el cual puede ejecutarse repetidamente siempre y

cuando se cumpla una condición.

Las sentencias de bifurcación puede escribirse junto con las sentencias secuenciales del

programa principal (el caso de las condicionales) o puede encontrarse en un módulo por separado (el

caso de los módulos, los cuales se llaman con la correspondiente sentencia de invocación), pero

igualmente, sus líneas de código se ejecutan secuencialmente, una tras otra, hasta que termina el

bloque, y luego se ejecuta la sentencia en orden secuencial dentro del flujo normal del programa

principal.

La característica principal de las sentencias de control, es que dependen de una condición, la

cual va a permitir ejecutar o no un bloque de código en particular. Estas se dividen en:

Sentencias alternativas permiten implementar la toma de decisiones dentro del programa,

esto para elegir entre una u otra acción a realizar. Las comunes se codifican de tal

forma que al evaluar la condición, si se cumple (resultado verdadero) se realiza una

acción y sino se cumple (resultado falso) se realiza otra acción.

Sentencias repetitivas permiten repetir la ejecución de un conjunto de sentencias, esto

siempre y cuando la condición se cumpla.

Las sentencias de invocación permiten ceder el control a un conjunto de sentencias

agrupadas bajo un nombre (modulo), y una vez ejecutadas éstas, el control se devuelve a la

sentencia que se sigue a la que la invocó.

Page 3: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 75

Las sentencias de bifurcación incondicional (GOTO) pasan el control a una sentencia

marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que hay

entre ella y la sentencia a la cual se bifurca. Sin embargo el uso de esta sentencia en programación

estructurada esta prácticamente prohibido, y solo en casos muy especiales los programadores

experimentados se ven en la necesidad de incluirla de manera moderada, ya que un programador

principiante e inexpecto puede enredar y afectar gravemente el funcionamiento del programa, por

ello se les obliga a prescindir de ellas.

La forma general o sintaxis de esta sentencia es:

GOTO etiqueta

Por ejemplo supongamos una serie cualquiera de sentencias:

Sentencia1

Sentencia2

Sentencia3

GOTO A

B. Sentencia4

Sentencia5

A. Sentencia6

Sentencia7

En este ejemplo, después de ejecutarse la “sentencia3” nos encontramos con la

sentencia “GOTO A”, la cual nos permite bifurcar hasta la línea donde se encuentra la etiqueta

“A”, y ejecuta la sentencia6. Partiendo del supuesto que en algún lugar del programa, se

ejecuten alguna vez las sentencias incluidas desde sentencia4.

En los subtenas siguientes se mostrará el uso de las sentencias de control con pseudocodigo y

diagramas de flujo. Analice las observaciones generales en este tipo de sentencias, comprendiendo

el cuidado que debe tenerse en la forma en la que abren y cierran, para delimitar el código interno.

Es importante haber aprendido a escibir condiciones, ya que son las que

permiten ejecutar o no el bloque de código correspondiente a la sentencia de control.

Page 4: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 76

7.1 Sentencias de repetición

Las sentencias repetitivas o cíclicas, también llamadas simplemente ciclos, permiten repetir

un bloque de código siempre y cuando se cumpla cierta condición (es decir, la evaluación de la

condición de resultado: Verdadero).

El lema general en ciclos podría decirse que es.

“Lo que se hace una vez, puede hacerse varias veces”.

Los tres ciclos principales en algoritmos se referencian por sus títulos en pseudocodigo:

DESDE … HASTA, HACER MIENTRAS y HACER.

Cuando se sabe el número exacto de veces que se requiere repetir la ejecución el bloque de código

se usa al ciclo: DESDE … HASTA.

Cuando no se sabe el número exacto de veces que se requiere ejecutar el bloque de código, se tiene a

los ciclos:

HACER MIENTRAS.- Este permite ejecutar el bloque de código cero o más veces (De

entrada puede que nunca se ejecute si la condición desde la primera vez que se evalua

da Falso).

HACER.- Este puede ejecutar el bloque de código una o más veces (De entrada se ejecuta

obligatoriamente una vez).

Todos los ciclos tienen tres partes fundamentales (no importando de cual se trate):

inicialización, condición, y progresión de la condición.

Inicialización.- Esta operación se realiza solo una vez, es la primera en ejecutarse, y consiste en

hacer que la variable o variables que participan en la condición que controla al ciclo tomen

un valor antes de pretender evaluarla. (En el DESDE…HASTA va en la cabecera, en los

otros dos ciclos se escribe antes y fuera del cuerpo del ciclo). La operación de inicialización

se puede hacer:

Leyendo el valor desde el teclado (LEER)

Asignando un valor por default.

Condición.- Se podrá ejecutar varias veces el cuerpo del ciclo siempre y cuando la condición se

cumpla (dé Verdadero) y se podrá salir de él solo cuando no se cumpla (dé falso). Cada vez

que se ejecute la ultima sentencia dentro del cuerpo del ciclo, se tendrá que evaluar

nuevamente la condición para determinar si se volverá a ejecutar (regresar nuevamente a la

primera sentencia dentro de su cuerpo) o si se va a salir de él. Por lo que, debe tenerse el

cuidado de formular la condición de tal forma que se haga verdadera solo con aquellos

valores que se requiera ejecutar el código interno, los cuales se determinan según el uso que

se le de al ciclo.

Progresión de la condición.- Una vez dentro del ciclo, se deben colocar las sentencias que permitan

hacer cambiar el valor almacenado en las variables que intervienen en la condición que

controla el ciclo, ya que si no se deja que se queden con el mismo valor se creará un ciclo

Page 5: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 77

infinito. Así al incluir la progresión se permite que al volver a verificar la condición (al

terminar ejecutar las sentencias del ciclo), los valores sean diferentes y en algún momento se

pueda salir del ciclo (al hacerse falsa la condición). La progresión se corresponde con la

forma en que se haya codificado la inicialización, esto es:

Si en la inicialización se leyó el valor desde el teclado (LEER), entonces la

progresión es una operación de lectura del valor desde el teclado.

Si en la inicialización se asignó un valor por default, entonces la progresión se

corresponde con alguna operación aritmética que permita hacer cambiar el contenido

de la variable.

7.1.1 OBSERVACIONES GENERALES A LAS CONDICIONES DE UN CICLO:

Debe tenerse cuidado al formular las condiciones de un ciclo porque podemos cometer

cualquiera de los dos errores siguientes:

o Impedir la entrada al ciclo, es decir, no entrar al ciclo nunca (debido a que la

condición no acepta ningún valor).

o Volverlo infinito (debido a que la condición acepta todos los valores).

Por esta razó deben escribirse condiciones para los ciclos que delimiten rangos específicos de

valores, que permitan aceptar solo ciertos valores y que rechacen otros. Deben evitarse las

condiciones que acepten todos los valores, así como aquellas que rechacen todos los valores.

Ejemplo 1 Condición que NO ACEPTA NINGUN VALOR: m > 30 Y m < 25,

- 24 31

La condición no acepta ningún valor porque no hay intersección al usar el operador Y

La corrección se debe hacer analizando el uso del ciclo, por lo que debemos preguntarnos:

¿Cuál es el objetivo del ciclo?

Respondiendo esta pregunta por ejemplo, puede ser que lo que se quería era que se entrara al

ciclo con los valores del 26 al 29, por tanto lo que esta mal escrito en la condición son los

operadores relacionales y la condición debería ser: m < 30 Y m > 25 para lograr una intersección.

- 24 31

Pero si al responder la pregunta lo que se quería era entrar al ciclo con valores distintos al

rango del 25 al 30 (es decir de - a 24, de 31 a ), en este caso el error estaría en el operador lógico,

Page 6: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 78

por lo que la condición debería ser: m > 30 O m < 25, para impedir que exista una intersecció.

- 24 31

Ejemplo 2 Condición que ACEPTA TODOS LOS VALORES: m < 30 O m >25,

- 24 31

En este caso igualmente, debe uno analizar el objetivo del ciclo, ya que este es uno de los

tipos de condiciones más incómodos, debido a que el ciclo se hace infinito, es decir nunca se puede

salir de él ya que la condición se hará verdadera siempre, no importa que valor se haya introducido.

7.1.2 ALGUNOS USOS COMUNES DE LOS CICLOS

Validar datos de entrada (uso común del ciclo HACER…MIENTRAS)

Uno de los usos de los ciclos es validar datos de entrada, es decir, obligar a que el usuario

introduzca valores acordes a los rangos requeridos por el significado de la variable. La

condición de este tipo de ciclos solo deberá admitir valores no válidos, para que así se entre

al ciclo solo cuando el usuario inserte un valor no acorde a la petición, y hasta que introduzca

un valor válido se podrá salir de él, el ciclo se convierte en una especie de pozo, del cual no

saldrá hasta que introduzca valores validos. Por ejemplo: cuando queremos leer una

calificación, si la escala de valores es de 0 a 10 los valores no validos van de - a -1 y de 11

a , por lo tanto la condición adecuada no es: calif >= 0 y calif <= 10, sino que es:

calif < 0 o calif > 10; ya que cualquier valor entre 0 y 10 es valido por lo que no deberá

entrar al ciclo, y asi solo con valores que erróneos deberá volverse a pedir el dato, leerlo y

validarlo (todo dentro del ciclo).

Simplemente repetir acciones un número no determinado de veces (uso común del ciclo

HACER)

Por ejemplo, si se desea que varios alumnos comprueben si su calificación es aprobatoria o

no, las acciones para un alumno serán las mismas que para los demás, pero el programa lo

podrá usar cualquier alumno, por lo que solo se preguntará si otro alumno quiere consultar, y

si responde que si, permanecerá en el ciclo y si responde que no, se saldrá del ciclo.

Utilizar contadores1. Realizar incrementos o decrementos constantes en ciertas variables

numéricas.

En ocaciones se requiere usar una variable para realizar conteos, para lo cual se inicializa una

1 Nombre que adquiere una variable solo al usarse dentro de un ciclo. Siempre debe inicializarse en cero, a

menos que en el enunciado se indique lo contrario. Se usa para ir contando las veces que se entra al ciclo, es decir

realizar incrementos o decrementos fijos cada vez que se entra al ciclo. La forma común para incrementos es: cont =

cont + Constante, para decrementos simplemente se resta: cont = cont – Constante; donde Constante es un valor

numérico constante.

Page 7: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 79

variable con un valor por default y de ahí se va haciendo cambiar de valor de manera

constante, ya sea ralizando incrementos (sumar) o decrementos (restar). Generalmente se usa

un contador cuando:

Se sabe cuantas veces se va a entrar a un ciclo (uso común del ciclo DESDE … HASTA):

debido a que se indican las veces que se repetirán las acciones.

Por ejemplo leer las 5 calificaciones de 1 alumno en el parcial; se inicializará

el contador en 1 (cont = 1), se realizarán incrementos de 1 en 1 (cont = cont +

1) y se detendrá el ciclo hasta que tome un valor mayor a 5 (cont < 6).

debido a que se indican límites (inferior y superior) para así detenerlo en un valor

especifico.

Por ejemplo: si se quiere imprimir una lista de números pares comenzando del

2 (inicializacion: num=2) y terminando en el 100 (condición: num <=100), se

usa a la variable num como contador y se harán incrementos constantes de 2

en 2 (progresión: num = num + 2) para hacer cambiar el valor de la variable.

Por ejemplo imprimir una tabla de multiplicar de un número cualquiera del 1

al 10, se inicializará el contador en 1 (cont = 1), se realizarán incrementos de 1

en 1 (cont = cont + 1) y se detendrá el ciclo hasta que tome un valor mayor a

10 (cont < 11).

Se desea contabilizar la ocurrencia de ciertas acciones (puede usarse HACER

MIENTRAS, O HACER si no se sabe cuantas veces se entrará al ciclo).

Por ejemplo, si se quiere saber cuantos números positivos y cuantos números

negativos introdujo el usuario.

Utilizar acumuladores2. Para pedir varios datos con las mismas características e irlos sumando.

En ocasiones queremos realizar una petición de valores con el mismo significado, por lo

tanto, la forma de validar el dato es la misma, la variable será la misma, pero se tendrá una

variable extra que tendrá la función de acumular los valores leídos, la cual siempre deberá

ser inicializada en cero antes y fuera del ciclo inmediato donde se usa. En esté tipo de uso,

probablemente se requiera combinar con casos donde se sabe cuantas veces se entrará al

ciclo (uso del ciclo DESDE HASTA), o con casos donde no se sabe cuantas veces exactas

entrará (uso de los ciclos HACER ó HACER…MIENTRAS).

Por ejemplo: obtener el promedio de las tres calificaciones de una materia. En el ciclo se van

pidiendo (variable: calif) y acumulando las calificaciones (acum_calif = acum_calif + calif) y

fuera del ciclo se calcula el promedio (promedio=acum._calif / 3). Como se sabe que son tres

calificaciones esto implica el uso del ciclo DESDE…HASTA, para lo cual se usa un

contador que lo haga trabajar tres veces, se inicializa en 1 (cont = 1), se incrementa en 1

(cont = cont + 1) y saldrá del ciclo cuando ya se hayan leído las 3 calif (cont<=3).

Otro ejemplo: diseñar un algoritmo que calcule le valor medio de la estatura de los alumnos

2 Nombre que adquiere una variable solo al usarse dentro de un ciclo. Siempre debe inicializarse en cero, a

menos que en el enunciado se indique lo contrario. Donde la variable sirve como recipiente para valores no constantes,

en el cual se suma el nuevo valor al que ya contiene la variable. La forma común es: acum = acum + X; donde,

X es una variable numérica.

Page 8: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 80

de determinado curso. Explicación:

- La lectura de las alturas es igual para todas las estatura (variable: estatura)

- Se usa un ciclo para leer las estaturas. Como no se indica cuantos alumnos serán

(implica usar el ciclo HACER, ya que al menos debe iniciar pidiendo una estatura),

como progresión del ciclo debe preguntarse si hay otro alumno (variable resp), y la

condición del ciclo deberá ser resp == „s‟, ya que se podra salir cuando no haya otro

alumno, es decir cuando responda „n‟

- Antes de poder calcular la estatura media, dentro del ciclo se debe ir acumulando la

estatura de cada alumno (acum_estatura = acum_estatura + estatura)

- Para saber de cuantos alumnos leyó la estatura, se debe tener un contador de alumnos

el cual se inicializa previamente fuera del ciclo en 0 (cont_alum = 0) y dentro del

ciclo se incluye la expresión aritmética que realiza el conteo de alumnos, es decir va

incrementando de 1 en 1 (cont_alum = cont_alum + 1), ya que cada vez que se entra

al ciclo, se lee la estatura de un alumno.

- Al salirse del ciclo, debe realizar el calculo de la estatura media (media =

acum_estatura / cont_alum)

A continuación se explicaran las estructuras sintácticas de los ciclos, primero en

pseudocódigo y luego los diagramas de flujo en conjunto para tener la comparativa.

Page 9: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 81

7.1.3 Ciclo DESDE…HASTA

Se usa para representar repeticiones en las que se conoce el número exacto de veces que se

ejecutará el bloque de código. Los enunciados de problema generalmente indican el número de

veces con un valor constante (ejemplo leer tres calificaciones) o mediante rangos o límites,

indicando el valor del limite inferior y el valor del límite superior (por ejemplo, muestre los números

pares positivos desde el 500 hasta el 20)

Para controlar el ciclo se emplea una variable de tipo de dato entero que es llamada contador,

y que generalmente se incrementa en uno (dependiendo de problema a resolver).

Ejemplos:

o Leer tres calificaciones: el contador se inicializará en 1, y se irá incrementando de 1

en 1, teniendo como condición para el ciclo que el contador sea menor o igual a 3.

o Muestre los números pares positivos desde el 20 hasta el 500: el contador se

inicializará en 500 y se haran decrementos de 2 en 2, mientras que el contador sea

mayor o igual a 20.

La sintaxis para escribir la sentencia repetitiva es:

DESDE inicialización HASTA condición

//bloque de sentencias del ciclo

progresión de la condición

FIN DESDE HASTA

El funcionamiento de este ciclo es el siguiente:

1. Se inicializa la variable que controlará el ciclo, esto se considera solo la primera vez que se

entra al ciclo.

2. Se evalúa la condición.

a. Si el resultado es verdadero:

i. Se ejecuta el bloque de sentencias que conforman el cuerpo del ciclo. Incluida la

progresión del ciclo.

ii. Al llegar a la línea FIN DESDE HASTA, se debe regresar a la cabecera ciclo (línea

con la palabra DESDE), pero esta vez ya no se inicializa, sino que simplemente se va

a verificar la condición (Se repiten los pasos 2 y 3).

b. Si el resultado de evaluar la condición es falso, el cuerpo del ciclo no se ejecuta, sino que se

busca la línea de código con la palabraa FIN DE DESDE HASTA, para poder salirse del

ciclo y ejecutar la sentencia siguiente fuera del ciclo.

Ejemplo 3 Algoritmo para sumar 10 números, empleando el ciclo DESDE...HASTA

ALGORITMO Acumula10Numeros

VARIABLES num, suma, cont de tipo entero

Page 10: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 82

INICIO

IMPRIMIR “Programa para sumar 10 números”

suma = 0 //inicialización del acumulador

DESDE cont = 1 HASTA cont <=10 //cabecera del ciclo

IMPRIMIR “Introduce un número entero:”

LEER num

suma= suma + num //acumulador

cont = cont + 1 //progresion del ciclo

FIN DESDE HASTA //línea final del ciclo

IMPRIMIR “El resultado de la suma es: “, suma

FIN

Ejemplo 4 Algoritmo para obtener el promedio de tres calificaciones.

ALGORITMO promedioDeTres

VARIABLES calif, acum_calif, promedio son flotantes

cont es entero

INICIO

IMPRIMIR “Programa para Calcular el promedio de tres calificaciones”

acum_calif = 0 //inicialización del acumulador

DESDE cont = 1 HASTA cont <=3

IMPRIMIR “Introduce la ”, cont, “ calificación: “

LEER calif

acum_calif = acum_calif + calif //acumulador

cont = cont + 1 //progresion del ciclo

FIN DESDE HASTA

promedio = acum._calif / 3

IMPRIMIR “El promedio de las tres calificaciones es: “, promedio

FIN

Ejemplo 5 Algoritmo para mostrar los números pares positivos desde el 500 hasta el 20.

ALGORITMO ParesDe500a20

VARIABLES num, cont con enteros

INICIO

IMPRIMIR “Programa para imprimir los números pares del 500 al 20”

DESDE cont = 500 HASTA cont > 20

IMPRIMIR cont, “,”

cont = cont - 2

FIN DESDE HASTA

Page 11: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 83

IMPRIMIR cont

FIN

Ejemplo 6 Casos donde se indican las veces que se entra a cada ciclo

Ciclo Explicación del problema

DESDE a = 1 HASTA a <= 10

a = a + 1

FIN DESDE HASTA

Entra 10 veces (ya que va en incremento la progresión)

Al entra la variable toma el valor 1 y al salir del ciclo tiene el valor

11

DESDE a = 1 HASTA a < 10

a = a + 1

FIN DESDE HASTA

Entra 9 veces (ya que va en incremento la progresión)

Entra con el valor 1 y sale con el valor 10

DESDE a = 10 HASTA a >= 1

a = a - 1

FIN DESDE HASTA

Entra 10 veces (ya que va en decremento la progresión)

Entra con el valor 10 y sale con el valor 0

DESDE a = 10 HASTA a > 1

a = a - 1

FIN DESDE HASTA

Entra 9 veces (ya que va en decremento la progresión)

Entra con el valor 10 y sale con el valor 1

DESDE a = 10 HASTA a == 10

a = a - 1

FIN DESDE HASTA

Entra 1 sola vez, la progresión sirve para hacer que el valor de la

variable cambie, (pudiendo ser incremento o decremento), ya que si

no se incluye el ciclo se haría infinito.

Entra con el valor 10 y sale con el valor 9

DESDE a = 10 HASTA a <> 20

a = a + 1

FIN DESDE HASTA

Entra 11 veces, después de incrementarlo el valor por onceava vez la

variable toma el valor de 20, y se sale.

Entra con el valor 10 y sale con el valor 20

DESDE a = 15 HASTA a <= 23

a = a + 1

FIN DESDE HASTA

Entra 9 veces Entra con el valor 15 y sale con el valor 24 (ya que va

en incremento la progresión)

DESDE a = 15 HASTA a < 23

a = a + 1

FIN DESDE HASTA

Entra 8 veces. Entra con el valor 15 y sale con el valor 23

En los siguientes ejemplos se indican problemas en la definición de las partes importantes de

un ciclo.

Ejemplo 7 Casos de Ciclos infinitos

Ciclo Explicación del problema

DESDE a = 11 HASTA a >= 10

a = a + 1

FIN DESDE HASTA

La progresión va en incrementos, por lo que como valor de la

inicialización es mayor que la constante en la condición, nunca se

llegará a este valor, esto obvio debido a que no se están haciendo

decrementos para que puede llegar a tomar el valor 10. La variable va

tomando valores de: 11, 12, 13, 14, 15, … y la condición nunca se

hará valida

Page 12: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 84

DESDE a = 5 HASTA a <= 6

a = a - 1

FIN DESDE HASTA

El valor de la inicialización es menor que el de la condición y la

progresión es en decremento, por lo tanto la variable va tomando

valores de: 5, 4, 3, 2, 1, 0, -1, … - y nunca se hará valida la

condición

DESDE a = 1 HASTA a <= 6

a = a - 1

FIN DESDE HASTA

Debido a error en la progresión, que debería ir en incremento, ya que

es una cabecera apropiada para incrementar. Por lo tanto los valores

que va a tomar son: 1, 0, -1, -2, …- y la condición nunca se cumple-

DESDE a = 5 HASTA a >= 1

a = a + 1

FIN DESDE HASTA

Debido a error en la progresión, que debería ir en decremento, ya que

es una cabecera apropiada para decrementar. Por lo tanto los valores

que va a tomar son: 5, 6, 7, 8, 9, …- y nunca sale.

DESDE a = 10 HASTA a <> 20

a = a - 1

FIN DESDE HASTA

Debido a error en la progresión ya que al ir decrementandose el valor,

la variable nunca tomará el valor de 20, y entonces la condición nunca

se hace falsa.

Ejemplo 8 Casos donde nunca entra al ciclo

Cabecera del ciclo Explicación del problema

DESDE a = 11 HASTA a <= 10 Inicialización incorrecta, ya que el valor de la inicialización es

mayor que el de la condición, y esta no se cumple desde la primera

vez. DESDE a = 5 HASTA a <= 1

DESDE a = 5 HASTA a >= 6 Mala inicialización, ya que el valor inicial es menor que el indicado

en la condición, y esta no se cumple desde la primera vez.. DESDE a = 1 HASTA a >= 5

DESDE a = 5 HASTA a == 10 La condición no es apropiada ya que no tiene caso ejecutar un ciclo

en el que solo se pretenda entrar con un valor. En los ciclos las

condiciones con el operador de igualdad no son adecuadas. DESDE a = 10 HASTA a == 20

Page 13: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 85

7.1.4 Ciclo HACER MIENTRAS

Se usa cuando se requiere ejecutar un bloque de código solo si la condición se cumple la

primera vez, ya que lo primero que se verifica es la condición, y si no se cumple se impide entrar al

ciclo (se entra cero o más veces). Es muy adecuado cuando se quieren validar datos de entrada, ya

que en esos casos solo se entrará al ciclo en el momento en que los datos no sean válidos.

Generalmente como progresión del ciclo, se emplea una pregunta y la correspondiente

lectura de la variable, para poder hacer cambiar su valor, y así salirse o volver a entrar al ciclo.

Todo lo que se haga con DESDE…HASTA puede hacerse con HACER MIENTRAS, se

ocupará el contador para controlar el ciclo, adecuando la inicialización de la variable junto con la

condición y la progresión, para hacerlo funcionar un número determinado de veces (el contador debe

inicializarse antes y fuera del ciclo).

La sintaxis para escribir la sentencia es:

Iniciación de la variable de la condición

HACER MIENTRAS (condición)

//bloque de sentencias del ciclo

progresión de la condición

FIN DE HACER MIENTRAS

Su funcionamiento es el siguiente:

1. Se inicializa la variable que controlará al ciclo, fuera del el.

2. Al encontrar la primera línea que indica el ciclo (HACER MIENTRAS), se evalúa la

condición:

a. Si da verdadero:

i. se ejecuta el bloque de sentencias dentro del bloque del ciclo, incluida la

progresión de la condición.

ii. Al encontrar el fin del ciclo (FIN DE HACER MIENTRAS), se debe regresar a la

cabecera del ciclo (línea del HACER MIENTRAS). Es decir, se repiten el pasos 2..

b. Si da falso, se busca la línea de termino del ciclo (FIN DE HACER MIENTRAS) y se

sale del ciclo (Si desde la primera vez da falso, entonces nunca se ejecuto ninguna línea

del cuerpo del ciclo).

Veamos el mismo ejemplo realizado con DESDE…HASTA, en estos casos el control del

ciclo recae sobre el contador.

Ejemplo 9 Algoritmo para sumar 10 números, empleando el ciclo HACER MIENTRAS

ALGORITMO Prueba2

VARIABLES num, suma, cont de tipo entero

Page 14: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 86

INICIO

suma = 0 //inicialización del acumulador

cont = 1 //inicialización del contador para controlar el ciclo

HACER MIENTRAS (cont <=10)

IMPRIMIR “Programa para sumar 10 números enteros”

IMPRIMIR “Introduce un número entero: ”

LEER num

suma= suma + num //acumular

cont = cont + 1 //progresión

FIN HACER MIENTRAS

IMPRIMIR “El resultado de la suma es: “, suma

IMPRIMIR “Números que se leyeron: “, cont - 1

FIN

Deben coordinarse correctamente la inicialización y la condición, para hacer que se entre al

ciclo el número exacto de veces que se desea. Así si observemos que se entrará al ciclo 10 veces, y

el valor que provocará que no se entre más al ciclo es el 11 (con 1 entra, con 2 entra, con 3 entra,

con 4 entra, con 5 entra, con 6 entra, con 7 entra, con 8 entra, con 9 entra, con 10 entra, con 11 no

entra y sale con ese valor), por eso si queremos mostrar cuantas veces se entro al ciclo deberá

restársele un 1 al valor del contador

Veamos que pasa si inicializamos la variable en 0, y la condición se deja igual, y notaremos

que entrará 11 veces:

cont = 0 //inicialización del contador para controlar el ciclo

HACER MIENTRAS (cont <=10)

cont = cont + 1 //progresión

FIN HACER MIENTRAS

Observemos que se entrará al ciclo 11 veces, y el valor que provocará que no se entre más al

ciclo es el 11 (con 0 entra, con 1 entra, con 2 entra, con 3 entra, con 4 entra, con 5 entra, con 6 entra,

con 7 entra, con 8 entra, con 9 entra, con 10 entra, con 11 no entra y sale con ese valor), por lo

tanto, si necesitamos saber cuantas veces se entro a el, sería conveniente que se saliera cuando tome

el valor de 10, por lo que la variable se puede inicializar en 0, y la condición se deberá modifica para

poder ejecutar el ciclo 10 veces exactas (esto es hasta el valor 9 y salir con el valor 10):

cont = 0 //inicialización del contador para controlar el ciclo

HACER MIENTRAS (cont <10)

cont = cont + 1 //progresión

FIN HACER MIENTRAS

IMPRIMIR “Números que se leyeron: “, cont

Observemos que se entrará al ciclo 10 veces, y el valor que provocará que no se entre más al

ciclo es el 10 (con 0 entra, con 1 entra, con 2 entra, con 3 entra, con 4 entra, con 5 entra, con 6 entra,

con 7 entra, con 8 entra, con 9 entra, con 10 no entra y sale con ese valor), y así al salir del ciclo, el

contador guarda el valor exacto de cuantas veces entro.

El siguiente es un ejemplo de validación de datos de entrada, observe que nunca entrara al

Page 15: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 87

ciclo si introduce valores validos (1 al 12), por lo que la condición del ciclo esta formulada para

aceptar valores del - al 0 y del 13 al , esto es los valores no válidos, ya que el cuerpo del ciclo

volverá a pedir el dato si se introdujo incorrectamente.

Ejemplo 10 Algoritmo que permita capturar un entero que indique el mes.

ALGORITMO MesesEnLetra

VARIABLES mes es entero

INICIO

IMPRIMIR “Introduzca el número del mes para saber como se escribe:”

LEER mes

HACER MIENTRAS (mes <0 O mes >12)

IMPRIMIR “Valor invalido, solo debe ser entre 1 y 12”

IMPRIMIR “Introduzca nuevamente el mes:”

LEER mes

FIN HACER MIENTRAS

FIN

En el siguiente ejemplo de validación de datos de entrada observe que la condición del ciclo

esta formulada para aceptar valores distintos del rango de 0 al 10, esto es los valores inválidos (de -

a -1 y de 11 a ), ya que el cuerpo del ciclo volverá a pedir el dato si se introdujo

incorrectamente.

Ejemplo 11 Algoritmo para leer una calificación y validarla en el rango de 0 a 10.

ALGORITMO leerCali

VARIABLES calif son flotantes

INICIO

IMPRIMIR “Programa para leer una calificación y validarla en la escala del 0 al 10”

IMPRIMIR “Introduce la calificación: “

LEER calif //Inicialización

HACER MIENTRAS (calif < 0 O calif >10)

IMPRIMIR “Calificación incorrecta, vualva a “

IMPRIMIR “introducir la calificación: “

LEER calif /progresion

FIN HACER MIENTRAS

IMPRIMIR “Saludos”

FIN

En el siguiente ejemplo se emplea una pregunta para ejercer como progresión del valor de la

variable que controla el ciclo, en este caso, es necesario inicializar la variable con un valor por

defaul (que haga que se cumpla la condición), antes de entrar al ciclo. Es importante hacer notar que

para este ejemplo es mas adecuado el uso del ciclo HACER.

Page 16: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 88

Ejemplo 12 Algoritmo para obtener el promedio de calificaciones de los alumnos de un grupo.

ALGORITMO promedioDeTres

VARIABLES calif, acum_calif, promedio son flotantes

cont es entero

resp es caracter

INICIO

IMPRIMIR “Programa para calcular el promedio de calificaciones de “

IMPRIMIR “varios alumnos de un grupo.”

acum_calif = 0 //inicialización del acumulador de calificaciones

cont = 0 //inicialización del contador de alumnos

resp == „s‟ //inicialización con un valor por defaul

HACER MIENTRAS (resp==’s’)

IMPRIMIR “Introduce la”, cont, “ calificación: “

LEER calif

HACER MIENTRAS (calif < 0 O calif >10)

IMPRIMIR “Calificación incorrecta, vualva a “

IMPRIMIR “introducir la”, cont, “ calificación: “

LEER calif

FIN HACER MIENTRAS

acum_calif = acum_calif + calif //acumulador

cont = cont + 1 //contador de alumnos

IMPRIMIR “¿otro alumno?”

LEER resp

FIN HACER MIENTRAS

promedio = acum._calif / 3

IMPRIMIR “El promedio de las tres calificaciones es: “, promedio

FIN

Si se observa en el ejemplo anterior se integra el ciclo de validación de una calificación. Si

deseamos separar tareas entonces deberá crearse un módulo dedicado exclusivamene a para pedir

una calificación, y así evitamos tener ciclos anidados y errores en cascada por no cerrar

correctamente una sentencia de control.

Ejemplo 13 Algoritmo para obtener el promedio de calificaciones de los alumnos de un grupo, empleando una

función.

ALGORITMO promedioDeTres

VARIABLES acum_calif, promedio son flotantes

cont es entero

resp es caracter

INICIO

Page 17: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 89

IMPRIMIR “Programa para calcular el promedio de calificaciones de “

IMPRIMIR “varios alumnos de un grupo.”

acum_calif = 0 //inicialización del acumulador de calificaciones

cont = 0 //inicialización del contador de alumnos

//inicialización de variable que controla el ciclo con un valor por defaul

resp == „s‟

HACER MIENTRAS (resp==‟s‟ )

acum_calif = acum_calif + INVOCA LeerCalif(cont) //acumulador

cont = cont + 1 //contador de alumnos

IMPRIMIR “¿otro alumno?”

LEER resp //progresion

FIN HACER MIENTRAS

promedio = acum._calif / 3

IMPRIMIR “El promedio de las tres calificaciones es: “, promedio

FIN

LeerCalif(c es entero)

VARIABLE Calif es flotante

INICIO

IMPRIMIR “Introduce la”, c, “ calificación: “

LEER calif

HACER MIENTRAS (calif < 0 O calif >10)

IMPRIMIR “Calificación incorrecta, vualva a “

IMPRIMIR “introducir la”, c, “ calificación: “

LEER calif

FIN HACER MIENTRAS

DEVOLVER calif

FIN

Page 18: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 90

7.1.5 Ciclo HACER

Se emplea cuando no se sabe la cantidad exacta de veces que se ejecutarán las sentencias

contenidas en el ciclo, pero se desea hacer que se entre al menos una vez. Usado por ejemplo

para:

Mostrar las calificaciones de varios alumnos que ingresen al salón,

Mostrar un mensaje hasta que el usuario elija que no lo quiere ver más,

Calcular le valor medio de la estatura de los alumnos de determinado curso,

Calcular el importe de la venta de varios artículos.

Controlar la ejecución de un menú

Su uso, a diferencia que el de los otros dos ciclos, es más generalizado para contener el

código completo de un programa o tarea específica que se requiera repetir, ya que la ventaja que

presenta su estructura permite que se ejecute al menos una vez el funcionamiento y luego

dependiendo de la elección del usuario, puede salirse del programa.

Todo lo que se haga con DESDE…HASTA puede hacerse con HACER, adecuando la

inicialización del contador con la condición y la progresión, para hacerlo funcionar un número

determinado de veces (el contador debe inicializarse antes y fuera del ciclo). Sin embargo, el trabajo

normal de este ciclo no es para un número conocido de veces, sino para cuando no se sabe cuantas

veces será necesario ejecutar el bloque de código, por lo que comúnmente como progresión se

emplea la lectura del valor de la variable encargada de controlar el ciclo, con su correspondiente

pregunta, para poder así cambiar su valor, cada vez que entra al ciclo.

La sintaxis para escribir la sentencia es:

inicialización

HACER

<sentencias de la repetitiva>

progresión de la condición

MIENTRAS (condición)

Funciona como se explica a continuación:

1. El ciclo comienza con la palabra HACER, es decir se entra al ciclo, y se ejecutan las

sentencias del cuerpo del ciclo., incluida la progresión, la cual se encuentra generalmente

antes de terminar el ciclo (es común el uso de una pregunta y la lectura de un valor).

2. Al encontrar la palabra MIENTRAS, esta indica la última línea del ciclo en la cual se

encuentra la condición, por lo que se evalúa.

a. Si de verdadero, se ejecuta nuevamente el bloque de sentencias del ciclo, es decir, se

regresa al paso 1.

b. Si da falso, se sale del ciclo y se continúa en la sentencia que se encuentre después de

la palabra MIENTRAS.

Page 19: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 91

Ejemplo 14 Algoritmo para sumar 10 números, empleando el ciclo HACER

ALGORITMO Prueba2

VARIABLES num, suma, cont de tipo entero

INICIO

IMPRIMIR “Programa para sumar 10 números enteros”

suma = 0 //acumulador

cont = 1 //inicialización de la variable que controla el ciclo,

HACER

IMPRIMIR “Introduce un número entero: ”

LEER num

suma= suma + num //incremento del acumulador

cont = cont + 1 //progresión

MIENTRAS (cont <= 10)

IMPRIMIR “El resultado de la suma es: “, suma

MPRIMIR “Números que se leyeron: “, cont

FIN

Lo que se indica en el ejemplo anterior no es el uso normal del ciclo, aunque como se ve,

puede obligarse a trabajar de esa manera; ya que se incluye un contador que es inicializado fuera del

ciclo para que al trabajar la progresión antes de checar la condición, esta tome un valor que permita

salir cuando se cumpla la lectura de los 10 números. Debe tenerse en cuenta que la condición se

verifica a lo último del ciclo, y que al menos una vez ya se entro al mismo. Así vemos que si se

inicializa en 1: entra una vez, toma el valor de 2 y entra nuevamente, con 3 entra, con 4 entra, con 5

entra, con 6 entra, con 7 entra, con 8 entra, con 9 entra, con 10, entra, con 11 se sale del ciclo, por lo

que vemos que entra efectivamente 10 veces.

En el ejemplo siguiente se observa el trabajo común de este ciclo, cuando no se sabe cuantas

veces se ejecutarán las acciones que contiene, en este ejemplo no se sabe cuantos alumnos tiene el

grupo por lo que es necesario tener un contador, para saber de cuantos alumnos se capturó la

calificación, y luego poderlo usar para calcular el promedio, sin embargo ese contador no es quien

controla el ciclo, como se observa, la progresión se realiza preguntando simplemente si hay o no

otro alumno a capturar. Se incluye primero el algoritmo sin módulo y luego con módulo, para tener

la comparativa de ambos códigos.

Observese los ciclos anidados cuando no se usa módulo.

Ejemplo 15 Algoritmo para obtener el promedio de calificaciones de los alumnos de un grupo.

ALGORITMO PromedioDelGrupo

VARIABLES calif, acum_calif, promedio son flotantes

cont es entero

resp es caracter

INICIO

IMPRIMIR “Programa para calcular el promedio de calificaciones de “

IMPRIMIR “varios alumnos de un grupo.”

Page 20: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 92

acum_calif = 0 //acumulador

cont = 0 //contador de alumnos

HACER

IMPRIMIR “Introduce la”, c, “ calificación: “

LEER calif

HACER MIENTRAS (calif < 0 O calif >10)

IMPRIMIR “Calificación incorrecta, vualva a “

IMPRIMIR “introducir la”, c, “ calificación: “

LEER calif

FIN HACER MIENTRAS

acum_calif = acum_calif + calif //acumulador

cont = cont + 1 //contador de alumnos

IMPRIMIR “¿otro alumno?”

LEER resp //progresión

MIENTRAS (resp==’s’)

IMPRIMIR “Los alumnos capturados fueron: “, cont

promedio = acum._calif / cont

IMPRIMIR “El promedio de calificaciones es: “, promedio

FIN

A continuación observe como el uso del módulo simplifica el algoritmo, y permite separar

funcionalidades.

Ejemplo 16 Algoritmo para obtener el promedio de calificaciones de los alumnos de un grupo.

ALGORITMO PromedioDelGrupo

VARIABLES acum_calif, promedio son flotantes

cont es entero

resp es caracter

INICIO

IMPRIMIR “Programa para calcular el promedio de calificaciones de “

IMPRIMIR “varios alumnos de un grupo.”

acum_calif = 0 //acumulador

cont = 0 //contador de alumnos

HACER

acum_calif = acum_calif + INVOCA LeerCalif(cont) //acumulador

cont = cont + 1 //contador de alumnos

IMPRIMIR “¿otro alumno?”

LEER resp //progresión

MIENTRAS (resp==’s’)

IMPRIMIR “Los alumnos capturados fueron: “, cont

Page 21: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 93

promedio = acum._calif / cont

IMPRIMIR “El promedio de calificaciones es: “, promedio

FIN

LeerCalif(c es entero)

VARIABLE Calif es flotante

INICIO

IMPRIMIR “Introduce la”, c, “ calificación: “

LEER calif

HACER MIENTRAS (calif < 0 O calif >10)

IMPRIMIR “Calificación incorrecta, vualva a “

IMPRIMIR “introducir la”, c, “ calificación: “

LEER calif

FIN HACER MIENTRAS

DEVOLVER calif

FIN

En este caso, como la variable contador (cont) se empleará para saber cuantos alumnos en

total se capturaron, es necesario inicializarlo en cero, y así al salirse del ciclo, se tiene el valor

exacto (si se inicializará en 1 se tendría un valor de más y seria necesario restar un 1 al valor del

contador de alumnos). Igualmente se incluye la función que ya se había realizado anteriormente para

leer una calificación, observe que no hay cambio en la llamada a la función ni en la definición de la

función, lo único que varia en el ejemplo es el tipo de ciclo empleado, donde el ciclo HACER es el

más adecuado para dar solución a este enunciado de problema.

Ejemplo 17 Algoritmo que calcule estatura promedio de los alumnos de un curso.

ALGORITMO ValorMedioAlturas

VARIABLES estatura, media son flotantes

cont_alum es entero

resp es caracter

INICIO

IMPRIMIR “Programa para calcular el promedio de estaturas de “

IMPRIMIR “varios alumnos de un grupo.”

media = 0 //acumulador

cont_alum = 0 //contador de alumnos

HACER

estatura = INVOCA LeerEstatura()

media = media + estatura //acumulador de calificaciones

cont_alum = cont_alum + 1 //contador de alumnos

Page 22: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 94

IMPRIMIR “¿otro alumno?”

LEER resp //progresión

MIENTRAS (resp==’s’)

media = media / media

IMPRIMIR “La media de altura de “, cont_alum

IMPRIMIR “alumnos es: “, media

FIN

LeerCalif()

VARIABLE est es flotante

INICIO

IMPRIMIR “¿Cuánto es tu estarura en metros?

LEER est

HACER MIENTRAS (est < 0 O est >2.5)

IMPRIMIR “Estatura incorrecta, vualva a introducir “

IMPRIMIR “su estatura (entre 0 a 2.5 metros): “

LEER est

FIN HACER MIENTRAS

DEVOLVER est

FIN

Vemos que si la variable acumuladora no se empleará para algún otro cálculo, esa misma

variable podemos emplear para hacer el cálculo de la media.

El mismo ejemplo pero con ciclos anidados es el siguiente, notese la importancia que toma la

modularidad al separar las tareas y los posibles problemas en cascada que ocaciona la anidación de

sentencias de control.

Ejemplo 18 Diseñar un algoritmo que calcule le valor medio de la altura de los alumnos de un curso, validando la

altura

ALGORITMO ValorMedioAlturas

VARIABLES estatura, media son flotantes

cont_alum es entero

resp es caracter

INICIO

media = 0 //acumulador

cont_alum = 0 //contador de alumnos

HACER

IMPRIMIR “Introduce la altura del alumno No. ”, cont_alum

LEER estatura

HACER MIENTRAS (estatura < 1 O estatura > 2)

IMPRIMIR “altura fuera de un rango valido”

Page 23: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ...blopez/ProgramacionEstructurada/...marcada con la etiqueta indicada en la sentencia incondicional, saltándose así las sentencias que

7 Sentencias de control

M.C. Bertha López Azamar 95

IMPRIMIR “introdúzcala nuevamente:”

LEER estatura

FIN DE HACER MIENTRAS

media = media + estatura //acumulador de calificaciones

cont_alum = cont_alum + 1 //contador de alumnos

IMPRIMIR “¿otro alumno?”

LEER resp //progresión

MIENTRAS (resp==’s’)

media = media / cont_alum

IMPRIMIR “La media de altura de “,cont_alum

IMPRIMIR “alumnos es: “,media

FIN

Actividad 1 Realice algoritmos para los enunciados siguientes, no olvide realizar el análisis respectivo.

1. Algoritmo para capturar 20 números enteros Al final debe mostrar la suma de los

valores que se capturaron.

2. Algoritmo para capturar tantos números enteros como el usuario desee. Al final debe

mostrar la suma de los valores que se capturaron.

3. Algoritmo para mostrar la tabla de multiplicar de un número positivo cualquiera.

4. Algoritmo para mostrar la tabla de multiplicar de un número positivo cualquiera,

desde el número de inicio que se desee, hasta el número final que se desee.

5. Algoritmo que permita capturar un número y luego imprima en pantalla, las veces

que el mismo número indica.

6. Algoritmo que permita capturar un número y luego lo imprima en pantalla 50 veces.