Está en la página 1de 40

Uso de la lógica REPETITIVA en el lenguaje C

EL167 SOFTWARE PARA INGENIERÍA


EL227
Temario

• Actualización de variables

• Estructuras de control repetitivo: while, for y do-while

• La instrucción break
• El lazo de repetición infinito.

• Contadores , acumuladores y banderas

EL167
EL227 SOFTWARE PARA INGENIERÍA
EL227
Actualizar el valor de una variable
Casos:

Al valor que tenía X se le suma el valor de k (X ahora tiene


X=X+k otro valor)

Al valor que tenía X se le resta el valor de k (X ahora tiene


X=X–k otro valor)

Al valor que tenía X se le multiplica el valor de k (X ahora


X=X*k tiene otro valor)

Al valor que tenía X se le divide el valor de k (X ahora tiene


X=X/k otro valor)

Cuidado con la división de enteros

Se pueden utilizar valores enteros o punto flotante en las actualizaciones

EL167
EL227 SOFTWARE PARA INGENIERÍA
Ejemplos:
Resultado de la ejecución

Resultado de la ejecución

Resultado de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Uso de las ABREVIATURAS del lenguaje C en la actualización de variables
Casos:
Abreviatura

X=X+k X += k

X=X–k X –= k

X=X*k X *= k

X=X/k X /= k

Casos especiales: (incrementos y decrementos)

Abreviatura

X=X+1 X++

X=X-1 X--

EL167
EL227 SOFTWARE PARA INGENIERÍA
Ejemplos:
Resultado de la ejecución

Resultado de la ejecución

Resultado de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Ejemplos:
Resultado de la ejecución

Resultado de la ejecución

Resultado de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Estructuras de control repetitivo del lenguaje C
Sabemos que una estructura de repetición permite repetir la ejecución de un bloque de instrucciones.

Sería conveniente escribir el bloque de instrucciones solo una vez y luego implementar un método para
informar al programa que repita su ejecución.

Dichos métodos los encontramos en las estructuras de control repetitivo también llamadas lazos o bucles

El lenguaje C cuenta con 3 MIENTRAS (while)


estructuras de control PARA (for)
repetitivo
HACER MIENTRAS (do-while)

EL167
EL227 SOFTWARE PARA INGENIERÍA
Ejemplo:
Programa para imprimir la serie:

2000 1900 1800 1700 1600 1500 . . . . . . . . . . .500 400 300 200 100

Desarrollaremos el programa aplicando las 3 estructuras repetitivas del lenguaje C:

while, for, do-while

EL167 SOFTWARE PARA INGENIERÍA


Estructura de repetición MIENTRAS (while)

Funcionamiento algorítmico
Codificación en lenguaje C

