Programacion Parte03
Programacion Parte03
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.
Ing. Cristina Perez Berro 3
Ejemplo 1: Informar los números del 1 al 6
i = 1 ; i <= 6 ; i ++
Verdadera
En el cuerpo del
entra
ciclo la acción a
realizar es informar
el contador S i
Luego de ejecutada la
acción del cuerpo del
Falsa ciclo vuelve al
sale
argumento del ciclo para
incrementar el contador
Prueba de Escritorio Programa C
i Pantalla # include <stdio.h>
main()
1 1 {
int i;
2 2 system("CLS");
3 3
for (i=1 ; i<=6 ; i++)
4 4 printf(" %d - ", i ) ;
5 5 printf("\n");
6
system("PAUSE");
6 }
7
Ing. Cristina Perez Berro 4
Ejercicio 1 : Escribir la cuenta regresiva del 10 al 0
# include <stdio.h>
main()
i = 10 ; i >= 0 ; i - - {
int i;
system("CLS");
i for (i=10 ; i>=0 ; i--)
S printf(" %d - ", i ) ;
printf("\n");
system("PAUSE");
}
printf("\n");
system("PAUSE");
}
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
del ciclo for
nro > 0
V F
nro < 0
V F
Dentro del ciclo se
cp ++ incrementan los
cn ++ cc ++ contadores donde
corresponda
cp , cn , cc
s
Fuera del ciclo se
informan los contadores
Ing. Cristina Perez Berro 6
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.
cp ++ if (nro>0) cp++;
cn ++ cc ++ else
if (nro<0) cn++;
cp , cn , cc else cc++;
s }
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);
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>
main()
Acumulador {
aditivo int i, nro1, nro2, producto=0; Al igual que a los contadores, a
suma nro1 system("CLS"); los acumuladores también hay
veces el valor de que inicializarlos en cero antes de
la variable nro2 printf("Ingresar dos numeros enteros: "); usarlos
scanf("%d%d", &nro1, &nro2);
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
cc Cantidad de ceros
s
Hay que verificar que el cp == 0
contador sea distinto de
cero, ya que al ser el Promedio de
“No ingresaron numeros sp / cp
divisor en el cálculo del s positivos “ s positivos
promedio, se evitará así
el error de división por cn == 0
cero
“No ingresaron numeros sn / cn Promedio de
s negativos“ s negativos
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
printf("Cantidad de ceros ingresados: %d\n", cc); resultado sea real se hace
un casting
if (cp==0) printf("No se ingresaron positivos\n");
else printf("El promedio de los positivos es: %.2f\n", (float) sp/cp );
system("PAUSE");
}
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 compararción para
identificar al mayor número ingresado.
Ing. Cristina Perez Berro 11
Ejemplo 1 : Ingresar 5 números, calcular e informar el mayor de ellos.
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 el
- Se cambia el estado de la 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
system("PAUSE");
}
bp = 0 ; bn = 0 ; cc = 0
i = 1 ; i <= 10 ; i ++
E nro
nro > 0
V
bp == 0
F nro < 0
nro<min bn == 0
min = nro V F V F
bp = 1 nro>max
min=nro
max = nro V F cc ++
bn = 1 max=nro
Antes de informar el
valor del máximo o s cc
mínimo hay que
verificar el estado V
bp == 0 F
de sus respectivas
banderas porque si “No ingresaron numeros positivos “ min
existe la posibilidad s s
que alguna de ellas
o ambas no hayan bn == 0
cambiado su estado V F
inicial no hay un
“No ingresaron numeros negativos“ max
máximo o mínimo s s
que informar
system("PAUSE");
}
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, 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 y por lo tanto no debe ser procesado y que tiene como objetivo ser la marca de fin de ciclo.
E nro
El ciclo while evalúa la condición
antes de entrar al ciclo, si es F
verdadera entra, si es falsa no entra. nro != 0
Por lo tanto, mientras el contenido
de la variable de control sea cant ++ V
distinto al dato clave indicado,
entrará al ciclo sum += nro
system("PAUSE");
}
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
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 V F
personas (cpers)
puede ser cero, hay eprom = suma/cpers
que verificar la entrada “No se procesaron
al ciclo for antes de datos”
informar (también eprom , max
podría haberse usado
la bandera para S S
realizar dicha
verificación)
system("PAUSE");
}
De un cajero electrónico se tiene la siguiente información de cada operación realizada por los cliente,
durante un día :
• nro 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 nro 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
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
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
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
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>
main()
{
int mes, c=0;
system("CLS");
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");
}
Ing. Cristina Perez Berro 32
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.
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.
Para finalizar el ingreso de datos ingresar número de documento igual a cero.
Ing. Cristina Perez Berro 33
www.algofun.com
http://algofun.com/index.php/es/teoria/cpp