Vous êtes sur la page 1sur 28

IWI-131 Tema 3 Algoritmos

Combinacin de operaciones bsicas


HASTA QUE
Se repite la ejecucin de una operacin hasta que
se cumpla una condicin.
La principal diferencia con MIENTRAS es que la
operacin se ejecuta al menos una vez.
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
C
2
1
3
C: Condicin
si
no
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
1
3
2
C
C: Condicin
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
Inicio
ejecutar 1
repetir
ejecutar 2
hasta que se cumpla condicin
ejecutar 3
fin
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
Ejemplo
Mismo ejemplo anterior
Inicio
definir variable x
repetir
ingresar x por teclado
Hasta que x sea mayor que cero
mostrar valor de x
fin
IWI-131 - Tema 3 Algoritmos
Repetir un nmero fijo de veces
Repetir un nmero fijo de veces
Muy til cuando se sabe el numero de
repeticiones a ejecutar.
Por lo general se define una variable que sirve de
contador
El contador mantiene el nmero de cada iteracin.
Tambin se puede definir el incremento del
contador en cada iteracin.
IWI-131 - Tema 3Algoritmos
Combinacin de operaciones bsicas
Inicio contador, fin contador
2
3
1
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
1
3
2
Inicio contador, fin contador
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
Inicio
ejecutar 1
desde contador inicial hasta
contador final
ejecutar 2
fin desde
ejecutar 3
fin
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
Ejemplo

5
0 i
i
Inicio
definir variable sumatoria
asignar el valor 0 a sumatoria
desde i igual a 0 hasta i igual a 5
sumatoria = sumatoria + i
fin desde
mostrar valor de sumatoria
fin
IWI-131 - Tema 3 Algoritmos
Combinacin de operaciones bsicas
Combinacin de estructuras de control
seriales, selectivas y repetitivas
Cualquier combinacin es posible
Pueden existir estructuras anidadas
Es importante definir el comienzo y el termino de
cada estructura
Fin tema 1
Algoritmos
Estatuto do while

El estatuto do-while se utiliza para especificar un ciclo
condicional que se ejecuta al menos una vez.
Este ciclo se presenta en algunas circunstancias en las que se
ha de tener la seguridad de que una determinada accin se
ejecutara una o ms veces, pero al menos una vez.

Sintaxis
do
estatuto;
while ( condicin );
Estatuto do - while
Estatuto do - while
Si se requiere realizar ms de un estatuto se deben utilizar llaves.

do
{

bloque de estatutos;
}

while ( condicin ); // nota que lleva ;

Se realizan los estatutos y se verifica la condicin, mientras sea
verdadera se sigue ejecutando; al momento de ser falsa termina el ciclo.
Dado que la condicin se revisa al final del ciclo el (los) estatuto(s)
se realizan al menos una vez a diferencia del while


Estatuto do - while
Ejemplo I: Dado un nmero de tipo long decir cuntos
dgitos tiene

#include <iostream.h>
long num;
int cant = 0, x;

int main()
{
cout<<"Teclea un numero ";
cin>>num;
x = num; // guardo el numero en otra variable para no perderlo (por si luego lo ocupo)
do
{
x = x / 10;
cant++;
} while (x > 0);
cout<<"El numero tiene "<<cant <<" digitos"<<endl;
return 0;
}

Estatuto do - while
Ejemplo II: Validar que un nmero dado est en el
rango de 10 a 20.
#include <iostream.h>

int num;

int main()
{
do
{
cout << "Dame el numero " << endl;
cin >> num;
}
while ( (num <10) || (num > 20) );
cout << "Numero dentro de rango" << endl;
return 0;
}

donde si la condicin es falsa la primera vez no se ejecuta lo que est dentro del ciclo.

El estatuto for es un mtodo para ejecutar un bloque de
sentencias un nmero fijo de veces.
El ciclo for se diferencia del ciclo while, do- while en que
las operaciones de control del ciclo se sitan en un solo
sitio: la cabecera de l estatuto.

Sintaxis

for (inicializacin ; condicin ; incremento )
estatuto;

