Anda di halaman 1dari 20

(POO) En Foxpro!!

| Quiero aprobar Programacion

1 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

(POO) En Foxpro!!

5th May 2012

Programacin en Visual FoxPro

[http://3.bp.blogspot.com/-O9h66CeTuaY
/T6XR4H1m3zI/AAAAAAAAAAs/wgAB9Nrsag8/s1600/descarga.jpg]

Visual FoxPro es una eficaz herramienta de administracin de datos, pero adems podr beneficiarse de
toda su eficacia para crear aplicaciones. Comprender las tcnicas de programacin orientada a objetos y
el modelo controlado por eventos puede aumentar su productividad como programador.

Conceptos iniciales.
Variable: Espacio de memoria que permite almacenar informacin que puede cambiar o variar durante la
ejecucin de un programa. Las variables pueden ser dos tipos: numricas y alfanumricas. El nombre de
una variable puede contener hasta 8 caracteres: letras y nmeros. Debe comenzar con una letra.
Constante: Valor que no cambia o varia durante la ejecucin de un programa. Ejemplo de una constante
es el nmero Pi que siempre vale 3,1416

Comandos de Edicin y Ejecucin


Modify Command: Permite entrar al editor de programas del foxpro. Puede escribirse como Modi
Comm. Losprogramas en foxpro se reconocen o identifican porque poseen la extensin .Prg. Para
almacenar un programa se utiliza la combinacin Ctrol + W
Formato: Modi Comm [unidad: ] [Nombre del programa]
Ejemplos: Modi comm A:Programa Almacena el programa en la unidad de
Modi comm Sueldos disco por defecto
Do: El comando Do ejecuta un programa en foxpro.
Formato: Do [unidad: ] [Nombre del programa]

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Ejemplos: Do A:Programa
Do Sueldos

Comandos de Programacin
Clear: Borra / Limpia pantalla
* Note: El asterisco o Note permite al usuario hacer un comentario o breve descripcin del programa.
Set Talk Off / On: Desactiva/activa la visualizacin de mensajes e inicializaciones propios del foxpro.
Set Bell Off / On: Activa/ desactiva la emisin de sonidos (pitido) al momento de rellenar campos o
variables.
Set Stat On/Off: Activa / desactiva la visualizacin de la lnea de status en el foxpro.
@ Fila, Col to Fil,Col: Permite generar o imprimir un cuadro en pantalla, donde el usuario indica las
coordenadas del extremo superior izquierdo y el extremo inferior derecho.

Programacin orientada a objetos


Aunque Visual FoxPro admite la programacin estndar por procedimientos, se ha ampliado la capacidad
del lenguaje para proporcionar la potencia y la flexibilidad propias de la programacin orientada a objetos.
El diseo orientado a objetos y la programacin orientada a objetos representan un cambio de perspectiva
con respecto a la programacin estndar por procedimientos. En lugar de pensar en el flujo del programa
desde la primera hasta la ltima lnea de cdigo, se debe pensar en la creacin de objetos: componentes
auto contenidos de una aplicacin que tienen funcionalidad privada adems de la funcionalidad que se
puede exponer al usuario.

En este blog se tratan los temas siguientes:


Descripcin de los objetos de Visual FoxPro
Descripcin de las clases de Visual FoxPro
Adaptar la clase a la tarea
Crear clases
Agregar clases a formularios
Definir clases mediante programacin

2 de 20

Descripcin de los objetos de Visual FoxPro


En Visual FoxPro, los formularios y los controles son objetos que puede incluir en sus aplicaciones.
Puede manipular estos objetos a travs de sus propiedades, eventos y mtodos. Las mejoras en el
lenguaje orientado a objetos de Visual FoxPro proporcionan un mayor control sobre los objetos de las
aplicaciones. Asimismo, facilitan la creacin y el mantenimiento de bibliotecas de cdigo reutilizable,
proporcionando:

Cdigo ms compacto.

Incorporacin ms sencilla del cdigo a las aplicaciones sin necesidad de elaborar esquemas
de asignacin de nombres.

Menos complejidad al integrar cdigo de distintos archivos en una aplicacin.


La programacin orientada a objetos es en gran medida un modo de empaquetar cdigo de
manera que se pueda volver a utilizar y mantener ms fcilmente. Los paquetes principales se
llaman clases.

Clases y objetos: los bloques funcionales de las


02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

3 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

