0% encontró este documento útil (0 votos)
8 vistas17 páginas

03 - Estructuras Repetitivas

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas17 páginas

03 - Estructuras Repetitivas

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Tecnológica Nacional Fundamentos de Informática

Facultad Regional Haedo Computación

Universidad Tecnológica Nacional


Facultad Regional Haedo

Fundamentos de Informática / Computación

Operadores Mixtos – Ciclo Definido (for)


Contadores – Acumuladores – Concepto de Bandera
Ciclos Condicionados (while / do – while)
1

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

CPB 1
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

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.

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. 3

Ejemplo 1: Informar los números del 1 al 6


Inicializar el contador Condición de control Incremento del contador
Se ejecuta al entrar por primera vez Se evalúa todas la veces Se ejecuta a partir del primer
al ciclo, (se realiza por única vez). Mientras sea verdadera entra al ciclo ingreso al cuerpo del ciclo y hasta
Luego verifica la condición Cuando sea falsa sale del ciclo el final del ciclo, luego de cada
incremento verifica la condición

i = 1 ; i <= 6 ; i ++
Verdadera
En el cuerpo del entra
ciclo la acción a
realizar es informar i
S
el contador
Falsa
sale

Luego de ejecutada la
Prueba de Escritorio Programa C acción del cuerpo del
i Pantalla # include <stdio.h> ciclo vuelve al
# include <stdlib.h> argumento del ciclo for
1 1 para incrementar el
main()
contador
2 2 {
int i;
3 3

4 4 for (i=1 ; i<=6 ; i++)


printf(" %d - ", i ) ;
5 5
6 6 printf("\n");
7 system("PAUSE");
}
4

CPB 2
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Ejercicio 1 : Escribir la cuenta regresiva del 10 al 0


# include <stdio.h>
# include <stdlib.h>
main()
i = 10 ; i >= 0 ; i - - {
int i;

i for (i=10 ; i>=0 ; i--)


S
printf(" %d - ", i ) ;

printf("\n");
system("PAUSE");
}
Ejercicio 2 : Escribir los números pares del 2 al 10
# include <stdio.h>
# include <stdlib.h>
main()
i = 2 ; i <= 10; i +=2 {
int i;
i
S for (i=2 ; i<=10 ; i+=2)
printf(" %d - ", i ) ;

printf("\n");
system("PAUSE");
}
5

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

Ejemplo 2 : 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

Los contadores deben


cp = 0 ; cn = 0 ; cc = 0 inicializarse en cero antes
de entrar al ciclo
i = 1 ; i <= 5 ; i ++
El ingreso de la variable
que va a almacenar los
nro sucesivos números a
E procesar se hace dentro
nro > 0 del ciclo for
V F

nro < 0
V F
cp ++
cn ++ cc ++

Dentro del ciclo se


cp , cn , cc incrementan los contadores
s donde corresponda

Fuera del ciclo se informan los contadores 6

CPB 3
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Diagrama de Flujo Programa C


# include <stdio.h>
cp = 0 ; cn = 0 ; cc = 0 # include <stdlib.h>
i = 1 ; i <= 5 ; i ++
main()
{
E nro int i, nro, cp=0, cn=0, cc=0;
V
nro > 0 F
for ( i=1 ; i<=5 ; i++ )
V nro < 0 F {
cp ++
cn ++ cc ++ printf("Ingresar un numero: ");
scanf("%d",&nro);
cp , cn , cc
s
if (nro>0) cp++;
else
if (nro<0) cn++;
Cuando hay más de una
else cc++;
acción a ejecutarse dentro }
del ciclo for hay que printf("La cantidad de positivos es: %d\n", cp);
encerrarlas entre llaves printf("La cantidad de negativos es: %d\n", cn);
printf("La cantidad de ceros es: %d\n", cc);

system("PAUSE");
}
7

Ejemplo 3: Dados dos números enteros positivos, informar el producto de ambos por sumas
sucesivas.
producto = 0 producto nro1 nro2 i

nro1 , nro2 0 5 4 1
E
4 2
i = 1 , i <= nro1 , i ++ ,
8 3
producto + = nro2 12 4
16 5

S producto 20 6

# include<stdio.h>
# include<stdlib.h>
Acumulador main()
aditivo { Al igual que a los contadores, a los
suma nro1 int i, nro1, nro2, producto=0; acumuladores también hay que
veces el valor de inicializarlos en cero antes de usarlos
la variable nro2 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");
} 8

CPB 4
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Ejemplo 4: Dados 5 números informar el promedio de los positivos, el promedio de los


negativos y la cantidad de ceros.

cp = 0 ; cn = 0 ; cc = 0 ; sp = 0 ; sn = 0

i = 1 ; i <= 5 ; i ++

E
nro

nro > 0
V F

nro < 0
cp ++ V F

sp += nro cn ++ cc ++
sn += nro

Hay que verificar cc Cantidad de ceros


