1. O que é um algoritmo¶
Nesta aula
Ideia central: um programa é uma lista de instruções que o computador segue, uma de cada vez, de cima para baixo — e ao pé da letra.
Ao fim você vai conseguir: explicar o que é um algoritmo; separar um
problema em entrada, processamento e saída; prever a saída de um programa
curto antes de rodá-lo; escrever e rodar um programa com print; e ler uma
mensagem de erro sem se assustar.
Você já sabe fazer algoritmos¶
Você explicou, esta semana, como se chega a algum lugar. Talvez tenha dito:
Segue reto até o segundo semáforo, vira à direita, anda mais uns duzentos metros, e é o portão azul à esquerda.
Isso é um algoritmo. Tem começo e fim, tem uma ordem que importa (virar à direita antes do semáforo leva a outro lugar) e tem um resultado esperado (a pessoa chega).
Definição
Algoritmo é uma sequência finita de passos lógicos para realizar uma tarefa.
Finita: tem fim. Lógica: a ordem importa. Tarefa: existe um resultado esperado.
O que muda quando quem recebe as instruções é um computador é uma coisa só, e é a coisa mais importante desta disciplina: o computador não entende o que você quis dizer. A pessoa a quem você deu a direção ia perceber sozinha que "segundo semáforo" não conta o piscante da esquina. O computador não percebe nada. Ele faz exatamente o que está escrito, na ordem em que está escrito, e quando o resultado sai errado a culpa é das instruções.
Todo algoritmo tem três partes¶
| Parte | O que é | No exemplo da média |
|---|---|---|
| Entrada | os dados que o programa recebe | as duas notas |
| Processamento | a conta ou a decisão feita com eles | somar e dividir por 2 |
| Saída | o que o programa devolve para quem usa | a média, na tela |
Vale o hábito de, antes de escrever qualquer linha, responder as três perguntas: o que entra? o que faço com isso? o que tem de sair? Boa parte dos programas que dão errado neste semestre dá errado porque uma dessas três respostas nunca foi dada.
O primeiro programa¶
print é a instrução que mostra alguma coisa na tela. O que vai entre aspas
sai exatamente como está escrito.
# Um programa e uma lista de instrucoes, executadas de cima para baixo.
print("1. bata os ovos")
print("2. junte a farinha")
print("3. leve ao forno")
As linhas que começam com # são comentários: o Python ignora tudo depois
do #. Elas existem para explicar o código a quem lê — inclusive para você
mesmo, daqui a três semanas.
Agora as mesmas três instruções, fora de ordem:
# As mesmas tres instrucoes, em outra ordem.
print("3. leve ao forno")
print("1. bata os ovos")
print("2. junte a farinha")
O programa roda. Não dá erro nenhum. E o bolo sai cru, porque foi ao forno antes de ter massa. Um programa que roda não é um programa que está certo — guarde esta frase, ela vai voltar o semestre inteiro.
Aspas mudam tudo¶
# Entre aspas, e texto: sai como esta escrito.
print("2 + 3")
# Sem aspas, e conta: o Python calcula e mostra o resultado.
print(2 + 3)
Com aspas, "2 + 3" é texto, e texto sai como está. Sem aspas, 2 + 3 é uma
conta, e o Python calcula antes de mostrar.
💡 Pense assim: a placa e o caminho
Uma placa escrita "vire à direita" é um pedaço de metal com letras: você pode carregá-la, fotografá-la, lê-la em voz alta. Virar à direita é outra coisa — é fazer o que a placa diz. As aspas são o que separa a placa do caminho.
Entrada, processamento e saída num programa¶
Ainda sem perguntar nada a ninguém — os dados estão escritos no próprio programa. Uma operadora cobra R$ 0,25 por minuto, e o cliente falou 137 minutos:
# Entrada: os dados que o programa usa.
minutos = 137
preco_por_minuto = 0.25
# Processamento: a conta feita com eles.
total = minutos * preco_por_minuto
# Saida: o que o programa devolve para quem usa.
print("Minutos falados:", minutos)
print("Total a pagar: R$", total)
Repare em duas coisas que vão virar hábito:
- os dados ganharam nomes (
minutos,preco_por_minuto,total). Um programa em que os números aparecem soltos no meio da conta é um programa que ninguém consegue corrigir depois — nem quem o escreveu; - o
printmistura texto e valor, separados por vírgula. A vírgula junta os pedaços com um espaço entre eles.
O próximo capítulo trata desses nomes com calma. Por ora, basta saber que
minutos = 137 guarda o valor 137 sob o nome minutos.
Quando dá erro¶
Errar é a parte normal de programar — quem programa há vinte anos erra todo dia. O que muda com a prática é a velocidade de ler a mensagem e achar a causa.
Uma aspa que não fecha:
SyntaxError quer dizer que o Python não conseguiu nem entender o que você
escreveu — ele parou antes de rodar qualquer coisa. unterminated string
literal é exatamente isso: um texto que começou e não terminou.
Um nome digitado errado:
NameError é "este nome não existe". E o Python ainda sugere a correção:
Did you mean: 'print'? — "você quis dizer?".
💡 Pense assim: a luz no painel do carro
Quando acende uma luz no painel, ela não diz "o carro quebrou": diz qual sistema tem problema. A mensagem de erro é essa luz. Não se assuste com o vermelho — leia o que está escrito, porque quase sempre a resposta está lá.
A mensagem tem várias linhas. Leia de baixo para cima: a última linha diz o tipo do erro e o que aconteceu; um pouco acima, a linha do programa em que ele apareceu.
Erros comuns deste capítulo¶
| Sintoma | Causa provável |
|---|---|
SyntaxError: unterminated string literal |
uma aspa abriu e não fechou |
SyntaxError: invalid syntax |
faltou um parêntese, ou sobrou |
NameError: name '...' is not defined |
nome digitado diferente do que existe — veja a sugestão do Python |
| o texto saiu com as aspas na tela | as aspas de fora ficaram dentro de outras aspas |
| a conta apareceu em vez do resultado | a conta está entre aspas, então virou texto |
| o programa roda mas faz outra coisa | as instruções estão na ordem errada |
Resumo¶
- Algoritmo é uma sequência finita de passos lógicos para uma tarefa.
- Todo algoritmo tem entrada, processamento e saída — responda as três perguntas antes de escrever a primeira linha.
- O computador executa de cima para baixo, ao pé da letra, e não adivinha nada.
printmostra na tela;#começa um comentário.- Entre aspas é texto; sem aspas, é conta.
- Um programa que roda não é um programa que está certo.
- A mensagem de erro se lê de baixo para cima, e quase sempre diz a causa.
Para praticar¶
Lista 01 · Primeiros programas — a Parte A é no papel e vem antes do computador.