Conceitos básicos e definições sobre programação

Transcrição

Conceitos básicos e definições sobre programação
Conceitos básicos e definições sobre programação
Começaremos com umas definições um pouco técnicas, mas que porém são imprescindíveis para a aprendizagem.
Tecnologia
Dentro do campo que nos interessa, a tecnologia tem o objetivo de eliminar as tarefas repetitivas, facilitando o trabalho
e fazendo-o mais eficiente assim como aumentando a produtividade e os benefícios da empresa.
Programação
A programação é uma das etapas mais importantes do ciclo de vida de um projeto (explicaremos mais adiante o que é
este termo), e requer um método de trabalho. A programação é o resultado de tal trabalho.
A programação é o instrumento que permite a execução das tarefas automatizadas de um sistema informático.
As ferramentas que utilizaremos para programar são as linguagens de programação, através das quais codificaremos os
programas.
Programa
Conjunto de instruções entendíveis pelo computador que permitem realizar um trabalho ou resolver um problema.
Um programa deve ser finito, ou seja, tem que ter um início e um fim. Tem que estar bem confeccionado para que, ao
introduzir um dado, saia uma solução e se, se voltasse a introduzir o mesmo dado, saísse de novo a mesma solução.
Metodologia da programação
Entende-se como metodologia da programação ao conjunto de normas, métodos e anotações que nos indicam a forma
de programar.
Cada linguagem de programação segue uma metodologia diferente.
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.
Ambiente de programação ou ambiente de desenvolvimento
É o conjunto de ferramentas utilizadas para a elaboração de um programa.
Recursos
Conjunto de componentes hardware que utilizaremos para a elaboração de um programa (cpu, disco rígido…..).
Uma vez conhecidos os conceitos básicos necessários para a aprendizagem da programação podemos começar a ver os
diferentes tipos de linguagens de programação.
Tipos de linguagens de programação
Existem dois tipos de linguagens claramente diferenciadas; as linguagens de baixo nível e as de alto nível.
Por Sara Alvarez Langa
O computador só entende uma linguagem conhecida como código binário ou código máquina, consistente em zeros e
uns. Ou seja, só utiliza 0 e 1 para codificar qualquer ação.
As linguagens mais próximas à arquitetura hardware se denominam linguagens de baixo nível e as que se encontram
mais próximas aos programadores e usuários se denominam linguagens de alto nível.
Linguagens de baixo nível
São linguagens totalmente dependentes da máquina, ou seja, que o programa que se realiza com este tipo de
linguagem não pode ser migrado ou utilizado em outras máquinas.
Ao estar praticamente desenhado a medida do hardware, aproveitam ao máximo as características do mesmo.
Dentro deste grupo se encontram:

A linguagem máquina: esta linguagem ordena à máquina as operações fundamentais para seu
funcionamento. Consiste na combinação de 0's e 1's para formar as ordens entendíveis pelo hardware da
máquina.
Esta linguagem é muito mais rápida que as linguagens de alto nível.
A desvantagem é que são bastante difíceis de manejar e usar, além de ter códigos fonte enormes onde
encontrar uma falha é quase impossível.

A linguagem Assembler é um derivado da linguagem máquina e está formada por abreviaturas de letras e
números chamados mnemotécnicos. Com o aparecimento desta linguagem se criaram os programas
tradutores para poder passar os programas escritos em linguagem assembler a linguagem máquina. Como
vantagem com respeito ao código máquina é que os códigos fontes eram mais curtos e os programas criados
ocupavam menos memória. As desvantagens desta linguagem continuam sendo praticamente as mesmas
que as da linguagem assembler, acrescentando a dificuldade de ter que aprender uma nova linguagem difícil
de provar e manter.
Linguagens de alto nível
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.
Estas linguagens permitem ao programador se esquecer completamente do funcionamento interno da máquina/s para a
que está desenhando o programa. Somente necessita de um tradutor que entenda o código fonte como as
características da máquina.
Costumam usar tipos de dados para a programação e existem linguagens de propósito geral (qualquer tipo de
aplicação) e de propósito específico (como FORTRAN para trabalhos científicos).
Linguagens de Médio nível
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
A evolução das linguagens de programação pode ser dividida em 5 etapas ou gerações.




