Download Unidad VI: Sentencias repetitivas

Document related concepts

PSeInt wikipedia , lookup

Bucle infinito wikipedia , lookup

Pseudocódigo wikipedia , lookup

Bucle do wikipedia , lookup

Algoritmo de propagación de creencias wikipedia , lookup

Transcript
2013
UNIDAD IV:
Sentencias Repetitivas
Departamento de Computación UNAN-León
Unidad VI: Sentencias repetitivas
UNIDAD IV: Sentencias repetitivas
4.1
INTRODUCCIÓN:
En la práctica es muy común encontrar algoritmos cuyas operaciones deben realizarse un
número repetitivo de veces. A este conjunto de instrucciones que se ejecutan repetidamente se
le conoce como bucle o ciclo.
Un bucle debe terminar de ejecutarse luego de un número finito de veces, por lo que se debe
evaluar en cada iteración (repetición) si el bucle debe o no detenerse. A esta evaluación se le
conoce como: condición de parada.
La condición de parada normalmente se indica al inicio o al final del bucle, de acuerdo a esta
premisa podemos clasificar a las sentencias repetitivas en dos grupos:
a. Con la condición de parada al inicio
b. Con la condición de parada al final
Dentro del grupo de sentencias repetitivas con la condición de parada al inicio tenemos a la
sentencia Mientras y a la sentencia Para. Y dentro del grupo de sentencias con la condición al
final tenemos a la sentencia Repetir.
4.2
Sentencia Mientras
La estructura algorítmica Mientras es quizás la estructura de repetición más sencilla, y sin
embargo es considerada por muchos como la más potente. Su función consiste en ejecutar un
número determinado de veces una secuencia de instrucciones, sin embargo este número de
repeticiones depende de la condición de parada que contenga el propio ciclo. Por lo tanto el
ciclo Mientras se ejecutara mientras la condición que se evalúa resulte ser verdadera.
La forma de uso de la sentencia es la siguiente:
Mientras expresion_logica Hacer
secuencia_de_acciones
FinMientras
La estructura repetitiva Mientras permite ejecutar las instrucciones mientras la expresión_lógica
sea verdadera. Si la primera vez que se evalúa la condición resulta falsa, la sentencia no se
ejecutará ninguna vez.
1
2
3
4
5
6
7
8
Ejemplo:
Proceso Ejemplo01_Mientras
Definir contador Como Entero;
contador <- 1;
Mientras contador <= 10 Hacer
Escribir "Repeticion numero ", contador;
contador <- contador + 1;
Fin Mientras
FinProceso
2
Unidad VI: Sentencias repetitivas
Explicación del algoritmo:
Línea 2, se declara una variable llamada contador la cual se utilizará para controlar las veces que
se ejecutara el ciclo Mientras.
Línea 3, se le da un valor inicial a la variable contador
Línea 4, inicia el ciclo Mientras cuya condición de parada esta determinada por la expresión
lógica contador <= 10. El ciclo Mientras se ejecutara mientras la variable contador posea un
valor menor o igual a 10.
Línea 5, se presenta un rotulo en pantalla por medio de la sentencia Escribir.
Línea 6, la variable contador es incrementada en 1. Si este incremento no esta presente el ciclo
Mientras se ejecutara indefinidamente.
Diagrama de flujo:
Resultado de la ejecución:
Como se puede observar el ciclo Mientras se ejecuta en diez ocasiones, estas repeticiones están
dadas por el valor de la variable contador.
Importante
En la estructura Mientras el número de veces que se ejecute
el bucle está determinado por la condición. Al ejecutar la
instrucción mientras, lo primero que se evalúa es la
condición
 Si la condición es falsa, no se toma ninguna acción y
se prosigue con la instrucción siguiente al bucle.
 Si la condición es verdadera, se ejecuta el cuerpo
