VIA Literacia · edição 1.0

Do primeiro algoritmoao primeiro pull request.

Uma trilha prática para criar um programa em Python, compreender o histórico do Git e colaborar com clareza no GitHub — sem exigir experiência prévia.

Contrato de aprendizagem

Ao final, você consegue demonstrar — não apenas reconhecer.

01 · Explicar

Algoritmo, variável, decisão, repetição e função em linguagem comum.

02 · Construir

Um programa Python que recebe, transforma, valida e apresenta dados.

03 · Versionar

Um histórico com commits coerentes e uma branch dedicada à tarefa.

04 · Colaborar

Um pull request documentado, verificável e livre de credenciais.

Trilha guiada

Entender. Executar. Modificar. Verificar.

Marque uma etapa somente depois de realizar sua verificação. O progresso fica salvo neste navegador e não é enviado a nenhum servidor.

Módulo 00 · 20 min

Preparar o ambiente

Objetivo: confirmar que Python e Git estão disponíveis e criar uma pasta de trabalho.

Verifique as ferramentas

python --version
git --version

mkdir projeto-media
cd projeto-media
Terminal não é Git. O terminal recebe comandos; Python e Git são programas chamados por ele. cd muda de pasta, enquanto git status consulta um repositório.
Verificação

O terminal mostrou as versões do Python e do Git? Você está dentro da pasta projeto-media? Se não, resolva a instalação antes de seguir.

Módulo 01 · 25 min

Pensar como um programa

Objetivo: decompor um problema em entradas, transformação e saída antes de escrever sintaxe.

Entrada
três notas
Processamento
somar e dividir
Saída
mostrar média

Três formas de fluxo

  • Sequência: instruções executadas em ordem.
  • Decisão: um caminho escolhido por uma condição.
  • Repetição: um bloco executado para vários itens.
receber notas
se não houver notas:
    informar que faltam dados
senão:
    para cada nota:
        somar nota ao total
    dividir total pela quantidade
    mostrar média
Prática de recuperação

Escreva, sem consultar o texto, um algoritmo que recebe uma idade e informa se ela é maior ou igual a 18. Identifique entrada, decisão e saída.

Módulo 02 · 70 min

Construir com Python

Objetivo: combinar variáveis, tipos, condição, repetição e função em um programa pequeno.

Primeira execução

nome = input("Como você se chama? ")
print(f"Olá, {nome}!")

Salve como programa.py e execute python programa.py. input devolve texto; por isso, números recebidos precisam de conversão explícita.

Tipos e decisões

TipoExemploUso
str"Ana"texto
int24inteiro
float7.5decimal
boolTruecondição
list[8, 7, 9]coleção
media = 7.5

if media >= 7:
    print("Aprovado")
else:
    print("Revisar conteúdo")
Atribuição não é comparação. = associa um valor a uma variável. == compara dois valores.

Função de média

def calcular_media(notas):
    if not notas:
        return 0
    return sum(notas) / len(notas)


entrada = input("Notas separadas por espaço: ")
notas = [float(item) for item in entrada.split()]
media = calcular_media(notas)
print(f"Média: {media:.1f}")
Verificação

Teste 8 7 9, 10 e 5.5 6.5. Depois acrescente uma decisão que classifique a média usando o limite 7.

Módulo 03 · 25 min

Ler erros e testar hipóteses

Objetivo: usar a mensagem de erro para localizar, explicar e corrigir uma falha.

Erro de sintaxe impede a leitura do código; erro de execução ocorre durante o uso; erro de lógica produz um resultado incorreto.

try:
    entrada = input("Notas separadas por espaço: ")
    notas = [float(item) for item in entrada.split()]
except ValueError:
    print("Use apenas números separados por espaço.")

Rotina de depuração

  1. Reproduza o erro.
  2. Leia a última linha da mensagem.
  3. Localize a primeira linha do seu arquivo citada.
  4. Formule uma hipótese pequena.
  5. Altere uma coisa por vez.
  6. Execute novamente e reteste o que já funcionava.

Teste rápido da regra

assert calcular_media([6, 8]) == 7
assert calcular_media([]) == 0
Verificação

Digite 8 sete 9, observe o ValueError e implemente uma mensagem compreensível para a pessoa usuária.

Módulo 04 · 45 min

Registrar a evolução com Git

Objetivo: criar um repositório local e produzir um histórico legível com pelo menos dois commits.

Pasta de trabalho
editar
Stage
git add
Histórico
git commit
git config --global user.name "Seu Nome"
git config --global user.email "seu-email@example.com"

git init -b main
git status
git add programa.py
git diff --staged
git commit -m "Cria calculadora de média"
git log --oneline

Crie um README.md com objetivo e instruções de execução. Registre-o em outro commit:

git add README.md
git diff --staged
git commit -m "Documenta como executar o programa"
Commits são decisões editoriais. Prefira uma mudança coerente e uma mensagem descritiva. Nunca inclua senha, token, chave ou dado pessoal desnecessário.
Verificação

git status mostra a pasta limpa? git log --oneline --graph --decorate mostra pelo menos dois commits?

Módulo 05 · 50 min

Publicar e colaborar no GitHub

Objetivo: conectar um remoto, publicar uma branch e abrir um pull request verificável.

Git registra versões localmente. GitHub hospeda repositórios Git e acrescenta colaboração, revisão, issues, Actions e Pages.

git remote add origin https://github.com/SEU-USUARIO/projeto-media.git
git remote -v
git push -u origin main

git switch -c feat/classificacao
# edite e teste programa.py
git add programa.py
git commit -m "Adiciona classificação pela média"
git push -u origin feat/classificacao

Descrição mínima do pull request

## Objetivo
Mostrar uma orientação após o cálculo da média.

## Mudanças
- adiciona classificação com limite 7;
- mantém o cálculo existente.

## Como verifiquei
- [x] média 8 mostra "aprovado";
- [x] média 6 mostra "revisar conteúdo";
- [x] entrada inválida continua tratada.
ObjetoPergunta
IssueQual problema ou tarefa precisa de atenção?
CommitQual mudança coerente foi registrada?
Pull requestEsta sequência de mudanças deve entrar em main?
Verificação

Seu GitHub mostra branch, commits e pull request? Outra pessoa conseguiria testar a mudança apenas pela descrição?

Módulo 06 · 35 min

Resolver e proteger

Objetivo: resolver um conflito simples e trabalhar sem expor credenciais.

Conflito é uma decisão, não um defeito

<<<<<<< HEAD
conteúdo da branch atual
=======
conteúdo da outra branch
>>>>>>> outra-branch

Leia as duas propostas, produza o resultado correto, remova todas as marcações, execute o programa e então registre a resolução.

git add programa.py
git commit -m "Resolve conflito na mensagem de resultado"

Autenticação atual

O GitHub não aceita senha da conta para operações Git via HTTPS. Para iniciantes, prefira gh auth login com navegador ou Git Credential Manager. Use token pessoal apenas quando necessário, com prazo e permissões mínimas.

# .gitignore
.env
.venv/
__pycache__/
*.pyc
  • ative 2FA e guarde os códigos de recuperação;
  • nunca coloque token em código, README ou captura de tela;
  • revise git diff --staged antes do commit;
  • se um segredo for publicado, revogue-o imediatamente.
Verificação

Execute git status, git diff --staged e git remote -v. Confirme que não há credenciais nem arquivos acidentais.

Projeto final · 60–90 min

Calculadora versionada

Entrega: programa documentado, testado, desenvolvido em branch e integrado por pull request.

projeto-media/
├── .gitignore
├── README.md
├── programa.py
└── test_programa.py
FuncionaTrês entradas válidas e uma inválida verificadas.
É legívelNomes claros e funções com uma responsabilidade.
É testávelCálculo separado da entrada e da saída.
É versionadoCommits pequenos e mensagens descritivas.
É reproduzívelREADME permite executar sem explicação oral.
É seguroNenhum segredo ou dado sensível no histórico.
Ver versão integrada de referência
def calcular_media(notas):
    if not notas:
        return 0
    return sum(notas) / len(notas)


def classificar(media, limite=7):
    return "aprovado" if media >= limite else "revisar conteúdo"


try:
    entrada = input("Notas separadas por espaço: ")
    notas = [float(item) for item in entrada.split()]
    media = calcular_media(notas)
    print(f"Média: {media:.1f}")
    print(f"Situação: {classificar(media)}")
except ValueError:
    print("Entrada inválida. Use apenas números separados por espaço.")
Ver testes mínimos
from programa import calcular_media, classificar

assert calcular_media([6, 8]) == 7
assert calcular_media([]) == 0
assert classificar(7) == "aprovado"
assert classificar(6.9) == "revisar conteúdo"
Autoavaliação

Sem consultar: você explica o fluxo pasta → stage → commit, distingue pull de push, cria uma branch e mostra a outra pessoa onde estão as instruções de execução?

Folha de consulta

Comandos para lembrar o fluxo.

Use esta seção depois de compreender o modelo. A consulta rápida apoia a prática; não substitui a decisão sobre o que deve entrar em cada commit.

Git local

git init -b main
git status
git diff
git add arquivo.py
git diff --staged
git commit -m "Mensagem"
git log --oneline --graph --decorate

Branches e remoto

git switch -c feat/tarefa
git switch main
git merge nome-da-branch
git remote -v
git pull --ff-only origin main
git push -u origin nome-da-branch