Texto e fórmulas

Um exemplo simples, escrito em Markdown.

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Uma ideia de cada vez

Um apontamento pode ter definições, exemplos e pequenos exercícios. Usa as tuas palavras e liga às fontes que consultaste.

Neste exemplo, vamos somar os inteiros de 1 até nn, com nn inteiro não negativo. Para n=0n=0, a soma não tem termos e vale zero. O resultado é:

∑k=1nk=n(n+1)2\sum_{k=1}^{n} k = \frac{n(n+1)}{2}

Para n=4n = 4, temos 1+2+3+4=101 + 2 + 3 + 4 = 10.

Para perceber a fórmula, escreve a soma por ordem crescente e depois por ordem decrescente. Ao somar as duas linhas coluna a coluna, cada coluna dá n+1n+1. Há nn colunas, por isso o dobro da soma é n(n+1)n(n+1). Dividir por 2 recupera a soma original. Este argumento também funciona quando nn é ímpar.

Um pequeno programa

def soma_naturais(n):
    return n * (n + 1) // 2

print(soma_naturais(4))  # 10

Em Python, // faz a divisão inteira. Aqui não perdemos uma parte decimal: de dois inteiros consecutivos, nn e n+1n+1, um é par. O produto é sempre divisível por 2.

Uma tabela

nSoma
11
23
36
410

Para calcular a média de pontos por fila, divide o total pelo número de filas. Com quatro filas, temos 10/4=2,510/4=2{,}5 pontos por fila em média. A média pode não ser inteira, mesmo quando cada fila tem um número inteiro de pontos.

Limites de um ciclo

Em Python, range(1, n + 1) percorre os inteiros de 1 até n. O limite superior fica excluído. Começa com total = 0 e, para cada k, soma k ao total. Antes dessa atualização, total contém a soma de 1 até k - 1; depois, contém a soma de 1 até k.

Se n for zero, range(1, 1) está vazio. O total continua a zero, que é o valor da soma vazia.

Contar as operações

O ciclo faz n atualizações. A fórmula faz um número fixo de operações aritméticas. Se cada operação tiver custo constante, os custos são Θ(n) e Θ(1), respetivamente. Com inteiros de precisão arbitrária, como os de Python, o custo também depende do número de bits dos valores.

Uma imagem

Quatro filas de pontos com um, dois, três e quatro pontos, num total de dez.

A imagem representa a mesma soma. É um SVG local e inclui uma descrição para quem usa um leitor de ecrã.

Experimenta: quantos pontos teria a figura com cinco filas?

A documentação do Markdown no Astro explica como escrever páginas. As fórmulas usam KaTeX.

Na página seguinte, juntamos gráficos, diagramas e vídeo num ficheiro MDX.

Notas de rodapé

As notas de rodapé servem para uma fonte ou uma explicação que pode ficar para depois.1

Uma afirmação com uma fonte.[^fonte]

[^fonte]: Autor, título e ligação à fonte.

Avisos em Markdown

Ver uma solução

Para somar os primeiros quatro naturais, podemos juntar os extremos: 1+4=51 + 4 = 5 e 2+3=52 + 3 = 5. A soma é 1010.

Notas de rodapé

  1. Este é um exemplo de nota de rodapé. A seta no fim volta ao ponto do texto onde estavas. Podes incluir ligações e formatação. Voltar

Exercícios

1. Justificar a fórmula

Justifica a fórmula da soma de 1 até n sem indução. O teu argumento deve funcionar também para n ímpar.

Pista

Escreve a soma uma vez por ordem crescente e outra por ordem decrescente.

Mais uma pista

Soma as duas linhas coluna a coluna. Quantas colunas tens e quanto vale cada uma?

Solução

Se S = 1 + 2 + … + n, então 2S = (1 + n) + (2 + n − 1) + … + (n + 1). Há n colunas, cada uma com soma n + 1. Logo S = n(n + 1)/2, incluindo n ímpar.

Confere a tua resposta:

  • Associei o primeiro termo ao último.
  • Cada par soma n + 1.
  • Expliquei como contar os termos sem falhar quando n é ímpar.

Erros frequentes

Dizer que há n/2 pares sem tratar o termo central quando n é ímpar. A soma das duas linhas evita esse problema.

Voltar à explicação
2. Calcular sem enumerar

Quanto vale a soma de todos os inteiros de 1 até 20, incluindo ambos os extremos?

Pista
Usa a fórmula com n = 20.
Mais uma pista
Calcula 20 × 21 e divide o resultado por 2.
Solução

20 × 21 / 2 = 210. Como a soma é inteira e exata, a tolerância é zero.

Erros frequentes

Usar 19 como último termo ou esquecer a divisão por 2.

Voltar à explicação
3. Interpretar uma média

Uma figura tem seis filas, com 1, 2, 3, 4, 5 e 6 pontos. Qual é o número médio de pontos por fila? Arredonda a duas casas decimais.