Estatuto for
Estatuto for
Si se requiere realizar ms de un estatuto se deben utilizar llaves.

for (inicializacin ; condicin ; incremento )
{
bloque de estatutos;
}

Funcionamiento del For

1. Ejecuta el o los estatutos de inicializacin
2. Evala la condicin, si es verdadera entra al ciclo
3. Ejecuta el o los estatutos
4. Incrementa o decrementa el o los estatutos de
inicializacin y regresa al paso 2

Estatuto for
Notas sobre el for

Las 3 partes del for son opcionales, si no se pone
condicin se toma como verdadero.

Si no se incluye la inicializacin o condicin, la
condicin y el incemento o decremento deben de ir.
Ejemplo: for ( ; a > 10 ; a--)

Si la primera vez la condicin es falsa no se ejecuta
ningn estatuto y termina el for

Estatuto for

Si se pone ms de una inicializacin o accin, estas
deben ir separadas por coma
Ejemplo: for ( x=0, y= 3; x < 4 ; x++ )

Una variable puede declararse en la seccin de
inicializacin, solo hay que tomar en cuenta que esta
variable solo es reconocida dentro del ciclo.

Ejemplo: for (int num = 1; num < = 10; num++)

Estatuto for
Ejemplo I: Mostrar los 30 primeros nmeros de la serie de Fibonacci. La serie es 1,1,2,3,5,8,13....

#include <iostream.h>
long a, b, fibo; //los defino long porque se generan numeros muy grandes
int i;

int main()
{
a = 1;
b = 1;
cout<<a<<"\t"<<b<<"\t"; // "\t" sirve para poner un tab en la pantalla
for (i = 3; i<= 30; i++) // empiezo i en 3 porque ya mostre los 2 primeros
{
fibo = a + b;
cout<<fibo<<"\t";
a = b;
b = fibo;
}
return 0;
}


Estatuto for
Ejemplo II: Sumar todos los nmeros nones desde 1 hasta 30

#include <iostream.h>

int num, suma = 0;

int main()
{
for (num = 1; num <= 30; num+=2) // incremento de 2 en 2 para asegurar
suma += num; // nmeros nones
cout << " La suma es " << suma;
return 0;
}


Ciclo infinito

Cuando en un ciclo la condicin siempre es
verdadera se dice que es un ciclo infinito, pues
nunca saldr del ciclo y el programa no termina. Para
evitarlos hay que estar seguros que en el bloque de
estatutos haya un estatuto que modifique el valor de
la condicin de tal modo que llegue a ser falsa.


Ciclos infinitos
Ciclos infinitos
Ejemplo I

while ( calificacion != -1)
total = total + calificacion; // dado que no hay llaves la lectura del nmero
contador ++; // no se realiza y el valor de la calificacin no
cout << "Da un -1 para terminar el ciclo" << endl; // cambia, por ende la
cin >> calificacion // la condicin siempre es verdadera


Ciclos infinitos
Ejemplo II

cont = 6;
a = 10;
while ( cont > 1)
{
suma = suma + cont;
a--;
cont++; // cont cada vez es mayor por lo que
// siempre ser mayor a 1
}


6) Leer 10 calificaciones de un grupo de
alumnos. Calcule y escriba el porcentaje de
reprobados. Tomando en cuenta que la
calificacin mnima aprobatoria es de 3.0.
UTILICE UNA FUNCION QUE CALCULE EL
PORCENTAJE


using namespace std;
#include<iostream>

int contador, calif, perdio =0, porc=0;


int porcentaje(int perdio , int contador){
return(perdio * 100/contador);
}

int main()
{

contador = 0;
perdio = 0;
while (contador < 10 )
{

cout<<" Dame la calificacion "<<endl;
cin >> calif;

if (calif < 3){


perdio ++;
}

contador ++;
}
porc= porcentaje(perdio,contador);

cout<<"la cantidad de estudiantes es "<< contador<<endl;
cout<<"la cantidad de estudiantes que pierden es "<< perdio<<endl;
cout<<"El porcentaje de estudiantes que pierden es "<< porc<<endl;
system ("pause");
return 0;
}

Vous aimerez peut-être aussi