Table of Contents
🤖 Spec Sistemas com C Sharp Dot Net
"A educação é a arma mais poderosa que você pode usar para mudar o mundo." — Nelson Mandela (Adaptado para Tecnologia)
🧭 Atalhos Rápidos
-
Trilha de Aprendizagem --- Veja o Mapa da Jornada.
-
Slides Interativos --- Acesse as Apreasentações.
-
Quizzes de Revisão --- Teste seus Conhecimentos.
-
Projetos Práticos --- Mão na massa nos Projetos.
-
Exercícios --- Pratique com Desafios.
-
Setups --- Configure seu Ambiente.
🗺️ Mapa da Jornada
O curso está dividido em 4 Módulos Estratégicos projetados para uma progressão cognitiva sólida.
- Módulo 1: Fundamentos e Conceitos Iniciais.
- Módulo 2: Aprofundamento Técnico.
- Módulo 3: Prática e Consolidação.
- Módulo 4: Especialização e Projeto Final.
Aulas
Aulas do Curso 📚
Acesse aqui todo o conteúdo teórico dividido em dois módulos.
-
Módulo 1: Fundamentos
A base da lógica de programação. Essencial para iniciantes.
-
Módulo 2: O Poliglota
Aplicação prática em múltiplas linguagens de mercado.
Módulo 1: Fundamentos
Aula 01 - Introdução à Lógica de Programação 🧠
Objetivo
Objetivo: Aprender a "pensar como um computador", entender o que é um algoritmo e como quebrar problemas complexos em passos simples.
1. O que é um Algoritmo? 💡
A palavra pode assustar, mas você usa algoritmos o tempo todo. Um Algoritmo nada mais é do que uma sequência de passos finitos e precisos para resolver um problema.
Conceito Chave
Conceito Chave: Um algoritmo precisa ter um início, um fim, e cada passo não pode gerar dúvidas (ambiguidade).
Visualizando um Algoritmo (Mermaid)
Vamos imaginar o algoritmo para "Trocar uma Lâmpada".
graph TD;
A([Início]) --> B{A lâmpada acende?};
B -- Sim --> C([Fim]);
B -- Não --> D{A lâmpada está plugada?};
D -- Não --> E[Plugar a lâmpada];
D -- Sim --> F{O bulbo queimou?};
F -- Sim --> G[Trocar o bulbo];
F -- Não --> H[Comprar nova luminária];
E --> B;
G --> B;
H --> C;
2. Abstração e Decomposição 🧩
Para escrever bons programas, usamos dois superpoderes:
- Decomposição: Quebrar um problema gigante em pedaços menores.
- Ex: Construir uma casa -> Fazer a fundação -> Levantar paredes -> Telhado.
- Abstração: Focar no que importa e ignorar os detalhes irrelevantes.
- Ex: Ao dirigir, você foca no volante e pedais, ignorando como o motor queima o combustível.
3. Reconhecimento de Padrões 🔍
Identificar similaridades entre problemas diferentes para aplicar soluções conhecidas.
- Ex: Se você sabe dirigir um carro, é mais fácil aprender a dirigir um caminhão, porque o padrão (volante, pedais, marchas) é similar.
3. Fluxogramas: A Linguagem Universal 🗺️
Se quisermos calcular a média de um aluno, não precisamos saber o nome dele ou o que ele comeu. Precisamos apenas das NOTAS.
ALGORITMO CalcularMedia
LER Nota1
LER Nota2
LER Nota3
Media = (Nota1 + Nota2 + Nota3) / 3
ESCREVER Media
FIM_ALGORITMO
3. Fluxogramas: A Linguagem Universal 🗺️
Antes de escrever código, desenhamos. O Fluxograma usa formas geométricas para representar os passos.
| Símbolo | Nome | Função |
|---|---|---|
([ ... ]) |
Terminador | Início ou Fim |
[ ... ] |
Processo | Cálculo ou Ação |
/ ... / |
Dados | Entrada (Ler) ou Saída (Escrever) |
{ ... } |
Decisão | Uma pergunta (Sim/Não) |
Exemplo: Passou de Ano?
graph TD;
Início([Início]) --> Ler[/Ler Notas/];
Ler --> Calc[Calcular Média];
Calc --> Decisão{Média >= 7?};
Decisão -- Sim --> Aprov[/Aprovado/];
Decisão -- Não --> Reprov[/Reprovado/];
Aprov --> Fim([Fim]);
Reprov --> Fim;
4. O Próximo Passo: VisualG 💻
Para sair do papel e ver o algoritmo "rodar", usaremos o VisualG. Ele é um interpretador de algoritmos em português (Portugol).
Exemplo de Código VisualG
Não se preocupe em entender agora, veremos isso na Aula 02!Mão na Massa: O Pensamento Computacional 💻
Antes de programar, simulamos no terminal mental:
<span data-ty="input">pensar como programador</span>
<span data-ty>Analisando problema...</span>
<span data-ty>Decompondo em passos...</span>
<span data-ty>Abstraindo detalhes...</span>
<span data-ty>PADRÃO ENCONTRADO! 🚀</span>
5. Mini-Projeto: O Algoritmo da Vida 🚀
Nesta aula, seu mini-projeto é criar um Fluxograma Digital.
Desafio do Projeto
Escolha um hábito diário (ex: fazer academia, estudar inglês, cozinhar) e transforme em um fluxograma usando as formas geométricas que aprendemos. Você deve apresentar pelo menos 2 decisões (losangos) e 4 processos (retângulos).
6. Exercícios de Fixação 📝
- Fácil: Escreva um algoritmo (em português) para fazer um café. Lembre-se de verificar se tem pó e água!
- Médio: Desenhe (no papel ou mentalmente) um fluxograma para atravessar a rua com segurança.
-
Desafio: Um fazendeiro precisa atravessar um rio com um lobo, uma ovelha e uma alface. O barco só leva o fazendeiro e mais um item.
- Se o lobo ficar sozinho com a ovelha, ele a come.
- Se a ovelha ficar sozinha com a alface, ela a come.
- Algoritmo: Qual a sequência de viagens para levar todos pro outro lado?
Dica do Desafio
O fazendeiro pode trazer algo de volta também! Tente levar a ovelha primeiro.
Próxima Aula: Vamos preparar nosso Ambiente e Ferramentas para começar a programar de verdade!
Aula 02 - Ambiente e Ferramentas 🛠️
Objetivo
Objetivo: Configurar sua "bancada de trabalho". Vamos conhecer onde os códigos são escritos, compilados e executados.
1. O Ciclo de Vida do Código 🔄
Você escreve texto, mas o computador entende energia (0 e 1). Como essa mágica acontece?
graph LR;
A["Código Fonte\n(Humano)"] -->|Compilador/Interpretador| B["Código de Máquina\n(Binário)"];
B -->|CPU| C["Execução\n(Ação)"];
style A fill:#f9f,stroke:#333;
style B fill:#bbf,stroke:#333;
style C fill:#bfb,stroke:#333;
- Código Fonte: O que você escreve (ex:
escreva("Olá")). - Compilador: O tradutor.
- Binário: O executável (
.exe).
2. Ferramentas de Aprendizado (Low Code) 🧩
Para começar sem frustração, usamos ferramentas que focam 100% na lógica.
VisualG & Portugol Studio
Usam Pseudocódigo (Português Estruturado). É como programar em português.
Exemplo no VisualG:
Algoritmo "Exemplo"
Var
nome : caractere
Inicio
escreva("Qual seu nome? ")
leia(nome)
escreva("Olá, ", nome)
Fimalgoritmo
Scratch
Lógica em blocos. Perfeito para entender estruturas sem erro de sintaxe.
Note
Acesse scratch.mit.edu para criar conta.
3. Visual Studio Code (VS Code) 💻
O editor profissional mais usado do mundo. Ele não faz nada sozinho, mas com Extensões, faz tudo.
Simulando o Terminal (Termynal)
Quando programamos ferramentas "reais" (C, Python, Java), usamos muito o terminal (tela preta).
Verificando Instalações
Podemos perguntar ao terminal "Quem é você?":
5. Mini-Projeto: Dashboard de Compilação 🚀
Seu desafio hoje é documentar seu ambiente.
Desafio do Projeto
Abra seu Editor de Código (pode ser o VS Code ou VisualG), escreva o código "Olá Mundo", tire um print da tela com o código e o resultado da execução (terminal ou console) e salve como projeto-02-setup.png.
O objetivo é garantir que seu "foguete" (ambiente) está pronto para o lançamento!
6. Exercícios de Configuração 📝
Preparamos guias detalhados para cada ferramenta. Salve estes links:
5. Exercícios de Configuração 📝
- Fácil: Baixe o VisualG (ou Portugol Studio) e execute o algoritmo "Olá Mundo".
- Médio: Crie uma conta no Scratch e explore os blocos de "Eventos".
- Desafio: Instale o VS Code, instale a extensão "Draw.io Integration" e tente desenhar um fluxograma dentro do próprio VS Code!
Próxima Aula: Agora sim, código! Vamos para a Estrutura Sequencial.
Aula 03 - Estrutura Sequencial ➡️
Objetivo
Objetivo: Entender como o computador guarda informações (Variáveis) e executa comandos um após o outro.
1. Variáveis: As Caixas da Memória 📦
Imagine que a memória RAM do computador é um grande armário cheio de gavetas. Cada gaveta tem um endereço e guarda uma coisa por vez.
Visualizando a Memória (Mermaid)
graph TD;
Memoria[Memória RAM] --> Var1[Gaveta 'IDADE'];
Var1 --> Val1[Valor: 25];
Memoria --> Var2[Gaveta 'NOME'];
Var2 --> Val2["Valor: 'Maria'"];
style Var1 fill:#f9f,stroke:#333;
style Var2 fill:#bbf,stroke:#333;
2. Tipos de Dados (O Formato da Caixa) 📐
Nem tudo cabe na mesma gaveta. Precisamos definir o TIPO da variável.
| Tipo (Pseudocódigo) | O que guarda? | Exemplo | Tamanho (Bytes) |
|---|---|---|---|
| Inteiro | Números sem vírgula | 10, -5, 0 |
4 |
| Real | Números com vírgula | 10.5, 3.14 |
8 |
| Caractere | Texto (Letras/Palavras) | "Olá", 'A' |
Var |
| Lógico | Verdadeiro ou Falso | VERDADEIRO |
1 |
Erro Comum
Erro Comum: Tentar guardar texto numa variável numérica gera erro! inteiro x = "texto" ❌
3. Entrada, Processamento e Saída ⚙️
Todo algoritmo segue esse fluxo:
- Entrada (Input): Dados que chegam (Teclado, Arquivo).
- Processamento: Cálculos (
soma = a + b). - Saída (Output): Resultado (Tela).
Exemplo: Calculadora de Dobro (VisualG)
Algoritmo "Dobro"
Var
num, resultado : inteiro
Inicio
// Entrada
escreva("Digite um número: ")
leia(num)
// Processamento
resultado <- num * 2
// Saída
escreva("O dobro é: ", resultado)
Fimalgoritmo
Simulando a Execução (Termynal)
4. Operadores Aritméticos 🧮
O computador é uma calculadora gigante.
| Operador | Nome | Exemplo | Resultado |
|---|---|---|---|
+ |
Soma | 5 + 3 |
8 |
- |
Subtração | 10 - 2 |
8 |
* |
Multiplicação | 4 * 2 |
8 |
/ |
Divisão | 16 / 2 |
8 |
% |
Módulo (Resto) | 5 % 2 |
1 (Sobrou 1) |
^ |
Potência | 2 ^ 3 |
8 |
Dica: Resto da Divisão
O operador % é muito útil para saber se um número é Par ou Ímpar.
* x % 2 = 0 -> Par
* x % 2 = 1 -> Ímpar
5. Matemática Computacional (MathJax) 📐
Os computadores são EXCELENTES em resolver fórmulas complexas. Um exemplo famoso na Engenharia de Software é o Modelo COCOMO, usado para estimar o esforço de um projeto:
Fórmula de Es esforço
A fórmula básica para estimar o esforço em meses/pessoa é: $$ E = a \cdot (KLOC)^b $$ Onde:
- \(E\): Esforço (meses/pessoa)
- \(KLOC\): Milhares de linhas de código
- \(a, b\): Constantes do projeto
6. Mini-Projeto: O Conversor Universal 🚀
Agora que você sabe usar variáveis e operadores, vamos criar uma ferramenta útil.
Desafio do Projeto
Crie um algoritmo (Pseudocódigo) que receba um valor em Reais (R\()** e mostre quanto esse valor vale em **Dólares (US\)) e Euros (€). Considere cotações fixas para o teste (ex: US$ 1.00 = R$ 5.00).
7. Exercícios de Fixação 📝
- Fácil: Crie um algoritmo que leia o Nome e Idade de, pessoa e mostre: "Olá [Nome], você tem [Idade] anos".
- Médio: Leia dois números (A e B) e troque seus valores (A vira B, B vira A). ??? tip "Dica da Troca" Imagine dois copos (um com suco, outro com água). Para trocar o conteúdo, você precisa de um terceiro copo vazio (variável auxiliar)!
- Desafio: Um motorista deseja encher o tanque. Leia o preço da gasolina e o valor que ele tem em dinheiro. Calcule quantos litros ele consegue colocar.
Próxima Aula: E se precisarmos tomar decisões? Estrutura Condicional.
Aula 04 - Estrutura Condicional 🔀
Objetivo
Objetivo: Ensinar o computador a tomar decisões baseadas em perguntas (Se/Então).
1. O Desvio Lógico ("Se...") 🤔
Até agora, nossos programas eram uma linha reta. Mas a vida é cheia de "Se": * SE chover, levo guarda-chuva. * SENÃO, vou de óculos escuros.
Visualizando a Decisão (Mermaid)
graph TD;
Início([Início]) --> Ler[/Ler Idade/];
Ler --> Decisão{Idade >= 18?};
Decisão -- "Sim (Verdadeiro)" --> Aprov[Liberar Acesso];
Decisão -- "Não (Falso)" --> Bloq[Bloquear Acesso];
Aprov --> Mensagem[/Mostrar 'Bem-vindo'/];
Bloq --> MensagemBloq[/Mostrar 'Sai daqui'/];
Mensagem --> Fim([Fim]);
MensagemBloq --> Fim;
style Decisão fill:#ff9,stroke:#333;
2. Sintaxe Básica (Se-Entao-Senao) 📝
Em Portugol, a estrutura é muito legível.
Operadores Relacionais (A Pergunta)
Para fazer a pergunta dentro do se, usamos comparadores:
| Símbolo | Significado | Exemplo | Resultado |
|---|---|---|---|
> |
Maior que | 10 > 5 |
Verdadeiro |
< |
Menor que | 5 < 10 |
Verdadeiro |
== |
Igual a | 5 == 5 |
Verdadeiro |
!= |
Diferente | 5 != 3 |
Verdadeiro |
>= |
Maior ou Igual | 10 >= 10 |
Verdadeiro |
3. Operadores Lógicos (Combinando Perguntas) 🔗
Às vezes, uma única condição não basta.
| Operador | Significado | Exemplo | Regra |
|---|---|---|---|
E |
E (And) | x > 5 E x < 10 |
Verdadeiro só se AMBOS forem verdadeiros. |
OU |
OU (Or) | dia == "Sábado" OU dia == "Domingo" |
Verdadeiro se PELO MENOS UM for verdadeiro. |
NÃO |
NÃO (Not) | NÃO (x > 0) |
Inverte o resultado (Vira Falso). |
Tabela Verdade (Resumida)
- V e V = V
- V e F = F
- V ou F = V
- F ou F = F
4. Múltiplas Escolhas (Switch/Caso) 🚦
Quando temos muitas opções fixas (Menu), usar vários se fica feio. Usamos a estrutura Escolha-Caso.
escolha (opcao)
caso 1
escreva("Ligando...")
caso 2
escreva("Reiniciando...")
caso 3
escreva("Sair")
outrocaso
escreva("Opção Inválida")
fimescolha
Simulando um Menu (Termynal)
5. Mini-Projeto: Calculadora de IMC 🚀
Vamos aplicar as condicionais em algo prático e saudável.
Desafio do Projeto
Crie um algoritmo que receba o Peso e a Altura de uma pessoa.
1. Calcule o IMC: \(IMC = Peso / (Altura \cdot Altura)\).
2. Mostre a classificação:
* Menor que 18.5: Abaixo do peso
* Entre 18.5 e 24.9: Peso normal
* A partir de 25: Sobrepeso
Use se...entao...senao para decidir.
6. Exercícios de Fixação 📝
- Fácil (Par ou Ímpar): Leia um número inteiro. Se o resto da divisão por 2 for 0 (
num % 2 == 0), escreva PAR, senão, ÍMPAR. - Médio (Média): Leia 2 notas. Calcule a média.
- Se média >= 7: APROVADO.
- Se média >= 5 e < 7: RECUPERAÇÃO.
- Se média < 5: REPROVADO.
-
Desafio (Bhaskara): Leia A, B e C. Calcule o Delta (
B*B - 4*A*C).- Se Delta < 0: Não existe raiz real.
- Se Delta >= 0: Calcule e mostre X1 e X2.
Dica: Raiz Quadrada
No VisualG, use a função
RaizQ(Delta)para calcular \(\sqrt{\Delta}\).
Próxima Aula: Como repetir uma tarefa 1000 vezes sem escrever 1000 linhas? Estruturas Repetitivas.
Aula 05 - Estruturas Repetitivas 🔁
Objetivo
Objetivo: Aprender a automatizar tarefas repetitivas. Se você precisa fazer algo mais de uma vez, use um laço (loop).
1. O Poder da Repetição 🔄
Imagine ter que escrever escreva("Oi") mil vezes. Inviável, certo?
As estruturas de repetição permitem executar um bloco de código várias vezes enquanto uma condição for verdadeira.
Visualizando o Loop (Mermaid)
graph TD;
Inicio([Início]) --> Cond{Contador < 5?};
Cond -- Sim --> Acao["Escrever 'Olá'"];
Acao --> Inc[Contador + 1];
Inc --> Cond;
Cond -- Não --> Fim([Fim]);
style Cond fill:#ff9,stroke:#333;
style Inc fill:#bbf,stroke:#333;
2. Enquanto (While) ⏳
É o laço mais simples. Testa a condição antes de executar. Se a condição for falsa logo de cara, ele nem entra.
Simulando (Termynal)
3. Repita-Até (Do-While) 🛡️
Executa pelo menos uma vez, pois testa a condição no final. Útil para menus ou validação de entrada (ex: "Digite a senha correta").
4. Para (For) 🎯
O melhor para quando você sabe exatamente quantas vezes quer repetir (ex: 10 vezes, do dia 1 ao 30). Ele agrupa Inicialização, Condição e Incremento em uma linha só.
5. Controle de Fluxo (Interrompa) 🛑
Às vezes, precisamos sair do loop antes da hora (ex: achamos o que procurávamos).
No VisualG, usamos o comando interrompa.
enquanto (verdadeiro) faca
escreva("Digite 0 para sair: ")
leia(num)
se (num == 0) entao
interrompa
fimse
fimenquanto
6. O Teste de Mesa (Debug Mental) 🧠
Como saber se o loop está certo? Fazemos uma tabela simulando as variáveis passo a passo. Exemplo: Contador de 1 a 3.
| Passo | Variável i |
Condição i <= 3? |
Ação |
|---|---|---|---|
| 1 | 1 | Sim (Verdadeiro) | Escreve "1" |
| 2 | 2 | Sim (Verdadeiro) | Escreve "2" |
| 3 | 3 | Sim (Verdadeiro) | Escreve "3" |
| 4 | 4 | Não (Falso) | Para! |
7. Mini-Projeto: O Gerador de Tabuada 🚀
Automatizar cálculos repetitivos é a alma da programação.
Desafio do Projeto
Crie um algoritmo que pergunte ao usuário qual número ele deseja ver a tabuada.
Use um laço para ou enquanto para mostrar o resultado do 1 ao 10 na tela.
Extra: Tente fazer o programa perguntar se o usuário deseja ver outra tabuada antes de encerrar (usando repita).
8. Exercícios de Fixação 📝
- Fácil (Contagem Regressiva): Faça um algoritmo que conte de 10 até 0 e escreva "FOGO!".
- Médio (Tabuada): Leia um número (ex: 7) e mostre sua tabuada do 1 ao 10.
- Desafio (Números Primos): Leia um número e diga se ele é primo (divisível apenas por 1 e por ele mesmo). ??? tip "Dica: Primos" Um número Primo só tem 2 divisores. Use um laço de 1 até Ele Mesmo e conte quantos divisores existem. Se o contador for 2, é Primo!
Próxima Aula: Como guardar 100 nomes sem criar 100 variáveis? Vetores (Arrays).
Aula 06 - Estruturas de Dados I: Vetores 📊
Objetivo
Objetivo: Aprender a guardar múltiplos dados do mesmo tipo em uma única variável "comprida".
1. O Problema das Muitas Variáveis 😫
Imagine guardar a nota de 50 alunos.
nota1, nota2, nota3... nota50.
E para calcular a média? (nota1 + nota2 + ... + nota50) / 50.
Isso é caótico. Para isso existem os Vetores (Arrays).
2. O Que é um Vetor? 📏
Um vetor é como uma suqueira de remédios ou uma planilha de uma linha só. Ele tem um Nome, um Tamanho e posições numeradas (Índices).
Visualizando um Vetor (Mermaid)
graph LR;
subgraph Vetor NOTAS
direction LR
A[Índice 0\nValor: 8.5] --- B[Índice 1\nValor: 7.0] --- C[Índice 2\nValor: 10.0] --- D[Índice 3\nValor: 5.5];
end
style A fill:#f9f;
style B fill:#bbf;
Atenção
Atenção: Na maioria das linguagens (C, Java, Python), o primeiro índice é 0, não 1!
3. Manipulando Vetores 🛠️
Em Portugol, a sintaxe é simples.
Declaração
Acesso (Ler e Escrever)
Percorrendo com 'Para'
A combinação perfeita: Vetor + Loop Para.
Simulando (Termynal)
4. Ordenação de Vetores (Bubble Sort) 🫧
E se quisermos colocar os números em ordem crescente? (1, 2, 3...). O método mais famoso é a "Ordenação Bolha". A ideia é simples: O maior valor "flutua" para o topo.
- Compare o vizinho da esquerda com o da direita.
- Se o da esquerda for maior, TROQUE.
- Repita até tudo estar ordenado.
// Exemplo Simples: Troca
se (vet[0] > vet[1]) entao
temp <- vet[0]
vet[0] <- vet[1]
vet[1] <- temp
fimse
5. Mini-Projeto: Dashboard de Notas 🚀
Vetores são perfeitos para organizar dados de uma turma.
Desafio do Projeto
Crie um algoritmo que peça a nota de 5 alunos e guarde em um vetor. 1. Calcule a média da turma. 2. Conte quantos alunos ficaram acima dessa média. 3. Mostre o resultado no final.
6. Exercícios de Fixação 📝
- Fácil: Crie um vetor de 5 números inteiros. Preencha-o e depois mostre a soma de todos eles.
- Médio (Inverso): Leia 10 números e mostre-os na ordem inversa (do último para o primeiro).
- Desafio (Maior/Menor): Leia 10 números. No final, diga qual foi o Maior valor digitado e em qual posição ele está.
??? tip "Dica: Rei da Montanha"
Crie uma variável
maiorcom um valor bem pequeno. A cada número lido, pergunte: "Esse número é maior que o meu atualmaior?". Se sim, atualize!
Próxima Aula: E se precisarmos de linhas E colunas? Matrizes.
Aula 07 - Estruturas de Dados II: Matrizes 📈
Objetivo
Objetivo: Expandir o conceito de vetor para duas dimensões. Pense em uma planilha do Excel ou um tabuleiro de Xadrez.
1. O Mundo em 2D 🗺️
Nem tudo é uma lista simples. Um cinema tem fileiras e cadeiras. Uma planilha tem linhas e colunas. Para isso, usamos Matrizes (Vetores de Vetores).
Visualizando uma Matriz (Mermaid)
graph TD;
subgraph Matriz [3 Linhas x 3 Colunas]
direction TB
L0[Linha 0] --- C00[Col 0: X] --- C01[Col 1: O] --- C02[Col 2: X]
L1[Linha 1] --- C10[Col 0: O] --- C11[Col 1: X] --- C12[Col 2: O]
L2[Linha 2] --- C20[Col 0: X] --- C21[Col 1: O] --- C22[Col 2: X]
end
2. Coordenadas (Linha, Coluna) 📍
Para achar alguém no cinema, você precisa de duas informações: "Fileira F, Cadeira 12".
Na matriz é igual: matriz[linha][coluna].
// Declaração: Matriz de 3 linhas e 3 colunas
matriz : vetor [0..2, 0..2] de inteiro
// Acessando o centro
matriz[1][1] <- 50
2.5 Aplicações Práticas (Onde usam isso?) 🌍
Matrizes estão em todos os lugares: * Imagens Digitais: Cada pixel é uma célula de uma matriz gigante de cores. * Planilhas (Excel): Linhas e colunas de dados. * Jogos de Tabuleiro: Xadrez, Dama, Batalha Naval. * Mapas: Coordenadas de Latitude e Longitude (GPS).
3. Percorrendo uma Matriz 🔄🔄
Se um vetor precisa de 1 loop, uma matriz precisa de 2 loops aninhados (um dentro do outro).
para linha de 0 ate 2 faca
para coluna de 0 ate 2 faca
escreva("Digite valor para [", linha, ",", coluna, "]: ")
leia(matriz[linha][coluna])
fimpara
fimpara
Simulando a Execução (Termynal)
4. Mini-Projeto: Jogo da Velha (Esqueleto) 🚀
As matrizes são a base de quase todos os jogos de tabuleiro digitais.
Desafio do Projeto
Crie um algoritmo que declare uma matriz 3x3 de caracteres (para guardar "X" ou "O").
1. Preencha todas as posições com um traço -.
2. Peça para o usuário digitar uma linha e uma coluna.
3. Coloque um "X" na posição escolhida.
4. Mostre a matriz resultante na tela.
5. Exercícios de Fixação 📝
- Fácil (Identidade): Crie uma matriz 3x3 onde a diagonal principal (0,0 | 1,1 | 2,2) seja preenchida com 1 e o resto com 0.
- Médio (Soma): Leia uma matriz 2x2 e mostre a soma de todos os seus elementos.
- Desafio (Batalha Naval): Crie um tabuleiro 5x5 zerado. Esconda um "Navio" (valor 1) em uma posição aleatória. Peça para o usuário "atirar" (digitar linha e coluna). Se acertar, escreva "FOGO!", senão, "ÁGUA".
??? tip "Dica: Aleatoriedade"
Para gerar números aleatórios no VisualG, use
randi(5). Ele gera um número entre 0 e 4.
Próxima Aula: Como organizar códigos gigantes sem perder a cabeça? Modularização e Funções.
Aula 08 - Modularização: Funções e Procedimentos 🧩
Objetivo
Objetivo: Aprender a dividir um problema grande em pequenos pedaços reutilizáveis. "Dividir para conquistar".
1. O Que é Modularização? 🧱
Imagine construir um carro. Você não faz o motor, os pneus e o vidro ao mesmo tempo num bloco só. Você monta peças separadas e as encaixa. Funções são essas peças.
Visualizando a Chamada (Mermaid)
sequenceDiagram
participant Principal
participant CalcularMedia
Principal->>CalcularMedia: Envia (Nota1, Nota2)
Note right of CalcularMedia: Processa (N1+N2)/2
CalcularMedia-->>Principal: Retorna (Média)
Principal->>Principal: Mostra Resultado
2. Tipos de Módulos 🛠️
Em Portugol (e muitas linguagens), temos dois tipos:
Procedimento (Sem Retorno)
Faz uma ação e não devolve número matemático. Ex: LimparTela(), MostrarMenu().
Função (Com Retorno)
Calcula algo e devolve uma resposta. Ex: RaizQuadrada(x), Soma(a, b).
3. Escopo de Variáveis (Onde ela vive?) 🏠
Isso é CRÍTICO. * Variável Global: Todo mundo vê. (Perigoso!) * Variável Local: Só existe dentro da função. (Seguro)
Warning
Se você criar uma variável x dentro da função somar, o programa principal NÃO enxerga ela.
3.5 Passagem de Parâmetros (Valor vs Referência) 🚚
Como a função recebe os dados?
- Por Valor (Padrão): A função recebe uma CÓPIA. Se mudar lá dentro, não afeta fora.
- Por Referência (
var): A função recebe o ENDEREÇO da variável original. Se mudar lá dentro, muda fora também!
// Exemplo: Trocar valor (Precisa ser referência!)
procedimento trocar(var a, var b : inteiro)
// ... código de troca ...
fimprocedimento
4. Simulando (Termynal)
5. Mini-Projeto: Fábrica de Áreas 🚀
Funções permitem que você crie sua própria linguagem de comandos.
Desafio do Projeto
Crie uma função chamada AreaRetangulo(base, altura) que retorne o cálculo da área.
No seu programa principal, peça para o usuário os dados e chame a função para mostrar o resultado.
Lembre-se: O programa principal não deve saber como a área é calculada, apenas pedir o resultado para a função!
6. Exercícios de Fixação 📝
- Fácil: Crie um procedimento
DesenharLinha()que escreva "----------" na tela. Use-o para separar títulos. - Médio: Crie uma função
ConverterParaFahrenheit(celsius)que recebe o valor em C e retorna em F. - Desafio (Calculadora): Crie funções para
Somar,Subtrair,MultiplicareDividir. No programa principal, peça dois números e a operação desejada, chamando a função correta. - 🏆 PROJETO FINAL MÓDULO 1: Crie um "Sistema de Notas" que use tudo que aprendeu:
- Um vetor para nomes e um vetor para médias.
- Um procedimento
LerDados()para preencher os vetores. - Uma função
VerificarAprovacao(media)que retorna "Aprovado" ou "Reprovado". - Um loop para mostrar o boletim final de 5 alunos.
Próxima Aula: Fim dos Fundamentos! Agora vamos aplicar tudo isso em linguagens reais, começando pelos pais da programação: C e C++.
Módulo 2: O Poliglota
Aula 09 - C e C++: Baixo Nível e Performance 🧱
Objetivo
Objetivo: Entender o que acontece "por baixo do capô". C e C++ te dão controle total sobre a memória do computador.
1. Linguagem C: O Pai das Linguagens Modernas 👴
Criada em 1972, quase tudo que você usa hoje (Windows, Linux, Android) tem C no núcleo. É uma linguagem Estruturada e Compilada.
A Estrutura Básica
Anatomia do Código 🦴
| Parte | O que faz? |
|---|---|
#include <stdio.h> |
Traz ferramentas de Entrada/Saída (printf). É como pegar a caixa de ferramentas. |
int main() { ... } |
O Ponto de Partida. Todo programa C começa aqui. |
printf(...) |
Imprime na tela. (Print Formatted). |
return 0; |
Diz ao sistema operacional: "Terminei sem erros!". |
Visualizando a Memória (Stack vs Heap)
Em C, você gerencia onde os dados ficam.
graph TD;
subgraph RAM
Stack["Stack (Pilha)"] --- V["Variáveis Locais\nRápidas"];
Heap["Heap (Monte)"] --- D["Dados Dinâmicos\nLentos"];
end
style Stack fill:#f9f;
style Heap fill:#bbf;
Simulando Compilação (Termynal)
2. Ponteiros: O Superpoder (e o Perigo) ⚡
Um ponteiro não guarda um valor (como 10), ele guarda o Endereço da Memória onde o 10 está.
Warning
Ponteiros errados podem travar o sistema (o famoso "Segmentation Fault").
3. C++: Adicionando Objetos 🚀
C++ mantém a velocidade do C, mas adiciona Classes e Objetos para organizar códigos gigantes.
Classes e Objetos
#include <iostream>
using namespace std;
class Carro {
public:
string marca;
void buziar() {
cout << "Bi Bi!" << endl;
}
};
int main() {
Carro meuCarro;
meuCarro.marca = "Ferrari";
meuCarro.buziar();
return 0;
}
Compilando C++ (Termynal)
4. Mini-Projeto: Gerenciador de Registros em C 🚀
C te permite ver como os dados são organizados no nível mais baixo.
Desafio do Projeto
Crie um programa em C que use uma struct (estrutura) chamada Aluno com os campos id (inteiro) e media (float).
1. Peça para o usuário digitar os dados de um aluno.
2. Mostre os dados na tela.
3. Use um ponteiro para alterar a média do aluno através de uma função atualizarMedia().
5. Exercícios de Fixação 📝
- Fácil: Escreva um programa em C que leia a idade e mostre se é maior de idade.
- Médio (C++): Crie uma classe
Retangulocom atributoslarguraealturae um métodocalcularArea(). - Desafio (Ponteiros): Crie duas variáveis
aeb. Use uma funçãotrocar(&a, &b)que receba ponteiros e troque os valores das variáveis originais. ??? tip "Dica: Operador " Use*ppara acessar o VALOR* que o ponteiro aponta.temp = *p1;
Próxima Aula: Vamos sair da "tela preta" e ir para a Web! JavaScript e TypeScript.
Aula 10 - Web Moderna: JavaScript e TypeScript 🌐
Objetivo
Objetivo: Entender o papel do JavaScript na web e como o TypeScript ajuda a escrever códigos mais robustos e seguros.
4. Mini-Projeto: To-Do Console 🚀
JS é excelente para manipular listas e objetos.
Desafio do Projeto
Crie um array (vetor) de objetos chamado tarefas. Cada objeto deve ter descricao e concluida (booleano).
1. Adicione 3 tarefas iniciais.
2. Crie uma função que liste apenas as tarefas que NÃO foram concluídas.
3. Use o Node.js para rodar seu script no terminal.
5. Exercícios de Fixação 📝
O JavaScript (JS) é a única linguagem que roda nativamente em todos os navegadores. Ele manipula o DOM (Document Object Model), que é a estrutura da página HTML.
Visualizando o DOM (Mermaid)
graph TD;
Doc[Document] --> HTML;
HTML --> Head;
HTML --> Body;
Head --> Meta;
Body --> H1[Título];
Body --> P[Parágrafo];
Body --> Button[Botão];
style Doc fill:#f9f;
style Button fill:#bbf;
2. JavaScript: Dinamismo ⚡
// Seleciona o botão e adiciona um evento
const botao = document.querySelector('button');
botao.addEventListener('click', () => {
alert("Você clicou no botão!");
});
Node.js: JS fora do Navegador
Hoje, JS também roda no servidor com o Node.js.
A Revolução do Express.js
Para criar sites complexos, usamos frameworks. O Express é o padrão da indústria.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Olá do Backend!');
});
app.listen(3000);
3. Variáveis Modernas (Esqueça o var) 🆕
O JS é "fracamente tipado" (você pode somar texto com número e ele deixa). O TypeScript (TS) adiciona Tipagem Estática para evitar erros bobos.
| Código JS (Suscetível a erro) | Código TS (Seguro) |
|---|---|
function soma(a, b) { return a + b; } |
function soma(a: number, b: number): number { return a + b; } |
Note
O navegador não entende TS. Ele precisa ser transpilado para JS.
4. Exercícios de Fixação 📝
- Fácil: Crie um arquivo HTML com um botão. Use JS para mudar a cor de fundo da página quando clicar nele.
- Médio (Node): Crie um script
tabuada.jsque mostre a tabuada do 7 no terminal. - Desafio (TS): Crie uma interface
Pessoacom nome e idade. Crie uma função que receba um objeto desse tipo e diga se é maior de idade.
Próxima Aula: O gigante corporativo. Vamos aprender sobre Classes e Objetos robustos com Java.
Aula 11 - Java e Orientação a Objetos ☕
Objetivo
Objetivo: Entender como organizar sistemas grandes e complexos usando Classes, Objetos e Herança.
1. O Mundo dos Objetos 🌍
Na programação estruturada (C, Pascal), focamos em ações (funções). Na Orientação a Objetos (OO), focamos em coisas (objetos).
- Classe: A forma, o molde (ex: Planta da Casa).
- Objeto: A coisa concreta (ex: A Casa construída).
Visualizando Classes (Mermaid UML)
classDiagram
class Animal {
+String nome
+int idade
+fazerSom()
}
class Cachorro {
+latir()
}
class Gato {
+miar()
}
Animal <|-- Cachorro : Herança
Animal <|-- Gato : Herança
2. Java: "Escreva uma vez, rode em qualquer lugar" ♻️
Java usa uma Máquina Virtual (JVM).
3. Encapsulamento, Herança e Polimorfismo 🛡️
Os 3 pilares da OO em Java:
1. Encapsulamento: Proteger os dados (private) e dar acesso controlado (get/set).
2. Herança: Cachorro é um Animal. Reaproveita código.
3. Polimorfismo: Animal faz som, mas o Cachorro late e o Gato mia.
Código Java
public class Animal {
private String nome; // Encapsulado
public void fazerSom() {
System.out.println("Som genérico...");
}
}
public class Cachorro extends Animal {
@Override
public void fazerSom() {
System.out.println("Au Au!");
}
}
3.5 O Poder do Spring Boot (Web Moderno) 🍃
Java não é só "tela preta". Com Spring Boot, criamos APIs em segundos.
@RestController
public class OlaController {
@GetMapping("/ola")
public String dizerOla() {
return "Olá, Mundo Spring Boot!";
}
}
4. Mini-Projeto: Mini Petshop OO 🚀
A Orientação a Objetos brilha quando temos diferentes categorias de coisas que compartilham comportamentos.
Desafio do Projeto
Crie uma estrutura em Java que represente um Petshop.
1. Crie uma classe base Animal (nome, especie).
2. Crie subclasses Cachorro e Gato.
3. Implemente um método emitirSom() que seja diferente para cada um.
4. No seu programa principal, crie uma lista (ArrayList) de animais e mande todos emitirem seus sons.
5. Exercícios de Fixação 📝
- Fácil: Crie uma classe
Pessoacomnomeeidade. Crie um métodoapresentar(). - Médio: Crie uma classe
ContaBancariacomsaldoprivado. Crie métodosdepositar(valor)esacar(valor). Não deixe o saldo ficar negativo! - Desafio (Herança): Crie uma classe
Funcionarioe uma subclasseGerente. O gerente tem um método extraautorizarPagamento().
Próxima Aula: O ecossistema da Microsoft. Vamos ver como C# e .NET facilitam a vida do desenvolvedor: C# e .NET.
Aula 12 - Ecossistema Microsoft: C# e .NET 🔷
Objetivo
Objetivo: Produtividade máxima. Aprender a linguagem C# e a plataforma .NET, muito usadas em empresas.
1. O Que é .NET? 🏗️
Não confunda: C# é a linguagem. .NET é a plataforma (bibliotecas, runtime, ferramentas). É similar ao Java, mas com foco extremo em facilidade de uso e integração.
2. Ferramentas: Onde programar? 🛠️
- Visual Studio (Roxo): A IDE completa. Pesada, mas quase programa por você.
- VS Code (Azul): Leve, rápido e funciona em qualquer lugar.
Criando um Projeto (Termynal)
3. LINQ: A Mágica do C# 🪄
O recurso mais amado do C#. Permite tratar listas como se fossem banco de dados.
Visualizando o LINQ (Mermaid)
graph LR;
Input[Lista de Números\n1, 2, 3, 4, 5, 6] -->|Where| Filtro[Filtro: Pares\n2, 4, 6];
Filtro -->|Select| Transf[Transformação: Ao Quadrado\n4, 16, 36];
Transf --> Output[Resultado];
style Input fill:#f9f;
style Output fill:#bfb;
Código C
int[] numeros = { 1, 2, 3, 4, 5, 6 };
var resultado = numeros
.Where(n => n % 2 == 0) // Filtra pares
.Select(n => n * n) // Eleva ao quadrado
.ToList();
// Resultado: 4, 16, 36
4. F# : O Lado Funcional (Bônus) 🟣
O .NET também tem uma linguagem chamada F#, focada em matemática e funções puras. O C# pegou muitas ideias dela (como o LINQ e as expressões lambda).
5. Mini-Projeto: Dashboard de Vendas com LINQ 🚀
O C# é extremamente poderoso para processar coleções de dados de forma expressiva.
Desafio do Projeto
Crie uma lista de objetos Venda (Produto, Valor, Data).
1. Use LINQ para calcular o valor total das vendas.
2. Liste apenas as vendas acima de R$ 100,00 ordenadas por valor.
3. Mostre o resultado no console de forma organizada.
6. Exercícios de Fixação 📝
- Fácil: Crie um programa C# "Olá Mundo" no Console.
- Médio (LINQ): Dada uma lista de nomes
["Ana", "Bruno", "Carlos", "Amanda"], use LINQ para filtrar apenas os que começam com "A". ??? tip "Dica: StartsWith" Use.Where(nome => nome.StartsWith("A")). - Desafio (Mini-Sistema): Crie uma classe
Produto(Nome, Preço). Crie uma lista de produtos. Use LINQ para achar o produto mais caro e a média de preços.
Próxima Aula: A linguagem da Ciência de Dados e IA: Python.
Aula 13 - Python e Ciência de Dados 🐍
Objetivo
Objetivo: Programar rápido, com poucas linhas e muita clareza. A linguagem favorita da IA e Data Science.
1. Por que Python? 🚀
Python lê-se como inglês. Não usa chaves {} nem ponto-e-vírgula ;. Usa Indentação (espaços).
Visualizando Estruturas de Dados (Mermaid)
Python brilha com Listas e Dicionários.
graph LR;
subgraph Lista [Lista: Compras]
L0[0: Maçã] --- L1[1: Banana] --- L2[2: Uva]
end
subgraph Dicionario [Dicionário: Pessoa]
D1[Chave: 'Nome'\nValor: 'Ana'] --- D2[Chave: 'Idade'\nValor: 25]
end
style Lista fill:#bbf;
style Dicionario fill:#f9f;
2. Dicionários: A Chave do Sucesso 🔑
Em C ou Java, usamos vetores. Em Python, usamos Dicionários (Chave: Valor). É extremamente rápido.
3. Python Interativo (REPL) ⌨️
Python é interpretado. Você pode testar ideias na hora.
Executando Arquivos (.py)
Para programas grandes, não usamos o REPL. Criamos um arquivo app.py:
# app.py
print("Iniciando sistema...")
nome = input("Digite seu nome: ")
print(f"Bem-vindo, {nome}!")
E rodamos no terminal:
<span class="termy">python app.py</span>
4. O Poder das Bibliotecas (Data Science) 📊
Python tem bibliotecas para tudo. * Pandas: Excel com esteroides. * Matplotlib: Gráficos.
5. Mini-Projeto: Analisador de Texto em Python 🚀
Python brilha no processamento de informações e automação de tarefas simples.
Desafio do Projeto
Crie um script que receba um pequeno texto ou frase.
1. Conte quantas palavras o texto possui (dica: use .split()).
2. Liste as palavras que aparecem mais de uma vez (reconhecimento de padrões).
3. Mostre o texto em letras MAIÚSCULAS.
6. Exercícios de Fixação 📝
- Fácil: Crie uma lista com 5 frutas e imprima a terceira.
- Médio: Crie um dicionário para um
Carro(marca, modelo, ano). Imprima "Meu carro é um [Modelo] de [Ano]". - Desafio (Análise): Dada a lista
notas = [5.5, 8.0, 9.5, 4.0], use funções do Python (sum,len) para calcular a média e dizer se passou (Média >= 6).
Próxima Aula: Performance extrema e segurança de memória com Rust e Go.
Aula 14 - Sistemas Modernos: Rust e Go 🦀🐹
Objetivo
Objetivo: Conhecer as linguagens que estão substituindo o C/C++ na infraestrutura da computação moderna.
1. Rust: Segurança Sem Custo 🦀
Rust garante que você não cometa erros de memória (sem telas azuis!), mas roda tão rápido quanto C. O segredo? Ownership (Propriedade).
Visualizando Ownership (Mermaid)
graph LR;
A["Variável A\n(Dona do Dado)"] -- "Mover (Move)" --> B["Variável B\n(Nova Dona)"];
style A fill:#f9f,stroke:#333;
style B fill:#bbf,stroke:#333;
NoteA["A não pode mais\nusar o dado!"] --- A
let a = String::from("Olá");
let b = a; // 'a' moveu para 'b'
// println!("{}", a); // ERRO! 'a' não existe mais.
2. Go: Simplicidade e Concorrência 🐹
Criada pelo Google para ser simples. Famosa pelas Goroutines (tarefas leves).
Visualizando Channels (Canais)
Em Go, threads não brigam por memória. Elas conversam por canais.
graph LR;
T1[Goroutine A] -->|Envia Mensagem| Canal((Channel));
Canal -->|Recebe Mensagem| T2[Goroutine B];
style Canal fill:#ff9,stroke:#333;
mensagens := make(chan string)
go func() { mensagens <- "Ping" }() // Envia
msg := <-mensagens // Recebe
fmt.Println(msg)
3. Simulando Execução (Termynal)
4. Mini-Projeto: O Mensageiro Concorrente (Go) 🚀
Go é a linguagem ideal para sistemas que precisam lidar com muitas tarefas ao mesmo tempo.
Desafio do Projeto
Crie um pequeno programa em Go que use uma Goroutine para enviar 3 mensagens diferentes para um Canal (ex: "Processando...", "Validando...", "Concluído!"). No programa principal, use um loop para receber essas 3 mensagens do canal e mostrá-las na tela.
5. Exercícios de Fixação 📝
- Fácil (Go): Faça um "Olá Mundo" em Go.
- Médio (Rust): Crie uma função que receba uma String, calcule o tamanho e retorne os dois (tupla). (Entenda como Rust lida com retorno).
- Desafio (Go): Crie duas Goroutines. Uma imprime "Tick", a outra "Tack". Tente fazê-las rodar juntas.
Próxima Aula: Do servidor para o bolso. Desenvolvimento Mobile com Dart e Kotlin.
Aula 15 - Desenvolvimento Mobile: Dart e Kotlin 📱
Objetivo
Objetivo: Criar aplicativos que rodam no seu bolso. Entenda a diferença entre Nativo e Multiplataforma.
1. O Mundo Mobile 🌍
Existem dois reis: Android (Google) e iOS (Apple). Para criar apps, temos dois caminhos:
- Nativo: Escreve um código para cada (Kotlin para Android, Swift para iOS). Melhor performance, mas dobro do trabalho.
- Multiplataforma: Escreve um código (Dart/Flutter, React Native) que roda nos dois.
Visualizando a Árvore de Widgets (Flutter/Mermaid)
Em Flutter, TUDO é um Widget (um pedaço da tela). Eles se organizam como uma árvore.
graph TD;
App[MaterialApp] --> Home["Scaffold (Tela Principal)"];
Home --> AppBar[Barra Superior];
Home --> Body[Corpo: Coluna];
Body --> Text1["Texto 'Olá'"];
Body --> Button["Botão 'Clique'"];
style App fill:#f9f;
style Home fill:#bbf;
2. Dart e Flutter 💙
Dart é a linguagem. Flutter é o framework (ferramenta).
import 'package:flutter/material.dart';
void main() {
runApp(MeuApp());
}
class MeuApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Meu Primeiro App")),
body: Center(child: Text("Olá, Flutter!")),
),
);
}
}
Simulando o Build (Termynal)
3. Gerenciando Estado (O Interativo) ⚡
Aplicativos não são estáticos. Se você clica num botão e a tela muda, o Estado mudou.
graph LR;
User["Usuário Clica"] --> State["Estado Muda<br/>(Contador + 1)"];
State --> UI["Tela Redesenha<br/>(build)"];
style State fill:#bfb;
4. Kotlin: O Poder do Android Nativo 🤖
Kotlin é moderno, conciso e 100% compatível com Java. É a linguagem oficial do Google para Android.
5. Mini-Projeto: Contador Interativo (Dart) 🚀
O coração de um app mobile é a interação com o usuário.
Desafio do Projeto
Crie uma lógica em Dart que simule um contador de curtidas.
1. Declare uma variável inteira chamada curtidas iniciando em 0.
2. Crie uma função clicarCurti() que aumente o valor em 1.
3. Crie uma função mostrarStatus() que diga se o post é "Popular" (mais de 10 curtidas) ou "Novo".
6. Exercícios de Fixação 📝
- Fácil (Dart): Crie uma função em Dart que receba uma lista de preços e retorne o total.
- Médio (Flutter Conceitual): Desenhe a árvore de widgets da tela de login do Instagram (Logo, Campo Email, Campo Senha, Botão Entrar).
- Desafio (Kotlin): Crie uma classe
Celularcom métodoligar(). Se a bateria estiver vazia, mostre erro.
Próxima Aula: Voltando para onde tudo começou (e onde a internet vive). PHP e o Legado Web.
Aula 16 - PHP e o Legado Web 🐘
Objetivo
Objetivo: Entender como a Web funciona de verdade. O ciclo Cliente-Servidor e por que o PHP ainda domina 77% da internet.
1. O Ciclo da Web (Request/Response) 🌍
Toda vez que você acessa um site, uma conversa acontece.
Visualizando a Requisição (Mermaid)
sequenceDiagram
participant Chrome as Navegador (Cliente)
participant Server as Servidor (PHP/Apache)
participant DB as Banco de Dados (MySQL)
Chrome->>Server: 1. Acessa site.com
Note right of Chrome: GET /index.php
Server->>DB: 2. Pede dados do usuário
DB-->>Server: 3. Retorna dados
Server->>Server: 4. Monta o HTML
Server-->>Chrome: 5. Devolve página HTML
2. PHP: O Motor da Web Dinâmica ⚙️
O PHP roda no Servidor. O usuário nunca vê o código PHP, só o HTML que ele gera.
O navegador recebe apenas:
Simulando um Servidor Local (Termynal)
3. Laravel: PHP Moderno 🚀
Ninguém escreve PHP "puro" em grandes sistemas. Usamos frameworks como Laravel. Ele organiza tudo em MVC (Model, View, Controller).
- Model: Cuida do Banco de Dados.
- View: Cuida do HTML (Telas).
- Controller: O cérebro que liga os dois.
Visualizando MVC (Mermaid)
graph LR;
User["Usuário"] -->|Acessa URL| Route["Rotas"];
Route -->|Chama| Controller["Controlador"];
Controller -->|Busca Dados| Model["Modelo (Banco)"];
Model -->|Retorna| Controller;
Controller -->|Envia para Tela| View["Visualização"];
View -->|HTML Final| User;
style Controller fill:#f9f;
// Exemplo Laravel (Rotas web.php)
Route::get('/recados', function () {
$recados = Recado::all(); // Model
return view('lista_recados', ['recados' => $recados]); // View
});
4. Projeto Final: Mural de Recados 📌
Vamos fechar o curso conectando tudo.
1. Banco: Tabela recados (id, texto).
2. PHP: Conecta e busca os recados.
3. HTML: Mostra na tela.
5. Mini-Projeto: Validador de Acesso PHP 🚀
Entender como dados viajam entre o cliente e o servidor é fundamental.
Desafio do Projeto
Crie um script PHP que simule um sistema de login simples.
1. Defina uma variável $usuarioCorreto = "admin" e $senhaCorreta = "1234".
2. Simule o recebimento de dados de um formulário.
3. Use if para verificar se os dados conferem e mostre a mensagem "Acesso Autorizado" ou "Senha Incorreta".
6. Exercícios de Fixação 📝
- Fácil: Crie um script PHP que mostre a data e hora atual.
- Médio: Crie um formulário HTML que envie nome e idade para um script PHP, que deve responder "Pode entrar" ou "Barrado".
- Desafio (SQL + PHP): Desenhe o diagrama de como seria o sistema de login do Facebook (Cliente -> Servidor -> Banco).
Parabéns! 🎓 Você completou o módulo teórico/prático. Agora é hora de botar a mão na massa nos Projetos Finais!
Exercícios
Listas de Exercícios 🏋️
Pratique o que aprendeu com listas graduadas (Fácil, Médio, Desafio).
-
Módulo 1: Lógica Pura
-
Módulo 2: Linguagens
Exercícios 01 - Lógica de Programação 🧠
Objetivo
Objetivo: Treinar o pensamento computacional antes de escrever código.
🟢 Fáceis
- Algoritmo do Café: Escreva, passo a passo, como você faz café. Considere detalhes como "verificar se tem açúcar" ou "ferver a água".
- Troca de Pneu: Descreva a sequência lógica para trocar um pneu furado de um carro. Não esqueça de "parar o carro" antes!
🟡 Médios
- Fluxograma da Aprovação: Desenhe (ou descreva) um fluxograma que leia 2 notas de um aluno.
- Se a média for >= 7: Aprovado.
- Se for < 7 e >= 5: Recuperação.
- Senão: Reprovado.
- Travessia Segura: Crie um algoritmo para atravessar uma rua movimentada sem semáforo. Inclua as decisões (Olhar para a esquerda, Olhar para a direita, Esperar...).
🔴 Desafio
- Torre de Hanói (Lógica):
Você tem 3 pinos (A, B, C) e 3 discos de tamanhos diferentes no pino A (o maior embaixo).
- Objetivo: Mover todos para o pino C.
- Regra 1: Só pode mover um disco por vez.
- Regra 2: Nunca coloque um disco maior sobre um menor.
- Descreva os movimentos (Ex: Mover disco 1 de A para C).
Exercícios 02 - Ambiente e Ferramentas 🛠️
Objetivo
Objetivo: Garantir que suas ferramentas estão prontas para a ação.
🟢 Fáceis
- Instalação VisualG/Portugol: Baixe e instale o VisualG ou Portugol Studio. Tire um "print" da tela inicial.
- Conta no Scratch: Crie sua conta no scratch.mit.edu e confirme seu e-mail.
🟡 Médios
- Olá Mundo (VisualG): Escreva um algoritmo que mostre na tela a frase: "Estou pronto para aprender lógica!". Execute e veja o resultado.
- Olá Gato (Scratch): Crie um projeto no Scratch onde, ao clicar na bandeira verde, o gato diga "Olá!" e ande 50 passos.
🔴 Desafio
- Hacker do VS Code:
- Instale o Visual Studio Code.
- Instale a extensão "Termynal" (ou similar para simular terminal) OU instale um tema "Dark" bem bonito (ex: Dracula, One Dark).
- Crie um arquivo
teste.txtdentro do VS Code e escreva "Configurado com Sucesso!".
Exercícios 03 - Estrutura Sequencial ➡️
Objetivo
Objetivo: Manipular variáveis, entrada e saída de dados.
🟢 Fáceis
- Soma Simples: Crie um algoritmo que leia dois números inteiros, some-os e mostre o resultado.
- Bem-vindo: Leia o nome e o sobrenome de uma pessoa em variáveis separadas. Mostre na tela: "Olá, [Nome] [Sobrenome]!".
🟡 Médios
- Conversor de Moeda: Leia um valor em Reais (R\(). Considere que o Dólar custa R\) 5,00. Calcule e mostre quantos Dólares a pessoa pode comprar.
- Calculadora de Área: Leia a largura e a altura de uma parede retangular. Calcule a área (Largura * Altura) e a quantidade de tinta necessária (sabendo que 1 litro pinta 2m²).
🔴 Desafio
- Troca de Valores (Swap):
- Leia duas variáveis:
AeB. - Troque os valores delas (O que estava em A vai para B, e vice-versa).
- Regra: Você não pode apenas "escrever" o inverso. A memória deve ser trocada.
- Dica: Você vai precisar de uma terceira variável auxiliar.
- Leia duas variáveis:
Exercícios 04 - Estrutura Condicional 🔀
Objetivo
Objetivo: Ensinar o programa a tomar decisões.
🟢 Fáceis
- Par ou Ímpar: Leia um número. Se ele for par, mostre "Par". Se for ímpar, mostre "Ímpar". (Dica: Use o resto da divisão
%). - Positivo ou Negativo: Leia um número e diga se ele é Positivo, Negativo ou Zero.
🟡 Médios
- Votação: Leia o ano de nascimento de uma pessoa. Calcule a idade.
- Se idade < 16: Não vota.
- Se idade >= 18 e idade < 65: Voto Obrigatório.
- Senão (16, 17 ou >= 65): Voto Facultativo.
- Calculadora Simples: Leia 2 números e um caractere de operação (+, -, *, /). Use
escolha/caso(switch) para realizar a conta escolhida.
🔴 Desafio
- Triângulo Válido:
Leia 3 lados de um triângulo (A, B, C).
- Para ser um triângulo, a soma de dois lados deve ser sempre maior que o terceiro (
A+B > CeA+C > BeB+C > A). - Se for um triângulo, diga se é:
- Equilátero: Todos lados iguais.
- Isósceles: 2 lados iguais.
- Escaleno: Todos lados diferentes.
- Para ser um triângulo, a soma de dois lados deve ser sempre maior que o terceiro (
Exercícios 05 - Estruturas Repetitivas 🔁
Objetivo
Objetivo: Automatizar tarefas chatas.
🟢 Fáceis
- Contagem 1 a 100: Crie um loop que mostre todos os números de 1 até 100.
- Contagem Regressiva: Mostre de 10 até 0 e escreva "FIM!".
🟡 Médios
- Tabuada: Leia um número (ex: 8) e mostre a tabuada dele do 1 ao 10.
8 x 1 = 8- ...
8 x 10 = 80
- Soma Cumulativa: Leia números digitados pelo usuário. Pare quando ele digitar 0. No final, mostre a soma de todos os números lidos.
🔴 Desafio
- Sequência de Fibonacci:
Mostre os primeiros 10 números da sequência de Fibonacci (cada número é a soma dos dois anteriores).
- 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
- Dica: Use variáveis
anterioreatual.
Exercícios 06 - Vetores 📊
Objetivo
Objetivo: Guardar listas de coisas.
🟢 Fáceis
- Lista de Compras: Crie um vetor com 5 itens de supermercado ("Arroz", "Feijão"...). Mostre o item na posição 3.
- Notas da Turma: Crie um vetor com 4 notas (8.5, 7.0, 9.5, 5.0). Calcule e mostre a média da turma.
🟡 Médios
- Maior e Menor: Leia 10 números inteiros para um vetor. Encontre e mostre qual é o MAIOR e qual é o MENOR valor digitado.
- Inverter Vetor: Leia um vetor A com 5 números. Crie um vetor B que contenha os mesmos números, mas na ordem inversa.
🔴 Desafio
- Busca Linear:
- Crie um vetor com 10 nomes.
- Peça para o usuário digitar um nome para buscar.
- Percorra o vetor. Se achar o nome, diga "Encontrado na posição X". Se não achar, diga "Não encontrado".
Exercícios 07 - Matrizes 📈
Objetivo
Objetivo: Trabalhar com tabelas e grids.
🟢 Fáceis
- Preenchimento: Crie uma matriz 3x3. Peça para o usuário preencher todos os campos com números inteiros. Mostre a matriz formatada no final.
- Diagonal Principal: Em uma matriz 3x3, mostre apenas os elementos onde a linha é igual à coluna (0,0 | 1,1 | 2,2).
🟡 Médios
- Soma das Linhas: Leia uma matriz 3x3. No final, mostre a soma de cada uma das 3 linhas separadamente.
- Linha 0: soma...
- Linha 1: soma...
- Mapa do Tesouro: Crie uma matriz 5x5 cheia de zeros. Coloque o número 1 em uma posição aleatória. Peça para o usuário digitar linha e coluna. Diga se ele acertou o tesouro.
🔴 Desafio
- Multiplicação de Escalar:
- Leia uma matriz A (2x2).
- Leia um número multiplicador X.
- Gere uma matriz B onde cada elemento é o elemento de A multiplicado por X.
Exercícios 08 - Modularização 🧩
Objetivo
Objetivo: Criar suas próprias ferramentas (funções).
🟢 Fáceis
- Procedimento Saudação: Crie um procedimento
saudar(nome)que recebe um texto e escreve "Olá [nome], seja bem-vindo!". - Função Dobro: Crie uma função
dobrar(numero)que recebe um inteiro e retorna o dobro dele.
🟡 Médios
- Calculadora Modular: Crie funções separadas para
somar(a, b),subtrair(a, b),multiplicar(a, b)edividir(a, b). No programa principal, faça um menu para usar essas funções. - Verificador de Par: Crie uma função
ehPar(numero)que retorna VERDADEIRO se for par e FALSO se for ímpar.
🔴 Desafio
- Fatorial Recursivo (ou Iterativo):
- Crie uma função
fatorial(n). - Lembre-se:
5! = 5 * 4 * 3 * 2 * 1 = 120. - Teste com o número 5 e mostre o resultado.
- Crie uma função
Exercícios 09 - C e C++ 🧱
Objetivo
Objetivo: Dominar a memória e a performance.
🟢 Fáceis
- Tabuada em C: Crie um programa em C que leia um número e mostre sua tabuada usando
printf. - Média Escolar: Leia 3 notas (float), calcule a média e mostre com 2 casas decimais (
%.2f).
🟡 Médios
- Classe Retângulo (C++):
- Crie uma classe
Retangulo. - Atributos:
largura,altura. - Método:
calcularArea(). - No
main, crie um objeto, defina valores e mostre a área.
- Crie uma classe
- Inversão com Ponteiros (C):
- Crie uma variável
int x = 10. - Crie um ponteiro
int *ptr = &x. - Mude o valor de
xpara 20 usando apenas o ponteiro.
- Crie uma variável
🔴 Desafio
- Gerenciamento de Alunos (Structs):
- Defina uma
struct Alunocomnome(char[50]) enota(float). - Crie um vetor de 3 alunos.
- Preencha os dados.
- Percorra o vetor e mostre apenas os alunos com
nota >= 7.0.
- Defina uma
Exercícios 10 - JavaScript e TypeScript 🌐
Objetivo
Objetivo: Manipular a Web e o Console.
🟢 Fáceis
- Botão Mágico (HTML + JS): Crie uma página com um botão. Ao clicar, exiba um
alert("Olá Mundo!"). - Calculadora de Idade (Node.js): Crie um script
idade.jsque define uma variávelanoNascimentoe calcula/mostra a idade atual.
🟡 Médios
- Manipulando o DOM:
- Crie um
<p id="texto">Texto original</p>e um botão. - Ao clicar no botão, mude o texto do parágrafo para "Texto alterado pelo JS!".
- Mude também a cor do texto para vermelho.
- Crie um
- Tipagem Segura (TypeScript):
- Crie uma função
somar(a: number, b: number): number. - Tente chamar passando uma string e veja o erro (no editor).
- Compile e rode o JS gerado.
- Crie uma função
🔴 Desafio
- Lista de Tarefas (DOM):
- Crie um
inpute umbotão"Adicionar". - Ao clicar, pegue o texto do input e adicione como um novo item
<li>dentro de uma lista<ul>. - Bônus: Adicione um botão "X" em cada item para removê-lo.
- Crie um
Exercícios 11 - Java e POO ☕
Objetivo
Objetivo: Criar sistemas robustos com Classes.
🟢 Fáceis
- Classe Pessoa: Crie uma classe
Pessoacom atributosnomeeidade. Nomain, crie um objeto e imprima seus dados. - Calculadora Estática: Crie uma classe
Calculadoracom um métodostatic somar(int a, int b). Chame-o direto domainsem criar objeto (Calculadora.somar(2, 3)).
🟡 Médios
- Encapsulamento:
- Crie uma classe
ContaBancaria. - Atributo
private double saldo. - Métodos
public void depositar(double valor)epublic double getSaldo(). - Garanta que não dê para depositar valor negativo!
- Crie uma classe
- Herança:
- Classe
Veiculo(marca, modelo). - Classe
Carro(herda Veiculo, tem portas). - Classe
Moto(herda Veiculo, tem cilindradas). - Crie objetos de Carro e Moto e preencha os dados.
- Classe
🔴 Desafio
- Sistema de Folha de Pagamento (Polimorfismo):
- Classe
Funcionariocom métodocalcularSalario(). - Classe
Gerente(Ganha bônus de 20%). - Classe
Estagiario(Ganha metade). - Crie uma lista de funcionários mistos e calcule o total da folha.
- Classe
Exercícios 12 - C# e .NET 🔷
Objetivo
Objetivo: Produtividade e LINQ.
🟢 Fáceis
- Console App: Crie um programa que pergunte o nome do usuário e responda usando interpolação (
$"Olá {nome}"). - Par ou Ímpar (Ternário): Leia um número. Use o operador ternário (
condicao ? verdadeiro : falso) para exibir "Par" ou "Ímpar".
🟡 Médios
- Lista de Frutas: Crie uma
List<string>. Adicione 5 frutas. Use umforeachpara listar todas. - Filtro LINQ:
- Crie uma lista de números:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10. - Use LINQ (
.Where) para criar uma nova lista apenas com os pares. - Imprima a nova lista.
- Crie uma lista de números:
🔴 Desafio
- Análise de Dados com LINQ:
- Crie uma classe
Produto(Nome, Preco, Categoria). - Crie uma lista com 5 produtos variados.
- Use LINQ para encontrar:
- O produto mais caro (
OrderByDescending+First). - A média de preço de todos os produtos (
Average).
- O produto mais caro (
- Crie uma classe
Exercícios 13 - Python 🐍
Objetivo
Objetivo: Dados e Automação.
🟢 Fáceis
- Soma de Lista: Crie uma lista com 5 números. Use a função
sum()para somar todos. - Contador de Letras: Leia uma palavra. Use
len()para mostrar quantas letras ela tem.
🟡 Médios
- Dicionário de Aluno:
- Crie um dicionário com:
nome,nota1,nota2. - Calcule a média.
- Adicione um novo campo
situacaocom "Aprovado" ou "Reprovado". - Mostre o dicionário completo.
- Crie um dicionário com:
- Tabuada com Range: Use um loop
for i in range(1, 11)para mostrar a tabuada do 9.
🔴 Desafio
- Analisador de Texto:
- Texto: "Python é incrível e muito fácil".
- Conte quantas palavras existem (use
.split()). - Substitua "fácil" por "poderoso" (use
.replace()). - Mostre o texto final em CAIXA ALTA (use
.upper()).
Exercícios 14 - Rust e Go 🦀🐹
Objetivo
Objetivo: Sistemas e Concorrência.
🟢 Fáceis
- Rust Hello: Instale o Rust e rode um "Olá Mundo" com
cargo run. - Go Hello: Instale o Go e rode um "Olá Mundo" com
go run main.go.
🟡 Médios
- Ownership (Rust):
- Crie uma String
s1 = "Teste". - Mova para
s2. - Tente imprimir
s1e veja o erro de compilação. Explique por que aconteceu.
- Crie uma String
- Goroutine Simples (Go):
- Crie uma função que imprime "Processando..." 5 vezes com um delay de 1 segundo.
- Chame-a com
gona frente. - Chame-a normalmente na thread principal.
- Veja as mensagens se misturarem.
🔴 Desafio
- Calculadora Segura (Rust):
- Crie uma função de divisão que retorna um
Result<f64, String>. - Se o divisor for 0, retorne
Err("Divisão por zero"). - Senão, retorne
Ok(resultado). - No
main, trate o erro commatch.
- Crie uma função de divisão que retorna um
Exercícios 15 - Mobile (Dart/Kotlin) 📱
Objetivo
Objetivo: Lógica para Apps.
🟢 Fáceis
- Função Nula (Dart): Crie uma variável
String? nome. Atribuanull. Tente imprimir. Use??para imprimir "Anônimo" caso seja nulo. - Lista de Tarefas (Kotlin): Crie uma
MutableListde Strings. Adicione "Estudar", "Correr". Imprima a lista.
🟡 Médios
- Classe Carro (Dart):
- Classe
Carrocommodeloeano. - Construtor nomeado
Carro.antigo(modelo)que fixa o ano em 1980. - Crie um carro normal e um antigo.
- Classe
- When Expression (Kotlin):
- Receba um número de 1 a 7.
- Use
whenpara retornar "Domingo", "Segunda", etc. - Else: "Dia inválido".
🔴 Desafio
- Árvore de Widget (Flutter - Papel):
- Não precisa rodar. Apenas escreva a estrutura de classes.
- Tela com
AppBar("Login"). BodycomColumn.- Filhos da Column:
TextField(Email),TextField(Senha),ElevatedButton(Entrar).
Exercícios 16 - PHP e Web 🐘
Objetivo
Objetivo: Backend e Dados.
🟢 Fáceis
- Data e Hora: Crie um script PHP que mostre: "Hoje é dia [d/m/Y] e são [H:i] horas".
- Array Associativo: Crie um array
$pessoacom nome e idade. Mostre comecho.
🟡 Médios
- Formulário Simples:
- Crie um HTML com campo "nome" e botão "Enviar".
- No PHP, verifique se o nome foi enviado (
isset($_GET['nome'])). - Se sim, mostre "Olá [nome]". Se não, mostre "Digite seu nome".
- Loop HTML:
- Crie um array com 5 nomes de cidades.
- Use
foreachpara gerar uma lista<ul><li>com essas cidades no HTML.
🔴 Desafio
- Simulador de Banco de Dados:
- Crie uma classe
Conexao. - Método
conectar(): Retorna "Conectado ao MySQL". - Método
buscar(id): Retorna "Buscando usuário ID...". - Simule o processo de buscar um usuário e mostrar na tela.
- Crie uma classe
Projetos
Projetos Práticos 🚀
Construa portfólio com projetos reais e milestones importantes.
-
Módulo 1: Fundamentos
-
Módulo 2: O Poliglota
Projeto 01 - Fluxograma da Vida (Milestone 1) 🧬
Objetivo
Objetivo: Exercitar a decomposição de problemas e o raciocínio lógico através da criação de fluxogramas que representam processos do cotidiano.
O Desafio 🎯
Você foi contratado para mapear processos de uma empresa. Antes de mexer com sistemas complexos, você precisa treinar com sua própria rotina.
Objetivo: Criar um Fluxograma detalhado de uma rotina diária, exercitando a decomposição e tomada de decisão.
Cenário
Mapeie o processo de "Acordar e ir para o Trabalho/Escola".
Requisitos Obrigatórios
- Início/Fim: Ovalos bem definidos.
- Ações: "Levantar", "Escovar Dentes", "Tomar Café".
- Decisões (Pelo menos 3):
- "Está chovendo?" -> Sim: Levar guarda-chuva / Não: Óculos de sol.
- "Tenho tempo?" -> Sim: Café completo / Não: Café rápido.
- "Tem ônibus?" -> Sim: Pegar ônibus / Não: Chamar Uber.
- Ferramenta: Use Mermaid, Draw.io ou Papel.
Exemplo (Mermaid)
graph TD;
Inicio([Acordar]) --> Despertador{Tocou?};
Despertador -- Sim --> Levantar[Sair da Cama];
Despertador -- Não --> Dormir[Dormir +5min];
Dormir --> Despertador;
Levantar --> Tempo{Tem Tempo?};
Tempo -- Sim --> Cafe[Café Completo];
Tempo -- Não --> Jejum[Sair Correndo];
Cafe --> Fim([Sair de Casa]);
Jejum --> Fim;
style Inicio fill:#f9f;
style Fim fill:#f9f;
Entrega 📦
- Imagem do Fluxograma (PNG/JPG) ou código Mermaid.
Projeto 02 - O Setup Perfeito 🖥️
Objetivo
Objetivo: Transformar seu computador em uma estação de trabalho profissional, configurando ferramentas que serão usadas em todo o curso.
O Desafio 🎯
Um programador sem ferramentas é como um marceneiro sem serrote. Neste projeto, você deve preparar seu ambiente de desenvolvimento para suportar todas as tecnologias que veremos (C, JS, Java, Rust, etc).
Requisitos de Configuração
- Editor de Código: Instale o VS Code (Visual Studio Code).
- Extensões Recomendadas:
Portuguese (Brazil) Language Pack: Para deixar a interface em nossa língua.Material Icon Theme: Para facilitar a identificação visual de diferentes tipos de arquivos.Dracula OfficialouOne Dark Pro: Temas escuros que cansam menos a vista.
- Organização:
- Crie uma pasta chamada
Lógica e Algoritmosno seu computador. - Dentro dela, crie subpastas:
exercicios,aulaseprojetos.
- Crie uma pasta chamada
- Primeiro Arquivo:
- Crie um arquivo chamado
ola.txtdentro deaulas. - Escreva: "Ambiente configurado com sucesso!" e salve.
- Crie um arquivo chamado
Verificação 📦
Para provar que concluiu seu setup:
- Tire um Printscreen (Captura de Tela) do seu VS Code aberto.
- Mostre a aba lateral com as pastas criadas e o arquivo ola.txt.
- Verifique se o tema e os ícones estão aparecendo corretamente.
Projeto 03 - Conversor Universal 📏
Objetivo
Objetivo: Praticar a Estrutura Sequencial (Entrada, Processamento e Saída) através de cálculos matemáticos de conversão.
O Desafio 🎯
Você foi encarregado de criar um utilitário para uma equipe de engenharia. Eles costumam receber medidas em Metros e precisam rapidamente das conversões para outras escalas.
Requisitos Técnicos
- Entrada: O programa deve solicitar que o usuário digite um valor em Metros (Ex: 1.50).
- Processamento: O sistema deve calcular automaticamente:
- Centímetros: Metros * 100.
- Milímetros: Metros * 1000.
- Quilômetros: Metros / 1000.
- Saída: Exibir os resultados de forma organizada na tela.
Exemplo de Execução
=== CONVERSOR DE MEDIDAS ===
Digite a medida em Metros: 2
----------------------------
EQUIVALENTE A:
- 200.0 Centímetros
- 2000.0 Milímetros
- 0.002 Quilômetros
============================
Dica de Ouro 💡
Se estiver usando o VisualG, lembre-se de declarar a variável metros como REAL para aceitar números com vírgula (ex: 1.75).
Projeto 04 - Calculadora IMC (Milestone 1 Final) ⚖️
Objetivo
Objetivo: Consolidar o uso de Variáveis, Operadores Matemáticos e Estruturas Condicionais em uma ferramenta prática de saúde.
O Desafio 🎯
O Ministério da Saúde precisa de um sistema rápido para triagem de pacientes baseada no IMC (Índice de Massa Corporal).
Objetivo: Integrar Variáveis, Entrada/Saída e Estruturas Condicionais em um programa útil.
Requisitos Técnicos
- Entrada: Ler
peso(kg) ealtura(m). - Processamento: Calcular
IMC = peso / (altura * altura). - Saída: Classificar o resultado segundo a tabela:
- Abaixo de 18.5: "Abaixo do Peço"
- 18.5 a 24.9: "Peso Ideal"
- 25 a 29.9: "Sobrepeso"
- 30+: "Obesidade"
Teste de Mesa (Exemplos)
| Peso (kg) | Altura (m) | IMC (Calculado) | Saída Esperada |
|---|---|---|---|
| 70 | 1.75 | 22.8 | Peso Ideal |
| 90 | 1.75 | 29.3 | Sobrepeso |
| 50 | 1.80 | 15.4 | Abaixo do Peso |
Dicas 💡
- Cuidado com o ponto decimal (use
.ou,dependendo da configuração do seu sistema/linguagem). - Use
Se...Senao Seencadeados.
Ferramenta
- VisualG (Portugol).
Projeto 05 - Jogo de Adivinhação 🎲
Objetivo
Objetivo: Implementar a lógica de repetição e controle de fluxo através de um jogo interativo que utiliza números aleatórios.
O Desafio 🎯
Desenvolva um jogo onde o computador escolhe um número secreto e desafia o usuário a descobri-lo. O programa deve dar dicas se o chute foi muito alto ou muito baixo.
Requisitos Técnicos
- Geração Aleatória: O computador deve sortear um número entre 1 e 100.
- Loop Principal: O jogo não deve fechar até que o usuário acerte o número.
- Dicas Inteligentes:
- Se o chute for maior que o número: Exibir "Tente um número MENOR!".
- Se o chute for menor que o número: Exibir "Tente um número MAIOR!".
- Contador: Ao final, o programa deve informar quantas tentativas foram necessárias.
Fluxo do Algoritmo
- [ ] Inicia o contador em 0.
- [ ] Sorteia o número secreto.
- [ ] Inicia um loop (Enquanto chute != secreto).
- [ ] Lê o chute do usuário e incrementa o contador.
- [ ] Compara e dá a dica.
- [ ] Se acertou, sai do loop e mostra a mensagem de vitória.
Diferencial (Desafio Extra) ⭐
Adicione um limite de 10 tentativas. Se o usuário não acertar até lá, ele perde o jogo!
Projeto 06 - Lista de Tarefas (To-Do List) ✅
Objetivo
Objetivo: Manipular Arrays (Vetores) para armazenamento temporário de dados e criar menus de navegação.
O Desafio 🎯
Crie um gerenciador de tarefas simples via console. O sistema deve permitir que o usuário anote seus afazeres do dia e os visualize quando quiser.
Requisitos Técnicos
- Vetor: Declare um vetor de String com 10 posições para guardar as tarefas.
- Menu Interativo: O programa deve exibir permanentemente (até que se escolha sair):
1. Adicionar Tarefa2. Listar Tarefas3. Sair
- Lógica de Inserção: Ao adicionar, o sistema deve procurar a próxima "gaveta" vazia no vetor e guardar o texto lá.
- Lógica de Listagem: Ao listar, percorra o vetor e mostre apenas as posições que não estiverem em branco.
Exemplo de Menu
[1] Adicionar [2] Listar [3] Sair
Opção: 1
Digite a tarefa: Estudar Algoritmos
[1] Adicionar [2] Listar [3] Sair
Opção: 2
SUAS TAREFAS:
1. Estudar Algoritmos
--------------------
Dica 💡
Use uma variável contador para saber quantas tarefas já foram adicionadas, assim você saberá exatamente em qual índice inserir a próxima.
Projeto 07 - Jogo da Velha (Tic-Tac-Toe) ⭕❌
Objetivo
Objetivo: Aplicar o conceito de Matrizes (vetores bidimensionais) para gerenciar um tabuleiro de jogo e verificar condições de vitória em grade.
O Desafio 🎯
Você deve programar o clássico Jogo da Velha. Este é o desafio definitivo sobre coordenadas (Linhas e Colunas).
Requisitos Técnicos
- Tabuleiro: Use uma matriz 3x3 de caracteres (char). Comece preenchendo-a com espaços vazios ou traços
-. - Alternância: O programa deve alternar entre o Jogador 1 (X) e o Jogador 2 (O).
- Entrada: O jogador deve digitar a Linha (1, 2 ou 3) e a Coluna (1, 2 ou 3) onde deseja jogar.
- Validação: Não permita jogar em uma casa que já esteja ocupada.
- Condição de Fim:
- Vitória: Verifique se há 3 símbolos iguais em linha, coluna ou diagonal.
- Empate (Velha): Verifique se o tabuleiro encheu sem nenhum ganhador.
Visual do Tabuleiro (Exemplo)
Ao rodar, o sistema deve desenhar algo como:
Dica Crucial 💡
Crie uma função ou procedimento chamado DesenharTabuleiro() para que você possa chamá-lo após cada jogada sem repetir código!
Projeto 08 - Sistema de Gestão de Notas (Milestone 1 Completo) 🎓
Objetivo
Objetivo: Desenvolver um sistema complexo com Menu Interativo, consolidando os conceitos de Manipulação de Vetores e Modularização (Funções e Procedimentos).
O Desafio 🎯
Uma escola precisa abandonar as planilhas de papel. Você deve criar o SGN (Sistema de Gestão de Notas) v1.0.
Objetivo: Consolidar Vetores e Funções/Procedimentos em um sistema com Menu Interativo.
Requisitos Técnicos
- Estrutura de Dados:
- Vetor
nomes[1..5](String) - Vetor
notas[1..5](Real)
- Vetor
- Menu Principal (Loop Infinito):
- Cadastrar Aluno (Nome + Nota)
- Listar Todos (Mostrar Tabela)
- Mostrar Média da Turma (Função)
- Sair
- Modularização:
- Criar procedimento
MostrarMenu() - Criar função
CalcularMediaTurma()retorna Real.
- Criar procedimento
Cenário
O usuário inicia o programa. O sistema pergunta o que fazer. Se escolher 1, pede o índice (1 a 5) e os dados. Se escolher 2, percorre os vetores imprimindo "Aluno X: Nota Y". Se escolher 3, soma tudo e divide por 5.
Exemplo de Saída
=== SGN v1.0 ===
1. Cadastrar
2. Listar
3. Média
4. Sair
Opção: 2
--- LISTA ---
1. Ana: 8.5
2. Bruno: 7.0
...
Ferramenta
- VisualG.
Projeto 09 - Gerenciador de Memória 🧱
Objetivo
Objetivo: Compreender o gerenciamento manual de memória, o uso de ponteiros e a alocação dinâmica (Heap), pilares fundamentais de linguagens de baixo nível como C e C++.
O Desafio 🎯
Você deve criar um programa capaz de manipular dados diretamente na memória RAM. O desafio é gerenciar um vetor cujo tamanho só é conhecido quando o programa está rodando.
Requisitos Técnicos (C)
- Entrada: Pergunte ao usuário quantos números ele deseja armazenar.
- Alocação: Use
mallocpara reservar exatamente o espaço necessário no Heap. - Processamento:
- Preencha o vetor com valores.
- Implemente uma função que inverta o vetor in-place (trocando os elementos de posição sem criar um vetor reserva).
- Liberação: Use
freepara devolver a memória ao sistema antes de encerrar.
Desafio Extra (C++) ⭐
Implemente o mesmo sistema usando uma Class VetorDinamico.
- Utilize o construtor para alocar memória (new).
- Utilize o destrutor para garantir a liberação automática (delete[]).
Exemplo de Saída
Projeto 10 - To-Do List Interativa 🌐
Objetivo
Objetivo: Praticar a manipulação do DOM (Document Object Model), tratamento de eventos e persistência local no navegador usando JavaScript ou TypeScript.
O Desafio 🎯
Transforme uma página estática em um aplicativo funcional. Crie uma lista de tarefas onde o usuário possa adicionar, concluir e remover itens em tempo real.
Requisitos Técnicos
- Interface (HTML/CSS):
- Um campo de texto (
input). - Um botão "Adicionar".
- Uma lista vazia (
ul).
- Um campo de texto (
- Funcionalidades (JS/TS):
- Adição: Capturar o texto e criar um novo
lidinamicamente. - Conclusão: Adicionar um checkbox que, ao ser marcado, aplica um estilo de "riscado" ao texto da tarefa.
- Remoção: Adicionar um botão "Excluir" ao lado de cada tarefa.
- Adição: Capturar o texto e criar um novo
- Persistência (Bônus):
- Use
localStoragepara que a lista não desapareça quando a página for atualizada.
- Use
Estrutura do Código (Sugestão)
const btnAdd = document.querySelector('#btn-add');
const input = document.querySelector('#tarefa-input');
btnAdd.addEventListener('click', () => {
// Lógica para criar elemento e dar append na lista
});
Dica Visual 🎨
Use CSS para dar um feedback visual claro quando uma tarefa for concluída (mude a cor de fundo ou a opacidade).
Projeto 11 - Banco Imobiliário Simplificado ☕
Objetivo
Objetivo: Aplicar os pilares da Orientação a Objetos (Classes, Atributos, Métodos e Encapsulamento) em um cenário de simulação de jogo.
O Desafio 🎯
Desenvolva uma versão simplificada (via terminal) de um jogo de compra e venda de propriedades. O foco aqui não é o visual, mas a interação entre objetos.
Modelagem de Classes
- Classe
Jogador:- Atributos:
nome,saldo,posicaoAtual. - Métodos:
pagar(valor),receber(valor),mover(casas).
- Atributos:
- Classe
Propriedade:- Atributos:
nome,precoCompra,valorAluguel,dono(do tipo Jogador).
- Atributos:
Regras do Jogo
- Crie 2 jogadores com saldo inicial de R$ 1000.
- Simule rodadas usando um gerador de números aleatórios (Dados de 1 a 6).
- Se a casa não tem dono: O jogador pode comprar (se tiver saldo).
- Se a casa tem dono: O jogador deve pagar o aluguel ao dono da propriedade.
- O jogo termina após 10 rodadas ou se alguém falir.
Exemplo de Log no Terminal
Jogador Ana caiu na casa 'Av. Paulista'.
Saldo insuficiente para compra.
Jogador Bruno caiu na casa 'Copacabana'.
Pagou R$ 50 de aluguel para Ana.
Dica de Java 💡
Use ArrayList<Propriedade> para gerenciar o tabuleiro de forma dinâmica.
Projeto 12 - API Climática (Milestone 3) 🌦️
Objetivo
Objetivo: Praticar a manipulação de coleções de dados modernos usando C# e a poderosa linguagem de consulta LINQ.
O Desafio 🎯
Você trabalha em uma StartUp de Agricultura. Os fazendeiros precisam saber a previsão do tempo para planejar a colheita.
Objetivo: Consumir dados reais da internet (JSON) e processar com C# e LINQ.
Requisitos Técnicos
- Linguagem: C# (.NET Core).
- Dados: Simule uma resposta JSON de API (ou use uma real se souber
HttpClient).- Lista de objetos
Previsao(Dia, Temperatura, Chuva?).
- Lista de objetos
- Funcionalidades (LINQ):
Filtro: Mostrar dias com Chuva = true.Ordenação: Mostrar dias mais quentes primeiro.Média: Qual a temperatura média da semana?
Exemplo de Dados (Mock)
var previsoes = new List<Previsao> {
new Previsao { Dia = "Seg", Temp = 30, Chuva = true },
new Previsao { Dia = "Ter", Temp = 28, Chuva = false },
new Previsao { Dia = "Qua", Temp = 35, Chuva = false }
};
Consultas Esperadas
- "Dias de Chuva: Seg"
- "Temp Máxima: 35 (Qua)"
- "Média: 31.0"
Entrega 📦
- Código Fonte
.cs(Console Application).
Projeto 13 - Analisador de Dados CSV 🐍
Objetivo
Objetivo: Manipular arquivos externos, processar coleções de dados (Listas e Dicionários) e realizar cálculos básicos de estatística com Python.
O Desafio 🎯
Você recebeu um arquivo vendas.csv com centenas de linhas contendo: Produto, Preço, Quantidade. Sua missão é criar um script que automatize a geração de um relatório de desempenho.
Requisitos Técnicos
- Leitura de Arquivo: Use as funções nativas do Python (
open,readlines) para ler o arquivo sem bibliotecas externas. - Estrutura de Dados: Converta cada linha do CSV em um Dicionário para facilitar o acesso.
- Processamento:
- Calcule o Faturamento Total (Preço * Quantidade).
- Identifique qual foi o Produto mais vendido em quantidade.
- Saída: Grave os resultados em um novo arquivo chamado
resumo_vendas.txt.
Exemplo de entrada (vendas.csv)
Por que não usar Pandas? 🤔
O objetivo deste projeto é entender como o Python lida com strings e arquivos "sob o capô" antes de usar ferramentas automáticas. Isso fortalece sua lógica de manipulação de strings!
Projeto 14 - Sistema de Mensageria 🦀🐹
Objetivo
Objetivo: Explorar conceitos de programação concorrente e paralela, utilizando Canais (Go) ou Threads com Mutex (Rust).
O Desafio 🎯
Implemente um sistema onde múltiplos produtores (Clientes) enviam dados para um único processador central (Servidor).
Opção A: Go (Goroutines e Channels)
- Crie uma função
Servidorque fica em um loop infinito esperando mensagens de um canal. - Lance 3
Goroutinesde Clientes. - Cada cliente deve enviar 5 mensagens numeradas (Ex: "Msg 1 do Cliente A").
- O servidor deve imprimir as mensagens conforme elas chegam.
Opção B: Rust (Safety e Concorrência)
- Crie um programa que faça uma soma pesada (ex: de 1 a 1.000.000).
- Divida o intervalo em 4 partes.
- Dispare uma
Threadpara cada parte. - Use
ArceMutex(ou MPSC Channels) para consolidar o resultado final com segurança de memória.
O que você vai aprender? 🧠
Você verá que a ordem de execução das mensagens/contagens é imprevisível, entendendo como o sistema operacional lida com multitarefa.
Projeto 15 - App de Login e Validação 📱
Objetivo
Objetivo: Desenvolver uma interface de usuário responsiva, gerenciar estados simples e implementar regras de validação em ambiente Mobile (Flutter ou Kotlin).
O Desafio 🎯
Crie o portal de entrada para um aplicativo. O foco é a Experiência do Usuário (UX) e a integridade dos dados inseridos.
Requisitos de Interface
- Campos: Logo da empresa, campo de Email (com teclado de email), campo de Senha (escondendo os caracteres).
- Ação: Um botão de "Entrar" que se destaca visualmente (ElevatedButton).
Regras de Validação
- O campo de Email não pode estar vazio e deve conter um caractere
@. - A Senha deve ter no mínimo 6 caracteres.
- Se os dados estiverem errados: Mostre uma mensagem de erro abaixo do campo ou um
SnackBar. - Se estiverem certos: Simule o login navegando para uma tela de "Boas-vindas".
Conceito Mobile 💡
Pratique o uso de Widgets/Componentes e entenda como o "Hot Reload" acelera suas mudanças visuais. Tente usar cores que combinem (Use o Adobe Color ou paletas de Material Design).
Projeto 16 - Mural Fullstack (Milestone Final) 🏆
Objetivo
Objetivo: Integrar todo o conhecimento do curso (Lógica, Banco de Dados, Backend e Frontend) em uma aplicação web completa e funcional.
O Desafio 🎯
Você chegou ao topo. É hora de conectar tudo. O projeto final é um "Mural de Recados Anônimos" (estilo Twitter antigo/Orkut).
Objetivo: Criar uma aplicação Web completa (Banco -> Back -> Front).
Arquitetura (MVC)
graph LR;
Navegador -->|POST /salvar| ControllerPHP;
ControllerPHP -->|INSERT| MySQL[("Banco Recados")];
MySQL -->|SELECT| ControllerPHP;
ControllerPHP -->|HTML| Navegador;
Requisitos Técnicos
- Banco de Dados (MySQL):
- Tabela
recados(idINT AI,textoVARCHAR,data_horaDATETIME).
- Tabela
- Backend (PHP/Laravel/Node):
- Rota
GET /: Lista recados. - Rota
POST /recado: Salva novo recado.
- Rota
- Frontend (HTML/CSS):
- Bootstrap para ficar bonito rápido.
- Design responsivo (Mobile First - Aula 15!).
Funcionalidades
- Postar: Escrever mensagem e enviar.
- Feed: Ver mensagens (Mais recentes no topo).
- Sanitização: Proteger contra XSS (não deixar usuário postar
<script>).
Dica de Ouro 🌟
Comece pelo Banco de Dados. Se o banco estiver errado, tudo dá errado.
Entrega 📦
- Link do Repositório GitHub com código fonte e script SQL.
Quizzes
Quizzes Interativos 🧠
Teste seus conhecimentos rapidamente.
-
Módulo 1: Fundamentos
-
Módulo 2: O Poliglota
Quiz 01 - Introdução
Quiz 02 - Introdução
Quiz 03 - Introdução
Quiz 04 - Introdução
Quiz 05 - Introdução
Quiz 06 - Introdução
Quiz 07 - Introdução
Quiz 08 - Introdução
Quiz 09 - Introdução
Quiz 10 - Introdução
Quiz 11 - Introdução
Quiz 12 - Introdução
Quiz 13 - Introdução
Quiz 14 - Introdução
Quiz 15 - Introdução
Quiz 16 - Introdução
Slides
Slides
Material de apoio visual para acompanhamento das aulas.
-
Módulo 1: Fundamentos
-
Módulo 2: O Poliglota
Aula 01 - Lógica de Programação 🧠
Agenda 📅
- O que é Lógica?
- O Algoritmo
- Pensamento Computacional
- Fluxogramas
- Seu Primeiro Algoritmo
1. O que é Lógica? 🤔
Lógica é a arte de pensar corretamente.
- No dia a dia: "Se está chovendo, levo o guarda-chuva".
- Na programação: É a sequência coerente de instruções.
- Objetivo: Resolver problemas de forma eficaz.
2. O Algoritmo 📜
Um algoritmo é uma receita de bolo para o computador.
- Sequência finita de passos.
- Não pode ter ambiguidade.
- Segue uma ordem lógica (Início -> Meio -> Fim).
Exemplo: Trocar uma Lâmpada 💡
- Pegar a escada.
- Posicionar a escada sob a lâmpada.
- Subir na escada.
- Retirar a lâmpada queimada.
- Colocar a lâmpada nova.
- Descer da escada.
3. Pensamento Computacional 💻
Dividido em 4 pilares:
- Decomposição: Quebrar o problema em partes menores.
- Padrões: Identificar o que se repete.
- Abstração: Focar no que é importante.
- Algoritmos: Criar os passos para resolver.
4. Fluxogramas 🔀
Representação visual do algoritmo.
- Início/Fim: Oval.
- Ação/Processo: Retângulo.
- Decisão: Losango.
Visualizando um Fluxograma
graph TD;
A([Início]) --> B[Acordar];
B --> C{Está com sono?};
C -- Sim --> D[Dormir mais 5 min];
D --> B;
C -- Não --> E[Levantar];
E --> F([Fim]);
5. Prática: Portugol 🇧🇷
Linguagem intermediária para aprender.
Simples, direto e em Português!
Resumo ✅
- Lógica = Pensar com ordem.
- Algoritmo = Receita de passos.
- Fluxograma = Desenho da solução.
Próxima Aula 🚀
- Ambiente e Ferramentas: Como instalar o VisualG e o VS Code.
- O Ciclo de Vida do Software.
👉 Dica: Tente listar os passos de como você faz um café!
Aula 02 - Ambiente e Ferramentas 🛠️
Agenda 📅
- O Ciclo de Vida do Código
- Ferramentas de Aprendizado (Low Code)
- Visual Studio Code (A Ferramenta Real)
- O Terminal (Sem Medo!)
- Instalação e Configuração
1. O Ciclo de Vida do Código 🔄
Como o computador entende o que escrevemos?
- Nós: Falamos Inglês/Português (Texto).
- Computador: Fala Energia (0 e 1).
- O Problema: Tradução.
As 3 Etapas 🚦
- Código Fonte: O texto que você digita.
- Compilação/Interpretação: A tradução mágica.
- Execução (Binário): O programa rodando.
Visualizando o Processo
graph LR;
A["Código Fonte\n(Humano)"] -->|Compilador| B["Binário\n(Máquina)"];
B -->|CPU| C["Execução\n(Ação)"];
style A fill:#f9f;
style B fill:#bbf;
style C fill:#bfb;
Código Fonte 📝
- Arquivos de texto simples (
.alg,.py,.c,.java). - Legível para humanos.
- Exemplo:
Compilador ⚙️
- O "Tradutor".
- Verifica se você escreveu certo (Sintaxe).
- Transforma em linguagem de máquina.
- Se tiver erro, ele GRITA (Erro de Compilação).
Binário / Executável 🚀
- O resultado final.
.exe(Windows), App Mobile.- O usuário final só vê isso.
- Não dá para ler (só números e símbolos estranhos).
2. Ferramentas Low Code 🧩
Para começar sem frustração.
- Foco na Lógica.
- Esqueça "ponto-e-vírgula" por enquanto.
- VisualG e Scratch.
VisualG 🟦
- Linguagem: Portugol (Português Estruturado).
- Interface: Simples, leve.
- Diferencial: Mostra o valor das variáveis em tempo real (Memória).
- Uso: Exclusivo para ensino no Brasil.
Exemplo VisualG
Algoritmo "Exemplo"
Var
nome : caractere
Inicio
escreva("Qual seu nome? ")
leia(nome)
escreva("Olá, ", nome)
Fimalgoritmo
Parece português, funciona como código.
Scratch 🐱
- Criado pelo MIT.
- Programação em Blocos (Lego).
- Impossível errar sintaxe (os blocos só encaixam se estiver certo).
- Ótimo para entender loops e eventos.
3. Visual Studio Code (VS Code) 💻
A ferramenta profissional.
- Gratuito (Microsoft).
- Leve.
- Extensível.
Por que VS Code? 🌟
- IntelliSense: Autocomplete inteligente.
- Multi-Linguagem: Python, Java, C++, HTML... tudo num lugar só.
- Terminal Integrado: Não precisa abrir janelas extras.
- Comunidade: Milhares de plugins.
Extensões Essenciais 🧩
Sem elas, ele é apenas um bloco de notas.
- Portuguese (Brazil): Traduz o menu.
- Material Icon Theme: Ícones bonitos para arquivos.
- Code Runner: Roda código com um clique.
- Live Server: Para Web (HTML).
4. O Terminal (Tela Preta) 🖥️
Não tenha medo da tela preta!
- É o modo "Hacker" (mas simples).
- Controle total do sistema.
- Mais rápido que clicar com o mouse.
Comandos Básicos (Windows/Linux)
| Comando | Função | Exemplo |
|---|---|---|
cd |
Change Directory (Mudar Pasta) | cd projetos |
ls ou dir |
List (Listar arquivos) | ls |
mkdir |
Make Directory (Criar Pasta) | mkdir aula01 |
clear ou cls |
Clear Screen (Limpar) | cls |
5. Prática: Olá Mundo 🌍
Vamos criar nosso primeiro programa no VisualG.
- Abra o VisualG.
- No bloco
Inicio, digite: - Aperte F9 (Executar).
Onde Configurar? 🛠️
Preparamos guias passo a passo para você instalar tudo.
- Setup 01 - VisualG (Comece aqui!)
- Setup 03 - VS Code (Para depois)
Resumo ✅
- Código Fonte -> Compilador -> Binário.
- VisualG = Treino de Lógica.
- VS Code = ferramenta Profissional.
- Terminal = Poder e Velocidade.
Próxima Aula 🚀
- Entrar na "Mente do Computador".
- Variáveis: Como o computador guarda informações?
- Tipos de Dados: Texto, Número Inteiro, Número Real, Lógico.
👉 Tarefa de Casa: Instalar VisualG e rodar o "Olá Mundo".
Aula 03 - Estrutura Sequencial ➡️
Agenda 📅
- Entrada, Processamento e Saída
- Variáveis e Tipos de Dados
- Operadores Aritméticos
- O Comando de Atribuição
- Prática: Calculadora Simples
1. Entrada, Processamento e Saída (EPS) ⚙️
É a base de qualquer programa:
- Entrada (Input): Dados que o usuário fornece.
- Processamento: O que o computador faz com os dados.
- Saída (Output): O resultado visualizado.
2. Variáveis 📦
Espaços na memória para guardar dados.
- Inteiro: 1, 10, -5.
- Real: 1.5, 3.14.
- Caractere: "Olá", "A".
- Logico: Verdadeiro/Falso.
3. Operadores Aritméticos ➕
| Operação | Símbolo |
|---|---|
| Adição | + |
| Subtração | - |
| Multiplicação | * |
| Divisão | / |
| Resto (Mod) | % ou MOD |
4. Atribuição <- ⬅️
Guardando um valor na variável.
5. Prática: Calcular Média 🧮
Algoritmo "Media"
Var
n1, n2, med : real
Inicio
escreva("Digite a Nota 1: ")
leia(n1)
escreva("Digite a Nota 2: ")
leia(n2)
med <- (n1 + n2) / 2
escreva("A média é: ", med)
Fimalgoritmo
Resumo ✅
- Variáveis guardam dados.
- EPS é o fluxo básico.
- Use
<-para atribuir valores.
Próxima Aula 🚀
- Estruturas Condicionais: O computador começando a tomar decisões!
👉 Desafio: Tente criar um código que some 3 números.
Aula 04 - Estruturas Condicionais 🚦
Agenda 📅
- O Poder da Escolha (
Se) - Operadores Relacionais
- Operadores Lógicos (
E,OU,NAO) - Condicionais Compostas (
Senao) - Escolha-Caso (Seleção Múltipla)
1. O Comando Se (If) ❓
O programa decide se executa algo ou não.
2. Operadores Relacionais ⚖️
Usados para comparar valores:
>: Maior que.<: Menor que.>=: Maior ou igual.<=: Menor ou igual.=: Igual.<>: Diferente.
3. Operadores Lógicos 🧠
Combinando condições:
- E: Tudo deve ser verdade.
- OU: Apenas um precisa ser verdade.
- NÃO: Inverte o valor.
4. Condicional Composta 🌓
5. Escolha-Caso 🗄️
Ideal para menus:
Escolha (opcao)
Caso 1
escreva("Soma")
Caso 2
escreva("Subtracao")
OutroCaso
escreva("Invalido")
FimEscolha
Resumo ✅
Sepermite decisão.Senaooferece alternativa.- Operadores relacionais comparam.
Próxima Aula 🚀
- Estruturas de Repetição: Chega de digitar o mesmo código 100 vezes!
👉 Desafio: Crie um código que verifique se um número é Par ou Ímpar.
Aula 05 - Estruturas Repetitivas 🔄
Agenda 📅
- Por que repetir?
Enquanto(While)Repita(Do While)Para(For)- Contadores e Acumuladores
1. Por que repetir? 🤔
Imagine imprimir de 1 a 1.000...
- Sem loops: 1.000 linhas de
escreva. - Com loops: 3 linhas de código!
- Eficiência: O computador não cansa de repetir.
2. Enquanto (Com teste no início) 🏁
Só entra se for verdade. Pode nem rodar.
3. Repita (Com teste no fim) 🏁
Roda pelo menos uma vez.
4. Para (Com contagem definida) 🔢
Ideal quando sabemos o fim.
5. Contadores e Acumuladores 💰
- Contador:
c <- c + 1(Soma de 1 em 1). - Acumulador:
soma <- soma + valor(Soma valores variados).
Resumo ✅
Enquantotesta antes.Repitatesta depois.Paraé automático.
Próxima Aula 🚀
- Vetores: Como guardar 100 nomes numa única variável?
👉 Desafio: Faça a tabuada do 5 usando o loop Para.
Aula 06 - Vetores (Arrays) 🧱
Agenda 📅
- O que são Variáveis Compostas?
- Declaração e Espaço em Memória
- Acesso por Índice
- Loops + Vetores (A união perfeita)
- Prática: Lista de Nomes
1. Variáveis Compostas Unidimensionais 📦
Até agora, 1 variável = 1 valor.
- Problema: E se eu quiser guardar 50 notas?
- Solução: Vetores!
- Um vetor é uma lista de elementos do mesmo tipo.
2. Declaração 📝
No VisualG:
- Criou 5 "caixinhas" na memória.
- Todas guardam números reais.
3. Acesso por Índice 🔢
Como saber quem é quem?
- Cada posição tem um número (Índice).
- No VisualG, começa em 1.
4. Loops + Vetores 🔄
Nunca use vetores sem loops!
5. Prática: Busca no Vetor 🔍
Para i de 1 ate 5 faca
Se (v[i] = "Carlos") Entao
escreva("Encontrado na posicao ", i)
FimSe
FimPara
Resumo ✅
- Vantagem: Organização de muitos dados.
- Índice: Localização do dado.
- Loops: Automatizam a leitura e escrita.
Próxima Aula 🚀
- Matrizes: Tabelas com linhas e colunas!
👉 Desafio: Crie um vetor que guarde 10 números e mostre apenas os Pares.
Aula 07 - Matrizes (Tabelas) 📊
Agenda 📅
- Variáveis Compostas Bidimensionais
- Linhas e Colunas
- Declaração de Matrizes
- Percorrendo com Loops Aninhados
- Prática: Jogo da Velha (Lógica)
1. O que é uma Matriz? ⬛
É um vetor de vetores.
- Vetor = Linha única.
- Matriz = Tabela (Linhas x Colunas).
- Exemplo: Planilhas de Excel.
2. Coordenadas 📍
Para acessar um valor, precisamos de dois números:
- L: Linha.
- C: Coluna.
Acesso:
m[L, C]
3. Declaração 📝
- Criou uma grade 3x3 (9 posições).4. Loops Aninhados 🔄🔄
Para ler uma matriz, usamos um loop dentro do outro:
5. Prática: Soma Diagonal 📉
Resumo ✅
- Matriz = Linhas + Colunas.
- Precisa de dois índices.
- Loops duplos facilitam o manuseio.
Próxima Aula 🚀
- Modularização: Dividir para conquistar! Procedimentos e Funções.
👉 Desafio: Pense em como representar um tabuleiro de Xadrez em código.
Aula 08 - Modularização 🧩
Agenda 📅
- Dividir para Conquistar
- Procedimentos (Sub-rotinas)
- Funções (Retorno de valor)
- Parâmetros e Escopo
- Vantagens da Reutilização
1. Dividir para Conquistar ⚔️
Problemas grandes devem ser fatiados:
- Facilita a leitura.
- Facilita o teste.
- Evita repetição de código (DRY - Don't Repeat Yourself).
2. Procedimentos 🏃♂️
Executa uma tarefa e não devolve nada.
Procedimento Topo()
Inicio
escreval("----------------")
escreval(" SISTEMA ABC ")
escreval("----------------")
FimProcedimento
3. Funções 🔄
Executa uma tarefa e retorna um valor.
4. Escopo de Variáveis 🔍
- Global: Toda o programa enxerga.
- Local: Só quem está dentro do módulo enxerga.
5. Parâmetros 📬
Passagem de informação para dentro do módulo:
- Por Valor: Manda uma cópia.
- Por Referência: Manda o endereço (altera o original).
Resumo ✅
- Procedimento: Executa ação.
- Função: Calcula e devolve.
- Escopo: Visibilidade da variável.
Final do Módulo 1! 🎉🏆
Você dominou a base de toda a tecnologia moderna.
Próxima Aula (Módulo 2) 🚀
- C / C++: Entrando no mundo profissional e de baixo nível!
👉 Desafio: Crie uma função que receba um número e retorne o seu dobro.
Aula 09 - C e C++ 🧱⚡
Agenda 📅
- A Origem do Tudo
- Linguagem C: O Pai
- C++: O Poder da Orientação a Objetos
- Ponteiros e Memória (Conceito)
- Aplicações no Mercado
1. A Importância de C/C++ 🏛️
- C: Criada em 1972. Tudo (Windows, Linux, macOS) é feito de C.
- C++: Evolução de C com Classes.
- Performance: Velocidade máxima.
2. Linguagem C ⚙️
Sintaxe que influenciou Java, JS, C# e PHP.
3. C++ Power 🚀
Adiciona abstração sem perder performance.
4. Memória e Ponteiros 🧠
Diferente das linguagens modernas, aqui você gerencia a memória.
- Stack: Memória rápida, automática.
- Heap: Memória maior, manual.
- Ponteiro: Guarda o endereço de onde o dado está.
5. Onde é usado? 🎮📡
- Games AAA (Unreal Engine).
- Sistemas Operacionais.
- Dispositivos IoT e Embarcados.
- Navegadores Web.
Resumo ✅
- Baixo Nível = Alto Poder.
- Base de toda a computação.
- Exige cuidado com a memória.
Próxima Aula 🚀
- JavaScript: A linguagem que domina a Web!
👉 Curiosidade: A NASA usa C para muitos sistemas de vôo!
Aula 10 - JavaScript e TypeScript 🌐✨
Agenda 📅
- A Linguagem da Web
- Manipulação do DOM
- Ecossistema Node.js
- TypeScript: Segurança de Tipos
- Frameworks (React, Vue, Angular)
1. JavaScript (JS) 🚀
- Criado em 10 dias!
- Linguagem de Script, interpretada.
- Única linguagem que roda nativamente no navegador.
2. O DOM (Document Object Model) 🌳
Interface que o JS usa para mexer no HTML/CSS.
- Alterar textos.
- Mudar cores.
- Criar animações e interatividade.
3. Node.js e NPM 📦
- Node.js: Tirou o JS do navegador e levou para o servidor.
- NPM: O maior gerenciador de pacotes do mundo.
4. TypeScript (TS) 🛡️
"O JavaScript que escala".
- Criado pela Microsoft.
- Adiciona tipagem estática (evita erros bobos).
- Exemplo: Se você disse que era Número, não pode virar Texto.
5. Frameworks Modernos 🏗️
- React: Focado em Componentes.
- Vue: Simples e poderoso.
- Angular: Google, robusto para empresas.
Resumo ✅
- JS é a alma da interatividade web.
- TS é o upgrade para grandes projetos.
- Frameworks aceleram o desenvolvimento.
Próxima Aula 🚀
- Java: O gigante do mundo corporativo!
👉 Dica: Inspecione qualquer site no Chrome (F12) e veja o JS em ação!
Aula 11 - Java ☕🏢
Agenda 📅
- Write Once, Run Anywhere
- JVM (Java Virtual Machine)
- Orientação a Objetos (OO)
- Spring Boot
- O Mercado de Java
1. A Filosofia Java 🏛️
- Robusto: Forte controle de erros.
- Portável: Roda em geladeiras, celulares e servidores.
- OOP Native: Tudo é um objeto.
2. A Mágica da JVM 🪄
O Java não compila para binário de máquina diretamente, mas para Bytecode.
- A JVM lê esse bytecode.
- Independência de Hardware.
3. Pilares da OO 🏛️
- Encapsulamento: Esconder detalhes.
- Herança: Reutilizar de pais.
- Polimorfismo: Muitas formas.
- Abstração: Focar no essencial.
4. Spring Boot 🍃
O framework que facilitou tudo.
- Backend moderno e rápido.
- Padrão ouro para Microserviços.
5. Salários e Mercado 📈
Java é a linguagem das grandes empresas (Bancos, Governos, E-commerce).
- Estabilidade de carreira.
- Ecossistema gigante.
Resumo ✅
- Java = Segurança e Escalabilidade.
- JVM = Portabilidade Superior.
- OO é o coração do Java.
Próxima Aula 🚀
- C# e .NET: O ecossistema poderoso da Microsoft!
👉 Curiosidade: A versão mais famosa do Minecraft foi escrita em Java!
Aula 12 - C# e .NET 🔷🖥️
Agenda 📅
- Origem e Modernidade
- Plataforma .NET Core
- LINQ (Queries em Código)
- Entity Framework (Banco de Dados)
- Azure e Nuvem
1. O Que é C#? 🎼
- Criado pela Microsoft (Anders Hejlsberg).
- Elegante como Java, versátil como C++.
- Linguagem principal do ecossistema Windows.
2. .NET 🌐
Hoje o .NET é Open Source e Multiplataforma.
- Web: ASP.NET Core.
- Mobile: MAUI.
- Desktop: WinForms/WPF.
- Games: Unity Engine.
3. LINQ ✨
Poderosas consultas integradas.
Parece mágica, mas é C#!
4. Unity 🎮
A engine de jogos mais popular usa C# como linguagem principal.
- Pokémon GO.
- Cuphead.
- Hollow Knight.
5. Salários e Mercado 💼
Indústria corporativa e desenvolvimento de jogos.
- Fortemente integrada com a nuvem Azure.
- Comunidade ativa e documentação impecável.
Resumo ✅
- C# = Produtividade e Estética.
- .NET = Plataforma Completa.
- Unity = Carreira em Games.
Próxima Aula 🚀
- Python: Simplicidade e Ciência de Dados!
👉 Curiosidade: C# foi quase chamado de COOL (C-like Object Oriented Language).
Aula 13 - Python 🐍📊
Agenda 📅
- Simplicidade e Legibilidade
- Baterias Inclusas
- Ciência de Dados e IA
- Automação de Tarefas
- O Modo de Trabalho Pythonico
1. Por que Python? 🌟
- Sintaxe limpa (Quase inglês).
- Indentação obrigatória (Código bonito por regra).
- Enorme para iniciantes.
2. Bibliotecas Poderosas 📦
"Batteries Included".
- Web: Django e Flask.
- Automação: Selenium e PyAutoGUI.
3. Ciência de Dados 📈
A linguagem rainha da Inteligência Artificial.
- Pandas: Manipulação de dados.
- NumPy: Cálculos matemáticos.
- Scikit-Learn: Machine Learning.
4. Onde está o Python? 🛸
- NASA.
- Netflix (Algoritmos de recomendação).
- Instagram (Backend robusto).
5. Exemplo de Código
Curto, grosso e eficaz!
Resumo ✅
- Python = Rapidez no desenvolvimento.
- IA e Dados = O futuro da linguagem.
- Indentação é a alma do negócio.
Próxima Aula 🚀
- Rust e Go: A revolução da performance moderna!
👉 Curiosidade: O nome veio de Montgomery Python, não da cobra!
Aula 14 - Rust e Go 🦀🐹
Agenda 📅
- Linguagens de Sistemas Moderna
- Go: Simplicidade e Concorrência
- Rust: Segurança e Performance
- WebAssembly (WASM)
- Casos de Uso Práticos
1. A Nova Geração 🚀
- Go (Golang): Criada pelo Google.
- Rust: Linguagem mais amada pelos devs 7 anos seguidos.
- Criadas para resolver os problemas de C++ e Java.
2. Go (Golang) 🐹
Focada em eficiência e nuvem.
- Goroutines: Rode milhares de tarefas ao mesmo tempo.
- Compilação ultra-rápida.
- Base de: Docker, Kubernetes, Terraform.
3. Rust 🦀
Memória segura sem Garbage Collector.
- Ownership: O copilador garante que você não vazará memória.
- Velocidade de C, segurança de Java.
- Mercado: Sistemas críticos e Cripto.
4. WebAssembly (WASM) 🕸️
Rust é a linguagem favorita para rodar código pesado no navegador a 60 FPS.
5. Conclusão ✅
- Go = Microserviços e Engenharia de Nuvem.
- Rust = Se você precisa de performance bruta e segurança.
Próxima Aula 🚀
- Mobile: O mundo nos nossos bolsos (Flutter, Kotlin, Swift).
👉 Dica: Aprender Rust vai te tornar um programador 2x melhor!
Aula 15 - Mobile 📱🚀
Agenda 📅
- Desenvolvimento Nativo vs Híbrido
- Android: Kotlin e Java
- iOS: Swift e Objective-C
- Multiplataforma: Flutter e React Native
- Publicação em Lojas
1. Nativo vs Híbrido ⚔️
- Nativo: 1 código para cada sistema. Máxima performance.
- Multiplataforma: 1 código para todos. Mais rápido e barato.
2. Android 🤖
- Linguagem: Kotlin (Moderna e favorita).
- IDE: Android Studio.
- Enorme base de usuários.
3. iOS (Apple) 🍏
- Linguagem: Swift (Rápida e elegante).
- IDE: Xcode (Só roda em Mac).
- Usuários que gastam mais em apps.
4. Flutter e React Native 💎
- Flutter (Google): Usa Dart. Interface pixel-perfect.
- React Native (Meta): Usa JS. Muito forte no mercado.
5. Salários Mobile 📈
Especialistas em mobile estão entre os mais bem pagos devido à complexidade de UX/UI.
Resumo ✅
- Nativo = Performance.
- Multiplataforma = Agilidade.
- UX (Experiência) é tudo no mobile.
Próxima Aula 🚀
- Backend Web (PHP): A linguagem que sustenta a internet clássica!
👉 Dica: Comece com Flutter se quer criar apps bonitos rapidamente!
Aula 16 - PHP e Web Backend 🐘🌐
Agenda 📅
- O Ciclo Request-Response
- Linguagem PHP e Integração Web
- Arquitetura MVC (Laravel)
- Segurança e Banco de Dados
- Projeto Final: Mural de Recados
1. O Que Sustenta a Web? 🏛️
- Frontend: O que você vê (HTML, CSS, JS).
- Backend (PHP): O cérebro que processa e guarda no banco.
2. Por que PHP? 🛠️
- Roda em qualquer servidor (Hospedagem barata).
- 80% da Web usa PHP (WordPress, Wikipedia, Facebook).
- Fácil de aprender e integrar.
3. Laravel Framework 💎
O PHP moderno.
- Elegante, seguro e profissional.
- Separa o código usando MVC.
4. O Ciclo da Web 🔄
- Usuário Pede (Request).
- Servidor Processa (PHP).
- Consulta o Banco (MySQL).
- Devolve o HTML (Response).
5. Mural de Recados (Projeto) 📝
Pratique tudo o que aprendeu criando um mural onde pessoas podem postar mensagens persistentes!
Fim da Jornada! 🎉🎓🏆
Você concluiu o curso de Lógica e Algoritmos.
- Agora você tem a base.
- Escolha sua trilha e Voe Alto!
Certificação e Próximos Passos 🏅
- Revise os Quizzes.
- Complete os Projetos.
- Mantenha-se curioso.
🚀 O Código é seu superpoder!
Configuração
Guias de Instalação 🛠️
Prepare seu ambiente de desenvolvimento.
-
Ferramentas Iniciais
Comece por aqui.
-
Linguagens Corporativas
Para grandes sistemas.
-
Sistemas e Mobile
Performance e Apps.
Setup 01: Ferramentas de Lógica 🧩
Neste guia, você aprenderá a preparar o ambiente para praticar Lógica de Programação.
1. VisualG (Pseudocódigo)
O VisualG é a ferramenta mais leve para iniciar.
* Download: Baixe em visualg3.com.br.
* Instalação: Não precisa instalar. Apenas extraia o .zip e execute o visualg30.exe.
* Teste: Escreva um algoritmo simples e aperte F9 para rodar.
2. Portugol Studio
Uma alternativa mais moderna e bonita ao VisualG. * Download: Baixe em univali.br. * Instalação: Siga o instalador padrão (Windows/Linux/Mac).
3. Scratch (Lógica em Blocos)
- Acesso: Apenas acesse scratch.mit.edu.
- Uso: Arraste os blocos para a área central e clique na bandeira verde.
4. Fluxogramas (Draw.io)
Para desenhar fluxogramas e UML. * Acesso: diagrams.net. * Uso: Selecione "Flowchart" na barra lateral e arraste as formas.
5. Excel (Lógica de Tabela)
O Excel é excelente para entender tabelas (Matrizes) e fórmulas (Funções). * Alternativa Gratuita: Google Sheets ou LibreOffice Calc.
6. Solução de Problemas Comuns ⚠️
- VisualG travando: Execute como Administrador (botão direito -> Executar como admin).
- Antivírus bloqueou: O VisualG é antigo e alguns antivírus acham que é ameaça. Adicione nas exceções.
- Portugol Studio não abre: Verifique se você tem o Java instalado (ele depende do Java).
Setup 02: C e C++ 🚀
Opção 1: Code::Blocks (Mais Fácil)
Ideal para iniciantes, pois já vem com tudo configurado.
1. Acesse codeblocks.org.
2. Baixe a versão que tem mingw-setup.exe no nome (ex: codeblocks-20.03mingw-setup.exe).
3. Instale e execute. Ele deve detectar o compilador automaticamente.
Opção 2: VS Code + MinGW (Profissional)
- Baixe o MinGW-w64: sourceforge.net/projects/mingw-w64/.
- Extraia e coloque a pasta na raiz
C:\mingw64. - Variáveis de Ambiente:
- Pesquise "Variáveis de Ambiente" no Windows.
- Edite o
Pathe adicioneC:\mingw64\bin.
- VS Code: Instale a extensão "C/C++" da Microsoft.
4. Solução de Problemas Comuns ⚠️
- 'gcc' não é reconhecido: Você esqueceu de adicionar a pasta
bindo MinGW ao PATH do Windows. Revise o passo 1. - Erro ao compilar: Certifique-se de que salvou o arquivo com a extensão
.c(para C) ou.cpp(para C++). - Terminal fecha rápido: Adicione
getchar();ousystem("pause");antes doreturn 0;para segurar a tela.
Setup 03: Web Moderno (JS/TS) 🌐
1. Node.js
O motor que roda JavaScript fora do navegador.
1. Baixe a versão LTS em nodejs.org.
2. Instale (Next, Next, Finish).
3. Teste no terminal: node -v e npm -v.
2. Visual Studio Code
O editor padrão da indústria. 1. Baixe em code.visualstudio.com. 2. Instale extensões úteis: * Live Server: Para rodar HTML localmente. * Prettier: Para formatar código. * ESLint: Para encontrar erros.
3. TypeScript
Após instalar o Node.js, instale o compilador TS globalmente:
Teste comtsc -v.
4. Solução de Problemas Comuns ⚠️
- cmd 'node' não encontrado: Reinicie seu terminal ou computador após instalar o Node.js.
- Erro de Permissão no npm: Tente executar o terminal como Administrador ou use o
nvmpara gerenciar versões. - Code Runner não funciona: Verifique se o Node está no PATH. Tente rodar manualmente no terminal:
node arquivo.js.
Setup 04: Java e JDK ☕
1. JDK (Java Development Kit)
O kit essencial para compilar Java.
1. Baixe o JDK 17 LTS (ou 21 LTS) no site da Oracle ou Adoptium.
2. Instale e configure a variável de ambiente JAVA_HOME.
3. Teste: java -version.
2. IntelliJ IDEA (Recomendado)
A melhor IDE para Java/Kotlin. 1. Baixe a versão Community (Gratuita) em jetbrains.com/idea. 2. Instale.
3. VS Code
Se preferir o VS Code: 1. Instale o "Extension Pack for Java" da Microsoft.
4. Solução de Problemas Comuns ⚠️
- 'javac' não reconhecido: A variável de ambiente
JAVA_HOMEou oPathestão errados. Verifique se apontam para a pastabindo JDK. - Erro: "Class names are only accepted...": O nome do arquivo DEVE ser igual ao nome da classe (ex:
Ola.javatem que terpublic class Ola). - Versão antiga do Java: Digite
java -versionpara conferir se está usando a versão que acabou de instalar.
Setup 05: .NET (C# e F#) 🔷
1. .NET SDK
Necessário para rodar C# e F#.
1. Baixe o .NET 8.0 SDK (LTS) em dotnet.microsoft.com.
2. Instale.
3. Teste: dotnet --version.
2. Visual Studio Community
A IDE mais completa para Windows. 1. Baixe em visualstudio.microsoft.com. 2. No instalador, selecione a carga de trabalho: "Desenvolvimento para desktop com .NET".
3. VS Code + C# Dev Kit
Para uma experiência mais leve: 1. Instale a extensão "C# Dev Kit" da Microsoft.
4. Solução de Problemas Comuns ⚠️
- 'dotnet' não encontrado: Reinicie o computador após instalar o SDK.
- Erro de Certificado HTTPS: Na primeira execução, rode
dotnet dev-certs https --trustpara confiar no certificado local. - OmniSharp Error: Se o VS Code reclamar, verifique se instalou o C# Dev Kit e se o SDK é compatível.
Setup 06: Python 🐍
1. Interpretador Python
- Baixe a versão mais recente em python.org.
- IMPORTANTE: Marque a caixa "Add Python to PATH" na instalação!
- Teste:
python --versionoupy --version.
2. PyCharm Community
A IDE mais poderosa para Python. 1. Baixe em jetbrains.com/pycharm.
3. VS Code + Python
- Instale a extensão "Python" da Microsoft.
- Instale a extensão "Jupyter" se quiser usar Notebooks.
4. Solução de Problemas Comuns ⚠️
- 'python' não encontrado: É o erro mais comum. Reinstale e marque a caixa "Add Python to PATH".
- Comando 'python' abre a Microsoft Store: Vá nas configurações do Windows ("Gerenciar Aliases de Execução de Aplicativo") e DESATIVE os itens do "Instalador de Aplicativo" para Python.
- Pip não funciona: Tente
python -m pip install pacote.
Setup 07: Sistemas (Rust e Go) ⚙️
Rust 🦀
O Rust usa o gerenciador rustup.
1. Acesse rustup.rs.
2. Baixe e execute o rustup-init.
3. Aceite o padrão (opção 1).
4. Reinicie o terminal e teste: cargo --version.
5. VS Code: Instale a extensão "rust-analyzer".
Go (Golang) 🐹
- Baixe em go.dev.
- Instale (Next, Next, Finish).
- Teste:
go version. - VS Code: Instale a extensão "Go" oficial.
4. Solução de Problemas Comuns ⚠️
- 'cargo' não encontrado: Reinicie o terminal. Se não funcionar, adicione
~/.cargo/bin(Linux/Mac) ou%USERPROFILE%\.cargo\bin(Windows) ao PATH. - Go Path: Certifique-se de que a variável
GOPATHestá configurada corretamente (geralmenteC:\Users\SeuUsuario\go). - Erro de Linker (Rust): No Windows, pode faltar as ferramentas de build do C++. Baixe o "Build Tools for Visual Studio".
Setup 08: Mobile (Flutter e Kotlin) 📱
Desenvolvimento mobile exige ferramentas mais pesadas.
1. Android Studio
Essencial para emular celulares Android e programar em Kotlin/Java nativo. 1. Baixe em developer.android.com/studio. 2. Instale e deixe ele baixar o Android SDK.
2. Flutter SDK
Para desenvolvimento Dart multiplataforma.
1. Baixe o SDK em flutter.dev.
2. Extraia para C:\src\flutter (exemplo).
3. Adicione C:\src\flutter\bin ao Path do Windows.
4. Rode flutter doctor no terminal para verificar o que falta.
3. VS Code
O editor preferido para Flutter. 1. Instale a extensão "Flutter" (ela instala a do Dart automaticamente).
4. Solução de Problemas Comuns ⚠️
- flutter doctor com erros: É normal. Siga o que ele diz. Geralmente é aceitar licenças (
flutter doctor --android-licenses). - Emulador não abre (HAXM/Hyper-V): Seu processador precisa ter virtualização ativada na BIOS.
- Gradle demorando: A primeira vez demora MUITO (baixa a internet inteira). Tenha paciência.
Setup 09: PHP e Servidor Local 🐘
Como o PHP roda no servidor, precisamos simular um servidor no nosso computador.
1. XAMPP (Tudo em Um)
O pacote mais fácil. Inclui Apache (Servidor), MySQL (Banco) e PHP.
1. Baixe em apachefriends.org.
2. Instale e abra o XAMPP Control Panel.
3. Clique em Start no Apache e MySQL.
4. Seus arquivos devem ficar na pasta C:\xampp\htdocs.
2. Composer (Gerenciador de Pacotes)
Essencial para usar bibliotecas modernas e frameworks como Laravel. 1. Baixe em getcomposer.org. 2. Instale. Ele deve encontrar seu PHP automaticamente.
3. Laravel (Opcional)
Para criar projetos profissionais:
4. Solução de Problemas Comuns ⚠️
- Apache não inicia (Port 80 busy): Skype ou IIS podem estar usando a porta 80. No XAMPP, vá em Config -> httpd.conf e mude
Listen 80paraListen 8080. - MySQL não conecta: Verifique se o serviço está verde no XAMPP.
- Erro de DLL: Pode faltar o "Visual C++ Redistributable" no seu Windows. Atualize-o.
Sobre
Sobre o Curso
🎓 Git e GitHub - Do Zero ao Profissional
Este é um curso completo e estruturado de Versionamento de Código com Git e GitHub. Desenvolvido para levar você do básico ao avançado, com uma abordagem prática e focada nas necessidades reais do mercado de desenvolvimento de software.
🎯 Objetivos do Curso
-
Dominar Git
Aprender os comandos fundamentais, fluxo de trabalho local e como o Git funciona por baixo dos panos.
-
GitHub Profissional
Utilizar o GitHub não apenas como repositório, mas como plataforma de colaboração, gestão de projetos e portfólio.
-
Colaboração
Trabalhar em equipe utilizando Branches, Pull Requests, Code Reviews e resolvendo conflitos de forma eficiente.
-
Boas Práticas
Criar um histórico de commits limpo, escrever mensagens significativas e manter repositórios organizados.
📚 O Que Você Vai Aprender
Módulo 1 – Conceitos Básicos
- Instalação e configuração do Git
- Ciclo de vida dos arquivos (Tracked to Committed)
- Histórico e navegação no tempo
- Ramificação (Branching) e Fusão (Merging)
Módulo 2 – Trabalhando com GitHub
- Repositórios Remotos
- Sincronização (Push/Pull)
- Resolução de Conflitos
- Pull Requests e Code Review
Módulo 3 – Fluxos e Organização
- GitHub Flow
- Issues e Projects (Kanban)
- Markdown para documentação
- README profissional
Módulo 4 – Colaboração e Carreira
- Forks e contribuição Open Source
- GitHub Pages para hospedagem
- Tratamento de erros comuns (Detached HEAD, etc.)
- Construção de portfólio
🛠️ Metodologia
-
Aulas Teóricas
Conteúdo explicativo com exemplos práticos e slides interativos.
-
Exercícios Práticos
Listas de exercícios para fixar o conteúdo de cada aula.
-
Projetos Reais
Desenvolva projetos práticos aplicando os conceitos aprendidos.
-
Quizzes Interativos
Teste seus conhecimentos com quizzes ao final de cada módulo.
👨🎓 Para Quem é Este Curso
- Iniciantes que nunca usaram controle de versão
- Desenvolvedores que usam Git apenas no básico ("add, commit, push")
- Estudantes que precisam organizar seus trabalhos acadêmicos
- Profissionais que querem melhorar seu fluxo de trabalho em equipe
📋 Pré-requisitos
- Computador com Windows, Linux ou macOS
- Instalação do Git (coberta no curso)
- Conta no GitHub (gratuita)
- Não é necessário conhecimento prévio de programação!
🎖️ O Que Você Receberá
- ✅ 16 aulas completas e estruturadas
- ✅ Slides interativos para todas as aulas
- ✅ Exercícios práticos com soluções
- ✅ Projetos reais para portfólio
- ✅ Quizzes para autoavaliação
- ✅ Guias de configuração de ambiente
🚀 Comece Agora
Pronto para dominar o Git?
Ir para Aula 01 Configurar Ambiente
Dúvidas? Entre em contato ou acesse a documentação completa.
Roadmap do Projeto: Curso de Lógica e Algoritmos
Este documento rastreia o progresso do desenvolvimento do curso de Lógica e Algoritmos.
✅ Fase 1: Estruturação e Conteúdo Base (Concluído)
- [x] Definição da ementa (16 aulas)
- [x] Criação da estrutura de diretórios (
docs/aulas,docs/slides, etc.) - [x] Geração de conteúdo inicial para todas as 16 aulas
- [x] Geração de slides para todas as 16 aulas (Reveal.js)
- [x] Criação de quizzes e exercícios básicos
🚧 Fase 2: Revisão e Polimento (Em Andamento)
- [x] Revisão Técnica: Verificar precisão dos comandos Git.
- [ ] Revisão Pedagógica: Melhorar clareza e fluxo das explicações.
- [x] Design e UX:
- [x] Ajustar tema para cores do GitHub (Dark Mode).
- [x] Melhorar layout dos slides.
- [x] Padronizar imagens e diagramas (Mermaid).
- [ ] Interatividade:
- [x] Adicionar quizzes interativos.
- [x] Criar projetos práticos.
🚀 Fase 3: Automação e Deploy (Concluído)
- [x] Configuração do MkDocs (
mkdocs.yml). - [x] Configuração de automação de testes.
- [x] Testes automatizados de build e links quebrados.
📦 Fase 4: Lançamento
- [x] Deploy final no GitHub Pages (branch
gh-pages). - [ ] Divulgação inicial.
Status Atual: Fase 4 - Lançamento e Manutenção. Última Atualização: 16/02/2026
Materiais
Bem-vindo à seção de materiais complementares do curso. Aqui você encontra recursos adicionais para apoiar seus estudos.
-
- Acesse os slides de todas as aulas para revisão.
-
- Pratique com listas de exercícios para cada módulo.
-
- Teste seus conhecimentos com quizzes interativos.
-
- Desenvolva projetos práticos para aplicar o que aprendeu.
-
- Guias de instalação e configuração do ambiente.
Versão para Impressão
Esta página foi gerada automaticamente para impressão.