Lógica de programação
Algoritmo: sequência finita de passos lógicos para resolver um problema.
Linguagem de programação: sistema formal de comunicação com o computador, usando regras sintáticas e semânticas, permitem instruções para serem executadas e produzir resultados.
- Sintaxe: a forma (ex. usar ponto e vírgula em Java)
- Semântica: o significado ( x = 1; atribua o valor 1 à variável x)
Paradigmas
- Imperativo: Como fazer passo a passo (C, Python)
- Funcional: Baseado em funções matemáticas (Haskell)
- Procedural: Organizado em procedimentos (C, Pascal)
- Orientado a objetos: Baseado em objetos e classes (Java, C++)
- Lógico: Baseado em regras e fatos (Prolog)
- Orientado a eventos (Javascript)
Tipagens:
- Estática: Verifica o tipo em tempo de compilação
- Dinâmica: Verifica o tipo em tempo de execução
- Forte: Rigoroso com os tipos
- Fraca: Realiza conversões automáticas
Execução
- Compilada: Traduz tudo antes de executar (C, Rust)
- Interpretada: Executa linha por linha (JavaScript)
- Híbrida: Gera bytecode intermediário (Java, C#)
Variáveis/constantes: Espaço em memória para armazenar dados
- Variáveis: podem mudar após a atribuição inicial
- Constantes: permanecem iguais após a atribuição inicial
Tipos
- Inteiros (int): Números sem casas decimais (1,42, -10).
- Flutuantes (float/double): Números decimais (3.14,19.99).
- Strings (str): Textos (sempre entre aspas: “Olá, mundo!”).
- Booleanos (bool): Valores lógicos (True, False).
Operadores
- Aritméticos: +, −, ∗, / (divisão), % (resto da divisão).
- Relacionais: == (igual), != (diferente), > (maior), < (menor).
- Lógicos: AND (e), OR (ou), NOT (não). Eles servem para combinar condições complexas.
Estruturas de controle
- Condicionais (if/else): Permitem que o programa tome decisões. “Se a nota for maior que 7, aprovado; caso contrário, reprovado.”
- Laços de Repetição (Loops): Permitem repetir uma tarefa várias vezes sem escrever o mesmo código repetidamente. Os mais comuns são o FOR (quando você sabe quantas vezes repetir) e o WHILE (enquanto uma condição for verdadeira).

Classes: modelo abstrato que define a estrutura (atributos/dados) e o comportamento (operações) que os objetos criados a partir dela terão
Função: bloco de código reutilizável, nomeado, que recebe zero ou mais valores de entrada (parâmetros/argumentos), executa uma tarefa específica e opcionalmente retorna um valor de saída.
Método: função que está associada a uma classe ou a um objeto, operando sobre os dados daquele objeto. Ele é a forma como um objeto “faz algo” usando seus próprios atributos.
Estrutura de dados
- Array é uma estrutura de dados homogênea (todos os elementos do mesmo tipo) que armazena elementos em posições contíguas de memória, acessíveis diretamente por um índice inteiro.
- Lista encadeada é uma estrutura dinâmica onde cada elemento (nó) contém o dado e uma referência (ponteiro) para o próximo nó, formando uma sequência lógica não necessariamente contígua na memória.
- Pilha é uma estrutura linear que segue o princípio LIFO (Last In, First Out), onde o último elemento inserido é o primeiro a ser removido.
- Fila é uma estrutura linear que segue o princípio FIFO (First In, First Out), onde o primeiro elemento inserido é o primeiro a ser removido.
- Árvore é uma estrutura hierárquica composta por nós, onde existe um nó raiz (root) e cada nó pode ter zero ou mais nós filhos, sem ciclos.
- Tabela hash é uma estrutura que armazena pares chave-valor, usando uma função hash para mapear cada chave a um índice (bucket) onde o valor será armazenado, permitindo acesso em tempo constante médio.