📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 01: Fundamentos da Computação. Recomendado revisar antes de começar.

💻 Simulador de ULA & Conversor de Bases Numéricas

v1.0 — Portas Lógicas, Circuitos Aritméticos e Aritmética Binária

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Estagiário de Engenharia de Software. Todo programador de alto nível precisa entender o que acontece quando o código vira zeros e uns. Saber como a ULA calcula somas em complemento de dois e lida com Overflow e Carry evita bugs clássicos de estouro de memória em produção.

—`

🎯 Objetivo & Escopo do Projeto

Construir um Simulador de Unidade Lógica e Aritmética (ULA) de 8 bits e um conversor de bases numéricas (Binário, Octal, Decimal e Hexadecimal), implementando operações booleanas elementares (AND, OR, XOR, NOT), soma em complemento de dois e cálculo atômico de flags de status (Zero, Negative, Carry e Overflow).

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Professor Coordenador de Arquitetura)

“Preciso de um simulador didático para o laboratório de hardware. Os alunos precisam inserir dois operandos em formato decimal, binário ou hexadecimal, selecionar a operação da ULA (ADD, SUB, AND, OR, XOR) e visualizar tanto o resultado em todas as bases quanto o estado exato das 4 flags de registradores (Zero, Negative, Carry, Overflow). O sistema não pode usar operadores prontos de alto nível sem controle de 8 bits.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Executar operações aritméticas (Soma, Subtração) em registradores de 8 bits (0 a 255). “selecionar a operação da ULA”
RF02 Funcional Executar operações lógicas bit a bit (AND, OR, XOR, NOT). “operações booleanas elementares”
RF03 Funcional Calcular e atualizar as 4 flags de status (Z, N, C, V) a cada operação. “estado exato das 4 flags”
RF04 Funcional Converter e exibir o resultado nas bases Decimal, Binária (8 bits) e Hexadecimal (2 dígitos). “visualizar o resultado em todas as bases”
RNF01 Não-Funcional Operações bitwise puras com máscara de barramento 0xFF. Arquitetura de 8 bits
RNF02 Não-Funcional Código desacoplado e 100% testável via linha de comando (CLI). Engenharia de Software

—`

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como estudante, quero converter números entre Decimal, Binário e Hexadecimal para validar exercícios. Alta
US02 Como aluno, quero somar dois números binários e saber se houve estouro de Carry ou Overflow. Alta
US03 Como professor, quero executar operações lógicas bitwise para demonstrar circuitos lógicos. Média

Quadro Kanban da Sprint

User Story To Do Doing Done
US01 — Conversão de Bases    
US02 — Soma, Subtração & Flags    
US03 — Operações Lógicas Bitwise    

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Setup)

# Criar branch da funcionalidade
git checkout -b feature/US02-ula-bitwise-flags

# Executar o simulador
python src/ula_simulator.py

Template de Pull Request

—`

🛠️ Fase 4 — Implementação Guiada do Código

1. Núcleo da ULA de 8 Bits (src/ula_simulator.py)

class ULA8Bit:
    def __init__(self):
        self.flag_zero = False
        self.flag_negative = False
        self.flag_carry = False
        self.flag_overflow = False

    def somar(self, a, b):
        raw = a + b
        res = raw & 0xFF
        self.flag_zero = (res == 0)
        self.flag_negative = bool(res & 0x80)
        self.flag_carry = (raw > 0xFF)
        self.flag_overflow = bool(~(a ^ b) & (a ^ res) & 0x80)
        return res

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd fundamentos_01_ula_conversor

2. Execute a aplicação ou testes

# Executar comandos específicos da tecnologia:
python main.py # ou npm run dev / ./gradlew build

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/fundamentos_01_ula_conversor`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Troubleshooting

# Teste de Overflow e Carry
assert ula.somar(255, 1) == 0      # Carry = True, Zero = True
assert ula.somar(127, 1) == 128    # Overflow = True (positivo virou negativo em 2's complement)

💡 Troubleshooting (Erros Clássicos)

—`

✅ Checkpoint Final

  1. Todas as operações aritméticas e lógicas operam no limite de 8 bits.
  2. As 4 flags refletem com precisão o estado do registrador de status (SR).
  3. Conversor de bases integrado e funcional.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal