Ficha 01 · Conceitos, algoritmos e estruturas de dados genéricas
Exercício 1 · O que é código genérico
Explica, por palavras tuas, o que é código genérico e dá um exemplo, do dia a dia de um curso de conteúdos interativos, de duas funções que poderiam ser substituídas por uma só função genérica.
Exercício 2 · Princípios da programação genérica
Associa cada princípio ao exemplo correto: (a) DRY; (b) abstração; (c) independência de tipo; (d) baixo acoplamento.
- Uma função
ordenar(lista, comparar)que não precisa de saber se recebe números ou texto. - Extrair para uma só função uma lógica que estava repetida em três sítios do programa.
- Um módulo de estatísticas que só depende de um evento, não de conhecer os outros módulos em detalhe.
- Pensar primeiro no que "conteúdo digital" tem de comum, antes de programar imagem, vídeo ou quiz.
Exercício 3 · Classificar linguagens
Classifica cada afirmação como verdadeira (V) ou falsa (F): (a) JavaScript é uma linguagem de tipagem estática; (b) uma linguagem interpretada é executada linha a linha, em tempo de execução; (c) o paradigma orientado a objetos agrupa dados e comportamento em objetos; (d) uma linguagem só pode seguir um único paradigma.
Exercício 4 · Escrever um algoritmo genérico
Tens uma função somarNumeros(lista) que soma uma lista de números. Reescreve-a como uma função genérica reduzir(lista, operacao, inicial) que sirva também para multiplicar ou concatenar texto. Mostra como a usarias para somar [1, 2, 3, 4].
Exercício 5 · Escolher a estrutura de dados certa
Para cada situação, indica a estrutura de dados mais adequada (array, objeto, Set, Queue ou Stack) e justifica: (a) as tags de um curso, sem repetições; (b) o histórico de "recuar" de um quiz; (c) a fila de reprodução de uma playlist de vídeos; (d) as propriedades de um único conteúdo (título, tipo, url).
Exercício 6 · Tipagem dinâmica: prever o comportamento
Sem correr o código, indica o tipo de valor depois de cada linha, e explica o que acontece de diferente numa linguagem de tipagem estática como o Java.
let valor = 25;
valor = "vinte e cinco";
valor = [25];
Exercício 7 · Verificar o tipo antes de usar
A função seguinte falha quando recebe um valor que não é um objeto de conteúdo. Corrige-a para verificar o tipo e lançar um erro controlado, em vez de deixar o programa rebentar mais tarde.
function mostrarConteudo(item) {
console.log(`${item.tipo}: ${item.titulo}`);
}