Apostila de Revisão
Instrutor de Desenvolvimento de Sistemas

1. Fundamentos de Computação

Conceitos-chave:

  • Dado vs. Informação
  • Hardware: componentes físicos (CPU, memória, dispositivos de E/S)
  • Software: programas e instruções
  • Sistema computacional: conjunto integrado de hardware + software + usuários

Arquitetura de Von Neumann:

  • Unidade Central de Processamento (CPU): Unidade de Controle (UC) + Unidade Lógica e Aritmética (ULA) + Registradores
  • Memória principal (RAM)
  • Dispositivos de entrada e saída
  • Barramentos (dados, endereço, controle)
  • Ciclo de máquina: busca, decodificação, execução

Memória:

  • Hierarquia: registradores → cache → RAM → armazenamento secundário
  • ROM vs. RAM

2. Organização e Arquitetura de Computadores

  • Organização: aspectos físicos, como componentes são implementados (ex.: tecnologia da memória, frequência do clock)
  • Arquitetura: atributos visíveis ao programador (conjunto de instruções, modos de endereçamento, tipos de dados)
  • ISA (Instruction Set Architecture): interface entre hardware e software
  • RISC vs. CISC: diferenças e exemplos

3. Sistema Computacional (Hardware e Software)

Hardware

  • CPU (núcleos, clock)
  • Memória RAM, ROM, cache
  • Dispositivos de E/S (teclado, mouse, monitor, impressora)
  • Placa-mãe, barramentos

Software

  • Software de sistema (SO, drivers)
  • Software aplicativo (editores, navegadores)
  • Software utilitário (antivírus, desfragmentador)
  • Firmware (software embarcado)

4. Sistemas Operacionais – Proprietários e Livres

Funções do SO:

  • Gerenciamento de processos
  • Gerenciamento de memória
  • Gerenciamento de arquivos
  • Gerenciamento de dispositivos
  • Interface com o usuário (CLI/GUI)

Proprietários: Windows, macOS — licença paga, código fechado.

Livres: Linux (Ubuntu, Fedora, Debian), BSD — código aberto, licença GPL, gratuito.

AspectoProprietárioLivre
CódigoFechadoAberto
CustoGeralmente pagoGratuito
SuporteOficialComunidade
ExemplosWindows, macOSLinux, FreeBSD

5. Suíte para Escritórios – Proprietárias e Livres

Proprietárias: Microsoft Office (Word, Excel, PowerPoint), Apple iWork (Pages, Numbers, Keynote).

Livres: LibreOffice (Writer, Calc, Impress), OpenOffice.

Características: processador de texto, planilha eletrônica, apresentações, compatibilidade de formatos (docx, xlsx, pptx, odt, ods, odp), recursos de colaboração (Google Workspace).

6. Software de Produtividade e Serviços em Nuvem

Software de produtividade

  • Editores de texto, planilhas, agendas, gerenciadores de tarefas
  • Exemplos: Google Docs, Trello, Notion, Slack

Serviços em nuvem

  • SaaS (Software as a Service): aplicativos prontos via navegador (Gmail, Google Drive)
  • PaaS (Platform as a Service): ambiente para desenvolvimento (Heroku, Google App Engine)
  • IaaS (Infrastructure as a Service): infraestrutura virtualizada (AWS EC2, Google Compute Engine)

Vantagens: acessibilidade, escalabilidade, colaboração em tempo real, backup automático.

7. Cibersegurança: vírus, spyware, malware e phishing

Malware (software malicioso)

  • Vírus: anexa-se a arquivos, propaga-se por execução
  • Worm: auto-replicável, não precisa de hospedeiro
  • Trojan: disfarçado de software legítimo
  • Spyware: coleta informações sem consentimento
  • Ransomware: sequestra dados e pede resgate
  • Adware: exibe anúncios indesejados

