Title: Control de Flujo IV: Algoritmos Numricos
1Control de Flujo (IV)Algoritmos Numéricos
- Clase 10
- Introducción a la Programación
- Marcos Sepúlveda(marcos_at_ing.puc.cl)
2Resumen clase anterior
- Instrucción do-while
- Instrucción for
- Sabemos hacer programas con iteraciones
- Mini-tareas
- Esperando el Año Nuevo
- Conversión de cantidades a letras
3Equivalencia Lógica entre Instrucciones de
Iteración
- Las tres instrucciones con que cuenta el lenguaje
de programación C para la especificación de
iteración son lógicamente equivalentes. - Para ilustrar este hecho, se muestra a
continuación un ciclo escrito con la instrucción
for, y la forma en que se rescribiría empleando
las otras dos instrucciones de iteración.
4Equivalencia Lógica entre Instrucciones de
Iteración
- Empleando for
- for (bloque1 condicion bloque2)
- bloque3
-
- Instrucciones de bloque1 y bloque2 separadas por
coma - Instrucciones de bloque3 separadas por punto y
coma - Empleando while
- bloque1
- while (condicion)
- bloque3
- bloque2
-
- Instrucciones de los bloques separadas por punto
y coma
5Equivalencia Lógica entre Instrucciones de
Iteración
- Empleando for
- for (bloque1 condicion bloque2)
- bloque3
-
- Instrucciones de bloque1 y bloque2 separadas por
coma - Instrucciones de bloque3 separadas por punto y
coma - Empleando do-while
- bloque1
- if (condicion)
- do
- bloque3
- bloque2
- while (condicion)
-
- Instrucciones de los bloques separadas por punto
y coma - Por qué es necesario el if?
6Equivalencia Lógica entre Instrucciones de
Iteración
- A continuación se presenta un ciclo escrito
mediante do-while, y la forma como se rescribiría
empleando while.
7Equivalencia Lógica entre Instrucciones de
Iteración
- Empleando do-while
- do
- bloque
- while (condicion)
- Instrucciones del bloque separadas por punto y
coma - Empleando while
- bloque
- while (condicion)
- bloque
-
- Instrucciones del bloque separadas por punto y
coma - Por qué se debe repetir el bloque (afuera y
adentro)?
8Ciclos anidados
- Hay un ciclo dentro de otro
- Por ejemplo, se requiere para recorrer una matriz
1 1 1 2 1 3 1 4 1 5 2 1 2 2 2 3 2 4 2 5 3 1 3 2 3
3 3 4 3 5
for (i1 ilt3 i) for (j1 jlt5
j) printf("d d\n", i, j)
9Qué son los algoritmos numéricos?
- Permiten resolver problemas matemáticos,
obteniendo aproximaciones para las soluciones
mediante algoritmos iterativos. - Ejemplos
- Evaluación de funciones como log, sqrt, cos,
- Interpolación y extrapolación
- Sistemas de ecuaciones
- Integración numérica
- Generación de números aleatorios
- Minimización y maximización de funciones
- Aplicaciones espectrales
- Análisis estadístico
- Ecuaciones diferenciales
- Permiten resolver problemas cuando no hay buenas
soluciones algebraicas
10Funciones que ya conocemos
- double factorial(int x)
- double potencia(double x, int n)
11Un primer algoritmo numérico
- Componentes del algoritmos
- Cálculo del siguiente término de la serie
- Acumular resultado de la serie
- Condición para detener el algoritmo
12Cálculo de la constante e
- include ltstdio.hgt
- double factorial(int x)
- int i / Factor actual de
multiplicacion 2, 3, ..., x / - double fact 1.0 / Acumulador para el
resultado, inicialmente 1 / - for (i2 iltx i)
- fact fact i
- return(fact)
-
- main()
- int i 1
- double e 1
- double eanterior
- do
- eanterior e