O código abaixo usa a pseudocódigo AP CSP – a referência neutra em linguagem do exame. A atribuição é escrita a ← expression, e os índices da lista começam em 1.
Algoritmos e Programação
Princípios de Ciência da Computação do AP · Tópico 3
9:17
Algoritmos e Programação
Imagine um telefone com um milhão de nomes, e você precisa encontrar um. Verifique-os um por um, e poderia passar o dia todo. Há uma maneira de encontrá-lo em cerca de…
Narração em inglês · Legendas em inglês + 中文 gravadas
3.1
Variáveis e Atribuições
Programa
Compreensão Duradoura (AAP-1): Para encontrar soluções específicas para problemas generalizáveis, programadores representam e organizam dados de múltiplas formas.
Objetivo de Aprendizagem AAP-1.A: Representar um valor com uma variável. [Habilidade 3.A]
- AAP-1.A.1 Uma variável é uma abstração dentro de um programa que pode armazenar um valor. Cada variável possui armazenamento de dados associado que representa um único valor por vez, mas esse valor pode ser uma lista ou outra coleção que, por sua vez, contém múltiplos valores.
- AAP-1.A.2 O uso de nomes significativos para variáveis ajuda na legibilidade do código do programa e na compreensão dos valores representados pelas variáveis.
- AAP-1.A.3 Alguns linguagens de programação fornecem tipos para representar dados, que são referenciados usando variáveis. Esses tipos incluem números, Booleanos, listas e strings.
- AAP-1.A.4 Alguns valores são mais adequados para representação usando um tipo de dado em vez de outro.
Objetivo de Aprendizagem AAP-1.B: Determinar o valor de uma variável como resultado de uma atribuição. [Habilidade 4.B]
-
AAP-1.B.1 O operador de atribuição permite que um programa altere o valor representado por uma variável.
-
AAP-1.B.2 A folha de referência do exame fornece o operador "$\leftarrow$" para uso em atribuições. Por exemplo,
Texto:
a ← expressionBloco:
a ← expressionavalia
expressione, em seguida, atribui uma cópia do resultado à variávela. -
AAP-1.B.3 O valor armazenado em uma variável será o último valor atribuído. Por exemplo:
a ← 1b ← aa ← 2display(b)ainda exibe
1.
Fonte: College Board AP Course and Exam Description
Uma variável 变量 é um lugar nomeado que segura um valor. O operador de atribuição 赋值 armazena o valor à direita na variável à esquerda:

