Академический Документы
Профессиональный Документы
Культура Документы
2010
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
2010 IESDE Brasil S.A. proibida a reproduo, mesmo parcial, por qualquer processo, sem autorizao por
escrito dos autores e do detentor dos direitos autorais.
C331i
Roberto
ISBN: 978-85-387-0862-9
sumrio
sumrio
mrio
7
Programas de
computador, sistemas e profisses
7 | Linguagem de programao
8 | Programas e sistemas
11 | Desenvolvimento de sistemas
12 | Resumo
O que um algoritmo?
15
16 | Detalhando o algoritmo
18 | Fluxograma ou diagrama de bloco de dados
19 | Simbologia de fluxogramas
21 | Estruturas bsicas na programao
32 | Resumo
Variveis
47
47 | Constantes
47 | Atribuindo valores a variveis
48 | Operadores
56 | Resumo
Tipos de variveis
61
61 | Variveis numricas
63 | Variveis string
64 | Variveis data
66 | Variveis booleanas
68 | Consistncia de entrada de valores
69 | Variveis indexadas
73 | Resumo
Banco de dados
85
85 | Tabelas
86 | Manipulao de banco de dados
90 | Resumo
Layout de tabela
95
95 | Processando tabelas
97 | Lendo e gravando informaes
99 | Resumo
Ordenao de tabelas
109
121
Conceito de relatrio
133
145
Anexo
155
Programas de computador,
sistemas e profisses
Linguagem de programao
Programar elaborar a lgica e utiliz-la em uma linguagem de programao.
Linguagem de programao uma ferramenta composta por recursos,
comandos e instrues que, ao serem aplicados seguindo uma lgica de
raciocnio, do origem a diferentes programas e sistemas, com finalidades
diversas. As linguagens se dividem em dois grupos:
Com interface caracter so aquelas que no se utilizam de recursos
grficos como o do Windows. Exemplos: Cobol, Natural, CSP, C, Clipper, Fortran, Assembler, entre outras.
Com interface grfica aquelas que utilizam os recursos grficos do
Windows, como janelas, botes, imagens, e outros, consistindo em uma interface bem mais amigvel. Exemplos: JBuilder, Visual Basic.NET e ASP.NET,
SQL Windows, Visual C, Oracle Forms (e outros produtos Oracle), Access,
entre outras.
Programao, ento, envolve possuir lgica e conhecer uma linguagem
para aplic-la.
Assim, sabendo qual o objetivo a ser alcanado pelo programa que vamos
desenvolver, definimos a sequncia lgica de passos (ou instrues) para o
alcance desse objetivo e, ento, os escrevemos na linguagem escolhida. Procure sempre elaborar programas claros e eficientes, a fim de facilitar futuras
manutenes.
Programas e sistemas
Um sistema um conjunto de programas que interagem entre si, cada
um com sua finalidade especfica que, juntos, alcanam o objetivo proposto.
Assim, sabendo o objetivo a ser alcanado, por vezes, este poder consistir
em um sistema, j que formado por vrios objetivos menores, cada um
com seu prprio programa ou programas, mas que juntos alcanam a finalidade proposta.
Resumindo, programa uma unidade (que pode por vezes alcanar por
si s um objetivo) e sistema um conjunto de programas, cada um com sua
prpria finalidade, mas que juntos alcanam o objetivo principal: o sistema.
Analista de sistemas
Responsvel pelo levantamento de informaes sobre uma empresa a
fim de utiliz-las no desenvolvimento de um sistema para esta, ou ainda o
levantamento de uma necessidade especfica do cliente para desenvolver
um programa especfico com base nas informaes colhidas.
O levantamento realizado junto ao cliente ou usurio. So aplicadas,
ento, tcnicas de modelagem de dados para definir a estrutura da base de
dados necessria. Em seguida, o analista ir definir quais programas devero
ser elaborados, assim como os layouts de tela. De posse dessas informaes,
passa-as ao programador, que se encarregar de codificar os programas de
acordo com o levantamento realizado pelo analista.
Programador
Responsvel pelo desenvolvimento de programas em uma linguagem especfica, segundo as informaes levantadas pelo analista de
sistemas.
Analista programador
atualmente o profissional que rene em si todas as funes do analista
de sistemas e do programador. Ele faz todo o levantamento e definio (que
so tarefas do analista de sistemas), bem como tambm realiza a codificao
(tarefa do programador).
Administrador de redes
Responsvel pelo desenho fsico ou topologia da rede, instalao e suporte no sistema operacional de rede escolhido pela empresa (Windows ou
Linux), gerencia o acesso a outras redes (bancrias, fornecedores, clientes)
cuidando tambm de toda a segurana contra hackers.
10
Desenvolvimento de sistemas
Todos os profissionais ligados a desenvolvimento e manuteno de sistemas, utilizam obrigatoriamente uma srie de metodologias e ferramentas de
software que apoiam seu trabalho e ajudam na tomada de deciso. Esse estilo
de trabalho obedece a etapas bem definidas ou a um importante roteiro de
trabalho utilizado para a construo e implantao de um novo sistema.
Necessidade de Negcio
ESTRATGIA
ANLISE
PROJETO
CONSTRUO
DOCUMENTAO
USURIO
IMPLANTAO
PRODUO
Sistema Operacional
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
11
Estratgia (estudo da viabilidade): Identificao das deficincias atuais (caso existam) e dos objetivos a serem atingidos, para a elaborao
de um cronograma de atividades e de uma relao custo X benefcio
relativos s solues, a serem apresentados ao cliente ou usurio.
Anlise: Fase de levantamento da estrutura, funcionamento e necessidades do usurio, para criao de um modelo descritivo e funcional
que deixe claro, dentro das informaes levantadas, o que poderia ser
feito para solucionar o problema do cliente (ou seja, todo o mecanismo que pode ser criado a nvel de programao para atender necessidade do cliente). Esse modelo apresentado ao cliente, explicando
as solues propostas, juntamente ao cronograma de atividades e
relao custo X benefcio.
Projeto: Uma vez aprovada a proposta, com base em todo o levantamento anterior, ser ento iniciado o projeto. Nesse momento, sero
definidos os layouts de tela, os relatrios e tabelas necessrios ao sistema como um todo.
Construo (programao): Envolve a codificao e integrao dos
diferentes mdulos definidos na anlise e que compem o sistema.
Cada programa tambm testado isoladamente e em conjunto, utilizando-se as tabelas predefinidas, para verificar se o objetivo proposto
est sendo atingido.
Implantao: Compreende o cadastro inicial dos dados para o computador, treinamento dos usurios no novo sistema e seus mtodos
e o acompanhamento paralelo durante um tempo entre o novo sistema e o modelo antigo para verificao de possveis falhas (bugs) nos
programas e adaptao da empresa e seus usurios. Essa etapa se d
por encerrada aps a certificao de confiabilidade do sistema e da
adequao dos usurios a este.
Produo: Fase em que o antigo sistema abandonado e o atual passa a ser utilizado plenamente.
Resumo
Programas de computador so desenvolvidos baseados em uma lgica
de passos e procedimentos e seu objetivo pode ser o de compor com outros
12
um sistema. Um sistema de informao composto por um conjunto de programas individuais que foram planejados para funcionarem de forma integrada e harmoniosa, cumprindo um objetivo analisado e estabelecido por
um levantamento prvio. Para o seu desenvolvimento e manuteno existem tipos de profissionais variados que utilizam metodologias de trabalho e
softwares de apoio.
Atividades
1. O
que um programa com interface grfica?
2. Quais
as funes desempenhadas por um analista de sistemas?
3. O
que a fase de construo em um sistema?
4. Quais
as funes de um administrador de banco de dados (DBA)?
5. Para que serve a definio de estratgia no desenvolvimento de sistemas?
Gabarito
1. So os programas que utilizam os recursos grficos do Windows para
interagir com o usurio, como janelas, botes, imagens e outros, tornando o programa mais amigvel e agradvel ao usurio.
2. Ele responsvel pelo levantamento de informaes que sero utilizadas para o desenvolvimento de um sistema.
3. a fase em que so codificados e testados os programas que foram
definidos na fase de projeto do sistema.
4. Ele responsvel pelo gerenciamento e acesso das informaes contidas no banco de dados. Suas atribuies compreendem o controle
de acesso dos usurios, aplicaes, programas e sistemas ao banco e
tambm segurana e disponibilidade dessas informaes.
5. Serve para identificar as deficincias atuais e propor solues baseadas em novas aplicaes e sistemas a serem desenvolvidos para um
cliente ou usurio.
13
O que um algoritmo?
O que um algoritmo?
Detalhando o algoritmo
As etapas de um algoritmo podem ainda ser detalhadas.
Para entender melhor, vamos detalhar o exemplo anterior. Poderamos,
por exemplo, esmiuar a etapa Apertar os parafusos, substituindo-a por :
10. Apertar parafusos com a chave de rodas
11. Parafusos apertados?
No: Passo 10
O que um algoritmo?
17
O que um algoritmo?
1
2
3
O que um algoritmo?
Simbologia de fluxogramas
So smbolos utilizados na representao grfica de um fluxograma.
Assim como em outros setores, a computao necessita de smbolos para
representar um esquema de fluxo de dados ou um projeto de programao.
O objetivo dessa representao, como em outros setores, o de suporte
para a construo correta de programas e sua manuteno futura.
A computao criou e convencionou uma srie de smbolos, cada qual com
uma funo especfica e para facilitar sua consulta, alm de constar aqui, inserimos
todos em um anexo que est no final do livro.
TERMINAL
Utilizado para indicar incio e final (ou sada) de um programa
ou subrotina (programa acionado por um outro).
CONECTOR
Usado para os casos onde o fluxo
muito grande ou se faz necessrio particion-lo. Assim, colocamos o conector e, dentro deste,
uma letra. Quando reiniciamos
o fluxo, incluimos um conector
igual com a mesma letra, indicando onde este prossegue.
CONECTOR DE PGINA
Usado no mesmo caso anterior,
diferenciando-se apenas por
parte do fluxo ficar em uma pgina e parte em outra.
PROCESSO
Representa uma ao. Exemplos: atribuio de valores a variveis, clculos quaisquer, entre
outros.
PROCESSO PREDEFINIDO
a chamada de um outro programa, seja este uma sub-rotina ou uma funo (esta ltima
semelhante sub-rotina, porm retorna um valor ao programa que a acionou).
DECISO
til em situaes onde se faz
necessria uma comparao,
uma verificao ou ainda uma
tomada de deciso. Essas decises (como denominaremos)
retomam valores verdadeiros
ou falsos, realizando algumas
operaes especficas de acordo
com esse valor.
ENTRADA/SADA DE DADOS
Indica operaes de leitura ou
gravao de dados em tabelas,
bem como alguma operao
em impressora.
TECLADO
Representa a entrada de dados
pelo teclado.
ABERTURA/FECHAMENTO DE
TABELAS
Prepara uma tabela para processamento ou a fecha para encerrar a sua manipulao.
DISPLAY
Representa a exibio de dados
em tela (ou monitor).
19
O que um algoritmo?
Passo 3
4. Atravessar a rua
5. FIM
E agora, o fluxograma correspondente :
20
O que um algoritmo?
INCIO
VERIFICAR
O
TRFEGO
TRAVESSIA
SEGURA?
NO
AGUARDE A
PASSAGEM
DE VECULOS
SIM
ATRAVESSAR
A
RUA
FIM
21
O que um algoritmo?
Estrutura condicional
Nessa estrutura utilizamos o SE seguido de uma condio, muito usado
em nosso dia a dia. Veja a estrutura a seguir.
Portugus estruturado
SE <condio> ENTO
SENO
FIM SE
Fluxograma
NO
SIM
<condio>
condio
falsa
condio
verdadeira
Exemplo
Portugus estruturado
1. Incio
2. SE fizer sol no fim de semana ENTO
22
O que um algoritmo?
SENO
FIM SE
3. Fim
Fluxograma
Incio
NO
Fazer sol
SIM
no fim de
semana
Alugo alguns filmes
Fim
Loop
Tambm conhecido como lao ou rotina de repetio.
O loop uma srie de processos, comandos ou instrues que so executados seguidamente, por vrias vezes, at que a condio de controle do
loop deixe de ser atendida.
Na estrutura a seguir, o loop formado pelo <processo> (poderiam ser
vrios processos) que apenas ser executado se a <condio> de sua realizao for satisfeita. Ao terminar de executar o processo do loop, reavalia-se
a sua condio. Se ainda for satisfeita, o <processo> novamente ser executado, e assim sucessivamente, at que a <condio> deste no seja mais
satisfeita.
23
O que um algoritmo?
Portugus estruturado
Incio
ENQUANTO <condio>
<processo>
FIM ENQUANTO
Fim
Fluxograma
Abaixo temos a estrutura do loop no fluxograma.
<condio>
SIM
<processos>
NO
Outra maneira de trabalharmos com loop fazendo a verificao da condio no fim. Dessa forma podemos fazer com que um ou vrios processos
sejam executados at que determinada condio seja verdadeira, ou seja,
ele ir repetir os processos at que a condio seja satisfeita.
Portugus estruturado
Incio
FAZER
<processos>
AT <condio>
Fim
24
O que um algoritmo?
Fluxograma
<processos>
<condio>
NO
SIM
Exerccio 5
Desenvolver um fluxograma para o algoritmo do exerccio 1 (pendurar
um quadro na parede).
Exerccio 6
Desenvolver um fluxograma para o algoritmo do exerccio 2 (fritar um
ovo).
Exerccio 7
Elaborar um fluxograma para o algoritmo do exerccio 3 (enviar um
e-mail).
Exerccio 8
Elaborar um fluxograma que descreva as etapas necessrias para se realizar uma ligao telefnica qualquer.
25
O que um algoritmo?
Fluxograma
INCIO
NO
Se A1 ento
A2
Seno
A3
Fim-se
A4
SIM
A1
A3
A2
A4
FIM
26
O que um algoritmo?
Exerccio 9
Portugus estruturado:
Fluxograma:
Se B1 ento
A1
Fim-Se
C3
Exerccio 10
Portugus estruturado:
Fluxograma:
C1
Se C2 ento
C3
C4
C5
Seno
Se C6 ento
C7
C8
Seno
C9
Fim-Se
Fim-Se
C10
27
O que um algoritmo?
Exerccio 11
Portugus estruturado:
Fluxograma:
Se C1 ento
C2
C3
Se C4 ento
C5
C6
Se C7 ento
Se C8 ento
C9
Fim-Se
Fim-Se
Fim-Se
Fim-Se
Exerccio 12
Fluxograma:
Portugus estruturado:
INCIO
INCIO DA
VOLTA
FIM DA
VOLTA
20 VOLTAS?
NO
SIM
28
FIM
O que um algoritmo?
Exerccio 13
Fluxograma:
Portugus estruturado:
INCIO
ABRIR A URNA
TEM VOTO?
NO
TOTALIZAR URNA
SIM
LER VOTO
APURAR VOTO
FECHAR URNA
FINALIZAR
CONTAGEM
FIM
Exerccio 14
Portugus estruturado:
Fluxograma:
C1
Se C2 ento
C3
Se C4 ento
C5
C6
Seno
C7
Fim-Se
Seno
Se C8 ento
Se C9 ento
Se C10 ento
C11
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
29
O que um algoritmo?
Seno
C12
C13
Fim-Se
Fim-Se
Fim-Se
Fim-Se
C14
Exerccio 15
Portugus estruturado:
Fluxograma:
A1
Se A2 ento
A3
Se A4 ento
A5
Fim-se
Seno
A6
Se A7 ento
A8
Seno
Se A9 ento
A10
Seno
A11
A12
Fim-se
A13
A14
Fim-se
Fim-se
30
O que um algoritmo?
Exerccio 16
Portugus estruturado:
Fluxograma:
Se A1 ento
Se A2 ento
A3
A4
Seno
Se A5 ento
A6
Seno
A7
Fim-se
Fim-se
Fim-se
A8
Se A9 ento
A10
Se A11 ento
A12
Seno
A13
Fim-se
Fim-se
A14
31
O que um algoritmo?
Dicas
Quem planeja um programa com antecedncia, elaborando um fluxograma ou mesmo um algoritmo (portugus estruturado):
gasta menos tempo para escrever/codificar em alguma linguagem;
comete menos erros;
escreve programas mais elegantes (menores/bem estruturados);
facilita a futura manuteno (alterao);
gasta menos tempo de mquina.
Resumo
Algoritmo a base de qualquer lgica de programao. uma srie de
etapas, ou passos, dispostos em uma ordem lgica, a fim de solucionar um
problema, ou alcanar um determinado objetivo proposto. Da mesma forma,
cada programa deve atingir um objetivo. Por isso, cada programa tem uma
lgica, um algoritmo, uma srie de instrues a serem realizadas.
Fluxograma ou diagrama de dados a representao grfica de um algoritmo, onde podemos ter uma melhor viso sobre o que est acontecendo.
Sempre que finalizar um fluxograma, sua lgica deve ser testada para
avaliao, o que chamamos Teste de mesa ou Teste de programa.
Gabarito
Exerccio 1
Algoritmo:
1. INCIO
2. Providenciar prego e martelo
3. Escolher o local para o quadro
4. Pegar o prego e o martelo
32
O que um algoritmo?
Sim: Passo 8
No: Passo 6
8. Pendurar o quadro
9. FIM
Exerccio 2
Algoritmo:
1. INCIO
2. Providenciar ovo, frigideira, leo, sal, esptula, prato e fsforo
3. Riscar o fsforo
4. Acender a boca do fogo
5. Colocar a frigideira sobre a boca acesa
6. Colocar leo na frigideira
7. Quebrar delicadamente a casca do ovo
8. Despejar o contedo na frigideira
9. Colocar sal
10. Fritar o ovo
11. Ovo pronto?
Sim: Passo 12
No: Passo 10
33
O que um algoritmo?
Exerccio 3
Algoritmo:
1. INCIO
2. Providenciar e-mail de destino
3. Abrir o browser
4. Entrar no site que possui conta de e-mail
5. Informar login e senha
6. Clicar em Ok
7. Login e senha corretos?
Sim: Passo 8
No: Passo 5
8. Pedir para compor um novo e-mail
9. Informar o e-mail de destino
10. Informar o assunto
11. Digitar o corpo da mensagem
12. Pedir para enviar o e-mail
13. Fechar a conta de e-mail
14. Fechar o browser
15. FIM
Exerccio 4
Algoritmo:
1. INCIO
2. Pegar Disco 1, colocar no Pino B
3. Pegar Disco 2, colocar no Pino C
4. Pegar Disco 1, colocar no Pino C
34
O que um algoritmo?
35
O que um algoritmo?
A
36
O que um algoritmo?
Exerccio 5
Fluxograma:
INCIO
PROVIDENCIAR
PREGO E MARTELO
ESCOLHER O LOCAL
PARA O QUADRO
PEGAR PREGO E
MARTELO
POSICIONAR PREGO
NO LOCAL ESCOLHIDO
ATINGIR O PREGO
COM O MARTELO
PREGO
SEGURO?
NO
SIM
PENDURAR O QUADRO
FIM
37
O que um algoritmo?
Exerccio 6
INCIO
PROVIDENCIAR
OVO, FRIGIDEIRA,
LEO, SAL, ESPTULA,
PRATO E FSFORO
RISCAR O FSFORO
ACENDER A BOCA
DO FOGO
COLOCAR A FRIGIDEIRA
SOBRE A BOCA ACESA
COLOCAR LEO
NA FRIGIDEIRA
QUEBRAR DELICADAMENTE A
CASCA DO OVO
A
DESPEJAR O
CONTEDO NA
FRIGIDEIRA
COLOCAR O SAL
FRITAR O OVO
OVO PRONTO?
SIM
RETIRAR O OVO
DA FRIGIDEIRA
COM ESPTULA
COLOCAR O OVO
NO PRATO
FIM
38
NO
O que um algoritmo?
Exerccio 7
INCIO
Providenciar
e-mail de destino
Abrir o browser
E-mail de
destino
Login
Senha
Clicar em OK
NO
Login e senha
corretos?
SIM
Assunto
Mensagem
Enviar e-mail
Fechar a conta de
e-mail
Fechar o browser
A
FIM
39
O que um algoritmo?
Exerccio 8
A
INCIO
NO
SABE O
NMERO?
SIM
NO
ATENDEU?
SIM
PROCURAR NMERO
CONVERSAR
TIRAR O FONE
DO GANCHO
DESLIGAR
NO
SIM
FIM
DISCAR O NMERO
NO
EST CHAMANDO?
SIM
APERTAR
GANCHO
ESPERAR ATENDER
40
O que um algoritmo?
Exerccio 9
INCIO
SIM
B1
A1
NO
C3
FIM
Exerccio 10
INCIO
C1
SIM
C2
C3
NO
SIM
C8
C7
C4
C6
NO
C9
C5
C10
FIM
41
O que um algoritmo?
Exerccio 11
INCIO
SIM
C1
C2
C3
NO
SIM
C4
C5
C6
NO
SIM
SIM
C7
NO
C8
NO
FIM
Exerccio 12
1. INCIO
2. FAZER
3. Incio volta
4. Fim volta
5. AT 20 voltas
6. FIM
Exerccio 13
1. INCIO
2. Abrir a urna
3. ENQUANTO tem voto
Ler voto
Apurar voto
FIM ENQUANTO
42
C9
O que um algoritmo?
4. Totalizar urna
5. Fechar urna
6. Finalizar contagem
7. FIM
Exerccio 14
INCIO
C1
C2
SIM
C11
SIM
C10
NO
C9
NO
SIM
NO
SIM
SIM
C3
C4
C5
C6
NO
C8
C7
NO
C12
C13
C14
FIM
43
O que um algoritmo?
Exerccio 15
INCIO
A1
NO
A2
SIM
A6
NO
NO
A9
A7
SIM
A3
SIM
NO
A4
A8
A11
A10
A12
A13
A14
FIM
44
SIM
A5
O que um algoritmo?
Exerccio 16
INCIO
NO
SIM
A1
NO
NO
SIM
A2
SIM
A5
A7
A3
A6
A4
A8
NO
SIM
A9
A10
NO
A13
A11
SIM
A12
A14
FIM
45
Variveis
Uma varivel um meio de guardar um determinado valor em memria, valor esse a ser utilizado durante a execuo do programa, seja como
um contador, um controlador ou como um armazenamento temporrio de
algum dado ou informao imprescindvel ao seu programa que poder ser
posteriormente armazenado em algum arquivo.
Dependendo da necessidade, um programador cria ento uma varivel,
associando a esta um nome e um valor, sendo que esse ltimo pode ser alterado durante a execuo do programa.
Criada uma varivel, para manipular seu valor, basta referenciar o nome
dessa varivel.
Exemplo: varivel v_nome que contm o nome de um empregado.
Os nomes das variveis de um programa no podem conter
espaos, acentos ou caracteres especiais.
Constantes
Constante segue o mesmo conceito de varivel, diferenciando-se apenas
pelo fato de que mantm, durante toda a execuo do programa, o mesmo
valor.
Exemplo: constante c_hoje que contm a data de hoje, durante todo o
processamento.
Variveis
Exemplos:
v_nome = Joo
v_salario = 1000
Observando os exemplos anteriores podemos perceber que Joo est
entre apstrofo ( ) e que o valor 1 000 no est. Isso ocorre por se tratarem
de texto e nmero respectivamente.
Tipos de variveis/constantes
Tanto variveis quanto constantes podem assumir quatro tipos de valores. So eles:
Tipo de varivel
Caractersticas
Numrica
Caracter ou String
Data
Booleana
Varivel que apenas pode assumir dois valores: TRUE (verdadeiro) e FALSE (falso).
Operadores
Alm do operador de atribuio, temos, basicamente, trs tipos de
operadores:
Tipo de operadores
Caractersticas
Aritmticos
Relacionais
Lgicos
48
Variveis
Operadores aritmticos
Podemos realizar diversas operaes aritmticas com variveis numricas, para clculos de totais, subtotais, contagem, mdia, entre outros.
Para esses clculos, podemos utilizar vrios operadores :
Operao
Prioridade
Exponenciao
Multiplicao
Diviso
Adio
Subtrao
Operadores relacionais
Utilizados para comparaes condicionais ou de controle de loops. Temos,
nessa categoria, os seguintes operadores:
Sinal
Significado
Igual a
>
Maior que
<
Menor que
>=
Maior ou igual a
<=
Menor ou igual a
<>
Diferente
49
Variveis
situacao = APROVADO
SENO
situacao = REPROVADO
FIM SE
Imagine que o valor da varivel nota_final seja 5. Se assim for, ao avaliar
a condio,
SE nota_final > 7 ENTO
Vemos que a mesma no satisfeita, ou seja, 5 no maior que 7, logo o
retorno da condio FALSE. Portanto, a instruo realizada ser situacao =
REPROVADO.
Em outra situao, imagine que a varivel nota_final tenha o valor 9. Ao
avaliar a mesma condio, vemos que, dessa vez, ela satisfeita, logo retorna
TRUE. Nesse caso ser realizada a instruo situacao = APROVADO.
Chamamos os valores (TRUE e FALSE) de BOOLEANOS.
Exemplo:
Uma revendedora de automveis precisa de um programa que calcule o
percentual de comisso mensal de cada funcionrio. Suponhamos que nesse
programa, temos uma varivel de nome total_vendas que ir conter o valor
total das vendas realizadas por um determinado funcionrio, e que, com
base nesse valor, vamos determinar o novo percentual de comisso desse
funcionrio (varivel perc_com). Assim, caso total_vendas seja maior que
100000 perc_com ser de 10%. Caso contrrio no haver comisso.
SE total_vendas > 100000 ENTO
perc_com = 0.1
FIM SE
50
Variveis
Assim, elaboramos uma condio para verificar a situao pedida e realizar a devida instruo de alterao, caso a condio seja satisfeita.
Operadores lgicos
Com os operadores lgicos podemos tambm associar diversas condies (ou comparaes). Em nosso ltimo exemplo, verificamos apenas se
total_vendas > 100000, ou seja, necessrio que somente uma condio
seja satisfeita para que o funcionrio ganhe a comisso de 10%. (perc_com
= 0.1).
Com os operadores, podemos ento montar uma nica instruo onde
sejam avaliadas simultaneamente diversas condies. Para ligar (e tratar)
essas condies, iremos utilizar os operadores lgicos, que so: E e OU,
seguindo a seguinte estrutura:
<condio1> <operador lgico> <condio2>
O operador lgico E
utilizado quando queremos que as duas condies (tanto a anterior,
quanto a posterior ao operador) sejam, ambas, satisfeitas.
Dessa forma, as instrues dentro de um SE ou de um loop apenas sero
executadas caso o resultado final da expresso como um todo seja TRUE.
Para isso, todas as condies devem retornar esse mesmo valor.
Utilizando o exemplo anterior (o da revendedora de automveis), vamos
imaginar que agora para um funcionrio ganhar a comisso de 10% precise
ter um total de vendas entre 100 000 e 200 000.
Exemplo:
SE total_vendas > 100000 E
total_vendas < 200000 ENTO
perc_com = 0.10
FIM SE
51
Variveis
O operador lgico OU
utilizado quando queremos que uma das duas condies, ou ambas,
sejam satisfeitas.
Dessa forma, as instrues dentro de um SE ou de um loop apenas sero
executadas caso o resultado final da expresso como um todo seja TRUE.
Para isso, ao menos uma das condies deve retornar esse mesmo valor.
Exemplo:
SE cargo = Gerente OU cargo = Diretor ENTO
v_comissao = 0
SENO
v_comissao = 0.1
FIM SE
Variveis
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
Ou seja, ao utilizar o operador E, a expresso como um todo apenas retornar TRUE caso todas as condies envolvidas tambm retornem esse
mesmo valor.
Da mesma forma, tambm temos a tabela para o operador OU:
OPERADOR OU
TRUE
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
53
Variveis
colocarei blusa
Fim-Se
Nesse exemplo, apenas caso a temperatura baixe (nesse caso a condio
satisfeita, ou seja, retorna TRUE), realizarei as aes descriminadas entre a
clusula SE e FIM-SE, no caso, colocar a blusa.
Se a temperatura no baixar, significa que essa condio no satisfeita,
ou seja, seu retorno FALSE, de forma que, se assim for, no sero realizadas
as aes descriminadas entre a clusula SE e FIM-SE.
2) Se a temperatura baixar E chover ento
colocarei blusa
usarei guarda-chuva
Fim-Se
Nesse outro exemplo, temos duas condies: temperatura baixar e
chover. As aes compreendidas dentro da clusula SE apenas sero realizadas se ambas as condies forem satisfeitas, ou seja, ambas devero retornar TRUE para que as aes se realizem. Podemos visualizar isso tambm
atravs da Tabela Booleana abaixo:
Primeira condio:
temperatura baixar
Segunda condio:
chover
TRUE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
3)
colocarei blusa
usarei guarda-chuva
Fim-Se
54
Variveis
Esse exemplo semelhante ao anterior, mas estruturado com o operador lgico OU. Aqui, temos duas condies: temperatura baixar e chover. As
aes compreendidas dentro da clusula SE apenas sero realizadas se ao
menos uma das condies for satisfeita, ou seja, ao menos uma dever retornar TRUE para que as aes se realizem. Podemos visualizar isso tambm
atravs da Tabela Booleana abaixo:
Primeira condio:
temperatura baixar
Segunda condio:
chover
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
Exerccio 2
Preencha a Tabela de Deciso apresentada, considerando a seguinte expresso condicional:
Se a temperatura baixar E chover OU estiver atrasado ento
irei de carro
Fim-Se
Temperatura
baixar
Chover
Estiver atrasado
TRUE
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
Ir de carro
Exerccio 3
Elaborar o fluxograma para a seguinte proposta:
Solicitar o nmero de voltas em piscinas olmpicas em que uma pessoa
qualquer nadou.
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
55
Variveis
Resumo
Varivel: armazena um determinado valor em memria. Ao referenciar o
nome da varivel, possvel manipular seu contedo.
Constante: armazena, durante todo o processamento do programa, um
mesmo valor, com o qual foi inicializada.
Tipos de variveis/constantes: numrica, string, data, booleana.
O operador de atribuio de valores a variveis o sinal de igualdade
(=).
Temos ainda trs operadores:
Operadores aritmticos (+, , *, /, ^) usados em clculos;
Operadores relacionais (=, <>, <, <=, >, >=) usados em condies e
comparaes;
Operadores lgicos (E, OU) usados para criar expresses condicionais, formadas por vrias condies.
Operador lgico E: a expresso apenas retornar TRUE caso todas as
condies integrantes retornem esse mesmo valor.
Operador lgico OU: a expresso apenas retornar TRUE caso ao menos
uma das condies retorne esse valor.
56
Variveis
Gabarito
Exerccio 1
a) V_RES = 3 * 3 1 + 2
V_RES = 9 1 + 2
V_RES = 8 + 2
V_RES = 10
b) V_RES = 3 * (3 2)
V_RES = 3 * 1
V_RES = 3
c) V_RES = 32 3 * 1
V_RES = 9 3
V_RES = 6
d) V_RES = 3 * (2 / 2) + 1
V_RES = 3 * 1 + 1
V_RES = 3 + 1
V_RES = 4
Exerccio 2
Temperatura
baixar
Chover
Estiver atrasado
Ir de carro
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
57
Variveis
Exerccio 3
INCIO
QTDE = 0
QTDE
SIM
QTDE <= 20
NO
QTDE < 50
SIM
VOC EST EM
FORMA!
NO
VOC EST PRONTO
PARA COMPETIR!
FIM
58
Variveis
Exerccio 4
INCIO
V1 = 0
V2 = 0
V1, V2
SIM
V1 > V2
V1 + > + V2
NO
SIM
V2 > V1
V2 + > + V1
NO
V1 + = + V2
FIM
59
Tipos de variveis
Existem quatro tipos bsicos de variveis utilizados pelas modernas linguagens de programao. So eles: numricas; strings (ou cadeia de caracteres); data e booleanas.
Vamos entender cada um desses tipos.
Variveis numricas
Por vezes, em um programa, precisamos de variveis para armazenar nmeros, eventualmente utilizando-as em manipulaes numricas. Por exemplo, crio variveis numricas para armazenar resultados de clculos de forma
geral, ou para guardar um determinado valor numrico que solicitei ao meu
usurio.
Exemplo
Imagine que desejamos calcular o salrio final de um empregado, acrescido de um determinado percentual de aumento. Suponhamos que temos as
seguintes variveis (todas numricas):
v_salario (contendo o salrio do empregado).
v_percentual (contendo o percentual de aumento a ser aplicado sobre o salrio).
v_salario_final (que conter o resultado desse clculo, ou seja, o salrio j acrescido desse percentual).
Assim, para armazenar o resultado do clculo na varivel v_salario_final
poderamos utilizar a seguinte instruo:
v_salario_final = v_salario * (1 + v_percentual/100)
Tipos de variveis
Exemplo de aplicao
Objetivo: Elaborar um programa para exibir 10 asteriscos * na primeira
linha da tela, considerando que esta possui 80 colunas e 24 linhas. Elaborar o
algoritmo (com portugus estruturado) e o fluxograma correspondente.
Resoluo: Precisaremos controlar a posio em tela onde os asteriscos
sero colocados. Como essa posio a coordenada (linha, coluna), subentendemos que devemos controlar a linha e a coluna. Para isso, criamos duas
variveis numricas: L (para linha) e C (para coluna).
Portugus estruturado:
1. Incio
Fluxograma:
Incio
2. L = 1
L=1
C=1
C=1
3. Limpar tela
4. ENQUANTO C<11
Exibir (L,C) *
C=C+1
Limpar tela
SIM
C < 11
FIM ENQUANTO
5. Fim
(L,C)*
C = C+1
NO
Fim
Exerccio 1
Sabendo que a tela de seu monitor composta de 24 linhas e 80 colunas,
elabore algoritmo e fluxograma de um programa que exiba * em todas as
linhas da tela, sempre na primeira coluna de cada uma delas.
Exerccio 2
Elabore o fluxograma de um programa que solicite trs nmeros ao usurio, calcule a soma deles e exiba esse resultado em tela.
Exerccio 3
Elabore o fluxograma de um programa que solicite dois nmeros ao usurio, armazenando-os nas variveis A e B, e que calcule e apresente ao usurio, a seguir, o valor da varivel X, sendo X = B / A.
62
Tipos de variveis
Variveis string
Uma string nada mais do que uma cadeia de caracteres. comum, durante a manipulao de um programa, surgir a necessidade de manipular
uma frase ou um texto. Para isso, utilizamos a varivel string.
Exemplo 1
Imagine que desejamos armazenar em uma varivel a frase Tecle algo
para continuar... . Suponhamos que temos a seguinte varivel string:
v_instrucao (que conter o texto acima descrito).
Assim, para armazenar o texto nessa varivel, utilizaramos a seguinte
instruo:
v_instrucao = Tecle algo para continuar...
Exemplo 2
Imagine que, aps calculada uma mdia, voc precise exibi-la acompanhada do texto Mdia = . Suponha o uso das variveis:
v_vlrmedia (que contm a mdia j calculada).
v_texto (que conter o resultado acrescido do texto).
Assim, teramos a seguinte instruo:
v_texto = Mdia = + v_vlrmedia
Exemplo de aplicao
Objetivo: Elaborar um programa em que, sabendo a nota de um aluno
e que, para sua aprovao, a nota do mesmo dever pelo menos ser 6
(ou um valor maior), informe em tela a situao do aluno, se aprovado ou
reprovado.
63
Tipos de variveis
Portugus estruturado:
1. INCIO
Fluxograma:
Incio
2. nota = 0
3. situacao =
APROVADO
4. OBTER nota
NOTA = 0
SITUAO =
APROVADO
NOTA
SIM
NOTA < 6
SITUAO =
REPROVADO
NO
6. EXIBIR situacao
SITUAO
FIM
Fim
Variveis data
Por vezes, necessrio tambm armazenar uma data em uma varivel,
bem como manipul-la atravs de clculos. Com essa finalidade, utilizada a
varivel do tipo data. Com uma data, podemos realizar diversos clculos:
data + nmero = data onde o nmero equivale a dias que so adicionados data.
data nmero = data onde o nmero equivale a dias que so subtrados da data.
data data = nmero resulta no nmero de dias entre as duas datas.
64
Tipos de variveis
Exemplo 1
Imagine que desejamos armazenar em uma varivel a data de hoje acrescida de 30 dias. Suponhamos as seguintes variveis data:
v_hoje (que contm a data corrente).
v_data (que conter a data resultado).
Assim, para armazenar a data nessa varivel, utilizaramos a seguinte instruo :
v_data = v_hoje + 30
Exemplo de aplicao
Objetivo: Elaborar um programa em que seja solicitada uma data ao usurio, e que, em decorrncia, informe a data da semana seguinte (equivalente
ao mesmo dia da semana).
Portugus estruturado:
1. Incio
Fluxograma:
Incio
2. v_data =
3. obter v_data
4. v_data = v_data + 7
v_data =
v_data
5. Exibir v_data
6. Fim
v_data = v_data +7
v_data
Fim
65
Tipos de variveis
Variveis booleanas
So variveis que podem conter e armazenar apenas dois estados: TRUE
ou FALSE.
Exemplo
Imagine que desejamos armazenar em uma varivel booleana o valor
TRUE caso um certo nmero seja superior a 1 000. Suponhamos as seguintes
variveis:
v_numero (varivel numrica que contm o valor).
v_flag (varivel booleana que conter TRUE ou FALSE).
Assim, para proceder sua manipulao, utilizaramos a seguinte instruo:
v_flag = FALSE
Se v_numero > 1000 ento
v_flag = TRUE
Fim-Se
Exemplo de aplicao
Objetivo: Elaborar um programa em que seja solicitado um dado ao usurio, que ser exibido no final, apenas se caso esse dado tenha realmente sido
informado.
66
Tipos de variveis
Portugus estruturado:
1. Incio
Fluxograma:
Incio
2. v_nome =
flag = TRUE
v nome =
flag = TRUE
3. obter v_nome
4. SE v_nome = ENTO
v_nome
flag = FALSE
FIM SE
SIM
v nome =
flag = FALSE
NO
Exibir
`Seu nome + v_nome
flag = TRUE
FIM SE
6. Fim
SIM
Seu nome +
v nome
NO
Fim
Exerccio 4
Elabore um programa capaz de informar se o aluno est REPROVADO, de
EXAME ou APROVADO. O programa dever receber dois valores de entrada:
nota1 e nota2. Com base nessas duas notas, ele dever calcular a mdia aritmtica do aluno e, com a mdia calculada, dever verificar a situao deste,
seguindo o critrio abaixo:
Se a mdia calculada for maior ou igual a 5 ele est APROVADO.
Se a mdia for menor do que 5 e maior ou igual a 3 ele est de EXAME.
E se for inferior a 3 ele est REPROVADO.
O programa dever exibir como resultado as notas do aluno, a mdia
aritmtica e a situao.
67
Tipos de variveis
Exerccio 5
Elabore um programa que solicite o valor total da compra de um determinado cliente. Se o valor for superior a 500 reais, permitir parcelamento em
2 vezes, informando 2 parcelas, bem como o valor da parcela (0 e 30 dias).
Caso contrrio, informar Parcela nica, o valor e a data do pagamento.
68
Tipos de variveis
E, usando-as como base, informe a mdia resultante (soma das trs notas
dividido por 3). Consistir as notas, verificando se cada uma maior ou igual
a zero, caso contrrio exibir uma mensagem de erro.
Exerccio 7
Elabore um programa que solicite 25 dados cadastrais de candidatos com
nome, cidade e idade, consistindo como vlido apenas idade menor a 30.
Variveis indexadas
A varivel indexada tambm conhecida como array, matriz ou vetor.
A diferena bsica entre uma varivel simples e uma indexada que a
indexada , na realidade, formada por diversas variveis menores. Ou seja,
enquanto a varivel simples contm um nico valor, a indexada contm
diversos valores, cada um em uma posio diferente, a qual referenciamos
atravs de um nmero inteiro.
Ou seja, na varivel indexada tratamos diversos valores em posies diferentes (a posio 1 contm um valor, a 2 outro, e assim por diante), como
se fossem diversas variveis, com a diferena de que as referenciamos todas
com o mesmo nome e apenas as diferenciamos e identificamos atravs do
nmero de sua posio, que apresentamos entre parnteses logo aps o
nome da varivel.
Por exemplo:
VALOR 1
POSIO 1
VALOR 2
POSIO 2
VALOR 3
POSIO 3
.......
VALOR N
POSIO N
69
Tipos de variveis
V_SOMA = 0
V1 = 0
V2 = 0
V3 = 0
V4 = 0
V_SOMA =
V1 + V2 + V3 + V4
V3
V4
Desse modo, referenciamos 4 variveis diferentes e, para l-las, necessitaramos de 4 comandos individuais, um para cada varivel a ser tratada. Se
tivssemos 100 nmeros, imagine ento o tamanho do cdigo. S para ler as
variveis seriam necessrias 100 instrues.
70
Tipos de variveis
I < 11
SIM
VETOR(I)
I=I+1
NO
I=1
I < 11
SIM
V_SOMA =
V_SOMA +
VETOR (I)
I=I+1
NO
V_SOMA
FIM
71
Tipos de variveis
Assim, mesmo que lssemos milhares de variveis de entrada, para efetuar o clculo sobre estas, apenas realizaramos o loop apresentado anteriormente, que se repetiria at atingir o limite, indicado como condio do loop
(no exemplo anterior, 10), diminuindo o cdigo. Observe que o primeiro loop
solicita os dados e o segundo faz a soma.
Exemplo 2
Imagine que temos uma varivel indexada de nome ms e que contm:
Posio ou ndice
Elemento
(1)
Janeiro
(2)
Fevereiro
(3)
Maro
(4)
Abril
(5)
Maio
(6)
Junho
(7)
Julho
(8)
Agosto
(9)
Setembro
(10)
Outubro
(11)
Novembro
(12)
Dezembro
72
Tipos de variveis
Se i = 3 , ms(i) = Maro
Se i = 6, ms(i) = Junho
Exerccio 8
Elabore um programa que leia 20 valores numricos (um por vez) e apresente somente os positivos como sada (no considerar, como positivos, os
de valor zero).
Exerccio 9
Elabore um programa que leia 100 valores numricos. Ele deve contar e
apresentar a quantidade de valores positivos (considere tambm, como positivo, os iguais a zero) e a quantidade de valores negativos do conjunto.
Exerccio 10
Elabore um programa que leia 50 valores numricos e os exiba.
Exerccio 11
Elabore um fluxo que leia 100 valores numricos e exiba apenas aqueles
que forem < 100.
Resumo
Existem, basicamente, quatro tipos de variveis simples: numricas,
string, data e booleanas. Em um programa, aps o informe de variveis,
deve ser realizada a consistncia destas.
Alm das variveis citadas, existe ainda um tipo composto de varivel, ao
qual chamamos varivel indexada. Essa composta por diversos valores, os
quais so referenciados pela posio que ocupam (nmero inteiro).
73
Tipos de variveis
Gabarito
Exerccio 1
INCIO
L=0
C=0
LIMPAR TELA
A
NO
L < 25
FIM
SIM
(L, C) = *
L=L+1
Exerccio 2
INCIO
X=0
Y=0
Z=0
RES = 0
X, Y, Z
RES = X + Y + Z
A SOMA
RES
FIM
74
Tipos de variveis
Exerccio 3
INCIO
A=0
B=0
X=0
A, B
SIM
A=0
NO
X=B/A
O RESULTADO :
+X
FIM
75
Tipos de variveis
Exerccio 4
INCIO
NOTA_1 = 0
NOTA_2 = 0
MEDIA = 0
SITUACAO =
NOTA_1
NOTA_2
MEDIA =
(NOTA_1 + NOTA_2) / 2
NO
NO
SITUACAO =
EXAME
MEDIA
<3
MEDIA
>=5
SIM
SIM
SITUACAO =
APROVADO
SITUACAO =
REPROVADO
NOTA_1
NOTA_2
MEDIA
SITUACAO
FIM
76
Tipos de variveis
Exerccio 5
INCIO
V_TOTAL = 0
PARC = 0
DT1 =
DT2 =
SITUACAO =
V_TOTAL
NO
V_TOTAL
> = 500
SIM
SITUACAO =
PARCELA NICA
SITUACAO =
2 PARCELAS
PARC = V_TOTAL
PARC = V_TOTAL/2
DT1 = HOJE
DT1 = HOJE
DT2 = DT1 + 30
SITUACAO
PARCELA: + PARC
DATA (S): + DT1
+DT2
FIM
77
Tipos de variveis
Exerccio 6
INCIO
N_EX = 0
N_TEO = 0
N_PRAT = 0
MEDIA = 0
N_EX
N_TEO
N_PRAT
N_EX > = 0
E N_TEO > = 0
E N_PRAT > = 0
NO
VALOR(ES)
INVLIDO(S)!
SIM
MEDIA = (N_EX + N_
TEO + N_PRAT) / 3
MDIA: +
MEDIA
FIM
Exerccio 7
INCIO
Nome =
cidade =
idade = 0
n=0
nome, cidade,
idade
n = n+1
N
N
n = 25
idade<30
idade
FIM
78
Tipos de variveis
Exerccio 8
INCIO
NUM (20)
I=1
I = I+1
NUM (I)
SIM
I < = 20
INFORME O + I +
VALOR
NO
I=1
A
I < = 20
SIM
NO
SIM
NO
NUM (I)
FIM
I=I+1
79
Tipos de variveis
Exerccio 9
Notem que nesse programa existe uma chamada para um outro programa CALCULOS.
INCIO
POS = 0
NEG = 0
NUM (100)
I=1
I = I+1
NUM(I)
I <= 100
SIM
INFORME 0 + I +
VALOR
NO
I=1
I <= 100
SIM
CALCULOS
NO
POSITIVOS: + POS
NEGATIVOS: +NEG
80
FIM
Tipos de variveis
CALCULOS
NO
NEG = NEG + 1
SIM
POS = POS + 1
I=I+1
SADA
81
Tipos de variveis
Exerccio 10
Incio
valor = 0
n=0
valor
n = n+1
n > 50
valor
Fim
82
Tipos de variveis
Exerccio 11
Incio
V=0
n=0
valor
n = n+1
n = 100
N
N
V < 100
valor
Fim
83
Banco de dados
Um banco de dados (ou data base) tem a finalidade de armazenar as informaes de uma determinada empresa, bem como oferecer uma maneira
rpida e eficiente de recuperar esses dados.
Os bancos de dados oferecem recursos de segurana capazes de controlar e gerenciar o acesso dos usurios aos dados armazenados.
Internamente, um banco de dados formado por um conjunto de tabelas
( o chamado banco de dados relacional) que podem ser processadas pelo
computador atravs de uma aplicao ou sistema.
Tabelas
Uma tabela a base do chamado banco de dados relacional, que nada
mais do que uma coleo de tabelas relacionadas entre si. Onde cada
tabela representa uma entidade da empresa, como funcionrio, produto ou
cliente.
Uma tabela armazena os dados de uma forma organizada e de fcil compreenso. Em uma tabela temos linhas e colunas, onde suas linhas representam os registros e suas colunas representam os campos.
Assim, na tabela, cada linha um conjunto de valores (um por coluna)
que caracterizam uma determinada entidade.
Portanto, tabelas so estruturas de dados que os bancos de dados relacionais utilizam para armazenar e gerenciar os dados de uma certa entidade da
empresa. Alguns bancos de dados que trabalham com estruturas de tabelas
so: ORACLE e SQL SERVER.
Banco de dados
Sobrenome
Nome
Nr_dept
100
Palmeira
Orlando
10
310
Silva
Andr
15
210
Oliveira
Cleice
10
405
Barbosa
Ana
12
378
Gomes
Jos
25
Banco de dados
Sobrenome
Nome
Nr_dept
-------
-------
-------
-------
100
Palmeira
Orlando
10
210
Oliveira
Cleice
10
Nr_banco
Nr_conta
Balano
Data_abertura
104
75760
12,000,50
21-OUT-89
104
77956
100,10
105
89570
55,775,00
15-JAN-85
103
55890
15,001,85
10-MAR-71
105
76954
5,00
25-SET-91
Tabela de contas
87
Banco de dados
88
Banco de dados
Primary key
Foreign key
Nr_emp
ltimo nome
Primeiro nome
Nr_dept
Nr_folha_pagto
100
Smith
John
10
9710
310
Adams
Jane
15
8730
210
Brown
Jim
10
1157
405
Gomes
Jos
378
Johnson
Lucy
3394
25
Tabela de
empregado
4477
Primary key
Nr_dept
Nome_dept
10
Financeiro
15
Operacional
12
Manufatura
25
Vendas
Tabela de
departamento
Integridade de dados
Para que a tabela contenha dados confiveis, dependendo do tipo da
coluna (se for obrigatria, nica, chave primria ou secundria), essas regras
de definio de coluna tambm devero ser consistidas. Isso geralmente
feito de forma automtica pelo banco de dados durante o gerenciamento dos dados nas tabelas, a esse conjunto de definies que podem existir
eventualmente em uma tabela chamamos regras ou constraints.
Alm desses tipos de regras, podem existir, eventualmente, outras regras
que chamamos regras de negcios ou regras definidas pelo usurio, que so
situaes que devem ser obedecidas e aplicadas aos valores das colunas, validando-os. Essas situaes podem ser definidas pelo rgo governamental
ou pela prpria empresa. Por exemplo:
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
89
Banco de dados
Estrutura de tabela
Cada campo (informao) em uma tabela possui um datatype (tipo de
dado), que pode ser numrico, string (texto), data, booleano (TRUE ou FALSE)
entre outros e, eventualmente um tamanho predefinido.
A relao completa de datatypes e tamanho de todos os campos de uma
tabela chamada de estrutura.
Ao elaborar um programa, em qualquer linguagem, esses tipos de dados
devem sempre ser obedecidos e respeitados quando se estiver realizando
incluso, ou qualquer outro tipo de manipulao de dados na tabela.
Devemos sempre respeitar a forma de declarao das strings para a correta utilizao dos recursos da linguagem utilizada, ou seja, strings entre
apstrofos e para os nmeros no necessrio. Esse um exemplo de como
respeitar e seguir os tipos de dados definidos pela estrutura de uma tabela
para os seus campos.
Resumo
Um banco de dados formado por tabelas, por isso o chamamos de
banco de dados relacional.
Uma tabela formada por linhas (registros) e colunas (campos).
Cada coluna pode ser validada e definida como chave primria, chave
estrangeira, nica ou obrigatria. A essas definies chamamos regras de
integridade de dados ou constraints.
Chave primria a coluna cujo valor identificar cada linha da tabela. A
chave primria pode ser simples (uma coluna) ou composta (vrias colunas),
mas nica e obrigatria.
90
Banco de dados
Atividades
1. O que so e para que servem as tabelas no banco de dados relacional?
2. Qual o objetivo de possuir uma primary key em uma tabela?
3. Na tabela de contas abaixo, a coluna DATA_ABERTURA foi escolhida
como sendo nossa coluna com atributo de chave primria. Nossa escolha a melhor tecnicamente? Especifique o porqu.
Chave primria
NR_BANCO
NR_CONTA
BALANO
DATA_ABERTURA
104
75760
12,000,50
21-OUT-89
104
77956
100,10
105
89570
55,775,00
15-JAN-85
103
55890
15,001,85
10-MAR-71
105
76954
5,00
25-SET-91
Tabela de contas
4. Para que servem as chaves estrangeiras (foreign keys) no banco de dados relacional?
5. O que um datatype do tipo string na estrutura de uma tabela?
91
Banco de dados
Gabarito
1. Tabelas so a base estrutural de armazenamento de informao em
um banco de dados relacional. Eles utilizam as tabelas estruturando os
dados em linhas (registros) e colunas que possuem as caractersticas
de cada linha. Um banco de dados relacional utiliza as tabelas para
gerenciar, armazenar e consultar os dados.
2. Quando precisamos que uma determinada coluna na tabela possua
uma garantia de regra que torne obrigatoriamente aquele valor nico
na tabela inteira e que seja controlado pelo prprio banco de dados .
3. No. Porque podem existir vrias linhas com a mesma data de abertura de conta, portanto essa coluna inapropriada a ser uma candidata
em possuir o atributo de chave primria.
4. Servem para construir o relacionamento entre as tabelas pelo banco de
dados , pois a chave estrangeira aquela que define o relacionamento
entre duas tabelas distintas dentro do banco de dados relacional. A
chave estrangeira, quando contida em uma tabela, coluna primria
em uma outra tabela. Assim, os valores nessas colunas, em uma e noutra tabela, so sempre interligados, obrigatoriamente, controlados e
consistidos pelo banco de dados como uma regra (constraint).
5. um tipo de dado que define o tipo de informao que a coluna pode
receber. No caso de datatype tipo string, por exemplo, significa que
sero aceitos pelo banco de dados valores alfanumricos na coluna.
92
Layout de tabela
Uma tabela formada por vrias linhas e colunas, onde cada linha representa um registro e cada coluna representa um campo.
Portanto, podemos ter uma tabela de clientes, onde cada linha representaria um cliente diferente, que composta por colunas, onde esto as informaes que particularizam esse cliente. Por exemplo, podemos ter uma
coluna para o cdigo do cliente, outra para o nome, endereo, CPF, entre
outras.
As colunas de uma tabela so chamadas de layout, ou ainda, o layout dos
registros da tabela.
O layout de cada tabela definido de acordo com sua finalidade e uso
pelas aplicaes (ou programas) que iro manipul-lo.
Processando tabelas
possvel elaborar fluxos de programas que manipulam informaes digitadas pelo usurio durante o processamento. Informaes essas que ficam
armazenadas em variveis.
Da mesma forma, podemos fazer programas que manipulem informaes
da mesma maneira, s que provenientes de tabelas. Assim, o processamento
basicamente ser o mesmo, mudando apenas a origem da informao a ser
manipulada, passando de variveis para dados de tabela.
Layout de tabela
linha. Ao terminar o processamento de uma linha, o loop entra em ao, realizando as mesmas operaes, s que para a prxima linha. E assim todas as
linhas vo sendo processadas, at o final da tabela.
Cada loop possui uma condio para avaliar sua durabilidade. No caso
de estarmos processando toda uma tabela, a condio que devemos avaliar
se o final da tabela j foi alcanado. Porque enquanto for possvel ler uma
nova linha, ainda no atingimos o final da tabela, e devemos novamente realizar o loop, processando os dados da linha lida.
No entanto, ao chegar ao final da tabela, o loop no tem mais razo de
ser realizado, afinal, todas as linhas da tabela j foram processadas. Assim,
encerra-se a realizao do loop e passamos s instrues que o seguem.
Para avaliar, em uma condio, se foi atingido o final ou, eventualmente,
o incio de uma tabela, empregamos comandos prprios da linguagem que
utilizarmos para desenvolver o programa. A nvel de fluxo, utilizamos EOF
(end of file = final de arquivo, tambm conhecido como NOT FOUND) e BOF
(begin of file = incio do arquivo).
Exemplo
Desenvolver um programa que determine, e apresente, a porcentagem
dos clientes no bloqueados que uma empresa possui (clientes no bloqueados dividido pelo total de clientes da empresa), bem como a quantidade
desses clientes, com base na tabela CLIENTE que possui o seguinte layout:
CODIGO
NOME
ENDER
CREDITO
BLOQ este, quando o cliente estiver bloqueado, dever conter TRUE,
seno FALSE.
96
Layout de tabela
INCIO
TOT_CLI = 0
NAO_BLOQ = 0
PORCENT = 0
ABRIR
TABELA
CLIENTE
A
LER
CLIENTE
NO
EOF
PORCENT =
(NAO_BLOQ /
TOT_CLI) * 100
TOT_CLI =
TOT_CLI + 1
NO
BLOQ
SIM
SIM
NAO_BLOQ =
NAO_BLOQ + 1
PORCENT
NAO_BLOQ
FECHAR
TABELA
CLIENTE
FIM
97
Layout de tabela
Exemplo
Desenvolver um programa que leia toda a TAB_A (do 1. ao ltimo registro) e, para cada linha lida, grave uma linha correspondente em TAB_B de
acordo com o layout apresentado abaixo, sendo TAB_A e TAB_B tabelas com
dados de alunos.
Layout TAB_A : COD , NOME , END , CPF e RG
Layout TAB_B : CPF_S , END_S , COD_S , RG_S e NOME_S
INCIO
ABRIR
TAB_A
TAB_B
A
LER
LINHA
TAB_A
NO
COD_S = COD
EOF
TAB_A?
SIM
FECHAR
TAB_A
TAB_B
NOME_S = NOME
FIM
END_S = END
CPF_S = CPF
RG_S = RG
GRAVAR
TAB_B
A
98
Layout de tabela
Resumo
Layout de tabela: no caso de tabela, so as colunas que formam cada uma
de suas linhas.
Para processar cada linha ou registro, utilizamos os loops.
Atividades
Exerccio 1
Desenvolver um programa que determine (e apresente em tela) a quantidade de pessoas de sexo feminino, sua mdia de peso e mdia de idade. A
quantidade de pessoas do sexo masculino, sua mdia de peso e sua mdia
de idade, com base na tabela TAB_A que possui o seguinte layout:
NOME
IDADE
PESO
SEXO M ou F
Exerccio 2
Desenvolver um programa que leia sequencialmente toda a tabela de
funcionrios TABFUN. Toda tabela dever ser avaliada, de forma que, se
corresponder a um funcionrio que receba salrio acima de 1 000, do sexo
masculino e que tenha algum dependente, gravar em outra tabela de nome
FUNCSEL, ignorando a informao caso uma dessas condies no seja
satisfeita.
Layout TABFUN: COD, NOME, SAL, SEXO e DEP
Onde SAL o salrio, SEXO apenas poder conter M ou F, e DEP o
nmero de dependentes.
Layout FUNCSEL: COD_S, NOME_S, SAL_S, SEXO_S, e DEP_S
99
Layout de tabela
Exerccio 3
Desenvolver um programa que leia sequencialmente a tabela de alunos
TABALU. Cada informao lida dessa tabela deve ser avaliada de forma que
todos os alunos, cuja mdia seja maior ou igual a 5, sejam includos na tabela
TABMED, que contm as mdias dos alunos aprovados.
Layout TABALU: COD, NOME, NT1, NT2
Onde NT1 a primeira nota do aluno e NT2 a segunda.
Layout TABMED: CODALU, NOMEALU, MEDALU
Onde MEDALU a mdia das notas dos alunos, calculada da seguinte
forma:
Mdia = ( ( NT1 x 3 ) + ( NT2 x 7 ) ) / 10
Exerccio 4
Desenvolver um programa que leia sequencialmente a tabela de produtos PROD. Ao processar cada linha, caso o cdigo da linha seja A, ignor-la ;
caso contrrio, calcular o valor lquido e gravar a linha na tabela VALIQ.
Layout PROD: COD, QTDE, UNIT, PERC, CLIN
Onde UNIT o preo unitrio, PERC o percentual de desconto e CLIN o
cdigo da linha.
Layout VALIQ: CODPROD, VLIQ
Onde VLIQ o valor lquido, calculado da seguinte forma:
Valor bruto = quantidade x preo unitrio
Desconto = (valor bruto x percentual desconto) / 100
Valor lquido = valor bruto desconto
Exerccio 5
Desenvolver um programa que leia sequencialmente a tabela de vendedores VEND. Para cada linha lida calcular o salrio do ms, somando ao
salrio o valor da comisso, e gravando a linha com esse valor calculado na
tabela TABSAL. O valor de comisso ser determinado da seguinte forma:
Se vendas no ms >= 10 000, comisso = vendas_ms x 10%
100
Layout de tabela
Gabarito
Exerccio 1
INCIO
QTDE M = 0
QTDE_F = 0
SOMA_IDADE_F = 0
SOMA_IDADE_M = 0
SOMA_PESO_M = 0
SOMA_PESO_F = 0
MEDIA_IDADE_F = 0
MEDIA_IDADE_M = 0
MEDIA_PESO_M = 0
MEDIA_PESO_F = 0
ABRIR
TAB_A
C
LER
REGISTRO
NO
EOF
SIM
101
Layout de tabela
NO
SIM
SEXO
= M
SOMA_IDADE_F =
SOMA_IDADE_F + IDADE
SOMA_IDADE_M =
SOMA_IDADE_M + IDADE
QTDE_F =
QTDE_F + 1
QTDE_M =
QTDE_M + 1
SOMA_PESO_F =
SOMA_PESO_F + PESO
SOMA_PESO_M =
SOMA_PESO_M + PESO
C
B
MEDIA_IDADE_M =
SOMA_IDADE_M / QTDE_M
MEDIA_IDADE_F =
SOMA_IDADE_F / QTDE_F
MEDIA_PESO_M =
SOMA_PESO_M / QTDE_M
MEDIA_PESO_F =
SOMA_PESO_F / QTDE_F
EXIBIR
MEDIA_IDADE_M
MEDIA_IDADE_F
QTDE_M
MEDIA_PESO_M
QTDE_F
MEDIA_PESO_F
FECHAR
TAB_A
FIM
102
Layout de tabela
Exerccio 2
INCIO
ABRIR
TABFUN,
FUNCSEL
LER
TABFUN
NO
SIM
EOF?
FECHAR
TABFUN,
FUNCSEL
FIM
NO
SAL >
1000
NO
SIM
SEXO
= M
NO
SIM
DEP > 0
SIM
COD_S = COD
NOME_S = NOME
SAL_S = SAL
SEXO_S = SEXO
DEP_S = DEP
GRAVAR
LINHA EM
FUNCSEL
B
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
103
Layout de tabela
Exerccio 3
INCIO
MEDIA = 0
SOMA = 0
P1 = 0
P2 = 0
ABRIR
TABALU,
TABMED
LER
TABALU
NO
SIM
EOF?
FECHAR
TABALU,
TABMED
FIM
A
P1 = 3* NT1
P2 = 7* NT2
SOMA = P1 + P2
MEDIA = SOMA/10
NO
MEDIA < 5
SIM
CODALU = COD
NOMEALU = NOME
MEDALU = MEDIA
GRAVAR
LINHA EM
TABMED
104
Layout de tabela
Exerccio 4
INCIO
VLRBRUTO = 0
DESC = 0
ABRIR
PROD,
VALIQ
LER
PROD
NO
SIM
EOF?
FECHAR
PROD,
VALIQ
FIM
A
NO
CLIN =
A ?
SIM
VLRBRUTO =
QTDE* UNIT
DESC =
(VLRBRUTO *
PERC) / 100
VLIQ = VLBRUTO
DESC
CODPROD = COD
GRAVAR
LINHA EM VALIQ
105
Layout de tabela
Exerccio 5
INCIO
COMIS = 0
TOTSAL = 0
ABRIR
VEND,
TABSAL
LER
VEND
NO
EOF?
SIM
EXIBIR
TOTSAL
FECHAR
VEND,
TABSAL
FIM
106
Layout de tabela
A
NO
NO
COMIS = 0
VMES >=
5000
VMES >=
10000
SIM
SIM
COMIS =
VMES * 10/100
COMIS =
VMES * 5/100
GRAVAR
LINHA EM
TABSAL
TOTSAL =
TOTSAL + SMES
107
Conceito de
manipulao de dados
Uma aplicao composta por cadastros (a chamada manipulao de tabelas ), eventuais processamentos (qualquer tipo de operao que envolva a
parte cadastral e que caracterize a sua aplicao, por exemplo, o preparo de
um cheque a ser emitido), e relatrios de forma geral, tudo isso geralmente
distribudo em menus sendo, cada cadastro, processamento ou relatrio um
item nesse menu que, ao ser selecionado, ativa o programa correspondente
opo selecionada.
Neste captulo, veremos a manuteno de dados armazenados em tabelas (incluso, alterao e excluso), bem como a consulta a esses dados o
que, por vezes, muito til em meio ao cadastramento.
A consulta a uma tabela simplesmente exibir em tela suas linhas ou registros. Pode ser uma consulta com cabealho (ou seja, um texto no topo
da listagem, em cada tela) e rodap (um texto na parte inferior da tela), mas
pode variar conforme o objetivo a ser atingido e de qual distribuio mais
til ao usurio que manipular o sistema.
Elaborando um cadastro
Um cadastro ser o programa que permitir ao usurio incluir, alterar, excluir e, eventualmente, consultar os dados de uma determinada tabela. A
isso, como dissemos, chamamos manipulao de dados.
Ento imaginemos a aplicao. Como explicado anteriormente, o usurio
seleciona, no menu da aplicao, o item relacionado ao cadastro desejado.
Selecionando o item, ativa um programa que conter as opes: inserir, alterar, excluir, consultar, bem como uma de confirmao ou sada, para terminar
o processamento desse programa. Essas opes podem ser distribudas em
tela de forma bem variada. O posicionamento dessas opes em tela, bem
como o layout da tela em si definido pelo analista programador.
Para entender melhor o funcionamento desse programa, examine o
fluxo contido na pgina seguinte. Nele, estaremos utilizando uma tabela
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
CODIGO = 0
DEPT =
GERENTE =
OK = TRUE
ABRIR
TABELA
DEPTO
B
LER
OPO
NO
NO
NO
NO
OPO
INSERIR
SIM
OPO
ALTERAR
SIM
OPO
EXCLUIR
SIM
OPO
CONSULTA
NO
SIM
OPO
SAIR
SIM
FECHAR
TABELA
DEPTO
FIM
ROT_INC
ROT_ALT
ROT_EXC
ROT_CONS
EXIBIR
OPO
INVLIDA
Caso nenhuma das opes seja vlida, apresenta uma mensagem de erro
em tela. No caso, Opo Invlida! e volta a solicitar a opo.
Assim, na tela, temos as opes possveis, e ao escolher uma delas, j ativada uma sub-rotina que ser responsvel pela operao selecionada. E, na
mesma tela, j temos uma consistncia, aceitando apenas uma das opes
possveis. Assim, se a opo for invlida (no for nenhuma das possveis e
esperadas), informa isso ao usurio.
Comecemos agora a analisar cada sub-rotina.
Sub-rotina de incluso
ROT_INC
EXIBIR
TELA P/
INCLUSO
CODIGO, DEPT,
GERENTE
OK = FALSE
CONSISTIR
NO
OK =
TRUE
SIM
LER
DEPTO
NO
GRAVAR
DADOS
J
EXISTE?
SIM
CDIGO J
EXISTE
CADASTRO
REALIZADO
SADA
111
Sub-rotina de consistncia
CONSISTIR
NO
CDIGO
INVLIDO!
CODIGO > 0
NO
DEPTO
OBRIGATRIO
SIM
DEPT
<>
NO
SIM
GERENTE
<>
GERENTE
OBRIGATRIO
OK = TRUE
SADA
112
SIM
Sub-rotina de alterao
ROT_ALT
COD
LER
DEPTO
NO
J
EXISTE?
CDIGO
NO EXISTE
SIM
EXIBIR
TELA P/
ALTERAO
DEPT,
GERENTE
OK = FALSE
CONSISTIR
SIM
ALTERAO
REALIZADA
OK =
TRUE
NO
GRAVAR
DEPTO
MONTAR
TELA
SADA
113
Para alterar uma linha, inicialmente preciso localiz-la para que seja
apresentada em tela com os dados correntes. Para isso, o usurio deve informar o valor de alguma coluna chave (no caso do nosso exemplo, a coluna
COD) poderia tambm ser uma coluna nica. Esses dois passos foram os
realizados inicialmente no fluxo.
Caso no exista a linha na tabela, deve acusar um erro. Caso contrrio,
deve apresentar ento os dados de cada coluna dessa linha em tela, para
ento permitir que o usurio altere algum deles.
Aps as alteraes realizadas e a confirmao do usurio, feita a validao dos dados (novamente atravs da sub-rotina CONSISTIR, cujo fluxo
j foi apresentado anteriormente). Se os dados estiverem invlidos, voltar a
solicit-los; caso contrrio, gravar a linha na tabela.
Sub-rotina de excluso
ROT_EXC
COD
LER LINHA
NA TABELA
NO
J
EXISTE
NO EXISTE
ESTE CDIGO
NA TABELA!
SIM
MONTAR
TELA
CONFIRMAR
EXCLUSO DA
LINHA
NO
EXCLUI
SIM
ELIMINAR
LINHA NA
TABELA
EXCLUSO
CANCELADA!
MONTAR
TELA
SADA
114
A linha a ser excluda deve ser inicialmente identificada. Para isso, o usurio deve informar o valor de uma coluna chave ou nica. No caso do fluxo
apresentado, o usurio dever informar o valor da coluna COD, que a chave
identificadora da linha. Em seguida verificado na tabela se a linha j existe.
Caso no exista, acusa erro. Caso contrrio, exibe os dados da linha na tela
e, ento, confirma sua excluso.
Se a excluso for cancelada, exibe mensagem de acordo, se confirmada,
elimina a linha fisicamente da tabela.
Por ltimo, eliminando ou no a linha, a tela remontada e a execuo
encerrada.
Sub-rotina de consulta
ROT_CONS
MONTAR
TELA DE
SELEO
AGUARDAR
INFORME E
CONFIRMAO
B
LER
LINHA NA
TABELA
NO
EOF
SIM
PAUSA PARA
USURIO
LIMPAR E
REEXIBIR
TELA
SADA
NO
LINHA
VLIDA
SIM
EXIBIR
DADOS
DA LINHA
115
Para consultarmos os dados de uma tabela, necessrio que os apresentemos todos em tela, segundo algum critrio de seleo que o usurio venha
a escolher.
Portanto, necessrio apresentar em tela todos os parmetros possveis
para a seleo dos dados. Dessa forma, em seguida monta-se a tela de parmetros, dispondo nesta diversos campos que serviro para filtrar os dados
da tabela.
Uma vez informados e confirmados esses parmetros, passamos leitura
das linhas na tabela, em um loop, lendo linha a linha. Nesse loop verificamos
se o final da tabela j foi alcanado. Caso no tenha sido, valida a linha conforme os parmetros fornecidos.
Por ltimo exibe os dados da linha na tela, conforme o layout definido
previamente.
Esse o fluxo mais simples. Poderamos tambm utilizar, entre outras
coisas, cabealhos, aprimorando o programa de consulta.
Atividades
Exerccio 1
Imagine uma tabela de funcionrios de nome FUNC com o seguinte
layout:
COD (cdigo do funcionrio): maior que zero.
NOME (nome completo): obrigatrio.
DTADM (data de admisso): obrigatria (e vlida).
SAL (salrio): maior que zero.
DEPTO (departamento): maior que zero.
CARGO (cargo do funcionrio na empresa): maior que zero.
116
117
Gabarito
Exerccio 1
A parte inicial do exerccio a mesma que est na aula, sendo necessrio
apenas apresentar a rotina consistir, conforme segue abaixo.
CONSISTIR
NO
COD > 0
CDIGO
INVLIDO!
NO
SIM
SIM
NOME
<>
NOME
OBRIGATRIO
NO
SIM
DTADM
<>
DATA DE
ADMISSO
OBRIGATRIA!
NO
DTADM
VLIDA
DATA DE
ADMISSO
INVLIDA!
NO
SALRIO
INVLIDO!
SAL > 0
NO
DEPARTAMENTO
INVLIDO
SIM
DEPT
>0
NO
SIM
CARGO
>0
CARGO
INVLIDO!
SIM
OK = TRUE
B
SADA
118
SIM
Exerccio 2
A parte inicial do exerccio a mesma que est na aula, sendo necessrio apenas apresentar a rotina consistir e a abertura das tabelas DEPTO e
CARGO, conforme segue abaixo.
CONSISTIR
NO
SIM
COD > 0
CDIGO
INVLIDO!
NO
SIM
NOME<>
NOME
OBRIGATRIO
NO
DTADM
<>
DATA DE
ADMISSO
OBRIGATRIA!
NO
SIM
DTADM
VLIDA
DATA DE
ADMISSO
INVLIDA !
SIM
A
SIM
NO
SALRIO
INVLIDO!
SAL > 0
NO
DEPARTAMENTO
INVLIDO
Abrir
Tabela
DEPTO
Abrir
Tabela
CARGO
Ler
DEPTO
Ler
CARGO
DEPTO
Existe?
NO
SIM
CARGO
Existe?
CARGO
INVLIDO !
SIM
OK = TRUE
B
SADA
119
Ordenao de tabelas
Cdigo
Nome
Descrio
NUM
Numerrio
CHQ
Cheque
CCR
Carto crdito
VRF
Vale refeio
VTR
Vale transporte
Tabela Doctos
Ordenao por nome
Nome
Cdigo
CCR
CHQ
NUM
VRF
VTR
Ordenao de tabelas
Nas ilustraes anteriores, podemos visualizar a tabela DOCTOS. Ela fisicamente no se encontra por ordem de nome, e sim por ordem de cdigo. Para
que, ao realizarmos o processamento, a tabela esteja ordenada por nome,
precisamos criar uma ordenao, que ser feita no momento da abertura da
tabela. Teremos os nomes ordenados, cada um com seu respectivo cdigo,
referenciando o registro original da tabela DOCTOS. Essa nova ordenao
dos registros da tabela no ir afet-la fisicamente.
At agora falamos da utilidade da ordenao em uma consulta. Uma ordenao pode tambm ser til em diversos momentos. Por exemplo, quero
processar os dados de uma tabela, mas para atingir o meu objetivo, os registros na tabela deveriam seguir um outro critrio de ordenao, de forma a
trazer os dados agrupados por tipo ou por representante de vendas. Nesse
caso, tambm podemos criar uma nova ordenao para os registros.
Exemplo
Temos duas tabelas. A primeira, chamada TABALU, uma tabela de alunos
que tem o seguinte layout:
COD (cdigo do aluno)
NOME (nome do aluno)
CODTUR (turma em que se encontra)
A segunda tabela chama-se TABTUR, uma tabela de turmas que segue
o layout abaixo:
TURMA (cdigo da turma igual ao campo CODTUR da outra tabela)
NRALU (quantidade de alunos na turma)
Utilizar a tabela TABALU ordenada pelo campo CODTUR e process-la de
forma a gerar os registros de TABTUR.
Soluo:
Como a tabela TABALU estar ordenada pelo campo CODTUR (que a
chave arquivo), ao ler os seus registros, leremos todos os alunos da primeira
turma, depois todos da segunda, todos da terceira e assim por diante. Enquanto estivermos lendo registros de uma mesma turma, acumularemos o
nmero de alunos que j encontramos nessa turma. E assim leremos registro
122
Ordenao de tabelas
a registro. Quando o prximo registro lido no for da mesma turma, deveremos ento gerar um registro no TABTUR, com o total de alunos processados
para aquela turma.
Analisemos, ento, o fluxo a seguir.
Note que a sub-rotina QUEBRA tambm chamada ao final do loop (aps
processados todos os registros). Isso feito para que gere o registro referente ltima turma processada.
INCIO
ABRIR
TABALU (ordenado por CODTUR)
TABTUR
B
LER TABALU
NO
EOF
TABALU
SIM
QUEBRA
FECHAR TABALU
TABTUR
FIM
123
Ordenao de tabelas
NO
SIM
TURANT
=
TURANT = CODTUR
NO
SIM
TURANT
<>CODTUR
QUEBRA
TOTALU = 0
TURANT = CODTUR
TOTALU = TOTALU + 1
QUEBRA
NRALU = TOTALU
TURMA = TURANT
GRAVAR TABTUR
SADA
124
Ordenao de tabelas
O conceito de quebra
No ltimo fluxo apresentado, temos um conceito muito importante: o
conceito de quebra.
Quebra uma mudana, ou seja, um campo ou coluna que passa a assumir outro valor no meio do processamento.
No nosso ltimo exemplo, todas as vezes em que passvamos a processar uma nova turma de alunos, por esta ser diferente da anterior, tnhamos
ento uma quebra. No caso, uma quebra por CODTUR (cdigo da turma), j
que este era o campo analisado.
Para se ter uma quebra consistente, importante observar que devemos,
no mesmo processamento, considerar tanto a ordenao quanto a quebra
pela mesma coluna da tabela.
Ordenao composta
Vimos o conceito de ordenao. At o momento, vimos apenas as ordenaes simples, aquelas com base em um nico campo (por exemplo: cdigo
da turma).
No entanto, poderamos ter uma ordenao com base em mais de um
campo. Essas seriam ordenaes compostas, ou seja, formadas por mais de
um campo.
Imagine um cadastro de funcionrios. Este teria os campos Cdigo, Nome,
Salrio, Cargo, Departamento, entre outros. Poderamos, por exemplo, ordenar esta tabela de funcionrios por Departamento e Nome, ou por Cargo e
Nome, definindo a ordenao de acordo com a nossa necessidade.
No caso da ordenao por Departamento e Nome funcionaria da seguinte forma: teramos todos os registros ordenados primeiramente por Departamento e, quando tivssemos vrios funcionrios em um mesmo Departamento (vrias coincidncias), esses registros seriam ordenados por Nome.
Resumindo, nesse exemplo teramos os funcionrios ordenados por Departamento, e dentro de cada departamento, ordenados tambm por Nome.
125
Ordenao de tabelas
Tabela funcs
Cdigo
Nome
Depto
Antonio
Roberto
Viviane
Marcos
Julia
...
Depto
Nome
Antonio
Marcos
Julia
Roberto
Viviane
Resumo
Ordenao: forma de ordenar os registros de uma tabela pelo campo desejado sem alterar sua ordem fisicamente.
Usamos uma ordenao para organizar uma tabela de acordo com o processamento em que a utilizaremos.
Uma ordenao pode ser simples (com base em um nico campo) ou
composta (com base em dois ou mais campos).
Quebra: situao em que um campo passa de um valor para outro durante um processamento, onde a tabela encontra-se ordenada por esse mesmo
campo.
126
Ordenao de tabelas
Atividades
Exerccio 1
Temos duas tabelas. A primeira, chamada ARQALU, uma tabela de
alunos e tem o seguinte layout:
COD (cdigo do aluno)
MAT (cdigo da matria)
MED (mdia do aluno na matria)
A segunda chama-se ARQTOT, uma tabela de alunos onde estaro discriminados o nmero de matrias em que o aluno foi aprovado, bem como o
nmero de matrias em que foi reprovado. Essa tabela segue o layout:
CODALU (cdigo do aluno)
MATAP (nmero de matrias em que foi aprovado)
MATRP (nmero de matrias em que foi reprovado)
Utilizar a tabela ARQALU ordenada pela coluna COD e process-la de
forma a gerar as linhas de ARQTOT. Considere o aluno reprovado em uma
matria apenas se a mdia dele nessa matria for inferior a 5.
Exerccio 2
Temos duas tabelas. A primeira, chamada ARQALU, uma tabela de
alunos e tem o seguinte layout:
COD (cdigo do aluno)
SEX (sexo do aluno)
TUR (turma do aluno)
MAT (cdigo da matria)
MED (mdia do aluno na matria)
A segunda chama-se ARQTOT, uma tabela de alunos onde estaro discriminados o nmero de matrias em que o aluno foi aprovado, bem como o
nmero de matrias em que foi reprovado. Essa tabela segue o layout:
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
127
Ordenao de tabelas
Gabarito
Exerccio 1
INCIO
ALUANT=
APROV=0
REPROV=0
ABRIR ARQALU
(NDICE POR COD)
E ARQTOT
B
LER ARQALU
NO
EOF
SIM
QUEBRA
FECHAR ARQALU,
ARQTOT
FIM
128
Ordenao de tabelas
QUEBRA
NO
ALUANT
=
SIM
CODALU = ALUANT
ALUANT = COD
MATAP = APROV
NO
ALUANT
<>COD
SIM
MATRP = REPROV
QUEBRA
APROV = 0
REPROV=0
GRAVAR
REGISTRO
EM ARQTOT
ALUANT=COD
NO
MED<5
SADA
SIM
REPROV = REPROV + 1
APROV = APROV + 1
129
Ordenao de tabelas
Exerccio 2
INCIO
ALUANT=
APROV=0
REPROV=0
ABRIR ARQALU
(NDICE POR COD)
E ARQTOT
B
LER ARQALU
NO
NO
SEX=F
EOF
SIM
SIM
QUEBRA
FECHAR ARQALU,
ARQTOT
FIM
130
Ordenao de tabelas
QUEBRA
NO
ALUANT
=
SIM
CODALU = ALUANT
ALUANT = COD
MATAP = APROV
NO
ALUANT
<>COD
SIM
MATRP = REPROV
QUEBRA
APROV = 0
REPROV=0
ALUANT=COD
NO
MED<5
GRAVAR
REGISTRO
EM ARQTOT
SADA
SIM
REPROV = REPROV + 1
APROV = APROV + 1
131
Conceito de relatrio
Relatrios so consultas apresentadadas em formato de texto direcionado para uma impressora, portanto respeitando suas caractersticas de formatos e desenhos de impresso.
O relatrio bem similar consulta, com algumas excees:
Direcionamento impressora: ao invs de ser apresentado em tela, ele
impresso.
De forma geral, possui cabealho da pgina, cabealho das colunas, detalhe e, por vezes, rodap.
Pode tambm apresentar subtotais e totais gerais, dependendo da finalidade do relatrio.
Elaborando um relatrio
Para que a montagem de um relatrio se torne mais fcil vamos dividi-lo
em cabealho da pgina, cabealho das colunas, detalhe, rodap do detalhe
e rodap.
Cabealho
da pgina
Cabealho
das colunas
Detalhe
Rodap do
detalhe
Rodap
Conceito de relatrio
Detalhe
O detalhe a principal parte de um relatrio, onde estaro os registros
selecionados para impresso (um por linha). No detalhe tambm podemos
organizar os dados para que sejam impressos por grupo. Dessa forma, podemos acrescentar subtotais.
Rodap do detalhe
Local onde colocamos os subtotais das quebras (grupos).
Rodap
Aqui, onde definimos um rodap para o relatrio. No rodap costume
se colocar a data e hora em que o relatrio foi impresso.
134
Conceito de relatrio
Uma vez que o relatrio deva apresentar subtotais por quebra, por
motivo de consistncia, os dados da tabela devero ser colocados na ordem
da coluna que ser utilizada para quebra. Assim, sero utilizados quebra e
ordenao pelo(s) mesmo(s) campo(s).
Para determinar a quebra, usamos o mesmo procedimento. Usamos variveis para guardar os dados da ltima linha impressa. Caso os dados da nova
linha, ao serem comparados aos da anterior, impliquem em uma quebra,
ento realizamos totalizaes, clculos e outras operaes, de acordo com
a nossa necessidade.
Exemplo prtico
Imagine uma tabela de funcionrios chamada TAB_FUNC com os campos
COD (cdigo), NOME, SAL (salrio), DEPTO (departamento) e CARGO.
Deseja-se um relatrio de funcionrios com quebra por cargo, seguindo
o layout abaixo:
Cabealho
da pgina
Cabealho
das colunas
NOME
SALRIO
Detalhe
Rodap do
detalhe
Rodap
TOTAL DO CARGO
DATA: 99/99/9999
HORA: 99:99 hs
135
Conceito de relatrio
INCIO
CARGO_ANT=
SAL, CARGO = 0
NO
EOF?
SIM
CABEALHO
IMPRIMIR
(SAL_CARGO)
NO
CARGO ANT
=
SIM
CARGO_ANT
= CARGO
IMPRIMIR
(RODAP)
FECHAR
TAB_FUNC
NO
CARGO <>
CARGO_ANT
SIM
QUEBRA
FIM
DETALHE
136
Conceito de relatrio
CABEALHO
NO
LIMITE DE
PGINA
SIM
SALTAR
PGINA
IMPRIMIR
CABEALHO
DE PGINA
IMPRIMIR
CABEALHO
DAS COLUNAS
SADA
DETALHE
IMPRIMIR
(SAL_CARGO)
IMPRIMIR
REGISTRO
SAL_CARGO=0
SAL_CARGO=
SAL_CARGO +SAL
CARGO_ANT=CARGO
SADA
SADA
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
137
Conceito de relatrio
Atividades
Exerccio 1
Desenvolver um programa que imprima os materiais para compra, sendo
estes todos os que tiverem a quantidade atual em estoque inferior ou igual
quantidade mnima a ser mantida em estoque. Para isso utilizaremos a tabela
TAB_MAT com o layout: COD (cdigo do material), DESC (descrio), QTD
(quantidade atual em estoque), UNIT (preo unitrio), QTD_MIN (quantidade mnima em estoque o chamado ponto de compra) e UNID (unidade
de medida).
O relatrio dever seguir o seguinte layout:
Cabealho
da pgina
Cabealho
das colunas
DESCRIO
QTDE. ATUAL
Detalhe
Rodap
DATA: 99/99/9999
HORA: 99:99 hs
138
Conceito de relatrio
Exerccio 2
Desenvolver um programa que liste os alunos por curso informando
um total de quantos alunos h em cada curso, bem como um total geral
de alunos. Para isso, utilizaremos a tabela TAB_ALU com o layout: CURSO
(cdigo do curso), NOME (nome do curso), NOMEALU (nome do aluno) e
SALA.
O relatrio dever seguir o seguinte layout:
Cabealho
da pgina
Cabealho
das colunas
NOME DO ALUNO
SALA
Detalhe
Rodap do
detalhe
TOTAL DE ALUNOS:
Rodap
TOTAL GERAL:
99/99/9999
139
Conceito de relatrio
Gabarito
Exerccio 1
INCIO
ABRIR
TAB_MAT
(NDICE POR
DESC)
A
LER
REGISTRO
NO
SIM
EOF?
IMPRIMIR
RODAP
CABEALHO
NO
QTD < =
QTD_MIN
FECHAR
TAB MAT
SIM
FIM
IMPRIMIR
REGISTRO
CABEALHO
NO
LIMITE DE
PGINA
SIM
SALTAR
PGINA
IMPRIMIR
CABEALHO
DE PGINA
IMPRIMIR
CABEALHO
DAS COLUNAS
SADA
140
Conceito de relatrio
Exerccio 2
INCIO
CURSO_ANT=
TOT_ALU = 0
TOT_GERAL = 0
ABRIR TAB_ALU
(order by CURSO)
A
LER REGISTRO
NO
EOF?
SUBTOTAL
CABEALHO
NO
CURSO_ANT =
SIM
IMPRIMIR
RODAP
SIM
CURSO_ANT = CURSO
FECHAR
TAB_ALU
NO
CURSO<>
CURSO ANT
SIM
SUBTOTAL
FIM
TOT_ALU = 0
CURSO_ANT = CURSO
DETALHE
141
Conceito de relatrio
SUBTOTAL
CABEALHO
NO
LIMITE DE
PGINA
IMPRIMIR
(TOT_ALU)
SIM
SALTAR
PGINA
IMPRIMIR
CABEALHO
DE PGINA
IMPRIMIR
CABEALHO
DAS COLUNAS
SADA
TOT_GERAL =
TOT_GERAL +
TOT_ALU
SADA
DETALHE
IMPRIMIR
REGISTRO
TOT_ALU = TOT_ALU+1
SADA
142
Sistemas de informao
nas empresas
Propriedades
Definem a aparncia e caractersticas de um objeto. Um objeto, por exemplo, ocupa uma determinada posio, possui um nome, apresenta eventualmente algum texto e assim por diante.
Outras propriedades seriam, por exemplo, cor, tipo e tamanho da fonte.
Essas propriedades, de forma geral, podem ser definidas em tempo de
projeto (quando ainda a tela e o programa esto sendo elaborados) ou ainda,
durante tempo de execuo, atravs de comandos semelhantes a estes:
<NomeObjeto>.<Propriedade> = <Valor>
ou
<NomeVarivel> = <NomeObjeto>.<Propriedade>
Outros objetos podem possuir tambm propriedades que estejam disponveis apenas em tempo de execuo.
Mtodos
Mtodos so rotinas internas de um objeto, ou seja, incorporadas a ele,
que servem exclusivamente para manipul-lo.
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
147
Se um aplicativo for composto por vrias janelas a cada janela, chamamos formulrio podemos, por exemplo, a um determinado ponto do processamento, exibir outra dessas janelas. Para isso, usaramos o mtodo show
do formulrio.
Um mtodo, dependendo da sua funcionalidade, pode alterar, em decorrncia de sua execuo, algumas das propriedades do objeto ao qual est incorporado. Por exemplo, um mtodo que limpa o texto de uma caixa, altera
uma de suas propriedades.
Internamente, um mtodo pode ou no retornar um valor como resultado. Se retornar um valor, esse mtodo ser internamente uma funo; caso
contrrio, ser uma procedure.
Dessa forma, um mtodo um programa, uma rotina, e possui internamente vrias instrues. Uma vez executado o mtodo, todas essas instrues sero realizadas automaticamente.
Para entender melhor o funcionamento de um mtodo, tome por exemplo
a ao de ligar o seu carro, o mtodo poderia se chamar LigaCarro. Quando
executado esse mtodo, o carro ser ligado. Porm, veja que, para o carro ser
ligado, alguns procedimentos foram executados implicitamente, como injeo de combustvel dentro do cilindro, a fasca da vela, entre outros. Ao invs
de executarmos cada tarefa independentemente, foi utilizado um mtodo
simples que realiza todas essas tarefas automaticamente.
Eventos
Um evento a ao que um objeto pode realizar. Pressionando o boto do
mouse sobre um certo objeto da tela, o usurio estar disparando eventos.
O clique do mouse sobre um boto dispara o evento correspondente,
que um cdigo executado quando essa situao ocorre.
Quando um objeto criado, fechado ou carregado, um evento correspondente tambm pode ser ativado.
Vrios objetos podem ter os mesmos eventos, mas isso no significa que
ir ocorrer a mesma coisa.
Por exemplo, tanto um aparelho de TV quanto um aspirador de p, possuem o boto para lig-los, mas quando apertamos esse boto (executamos
148
Recursos bsicos da
linguagem orientada a objeto
Existem linguagens orientadas a objetos e outras que so apenas baseadas em objetos.
Para uma linguagem ser considerada realmente orientada a objeto, ela
deve suportar cinco recursos bsicos : abstrao, encapsulao, herana , polimorfismo e agregao.
Uma linguagem baseada em objetos j no possui esses quatro recursos,
mas apenas parte deles. Assim sendo, ela no uma linguagem realmente
orientada a objetos.
Abstrao
Abstrao refere-se habilidade da linguagem para modelar o mundo
real. exatamente o que tentamos fazer na criao de um programa: representar no computador algo que acontea no mundo real.
Por exemplo: Uma locadora que possui o cadastro dos filmes feito em
fichas e guardado em arquivos de ferro. Ao se fazer alguma consulta, perde-se muito tempo.
Como resolver esse problema?
Utilizando as ferramentas corretas podemos desenvolver um sistema que
seja capaz de controlar no s a consulta dos filmes, mas sim a incluso, alterao, excluso, locao e cadastro de clientes, em um tempo bem menor e
com muito mais segurana.
Encapsulamento
Encapsulamento requer que todo o mdulo de programa seja to autocontido quanto possvel e no hajam efeitos colaterais sobre outros mdulos. A meta aqui criar mdulos (objetos) que possam ser utilizados onde
for apropriado, sem ter que se preocupar quanto a requisitos especiais ou
Este material parte integrante do acervo do IESDE BRASIL S.A.,
mais informaes www.iesde.com.br
149
efeitos colaterais. Por exemplo, voc no quer que sua lavadora de pratos
seja ligada sempre que voc ligar seu videocassete.
Se a linguagem suporta encapsulamento, funo do programador utiliz-la corretamente isso no automtico. Assim, por exemplo, se voc
alterou alguma caracterstica ou propriedade de um objeto, deve guardar
suas definies originais no comeo da rotina para restaur-las ao final do
processamento desta. Isso facilita a reutilizao de cdigo.
Outro fator a considerar na reutilizao de cdigo que cada cdigo
tenha especificamente uma finalidade nica. Se, por exemplo, voc juntar
vrios clculos em uma nica rotina, esta ser mais difcil de ser reaproveitada, j que nem sempre voc precisar de todos esses clculos, bem como
ser difcil lembrar a ordem em que eles se encontram. Se, no entanto, cada
clculo estiver contido em uma rotina diferente, a reutilizao de cada uma
delas ser bem mais fcil.
Herana
Refere-se habilidade de um objeto herdar as caractersticas gerais de
outro objeto, bem como a capacidade de adicionar capacidades especficas
a esse objeto (alm das herdadas).
Herana permite que voc reutilize cdigo em comum, reduzindo assim a
quantidade de cdigo escrito.
Vejamos um exemplo de herana no mundo real. Digamos que voc queira
criar um furgo e um carro esporte zero. Construir cada um do zero, ou seja, do
comeo, significa que voc ter que reproduzir muitas das caractersticas redundantes, tais como rodas, janelas, entre outras. Seria mais eficiente construir
uma classe bsica de carro que inclusse todas as coisas que o furgo e o carro
esporte tm em comum e, ento, herdar da classe carro bsica e adicionar caractersticas especficas que voc precisa para cada tipo.
A razo para essa capacidade ser to importante em linguagem de programao que o mundo real feito de objetos que se encaixam em uma
hierarquia. A razo pela qual carros bsicos, furges e carros esporte foram
150
escolhidos para o exemplo citado, porque essa a forma que os humanos caracterizam classes do mundo real. Quanto mais voc pensa sobre isso,
mais voc percebe que o mundo real repleto de objetos, e uma linguagem
de programao orientada a objetos uma forma de nos aproximarmos do
modelo de objetos do mundo real.
Polimorfismo
Polimorfismo a capacidade de dois objetos relacionados, mas diferentes
um do outro, comportarem-se de diversas maneiras diferentes, e at mesmo
de um funcionar como o outro.
Um exemplo de polimorfismo seria um moedor de carne e um liquidificador.
Agregao
Agregao representa um relacionamento entre classes de objetos. Onde
um objeto pode ser composto por outros objetos. Para identificarmos uma
agregao podemos usar as palavras: consiste de, faz parte de, contm.
Por exemplo, um carro: consiste de rodas, contm motor, chassis, caixa de
cmbio, entre outros.
Resumo
Uma linguagem orientada a objeto formada por:
Objetos (com propriedades, mtodos e eventos).
Classes de objetos.
Recursos abstrao, encapsulamento, herana, polimorfismo e agregao.
151
Atividades
1. O que arquitetura cliente/servidor?
2. O que linguagem de programao orientada a objetos?
3. O que mtodo em linguagem de programao orientada a objetos?
4. O que herana em linguagem orientada a objetos?
5. O que um gerador de cdigo?
Gabarito
1. um tipo de arquitetura em computao muito utilizado pelas empresas, onde os dados ficam centralizados em um equipamento central na rede: o servidor que atende s requisies de dados e servios
de toda a rede a ele conectado, os chamados clientes.
152
5. So ferramentas de desenvolvimento que substituem o ato de codificar programas manualmente. Elas utilizam um ambiente visual amigvel do Windows e de forma construtiva operada pelo programador,
passando a gerar automaticamente o cdigo do programa na linguagem desejada. Alm da velocidade maior no desenvolvimento, destaca-se pela capacidade de documentar todo o processo, facilitando a
manuteno futura de sistemas nele baseados.
153
Anexo
Simbologia de fluxogramas
TERMINAL
Utilizado para indicar incio e final (ou sada) de um programa
ou subrotina (programa acionado por um outro).
CONECTOR
Usado para os casos onde o fluxo
muito grande ou se faz necessrio particion-lo. Assim, colocamos o conector e, dentro deste,
uma letra. Quando reiniciamos
o fluxo, incluimos um conector
igual com a mesma letra, indicando onde este prossegue.
CONECTOR DE PGINA
Usado no mesmo caso anterior,
diferenciando-se apenas por
parte do fluxo ficar em uma pgina e parte em outra.
PROCESSO
Representa uma ao. Exemplos: atribuio de valores a variveis, clculos quaisquer, entre
outros.
PROCESSO PREDEFINIDO
a chamada de um outro programa, seja este uma sub-rotina ou uma funo (esta ltima
semelhante sub-rotina, porm retorna um valor ao programa que a acionou).
DECISO
til em situaes onde se faz
necessria uma comparao,
uma verificao ou ainda uma
tomada de deciso. Essas decises (como denominaremos)
retomam valores verdadeiros
ou falsos, realizando algumas
operaes especficas de acordo
com esse valor.
ENTRADA/SADA DE DADOS
Indica operaes de leitura ou
gravao de dados em tabelas,
bem como alguma operao
em impressora.
TECLADO
Representa a entrada de dados
pelo teclado.
ABERTURA/FECHAMENTO DE
TABELAS
Prepara uma tabela para processamento ou a fecha para encerrar a sua manipulao.
DISPLAY
Representa a exibio de dados
em tela (ou monitor).
Anotaes
Anotaes
158
Anotaes
159