Escolar Documentos
Profissional Documentos
Cultura Documentos
Para começar a entender o que é a programação, primeiro temos que ter certos conhecimentos sobre tudo o que a rodeia.
Começaremos com umas definições um pouco técnicas, mas que porém são
imprescindíveis para a aprendizagem.
Tecnologia
Programação
Programa
Metodologia da programação
Linguagem de programação
É um conjunto de regras semânticas assim como sintáticas que os programadores
usam para a codificação de instruções de um programa ou algoritmo de
programação.
Existem várias linguagens de programação.
Recursos
São aquelas que se encontram mais próximas à linguagem natural que à linguagem
máquina.
Estão dirigidas a solucionar problemas mediante o uso de EDD's.
Nota: EDD's são as abreviaturas de Estruturas Dinâmicas de Dados, algo muito utilizado em
todas as linguagens de programação. São estruturas que podem mudar de tamanho durante a
execução do programa. Permitem-nos criar estruturas de dados que se adaptem às
necessidades reais de um programa.
Trata-se de linguagens independentes da arquitetura do computador. Sendo assim,
à princípio, um programa escrito em uma linguagem de alto nível, pode ser
migrado de uma máquina a outra sem nenhum tipo de problema.
Trata-se de um termo não aceito por todos, porém certamente vocês já devem ter
escutado. Estas linguagens se encontram em um ponto médio entre as duas
anteriores. Dentro destas linguagens poderia se situar C já que pode acessar aos
registros do sistema, trabalhar com endereços de memória, todas elas
características de linguagens de baixo nível e ao mesmo tempo realizar operações
de alto nível.
Gerações
Este código fonte deve ser traduzido à binário para que as instruções que contém
possam ser entendidas e executadas pela máquina.
Para isto existe um programa encarregado de realizar a tradução, chamado
tradutor da linguagem.
Assembler
Compiladores
Uma vez traduzido, compilado e linkado o arquivo está pronto para sua execução
onde também poderão surgir problemas e falhas, para os quais teríamos que voltar
a realizar todo o processo anteriormente citado, de modo que possam ser
corrigidos.
Intérpretes
4
18598 1*10 + 8*10 3 + 5*10 2 + 9*10 1 + 8*10 0
1
10 (número binario) = 1*2 + 0*2 0
Por esta razão a maioria dos hardwares com capacidade de armazenamento tais
como Discos rígidos, memórias, e outros dispositivos; sua capacidade sempre será
divisível entre 2 , assim como as demais estruturas de armazenamento ( Kb, Mb,
Gb, Tb, etc)
Por exemplo o caractere "A" dentro da tabela ASCII no sistema decimal ocupa 64,
podemos executar uma função amplamente reconhecida por linguagens de
programação entre eles (Delphi, C++, VB, Php, etc) chamada ORD que produzirá
como resultado de ord(64) "A" se pelo contrário executarmos chr('A') o resultado
será 64 em decimal, o qual representado em binário equivaleria a "1000000",
embora 64 não ocupe fisicamente os 255 (1 byte completo) seu tamanho em disco
sempre será 1 byte, porque a maioria de sistemas operacionais e hardware desde
sua ensambladura está orientados para reservar um mínimo de espaço em
memória e em disco levando em conta que esse valor pode ser modificado a 255
(máximo) ou 0 (mínimo) em qualquer momento.
Portanto podemos dizer que um bit tem um valor de acordo com sua posição ou
localização e para encontrar esse valor só temos que descompor 255.
128 62 32 16 8 4 2 1
1 2 3 4 5 6 7 8(bits)
128 62 32 16 8 4 2 1
1 0 1 1 1 0 1 1
Os bits são amplamente utilizados para codificar dados, comprimir informação, etc.
Por exemplo, o formato de imagens desenhado por Microsoft (.BMP) calcula a área
da imagem, ou seja, base por altura ou o que é igual à largura pela altura, o qual
assume como a quantidade de pontos disponíveis, estes pontos por sua vez
armazenam uma cor hexadecimal de 3 pares conhecida como RGB que armazena
as cores VERMELHO, VERDE E AZUL, pelo qual para o armazenamento da cor
emprega 3 bytes (255,255,255) e os recebe com ASCII, por cada ponto , o que
indica se uma imagem é de 10 px x 10 px empregará 300 bytes para armazenar os
pontos e outros adicionais que salvam informação de propriedades e características
de essencial importância. Utilizando bytes delimitadores ou separadores no caso de
não conhecer o final do valor, ou seja, se a quantidade de bytes a empregar pelo
cabeçalho do formato (que contém informação) se desconhece ou pode variar
dependendo de fatores, se faz indispensável o uso de delimitadores (ASCII
DEFINIDOS COMO DELIMITADORES), se pelo contrário sempre se situará entre os
bytes 10 e 20, por exemplo (não será necessário). Por tal motivo quando lemos um
arquivo (com um programa desenvolvido por nós) devemos especificar quantos
bytes leremos por cada seqüência, no caso das cores dos formato (BMP) bastará ler
de 3 em 3, cabe destacar que um arquivo pode ser lido até 1024 ou seja 1 KB de
seqüência que equivale a uma linha de informação, a partir dessa base foram
desenhados mecanismos de compreensão que agrupa os bits repetido em matrizes
ou arrays.
Para tornar possível este manejo existem alguns operadores similares aos de lógica
( OR, AND, NOT, XOR, ETC…) melhor conhecidos como operadores bit a bit.
Deslocando bits:
Por exemplo:
16 <<2 deslocaremos 2 bits da esquerda à direita
16 em binário equivale a 00010000 pelo qual moveremos os dois primeiros
bits à parte de atrás do número (direita) de tal modo que ficará 01000000 o
qual equivale a 64.
Portanto se multiplicamos
(16*2)=32 (32*2)=64
1 bit 2 bits
b.
c. Deslocando bits à direita (>>)
Consiste em mover a quantidade de bit indicada na expressão, da direita à
esquerda, esta operação equivale a dividir por 2.
Por exemplo:
portanto se dividimos
(128 / 2)=64 (64/2)=32 (32/2)=16 (16/2)=8
1 bit 2 bits 3 bits 4 bits
d.
Emprega-se 2 por ser a base do sistema de numeração binário.
Operador de lógica OR |
Expressão: 5 | 12
5 em binário é igual a 00000101
12 em binário = 00001100
Resultado : 00001101 = 13
Expressão: 5 & 12
5 em binário é igual a 00000101
12 em binário = 00001100
Resultado : 00000100 = 4
É parecido a (TRUE && TRUE) é igual a true, (False && True) é igual a false.
Operador XOR ^
Similar a (TRUE XOR FALSE) es igual a true, ( TRUE XOR TRUE) es igual a false.
Operador Not ~
Conclusão:
Podemos dizer que o computador sem software só tem capacidades para fazer
operações aritméticas simples (somas, subtrações, multiplicação, etc…)
E é o software que valendo essas simples operações com processos como os
explicados anteriormente, pode criar a interface como da que hoje desfrutamos em
matéria de Sistemas Operacionais, todas as linguagens desde as mais altas como
Php até as mais baixas como Assembler passam por binário, cada vez que
movemos o Mouse isso está produzindo um processamento de dados binários,
enfim, oriente seus esforços como programador a reduzir ao máximo o consumo de
recursos, certamente você conseguirá uma soma consumindo menor quantidade de
recursos que o habitual.
Tipos de programação
Existe várias classes de programação, dependendo dos métodos utilizados e as técnicas empregadas.
Programação modular
Por sua vez cada módulo pode conter seus próprios dados e chamar a outros
módulos ou funções.
O polimorfismo e a herança são umas das suas principais características e por isso
dedicaremos mais adiante um artigo exclusivamente para tratar destes dois
termos.
Programação concorrente
Este tipo de programação se utiliza quando temos que realizar várias ações de só
uma vez.
Programação funcional
Programação lógica
Importância da documentação
Descrevemos os aspectos chaves para o desenvolvimento de uma boa documentação do programa para entregar ao cliente.
Uma vez concluído o programa, os documentos que se devem entregar são um guia
técnico, um guia de uso e de instalação.
Tipos de documentação
A guia técnica
O guia de uso
Um ponto a ter em conta em sua criação é que não deve fazer referência a
nenhuma seção do guia técnico e no caso de que faça uso de algum tecnicismo
deve ir acompanhado de um glossário ao final da mesma para sua fácil
compreensão.
O guia de instalação
Metodologia da programação
Neste artigo e nos seguintes veremos as ferramentas e técnicas que nos ajudam a desenhar algoritmos para a resolução dos problemas
na programação estruturada.
• processos de entrada
• processo de dados
• processos de saída
Algoritmos
Diagramas de fluxo
teclado entrada
monitor saída
disquete Entrada/Saída
Impressora Saída
Símbolo Processo
Setas Função
Linhas de tele-processo
Fluxograma que reflete a soma de 3 números lidos pelo ecrã, o resultado aparece
na tela
Assim como o o fluxograma visto no capítulo anterior, este também deve ser
independente da linguagem de programação que utilizemos.
Estrutura do fluxograma
Símbolos utilizados
Simbolo Descrição
Para início/fim ou para uma parada
indeterminada
Exemplos
Este primeiro exemplo lhe diz o maior de dois números.
Este segundo lhe devolve os graus introduzidos em Kelvin e Fahrenheit.
Pseudocódigo
Linguagem intermediária entre nossa linguagem e a linguagem de programação.
• Instruções primitivas
• Instruções de processo
• Instruções de controle
• Instruções compostas
• Instruções de descrição
Cabeçalho:
• Programa:
• Módulo:
• Tipos de dados:
• Constantes:
• Variáveis:
Corpo:
• Início
• Instruções
• Fim
Exemplos
Programa: area_quadrado
Modulo: main **( tambem se pode chamar principal)
Variaveis:
lado: natural
area: natural
Inicio
Visualizar "Introduza o lado do quadrado"
Ler lado
Area<- lado * lado
Visualizar "A área do quadrado é", area
Fim
Dado
Dados básicos
Como dado derivado encontramos os ponteiros que hoje em dia quase não se
utilizam, a não ser que se programe em C.
• array
• Estruturas
• Listas, pilhas, filas e árvores ( muito utilizados em C)
• Classes e objetos
• Arquivos
• Banco de dados
Constantes e variáveis
Operadores aritméticos:
Operadores alfanuméricos:
São os utilizados para trabalhar com cadeias.
Principalmente utilizamos o símbolo "+" para concatenar cadeias. Logo dependendo
da linguagem pode funcionar ou não o símbolo "-" para concatenar cadeias
eliminando os espaços em branco.
Operadores relacionais:
Operadores lógicos:
Como operadores lógicos nos encontramos com o símbolo "!" ou "not" para a
negação e o símbolo "&&" ou "and" para a conjunção.
Exemplos
Aritméticos.
A=3
B=2
X=a**2 onde x valeria 9
X=a/2 onde x valeria 1.5
X= a*2 onde x valeria 6
X= a%b onde x valeria 1
Alfanuméricos:
A="Oi"
B=" Tudo bem"
X=a+b onde x valeria "Oi Tudo bem"
Relacionais:
Si x==a então
Instruções
Sino
Instruções
Fim se
Lógicas
Se !a então
A variável está vazia
Fim se
Se a==3 and b==3 então
A e b são iguais
Fim se
Expressões e instruções
Passamos a descrever estes dois termos aplicados à programação e damos algum exemplo.
• Expressões numéricas
• Expressões alfanuméricas
• Expressões lógicas booleanas
Instruções
Com isto já temos visto os conceitos básicos para poder começar a programar em
qualquer linguagem de programação e sabendo disso, também sua sintaxe e as
possíveis mudanças com respeito a outras linguagens de programação. Agora é
hora de aprender alguma linguagem em concreto e começar a praticar tudo o que
foi aprendido neste manual.
Introdução ao banco de dados
Começamos com os conceitos básicos para conhecer o que é um banco de dados.
Nos finais dos anos sessenta, nascem os bancos de dados. Nestes bancos de dados
se salvavam os dados utilizados pelos usuários, empresas, etc. E com os programas
que os utilizam não foi preciso se preocupar de sua manutenção, nem
armazenagem porque uma mudança no banco de dados, à princípio, não tem
porque afetar aos programas que o utilizam.
Um banco de dados pode ser utilizado por várias aplicações e usuários. Todo banco
de dados deve permitir inserir, modificar e excluir dados, portanto nos bancos de
dados se salvam informações de dois tipos:
• Tem que ser versátil: isto quer dizer que, dependendo dos usuários ou das
aplicações, possam fazer diferentes coisas ou tratem aos dados de formas
diferentes.
• Tem que atender com a rapidez adequada a cada aplicação ou empresa,
atendendo a quem requeri-la.
• Tem que ter um índice de redundância o mais baixo possível.
• Ter uma alta capacidade de acesso para ganhar o maior tempo possível na
realização de consultas.
• Ter um alto índice de integridade, isto significa que ao ter muitos usuários
atacando a um mesmo banco de dados não pode ter falhas na inserção de
dados, erros por redundância ou lenta atualização.
• Obviamente, tem que ter um nível altíssimo de segurança e privacidade já
que os dados que se armazenam em um banco de dados podem ser
altamente confidenciais ou importantes. Neste ponto, também entram os
meios físicos de proteção contra fogo, roubo, etc.
• Por último, tem que ser possível sua constante atualização para não deixar o
banco de dados antigo e inservível. Quando fazemos uma mudança na
organização física dos dados não deve afetar aos programas, portanto
também tem que ter uma independência física dos dados. Assim como tem
que ter total independência lógica com os dados, isto quer dizer que se
fazemos mudanças na estrutura lógica dos dados (agregar novos campos a
uma tabela) não devem afetar às aplicações que utilizem esses dados.
Arquitetura dos bancos de dados
Mostramos os três principais níveis que apresentam os bancos de dados.
Por este motivo um banco de dados deve apresentar os dados de forma que o
usuário possa interpreta-los e modifica-los. Evidentemente, isto não pode ser
aplicado a um informático que necessite saber onde se encontram fisicamente os
dados para poder trata-los.
Podemos destacar três níveis principais segundo a visão e a função que realize o
usuário sobre o banco de dados:
Estes três níveis de visão de usuários são proporcionados pelos sistemas gestores
de banco de dados (já veremos mais adiante o que significa isto).
Dicionário de dados
As linguagens
Este modelo utiliza árvores para a representação lógica dos dados. Esta árvore esta
composta de uns elementos chamados nós. O nível mais alto da árvore denomina-
se raiz. Cada nó representa um registro com seus correspondentes campos.
Neste modelo só se podem representar relações 1:M, por isso apresenta vários
inconvenientes:
Neste modelo as entidades se representam como nós e suas relações são as linhas
que os unem. Nesta estrutura qualquer componente pode se relacionar com
qualquer outro.
Diferentemente do modelo hierárquico, neste modelo, um filho pode ter vários pais.
Normalmente o servidor é uma máquina bastante potente que atua como depósito
de dados e funciona como um sistema gerenciador de banco de dados (SGBD).
Por outro lado, os clientes costumam ser estações de trabalho que solicitam vários
serviços ao servidor.
Este tipo de arquitetura é a mais utilizada atualmente, devido ao fato de ser a mais
avançada e a que melhor evoluiu nestes últimos anos.
Podemos dizer que esta arquitetura necessita três tipos de software para seu
correto funcionamento:
Entidad
Dentro das entidades podem ser fortes ou débeis. As fortes são as que não
dependem de outras entidades para existir, enquanto que as entidades débeis
sempre dependem de outra entidade, senão não tem sentido por elas mesmas.
Relação
Podemos definir a relação como uma associação de duas ou mais entidades. A cada
relação se atribui um nome para poder distingui-la das demais e saber sua função
dentro do modelo entidade-relação. Outra característica é o grau de relação, sendo
as de grau 1 relações que só relacionam uma entidade consigo mesma. As de grau
2 são relações que associam duas entidades diferentes, e as de grau n que se
tratan de relações que unem mais de duas entidades.
Atributo
Define-se como cada uma das propriedades de uma entidade ou relação. Cada
atributo tem um nome e todos os possíveis valores que pode ter. Dentro de uma
entidade tem que haver um atributo principal que identifica à entidade e seu valor
tem que ser único. Um exemplo de atributo principal seria o dni dentro da entidade
pessoa.
Relação
• Atributo: trata-se de cada uma das colunas da tabela. Vêem definidas por
um nome e podem conter um conjunto de valores.
• Tupla: trata-se de cada uma das filas da tabela. É importante assinalar que
não se podem ter tuplas duplicadas em uma tabela.
Domínios
Chaves
Cada tupla de uma tabela tem que estar associada a uma chave única que permita
identifica-la.
Uma chave pode estar composta por um ou mais atributos.
Uma chave tem que ser única dentro de sua tabela e não se pode descartar
nenhum atributo da mesma para identificar uma fila.
Existem dois tipos de chaves:
INSTRUÇÃO DESCRIÇÃO
Componentes sintáticos
Todas começam por um verbo (select, insert, update, create), a seguir continua
com uma ou mais cláusulas que nos dizem dados com os que vamos operar (from,
where), algumas destas são opcionais e outras obrigatórias como é o caso do from.