Phishing

  • Tentativa de obter dados sensíveis (senhas, cartões) por meio de mensagens falsas
  • Tipos: e-mail, SMS (smishing), voz (vishing)
  • Como prevenir: verificar remetente, não clicar em links suspeitos, autenticação de dois fatores, educação digital

Boas práticas

  • Manter software atualizado
  • Usar antivírus e firewall
  • Backups regulares

8. Sistemas de Gerenciamento de Bancos de Dados (SGBD)

Definição: software que gerencia banco de dados, permitindo criação, consulta, atualização e administração.

Arquitetura ANSI/SPARC (3 níveis):

  • Nível externo (visões do usuário)
  • Nível conceitual (esquema lógico)
  • Nível interno (armazenamento físico)

Segurança: autenticação, autorização, criptografia, auditoria.

Integridade: restrições de integridade (chave primária, estrangeira, check, not null); integridade referencial.

Concorrência: controle de concorrência (lock, timestamp, isolamento); problemas: lost update, dirty read, non-repeatable read, phantom read.

Gerenciamento de Transações:

  • Transação: unidade lógica de trabalho
  • Propriedades ACID:
    • Atomicidade: tudo ou nada
    • Consistência: banco permanece válido
    • Isolamento: transações não interferem
    • Durabilidade: efeitos persistidos

Recuperação após falha: log de transações (redo, undo), checkpoints, técnicas: rollback, rollforward.

9. PL/SQL

PL/SQL (Procedural Language/Structured Query Language): extensão procedural da Oracle para SQL.

  • Blocos: DECLARE, BEGIN, EXCEPTION, END
  • Tipos: variáveis, constantes, cursores, registros

Estrutura de bloco:

DECLARE
   v_nome VARCHAR2(50);
BEGIN
   SELECT nome INTO v_nome FROM alunos WHERE id = 1;
   DBMS_OUTPUT.PUT_LINE('Nome: ' || v_nome);
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('Aluno não encontrado');
END;

Funções e Procedures

  • Procedure: não retorna valor (ou retorna via parâmetros OUT)
  • Function: retorna valor

Triggers

Disparadores automáticos em eventos INSERT, UPDATE, DELETE.

10. Linguagens de Programação

Paradigmas:

  • Imperativo (C, Pascal)
  • Orientado a objetos (Java, Python, C++)
  • Funcional (Haskell, Lisp)
  • Lógico (Prolog)