que el contador sea
s
distinto de cero, ya cp == 0
que al ser el divisor
en el cálculo del “No ingresaron numeros sp / cp Promedio de
promedio, se evitará s positivos “ s positivos
así un posible error cn == 0
de división por cero
“No ingresaron numeros sn / cn Promedio de
s negativos“ s negativos

#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++;
} Informa el resultado de la división y
para que el resultado sea real se
printf("Cantidad de ceros ingresados: %d\n", cc); hace un cast o casting

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");
} 10

10

CPB 5
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

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ó
Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.
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

11

Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.

1- Se asigna el valor cero a


la bandera antes del ciclo bandera = 0

i = 1 ; i <= 5 ; i ++

2 – Se ingresa el primer
número a procesar
nro
E
3 - Si la bandera está en cero, eso bandera == 0
significa que es la primera vez que se V F
ingresa al ciclo y por lo tanto en nro
5 - A partir del segundo
está el primer número ingresado nro>max ingreso de datos y al
max = nro V F
estar la bandera en 1
4– comienza el proceso de
- Se guarda el primer número bandera = 1 max =nro comparación entre el
ingresado en la variable auxiliar nuevo valor ingresado y
- Se cambia el estado de la el que está en la variable
bandera a 1 para indicar que ya max auxiliar que es el valor
mayor hasta el momento
ingresó el primer número del
conjunto s

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

12

12

CPB 6
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.


Programa C
Diagrama de Flujo #include <stdio.h>
#include <stdlib.h>

bandera = 0 main()
{
i = 1 ; i <= 5 ; i ++ int i, max, nro, bandera=0;

nro for (i=1 ; i<=5 ; i++)


E
{
bandera == 0 printf("Ingresar un numero: ");
V F
scanf("%d",&nro);
nro>max
max = nro V F
if (bandera==0)
bandera = 1 max =nro {
max=nro;
max bandera=1;
s }
else
if (nro>max) max=nro;
}
printf("El numero mayor es: %d\n", max);

system("PAUSE");
}
13

13

Ejemplo 2 : Ingresar 10 números, calcular e informar el mayor negativo, el menor positivo


y la cantidad de ceros. Diagrama de Flujo

bp = 0 ; bn = 0 ; cc = 0

i = 1 ; i <= 10 ; i ++

E nro

nro > 0
Antes de bp == 0 nro < 0
V F
informar el valor
del máximo o nro<min bn == 0
min = nro V F
V F
mínimo hay que
bp = 1 nro>max
verificar el min=nro
max = nro V F cc ++
estado de sus bn = 1 max=nro
respectivas
banderas s cc
porque si existe
la posibilidad V
bp == 0 F
que alguna de
ellas o ambas no “No ingresaron numeros positivos “ min
hayan cambiado
s s
su estado inicial bn == 0
no hay un V F
máximo o “No ingresaron numeros negativos“ max
mínimo que s s
informar
14

14

CPB 7
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

#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
{ Como este if no tiene salida por el falso no es
if (nro<min) min=nro; necesario poner el else correspondiente y por
} esta razón si o si se necesitan las llaves del
else else que lo contiene
if (nro<0)
if (bn==0)
{
max=nro; bn=1;
}
else
{
Aquí también estamos frente a la misma
if (nro>max) max=nro;
situación
}
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");
}
15

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 a procesar (no es válido), por lo tanto no debe ser procesado
ya que tiene como objetivo ser la marca de fin del ciclo.

16

16

CPB 8
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

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.

Primero hay que ingresar la


variable de control del ciclo cant = 0 ; sum = 0

El ciclo while evalúa la condición E nro


antes de entrar al ciclo, si es F
verdadera entra, si es falsa no nro != 0
entra.
Por lo tanto, mientras el cant ++ V
contenido de la variable de
control sea distinto al dato sum += nro
clave indicado, entrará al ciclo
E nro
La última instrucción antes de
cerrar el ciclo while tiene que cant , sum
S
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

17

17

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.

Diagrama de Flujo Programa C