a ← 5
b ← a + 3 // b is now 8
Uma variável segura um valor de cada vez; atribuir novamente substitui o anterior. Variáveis permitem que um programa armazene entrada, lembre resultados e os reutilize.
Observe uma variável manter e alterar seu valor
Uma variável é uma caixa nomeada que armazena um valor de cada vez. Uma atribuição copia um valor para a caixa; atribuir novamente sobrescreve qualquer coisa que estava lá.
| Inglês | Chinês | Pinyin |
|---|---|---|
| variable/ˈveərɪəbl/ | 变量 | biàn liàng |
| assignment/əˈsaɪnmənt/ | 赋值 | fù zhí |
| Data abstraction/ˈdeɪtə əbˈstrækʃn/ | 数据抽象 | shù jù chōu xiàng |
| remainder/rɪˈmeɪndə/ | 余数 | yú shù |
3.2
Abstração de Dados
Programa
Compreensão Duradoura (AAP-1): Para encontrar soluções específicas para problemas generalizáveis, programadores representam e organizam dados de múltiplas formas.
Objetivo de Aprendizagem AAP-1.C: Representar uma lista ou string usando uma variável. [Habilidade 3.A]
-
AAP-1.C.1 Uma lista é uma sequência ordenada de elementos. Por exemplo,
[value1, value2, value3, ...]descreve uma lista onde
value1é o primeiro elemento,value2é o segundo elemento,value3é o terceiro elemento, e assim por diante. -
AAP-1.C.2 Um elemento é um valor individual em uma lista que recebe um índice único.
-
AAP-1.C.3 Um índice é um método comum para referenciar os elementos em uma lista ou string usando números naturais.
-
AAP-1.C.4 Uma string é uma sequência ordenada de caracteres.
Objetivo de Aprendizagem AAP-1.D: Para abstração de dados: a. Desenvolva abstração de dados usando listas para armazenar múltiplos elementos. [Habilidade 3.B] b. Explique como o uso de abstração de dados gerencia a complexidade no código do programa. [Habilidade 3.C]
-
AAP-1.D.1 Abstração de dados fornece uma separação entre as propriedades abstratas de um tipo de dado e os detalhes concretos de sua representação.
-
AAP-1.D.2 Abstrações de dados gerenciam a complexidade em programas ao dar um nome a um conjunto de dados sem referenciar os detalhes específicos da representação.
-
AAP-1.D.3 Abstrações de dados podem ser criadas usando listas.
-
AAP-1.D.4 Desenvolver uma abstração de dados para implementar em um programa pode resultar em um programa mais fácil de desenvolver e manter.
-
AAP-1.D.5 Abstrações de dados frequentemente contêm diferentes tipos de elementos.
-
AAP-1.D.6 O uso de listas permite que múltiplos itens relacionados sejam tratados como um único valor. Listas são referidas por diferentes nomes, como array, dependendo da linguagem de programação.
- Declaração de exclusão (EK AAP-1.D.6): O uso de listas encadeadas está fora do escopo deste curso e do Exame AP.
-
AAP-1.D.7 A folha de referência do exame fornece a notação
[value1, value2, value3, ...]para criar uma lista com esses valores como o primeiro, segundo, terceiro e assim por diante itens. Por exemplo,
-
Texto:
aList ← [value1, value2, value3, ...]Bloco:
aList ← value1, value2, value3cria uma nova lista que contém os valores
value1,value2,value3e...nos índices1,2,3e...respectivamente e a atribui aaList. -
Texto:
aList ← []Bloco:
aList ←(vazio)cria uma nova lista vazia e a atribui a
aList. -
Texto:
aList ← bListBloco:
aList ← bListatribui uma cópia da lista
bListà listaaList. Por exemplo, sebListcontiver[20, 40, 60], entãoaListtambém conterá[20, 40, 60]após a atribuição.
-
-
AAP-1.D.8 A folha de referência do exame descreve uma estrutura de lista cujos valores de índice são de 1 até o número de elementos na lista, inclusive. Para todas as operações de lista, se um índice de lista for menor que 1 ou maior que o comprimento da lista, uma mensagem de erro é produzida e o programa será encerrado.
Fonte: College Board AP Course and Exam Description
Abstração de dados 数据抽象 permite gerenciar complexidade dando um único nome a uma coleção de dados – por exemplo, uma lista em vez de dezenas de variáveis separadas. Ela esconde detalhes: você usa a coleção nomeada sem se preocupar com como ela é armazenada. Listas (abaixo) são a principal abstração de dados do curso.
3.3
Expressões Matemáticas
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.A: Expressar um algoritmo que usa sequenciamento sem usar uma linguagem de programação. [Habilidade 2.A]
- AAP-2.A.1 Um algoritmo é um conjunto finito de instruções que realizam uma tarefa específica.
- AAP-2.A.2 Além de linguagens de programação visuais e textuais, algoritmos podem ser expressos de várias maneiras, como linguagem natural, diagramas e pseudocódigo.
- AAP-2.A.3 Algoritmos executados por programas são implementados usando linguagens de programação.
- AAP-2.A.4 Todo algoritmo pode ser construído usando combinações de sequenciamento, seleção e iteração.
Objetivo de Aprendizagem AAP-2.B: Representar um processo algorítmico passo a passo usando declarações de código sequenciais. [Habilidade 2.B]
- AAP-2.B.1 Sequenciamento é a aplicação de cada etapa de um algoritmo na ordem em que as declarações de código são apresentadas.
- AAP-2.B.2 Uma declaração de código é uma parte do código do programa que expressa uma ação a ser realizada.
- AAP-2.B.3 Uma expressão pode consistir em um valor, uma variável, um operador ou uma chamada de procedimento que retorna um valor.
- AAP-2.B.4 Expressões são avaliadas para produzir um único valor.
- AAP-2.B.5 A avaliação de expressões segue uma ordem de operações definida pela linguagem de programação.
- AAP-2.B.6 Declarações sequenciais executam na ordem em que aparecem no segmento de código.
- AAP-2.B.7 Claridade e legibilidade são considerações importantes ao expressar um algoritmo em uma linguagem de programação.
Objetivo de Aprendizagem AAP-2.C: Avaliar expressões que usam operadores aritméticos. [Habilidade 4.B]
-
AAP-2.C.1 Operadores aritméticos fazem parte da maioria das linguagens de programação e incluem adição, subtração, multiplicação, divisão e operador módulo.
-
AAP-2.C.2 A folha de referência do exame fornece
a MOD b, que avalia o resto quandoaé dividido porb. Suponha queaseja um número inteiro maior ou igual a0ebseja um número inteiro maior que0. Por exemplo,17 MOD 5avalia para2. -
AAP-2.C.3 A folha de referência do exame fornece os operadores aritméticos
+,-,*,/eMOD.Texto e Bloco:
a + ba - ba * ba / ba MOD b
Eles são usados para realizar operações aritméticas em
aeb. Por exemplo,17 / 5avalia para3.4. -
AAP-2.C.4 A ordem de operações usada em matemática se aplica ao avaliar expressões. O operador
MODtem a mesma precedência que os operadores*e/.
Fonte: College Board AP Course and Exam Description
Programas calculam com os operadores +, -, *, / e MOD (o resto 余数 de uma divisão, ex: 17 MOD 5 é 2). As expressões seguem a ordem usual de operações. MOD é especialmente útil para testar divisibilidade (n MOD 2 = 0 significa n é par) e para envolver valores em torno de uma faixa.
Avaliar uma expressão passo a passo
Uma expressão é avaliada com a ordem de operações: multiplicação e divisão ocorrem antes de adição e subtração, da esquerda para a direita.
3.4
Strings
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.D: Avaliar expressões que manipulam strings. [Habilidade 4.B]
- AAP-2.D.1 Concatenação de string junta duas ou mais strings extremidade com extremidade para formar uma nova string.
- AAP-2.D.2 Uma substring é uma parte de uma string existente.
Fonte: College Board AP Course and Exam Description
Uma string 字符串 é uma sequência ordenada de caracteres, como "hello". Programas unem strings (concatenação 拼接) e encontram seu comprimento. Strings representam texto – nomes, mensagens, sequências – e são uma entrada e saída comum de programas.
| Inglês | Chinês | Pinyin |
|---|---|---|
| string/strɪŋ/ | 字符串 | zì fú chuàn |
| concatenation/kənˌkætəˈneɪʃn/ | 拼接 | pīn jiē |
| Boolean expression/ˈbuːlɪən ekˈspreʃn/ | 布尔表达式 | bù ěr biǎo dá shì |
| conditional (selection)/kənˈdɪʃənl/ | 条件语句 | tiáo jiàn yǔ jù |
| nested conditional/ˈnestɪd kənˈdɪʃənl/ | 嵌套条件 | qiàn tào tiáo jiàn |
| Iteration (a loop)/ˌɪtəˈreɪʃn/ | 迭代 | dié dài |
| infinite loop/ˈɪnfɪnət luːp/ | 无限循环 | wú xiàn xún huán |
| algorithm/ˈælɡərɪθəm/ | 算法 | suàn fǎ |
3.5
Expressões Booleanas
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.E: Para relações entre duas variáveis, expressões ou valores: a. Escrever expressões usando operadores relacionais. [Habilidade 2.B] b. Avaliar expressões que usam operadores relacionais. [Habilidade 4.B]
-
AAP-2.E.1 Um valor booleano é verdadeiro ou falso.
-
AAP-2.E.2 A folha de referência do exame fornece os seguintes operadores relacionais:
=,≠,>,<,≥e≤.Texto e Bloco:
a = ba ≠ ba > ba < ba ≥ ba ≤ b
Eles são usados para testar a relação entre duas variáveis, expressões ou valores. Uma comparação usando um operador relacional avalia para um valor booleano. Por exemplo,
a = bavalia paratrueseaebforem iguais; caso contrário, avalia parafalse.
Objetivo de Aprendizagem AAP-2.F: Para relações entre valores booleanos: a. Escrever expressões usando operadores lógicos. [Habilidade 2.B] b. Avaliar expressões que usam operadores lógicos. [Habilidade 4.B]
-
AAP-2.F.1 A folha de referência do exame fornece os operadores lógicos
NOT,ANDeOR, que avaliam para um valor booleano. -
AAP-2.F.2 A folha de referência do exame fornece
Texto:
NOT conditionBloco:
NOT conditionque avalia para
trueseconditionforfalse; caso contrário, avalia parafalse. -
AAP-2.F.3 A folha de referência do exame fornece
Texto:
condition1 AND condition2Bloco:
condition1 AND condition2que avalia para
truese ambascondition1econdition2foremtrue; caso contrário, avalia parafalse. -
AAP-2.F.4 A folha de referência do exame fornece
Texto:
condition1 OR condition2Bloco:
condition1 OR condition2que avalia para
truesecondition1fortrueou secondition2fortrueou se ambascondition1econdition2foremtrue; caso contrário, avalia parafalse. -
AAP-2.F.5 O operando para um operador lógico é uma expressão booleana ou um único valor booleano.
Fonte: College Board AP Course and Exam Description
Uma expressão booleana 布尔表达式 avalia para true ou false. Ela usa operadores relacionais (=, ≠, <, >, ≤, ≥) e operadores lógicos NOT, AND, OR:
*As três famílias de operadores: aritméticos, relacionais e lógicos
NOTinverte um valor,ANDé verdadeiro apenas quando ambos os lados são verdadeiros,ORé verdadeiro quando pelo menos um lado é verdadeiro.
Essas condições movem toda decisão e loop.
Tente a tabela verdade do OR
Uma expressão Booleana é verdadeira (1) ou falsa (0). OR é verdadeiro quando pelo menos um dos inputs é verdadeiro; altere os inputs para ver todos os casos.
3.6
Condicionais
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.G: Expressar um algoritmo que usa seleção sem usar uma linguagem de programação. [Habilidade 2.A]
- AAP-2.G.1 Seleção determina quais partes de um algoritmo são executadas com base em uma condição ser
trueoufalse.
Objetivo de Aprendizagem AAP-2.H: Para seleção: a. Escrever instruções condicionais. [Habilidade 2.B] b. Determinar o resultado de instruções condicionais. [Habilidade 4.B]
-
AAP-2.H.1 Instruções condicionais, ou "instruções if", afetam o fluxo sequencial de controle executando diferentes instruções com base no valor de uma expressão booleana.
-
AAP-2.H.2 A folha de referência do exame fornece
Texto:
IF(condition){<block of statements>}Bloco:
IF conditionblock of statementsna qual o código em
block of statementsé executado se a expressão booleanaconditionavaliar paratrue; nenhuma ação é tomada seconditionavaliar parafalse. -
AAP-2.H.3 A folha de referência do exame fornece
Texto:
IF(condition){<first block of statements>}ELSE{<second block of statements>}Bloco:
IF conditionfirst block of statementsELSEsecond block of statementsna qual o código em
first block of statementsé executado se a expressão booleanaconditionavaliar paratrue; caso contrário, o código emsecond block of statementsé executado.
Fonte: College Board AP Course and Exam Description
Um condicional (seleção) escolhe qual código executar. IF executa um bloco apenas quando sua condição é verdadeira; ELSE oferece uma alternativa:

IF (score ≥ 60)
{
DISPLAY("Pass")
}
ELSE
{
DISPLAY("Fail")
}
Siga uma decisão if / else
Uma condicional executa um ramo ou outro dependendo se sua condição é verdadeira. Deslize o valor através do limite e observe qual ramo é tomado.
3.7
Condicionais Aninhadas
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.I: Para seleção aninhada: a. Escrever instruções condicionais aninhadas. [Habilidade 2.B] b. Determinar o resultado de instruções condicionais aninhadas. [Habilidade 4.B]
- AAP-2.I.1 Instruções condicionais aninhadas consistem em instruções condicionais dentro de instruções condicionais.
Fonte: College Board AP Course and Exam Description
Uma condicional aninhada 嵌套条件 coloca uma IF dentro de outra (ou encadeia ELSE IF) para escolher entre mais de dois caminhos. Apenas o primeiro ramo correspondente executa:
IF (g ≥ 90) { grade ← "A" }
ELSE IF (g ≥ 80) { grade ← "B" }
ELSE { grade ← "C" }
3.8
Iteração
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.J: Expressar um algoritmo que usa iteração sem usar uma linguagem de programação. [Habilidade 2.A]
- AAP-2.J.1 Iteração é uma parte repetitiva de um algoritmo. A iteração repete um número especificado de vezes ou até que uma condição dada seja satisfeita.
Objetivo de Aprendizagem AAP-2.K: Para iteração: a. Escrever instruções de iteração. [Habilidade 2.B] b. Determinar o resultado ou efeito colateral de instruções de iteração. [Habilidade 4.B]
-
AAP-2.K.1 Instruções de iteração alteram o fluxo sequencial de controle repetindo um conjunto de instruções zero ou mais vezes, até que uma condição de parada seja satisfeita.
-
AAP-2.K.2 A folha de referência do exame fornece
Texto:
REPEAT n TIMES{<block of statements>}Bloco:
REPEAT n TIMESblock of statementsna qual o
block of statementsé executadonvezes. -
AAP-2.K.3 A folha de referência do exame fornece
Texto:
REPEAT UNTIL(condition){<block of statements>}Bloco:
REPEAT UNTIL conditionblock of statementsna qual o código em
block of statementsé repetido até que a expressão booleanaconditionavalie paratrue. -
AAP-2.K.4 Em iteração
REPEAT UNTIL(condition), um loop infinito ocorre quando a condição final nunca avaliará paratrue. -
AAP-2.K.5 Em iteração
REPEAT UNTIL(condition), se a condicional avaliar paratrueinicialmente, o corpo do loop não é executado em todas, devido à condição ser verificada antes do loop.
Fonte: College Board AP Course and Exam Description
Iteração (um loop) 迭代 repete instruções. Pseudocódigo AP tem duas formas:

REPEAT 5 TIMES // a fixed count
{
DISPLAY("hi")
}
REPEAT UNTIL (found) // until a condition becomes true
{
...
}
Um loop que nunca atinge sua condição de parada é um loop infinito 无限循环.
Rastreie um loop uma passagem de cada vez
Um laço repete um bloco enquanto seu contador percorre um intervalo. Passe passo a passo para observar o contador e o total acumulado atualizarem a cada passagem.
3.9
Desenvolvimento de Algoritmos
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.L: Comparar vários algoritmos para determinar se eles produzem o mesmo efeito colateral ou resultado. [Habilidade 1.D]
- AAP-2.L.1 Algoritmos podem ser escritos de maneiras diferentes e ainda assim cumprir as mesmas tarefas.
- AAP-2.L.2 Algoritmos que parecem semelhantes podem produzir efeitos colaterais ou resultados diferentes.
- AAP-2.L.3 Algumas instruções condicionais podem ser escritas como expressões booleanas equivalentes.
- AAP-2.L.4 Algumas expressões booleanas podem ser escritas como instruções condicionais equivalentes.
- AAP-2.L.5 Diferentes algoritmos podem ser desenvolvidos ou usados para resolver o mesmo problema.
Objetivo de Aprendizagem AAP-2.M: Para algoritmos: a. Criar algoritmos. [Habilidade 2.A] b. Combinar e modificar algoritmos existentes. [Habilidade 2.B]
- AAP-2.M.1 Algoritmos podem ser criados a partir de uma ideia, combinando algoritmos existentes ou modificando algoritmos existentes.
- AAP-2.M.2 Conhecimento de algoritmos existentes pode ajudar na construção de novos. Alguns algoritmos existentes incluem:
- determinar o valor máximo ou mínimo de dois ou mais números
- calcular a soma ou média de dois ou mais números
- identificar se um número inteiro é ou não divisível uniformemente por outro número inteiro
- determinar o caminho de um robô através de um labirinto
- AAP-2.M.3 Usar algoritmos existentes corretos como blocos de construção para construir outro algoritmo tem benefícios como reduzir o tempo de desenvolvimento, reduzir os testes e simplificar a identificação de erros.
Fonte: College Board AP Course and Exam Description

Um algoritmo não é a mesma coisa que código. Além de linguagens de programação visuais e textuais, um algoritmo pode ser expresso de uma variedade de maneiras: em linguagem natural (frases comuns), como um diagrama tal como um fluxograma, ou em pseudocódigo. Essas formas são para pessoas – elas permitem verificar a lógica e concordar com ela antes de qualquer linguagem ser escolhida, e o mesmo algoritmo pode então ser escrito em qualquer linguagem.
Quando você realmente o escreve em uma linguagem de programação, claridade e legibilidade são considerações importantes, não decoração: nomes de variáveis significativos, indentação consistente e comentários explicando por que em vez de o quê. O programa terá de ser lido e modificado depois por alguém — muitas vezes você mesmo — e um algoritmo ninguém consegue entender não pode ser mantido ou depurado.
Um algoritmo 算法 é uma sequência finita de passos que resolve um problema, construído a partir de sequenciamento, seleção e iteração. Diferentes algoritmos podem resolver o mesmo problema, e você deve ser capaz de combinar e modificar algoritmos existentes (por exemplo, contar os valores em uma lista que atendem a uma condição, ou encontrar o maior). Rastreie um algoritmo à mão para verificar se está correto.

3.10
Listas
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.N: Para operações de lista: a. Escreva expressões que usem indexação de lista e procedimentos de lista. [Habilidade 2.B] b. Avalie expressões que usem indexação de lista e procedimentos de lista. [Habilidade 4.B]
-
AAP-2.N.1 A folha de referência do exame fornece operações básicas em listas, incluindo:
-
acessar um elemento pelo índice
Texto:
aList[i]Bloco:
aList iacessa o elemento de
aListno índicei. O primeiro elemento deaListestá no índice1e é acessado usando a notaçãoaList[1]. -
atribuir um valor de um elemento de uma lista a uma variável
Texto:
x ← aList[i]Bloco:
x ← aList iatribui o valor de
aList[i]à variávelx. -
atribuir um valor a um elemento de uma lista
Texto:
aList[i] ← xBloco:
aList i ← xatribui o valor de
xaaList[i].Texto:
aList[i] ← aList[j]Bloco:
aList i ← aList jatribui o valor de
aList[j]aaList[i]. -
inserir elementos em um índice específico
Texto:
INSERT(aList, i, value)Bloco:
INSERT aList, i, valuedesloca para a direita quaisquer valores em
aListnos índices maiores ou iguais ai. O comprimento da lista é aumentado em 1, evalueé colocado no índiceiemaList. -
adicionar elementos ao final da lista
Texto:
APPEND(aList, value)Bloco:
APPEND aList, valueaumenta o comprimento de
aListem 1, evalueé colocado no final deaList. -
remover elementos
Texto:
REMOVE(aList, i)Bloco:
REMOVE aList, iremove o item no índice
iemaListe desloca para a esquerda quaisquer valores nos índices maiores quei. O comprimento deaListé reduzido em 1. -
determinar o comprimento de uma lista
Texto:
LENGTH(aList)Bloco:
LENGTH aList
avalia para o número de elementos atualmente em
aList. -
-
AAP-2.N.2 Procedimentos de lista são implementados de acordo com as regras de sintaxe da linguagem de programação.
Objetivo de Aprendizagem AAP-2.O: Para algoritmos envolvendo elementos de uma lista: a. Escreva instruções de iteração para percorrer uma lista. [Habilidade 2.B] b. Determine o resultado de um algoritmo que inclui travessias de lista. [Habilidade 4.B]
-
AAP-2.O.1 Percorrer uma lista pode ser uma travessia completa, onde todos os elementos da lista são acessados, ou uma travessia parcial, onde apenas uma parte dos elementos é acessada.
- Declaração de exclusão (EK AAP-2.O.1): Percorrer várias listas simultaneamente usando o mesmo índice para ambas (travessias paralelas) está fora do escopo deste curso e do Exame AP.
-
AAP-2.O.2 Instruções de iteração podem ser usadas para percorrer uma lista.
-
AAP-2.O.3 A folha de referência do exame fornece
Texto:
FOR EACH item IN aList{<block of statements>}Bloco:
FOR EACH item IN aListblock of statementsA variável
itemrecebe o valor de cada elemento deaListsequencialmente, em ordem, do primeiro elemento ao último elemento. O código emblock of statementsé executado uma vez para cada atribuição deitem. -
AAP-2.O.4 O conhecimento de algoritmos existentes que usam iteração pode ajudar na construção de novos algoritmos. Alguns exemplos de algoritmos existentes frequentemente usados com listas incluem:
- determinar um valor mínimo ou máximo em uma lista
- calcular uma soma ou média de uma lista de números
-
AAP-2.O.5 Algoritmos de busca linear ou busca sequencial verificam cada elemento de uma lista, em ordem, até que o valor desejado seja encontrado ou todos os elementos da lista tenham sido verificados.
Fonte: College Board AP Course and Exam Description
Uma lista 列表 é uma coleção ordenada de valores sob um único nome, a principal abstração de dados do curso. A pseudocódigo AP indexa a partir de 1:

scores ← [88, 74, 95]
DISPLAY(scores[1]) // 88
scores[2] ← 80 // replace the 2nd value
APPEND(scores, 60) // add to the end
INSERT(scores, 1, 100) // insert at index 1
REMOVE(scores, 3) // delete the 3rd element
LENGTH(scores) // how many elements
Percorra uma lista com um laço para somar, contar, pesquisar ou encontrar um máximo:
FOR EACH x IN scores
{
total ← total + x
}
| Inglês | Chinês | Pinyin |
|---|---|---|
| list/lɪst/ | 列表 | liè biǎo |
3.11
Busca Binária
Programa
Compreensão Permanente (AAP-2): A maneira como as instruções são sequenciadas e combinadas em um programa determina o resultado computado. Os programas incorporam estruturas de iteração e seleção para representar repetições e tomar decisões para lidar com valores de entrada variados.
Objetivo de Aprendizagem AAP-2.P: Para algoritmos de busca binária: a. Determinar o número de iterações necessárias para encontrar um valor em um conjunto de dados. [Habilidade 1.D] b. Explicar os requisitos necessários para completar uma busca binária. [Habilidade 1.A]
- AAP-2.P.1 O algoritmo de busca binária começa no meio de um conjunto de dados numéricos ordenados e elimina metade dos dados; este processo se repete até que o valor desejado seja encontrado ou todos os elementos tenham sido eliminados.
- Declaração de exclusão (EK AAP-2.P.1): Implementações específicas da busca binária estão fora do escopo do curso e do Exame AP.
- AAP-2.P.2 Os dados devem estar em ordem ordenada para usar o algoritmo de busca binária.
- AAP-2.P.3 A busca binária é geralmente mais eficiente do que a busca sequencial/linear quando aplicada a dados ordenados.
Fonte: College Board AP Course and Exam Description

Busca binária 二分搜索 encontra um valor em uma lista ordenada muito mais rápido do que verificar cada elemento. Ela olha para o elemento do meio, depois descarta a metade que não pode conter o alvo, repetindo até encontrar. Cada passo reduz pela metade o espaço de busca, então uma lista de $n$ itens leva cerca de $\log_2 n$ passos. Ela requer que os dados estejam ordenados primeiro.

