Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Diapositivas Repetitivas Ii Estudiantes

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 37

GUÍA DE TEORÍA

1
¿Cómo terminar un bucle?
Una de las cosas importantes en C++ a la hora de utilizar bucles, es
la implementación de una forma para culminar con él, es decir,
para que nuestro bucle no se convierta en un bucle infinito.
Para ello se han creado formas que nos ayudan a resolver este
problema.
Vamos a estudiar diferentes maneras de terminar correctamente
un bucle.
• Bucles controlados por ………………………..
• Bucles controlados por ………………………………..
• Bucles controlados por …………………………………...
Bucles controlados por contadores

En C++ un bucle controlado por una variable


contador, es cualquier bucle que determina la
cantidad de iteraciones que va a tener antes de
empezar a hacerlo y a continuación repite el
cuerpo del bucle esa cantidad de veces.
Bucles controlados por contadores
Ejemplo: Escribir un programa que permita leer los
precios de productos en un supermercado y mostrar el
total a pagar.

Preguntar cuántas iteraciones desea.


1 ¿Cuántos productos va a llevar? (variable productos)

2 Utilizar un contador (variable i )

3 Inicializar el contador antes de bucle

Cada vez que pase por el cuerpo del bucle,


4 aumentar el contador

5 Utilizar while (i<=productos)


¿Cuántos productos va
a llevar?
¿Cuántos productos va
a llevar?

int main ()
{ float suma=0, precio;
int productos, i=1;
cout<<"Cuantos productos va a llevar?: ";
cin>>productos;
while (i<=productos)
{ cout<<"Ingrese precio: ";
cin>>precio;
suma=suma+precio;
i++; }
cout<<"Monto total a pagar= "<<suma;
getch(); }
¿Quiere que cuente ¿Cuántos productos
todos mis productos? va a llevar?
QUE INCOMODIDAD
Bucles controlados por centinelas
Si no se tiene conocimiento de cuántas veces se va a repetir
el cuerpo del bucle, podemos dar la opción de que sea el
usuario quien determine cuándo finalizar.

Un centinela ……………………………………………………………………
................................................................................................
……………………………………………………………………………………………..
.
A la hora de usar un centinela para finalizar un bucle se debe
tener mucho cuidado, el valor elegido debe ser totalmente
……………………………….. de los posibles valores de la lista para que
se pueda utilizar para señalar ………………………………………………….
Bucles controlados por centinelas
Ejemplo: Escribir un programa que permita leer los precios de productos en un
supermercado y mostrar el total a pagar.
En este caso el centinela será un número negativo, ya que indicará el final de la lista

int main ()
{ float suma=0, precio;

do { cout<<"Ingrese precio: ";


cin>>precio;
if (precio>=0)
suma=suma+precio;
}while (precio>=0); Para 1
cliente
cout<<"Monto total a pagar= "<<suma;

getch(); }
Bucles controlados por banderas o interruptores
interruptores o banderas (flags)
Es una variable ………………………… que se utiliza
para conservar el estado de una condición.
Se denomina bandera o interruptor por
asociarse a un interruptor (encendido/apagado)
o a una bandera (arriba/abajo)
interruptores o banderas (flags)

El valor del interruptor debe ……………………

antes de comenzar el bucle y debe ………..

su estado (valor) ……………………. del cuerpo

del bucle.
int main ()
{ float suma=0, precio; debe inicializarse
bool flag=true; antes de comenzar el
char respuesta; bucle

while (flag)
{ suma=0;
system("cls");
do { cout<<"Ingrese precio: ";
cin>>precio;
if (precio>=0)
suma=suma+precio;
} while (precio>=0) ;

cout<<"Monto total a pagar= "<<suma;

cout<<"\nDesea continuar S/N: "; cin>>respuesta;


if (respuesta=='N' ||respuesta== 'n') debe cambiar su
flag=false; estado (valor) dentro
} del cuerpo del bucle.
cout<<"\nCaja cerrada";
getch(); } Para varios
clientes
LOS ENUNCIADOS BREAK Y CONTINUE
Se utilizan para modificar el flujo de control

¿Qué hace break en una estructura repetitiva?:


1. Causa la ………………… ……………………………. de una estructura repetitiva .
2. La ejecución del programa continua con el primer enunciado fuera de la
estructura repetitiva

¿Qué hace continue en una estructura repetitiva? :


