O que é o Visual FoxPro ?

O Microsoft Visual FoxPro é uma plataforma para o desenvolvimento de aplicações Windows para o desktop centradas em bases de dados, bem como front-end para sistemas cliente-servidor.

O Microsoft Visual FoxPro é uma ferramenta orientada a objetos e eventos.

Oferecendo suporte para consultas remotas, SQL Pass-Through para desenvolvimento de componentes COM+ para camada de regra de negócios para acesso a qualquer base de dados corporativa, através do seu Universal Data Access, que utilizando da classe de objeto CursorAdapter provê acesso nativo a sua base de dados própria (DBC), o acesso a XML, Microsoft SQL Server 2000 e fontes de dados baseadas em ODBC e OLE DB.

Com a integração com a plataforma .Net possui um grande número de funções nativas e exclusivas para tratamento de documentos XML e XML Web Services, permitindo o uso de XML hierárquicos e suporte a esquemas XSD.

Através de Componentes COM, incluindo Office, Microsoft Visual Studio e tecnologias Active Server Pages (ASP), pois com o seu suporte nativo a Serviços COM+, o Visual FoxPro pode criar facilmente componentes altamente escaláveis para aplicações de três camadas.

Como iniciar?

  • Instalar o Visual FoxPro;
  • Instalar a atualização do Visual FoxPro;
  • Instalar o pacote COM+.

Obtendo o Visual FoxPro

O instalador pode ser obtido em:

http://www.autocom3.online/arquivos/instaladores/v6/SetupVFoxAdvanced.exe

Somente o Runtime:

http://www.autocom3.online/arquivos/instaladores/v6/SetupVFoxAdvancedRuntime.exe

 

Um pouco de lógica para programação

Conhecendo um algoritmo

Programas de computador geralmente são traduções feitas a partir de um algoritmo, um algoritmo é um plano, um projeto para a criação de um programa de computador. Algoritmo é a maneira pela qual organizamos as informações, a fim de passa-las para o computador, ou seja, consiste em um conjunto lógico e finito de ações  (instruções) que resolvem um determinado problema. Um Algoritmo é uma sequência de instruções ordenadas, de forma lógica, para a resolução de uma determinada tarefa ou problema.

Por definição verificamos que algoritmo não se aplica apenas à informática, pode ser caracterizado tanto para uma receita de bolo quanto para montagens industriais. Usamos algoritmos em procedimentos humanos diariamente.

Nenhum algoritmo será completo, normalmente algumas condições serão esquecidas, assim ao se construir um algoritmo o seu responsável deve especificar condições de entrada e saída. Vamos pegar um pequeno exemplo de algoritmo usado em nosso dia-a-dia, como um simples telefonema.

Clique na imagem para ampliar

Iniciando as expressões

Uma expressão é um conjunto de variáveis, operadores, literais e outras expressões que determinam um valor que pode ser numérico, booleano ou string.

Para desenvolvermos os algoritmos e desmembrar as expressões, usaremos uma pseudolinguagem conhecida como “Portugol” ou Português Estruturado.

“Portugol” é derivado da aglutinação de português + Algol. Algol é o nome de uma linguagem de programação estruturada, usada no final da década de 50.

Para a construção de Algoritmos, todas as expressões aritméticas devem ser linearizadas, ou seja colocadas em linhas. Isso devido à leitura que é feita pelo computador.

Clique na imagem para ampliar

Termos e componentes relacionados à programação

Variáveis

Variáveis são endereços de memória, destinados a armazenar informações temporariamente. Todo algoritmo ou programa deve possuir variáveis.

No exemplo apresentado anteriormente (um simples telefonema), declararíamos as variáveis, dizendo ao programa que os valores de entrada e saída, seriam os impulsos telefônicos.

Agora veremos alguns exemplos, pequenos programas. Assim, você pode aprender como eles são implementados, e ficar sabendo quais são as possibilidades dos algoritmos. Vamos começar com um programa muito pequeno que exibe uma mensagem na tela.

Orientação a objetos

Seria necessário um curso inteiro para falar sobre orientação a objeto, visto que este tipo de tecnologia deixa de lado a tradicional lógica de programação procedural e apresenta um novo conceito. Vamos conhecer os fundamentos básicos da orientação a objeto.

Princípios

O .Net Framework é totalmente orientado a objeto. Não apenas permite a utilização de objetos, mas depende disso. Praticamente tudo o que você precisa para criar uma aplicação é, de alguma forma, realmente um tipo de objeto.