Pista
A média é a soma dividida pelo número de filas.
Mais uma pista
Há 21 pontos distribuídos por seis filas.
Solução

A média é 21/6 = 3,50 pontos por fila. A média não precisa de ser um número inteiro de pontos.

Erros frequentes

Dividir pelo último valor da soma parcial ou arredondar prematuramente para um inteiro.

Voltar à explicação
4. Prever a saída

Qual é o valor que este programa escreve?

total = 0
for k in range(1, 4):
    total += k
print(total)

Pista
O limite superior de range não é incluído.
Mais uma pista
O ciclo soma os valores 1, 2 e 3.
Solução
O programa escreve 6. Não executa uma iteração com k = 4.

Erros frequentes

Prever 10 porque se incluiu o limite superior.
Voltar à explicação
5. Escolher o estado certo

No ciclo anterior, o que representa total imediatamente antes de executar total += k?

A tua resposta

Pista

Segue as duas primeiras iterações, antes de cada atualização.

Mais uma pista

Quando k = 2, total já contém 1, mas ainda não contém 2.

Solução

Antes da atualização, total contém a soma de 1 até k − 1. Depois, contém a soma de 1 até k. O instante a que o estado se refere faz parte da resposta.

  • A soma de 1 até k − 1. Antes da soma de k, só foram processados os inteiros anteriores. Para k = 1, a soma vazia vale zero.
  • A soma de 1 até k. Essa é a situação depois de executar total += k, não antes.
  • Sempre zero. Só é zero antes da primeira iteração. As seguintes conservam o total acumulado.

Erros frequentes

Descrever a variável sem indicar se estás antes ou depois da atualização.

Voltar à explicação
6. Corrigir uma função

Corrige soma_naturais(n) para devolver a soma de 1 até n, incluindo n. Recebe um inteiro não negativo; não deve imprimir.

Python
def soma_naturais(n):
    total = 0
    for k in range(1, n):
        total += k
    return total
Testes e resultado

Verifica o código para comparar o resultado com os testes.

Testes
  1. Soma vazia
    Código do teste
    print(soma_naturais(0))
    Esperado:
    0
  2. Primeiro termo
    Código do teste
    print(soma_naturais(1))
    Esperado:
    1
  3. Quatro termos
    Código do teste
    print(soma_naturais(4))
    Esperado:
    10
  4. Vinte termos
    Código do teste
    print(soma_naturais(20))
    Esperado:
    210

Pista
Verifica n = 1: quantas iterações faz o ciclo original?
Mais uma pista

O limite superior de range é exclusivo. Para incluir n, usa o inteiro seguinte.

Solução

Substitui range(1, n) por range(1, n + 1). Para n = 0, não há iterações e o total fica a zero. Para n = 4, somamos 1 + 2 + 3 + 4 = 10. A fórmula n * (n + 1) // 2 também devolve a soma, sem um ciclo. Passar estes testes não prova o resultado para todos os inteiros.

Erros frequentes

Excluir n do ciclo, usar print em vez de return ou devolver um valor fixo que só funciona para uma entrada.

Voltar à explicação
7. Explicar o caso vazio

Na função corrigida, por que motivo n = 0 devolve zero? Confirma o resultado pela fórmula e pelo ciclo.

Pista

Observa range(1, 1).

Mais uma pista

O conjunto de valores do ciclo é vazio, por isso total conserva o valor inicial.

Solução

O ciclo não executa iterações e total continua a zero. Na fórmula, 0 × (0 + 1)/2 = 0. Os dois métodos concordam sobre a soma vazia.

Confere a tua resposta:

  • Indiquei que o ciclo não executa nenhuma iteração.
  • Relacionei o resultado com o valor inicial zero.
  • Verifiquei que a fórmula também dá zero.

Erros frequentes

Dizer que a função falha por não haver iterações ou confundir soma vazia com produto vazio.

Voltar à explicação
8. Comparar os dois métodos

Compara o custo do ciclo e da fórmula quando n aumenta. Que hipótese sobre o custo das operações estás a usar?

Pista

Conta quantas vezes cada método atualiza ou calcula um valor.

Mais uma pista

O ciclo repete uma soma n vezes. A fórmula não contém um ciclo, mas os inteiros podem crescer.

Solução

Com operações aritméticas de custo constante, o ciclo custa Θ(n) e a fórmula custa Θ(1). Para inteiros de precisão arbitrária, o custo de uma operação depende do número de bits. A conclusão Θ(1) não é uma análise do custo em bits.

Confere a tua resposta:

  • Contei n atualizações no ciclo.
  • Identifiquei um número fixo de operações aritméticas na fórmula.
  • Indiquei que esta comparação assume operações aritméticas de custo constante.

Erros frequentes

Afirmar que qualquer multiplicação demora o mesmo tempo, independentemente do tamanho dos inteiros.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.