aplicaciones
Las clases y los objetos estn estrechamente relacionados, pero no son lo mismo. Una clase
contiene informacin sobre cul debe ser la apariencia y el comportamiento de un objeto. Una
clase es el plano
o esquema de un objeto. Por ejemplo, el esquema elctrico y de diseo de un telfono sera
algo similar a una clase. El objeto o una instancia de la clase sera el telfono.

Los objetos tienen propiedades


Un objeto tiene ciertas propiedades o atributos. Por ejemplo, un telfono tiene un color y un
tamao determinados. Cuando se instala un telfono en la oficina, tiene una determinada
posicin sobre la mesa. El receptor puede estar colgado o descolgado. Los objetos que se
crean en Visual FoxPro tambin tienen propiedades que estn determinadas por la clase en la
que se basa el objeto. Estas propiedades pueden establecerse en tiempo de diseo o en
tiempo de ejecucin. Por ejemplo, en la tabla siguiente se indican algunas propiedades que
puede tener una casilla de verificacin.
Propiedad
Descripcin
Caption
Texto descriptivo que aparece junto a la casilla de verificacin.
Enabled
Especifica si un usuario puede elegir o no la casilla de verificacin.
ForeColor
Color del texto del ttulo.
Left
Posicin del extremo izquierdo de la casilla de verificacin.
MousePointer
Apariencia del puntero del mouse (ratn) cuando est
s
situado sobre la casilla de verificacin.
Top
Posicin de la parte superior de la casilla de verificacin
Visible
Especifica si la casilla de verificacin es visible o no.

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Los objetos tienen eventos y mtodos asociados


Cada objeto reconoce y puede responder a determinadas acciones denominadas eventos. Un
evento es una actividad especfica y predeterminada, iniciada por el usuario o por el sistema.
Los eventos, en la mayor parte de los casos, se generan por interaccin del usuario. Por
ejemplo, con un telfono, se desencadena un evento cuando un usuario descuelga el receptor.
Los eventos tambin se desencadenan cuando el usuario presiona los botones para efectuar
una llamada.
En Visual FoxPro, las acciones del usuario que desencadenan eventos incluyen clics,
movimientos del mouse y pulsaciones de teclas. Inicializar un objeto y encontrar una lnea de
cdigo que produce un error son eventos iniciados por el sistema. Los mtodos son
procedimientos asociados a un objeto. Los mtodos se diferencian de los procedimientos
normales de Visual FoxPro en que estn vinculados inseparablemente a un objeto y tienen
nombres distintos que los procedimientos normales de Visual FoxPro. Los eventos pueden
tener mtodos asociados. Por ejemplo, si escribe cdigo de mtodo para el evento Clic, ese
cdigo se ejecutar cuando se produzca el evento Clic. Los mtodos tambin pueden existir
independientemente de los eventos. Se debe llamar a estos mtodos de forma explcita en el
cdigo. El conjunto de eventos es limitado, aunque amplio. No es posible crear nuevos eventos.
Sin embargo, el conjunto de mtodos puede ampliarse indefinidamente. La tabla siguiente
muestra algunos de los eventos asociados a una casilla de verificacin:
Evento
Descripcin
Click
El usuario hace clic en la casilla de verificacin.
GotFocus El usuario activa la casilla de verificacin al hacer clic en ella o al llegar a
ella a travs de la tecla TAB.
LostFocus
El usuario selecciona otro control.
La tabla siguiente muestra algunos mtodos asociados a una casilla de verificacin:
Mtodo
Refresh

Descripcin
El valor de la casilla de verificacin se actualiza para reflejar los cambios
que se puedan haber producido en el origen de datos subyacente.
SetFocus El enfoque se establece en la casilla de verificacin como si el usuario
hubiera presionado la tecla TAB hasta activar la casilla de verificacin.

4 de 20

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

5 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Descripcin de las clases de Visual FoxPro Todas las propiedades, eventos y mtodos de un
objeto se especifican en la definicin de clase. Adems, las clases tienen las siguientes
caractersticas que las hacen especialmente tiles para crear cdigo reutilizable y fcil de
mantener:
v Encapsulamiento
v Subclases
v Herencia
Ocultar la complejidad innecesaria Cuando instale un telfono en la oficina, lo ms probable es
que no le interese el funcionamiento interno del aparato para la recepcin de llamadas, la
realizacin o la finalizacin de conexiones con centralitas electrnicas o la conversin de las
pulsaciones de tecla en seales electrnicas. Lo nico que necesitar saber es que puede
levantar el auricular, marcar los nmeros apropiados y hablar con la persona con la que desea
hablar. La complejidad de realizar esa conexin queda oculta. La ventaja de ignorar los detalles
internos de un objeto para poder centrarse en los aspectos del objeto que necesita utilizar se
denomina abstraccin.

