Pular para conteúdo

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")
1. bata os ovos
2. junte a farinha
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")
3. leve ao forno
1. bata os ovos
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)
2 + 3
5

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)
Minutos falados: 137
Total a pagar: R$ 34.25

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 print mistura 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:

print("Bom dia)
SyntaxError: unterminated string literal (detected at line 1)

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:

prlnt("Bom dia")
NameError: name 'prlnt' is not defined. Did you mean: 'print'?

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.
  • print mostra 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.