3. Representação de Algoritmos
Linguagem Natural
A representação de algoritmos através de linguagem natural é a
forma mais espontânea de representação de algoritmos, pois
descrevemos os passos do algoritmo utilizando o nosso linguajar
quotidiano, escrevendo o algoritmo como um texto simples.
Por exemplo, queremos resolver o seguinte problema:
Calcular a média de todos os alunos que cursaram uma disciplina X,
a partir da leitura das notas da 1ª e 2ª prova, passando por um
cálculo de média aritmética. Após a média calculada, devemos
anunciar se aluno foi aprovado ou reprovado por nota. Somente
estão aprovados alunos com média maior ou igual a 5,0.
3
4. Representação de Algoritmos
Representação do algoritmo em linguagem natural
Para todos os alunos da disciplina X, faça: ler as notas da 1ª e 2ª
prova, somar as notas e dividir por dois, chegando assim, ao
resultado da média do aluno. Se a média do aluno for maior ou igual
a 5,0, então o aluno está aprovado, senão o aluno está reprovado.
Fazer para o próximo aluno.
O problema da representação de algoritmos com linguagem natural
é que quanto maior a complexidade do problema, maior a
dificuldade de entendermos o texto que procura descrever os
passos do algoritmo, pois não se emprega nenhum recurso
diagramático, e não há uma rigidez na estruturação das ações.
4
5. Representação de Algoritmos
Pseudocódigo
O pseudocódigo vem sendo amplamente utilizado por projetistas de
software e programadores, pois obriga o uso de estruturas que
facilitam o entendimento do algoritmo, e também facilitam a
transformação do mesmo em códigos reais.
O pseudocódigo também recebe outros nomes, como: português
estruturado, PDL (Program Design Language), etc..
Utilizaremos neste curso o pseudocódigo como a forma de
representação padrão para algoritmos.
5
6. Representação de Algoritmos
O PSEUDOCÓDIGO será utilizado na disciplina. Por
que?
Facilita o desenvolvimento dos algoritmos;
Facilita o seu entendimento pelo ser humano;
Antecipa à depuração (localização de erros) em sua
lógica;
Facilita a sua manutenção e modificação;
Facilita e agiliza a sua codificação (escrita do
programa);
Permite o desenvolvimento simultâneo de vários
profissionais (trabalho em equipe).
6
7. Pseudocódigo do exemplo anterior
Início
variáveis
nota1, nota2, media: real
fim-variáveis
Início
Leia (nota1)
Leia (nota2)
media = (nota1 + nota2) / 2
Se media >= 5,0 entao
Início
Escreva (“Aluno aprovado”)
Fim
Senão
Início
Escreva (“Aluno reprovado”)
Fim
Fim
7
8. Representação de Algoritmos
Outro exemplo:
algoritmo Soma
variáveis
N1,N2,Soma: inteiro
fim-variáveis
início
escreva("Entre com o primeiro número")
leia(N1)
escreva("Entre com o segundo número")
leia (N2)
Soma (N1+N2)
escreva("A soma dos números é: ", Soma)
fimAlgoritmo
8
9. Exemplo de Algoritmo
Imagine o seguinte problema: Calcular a média final dos alunos da 3ª
Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4.
Onde:
Média Final =
Para montar o algoritmo proposto, faremos três perguntas:
a) Quais são os dados de entrada?
R: Os dados de entrada são P1, P2, P3 e P4
b) Qual será o processamento a ser utilizado?
R: O procedimento será somar todos os dados de entrada e dividi-
los por 4 (quatro)
9
10. Exemplo de Algoritmo
c) Quais serão os dados de saída?
R: O dado de saída será a média final
Algoritmo
Receba a nota da prova1
Receba a nota de prova2
Receba a nota de prova3
Receba a nota da prova4
Some todas as notas e divida o resultado por 4
Mostre o resultado da divisão
10
11. Teste de mesa
Após desenvolver um algoritmo ele deverá sempre ser testado.
Este teste é chamado de TESTE DE MESA, que significa, seguir
as instruções do algoritmo de maneira precisa para verificar se o
procedimento utilizado está correto ou não.
Veja o exemplo:
Nota da Prova 1
Nota da Prova 2
Nota da Prova 3
Nota da Prova 4
11
14. Linguagem de programação
• Estabelece regras de sintaxe para que o
algoritmo possa ser entendido por uma
máquina.
14
15. Algoritmo × Linguagem de Programação
Raciocínio
int a, b, c;
if (a > 2)
Algoritmo a = b + c;
else
a = b – c;
return;
Programa
15
16. Programa
• Programa é a codificação de um algoritmo em
uma linguagem de programação.
• Um computador é uma máquina que, a partir de
uma entrada, realiza um número de cálculos
matemáticos e lógicos, gerando uma saída.
• Programa é o elemento que diz ao computador
quais cálculos devem ser realizados.
16
17. Características
• Sua principal característica é a utilização
de blocos para solução de um problema.
17
18. Relembrando...
Passos para elaboração de um programa:
1. Compreender o problema.
2. Esboçar um procedimento para resolver o problema.
3. Formular o algoritmo.
4. Traduzir o algoritmo para uma linguagem de
programação (codificação).
18
19. Passos para elaboração de um programa
Exemplo
• Calcular as raízes reais de:
2
ax + bx + c
19
20. 1. Compreender o problema
• Exemplo: Equação de 2o. grau
• Possibilidades de raízes:
02 raízes complexas;
02 raízes reais idênticas;
02 raízes reais distintas;
• Condição para haver raízes reais: ∆ ≥ 0
20
21. 2. Esboçar um procedimento para
resolver o problema
• Calcular ∆.
• Se ∆ ≥ 0, calcular raízes reais.
• Caso contrário, informar que não há raízes
reais.
21
22. 3. Formular o algoritmo
ler(a,b,c)
delta = b^2 – 4*a*c
se (delta ≥ 0) então
r1 = – b – (delta)^(–1/2)
r2 = – b + (delta)^(–1/2)
escrever(r1,r2)
senão
escrever(“Não há raiz real”)
fim do se
fim do algoritmo
22
23. 4. Codificar
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
float a, b, c, delta, r1, r2;
scanf("%f %f %f", &a, &b, &c);
delta = b*b – 4*a*c;
if (delta >= 0)
{
r1 = – b – sqrt(delta);
r2 = – b + sqrt(delta);
printf("r1 = %f n r2 = %f", r1, r2);
}
else
printf("Nao ha raiz realn");
}
23
24. Gerando um programa executável
• Passos básicos para gerar um programa
executável:
A. Codificação
B. Geração de Código Objeto
C. Depuração (debug)
24
25. Gerando um programa executável
Codificação
Código Depuração
fonte
Geração de código objeto
Código
objeto
Programa
Executável
25
26. Gerando um programa executável
A. Codificação
• É a escrita de um programa de acordo com
uma linguagem de programação.
• Utiliza Editores de Texto.
• Resultado: código-fonte.
26
27. Gerando um programa executável
B. Tradução
• Tradução do código-fonte para o código de
máquina do processador.
• Realizado pelos Compiladores.
• Resultado: código executável pelo
processador.
27
28. Gerando um programa executável
C. Depuração (debug)
• Auxilia o programador a eliminar erros dos
programas (“bugs”).
• Permite:
execução passo-a-passo.
visualização do estado do programa através
das variáveis.
28
30. Pseudo-código (Portugol)
• Características:
– Sintaxe mais simples que a de uma
Linguagem de Programação.
– Ênfase nas idéias e não nos detalhes.
– Facilita construir um programa em Linguagem
de Programação.
30
31. Pseudo-código (Portugol)
• Ingredientes: farinha, açúcar, leite
• Separar os ingredientes
• Misturar os ingredientes
• Colocar massa no forno
• Esperar assar por 30 minutos
• Retirar bolo do forno
31
32. Elementos básicos de um algoritmo
algoritmo <nome_do_algoritmo>
<declarações de variáveis>
<comandos>
Fim
32
33. Elementos básicos de um algoritmo
:: Exemplo
Algoritmo perimetro_circunferência
// declaração de constantes e variáveis
// comandos
fim
33
34. Elementos básicos de um algoritmo
:: Exemplo
Algoritmo perimetro_circunferência
// declaração de constantes e variáveis
const pi = 3,1415
raio: real
perim: real
// comandos
leia (raio)
perim = 2 * pi * raio
escrever (perim)
fim
34
35. Elementos básicos de um algoritmo
• Dados (variáveis e constantes)
• Tipos de dados
• Operadores
• Comandos
• Funções
• Comentários
35
36. Elementos básicos de um algoritmo ::
Exemplo
Algoritmo perimetro_circunferência
// declaração de variáveis
dado constante
const PI = 3,1415
raio: real dado variável
perim: real
tipo de dado
// comandos comentário
leia (raio) operador
perim = 2 * PI * raio
escrever (perim)
função
fim
36
37. Elementos básicos de um algoritmo
:: Dados
• Dados Constantes
– O valor de uma constante não se altera após sua
definição.
– Exemplos:
• N_NEPERIANO = 2,7182
• UNIVERSIDADE = ‘FPB'
• Dados Variáveis
– Elemento que têm a função de associar um nome a
uma porção da memória onde um dado pode ser
armazenado.
37
38. Elementos básicos de um algoritmo
:: Tipos de dados
• Definem a natureza do dado, as operações que
podem ser realizadas com o dado e o espaço a
ser ocupado na memória.
• Exemplos:
– Inteiro: 10 -5 -128
– Real (ponto flutuante): 1,34 13,4 -5,0
– String de caracteres: 'quarta-feira’ 'Abril‘
– Lógico: Verdadeiro(1) Falso(0)
38
39. ALGORITMO NOME
VARIAVEIS
NOME: CARACTERE
FIM VARIAVEIS
INICIO
ESCREVA(“Informe seu nome:”)
LEIA (nome)
39
40. Elementos básicos de um algoritmo
:: Operadores
• Atribuição
• Aritméticos
• Relacionais
• Lógicos
40
41. Elementos básicos de um algoritmo
:: Operador Atribuição
• Utilizado para atribuir um valor a uma
variável
nome da variável Valor
• Notação:
x1 ← 23; ( <-)
temp ← x2;
41
42. Elementos básicos de um algoritmo
:: Operadores Aritméticos
• Dados de entrada: tipo numérico (int ou
real(float))
• Resultado: tipo numérico (int ou reail(float))
• Exemplos:
– x_2 ← 2 + 3;
– alfa ← 1 / 5;
– ang ← 1 / 5.0;
– resto ← 10 % 3;
– resto ← 1 % 4;
– delta ← 5 * 5 – 4 * 1 * 4;
42
43. Elementos básicos de um algoritmo
:: Operadores Relacionais
Utilizados para realizar comparações entre dois valores de
mesmo tipo primitivo.
São comuns para a construção de equações.
OPERADOR OPERAÇÃO EXEMPLO RESULTADO
= Igual a 1=2 Falso
> Maior que 5>2 Verdadeiro
< Menor que 11 < 4 Falso
>= Maior ou Igual a 3 >= 3 Verdadeiro
<= Menor ou igual a 5<= 3 Falso
<> Diferente de 2 + 3 <> 5 Falso
43
44. Elementos básicos de um algoritmo
:: Operadores Relacionais
• Dados de entrada: tipo numérico (int ou float)
• Resultado: tipo lógico
• Exemplos:
– cond1 ← 2 = 3;
– cond2 ← 1.6 <> 5.0;
– cond3 ← 1 > 5;
– cond4 ← (1 + 2) < 5;
– cond5 ← 10 >= 3;
– cond6 ← 1 <= (– 4 / 3);
44
45. Elementos básicos de um algoritmo
:: Operadores Lógicos
Servem para combinar resultados de expressões,
retornando se o resultado final é verdadeiro ou falso.
OPERAÇÃO SÍMBOLO DESCRICAO
CONJUNÇÃO AND – E Uma expressão AND (E) é verdadeira se todas as
condições forem verdadeiras
DISJUNÇÃO OR – ou Uma expressão OR (OU) é verdadeira se pelo menos
uma condição for verdadeira
NEGAÇÃO NOT – não Uma expressão NOT (NÃO) inverte o valor da
expressão ou condição, se verdadeira inverte para
falsa e vice-versa.
45
46. Elementos básicos de um algoritmo
:: Operadores Lógicos
TABELAS-VERDADE
Conjunto de todas as possibilidades combinatórias entre os valores de
diversas variáveis lógicas apenas duas situações (V ou F).
OPERAÇÃO DE NEGAÇÃO
A não A
F V
V F
46
47. Elementos básicos de um algoritmo
:: Operadores Lógicos
OPERAÇÃO DE CONJUNÇÃO OPERAÇÃO DE DISJUNÇÃO
A B AeB A B A ou B
F F F F F F
F V F F V V
V F F V F V
V V V V V V
47
48. Elementos básicos de um algoritmo
:: Operadores Lógicos
• Dados de entrada: tipo lógico
• Resultado: tipo lógico
• Exemplos:
– cond1 ← V E F;
– cond2 ← F OU F;
– cond3 ← NÃO cond1;
– cond4 ← (V E F) OU (5 > 3);
48
49. Elementos básicos de um algoritmo
:: Funções
• Pré-definidas
• Definidas pelo programador
• Exemplos:
– seno(angulo)
– pow(x,y)
– sqrt(resto)
– exp(tempo)
– ler(var1,var2,...)
– escrever(resul1,result2,...)
49
50. Elementos básicos de um algoritmo
:: Comentários
• Utilizados para descrever o algoritmo,
esclarecendo trechos do código
• Notação:
– //
– /* <comentário> */
50
52. Algoritmos com qualidade
• Devem ser feitos para serem lidos por
seres humanos!
• Escreva os comentários no momento em
que estiver escrevendo o algoritmo.
52
53. Algoritmos com qualidade
• Os comentários devem acrescentar alguma
coisa, e não frasear o comando:
// Multiplicação de b por h:
area ← b * h;
// Cálculo da área do retângulo:
area ← b * h;
53
54. Algoritmos com qualidade
• Use comentários no prólogo:
/*****************************************
UNPBFPB
SEU NOME AQUI
DATA: 28/02/2012
ÚLTIMA MODIFICAÇÃO: 28/02/2012
ALGORITMO DE DEMONSTRAÇÃO
*****************************************/
54
55. Algoritmos com qualidade
• Use espaços em branco para melhorar a
legibilidade:
hip←sqrt(cat1*cat1+cat2*cat2);
hip ← sqrt(cat1 * cat1 + cat2 * cat2);
55
56. Algoritmos com qualidade
• Escolha nomes representativos para as
variáveis:
p ← c + l;
preco ← custo + lucro;
56
57. Algoritmos com qualidade
• Utilize um comando por linha.
• Utilize parênteses para melhorar a
compreensão e evitar erros.
• Utilize identação (recuo de texto).
57
58. Exercício
1. Escreva um algoritmo para ler um número
inteiro e imprimir seu sucessor e seu
antecessor.
Possível solução:
1. Ler um número inteiro
2. Imprimir seu sucessor
3. Imprimir seu antecessor
58
58