Você está na página 1de 19

Curso de Bacharelado em Ciência da Computação

Algoritmo e Programação I (60h/a)

Algoritmos
Aula 03

Prof. Lenardo Chaves e Silva, D.Sc.


lenardo@ufersa.edu.br

sexta-feira, 27 de janeiro de 2023

Universidade Federal Rural do Semi-Árido (UFERSA)


Tópico

 Algoritmos:
❑ Formas de Representação;
✓ Descrição Narrativa;
✓ Fluxograma;
✓ Pseudocódigo.
 Referências.

http://www.chetu.com

lenardo@ufersa.edu.br 2
Relembrando...
O que são Algoritmos?
“[...] conjunto finito bem definido de regras que especifica uma série
sequencial de operações elementares a serem aplicadas a alguns dados
chamados de entrada, produzindo após uma quantidade finita de tempo
alguns dados chamados de saída.” (CSSE, 2011).

 Problema Computacional?
❑ Descrição geral de uma questão a ser respondida, geralmente
envolvendo algumas variáveis ou parâmetros;
❑ Instância de um problema computacional:
➢ questão específica obtida pela atribuição de valores aos parâmetros do
problema.
❑ Um algoritmo resolve um problema computacional se, quando
apresentado a qualquer instância do problema como entrada, produz a
resposta para a pergunta como sua saída.

lenardo@ufersa.edu.br 3
Relembrando...

Modo de Preparo

Ingredientes Bolo

lenardo@ufersa.edu.br 4
Algoritmos

Principais Formas de Representação:


 Considere o seguinte Problema: Como realizar uma divisão matemática
entre dois números sem cometer o erro de dividir um número por zero?
Descrição Narrativa Fluxograma Pseudocódigo
algoritmo CalcularDivisao
1. Exiba um aviso para que o declare
numerador e denominador n1, n2, divisao: real
sejam informados. inicio
escreva(“Informe o numerador”)
2. Leia o numerador e leia(n1)
denominador. escreva(“Informe o denominador”)
3. Verifique se o denominador é leia(n2)
se n2 = 0 entao
zero.
escreva(“ERRO: divisão por zero”)
4. Se o denominador for zero, senao
exiba uma mensagem de erro. divisao = n1 / n2
Se não, efetue a divisão e exiba escreva(“O resultado é ”, divisao)
fim_se
o resultado. fim_algoritmo

lenardo@ufersa.edu.br 5
Algoritmos

Principais Formas de Representação:

 Descrição Narrativa:
❑ Finalidade → analisar o enunciado do problema e escrever os passos
que devem ser seguidos para a resolução do problema;
❑ Utiliza palavras de alguma linguagem natural (e.g., língua portuguesa
ou inglesa);
❑ Adequada apenas para fornecer informações complementares para as
outras formas de representação.

lenardo@ufersa.edu.br 6
Algoritmos

Principais Formas de Representação:

 Fluxograma:
❑ Finalidade → analisar o enunciado do problema e escrever os passos
que devem ser seguidos para a resolução do problema;
❑ Utiliza um conjunto de símbolos predefinidos, representados por
alguns desenhos geométricos básicos:
✓ indicam a entrada de dados, o processamento de dados e a saída de dados;
✓ acompanhados dos procedimentos requeridos para solucionar o problema
do programa a ser processado pelo computador;
✓ requer o desenvolvimento do raciocínio lógico pelo programador.

lenardo@ufersa.edu.br 7
Algoritmos

Principais Formas de Representação:

 Fluxograma:
❑ Principais Símbolos:

lenardo@ufersa.edu.br 8
Algoritmos

Principais Formas de Representação:

 Pseudocódigo:
❑ Também conhecida com português estruturado ou portugol;
❑ Sua forma original de escrita é conhecida como inglês estruturado,
muito parecida com a notação da linguagem PASCAL;
❑ Finalidade → analisar o enunciado do problema e escrever os passos
que devem ser seguidos para a resolução do problema;
❑ Utiliza um conjunto de regras predefinidas;
❑ Usado como referência genérica para as linguagens de programação:
❑ Definição, criação e desenvolvimento em uma linguagem computacional
(Cobol, Fortran, C, Pascal, Delphi, Visual-Basic, etc.).