Mas o que são objetos?

Definição

Imagine que você compre uma televisão. Supondo que você não conheça eletrônica, você não saberá o funcionamento dela, ou seja, os atributos. Porém todos os televisores tem muitos aspectos físicos em comum, apesar de diferentes, assim como funcionamento, ou seja, na parte “externa” os televisores podem ser alterados. Esse é o conceito de ENCAPSULAMENTO. Podemos, então, dizer que uma “televisão” é uma CLASSE, que possui propriedades, métodos e eventos. Cada “aparelho de televisão” é uma instância da classe televisão, que herda as suas propriedades, métodos e eventos. Esse é o conceito de HERANÇA em orientação a objeto. Ainda existe o conceito do POLIMORFISMO, que consiste na instância poder ter mais de um método com assinaturas diferentes, por exemplo. Esses conceitos ficarão mais claros no decorrer do curso, onde utilizaremos na prática.

Propriedades

Propriedades são partes do objeto onde ele receberá valores que determinarão seu comportamento.

Utilizando o exemplo do objeto “televisão”, podemos ter a propriedade “tipo”, que pode ser LCD, Plasma ou LED.

Também podemos ter a propriedade “Tamanho”, que determinará as polegadas da tela, e assim por diante.

Métodos

Métodos são simplesmente procedimentos que seu objeto irá fazer internamente e retornará um resultado útil. Métodos
são amplamente utilizados em orientação a objeto. Do nosso exemplo da televisão, um método poderia ser “PassarEnergia”
quando ligamos o aparelho.

Eventos

Evento é algo que pode ser acessado externamente ao objeto. É muito parecido com o método. Um exemplo seria “AoLigar”
da televisão. Isso irá disparar uma sequência de processos no objeto, por exemplo, o evento “AoLigar” chama o método
“PassarEnergia”.

Introdução ao Visual FoxPro – Um programa para criar um banco de dados avançado

O Visual FoxPro 9.0 é uma poderosa ferramenta para construir soluções de bases de dados. Os usuários podem construir todo o tipo de bases de dados, incluindo aplicações individuais e remotas para PCs Tablet que rodem Windows. Podem também criar e acessar componentes COM e serviços XML Web, os quais são compatíveis com a tecnologia Microsoft .NET.

Porque então utilizar o Visual FoxPro?

O Visual FoxPro 9.0 inclui um motor local de cursores e uma relação próxima entre linguagem e dados. Há também a possibilidade de criar soluções compatíveis com .NET com serviços XML e XML Web hierárquicos. Este conta com um robusto conjunto de ferramentas direcionadas para a criação de aplicação de bases de dados para computadores, oferecendo aos programadores tudo o que precisam para gerir os seus dados. Estas ferramentas de gestão incluem pesquisas, a criação de um sistema integrado de gestão de bases de dados relacionais (DBMS), organizar tabelas de informação e mais. Esta aplicação completa de gestão de dados irá ajudar os usuários a gerir eficazmente todos os seus dados e aplicações.

O Visual FoxPro 9.0 inclui também ferramentas de produtividade para programadores. Agora podem melhorar a interface de usuário com os controles de ancoragem automática, suporte de imagens melhorado e formulários IDE. Existe até uma opção para personalizar a janela de propriedades com todos os tipos de letras e definições de cor personalizadas. Esta ferramenta completa ajuda a melhorar o seu processo de design quando criar soluções de bases de dados, e esta inclui um conjunto de ferramentas e aplicações que são extremamente úteis.

Não haverá uma nova versão do Visual FoxPro

Essa é a informação oficial da Microsoft e realmente a Microsoft descontinuou o produto em 2007.

Contudo, a comunidade Visual FoxPro no mundo seguiu com o desenvolvimento e atualmente é chamado de Microsoft Visual FoxPro Advanced.  A versão advanced possui implementação em 32 e 64 bits, sendo sua ultima versão publicada em janeiro de 2019.

Popularidade do Visual FoxPro

Não tem muitos fãs no brasil.  A maior concentração de programadores estão na argentina, chile e em outras partes do mundo.  No brasil são poucos usuários da linguagem.

Porque a Autocom3 utiliza o Visual Fox Pro

Velocidade de desenvolvimento e também no acesso e confiabilidade de acesso aos bancos de dados.  O forte da ferramenta é o acesso ao banco e isso tornou viável seguir o desenvolvimento para o tratamento de grandes bases.

