Sunteți pe pagina 1din 7

INFORMTICA: ESTRUCTURAS REPETITIVAS FOR

Prof. Oscar Tinoco G.

C++ presenta tres estructuras de control repetitivo: while, do while y for. Estas estructuras
reciben la denominacin de bucles o lazos.
La estructura for es equivalente al trmino para en pseudo cdigo. Se le utiliza cuando se
conoce el nmero de repeticiones que deseamos ejecutar. La notacin de esta estructura es:
for ( condicin de inicio; expresin; accin despus de cada iteracin )
{
sentencia (s);
}

La condicin de inicio quiere decir que podemos inicializar una variable que vayamos a
utilizar dentro el cuerpo de la estructura for.
La expresin corresponde a una condicin lgica que nos indica que se seguir
iterando mientras la condicin sea verdadera.
La accin despus de cada iteracin viene a ser lo que queremos hacer variar
despus de cada iteracin, esta variacin podra ser un incremento en la variable
definida en la condicin de inicio.

La estructura for sirve para repetir un cdigo dependiendo de un contador. Veamos un ejemplo:
#include <conio.h>
#include <iostream.h>
main()
{
int contador;
for ( contador = 1; contador <= 10; contador++ )
{
cout<<"Escibir numero "<< contador<<" \n";
}
getche();
}
Primero se crea la variable contador de tipo entero (ser la variable de control en el for). Luego
se ejecuta la estructura for iniciando la variable contador en 1. Posteriormente se verifica que se
cumple la condicin contador<=10 y se ejecuta el bloque dentro de la estructura, o sea, imprime
en pantalla Escribir nmero 1.
Luego la variable contador es incrementada en uno con la expresin contador++ y el ciclo se
inicia otra vez. La variable contador ahora vale 2, por lo tanto se verifica la condicin y se vuelve
a ejecutar el cdigo. Este proceso se ejecuta hasta que contador toma el nmero 11 y la
condicin se hace falsa y no ejecuta el bloque.

Ejemplo 1:
Escribir un programa que obtenga el factorial de un nmero n, ingresado por teclado.
#include <conio.h>
#include <stdlib.h>
main()
{
int i, fac, num;
cout<< "Ingresar nro: ";
cin>> num;
fac = 1;
for ( i = 1; i <= num; i++ )
{
fac = fac * i;
}
cout << "El factorial de: "<< num<< " es: "<< fac;
getche();
}
Ejemplo 2:
Ingrese un nmero por teclado y determinar si es o no capica. Mostrar las iteraciones
necesarias para ello.
Nota: Un nmero es capica cuando puede ser ledo de izquierda a derecha y de derecha a
izquierda. Ilustracin: 151.
#include <iostream.h>
using namespace std;
main()
{
int num,inverso = 0,d,aux,i;
cout<<"Ingrese numero: ";
cin>>num;
aux = num;
for(i=0;aux > 0;i++){
d = aux%10;
aux = aux/10;
inverso = inverso*10 + d;
}
if(num == inverso)
cout<<num<<" ES CAPICUA";
else
cout<<num<<" NO ES CAPICUA";
cout<<"\nIteraciones: "<<i;
cout<<endl;
system("pause");
}

Ejemplo 3: For anidado:


Escribir un programa que muestre una salida de 20 lneas de este tipo:
1
12
123
1234

...

#include <iostream.h>
#include <conio.h>
main()
{
int i, j;
for ( i = 1; i <= 20; i++ )
{
for ( j = 1; j <= i; j++ )
{
cout <<j<<" ";
}
cout<<endl;
}
getche();
}

Bucle
Interno

Bucle
Externo

USO DE FOR ANIDADO


Elaborar un programa que muestre en pantalla todos los nmeros primos comprendidos
en un intervalo (a, b) de nmeros enteros, cuyos lmites se introducen por teclado.
Previamente se debe verificar que el intervalo es correcto (lmite superior > lmite
inferior)
#include <iostream>
Using namespace std;
main()
{
int a, b, c, i, n, primo;
cout<< "Introduzca un intervalo de nros\n";
cin>> a >> b;
cout<< endl;
if ( b < a )
{
c = a;
a = b;
b = c;
}
for ( n = a; n <= b; n++ )
{
for ( i = 2; i < n; i++ )
{
if ( n % i == 0)
{
primo = 0;
break;
}
else
primo = 1;
}
if ( primo == 1)
cout<<" "<< n;
}
}

P1. Dado el siguiente trozo de programa:


int i,j,k;
3

for(i=0;i<3;i++)
{
k=3;
j=1;
while( (k>0 && i<2) || j<3)
{
cout <<"Hola\n";
k--;
j=j+2;
}
}
a) Efectuar la corrida en papel y determinar cuntas veces aparece la
palabra hola.
b) Completar el programa y ejecutarlo. Compruebe su resultado con el
obtenido en a).

