Você está na página 1de 19

Informtica para Economistas Clase 14

Programacin estructurada en EViews. Variables de programacin Bucles cerrados: numricos y textuales Bucles abiertos Estructuras condicionales

Introduccin
Los mtodos de programacin en EViews permiten ejecutar acciones de manera repetitiva y estructurada a travs de la utilizacin de funciones, comandos y algoritmos. El lenguaje de programacin orientado a objetos es muy parecido al lenguaje de otros software que contienen un sistema de programacin (como VBA). La forma de crear un nuevo programa se puede ejecutar a travs de un comando o por la barra de herramientas:

El entorno de programacin
Ejecutar programa Ventana de ejecucin Nombre del programa Argumentos del programa (%0, %1, %2, , %n) Opciones de ejecucin
3

Variables de programacin
Variables
Posicin de memoria donde el computador registra un valor de forma provisional. El valor de estas variables solo permanece en memoria mientras el programa se ejecuta. Recurdese, estas variables no son objetos. Existen dos tipos: Numricas: Se denotan mediante un signo de exclamacin de cierre. Ej. !numero = 2 Texto: Se denotan mediante un signo de porcentaje. Ej. %nombre = Tipo de cambio Ambas pueden combinarse usando el concatenador + y las funciones @str (convertir a string) o @val (convertir a valor). Ej. %texto = El + %nombre + es + @str(!numero)
4

Variables de programacin
Variables de reemplazo textual
Las variables pueden usarse para realizar un reemplazo textual al momento de formar o referirse a objetos. Este proceso, tambin conocido como metareemplazo, se realiza al utilizar a la variable en vez de la definicin del nombre del objeto. Ej. !glibertad = 10 %tipo = chicuadrado series {%tipo}{!glibertad} = @rchisq(!glibertad)

Variables de programacin
Variables de reemplazo textual
Las llaves {} son opcionales hasta EViews 4.1. En EViews 5, las llaves {} son obligatorias para las variables de texto.

Ej. series {%tipo}!glibertad = @rchisq(!glibertad) (funciona) series %tipo!glibertad = @rchisq(!glibertad) (no funciona)

Bucles Cerrados
Recibe este nombre porque los lmites de repeticin se conocen con certeza al iniciar la primera repeticin.
Sintaxis [] indica opcional:

FOR !Indice = ValorInicial TO ValorFinal [STEP Incremento ] (Aqu van los comandos) NEXT
7

Bucles Cerrados
Ejemplo 1: !inicio=1 !fin=10 FOR !i = !inicio to !fin series X!i = @nrnd*!i NEXT Ejemplo 2: vector(10) vect !contador=1 FOR !i = 0 to 4 step 0.5 vect(!contador)=!i !contador=!contador + 1 NEXT

Bucle Cerrado Anidado

Bucles Cerrados de Texto


Es posible repetir una serie de comandos sobre diferentes valores de una cadena de caracteres. Para ello, se tiene que especificar la variable de cadena, seguida de la lista de variables. Esta estructura se conoce tambin como for textual.
Sintaxis: FOR %texto [lista de variables] (Aqu van los comandos) NEXT
10

Funciona como una lista de variables a las que %y representara

Ejm 4:
FOR %y PBI Consumo Inversion Gasto Exportaciones Importaciones

series {%y}_mm=@movav({%y},4) scalar mean{%y}=@mean({%y})


NEXT

Ejm 5:
FOR %y PBI Consumo Inversion Gasto Exportaciones Importaciones

!anio=2004 FOR %inicio %fin 2004Q1 2004Q4 2005Q1 2005Q4 smpl {%inicio} {%fin} series {%y}_{!anio}={%y} !anio=!anio+1 En el caso de las variables NEXT NEXT

temporales numricas, cuando se aaden a un texto es posible omitir las llaves


11

Bucles Cerrados de Texto


Para el Ejm5, hay que tener en cuenta que los valores asociados a %inicio son las cadenas de caracteres de posicin impar (primero y tercer, en este caso), mientras que para %fin seran los pares (segundo y cuarto).
Contadores 1ra vuelta 2da vuelta

FOR %inicio %fin 2004Q1 2004Q4 2005Q1 2005Q4

12

Estructuras Condicionales
Existen muchas situaciones en donde uno desea ejecutar un (o varios) comando(s) solo si es que algunas condiciones son satisfechas. Para dicho fin se hace uso del comando IF.
Sintaxis Versin Corta:

IF [Condicin] THEN [Comandos a ejecutarse si la condicin se cumple] ENDIF


13

Estructuras Condicionales
Sintaxis Versin Larga:

IF [Condicin] THEN [Comandos a ejecutarse si la condicin SI se cumple] ELSE [Comandos a ejecutarse si la condicin NO se cumple] ENDIF
14

Estructuras Condicionales
Ejm 3:
!media=@mean(pbi) IF !media<30000 THEN series PBIx=PBI+3000 ELSE series PBIy=PBI-3000 ENDIF

15

Bucles Abiertos
Recibe este nombre porque los lmites de repeticin NO se conocen con certeza al iniciar la primera repeticin.
Sintaxis: WHILE [Condicin lgica] (Aqu van los comandos que se repetirn) WEND
16

Ejm 6: !anio=1994 !k = 3 while !anio<2005 smpl {!anio}q1 {!anio}q1+!k series PBI{!anio} = PBI !anio=!anio+1 En este caso, las llaves wend son opcionales tambin smpl @all Ejm 7: !media=0 !NroPrueba=0 WHILE (!media<0.3) AND (!NroPrueba<10000) series _X=nrnd !media=@sum(_X)/@obs(_X) !NroPrueba=!NroPrueba+1 WEND Scalar Repeticiones=!NroPrueba D _*

El programa permite generar series normalmente distribuidas con media cero y conocer luego de qu realizacin se obtiene una media mayor a 0.3
17

Otros Comandos: Exitloop


En ocasiones, se puede requerir que el EViews termine un bucle antes de cumplirse las condiciones normales de finalizacin. Para estos casos es que se hace uso del comando EXITLOOP.

18

Otros Comandos: Exitloop


Ejm 8:
smpl @all series dPBI=(Log(PBI)-Log(PBI(-4)))*100 !obs=@obs(PBI) Alpha crecimiento="" FOR !k=5 to !obs crecimiento(!k)="positivo" !crec=dpbi(!k) IF !crec<0 THEN ExitLoop ENDIF NEXT
19