Como a Autocom3 cria aplicativos não suportados pelo Visual FoxPro

O Visual foxpro possui 100% integração com a tecnologia .NET, sendo assim tais desenvolvimentos serão realizados em C#.

Princípios Básicos

Existem quatro especificidades que você deve saber ao começar a programar em Visual FoxPro:

Não é case sensitive; aceita abreviação de comandos; comentários; caracteres terminal; e blocos.

Não é Case Sensitive

O visual foxpro não é case sensitive, ou seja “CASE” ou “Case” ou “case” é a mesma coisa para ele.

Comentários

Comentários são trechos do código fonte onde as informações existentes nele são ignoradas pelo compilador, ou seja você pode adicionar alguma informação dentro do código, por exemplo, para explicar alguma função, e quando o compilador verifica que se trata de um comentário, ele não o inclui na compilação.

Existe duas formas de comentários em Visual FoxPro, no início da linha e na mesma linha e usa o * ou &&.

* Isto é um comentário no início da linha

IF
ELSE  && Isso é um comentário dentro da linha

ENDIF

Caractere Terminal

O Visual FoxPro entende que cada linha é um comando e não exige um caracter de terminal, como no C#.

Mas se um comando for muito grande e você desejar utilizar uma quebra de linha, utilize o caracter ponto-e-virgula (;).

* Código em apenas uma linha

Replace ltransf with ‘’ all

* Mesmo código com quebra de linha
Replace Ltransf ;
With ‘’ ;

all

Blocos

Amplamente utilizada na linguagem C#, Java e C, as chaves ({}) demarcam o inicio e o final dos blocos. No Visual FoxPro o uso de blocos não é necessário:

Clique na imagem para ampliar

Classes

O estudo da orientação a objeto assusta muitas vezes, porém se você conseguir absorver o conceito em si, não será difícil entender.

As classes nada mais são que os modelos, as formas dos objetos, ou seja, o que o objeto poderá fazer, Ela consiste em métodos, propriedades e eventos. Ou seja, o que o objeto poderá fazer. Ela consiste em métodos, propriedades e eventos. Ou seja, o caminho inverso, um objeto é uma instancia de uma classe, que terá os mesmos métodos, propriedades e eventos.

Escopo de Classe

A classe pode ser declarada como publica, privada ou protegida:

-Publica – sem restrição de acesso.
-Private – a classe somente é acessada no contexto onde foi declarada.
-Protected – a classe somente é acessível pela sua própria classe ou por suas classes derivadas.

Variáveis e Constantes

quando você utiliza aplicações, você realmente não se importa como os dados da aplicação são armazenados, simplesmente o faz. Entretanto como um programador, você tem que pensar sobre isso. Qual o tipo de dados o usuário irá inserir? Será texto, número, datas ou qualquer outra coisa?

Isso importa porque como você armazena os dados internamente em sua aplicação, afetará não somente como você irá ligar os dados, mas também o que você poderá fazer com esses dados. Para armazenar dados internamente, são utilizadas variáveis, e as variáveis tem tipos. Por exemplo , tem um tipo de dados chamado string. Não surpreendentemente, é utilizado para armazenar dados de texto. Tem um tipo de dados chamado Date para datas e horas, um tipo integer para números e um tipo decimal ou double para números flutuantes. Cada um tem diferentes características: o tipo integer pode somente armazenar números inteiros, e tentar armazenar outro tipo de dados em uma variável integer irá provocar um erro.

Tipos de Variáveis

Os tipos de variáveis são:

Character Campo alfanumérico de até 254 caracteres.
Date Campo do tipo data.
DateTime Campo do tipo data e time.
Numeric Aceita inteiro ou decimais com a faixa – .9999999999E+19 to .9999999999E+20
Logical Campo logico, aceita TRUE ou FALSE
General Aceita arquivos binários
Integer Aceita números inteiros, sem decimais
Memo Aceita textos grandes
Varchar Aceita campos do tipo VARCHAR
ARRAY Matriz de valores e pode ser mono ou bidirecional

Declarando variáveis

O visual foxpro aceita declarações de variáveis também, como o C#

LOCAL nome AS CHARACTER

Nome = “Whilder”

Mas isso não é obrigatório, o que é mais comum no visual foxpro é utilizar dessa forma:

Nome = “Whilder”

Data = ctod(’31/03/2019’)

Salario = 1200