Exemplo resolvido. Procurando em uma lista ordenada de $8$ itens, a busca binária reduz o intervalo a cada passo: $8\rightarrow4\rightarrow2\rightarrow1$, no máximo $3$ comparações ($\log_2 8=3$), enquanto uma busca linear poderia levar até $8$. A vantagem cresce exponencialmente: cerca de $1{,}000$ itens precisam apenas de $\approx10$ passos de busca binária (mas até $1{,}000$ lineares), e $1{,}000{,}000$ itens precisam de apenas $\approx20$. Reduzir pela metade é o que torna isso um algoritmo de tempo razoável.
| Inglês | Chinês | Pinyin |
|---|---|---|
| Binary search/ˈbaɪnəri sɜːtʃ/ | 二分搜索 | èr fēn sōu suǒ |
3.12
Chamada de Procedimentos
Programa
Compreensão Permanente (AAP-3): Programadores dividem problemas em pedaços menores e mais gerenciáveis. Ao criar procedimentos e explorar parâmetros, programadores generalizam processos que podem ser reutilizados. Procedimentos permitem que programadores utilizem código existente que já foi testado, permitindo que escrevam programas mais rapidamente e com mais confiança.
Objetivo de Aprendizagem AAP-3.A: Para chamadas de procedimentos: a. Escreva instruções para chamar procedimentos. [Habilidade 3.B] b. Determine o resultado ou efeito de uma chamada de procedimento. [Habilidade 4.B]
-
AAP-3.A.1 Um procedimento é um grupo nomeado de instruções de programação que pode ter parâmetros e valores de retorno.
-
AAP-3.A.2 Procedimentos são referidos por diferentes nomes, como método ou função, dependendo da linguagem de programação.
-
AAP-3.A.3 Parâmetros são variáveis de entrada de um procedimento. Argumentos especificam os valores dos parâmetros quando um procedimento é chamado.
-
AAP-3.A.4 Uma chamada de procedimento interrompe a execução sequencial de instruções, fazendo com que o programa execute as instruções dentro do procedimento antes de continuar. Após a execução da última instrução no procedimento (ou de uma instrução de retorno), o fluxo de controle retorna ao ponto imediatamente após onde o procedimento foi chamado.
-
AAP-3.A.5 A folha de referência do exame fornece
procName(arg1, arg2, ...)como uma forma de chamar
Texto:
PROCEDURE procName(parameter1, parameter2, ...){<block of statements>}Bloco:
PROCEDURE procName parameter1, parameter2,...block of statementsque aceita zero ou mais argumentos;
arg1é atribuído aparameter1,arg2é atribuído aparameter2, e assim por diante. -
AAP-3.A.6 A folha de referência do exame fornece o procedimento
Texto:
DISPLAY(expression)Bloco:
DISPLAY expressionpara exibir o valor de
expression, seguido por um espaço. -
AAP-3.A.7 A folha de referência do exame fornece a instrução
Texto:
RETURN(expression)Bloco:
RETURN expression, que é usada para retornar o fluxo de controle ao ponto onde o procedimento foi chamado e para retornar o valor de
expression. -
AAP-3.A.8 A folha de referência do exame fornece
result ← procName(arg1, arg2, ...)para atribuir a
resulto "valor do procedimento" sendo retornado pela chamadaTexto:
PROCEDURE procName(parameter1, parameter2, ...){<block of statements>RETURN(expression)}Bloco:
PROCEDURE procName parameter1, parameter2,...block of statementsRETURN expression -
AAP-3.A.9 A folha de referência do exame fornece o procedimento
Texto:
INPUT()Bloco:
INPUTque aceita um valor do usuário e retorna o valor de entrada.
Fonte: College Board AP Course and Exam Description
Um procedimento (função) 过程 é um bloco de código nomeado e reutilizável. Chamar-o executa seu código com os argumentos que você fornece, e ele pode retornar um valor:
sum ← Add(3, 4) // call, passing 3 and 4
Procedimentos permitem que você use código sem conhecer seus detalhes internos — abstração procedural 过程抽象.
3.13
Desenvolvimento de Procedimentos
Programa
Compreensão Permanente (AAP-3): Programadores dividem problemas em pedaços menores e mais gerenciáveis. Ao criar procedimentos e explorar parâmetros, programadores generalizam processos que podem ser reutilizados. Procedimentos permitem que programadores utilizem código existente que já foi testado, permitindo que escrevam programas mais rapidamente e com mais confiança.
Objetivo de Aprendizagem AAP-3.B: Explicar como o uso de abstração procedural gerencia a complexidade em um programa. [Habilidade 3.C]
- AAP-3.B.1 Um tipo comum de abstração é a abstração procedural, que fornece um nome para um processo e permite que um procedimento seja usado sabendo apenas o que ele faz, não como ele faz isso.
- AAP-3.B.2 A abstração procedural permite que uma solução para um problema grande seja baseada nas soluções de subproblemas menores. Isso é conseguido criando procedimentos para resolver cada um dos subproblemas.
- AAP-3.B.3 A subdivisão de um programa de computador em subprogramas separados é chamada de modularidade.
- AAP-3.B.4 Uma abstração procedural pode extrair recursos compartilhados para generalizar funcionalidade em vez de duplicar código. Isso permite a reutilização de código do programa, o que ajuda a gerenciar a complexidade.
- AAP-3.B.5 O uso de parâmetros permite que procedimentos sejam generalizados, habilitando-os a serem reutilizados com uma faixa de valores de entrada ou argumentos.
- AAP-3.B.6 O uso de abstração procedural ajuda a melhorar a legibilidade do código.
- AAP-3.B.7 O uso de abstração procedural em um programa permite que programadores alterem os detalhes internos do procedimento (para torná-lo mais rápido, mais eficiente, usar menos armazenamento, etc.) sem precisar notificar os usuários da mudança, desde que o que o procedimento faz seja preservado.
Objetivo de Aprendizagem AAP-3.C: Desenvolver abstrações procedurais para gerenciar a complexidade em um programa escrevendo procedimentos. [Habilidade 3.B]
-
AAP-3.C.1 A folha de referência do exame fornece
Texto:
PROCEDURE procName(parameter1, parameter2, ...){<block of statements>}Bloco:
PROCEDURE procName parameter1, parameter2,...block of statementsque é usado para definir um procedimento que aceita zero ou mais argumentos. O procedimento contém
block of statements. -
AAP-3.C.2 A folha de referência do exame fornece
Texto:
PROCEDURE procName(parameter1, parameter2, ...){<block of statements>RETURN(expression)}Bloco:
PROCEDURE procName parameter1, parameter2,...block of statementsRETURN expressionque é usado para definir um procedimento que aceita zero ou mais argumentos. O procedimento contém
block of statementse retorna o valor deexpression. A instruçãoRETURNpode aparecer em qualquer ponto dentro do procedimento e causa um retorno imediato do procedimento de volta à instrução de chamada.
Fonte: College Board AP Course and Exam Description
Você define um procedimento com um nome, parâmetros (entradas) e um corpo, e opcionalmente RETURN um resultado:

PROCEDURE Add(a, b)
{
RETURN(a + b)
}
Escrever seus próprios procedimentos reduz a repetição, divide um grande problema em peças nomeadas e torna os programas legíveis e mais fáceis de testar — a essência da abstração 抽象.
| Inglês | Chinês | Pinyin |
|---|---|---|
| procedure (function)/prəˈsiːdʒə/ | 过程 | guò chéng |
| procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ | 过程抽象 | guò chéng chōu xiàng |
| abstraction/əbˈstrækʃn/ | 抽象 | chōu xiàng |
| library/ˈlaɪbrəri/ | 库 | kù |
| simulation/ˌsɪmjʊˈleɪʃn/ | 模拟 | mó nǐ |
| Efficiency/ɪˈfɪʃənsi/ | 效率 | xiào lǜ |
| heuristic/hjuːˈrɪstɪk/ | 启发式 | qǐ fā shì |
| undecidable/ˌʌndɪˈsaɪdəbl/ | 不可判定 | bù kě pàn dìng |
3.14
Bibliotecas
Programa
Compreensão Permanente (AAP-3): Programadores dividem problemas em pedaços menores e mais gerenciáveis. Ao criar procedimentos e explorar parâmetros, programadores generalizam processos que podem ser reutilizados. Procedimentos permitem que programadores utilizem código existente que já foi testado, permitindo que escrevam programas mais rapidamente e com mais confiança.
Objetivo de Aprendizagem AAP-3.D: Selecionar bibliotecas apropriadas ou segmentos de código existentes para usar na criação de novos programas. [Habilidade 2.B]
- AAP-3.D.1 Uma biblioteca de software contém procedimentos que podem ser usados na criação de novos programas.
- AAP-3.D.2 Segmentos de código existentes podem provenir de fontes internas ou externas, como bibliotecas ou código escrito anteriormente.
- AAP-3.D.3 O uso de bibliotecas simplifica a tarefa de criar programas complexos.
- AAP-3.D.4 Interfaces de programação de aplicativos (APIs) são especificações sobre o comportamento e a utilização dos procedimentos em uma biblioteca.
- AAP-3.D.5 A documentação de uma API/biblioteca é necessária para compreender os comportamentos fornecidos pela API/biblioteca e como utilizá-los.
Fonte: College Board AP Course and Exam Description
Uma biblioteca 库 é uma coleção de procedimentos prontos que outros podem reutilizar. Uma API (Interface de Programação de Aplicativos) 应用程序接口 documenta o que cada procedimento faz, seus parâmetros e seu resultado — para que você possa usá-lo sem ver seu código. Bibliotecas economizam tempo e permitem construir sobre trabalho existente e testado.
A documentação é parte da biblioteca. A documentação para uma API ou biblioteca é necessária para compreender os comportamentos que ela oferece e como usá-los — o que cada procedimento espera como parâmetro, o que retorna e o que faz nas bordas. Sem ela, você teria que ler o código-fonte, o que anula o ponto da abstração; com ela, você pode usar um procedimento corretamente sem saber como funciona internamente.
| Inglês | Chinês | Pinyin |
|---|---|---|
| Interface/ˈɪntəfeɪs/ | 应用程序接口 | yìng yòng chéng xù jiē kǒu |
3.15
Valores Aleatórios
Programa
Compreensão Permanente (AAP-3): Programadores dividem problemas em pedaços menores e mais gerenciáveis. Ao criar procedimentos e explorar parâmetros, programadores generalizam processos que podem ser reutilizados. Procedimentos permitem que programadores utilizem código existente que já foi testado, permitindo que escrevam programas mais rapidamente e com mais confiança.
Objetivo de Aprendizagem AAP-3.E: Para gerar valores aleatórios: a. Escreva expressões para gerar possíveis valores. [Habilidade 2.B] b. Avalie expressões para determinar os resultados possíveis. [Habilidade 4.B]
-
AAP-3.E.1 A folha de referência do exame fornece
Texto:
RANDOM(a, b)Bloco:
RANDOM a, bque gera e retorna um número inteiro aleatório de
aab, inclusive. Cada resultado tem igual probabilidade de ocorrer. Por exemplo,RANDOM(1, 3)pode retornar1,2ou3. -
AAP-3.E.2 O uso de geração de números aleatórios em um programa significa que cada execução pode produzir um resultado diferente.
Fonte: College Board AP Course and Exam Description
RANDOM(a, b) retorna um número aleatório inteiro de a a b (inclusivo), permitindo que um programa produza resultados imprevisíveis — para jogos, amostragem ou simulações. Cada chamada pode dar um valor diferente, então um programa que usa aleatoriedade se comporta de forma diferente a cada execução.
3.16
Simulações
Programa
Compreensão Permanente (AAP-3): Programadores dividem problemas em pedaços menores e mais gerenciáveis. Ao criar procedimentos e explorar parâmetros, programadores generalizam processos que podem ser reutilizados. Procedimentos permitem que programadores utilizem código existente que já foi testado, permitindo que escrevam programas mais rapidamente e com mais confiança.
Objetivo de Aprendizagem AAP-3.F: Para simulações: a. Explique como os computadores podem ser usados para representar fenômenos ou resultados do mundo real. [Habilidade 1.A] b. Compare simulações com contextos do mundo real. [Habilidade 1.D]
- AAP-3.F.1 Simulações são abstrações de objetos ou fenômenos mais complexos para um propósito específico.
- AAP-3.F.2 Uma simulação é uma representação que usa conjuntos variáveis de valores para refletir o estado mutável de um fenômeno.
- AAP-3.F.3 Simulações frequentemente imitam eventos do mundo real com o objetivo de tirar inferências, permitindo a investigação de um fenômeno sem as limitações do mundo real.
- AAP-3.F.4 O processo de desenvolvimento de uma simulação abstrata envolve a remoção de detalhes específicos ou a simplificação da funcionalidade.
- AAP-3.F.5 Simulações podem conter vieses derivados das escolhas de elementos do mundo real que foram incluídos ou excluídos.
- AAP-3.F.6 Simulações são mais úteis quando eventos do mundo real são impraticáveis para experimentos (ex.: muito grandes, muito pequenos, muito rápidos, muito lentos, muito caros ou muito perigosos).
- AAP-3.F.7 Simulações facilitam a formulação e refinamento de hipóteses relacionadas aos objetos ou fenômenos em consideração.
- AAP-3.F.8 Geradores de números aleatórios podem ser usados para simular a variabilidade existente no mundo real.
Fonte: College Board AP Course and Exam Description
Uma simulação 模拟 é um programa que modela um processo do mundo real para estudá-lo de forma segura e econômica. Simulações simplificam a realidade (elas omitem detalhes) e frequentemente usam aleatoriedade para imitar eventos casuais. Elas permitem testar cenários que seriam muito caros, lentos ou perigosos na vida real — mas seus resultados são tão bons quanto suas premissas.
Uma simulação é uma forma de fazer ciência, não apenas uma imagem. Como pode ser executada muitas vezes, economicamente e com uma variável alterada por vez, uma simulação facilita a formulação e refinamento de hipóteses sobre o objeto ou fenômeno em questão: você propõe uma explicação, executa o modelo, compara o resultado com a realidade e ajusta ou a hipótese ou o modelo. É por isso que as simplificações de uma simulação importam — um resultado só sustenta uma hipótese sobre o mundo real na medida em que o que foi omitido não importa.
3.17
Eficiência Algorítmica
Programa
Compreensão Duradoura (AAP-4): Existem problemas que computadores não podem resolver e, mesmo quando um computador pode resolver um problema, ele pode não conseguir fazê-lo em um tempo razoável.
Objetivo de Aprendizagem AAP-4.A: Para determinar a eficiência de um algoritmo: a. Explique a diferença entre algoritmos que executam em tempo razoável e aqueles que não executam. [Habilidade 1.D] b. Identifique situações onde uma solução heurística pode ser mais apropriada. [Habilidade 1.D]
- AAP-4.A.1 Um problema é uma descrição geral de uma tarefa que pode (ou não pode) ser resolvida algoritmicamente. Uma instância de um problema também inclui entrada específica. Por exemplo, ordenação é um problema; ordenar a lista (2,3,1,7) é uma instância do problema.
- AAP-4.A.2 Um problema de decisão é um problema com resposta sim/não (ex.: existe um caminho de A para B?). Um problema de otimização é um problema com o objetivo de encontrar a solução "melhor" entre muitas (ex.: qual é o caminho mais curto de A para B?).
- AAP-4.A.3 Eficiência é uma estimativa da quantidade de recursos computacionais utilizados por um algoritmo. A eficiência é tipicamente expressa como uma função do tamanho da entrada.
- Declaração de exclusão (EK AAP-4.A.3): Análise formal de algoritmos (Big-O) e raciocínio formal usando fórmulas matemáticas estão fora do escopo deste curso e do Exame AP.
- AAP-4.A.4 A eficiência de um algoritmo é determinada através de raciocínio formal ou matemático.
- AAP-4.A.5 A eficiência de um algoritmo pode ser medida informalmente determinando o número de vezes que uma declaração ou grupo de declarações é executado.
- AAP-4.A.6 Diferentes algoritmos corretos para o mesmo problema podem ter diferentes eficiências.
- AAP-4.A.7 Algoritmos com eficiência polinomial ou mais lenta (constante, linear, quadrática, cúbica, etc.) dizem-se executar em um tempo razoável. Algoritmos com eficiências exponenciais ou fatoriais são exemplos de algoritmos que executam em um *tempo irrazoável.
- AAP-4.A.8 Alguns problemas não podem ser resolvidos em um tempo razoável porque não há algoritmo eficiente para resolvê-los. Nestes casos, buscam-se soluções aproximadas.
- AAP-4.A.9 Uma heurística é uma abordagem para um problema que produz uma solução que não é garantida como ótima, mas pode ser usada quando técnicas que são garantidas para sempre encontrar uma solução ótima são impraticáveis.
- Declaração de exclusão (AAP-4.A.9): Soluções heurísticas específicas estão fora do escopo deste curso e do Exame AP.
Fonte: College Board AP Course and Exam Description
Eficiência 效率 é quanto tempo (ou memória) um algoritmo precisa conforme sua entrada aumenta. Um algoritmo de tempo razoável tem seu trabalho crescendo como um polinômio do tamanho da entrada (ex.: linear ou quadrático); um algoritmo de tempo irrazoável cresce muito mais rápido (ex.: dobrando com cada item adicionado), tornando-se impraticável para entradas grandes. Um algoritmo mais rápido pode tornar um problema antes impossível solvable. Às vezes, uma resposta exata leva muito tempo, então uma heurística 启发式 – uma abordagem que encontra uma resposta boa o suficiente rapidamente – é usada em vez disso.