del bucle y después se vuelve al inicio del bucle y se evalúa
nuevamente la condición.
3
Unidad VI: Sentencias repetitivas
4.2.1
Ejemplos estructura repetitiva Mientras
Ejemplo1: Realizar un algoritmo que por medio de la estructura repetitiva Mientras presente la
suma de los números comprendidos en el rango de 1-100.
Variables a utilizar
- contador: Variable que llevara el control de las iteraciones desde el número 1 al número
100
- suma: Variable en la que se irá almacenando la suma de los valores de la variable
contador.
Datos de entrada:
- Este algoritmo no requiere de la introducción de datos por parte del usuario.
Datos de salida:
- Al terminar la ejecución del algoritmo se ha de presentar el valor de la variable suma.
Procedimiento:
- Inicializar a la variable contador a 1 (Número inicial del rango a sumar)
- Inicializar el valor de la variable suma al valor 0
- Realizar el ciclo Mientras, siempre y cuando el valor de la variable contador sea menor o
igual a 100.
- Dentro del ciclo Mientras se realiza la suma del número actual (contador) con el valor
actual de la variable suma.
- Finalizado el ciclo presentar el resultado en pantalla
1
2
3
4
5
6
7
8
9
10
Solución
Proceso mientras_ejemplo1
Definir contador, suma Como Entero;
contador<-1;
suma<-0;
Mientras contador <= 100 Hacer
suma<-suma + contador;
contador <- contador + 1;
Fin Mientras
Escribir "La suma de los numeros del 1-100 es: ", suma;
FinProceso
4
Unidad VI: Sentencias repetitivas
Diagrama de flujo
Resultado
Explicación del algoritmo:
Línea 2, se declaran las variables a utilizar en el algoritmo.
Línea 4, el valor de la variable contador es puesto 1 con el fin de recorrer el ciclo desde 1 a 100.
Línea 5, el valor de la variable suma es puesto a 0 para que este posee un valor inicial antes de
utilizarlo dentro del ciclo.
Línea 7, se define el ciclo Mientras de tal forma que la condición de parada es contador <= 100
lo que significa que el ciclo se ejecutara siempre y cuando el valor de la variable contador sea
menor o igual a 100.
Línea 8, la variable suma tomara el valor que resulte luego de la evaluación de la expresión.
Línea 9, se incrementa en 1 el valor de la variable contador.
Línea 12, presenta el resultado en pantalla.
5
Unidad VI: Sentencias repetitivas
Ejemplo2: Realizar un algoritmo que por medio de la estructura repetitiva Mientras obtenga el
valor mayor ingresado en una serie de 10 números ingresados por parte del usuario.
Variables a utilizar
- contador: Variable que llevara el control de las 10 iteraciones.
- Valor_mayor: Variable en la que se almacena el valor mayor ingresado por parte del
usuario
- num: Se utilizara para capturar los números ingresados por parte del usuario.
Datos de entrada:
- El usuario va a introducir los valores los cuales se van almacenando en la variable num.
Datos de salida:
- Al terminar la ejecución del algoritmo se ha de presentar el valor mayor de los
introducidos por parte del usuario.
Procedimiento:
- Se solicitara al usuario ingrese el primer elemento.
- Este primer elemento se asume es el mayor, por lo tanto la variable valor_mayor tomara
el valor de este primer elemento ingresado.
- Por medio de un ciclo procederemos a pedir el restante de los elementos comparando
cada uno con el valor de la variable valor_mayor y el elemento ingresado. Si el valor del
elemento ingresado es mayor que el valor de la variable valor_mayor, se reemplaza el
valor de este último por el valor ingresado por el usuario.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Solución
Proceso mientras_ejemplo2
Definir contador, num, valor_mayor
Como Entero;
Escribir "Ingrese el elemento 1 ";
Leer valor_mayor;
contador<-2;
Mientras contador <= 10 Hacer
Escribir "Ingrese el elemento ", contador ;
Leer num;
Si num > valor_mayor Entonces
valor_mayor <- num;
FinSi
contador <- contador + 1;
FinMientras
Escribir "El valor mayor introducido es: ", valor_mayor;
FinProceso
6
Unidad VI: Sentencias repetitivas
Diagrama de flujo
Resultado
7
Unidad VI: Sentencias repetitivas
Explicación del algoritmo
Línea 2, se declaran las variables a utilizar en el algoritmo.
Línea 4, se solicita al usuario que ingrese un número
Línea 5, captura el valor ingresado por parte del usuario, como se puede observar este valor es
almacenado por la variable valor_mayor. Esto es, por que asumimos que el valor mayor es el
primero ingresado por el usuario y así tener un valor de comparación para los futuros ingresos
de valores por parte del usuario.
Línea 7, la variable contador es puesta al valor 2, puesto que ya se solicito el primer número.
Línea 9, inicia el ciclo Mientras con la condición de parada contador<=10
Línea 10 y línea 11, se solicita de nuevo al usuario que ingrese los un valor y se captura en la
variable num
Línea 13, se comparan los valores de las variables num y valor_mayor con el fin de identificar si
el valor capturado por num es mayor que el valor mayor actual. Si esta comparación resulta ser
verdadera se ejecutara la línea 14.
Línea 17, se incrementa el valor de la variable contador en uno.
Línea 20, se presenta en pantalla el valor correspondiente al número mayor ingresado por parte
de usuario.
Ejemplo3: Realizar un algoritmo que por medio de la estructura repetitiva Mientras presente en
pantalla la tabla de multiplicar de un número ingresado por parte del usuario.
Variables a utilizar
- cuenta: Variable que llevara el control de las iteraciones, en este caso serán 12
iteraciones.
- num: Esta variable almacena el número ingresado por parte del usuario.
Datos de entrada:
- El usuario va a introducir el número del cual desea que se le muestre la tabla de
multiplicar, este valor será almacenado en la variable num.
Datos de salida:
- Presentar en pantalla la tabla de multiplicar del número ingresado por parte del usuario.
Procedimiento:
- Solicitar el numero al usuario
- Por medio del ciclo Mientras ir presentando en pantalla el resultado de multiplicar a la
variable cuenta con el numero (num) ingresado por parte del usuario
1
2
3
4
5
6
7
8
9
10
11
Solución
Proceso Mientras_Ejemplo3
Definir cuenta, num Como Entero;
Escribir "Ingrese el numero ";
Leer num;
cuenta<-1;
Mientras cuenta <= 12 Hacer
Escribir num, " x ", cuenta, " = ", cuenta*num;
cuenta<-cuenta+1;
FinMientras
FinProceso
8
Unidad VI: Sentencias repetitivas
Diagrama de flujo
Resultado
Explicación del algoritmo:
Línea 2, se declaran las variables a utilizar en el algoritmo.
Líneas 3 y 4, se solicita al usuario que ingrese un número y se captura el valor ingresado por
parte del usuario en la variable num
Línea 6, la variable cuenta es puesta al valor 1esta será la encargada de llevar el control de las
iteraciones del ciclo.
Línea 7, inicia el ciclo Mientras con la condición de parada cuenta<=12
Línea 8, se presenta el mensaje en pantalla indicando.
Línea 9, se incrementa el valor de la variable cuenta en uno.
9
Unidad VI: Sentencias repetitivas
4.3
Estructura repetitiva Para:
La estructura algorítmica Para es utilizada con frecuencia en la construcción de algoritmos en los
que se conoce a priori la cantidad de iteraciones que se deben realizar el ciclo.
La forma de uso de la estructura repetitiva Para es la siguiente:
Para variable_numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer
secuencia_de_acciones
Fin Para
Donde:
Variable_numerica: Corresponde a la variable que se utilizara para controlar las repeticiones del
ciclo Para.
Valor_inicial: Es el valor con el cual se iniciara el ciclo de repeticiones
Valor_final: Corresponde al número de iteraciones que se llevaran a cabo por parte del ciclo
Para.
Paso: Indica la forma en que el ciclo se comporta, esto es, si el ciclo se ejecutara en orden
ascendente (incremento) o en orden descendente (decremento). Este incremento o decremento
afectara el valor de la variable_numerica con el fin de alcanzar el valor_final.
1
2
3
4
5
6
Ejemplo
Proceso Ejemplo01_Para
Definir contador Como Entero;
Para contador<-1 Hasta 10 Con Paso 1 Hacer
Escribir 'Repeticion numero ',contador
Fin Para
FinProceso
Explicación del algoritmo
Línea 2, se declara la variable contador la cual se utilizara para controlar el numero de
iteraciones del ciclo.
Línea 3, inicia el ciclo Para, dando un valor inicial de 1 a la variable contador, a demás se
especifica cuál será el valor final de la variable contador , en este caso 10. Luego se indica que la
variable contador irá incrementando en uno con el fin del alcanzar al valor final.
Línea 4: Presenta el mensaje en pantalla
Diagrama de flujo
10
Unidad VI: Sentencias repetitivas
Resultado de la ejecución
Importante
4.3.1
La estructura algorítmica Para se utiliza normalmente en
los casos en el que el número de iteraciones es fijo y se
conoce de antemano.
Esta estructura ejecuta las acciones del cuerpo del bucle
un número especificado de veces y controla de modo
automático (implícito) el número de iteraciones o pasos
a través del cuerpo del bucle.
Ejemplos estructura repetitiva Para
Ejemplo1: Escriba un algoritmo que solicite 20 números enteros y que cuente cuantos ceros se
ingresaron.
Variables a utilizar
- contador: Variable que llevara el control de las iteraciones, en este caso serán 20
iteraciones.
- num: Esta variable almacena el número ingresado por parte del usuario.
- ceros: Sera la variable que llevara el control de la cantidad de ceros ingresados
Datos de entrada:
- El usuario va a introducir una serie de números, cada uno de los cuales se ira
almacenando en la variable num.
Datos de salida:
- Presentar en pantalla el valor de la variable ceros quien posee la cantidad de ceros
ingresados por el usuario, al inicio esta variable posee el valor inicial 0.
Procedimiento:
- Darle un valor inicial a la variable ceros.
- Por medio del ciclo Para solicitar al usuario ingrese una serie de 20 valores
- Verificar si el valor ingresado es cero, si la comparación resulta ser verdadera se
incrementará en uno el valor de la variable ceros.
11
Unidad VI: Sentencias repetitivas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Solución:
Proceso para_ejemplo1
Definir contador, num, ceros
Como Entero;
ceros<-0;
Para contador<-1 Hasta 20 Con Paso 1 Hacer
Escribir Sin Saltar "Ingrese el elemento ", contador;
Leer num;
Si num = 0 Entonces
ceros<-ceros+1;
FinSi
FinPara
Escribir "Se ingresaron un total de: ", ceros, " ceros";
FinProceso
Diagrama de flujo
12
Unidad VI: Sentencias repetitivas
Resultado
Explicación del algoritmo:
Línea 2, Se define las variables a utilizar.
Línea 4, La variable ceros toma el valor inicial 0, indicando que no se han ingresados elementos
con el valor cero.
Línea 6, Inicia el ciclo Para, con la variable contador con un valor inicial de 1 y cuyo valor final
será 20. Además se indica que la variable contador irá aumentando su valor en uno
Línea 7 y 8, se le solicita al usuario ingrese un número y se captura su valor almacenado dicho
valor en la variable num.
Línea 10, se verifica si el número ingresado es igual a cero, si esto es verdadero se incrementa
en uno el valor de la variable ceros (esto de hace en el línea 11).
Línea 15, Se presente en pantalla el total de números creso ingresados.
Ejemplo2: Escriba un algoritmo que solicite 10 números enteros y que muestre en pantalla el
promedio de los números ingresados.
Variables a utilizar
- contador: Variable que llevara el control de las iteraciones, en este caso serán 10
iteraciones.
- num: Esta variable almacena el número ingresado por parte del usuario.
- suma: Sera la variable que almacena la suma de todos los números ingresados.
- promedio: Almacena el promedio de todos los números ingresados.
Datos de entrada:
- El usuario va a introducir una serie de números, cada uno de los cuales se ira
almacenando en la variable num.
13
Unidad VI: Sentencias repetitivas
Datos de salida:
- Presentar en pantalla el promedio de los números.
Procedimiento:
- Darle un valor inicial a la variable suma, el valor será 0.
- Por medio del ciclo Para solicitar al usuario ingrese una serie de 10 valores
- Dentro del ciclo Para se irán sumando los valores ingresados
- Al terminar el ciclo se calculara el promedio correspondiente
1
2
3
4
5
6
7
8
9
10
11
12
13
Solución
Proceso para_ejemplo2
Definir contador, num, suma Como Entero;
Definir promedio como real;
suma<-0;
Para contador<-1 Hasta 10 Con Paso 1 Hacer
Escribir Sin Saltar "Ingrese el elemento ", contador;
Leer num;
suma<-suma + num;
FinPara
promedio<-suma/10;
Escribir "El promedio es: ", promedio;
FinProceso
Diagrama de flujo
14
Unidad VI: Sentencias repetitivas
Resultado
Explicación del algoritmo
Línea 2 y 3, se declaran las variables a utilizar
Línea 5, la variable suma toma el valor inicial cero.
Línea 7, Inicia el ciclo Para, con la variable contador con un valor inicial de 1 y cuyo valor final
será 10. Además se indica que la variable contador irá aumentando su valor en uno
Líneas 8 y 9, se solicita al usuario que ingrese un valor, y este es almacenado en la variable num.
Línea 11, se realiza la suma del valor actual de la variable suma con el numero ingresado por el
usuario. El resultado de esta operación es almacenado dentro de la misma variable suma.
Línea 14, se calcula el promedio de los valores ingresados.
Línea 16, se presenta en pantalla el promedio de los números ingresados.
Ejemplo3: Escriba un algoritmo que muestre en pantalla los números en el rango de 1 a 20 pero
en orden descendente.
Variables a utilizar
- contador: Variable que llevara el control de las iteraciones, en este caso serán 20
iteraciones.
Datos de entrada:
- El usuario no ingresara ningún dato para el funcionamiento del algoritmo.
Datos de salida:
- Se presentara cada uno de los números indicados en el rango de 1-20 pero en orden
inverso.
Procedimiento:
- Por medio del ciclo Para iniciaremos con el valor 20 e iremos decrementando en uno el
valor de la variable de control llamada contador.
- Dentro del ciclo Para se irán presentando el valor correspondiente a la variable
contador.
15
Unidad VI: Sentencias repetitivas
1
2
3
4
5
6
Solución
Proceso Para_Ejemplo03
Definir contador Como Entero;
Para contador<-20 Hasta 1 Con Paso -1 Hacer
Escribir contador;
FinPara
FinProceso
Diagrama de flujo
Resultado
16
Unidad VI: Sentencias repetitivas
Explicación del algoritmo
Línea 2, se declaran las variables a utilizar
Línea 3, Inicia el ciclo Para, con la variable contador con un valor inicial de 20 y cuyo valor final
será 1. Además se indica que la variable contador irá disminuyendo su valor en uno
Línea 4, se presenta en pantalla el valor de la variable contador
4.4
Ejercicios Propuestos
Ejercicio1: Elabore un algoritmo que presente los números pares que estén en el rango de 1 a
100. Realice dos versiones de este algoritmo una utilizando el ciclo Mientras y la otra utilizando
el ciclo Para.
Ejercicio2: Desarrollar un algoritmo que permita ingresar n números enteros y luego nos
informe cuántos valores fueron pares y cuántos impares.
Ejercicio3: Utilizando el ciclo Para, calcule la suma de los 500 primeros números enteros.
Ejercicio4: Diseñe un algoritmo que lea una lista de notas de los N estudiantes de Lógica de
programación y cuente el total de aprobados y el total de reprobados.
Ejercicio5: Sumar los números enteros positivos múltiplos de 5 y que se encuentre en el rango
de 1-100.
Ejercicio6: Elaborar un algoritmo que solicite la edad de 20 personas y que muestre cuántos de
ellos son mayores de edad y cuántos son menores de edad.
Ejercicio7: Elaborar un algoritmo en pseudocódigo que calcule la suma de los números múltiplos
de 3 y 7 a partir del número 9 y finaliza en el numero 45, no deben incluirse en la suma los
números comprendidos entre 21 y 27.
Ejercicio8: Realice un programa que muestre en pantalla la suma de los números que estén en el
rango de 1 a N, siendo N un número ingresado por el usuario.
Ejercicio9: Realice un algoritmo que calcule la potencia de un número, el usuario ingresara el
número correspondiente a la base y el número correspondiente al exponente. Utilice un ciclo
que permita realizar el cálculo en cuestión. Ejemplo: 24 = 16, esto es 2*2*2*2
Ejercicio10: Desarrollar un algoritmo que por medio de la sentencia repetitiva Para que muestre
la tabla de multiplicar de un número dado por el usuario.
17