Glossário do Curso de Lógica de Programação Intermediário

Todos os termos do curso em um só lugar, com definições simples. Use a busca para achar rápido.

Adicionar e atualizar
Guardar um valor sob uma chave. Se a chave é nova, cria-se um par (adicionar); se já existe, o valor novo substitui o antigo (atualizar). No dicionário, as duas ações se escrevem igual: chave recebe valor.
Ver na aula →
Argumento
O valor concreto que você passa para a função na hora de chamá-la, encaixando em cada parâmetro. Em desconto(100, 10), os números 100 e 10 são os argumentos que preenchem os parâmetros preco e taxa, nessa ordem.
Ver na aula →
Busca binária
Método de busca em dados ordenados que, a cada passo, compara o alvo com o item do meio da parte que sobrou e descarta a metade onde o alvo não pode estar. Repete até achar ou até não sobrar nada. Extremamente rápida, mas exige ordem.
Ver na aula →
Busca de subtexto
Verificar se um pedaço menor (um caractere ou uma sequência) existe dentro de um texto maior. Procurar a arroba num e-mail ou a palavra desconto numa mensagem são buscas de subtexto.
Ver na aula →
Busca direta
A busca do dicionário: você informa a chave e recebe o valor quase na hora, sem examinar os outros pares. Não depende do tamanho do dicionário, o que a torna muito rápida mesmo com milhões de itens.
Ver na aula →
Busca linear
Método de busca que percorre a coleção do primeiro ao último item, comparando cada um com o procurado, até encontrar (e parar) ou chegar ao fim sem achar. Também chamada de busca sequencial. Funciona em qualquer lista, ordenada ou não.
Ver na aula →
Busca por varredura
A busca da lista quando você não sabe a posição: percorrer item por item até encontrar. Quanto maior a lista, mais itens em média você examina, então o custo cresce com o tamanho.
Ver na aula →
Caractere
Cada unidade individual de uma string: uma letra, um algarismo, um espaço, um sinal de pontuação. A string CASA tem quatro caracteres; o texto oi! tem três (o, i e o ponto de exclamação).
Ver na aula →
Caso base
O caso mais simples de uma recursão, aquele cuja resposta é direta e que NÃO chama a função de novo. É o freio que faz a recursão parar. Toda função recursiva precisa de pelo menos um caso base alcançável.
Ver na aula →
Caso de borda
Uma entrada ou situação que fica nos extremos do que o programa aceita: a lista vazia, o único item, o zero, o valor máximo, o número negativo, o texto em branco. Bugs se escondem nos casos de borda porque o programador costuma testar só o caso comum.
Ver na aula →
Caso de teste
Um exemplo concreto de entrada com a saída esperada, usado para conferir se a solução funciona. Bons casos de teste incluem os extremos: a lista vazia, o valor máximo, o número negativo, o texto sem nada.
Ver na aula →
Caso padrão
O caso do escolha-caso que roda quando nenhum valor fixo bateu, equivalente ao senão final da escada. Pega opções inválidas e entradas inesperadas. Escrever um caso padrão é uma boa prática de robustez.
Ver na aula →
Caso recursivo
A parte da função recursiva que resolve o problema chamando a si mesma para um caso menor. Ele encolhe o problema em direção ao caso base. Junto com o caso base, forma toda função recursiva.
Ver na aula →
Célula da grade
Cada posição individual de uma matriz, localizada por linha e coluna. Numa planilha é a caixa onde se digita; num tabuleiro é a casa; numa imagem é o pixel. Modelar um problema de grade é decidir o que cada célula guarda.
Ver na aula →
Chamada recursiva
O momento em que a função chama a si mesma, passando um caso menor como argumento. Cada chamada recursiva encolhe o problema um pouco, aproximando-o do caso mais simples de todos.
Ver na aula →
Chave de ordenação
O critério pelo qual se ordena. Uma lista de pessoas pode ser ordenada pela chave nome (alfabética), idade (numérica) ou data de cadastro. A mesma coleção rende ordens diferentes conforme a chave escolhida.
Ver na aula →
Chave e valor
As duas metades de cada item de um dicionário. A chave é única e serve para localizar; o valor é o dado associado a ela. No par nome do produto e preço, o nome é a chave e o preço é o valor.
Ver na aula →
Checar existência da chave
Perguntar se uma chave está presente no dicionário antes de usá-la, para evitar erro ou resposta vazia. Uma verificação do tipo se a chave existe no dicionário protege buscas e remoções.
Ver na aula →
Cheiro de código (code smell)
Um sinal na aparência do código que sugere um problema de estrutura, sem ser necessariamente um erro. Nomes ruins, funções gigantes, código duplicado, aninhamento profundo: são cheiros que indicam que aquele trecho pede refatoração.
Ver na aula →
Cláusula de guarda
Uma verificação no começo da função ou do bloco que trata logo um caso inválido ou especial e encerra ali (com um retorno ou uma saída), em vez de aninhar todo o resto dentro de um SE. Deixa o caminho principal do código reto e sem recuos.
Ver na aula →
Coleção
Nome geral para qualquer estrutura que guarda muitos itens de uma vez (uma lista de nomes, um dicionário de preços). O oposto de um valor solto, como uma única idade ou um único preço guardado numa variável.
Ver na aula →
Comentário do porquê
Um comentário que explica a razão de uma decisão, o motivo por trás do código, algo que o código em si não consegue mostrar. Ex.: por que um valor específico foi escolhido, por que um caso estranho é tratado de um jeito. É o tipo mais valioso de comentário.
Ver na aula →
Comentário redundante
Um comentário que só repete em palavras o que o código já diz claramente (ex.: soma 1 ao contador em cima de contador <- contador + 1). Não agrega e ainda vira peso morto que pode desatualizar. Bons nomes tornam esse tipo de comentário desnecessário.
Ver na aula →
Compensação (trade-off)
A troca entre vantagens e custos de cada escolha. A busca binária é rapidíssima, mas exige dados ordenados; a linear é mais lenta, mas funciona em qualquer lista. Escolher envolve pesar a ordem dos dados e quantas buscas serão feitas.
Ver na aula →
Concatenar
Juntar dois ou mais textos para formar um só, na ordem dada. Concatenar Bom dia, com Maria produz Bom dia, Maria. É como emendar pedaços de barbante num cordão maior.
Ver na aula →
Conjunto
Estrutura que guarda itens únicos, sem ordem definida e sem repetição. Inspirada nos conjuntos da matemática: um elemento está ou não está, e adicionar algo que já pertence não muda nada. Ideal quando importa apenas a presença, não a quantidade nem a posição.
Ver na aula →
Contagem de frequência
Contar quantas vezes cada valor distinto aparece numa coleção. Usa um dicionário em que a chave é o item e o valor é a contagem: a cada aparição do item, soma-se um na sua contagem.
Ver na aula →
Contagem de ocorrências
Contar quantas vezes algo aparece num texto (uma vogal, um espaço, uma letra). Usa o padrão do contador: uma variável começa em zero antes do laço e ganha mais um sempre que o caractere da vez atende ao critério.
Ver na aula →
Contagem de passos
Medir o custo de um algoritmo contando quantas operações básicas (comparações, somas, trocas) ele executa, em vez de cronometrar o tempo. Independe da velocidade da máquina, então é uma medida justa e comparável.
Ver na aula →
Continuar (continue)
Comando que abandona o restante da volta atual do laço e salta direto para a próxima volta, sem encerrar o laço. Útil para pular itens que não interessam (linhas vazias, valores negativos) e seguir processando os demais.
Ver na aula →
Coordenadas (linha, coluna)
Os dois índices que localizam uma célula da matriz: primeiro a linha, depois a coluna. Como a posição de uma cadeira no cinema (fila e número) ou de uma peça no tabuleiro. matriz[1][2] lê a célula da linha 1, coluna 2.
Ver na aula →
Crescimento constante
Quando o custo não muda com o tamanho dos dados: fazer a operação em uma lista de dez ou de dez milhões custa o mesmo. Exemplo: acessar um item de lista pela posição, ou buscar num dicionário pela chave.
Ver na aula →
Crescimento do esforço
Como o número de passos de um algoritmo aumenta conforme os dados crescem. Na busca linear, dobrar os dados dobra o esforço (crescimento em linha reta). Na binária, dobrar os dados adiciona só um passo (crescimento muito suave).
Ver na aula →
Crescimento linear e quadrático
Linear: o custo acompanha o tamanho, dobrar os dados dobra o custo (ex.: busca linear). Quadrático: o custo cresce com o quadrado, dobrar os dados quadruplica o custo (ex.: dois laços aninhados, ordenação da bolha).
Ver na aula →
Custo do algoritmo
A quantidade de trabalho (comparações, trocas) que um algoritmo faz, geralmente em função do tamanho dos dados. Bolha, seleção e inserção têm custo que cresce com o quadrado do tamanho, o que os torna lentos para listas grandes.
Ver na aula →
Custo multiplicado
O total de execuções de laços aninhados é o produto das voltas de cada um: um externo de N voltas com um interno de M voltas executa N vezes M. Dobrar o tamanho dos dados pode quadruplicar o trabalho, o que torna o aninhamento profundo caro.
Ver na aula →
Da lógica para a linguagem
O passo de traduzir um algoritmo em pseudocódigo para uma linguagem de programação real (como Python). A lógica se transfere direto; muda a sintaxe, os detalhes de escrita. Quem domina a lógica aprende a sintaxe rápido.
Ver na aula →
Dado não confiável
Qualquer dado que vem de fora do programa e que você não controla: o que o usuário digita, o conteúdo de um arquivo, uma resposta da internet. A regra de segurança é tratar todo dado externo como não confiável até ele passar pela validação.
Ver na aula →
Dados ordenados
Uma coleção cujos itens estão dispostos numa ordem definida (crescente, alfabética). A ordem carrega uma informação valiosa: ao comparar com um item do meio, você sabe de que lado o alvo pode estar, e pode descartar o outro.
Ver na aula →
Decisão aninhada
Uma decisão que fica DENTRO do bloco de outra decisão, executada só quando a condição externa já foi verdadeira. Serve para condições que só fazem sentido em sequência: primeiro confirmar que o usuário existe, depois testar a senha.
Ver na aula →
Decomposição
Quebrar um problema grande em subproblemas menores e mais fáceis, resolver cada um separadamente e combinar as soluções. É a estratégia central para atacar qualquer tarefa complexa, em programação ou fora dela.
Ver na aula →
Deduplicar
Remover itens repetidos de uma coleção, deixando cada valor uma vez só. O jeito mais simples é jogar a coleção num conjunto, cuja unicidade descarta as repetições automaticamente.
Ver na aula →
Descartar um pedaço
Eliminar de vez uma parte da busca por ter certeza de que o alvo não está ali. Só é possível com dados ordenados: se você abre a lista no meio e o alvo é menor, a metade de cima inteira pode ser ignorada com segurança.
Ver na aula →
Diagonal principal
As células de uma matriz quadrada em que a linha é igual à coluna: [0][0], [1][1], [2][2] e assim por diante. Percorrê-la exige um laço só, porque um único índice serve para linha e coluna ao mesmo tempo.
Ver na aula →
Dicionário
Estrutura que guarda pares de chave e valor. A chave é a etiqueta pela qual você busca (o nome do contato); o valor é a informação guardada (o telefone). Também chamado de mapa, tabela de associação ou objeto, conforme a linguagem.
Ver na aula →
DRY (não se repita)
Do inglês Don't Repeat Yourself. Princípio que diz para não duplicar o mesmo trecho de lógica pelo código: em vez disso, escreva-o uma vez numa função e chame-a onde precisar. Assim, uma correção acontece num lugar só e vale para todos os usos.
Ver na aula →
Efeito colateral
Qualquer coisa que a função faz além de calcular e retornar: mudar uma variável de fora, imprimir na tela, salvar um arquivo, alterar uma lista recebida. Efeitos são necessários (um programa precisa mostrar coisas), mas tornam a função menos previsível.
Ver na aula →
Eficiência
O quanto de trabalho um algoritmo faz para resolver um problema. Um algoritmo eficiente faz poucas operações; um ineficiente faz muitas para o mesmo resultado. Medir eficiência é a base para escolher entre algoritmos que fazem a mesma coisa.
Ver na aula →
Erro de execução
Erro que acontece enquanto o programa roda, interrompendo-o no meio. O código estava bem escrito, mas topou com uma situação que não sabe tratar: dividir por zero, acessar uma posição que não existe, abrir um arquivo ausente. Também chamado de erro em tempo de execução.
Ver na aula →
Erro de sintaxe
Erro na forma de escrever o código que impede o programa de rodar, como uma frase gramaticalmente quebrada. Um parêntese não fechado, uma palavra digitada errada. O computador recusa a executar até você corrigir. É o erro mais fácil, porque aparece antes de rodar.
Ver na aula →
Escada senão-se
Sequência de condições encadeadas (se ... senão se ... senão se ... senão) testadas de cima para baixo. A primeira que der verdadeiro executa seu bloco e encerra a escada; as demais nem são avaliadas. Nas linguagens reais aparece como elif (Python) ou else if.
Ver na aula →
Escolha-caso
Estrutura que compara uma variável com uma lista de valores fixos e executa o bloco do caso que bater. Ideal quando a decisão é sobre valores exatos e conhecidos (opção 1, 2 ou 3 de um menu). Nas linguagens reais aparece como switch/case ou match/case.
Ver na aula →
Escopo do projeto
O que o programa vai fazer e, tão importante quanto, o que ele NÃO vai fazer. Definir o escopo cedo evita um projeto que cresce sem controle. No gerenciador, o escopo são as operações essenciais: adicionar, listar, concluir e buscar tarefas.
Ver na aula →
Escopo local
A região onde uma variável existe e pode ser usada. Variáveis criadas dentro de uma função têm escopo local: só existem ali dentro, nascem quando a função é chamada e somem quando ela termina. Fora da função, ninguém as enxerga.
Ver na aula →
Esqueleto do programa
A estrutura inicial do projeto escrita como uma lista de funções ainda vazias ou resumidas, mostrando as partes e como elas se encaixam, antes de preencher os detalhes. É o resultado de planejar e decompor de cima para baixo.
Ver na aula →
Estouro de pilha
O erro que acontece quando a pilha de chamadas enche além do limite, quase sempre por recursão infinita (chamadas que nunca terminam e nunca desempilham). Em inglês, stack overflow. É o sinal típico de um caso base ausente ou inalcançável.
Ver na aula →
Estrutura de controle
Nome geral das ferramentas que quebram a sequência reta: as decisões (que escolhem caminhos) e os laços (que repetem blocos). Sequência, decisão e repetição juntas dão conta de descrever qualquer algoritmo.
Ver na aula →
Estrutura de dados
Um jeito organizado de guardar vários dados juntos para que o programa consiga achá-los e manipulá-los com facilidade. Lista, matriz, dicionário e conjunto são estruturas de dados: cada uma serve melhor para um tipo de problema.
Ver na aula →
Exceção
Um erro de execução sinalizado pelo programa quando topa com uma situação que não consegue tratar (dividir por zero, arquivo ausente). A exceção interrompe o fluxo normal; se ninguém a captura, o programa quebra. Se capturada, dá para tratar e seguir.
Ver na aula →
Faixa
Um intervalo de valores que leva ao mesmo resultado (nota de 9 a 10 vira conceito A; de 7 a 8,9 vira B). A escada senão-se é a ferramenta natural para tratar faixas, uma por degrau.
Ver na aula →
Filtrar
Selecionar, dentro de uma coleção, só os itens que atendem a um critério, ignorando o resto. O continuar é uma forma de filtrar durante o laço: quando o item não serve, pula-se para o próximo.
Ver na aula →
Filtrar por estado
Percorrer a coleção mostrando ou selecionando apenas os itens que atendem a um critério (por exemplo, só as tarefas pendentes). Usa um laço com uma decisão dentro: para cada item, testa a condição e age só se ela for verdadeira.
Ver na aula →
Fixar uma dimensão
Escolher uma linha (ou uma coluna) e percorrer só a outra dimensão com um único laço. Para somar a linha 2, fixa-se a linha em 2 e varia-se a coluna. Para somar uma coluna, fixa-se a coluna e varia-se a linha.
Ver na aula →
Função pequena (uma responsabilidade)
Uma função que faz uma única coisa bem definida e cabe facilmente na cabeça de quem lê. Se você precisa da palavra e para descrever o que ela faz, provavelmente são duas funções. Funções pequenas são fáceis de entender, testar e reaproveitar.
Ver na aula →
Função pura
Função que calcula seu resultado apenas a partir dos argumentos que recebe e o devolve por retorno, sem alterar nada fora dela e sem depender de nada externo. Chamada com os mesmos argumentos, dá sempre o mesmo resultado. É previsível e fácil de testar.
Ver na aula →
Gargalo
O trecho do programa que concentra o custo e limita o desempenho do todo, como o ponto estreito de uma garrafa. Otimizar o gargalo traz ganho real; otimizar o resto costuma ser esforço desperdiçado.
Ver na aula →
Imprimir
Mostrar algo na tela para a pessoa ver (o comando escreva). Não devolve nada ao programa: depois de imprimir, o valor não fica disponível para outras contas. Imprimir é comunicação com o usuário; retornar é comunicação com o resto do programa.
Ver na aula →
Indentação
O recuo (espaços à esquerda) que mostra qual bloco pertence a qual estrutura. No aninhamento, cada nível mais interno recua mais. A indentação é a bússola visual que evita você se perder em qual SE está dentro de qual.
Ver na aula →
Integração das partes
O momento em que as funções desenvolvidas separadamente são encaixadas no esqueleto para formar o programa completo e funcional. Testar cada parte antes torna a integração tranquila: se cada peça funciona, o todo tende a funcionar.
Ver na aula →
Interromper (break)
Comando que encerra o laço na hora, mesmo no meio de uma volta, e faz o programa seguir para depois do fim do laço. Útil para sair assim que a busca teve sucesso, sem varrer o resto. Nas linguagens reais é o break.
Ver na aula →
Interseção e diferença
Interseção é o que está nos dois conjuntos ao mesmo tempo (quem gosta de café E de chá). Diferença é o que está num conjunto mas não no outro (quem gosta de café mas não de chá). Juntas com a união, são as três operações clássicas de conjunto.
Ver na aula →
Isolamento
A propriedade de a função não interferir no que está fora dela por acidente. Como suas variáveis são locais, uma função pode trabalhar sem medo de bagunçar variáveis de outras partes do programa, o que torna o código mais previsível e fácil de manter.
Ver na aula →
Laço controlado por sentinela
Padrão de repetição em que o laço não sabe de antemão quantas voltas dará; ele repete até receber a sentinela. Comum na leitura de entradas do usuário, cuja quantidade é imprevisível.
Ver na aula →
Laços aninhados
Um laço colocado dentro do corpo de outro. Para cada volta do laço externo, o laço interno executa todas as suas voltas. É o padrão natural para percorrer tabelas (linha por linha, coluna por coluna) e comparar todos os pares de uma coleção.
Ver na aula →
Legibilidade
A facilidade com que uma pessoa entende um código ao lê-lo. É uma qualidade central, porque código é lido muito mais vezes do que é escrito. Bons nomes são o maior fator isolado de legibilidade.
Ver na aula →
Lista de dicionários
Uma estrutura em que cada item da lista é um dicionário com campos nomeados. Representa uma tabela de registros: a lista guarda a ordem das linhas, e cada dicionário guarda os campos (colunas) de uma linha. É o formato mais comum para dados do mundo real.
Ver na aula →
Lista de permissão e de bloqueio
Dois usos clássicos do conjunto. A lista de permissão guarda o que é aceito (só estes e-mails podem entrar); a de bloqueio guarda o que é barrado (estes números estão banidos). Em ambas, a operação é o teste de pertencimento.
Ver na aula →
Matriz
Estrutura que guarda dados em duas dimensões, linhas e colunas, como uma tabela. Pode ser vista como uma lista em que cada item é, por sua vez, uma lista (a linha). Também chamada de vetor bidimensional ou array 2D.
Ver na aula →
Meio da faixa
O item central da parte da lista ainda sob análise. A busca binária mantém uma faixa (início e fim) que vai encolhendo; a cada passo, examina o meio dessa faixa e move o início ou o fim para descartar metade.
Ver na aula →
Método dos quatro passos
Roteiro para atacar um problema: entender (o que se pede, quais são as entradas e saídas), planejar (o passo a passo, em português mesmo), executar (traduzir o plano em pseudocódigo ou código) e revisar (testar com exemplos e conferir os extremos). Inspirado no método clássico de resolução de problemas de George Pólya.
Ver na aula →
Nome descritivo
Um nome de variável ou função que diz claramente o que ela representa ou faz, sem precisar de explicação extra. precoTotal, calcularMedia e clientesAtivos são descritivos; x, temp e func1 não são.
Ver na aula →
Notação Big-O
Um vocabulário curto e universal para a forma como o custo de um algoritmo cresce com o tamanho dos dados. Escreve-se O seguido de uma expressão do tamanho n: O(1), O(n), O(n ao quadrado), O(log n). O n representa o tamanho da entrada.
Ver na aula →
Número de linhas e de colunas
As duas dimensões que os laços precisam conhecer: quantas linhas a matriz tem (controla o laço externo) e quantas colunas cada linha tem (controla o laço interno). São os limites que evitam sair da grade.
Ver na aula →
O n do Big-O
A letra n na notação Big-O representa o tamanho dos dados de entrada (quantos itens na lista, quantos caracteres no texto). O Big-O descreve o custo em função desse n, mostrando como ele cresce quando n aumenta.
Ver na aula →
Ordenação
Colocar os itens de uma coleção numa ordem definida (crescente, alfabética, por data). É uma das operações mais comuns e estudadas da computação, porque a ordem habilita buscas rápidas e muitas outras tarefas.
Ver na aula →
Ordenação da bolha
Método de ordenação que percorre a lista comparando pares de itens vizinhos e trocando os que estão fora de ordem. Repete as passadas até nenhuma troca ser necessária. A cada passada, o maior valor restante sobe até sua posição final.
Ver na aula →
Ordenação estável
Uma ordenação que preserva a ordem original entre itens que têm o mesmo valor de ordenação. Se dois itens empatam na chave, o que vinha antes continua antes. Importa muito ao ordenar por um critério depois de já ter ordenado por outro.
Ver na aula →
Ordenação por inserção
Método que percorre a lista pegando um item de cada vez e o insere na posição certa entre os itens já ordenados à esquerda, empurrando os maiores para o lado. É o mesmo gesto de arrumar cartas na mão. Rápida quando a lista já está quase ordenada.
Ver na aula →
Ordenação por seleção
Método que, a cada passo, encontra o menor valor da parte ainda não ordenada e o coloca na primeira posição livre. Repete, avançando a fronteira do ordenado, até a lista inteira estar em ordem. Poucas trocas, muitas comparações.
Ver na aula →
Otimização prematura
O erro de gastar esforço deixando o código mais rápido antes de saber se aquilo importa, muitas vezes sacrificando a clareza. A recomendação clássica é escrever primeiro um código correto e legível, e só otimizar os trechos que comprovadamente são lentos e frequentes.
Ver na aula →
Padronizar a caixa
Converter um texto inteiro para maiúsculas ou para minúsculas antes de comparar, para que diferenças de caixa (Maria contra maria) não atrapalhem. É a solução clássica para comparações de texto justas.
Ver na aula →
Parâmetro
O nome que a função dá a cada dado que espera receber, escrito na definição dela. Em função desconto(preco, taxa), preco e taxa são parâmetros: espaços reservados que ganham valor quando a função é chamada.
Ver na aula →
Percorrer a string
Visitar cada caractere de um texto, um a um, com um laço, do primeiro ao último. A cada volta, o laço olha para um caractere e decide o que fazer com ele: contar, comparar, transformar.
Ver na aula →
Perda de ordem
O efeito colateral de converter uma lista em conjunto: como o conjunto não guarda ordem, a sequência original se perde. Quando a ordem importa, é preciso reconstruí-la ou usar outra técnica de deduplicação.
Ver na aula →
Pilha de chamadas
A estrutura onde o computador anota as funções que começaram mas ainda não terminaram. Cada chamada nova é empilhada por cima; ao terminar, é desempilhada, e o controle volta para a chamada de baixo. Funciona como uma pilha de pratos: o último a entrar é o primeiro a sair.
Ver na aula →
Pior caso
A situação mais desfavorável para um algoritmo. Na busca linear, é quando o item procurado está no fim ou não existe: aí é preciso examinar todos os itens. O pior caso mede o esforço máximo, importante para saber o limite de lentidão.
Ver na aula →
Pixel
O menor ponto de uma imagem digital. A tela é uma grade de pixels, e a imagem é uma matriz em que cada célula guarda a cor de um pixel. Ampliar muito uma foto revela essa grade de quadradinhos.
Ver na aula →
Programação defensiva
A postura de escrever o código antecipando o que pode dar errado, protegendo-o contra entradas ruins, casos de borda e o inesperado, em vez de supor que tudo virá perfeito. Torna o programa robusto e confiável, mesmo diante do imprevisto.
Ver na aula →
Pseudocódigo
Português estruturado que descreve um algoritmo sem as regras rígidas de uma linguagem. Usa palavras como se, senão, enquanto, para cada e a seta <- para guardar valores. É o idioma deste curso, escolhido para o foco ficar no raciocínio.
Ver na aula →
Recuperação ativa
Técnica de estudo em que você se testa em vez de só reler. Tentar responder de cabeça, como nos checkpoints e jogos das aulas, fixa muito mais do que passar os olhos pelo texto de novo. É por isso que este curso enche as aulas de perguntas.
Ver na aula →
Recursão
Técnica em que uma função resolve um problema chamando a si mesma para uma versão menor do mesmo problema, até chegar num caso tão simples que a resposta é direta. Uma forma especial de dividir para conquistar.
Ver na aula →
Refatorar
Melhorar a estrutura interna de um código que já funciona (nomes, organização, remoção de duplicação) sem mudar o que ele faz por fora. O comportamento observável fica igual; só a qualidade interna melhora. É uma faxina que não altera o resultado.
Ver na aula →
Registro
Um conjunto de informações relacionadas que descrevem uma única coisa, guardadas juntas. No gerenciador, cada tarefa é um registro com os campos descrição e estado. Um dicionário é a forma natural de guardar um registro.
Ver na aula →
Retornar
Devolver um valor de dentro da função para quem a chamou, para que o programa continue trabalhando com esse resultado. O valor retornado pode ser guardado numa variável, comparado, somado, passado a outra função. É a saída de verdade da função.
Ver na aula →
Sair cedo
A ideia de encerrar o trabalho assim que o objetivo foi atingido, em vez de completar todas as voltas por inércia. Economiza esforço e deixa a intenção clara: achei, então acabou.
Ver na aula →
Sentinela
Um valor especial e combinado que, ao aparecer, sinaliza o fim de uma repetição (digite 0 para encerrar, escolha sair no menu). O laço repete até topar com a sentinela. Ela não é um dado a processar, e sim um sinal de parada.
Ver na aula →
Sequência
O primeiro pilar: executar instruções em ordem, uma depois da outra, de cima para baixo. A maior parte de qualquer programa é sequência pura, e a ordem importa: trocar duas linhas de lugar pode mudar o resultado.
Ver na aula →
String
O nome técnico de um texto num programa: uma sequência de caracteres (letras, números, espaços, símbolos) em ordem. A palavra vem do inglês e significa cordão, a imagem de contas enfileiradas num barbante.
Ver na aula →
Sub-rotina
Uma função que resolve um subproblema específico dentro de um problema maior. Nome clássico para uma função vista como uma peça de um todo: cada sub-rotina faz uma parte, e o programa principal as combina.
Ver na aula →
Tabela de decisão
Uma grade que lista todas as combinações possíveis de um conjunto de condições e a ação correspondente a cada combinação. Serve para não esquecer nenhum caso quando há várias condições que se cruzam.
Ver na aula →
Tentar e capturar (try/catch)
Estrutura que marca um trecho arriscado (o tentar) e define o que fazer se ele der erro (o capturar). Se uma exceção acontece dentro do tentar, o programa pula para o capturar em vez de quebrar, permitindo tratar o problema com uma mensagem ou uma alternativa.
Ver na aula →
Teste de pertencimento
A verificação central do conjunto: perguntar se um item está presente. Responde apenas sim ou não, e de forma rápida, sem examinar os outros elementos, do mesmo jeito que o dicionário busca pela chave.
Ver na aula →
Tratar a primeira ocorrência
O cuidado de iniciar a contagem de um item quando ele aparece pela primeira vez, antes de somar. Como a chave ainda não existe, define-se a contagem em um (ou zero e depois soma), evitando somar num valor inexistente.
Ver na aula →
Troca (swap)
A operação de inverter os valores de duas posições. Exige um cuidado: guardar um valor num auxiliar antes de sobrescrevê-lo, senão um dos dois se perde. É a peça central de vários algoritmos de ordenação.
Ver na aula →
União
Operação que junta dois conjuntos num só, contendo tudo que está em pelo menos um deles, sem repetir. A união de quem gosta de café com quem gosta de chá é todo mundo que gosta de pelo menos uma das duas bebidas.
Ver na aula →
Unicidade
A propriedade do conjunto de não guardar duplicados: cada item aparece uma vez só. Tentar adicionar um valor que já pertence é ignorado, o que faz o conjunto eliminar repetições automaticamente.
Ver na aula →
Validação de entrada
Conferir se os dados que chegam ao programa (do usuário, de um arquivo, da rede) atendem às regras esperadas antes de usá-los. Barra dados vazios, fora de faixa, com formato errado ou maliciosos, na porta do programa, evitando erros e abusos lá dentro.
Ver na aula →
Validação de formato
Conferir se um texto segue as regras esperadas antes de aceitá-lo: o e-mail tem arroba e ponto, o CEP tem oito dígitos, a senha tem tamanho mínimo. É uma barreira de qualidade e segurança na entrada de dados.
Ver na aula →
Validação de operação
Conferir, antes de executar uma operação, se ela faz sentido: a tarefa que se quer concluir existe? o número informado está na faixa da lista? Cláusulas de guarda tratam o caso inválido com uma mensagem clara, evitando erros de execução.
Ver na aula →
Varredura da matriz
Percorrer todas as células de uma matriz, uma a uma, em geral com dois laços aninhados. A ordem clássica é da esquerda para a direita, de cima para baixo: linha por linha, e dentro de cada linha, coluna por coluna.
Ver na aula →