1. ………………………. los enunciados ………………………… del cuerpo de la
estructura repetitiva .
2. La ejecución continua con la siguiente iteración del ciclo evaluando la
condición
int main()
{ float nota;
while (true)
{cout<<"Ingrese nota: ";
cin>>nota;
if (nota>=0 && nota<=20)
{cout<< "Nota correcta!!!";
break;}
cout<<"Nota incorrecta. Ingrese de nuevo"<<endl;
}
getch();
}
Ejercicios break/continue
Escriba un programa que capture 5
números. Si el número capturado es cero
debe salir del ciclo y desplegar el mensaje
"Se capturo el numero cero" así como el
resultado de la suma de los números
capturados. Si el número es negativo este
numero no debe contarse. Al final debe
desplegar la suma de los números
capturados. Usando las sentencias break y
continue, implemente el programa
anterior.
1. int main (void)
2. { int n, i, a=0;
3. for (i=1; i<=5; i++)
4. { cout<<"Ingrese numero: "; cin>>n;
5. if(n==0)
6. {cout<<"Se capturo el numero cero"<<endl;
7. break;}
8. if(n<0)
9. {i--;
10. continue; }
11. a=a+n; }
12. cout<<"La suma es: "<<a;
13. getch();
14. }
Ejercicios break/continue
Utilizando la función break, escriba un programa
que capture números. Si el numero es múltiplo de
cinco debe detener la captura de números y
desplegar la cantidad de números capturados (no
contabilizar el múltiplo de 5)
int main()
{ int n, cont=0;

while (1)
{cout<<"Ingrese numero: "; cin>>n;
if (n%5==0)
break;
else
cont++; }
cout<<"Ha ingresado "<<cont<<" numeros";
getch();
}
LA FUNCION EXIT()
La función EXIT() tiene una operatoria
mucho más drástica que las anteriores ,
en vez de saltear una iteración o
abandonar un lazo de programa , esta
abandona directamente al programa
mismo dándolo por terminado . Realiza
también una serie de operaciones útiles
como ser , el cerrado de cualquier
archivo que el programa hubiera abierto
, el vaciado de los buffers de salida , etc.
Programa para mostrar la tabla
de multiplicar de un número
solicitado al usuario
int main() {
int numtab, i=1;
cout << "\n Numero de la Tabla de Multiplicar:";
cin >> numtab;

while(i<=10 )
{ cout<< numtab <<" * "<<i<<" = "<<i*numtab<<endl;
i++;}
getch();
}
int main()
{ int numtab, i=1;
cout << "\n Numero de la Tabla de Multiplicar:";
cin >>numtab;
do{
cout<< numtab <<" * "<<i<<" = "<<i*numtab<<endl;
i++;
} while(i<=10);

getch();
}
int main()
{ int numtab;
cout << "\n Numero de la Tabla de Multiplicar: ";
cin >> numtab;

for(int i=1; i<=10; i++)


cout<< numtab <<"*"<<i<<"="<< numtab*i<<endl;

getch();
}
QUIZ
DE TEORÍA
Estructuras
Repetitivas II
El valor del interruptor debe inicializarse dentro del
cuerpo del bucle.

verdadero

falso
¿Cuántas sentencias for anidadas pueden contener
una sentencia for?

Sólo dos

Ninguna

Tantos como quieras


Los parámetros de la estructura for se separa por
comas

verdadero

falso
Puede colocarse una estructura do…while
dentro de una estructura while

verdadero

falso
Puede colocarse una estructura for dentro de una
estructura while

verdadero

falso
break, en una estructura repetitiva, causa la salida
anticipada de una estructura repetitiva

verdadero

falso
continue, en una estructura repetitiva, salta los
enunciados restantes del cuerpo de la estructura
repetitiva .

verdadero

falso
En el siguiente programa, ¿la variable suma es un
contador?

verdadero

falso
2 participantes: participante A y participante B juegan Yan Ken Po.
Se considera 3 elementos:
Tijera se representa por la letra t
Papel se representa por la letra p
Roca se representa por la letra r
La tijera gana al papel, el papel gana a la roca y la roca gana a la tijera.
Si los dos participantes eligen el mismo elemento nadie gana puntos.
El programa debe seguir hasta que alguno de los participantes obtenga 3 puntos.
El programa mostrará quien ganó y cuantas jugadas fue necesario realizar .
Ejemplo:
Jugada 1: Jugada 2:
Participante A: t Participante A: r
Participante B: p Participante B: r

Jugada 3:
Participante A:p
Participante B: r

Jugada 4: Gano el participante A


Participante A:r Se realizaron 4 jugadas
Participante B: t
int main ()
{cout<<"ROCA: r/R PAPEL: p/P TIJERA: t/T"<<endl; if(x=='P'||x=='p')
switch (y)
int c=0,a=0,b=0;
{case 'T':
char x, y; case 't': b++; break;
while((a<3)&&(b<3)) case 'R':
case 'r': a++; break;}
{
if(x=='R'||x=='r')
c++; switch (y)
gotoxy(10,6);cout<<" "; {case 'P':
gotoxy(10,8);cout<<" "; case 'p': b++; break;
case 'T':
gotoxy (5,5); cout<<"Jugada "<<c; case 't': a++; break;}
gotoxy(10,6);cout<<"Participante A: ";
x = getch(); cout << '*'; gotoxy (40,2);cout<<"Puntos JUGADOR A: "<<a;
gotoxy(10,8);cout<<"Participante B: "; gotoxy (40,3); cout<<"Puntos JUGADOR B: "<<b;
gotoxy (5,12); cout<<"Presione una tecla para continuar
y = getch(); cout << '*'; siguiente jugada"<<endl; getch();
}
if(a==3)
{ gotoxy (15,14);cout<<"GANADOR JUGADOR A";
if(x=='T'||x=='t') gotoxy (15,15);cout<<"Fueron "<<c<<" jugadas";}
switch (y) if(b==3)
{case 'P': { gotoxy (15,14);cout<<"GANADOR JUGADOR B";
case 'p': a++; break; gotoxy (15,15);cout<<"Fueron "<<c<<" jugadas";}
case 'R': getch(); }
case 'r': b++; break;}
#include<iostream>
#include<conio.h>
#include <windows.h>
using namespace std;

void gotoxy(int x,int y)


{ HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos); }

También podría gustarte