You are on page 1of 90

Captulo 3 - Desarrollo de

Programas Estructurados
Lenguaje de Programacin
EE.GG.CC.

Introduccin (1)

Programa: Conjunto de instrucciones escritas en


algn lenguaje de programacin, que permite al
computador ejecutar una lista de acciones finita,
predeterminada y no ambigua.
Anlisis del problema: qu nos piden resolver?
Diseo del algoritmo: pseudo cdigo o diagrama
de flujo.
Elaboracin del programa en un lenguaje de
programacin.

Introduccin (2)

En cursos
anteriores se
aprendi:

Tcnica del diseo


descendente: topdown
Dividir un programa
en partes ms
pequeas: sub
programas o
mdulos
Forma de trabajo
comn de Pascal y
C/C++

Funcin
Principal

Funcin
Intermedia1

Funcin
Intermedia2

Funcin
Intermedia2.1

Funcin
Intermedia3

Funcin
Intermedia2.2

3.1 Qu es un programa?

Un programa es un conjunto de lneas de cdigo


escritas en un lenguaje de programacin
determinado.

Estructura general de un programa

Entradas

Procedimiento

Salidas

Cmo se resuelve un problema ?

Tener una completa comprensin del problema

Nos debemos hacer tres preguntas:

Qu salidas debemos generar?


Qu entradas debemos ingresar para obtener las salidas
solicitadas?
Cul es el procedimiento que debemos usar para transformar
las entradas en las salidas?

Un planteamiento correcto nos evitar perder tiempo en


la implementacin de algoritmos que posteriormente nos
demos cuenta que son incorrectos.

3.2 Qu es un Algoritmo?

Algoritmo: procedimiento dado en trminos de

Acciones que deben realizarse


Secuencia de estas acciones

Primero se determina qu hace el programa.


Luego se determina cmo lo hace.

3.2 Qu es un Algoritmo? (2)

Se divide el problema en varios subproblemas que se


solucionan de forma independiente (divide y vencers).
Esto se denomina diseo modular.
En este paso es conveniente la utilizacin de diagramas
de flujo o pseudocdigo.
Control del programa:

Especificar secuencia en la que los enunciados sern ejecutados

3.3 Qu es un Pseudocdigo?
Lenguaje artificial y formal que nos ayuda a
desarrollar algoritmos.
Similar al lenguaje cotidiano.
No se ejecuta en la computadora.
Nos ayuda a pensar en un programa antes de
escribirlo.

Fcil de convertir en un programa C


Consiste tan solo de enunciados

3.4 Qu son los Diagramas de Flujo?


Representacin Grfica de un algoritmo
Smbolo de rectngulo :

Indica una accin

valo :

Indica comienzo o fin de un programa


INICIO

Estructuras Lgicas

Todo algoritmo puede expresarse


mediante 3 estructuras lgicas:

La secuencia.
La condicin.
La repeticin.

Notacin grfica
Condicin

Secuencia

Notacin grfica (2)

Repeticin

Estructura de seleccin por


condicin

Estructura de Seleccin if

La estructura de seleccin if es utilizada para


realizar una de dos acciones distintas en base a
una condicin.

Estructuras selectivas en C: if (1)

Estructura selectiva if else


Funcionamiento similar
que en Pascal
Sintaxis: versin simple
if (expresin)
sentencia 1;
else
sentencia 2;

Diferencia con Pascal:


NO SE USA LA PALABRA
THEN

Diferencia con Pascal:


SE ESCRIBE ; ANTES DE ELSE

Estructuras selectivas en C: if (2)

Sintaxis: versin bloques


if (expresin)
{
..
}
else
{
..
}

Bloque de instrucciones del if

Bloque de instrucciones del else

Estructura de Seleccin if

Por ejemplo, el siguiente pseudocdigo:


Si la nota del alumno es mayor o igual a 11
Imprimir Aprobado

La condicin la nota del alumno es mayor o igual a 11


tiene dos posibilidades: es verdadera o es falsa.
Si la condicin es verdadera

Se ejecuta la accin de imprimir y el programa contina al


siguiente enunciado

Si la condicin es falsa:

El enunciado de impresin es ignorado y el programa contina al


siguiente enunciado

Estructura de Seleccin if

Veamos otra vez el ejemplo:


Si la nota del alumno es mayor o igual a 11
Imprimir Aprobado

Si lo traducimos al lenguaje C:

if ( nota_alumno >= 11 )
printf( Aprobado\n" );
Observar que el cdigo en C se parece al pseudocdigo
La sangra permite que los programas sean ms fciles de leer,
pues C ignora los espacio en blanco

Estructura if:
representacin en diagrama de flujo

Estructura if es del tipo una-entrada/una-salida

nota >= 11

verd

En lenguaje C:
print Aprobado

Es cero falso
No es cero verdadero

falso

Estructura de Seleccin if/else

if

Slo realiza una accin si la condicin es verdadera

if/else

Especifica una accin a realizarse si la condicin es


verdadera y otra accin si la condicin es falsa

Estructura de Seleccin if/else

Otro ejemplo en pseudocdigo:


Si la nota del alumno es mayor o igual a 11
Imprime Aprobado
de lo contrario
Imprime Jalado

Notar las convenciones de espaciado y tabulado

Traducido a C :
if ( nota >= 11 )
printf( Aprobado\n");
else
printf( Jalado\n");

Estructura de Seleccin if/else

Diagrama de flujo de la estructura if/else

falso

print
Jalado

nota >= 11

verd

print
Aprobado

Estructura de Seleccin if/else

Enunciados compuestos:

Uso de llaves
Ejemplo:
if ( nota >= 11 )
printf( Aprobado.\n );
else {
printf( jalado.\n);
printf( Debe repetir el curso.\n );
}
Sin las llaves, el enunciado
printf( Debe repetir el curso.\n );

se ejecutaria siempre

Notacin abreviada del if/else

Operador condicional ternario (cond ? X :Y)

Usa tres argumentos (condicin, valor para condicin


verdadera, valor para condicin falsa)
Por ejemplo:
if(nota>=11)
aprobados = 1;
else
aprobados = 0;

Lo anterior se puede escribir de la siguiente manera:


aprobados = (nota>=11)? 1:0;

Notacin abreviada del if/else


Tambin se puede combinar con otras funciones
como por ejemplo printf().
Por ejemplo:

printf("%s\n", (nota>=11)? Aprobado":Jalado");

Tambin se puede escribir de la siguiente


manera:
(nota>=11)? printf( Aprobado\n ):printf( Jalado\n );

Anidacin de estructuras if/else


Se pone a prueba casos mltiples colocando
estructuras if/else dentro de estructuras
if/else.
Se cumple con una condicin, el resto de los
enunciados se evitan.

Anidacin de estructuras if/else

ejemplo

Si la nota del alumno es mayor o igual a 16


Imprimir A
de lo contrario
Si la nota del alumnos es mayor o igual a 12
Imprimir B
de lo contrario
Si la nota del alumno es mayor o igual a 8
Imprimir C
de lo contrario
Si la nota del alumno es mayor o igual a 4
imprimir D
de lo contrario
imprimir E
Enunciado en C ifthenelse1.c

Estructuras de seleccin
mltiple

La estructura de Seleccin Mltiple


switch

switch

Permite realizar una ramificacin mltiple,


ejecutando slo una de varias posibilidades,
dependiendo de los diferentes valores que
puede tomar una variable.

switch: Diagrama de Flujo


Verdadero

caso a

Acciones del caso a

Falso

Verdadero

caso b

Acciones del caso b

Falso

Verdadero

caso z
Falso

Acciones por defecto

Acciones del caso z

La estructura de Seleccin Mltiple


switch

Formato

Series de etiquetas case y el caso opcional default


switch ( variable ){
case '1':
acciones
case '2':
acciones
default:
acciones
}

break; permite salir de la estructura

switch1.c
switch2.c

Estructuras de repeticin
controlada

Estructuras de repeticin controlada

Con control al inicio del bloque:

while()

Con control al final del bloque:

do-while()

Con control al inicio y con contadores:

for()

Instrucciones de control:

break
continue

La estructura while()
while = mientras
Estructura

El programador especifica que una accin se repite


mientras cierta condicin se mantenga como
verdadera
Pseudocdigo:
Mientras haya ms cosas en mi lista de compras
Comprar el siguiente item y sacarlo de mi lista

El bucle while se repite hasta que la condicin sea


falsa

La estructura de repeticin while

Ejemplo:
int producto = 2;
while ( producto <= 1000 )
producto = 2 * producto;

producto <= 1000

falso

verd

producto = 2 * producto

Algoritmos tpicos de repeticin


Validacin de ingreso de datos.
Repeticin controlada por contador.
Repeticin controlada por centinela.

Ingreso de dato con validacin

Se pide leer del teclado una variable


entera mayor que cero:
int dato=0;
while(1){
printf(Ingrese dato mayor que cero:):
scanf(%d, &dato);
if(dato > 0) break;
}

Ingreso de dato con validacin (2)

Se pide leer del teclado una variable


entera mayor que cero y menor que 20:
int dato=0;
while(1){
printf(Ingrese dato entre 0 y 20:):
scanf(%d, &dato);
if(dato > 0 && dato < 20) break;
}

Algoritmo de
Repeticin Controlada por Contador
El bucle se repite hasta que el contador alcanza
cierto valor.
Se usa cuando el nmero de repeticiones es
conocido con anticipacin.

Ejemplo de algoritmo de
Repeticin Controlada por Contador

Ejemplo: Una clase de diez estudiantes toma un test.


Las notas (enteros del 0 al 20) estn disponibles.
Determinar el promedio de las notas de la clase
Pseudocdigo:
Poner total en cero
Poner contador de notas en uno
Mientras el contador de notas es menor o igual a 10
ingrese la sgte nota
Sumar la nota al total
Sumar uno al contador
Calcular el promedio de la clase como el total dividido entre
diez
Imprimir el promedio de la clase

/* Fig. 3.6: fig03_06.c

Programa de promesio de la clase con

repeticin controlada por contador*/

#include <stdio.h>

5
6

int main()

int contador, nota, total, promedio;

9
10

/* inicializacin */

11

total = 0;

12

contador = 1;

13
14

/* proceso */

15

while ( contador <= 10 ) {

16

printf( Ingrese nota: " );

17

scanf( "%d", &nota );

18

total = total + nota;

19

contador = contador + 1;

20

21
22

/* fin */

23

promedio = total / 10;

24

printf( El promedio de la clase es %d\n", promedio );

27 }

return 0;

2. Se ejecuta
un Lazo o
bucle
3. Mostrar
resultados
Programa en C promedio1.c

25
26

1. Se
inicializan las
variables

/* fin de programa */

Ejecucin del Programa

Ingrese nota: 98
Ingrese nota : 76
Ingrese nota : 71
Ingrese nota : 87
Ingrese nota : 83
Ingrese nota : 90
Ingrese nota : 57
Ingrese nota : 79
Ingrese nota : 82
Ingrese nota : 94
El promedio de la clase es: 81

Formulando Algoritmos con refinamiento


descendente paso a paso

El problema se convierte en :
Desarrolle un programa de promedios de la clase que
pueda procesar un nmero arbitrario de notas, cada
vez que se ejecute el programa.

Nmero de alumnos desconocido


Como se culmina el programa?

Formulando Algoritmos con refinamiento


descendente paso a paso

Debe usarse un valor centinela

Tambin conocido como valor seal, un valor substituto o valor


bandera
Nos ayuda a indicar el fin del ingreso de datos.
El bucle termina cuando el usuario ingresa el valor escogido
como centinela
El valor centinela se escoge de tal forma que no se confunda
con un valor posible (en nuestro ejemplo conviene el valor -1 )

Formulando Algoritmos con refinamiento


descendente paso a paso

Refinamiento descendente paso a paso

Empezamos con una representacin general de seudocdigo:

Determinar el promedio de la clase correspondiente al


examen

Dividimos la rep. general en tareas pequeas y las enlistamos en


orden:

Inicializar variables
Ingreso, suma y cuenta de las notas del examen
Calcular e imprimir el promedio

Formulando Algoritmos con refinamiento


descendente paso a paso

La mayora de los programas se dividen en tres


fases:

Inicializacin: se inicializan las variables


Proceso: Se ingresan los valores de datos y se
ajustan las variables de programa correspondientes
Terminacin: calculo e impresin de los resultados
finales

Formulando Algoritmos con refinamiento


descendente paso a paso

Se refina la fase de inicializacin


Inicializar variables en:
Inicializa total a cero
Inicializa contador a cero

Refinar

Ingreso,suma y cuenta de las notas en


Ingrese la primera nota
(While) mientras el usuario no haya ingresado el centinela
Sumar la nota a total
Sumar uno al contador de notas
Ingrese la siguiente nota (puede ser el sentinela)

Formulando Algoritmos con refinamiento


descendente paso a paso

Refinar Calcular e imprimir el promedio en


(If ) si el contador no es igual a cero
Poner el promedio como el total dividido entre el
contador
Imprimir el promedio
(else) de lo contrario
Imprimir No se ingresaron notas

/* Fig. 3.8: fig03_08.c

programa de promedio de la clse con

repeticin controlado por centinela */

4 #include <stdio.h>
5
6

int main()

float promedio;

/* new data type */

int contador, nota, total;

1. Se
inicializan las
variables

10
11

/* initializacion

12

total = 0;

13

contador = 0;

*/

2. Ingreso
de usuario

14
15

/* proceso */

16

printf( Ingrese nota, -1 para finalizar: " );

17

scanf( "%d", &nota );

18
19

while ( nota != -1 ) {

20

total = total + nota;

21

contador = contador + 1;

22

printf( " Ingrese nota, -1 para finalizar: " );

23

scanf( "%d", &nota );

24

2.1 Realizar
bucle
Promedio2.c

25
26

/* terminacion

*/

27

if ( contador != 0 ) {

28

promedio = ( float ) total / contador;

29

printf( Promedio de la clase es %.2f", promedio );

30

31

else

32

printf( No se ingresaron notas\n" );

3. Clculo
de Promedio

33
34

return 0;

/* Fin del programa */

35 }

Ingrese nota, -1 para finalizar:


Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Ingrese nota, -1 para finalizar:
Promedio de la clase es 82.50

75
94
97
88
70
64
83
89
-1

3.1 Imprime
resultados
Salida del
programa

Estructuras de control anidadas

Problema

El colegio tiene una lista de notas para 10 alumnos.


Escribir un programa que analice los resultados.
Si ms de 8 alumnos aprobaron, imprimir el mensaje
Aumentar el nivel"

Estructuras de control anidadas


Tener

en cuenta:

El programa debe procesar 10 resultados de


prueba
Debe

usarse un lazo controlado por contador.

Deben usarse dos contadores


Uno

para el nmero de aprobados, otro para los


jalados.

Estructuras de control anidadas

Representacin general
Analice los resultados del examen y decida si debe aumentarse
el nivel

Primer Refinamiento
Inicializar variables
Ingrese las diez notas y cuente los aprobados y jalados
Imprimir un resumen de los resultados del exmenes y decidir
si se debe aumentar el nivel

Refine Inicializar variables


Inicializar aprobados con cero
Inicializar jalados con cero
Inicializar contador de notas con uno

Estructuras de control anidadas

Refinar Ingrese las diez notas y cuente los

aprobados y jalados

(While) mientras el contador de alumnos es menor o igual a 10


Ingrese el siguiente resultado de examen
(If ) si el alumno aprob
Incremente en uno aprobados
(else) de lo contario
Incremente en uno jalados
Incremente en uno el contador de alumnos

Estructuras de control anidadas

Refinar Imprimir un resumen de los resultados

del exames y decidir si se debe aumentar el


nivel
Imprimir el nmero de aprobados
Imprimir el nmero de jalados
(If) Si mas de 8 alumnos aprueban
Imprimir Levantar el nivel

/*
Analisis de resultados de un examen */
#include <stdio.h>
int main()
{
/* inicializacion de variables */
int pasaron = 0, jalaron = 0, estudiantes = 1, nota;
/* proceso de 10 notas; bucle controlado por contador */
while ( estudiantes <= 10 ) {
printf( "Ingrese nota ( 0 - 20 ): " );
scanf( "%d" , &nota );
if ( nota >= 11 )
pasaron++;
else
jalaron++;

/* if/else anidado en un while */

estudiantes++;
}
printf( "Pasaron %d\n", pasaron );
printf( "Jalaron %d\n", jalaron );
if ( jalaron > 8 )
printf( "Aumentar el nivel de enseanza\n" );
getch();
return 0;
}

Analisis1.c

Ms estructuras de control

Estructura de repeticin do-while()


Repeticin controlada por contador
Estructura de repeticin for()
Estructura de repeticin for(): Notas y
Observaciones
Ejemplos usando la estructura for()
Enunciados break y continue
Resumen de programacin estructurada

La estructura de repeticin
do/while

Estructura de repeticin do/while

Similar a while
La condicin para la repeticin se evala
despus que el lazo es ejecutado

Todas las acciones se ejecutan al menos una vez

Formato:
do {
enunciado;
} while ( condicion );

La estructura de repeticin
do/while

Ejemplo
do {
printf( "%d ", contador );
} while (++contador <= 10);

Imprime los enteros del 1 al 10

do/while: Diagrama de Flujo

acciones

Verdadero

condicin
Falso

/* Estructura do while */

2
3

#include <stdio.h>

4
5

int main()

1. Inicializacin

int contador = 1;

2. Bucle

8
9

do {

10

printf( "%d

11

", contador );

3. Impresin

} while ( ++contador <= 10 );

12
13

return 0;

14 }

Salida
3

10

Estructuras de repeticin

Otras estructuras de control de repeticin

break

for
do/while
Usado para salir en forma inmediata y rpida de ciertas
estructuras de control

continue

Usado para saltarse el resto de una estructura de


repeticin, continuando con la siguiente iteracin del
ciclo

Lo esencial de la repeticin

Bucle o Lazo

Grupo de instrucciones que la computadora ejecuta en


forma repetida mientras cierta condicin se mantiene
como verdadera

Repeticin controlada por contador

Repeticin Definida: se conoce cuntas veces se ejecuta


el lazo
Se usa una variable de control para contar repeticiones

Lo esencial de la repeticin (2)

Repeticin controlada por centinela

Repeticin indefinida
Se usa cuando la cantidad de repeticioness es
desconocida
El valor de centinela indica fin de los datos"

Repeticin Controlada por contador

La repeticin controlada por contador requiere:

El nombre de una variable de control (contador de bucle)


El valor inicial de la variable de control
Una condicin que compruebe el valor final de la variable
de control (si se debe seguir con el ciclo)
El incremento (o decremento) con el cual, cada vez que se
termine un ciclo, la variable control ser modificada.

Estructura de repeticin for

Formato a usarse con bucles for


for ( inicializacin; CondiciondeContinuaciondeCiclo;
incremento )
enunciado

Ejemplo:
for( int contador = 1; contador<=10; contador++)
printf( "%d\n", contador );

Imprime los enteros del uno al diez

Sin punto y
coma (;) al
final

Estructura de repeticin for

La sentencia for reemplaza a bucles del tipo


while del siguiente tipo:
inicializacin;
while (CondiciondeContinuaciondeCiclo)
{
enunciado o accin;
incremento;
}

Inicializacin e incremento

Se separan por comas


Ejemplo:
for (i = 0, j = 0; j + i <= 10; j++, i++)
printf( "%d\n", j + i );

Estructura de repeticin for


Observaciones

Expresiones Aritmticas

Las partes de Inicializacin, Condicicin de


continuacin de bucle e Incremento pueden
contener expresiones aritmticas.
Si x es igual a 2 e y es igual a 10
for ( j = x; j <= 4 * x * y; j += y / x )

es equivalente a
for ( j = 2; j <= 80; j += 5 )

Estructura de repeticin for


Notas

"Incremento" puede ser negativo


(decremento): x--.

Si la Condicin de continuacin de bucle


es inicialmente falsa, el enunciado no se
ejecuta y el Control procede con el
siguiente enunciado despus de la
estrucutura for.

/* Suma con for */

2
3

#include <stdio.h>

4
5

int main()

int suma = 0, numero;

8
9
10

for ( numero = 2; numero <= 100; numero += 2 )


suma += numero;

11
12

1. Inicializacin
2. Estructura
de repeticin
for

printf( La suma es %d\n", suma );

13
14

return 0;

15 }

Suma es 2550

Salida

Los enunciados break y


continue

break

Causa una salida inmediata de una estructura tipo


while, for, do/while o switch

La ejecucin del programa contina con la primera


sentencia despus de la estructura.
Usos comunes de break

Salida temprana de un lazo


Saltar el resto de una estructura switch

Los enunciados break y


continue

continue

Salta los enunciados restantes del cuerpo de una


estructura while, for o do/while

while y do/while

Contina con la siguiente iteracin del lazo


Se realiza la evaluacin de la continuacin del lazo
inmediatamente despus que continue es ejecutada

for

La expresin de incremento es ejecutada, y luego es


evaluada la condicin de continuacin del lazo

/* Fig. 4.12: fig04_12.c

2
3

Using the continue statement in a for structure */


#include <stdio.h>

4
5

int main()

int x;

8
9

for ( x = 1; x <= 10; x++ ) {

1. Inicializa
variable

10
11

if ( x == 5 )

12

continue;

/* skip remaining code in loop only

13

2. Lazo

if x == 5 */

14
15

printf( "%d ", x );

16

3. Imprime

17
18

printf( "\nUsed continue to skip printing the value 5\n" );

19

return 0;

20 }

Salida
3

10

Used continue to skip printing the value 5

Programacin Estructurada

Ventaja:

Ms fcil de entender, probar, depurar y


modificar programas.

Reglas para una Programacin


Estructurada

Se utilizan estructuras de una solaentrada / una sola-salida.


Reglas:
1.

2.
3.

Empezar con el diagrama ms simple posible.


Verificar qu acciones pueden ser reemplazadas por
2 acciones en secuencia.
Verificar qu acciones pueden ser reemplazadas por
una estructura de control (if, if/else, switch,
while, do/while o for).

Reglas de programacin estructurada


Regla 2 Cualquier rectngulo puede
ser reemplazado por dos rectngulos
en secuencia.

Regla 1 Inicie con el


diagrama ms simple posible

Regla 2

Regla 2

Regla 2

.
.
.

Programacin Estructurada
Regla 3 Reemplazar algunos rectngulos con
estructuras de control
Regla 3

Regla 3

Regla 3

Programacin Estructurada

Todos los programas pueden estar compuestos


de 3 controles bsicos:

Secuencia manejada por el compilador.


Seleccin if, if/else o switch.
Repeticin while, do/while o for.

Slo pueden ser combinadas de 2 maneras:


Anidando (Nesting)
Apilando (Stacking)

Cualquier seleccin puede ser reescrita como un if()


Cualquier repeticin puede ser reescrita como un
while()

Estructuras de Control
Ejemplos Resueltos

Problema 1

Elaborar un programa que calcule y


muestre el factorial de un nmero
ingresado. Considerar que el programa
debe validar que el nmero ingresado sea
natural.

Problema 2

Elaborar un programa en C que calcule y muestre


el nmero de neper elevado al nmero ingresado
x, usando aproximaciones por series.
Adicionalmente, deber ingresarse el nivel de
aproximacin n.
Considerar que la sumatoria de la serie
correspondiente es:

x
e
n 0 n!
x

Problema 3: El mtodo de Newton

Escribir un programa que resuelva la ecuacin


f(x)=0 utilizando el mtodo de Newton. Para
esto deber tener en cuenta que debe ingresar
un valor inicial X0 y considere el intervalo de
derivacin diferencial como h=0.00001 y el
intervalo de convergencia e=0.0001.
Adicionalmente, debe considerar un mximo
nmero de repeticiones N=30, en el caso la
solucin no se pueda hallar y evitar que el
programa entre en un lazo infinito. Pruebe el
programa con diferentes valores de h, e y N.

Problema 3: El mtodo de Newton


f(x)
tangente de f(x) = f(x1)

tangente de f(x) = f(x2)


x2 x1
Raz: f(x) = 0

Problema 4: El mtodo Runge-Kutta


Las leyes que gobiernan los fenmenos de
la naturaleza se expresan habitualmente
en forma de ecuaciones diferenciales.
El movimiento de los cuerpos se expresa
con una ecuacin diferencial de segundo
orden, por ejemplo: la ecuacin que
describe los sistemas oscilantes, la
propagacin de las ondas, la transmisin
del calor, la difusin, el movimiento de
partculas subatmicas, etc.

Problema 4: El mtodo Runge-Kutta

Sea una ecuacin diferencial de primer orden,


con una condicin inicial.

Se elige un intervalo de paso h, y se calculan


cuatro constantes k1, k2, k3, k4 de acuerdo con
el procedimiento esquematizado en la siguiente
tabla.
Segn el procedimiento ordinario de RungeKutta, a partir del valor de x en el instante t se
determina el valor de x en el instante t+h
mediante la frmula que figura en la ltima fila
de dicha tabla.

Problema 4: El mtodo Runge-Kutta

Problema 4: El mtodo Runge-Kutta

Elaborar un programa en C para resolver


un ecuacin diferencial mediante el
procedimiento de Runge-Kutta que se
aplica de forma directa a una ecuacin
diferencial de primer orden:
dx/dt = 1.0 - t + 4.0*x y x(0.0)=1

Atencin de Preguntas
Fin del Captulo 3

You might also like