Logo Studenta

03 - Estructuras Repetitivas

¡Este material tiene más páginas!

Vista previa del material en texto

Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 1
Fundamentos de Informática / Computación
Universidad Tecnológica Nacional
Facultad Regional Haedo
1
Operadores Mixtos – Ciclo Definido (for)
Contadores – Acumuladores – Concepto de Bandera
Ciclos Condicionados (while / do – while)
Los operadores mixtos son aquellos que permiten realizar una operación aritmética y una asignación.
En general las operaciones se expresan como: variable a asignar operador
variable a asignar operador variable o constante
El lenguaje C presenta los siguientes operadores mixtos :
Operador Ejemplo Forma desarrollada Mapa de Memoria
mixto int x = 5 , y = 8 ; (en otros lenguajes y C) x y
5 8
++ x ++ ; x = x + 1;  6 
- - y - - ; y = y – 1 ;  7
+ = x += 4 ; x = x + 4 ;  10 
y += x ; y = y + x ;  17
- = x -= 2 ; x = x – 2 ;  8
* = x *= y ; x = x * y ;  136
/ = x /= y ; x = x / y ;  8
• El operador mixto ++ incrementa a la variable en +1 y el operador mixto - - la decrementa en -1
• Los demás operadores aplican la operación correspondiente a los dos operandos
• El operando a izquierda del operador siempre es una variable a la cual se le asigna el resultado de la 
operación y el operando a derecha puede ser una variable o una constante
2
1
2
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 2
El ciclo definido for tiene como variable de control del ciclo a una variable contadora que llamaremos i
El ciclo for tiene tres argumentos separados por un punto y coma, a saber :
for ( i=valor_inicial ; i <= valor_final ; i ++ ) para valor_inicial < valor_final
i = valor_inicial inicializa al contador en el valor a partir del cual empezará a contar, por ejemplo i=1 ; 
i <= valor_final condición que controla la entrada y salida del ciclo, siempre que la condición sea verdadera se 
ingresa al ciclo para ejecutar la o las acciones que están dentro del cuerpo del ciclo de repetición, solo cuando la 
condición sea falsa se puede salir de él. El valor final define la cantidad de veces que se debe repetir la ejecución de 
las acciones indicadas dentro del ciclo, por ejemplo i<= 6  siempre que el contador i sea menor o igual a 6 se 
ingresa al ciclo, solo cuando i sea igual a 7 se sale de él y teniendo en cuenta que el valor inicial fue 1 esto significa 
que se ingresó al ciclo las 6 veces que se deseaban.
i++  expresión que incremente el valor de i en 1 ( contador ), este incremento es el que en algún momento llevará 
al contador a valer el valor_final+1, en nuestro ejemplo será el valor 7 y se podrá salir del ciclo.
La primera vez que se ingresa al ciclo se inicializa el contador en el valor inicial, luego se verifica la condición de 
control y si esa condición es verdadera se ingresa al ciclo y se ejecutan la o las acciones indicadas en el cuerpo del 
ciclo, cuando finaliza la ejecución vuelve al argumento del ciclo for, esta vez incrementa al contador ( i++), verifica la 
condición de control y si es verdadera vuelve a entrar a ejecutar las acciones del ciclo para luego volver al argumento 
incrementando al contador y verificando la condición. Este proceso se repetirá hasta que la condición de control sea 
falsa, es decir cuando el contador es mayor al valor final.
Las estructuras repetitivas o ciclos permiten ejecutar una acción o un conjunto de acciones un número 
determinado de veces.
Podemos distinguir dos tipos de iteración, los ciclos definidos y los ciclos condicionados.
En un ciclo definido, se conoce la cantidad de veces a entrar al ciclo.
En un ciclo condicionado, no se conoce la cantidad de veces a entrar al ciclo, esa cantidad la determina el 
resultado de verdad de una condición. 
3
Ejemplo 1: Informar los números del 1 al 6
S i
i = 1 ; i <= 6 ; i ++ 
Inicializar el contador
Se ejecuta al entrar por primera vez 
al ciclo, (se realiza por única vez). 
Luego verifica la condición
Condición de control
Se evalúa todas la veces
Mientras sea verdadera entra al ciclo
Cuando sea falsa sale del ciclo
Incremento del contador
Se ejecuta a partir del primer 
ingreso al cuerpo del ciclo y hasta 
el final del ciclo, luego de cada 
incremento verifica la condición
En el cuerpo del 
ciclo la acción a 
realizar es informar 
el contador
Luego de ejecutada la 
acción del cuerpo del 
ciclo vuelve al 
argumento del ciclo for
para incrementar el 
contador
Verdadera 
entra
Falsa
sale
# include <stdio.h>
# include <stdlib.h>
main()
{
int i;
for (i=1 ; i<=6 ; i++)
printf(" %d - ", i ) ;
printf("\n");
system("PAUSE");
}
Programa C
4
1
2
3
4
5
1
3
4
5
1
2
3
4
5
1
3
4
5
i Pantalla
6
Prueba de Escritorio
6
7
3
4
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 3
Ejercicio 1 : Escribir la cuenta regresiva del 10 al 0
Ejercicio 2 : Escribir los números pares del 2 al 10
S
i
i = 2 ; i <= 10; i +=2 
S
i
i = 10 ; i >= 0 ; i - -
# include <stdio.h>
# include <stdlib.h>
main()
{
int i;
for (i=10 ; i>=0 ; i--)
printf(" %d - ", i ) ;
printf("\n");
system("PAUSE");
}
# include <stdio.h>
# include <stdlib.h>
main()
{
int i;
for (i=2 ; i<=10 ; i+=2)
printf(" %d - ", i ) ;
printf("\n");
system("PAUSE");
}
5
6
Ejemplo 2 :
Fuera del ciclo se informan los contadores
Los contadores permiten contar cuantas veces sucede un evento.
Los acumuladores aditivos, permiten sumar los sucesivos valores que puede asumir una 
variables o bien sumar una cierta cantidad de veces el valor de una constante
E
i = 1 ; i <= 5 ; i ++ 
cp = 0 ; cn = 0 ; cc = 0
nro
cc ++
s
cp , cn , cc
Los contadores deben 
inicializarse en cero antes 
de entrar al ciclo
El ingreso de la variable 
que va a almacenar los 
sucesivos números a 
procesar se hace dentro 
del ciclo for
F
nro > 0
cp ++
V
nro < 0
cn ++
V
F
Dentro del ciclo se 
incrementan los contadores 
donde corresponda
Ingresar 5 números, calcular e informar la cantidad de números positivos, 
la cantidad de números negativos y la cantidad de ceros ingresados
5
6
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 4
7
# include <stdio.h>
# include <stdlib.h>
main()
{
int i, nro, cp=0, cn=0, cc=0;
for ( i=1 ; i<=5 ; i++ )
{
printf("Ingresar un numero: ");
scanf("%d",&nro);
if (nro>0) cp++;
else
if (nro<0) cn++;
else cc++;
}
printf("La cantidad de positivos es: %d\n", cp);
printf("La cantidad de negativos es: %d\n", cn);
printf("La cantidad de ceros es: %d\n", cc);
system("PAUSE");
}
Cuando hay más de una 
acción a ejecutarse dentro 
del ciclo for hay que 
encerrarlas entre llaves
E
i = 1 ; i <= 5 ; i ++ 
cp = 0 ; cn = 0 ; cc = 0
nro
nro > 0
nro < 0
cp ++
cn ++ cc ++
s
cp , cn , cc
V F
V F
Diagrama de Flujo Programa C
Ejemplo 3: Dados dos números enteros positivos, informar el producto de ambos por sumas 
sucesivas.
E
nro1 , nro2
producto + = nro2
S producto
i = 1 , i <= nro1 , i ++ ,
producto = 0 producto nro1 nro2 i
5 40
4
8
12
16
20
1
2
3
4
5
6
0
4
8
12
16
1
2
3
4
5
# include<stdio.h>
# include<stdlib.h>
main()
{
int i, nro1, nro2, producto=0;
printf("Ingresar dos numeros enteros positivos: ");
scanf("%d %d", &nro1, &nro2);
for (i=1 ; i<=nro1 ; i++)
producto += nro2;
printf("El producto de %d por %d es: %d\n", nro1, nro2, producto);
system("PAUSE");
}
Al igual que a los contadores, a los 
acumuladores también hay que 
inicializarlos en cero antes de usarlos
Acumulador 
aditivo 
suma nro1
veces el valor de 
la variable nro2
8
7
8
Universidad Tecnológica Nacional 
FacultadRegional Haedo
Fundamentos de Informática 
Computación
CPB 5
Ejemplo 4: Dados 5 números informar el promedio de los positivos, el promedio de los 
negativos y la cantidad de ceros.
E
i = 1 ; i <= 5 ; i ++ 
cp = 0 ; cn = 0 ; cc = 0 ; sp = 0 ; sn = 0
nro
nro > 0
nro < 0
cp ++
sp += nro cn ++
sn += nro
cc ++
s
cc
s s
cp == 0
“No ingresaron numeros 
positivos “
sp / cp
s s
cn == 0
“No ingresaron numeros 
negativos“
sn / cn
Hay que verificar 
que el contador sea 
distinto de cero, ya 
que al ser el divisor 
en el cálculo del 
promedio, se evitará 
así un posible error 
de división por cero
Cantidad de ceros
Promedio de 
positivos
Promedio de 
negativos
V F
V F
9
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, nro, cp=0, cn=0, cc=0 , sp=0, sn=0;
for (i=1 ; i<=5 ; i++)
{
printf("Ingresar un numero: "); scanf("%d",&nro);
if (nro>0)
{
cp++; sp+=nro;
}
else
if (nro<0)
{
cn++; sn+=nro;
}
else cc++;
}
printf("Cantidad de ceros ingresados: %d\n", cc);
if (cp==0) printf("No se ingresaron positivos\n");
else printf("El promedio de los positivos es: %.2f\n", (float) sp/cp );
if (cn==0) printf("No se ingresaron negativos \n"); 
else printf("El promedio de los negativos es: %.2f\n", (float) sn/cn );
system("PAUSE");
}
Informa el resultado de la división y 
para que el resultado sea real se 
hace un cast o casting
10
9
10
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 6
Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.
Son variables que se utilizan para indicar si un evento determinado ocurrió o no ocurrió.
Estas variables toman solo dos valores posibles, primeramente se le asigna un valor clave, por 
ejemplo cero para indicar que el evento no ocurrió y solamente cuando el evento esperado 
ocurre hay que cambiar el estado de la bandera asignándole otro valor clave, por ejemplo uno, 
para indicar que el evento ya ocurrió
Para poder informar el mayor número ingresado hay que comparar cada número entre sí hasta 
encontrar al mayor de ellos. 
El ciclo for permite ingresar los 5 valores indicados y cada número es ingresado sucesivamente en 
una única variable (nro), lo que significa que con cada nuevo número ingresado se pierde el 
número ingresado anteriormente por lo tanto la comparación entre ellos se hace imposible.
Esto se soluciona guardando el primer valor en una variable auxiliar (max) , de esta manera se 
podrá comparar el segundo valor con el guardado en la variable auxiliar que contiene el primer 
valor, tal que si el segundo número es mayor al primero, se reasigna este nuevo valor en la variable 
auxiliar. Este proceso se repite para cada nuevo número ingresado, quedando siempre en la 
variable auxiliar el valor mayor.
La bandera se utiliza para poder determinar cuando se ha ingresado el primer número y así poder 
guardarlo en la variable auxiliar. 
La bandera tendrá un valor cero antes de entrar al ciclo que permite el ingreso de los sucesivos 
números a procesar y se cambiará al valor uno cuando se detecta que se ha ingresado el primer 
número del conjunto. A partir de ese cambio de estado de la bandera, comienza el proceso de 
comparación para identificar al mayor número ingresado.
11
Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.
E
i = 1 ; i <= 5 ; i ++ 
bandera = 0
nro
bandera == 0
nro>max
max = nro
bandera = 1 max =nro
s
max
1- Se asigna el valor cero a 
la bandera antes del ciclo
2 – Se ingresa el primer 
número a procesar
3 - Si la bandera está en cero, eso 
significa que es la primera vez que se 
ingresa al ciclo y por lo tanto en nro
está el primer número ingresado
4 –
- Se guarda el primer número 
ingresado en la variable auxiliar 
- Se cambia el estado de la 
bandera a 1 para indicar que ya 
ingresó el primer número del 
conjunto
5 - A partir del segundo 
ingreso de datos y al 
estar la bandera en 1 
comienza el proceso de 
comparación entre el 
nuevo valor ingresado y 
el que está en la variable 
auxiliar que es el valor 
mayor hasta el momento
6 - Al salir del ciclo se 
informa el contenido de la 
variable max que es la que 
tiene el valor del mayor 
número ingresado
V F
V F
12
11
12
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 7
Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, max, nro, bandera=0;
for (i=1 ; i<=5 ; i++)
{
printf("Ingresar un numero: ");
scanf("%d",&nro);
if (bandera==0)
{
max=nro;
bandera=1;
}
else
if (nro>max) max=nro;
}
printf("El numero mayor es: %d\n", max);
system("PAUSE");
}
E
i = 1 ; i <= 5 ; i ++ 
bandera = 0
nro
bandera == 0
nro>max
max = nro
bandera = 1 max =nro
s
max
V F
V F
Diagrama de Flujo
Programa C
13
Ejemplo 2 : Ingresar 10 números, calcular e informar el mayor negativo, el menor positivo 
y la cantidad de ceros. Diagrama de Flujo
E
i = 1 ; i <= 10 ; i ++ 
bp = 0 ; bn = 0 ; cc = 0
nro
nro > 0
nro < 0
cc ++
s cc
s s
bp == 0
“No ingresaron numeros positivos “ min
s s
bn == 0
“No ingresaron numeros negativos“ max
bp == 0
nro<min
min = nro
bp = 1
min=nro
V F
V F
bn == 0
nro>max
max = nro
bn = 1 max=nro
V F
V F
V F
V F
Antes de 
informar el valor 
del máximo o 
mínimo hay que 
verificar el 
estado de sus 
respectivas 
banderas 
porque si existe 
la posibilidad 
que alguna de 
ellas o ambas no 
hayan cambiado 
su estado inicial 
no hay un 
máximo o 
mínimo que 
informar
14
13
14
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 8
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, max, min, nro, bp=0, bn=0, cc=0;
for (i=1 ; i<=10 ; i++)
{
printf("Ingresar un numero: "); scanf("%d",&nro);
if (nro>0)
if (bp==0)
{
min=nro; bp=1;
}
else
{
if (nro<min) min=nro;
}
else
if (nro<0)
if (bn==0)
{
max=nro; bn=1;
}
else
{
if (nro>max) max=nro;
}
else cc++;
}
printf("La cantidad de ceros es: %d\n", cc);
if (bp==0) printf("No se ingresaron positivos \n" );
else printf("El menor positivo es: %d\n", min);
if (bn==0) printf("No se ingresaron negativo \n" );
else printf("El mayor negativo es: %d\n", max);
system("PAUSE");
}
Como este if no tiene salida por el falso no es 
necesario poner el else correspondiente y por 
esta razón si o si se necesitan las llaves del 
else que lo contiene 
Aquí también estamos frente a la misma 
situación
15
Un ciclo condicionado se utiliza cuando no se conoce la cantidad de veces que se debe repetir la 
ejecución de una instrucción o un conjunto de instrucciones. En estas estructuras, la entrada al 
ciclo y la salida del ciclo está dada por la evaluación de una condición. 
Existen dos estructuras condicionadas, a saber:
1 - Estructura Repetitiva while
1. Se ingresa al ciclo evaluando primero una condición.
2. Mientras la condición sea verdadera, se ingresa al cuerpo del ciclo de repetición y se 
ejecutan las instrucciones que están dentro de él.
3. Solo cuando la condición sea falsa se puede salir del ciclo de repetición.
4. En consecuencia, a esta estructura se puede ingresar cero, una o varias veces.
Ejemplo 1: Ingresar un conjunto de números y calcular e informar la cantidad de números 
ingresados y la suma de todos esos números. Para fin de ingreso de datos ingresar el número cero.
En este caso la cantidad de números a procesar no es un dato conocido sino que, por el 
contrario, es un dato a obtener (resultado). 
La condición de entrada al ciclo y de salida de él está dada por un valor clave en una variable 
de control del ciclo que será por lo general un dato de entrada y ese valor clave es un valor que 
no pertenece al conjunto de datos aprocesar (no es válido), por lo tanto no debe ser procesado 
ya que tiene como objetivo ser la marca de fin del ciclo.
16
15
16
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 9
Ejemplo 1 : Ingresar un conjunto de números y calcular e informar la cantidad de números 
ingresados y la suma de todos esos números. Para fin de ingreso de datos 
ingresar el número cero.
cant = 0 ; sum = 0
nroE
nro
nro != 0
cant ++
sum += nro
E
S
cant , sum 
Primero hay que ingresar la 
variable de control del ciclo
El ciclo while evalúa la condición 
antes de entrar al ciclo, si es 
verdadera entra, si es falsa no 
entra.
Por lo tanto, mientras el 
contenido de la variable de 
control sea distinto al dato 
clave indicado, entrará al ciclo
V
La última instrucción antes de 
cerrar el ciclo while tiene que 
ser ingresar la variable de 
control del ciclo, de esta manera 
se actualiza el contenido de la 
variable de control y permite una 
nueva evaluación de la condición 
del ciclo. El último valor a ingresar 
en esta variable será el valor 
clave, en este caso el cero que 
permitirá la salida del ciclo while
F
17
#include <stdio.h>
#include <stdlib.h>
main()
{
int nro, cant=0, sum=0;
printf("Ingresar un numero entero ( ingresar cero para terminar ): ");
scanf("%d", &nro);
while ( nro != 0 )
{
cant++; 
sum+=nro;
printf("Ingresar un numero entero: ");
scanf("%d", &nro);
}
printf("La cantidad de numeros ingresados es %d\n", cant);
printf("La suma de los numeros ingresados es %d\n", sum);
system("PAUSE");
}
cant = 0 ; sum = 0
nroE
nro
nro != 0
cant ++
sum += nro
E
S cant , sum 
Ejemplo 1 : Ingresar un conjunto de números y calcular e informar la cantidad de números 
ingresados y la suma de todos esos números. Para fin de ingreso de datos 
ingresar el número cero.
18
Diagrama de Flujo Programa C
17
18
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 10
Diseñar un programa que permita ingresar la edad en años de un grupo 
de personas e informe: 
1- cantidad de personas procesadas
2- edad promedio del grupo 
3- mayor edad ingresada
No se conoce la cantidad de personas del grupo, para fin de ingreso de 
datos ingresar un número negativo en edad.
Ejemplo 2:
La edad es la variable que contiene la marca 
de fin, es decir, el contenido de esta variable 
controla la entrada al ciclo y la salida de él
19
cpers=0 ; suma=0 ; bandera=0
edadE
edadE
cpers++
suma += edad
bandera == 0V
V
F
Fmax=edad
bandera=1
edad>max
max=edad
cpers != 0
cpers 
suma/cpers
maxS
edad >= 0
V
S
“No se 
procesaron 
datos”
F
2- El ciclo evalúa la marca de fin
si la condición es verdadera (distinta a 
la marca de fin) entra al ciclo
Si es falsa, no entra al ciclo
1- ingresar la variable que permitirá 
entrar o no al ciclo while
3- la última instrucción dentro del ciclo 
debe ser ingresar la variable de 
control , de esta manera se actualiza 
la condición permitiendo el reingreso 
al ciclo o la salida de él
Punto 1 y 2
Punto 2
Punto 3
Verificar si se ingresó al ciclo alguna 
vez, antes de informar los resultados.
20
19
20
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 11
#include <stdio.h>
#include <stdlib.h>
main()
{
int edad, max, cpers=0, bandera=0, suma=0;
printf("Ingresar la edad de la persona( ingresar un numero negativo para terminar ): ");
scanf("%d", &edad);
while (edad >= 0)
{
cpers++; suma+=edad;
if (bandera==0)
{
max=edad; bandera=1;
}
else
if (edad>max) max=edad;
printf("Ingresar la edad de la persona: ");
scanf("%d", &edad);
}
if (cpers!=0)
{
printf("La cantidad de personas procesadas es %d\n", cpers);
printf("La edad promedio del grupo es %d\n", suma/cpers);
printf("La edad maxima es %d\n", max);
}
else printf("No se ingresaron datos\n");
system("PAUSE");
}
Como a un ciclo while puede NO ingresarse 
nunca, antes de informar el resultado de una 
división cuyo divisor es un contador que puede 
quedar en cero y/o hay que informar los datos de 
un máximo o mínimo SIEMPRE hay que verificar si 
se ingresó alguna vez al ciclo para evitar errores 
de división por cero o informar variables sin 
contenido válido
También podría haberse usado la bandera para 
esta verificación
21
Diseñar un programa que permita ingresar la edad de un grupo de N personas 
e informe: 
1- edad promedio del grupo 
2- mayor edad ingresada
Ejemplo 3:
Se conoce la cantidad de personas, por lo 
tanto se sabe cuantas veces se ingresará al 
ciclo de repetición  La estructura repetitiva 
a elegir es el ciclo definido for 
22
21
22
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 12
suma=0 ; bandera=0
cpers
E
suma += edad
bandera == 0
V
V
F
F
max=edad
bandera=1
edad>max
max=edad
cpers != 0
eprom = suma/cpers
eprom , max
S
i=1 , i<=cpers , i++
V
S
“No se procesaron 
datos”
F
El ciclo definido controla 
ingresar al ciclo cpers veces
Se ingresa la cantidad de 
personas
reingreso al ciclo 
incrementando la variable de 
control ( i ) hasta que la 
condición sea falsa
edad
E
El dato a procesar se ingresa 
dentro del ciclo
Como la cantidad de personas 
(cpers) puede ser cero, hay 
que verificar la entrada al ciclo 
for antes de informar (también 
podría haberse usado la 
bandera para realizar dicha 
verificación)
23
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, edad, max, cpers, bandera=0, suma=0;
printf("Ingresar la cantidad de personas: ");
scanf("%d", &cpers);
for (i=1 ; i<=cpers; i++)
{
printf("Ingresar la edad de la persona: ");
scanf("%d", &edad);
suma+=edad;
if (bandera==0)
{
max=edad; bandera=1;
}
else
if (edad>max) max=edad;
}
if (cpers!=0)
{
printf("La edad promedio del grupo es %d\n", suma/cpers);
printf("La edad maxima es %d\n", max);
}
else printf("No se ingresaron datos\n");
system("PAUSE");
}
24
23
24
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 13
De un cajero electrónico se tiene la siguiente información de cada operación realizada por los 
cliente, durante un día : 
• número de cuenta
• tipo de operación ( 1: extracción – 2: depósito – 3: consulta )
• en caso de ser una extracción o depósito, el monto de la operación.
Se pide informar:
1 – Cantidad de extracciones realizadas
3 – Porcentaje de consultas hechas a lo largo del día.
2 – Mayor monto depositado en el cajero y número de cuenta donde se hizo dicho depósito.
No se conoce la cantidad de operaciones que se realizarán a lo largo del día, para fin de 
ingreso de datos ingresar número de cuenta igual cero
Ejemplo 4:
25
total = 0 ; cextr = 0 ; ccons = 0 ; bandera = 0
E
nrocuenta
nrocuenta != 0
E
oper
ccons++
FV
E monto
oper == 2
cextr++
FV
bandera == 0
max=monto
cmax=nrocuenta
bandera=1
monto>max
max=monto
cmax=nrocuenta
V
V F
F
oper != 3
E
nrocuenta
total++
Continúa en diapositiva siguiente
Cuando hay más de un dato de 
entrada, en el ciclo while primero se 
ingresa solamente el dato de la 
variable de control del ciclo, es 
decir la que tiene la marca de fin
Dentro del ciclo se ingresan los 
datos restantos .
A estos datos los llamaremos datos 
asociados a la marca de fin 
La última instrucción dentro 
del ciclo debe ser solamente 
la variable de control con 
marca de fin
26
25
26
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 14
S cextr 
total != 0
ccons*100/total
S
V
S
“ No se realizaron operaciones“
F
S S
bandera != 0
max, cmax
“ No se 
realizaron 
depósitos “
V F
Continuación…
27
#include <stdio.h>
#include <stdlib.h>
main()
{
int nrocuenta, oper, cmax, total=0, cextr=0, ccons=0, bandera=0;
float monto, max;
printf("Ingresar numero de cuenta( ingresar cero para terminar ): ");
scanf("%d", &nrocuenta);
while (nrocuenta!=0)
{
printf("Ingresar tipo de operacion( 1-extraccion 2-deposito 3-consulta ): ");
scanf("%d", &oper);
total++;
if (oper!=3)
{
printf("Ingresar monto de la operacion: ");
scanf("%f", &monto);
if (oper==2)
if (bandera==0)
{
max=monto; cmax=nrocuenta; bandera=1;
}
else
{
if (monto>max)
{
max=monto; cmax=nrocuenta;
}
}
else cextr++;
}
else ccons++;
printf("Ingresar numero de cuenta: ");
scanf("%d", &nrocuenta);
}
…..continúa 
… continuación
if (total!=0)
{
printf("La cantidad de extracciones es %d\n", cextr);
printf("El porcentaje de consultas es %.2f\n", (float)ccons*100/total);
if (bandera!=0)
{
printf("El mayor deposito realizado fue de $%.2f\n", max);
printf("Cuenta donde se hizo el deposito: %d\n", cmax);
}
else printf("No se hicieron depositos\n");
}
else printf("No hubo movimientos de cuentas\n");
system("PAUSE");
}
28
27
28
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 15
2 - Estructura Repetitiva do - while
1. Se ingresa al ciclo ejecutando las instrucciones que están en el cuerpo del ciclo.
2. La condición de control se evalúa al final del ciclo.  diferencia con respecto al ciclo while
Mientras la condición sea verdadera, se ingresa al cuerpo del ciclo de repetición y se 
ejecutan las instrucciones que están dentro de él.
3. Solo cuando la condición sea falsa se puede salir del ciclo de repetición.
4. En consecuencia, a esta estructura se puede ingresar una o varias veces.
5. Para utilizar esta estructura eficientemente, la marca de fin, a diferencia del while, debe ser un 
dato válido.
Ejemplo 1 : Ingresar dos número y diseñar el siguiente menú de opciones:
1- Suma
2- Resta
3- Multiplicación
4- División
5- Salir
El programa debe permitir elegir la opción deseada e informar el resultado acorde a dicha opción, 
luego debe volver a mostrar el menú de opciones para poder elegir una nueva opción. 
Repetir este proceso hasta que se elija la opción 5 de salida.
29
Entra al cuerpo del 
ciclo ejecutando las 
instrucciones que 
hay dentro de él.
Se ingresa siempre 
al ciclo, por lo 
menos una vez
Al final se evalúa la condición del 
ciclo, mientras sea verdadera
vuelve a entrar al ciclo.
Cuando sea falsa sale del ciclo
n1 , n2E
S
“Elegir opcion del menu:
1- Suma
2- Resta
3- Multiplicacion
4- Division
5- Salir
opcion
E
opcion
1 2 3 4
n1 + n2
S
n1 - n2
S
n1 * n2
S
n1/n2 S “error”S
n2!=0V F
opcion != 5 V
F
30
29
30
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 16
#include <stdio.h>
#include <stdlib.h>
main()
{
int n1, n2, opcion;
printf("Ingresar dos numeros: ");
scanf("%d%d",&n1,&n2);
do
{
printf("Elegir opcion del menu\n");
printf(“ 1- Suma\n 2- Resta\n 3- Multiplicacion\n 4- Division\n 5- Salir\n");
scanf("%d",&opcion);
switch (opcion)
{
case 1 :
printf("La suma de %d y %d es: %d\n", n1, n2, n1+n2);
break;
case 2 :
printf("La resta de %d y %d es: %d\n", n1, n2, n1-n2);
break;
case 3 :
printf("La multiplicación de %d y %d es: %d\n", n1, n2, n1*n2);
break;
case 4 :
if (n2!=0) printf("La division de %d y %d es: %.2f\n", n1, n2, (float)n1/n2);
else printf("Error de division por cero\n");
break;
}
}
while (opcion!=5) ;
}
31
Ejemplo 2 : Diseñar un algoritmo que permita validar un número de mes. 
Informar la cantidad de veces que se ingresó mal dicho número de mes
Se entra al ciclo pidiendo un número de mes, el ciclo evalúa si ese número ingresado está fuera de rango, es decir, 
si es menor a 1 o mayor a 12, en ese caso, como el número no corresponde a un mes válido se ingresa nuevamente 
al ciclo y se pide un nuevo número de mes. Mientras el número ingresado sea un número no válido se repite el 
ingreso del número de mes, solo saldrá del ciclo cuando el número ingresado esté dentro del rango 1 .. 12
mes
mes <1 || mes >12
E
c = 0
c ++
c-1S
#include <stdio.h>
#include <stdlib.h>
main()
{
int mes, c=0;
do
{
c++;
printf("Ingresar un numero de mes: ");
scanf("%d",&mes);
}
while (mes<1 || mes>12) ;
printf(“El numero de mes se ingreso mal %d veces\n", c-1);
system("PAUSE");
}
32
31
32
Universidad Tecnológica Nacional 
Facultad Regional Haedo
Fundamentos de Informática 
Computación
CPB 17
Ejercicio 1: 
Ingresar 20 temperaturas, calcular e informar:
1. Cantidad de temperaturas bajo cero.
2. Promedio de las temperaturas restantes.
Ejercicio 2: 
Ingresar 10 números, calcular e informar:
1. Promedio de los negativos
2. El mayor positivo
3. Porcentaje de ceros
Ejercicio 3: 
Un comercio necesita un programa para registrar los movimientos de caja a lo largo de un día de trabajo.
El programa debe pedir ingresar el importe inicial de dinero que hay en la caja al abrir el negocio, luego se irán ingresando los 
importes de ventas y de pagos que se produzcan a lo largo del día. 
Al cierre de la caja, ingresar como importe un valor cero.
Calcular e informar:
1. El importe final de la caja al cierre del día.
2. Cantidad de ventas realizadas (importes positivos) 
3. Importe total de los pagos realizados (importes negativos).
4. Importe de la mayor venta realizada.
33
Ejercicio 4: 
Ingresar número de documento, peso y altura de 10 personas, calcular e informar:
1. Cantidad de personas que pesan más de 70 kgr.
2. La altura promedio del grupo.
3. Número de documento, peso y altura de la persona con el mayor número de documento.
Para finalizar el ingreso de datos ingresar cero como número de documento.
Ejercicio 5: 
Rehacer el ejercicio anterior para un conjunto de personas (no se conoce la cantidad)
Para finalizar el ingreso de datos ingresar número de documento igual a cero.
34
33
34

Otros materiales

Materiales relacionados

218 pag.
Funciones_Elementales_para_Construir

UNIASSELVI

User badge image

Junio Dourado

22 pag.
104 pag.
251 pag.
Matemáticas1

SIN SIGLA

User badge image

Aleja Estren obredor