3.18
Problemas Indecidíveis
Programa
Compreensão Duradoura (AAP-4): Existem problemas que computadores não podem resolver e, mesmo quando um computador pode resolver um problema, ele pode não conseguir fazê-lo em um tempo razoável.
Objetivo de Aprendizagem AAP-4.B: Explique a existência de problemas indecidíveis em ciência da computação. [Habilidade 1.A]
- AAP-4.B.1 Um problema decidível é um problema de decisão para o qual um algoritmo pode ser escrito para produzir uma saída correta para todas as entradas (ex.: "O número é par?").
- AAP-4.B.2 Um problema indecidível é aquele para o qual nenhum algoritmo pode ser construído que seja sempre capaz de fornecer uma resposta correta de sim ou não.
- Declaração de exclusão (EK AAP-4.B.2): Determinar se um dado problema é indecidível está fora do escopo deste curso e do Exame AP.
- AAP-4.B.3 Um problema indecidível pode ter algumas instâncias que possuem solução algorítmica, mas não há solução algorítmica que possa resolver todas as instâncias do problema.
Fonte: College Board AP Course and Exam Description
Alguns problemas são ind decidíveis 不可判定: nenhum algoritmo pode resolver todos os casos deles com uma resposta correta de sim/não. Este é um limite fundamental da computação — não uma questão de precisar de um computador mais rápido, mas uma prova de que tal algoritmo não pode existir.
Habilidade de exame: seja capaz de determinar o resultado de um segmento de código rastreado, comparar a eficiência de dois algoritmos (tempo razoável vs. irrazoável) e reconhecer abstração procedural e de dados em um programa.
3.18
Dicas de prova
- Saiba que uma variável é um armazenamento nomeado para um valor e rastreie como a atribuição a atualiza passo a passo.
- Leia cuidadosamente o pseudocódigo AP —
a <- expressionatribui, e listas são indexadas a partir de 1 na folha de referência do exame. - Distinga uma variável de uma lista (uma coleção acessada por índice) e use operações de lista corretamente.
- Avalie expressões com a precedência correta e lógica booleana (
AND,OR,NOT). - Escolha nomes de variáveis claros e significativos — as tarefas escritas recompodam código legível.
Aulas interativas sobre este tópico
Passe por ele passo a passo, com exercícios de verificação instantânea.
- Variáveis e Atribuições
- Abstração de Dados
- Expressões Matemáticas
- Strings
- Expressões Booleanas
- Condicionais
- Condicionais Aninhadas
- Iteração
- Desenvolvimento de Algoritmos
- Listas
- Busca Binária
- Chamando Procedimentos
- Desenvolvendo Procedimentos
- Bibliotecas
- Valores Aleatórios
- Simulações
- Eficiência Algorítmica
- Problemas Indecidíveis