Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Clase 06 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

Introducción a la Programación

Universidad Nacional de Luján

#CLASE 6: La estructura iterativa

OBJETIVO
En esta clase, se inicia al estudiante en la tercera y última estructura de control que provee la
programación estructurada: la estructura iterativa.
Asimismo, se explican todas sus variantes y se proveen ejemplos y herramientas para facilitar el
aprendizaje.

CONTENIDOS DE LA CLASE

#6.1 Introducción al concepto de estructura iterativa o repetitiva


Si bien podríamos resolver la mayoría de los problemas sin conocer la estructura repetitiva o
iterativa, resultaría muy tedioso, por ejemplo, desarrollar un programa que sume 100 números con
los aprendido hasta el momento.

La estructura repetitiva es utilizada cuando se necesita que un conjunto de instrucciones (bloque)


se ejecuten un cierto número finito de veces.

Aunque la mayoría de los autores se refieren a esta estructura como iterativa o repetitiva de manera
indistinta, comienza a haber consenso en diferenciarlas de acuerdo al tipo de condición de corte
para la misma. Mientras que en las estructuras repetitivas el número de veces a ejecutar el bloque
de instrucciones que forman parte de la estructura está perfectamente pre-establecido, en las
estructuras iterativas el número de ciclos que se ejecutará el bloque se determina por la evaluación
de una condición determinada.

A continuación profundizaremos nuestro estudio sobre las estructuras mas populares:


• Para (repetitiva),
• Mientras (iterativa),
• Repetir-Hasta (iterativa).
Introducción a la Programación
Universidad Nacional de Luján

#6.2 Estructura Para


La estructura Para se utiliza para iterar en aquellos casos que de antemano se conoce la cantidad
de ciclos a realizar. Por ejemplo, si se necesitara ingresar las notas de 10 alumnos y calcular su
promedio.

La sintaxis de la Estructura Para es la siguiente:

Para <variable_de_control>←<expresión1> Hasta <expresion2> Hacer


instrucción 1
instrucción 2
.......................
instrucción n
Fin Para

Al ejecutarse la orden Para por primera vez, a la variable de control se le asigna un valor inicial
(expresion1). Inmediatamente se ejecutan las instrucciones del bloque asociado y luego se verifica
si el valor final (expresión2) es mayor que el valor inicial (expresión); en caso de no ser así se
incrementa o decrementa automáticamente el contenido de la variable de control en uno y se
vuelve a ejecutar el bloque de instrucciones, hasta que la variable de control sea mayor/menor que
el valor final referido en la expresión2, situación en la que se finaliza la estructura Para y se
continua con la próxima instrucción que continua al bloque antedicho.

Ahora que tenemos un panorama general del funcionamiento, explicaremos paso a paso como se
evalúa esta estructura:
• La variable de control se inicializa una sola vez, al inicio de la primera iteración. Luego,
dentro del bloque de instrucciones, no puede alterarse el valor de la variable de control.
• El valor de la variable de control se evalúa en cada iteración con respecto al valor final
establecido.
• El incremento o decremento se realiza antes de cada evaluación.
• Al finalizar la ejecución de una estructura de control Para, la variable de control está
instanciada con el valor de expresión2 más un incremento o decremento, según
corresponda.
Introducción a la Programación
Universidad Nacional de Luján

Ahora se propone una situación pasible de utilizar la estructura antes explicada y su


correspondiente resolución mediante PSeint:

Enunciado:
Se ingresan por teclado 10 números enteros. Preparar un algoritmo que cuente y muestre por
pantalla la cantidad de negativos, positivos y ceros que se ingresaron.

Resolución con PSeint:

Figura 25. Utilización de la estructura repetitiva PARA


Introducción a la Programación
Universidad Nacional de Luján

#6.3 Estructura Mientras


Antes decíamos que existían estructuras iterativas en las cuales el número de ciclos a ejecutar
depende de la evaluación de una cierta condición.
La estructura iterativa por excelencia es la estructura Mientras, en la cual el número de iteraciones
no se conoce por anticipado y el cuerpo del ciclo o bloque se ejecuta repetidamente mientras que
una condición sea verdadera.

Este tipo de estructura se compone de dos partes:


• La condición para su ejecución, y
• El cuerpo o bloque de instrucciones.

Su sintaxis es:
Mientras <condición> Hacer
instrucción 1
instrucción 2
.......................
instrucción n
Fin Mientras

Explicación del modo de funcionamiento:


