Estructuras de repetición

20
Estructuras de repetición Curso Propedéutico Maestría en Ingeniería Electrónica

description

Estructuras de repetición. Curso Propedéutico Maestría en Ingeniería Electrónica. Ciclo while. La sentencia while permite repetir un bloque de instrucciones. La sintaxis del ciclo while es: while(condición) sentencia o bloque; - PowerPoint PPT Presentation

Transcript of Estructuras de repetición

Page 1: Estructuras de repetición

Estructuras de repetición

Curso Propedéutico

Maestría en Ingeniería Electrónica

Page 2: Estructuras de repetición

Ciclo whileLa sentencia while permite repetir un bloque de instrucciones.

La sintaxis del ciclo while es:

while(condición)

sentencia o bloque;

Si la condición se cumple se ejecutan las sentencias del bloque y se regresa el flujo de control a evaluar nuevamente la condición. El proceso se repite hasta que la condición sea falsa.

El ciclo puede ejecutarse 0 veces si la condición no se cumple al entraren él.

condición sentencias

verdadero

falso

Page 3: Estructuras de repetición

EjemploCálculo de el promedio de 10 números.

#include <iostream.h>#include <conio.h>

int main(){ float suma = 0.0, num, promedio; int contador = 0; while(contador < 10){ cout << "Teclee un número:"; cin >> num; suma = suma + num; contador = contador + 1; } promedio = suma/contador; cout << "\nEl promedio es: " << promedio << endl; getch();}

Page 4: Estructuras de repetición

ciclo controlado por centinelaCálculo de el promedio de N números. Se utiliza un valor especial para detener la entrada de datos.

int main(){ float suma = 0.0, num, promedio; int contador = 0; cout << "Teclee un número (-1 = fin):"; cin >> num; while(num != -1){ suma = suma + num; contador = contador + 1; cout << "Teclee un número (-1 = fin):"; cin >> num; } if(contador>0){ promedio = suma/contador; cout << "\nEl promedio es: " << promedio << endl; } else cout << "\nNo se teclearosn valores" << endl; getch();}

Page 5: Estructuras de repetición

Operadores de asignaciónEn C existen operadores para abreviar las operaciones de asignación.

Por ejemplo: c = c + 3 puede escribirse como c += 3.

En general

variable = variable operador expresión

es equivalente a

variable operador= expresión

Ojo

a *= c + d

equivale a

a = a*(c + d) no a = a*c + d

Page 6: Estructuras de repetición

Incremento y decremento

Operador Llamado Ejemplo Descripción

++ preincremento ++a Incrementa a en 1, luego utiliza el nuevo valor en la expresión en que reside a.

++ posincremento a++ Toma el valor actual de a para la expresión en que reside a, luego incrementa a.

-- predecremento --a Decrementa a en 1, luego utiliza el nuevo valor en la expresión en que reside a.

-- posdecremento a-- Toma el valor actual de a para la expresión en que reside a, luego decrementa a.

Page 7: Estructuras de repetición

Determinación de número primoint main(){ int n = 2, num, esPrimo = 1, limite; cout << "Teclee un número > 2: "; cin >> num; limite = (int)sqrt(num); while(n <= limite && esPrimo){ if(num % n == 0) //es divisible entre n esPrimo = 0; n++; } if(esPrimo) cout << "\nEl número " << num << " es primo\n"; else cout << "\nEl número " << num << " NO es primo\n"; getch(); return 0;}

Page 8: Estructuras de repetición

Determinar los primos de 1 a 100int main(){ int n, num = 2, esPrimo, limite; while(num<=100){ esPrimo = 1; n = 2; limite = (int)sqrt(num); while(n <= limite && esPrimo){ if(num % n == 0) //es divisible entre n esPrimo = 0; n++; } if(esPrimo) cout << num << " "; num++; } getch(); return 0;}

lazo

inte

rno

lazo

ext

erno

Page 9: Estructuras de repetición

Tarea #5Escriba un programa para encontrar todos los divisores de un número.

Un número es perfecto si es igual a la suma de sus divisores, por ejemplo 6 es perfecto porque 6 = 1 + 2 + 3. Escriba un programa para encontrar todos los números perfectos entre 1 y 10000.

Page 10: Estructuras de repetición

Ciclo forLa sentencia for permite definir fácilmente ciclos controlados por contador.

El formato general de la estructura for es:

for(expresion1; expresion2; expresion3)

instrucción;

Esta es equivalente a la siguiente sentencia while:

expresion1;

while(expresion2){

instrucción;

expresion3;

}

expresion1 = sentencia de iniciación

expresion2 = condición de terminación

expresion3 = sentencia de incremento

Page 11: Estructuras de repetición

ejemplos de lazos fora) modifica la variable de control de 1 a 100 en incrementos de 1.

for(i = 1; i <= 100; i++)

b) modifica la variable de control de 100 a 1 en decrementos de 1.

for(i = 100; i >= 1; i--)

c) modifica la variable de control de 7 a 77 en incrementos de 7.

for(i = 7; i <= 77; i += 7)

d) modifica la variable de control de 20 a 2 en decrementos de -2.

for(i = 20; i >= 2; i -= 2)

e) modifica la variable de control de 2 a 20 en incrementos de 3.

