Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso de Programación en La Texas PDF
Curso de Programación en La Texas PDF
PROGRAMACIN EN LA TEXAS VOYAGE 200
CURSO
DE
TERMODINMICA
II
ESCUELA
DE
ING.
QUMICA
AUTOR:
CARLOS
MAURICIO
CELIS
CORNEJO
Marzo
7
de
2009
INTRODUCCIN
Cuando
de
practicidad
se
trata,
se
emplea
una
calculadora
programable
la
cual
trae
un
lenguaje
de
programacin
caracterstico,
la
Texas
Voyage
200
viene
con
un
Editor
de
Programas
el
cual
permite
disear
software
en
un
lenguaje
muy
sencillo
de
usar.
Adems
la
calculadora
tambin
permite
la
aplicacin
del
lenguaje
ensamblador,
el
cual
es
un
lenguaje
de
bajo
nivel
2
(lo
ms
prximo
al
lenguaje
de
mquina)
por
lo
que
permite
la
ejecucin
rpida
de
programas.
No
obstante
esta
gua
se
centra
en
el
uso
del
Editor
de
Programas,
en
donde
se
realizan
diversos
ejemplos,
desde
los
ms
sencillos
hasta
aplicaciones
orientadas
al
curso.
La
calculadora
tiene
un
entorno
bastante
agradable
el
cual
permite
interactuar
con
el
usuario
de
una
manera
sencilla,
de
modo
que
ste
pueda
obtener
la
mayor
cantidad
de
informacin.
Para
nuestros
intereses
se
tienen
tres
entornos,
HOME,
PROGRAM
EDITOR
y
PrgmIO.
El
entorno
HOME
es
el
ms
comn,
all
se
efectan
las
funciones
que
dispone
la
calculadora,
tales
como
Solve(),
1
POO
(Programacin
Orientada
a
Objetos):
A
diferencia
de
la
programacin
estructurada,
sta
consiste
en
crear
Objetos
y
Mtodos
para
disear
programas
de
computadora.
Ver
referencia
[9]
y
[10].
2
Lenguaje
de
bajo
nivel:
La
palabra
bajo
hace
referencia
a
que
hay
poca
abstraccin
entre
el
lenguaje
y
el
hardware,
lo
cual
indica
alta
velocidad
de
procesamiento
con
el
menor
uso
de
memoria.
Recuerde
que
un
lenguaje
de
programacin
no
es
mejor
que
otro.
1
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
rref(),
cos(),
sin(),
(),
d(),
etc.,
ya
debe
serle
familiar
al
usuario
su
utilizacin.
El
segundo
entorno
de
importancia
es
prgmIO
que
es
el
entorno
donde
se
ejecutarn
los
programas
que
se
diseen
en
el
entorno
PROGRAM
EDITOR.
En
primer
lugar
encienda
la
calculadora
y
dirjase
al
men
de
aplicaciones
(Apps),
podr
observar
la
siguiente
captura:
Seleccione
New.
Y
se
abrir
otra
ventana
en
donde
debe
colocar
el
nombre
del
programa
con
el
cual
se
ejecutar
desde
Home,
coloque
prgm1
o
el
nombre
que
desee
y
digite
Enter.
El
programa
principal
se
disear
entre
las
palabras
reservadas
Prgm
y
EndPrgm.
Adems
se
cuenta
con
una
barra
de
men,
F1
para
herramientas
de
manejo
como
guardar,
abrir,
copiar,
pegar,
limpiar
el
editor
(importante
mencionar
que
no
se
cuenta
con
la
opcin
deshacer);
F2
para
desplegar
algunos
bucles
de
uso
comn
como
if,
when,
while,
for;
F3
para
introducir
algunas
palabras
reservadas
para
la
entrada
y
salida
de
flujo
de
informacin;
F4
para
definir
variables
y
funciones;
F5
para
buscar
alguna
palabra
en
el
programa
(cuando
los
programas
son
grandes
y
poseen
ms
de
100
o
300
lneas,
muy
comn
en
el
diseo
de
aplicaciones
complejas);
y
F6
contiene
algunas
otras
aplicaciones
de
visualizacin
y
modo.
2
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
EJEMPLO 1 SUMATORIA
Empezaremos
entonces
con
un
ejemplo
sencillo,
un
programa
que
al
introducrsele
una
funcin
f(x),
ejecute
una
sumatoria
de
trminos
de
la
forma
de
la
funcin
indicada
por
el
usuario,
as:
!
!(!) = ! 1 + ! 2 + ! 3 + + !(!)
!!!
Solucin:
:sumat()
:Prgm
:ClrIO
3
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Hasta
este
punto
el
programa
no
ha
realizado
ningn
clculo,
tan
slo
ha
recogido
la
informacin
suministrada
por
el
usuario
y
la
ha
almacenado
en
las
variables
xn,
n
y
funci.
El
lector
debi
haber
notado
ya
que
a
la
variable
funci
se
le
puede
agregar
cualquier
clase
de
string
(es
una
clase
que
permite
almacenar
cadenas
de
caracteres,
por
ejemplo
Hola
sera
un
tipo
de
dato
de
la
clase
string)
por
ende
se
le
puede
introducir
funciones
cualesquiera
de
x.
4
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Las
frases
escritas
despus
del
smbolo
@
indican
en
el
programa,
que
son
comentarios
del
programador;
agregar
comentarios
en
un
programa
facilita
su
lectura
y
an
ms
despus
de
haber
pasado
un
tiempo
prolongado
de
haberlo
elaborado.
Otro
tip
sobre
el
diseo
de
software
es
colocar
nombres
caractersticos
a
las
variables,
por
ejemplo
a
la
variable
que
almacena
la
funcin
introducida
por
el
usuario,
se
le
asign
el
nombre
funci.
Una
vez
el
usuario
ha
asignado
los
valores
a
las
variables
xn
(valor
inferior
de
la
sumatoria),
n
(valor
superior
de
la
sumatoria)
y
funci
(la
variable
que
almacena
la
funcin
de
x,
f(x)),
se
inicializa
un
acumulador
(Una
variable
real)
suma
en
0
para
ir
guardando
el
valor
de
cada
paso
de
la
sumatoria.
El
bucle
for EndFor
(para)
requiere
cierta
informacin
para
poder
ejecutarse,
necesita
una
variable
que
se
comporte
como
contador,
adems
un
valor
inicial,
un
valor
final
y
un
paso
(step).
La
informacin
del
ciclo
for
debe
suministrarse
de
la
siguiente
manera:
for var, inicial,
final[,paso] EndFor,
as
en
nuestro
algoritmo
la
variable
es
i
el
valor
inicial
es
xn,
el
valor
final
es
n,
y
el
paso
no
se
coloca
pues
por
omisin
el
compilador
asume
1.
Lo
que
va
dentro
del
bucle
for
es
igualar
el
valor
del
contador
ix (dado
que
la
funcin
que
el
usuario
introduce
en
la
variable
funci
es
una
funcin
de
x)
y
automticamente
una
vez
la
variable
x
tenga
un
valor
constante,
se
calcula
el
valor
numrico
de
la
funcin
funci
es
por
eso
que
se
guarda
ese
valor
en
el
acumulador
suma
y
se
repite
el
ciclo
(n xn)
veces.
Por
ltimo,
el
valor
de
la
sumatoria
se
encuentra
contenido
en
la
variable
acumuladora
suma,
por
lo
que
dicha
variable
ser
el
valor
a
imprimir
para
que
el
usuario
la
vea,
para
este
fin
se
tiene
la
palabra
reservada
disp
la
cual
despliega
en
pantalla
el
valor
que
se
asigne
justo
enfrente,
como
en
el
algoritmo,
disp suma
despliega
el
valor
del
acumulador
en
la
pantalla
prgmIO.
Para
ejecutar
el
programa
digite
en
HOME
el
nombre
del
programa,
sumat()
y
luego
d
enter.
Hay
que
mencionar
algo
importante,
el
ejemplo
se
hace
con
la
finalidad
de
explicar
de
la
manera
ms
sencilla
el
uso
de
ciertas
instrucciones,
sin
embargo
no
tiene
ningn
uso
prctico;
la
calculadora
ya
trae
una
funcin
ms
eficiente
para
realizar
sumatorias.
El
lector
debe
tener
claridad
de
que
no
tiene
ningn
sentido
redisear
el
software
que
ya
est
hecho.
ASIGNACIN 1
Debe
ser
de
inters
para
el
lector
conocer
las
distintas
palabras
reservadas
de
flujo
I/O
(Input/Output)
para
manejar
el
flujo
de
informacin
de
entrada
y
salida
del
programa
y
adems
conocer
la
aplicacin
de
otros
bucles
de
importancia
como
los
son
el
ciclo
while
y
el
condicional
if,
por
ende
realice
el
siguiente
programa
y
obtenga
usted
sus
propias
conclusiones.
:prgm1()
:Prgm
:ClrIO
:@ClrIO limpia la pantalla
:@DelVar elimina los datos almacenados en las variables
:DelVar xn,n,funci,i,suma,x
5
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:
:Disp Introduzca la funcion
:input funci
:Disp Valor inicial:input xn
:Disp Valor final:input n
:
:@expr() convierte los valores de string a numericos
:expr(funci)funci
:expr(xn)xn
:expr(n)n
:
:@ciclo for para la sumatoria
:0suma
:xni
:While i n
: ix
: funci+sumasuma
: i+1i
:EndWhile
:
:@imprime el resultado usando disp
:Disp el resultado es
:Disp suma
:
:@la calculadora se pausa, debe digitar enter para continuar
:pause
:
:@imprime el resultado usando Output
:@Output fila, columna, variable
:Output 50,10,la respuesta es
:Output 60,10,suma
:
:pause
:
:@imprime el resultado usando un cuadro de dialogo
:@string() convierte a cadena la expresion suma
:string(suma)suma
:Dialog
: Title RESPUESTA
: Text el resultado es
: Text suma
:EndDlog
:
:EndPrgm
6
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Ahora
se
proceder
a
efectuar
una
aplicacin
ms
sencilla
que
la
mostrada
en
el
ejemplo
1,
para
que
el
lector
visualice
la
importancia
de
un
condicional
(if).
Para
ilustrar
esta
funcin
realizaremos
un
juego
sencillo,
un
juego
de
dados.
JUEGO
DE
DADOS:
El
juego
consistir
en
arrojar
un
solo
dado,
si
sale
6
al
jugador
se
le
triplica
la
apuesta
inicial,
si
cae
impar
el
jugador
pierde
todo,
si
cae
par
(exceptuando
6)
no
pasa
nada.
Solucin:
Para
solucionar
este
problema
primero
se
debe
plantear
un
algoritmo,
pero
el
lector
se
preguntar
no
sera
mejor
desarrollar
de
buenas
a
primeras
el
cdigo
fuente
1?
La
respuesta
es
NO.
Esto
es
una
mala
costumbre,
siempre
es
mejor
elaborar
un
esquema
claro
en
pseudocdigo
2
pero
grficamente
con
diagramas
de
flujo,
esto
facilita
el
diseo
del
software
pues
se
tiene
una
idea
completa
y
no
se
parte
de
la
nada
para
crear
fragmentos
de
ideas.
Sin
embargo
cuando
ya
se
adquiere
suficiente
prctica
sobre
un
lenguaje
de
programacin,
se
torna
fcilmente
asimilable,
de
modo
que
se
adquiere
la
suficiente
fluidez
para
omitir
el
diseo
de
diagramas
de
flujo
(siempre
y
cuando
los
programas
no
sean
enormes).
Si
el
lector
desea
profundizar
en
la
elaboracin
de
algoritmos
y
diagramas
de
flujo
se
recomienda
la
referencia
[8].
Existe
un
programa
de
computadora
muy
til
al
momento
de
desarrollar
cualquier
software
y
verificar
que
un
diagrama
de
flujo
es
correcto
(no
slo
para
elaborarlos
como
en
Microsoft
Visio),
este
programa
es
de
libre
acceso
y
su
nombre
es
DFD
[4]
y
[5].
Fue
desarrollado
por
la
Universadad
del
Magdalena
y
es
un
intrprete
de
algoritmos
con
una
interfaz
visual
muy
sencilla
de
utilizar
la
cual
lo
hace
casi
intuitivo,
adems
cuenta
con
una
ayuda
muy
completa
para
garantizar
la
aprehensin
de
la
mayor
cantidad
de
conceptos
posibles;
en
este
software
se
desarroll
el
diagrama
de
flujo
que
se
muestra
a
continuacin.
Se
plantea
entonces
el
algoritmo:
1. Leer
apuesta
2. Generar
un
nmero
aleatorio
entre
1
y
6
3. Guardar
dicho
nmero
aleatorio
en
una
variable,
x
4. Mostrarle
al
usuario
cunto
fue
su
tiro
5. Preguntar:
x
=
6?
a. Si:
El
jugador
Gana!,
Apuesta
=
3*Apuesta
Fin
del
programa
b. No
(Else):
Preguntar:
2*(parte
entera[x/2])
=
x?
i. Si:
Par!
Vuelva
a
intentarlo!
Fin
del
programa
ii. No
(Else):
Impar!
Pierde
todo!
Fin
del
programa
!
Si,
2 = !
entonces
el
nmero
es
par,
por
ejemplo
observe:
!
X
=
7
(a
priori
se
sabe
que
7
es
impar),
X/2
=
3.5,
la
parte
entera
de
3.5
es
3.
! !
2 =2 = 6 7,
por
ende
x
no
es
un
nmero
par.
! !
1
Cdigo
Fuente:
en
informtica
y
desarrollo
de
software,
este
trmino
hace
referencia
al
conjunto
de
lneas
de
texto
que
son
instrucciones
en
un
determinado
lenguaje
de
programacin.
2
Pseudocdigo:
Es
un
lenguaje
ficticio,
es
el
que
usualmente
se
emplea
para
elaborar
los
algoritmos;
aunque
no
es
la
idea,
suele
emplearse
este
trmino
tambin
para
describir
los
algoritmos
hechos
con
diagramas
de
flujo.
7
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
La
funcin
RANDOM(x)
genera
un
nmero
aleatorio
en
el
intervalo
[0,
x
1].
Debido
a
que
un
dado
no
arroja
0,
debemos
sumar
1
al
resultado,
de
este
modo
el
intervalo
queda
[1,
x].
En
la
8
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
calculadora
la
funcin
es
rand(x)
y
arroja
un
nmero
aleatorio
entre
[1,
n],
es
decir,
se
ahorra
este
breve
anlisis.
La
funcin
TRUNC(x)
saca
la
parte
entera
de
un
nmero,
as,
TRUNC(3.5)=3.
En
la
calculadora
la
funcin
es
iPart(x).
Una
vez
claro
el
algoritmo
se
plantea
el
cdigo
fuente
en
el
lenguaje
del
Editor
de
Programas:
:dice()
:Prgm
:
:ClrIO
:DelVar tiro,apta,k,y
:
:Request Apuesta,apta
:expr(apta)apta
:
:rand(6)tiro
:
:tiroy
:string(y)y
:Dialog
:Title RESULTADO
:Text Su tiro fue
:Text y
:EndDlog
:
:If tiro=6 Then
: Disp ganador, su monto es de
: Disp apta*3
:Else
: tiro/2k
: 2*iPart(k)k
: if tiro=k Then
: Disp vuelva a intentarlo
: Else
: 0apta
: Disp Pierde!
: EndIf
:EndIf
:
:EndPrgm
9
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:startTmr x
:RandSeed x
:rand(6) tiro
Lo
que
se
observa
es
que
primero
se
genera
un
nmero
aleatorio
entre
[1,1000]
y
ste
se
almacena
en
la
variable
x,
la
cual
se
usa
como
semilla
para
crear
el
nmero
aleatorio
de
1
a
6
que
se
usar
para
almacenar
en
la
variable
tiro.
ASIGNACIN 2
Corrija
el
cdigo
fuente
del
ejemplo
2,
agregando
el
cambio
de
seed
propuesto
en
la
seccin
anterior.
Adems,
para
imprimir
el
resultado
cambie
la
palabra
reservada
Disp
y
utilice
en
su
lugar
Output
o
un
cuadro
de
dilogo
Dialog EndDlog.
Solucin:
Se
deja
de
tarea
para
el
lector
elaborar
el
diagrama
de
flujo
que
desarrolle
dicho
problema,
y
se
1
Algoritmo
determinista:
Es
un
algoritmo
que
en
cierto
modo
es
predecible,
ya
que
dada
una
entrada
produce
la
misma
salida.
10
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:dice()
:Prgm
:
:ClrIO
:DelVar funci,n,tabla,dato,x,deriv,matriz
:
:Dialog
: Title VALORES DE ENTRADA
: Request f(x)=,funci
: Request # de evaluaciones,n
:EndDlog
:
:expr(funci)funci
:expr(n)n
:
:@calcula la derivada de la funcion(x) funci
:d(funci,x)deriv
:
:@newMat(fila,column) asigna una matriz() a una variable
:newMat(n+1,3)tabla
:
:@se colocan los titulos de las columnas
:puntostabla[1,1]
:f(x)tabla[1,2]
:f(x)tabla[1,3]
:
:@Ciclo for, es el nucleo del programa
:For i,1,n
: Disp coloque el valor #:
: Disp i
: Input dato
: datotabla[i+1,1]
: datox
: funcitabla[i+1,2]
: derivtabla[i+1,3]
:EndFor
:
:DelVar matriz
:@newData hace que la nueva variable sea la actual de Data/Matrix
Editor
:NewData matriz,tabla
:
:setMode(Split 1 App,Data/Matrix Editor)
:
:DelVar funci,n,table,dato,x,deriv
:
:EndPrgm
11
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
ASIGNACIN 3
Haga
un
programa
que
emplee
una
tabla
que
se
despliegue
en
la
aplicacin
Data/Matrix
Editor,
el
cual
desarrolle
el
mtodo
de
punto
fijo.
Las
columnas
de
la
tabla
deben
ser:
12
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
El
mtodo
de
punto
fijo
es
un
mtodo
numrico
iterativo,
utilizado
para
el
clculo
de
races
reales
de
funciones
con
dominio
real,
cuya
pendiente
no
sea
muy
inclinada.
Se
empieza
definiendo
un
punto
fijo,
pero
qu
es
un
punto
fijo?
Es
un
punto
cualquiera
p,
en
donde
una
funcin
g(x)
evaluada
en
dicho
punto
es
idntica
al
punto,
es
decir
p = g(p).
Una
raz
de
una
funcin
es
un
punto
en
el
que
para
un
valor
dado
de
una
abscisa
x,
la
funcin
genera
una
ordenada
igual
a
0,
es
decir
f(x) = 0.
Bajo
este
supuesto
se
plantea
una
funcin
f(x),
dado
que
el
inters
es
calcular
una
raz
de
dicha
funcin,
se
iguala
la
funcin
a
0,
f(x)
=
0,
pero
debe
expresarse
la
funcin
como
un
punto
fijo,
en
donde
f(x)
=
p
g(x)
=
0.
El
mtodo
converge
siempre
y
cuando
!(!) < 1.
(! !!)
Dada
la
funcin
f(x)
=
ln|x|
,
calcule
por
el
mtodo
de
punto
fijo
el
valor
de
alguna
raz,
(!!)(!!!)
tomando
como
valor
inicial
x0
=0.6
,
con
una
tolerancia
()
de
10-4.
- Desarrollo:
En primer lugar, debemos obtener el punto fijo, una funcin g(x) = x, con f(x) = 0:
(1 2!)
! ! = !! ! = 0
(2!)(1 + !)
(1 2!)
! ! = ! = exp
(2!)(1 + !)
Para
este
problema,
es
de
inters
calcular
la
derivada
de
la
funcin,
para
ello
se
emplea
la
instruccin
de
la
calculadora,
! (! 1 2! /( 2! 1 + ! ) , !)
y
se
obtiene
la
siguiente
funcin:
! !
!! 3! !! ! !!
!! ! = ! !(!!!)
2(! + 1)! 2! !
- #
de
iteracin
=
0
(i
=
0)
x0
=
0.6
13
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
- #
de
iteracin
=
1
(i
=
1)
x1
=
0.90107511
1 2 0.90107511
!! = exp = 0.79125537
2 0.90107511 1 + 0.90107511
- #
de
iteracin
=
2
(i
=
2)
x2
=
0.79125537
1 2 0.79125537
!! = exp = 0.81424474
2 0.79125537 1 + 0.79125537
- #
de
iteracin
=
3
(i
=
3)
x3
=
0.81424474
1 2 0.81424474
!! = exp = 0.80837895
2 0.81424474 1 + 0.81424474
Para
calcular
el
error,
debera
conocerse
el
valor
real,
que
en
teora
se
determina
analticamente,
sin
embargo
analizar
dicha
funcin
es
un
trabajo
tedioso
y
poco
prctico.
En
la
calculadora
se
puede
aplicar
la
instruccin
Solve(f(x)=0,x)
para
encontrar
la
raz
mediante
un
mtodo
numrico
muy
preciso
que
arroja
un
valor
muy
cercano
al
analtico
con
errores
infinitesimales.
Es
por
eso
que
no
tiene
sentido
alguno
programar
este
mtodo
si
ya
hay
funciones
de
la
calculadora
que
desarrollan
estas
tareas,
no
obstante
es
una
buena
labor
disear
estos
programas
ya
que
se
obtiene
toda
la
informacin
que
la
calculadora
no
despliega,
y
adems
con
la
ventaja
de
que
se
conoce
con
certeza
cul
es
el
mtodo
empleado.
En
este
caso
particular
en
donde
no
se
conoce
el
14
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
valor
real,
se
dispone
del
ltimo
valor
calculado
y
aceptado
para
la
tolerancia
establecida
y
se
utiliza
este
valor
para
determinar
que
tan
alejada
est
cada
iteracin
del
mtodo;
el
error
se
determina
utilizando
la
siguiente
expresin:
! !! ! !!
% !""#" = 100%
! !!
Donde
n
es
el
valor
encontrado
con
una
tolerancia
preestablecida,
e
i
es
el
valor
de
cada
iteracin.
De
este
modo
se
calcula
la
siguiente
tabla:
#
iteracin
1
2
3
4
5
6
%
error
11.30611
%
2.25947
%
0.58031
%
0.14427
%
0.03303
%
0.01082
%
Mtodo de Newton-Raphson
El
mtodo
de
Newton-Raphson
al
igual
que
el
mtodo
de
punto
fijo,
es
un
mtodo
iterativo
que
determina
la
raz
de
una
funcin
dada
desarrollando
un
modelo
general.
A
diferencia
de
punto
fijo,
el
mtodo
de
Newton-Raphson
converge
en
la
mayora
de
los
casos.
El
mtodo
se
deduce
por
una
interpretacin
geomtrica;
supngase
una
funcin
f(x),
y
su
derivada
en
el
punto
x
f(x)
(interpretndola
como
la
tangente
en
el
punto
x):
El
punto
a,
es
un
punto
inicial
cercano
a
la
raz
r
de
la
funcin
f(r)
=
0.
Como
puede
observarse
la
derivada
en
el
punto
f(a)
0
,
y
emplendola
puede
determinarse
un
punto
b
(b
es
el
intercepto
de
la
tangente
con
el
eje
x)
ms
cercano
a
la
raz
r.
Por
tanto
la
lnea
tangente
a
y
=
f(x)
en
el
punto
(a
,
f(a)
)
es:
! ! ! !
= ! ! (!)
!!
15
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Reordenando:
! ! = ! ! + ! ! ! ! (!)
! !
!=!
! ! (!)
De
modo
que
b
es
el
punto
de
inters;
se
repite
este
proceso
hasta
que
se
llegue
a
un
punto
muy
cercano
al
valor
de
la
raz,
tambin
se
puede
expresar
as:
! !!
!!!! = !!
! ! (!! )
:newtrap()
:Prgm
:
:ClrIO
:
:DelVar i,n,x0,funci,deriv,data,matriz,tol,x
:
:Dialog
: Request f(x)=,funci
: Request Valor Inicial,x0
: Request Tolerancia,tol
:EndDlog
:
:expr(funci)funci
:expr(x0)x0
:expr(tol)tol
:
:d(funci,x)deriv
:newMat(100,5)data
:
:@ la matriz data almacenar la informacin temporalmente
:
:# Iter.data[1-1]
:x data[1,2]
:f(x) data[1,3]
:f(x) data[1,4]
:f/f data[1,5]
:
:0i
:idata[2,1]
:x0x
:x0data[2,2]
16
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:funcidata[2,3]
:derivdata[2,4]
:funci/derivdata[2,5]
:x funci/derivx0
:
:i+1i
:idata[3,1]
:x0x
:x0data[3,2]
:funcidata[3,3]
:derivdata[3,4]
:funci/derivdata[3,5]
:x funci/derivx0
:
:While abs(data[i,3] data[i+1,3]) tol
: idata[i+2,1]
: x0x
: x0data[i+2,2]
: funcidata[i+2,3]
: derivdata[i+2,4]
: funci/derivdata[i+2,5]
: x funci/derivx0
: i+1i
:EndWhile
:
:string(data[i+1,i])salida
:Dialog
: Title RESPUESTA
: Text El valor estimado es:
: Text salida
:EndDlog
:
:newData matriz,data
:setMode(Split 1 App,data/matrix editor)
:
:@no elimine la variable matriz
:DelVar i,n,x0,funci,deriv,data,tol,x
:
:EndPrgm
Suponga
un
proceso
donde
se
conocen
las
composiciones
de
alimento
a
la
entrada
(zi)
y
son
conocidas
las
condiciones
finales
de
presin
y
temperatura.
Tomando
1
Kmol
de
alimento
se
plantea
el
siguiente
balance:
! + ! = 1 !! ! + !! ! = !!
17
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Solucin:
18
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
!!!"# 195.75
!! = !! = = 1.7795 !! = 0.8895 !! = 0.4575
! 110
Tomando
la
siguiente
ecuacin
y
sustituyendo
la
informacin
que
ya
se
posee,
se
obtiene:
!
!! (!! 1)
= 0
1 + !(!! 1)
!!!
Resolver
analticamente
esta
ecuacin
resulta
poco
prctico
y
bastante
tedioso,
por
ende
se
recurre
a
herramientas
computacionales
que
faciliten
la
ejecucin
de
los
mtodos
numricos
para
resolverla.
En
este
caso
se
aplicar
Newton-Raphson
para
estimar
el
valor
de
V
(la
fraccin
de
vapor),
para
ello
se
utiliza
el
programa
mostrado
en
la
seccin
anterior,
y
se
obtiene
el
siguiente
resultado
para
un
x0
=
0,
con
una
tolerancia
de
10-6:
V
=
0.736650151701
(Con
5
iteraciones).
!! !!
!! = ! = 0.5088 !! = 0.3389 !! = 0.1524
1 + !(!! 1) !
Como
se
cumple
que
!!!! !! = 1
y
!!!! !! = 1,
se
demuestra
que
este
mtodo
funciona,
independientemente
de
la
cantidad
de
componentes.
ASIGNACIN 4
El
proceso
que
se
desarrolla
en
el
ejemplo
4
se
conoce
como
vaporizacin
instantnea
ideal.
Con
base
en
el
ejemplo
anterior
elabore
un
programa
que
tenga
como
valores
de
entrada,
las
presiones
de
saturacin
de
cada
componente
de
la
mezcla,
la
presin
del
sistema,
y
las
composiciones
globales
(zi)
para
n
componentes;
que
determine
la
fraccin
de
vapor,
de
lquido,
y
las
composiciones
de
cada
componente
en
fase
lquida
(xi)
y
vapor
(yi).
Utilice
el
ejemplo
anterior
para
comprobar
el
programa
(bajo
la
suposicin
de
que
la
presin
del
sistema
se
encuentra
entre
la
presin
de
burbuja
y
la
presin
de
roco).
19
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
FUNCIONES
Las
funciones
y
subprogramas,
son
de
gran
utilidad
durante
la
programacin
y
podra
decirse
que
su
uso
es
indispensable,
ya
que
disminuyen
la
cantidad
de
cdigo,
y
el
tiempo
de
clculo,
adems
permiten
reutilizar
programas
y
subrutinas
que
fueron
creadas
antes
para
una
determinada
aplicacin.
Como
se
dijo
en
el
ejemplo
anterior,
se
trabaj
bajo
el
supuesto
de
que
el
sistema
se
encontraba
en
equilibrio
lquido
vapor;
a
continuacin
se
efectan
los
clculos
de
la
presin
de
burbuja
(bubble
pressure)
y
de
presin
de
roco
(dew
pressure),
para
determinar
el
estado
del
sistema
y
demostrar
este
supuesto.
ID_BUBL_P(X,T,n,A,B,C) ID_DEW_P(Y,T,n,A,B,C)
For i, 1, n For i, 1, n
CERRAR
CERRAR
P = 0 SUMP = 0
For i, 1, n For i, 1, n
CERRAR CERRAR
P
=
1/SUMP
SUMY
=
0
For i, 1, n SUMX = 0
For
i,
1,
n
Y(i)
=
X(i)*Psat(i)/P
CERRAR
SI NO
SUMY
=
1
SI NO
For
i,
1,
n SUMX
=
1
For
i,
1,
n
Y(i)
=
Y(i)
/
SUMY
- Referencia
6:
Captulo
3
- Referencia
7:
Captulo
10
Los
diagramas
de
flujo
muestran
el
algoritmo
que
se
sigue
para
encontrar
la
presin
de
burbuja
y
la
presin
de
roco
de
un
sistema,
dada
su
temperatura
(T),
la
cantidad
de
sustancias
presentes
(n),
las
fracciones
presentes
de
cada
sustancia
en
fase
vapor
o
lquido
(Yi
o
Xi)
y
los
parmetros
de
Antoine
para
cada
sustancia
(A,
B
y
C).
Como
se
observa,
los
diagramas
fueron
escritos
como
subprogramas,
de
modo
que
la
funcin
ID_BUBL_P()
(ideal
bubble
pressure)
tiene
como
argumento
los
datos
de
entrada:
T,
n,
A,
B,
C,
X.
Anlogo
a
ste
se
tiene
el
subprograma
ID_DEW_P()
(ideal
dew
pressure).
Programando
en
la
Voyage
200
existen
muchas
maneras
de
hacer
esto,
la
idea
es
hacerlo
de
la
manera
ms
sencilla.
Para
ello,
dirjase
al
editor
de
programas
y
cree
un
programa
nuevo
con
el
nombre
id_bub_p.
Copie
el
siguiente
cdigo:
:id_bub_p()
:Prgm
:
:newMat(1,n)psat
:For i,1,n
:e^(a(1,i)+b(1,i)/(temp+c(1,i))psat(1,i)
:EndFor
:
:0p
:For i,1,n
:p+psat(1,i)*x(1,i)p
:EndFor
:
:0sumy
:newMat(1,n)y
:For i,1,n
:x(1,i)*psat(1,i)/Py(1,i)
:sumy+y(1,i)sumy
:EndFor
:
:Lbl atras
:If sumy=1 Then
:Else
:For i,1,n
:y(1,i)/sumyy(1,i)
:Goto atras
:EndFor
:EndIf
:
:EndPrgm
21
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:id_dew_p()
:Prgm
:
:newMat(1,n)psat
:For i,1,n
:e^(a(1,i)+b(1,i)/(temp+c(1,i))psat(1,i)
:EndFor
:
:0p
:For i,1,n
:p+y(1,i)/psat(1,i)p
:EndFor
:1/pp
:
:0sumy
:newMat(1,n)x
:For i,1,n
:y(1,i)*p/psat(1,i)x(1,i)
:sumx+x(1,i)sumx
:EndFor
:
:Lbl atras
:If sumx=1 Then
:Else
:For i,1,n
:x(1,i)/sumxx(1,i)
:Goto atras
:EndFor
:EndIf
:
:EndPrgm
Como
quiz
haya
podido
notar,
los
cdigos
no
leen,
ni
devuelven
ningn
tipo
de
dato;
esto
se
debe
a
que
la
calculadora
almacena
en
las
variables
todos
los
clculos
que
se
designaron
con
la
flecha
(STO,
store)
en
las
variables.
De
este
modo,
si
en
HOME
digita
la
letra
p
aparecer
de
inmediato
el
valor
de
dicha
variable.
Realice
la
siguiente
actividad:
22
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Enseguida
observar
en
la
pantalla
la
palabra
Done
lo
cual
indica
que
el
programa
ha
terminado
satisfactoriamente.
Digite
en
HOME
la
letra
p
y
presione
Enter,
el
valor
que
debe
ver
en
pantalla
ser
140.269,
este
valor
corresponde
a
la
presin
de
burbuja
(en
KPa)
del
sistema
Acetona(1)/Acetonitrilo(2)/Nitrometano(3)
del
ejemplo
4
con
la
siguiente
informacin:
A
B
C
RANGO
DE
T
/C
ACETONA
14.3145
2756.22
228.060
-26
a
77
ACETONITRILO
14.8950
3413.10
250.523
-27
a
81
NITROMETANO
14.7513
3331.70
227.600
56
a
146
Tabla
B.2.
Datos
extrados
de
la
referencia
7,
apndice
B.
Como
la
temperatura
del
sistema
es
T
=
80C
no
se
espera
una
muy
buena
aproximacin
con
estos
parmetros
ajustados
para
la
ecuacin
de
Antoine,
para
la
acetona,
ya
que
el
valor
de
temperatura
cae
por
fuera
del
intervalo
de
tolerancia
del
sistema,
sin
embargo
la
aproximacin
es
aceptable,
y
es
buena
para
los
otros
dos
compuestos.
Para
realizar
el
cdigo
de
Vaporizacin
Instantnea
Ideal,
se
tiene
que
hacer
un
ligero
cambio
en
el
cdigo
fuente
del
programa
del
mtodo
Newton-
Raphson:
:new_rap(funci,x0,tol)
:Prgm
:
:d(funci,x)deriv
:newMat(100,5)data
:
:# Iter.data[1,1]
:x data[1,2]
:f(x) data[1,3]
:f(x) data[1,4]
:f/f data[1,5]
:
:0i
:idata[2,1]
:x0x
:x0data[2,2]
:funcidata[2,3]
:derivdata[2,4]
:funci/derivdata[2,5]
:x funci/derivx0
:
:i+1i
:idata[3,1]
:x0x
:x0data[3,2]
:funcidata[3,3]
23
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:derivdata[3,4]
:funci/derivdata[3,5]
:x funci/derivx0
:
:While abs(data[i,3] data[i+1,3]) tol
: idata[i+2,1]
: x0x
: x0data[i+2,2]
: funcidata[i+2,3]
: derivdata[i+2,4]
: funci/derivdata[i+2,5]
: x funci/derivx0
: i+1i
:EndWhile
:
:@La respuesta est en la posicin [i+1,2] de la matriz data
:@ya que i se actualiza al final
:data[i+1,2]rta
:
:EndPrgm
Los
cambios
que
se
efectuaron
sobre
el
programa
se
observan
al
comienzo
y
al
final
del
programa.
El
programa
new_rap()
se
aplicar
como
una
funcin,
por
eso
tiene
como
argumento
funci,
x0, tol.
La
palabra funci es
la
variable
que
almacena
la
ecuacin
que
resuelve
el
mtodo
de
Newton-Raphson,
x0 es
el
valor
inicial
del
mtodo,
y tol
la
tolerancia
(la
precisin
del
resultado).
Al
final
no
es
necesario
que
el
programa
despliegue
toda
la
tabla
de
iteraciones
(aunque
puede
visualizarse
en
DATA/MATRIX
la
matriz
data
que
tiene
almacenados
todos
los
datos
de
las
iteraciones),
por
ende
slo
se
toma
el
valor
de
la
respuesta
que
queda
almacenada
en
la
posicin
[i+1,2]
de
la
matriz
data.
Retomando
la
idea,
lo
que
se
desea
es
escribir
el
cdigo
fuente
del
programa
de
Vaporizacin
Instantnea
Ideal,
considerando
que
el
sistema
debe
estar
en
equilibrio
lquido
vapor,
por
ello,
es
necesario
incluir
los
algoritmos
de
ID_BUBL_P
y
de
ID_DEW_P
en
el
diagrama
general,
y
comprobar
que
la
presin
del
sistema
se
encuentre
en
el
intervalo:
Presin
de
Roco
<
Presin
del
Sistema
<
Presin
de
Burbuja
Una
vez
se
demuestre
que
el
sistema
se
encuentra
en
equilibrio
lquido
vapor,
se
procede
a
calcular
la
fraccin
de
vapor
(V),
para
lo
cual
se
plantea
la
ecuacin
a
resolver
mediante
el
mtodo
de
Newton-Raphson,
obtenindose
as
V,
enseguida
se
procede
a
calcular
las
composiciones
de
lquido
y
vapor
(X,
Y).
El
diagrama
se
muestra
a
continuacin:
24
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
VAP_INST()
For
i,
1,
n
T, Ps, n
K(i)
=
Psat(i)
/
Ps
For
i,
1,
n
EQ_1
=
0
CERRAR
For
i,
1,
n
X
=
Z
Z (i ) * (k (i ) 1)
EQ_1
=
EQ_1
+
ID_BUBL_P() 1 + V (k (i ) 1)
Pb = P CERRAR
Y = Z NEW_RAP(EQ_1,0,10^-5)
ID_DEW_P()
For
i,
1,
n
Pd
=
P
Z (i ) * k (i )
Y(i)=
1 + V * (k (i ) 1)
NO SI
Pd
<
Ps
<
Pb
CERRAR For
i,
1,
n
No
hay
separacin X(i)
=
Y(i)
/
K(i)
CERRAR
X, Y
FIN
Con el Diagrama de flujo del programa ahora se procede a desarrollar el cdigo fuente:
25
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
:vap_inst()
:Prgm
:
:ClrIO
:Dialog
: Title VAPORIZACION INSTANTANEA
: Request Temperatura\C,temp
: Request Presion\KPa,ps
: Text Copie: dato1,dato2,
: Request Z,z
: Text Ln(Ps) = A B/(T[C] + C)
: Request A,a
: Request B,b
: Request C,c
:EndDlog
:
:[&z&]z
:[&a&]a
:[&b&]b
:[&c&]c
:expr(temp)temp
:expr(ps)ps
:expr(z)z
:expr(a)a
:expr(b)b
:expr(c)c
:dim(z)n
:n[2]n
:zx
:
:id_bub_p()
:ppb
:DelVar y
:zy
:id_dew_p()
:ppd
:
:Disp Presion de rocio:
:Disp pd
:Disp Presion de burbuja:
:Disp pb
:
:DelVar x,y
:If pd<ps<pb Then
: newMat(1,n)k
: For i,1,n
: psat[1,i]/psk[1,i]
: EndFor
:
: 0eq_1
26
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
: For i,1,n
: eq_1+z[1,i]*(k[1,i]-1)/(1+x*(k[1,i]-1)eq_1
: EndFor
: new_rap(eq_1,0,1.E-5)
: rtavapfr
: DelVar rta
:
: Disp Fraccion de vapor:
: Disp vapfr
:
: newMat(n+1,5)
salida
: Compuesto
salida[1,1]
: X
salida[1,2]
: Y
salida[1,3]
: K
salida[1,4]
:
P sat
salida[1,5]
:
: For i,1,n
: z[1,i]*k[1,i]/(1+vapfr*(k[1,i]-1))
salida[i+1,3]
: salida[i+1,3]/k[1,i]
salida[i+1,2]
: k[1,i]
salida[i+1,4]
: isalida[i+1,1]
: psat[1,i]
salida[i+1,5]
: EndFor
:Else
: Text No hay separacion
:EndIf
:
:NewData matriz,salida
:setMode(Split 1 App,Data/Matrix Editor)
:DelVar salida
:
:EndPrgm
El
programa
se
va
a
probar
con
los
datos
del
ejemplo
4,
omitiendo
que
se
conocen
las
presiones
de
saturacin
de
los
compuestos,
y
en
vez
de
conocer
dicha
informacin,
se
conocen
los
parmetros
de
la
ecuacin
de
Antoine
(Tabla
B.2),
para
calcular
dichas
presiones
de
saturacin.
INFORMACIN:
27
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Una
vez
se
digite
la
tecla
Enter,
se
ejecuta
la
ventana
de
dilogo
en
donde
se
debe
llenar
la
informacin
as:
28
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
Los
resultados
son
levemente
distintos
a
los
arrojados
en
el
ejemplo
4
donde
se
supona
conocidas
las
presiones
de
saturacin
de
los
compuestos:
Compuesto
Xi
Yi
Ki
PiSAT
\KPa
1
0.2859
0.5088
1.7795
195.75
2
0.3810
0.3389
0.8895
97.84
3
0.3331
0.1524
0.4575
50.32
Tabla
de
resultados
del
ejemplo
4,
conocidas
las
presiones
de
saturacin
de
los
componentes
de
la
mezcla.
En
los
datos
donde
se
observa
una
mayor
varianza
es
en
los
del
compuesto
1,
esto
debido
a
lo
que
se
coment
anteriormente;
los
parmetros
de
Antoine
para
la
Acetona
estn
calculados
en
un
intervalo
entre
-26C
y
77C
y
la
temperatura
del
sistema
es
de
80C
por
lo
cual
se
genera
un
error
considerable,
pero
para
efectos
prcticos
omisible.
ASIGNACIN
5
Realice
los
programas
del
clculo
de
la
presin
y
temperatura
de
burbuja
para
sistema
real,
y
temperatura
de
roco
para
sistema
real,
adems
del
clculo
de
vaporizacin
instantnea
para
sistema
real.
Para
guiarse
se
recomienda
utilizar
las
referencias
[6
y
7]
(si
desea,
para
simplificar
el
problema
asuma
coeficiente
de
fugacidad
igual
a
la
unidad
[=1]).
29
|
P g i n a
PROGRAMACIN
EN
LA
TEXAS
VOYAGE
200
CARLOS
M.
CELIS
CORNEJO
REFERENCIAS
[9].
Harvey
M.
Deitel,
Paul
J.
Deitel.
CMO
PROGRAMAR
EN
C++.
4
ED,
Editorial
PEARSON,
Prentice
Hall.
(2003)
[10].
Francisco
Javier
Ceballos.
PROGRAMACIN
ORIENTADA
A
OBJETOS
CON
C++.
3
ED.
Editorial
RAMA.
(2003)
[11].
Luis
Francisco
Garca
Russi.
MTODO
DE
MONTE
CARLO;
PROCESOS
ESTOCSTICOS;
PROBABILIDADES.
UIS.
(1999)
30 | P g i n a