Veja que não é necessário declarar previamente o tipo da variável, o Visual FoxPro já altera o tipo para o valor que você colocar e por incrível que pareça, uma troca de tipo não gera erro e é aceito, porém, não é uma boa prática de programação:

Nome = “Whilder”  && Variavel vira character

Nome = 1200  && Variável que era character vira numérica

Nome = CTOD(’31/03/2019’)  && Variável que era numérica vira DATE

Escopo das variáveis

Podem ser PUBLICAS ou LOCAIS.

Variáveis PUBLICAS são disponibilizadas em todo o sistema e em todos os ambientes, ou seja, são globais e disponíveis em todo o sistema.

Variáveis LOCAIS tem o escopo somente dentro do método atual e é destruída após o RETURN ou ENDFUNC da função ou método.

Nomeando variáveis

Algumas sugestões:

PUBLICAS:  Primeira letra “g”, indicando global, segunda letra como tipo, exemplo “n,d,c,i,m”, etc…

LOCAIS: Primeira letra “l”, indicando local, segunda letra como tipo, exemplo “n,d,c,i,m”, etc…

Como é usado no Autocom3?

Apenas as globais usa a sugestão acima para variáveis publicas.

Nas variáveis locais é usado apenas um “_”, sem identificação do tipo de dados.

Operadores aritméticos

Operadores aritméticos são os comumente utilizados para a realização de cálculos matemáticos.

Adição + x+y
Subtração x-y
Multiplicação * x*y
Divisão / x / y
Potenciação ^ x ^y
Resto de divisão % x % y

 

Precedência de Operadores

quando efetuamos cálculos matemáticos, a ordem em que são feitas as contas influenciam bastante no resultado final. Por padrão, primeiro são feitas as contas de multiplicação e divisão, depois a soma de subtração.

Como exemplo, nós temos que somar 2 ao número 5, e depois multiplicar por 2. Isso irá resultar no número 14 (2+5=7 -> 7*2=14).

O comum, é pensar na expressão desta forma: 2+5*2. porém , neste caso, o resultado seria 12, e não 14.

para evitar esses imprevistos, são utilizados parênteses nas operações.

(2+5)*2=12

funções matemáticas avançadas

Existem algumas funções que são predefinidas na programação em visual foxpro, para facilitar os cálculos mais complicados. Seguem abaixo alguns exemplos na linguagem C# e um compatível na linguagem Visual FoxPro.

Clique na imagem para ampliar

Conversão de Valores

A conversão de dados é muito importante em qualquer linguagem de programação, as mais usadas em Visual Fox Pro são:

Converter Número em Texto
_variável = STR(12.34,2)  && transforma em “12.34”

Converter Texto em Número
_Variavel = VAL(“12.34”)  && Transforma em 12.34

Converter Decimal em Inteiro
_Variavel = INT(12.34)  && Transforma em 12

Converter Texto em Data
_Variavel = CTOD(’31/12/2019’)  && Converte texto ‘31/12/2019’ em data como 31/12/2019

Converter Data em Texto
_Texto = CTOD(’31/12/2019’)
_Variavel = DTOC(_Texto)  && Converte o texto que está na variável _Texto em tipo de Data

Operadores Lógicos e de Comparação

Os operadores lógicos e de comparação são amplamente utilizados nas estruturas de decisão e repetição. Eles fornecem a base para que a aplicação decida qual caminho deve tomar. Operadores de comparação sempre envolvem uma expressão a ser avaliada.

O resultado, invariavelmente sempre será True ou False.

Maior > x > y
Maior ou Igual >= x >= y
Menor < x < y
Menor ou Igual <= x <= y
Idêntico == x == y
Diferente != x != y
AND (E) AND x AND y
OR (OU) OR X OR y
NOT (NÃO) ! x = !y
NOT (NÃO) NOT X = NOT Y

Estruturas de Decisão

Em toda aplicação um pouco mais elaborada, as estruturas de decisão estão presentes. Elas indicam qual caminho, ou qual código a ser executado diante da resposta de um teste lógico. Como vimos em Operadores Lógicos e de Comparação, o resultado sempre será True ou False.

Existem basicamente duas estruturas de decisão padrões: IF/ELSE/ENDIF ou DOCASE/ENDCASE
No C# a primeira estrutura tem a seguinte sintaxe:

Estrutura IF

IF (teste_logico1)
//código a executar se teste_logico1 retornar TRUE
ELSE
//código a executar se teste_logico1 retornar FALSE
ENDIF

