Prof.
André Backes
Introdução
Computadores = cérebros eletrônicos?
Computadores são máquinas e, por si sós, não podem
ser inteligentes.
Alguém as projetou e deu a ela todas as características
que possuem.
1
Introdução
Computadores têm facilidade para lidar com um
determinado assunto, uma familiaridade com alguma
área do conhecimento.
Ex: um computador pode realizar um calculo 10
bilhões de vezes mais rápido que nosso cérebro.
Introdução
Por outro lado, nosso cérebro opera em paralelo, isto é,
pode resolver vários problemas ao mesmo tempo.
2
Algoritmos
Para resolver um problema no computador é
necessário que ele seja primeiramente descrito de uma
forma clara e precisa.
O conceito de algoritmo é frequentemente ilustrado
pelo exemplo de uma receita.
Algoritmo: Bolo de Chocolate
Aqueça o forno a 180 C
Unte uma forma redonda
Numa taça
Bata
75g de manteiga
250g de açúcar
até ficar cremoso
Junte
4 ovos, um a um
100g de chocolate derretido
Adicione aos poucos 250g de farinha peneirada
Deite a massa na forma
Leve ao forno durante 40 minutos
3
Algoritmos
Um algoritmo pode ser definido como uma sequência
simples e objetiva de instruções para solucionar um
determinado problema
A instrução é uma informação que indica a um
computador uma ação elementar a executar
A sequência de instruções deve ser
Finita
Não pode ser ambígua
Algoritmos
Por que NÃO ambíguo?
Cada instrução do algoritmo deve ser precisamente
definida, sem permitir mais de uma interpretação de seu
significado.
Os algoritmos devem se basear no uso de um conjunto
de instruções bem definido, que constituem um
vocabulário de símbolos limitado.
4
Algoritmos
Os algoritmos são capazes de realizar tarefas como:
Ler e escrever dados;
Avaliar expressões algébricas, relacionais e lógicas;
Tomar decisões com base nos resultados das expressões
avaliadas;
Repetir um conjunto de ações de acordo com uma
condição
Algoritmos
Como seria um algoritmo para as seguintes tarefas
Trocar um lâmpada
Apontar um lápis
Somar N números
Média de 2 números
5
Algoritmos
O algoritmo é a lógica do nosso problema. É a
sequência de passos que eu faço na minha cabeça (ou
no papel, quando for mais complexo) antes de escrever
em uma linguagem de programação.
Podem existir vários algoritmos diferentes para
resolver o mesmo problema.
Exemplo: média de dois números
𝑥+𝑦 𝑥 𝑦
𝑧= 𝑧= +
2 2 2
Algoritmos
Um algoritmo é um procedimento computacional
definido composto de 3 partes
Entrada de dados
São os dados do algoritmo informados pelo usuário
Processamento de dados
São os procedimentos utilizados para chegar ao resultado
É responsável pela obtenção dos dados de saída com base nos
dados de entrada
Saída de dados
São os dados já processados, apresentados ao usuário
6
Algoritmos
O algoritmo que usamos depende principalmente do
tempo que ele demora pra ser executado e a memória
que ele gasta no computador.
Chamamos a isso de custo.
Exemplo: ordenar números
Quicksort, Mergesort, Bubblesort, etc
Algoritmos
Para escrever um algoritmo precisamos descrever a
sequência de instruções, de maneira simples e objetiva.
Algumas dicas:
Usar somente um verbo (imperativo) por frase
Imaginar que você está desenvolvendo um algoritmo
para pessoas que não trabalham com computadores
Usar frases curtas e simples
Ser objetivo
Evitar palavras que tenham sentido dúbio
7
Pseudo-código
Até aqui, os algoritmos foram descritos em linguagem
natural
Outra forma seria o uso de uma pseudo-linguagem ou
pseudo-código
Emprega uma linguagem intermediária entre a
linguagem natural e uma linguagem de programação
usada para descrever os algoritmos
O pseudocódigo não requer todo a rigidez sintática
necessária numa linguagem de programação,
permitindo que o aprendiz se detenha na lógica do
algoritmos e não no formalismo da sua representação
Pseudo-código
Ex: ler dois número e imprimir o maior deles
Leia A;
Leia B;
Se A > B então
Imprima A;
Senão
Imprima B;
Fim Se
8
Pseudo-código
Como seria um pseudo-código para as seguintes
tarefas
Trocar um lâmpada
Apontar um lápis
Somar N números
Média de 2 números
Tipos de processamento
Ao elaborar um algoritmo, devemos ter em mente qual
o tipo de processamento será executado.
Basicamente, existem 3 tipos de processamento
Processamento sequencial
Processamento condicional
Processamento com repetição
Repetição determinada
Repetição indeterminada
9
Tipos de processamento
Processamento sequencial
As instruções são executadas uma após a outra
Não existe desvio na sequência das instruções
Cada instrução é executada uma única vez
Exemplo
Imprimir a média aritmética de duas notas
Leia nota1
Leia nota2
media = (nota1 + nota2)/2
Imprima media
Tipos de processamento
Processamento sequencial
A ordem das instruções é importante!
Leia nota1
Leia nota2
Imprima media
media = (nota1 + nota2)/2
media = (nota1 + nota2)/2
Leia nota1
Leia nota2
Imprima media
Leia nota1
Leia nota2
media = (nota1 + nota2)/2
Imprima Media
10
Tipos de processamento
Processamento condicional
Um conjunto de instruções (pode ser apenas uma) pode
ou não ser executado
Depende de uma condição
Se a condição testada for verdadeira, o conjunto de
instruções é executado
Tipos de processamento
Processamento condicional
As instruções executadas dependem da situação
Exemplo
Imprimir a maior dentre duas notas lidas
Leia nota1
Leia nota2
Se nota1 > nota2
Imprima nota1
Senão
Imprima nota2
Leia nota1 Leia nota1
Leia nota2 Leia nota2
Imprima nota1 Imprima nota2
11
Tipos de processamento
Processamento com repetição
Um conjunto de instruções (pode ser apenas uma) é
executado um número definido ou indefinido de vezes
Pode ser determinada por uma condição de parada
O conjunto de instruções é executado enquanto a condição for
verdadeira
O teste da condição é realizado antes de qualquer operação
Tipos de processamento
Processamento com repetição
Também chamado de laços condicionais
Repetem um conjunto de comandos em seu interior
Exemplo
Imprimir a soma dos números inteiro de 1 a N
Soma = 1 + 2 + 3 + ... + N
Necessidade de se identificar o que deve ser repetido no
algoritmo
12
Tipos de processamento
Processamento com repetição – Exemplo 1
Imprimir a soma dos números inteiro de 1 a N
Soma = 1 + 2 + 3 + ... + N
Identificar: valor inicial (nro = 1), valor final (N), onde o
resultado será armazenado (soma), quando parar (nro <= N),
variável (contador) que controla o número de repetições (nro),
etc.
Leia N
soma = 0
nro = 1
Enquanto nro <= N
soma = soma + nro
nro = nro + 1
Imprima soma
Tipos de processamento
Processamento com repetição – Exemplo 2
Imprimir a média dos números positivos digitados. Parar
quando um valor negativo ou zero por digitado
Problema
Não sabemos quantos números serão digitados!
Não tem como definir valor inicial ou final
A repetição é determinada por uma condição de parada (valor
negativo ou zero)
13
Tipos de processamento
Processamento com repetição – Exemplo 2
Imprimir a média dos números positivos digitados. Parar
quando um valor negativo ou zero por digitado
Identificar: onde o resultado será armazenado (soma), quando
parar (valor <= 0), variável (contador) que controla o número
de repetições (valor), etc.
soma = 0
N = 0
Leia valor
Enquanto valor > 0
soma = soma + valor
N = N + 1
Leia valor
Imprima soma/N
Teste de mesa
Após desenvolver um algoritmo é preciso testá-lo. Uma
maneira de se fazer isso é usando o teste de mesa
Basicamente, esse teste consiste em seguir as instruções
do algoritmo de maneira precisa para verificar se o
procedimento utilizado está correto ou não
Tentar utilizar um caso onde se conhece o resultado esperado
Permite reconstituir o passo a passo do algoritmo
14
Teste de mesa
Criar uma tabela de modo que
Cada coluna representa uma variável
As linhas correspondem as alterações naquela variável
(de cima para baixo)
valor N soma
Teste de mesa
Exemplo 1: imprimir a média dos números positivos
digitados. Parar quando um valor negativo ou zero por
digitado
Valores digitados: 4, 2, 3 e -1
Média é 3
soma = 0
valor N soma
N = 0
Leia valor 4 0 0
Enquanto valor > 0 2 1 4
soma = soma + valor 3 2 6
N = N + 1 -1 3 9
Leia valor
Imprima soma/N
15
Fluxograma
Existem estudos que comprovam que o ser humano
consegue gravar melhor uma mensagem, quando esta
é acompanhada de imagens
“Uma imagem vale mais do que mil palavras”
Fluxograma
Um fluxograma é um diagrama, escrito em uma
notação gráfica simples, usado para representação
visual de algoritmos.
Algoritmo -> texto
Fluxograma -> gráfico
16
Fluxograma
Representa uma seqüência de operações qualquer, de
forma detalhada, onde todos os passos são
visualizados.
É utilizado também em outras áreas
Processos dentro de uma empresa, linha de produção,
etc.
Fluxograma
É útil para compreensão de controle de fluxo nas fases
iniciais de aprendizado de programação, ou quando a
linguagem na qual os programas são escritos é muito
primitiva.
17
Fluxograma
Vantagens
Padronização na representação;
Permite descrever com maior rapidez um conjunto de
tarefas;
Facilita a leitura e o entendimento de uma atividade;
Exemplo
Imprimir maior valor lido
Início
Leia A e B Leia A e B
Não
A > B?
Sim A recebe B
Imprima A
18
Fluxograma - Símbolos
Início e Fim
Podem ser círculos ou formas ovais
Normalmente contém as palavras “Inicío” ou “Fim”, ou
alguma expressão sinalizando o início ou fim do
precesso.
Inicío Fim Imprima X
Fluxograma - Símbolos
Processo ou operação
Representados por retângulos.
Indicam uma tarefa a ser executada pelo programa.
Somar + 1 a X Multiplicar X por Y
19
Fluxograma - Símbolos
Condição ou Decisão
Representado por losangos
Normalmente contém uma pergunta do tipo Sim/Não
ou um teste de Verdadeiro/Falso.
Mudança no fluxo
B = 0? A = 0?
Fluxograma - Símbolos
Setas
Conectam 2 símbolos quaisquer.
Definem o fluxo de controle.
Ordem das operações a serem realizadas.
Somar + 1 a X Multiplicar X por Y
20
Fluxograma
Estrutura de decisão não necessariamente leva a uma
caminho alternativo.
Um processo pode ser repetido.
Exemplo
Listar números entre dois valores
Leia A e B
Some +1 em A
Imprima A
Não
A >= B?
Sim
Fim
21
Fluxograma
Como seria um fluxograma para as seguintes tarefas
Trocar um lâmpada
Apontar um lápis
Somar N números
Dividir 2 números
Metodologias de programação
A resolução de um problema começa com a definição
dos dados e tarefas básicas.
Esta definição inicial é feita em nível bem alto e geral.
Não há preocupação com os detalhes (refinamento).
22
Metodologias de programação
Refinamentos Sucessivos (Top-Down )
Consiste em pegar um grande problema, de difícil
solução, e dividi-lo em problemas menores que devem
ser mais facilmente resolvidos
Decompor uma ou várias tarefas em sub-tarefas mais
detalhadas
É um processo iterativo, isto é, sub-tarefas podem ser
decompostas em sub-tarefas ainda mais detalhadas
Refinamentos Sucessivos
Exemplo: trocar um pneu furado
Levantar o carro parcialmente;
Retirar o pneu furado;
Instalar o novo pneu;
Abaixar o carro
23
Refinamentos Sucessivos
Exemplo: trocar um pneu furado
Retirar o estepe;
Levantar o carro parcialmente;
Retirar o pneu furado;
Instalar o novo pneu;
Abaixar o carro
Apertar bem as porcas;
Refinamentos Sucessivos
Exemplo: trocar um pneu furado
Pegar as ferramentas no porta-malas;
Retirar o estepe;
Instalar o macaco;
Levantar o carro parcialmente;
Afrouxar os parafusos do pneu furado;
Retirar o pneu furado;
Instalar o novo pneu;
Abaixar o carro
Apertar bem as porcas;
Guardar o pneu furado e as ferramentas;
24
Refinamentos Sucessivos
O algoritmo proposto pode ainda ser refinado de várias
outras formas
O que fazer se o macaco não estiver no porta-malas?
O que fazer se o estepe também estiver vazio?
Deve-se sempre puxar o freio de mão antes de executar
estas operações.
Limpar as mãos;
Consertar o pneu furado;
Etc
25