for(i = 2; i <= 20; i += 3)

f) modifica la variable de control de 99 a 0 en decrementos de -11.

for(i = 99; i >= 0; i -= 11)

Page 12: Estructuras de repetición

#include <iostream>

#include <iomanip>

#include <cmath> // permite al programa utilizar la función pow

int main() {

double monto; // monto del depósito

double principal = 1000.0; // monto principal (al inicio)

double tasa = .05; // tasa de interés

cout << "Anio" << setw( 21 ) << "Monto del depósito" << endl;

cout << fixed << setprecision( 2 );

for ( int anio = 1; anio <= 10; anio++ ) {

monto = principal * pow( 1.0 + tasa, anio );

cout << setw( 4 ) << anio << setw( 21 ) << monto << endl;

}

return 0;

}

Cálculo de interés compuesto

precisión

ancho del campo

punto fijo

Page 13: Estructuras de repetición

Salida del programa

Anio Monto del depósito 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 6 1340.10 7 1407.10 8 1477.46 9 1551.33 10 1628.89

Page 14: Estructuras de repetición

Suma de seriesEs común el tener que sumar series de valores.

Por ejemplo:...

74

54

34

4

La serie anterior es igual a .

El siguiente trozo de código evalúa 1000 términos la serie anterior.

serie = 4;

signo = -1;

for(int i = 3; i <=1000 ; i +=2){

serie += signo*4/i;

signo = -signo;

}

Page 15: Estructuras de repetición

Serie de potenciasEvaluemos la serie de potencias del seno de un ángulo

...!7!5!3

sen753

xxxxx

Se requiere una variable para almacenar la potencia de x, otra para el factorial y otra para el signo.

seno = x;

signo = -1;

fact = 1;

pot = x;

for(int i = 3; i <=50 ; i +=2){

fact *= (i-1)*i;

pot *= x*x;

serie += signo*pot/fact;

signo = -signo;

}

Page 16: Estructuras de repetición

Tarea #6Escriba un programa que lea un ángulo en grados y calcule el coseno del ángulo utilizando la serie de potencias

...!6!4!2

1cos642

xxxx

Page 17: Estructuras de repetición

Ciclo do - while

El ciclo do-while es similar al ciclo while excepto que la prueba se realiza al final del ciclo, esto fuerza a que se ejecute por lo menos una vez.

condición

sentencias

verdadero

falso

Sintaxis

do{

sentencias;

}while(condición);

Page 18: Estructuras de repetición

ciclo do-while controlado por centinela

Cálculo de el promedio de N números. Se utiliza un valor especial para detener la entrada de datos.

int main(){ float suma = 0.0, num, promedio; int contador = 0; do{ cout << "Teclee un número (-1 = fin):"; cin >> num; if(num != -1){ suma = suma + num; contador = contador + 1; } }while(num != -1); if(contador>0){ promedio = suma/contador; cout << "\nEl promedio es: " << promedio << endl; } else cout << "\nNo se teclearosn valores" << endl; getch();}

Page 19: Estructuras de repetición

Método de newtonSe desea calcularla raíz de la ecuación sen(x) – e-x = 0 por el método de Newton.

#include <iostream.h>#include <conio.h>#include <math.h> int main() { double x, xOld, fx, dfx; x = 0.5; do{ xOld = x; fx = sin(x)-exp(-x); dfx = cos(x)+exp(-x); x = xOld - fx/dfx; cout << "fx = " << fx << " dfx = " << dfx << " x = " << x << endl; }while(fabs(fx)>1e-6); cout << "raiz = " << x << endl; getch(); return 0; }

Page 20: Estructuras de repetición

Resultado del método de Newton

fx = -1 dfx = 2 x = 0.5fx = -0.127105 dfx = 1.48411 x = 0.585644fx = -0.00401128 dfx = 1.3901 x = 0.588529fx = -4.62025e-006 dfx = 1.3869 x = 0.588533fx = -6.16098e-012 dfx = 1.3869 x = 0.588533raiz = 0.588533