1
1 F
while( expresión )
{ V
MIENTRAS la expresión sea verdadera
2
bloque de ejecutar el bloque de instrucciones,
intrucciones cuando sea falsa ya no se ingresa a
2
ejecutar el bloque y el while termina

fin del while

EL167 SOFTWARE PARA INGENIERÍA


Diagrama de flujo: Codificación en C (while):
INICIO

i  2000: entero
Mientras i sea mayor o igual a 100,
ejecutar el bloque:
F
i ≥ 100

i,“ “

i i - 100 Este bloque de instrucciones


se ejecutará 20 veces

FIN

Resultado de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Mas ejemplos:

¿Cuantas veces se ejecutarán los bloques colocados dentro de las siguientes


estructuras while?

int k=0; int i=10; int h=18;


while(k<=4) while(i<80) while(h>=2)
{ { {
Bloque Bloque Bloque
k++; i*=2; h/=2;
} } }

Rpta: 5 veces Rpta: 3 veces Rpta: 4 veces


k=0,k=1,k=2,k=3,k=4 i=10,i=20,i=40 h=18,h=9,h=4,h=2
ya que cuando k=5 ya que cuando i=80 ya que cuando h=1
la condición k<=4 es falsa la condición i<80 es falsa la condición h>=2 es falsa

EL167
EL227 SOFTWARE PARA INGENIERÍA
Estructura de repetición PARA (for)
Codificación en C (for):
Para i -> 2000:
Para i desde 2000 hasta 100, Ejecuta:
decreciendo de 100 en 100,
ejecutar el bloque: Para i -> 1900:

Ejecuta:

Para i -> 1800:

Este bloque de instrucciones Ejecuta:


se ejecutará 20 veces .
.
.
.

Resultado de la ejecución Para i -> 100:

Ejecuta:

EL167
EL227 SOFTWARE PARA INGENIERÍA
Funcionamiento algorítmico del for

Diagrama de flujo: Codificación en C :


INICIO
1 2 4
1 i  2000: entero
for( i=2000; i>=100; i-=100 )
2 i ≥ 100
F { F V

i,“ “ 3
3 printf("%i ",i);
4 i i - 100

FIN
fin del for i es la variable de iteración ya que de
su valor dependerá el número de
veces que se ejecutará el bloque de
instrucciones.
EL167 SOFTWARE PARA INGENIERÍA
EL227
Mas ejemplos:

¿Cuantas veces se ejecutarán los bloques colocados dentro de las siguientes


estructuras for?

for(int k=0;k<=8;k+=3) for(int i=8; i>0; i--) for(int a=2; a*2<16; a++)
{ { {
bloque bloque bloque
} } }

Rpta: 3 veces Rpta: 8 veces Rpta: 6 veces


Para k=0, 3 y 6 Para i=8,7,6,5,4,3,2,1 Para a=2,3,4,5,6,7
ya que cuando k=9 ya que cuando i=0 ya que cuando a=8
la condición k<=8 es falsa la condición i>0 es falsa la condición a*2<16
es falsa

EL167
EL227 SOFTWARE PARA INGENIERÍA
Estructura de repetición HACER MIENTRAS (do-while)

Funcionamiento algorítmico Codificación en lenguaje C

do
1
{
HACER la ejecución del bloque de
1 instrucciones MIENTRAS la expresión
bloque de sea verdadera, cuando sea falsa ya
intrucciones no se ingresa a ejecutar el bloque y
2 el do-while termina
} 2

while( expresión );
V F

fin del do-while

EL167
EL227 SOFTWARE PARA INGENIERÍA
Diagrama de flujo: Codificación en C (do while):
INICIO Este bloque de instrucciones
se ejecutará 20 veces
i  2000: entero
Hacer:

i,“ “

i i - 100 Mientras i sea mayor o igual a 100

F
i ≥ 100

FIN
Resultado de la ejecución

EL167 SOFTWARE PARA INGENIERÍA


Mas ejemplos:

¿Cuantas veces se ejecutarán los bloques colocados dentro de las siguientes


estructuras do-while?

int k=10; int i=70; int j=200;


do do do
{ { {
Bloque Bloque Bloque

k+=5; i*=2; j/=3;


} } }
while(k<=40); while(i<=700); while(j>1);

Rpta: 7 veces Rpta: 4 veces Rpta: 5 veces


k=10,k=15,k=20,k=25,k=30, i=70,i=140,i=280,i=560 j=200,j=66,j=22,j=7,j=2
K=35,k=40 ya que cuando i=1120 ya que cuando j=0
ya que cuando k=45 la condición i<=700 es falsa la condición j>1 es falsa
la condición k<=40 es falsa

EL167 SOFTWARE PARA INGENIERÍA


Comparación entre el ciclo while y do-while

Ciclo while: Ciclo do-while:

En un inicio el do-while
primero HACE la ejecución
del bloque de instrucciones
En un inicio el while primero y luego evalúa la expresión.
evalúa la expresión y si es
verdadera HACE la ejecución
del bloque de instrucciones

El do-while garantiza la ejecución del


bloque por lo menos una vez sin
necesidad de evaluar una condición
al inicio
EL167 SOFTWARE PARA INGENIERÍA
Observe los siguiente códigos:

bloque de
bloque de
intrucciones
intrucciones

El bloque de instrucciones no se El bloque de instrucciones se


ejecutará ninguna vez, dado ejecutará una vez, dado que al
que al inicio la expresión a inicio el bloque se ejecuta sin
evaluar es falsa una condición previa.

EL167 SOFTWARE PARA INGENIERÍA


Importante

En C las estructuras while y for son “intercambiables” (tienen la misma lógica de


funcionamiento)

¿Cuándo usar una estructura while/do-while y cuando un ciclo for?


Como regla general, se suele utilizar while/do-while cuando el ciclo repetitivo esta asociado a una
condición, mientras que se suele utilizar for cuando el número de iteraciones de un ciclo esta
definido de antemano.

Tener en cuenta que:

while: Antes de ejecutar por primera vez el bloque se evalúa la condición

do-while: El bloque se ejecutará al menos una vez.

EL167
EL227 SOFTWARE PARA INGENIERÍA
Ejemplo: Validación del ingreso de un dato
Programa que pida un número entero mientras este tenga un valor negativo, caso contrario se dejará de
pedir.

Ejemplo de la ejecución

No se sabe de antemano cuantas veces se


ejecutará el pedido del número, pero si la
condición que mantiene la repetición.

Que el número
ingresado sea negativo

Las buenas prácticas sugieren el uso del while o do-while en vez del for

EL167 SOFTWARE PARA INGENIERÍA


Diagrama de flujo:
Codificación en C (usando while):
INICIO

num -1: entero

F
num < 0

“Ingrese número entero positivo: “

num

Mientras num sea menor a 0, hacer:


FIN

EL167
EL227 SOFTWARE PARA INGENIERÍA
Diagrama de flujo:
Codificación en C (usando do-while):
INICIO

num: entero

“Ingrese número entero positivo: “

num

F
num < 0

Hacer:
FIN

Mientras num sea menor a 0


EL167 SOFTWARE PARA INGENIERÍA
Podríamos agregar mensajes indicativos y mejorar el resultado:

Ejemplo de la ejecución

EL167 SOFTWARE PARA INGENIERÍA


Ejemplo : Programa que imprima 20 líneas formadas por 5 asteriscos cada una

Resultado de la ejecución

La impresión de una línea de 5 asteriscos


se ejecutará 20 veces. Se sabe de
antemano la cantidad de repeticiones.

Las buenas prácticas sugieren el uso del for

EL167 SOFTWARE PARA INGENIERÍA


Diagrama de flujo: Codificación en C:

INICIO Para i desde 1 hasta 20,


incrementando de 1 en 1,
i  1: entero ejecutar el bloque:

F
i ≤ 20

“*****” , SALTO

i i+1

FIN

EL167 SOFTWARE PARA INGENIERÍA


La instrucción break

La instrucción break permite “romper” un


lazo repetitivo

La instrucción break puede ser usada en for,


Al ejecutarse la while y do-while.
instrucción break, el
lazo se “rompe” La instrucción break debe ser ejecutada al
cumplirse una condición.

Resultado de la ejecución

EL167 SOFTWARE PARA INGENIERÍA


El lazo infinito
Para formar un lazo infinito se utiliza comúnmente la estructura while:

Ejemplo en C

Ejecuta este programa y


verás lo que pasa

El ejemplo mostrado arriba, representa un lazo infinito, ya que la condición evaluada siempre es verdadera (1). El
bloque de instrucciones se ejecutará indefinidamente.

EL167
EL227 SOFTWARE PARA INGENIERÍA
Un lazo infinito podría ser utilizado junto a la instrucción break

Por ejemplo, para validar el ingreso de un dato:

Ejemplo de ejecución

EL167 SOFTWARE PARA INGENIERÍA


Otro ejemplo:
Desarrolle un programa que genere de manera indefinida el resultado de lanzar 1 dado,
mostrándose su valor en pantalla. Si en algún momento el lanzamiento arroja 6, el programa
deberá terminar y mostrar el mensaje: “Ingresar!!!”.

Resultado de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Codificación en C usando while: Codificación en C usando do-while:

EL167
EL227 SOFTWARE PARA INGENIERÍA
Pero también se puede usar un lazo infinito y break:

Al ejecutarse la instrucción
break, el lazo infinito se
“rompe”

EL167 SOFTWARE PARA INGENIERÍA


Uso de un contador
Ejemplo: Desarrollar un programa que genere la nota de 10 alumnos de manera aleatoria
y determine cuantos de ellos aprobaron (nota mayor o igual a 13)

Ejemplo de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Codificación en C:

vble. cont: Es un contador

Vble. cuyo valor se incrementa


uniformemente cada vez que se cumple
una condición.

Si nota es mayor o igual a 13:


aumenta en 1 el valor anterior de cont

EL167
EL227 SOFTWARE PARA INGENIERÍA
Uso de un acumulador
Ejemplo: Desarrollar un programa que genere la nota de 10 alumnos de manera aleatoria
y determine el promedio de todas las notas.

Ejemplo de la ejecución

EL167
EL227 SOFTWARE PARA INGENIERÍA
Codificación en C:

vble. acum: Es un acumulador

Vble. que va acumulando operaciones

El nuevo valor de acum es igual a su valor anterior


sumado con el valor de nota

En la vble. acum se van acumulando la suma de notas

EL167
EL227 SOFTWARE PARA INGENIERÍA
Uso de una bandera
Ejemplo: Desarrollar un programa que genere la nota de 10 alumnos de manera aleatoria
y al final muestre un mensaje indicando si hubo algún aprobado o no.

Ejemplo de la ejecución

EL167 SOFTWARE PARA INGENIERÍA


Codificación en C:

vble. bun: Es una bandera

Vble. que se usa para indicar si se ha


producido una situación o no.

Si nota es mayor o igual a 13:


bun pasa de 0 a 1

Al final se evalúa si bun se quedo en 0


o pasó a 1 para ejecutar alguna acción

EL167 SOFTWARE PARA INGENIERÍA


Una bandera también se puede utilizar para hacer un programa que valide el ingreso de un dato:

Mientras la vble. bun sea 1 el número


seguirá pidiéndose, cuando bun valga
0 se termina el while.

Ejemplo de la ejecución

EL167 SOFTWARE PARA INGENIERÍA

También podría gustarte