lenardo@ufersa.edu.br 9
Algoritmos

Principais Formas de Representação:


Descrição Narrativa Fluxograma Pseudocódigo

Não é necessário aprender Representação gráfica mais Facilita a transcrição para


Vantagens

nenhum conceito novo fácil e concisa qualquer linguagem de


programação
Desvantagens

Sujeita a diferentes Necessário aprender a Necessário aprender as regras


interpretações simbologia e restrição de de construção
(ambiguidades) detalhes

lenardo@ufersa.edu.br 10
Algoritmos

Como executar um algoritmo e saber se ele está certo?


Problema: Como realizar uma divisão matemática entre dois números sem cometer o
erro de dividir um número por zero?
 Passos:
i. Fornecer DADOS de entrada que você saiba qual a saída CORRETA;
Exemplo:
Entrada: 9,0 e 2,0.
Saída (correta): 4,5
ii. Verificar a saída produzida pelo algoritmo;
iii. Se necessário, verificar o passo-a-passo do algoritmo e corrigir qualquer
erro identificado;
iv. Repetir os passos i ao iii até o algoritmo produzir a saída correta.
ATENÇÃO: saber executar um algoritmo é tão
importante quanto criar um algoritmo.

lenardo@ufersa.edu.br 11
Algoritmos

Como executar um algoritmo e saber se ele está certo?


Problema: Como realizar uma divisão matemática entre dois números sem cometer o
erro de dividir um número por zero?

Pseudocódigo Execução 1: Teste o algoritmo com as entradas: 9,0 e 2,0


algoritmo CalcularDivisao
declare Entradas e Saídas Variáveis
n1, n2, divisao: real n1 n2 divisao
inicio Informe o numerador
(real) (real) (real)
escreva(“Informe o numerador”)
leia(n1) 9,0
escreva(“Informe o denominador”)
n1 n2 divisao
leia(n2) Informe o denominador
se n2 = 0 entao (real) (real) (real)
escreva(“ERRO: divisão por zero”) 2,0 9,0
senao
divisao = n1 / n2
n1 n2 divisao
escreva(“O resultado é ”, divisao) (real) (real) (real)
fim_se O resultado é 4,5 9,0 2,0
fim_algoritmo
n1 n2 divisao
(real) (real) (real)
9,0 2,0 4,5 12
lenardo@ufersa.edu.br
Algoritmos

Como executar um algoritmo e saber se ele está certo?


Problema: Como realizar uma divisão matemática entre dois números sem cometer o
erro de dividir um número por zero?

Pseudocódigo Execução 2: Teste o algoritmo com as entradas: 9,0 e 0,0


algoritmo CalcularDivisao
declare Entradas e Saídas Variáveis
n1, n2, divisao: real n1 n2 divisao
inicio Informe o numerador
(real) (real) (real)
escreva(“Informe o numerador”)
leia(n1) 9,0
escreva(“Informe o denominador”)
n1 n2 divisao
leia(n2) Informe o denominador
se n2 = 0 entao (real) (real) (real)
escreva(“ERRO: divisão por zero”) 0,0 9,0
senao
divisao = n1 / n2
n1 n2 divisao
escreva(“O resultado é ”, divisao) (real) (real) (real)
fim_se O resultado é 4,5 9,0 0,0
fim_algoritmo
n1 n2 divisao
(real) (real) (real)
ERRO13
lenardo@ufersa.edu.br
Algoritmos

Como executar um algoritmo e saber se ele está certo?


Problema: Como realizar uma divisão matemática entre dois números sem cometer o
erro de dividir um número por zero?

Pseudocódigo EXPLICAÇÃO
1 algoritmo CalcularDivisao Linha 1: aqui nada é executado, apenas informa o nome do algoritmo.
Linha 2: aqui nada é executado, apenas marca o início do bloco que declara as variáveis.
2 declare Linha 3: são criados espaços para armazenar as 3 variáveis de números reais. Perceba que
3 n1, n2, divisao: real quando uma variável é criada, seu conteúdo é VAZIO!
4 inicio Linha 4: aqui nada é executado, apenas marca o início do bloco de instruções.
5 escreva(“Informe o numerador”) Linha 5: exibe o texto “Informe o numerador”.
6 leia(n1) Linha 6: armazena um valor (dado) de entrada em uma variável do algoritmo.
Por exemplo, nesta execução: dado de entrada 9,0 será colocado na variável n1.
7 escreva(“Informe o denominador”) Linha 7: externaliza o texto “Informe o denominador”.
8 leia(n2) Linha 8: armazena o valor 2,0 (dado) de entrada na variável na variável n2.
9 se n2 = 0 entao Linha 9: a estrutura se verifica que a sentença n2 = 0 é falsa, pois 2,0 realmente não é
10 escreva(“ERRO: divisão por zero”) igual a 0 (zero). Conforme o algoritmo, o fluxo de execução deve seguir para a linha 11,
11 senao que marca o bloco senao.
Linha 11: aqui nada é executado, apenas marca o início do bloco senao.
12 divisao = n1 / n2 Linha 12: a operação n1 / n2 é efetuada, o que resulta em 4,5.
13 escreva(“O resultado é ”, divisao) Conforme o algoritmo, esse valor deve ser armazenado na variável divisao.
14 fim_se Linha 13: exibe o texto “O resultado é 4,5”. Conforme o algoritmo, perceba que o
15 fim_algoritmo conteúdo da variável divisao será exibido logo após o texto pré-definido “O resultado é ”.
Linha 14: aqui nada é executado, apenas marca o fim da estrutura se e consequentemente
o fim do bloco senao.
Linha 15: aqui nada é executado, apenas marca o fim do algoritmo e consequentemente o
fim do bloco inicio.
lenardo@ufersa.edu.br 14
Algoritmos
Qual a diferença entre um algoritmo
e um código-fonte de um software?

 Um algoritmo não requer um computador para existir, nem para ser


executado ou utilizado:
❑ É a representação da solução de um problema!

 Um software precisa do hardware do computador para ser executado:


❑ O computador precisa “entender” as instruções que devem ser
executadas!
❑ Comunicação alcançada através de uma Linguagem de Programação (LP);
❑ O texto escrito utilizando uma LP é chamado “código-fonte”;
❑ Um código-fonte após ser compilado, vai dar origem ao software
(programa) executável que estamos acostumados a utilizar.
lenardo@ufersa.edu.br 15
Algoritmos
Qual a diferença entre um algoritmo
e um código-fonte de um software?

 Um software precisa do hardware do computador para ser executado:


❑ O texto escrito utilizando uma LP é chamado “código-fonte”;
❑ Um código-fonte após ser compilado, vai dar origem ao software
(programa) executável que estamos acostumados a utilizar.

Código-fonte Programa Executável


lenardo@ufersa.edu.br 16
Algoritmos

Vamos Praticar?

 Considerado o problema de realizar uma divisão matemática entre dois


números sem cometer o erro de dividir um número por zero, escreva o
mesmo algoritmo em Pseudocódigo, apresentado no slide 12, nas
outras formas de representação, ou seja, Narrativa e Fluxograma!

lenardo@ufersa.edu.br 17
Próxima Aula…

Aula 04:
❑ Algoritmos:
❑ Variáveis.

18
Referências
 CITS3210 Algorithms: Lecture Notes. School of Computer Science and Software
Engineering, The University of Western Australia, 2011. Disponível em:
<https://teaching.csse.uwa.edu.au/units/CITS2200/Resources/AlgNotes.pdf>.
Acesso em: Jan. 2023.

lenardo@ufersa.edu.br 19

Você também pode gostar