• La expresión que conforma la condición debe ser tal que arroje un valor de verdad
(Verdadero o Falso) como vimos a través de los operadores lógicos y relacionales. Ésta se
evalúa antes y después de cada ejecución de las instrucciones comprendidas por el bloque.
Si la condición da por resultado verdadero, se ejecuta el bloque, y si es falsa, el control pasa
a la instrucción siguiente al bloque.
• Si al evaluar la condición por primera vez, se determina que el resultado es falso, entonces
no se ingresa al bloque y el control pasa a la instrucción siguiente al bloque. Es decir que el
bloque no se ejecutará nunca.
• Si alguno de los elementos que componen la expresión de evaluación no se modificase, y la
expresión hubiese arrojado -previamente- verdadero en su evaluación se ha ingresado en un
ciclo infinito, del cual nunca se saldrá. Tales ciclos deben evitarse.
Introducción a la Programación
Universidad Nacional de Luján

Aplicando la misma metodología que venimos utilizando, a continuación se propone una situación
pasible de utilizar la estructura antes explicada y su correspondiente resolución mediante PSeint:

Enunciado:
Se deben ingresar por teclado las notas de los alumnos en una determinada asignatura, o un 99 si
el alumno estuvo ausente.
Preparar un algoritmo para calcular e imprimir la nota promedio, recordando que el alumno
ausente no se promedia. El algoritmo debe terminar cuando se ingrese un valor negativo.

Resolución con PSeint:

Figura 26. Utilización de la estructura iterativa MIENTRAS


Introducción a la Programación
Universidad Nacional de Luján

#6.4 Estructura Repetir-Hasta


La instrucción Repetir permite que se ejecute un bloque de instrucciones y luego se evalúe una
condición a los efectos de ejecutar nuevamente el bloque -en caso de resultar falsa- o continuar con
la próxima instrucción siguiente al bloque -en caso de resultar verdadera-.

Su sintaxis es:
Repetir
instrucción 1
instrucción 2
.....................
instrucción n
Hasta Que<condición>

Explicación del modo de funcionamiento :


• La condición se evalúa al final del bloque, después de ejecutarse todas las instrucciones
contenidas.
• Si o si siempre se ejecuta al menos una vez el bloque.
• Si la evaluación de la condición resulta falso, se continua iterando, de lo contrario se
continua con la próxima instrucción de programa.
• A diferencia de la estructura Mientras donde se ejecutará el bloque de instrucciones
mientras la condición sea Verdadera, en la estructura Repetir-Hasta se ejecutarán las
instrucciones del bloque mientras la condición establecida sea Falsa.

De la misma manera que antes, se propone una situación pasible de utilizar la estructura antes
explicada y su correspondiente resolución mediante PSeint:

Enunciado:
Realizar un algoritmo que genere e imprima la tabla del 12, con el siguiente formato:
• 12 x 1 = 12
• 12 x 2 = 24
Introducción a la Programación
Universidad Nacional de Luján

Resolución con PSeint:

Figura 27. Utilización de la estructura iterativa REPETIR HASTA

#6.5 Utilización de contadores y acumuladores


Es muy habitual que cuando utilicemos una estructura iterativa necesitemos contabilizar hechos o
sumar cantidades, para ello utilizaremos contadores y acumuladores respectivamente.

Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante
cada vez que se produce un determinado suceso o acción. Los contadores se utilizan con la
finalidad de contar sucesos o acciones internas en una estructura iterativa o bucle.

Es importante realizar una operación de inicialización y posteriormente las sucesivas de


incremento o decremento del mismo. La inicialización consiste en asignarle al contador un valor
con el que arrancará el proceso de conteo. Este proceso deberá situarse "antes y fuera del bucle".

Sintaxis:
Contador := Contador + Constante;

Ejemplo:
Persona := Persona + 1;
Introducción a la Programación
Universidad Nacional de Luján

Como se puede observar en el ejemplo, a la variable Persona se le está incrementando el valor


constante 1, es decir, a su contenido se le suma el valor y se le vuelve a grabar en la misma variable.
Si en vez de incremento es decremento se coloca un menos en lugar del más.

Ejemplo:
Stock := Stock - 3;

El término decremento significa resta. Como se pudo observar en el ejemplo anterior, a la variable
Stock se le está decrementando un valor constante 3, es decir, a su contenido se le resta el valor y se
el vuelve a grabar en la misma variable.

En cambio, un acumulador es una variable que suma sobre sí misma un conjunto de valores, para
de esta manera tener la suma de todos ellos en una sola variable.

La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de


uno en uno, el acumulador va aumentando en una cantidad variable.

Sintaxis:
Acumulador := Acumulador + Variable;

Ejemplo:
Suma := Suma + Edad;