Compiladas vs. Interpretadas:

  • Compiladas: código fonte → compilador → código de máquina (C, C++)
  • Interpretadas: código executado linha a linha (Python, JavaScript)
  • Híbridas: bytecode (Java, C#)

Tipos de dados: elementares (inteiro, real, caractere, booleano) e estruturados (array, registro, lista, pilha, fila).

11. Noções de Linguagens Procedurais

  • Sequência de comandos
  • Funções e procedimentos (sub-rotinas)
  • Escopo de variáveis (global, local)

Funções vs. Procedimentos: função retorna valor; procedimento executa ações, não retorna valor.

Passagem de parâmetros: por valor (cópia), por referência (endereço).

Exemplo em pseudocódigo:

funcao soma(a, b)
   retorne a + b
fimfuncao

12. Estruturas de Controle de Fluxo

Sequência: execução linear.

Seleção: if / else, switch / case.

Repetição: while (pré-testada), do-while (pós-testada), for (contada).

Exemplo (Python):

# if-else
if idade >= 18:
    print("Maior de idade")
else:
    print("Menor de idade")

# for
for i in range(5):
    print(i)

# while
cont = 0
while cont < 5:
    print(cont)
    cont += 1

13. Programação em Python

Variáveis e Operadores

  • Tipagem dinâmica
  • Operadores: +, -, *, /, //, %, **, ==, !=, <, >, <=, >=, and, or, not

Valores Booleanos

True, False; expressões booleanas.

Loops e Listas

# Lista
frutas = ["maçã", "banana", "uva"]
for fruta in frutas:
    print(fruta)

# Loop com condição
numeros = [1, 2, 3, 4, 5]
pares = [n for n in numeros if n % 2 == 0]
print(pares)  # [2, 4]

Funções

def soma(a, b):
    return a + b

resultado = soma(3, 5)
print(resultado)  # 8

Tuplas

Imutáveis, similares a listas mas entre parênteses.

coordenadas = (10, 20)
x, y = coordenadas

Processamento de dados

Leitura de arquivos, manipulação de strings, listas e dicionários.

14. Desenvolvimento Web: JavaScript, jQuery, PHP e/ou Ruby on Rails

JavaScript

  • Linguagem de script client-side
  • Manipulação do DOM
  • Eventos
  • ES6+: let, const, arrow functions, template literals

jQuery

Biblioteca JavaScript que simplifica manipulação do DOM, eventos, AJAX.

$(document).ready(function() {
    $("button").click(function() {
        $("p").hide();
    });
});

PHP

  • Linguagem server-side
  • Integração com bancos de dados
  • Sintaxe similar a C

Ruby on Rails

  • Framework MVC em Ruby
  • Convenção sobre configuração
  • ActiveRecord para banco de dados

15. Estruturas de Dados e Algoritmos

Estruturas de dados

  • Listas: sequência ordenada, acesso por índice
  • Filas: FIFO (First In, First Out)
  • Pilhas: LIFO (Last In, First Out)
  • Árvores: nós hierárquicos (binária, binária de busca)
  • Grafos: nós conectados por arestas

Métodos de acesso

  • Acesso sequencial
  • Acesso direto (aleatório)
  • Acesso indexado

Busca

  • Sequencial: O(n)
  • Binária: O(log n) (requer lista ordenada)

Inserção

  • Em lista: O(1) no início, O(n) no meio/fim
  • Em árvore binária de busca: O(log n) em média

Ordenação

  • Bubble Sort: O(n²)
  • Selection Sort: O(n²)
  • Insertion Sort: O(n²)
  • Quick Sort: O(n log n) em média
  • Merge Sort: O(n log n)

16. Referências

17. Teste Teórico (com respostas)

1. Qual a diferença entre arquitetura e organização de computadores?
Resposta: Arquitetura refere-se aos atributos visíveis ao programador (conjunto de instruções, modos de endereçamento), enquanto organização trata da implementação física (tecnologia da memória, frequência do clock).

2. Cite três funções de um sistema operacional.
Resposta: Gerenciamento de processos, gerenciamento de memória, gerenciamento de arquivos.

3. O que é um software livre?
Resposta: Software com código-fonte aberto, que pode ser usado, modificado e distribuído livremente, geralmente sob licenças como GPL.

4. Explique as propriedades ACID de uma transação.
Resposta: Atomicidade (tudo ou nada), Consistência (banco permanece válido), Isolamento (transações não interferem), Durabilidade (efeitos persistidos).

5. O que é phishing?
Resposta: Técnica de engenharia social que usa mensagens falsas para obter dados sensíveis, como senhas e números de cartão.

6. Qual a diferença entre uma lista e uma tupla em Python?
Resposta: Listas são mutáveis (podem ser alteradas) e tuplas são imutáveis (não podem ser alteradas após criação).

7. O que é uma árvore binária de busca?
Resposta: Estrutura de dados hierárquica onde cada nó tem no máximo dois filhos, e para cada nó, todos os valores à esquerda são menores e à direita são maiores.

8. Qual a complexidade do algoritmo de busca binária?
Resposta: O(log n), pois divide o espaço de busca pela metade a cada iteração.

9. Diferencie SaaS, PaaS e IaaS.
Resposta: SaaS: software como serviço (aplicativos prontos); PaaS: plataforma como serviço (ambiente de desenvolvimento); IaaS: infraestrutura como serviço (máquinas virtuais, armazenamento).

10. O que é um SGBD?
Resposta: Sistema de Gerenciamento de Banco de Dados, software que gerencia a criação, manipulação e administração de bancos de dados.

18. Teste Prático (com soluções)

1. Python: Escreva uma função que recebe uma lista de números e retorna a soma dos pares.

def soma_pares(lista):
    soma = 0
    for num in lista:
        if num % 2 == 0:
            soma += num
    return soma

# Teste
print(soma_pares([1, 2, 3, 4, 5, 6]))  # 12

2. Python: Use list comprehension para criar uma lista com os quadrados dos números de 1 a 10.

quadrados = [x**2 for x in range(1, 11)]
print(quadrados)

3. SQL/PL-SQL: Crie uma procedure que insere um novo aluno em uma tabela alunos (id, nome, curso).

CREATE OR REPLACE PROCEDURE inserir_aluno(
    p_id IN NUMBER,
    p_nome IN VARCHAR2,
    p_curso IN VARCHAR2
) AS
BEGIN
    INSERT INTO alunos (id, nome, curso) VALUES (p_id, p_nome, p_curso);
    COMMIT;
END;

4. JavaScript: Escreva uma função que recebe um array e retorna apenas os números maiores que 10.

function maioresQueDez(array) {
    return array.filter(num => num > 10);
}
console.log(maioresQueDez([5, 12, 8, 20, 3])); // [12, 20]

5. Estruturas de Dados: Implemente uma pilha em Python com métodos push e pop.

class Pilha:
    def __init__(self):
        self.itens = []
    def push(self, item):
        self.itens.append(item)
    def pop(self):
        if not self.itens:
            return None
        return self.itens.pop()

# Teste
p = Pilha()
p.push(1)
p.push(2)
print(p.pop())  # 2

6. Algoritmo: Implemente a busca binária em Python.

def busca_binaria(lista, alvo):
    esq, dir = 0, len(lista) - 1
    while esq <= dir:
        meio = (esq + dir) // 2
        if lista[meio] == alvo:
            return meio
        elif lista[meio] < alvo:
            esq = meio + 1
        else:
            dir = meio - 1
    return -1

print(busca_binaria([1, 3, 5, 7, 9], 5))  # 2

19. Plano de Microaula Completo (com slides)

Tema sugerido: "Introdução à Cibersegurança: Identificando e Prevenindo Phishing"

Objetivo de aprendizagem: Ao final da aula, o aluno será capaz de identificar os principais tipos de phishing e aplicar medidas preventivas.

Duração: 20 minutos

Público: Alunos de curso técnico em Desenvolvimento de Sistemas

Materiais: Slides, exemplos reais de e-mails fraudulentos, quiz interativo

Roteiro e Slides

SlideConteúdoTempo
1Título: Cibersegurança: Phishing – Como se Proteger?
Apresentação do instrutor
1 min
2Problematização: "Você já recebeu um e-mail suspeito do seu banco? O que fez?"
Levantar respostas
2 min
3Definição: O que é phishing?
"Técnica de engenharia social que usa mensagens falsas para obter dados sensíveis."
2 min
4Tipos de phishing: E-mail, SMS (smishing), Voz (vishing), Spear phishing (direcionado)3 min
5Exemplo real: Mostrar e-mail falso com características suspeitas (remetente, links, urgência)3 min
6Sinais de alerta: Erros de gramática, URLs estranhas, pedidos urgentes, anexos inesperados3 min
7Medidas preventivas: Verificar remetente, não clicar em links, usar autenticação de dois fatores, manter software atualizado3 min
8Atividade prática: Mostrar 3 mensagens e pedir que identifiquem quais são phishing2 min
9Fechamento: Recapitular os sinais e medidas. Perguntas para verificação: "Qual a diferença entre phishing e spyware?"1 min

Dicas para apresentação:

  • Use tom de conversa, não leia slides
  • Mostre exemplos visuais (prints de e-mails)
  • Faça perguntas para engajar a banca
  • Controle o tempo (ensaiar antes)