P2. Dado el siguiente trozo de programa:


int suma=0;
for (int i=0; i<10; i++)
if (i%4==0)
cout << i/4<<endl;
else
suma = suma+i;
cout << suma<<endl;
a) Efectuar la corrida en papel y determinar qu es lo que aparecer en
pantalla.
b) Completar el programa y ejecutarlo. Compruebe su resultado con el
obtenido en a).

P3. Escriba un programa que determine cuales son los mltiplos de 5 comprendidos
entre 1 y N.
Tome como referencia el siguiente pseudocdigo:
Algoritmo Multiplos5
Variable
Entero: i
Inicio
Para i<-1 hasta N hacer
Si (resto de (i/5) = 0) entonces
Escribe i
FinSi
FinPara
Fin
P4. Realizar un programa que presente una tabla de grados C a grados Fahrenheit
(F=9/5C+32) desde los 0 grados a los 300, con incremento de 20 en 20 grados.
P5. Realizar un programa que compruebe si dos enteros ledos desde el teclado son
primos relativos, es decir, que no exista ningn valor que divida de forma entera a
ambos. El programa slo debe dar por salida el mensaje \SI SON PRIMOS
RELATIVOS" o \NO SON PRIMOS RELATIVOS".
4

P6. Elaborar un programa que muestra un rectngulo hueco.


#include <iostream>
sing namespace std;
main()
{
int altura, base, n, m;
cout << "Ingrese la altura del Rectangulo : "; altura;
cin >> altura;
cout << "Ingrese la base del Rectangulo : "; base;
cin >> base;
cout << " ";
for( n = 0; n != base; n++ ) cout << "**";
// Lado superior
for( n = 0; n != (altura-1); n++ )
{
cout << "\n*"; // Lado izquierdo
for( m = 0; m != base; m++ ) cout << " "; // Vacios en el medio
cout << "*";
}
// Lado derecho
cout << "\n*";
// Extremo izquierdo inferior
for( n = 0; n != base; n++ ) cout << "**"; // Lado inferior
cout << "*";
// Extremo derecho inferior
cout << endl;
}

Ejercicios propuestos:
El nmero se puede aproximar por medio de la siguiente serie:

1.

= 2 1/3 + 1/5 1/7 + 1/9 1/11 + 1/13 1/15 + ...


Escribir un programa que le pregunte al usuario la cantidad de trminos a sumar de la
serie, y que muestre la aproximacin con esa cantidad de trminos.
2.

Generar los N primeros trminos de la serie de Fibonacci. El valor de N


(entero y positivo) deber ser ledo por teclado. En esta serie los dos primeros
nmeros son 1, y el resto se obtiene sumando los dos anteriores:
1,1,2,3,5,8,13,21,...
3.

Elaborar un programa que dibuje un triangulo como los que se muestran en los

siguientes ejemplos:

N=1
*

5.

N=2
*
***

N=3
*
***
*****

N=4
*
***
*****
*******

Elabora un programa que te pida el nmero de notas que vas a introducir y


posteriormente te vaya pidiendo las notas una a una. Finalmente el programa
te mostrar la media de todas las notas introducidas.
Ejemplo de Visualizacin:
Cuantas notas vas a introducir?
5
nota1:
17
nota2:
13
nota3:
14
nota4:
19
nota4:
11
La media aritmtica es: 14,8.

6. El siguiente es un programa en C++ que solicita las notas de un grupo de


estudiantes que rindieron el examen parcial de informtica (No se sabe la cantidad de
notas que se leern). El programa reporta la nota ms alta, la nota ms baja, el
promedio de la evaluacin y la cantidad de estudiantes que rindieron el examen.
Tenga en cuenta que las notas ledas son enteras y deben estar dentro del intervalo
[0,20]
#include <iostream>
#include <conio.h>
using namespace std;
main() {
int nota, nAlta = -1, nBaja = 21;
int sumaNotas = 0;
int numNotas = 0;
cout << "Ingrese nota: ";
cin >> nota;
while(nota>=0 && nota <=20)
{
sumaNotas = sumaNotas + nota;
numNotas = numNotas + 1;
if (nota > nAlta)
nAlta = nota;
if (nota < nBaja)
nBaja = nota;
cout << "Ingrese nota: ";
cin >> nota;
}
cout << "Nota mas alta = "<< nAlta << endl;
cout << "Nota mas baja = "<< nBaja << endl;
cout << "Promedio Examen Parcial = " << sumaNotas/float(numNotas) << endl;
cout << "Rindieron el examen: "<< numNotas <<" estudiantes"<< endl;
getche();

Convertir este cdigo a una estructura for.

S-ar putea să vă placă și