Primeira geração: Linguagem máquina.

Quinta geração: Aqui se encontram as linguagens orientadas à inteligência artificial. Estas linguagens ainda
estão pouco desenvolvidas. Ex: LISP
Segunda geração: Criaram-se as primeiras linguagens assembler.
Terceira geração: Criam-se as primeiras linguagens de alto nível. Ex: C, Pascal, Cobol…
Quarta geração: São linguagens capazes de gerar código por si só, são os chamados RAD, com o qual podese realizar aplicações sem ser um expert na linguagem. Aqui também se encontram as linguagens orientadas
a objetos, tornando possível a reutilização de partes do código para outros programas. Ex: Visual, Natural
Adabes…
Processo de tradução das linguagens de programação
Explicamos o processo mais importante na hora de fazer funcionar um programa realizado em linguagens de alto e médio
nível.
Por Sara Alvarez Langa
Quando programamos em linguagens de alto nível, o que estamos fazendo na verdade é o código fonte desse
programa.
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.
Estes tradutores podem ser de dois tipos:
Assembler
São os encarregados de traduzir os programas escritos na linguagem assembler à linguagem máquina.
Compiladores
São programas que lêem o código fonte e o traduzem ou convertem a outra linguagem. Estes programas lhe mostram
os erros existentes no código fonte.
Etapas do processo de compilação:
1.
2.
3.
Edição. Esta fase consiste em escrever o programa empregando alguma linguagem e um editor. Como
resultado nos dará o código fonte de nosso programa.
Compilação. Nesta fase se traduz o código fonte obtido na fase anterior a código máquina. Se não se produz
nenhum erro se obtém o código objeto.
No caso de erros o compilador os mostraria para nos ajudar a corrigi-los e se procederia a sua compilação de
novo, uma vez corrigidos.
Linkado. Esta fase consiste em unir o arquivo gerado na fase dois com determinadas rotinas internas da
linguagem, obtendo o programa executável.
Existem dois tipos de linkados:
o
o
Linkado estático: Os binários das bibliotecas se acrescentam aos nossos binários compilados
gerando o arquivo executável.
Linkado dinâmico: não se acrescentam as bibliotecas ao nosso binário e sim que fará que se
carreguem na memória as bibliotecas que nesse momento se necessitem.
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.
Por este motivo é importante realizar numerosas provas em tempo de execução antes de apresentar o programa ao
cliente.
Outro sistema para a execução de nosso código fonte é mediante o uso de intérpretes (estes não se encontrariam
dentro dos tradutores).
Intérpretes
Os intérpretes realizam a tradução e execução de forma simultânea, ou seja, um intérprete lê o código fonte e vai
executando-o ao mesmo tempo.
As diferenças entre um compilador e um intérprete basicamente são:

Um programa compilado pode funcionar por si só enquanto que um código traduzido por um intérprete não
pode funcionar sem este.

Um programa traduzido por um intérprete pode ser executado em qualquer máquina já que, cada vez que se
executa o intérprete, tem que compila-lo.