La complejidad interna puede estar oculta


El encapsulamiento, que empaqueta el cdigo de mtodos y propiedades en un mismo objeto,
contribuye a la abstraccin. Por ejemplo, las propiedades que determinan los elementos de un
cuadro de lista y el cdigo que se ejecuta al elegir un elemento de la lista pueden encapsularse
en un nico control que se agrega a un formulario. Aprovechar la potencia de las clases
existentes Una subclase puede tener toda la funcionalidad de una clase existente, adems de
la funcionalidad y
los controles adicionales que quiera darle. Si la clase es un telfono bsico, podr tener
subclases que tengan toda la funcionalidad del telfono original y todas las caractersticas
especializadas que desee darles.
Las subclases le permiten reutilizar cdigo
Simplificar el mantenimiento de cdigo
Con la herencia, si realiza un cambio en una clase, ese cambio se reflejar en todas las
subclases que se basen en ella. Esta actualizacin automtica ahorra tiempo y trabajo. Por
ejemplo, si un fabricante de telfonos quisiera cambiar los telfonos de tipo marcacin por
aparatos de pulsacin, se ahorrara mucho trabajo si pudiera hacer el cambio en el diagrama
original y hacer que todos los telfonos
fabricados anteriormente con ese diagrama heredaran automticamente la nueva caracterstica,
en lugar de tener que agregarla a todos los telfonos existentes individualmente.

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

6 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Contenedores y no contenedores
Los dos tipos principales de clases de Visual FoxPro y por extensin, de objetos de Visual
FoxPro, son las clases de contenedor y las clases de control.

Clases de contenedor
Los contenedores pueden incluir otros objetos y permiten el acceso a los objetos que contienen.
Por ejemplo, si crea una clase de contenedor que consta de dos cuadros de lista y dos botones
de comando, a continuacin, agrega a un formulario un objeto basado en esta clase, cada
objeto individual podr manipularse en tiempo de ejecucin y en tiempo de diseo. Puede
cambiar fcilmente las posiciones de los cuadros de lista o los ttulos de los botones de
comando. Tambin puede agregar objetos al control en tiempo de diseo; por ejemplo, puede
agregar etiquetas para identificar los cuadros de lista.
La tabla siguiente muestra los posibles componentes de cada clase de contenedor:

Contenedor

Puede contener

Grupos de botones de comando

Botones de comando

Contenedor

Cualquier control

Control

Cualquier control

Personalizado
Personalizado

Cualquier control, marcos de pgina,


Conjuntos de formularios Formularios, barras de herramientas

Formularios

Marcos de pgina, cualquier control, contenedores,

Columnas de cuadrcula

Encabezados de columnas, cualquier objeto excepto


conjuntos de formularios, formularios, barras de
herramientas, cronmetros y otras columnas.

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Adaptar la clase a la tarea


Es conveniente poder usar clases en muchos contextos distintos. Un diseo inteligente le
permitir decidir con mayor efectividad qu clases desea disear y qu funcionalidad va a
incluir en la clase. Decidir cundo crear clases
Puede crear una clase para cada control y cada formulario que utilice, aunque ste no es el
modo ms efectivo de disear aplicaciones. Es muy probable que acabe con mltiples clases
que tengan prcticamente la misma funcin y que deban mantenerse por separado. Encapsular
funcionalidad genrica
Cree una clase de control para funcionalidad genrica. Por ejemplo, los botones de comando
que permiten al usuario mover el puntero de registro en una tabla, un botn para cerrar un
formulario y un botn de ayuda pueden guardarse como clases y agregarse a formularios en
cualquier momento que desee que los formularios tengan esta funcionalidad. Puede exponer
las propiedades y los mtodos en una clase de modo que el usuario pueda integrarlos en el
entorno de datos concreto de un formulario o un conjunto de formularios. Proporcionar una
apariencia y un uso coherentes Puede crear clases de conjunto de formularios, de formulario y
de control con una apariencia caracterstica, de modo que todos los componentes de la
aplicacin tengan la misma apariencia. Por ejemplo, podra agregar grficos y patrones de color
especficos a una clase de formulario y utilizarla como plantilla para todos los formularios que
cree. Podra crear una clase de cuadro de texto con una apariencia caracterstica, como un
efecto de sombreado, y usar esta clase en la aplicacin en cualquier momento que desee
agregar un cuadro de texto.