#include <stdio.h>
cant = 0 ; sum = 0 #include <stdlib.h>
main()
E nro {
int nro, cant=0, sum=0;
nro != 0
printf("Ingresar un numero entero ( ingresar cero para terminar ): ");
cant ++ scanf("%d", &nro);
while ( nro != 0 )
sum += nro {
cant++;
E nro sum+=nro;
printf("Ingresar un numero entero: ");
S
cant , sum 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");
}

18

18

CPB 9
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Ejemplo 2:

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.

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

19

cpers=0 ; suma=0 ; bandera=0


1- ingresar la variable que permitirá
E edad entrar o no al ciclo while

edad >= 0
2- El ciclo evalúa la marca de fin
Punto 1 y 2 cpers++ si la condición es verdadera (distinta a
la marca de fin) entra al ciclo
Punto 2 suma += edad Si es falsa, no entra al ciclo

V
bandera == 0 F
edad>max
Punto 3 max=edad V F 3- la última instrucción dentro del ciclo
debe ser ingresar la variable de
bandera=1 max=edad control , de esta manera se actualiza
la condición permitiendo el reingreso
E edad al ciclo o la salida de él

V
cpers != 0 F Verificar si se ingresó al ciclo alguna
vez, antes de informar los resultados.

cpers “No se
procesaron
suma/cpers
datos”
S max S

20

20

CPB 10
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

#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;
Como a un ciclo while puede NO ingresarse
nunca, antes de informar el resultado de una
printf("Ingresar la edad de la persona: ");
división cuyo divisor es un contador que puede
scanf("%d", &edad);
quedar en cero y/o hay que informar los datos de
}
un máximo o mínimo SIEMPRE hay que verificar si
if (cpers!=0)
se ingresó alguna vez al ciclo para evitar errores
{
de división por cero o informar variables sin
printf("La cantidad de personas procesadas es %d\n", cpers);
contenido válido
printf("La edad promedio del grupo es %d\n", suma/cpers;);
printf("La edad maxima es %d\n", max);
También podría haberse usado la bandera para
}
esta verificación
else printf("No se ingresaron datos\n");
system("PAUSE");
}

21

21

Ejemplo 3:

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

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

22

CPB 11
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

suma=0 ; bandera=0

cpers Se ingresa la cantidad de


E
personas
i=1 , i<=cpers , i++
El ciclo definido controla
ingresar al ciclo cpers veces
edad
E

suma += edad El dato a procesar se ingresa


dentro del ciclo

bandera == 0
V F
edad>max
max=edad
V F
reingreso al ciclo
bandera=1
max=edad incrementando la variable de
control ( i ) hasta que la
cpers != 0 condición sea falsa
Como la cantidad de personas V F
(cpers) puede ser cero, hay
que verificar la entrada al ciclo eprom = suma/cpers
for antes de informar (también “No se procesaron
podría haberse usado la datos”
bandera para realizar dicha eprom , max
verificación)
S S

23

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

24

CPB 12
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Ejemplo 4:

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

25

25

total = 0 ; cextr = 0 ; ccons = 0 ; bandera = 0


Cuando hay más de un dato de
entrada, en el ciclo while primero se
nrocuenta ingresa solamente el dato de la
E variable de control del ciclo, es
decir la que tiene la marca de fin
nrocuenta != 0
Dentro del ciclo se ingresan los
oper datos restantos .
E A estos datos los llamaremos datos
asociados a la marca de fin
total++

oper != 3
V F

E monto

oper == 2
V F
ccons++
bandera == 0
V F
monto>max
max=monto V F cextr++
cmax=nrocuenta
max=monto
bandera=1
cmax=nrocuenta
La última instrucción dentro
del ciclo debe ser solamente
nrocuenta
E la variable de control con
marca de fin

Continúa en diapositiva siguiente


26

26

CPB 13
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

Continuación…

total != 0
V F

ccons*100/total
S

S cextr

“ No se realizaron operaciones “
bandera != 0
V F

“ No se
max, cmax realizaron
depósitos “

S S S

27

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)
{ … continuación
max=monto; cmax=nrocuenta; bandera=1; if (total!=0)
} {
else printf("La cantidad de extracciones es %d\n", cextr);
{ printf("El porcentaje de consultas es %.2f\n", (float)ccons*100/total);
if (monto>max)
{ if (bandera!=0)
max=monto; cmax=nrocuenta; {
} printf("El mayor deposito realizado fue de $%.2f\n", max);
} printf("Cuenta donde se hizo el deposito: %d\n", cmax);
else cextr++; }
} else printf("No se hicieron depositos\n");
else ccons++; }
else printf("No hubo movimientos de cuentas\n");
printf("Ingresar numero de cuenta: ");
scanf("%d", &nrocuenta); system("PAUSE");
} }
…..continúa 
28

28

CPB 14
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

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

29

E n1 , n2
Entra al cuerpo del
“Elegir opcion del menu:
ciclo ejecutando las
1- Suma
instrucciones que
2- Resta
hay dentro de él.
3- Multiplicacion
Se ingresa siempre 4- Division
al ciclo, por lo S 5- Salir
menos una vez
opcion
E

opcion
1 2 3 4
V n2!=0 F
n1 + n2 n1 - n2 n1 * n2
S n1/n2 “error”
S S S S

opcion != 5 V

F
Al final se evalúa la condición del
ciclo, mientras sea verdadera
vuelve a entrar al ciclo.
Cuando sea falsa sale del ciclo

30

30

CPB 15
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

#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

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
c=0
c ++

mes
E
mes <1 || mes >12

S c-1

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
#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

32

CPB 16
Universidad Tecnológica Nacional Fundamentos de Informática
Facultad Regional Haedo Computación

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

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

34

CPB 17

También podría gustarte