Escolar Documentos
Profissional Documentos
Cultura Documentos
ALGORITMIA
Programa .................................................................................................................................................................................. 1
Tipos de Linguagens.................................................................................................................................................................. 1
Algoritmos ............................................................................................................................................................................ 4
Caracteres .................................................................................................................................................................... 4
Inteiros......................................................................................................................................................................... 5
Reais ............................................................................................................................................................................ 5
Decimais .................................................................................................................................................................. 5
Dados estruturados.......................................................................................................................................................... 5
Registos ....................................................................................................................................................................... 6
Constantes ............................................................................................................................................................................ 7
Variáveis ............................................................................................................................................................................... 7
Funções ................................................................................................................................................................................ 9
Negação ..................................................................................................................................................................... 12
Conjunção .................................................................................................................................................................. 12
Disjunção ................................................................................................................................................................... 13
Estruturas de Controlo............................................................................................................................................................ 17
SE ENTAO ................................................................................................................................................................... 18
Iteração ............................................................................................................................................................. 22
Contador ........................................................................................................................................................... 22
Acumulador....................................................................................................................................................... 22
Programa
O que é um programa?
Linguagens de programação
Uma linguagem de programação é uma linguagem com uma sintaxe própria, com a qual se podem escrever
programas de software. Existem várias linguagens de programação, cada qual com o seu conjunto de estruturas,
sentenças e regras específicas.
Tipos de Linguagens
Linguagem de Alto-nível
São assim chamadas por estarem muito acima da linguagem máquina ou do hardware e se aproxima da linguagem
humana (inglês). A maior parte das aplicações desenvolvidas por programadores é feita utilizando linguagens de
alto-nível. Exemplos de linguagem de alto nível:
• C
• Pascal
• Visual Basic
• Delphi, etc.
[1]
Linguagem de Baixo-nível
Pelo contrário, a programação em linguagens de baixo nível implica que o programador tenha um profundo
conhecimento da arquitectura interna do computador e do seu conjunto de instruções máquina, pelo que esta
linguagem não é normalmente utilizada para o desenvolvimento de aplicações. Cada família de processadores criou
a sua própria linguagem Assembly.
Uma linguagem Assembly consiste num conjunto de palavras que codificam as instruções de máquina (zeros e uns)
com que cada determinado processador funciona.
Estas linguagens são muito complexas e difíceis de utilizar pois, para cada instrução-máquina tem de se escrever
uma instrução em Assembly, o que torna os programas muito extensos e sujeitos a erros difíceis de detectar. Por
essa razão apareceram as linguagens de alto-nível.
Linguagem máquina
É a codificação das instruções com que os computadores funcionam e a única que o seu hardware reconhece e
decifra. Essas instruções são dadas em agrupamentos de bits ou bytes, utilizando a linguagem binária, devidamente
codificados em sinais eléctricos.
Cada arquitectura de processador ou CPU determina uma linguagem – máquina própria que consiste no conjunto
de instruções codificadas em zeros e uns que o processador reconhece e sabe decifrar.
Estas linguagens são muito difíceis de utilizar (eram utilizadas no início) e obrigava os programadores a terem de
conhecer em grande pormenor a estrutura e a forma de funcionamento de cada modelo de computador com eu
trabalhasse. Por isso era uma tarefa reservada a uma minoria de especialistas.
Diferenças
A principal diferença prende-se com o facto de, nas linguagens tradicionais o programador é obrigado a escrever o
código para o interface e só depois de executar o código é que pode ver o resultado do código desenvolvido.
Exemplos: Pascal, C, Cobol, etc.
[2]
Com o aparecimento de novos utilizadores de computadores surgiu a necessidade de encarar a programação como
uma simulação do mundo real, surgiram então linguagens de programação como o Visual C, CBuilder, Visual Basic,
Delphi, etc.
Com estas linguagens de programação, o desenho do interface pode ser feito sem recurso directo à programação.
O ambiente de desenvolvimento proporciona as funcionalidades necessárias para que o programador possa
manipular os vários objectos do interface obtendo de imediato uma visualização prévia da aplicação que se está a
desenvolver.
Fases da Programação
1. Análise do problema;
2. Desenvolvimento da solução;
3. Construção da solução sob a forma de programa;
4. Testagem/ Traçagem;
5. Preparação da documentação.
Os computadores executam apenas o que lhe mandam fazer e não necessariamente o que queremos que o
computador faça.
Não deve existir ambiguidade nas instruções fornecidas nos programas, nem a possibilidade de interpretações
alternativas.
A programação em computadores é uma actividade complexa e que utiliza muita actividade mental. O seu trabalho
pode ser facilitado quando se utiliza a aproximação “dividir para conquistar”.
Para que a programação seja concisa e bem feita, é necessário separar a fase de resolução da fase de
implementação com é ilustrado na figura seguinte:
Passo difícil
Programa de
Computador
[3]
Algoritmos
O que é um Algoritmo?
Um Algoritmo pode ser definido como uma sequência de passos sem ambiguidades e que levam à resolução de um
dado problema.
Tipos de Dados
Existem 2 tipos de dados: Dados simples ou primitivos e dados estruturados.
• Caracteres;
• Dados numéricos;
• Lógicos ou booleanos.
Há ainda autores que defendem um quarto tipo de dados simples: Data. No entanto, há autores que defendem
que a data é um tipo de dados estruturado, composto ou complexo, uma vez que, na realidade é uma composição
de 3 elementos: dia, mês e ano que, só por si fazem sentido.
Caracteres
Também chamados de Alfanuméricos ou Strings, o que quer dizer que neste tipo de dados podemos utilizar letras
ou números, porém estes não são reconhecidos como números, mas como simples caracteres como os outros.
Exemplo: “Amanhã é dia 25 de Fevereiro”.
Se pretendermos “somar” os dígitos 1 +1 e estes sejam do tipo caractere, vai ocorrer uma concatenação, ou seja,
uma junção. Assim:
[4]
1+1 =2, se estivermos a falar de dados do tipo numéricos
Dados numéricos
Outro grupo de dados é constituído pelos vários tipos de dados numéricos. A principal divisão dos tipos de dados
numéricos é a que os divide em:
• Inteiros
• Reais
• Decimais
• Vírgula Flutuante
Inteiros
Números inteiros negativos, zero e positivos. Exemplos: 2,0; 2x106; -12x108.
Reais
Muitos autores subdividem este grupo em 2 subgrupos, outros apenas falam no grupo dos reais. A subdivisão é
feita da seguinte forma:
Decimais
Números reais em que figuram partes decimais. Exemplos: 2,5; 2x10-5
Vírgula flutuante
Quando as casas decimais são superiores a 15, entramos neste subgrupo, por exemplo: 17,5x10-16.
Dados estruturados
A partir dos tipos de dados simples podem criar-se outros tipos de dados mais complexos: os dados estruturados.
[5]
Neste grupo podemos ter conjuntos ordenados de dados todos do mesmo tipo base chamados Arrays. Também
podemos ter estruturas com tipos de dados diferentes neste caso estamos perante um registo.
Arrays e Matrizes
Estruturas de dados todas do mesmo tipo (por exemplo inteiros), e com um nome comum em todos eles. A sua
identificação é dada por um número. Estes tipos de dados podem ser simples (ou vetores) ou bidimensionais
(matrizes) , como podes ver na figura seguinte:
Registos
São conjuntos de dados que podem ou não ser diferentes entre si. Normalmente estes dados são considerados
campos da estrutura. Podemos ainda ter arrays ou ficheiros de registos, etc, como podes ver na figura seguinte:
Constantes e Variáveis
Em algoritmos e em programas de computador, os dados podem surgir sob a forma de constantes ou de variáveis.
[6]
Constantes
Um dado que permanece inalterável do início ao fim do algoritmo. Exemplo: o valor de π (Pi).
De forma direta – Valores numéricos, alfanuméricos ou outros, expressos literalmente pelo que são. Exemplos:
0,75; “Janeiro”.
Sob a forma de identificadores – nomes que identificam ou representam determinados dados ou valores. Por
exemplo:
Constante taxa←0,19 - Define uma constante com o nome taxa e esta terá o valor 0,19
Constante nome← “Ana Matias” - Define uma constante chamada nome e esta associada a si a string ou conjunto
de caracteres “Ana Matias”.
Nota: Os tipos de dados alfanuméricos (strings, caracteres) são inseridos entre aspas ou apóstrofes (plicas), isto
evita que possa haver confusão entre identificadores e strings.
Variáveis
É uma entidade que possui um valor que pode sofrer alterações durante o algoritmo e é reconhecida nos programas
pelo seu nome. As variáveis são sempre designadas através de identificadores, ou seja, nomes que as identificam.
A cada variável é também associado um determinado tipo de dados e a sua declaração é sempre realizada no início
do algoritmo, por exemplo:
Esta declaração define que no decorrer de um algoritmo vai ser utilizado um valor que se pode alterar, com o nome
idade e TODOS os dados terão obrigatoriamente de ser inteiros.
[7]
Atribuição de valores a variáveis
Chamam-se Instruções de atribuição às operações internas de um programa ou algoritmo que atribuem um valor
à variável. Esta operação de atribuição especifica que a uma variável é dado um novo valor. Esta operação utiliza o
seguinte símbolo:
Exemplos:
Nome←“Ana Matias” - Indica que a variável Nome recebe a cadeia de caracteres “Ana Matias”.
Expressões
Uma expressão é uma combinação de variáveis, constantes e operadores. O resultado da avaliação da expressão é
atribuído a uma variável.
Variável ← Expressão
Existem expressões que embora não tenham sentido na matemática têm em computação, como por exemplo:
X ← X+1
Operadores Existentes
1.Exponenciação ↑
Prioridades de Operadores
Em algoritmia numa expressão com vários operadores e funções temos precedências para a realização das
operações como aliás já acontece com as expressões matemáticas.
[8]
As precedências ou prioridades são as seguintes:
1. Parêntesis retos
2. Parêntesis curvos
3. Expoentes
4. Multiplicação, divisão e funções
5. Soma e subtração
Nota bem: Quando 2 operadores são iguais (soma e subtração, por exemplo), as operações fazem-se da esquerda
para a direita. Exemplo:
5+3-1=8-1=7
O parêntesis é avaliado antes dos outros operadores. Dentro do parêntesis, são utilizadas as precedências normais.
Funções
Existem algumas fórmulas pré-programadas em algoritmia e nas diversas linguagens de programação. Isto significa
que não é necessário haver uma preocupação da nossa parte para conhecer o seu funcionamento, apenas na forma
de aplicação. De seguida, apresentam-se algumas funções utilizadas em algoritmia. Cada linguagem de
programação terá os próprios nomes para as evocar. Os nomes das funções são PALAVRAS RESERVADAS, ou seja,
não podem ser utilizadas como nomes de variáveis para não haver confusão.
ABS (X) Calcula o valor absoluto de um número ou de uma expressão. ABS (-1) ←1 | ABS (1) ←1
TRUNC (X) Trunca (corta) o valor de um número com casas decimais ou de TRUNC(2,6) ←2 | TRUNC(2,3) ←2
uma expressão.
ROUND (X) Arredonda o valor de um número com casas decimais ou de uma ROUND(2,6) ←3 | ROUND(2,3) ←2
expressão.
[9]
Função Definição Exemplo de aplicação
Linguagem Algorítmica
Extraindo as melhores características das duas últimas aproximações e combinando-as numa linguagem especial.
OBTER (variável)
[10]
Saída de Dados
A saída dos dados num algoritmo pode ser feita através de vários dispositivos, por exemplo: monitor, impressora,
um disco, etc.. Esta saída é representada pelas seguintes palavras reservadas:
Se pretendermos escrever texto e valores das variáveis temos de colocar o texto pretendido entre aspas e separar
os elementos por vírgulas. Outro Exemplo:
Todos os elementos estão escritos separados por vírgulas. O que a linha anterior faz é escrever na mesma linha
todos os elementos.
As expressões numéricas são aquelas que utilizam apenas operadores aritméticos. As expressões booleanas são
expressões que utilizam operadores de comparação e/ou lógicos e se espera obter um resultado lógico, ou seja:
verdadeiro ou falso.
= Igualdade
[11]
Operador Significado
<> Diferente de
|N Incluído em
Operadores lógicos
Operador Significado
AND - E Conjunção
OR - OU Disjunção
Negação
A NEGAR(A)
V F
F V
Conjunção
A B (A) E (B)
V V V
[12]
A B (A) E (B)
V F F
F V F
F F F
Disjunção
A B (A)OU (B)
V V V
V F V
F V V
F F F
[13]
Elaboração de Algoritmos
Abordagem Top-Down
É um método de abordagem de problemas em que se procura identificar os pontos essenciais da questão e se parte
dos pontos gerais para os particulares, em níveis mais concretos. É o método mais utilizado para expressar
algoritmos em linguagem comum. Exemplo:
Imagine que pretendemos calcular a soma de 2 números introduzidos pelo utilizador. Poderíamos subdividir o
problema nos seguintes pontos:
1. Descrição das variáveis e constantes - É a primeira parte do algoritmo. Aqui serão discriminadas todas
as constantes e variáveis (identificadores e tipos) a ser utilizadas na elaboração do algoritmo.
2. Resolução do problema pedido - Expressões e raciocínio lógico necessários para e resolução do
problema.
3. Apresentação dos resultados - Apresentação dos resultados ao utilizador.
Exemplo:
Para demonstrar como se elabora um algoritmo vamos pegar no exemplo da soma de 2 números.
[14]
Que variáveis vamos precisar e de que tipo? Esta é a primeira parte e das mais importantes do algoritmo. Devemos
ter cuidado ao escolher o tipo de dados para evitarmos possíveis erros no programa. Neste exemplo que variáveis
vamos utilizar?
E o tipo? Serão inteiras ou reais? Estes dados são dados no enunciado do problema, como aqui não temos nada
que nos dê indicações do tipo de dados poderemos escolher. Vou escolher inteiro.
O que nos é pedido é que o utilizador introduza 2 números e seja calculada a sua soma.
LER (num1)
LER (num2)
soma←num1+num2
[15]
Para apresentar os resultados no ecrã poderemos utilizar a palavra reservada que se adaptar ao enunciado do
problema. Neste caso vamos escrevê-lo no monitor visto que também não nos é dito nada sobre a forma de
apresentar os resultados.
INICIO
LER (num1)
LER (num2)
soma←num1+num2
FIM
[16]
Nota: Todos nos algoritmos têm um INICIO e um FIM. O INICIO é colocado logo a seguir à declaração das variáveis
e o FIM é a última instrução!
Todos os algoritmos seguem os mesmos passos muda apenas o raciocínio dependendo do enunciado do desafio.
Verificar se a estratégia está correta, executando traçagens (testes) para entradas diferentes.
Verificar sempre se cada vez que um passo é decomposto em vários, estes executam os objetivos do passo
original.
Estruturas de Controlo
Quando se elabora um algoritmo é frequentemente necessário jogar com determinadas condições para se decidir
se se deve executar uma ou outra ação ou ações (estruturas de decisão) ou repetir uma série de instruções um
determinado número de vezes ou enquanto se verificar uma certa condição (estruturas de repetição ou ciclos).
Estruturas de Decisão
As estruturas podem subdividir-se em 2 subgrupos: estruturas de decisão com base numa condição e estruturas
de seleção ou escolha múltipla.
[17]
Estruturas de decisão com base numa condição
Existe praticamente em todas as linguagens de programação. Esta estrutura permite, com base numa condição
colocada a seguir ao SE, decidir sobre a execução ou não de determinada ação ou optar entre 2 alternativas
colocadas a seguir a ENTAO e a SENAO, sendo esta última opcional.
SE ENTAO
SE (condição)
FIM_SE
Exemplo:
SE chover
FIM_SE
SE ENTAO SENAO
SE (condição)
FIM_SE
Exemplo:
SE a turma se comportar
FIM_SE
[18]
SE ENTAO SENAO para várias condições
SE (condição_1)
ENTAO SE (condição_2)
ENTAO alternativa_verdadeira_1
FIM_SE
FIM_SE
Exemplo:
SE chover
FIM_SE
FIM_SE
Nota: Todas as instruções deverão ser escritas sem acentos e sem carateres especiais!
FIM_SELECIONAR
Exemplo:
SELECIONAR idade
FIM_SELECIONAR
Exemplo:
Quando inserida uma nota entre 0 e 5 o algoritmo vai classificá-la como Mau, Insuficiente, Bom ou Muito Bom.
Elaboração do algoritmo
INICIO
{Desenvolvimento do algoritmo}
LER (nota)
SELECIONAR (nota)
[20]
CASO 3: ESCREVER (“Suficiente”)
FIM_SELECIONAR
FIM
No entanto, o inverso não é verdade, ou seja, nem todas as estruturas “Se… Entao… Senao” podem ser convertidas
em estruturas “Selecionar … Caso”. Isto acontece quando as estrutura SE utiliza valores que não podem ser
convertidos numa lista exata.
Devemos utilizar a estrutura “Se… Entao… Senao” quando não conhecemos a lista de valores. Quando a lista desses
valores é conhecida deve ser utilizada a estrutura “Selecionar Caso” pois torna o código mais fácil de escrever sem
erros de lógica e também é mais fácil de ler e de compreender.
Estruturas de Repetição
As estruturas de repetição são estruturas que permitem a execução de uma ou mais instruções repetidamente. A
repetição é executada até que uma condição seja mantida. As estruturas de repetição são divididas em 3 tipos:
Os ciclos, também conhecidos como loops, ou estruturas de repetição são uma ferramenta essencial na
programação de computadores. Possibilitam que os programadores executem repetidamente um bloco de código,
enquanto uma determinada condição for verdadeira. A utilização de ciclos torna o código mais eficiente,
organizado e flexível, proporcionando várias vantagens.
[21]
Uma das principais razões para usar ciclos é a redução de redundância no código. Imagine ter de executar uma
determinada tarefa repetidamente, como mostrar uma mensagem para cada item de uma lista. Sem ciclos,
teríamos de escrever o mesmo código várias vezes para cada item, o que tornaria o programa extenso e difícil de
manter. Com a utilização de ciclos, podemos realizar a mesma tarefa com um código mais curto e legível,
economizando tempo e esforço no desenvolvimento e manutenção do programa.
Além disso, os ciclos permitem que os nossos programas manipulem com uma quantidade variável de dados de
forma eficiente. Se não soubéssemos quantas vezes precisaríamos repetir uma ação, seria difícil programar
manualmente cada iteração. Com ciclos, podemos processar um conjunto de dados arbitrariamente grande,
adaptando-se dinamicamente às mudanças nos requisitos.
Outra vantagem é a capacidade de criar algoritmos poderosos. Por exemplo, ao usar ciclos para percorrer e
manipular arrays, podemos executar operações em todos os elementos de forma rápida e concisa. Isso é
especialmente útil quando trabalhamos com grande volume de dados ou realizamos cálculos complexos.
• Iteração
• Contador
• Acumulador
Iteração
Iteração significa repetição. Em algoritmia e em programação, iteração é o número de vezes que as ações de um
ciclo vão ser executadas.
Contador
Um contador é uma variável que conta o número de iterações ou repetições de um ciclo.
Exemplo:
contador←contador + 1
Acumulador
Um acumulador é uma variável que soma ou acumula o valor das parcelas introduzidas. É muitas vezes necessário
dado que precisamos de alguma forma, guardar valores para além da sua utilização temporária. Esta variável
recebe o valor que continha anteriormente mais o que é introduzido na variável parcelar.
[22]
Exemplo:
Bloco de instruções
FIM_FAZER OU FIM_PARA
Exemplo 1:
ESCREVER (Y)
FIM_FAZER
Exemplo 2:
ESCREVER (Y)
FIM_FAZER
Nota:
[23]
A estrutura PARA, como já foi referido, tem um contador automático, se pretendermos que o ciclo avance
sequencialmente, não precisamos realizar nenhuma operação. No entanto, caso pretendamos avançar com uma
sequencia diferente, devemos coloca essa sequência na área passos.
Exemplos:
De 2 em 2 i←i+2 i2+
De 3 em 3 i←i+3 i3+
Exemplo:
Fazer um algoritmo que pede 10 números inteiros e apresenta a sua soma num algoritmo com o ciclo PARA.
INICIO
{Desenvolvimento do algoritmo}
ESCREVER (“Este algoritmo calcula a soma de 10 números inteiros introduzidos pelo utilizador”)
soma←0
ESCREVER(“Introduza um número”)
[24]
LER(n)
soma←soma+n
FIM_FAZER
FIM
• Iteração
o Número de vezes que o ciclo é executado
o Nesta caso: 10 iterações
• Contador
o Sequência que utilizamos para avançar o ciclo
o Nesta caso: é sequencial ( 1 em 1), assim, está oculto, mas corresponde a x←x+1 ou x++
• Acumulador
o Variável que permite acumular valores que serão necessários para a execução do algoritmo. Ao
valor inicial da variável é acrescido (de acordo com a necessidade do algoritmo) um outro valor.
Essa operação é guardada na vaiável acumuladora.
o Neste caso: soma ←soma+n
[25]
Como a condição só é avaliada no final da estrutura, isto implica que as instruções sejam executadas pelo menos
uma vez e continuarão a ser executadas até que a condição seja verdadeira.
Estrutura:
REPETIR
Bloco de instruções
ATE (condição)
Exemplo 1:
REPETIR
X←X+1
ATE (X=10)
• Inicialização do ciclo
• Uma condição de controlo do ciclo
• Sequência lógica de instruções
• Este ciclo é executado, pelo menos, 1 vez
Exemplo:
VARIAVEIS
{Início do algoritmo}
INICIO
contador←0
soma←0
[26]
REPETIR
LER (numero)
soma←soma+numero
contador←contador+1
{Apresentar os resultados}
FIM
Notas:
Estrutura:
Bloco de instruções
FIM_ENQUANTO
Exemplo:
[27]
ENQUANTO (X <10) FAZER
X←X+2
FIM_ENQUANTO
Nota:
Se o número de vezes que o ciclo vai ser executado for desconhecido, então utilizam-se a estrutura REPETIR. Esta
pode ser controladas por:
• Condições
• Sentinelas
• Fim de ficheiro (EOF)
[28]
[29]