Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Lógica de Programação
Banco de Dados
Relatórios
Autor: Iurih Cherly A. Bezerra
Ultima Atualização: 21 de Agosto de 2002
Página 1
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
INDICE
Página
1
1.1
1.2
1.3
1.4
1.5
1.6
2
2.1
2.2
2.3
2.4
2.5
2.6
3
3.1
3.2
3.3
4
4.1
4.2
4.3
4.4
4.5
5
5.1
5.2
5.3
5.4
6
6.1
7
7.1
7.1.1
7.1.2
7.1.3
7.1.4
7.2
7.2.1
7.2.2
7.2.3
8
8.1
9
9.1
9.2
9.2.1
9.3
9.3.1
9.3.2
9.3.3
9.3.4
9.4
9.5
9.5.1
9.6
9.7
9.8
9.8.1
9.8.2
9.9
10
10.1
10.1.1
10.1.2
10.1.3
10.2
10.3
10.4
10.4.1
10.4.2
10.5
10.6
10.7
10.8
10.9
11
Introdução à Lógica de Programação
Lógica
Seqüência Lógica
Instruções
Algoritmo
Programas
EXERCÍCIOS
Desenvolvendo algoritmos
Pseudocódigo
Regras para construção do Algoritmo
Fases
Exemplo de Algoritmo
Teste de Mesa
EXERCÍCIOS
Diagrama de Bloco
O que é um diagrama de bloco?
Simbologia
EXERCÍCIOS
Constantes, Variáveis e Tipos de Dados
Constantes
Variáveis
Tipos de Variáveis
Declaração de Variáveis
EXERCÍCIOS
Operadores
Operadores Aritméticos
Operadores Relacionais
Operadores Lógicos
EXERCÍCIOS
Operações Lógicas
EXERCÍCIOS
Estrutura de Decisão e Repetição
Comandos de Decisão
3
3
3
3
4
4
6
7
7
7
7
8
8
9
10
10
10
12
13
13
13
14
14
14
16
16
16
18
19
20
21
24
24
SE...FIMSE / IF...ENDIF
SE...ENTÃO...FIMSE / IF... ELSE…ENDIF
FAÇA CASO / DO CASE
EXERCÍCIOS
24
24
25
27
Comandos de Repetição
30
FAÇA ENQUANTO / DO WHILE
PARA...ATÉ...FIMPARA / FOR...TO...ENDFOR
EXERCÍCIOS
30
30
31
Funções e Procedures
Funções mais utilizadas
Banco de Dados
O que é um Gerenciador de Banco de Dados
Banco de dados e seus componentes
33
34
36
36
36
Tipos de dados
37
Criação de um arquivo de dados
39
Inserindo os primeiros registros
Modificação da estrutura do arquivo de dados
Como listar dados na tela
Como abrir e fechar uma tabela
40
41
41
42
EXERCÍCIOS
Comando BROWSE
42
43
Exercícios
44
Ponteiro de Registros
Funções e Comandos mais utilizados em Banco de Dados
Indexação de Arquivos
45
45
46
Comando SET ORDER
Comando SEEK
47
47
Relacionamento entre Arquivos
Relatórios
Projeto de Relatórios
48
49
49
Page Header
Detail
Page Footer
50
50
50
Barras de Ferramentas
Especificação do layout das Páginas
Bandas Opcionais
50
51
51
Title Band
Summary Band
51
51
Grupos de Registros
Variáveis nos Relatórios
Visualização do Relatório
Impressão do Relatório
Dicas para Montagem Rápida de Relatórios
Referências
52
52
52
52
52
53
Página 2
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
1 Introdução à Lógica de Programação
1.1 Lógica
A lógica de programação é necessária para pessoas que desejam trabalhar com
desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o
desenvolvimento.
Então o que é lógica?
Lógica de programação é a técnica de encadear pensamentos para atingir
determinado objetivo.
1.2 Seqüência Lógica
Estes pensamentos, podem ser descritos como uma seqüência de instruções, que
devem ser seguidas para se cumprir uma determinada tarefa.
Seqüência Lógica são passos executados até atingir um objetivo ou solução de
um problema.
1.3 Instruções
Na linguagem comum, entende-se por instruções “um conjunto de regras definidas
para a realização de algo”.
Em informática, porém, instrução é a informação que indica a um computador uma
ação elementar a executar.
Convém ressaltar que uma ordem isolada não permite realizar o processo completo,
para isso é necessário um conjunto de instruções colocadas em ordem seqüencial
lógica.
Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em
prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas,
etc...
É evidente que essas instruções tem que ser executadas em uma ordem adequada –
não se pode descascar as batatas depois de fritá-las.
Dessa maneira, uma instrução tomada em separado não tem muito sentido; para
obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções,
na ordem correta.
Página 3
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
1.4 Algoritmo
Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de
uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de
instruções que dão cabo de uma meta específica. Estas tarefas não podem ser
redundantes nem subjetivas na sua definição, devem ser claras e precisas.
Como exemplos de algoritmos podemos citar os algoritmos das operações básicas
(adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos
seriam os manuais de aparelhos eletrônicos, como um videocassete, que explicam
passo-a-passo como, por exemplo, gravar um evento.
Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. Por
exemplo:
“Chupar uma bala”.
•
•
•
•
Pegar a bala
Retirar o papel
Chupar a bala
Jogar o papel no lixo
“Somar dois números quaisquer”.
• Escreva o primeiro número no retângulo A
• Escreva o segundo número no retângulo B
• Some o número do retângulo A com número do retângulo B e coloque o resultado no
retângulo C
RETÂNGULO A
RETÂNGULO B
+
RESULTADO
=
1.5 Programas
Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de
computador (Pascal, C, Cobol, Fortran, Visual Basic, Visual FoxPro, entre outras) e que são
interpretados e executados por uma máquina, no caso um computador. Notem que dada esta
interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos
algoritmos da vida real.
Página 4
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
1.6 EXERCÍCIOS
1) Crie uma seqüência lógica para tomar banho:
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
2) Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
Página 5
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
3) Descreva com detalhes a seqüência lógica para Trocar um pneu de um carro.
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
4) Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes:
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
Página 6
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
2 Desenvolvendo algoritmos
2.1 Pseudocódigo
Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é
uma alusão à posterior implementação em uma linguagem de programação, ou seja,
quando formos programar em uma linguagem, por exemplo Visual FoxPro, estaremos
gerando código em Visual FoxPro. Por isso os algoritmos são independentes das
linguagens de programação. Ao contrário de uma linguagem de programação não existe
um formalismo rígido de como deve ser escrito o algoritmo.
O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o
intermediário entre a linguagem falada e a linguagem de programação.
2.2 Regras para construção do Algoritmo
Para escrever um algoritmo precisamos descrever a seqüência de instruções, de
maneira simples e objetiva. Para isso utilizaremos algumas técnicas:
• Usar somente um verbo por frase
• Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham
com informática
• Usar frases curtas e simples
• Ser objetivo
• Procurar usar palavras que não tenham sentido dúbio
2.3 Fases
No capítulo anterior vimos que ALGORITMO é uma seqüência lógica de instruções que
podem ser executadas.
É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser
descrita por um algoritmo, como por exemplo:
COMO FAZER ARROZ DOCE
ou então
CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado
em três fases fundamentais.
ENTRADA
PROCESSAMENTO
SAÍDA
Onde temos:
ENTRADA: São os dados de entrada do algoritmo
PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final
SAÍDA: São os dados já processados
Página 7
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
2.4 Exemplo de Algoritmo
Imagine o seguinte problema: Calcular a média final dos alunos da 3ª Série. Os alunos
realizarão quatro provas: P1, P2, P3 e P4.
Onde:
Média Final = P1 + P2 + P3 + P4
4
Para montar o algoritmo proposto, faremos três perguntas:
a) Quais são os dados de entrada?
R: Os dados de entrada são P1, P2, P3 e P4
b) Qual será o processamento a ser utilizado?
R: O procedimento será somar todos os dados de entrada e dividi-los por 4 (quatro)
P1 + P2 + P3 + P4
4
c) Quais serão os dados de saída?
R: O dado de saída será a média final
Algoritmo
Receba a nota da prova1
Receba a nota de prova2
Receba a nota de prova3
Receba a nota da prova4
Some todas as notas e divida o resultado por 4
Mostre o resultado da divisão
2.5 Teste de Mesa
Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de
TESTE DE MESA, que significa, seguir as instruções do algoritmo de maneira precisa
para verificar se o procedimento utilizado está correto ou não.
Veja o exemplo:
Nota da Prova 1
Nota da Prova 2
Nota da Prova 3
Nota da Prova 4
Utilize a tabela abaixo:
P1
P2
P3
Página 8
P4
Média
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
2.6 EXERCÍCIOS
1) Identifique os dados de entrada, processamento e saída no algoritmo abaixo
•
•
•
•
•
Receba código da peça
Receba valor da peça
Receba Quantidade de peças
Calcule o valor total da peça (Quantidade * Valor da peça)
Mostre o código da peça e seu valor total
2) Faça um algoritmo para “Calcular o estoque médio de uma peça”, sendo que
ESTOQUEMÉDIO = (QUANTIDADE MÍNIMA + QUANTIDADE MÁXIMA) /2
3) Teste o algoritmo anterior com dados definidos por você.
Página 9
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
3 Diagrama de Bloco
3.1 O que é um diagrama de bloco?
O diagrama de blocos é uma forma padronizada e eficaz para representar os passos
lógicos de um determinado processamento.
Com o diagrama podemos definir uma seqüência de símbolos, com significado bem
definido, portanto, sua principal função é a de facilitar a visualização dos passos de um
processamento.
3.2 Simbologia
Existem diversos símbolos em um diagrama de bloco. No decorrer do curso
apresentaremos os mais utilizados.
Veja no quadro abaixo alguns dos símbolos que iremos utilizar:
Símbolo
Função
Indica o INÍCIO ou FIM de um processamento
Exemplo: Início do algoritmo
TERMINAL
Processamento em geral
Exemplo: Calculo de dois números
PROCESSAMENTO
Indica entrada de dados através do Teclado
Exemplo: Digite a nota da prova 1
ENTRADA
MANUAL
DE
DADO
Mostra informações ou resultados
Exemplo: Mostre o resultado do calculo
EXIBIR
Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não nos dizem
nada. Veja no exemplo a seguir:
Página 10
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Exemplos de Diagrama de Bloco
“CHUPAR UMA BALA”
“CALCULAR A MÉDIA DE 4 NOTAS
INICIO
INICIO
RECEBER N1
PEGAR A BALA
RECEBER N2
RETIRAR O PAPEL
RECEBER N3
CHUPAR A BALA
RECEBER N4
JOGAR O PAPEL NO LIXO
CALCULAR
MÉDIA = (N1+N2+N3+N4) / 4
FIM
MÉDIA
FIM
Veja que no exemplo da bala seguimos uma seqüência lógica somente com informações
diretas, já no segundo exemplo da média utilizamos cálculo e exibimos o resultado do
mesmo.
Página 11
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
3.3 EXERCÍCIOS
1) Construa um diagrama de blocos que :
•
•
•
•
Leia a cotação do dólar
Leia um valor em dólares
Converta esse valor para Real
Mostre o resultado
2) Desenvolva um diagrama que:
•
•
•
•
Leia 4 (quatro) números
Calcule o quadrado para cada um
Somem todos e
Mostre o resultado
3) Construa um algoritmo para pagamento de comissão de vendedores de peças,
levando-se em consideração que sua comissão será de 5% do total da venda e que você
tem os seguintes dados:
•
•
•
•
Identificação do vendedor
Código da peça
Preço unitário da peça
Quantidade vendida
E depois construa o diagrama de blocos do algoritmo desenvolvido, e por fim faça um
teste de mesa.
Página 12
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
4 Constantes, Variáveis e Tipos de Dados
Variáveis e constantes são os elementos básicos que um programa manipula. Uma
variável é um espaço reservado na memória do computador para armazenar um tipo de
dado determinado.
Variáveis devem receber nomes para poderem ser referenciadas e modificadas quando
necessário. Um programa deve conter declarações que especificam de que tipo são as
variáveis que ele utilizará e as vezes um valor inicial. Tipos podem ser por exemplo:
inteiros, reais, caracteres, etc. As expressões combinam variáveis e constantes para
calcular novos valores.
4.1 Constantes
Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante
a execução de um programa. Conforme o seu tipo, a constante é classificada como
sendo numérica, lógica e literal.
Exemplo de constantes:
P1 + P2 + P3 + P4
4
CONSTANTE
4.2 Variáveis
Variável é a representação simbólica dos elementos de um certo conjunto. Cada variável
corresponde a uma posição de memória, cujo conteúdo pode se alterado ao longo do tempo
durante a execução de um programa. Embora uma variável possa assumir diferentes valores,
ela só pode armazenar um valor a cada instante
Exemplos de variáveis
VARIÁVEL
VARIÁVEIS
TOTAL = PRODUTO * QUANTIDADE
CONTEÚDO
DA VARIÁVEL
NOME = “JOSÉ”
IDADE = 50
Página 13
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
4.3 Tipos de Variáveis
As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas,
caracteres, Alfanuméricas ou lógicas.
Numéricas
Específicas para armazenamento de números, que posteriormente
poderão ser utilizados para cálculos. Podem ser ainda classificadas
como Inteiras ou Reais.
As variáveis do tipo inteiro são para armazenamento de números
inteiros e as Reais são para o armazenamento de números que
possuam casas decimais.
Caracteres
Específicas para armazenamento de conjunto de caracteres que não
contenham números (literais). Ex: nomes.
Alfanuméricas Específicas para dados que contenham letras e/ou números. Pode em
determinados momentos conter somente dados numéricos ou
somente literais. Se usado somente para armazenamento de números,
não poderá ser utilizada para operações matemáticas.
Lógicas
Armazenam somente dados lógicos que podem ser Verdadeiro ou
Falso.
4.4 Declaração de Variáveis
As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também
são classificadas como sendo numéricas, lógicas e literais.
4.5 EXERCÍCIOS
1) O que é uma constante? Dê dois exemplos.
______________________________________
______________________________________
______________________________________
______________________________________
2) O que é uma variável? Dê dois exemplos.
______________________________________
______________________________________
______________________________________
Página 14
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
3) Faça um teste de mesa no diagrama de bloco abaixo e preencha a tabela ao lado com os
dados do teste:
INICIO
RECEBE
SALÁRIO
RECEBE
ABONO
SALÁRIO
ABONO
600,00
60,00
SALNOVO
350,00
150,00
SALNOVO = SALÁRIO + ABONO
MÉDIA
FIM
4) Sabendo-se que José tem direito a 15% de reajuste de salário, complete o diagrama
INICIO
NOME = “JOSÉ”
SALÁRIO ATUAL =
1.200,00
REAJUSTE =
VALORREAJUSTE =
SALNOVO =
SALNOVO
FIM
Página 15
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
5 Operadores
Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e
avaliamos dados dentro do computador. Temos três tipos de operadores:
• Operadores Aritméticos
• Operadores Relacionais
• Operadores Lógicos
5.1 Operadores Aritméticos
Os operadores aritméticos são os utilizados para obter resultados numéricos. Além da
adição, subtração, multiplicação e divisão, podem utilizar também o operador para
exponenciação.
Os símbolos para os operadores aritméticos são:
OPERAÇÃO
Adição
SÍMBOLO
Subtração
Multiplicação
Divisão
Exponenciação
+
*
/
^
Hierarquia das Operações Aritméticas
1º
2º
3º
4º
( ) Parênteses
Exponenciação
Multiplicação, divisão (o que aparecer primeiro)
+ ou – (o que aparecer primeiro)
Exemplo
TOTAL = PRECO * QUANTIDADE
1 + 7 * 2 ^ 2 –1 = 28
3 * (1 – 2) + 4 * 2 = 5
5.2 Operadores Relacionais
Os operadores relacionais são utilizados para comparar String de caracteres e números.
Os valores a serem comparados podem ser constantes ou variáveis.
Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False)
Para estabelecer prioridades no que diz respeito a qual operação executar primeiro,
utilize os parênteses.
Página 16
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Os operadores relacionais são :
DESCRIÇÃO
Igual a
RESULTADO
=
Diferente de
<> ou #
>
<
>=
<=
Maior que
Menor que
Maior ou igual a
Menor ou igual a
Exemplo:
Tendo duas variáveis A = 5 e B = 3
Os resultados das expressões seriam:
EXPRESSÃO
A=B
A <> B ou A # B
A>B
A<B
A >= B
A <= B
RESULTADO
Falso
Verdadeiro
Verdadeiro
Falso
Verdadeiro
Falso
Símbolo Utilizado para comparação entre expressões
Campo com
Constante Numérica
Campo com Campo
Sim
Sim
Codigo = CodAnt
Codigo > 1000
Não
Não
Campo com Constante
Alfanumérica
Sim
Nome = “JOSÉ”
Não
Página 17
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
5.3 Operadores Lógicos
Os operadores lógicos servem para combinar resultados de expressões, retornando se o
resultado final é verdadeiro ou falso.
Os operadores lógicos são:
E
AND
OR
NOT
OU
NÃO
E / AND Uma expressão AND (E) é verdadeira se todas as condições forem
verdadeiras
OR / OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição for
verdadeira
NOT
Um expressão NOT (NÃO) inverte o valor da expressão ou condição, se
verdadeira inverte para falsa e vice-versa.
A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos
(AND, OR e NOT)
Tabela Verdade
1º Valor
T
T
F
F
T
T
F
F
T
F
Operador
AND
AND
AND
AND
OR
OR
OR
OR
NOT
NOT
2º Valor
T
F
T
F
T
F
T
F
Resultado
T
F
F
F
T
T
T
F
F
T
Exemplos:
Suponha que temos três variáveis A = 5, B = 8 e C =1
Os resultados das expressões seriam:
A=B
A#B
A>B
A<B
A >= B
A <= B
Expressões
AND
OR
NOT
AND
OR
NOT
B>C
B<C
B>C
B=C
Página 18
Resultado
Falso
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Falso
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
5.4 EXERCÍCIOS
1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se as
expressões são verdadeiras ou falsas.
SALARIO
100,00
200,00
300,00
IR
0,00
10,00
15,00
SALLIQ
100,00
190,00
285,00
EXPRESSÃO
(SALLIQ >= 100,00)
(SALLIQ < 190,00)
SALLIQ = SALARIO - IR
V ou F
2) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas.
a) (A + C) > B
b) B >= (A + 2)
c) C = (B – A)
d) (B + A) <= C
e) (C + A) > B
(
(
(
(
(
)
)
)
)
)
3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras ou
falsas.
a) (A > C) AND (C <= D)
b) (A + B) > 10 OR (A + B) = (C + D)
c) (A >= C) AND (D >= C)
(
(
(
)
)
)
Página 19
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
6 Operações Lógicas
Operações Lógicas são utilizadas quando se torna necessário tomar decisões em um
diagrama de bloco.
Num diagrama de bloco, toda decisão terá sempre como resposta o resultado
VERDADEIRO ou FALSO.
Como no exemplo do algoritmo “CHUPAR UMA BALA”. Imaginemos que algumas
pessoas não gostem de chupar bala de Morango, neste caso teremos que modificar o
algoritmo para:
“Chupar uma bala”
• Pegar a bala
• A bala é de morango?
• Se sim, não chupe a bala
• Se não, continue com o algoritmo
• Retirar o papel
• Chupar a bala
• Jogar o papel no lixo
Exemplo: Algoritmo “Chupar Bala” utilizando diagrama de Blocos
INICIO
PEGAR A BALA
Não
É DE
MORANGO
Sim
RETIRAR O PAPEL
NÃO CHUPAR A BALA
CHUPAR A BALA
JOGAR O PAPEL NO LIXO
FIM
Página 20
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
6.1 EXERCÍCIOS
1) Elabore um diagrama de blocos que leia um número. Se positivo armazene-o em A, se
for negativo, em B. No final mostrar o resultado.
2) Ler um número e verificar se ele é par ou ímpar. Quando for par armazenar esse valor
em P quando for ímpar armazená-lo em I. Exibir P e I no final do processamento.
3) Construa um diagrama de blocos para ler uma variável numérica N e imprimi-la
somente se mesma for maior que 100, caso contrário imprimi-la com o valor zero.
4) Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um
algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas:
Para homens: (72.7*h) - 58
Para mulheres: (62.1*h) - 44.7
(h = altura)
5) Faça um teste de mesa do diagrama apresentado abaixo, de acordo com os dados
fornecidos:
INICIO
LER SALBASE
LER GRATIF
SALBRUTO = SALBASE + GRATIF
IR = SALBRUTO * (20 / 100)
Não
SALBRUTO
< 1000
SALLIQ = SALBRUTO - IR
SALLIQ
FIM
Página 21
Sim
IR = SALBRUTO * (15 / 100)
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Teste o diagrama com os dados abaixo
SALBASE
3.000,00
1.200,00
500,00
GRATIF
1.200,00
400,00
100,00
Memória
SALBASE
GRATIF
SALBRUTO
Dados de Saída
SALLIQ
Página 22
IR
SALLIQ
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Página 23
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
7 Estrutura de Decisão e Repetição
Como vimos no capítulo anterior em “Operações Lógicas”, verificamos que na maioria
das vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões
interferem diretamente no andamento do programa. Trabalharemos com dois tipos de
estrutura. A estrutura de Decisão e a estrutura de Repetição.
7.1 Comandos de Decisão
Os comandos de decisão ou desvio fazem parte das técnicas de programação que
conduzem a estruturas de programas que não são totalmente seqüenciais. Com as
instruções de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma
ou outra maneira, de acordo com as decisões lógicas tomadas em função dos dados ou
resultados anteriores. As principais estruturas de decisão são: “Se...Fim Se”,
“Se...Senão...Fim Se” e “Faça Caso...Fim Caso”
7.1.1 SE...FIMSE / IF...ENDIF
A estrutura de decisão “SE” normalmente vem acompanhada de um comando, ou seja,
se determinada condição for satisfeita pelo comando SE então execute determinado
comando.
Imagine um algoritmo que determinado aluno somente estará aprovado se sua média for
maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria.
SE MEDIA >= 5.0 ENTÃO
ALUNO APROVADO
FIM SE
Comando entre [Colchetes] não
são obrigatórios.
Em Visual FoxPro
IF MEDIA >= 5 [THEN]
Resultado = “ALUNO APROVADO”
ENDIF
7.1.2 SE...SENÃO...FIMSE / IF...ELSE...ENDIF
A estrutura de decisão “SE/SENÃO”, funciona exatamente como a estrutura “SE”, com
apenas uma diferença, em “SE” somente podemos executar comandos caso a condição
seja verdadeira, diferente de “SE/SENÃO” pois sempre um comando será executado
independente da condição, ou seja, caso a condição seja “verdadeira” o comando da
condição será executado, caso contrário o comando da condição “falsa” será executado
Em algoritmo ficaria assim:
SE MÉDIA >= 5.0
ALUNO APROVADO
SENÃO
ALUNO REPROVADO
FIM SE
Em Visual FoxPro
IF MEDIA >= 5
Resultado = “ALUNO APROVADO”
ELSE
Resultado = “ALUNO REPROVADO”
ENDIF
Página 24
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
No exemplo anterior está sendo executada uma condição que, se for verdadeira, executa
o comando “APROVADO”, caso contrário executa o segundo comando “REPROVADO”.
Podemos também dentro de uma mesma condição testar outras condições. Como no
exemplo abaixo:
SE MEDIA >= 5
SE MEDIA >= 7.0
Aluno APROVADO
SENÃO
Aluno Necessita fazer outra Avaliação
FIM SE
SENÃO
Aluno REPROVADO
ENDIF
Em Visual FoxPro
IF MEDIA >= 5
IF MEDIA >= 7.0
Resultado = “Aluno APROVADO”
ELSE
Resultado = “Aluno Necessita fazer outra Avaliação”
ENDIF
ELSE
Resultado = “Aluno REPROVADO”
ENDIF
7.1.3 FAÇA CASO / DO CASE
A estrutura de decisão FAÇA CASO é utilizada para testar, na condição, uma única
expressão, que produz um resultado, ou, então, o valor de uma variável, em que está
armazenado um determinado conteúdo. Compara-se, então, o resultado obtido no teste
com os valores fornecidos em cada cláusula “Caso”.
No exemplo do diagrama de blocos abaixo, é recebido uma variável “Op” e testado seu
conteúdo, caso uma das condições seja satisfeita, é atribuído para a variável Resultado
a String “Opção X”, caso contrário (OTHERWISE) é atribuído a string “Opção Errada”.
Página 25
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
INICIO
RESULTADO = “ ”
RECEBE Op
Sim
Op = 1
RESULTADO = “OPÇÃO 1”
Não
Sim
Op = 2
RESULTADO = “OPÇÃO 2”
Não
Sim
Op = 3
RESULTADO = “OPÇÃO 3”
Não
Não
Sim
Op = 4
RESULTADO = “OPÇÃO 4”
RESULTADO = “OPÇÃO ERRADA”
RESULTADO
FIM
Página 26
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Em Visual FoxPro utilizamos a seguinte seqüência de comandos para representar o
diagrama anterior.
Em Visual FoxPro
RESULTADO = “ ”
OP = 0
@ 10,10 SAY “DIGITE A OPÇÃO : ” GET OP
READ
DO CASE
CASE OP = 1
RESULTADO = “OPÇÃO 1”
CASE OP = 2
RESULTADO = “OPÇÃO 2”
CASE OP = 3
RESULTADO = “OPÇÃO 3”
CASE OP = 4
RESULTADO = “OPÇÃO 4”
OTHERWISE
RESULTADO = “OPÇÃO ERRADA”
ENDCASE
? RESULTADO
7.1.4 EXERCÍCIOS
1) João Papo-de-Pescador, homem de bem, comprou um microcomputador para
controlar o rendimento diário de seu trabalho. Toda vez que ele traz um peso de peixes
maior que o estabelecido pelo regulamento de pesca do estado da Bahia (50 quilos)
deve pagar um multa de R$ 4,00 por quilo excedente. João precisa que você faça um
diagrama de blocos que leia a variável P (peso de peixes) e verifique se há excesso. Se
houver, gravar na variável E (Excesso) e na variável M o valor da multa que João deverá
pagar. Caso contrário mostrar tais variáveis com o conteúdo ZERO.
2) Elabore um diagrama de bloco que leia as variáveis C e N, respectivamente código e
número de horas trabalhadas de um operário. E calcule o salário sabendo-se que ele
ganha R$ 10,00 por hora. Quando o número de horas exceder a 50 calcule o excesso de
pagamento armazenando-o na variável E, caso contrário zerar tal variável. A hora
excedente de trabalho vale R$ 20,00. No final do processamento imprimir o salário total e
o salário excedente.
3) Desenvolva um diagrama que:
•
•
•
•
Leia 4 (quatro) números;
Calcule o quadrado de cada um;
Se o valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize;
Caso contrário, imprima os valores lidos e seus respectivos quadrados.
Página 27
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
4) Faça um diagrama de bloco que leia um número inteiro e mostre uma mensagem
indicando se este número é par ou ímpar, e se é positivo ou negativo.
5) A Secretaria de Meio Ambiente que controla o índice de poluição mantém 3 grupos de
indústrias que são altamente poluentes do meio ambiente. O índice de poluição aceitável
varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 1º grupo são intimadas
a suspenderem suas atividades, se o índice crescer para 0,4 as industrias do 1º e 2º
grupo são intimadas a suspenderem suas atividades, se o índice atingir 0,5 todos os
grupos devem ser notificados a paralisarem suas atividades. Faça um diagrama de bloco
que leia o índice de poluição medido e emita a notificação adequada aos diferentes
grupos de empresas.
6) Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das
seguintes categorias:
Infantil A = 5 a 7 anos
Infantil B = 8 a 11 anos
Juvenil A = 12 a 13 anos
Juvenil B = 14 a 17 anos
Adultos = Maiores de 18 anos
7) Construa um algoritmo que leia 5 valores inteiros e positivos e:
• Encontre o maior valor
• Encontre o menor valor
• Calcule a média dos números lidos
Página 28
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Página 29
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
7.2 Comandos de Repetição
Utilizamos os comandos de repetição quando desejamos que um determinado conjunto
de instruções ou comandos sejam executados um número definido ou indefinido de
vezes, ou enquanto um determinado estado de coisas prevalecer ou até que seja
alcançado.
Trabalharemos com modelos de comandos de repetição:
• Faça Enquanto , processar (Do While ...);
• Para ... Até ... Seguinte (For ... To ... Next)
7.2.1 Faça Enquanto (Do While ...)
Neste caso, o bloco de operações será executado enquanto a condição x for verdadeira.
O teste da condição será sempre realizado antes de qualquer operação.
Enquanto a condição for verdadeira o processo se repete. Podemos utilizar essa
estrutura para trabalharmos com contadores, banco de dados, etc.
Exemplo de Contador
Nr = 0
Faça Enquanto Nr <= 100
Nr = Nr + 1
Mostre Nr
Fim Faça
Em Visual FoxPro :
Nr = 0
Do While Nr <= 100
Nr = Nr + 1
? Nr
EndDo
Para abandonar uma sequência DO WHILE,
você deve emitir o comando EXIT.
Para retornar ao início da sequência DO
WHILE, você deve emitir um comando
LOOP.
7.2.2 Para...Até...FimPara (For...To...EndFor)
Neste caso, o bloco de operações será executado a quantidade exata de vezes que a
instrução solicitar.
Enquanto a variável for menor ou igual à condição, o processo se repete. Podemos
utilizar essa estrutura para trabalharmos com contadores, funções, etc.
Exemplo de Contador
Para Nr = 1 até 100
Mostre Nr
FimPara
Em Visual FoxPro :
Para abandonar uma sequência FOR, você
deve emitir o comando EXIT.
For Nr = 1 to 100
? Nr
EndFor
Para retornar ao início da sequência FOR,
você deve emitir um comando LOOP.
Página 30
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
7.2.3 EXERCÍCIOS
1) Faça um algoritmo que determine o maior entre N números. A condição de parada é a
entrada de um valor 0, ou seja, o algoritmo deve ficar calculando o maior até que a
entrada seja igual a 0 (ZERO).
2) Uma rainha requisitou os serviços de um monge e disse-lhe que pagaria qualquer
preço. O monge, necessitando de alimentos , indagou à rainha sobre o pagamento, se
poderia ser feito com grãos de trigo dispostos em um tabuleiro de xadrez, de tal forma
que o primeiro quadro deveria conter apenas um grão e os quadros subseqüentes , o
dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o serviço fosse
executado, sem se dar conta de que seria impossível efetuar o pagamento. Faça um
algoritmo para calcular o número de grãos que o monge esperava receber.
3) Faça a tabuada de 1 a 50 de um determinado número informado pelo usuário.
4) Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10 emita uma
mensagem :
“Múltiplo de 10”.
5) Faça a tabuada de 1 até Y de um determinado número informado pelo usuário, onde
Y também será um número fornecido pelo usuário.
Página 31
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Página 32
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
8 Funções e Procedures
Em muitos programas, certas rotinas são repetidas com freqüência. Definir as rotinas
comumente utilizadas como funções separadas reduz o tamanho e a complexidade do
programa e facilita a sua manutenção.
Função é um cálculo pré-programado que pode ser efetuado mediante solicitação a
partir de qualquer ponto em um programa do Visual FoxPro. Visto que uma função
pega um ou mais argumentos e retorna um valor único, ela pode ser incorporada a
uma expressão. As funções contêm parênteses que as diferenciam dos comandos. Por
exemplo, DATE() é uma função. As funções podem ser do Visual FoxPro ou definidas
pelo usuário.
Argumento
Um valor sobre o qual uma função opera. Por exemplo, na instrução do Visual Foxpro
SPACE(10) o número 10 é o argumento.
Expressão
É qualquer combinação de variáveis, operadores, constantes, funções, nome de
campos, controles e propriedades que resulta em um valor único.
Função Definida pelo Usuário (UDF)
Código criado por um usuário que retorna um valor. Funções definidas pelo usuário
incluem programas independentes salvos com a extensão .PRG, bem como
procedimentos e funções contidos em um programa.
Comando FUNCTION
Identifica o início de uma definição para uma função definida pelo usuário.
Sintaxe
FUNCTION NomeFunção
Comandos
[RETURN [eExpressão]]
ENDFUNC
Argumentos
NomeFunção
caracteres.
No Visual FoxPro, os nomes de função podem ter até 254
Comentários
FUNCTION NomeFunção é uma instrução dentro de um programa. Designa o
início de uma função em um programa e identifica a função pelo nome.
FUNCTION NomeFunção é seguido de uma série de comandos do Visual
FoxPro que compõem a função. Você pode incluir RETURN em qualquer lugar
da função para retornar controle ao programa de chamada ou a outro
programa e para definir um valor retornado pela função definida pelo usuário.
Se você não incluir um comando RETURN, um RETURN implícito é
automaticamente executado quando a função é fechada. Se o comando
RETURN não incluir um valor de retorno (ou se um RETURN implícito for
executado), o Visual FoxPro atribuirá .T. (Verdadeiro) como valor de retorno.
Página 33
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
A função é finalizada com o comando ENDFUNC. Esse comando é opcional, a
função é fechada quando encontra outro comando FUNCTION, um comando
PROCEDURE ou o final do arquivo de programa.
Os comentários podem ser colocados na mesma linha depois de FUNCTION e
ENDFUNC. Esses comentários são ignorados durante a compilação e a
execução do programa.
Você não pode incluir um código de programa executável normal em um
arquivo de programa depois de utilizar as funções definidas pelo usuário;
somente funções definidas pelo usuário, procedimentos e definições de classe
podem seguir o primeiro comando FUNCTION ou PROCEDURE no arquivo.
Quando você emite DO com um nome de função, o Visual FoxPro procura a
função em uma ordem específica, da forma a seguir:
1. O Visual FoxPro procura no arquivo que contém o comando DO.
2.
Caso a função não seja encontrada ali, o Visual FoxPro procura nos
arquivos de procedimentos abertos. Os arquivos de procedimentos são abertos
com SET PROCEDURE.
3. Caso a função não seja encontrada em um arquivo de procedimentos
aberto, o Visual FoxPro procura nos programas da seqüência de execução. Os
arquivos de programa são procurados desde o último até o primeiro programa
executado.
4. Caso a função ainda não tenha sido encontrada, o Visual FoxPro procura
um programa independente. Se um arquivo de programa correspondente for
encontrado, o programa é executado. Caso contrário, o Visual FoxPro gera
uma mensagem de erro.
A cláusula IN deve ser incluída em DO para executar uma função em um
arquivo específico.
Como padrão, os parâmetros são passados para as funções por valor. Para
obter informações sobre a passagem de parâmetros para funções por
referência, consulte SET UDFPARMS. É possível passar no máximo 27
parâmetros para uma função. Os parâmetros podem ser passados para uma
função incluindo uma instrução PARAMETERS ou LPARAMETERS na função
ou colocando uma lista de parâmetros imediatamente depois de FUNCTION
NomeFunção. Coloque a lista de parâmetros entre parênteses e separe os
parâmetros com vírgulas.
8.1 Funções mais utilizadas
O Visual Foxpro dispõe de milhares de funções. Existem funções que utilizamos mais
comumente para tratarmos as informações, elas são muito importantes para
convertermos os dados. Vamos dar uma olhada em algumas delas.
UPPER() - Retorna a expressão de caracteres especificada em maiúscula.
LOWER() - Retorna a expressão de caracteres especificada em minúscula.
ALLTRIM() - Remove os espaços em branco do início e do final da expressão de
caracteres especificada e retorna a expressão com os espaços removidos como uma
seqüência de caracteres.
LTRIM() - Retorna a expressão de caracteres especificada sem os espaços à
esquerda.
Página 34
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
RTRIM() - Retorna a expressão de caracteres especificada sem os espaços à direita.
SUBSTR() - Retorna uma seqüência de caracteres da expressão de caracteres ou
campo de dados fornecido.
STR() - Retorna o equivalente de caractere de uma expressão numérica especificada.
VAL() - Retorna um valor numérico de uma expressão de caracteres composta de
números.
DATE() - Retorna a data do sistema atual, que é controlada pelo sistema operacional.
DATETIME() - Retorna a data e a hora atuais como um valor de DataHora.
DTOC() - Retorna uma data tipo Caractere a partir de uma expressão Data ou
DataHora.
CTOD() - Converte uma expressão de caracteres em uma expressão de data.
DAY() - Retorna o número do dia do mês para uma dada expressão de data ou de data
e hora.
MONTH() - Retorna o número do mês de uma expressão de Data ou de DataHora
especificada.
YEAR() - Retorna o ano de uma data específica ou de uma expressão de data e hora.
CDOW() - Retorna o dia da semana de uma determinada expressão de data ou de data
e hora.
CMONTH() - Retorna o nome do mês de uma determinada expressão de data ou Data
Hora.
DOW() - Retorna um valor numérico de dia da semana a partir de uma expressão de
Data ou DataHora.
INT() - Retorna um valor inteiro de uma expressão numérica.
MOD() - Retorna um valor decimal de uma expressão numérica.
Página 35
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9 Bancos de Dados
Os dados manipulados até o momento, estavam em memória, ou seja, após a execução do
diagrama os dados se perdiam. Para resolver esse problema começaremos a trabalhar com
arquivos, onde poderemos guardar os dados e também manipula-los.
9.1 O que é um gerenciador de Banco de Dados
Gerenciador de Banco de Dados é uma ferramenta que utilizamos para informações, e
que nos permite de forma prática e lógica, posteriormente acessar e/ou atualizar tais
informações.
Podemos fazer uma analogia para compreendermos melhor um Banco de Dados, se
compararmos com os tradicionais armários de fichários. Tais armários possuem em
cada uma das suas fichas um item cadastral pode ser de qualquer tipo, como uma
ficha de funcionários, foto de um associado, descrição de uma conta bancária, cadastro
de uma peça em estoque, entre outras milhares de informações que podem ser
guardadas em um formato de uma ficha.
Cada cadastro é um arquivo de dados. Quando possuímos vários arquivos de dados
relacionados por assuntos entre si, então possuímos um banco de informações. A este
banco de informações atribuímos o termo Banco de Dados.
O Visual Foxpro é um sistema gerenciador de Banco de Dados (SGBD) Relacional.
Onde podemos criar vários arquivos de dados relacionados entre si. Como operações
de apoio a manipulações destas informações, o VFP oferece ao usuário a possibilidade
deste criar seus próprios arquivos de dados, bastando detalhar o que este deseja
guardar, organizar automaticamente por ordem crescente ou decrescente as
informações cadastradas, pesquisas de itens dentro dos seus cadastros com respostas
rápidas e precisas independente do volume (quantidade) de informações que este
arquivo de dados possui. Relatórios com cálculos podem ser confeccionados pelos
próprios usuários.
9.2 Banco de dados e seus componentes
Antes de começarmos a trabalhar com VFP devemos conhecer alguns conceitos
relacionados ao SGBD. Tais informações são as seguintes :
Arquivo /
Tabela
Os arquivos de dados podem ser criados pelo próprio usuário e
todos devem possuir um nome. Neste arquivo de dados é que serão
armazenadas as fichas (registro). O que será guardado dentro do
arquivo de dados dependerá exclusivamente do que for especificado
durante as especificações do layout dos registros (fichas).
Registro
Podemos fazer uma analogia dos registros de um arquivo de dados
como sendo as fichas do arquivo. Estas fichas possuem sempre o
mesmo layout. Este layout é a lista de itens (campos) que estes
podem reter em termos de preenchimento.
Campo
Campo é cada item independente do registro que preenchemos. A
lista do campo é o que forma o layout do registro. Cada campo
possui um “nome descritivo” (como endereço, estado, cep, etc...),
tamanho de preenchimento e tipo de preenchimento. O tamanho de
cada campo a ser preenchido está relacionado ao tipo da informação
que será armazenada.
Página 36
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.2.1 Tipo de dados
Decidir quais informações devem ser gravadas em uma tabela é apenas metade da
batalha no planejamento da estrutura de uma nova tabela. Depois, você precisa
analisar cada item de dados e determinar se você deve armazena-lo como character
(alfabético), numeric (numérico), date (de data), ou algum outro tipo de dados. Além
disso, para campos alfabéticos e numéricos, você precisa determinar o número de
caracteres exigidos.
Você começa com a análise dos tipos de dados disponíveis no Visual Foxpro 7.0
Character
Character (alfabético) é o tipo de dados mais comum em muitas tabelas. Esses
campos armazenam de uma a 254 caracteres. Eles consistem em caracteres que
podem ser impressos, incluindo letras, números, espaços e marcas de pontuação.
Cartos caracteres, tais como “ENTER”, não podem aparecer em um campo alfabético
regular. Você tem que definir campos que exigem mais caracteres, como os campos
memo.
Campos alfabéticos têm um tamanho fixo. Se você definir um campo tal como
“endereço” com 35 caracteres, ele consome 35 caracteres em cada registro, mesmo se
“endereço” corresponder a “Rua do Perdiz, 15”. Embora isso possa parecer trivial, a
diferença de 5 caracteres em um arquivo de registro de 300.000 é superior a 1.4MB.
por outro lado, se “endereço” exigir mais que 35 caracteres, o VFP irá armazenar
somente os primeiros 35, e truncar o restante.
Você pode até usar campos alfabéticos que consistem integralmente em números. Por
exemplo, você deve armazenar códigos postais, números de telefone, etc... como
campos alfabéticos. Há várias razões para isso. Primeiro, campos numéricos truncam
zeros à esquerda. Desse modo, se você gravar um código postal como 01995, o VFP o
armazenaria como 1995. Segundo, você pode desejar formatar um campo de número
de telefone como 0(74)31-532-1010. Por ultimo, você pode precisar combinar um
campo como “CÓDIGO” de um cliente com o “Nome” do cliente.
Talvez a melhor forma de determinar se você deve criar um campo alfabético é
perguntar, “Vou fazer cálculos com esse campo ?” se você responder que sim, então
deve armazena-lo como numérico. Caso contrário, armazene-o como alfabético.
Currency
Para armazenar valores em moeda tipo Real, Dólar, Euro, etc... utilize um tipo especial
denominado Currency. Como um valor máximo, ele pode armazenar pouco mais de
US$ 922 trilhões. Padrões de moeda até o máximo de quatro casas decimais.
Valores de moeda variam de – 222.337.203.477,5807 até 922.337.203.477,5807.
Date e DateTime
Estes dois tipos de campo são semelhantes no aspecto em que ambos armazenam
dados. Eles exigem 8 bytes para armazenar dados na forma DDMMYYYY
independentemente de o SET CENTURY estar ativado (ON) ou desativado (OFF). Os
campos DateTime usam 6 bytes adicionais para armazenar a hora no formato
HHMMSS com HH registrado por um relógio de 24 horas. Se você converter um campo
Date em um campo DateTime, a hora assume o valor padrão de 00:00:00.
Dica : Você pode indicar um registro que possua um campo DateTime, com a data e a
hora atual através da função DATETIME().
A datas variam de 01/01/100 a 31/12/9999, e as horas de 00:00:00 a 23:59:59.
Página 37
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Da mesma forma que você pode incluir 1 em um campo Date para incrmentá-lo em um
dia, pode incrementar um campo DateTime em segundos. Como há 86.400 segundos
em um dia, você precisa incluir 86.400 em um campo DateTime para incrementá-lo em
um dia.
Double
Campos Double (duplos) são campos de ponto flutuante que aramazenam até 18
dígitos em um formato compactado que usa extremamente 8 bytes. Na mesma
realidade, independente da quantidade de dógitos que você utilize, o número de bytes
permanece fixo em 8. A única decisão que você toma é sobre o número de casas
decimais.
Valores duplos vão de –4,94065648541247E-324 a 1,79769313486232E+308.
Float e Numeric
Esses dois tipos de campo oferecem suporte a até 20 dígitos com um máximo de 19
casas decimais, e cada dígito exige 1 byte de armazenamento. O Visual Foxpro trata
os dois tipos de forma idêntica, o que resulta no mesmo nível de precisão. No entanto,
é necessário que os dois campos mantenham compatibilidade com o dBase IV, o que
faz diferença entre eles.
Ao contrário dos campos Double, você pode especificar o número de bytes exigidos por
Float e Numeric, pois o Visual Foxpro armazena o código ASCII para cada dígito em
um byte separado. Assim, se um valor de campo sempre usa valores inteiros menores
que 100.000, uma largura de campo de 6 com 0 casas decimais é o suficiente. Para
definir melhor o tamanho de um campo numérico, tente determinar os maiores e
menores valores possíveis. Definir um campo com um tamanho muito pequeno para os
valores armazenados força o Visual Foxpro o armazenar asteriscos no campo.
Valores de flutuação variam de -.9999999999E-19 a .9999999999
Atenção : Se você armazenar o resultado de um cálculo em um campo com um
número fixo de casas decimais, o Visual Foxpro trunca o valor para adaptar-se à
definição do campo. Isso pode prejudicar a precisão do valor. Cálculos subseqüentes
com esse campo truncado pode levar a erros de arredondamento aparentes.
Dica : Ao definir campos, lembre-se de que valores negativos precisam de uma
posição para armazenar o sinal de menos.
Logical
Campos Logical (lógico) armazenam informações binárias na forma .T. (trueverdadeiro) ou .F. (false-falso). Campos Logical armazenam informações com apenas
dois estados, tais como tributável versus não-tributável, entregue versus não-entregue,
e assim por diante.
Memo
Campos Memo armazenam grandes strings de caracteres (maiores que 254
caracteres), e também fornecem uma área de armazenamento variável por registro
com base no tamanho do bloco. Um bloco é um número fixo de caracteres que o Visual
Foxpro reserva para um campo memo. Por padrão, o Visual Foxpro usa 64 bytes por
bloco. Isso significa que cada grupo de 64 caractres em um string de texto exigem um
bloco adicional. Se você tiver um string de 72 bytes, para os 8 bytes adicionais, é
necessário um segundo bloco de 64 caracteres.
Página 38
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
O Visual Foxpro armazena campos memo em um arquivo diferente do DBF com a
extensão FTP. Independente de haver uma campo memo ou vários em uma tabela, ele
armazena todos os memos nesse arquivo FTP.
Utilizações típicas para campos Memo :
9
9
9
Campos alfabéticos que apenas ocasionalmente contêm texto.
Campos alfabéticos com grandes variações no comprimento ou cujo
comprimento não possa ser previsto.
Arquivos de texto como currículos, cartas, etc...
General
A utilização mais comum para campos General (gerais) é o armazenamento de
imagens gráficas. Um campo general é um campo Memo específico. O Visual Foxpro
armazena um campo general no mesmo arquivo FTP usado por outros campos Memo
em uma tabela, mas você não pode usa-lo da mesma forma. Sua principal função é
armazenar referências a objetos OLE vinculados.
9.3 Criação de um Arquivo de Dados
Para criarmos um arquivo de dados no Visual FoxPro podemos proceder de duas
formas.
Através do comando CREATE TABLE
Utilizando a ajuda do Visual Foxpro
Página 39
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Através do menu NEW
Acessar o menu FILE e escolher a opção NEW ou CTRL+N
Salve o arquivo como CLIENTES.DBF
Crie uma tabela com a seguintes estrutura :
Nome do Campo
Tipo
Tamanho
Decimais
Field Name
CODCLI
NOME
ENDERECO
CIDADE
ESTADO
CEP
CREDITO
DATACAS
VALORCRED
FOTO
OBS
Type
Character
Character
Character
Character
Character
Character
Logical
Date
Numeric
General
Memo
Width
5
30
30
15
2
8
1
8
12
4
4
Dec
2
9.3.1 – Inserindo os primeiros registros
Quando terminarmos de especificar a estrutura do
arquivo, o Visual Foxpro perguntará se desejamos
inserir os registros.
Neste ponto do trabalho podemos começar a
cadastrar os nossos clientes. Quando
terminarmos
de
cadastrar
o
primeiro,
imediatamente surgirá uma ficha em branco
fazendo uma rolagem vertical no interior da
janela.
Para os campos tipo character, numeric, logical
e date você deve pressionar <ENTER> ao final
de cada digitação. Se você preencher, esta automaticamente salta para o próximo campo.
Para os campos memo e general, você deve clicar duas vezes sobre o campo ou posicionar o
cursor sobre o campo e pressionar as teclas <CTRL><HOME>. Nesses dois tipos especiais de
campo você notará que se abrirá uma janela onde poderá inserir as informações.
Memo : O campo memo, na verdade é editado na forma de um texto, onde você pode ainda
escolher o tipo de letra, utilizando o menu FORMAT e escolhendo a opção FONT.
General : Este tipo de dado deve ser editado a partir de outras ferramentas que estejam
devidamente instaladas no WINDOWS, como o WORD, EXCEL, PAINTBRUSH e outros
aplicativos que suportam o implemento do OLE. Para editar este campos você deve acessar o
menu EDIT e escolher a opção INSERT OBJECT. Você deve escolher qual o tipo de Objeto
considerando que, cada ferramenta produz um trabalho diferente a partir de uma lista de
utilitários que está instalada em seu disco.
Para encerrar a edição destes dois campos, que são editados em uma janela especial, basta
que você pressione <CTRL><W> para salvar e fechar automaticamente ou <ESC> para
descartar.
Página 40
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.3.2 – Modificação da estrutura do Arquivo de Dados
A qualquer momento do nosso trabalho podemos sentir a necessidade de incluirmos ou
mesmo excluirmos alguns campos da estrutura de nossa tabela. Para isso devemos
utilizar o comando MODIFY STRUCTURE ou através do controle Data Session.
9.3.3 – Como listar os dados na tela
Ao retornar à caixa de comandos podemos realizar consultas simples utilizando o
comando LIST.
Exemplo :
LIST <ENTER>
Lista todos os campos dos registros do banco de dados.
LIST NOME, ENDERECO, ESTADO <ENTER>
Lista somente o nome, endereço e estado dos clientes cadastrados.
Página 41
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.3.4 – Como abrir e fechar uma tabela
Para abrir uma tabela você deve utilizar o comando USE <nome do arquivo>.
Exemplo :
USE “C:\CURSO VFP\CLIENTES.DBF” IN 0
Dica : quando o caminho de diretório contiver caracteres especiais é
necessário colocar o caminho e nome do arquivo entre aspas.
Para fechar uma tabela você deve selecionar a tabela desejada e emitir o comando
USE.
Exemplo :
Procure na ajuda pelo comando
USE e preste bem atenção no
termo ALIAS, é muito importante.
SELECT CLIENTES
USE
O controle Data Session faz tudo isso interativamente, acostume-se a utiliza-lo.
9.4 EXERCÍCIOS
1) Criar um arquivo de dados PRODUTOS.DBF seguindo a estrutura a seguir.
CODMAT C
DESCRICAO
PRECO
QUANTIDADE
DTULTVEND
OBS
5
C
N
N
D
M
30
12
5
2
2) Inserir os registros abaixo :
CODMAT
50145
34890
45609
90345
89899
55748
6546
2544
15544
2544
2447
1444
14555
DESCRICAO
LAPIS DE COR
BORRACHA
CANETA TINTEIRO
CADERNOS
LIVROS INFANTIS
PAPEL COM PALTA
CADEIRA
MOCHILA
AGENDA INFANTIL
CARTOLINA
CANETA AZUL
CANETA VERMELHA
APAGADOR
PRECO
10,00
3,00
1,50
5,50
60,40
2,00
70,56
40,32
14,00
3,20
1,70
1,80
3,50
QUANTIDADE DTULTVEND
100
01/05/02
50
02/06/02
500
31/03/02
1000
15/12/01
0
08/06/01
1900
05/04/02
3500
06/03/02
25
01/08/01
2552
24/08/02
25543
07/04/01
232
06/03/00
25
07/02/02
32
22/02/02
OBS
memo
memo
memo
memo
memo
memo
memo
memo
memo
memo
memo
memo
memo
3) Modifique a estrutura da tabela incluindo o seguinte campo :
QUANTMIN
Numeric 5
4) Preencha o campo QUANTMIN de todos os registros.
5) Liste todos os materiais na tela.
6) Liste todos os materiais na tela, porém somente os campos CODMAT,
DESCRICAO e PRECO.
7) Liste todos os materiais na tela, porém somente os campos CODMAT,
DESCRICAO, PRECO e VALOR TOTAL.
8) Liste todos os materiais na tela, porém somente os campos CODMAT,
DESCRICAO, QUANTIDADE e QUANTIDADE A RESSUPRIR
Página 42
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.5 – Comando BROWSE
O comando BROWSE é um dos comandos mais antigos e eficientes de todos os
comandos do Xbase. Ao longo dos anos, ele passou de um mero comando que exibia
tabelas como se fossem planilhas para um comando capaz de criar aplicativos
totalmente funcionais. Apesar de Toda essa mudança e maior complexidade, os
usuários que utilizam o Visual Foxpro como um gerenciador de banco de dados ainda
podem contar com o BROWSE como uma ferramenta eficaz e de fácil utilização para
acessar e tratar dados de registros específicos.
Abrir uma janela Browse pode ser tão fácil quanto executar um comando ou selecionar
um item do menu do Visual Foxpro. Além disso, em muitos parâmetros, o BROWSE
será a única ferramenta de que você irá precisar diariamente para acessar e manter
suas tabelas. A interface de fácil uso e no estilo de planilhas permite usar as
conhecidas teclas de deslocamentos em segundo plano, ao passo que a tecnologia de
banco de dados fundamental do Visual Foxpro fornece recursos de velocidade e
pesquisa mais avançados. Cada coluna representa um campo da tabela, e todas as
células em uma determinada coluna devem conter o mesmo tipo de dados. Além disso,
cada linha dessa exibição no estilo de planilhas corresponde a um registro na tabela
que você está pesquisando.
Sintaxe
BROWSE
[FIELDS ListaCampos]
[FOR lExpressão1 [REST]]
[FREEZE NomeCampo]
[LAST]
[NOAPPEND]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLGRID] [NORGRID]
[TITLE cTextoTítulo]
Argumentos
FIELDS ListaCampos - Especifica os campos exibidos na janela Pesquisar. Os campos
são exibidos na ordem especificada em ListaCampos. Você pode incluir campos de
outras tabelas relacionadas na lista de campos. Quando um campo de uma tabela
relacionada é incluído, antes do nome dele, deve ser colocado o alias de tabela e um
ponto.
Se você omitir FIELDS, todos os campos da tabela serão exibidos na ordem em que
aparecem na estrutura da tabela.
FOR lExpressão1 - Especifica uma condição pela qual somente registros para os quais
lExpressão1 é verdadeira são exibidos na janela Pesquisar.
Inclua FOR para mover o ponteiro do registro até o primeiro registro que corresponda à
condição. Inclua REST para manter o ponteiro do registro na sua posição atual.
FREEZE NomeCampo - Permite que sejam feitas alterações somente em um campo
da janela Pesquisar. Este campo é especificado com NomeCampo. Os demais campos
são exibidos e não podem ser editados.
LAST - Salva qualquer alteração na configuração feita na aparência de uma janela
Pesquisar
NOAPPEND - Impede que o usuário adicione registros à tabela pressionando as teclas
CTRL+Y ou selecionando Incluir registro no menu Tabela
Página 43
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
NODELETE - Impede que os registros sejam marcados para exclusão de dentro de
uma janela Pesquisar.
NOEDIT | NOMODIFY - Impede que um usuário modifique a tabela. NOEDIT e
NOMODIFY são idênticas. Se você incluir qualquer uma destas cláusulas, poderá
pesquisar ou percorrer a tabela, mas não poderá editá-la.
TITLE cTextoTítulo - Substitui o alias ou o nome de tabela padrão exibido na barra de
título da janela Pesquisar pelo título especificado com cTextoTítulo. Caso contrário, o
nome ou o alias da tabela que está sendo pesquisada será exibido na barra de título.
Comentários
Se você pressionar ESC para sair da janela Pesquisar, as alterações feitas no último
campo modificado serão descartadas. No entanto, se você mover para outro registro
após modificar um campo, as alterações feitas nele serão salvas.
A lista de campos pode especificar qualquer combinação de campos ou campos
calculados.
A sintaxe da lista de campo é:
Um campo calculado contém dados somente para leitura criados com uma
expressão. Esta pode ter qualquer forma, mas deve ser do Visual FoxPro.
O formato da instrução que você utiliza para criar um campo calculado é o
seguinte:
NomeCampoCalculado = eExpressão
Este exemplo cria um campo calculado chamado location:
BROWSE FIELDS localizacao = ALLTRIM(cidade) + ', ' + pais
9.5.1 - Exercícios
1) Editando todos os registros de um arquivo.
USE CLIENTES
BROWSE
2) Editando somente campos (colunas) declaradas na clausula FIELDS.
BROWSE FIELDS NOME,ENDERECO,ESTADO,CEP
3) Editando somente os registros em que os clientes são paulistas.
BROWSE FOR ESTADO = ‘SP’
4) Editando os dados quando clientes forem do estado de São Paulo, porém somente os
campos nome e estado.
BROWSE FIELDS NOME, ESTADO FOR ESTADO = ‘SP’
5) Editando três colunas, porém congelando a navegação do cursor em apenas uma coluna.
BROWSE FIELDS NOME,ENDERECO,FOTO,ESTADO FREEZE ENDERECO.
6) Editando os dados somente para consultas
BROWSE NOESDIT
Página 44
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.6 – Ponteiro de Registros
Ponteiro de registro é uma posição lógica onde o usuário se encontra trabalhando
dentro do arquivo. Quando acessando Browse navegamos pelos registros existe uma
mensagem que nos diz em qual registro do banco de dados estamos aditando
(posicionado). Esta mensagem seria a cláusula RECORD: n1/n2 (onde n1 é o numero
seqüencial do registro que o usuário está posicionado, e n2 é o numero total de
registros em uma tabela.
A clausula RECORD: 1/5 indica a posição do usuário dentro do arquivo e a quantidade
de registros existentes, respectivamente.
Independentemente de que o seu arquivo de dados possua 1, 100, 1000 ou 10000
registros, você está sempre em apenas um dos registros desse arquivo. A esta posição
dá-se o nome de ponteiro (cursor). Este ponteiro fica apontado para o registro que você
está trabalhando, mesmo que você abandone o Browse.
Comando GO | GOTO - Move o ponteiro do registro para o número de registro
especificado.
Exemplos :
GO 4 – Vai para o registro número 4
GOTO 99 – Vai para o registro número 99
GO TOP – Vai para o primeiro registro da tabela
GO BOTTOM – Vai para o ultimo registro da tabela.
BOF() – Begin of File - Determina se o ponteiro do registro está posicionado no início
de uma tabela.
Utilize BOF( ) para testar uma condição de início do arquivo para uma tabela. BOF( )
retornará verdadeiro (.T.) se você tiver tentado mover o ponteiro do registro para uma
posição anterior ao primeiro registro da tabela.
EOF() – End of File – Determina se o ponteiro do registro está posicionado após o
último registro na tabela atual ou especificada.
EOF( ) retornará verdadeiro (.T.) se o ponteiro do registro alcançar o final do arquivo de
tabela (EOF). O final da tabela é alcançado quando o ponteiro do registro passa pelo
último registro da tabela.
9.7 - Funções e Comandos mais utilizados em banco de dados.
CALCULATE CNT() – Conta os registros de uma tabela.
CALCULATE AVG() – Calcula a média aritmética da expressão.
CALCULATE MAX() – Avalia um conjunto de expressões e retorna a expressão de
maior valor.
CALCULATE MIN() – Avalia um conjunto de expressões e retorna a expressão de
menor valor.
CALCULATE SUM() – Totaliza todos campos numéricos ou os especificados na tabela
atualmente selecionada.
RECNO( ) – Retorna o número do registro selecionado na janela Pesquisar ativa.
LOCATE – Procura seqüencialmente na tabela o primeiro registro correspondente à
expressão lógica especificada.
Página 45
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
APPEND BLANK – Adiciona um ou mais registros novos ao fim de uma tabela.
REPLACE – Atualiza os registros da tabela.
O REPLACE pode ser utilizado para alterar qualquer campo do arquivo de
dados.
Exemplos :
1 – Alterar o nome de um cliente.
REPLACE NOME WITH “JOÃO PEDRO DE ALCANTARA”
2 – Atualiza os preços de todos os produtos em 20%
REPLACE ALL PRECO WITH PRECO * 1.20
3 – Atualiza os preços em 5% dos produtos que começam com a letra “C”
REPLACE ALL PRECO WITH PRECO * 1.05 FOR DESCRICAO = “C”
DELETE – Marca registros para exclusão.
RECALL – Desmarca registros marcados para exclusão.
PACK – Remove de modo permanente todos os registros marcados para exclusão na
tabela atual e reduz o tamanho de um arquivo de Memo associado à tabela.
ZAP – Remove todos os registros de uma tabela, deixando apenas sua estrutura.
SET DELETE ON | OFF – Podemos utilizar o comando SET DELETE para
escondermos ou apresentarmos registros que estejam marcados para deleção,
simulando assim o comando PACK, mas sem apagar definitivamente os registros.
SET FILTER TO – Especifica uma condição que os registros da tabela atual devem
atender para serem acessíveis, ou seja, filtra os dados que serão disponibilizados.
Quando o SET FILTER for emitido, apenas os registros que satisfizerem a
condição especificada pela expressão lógica lExpressão estarão disponíveis na
tabela. Todos os comandos que acessam a tabela respeitam a condição SET
FILTER. Um filtro separado pode ser definido para cada tabela aberta.
A condição especificada por SET FILTER não será avaliada até que o ponteiro
do registro seja movido na tabela.
Emitir SET FILTER TO sem lExpressão desativa o filtro da tabela atual.
9.8 – Indexação de Arquivos
O Visual Foxpro possui um processo para ordenar os dados, que é conhecido como
“Arquivo de Índice”. Este arquivo de índice é diferente do arquivo de dados (.DBF), pois
este funciona como se fosse um gerente, que tem como responsabilidade cuidar da
ordenação dos registros do arquivo, a partir de um ou de vários outros campos do
arquivo.
Para criar um índice devemos modificar a estrutura da tabela e inserir os índices nos
campos desejados.
Página 46
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.8.1 – Comando SET ORDER
Uma tabela pode ter diversos arquivos de índices abertos simultaneamente. Mas,
apenas um arquivo de índice simples (.IDX) (o arquivo de índice controlador) ou uma
marca de um arquivo de índice composto (.CDX) (a marca controladora) determina a
ordem na qual os registros de uma tabela são exibidos ou acessados. SET ORDER
permite que você designe o arquivo ou marca de índice controladores.
Caso você queira visualizar seus registros na forma original de entrada no arquivo,
basta selecionar o arquivo e emitir o comando SET ORDER TO.
9.8.2 – Comando SEEK
Apresentamos anteriormente o comando LOCATE para localização rápida de registros
dentro de um arquivo de dados, necessário principalmente quando um arquivo de
dados possui muitos registros. Porém o Visual Foxpro possui outro comando mais
eficiente e veloz para a localização de registros em arquivos de dados, mas este
somente funciona em arquivos que estejam indexados (ordenados).
O comando SEEK procura na coluna em que se encontra ordenado pela expressão
que for declarada. Este comando sempre encontra o primeiro registro que coincidir com
a expressão. Quando o registro é encontrado, o ponteiro lógico de registro fica
posicionado neste arquivo, ficando como registro corrente.
LOCATE x SEEK
O comando SEEK somente pode ser utilizado por arquivos que possuem índices. Este
comando consome menos tempo nas pesquisas, ou seja, em menos tempo nos é
informado o resultado, se foi encontrado ou não o registro pesquisado.
O comando LOCATE pode ser utilizado em arquivo com ou sem índices, porém
apresenta uma característica negativa, pois em arquivo com um volume muito grande
de registros se torna demorado para finalizar a pesquisa.
Função FOUND() - Retornará verdadeiro (.T.) se LOCATE ou SEEK obtiver êxito.
Página 47
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
9.9 – Relacionamento entre arquivos
O Visual Foxpro é um gerenciador de arquivo de dados relacionais, ou seja, permite a
junção lógica de dois ou mais arquivos de dados, porém que possuam campos
relacionais entre si. Nos exercícios anteriores manipulamos um arquivo de dados sobre
materiais em estoque, de nome PRODUTOS.DBF
Imagine agora que pretendamos criar um arquivo de vendedores de nossa empresa, e
que cada vendedor é responsável pela promoção de alguns produtos. O
relacionamento de arquivos somente acontece quando os dois arquivos de dados
possuem informações em comum. Seria interessante que no momento que
estivéssemos pesquisando os produtos, pudéssemos também pesquisar as
informações sobre os vendedores que estivessem ligados a estes.
O arquivo de vendedores adotado pelo nosso exemplo terá a seguinte estrutura de
campos :
Devemos também fazer uma alteração em nossa tabela de PRODUTOS.DBF e incluir
o campo :
CODVEND
CHARECTER
5
A partir desse campo incluído (CODVEND) e o campo CODIGO do arquivo
VENDEDORES.DBF podemos unir os dois arquivos, porém é necessário preencher a
nova coluna da tabela PRODUTOS.DBF.
Comando SET RELATION – Estabelece um relacionamento entre duas tabelas
abertas.
Antes de estabelecer um relacionamento, uma tabela (a tabela pai) precisa ser
aberta e a outra tabela (a tabela filho) precisa ser aberta em uma outra Área de
trabalho.
As tabelas relacionadas possuem um campo comum. Por exemplo, vamos
supor que uma tabela chamada CLIENTES contenha as informações do
cliente. Ela tem campos para nome, endereço e um número de cliente
exclusivo. Uma segunda tabela chamada ORDEM contém as informações de
ordem de venda. Também possui um campo para o número do cliente,
juntamente com os campos para datas e informações de expedição.
SET RELATION relaciona essas duas tabelas nos seus campos comum — o
campo Número do cliente. Para definir a relação, a tabela filho deve ser
indexada no campo comum. Depois de definida a relação, sempre que você
Página 48
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
mover o ponteiro do registro para um registro com um determinado número de
cliente na tabela pai CLIENTES, o ponteiro de registro na tabela filho ORDEM
se move para o registro que tenha o mesmo número de cliente. Se não for
encontrado um registro correspondente na tabela filho, o ponteiro de registro
na tabela filho é posicionado no final da tabela.
Exemplo :
SELECT VENDEDORES
SET ORDER TO CODIGO
SELECT PRODUTOS
SET RELATION TO CODVEND INTO VENDEDORES ADDITIVE
10 – Relatórios
Uma das maiores vantagens de um programa de banco de dados relacional é a
possibilidade de criar relatórios que façam sentido. O Visual Foxpro oferece muitos
recursos eficientes para o trabalho com relatórios. Esses recursos permitem a você
criar relatórios elaborados e com um aspecto visual satisfatório. Apesar de o Visual
Foxpro facilitar a criação de uma relatório básico devido aos recursos inteligentes e
rápidos que oferece, você também pode incluir cálculos complexos e análises
detalhadas.
Aprenderemos os seguintes tópicos :
9
9
9
9
9
9
Como criar um relatório
Como incluir controle de relatório
Como visualizar e imprimir um relatório
Como incluir faixas de grupo, cabeçalhos e rodapés de página e faixas de titulo
e resumo.
Como incluir expressões complexas
Como visualizar variáveis nos relatórios
10.1 – Projeto de Relatórios
Antes de iniciar a criação de seu relatório, seria interessante fazer um esboço do
relatório em uma folha de papel. Assim, você saberá exatamente onde posicionar os
campos e quais elementos serão incluídos no projeto (um logotipo, por exemplo). Esse
procedimento é importante principalmente se você não tiver muita experiência com
Visual Foxpro ou com programas de banco de dados em geral.
Você cria um relatório do visual Foxpro no Report Designer.
Página 49
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
10.1.1 – Page Header
Nesta banda devemos escrever o que desejamos escrever no início de todas
as páginas, ou seja, o Cabeçalho do Relatório. Podemos escrever na banda
Page Header informações como nome da empresa, data e hora do relatório,
nomes das colunas (campos) que identificarão os dados a serem impressos,
entre outras.
10.1.2 – Detail
Nesta banda escrevemos normalmente o nome dos campos definidos na
estrutura da tabela. Não é obrigatório a impressão de todos os campos do
arquivo, e a ordem das colunas também pode ser definida.
10.1.2 – Page Footer
Nesta banda devemos escrevemos o que desejamos imprimir no final de todas
as páginas, ou seja, rodapé do relatório. Podemos escrever na banda Page
Footer informações como número da página, nome do relatório, etc...
10.2 – Barras de Ferramentas
Normalmente, a janela Report Designer irá apresentar a barra de ferramentas Report
Designer.
Report Controls – Controles de Relatório
Nas faixas report, o Visual Foxpro permite que você inclua vários tipos de controles nos
relatórios que contenham campos, rótulos, figuras e outros objetos de projeto como,
por exemplo, linhas, retângulos e retângulos arredondados. A principal finalidade
desses controles é proporcionar um maior controle sobre o projeto final e o aspecto
visual do relatório.
Color Palette – Paleta de Cores
A barra de ferramentas Color Palette permite a você alterar as
cores dos campos e dos controles no relatório.
Layout
A barra de ferramentas Layout torna mais fácil posicionar os controles exatamente
onde você deseja.
Página 50
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
10.3 – Especificação do Layout das Páginas
Podemos trabalhar com diversos formatos de formulários ou impressoras. Para
especificar estes parâmetros de trabalho obedecemos os seguintes procedimentos.
9
9
Acessar o menu File
Escolher a opção Page Setup
A partir da escolha desta opção podemos especificar informações referentes a layout
da página e informações referentes à impressora que iremos utilizar para imprimir o
nosso relatório.
10.4 – Bandas Opcionais
Além das três bandas principais de todos os
relatórios, você pode incluir duas bandas opcionais.
Estas bandas atendem a certas necessidades que
podemos encontrar no dia-a-dia, no trabalho de
confecção de relatórios.
10.4.1 – Title Band
Caso você marque esta opção, será criada, antes da banda Page Header a
banda Title (título). Tudo que for colocado nesta banda será impresso uma
única vez no início do relatório, independente do número de páginas em que
será quebrado o relatório. Caso você marque a opção New Page, será
destinada a primeira página do relatório somente para o que for colocado nesta
banda.
10.4.2 – Summary Band
Caso você marque esta opção, será criada, depois da banda Page Footer a
banda Summary (resumo). Tudo que for colocado nesta banda será impresso
uma única vez no final do relatório, independente do número de páginas em
que será quebrado o relatório.
Página 51
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
10.5 – Grupos de Registros
O Report Designer do Visual Foxpro possui um
recurso onde é possível agrupar registros,
separando-os por informações que estes possuem
em comum, a partir de um determinado campo.
Para criar grupos no relatório é necessário
primeiro escolher qual campo em que os registros
serão agrupados. Um detalhe importante é que o
arquivo de dados deve estar Indexado (ordenado)
pelo campo de agrupamento, no momento em que
o relatório for impresso.
Ao fechar a tela Data Grouping você retornará a
montagem do relatório. Você notará também que
existem as bandas que você criou. Estas bandas
correspondem ao que será impresso quando
houver mudança nos valores do grupo.
10.6 – Variáveis nos Relatórios
Para visualizar variáveis no relatório o Visual Foxpro dispõe de uma tela chamada
Report Variables, porém sugiro que não a utilize, é bem mais fácil definir sua variável
como pública no seu programa que ela ficará disponível no seu relatório.
Exemplo :
PUBLIC vNomeDaEmpresa
vNomeDaEmpresa = “EMPRESA ABC LTDA”
10.7 – Visualização do Relatório (Preview)
À medida que vamos criando nosso relatório podemos pedir ao Visual Foxpro que nos
forneça um preview do mesmo. A partir deste recurso é possível verificar como serão
impressos os nossos registros no papel da impressora.
REPORT FORM nomedorelatório PREVIEW
10.8 – Impressão do Relatório
Para imprimir um relatório devemos emitir o seguinte comando :
Verifique na
Ajuda a sintaxe
do comando
REPORT FORM
REPORT FORM nomedorelatório TO PRINT
10.9 – Dicas para Montagem Rápida de Relatórios
Para montar um relatório de forma quase que instantânea podemos utilizar o Data
Enviroment ou o Report Wizard.
Página 52
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
11 – Referências
9
Curso Básico de Lógica de Programação
Paulo Sérgio de Moraes, Abril de 2000
Unicamp – Centro de Computação – DSC
9
Foxpro Básico
Compucenter LTDA, 1993
9
Usando Visual Foxpro 3 for Windows
Editora Campus, 1996.
Considerações
Escrever uma apostila sobre Lógica de Programação, Banco de Dados e Relatórios foi um
grande desafio, levando-se em conta que este é meu primeiro trabalho na área de treinamento.
Tornar este curso dinâmico e interessante era o “X” da questão, por isso mesclamos a lógica
com inícios de programação, método que não é muito recomendado.
Depois do estudo deste material espero que você esteja apto a se iniciar em qualquer
linguagem de programação, possa criar pequenos bancos de dados e relatórios no seu
trabalho do dia-a-dia
Não pare por aqui, a programação poderá abrir seus horizontes e lhe trazer muitas
oportunidades.
Abraços,
Iurih Cherly Avelino Bezerra
Ello Consultoria
Página 53
Curso Básico de Lógica de Programação - Iurih Cherly A. Bezerra – ELLO CONSULTORIA
Página 54
Download

Lógica de Programação - Banco de Dados