Estrutura DOCASE

A estrutura DOCASE/ENDCASE é um pouco diferente:

DO CASE
CASE _VARIAVEL = “A”
* Executa o código se _variável = “A”
* Sai do case e executa a linha imediatamente após o ENDCASE

CASE _VARIAVEL = “B”
* Executa o código se _variável = “B”
* Sai do case e executa a linha imediatamente após o ENDCASE

CASE _VARIAVEL = “C”
* Executa o código se _variável = “C”
* Sai do case e executa a linha imediatamente após o ENDCASE

CASE _VARIAVEL = “D”
* Executa o código se _variável = “D”
* Sai do case e executa a linha imediatamente após o ENDCASE
OTHERWISE
* Executa o código se _variável não for A,B,C,D
* Sai do case e executa a linha imediatamente após o ENDCASE

ENDCASE

Estruturas de repetição:

Existem 4 estruturas de repetição básicas:

FOR  FOR EACH  DO WHILE  SCAN

ENDFOR  NEXT  ENDDO  ENDSCAN

FOR VarName = nInitialValue TO nFinalValue [STEP nIncrement]

Commands

[EXIT]

[LOOP]

ENDFOR | NEXT

FOR EACH Var [AS Type [OF Class Library]] IN Group [FOXOBJECT]

Commands

[EXIT]

[LOOP]

ENDFOR | NEXT [Var]

DO WHILE lExpression

Commands

[LOOP]

[EXIT]

ENDDO

SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]

[Commands]

[LOOP]

[EXIT]

ENDSCAN

Procedures x Functions

Muitas vezes confundimos toda rotina como sendo uma função da aplicação. Porém essas rotinas estão divididas em dois tipos específicos: Procedures e Functions.

Procedures são rotinas que não retornam valores. Elas executam algum procedimento, algum cálculo mas não são obrigadas a retornar algum tipo de dado a ser utilizado em outra rotina.

Exemplo de PROCEDIMENTOS

PROCEDURE ProcedureName

[ LPARAMETERS parameter1 [ ,parameter2 ] ,… ]
Commands
[ RETURN [ eExpression ] ]

[ENDPROC]

PROCEDURE ProcedureName ( [ parameter1 [ AS para1type ][ ,parameter2 [AS para2type ] ] ,…] ) [ AS returntype ]

Commands

[ RETURN [ eExpression ] ]

[ENDPROC]

Exemplo de FUNÇÕES

FUNCTION FunctionName [ LPARAMETERS parameter1 [ ,parameter2 ] , … ]
Commands
[ RETURN [ eExpression ] ]

[ENDFUNC]

FUNCTION FunctionName( [ parameter1 [ AS para1type ][ ,parameter2 [ AS para2type ] ],…] ) [ AS returntype ]
Commands
[ RETURN [ eExpression ] ]

[ENDFUNC]

Tratamento de Erros

Erros acontecem, e nem sempre é o programador que erra quando está codificando. Muitas variáveis de ambiente podem ocasionar o erro, como uma entrada inválida por parte do usuário, por exemplo.

Por esse motivo, é de vital importância que o desenvolvedor da aplicação utilize os tratamentos de erro, para que o fluxo da aplicação não se interrompa, e o programa consiga atingir seu objetivo.

O Visual FoxPro trata os erros de duas maneiras, de uma maneira GLOBAL e de uma maneira ESPECÍFICA.

A maneira GLOBAL é uma declaração ON ERROR suafuncaodetratamento()

ON ERROR DO suafuncaodetratamento WITH ;

ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )

USE nodatabase

ON ERROR  && Restores system error handler.

PROCEDURE suafuncaodetratamento

PARAMETER merror, mess, mess1, mprog, mlineno

CLEAR

? ‘Error number: ‘ + LTRIM(STR(merror))

? ‘Error message: ‘ + mess

? ‘Line of code with error: ‘ + mess1

? ‘Line number of error: ‘ + LTRIM(STR(mlineno))

? ‘Program with error: ‘ + mprog

ENDPROC

E a outra forma é através da função TRY/CATCH/FINALLY

TRY

[ tryCommands ]

[ CATCH [ TO VarName ] [ WHEN lExpression ]

[ catchCommands ] ]

[ THROW [ eUserExpression ] ]

[ EXIT ]

[ FINALLY

[ finallyCommands ] ]

ENDTRY

 

Print Friendly, PDF & Email

Sobre o Autor