Um arquivo compilado é muito mais rápido que um interpretado.
Manejando bits
Importância do manejo dos bits no mundo da programação.
Por Emmanuel García De Caro
Como bem é conhecido um Byte é um agrupamento de 8 bits respectivamente, cada bit faz parte do sistema de
numeração Binário a quem deve seu nome, ou seja, de base 2 em outras palavras pode armazenar valores
compreendidos entre 0 y 1.
Se lembramos que um sistema de numeração se conforma de um conjunto de regras e princípios que permite
expressar ou definir um número válido dentro do mesmo, podemos afirmar que a maioria deles (Sistemas: binários,
octanos, decimais, hexadecimais, etc..) se pueden representar mediante un polinomio sencillo que nos permitirá
entender su lógica:
Número = N*basen + N*basen-1+ N*basen-2 até que a base fique elevada à 0 sempre e quando não contiver decimais o
"Número"
Onde Número é o valor expressado dentro do sistema, base como seu nome o indica a base do sistema (se é binário :
2 , octano: 8, decimal: 10, hexadecimal : 16, etc…) e n a posição que ocupa o digito "N" dentro do Número.
Exemplos em sistema decimal (base:10):
18598 1*10
4
+ 8*10 3 + 5*10 2 + 9*10 1 + 8*10
0
Descompomos o valor expressado "18598" multiplicando-o pela base do sistema (10) elevada à posição do dígito na
expressão.
O número 1 encontra-se iniciando a expressão e salva em seu interior 10 000 (Para comprova-lo: se eliminarmos o 1 o
resultado será (18598-10 000)) portanto 10 000 é igual a 10
4
(1*104)=10 000 + (8*103)= 8 000…
No sistema de numeração binário a mesma fórmula é aplicável:
10 (número binario) = 1*2
1
+ 0*2 0
O que indica que 10, no sistema decimal é igual 2, na verdade, no sistema de numeração binário pode-se definir
qualquer número inteiro maior ou igual a 0, entretanto a estrutura de armazenamento Byte só foi desenhada desde sua
origem para armazenar até 256 porque inclui como máximo 8 bits (28 = 256) (lembremos que leva-se em conta o 0
pelo qual 255 equivalerá a 256) e foi escolhido este valor como máximo porque é a totalidade de caracteres disponível
na tabla ASCII, que inclui todos os caracteres válidos dentro de um computador, para comprovar isto podemos salvar
um caractere em um arquivo sem formato e como resultado teremos que sempre ocupará 1 byte, se colocamos 2
caracteres o tamanho do arquivo será igual a 2 bytes. O que justifica que 1 byte = 8 bits = pode armazenar até 256. e
1 bit é a mínima unidade na que se pode armazenar informação. Exemplo: o tipo booleano (bool) ocupa na memória 1
bit, portanto TRUE = 1 FALSE=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)
Como referia anteriormente, a tabela ASCII inclui todos os caracteres válidos dentro do computador, desde todas as
letras em minúsculas e maiúsculas, números e outros especiais, estes últimos utilizados em sua maioria como
delimitadores ou separadores guia dentro de um formato de arquivo de conteúdo binário (PDF, DOC, EXE, DLL, OCX,
ENTRE OUTROS) Exemplo de delimitadores: O endereço IP inclui 4 pares de cujo valor máximo é 255 para poder
representa-lo em decimal se faz mais que necessário, obrigatório o uso de delimitadores pelo qual se emprega um ".
(Ponto)" de modo tal que 255.255.255.255, para reduzir esta informação a 4 bytes poderemos acudir à tabela ASCII.
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)
Como comentávamos anteriormente o bit se conforma de 0 e 1 respectivamente portanto afirmaremos a partir de
agora que 0 É IGUAL A FALSO (false) E 1 É IGUAL A VERDADEIRO (true) se tivermos um conjunto de 8 bits o
somaremos segundo sua posição, sempre e quando o bit for VERDADEIRO, ou seja, seu conteúdo for igual a 1,
exemplo: dado os bits "10111011" para converte-lo a decimal aplicamos a tabela:
128 62 32 16 8 4 2 1
1 0 1 1 1011
E posteriormente, somamos somente os valores que são "VERDADEIROS" então: 128+32+16+8+2+1=187 Parabéns!
10111011=187!, então, podemos dizer que para armazenar 256 necessitaremos que os 8 bits sejam verdadeiros, ou
seja, 8 bits e já teremos nosso byte.
Para fazer o processo contrário, ou seja, de decimais a binário, só temos que descompor o decimal dividindo-o sempre
entre 2 até que o valor seja igual a 1, o agrupamento dos resíduos obtidos será nosso valor binário; obviamente os
resíduos sempre serão (0 ou 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:
Podemos defini-lo como a ação de transportar bytes de um extremo da expressão a outro, como a expressão está
conformada por 2 só se pode fazer em dois sentidos, esquerda e direita.
a.
Deslocando bits à esquerda (<<)
Consiste em mover a quantidade de bit indicada na expressão, da esquerda à direita, esta operação equivale
a multiplicar por 2.
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
b.
c.
2 bits
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:
128 >>4 deslocaremos 4 bits da direita à esquerda.
128 em binário é igual a: 10000000, moveremos os últimos 4 bits à parte inicial ( da direita a esquerda), o
resultado será 00001000 cujo valor é igual a 8
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 |
Lembraremos que chamaremos 0 em binário False e 1 True, então o operador OR
Avaliará as expressões e produzirá TRUE ou seja, 1 só se um dos 2 bits a comparar for igual a 1. Exemplo:
Expressão: 5 | 12
5 em binário é igual a 00000101
12 em binário = 00001100
Resultado : 00001101 = 13
Só se um par dos bits a comparar for 1 o resultado será 1, se comporta exatamente igual a uma condição: (true ||
false) é igual a true; (false || false) é igual a false, sua razão se deve a que a condição de dois ou mais argumentos se
transforma sempre em binários para realizar a comparação utilizando o processador e a memória de computador.
Operador de lógica AND &
Só se o par de bits a comparar for igual a 1 o resultado será 1.
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 ^
Só se o par de bits a comparar for diferente será igual a 1.
Expresión: 5 ^ 12
5 em binário é igual a 00000101
12 em binário = 00001100
Resultado : 00001001 = 9
Similar a (TRUE XOR FALSE) es igual a true, ( TRUE XOR TRUE) es igual a false.
Operador Not ~
Só se o bit a comparar for igual a 0 (False) será igual a 1.
Expressão: ~5
5 em binário é igual a 00000101
Resultado : 00000010 = 2
Similar a (!FALSE) é igual a true
Importância do manejo dos bits
Como programador darrei uma opinião muito pessoal, torna-se indispensável na construção de aplicações em grande
escala o desenvolvimento de formatos pessoais baseados em esquemas que armazenam a informação empregada de
modo comprimido para a utilização de um ou outros recursos de nossa aplicação, permitindo ao usuário final maior
comodidade y segurança durante o transporte da informação e oferecendo-lhe a capacidade de torna-las compatíveis
com outras aplicações, e deixar a um lado (dependendo do objetivo) o típico uso de banco de dados que requerem
recursos adicionais do computador ademais de interpretadores, etc. Considero que a informação redigida contribui
consideravelmente a encaminhar seus esforços nessa direção.
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.
Por Sara Alvarez Langa
Os tipos ou técnicas de programação são bastante variados, embora pode ser que haja muitos leitores que só
conheçam uma metodologia para realizar programas. Na maioria dos casos, as técnicas centram-se em programação
modular e programação estruturada, porém existem outros tipos de programação. Explicaremos isso melhor ao longo
do artigo.
Programação estruturada (PE)
A programação estruturada é composta por um conjunto de técnicas que foram se evoluindo aumentando
consideravelmente a produtividade do programa reduzindo o tempo de depuração e de manutenção do mesmo.
Esta programação estruturada utiliza um número limitado de estruturas de controle, reduzindo assim
consideravelmente os erros.
Esta técnica incorpora:


Design descendente (top-dow): o problema se descompõe em etapas ou estruturas hierárquicas.

Estruturas básicas: existem três tipos de estruturas básicas:
o Estruturas seqüenciais: cada ação segue a outra ação seqüencialmente. A saída de uma ação é a
entrada de outra.
o Estruturas seletivas: nestas estruturas avaliam-se as condições e em função do resultado das
mesmas realizam-se umas ações ou outras. Utilizam-se expressões lógicas.
o Estruturas repetitivas: são seqüências de instruções que se repetem um número determinado de
vezes.
Recursos abstratos (simplicidade): consiste em descompor as ações complexas em outras mais simples
capazes de ser resolvidas com maior facilidade.
As principais vantagens da programação estruturada são:




Os programas são mais fáceis de entender
Reduz a complexidade das provas
Aumenta a produtividade do programador
Os programas ficam melhor documentado internamente.
Um programa está estruturado se possui um único ponto de entrada e só um de saída, existem de "1 a n" caminhos
desde o princípio até o fim do programa e por último, que todas as instruções são executáveis sem que apareçam loops
infinitos.
Programação modular
Na programação modular consta de várias seções dividas de forma que interagem através de chamadas a
procedimentos, que integram o programa em sua totalidade.
Na programação modular, o programa principal coordena as chamadas aos módulos secundários e passa os dados
necessários em forma de parâmetros.
Por sua vez cada módulo pode conter seus próprios dados e chamar a outros módulos ou funções.
Programação orientada a objetos (POO)
Trata-se de uma técnica que aumenta consideravelmente a velocidade de desenvolvimento dos programas graças à
reutilização dos objetos.
O elemento principal da programação orientada a objetos é o objeto.
O objeto é um conjunto complexo de dados e programas que possuem estrutura e fazem parte de uma organização.
Um objeto contém vários dados bem estruturados e podem ser visíveis ou não dependendo do programador e as ações
do programa nesse momento.
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.
Publicamos em CriarWeb.com anteriormente uma explicação do que é a programação orientada a objetos.
Programação concorrente
Este tipo de programação se utiliza quando temos que realizar várias ações de só uma vez.
Costuma-se utilizar para controlar os acessos de usuários e programas a um recurso de forma simultânea.
Trata-se de uma programação mais lenta e trabalhosa, obtendo uns resultados lentos nas ações.
Programação funcional
Caracteriza-se principalmente por permitir declarar e chamar a funções dentro de outras funções.
Programação lógica
Costuma-se utilizar na inteligência artificial e em pequenos programas infantis. Trata-se de uma programação baseada
no cálculo de predicados (uma teoria matemática que permite conseguir que um computador baseando-se em fatos e
regras lógicas, que pode dar soluções inteligentes).
Importância da documentação
Descrevemos os aspectos chaves para o desenvolvimento de uma boa documentação do programa para entregar ao cliente.
Por Sara Alvarez Langa
A documentação dos programas é um aspecto sumamente importante, tanto no desenvolvimento da aplicação como na
manutenção da mesma. Muita gente não faz esta parte do desenvolvimento e não se dá conta de que perde a
possibilidade da reutilização de parte do programa em outras aplicações, sem necessidade de conhecer o código no
dedo.
A documentação de um programa começa com a construção do mesmo e finaliza justo antes da entrega do programa
ou aplicação ao cliente. Mesmo assim, a documentação que se entrega ao cliente terá que coincidir com a versão final
dos programas que compõem a aplicação.
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 documentação que se entrega ao cliente se divide claramente em duas categorias, interna e externa:

Interna: É aquela que se cria no mesmo código, já pode ser em forma de comentários ou de arquivos de
informação dentro da aplicação.

Externa: É aquela que se escreve em cadernos ou livros, totalmente alheia à aplicação em si. Dentro se esta
categoria também se encontra a ajuda eletrônica.
A guia técnica
No guia técnico ou manual técnico se refletem o design do projeto, a codificação da aplicação e as provas realizadas
para seu correto funcionamento. Geralmente este documento está desenhado para pessoas com conhecimentos de
informática, geralmente programadores.
O principal objetivo é o de facilitar o desenvolvimento, a correção e a futura manutenção da aplicação de uma forma
rápida e fácil.
Este guia está composto por três seções claramente diferenciadas:

Caderno de carga: É onde fica refletido a solução ou design da aplicação.
Esta parte do guia é unicamente destinada aos programadores. Deve estar realizado de tal forma que
permita a divisão do trabalho.

Programa fonte: É onde se inclui a codificação realizada pelos programadores. Este documento pode ter, por
sua vez, outra documentação para sua melhor compreensão e pode ser de grande ajuda para a manutenção
ou o desenvolvimento melhorado da aplicação. Este documento deve ter uma grande clareza em sua
escritura para sua fácil compreensão.

Provas: é o documento onde se especificam o tipo de provas realizadas ao longo de todo o projeto e os
resultados obtidos.
O guia de uso
É o que comumente chamamos o manual do usuário. Contem a informação necessária para que os usuários utilizem
corretamente a aplicação.
Este documento é feito através do guia técnico, porém se suprimem os tecnicismos e se apresenta de forma que seja
entendível para o usuário que não seja experiente em informática.
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
É o guia que contém a informação necessária para implementar tal aplicação.
Dentro deste documento encontram-se as instruções para o andamento do sistema e as normas de utilização do
mesmo.
Dentro das normas de utilização incluem-se também as normas de segurança, tanto as físicas como as referentes ao
acesso à informaçã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.
Por Sara Alvarez Langa
Estruturas de um programa
Um programa vai se dividir em 3 partes claramente diferenciadas:



processos de entrada
processo de dados
processos de saída
Todo programa está constituído por um conjunto de instruções capazes de administrar um conjunto de dados.
Algoritmos
Um algoritmo é a descrição abstrata de todas as ações que deve realizar um computador, que nos conduz à solução do
problema.
Deve ser conciso e detalhado, assim como finito, porém, sobretudo tem que ser claro e o mais simples possível.
Ferramentas e técnicas para o desenho de algoritmos
Para o desenho de algoritmos o que mais se utiliza são os diagramas de fluxos.
Diagramas de fluxo
Os diagramas de fluxo são representações gráficas que mediante o uso de símbolos unidos mediante linhas de fluxo,
mostram a seqüência lógica que se deve suceder para a solução do problema.
Os diagramas de fluxo devem ser independentes da linguagem de programação empregada, devem ser flexíveis e
simples.
Por outro lado têm que estar normalizados com algum padrão como pode ser o ISO (a nível mundial), ANSI (a nível
americano) ou o IEEE ( a nível europeu)
Existem 3 tipos principais de diagramas de fluxos:

Fluxograma de bloco: Representação gráfica simples com os elementos que representam a entrada e saída
de dados do programa

Fluxograma padrão: Representação gráfica com seqüências lógicas e detalhadas de todos os passos a seguir
para a resolução do algoritmo.

Pseudocódigo: Linguagem intermediária entre o natural e o de programação que representa mediante a
palavra, a solução do algoritmo.
Dentro destes três os mais utilizados são os ordinogramas ou pseudocódigos, já que são os que mais ajudam aos
programadores na hora de passar esses algoritmos às diferentes linguagens de programação.
Nos seguintes artigos aprofundaremos mais em cada um deles e aprenderemos a construí-los e lê-los para seu
posterior passo à linguagem de programação que se requer.
Fluxogramas
Explicamos o que são, como se constroem e as representações gráficas utilizadas para sua construção.
Por Sara Alvarez Langa
Um fluxograma é uma representação gráfica que apresenta as entradas e saídas de dados ao programa.
Os fluxogramas dividem-se em três partes claramente diferenciadas:



Entrada: que deve aparecer na parte superior da representação gráfica
Processo: que deve aparecer na parte central da representação gráfica
Saída: que deve aparecer na parte inferior
Símbolos para os dispositivos de entrada/saída
Desenho
Dispositivo
Tipo
teclado
entrada
monitor
saída
disquete
Entrada/Saída
Impressora
Saída
Discos magnéticos entrada/saída
Símbolos para os dispositivos de processos
Símbolo
Processo
Qualquer processo ou operação que realizarmos, salvo as que
operarmos com arquivos.
Classificação de dados em um arquivo
Extração de dados de um arquivo
União de vários arquivos em um só
Datas utilizadas nos fluxos de dados
Setas
Função
Linhas de tele-processo
Direção do fluxo de dados
Para entender melhor os fluxogramas temos estes três exemplos:
Fluxograma que reflete a soma de 3 números lidos pelo ecrã, o resultado aparece na tela
Fluxograma que reflete a atualização de um arquivo de dados (quadro de funcionários, por exemplo)
Fluxograma que reflete a união de vários arquivos em um só.
Fluxogramas II
Um dos diagramas de fluxos mais utilizado. Muito parecido com o anterior, porém mais detalhado e preciso.
Por Sara Alvarez Langa
Tratamos de outro diagrama de fluxos que mostra a seqüência lógica e detalhada das operações que necessitamos para
a realização de um programa.
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
Este fluxograma deve estar composto de:

Um símbolo de início de execução do programa

A seqüência de operações necessárias para o correto funcionamento do programa. As operações seguirão
uma ordem (de acima abaixo e da esquerda à direita).

Um símbolo que indique o final do programa.
Símbolos utilizados
Simbolo
Descrição
Para início/fim ou para uma parada
indeterminada
Símbolo de entrada/saída genérico
Representa uma operação ou processo geral
com dados de memória.
Símbolo de sub-programa ou sub-rotina.
Utiliza-se para realizar uma chamada a um
módulo do programa.
Símbolo de decisão para realizar uma pergunta
com duas possíveis respostas. É o que
chamamos de símbolo de seleção simples.
Símbolo de múltipla seleção
Símbolo de loop definido.
Conector. Utiliza-se para agrupar várias linhas
de fluxo que saem da mesma origem.
Símbolo para colocar comentários
Regras na hora de fazer fluxogramas
Todos os símbolos utilizados devem estar unidos por linhas de fluxo.
Não se pode cruzar as linhas de fluxo
A um símbolo de processo podem chegar várias linhas de fluxo, porém só pode sair uma dele.
Ao símbolo de início não pode chegar nenhuma linha de fluxo
De um símbolo de fim não pode sair nenhuma linha de fluxo, mas sim podem chegar várias a ele.
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.
Por Sara Alvarez Langa
O principal objetivo do pseudocódigo é o de representar a solução a um algoritmo da forma mais detalhada possível, e
por sua vez o mais parecido possível à linguagem que posteriormente se utilizará para a codificação do mesmo.
As principais características desta linguagem são:





Pode-se executar em um computador.
É uma forma de representação simples de utilizar e de manipular.
Facilita o passo do programa à linguagem de programação.
É independente da linguagem de programação que for utilizar.
É um método que facilita a programação e solução ao algoritmo do programa.
Todo documento em pseudocódigo deve permitir a descrição de:





Instruções primitivas
Instruções de processo
Instruções de controle
Instruções compostas
Instruções de descrição
Estrutura a seguir em sua realização:
Cabeçalho:





Programa:
Módulo:
Tipos de dados:
Constantes:
Variáveis:
Corpo:



Início
Instruções
Fim
Para comentar em pseudocódigo, se antepõe ao comentário dois asteriscos (*)
Exemplos
* Programa que calcula a área de um quadrado a partir de um lado dado por teclado.
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
* Programa que visualize a tabela de multiplicar do número introduzido por teclado
Programa: Tabela multiplicar
Modulo: main
Variaveis:
t: inteiro
num : inteiro
Inicio
Visualizar "Introduza um numero"
Ler num
Desde t=1 ate t=10 repetir
Visualizar num, " X", t, "=", num*t
Fim desde
Fim
Uma vez que tivermos preparado um diagrama de fluxos (fluxograma) e um pseudocódigo, já podemos começar com a
codificação do programa em nosso computador. A partir de aqui tudo varia dependendo da linguagem de programação
que utilizarmos, porém em todos os programas teremos que definir os tipos de dados que utilizaremos. Tudo isso e
mais, será falado no seguinte artigo.
Tipos de dados
Neste artigo falaremos dos possíveis tipos de dados que podemos utilizar na criação de nossos programas.
Por Sara Alvarez Langa
Antes de mergulharmos nos diferentes tipos de dados, passarei a descrição de dado para que tudo fique claro desde o
princípio.
Dado
Elemento que não manejamos ou armazenamos em um sistema informático. Os dados manejados em um algoritmo
devem levar associado um identificador, um tipo de dado e seu valor.
Dados básicos
Dentro dos dados básicos podemos encontrar os dados estáticos, derivados e estruturados.
Os dados estáticos são os seguintes:





inteiro, real e natural para os números
caracteres
cadeia
lógico
enumerado
Como dado derivado encontramos os ponteiros que hoje em dia quase não se utilizam, a não ser que se programe em
C.
Os mais complexos são os estruturados e os principais são:






array
Estruturas
Listas, pilhas, filas e árvores ( muito utilizados em C)
Classes e objetos
Arquivos
Banco de dados
Os quatros primeiros são os internos enquanto que os dois últimos correspondem a tipos de dados externos.
Constantes e variáveis
Define-se como variável a uma posição de memória referenciada por um identificador onde se pode armazenar um
valor determinado (Tipo de dado).
Define-se como constante a um valor que não se modifica ao longo de toda a execução do programa.
Operadores
Passamos a detalhar os diferentes operadores que existe e seu funcionamento.
Por Sara Alvarez Langa
Os operadores se classificam em aritméticos, alfanuméricos, relacionais, lógicos e por último um pequeno grupo de
operadores especiais que dependerá das diferentes linguagens utilizadas.
Operadores aritméticos:



Para a soma e a subtração se utilizam respectivamente os símbolos; "+" "-"
Para a divisão e encontrar o resto da mesma se utilizam respectivamente os símbolos; "/" "%"
Para multiplicar e elevar potencias se utilizam respectivamente os seguintes símbolos; "*" "**"
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:



O símbolo "==" nos compara dois valores
O símbolo "!=" significa diferente e nos devolve verdadeiro se os valores comparados são diferentes.
Logo temos os demais signos como são; "<", ">", "<>", "<=", ">="
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.
Por Sara Alvarez Langa
Expressões
Como definição de expressões entendemos que é um conjunto de operandos e operadores, que depois de serem
avaliados devolvem um determinado resultado.
Em função do resultado obtido podemos classifica-las em:



Expressões numéricas
Expressões alfanuméricas
Expressões lógicas booleanas
Instruções
Como definição de instruções entendemos que é um fato ou acontecimento de duração limitada que gera umas
mudanças na execução do programa.
Existem vários tipos de instruções:

Instruções de definição de dados
X: inteiro

Instruções primitivas
o de entrada (ler x)
o de atribuição (x<-3)
o de saída (visualizar x)

Instruções compostas:
São aquelas instruções que são executadas diretamente pelo processador e estão constituídas por um
conjunto de ações agrupadas em módulos.

Instruções de controle:
São utilizadas para controlar a seqüência de execução do programa. Dentro deste tipo de instruções se
encontram as instruções de salto que são aquelas que alteram ou rompem a seqüência de execução de um
programa. Este tipo de instrução não se utiliza na programação estruturada.
Por sua vez, temos as instruções alternativas que controlam a execução ou não de uma ou mais instruções
em função da condição. Estão as instruções de alternativa simples, dupla e múltipla.
Por último, dentro deste grupo de instruções de controle estão as instruções repetitivas que são aquelas que
nos permitem alterar a seqüência normal da execução de um programa tornando possível que um grupo de
instruções possam se repetir mais de uma vez.
Todo loop está composto de três partes claramente diferenciadas:
o A: Parte da condição, pode ser qualquer expressão.
o B: Corpo do loop. São o conjunto de instruções que se repetirão.
o C Parte final do loop. É o último em se executar quando não se cumpre a condição.
Os elementos que intervêem na expressão que conforma a condição devem estar sempre refletidos no corpo
do loop de tal forma que sempre exista a possibilidade de sair do mesmo.
Existem dois tipos principais de loops:
o
o
Loop do-while: Repetem-se as instruções até que não se cumpra a condição
While <<condicao>> fazer
Instrucoes
Fin while
Loop para (for) repetem-se as instruções um número determinado de vezes.
Para v<-0 ate vf[com i de incremento] fazer
Instrucoes
Fim para
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.