Decidir qu tipo de clase va a crear


Visual FoxPro permite crear distintos tipos de clases, cada uno con sus propias caractersticas.
Especifique el tipo de clase que desea crear en el cuadro de dilogo Nueva clase o en la
clusula AS del comando CREATE CLASS.

Clases de base de Visual FoxPro


En el Diseador de clases puede crear subclases para la mayora de las clases de base de
Visual.
Cdigo
Comentarios
CSecDisplay = ALLTRIM(STR(THIS.nSec))
Las convierte al tipo Character
cMinDisplay = ALLTRIM(STR(THIS.nMin))
para mostrarlos de tipo
cHourDisplay = ALLTRIM(STR(THIS.nHour))
etiqueta.
THIS.lblSeconds.Caption = ;
IIF(THIS.nSec < 10, ;

7 de 20

Establece los ttulos de etiqueta,

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

IIF(THIS.nSec < 10, ;


"0" ,"") + cSecDisplay
THIS.lblMinutes.Caption = ;
IIF(THIS.nMin < 10, ;
"0", "") + cMinDisplay
THIS.lblHours.Caption = ;
IIF(THIS.nHour < 10, ;
"0", "") + cHourDisplay
conservando los 0 iniciales si el valor de
la propiedad numrica es menor que 10.

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

conservando los 0 iniciales si el valor de


la propiedad numrica es menor que 10.

Establecer propiedades.
Las propiedades de un objeto pueden establecerse en tiempo de ejecucin o en tiempo de diseo.
Para establecer una propiedad
Utilice esta sintaxis:
Contenedor.Objeto.Propiedad = ValorManual del programador, Parte 1: Programacin en Visual FoxPro
Pgina 55 de 83
Por ejemplo, las instrucciones siguientes establecen varias propiedades de un a cuadro de textollamado
txtDate en un formulario llamado frmPhoneLog:
frmPhoneLog.txtDate.Value = DATE( ) && Muestra la fecha actual
frmPhoneLog.txtDate.Enabled = .T. && El control est activado
frmPhoneLog.txtDate.ForeColor = RGB(0,0,0)
&& texto en negro
frmPhoneLog.txtDate.BackColor = RGB(192,192,192) && fondo en gris
Para la configuracin de propiedades de los ejemplos anteriores, frmPhoneLog es el objeto
contenedor de mayor nivel. Si frmPhoneLog estuviera incluido en un conjunto de formularios,
tambin debera incluir el conjunto de formularios en la ruta de acceso primaria:
frsContacts.frmPhoneLog.txtDate.Value = DATE( )

8 de 20

Establecer mltiples propiedades


La estructura WITH ... ENDWITH simplifica el establecimiento de mltiples propiedades. Por ejemplo, para
establecer mltiples propiedades de una columna en una cuadrcula de un formulario perteneciente a un
conjunto de formularios, podra utilizar la sintaxis siguiente:
WITH THISFORMSET.frmForm1.grdGrid1.grcColumn1
.Width = 5
.Resizable = .F.
.ForeColor = RGB(0,0,0)
.BackColor = RGB(255,255,255)
.SelectOnEntry = .T.
ENDWITH

Proteger y ocultar miembros de clase


Puede proteger u ocultar propiedades y mtodos de una definicin de clase con las palabras clave
PROTECTED y HIDDEN del comando DEFINE CLASS. Por ejemplo, si crea una clase para almacenar
informacin sobre empleados y no desea que los usuarios puedan modificar la fecha de contratacin,
puede proteger la propiedad FechaContr. Si los usuarios necesitan averiguar cundo se contrat a un
empleado determinado, podr incluir un mtodo para devolver la fecha de contratacin.
DEFINE CLASS empleado AS CUSTOM
PROTECTED FechaContr
Nombre = ""
Apellido = ""

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

9 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Direccin = ""
FechaContr = { - - }
PROCEDURE ObtFechaContr
RETURN This.FechaContr
ENDPROC
ENDDEFINE

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

10 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Programas en Foxpro y explicacin de lo que realiza.

[http://2.bp.blogspot.com/-DM_sTQrxxZI
/T6XR9w2YtsI/AAAAAAAAAA0/CkFX8UZUEMc/s1600/1023481foxpro_logo.gif]

Formato: @ Fil,Col to Fil,Col


Ejemplo:
@ 5,10 to 9,70
Explicacin:
Genera un cuadro con lnea simple desde la fila 5 columna 10 hasta la fila 9 columna 70
@ F,C clear to F,C: El comando Clear to, da la posibilidad al programador de borrar sectores o partes de
la pantalla.
Formato: @ Fila, Col clear to Fila,Col
Ejemplo:
@ 5,10 clear to 15,30
Explicacin:
Borra la pantalla desde la fila 5 columna 10 hasta la fila 15 columna 30.
Store: Permite asignar un valor o expresin a una variable o lista de variables.
Formato: Store [valor/expresin] to Var1, Var2, ..., Var n
Ejemplos:
Store 0 to V1,V2,V3
Store Space(20) to Nomb, Dire
Store V1+V2 to V3
Explicacin:
Asigna 0 a las variables V1,V2 y V3 con lo que pasan a ser variables numricas.
Da una longitud de 20 espacios a las variables Nomb y Dire
Efecta la suma de V1 y V2 , y el resultado se almacena en V3
@ Fil,Col Say: El Comando Say le proporciona al usuario la posibilidad de imprimir un literal, dato o
variable en una coordenada especfica de pantalla. Se debe indicar la fila (0-24) y despus la columna
(0-79). Si se indica un valor mayor el programa enva un mensaje de error.
Formato: @ Fila,Columna Say [ Literal , Variable]
Ejemplos:
@ 10,10 Say Incluya su nombre
@ 15,20 Say Sueldo

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Explicacin:
Imprime en la fila 10 columna 10 el literal Incluya su nombre
Imprime la variable Sueldo en la fila 15 columna 20
Get-Read: El comando Get permite aceptar valores desde el teclado, el comando Read asigna los
valores ledos a la variable o variables especificadas. Todo Get o grupo de Gets debe tener su
correspondiente Read. Esto dos comandos se usan en la mayora de los casos en combinacin con el @
Say.
Formato : @ Fil, Col Say [Literal] get Variable
Read
Ejemplos:
@ 10,10 say Introduzca su nombre Get Nombre
Read
@ 10,10 say Incluya el monto de la venta Get Venta
@ 12,10 say Indique el % de descuento Get Desc
Read
Picture: El comando Picture permite establecer un formato (mscara) bien sea de entrada o de salida de
los datos. El picture maneja distintas plantillas relacionadas con los diferentes tipos de datos que pueden
ser incluidos.
Plantilla

Accin

Acepta solamente letras

Acepta exclusivamente dgitos y signos

Transforma todos los caracteres en maysculas

En los nmeros indica la representa los miles

En los nmeros indica la posicin del punto decimal

Se pueden usar combinaciones de estas plantillas en un mismo picture.


Formato: Picture plantilla(s)
Ejemplos:
@ 5,10 say Incluya el promedio get Prom Pict 99.99
@ 7,10 say Nombre del alumno get Nom Pict @A!
Explicacin.
En la variable Prom se pueden almacenar solo dgitos y se ha establecido la posibilidad de especificar
dos decimales.
En la variable Nom se puede escribir letras y se visualizan en maysculas.
Range: El comando range permite establecer o definir un rango de valores vlidos para una variable
numrica al momento de introducir datos por medio del teclado. Si el valor incluido sobrepasa o es menor
al rango especificado, la ejecucin del programa se detiene.

11 de 20

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Formato: Range valor inicial, valor final


Ejemplos:
@ 5,25 say Introduzca una calificacin (de 1 a 20) get Nota Pict 99 range 1,20
@ 7,25 say Introduzca edad del alumno get Edad Pict 99 range 6,18
Read
Explicacin.
El valor que puede ser asignado a la variable Nota va de 1 a 20
El valor que toma la variable Edad va de 6 a 18
Valid: El comando Valid permite validar / definir la entrada de datos a una variable character.
Formato: Valid Variable$items o datos vlidos
Ejemplo:
@ 5,5 say Continua la ejecucin del programa (S/N) get Ru Pict ! Valid Ru$SN
Explicacin:
La variable Ru slo acepta como posible contenido una S o una N, en caso que el usuario coloque otro
carcter la ejecucin del programa no continua.
Comando Set Color To : Permite cambiar o modificar los atributos de color de pantalla.
Formato :
Set Color To estandar, resaltado
Estandar : Color de visualizacin de los SAY.
Resaltado : Color de la visualizacin de las variables o campos
editados con GET .
Para desactivar una combinacin de colores basta colocar Set Color to
Colores :
B=Azul R= Rojo

N=Negro Bg = Cian

W=Blanco Gr = Marrn

G=Verde RB= Magenta

+ = Resalta color * = Parpadeo


Ejemplos :
Set Color To W+/B+, Gr+/N Letra blanca sobre fondo
Azul (Say) y letra Amarilla
sobre fondo Negro
Set Color to R+/B+ Letra Roja sobre Fondo Azul
Replicate: Permite repetir un carcter la cantidad de veces que se requiera. Se utiliza en la parte de
impresin.
Formato: Replicate (signo, cantidad de veces)
Ejemplo.
@ 10,10 say Repl (*,20)
Explicacin:

12 de 20

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

13 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Imprime 20 veces el signo * a partir de las coordenadas fila 10 y columna 10.

Condiciones.
En foxpro el comando que permite establecer condiciones es el If- Else - Endif, en el cual si la condicin
verificada es cierta; se ejecutan las rdenes ubicadas despus del If; si es falsa va a ejecutar las
instrucciones ubicadas despus del Else.
Formato:
If [Condicin]
Instrucciones
Else
Instrucciones
Endif
El Endif establece el final de las instrucciones que se ejecutan dependiendo de la condicin que se est
verificando.
Ejemplo:
@ 10,20 say Introduzca el sueldo del empleado get Suel
Read
If Suel > 50000
Comision = Suel * 4 /100
Vacacion = Suel / 30 * 45
else
Comision = Suel * 10 /100
Vacacion = Suel / 30 * 90
Endif
Explicacin:
En este ejemplo se evala el contenido de la variable Suel; si sta almacena un valor mayor de 50000,
el programa procede a calcular una variable llamada comisin como el 4 % de Suel y Vacacion como 45
das de sueldo, de lo contrario, en caso de almacenar 50000 o menos, el programa procede a calcular
Comision como el 10 % de Suel y Vacacion como 90 das de sueldo.
Otra forma de desarrollar el caso anterior es el siguiente:
@ 10,20 say Introduzca el sueldo del empleado get Suel
Read
If Suel > 50000
Comision = Suel * 4 /100
Vacacion = Suel / 30 * 45
Endif

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

14 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

If Suel <= 50000


Comision = Suel * 10 /100
Vacacion = Suel / 30 * 90
Endif
Aqu se utilizan dos If o condiciones independientes. Al momento de transcribir un programa, el
programador debe estar pendiente de cerrar cada uno de los If que haya utilizado dentro del programa.
Asimismo, puede establecer If dentro de otros If, generando lo que se denomina If anidados.

Operadores lgicos
Los operadores lgicos son estructuras que permite desarrollar o establecer varias condiciones en un
mismo if; establece condiciones lgicas. Los operadores lgicos son:
Operador Lgico
.And.

.Or.
.Not.

Explicacin

Todas las condiciones parciales evaluadas en el If deben cumplirse, para que la


condicin final sea cierta.

Basta que una de las condiciones parciales se cumpla, para que la condicin final
sea cierta

La condicin evaluada debe ser falsa para que la condicin final sea cierta

Ejemplos:
@ 5,20 say Sueldo: get sue pict 99999
Read
If sue>50000 .and. sue <100000
Bono=sue *4 / 100
Endif
2. @ 5,20 say Calificacin: get Calif pict 99 range 1,20
Read
If calif>10 .or. Calif =10
@ 7,30 say Nota aprobatoria
Endif
Explicacin:
Si el valor que se incluye a la variable sue (sueldo) est comprendido entre 50000 y 100000, entonces el
programa procede a calcular Bono como el 4 % de sue.
Si la calificacin incluida a la variable calif es mayor a 10 o igual se imprime el mensaje de nota
aprobatoria.
Do Case - Endcase: El Do case - Endcase es un comando de seleccin mltiple, esto es, que verifica
multiples condiciones (2 o ms) y dependiendo de aquella que se cumpla ejecutar una serie de
instrucciones.
Formato:

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

15 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Do case
Case [Condicin 1]
Instrucciones
Case [Condicin 2]
Instrucciones:
Case [Condicin N]
Instrucciones
Otherwise
Instrucciones
Endcase
El Otherwise es una instruccin que se ejecuta cuando ninguna de las opciones establecidas se cumple.
Cumple similar funcin que el Else en el If. En el Do Case se debe colocar Endcase una sola vez.
Ejemplo:
Clear
Nm=0
@ 10,10 say Introduzca el N del mes: get nm pict 99 range 1,12
Read
Do case
Case nm=1
@ 12,20 say Enero
Case nm=2
@ 12,20 say Febrero
Case nm=3
@ 12,20 say Marzo
:
Case nm=12
@ 12,20 say Diciembre
Endcase
Explicacin:
Dependiendo del valor que tome la variable nm se imprime el nombre del mes. Al usar el comando
range solo se aceptan valores que van de 1 a 12.

Contadores y acumuladores
Los contadores y acumuladores son variables numricas que permiten determinar informacin especfica
durante la ejecucin de un programa. A continuacin se presenta un cuadro con las caractersticas ms
importantes de estas variables.
Contador

Acumulador

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

16 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Variable que suma o acumula valores. Permite


determinar el total de los valores ledos o trabajados.
Variable que controla o determina la cantidad de Se incrementa en cualquier valor.
veces que se repite un proceso o dato. Siempre se Formato:
incrementa en uno.
Valor
Formato:
Variable= variable + Variable
Variable=variable+1
Expresin
Ejemplos:
Ejemplos:
C=C+1
C=C+20
Valores=Valores+1
Suma=Suma+Valor
Total= Total + (N*E)
Los contadores y acumuladores son utilizados regularmente en combinacin con el If o con el Do While. La
persona que desarrolla el programa debe plantearse muy bien cual de los dos tipos de variables debe
usar.

Comandos de iteracin o repeticin


Se denomina iteracin, al hecho de repetir varias veces una serie de instrucciones por medio de
estructuras cclicas. Estas estructuras en foxpro son el For - Next y el Do While.
For Next: El for-next permite al usuario repetir una serie de instrucciones mientras que el valor indicado
como final, no sea excedido por el valor de la variable de control. Al momento en que la variable de control
exceda el valor final especificado, la ejecucin del programa pasa a la siguiente instruccin despus del
next.
Formato:
For <VC> = VI to VF [step Inc]
Instrucciones
Next <VC>
En donde:
VC: Representa la variable de control del ciclo.
VI: Identifica el valor inicial que se asigna a la variable de control
VF: Representa el mayor valor que toma la variable de control
Step Inc: Indica el incremento, el valor en que aumenta la variable de control cada vez que pasa la
ejecucin del computador por el ciclo. Cuando no se especifica la clusula Step, el For se incrementa por
defecto de 1 en 1.
Nota: Todo For debe tener su next asociado.
Ejemplo 1.
Numero=0
Contador=1
For Numero=1 to 20

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

17 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

@ Contador,10 say Nmero:


@ Contador,20 say Numero pict 99
Contador= Contador+1
Next Numero
En el ejemplo anterior por medio del For, se imprimen los 20 primeros nmeros naturales. La variable
Contador tiene la funcin de sustituir el N de fila donde se imprimen los datos. Esto se denomina contador
de lneas. Tambin se observa que la variable nmero no sufre ningn incremento por medio de
instruccin, sino que se hace en forma automtica. La ejecucin del programa pasa a la siguiente
instruccin despus del next, cuando la variable Nmero llega al valor de 21 que excede el valor final
especificado.
Ejemplo 2:
Sumapar=0
Contador=0
For contador= 2 to 20 step 2
Sumapar=Sumapar+contador
Next contador
@ 5,15 say La suma de los nmeros pares menores o iguales a 20 es:
@ 5,55 say Sumpar pict 999
En el ejemplo anterior se acumulan los nmeros pares comprendidos entre el 2 y el 20 ambos inclusive, es
por ello que el valor inicial que toma la variable contador es de 2 y el valor final 20, a la vez que sufre
incrementos de 2 en 2.
Ejemplo 3:
Store 0 to Tnota, capla,capro,i,notapro
For I=1 to 15
Clear
Nota=0
@ 5,20 say Introduzca una nota: get Nota pict 99 range 1,20
read
If Nota<10
Capla=capla+1
Else
Capro=Capro+1
Endif
Tnota=Tnota + nota
Next i
Notapro=Tnota/15
@ 5,10 say Nota promedio:
@ 5,25 say notapro

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

En este ejemplo se pide la nota de 15 alumnos y posteriormente se halla o calcula el promedio de esas
notas, as como tambin la cantidad de alumnos aprobados y aplazados.
Do While - Enddo: Permite repetir una serie de instrucciones mientras la condicin que se est
verificando es cierta. Al momento de dejarse de cumplir la condicin, el control del programa pasa a la
siguiente instruccin despus del Enddo. En caso de que se tengan que verificar dos o ms condiciones
se deben utilizar los operadores lgicos.
Formato:
Do While <Condicin> (And / or) <Condicin>
Instrucciones
Enddo
Ejemplos:
* Programa que calcula la suma de los 10 primeros nmeros naturales
Set talk off
Set bell off
Set stat off
Suma=0
Contador=1
Do While Contador <=10
Suma=Suma+Contador
Contador=Contador+1
Enddo
@ 5,20 say La suma es:
@ 5,40 say Suma Pict 99
En el ejemplo anterior por medio del Do while se han generado los nmeros del 1 al 10 y por medio del
ciclo se acumulan esos valores en la variable suma. Al imprimirla se imprime el valor de la suma total de
los 10 primeros nmeros naturales.
* Programa que pide el sueldo de 20 empleados y calcula el total de sueldos y el *sueldo promedio
Tsueldo=0
Contador=1
Do While Contador <=20
Sueldo=0
Clear
@ 5,20 say Empleado N
@ 5, 32 say Contador pict 99
@ 8,20 say Introduzca el sueldo del empleado get Sueldo Pict 99999
range 120000,500000
read

18 de 20

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

19 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

Tsueldo=Tsueldo+sueldo
Contador=Contador+1
Enddo
Sueldop=Tsueldo / 20
Clear
@ 10,20 say El total de los sueldos es:
@ 10,40 say Tsueldo pict 9999999
@ 12,20 say El sueldo promedio es:
@ 12,40 say Sueldop pict 9999999
En el ejemplo anterior por medio del Do while se ha desarrollado un proceso que permite pedir el sueldo
de 20 empleados y posteriormente hallar el total de los sueldos (por medio de un acumulador), mientras
que la variable contador controla la cantidad de empleados ledos. Al tener el total de los sueldos, se
puede obtener tambin el sueldo promedio al dividir el acumulador entre el nmero de empleados que es
de 20.
Comando Col( ): El comando Col( ) devuelve el Nmero de columna en que se encuentra ubicado el
cursor.
Formato: Col( )
Ejemplo:
@ 5,20 say Monto vendido:
@ 5,col()+1 say Montov Pict 99
En el ejemplo la variable Montov ser impresa en la columna siguiente (columna 34).
Comando Row( ): El comando Row( ) devuelve el nmero de la fila en que se encuentra ubicado el
cursor.
Formato: Row( )
Ejemplo:
@ 5,20 say Monto vendido:
@ Row()+1,20 say Montov Pict 99
En el ejemplo la variable Montov ser impresa en la fila siguiente (fila 6).
Funciones
Funcin Int: La funcin Int (Integer), devuelve/toma la parte entera del argumento, desechando la parte
decimal. El argumento puede estar representado por un valor, una variable o una expresin numrica.
Formato: INT (argumento)
Ejemplo:
B=0
A=7
B= Int(A/2)
@ 5,20 say Valor:
@ 5,col( )+2 say B Pict 9

02/07/2015 20:44

(POO) En Foxpro!! | Quiero aprobar Programacion

20 de 20

http://kensy-garcia.blogspot.com/2012/05/poo-en-foxpro.html

La variable B toma como valor el 3 que es la parte entera que se genera al momento de aplicar la divisin
((7/2)= 3.5), desechando la parte decimal.
Funcin Round: La funcin Round (Rounded), redondea o aproxima un valor a su inmediato superior o
inferior, dependiendo de la cantidad de decimales que se especifiquen
Formato:
ROUND (argumento, N de decimales)
Ejemplo:
B=0
A=7
B= Round(A/2,0)
@ 5,20 say Valor:
@ 5,col( )+2 say B Pict 9
La variable B toma como valor 4 que es el resultado de aproximar a 0 decimales el resultado de la
expresin utilizada en el argumento. ((7/2)= 3.5).

Publicado 5th May 2012 por Kensy Garcia


0

Aadir un comentario

Comentar como:

Publicar

02/07/2015 20:44

Anda mungkin juga menyukai