Como se puede observar, a la variable Suma se el está incrementando una cantidad variable
almacenada en Edad.

De igual forma, se pueden efectuar decrementos en un totalizador.


Ejemplo:
Total := Total - Descuento;

En el caso de un programa requiera el uso de contadores o acumuladores, es


importante inicializar los mismos:
• Normalmente cuando se desea efectuar sumatorias, el valor se lo debe iniciar en 0 (cero).
• Si se desea totalizar multiplicaciones, el valor se lo debe iniciar en 1 (uno).
Introducción a la Programación
Universidad Nacional de Luján

Ejercicios propuestos
1. Calcular la suma y el producto de los números pares comprendidos entre 20 y 500.
2. Preparar un algoritmo para ingresarle dos números naturales N1 y N2, hallar el producto
N1 * N2 mediante sumas sucesivas y mostrar el resultado. Recordar que: N1 * N2 = N1 + N1
+ ... + N1 (N2 veces).
3. Un número "N" cuya suma de divisores, incluido él mismo, es igual a tres veces N se
denomina "número triperfecto" (o también "subdoble"). El menor de ellos es el 120. En
efecto, 1+2+3+4+5+6+8+10+12+15+20+24+30+40+60+120 = 360 = 3 * 120. Escribir un
algoritmo que permita ingresar un número N e indique si es o no triperfecto.
4. Ingrese las calificaciones de un parcial para un grupo de N (definido por el ususario)
alumnos de la asignatura Introducción a la Programación y calcule el promedio de
calificaciones y porcentaje de aprobados, desaprobados y ausentes (los ausentes se
representarán con el valor 99 como calificación).
5. Los números perfectos son números naturales que son iguales a la suma de todos sus
divisores propios excepto él mismo. Así, por ejemplo, el 6 es un número perfecto ya que es
igual a la suma de sus tres divisores propios: 1, 2 y 3. Se pide escribir un programa que
calcule los cuatro primeros números perfectos.
6. Escribir un programa que imprima la secuencia de todas las combinaciones de hora y
minuto de un día, comenzando por 01:00 y terminando por 12:59.
7. ¿Cuál es la suma de los números pares comprendidos entre 300 y 1232?
8. Construir un algoritmo para calcular y mostrar por pantalla cuantas campanadas da un
reloj desde una cierta hora H, que se ingresa por teclado, hasta las doce de la noche, el reloj
da una campanada a las y media.
9. Construir un algoritmo para ingresarle un número natural n, y que calcule y muestre por
pantalla el factorial de n. La fórmula general para hallar el factorial de un número entero
positivo es: n! = n * (n - 1)!
10. Construir un algoritmo para ingresarle por el teclado dos números naturales M y N. Hallar
el cociente M/N por restas sucesivas y mostrar por pantalla el dividendo, divisor, cociente y
resto.
11. Ingresando un número natural N, construir un algoritmo para hallar y mostrar por pantalla
los divisores naturales de N. Usar parte entera (INT).
12. En la sucesión de Fibonacci, los dos primeros números son 0 y 1, y cada uno de los restantes
es igual a la suma de los dos que lo anteceden. Los primeros términos son: 1, 1, 2, 3, 5, 8, 13,
21, ...
13. Preparar un algoritmo para ingresarle una cantidad C, y que muestre los primeros C
Introducción a la Programación
Universidad Nacional de Luján

términos de la sucesión.
14. Completar el algoritmo anterior para calcular también la suma y el producto de los
primeros C términos de la sucesión.
15. Desarrollar un programa que permita ingresar por teclado la cantidad milímetros de lluvia
caída en Luján para una semana y calcule el promedio. El programa además deberá alertar
al usuario cuando la cantidad de lluvia caída en la semana supere una cantidad ingresada
por el usuario, a efectos de poner en marcha acciones preventivas contra las posibles
inundaciones.
16. Se efectúa una encuesta entre 120 consumidores de cigarrillos. Las respuestas están
codificadas como 1, 2 ó 3 según sea la marca elegida. Preparar un algoritmo para ingresarle
las 120 respuestas, y muestre por pantalla el número de la marca preferida.
17. Preparar un algoritmo que encuentre e imprima todos los números de tres dígitos (del 100
al 999) que sean iguales a la suma de los cubos de sus dígitos. Recordar que un número de
tres dígitos, por ejemplo 729, puede construirse sumando 700 + 20 + 9, o sea: 7 * 100 + 2 *
10 + 9.
18. Ingresar 50 nombres y mostrar el número de veces que se repite el primero de ellos.

También podría gustarte