Pular para o conteúdo
Matérias

Princípios de Ciência da Computação do AP

Dicas

AP Computer Science Principles é o curso de computação amplo: dados e sua representação, algoritmos e abstração, programação, internet e o impacto da computação na sociedade. O código é escrito em qualquer linguagem, e o exame usa um pseudocódigo neutro em linguagem, então as ideias importam mais que a sintaxe.

A avaliação tem duas partes. A Tarefa de Desempenho Criativo é um programa que você constrói e documenta durante o tempo de aula; o exame final é de múltipla escolha.

As respostas escritas sobre seu próprio programa são onde os pontos são perdidos — pedem para você explicar um algoritmo que você escreveu e justificar uma abstração que você escolheu, precisamente, com suas próprias palavras.

As notas cobrem as grandes ideias de dados até impacto, com exemplos de código executáveis aqui. A biblioteca contém as questões de exemplo do exame, e há notas sobre a Tarefa de Desempenho Criativo, que é avaliada com base em seu próprio programa e respostas escritas, não apenas no exame.

  • 1

    Desenvolvimento Criativo

    Assistir aula
    1.1

    Colaboração

    Programa

    Compreensão Duradoura (CRD-1): Incorporar múltiplas perspectivas através da colaboração melhora as inovações computacionais conforme elas são desenvolvidas.

    Objetivo de Aprendizagem CRD-1.A: Explicar como as inovações computacionais são melhoradas através da colaboração. [Habilidade 1.C]

    • CRD-1.A.1 Uma inovação computacional inclui um programa como parte integrante de sua função.
    • CRD-1.A.2 Uma inovação computacional pode ser física (ex.: carro autônomo), software computacional não físico (ex.: software de edição de imagens) ou um conceito computacional não físico (ex.: comércio eletrônico).
    • CRD-1.A.3 A colaboração eficaz produz uma inovação computacional que reflete a diversidade de talentos e perspectivas daqueles que a projetaram.
    • CRD-1.A.4 A colaboração que inclui perspectivas diversas ajuda a evitar vieses no desenvolvimento de inovações computacionais.
    • CRD-1.A.5 A consulta e a comunicação com os usuários são aspectos importantes do desenvolvimento de inovações computacionais.
    • CRD-1.A.6 As informações coletadas de usuários potenciais podem ser usadas para compreender o propósito de um programa sob diferentes perspectivas e para desenvolver um programa que incorpore plenamente essas perspectivas.

    Objetivo de Aprendizagem CRD-1.B: Explicar como as inovações computacionais são desenvolvidas por grupos de pessoas. [Habilidade 1.C]

    • CRD-1.B.1 Ferramentas online apoiam a colaboração, permitindo que programadores compartilhem e forneçam feedback sobre ideias e documentos.
    • CRD-1.B.2 Modelos comuns, como programação em par, existem para facilitar a colaboração.

    Objetivo de Aprendizagem CRD-1.C: Demonstrar habilidades interpessoais eficazes durante a colaboração. [Habilidade 1.C]

    • CRD-1.C.1 Equipes de colaboração eficazes praticam habilidades interpessoais, incluindo, mas não se limitando a:
      • comunicação
      • construção de consenso
      • resolução de conflitos
      • negociação

    Fonte: College Board AP Course and Exam Description

    Um quebra-cabeça em andamento: colaboração e design modular encaixam a solução juntos
    Um quebra-cabeça em andamento: colaboração e design modular encaixam a solução juntos

    Computação é uma atividade colaborativa 协作. Trabalhar em equipe traz mais perspectivas, captura mais erros e produz melhores programas do que trabalhar sozinho. Boa colaboração usa construção de consenso, comunicação clara e as forças de cada membro. Programação em par 结对编程 – duas pessoas em um computador, uma digitando e outra revisando – é uma prática comum. Na prova, você deve ser capaz de explicar como a colaboração melhorou um programa (mais ideias, menos bugs, testes mais amplos).

    1.2

    Função e Propósito do Programa

    Programa

    Compreensão Permanente (CRD-2): Os desenvolvedores criam e inovam utilizando um processo de design iterativo que é centrado no usuário, que incorpora ciclos de implementação/feedback e que deixa amplo espaço para experimentação e tomada de riscos.

    Objetivo de Aprendizagem CRD-2.A: Descrever o propósito de uma inovação computacional. [Habilidade 1.A]

    • CRD-2.A.1 O propósito das inovações computacionais é resolver problemas ou buscar interesses através da expressão criativa.
    • CRD-2.A.2 A compreensão do propósito de uma inovação computacional proporciona aos desenvolvedores uma capacidade melhorada de desenvolver essa inovação computacional.

    Objetivo de Aprendizagem CRD-2.B: Explicar como um programa ou segmento de código funciona. [Habilidade 4.A]

    • CRD-2.B.1 Um programa é uma coleção de instruções de programa que executa uma tarefa específica quando executado por um computador. Um programa é frequentemente referido como software.
    • CRD-2.B.2 Um segmento de código é uma coleção de instruções de programa que faz parte de um programa.
    • CRD-2.B.3 Um programa precisa funcionar para uma variedade de entradas e situações.
    • CRD-2.B.4 O comportamento de um programa é como ele funciona durante a execução e é frequentemente descrito pela forma como o usuário interage com ele.
    • CRD-2.B.5 Um programa pode ser descrito amplamente pelo que ele faz, ou mais detalhadamente tanto pelo que o programa faz quanto como as instruções do programa realizam essa função.

    Objetivo de Aprendizagem CRD-2.C: Identificar entrada(s) para um programa. [Habilidade 3.A]

    • CRD-2.C.1 Entradas de programa são dados enviados a um computador para processamento por um programa. A entrada pode vir em várias formas, como táctil, áudio, visual ou texto.
    • CRD-2.C.2 Um evento está associado a uma ação e fornece dados de entrada para um programa.
    • CRD-2.C.3 Eventos podem ser gerados quando uma tecla é pressionada, um mouse é clicado, um programa é iniciado ou qualquer outra ação definida ocorre que afeta o fluxo de execução.
    • CRD-2.C.4 As entradas geralmente afetam a saída produzida por um programa.
    • CRD-2.C.5 Em programação orientada a eventos, as instruções do programa são executadas quando acionadas, em vez de através do fluxo sequencial de controle.
    • CRD-2.C.6 A entrada pode vir de um usuário ou de outros programas.

    Objetivo de Aprendizagem CRD-2.D: Identificar saída(s) produzidas por um programa. [Habilidade 3.A]

    • CRD-2.D.1 Saídas de programa são quaisquer dados enviados de um programa para um dispositivo. A saída do programa pode vir em várias formas, como táctil, áudio, visual ou texto.
    • CRD-2.D.2 A saída do programa geralmente é baseada na entrada do programa ou em seu estado anterior (ex.: valores internos).

    Fonte: College Board AP Course and Exam Description

    Todo programa é escrito para um propósito – resolve um problema ou persegue um interesse. Um programa recebe entrada 输入, processa-a e produz saída 输出. Entradas podem vir de um usuário, dispositivo, arquivo ou outro programa; saídas podem ser visuais, auditivas, textuais ou um sinal para um dispositivo. Ser capaz de declarar o propósito de um programa e descrever claramente suas entradas e saídas é uma habilidade fundamental (e parte da tarefa de desempenho Criar).

    Todo programa se decomponha em entrada, processamento e saída
    Todo programa se decomponha em entrada, processamento e saída
    Todo programa segue o modelo entrada-processamento-saída
    Todo programa segue o modelo entrada-processamento-saída
    Explorar

    Explore o modelo entrada → processamento → saída

    Passe pelo modelo IPO. Todo programa recebe uma entrada, realiza processamento seguindo suas instruções e depois produz uma saída — acompanhe um exemplo de aplicativo meteorológico ao longo do pipeline.

    1.3

    Projeto e Desenvolvimento de Programas

    Programa

    Compreensão Permanente (CRD-2): Os desenvolvedores criam e inovam utilizando um processo de design iterativo que é centrado no usuário, que incorpora ciclos de implementação/feedback e que deixa amplo espaço para experimentação e tomada de riscos.

    Objetivo de Aprendizagem CRD-2.E: Desenvolver um programa usando um processo de desenvolvimento. [Habilidade 1.B]

    • CRD-2.E.1 Um processo de desenvolvimento pode ser ordenado e intencional, ou exploratório em sua natureza.
    • CRD-2.E.2 Existem vários processos de desenvolvimento. As seguintes fases são comumente usadas ao desenvolver um programa:
      • investigação e reflexão
      • design
      • prototipagem
      • teste
    • CRD-2.E.3 Um processo de desenvolvimento que é iterativo requer refinamento e revisão com base em feedback, testes ou reflexão ao longo do processo. Isso pode exigir o retorno a fases anteriores do processo.
    • CRD-2.E.4 Um processo de desenvolvimento que é incremental é aquele que divide o problema em partes menores e garante que cada peça funcione antes de adicioná-la ao todo.

    Objetivo de Aprendizagem CRD-2.F: Projetar um programa e sua interface do usuário. [Habilidade 1.B]

    • CRD-2.F.1 O design de um programa incorpora investigação para determinar seus requisitos.
    • CRD-2.F.2 A investigação em um processo de desenvolvimento é útil para entender e identificar as restrições do programa, bem como as preocupações e interesses das pessoas que usarão o programa.
    • CRD-2.F.3 Algumas maneiras pelas quais a investigação pode ser realizada são as seguintes:
      • coleta de dados através de pesquisas
      • teste com usuários
      • entrevistas
      • observações diretas
    • CRD-2.F.4 Os requisitos do programa descrevem como um programa funciona e podem incluir uma descrição das interações do usuário que um programa deve fornecer.
    • CRD-2.F.5 A especificação de um programa define os requisitos para o programa.
    • CRD-2.F.6 Em um processo de desenvolvimento, a fase de design descreve como accomplir uma dada especificação de programa.
    • CRD-2.F.7 A fase de design de um programa pode incluir:
      • brainstorming
      • planejamento e storyboarding
      • organização do programa em módulos e componentes funcionais
      • criação de diagramas que representam os layouts da interface do usuário
      • desenvolvimento de uma estratégia de teste para o programa

    Objetivo de Aprendizagem CRD-2.G: Descrever o propósito de um segmento de código ou programa escrevendo documentação. [Habilidade 4.A]

    • CRD-2.G.1 Documentação de programa é uma descrição escrita da função de um segmento de código, evento, procedimento ou programa e de como foi desenvolvido.
    • CRD-2.G.2 Comentários são uma forma de documentação de programa escrita dentro do programa para ser lida por pessoas e não afetam como um programa roda.
    • CRD-2.G.3 Programadores devem documentar um programa ao longo de seu desenvolvimento.
    • CRD-2.G.4 A documentação do programa ajuda no desenvolvimento e manutenção de programas corretos ao trabalhar individualmente ou em ambientes de programação colaborativa.
    • CRD-2.G.5 Nem todos os ambientes de programação suportam comentários, então outros métodos de documentação podem ser necessários.

    Objetivo de Aprendizagem CRD-2.H: Reconhecer segmentos de código usados de outras fontes. [Habilidade 1.C]

    • CRD-2.H.1 É importante reconhecer quaisquer segmentos de código que foram desenvolvidos colaborativamente ou por outra fonte.
    • CRD-2.H.2 O reconhecimento de um segmento de código(s) escrito por outra pessoa e usado em um programa pode estar na documentação do programa. O reconhecimento deve incluir a origem ou o nome do autor original.

    Fonte: College Board AP Course and Exam Description

    Um programador depurando em estação de trabalho com múltiplos monitores — projeto e teste iterativos
    Um programador depurando em estação de trabalho com múltiplos monitores — projeto e teste iterativos

    Programas são construídos através de um processo iterativo 迭代, não em uma linha reta única: investigue o problema e os usuários, projete (muitas vezes com um diagrama ou plano escrito), implemente em código e teste – depois repita. Um grande problema é dividido em peças menores (decomposição 分解). Comentários 注释 e nomenclatura clara documentam o projeto para que outros (e seu futuro eu) possam entendê-lo. O desenvolvimento é incremental – construa e teste uma pequena peça, depois adicione a próxima.

    As etapas do desenvolvimento de programas, com teste alimentando de volta para corrigir e refinar
    As etapas do desenvolvimento de programas, com teste alimentando de volta para corrigir e refinar
    Software é construído por um processo de desenvolvimento iterativo e incremental
    Software é construído por um processo de desenvolvimento iterativo e incremental

    Investigando o que os usuários realmente precisam

    Antes de qualquer código ser escrito, o desenvolvedor investiga o problema e as pessoas que usarão o programa. Três maneiras de fazer isso:

    • pesquisas/sondagens 调查问卷 enviadas a potenciais usuários, que coletam dados de muitas pessoas rapidamente;
    • entrevistas e observação direta de usuários realizando a tarefa manualmente;
    • estudar soluções existentes para ver o que já funciona e o que frustra as pessoas.

    As descobertas são transformadas em um projeto. Dois artefatos fazem isso: uma lista de requisitos do programa dizendo exatamente o que o programa deve fazer, e diagramas representando o layout da interface do usuário 用户界面 — esboços mostrando quais controles aparecem onde e o que cada um faz quando usado. Projetar a interface primeiro em papel é mais barato do que descobrir depois da codificação que os botões estão no lugar errado.

    Eventos, e programas que aguardam

    Nem todo programa roda direto de cima para baixo. Um evento 事件 é gerado quando uma tecla é pressionada, o mouse é clicado, um programa é iniciado ou qualquer outra ação definida ocorre – e um evento altera o fluxo de execução: o programa pausa o que estava fazendo e executa o código vinculado a esse evento, chamado de manipulador de eventos 事件处理程序.

    É por isso que um programa com interface gráfica pode parecer estar fazendo nada: ele está esperando pelo próximo evento. A ordem em que esses eventos chegam é decidida pelo usuário, não pelo programador, então o mesmo programa pode executar seus blocos em uma ordem diferente toda vez que é usado.

    Explorar

    Percorra o processo de desenvolvimento iterativo

    O desenvolvimento é iterativo — você repete as etapas, melhorando o programa um pouco em cada passagem. Percorra o loop e note que ele retorna ao início, em vez de terminar após uma única execução.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    collaborative/kəˈlæbrətɪv/ 协作 xié zuò
    Pair programming/peə ˈprəʊɡræmɪŋ/ 结对编程 jié duì biān chéng
    input/ˈɪnpʊt/ 输入 shū rù
    output/ˈaʊtpʊt/ 输出 shū chū
    iterative/ˈɪtərətɪv/ 迭代 dié dài
    decomposition/ˌdiːkɒmpəˈzɪʃn/ 分解 fēn jiě
    Comments/ˈkɒments/ 注释 zhù shì
    surveys/ˈsɜːveɪz/ 调查问卷 diào chá wèn juǎn
    diagrams representing the layout of the user interface 用户界面 yòng hù jiè miàn
    event/ɪˈvent/ 事件 shì jiàn
    event handler/ɪˈvent ˈhændlə/ 事件处理程序 shì jiàn chǔ lǐ chéng xù
    1.4

    Identificando e Corrigindo Erros

    Programa

    Compreensão Permanente (CRD-2): Os desenvolvedores criam e inovam utilizando um processo de design iterativo que é centrado no usuário, que incorpora ciclos de implementação/feedback e que deixa amplo espaço para experimentação e tomada de riscos.

    Objetivo de Aprendizagem CRD-2.I: Para erros em um algoritmo ou programa: a. Identificar o erro. [Habilidade 4.C] b. Corrigir o erro. [Habilidade 4.C]

    • CRD-2.I.1 Um erro lógico é um erro no algoritmo ou programa que causa comportamento incorreto ou inesperado.
    • CRD-2.I.2 Um erro de sintaxe é um erro no programa onde as regras da linguagem de programação não são seguidas.
    • CRD-2.I.3 Um erro de tempo de execução é um erro no programa que ocorre durante a execução de um programa. Linguagens de programação definem seus próprios erros de tempo de execução.
    • CRD-2.I.4 Um erro de overflow é um erro que ocorre quando um computador tenta manipular um número que está fora da faixa de valores definida.
    • CRD-2.I.5 As seguintes são maneiras eficazes de encontrar e corrigir erros:
      • casos de teste
      • traçado manual
      • visualizações
      • depuradores
      • adição de statement(s) de saída extra

    Objetivo de Aprendizagem CRD-2.J: Identificar entradas e saídas esperadas correspondentes ou comportamentos que podem ser usados para verificar a correção de um algoritmo ou programa. [Habilidade 4.C]

    • CRD-2.J.1 No processo de desenvolvimento, testes usam entradas definidas para garantir que um algoritmo ou programa esteja produzindo resultados esperados. Programadores usam os resultados dos testes para revisar seus algoritmos ou programas.
    • CRD-2.J.2 Entradas definidas usadas para testar um programa devem demonstrar os diferentes resultados esperados que estão nos extremos (mínimo e máximo) ou logo além deles dos dados de entrada.
    • CRD-2.J.3 Os requisitos do programa são necessários para identificar entradas definidas apropriadas para testes.

    Fonte: College Board AP Course and Exam Description

    Um bug é um erro em um programa; debugging 调试 é encontrá-lo e corrigi-lo. Três tipos:

    Uma tabela de rastreamento registra o valor de cada variável enquanto o programa executa, para encontrar bugs
    Uma tabela de rastreamento registra o valor de cada variável enquanto o programa executa, para encontrar bugs
    • um erro de sintaxe 语法错误 viola as regras da linguagem, então o programa não executará;
    • um erro de tempo de execução 运行时错误 causa travamento do programa durante a execução (ex: divisão por zero);
    • um erro de lógica 逻辑错误 permite que ele execute, mas produz um resultado incorreto.

    Encontre bugs fazendo testes com diferentes entradas, adicionando instruções print para ver valores e rastreando o código manualmente. Escolha as entradas de teste deliberadamente: elas devem demonstrar os resultados esperados diferentes nos limites ou logo além deles — os valores mínimo e máximo que o programa deve aceitar, e um valor logo fora de cada um deles. Um programa que funciona bem com dados comuns frequentemente falha com uma lista vazia, zero ou um valor um passo além do final de um intervalo, então essas são as entradas worth trying first. Corrigir um bug de cada vez e re-testar é o método confiável.

    Habilidade de prova: ser capaz de nomear o tipo de erro e descrever uma estratégia de teste que o capturar — um tema recorrente em questões de múltipla escolha e tarefas Create.

    Três tipos de erros de programação: sintaxe, lógica e tempo de execução
    Três tipos de erros de programação: sintaxe, lógica e tempo de execução

    Exemplo resolvido. Um programa destinado a imprimir a média de dois números em vez disso executa avg = a + b / 2. Rastreando a ordem das operações, / executa antes de +, então ele calcula $a+\tfrac{b}{2}$ em vez da média. Adicione parênteses para corrigir: avg = (a + b) / 2. Testar com $a=4,\ b=6$ confirma a correção — a linha com bug dá $4+3=7$, a linha corrigida dá $\tfrac{10}{2}=5$. Testar com entradas conhecidas é exatamente como você encontra e confirma um erro de lógica.

    Explorar

    Rastreie a lógica do jogo de adivinhação e identifique um erro de lógica

    Arraste o palpite e observe qual ramo é executado. Um erro de lógica enviaria o mesmo palpite para o ramo errado — o programa ainda executa, mas exibe a mensagem incorreta. O número secreto aqui é 50.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    debugging/ˈdiːbʌɡɪŋ/ 调试 tiáo shì
    syntax error/ˈsɪntæks ˈerə/ 语法错误 yǔ fǎ cuò wù
    runtime error/ˈrʌntaɪm ˈerə/ 运行时错误 yùn xíng shí cuò wù
    logic error/ˈlɒdʒɪk ˈerə/ 逻辑错误 luó jí cuò wù
    1.4

    Dicas de prova

    • Muito do CSP é avaliado através das tarefas Create e de desempenho escrito — explique seu raciocínio claramente, não apenas seu resultado.
    • Conheça os benefícios da colaboração e como perspectivas diversas reduzem viés em um programa.
    • Use vocabulário preciso (desenvolvimento iterativo, requisitos do programa) ao descrever um processo de projeto.
    • Dê e receba feedback construtivamente; dê crédito aos colaboradores e fontes.
    • Divida um problema grande em módulos menores que uma equipe possa construir em paralelo.
  • 2

    Dados

    Assistir aula
    2.1

    Números Binários

    Programa

    Compreensão Permanente (DAT-1): A forma como um computador representa dados internamente é diferente da forma como os dados são interpretados e exibidos para o usuário. Programas são usados para traduzir dados em uma representação mais facilmente compreendida por pessoas.

    Objetivo de Aprendizagem DAT-1.A: Explicar como os dados podem ser representados usando bits. [Habilidade 3.C]

    • DAT-1.A.1 Os valores de dados podem ser armazenados em variáveis, listas de itens ou constantes isoladas e podem ser passados como entrada para (ou saída de) procedimentos.
    • DAT-1.A.2 Dispositivos de computação representam dados digitalmente, o que significa que os componentes de nível mais baixo de qualquer valor são bits.
    • DAT-1.A.3 Bit é abreviação de dígito binário e pode ser 0 ou 1.
    • DAT-1.A.4 Um byte equivale a 8 bits.
    • DAT-1.A.5 Abstração é o processo de redução da complexidade ao focar na ideia principal. Ao ocultar detalhes irrelevantes para a questão em questão e agrupar detalhes relacionados e úteis, a abstração reduz a complexidade e permite que se foque na ideia.
    • DAT-1.A.6 Bits são agrupados para representar abstrações. Essas abstrações incluem, mas não se limitam a, números, caracteres e cores.
    • DAT-1.A.7 A mesma sequência de bits pode representar diferentes tipos de dados em contextos diferentes.
    • DAT-1.A.8 Dados analógicos possuem valores que mudam suavemente, em vez de em intervalos discretos, ao longo do tempo. Alguns exemplos de dados analógicos incluem tom e volume de música, cores de uma pintura ou posição de um corredor durante uma corrida.
    • DAT-1.A.9 O uso de dados digitais para aproximar dados analógicos do mundo real é um exemplo de abstração.
    • DAT-1.A.10 Dados analógicos podem ser aproximados digitalmente usando uma técnica de amostragem, que consiste em medir valores do sinal analógico em intervalos regulares chamados amostras. As amostras são medidas para determinar os bits exatos necessários para armazenar cada amostra.

    Objetivo de Aprendizagem DAT-1.B: Explicar as consequências do uso de bits para representar dados. [Habilidade 1.D]

    • DAT-1.B.1 Em muitas linguagens de programação, inteiros são representados por um número fixo de bits, o que limita a faixa de valores inteiros e as operações matemáticas sobre esses valores. Essa limitação pode resultar em transbordamento (overflow) ou outros erros.
    • DAT-1.B.2 Outras linguagens de programação fornecem uma abstração pela qual o tamanho dos inteiros representáveis é limitado apenas pelo tamanho da memória do computador; este é o caso da linguagem definida na folha de referência do exame.
    • DAT-1.B.3 Em linguagens de programação, o número fixo de bits usado para representar números reais limita a faixa e as operações matemáticas sobre esses valores; essa limitação pode resultar em arredondamento e outros erros. Alguns números reais são representados como aproximações no armazenamento do computador.
      • Declaração de exclusão: Limitações específicas de faixa para números reais estão fora do escopo deste curso e do Exame AP.

    Objetivo de Aprendizagem DAT-1.C: Para números binários: a. Calcular o equivalente binário (base 2) de um inteiro positivo (base 10) e vice-versa. [Habilidade 2.B] b. Comparar e ordenar números binários. [Habilidade 2.B]

    • DAT-1.C.1 Bases numéricas, incluindo binária e decimal, são usadas para representar dados.
    • DAT-1.C.2 Binária (base 2) usa apenas combinações dos dígitos zero e um.
    • DAT-1.C.3 Decimal (base 10) usa apenas combinações dos dígitos $0 - 9$.
    • DAT-1.C.4 Assim como no decimal, a posição de um dígito na sequência binária determina seu valor numérico. O valor numérico é igual ao valor do bit (0 ou 1) multiplicado pelo valor posicional de sua posição.
    • DAT-1.C.5 O valor posicional de cada posição é determinado pela base elevada à potência da posição. As posições são numeradas começando pela posição mais à direita com 0 e aumentando em 1 para cada posição subsequente para a esquerda.

    Fonte: College Board AP Course and Exam Description

    Dígitos binários em uma tela — todos os dados digitais são armazenados finalmente como 0s e 1s
    Dígitos binários em uma tela — todos os dados digitais são armazenados finalmente como 0s e 1s

    Computadores armazenam tudo como bits 位 – cada um é um 0 ou 1. Um grupo de 8 bits é um byte 字节. Números são armazenados em binário 二进制 (base 2), onde cada posição é uma potência de dois ($1, 2, 4, 8, 16, \dots$) em vez das potências de dez no decimal 十进制. Por exemplo, binário 1011 é $8+2+1=11$.

    Um gráfico de positional de 8 bits: os 1 ficam sob os valores que somam ao número
    Um gráfico de positional de 8 bits: os 1 ficam sob os valores que somam ao número

    Exemplo resolvido. Para converter binário 1101 para decimal, escreva os valores posicionais 8 4 2 1 abaixo dos bits 1 1 0 1 e some os que têm um 1: $8+4+0+1=13$. No sentido inverso, converta 19 para binário subtraindo a maior potência de dois que cabe: $19-16=3$, então $3-2=1$, então $1-1=0$, então os bits ficam nos lugares 16, 2 e 1 $\rightarrow$ 10011 (confira: $16+2+1=19$).

    Porque um computador tem um número finito de bits, ele pode representar apenas uma faixa limitada de valores. Isso causa dois efeitos testados na prova:

    • Erro de overflow 溢出错误: um número muito grande para os bits disponíveis não pode ser armazenado corretamente.
    • Erro de arredondamento 舍入错误: números com decimais (números reais) podem apenas ser aproximados, porque infinitos valores reais devem mapear para padrões finitos de bits.

    Todos os dados – texto, imagens, som – são codificados finalmente em binário. Uma imagem é uma grade de pixels 像素, cada um armazenado como números para suas cores; som é armazenado como números amostrados muitas vezes por segundo.

    Explorar

    Converter entre binário e decimal

    Os computadores armazenam números em binário (base 2). Cada bit é uma potência de dois; some os valores posicionais dos bits 1 para ler o número decimal.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    bits/bɪts/ 位 wèi
    byte/baɪt/ 字节 zì jié
    binary/ˈbaɪnəri/ 二进制 èr jìn zhì
    decimal/ˈdesɪml/ 十进制 shí jìn zhì
    Overflow error/ˌəʊvəˈfləʊ ˈerə/ 溢出错误 yì chū cuò wù
    Round-off (rounding) error/raʊnd ɒf ˈerə/ 舍入错误 shě rù cuò wù
    pixels/ˈpɪkslz/ 像素 xiàng sù
    Assistir aula
    2.2

    Compactação de Dados

    Programa

    Compreensão Permanente (DAT-1): A forma como um computador representa dados internamente é diferente da forma como os dados são interpretados e exibidos para o usuário. Programas são usados para traduzir dados em uma representação mais facilmente compreendida por pessoas.

    Objetivo de Aprendizagem DAT-1.D: Comparar algoritmos de compactação de dados para determinar qual é o melhor em um contexto particular. [Habilidade 1.D]

    • DAT-1.D.1 Compactação de dados pode reduzir o tamanho (número de bits) de dados transmitidos ou armazenados.
    • DAT-1.D.2 Menos bits não significam necessariamente menos informação.
    • DAT-1.D.3 A quantidade de redução de tamanho resultante da compactação depende tanto da quantidade de redundância na representação original dos dados quanto do algoritmo de compactação aplicado.
    • DAT-1.D.4 Algoritmos de compactação de dados sem perdas geralmente podem reduzir o número de bits armazenados ou transmitidos enquanto garantem a reconstrução completa dos dados originais.
    • DAT-1.D.5 Algoritmos de compactação de dados com perdas podem reduzir significativamente o número de bits armazenados ou transmitidos, mas permitem apenas a reconstrução de uma aproximação dos dados originais.
    • DAT-1.D.6 Algoritmos de compactação de dados com perdas geralmente podem reduzir o número de bits armazenados ou transmitidos mais do que os algoritmos de compactação sem perdas.
    • DAT-1.D.7 Em situações onde a qualidade ou a capacidade de reconstruir os dados originais é maximamente importante, algoritmos de compactação sem perdas são tipicamente escolhidos.
    • DAT-1.D.8 Em situações onde a minimização do tamanho dos dados ou do tempo de transmissão é maximamente importante, algoritmos de compactação com perdas são tipicamente escolhidos.

    Fonte: College Board AP Course and Exam Description

    Platos de disco rígido e cabeça: dados compactados e armazenados como padrões magnéticos
    Platos de disco rígido e cabeça: dados compactados e armazenados como padrões magnéticos

    Compactação 压缩 reduz o número de bits necessários para armazenar ou enviar dados. Dois tipos:

    Métodos de compressão: sem perdas versus com perdas, com exemplos comuns
    Métodos de compressão: sem perdas versus com perdas, com exemplos comuns
    • Compactação sem perda 无损压缩 permite restaurar os dados exatos originais (usada para texto e programas, onde cada bit importa).
    • Compactação com perda 有损压缩 descarta alguns dados para reduzir o tamanho ainda mais (usada para fotos, música, vídeo, onde uma pequena perda de qualidade é aceitável).

    Escolher entre eles envolve trocar tamanho contra fidelidade: sem perda mantém tudo mas poupa menos; com perda poupa mais mas perde detalhes permanentemente. Prefira sem perda quando os dados devem ser exatos.

    Explorar

    Comprimir uma sequência de repetições

    Codificação de comprimento de corrida é uma compressão sem perdas: uma longa sequência do mesmo símbolo é substituída pelo símbolo e uma contagem, reduzindo os dados sem perder nenhuma informação.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    Compression/kəmˈpreʃn/ 压缩 yā suō
    Lossless compression/ˈlɒsləs kəmˈpreʃn/ 无损压缩 wú sǔn yā suō
    Lossy compression/ˈlɒsi kəmˈpreʃn/ 有损压缩 yǒu sǔn yā suō
    Assistir aula
    2.3

    Extração de Informações dos Dados

    Programa

    Compreensão Duradoura (DAT-2): Programas podem ser usados para processar dados, o que permite aos usuários descobrir informações e criar novo conhecimento.

    Objetivo de Aprendizagem DAT-2.A: Descrever o que pode ser extraído das informações dos dados. [Habilidade 5.B]

    • DAT-2.A.1 Informação é a coleção de fatos e padrões extraídos dos dados.
    • DAT-2.A.2 Os dados oferecem oportunidades para identificar tendências, fazer conexões e resolver problemas.
    • DAT-2.A.3 Dados processados digitalmente podem mostrar correlação entre variáveis. Uma correlação encontrada nos dados não indica necessariamente que existe uma relação de causalidade. Pesquisas adicionais são necessárias para entender a natureza exata da relação.
    • DAT-2.A.4 Frequentemente, uma única fonte não contém os dados necessários para tirar uma conclusão. Pode ser necessário combinar dados de várias fontes para formular uma conclusão.

    Objetivo de Aprendizagem DAT-2.B: Descrever o que pode ser extraído das metadados. [Habilidade 5.B]

    • DAT-2.B.1 Metadados são dados sobre dados. Por exemplo, a peça de dados pode ser uma imagem, enquanto os metadados podem incluir a data de criação ou o tamanho do arquivo da imagem.
    • DAT-2.B.2 Alterações e exclusões feitas nos metadados não alteram os dados principais.
    • DAT-2.B.3 Metadados são usados para encontrar, organizar e gerenciar informações.
    • DAT-2.B.4 Metadados podem aumentar o uso eficaz de dados ou conjuntos de dados ao fornecer informações adicionais.
    • DAT-2.B.5 Metadados permitem que os dados sejam estruturados e organizados.

    Objetivo de Aprendizagem DAT-2.C: Identificar os desafios associados ao processamento de dados. [Habilidade 5.D]

    • DAT-2.C.1 A capacidade de processar dados depende das capacidades dos usuários e de suas ferramentas.
    • DAT-2.C.2 Conjuntos de dados apresentam desafios independentemente do tamanho, tais como:
      • a necessidade de limpar os dados
      • dados incompletos
      • dados inválidos
      • a necessidade de combinar fontes de dados
    • DAT-2.C.3 Dependendo de como os dados foram coletados, eles podem não ser uniformes. Por exemplo, se os usuários inserirem dados em um campo aberto, a maneira como escolhem abreviar, grafar ou capitalizar algo pode variar de usuário para usuário.
    • DAT-2.C.4 Limpeza de dados é um processo que torna os dados uniformes sem alterar seu significado (ex.: substituindo todas as abreviações, ortografias e capitalizações equivalentes pela mesma palavra).
    • DAT-2.C.5 Problemas de viés são frequentemente criados pelo tipo ou fonte dos dados sendo coletados. O viés não é eliminado simplesmente coletando mais dados.
    • DAT-2.C.6 O tamanho de um conjunto de dados afeta a quantidade de informação que pode ser extraída dele.
    • DAT-2.C.7 Grandes conjuntos de dados são difíceis de processar usando um único computador e podem exigir sistemas paralelos.
    • DAT-2.C.8 A escalabilidade dos sistemas é uma consideração importante ao trabalhar com conjuntos de dados, pois a capacidade computacional de um sistema afeta como os conjuntos de dados podem ser processados e armazenados.

    Fonte: College Board AP Course and Exam Description

    Dados 数据 tornam-se úteis quando extraímos informações 信息 deles – padrões, tendências e respostas a perguntas. Grandes conjuntos de dados podem revelar correlações que um pequeno não consegue, mas os dados devem ser limpos (corrigindo erros e inconsistências) e muitas vezes transformados ou filtrados primeiro. Uma correlação 相关性 entre duas coisas não prova que uma causa a outra – um aviso importante. Metadados 元数据 (dados sobre dados, como data e localização de uma foto) ajudam a organizar e pesquisar grandes coleções.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    Data/ˈdeɪtə/ 数据 shù jù
    information/ˌɪnfəˈmeɪʃn/ 信息 xìn xī
    correlation/ˌkɒrɪˈleɪʃn/ 相关性 xiāng guān xìng
    Metadata/ˌmetəˈdeɪtə/ 元数据 yuán shù jù
    filtering/ˈfɪltərɪŋ/ 过滤 guò lǜ
    visualizing/ˈvɪʒuːəlaɪzɪŋ/ 可视化 kě shì huà
    privacy/ˈprɪvəsi/ 隐私 yǐn sī
    2.4

    Usando Programas com Dados

    Programa

    Compreensão Duradoura (DAT-2): Programas podem ser usados para processar dados, o que permite aos usuários descobrir informações e criar novo conhecimento.

    Objetivo de Aprendizagem DAT-2.D: Extrair informações dos dados usando um programa. [Habilidade 2.B]

    • DAT-2.D.1 Programas podem ser usados para processar dados e adquirir informações.
    • DAT-2.D.2 Tabelas, diagramas, texto e outras ferramentas visuais podem ser usadas para comunicar insights e conhecimentos obtidos dos dados.
    • DAT-2.D.3 Ferramentas de busca são úteis para encontrar informações de forma eficiente.
    • DAT-2.D.4 Sistemas de filtragem de dados são ferramentas importantes para encontrar informações e reconhecer padrões nos dados.
    • DAT-2.D.5 Programas, como planilhas, ajudam a organizar e encontrar tendências nas informações de forma eficiente.
    • DAT-2.D.6 Alguns processos que podem ser usados para extrair ou modificar informações dos dados incluem os seguintes:
      • transformar todos os elementos de um conjunto de dados, como dobrar todos os elementos de uma lista, ou adicionar o e-mail de um pai a cada registro de aluno
      • filtrar um conjunto de dados, como manter apenas os números positivos de uma lista, ou manter apenas os alunos que se inscreveram para banda a partir de um registro de todos os alunos
      • combinar ou comparar dados de alguma forma, como somar uma lista de números, ou encontrar o aluno que tem a maior média geral (GPA)
      • visualizar um conjunto de dados através de um gráfico, gráfico de barras ou outra representação visual

    Objetivo de Aprendizagem DAT-2.E: Explicar como programas podem ser usados para obter insights e conhecimento dos dados. [Habilidade 5.B]

    • DAT-2.E.1 Programas são usados de forma iterativa e interativa ao processar informações para permitir que os usuários obtenham insights e conhecimento sobre os dados.
    • DAT-2.E.2 Programadores podem usar programas para filtrar e limpar dados digitais, obtendo assim insights e conhecimento.
    • DAT-2.E.3 Combinar fontes de dados, agrupar dados (clustering) e classificar dados são partes do processo de usar programas para obter insights e conhecimento dos dados.
    • DAT-2.E.4 Insights e conhecimento podem ser obtidos ao traduzir e transformar informações representadas digitalmente.
    • DAT-2.E.5 Padrões podem emergir quando os dados são transformados usando programas.

    Fonte: College Board AP Course and Exam Description

    Programas processam dados em escalas humanas não conseguem. Operações comuns são filtragem 过滤 (mantendo apenas linhas que atendem a uma condição), limpeza (removendo erros) e visualização 可视化 (gráficos e gráficos que tornam padrões visíveis). Combinar dados de várias fontes pode revelar mais, mas levanta preocupações de privacidade 隐私. Ferramentas interativas e visualizações permitem que as pessoas explorem dados e tirem suas próprias conclusões.

    Habilidade de prova: ser capaz de explicar como um programa ajuda a encontrar informações em um grande conjunto de dados, e por que a correlação mostrada nos dados não estabelece causalidade.

    2.4

    Dicas de prova

    • Converta com confiança entre binário, decimal e (quando solicitado) hexadecimal – pratique até ficar rápido.
    • Lembre-se que um bit é um dígito binário e um byte são 8 bits; $n$ bits representam $2^n$ valores.
    • Explique que todos os dados – números, texto, imagens, som – são armazenados em binário, e que bits finitos causam overflow e arredondamento.
    • Diferencie compactação sem perda de com perda e quando cada uma é apropriada.
    • Mostre a ideia analógico-digital: amostragem transforma um sinal contínuo em valores discretos.
  • 3

    Algoritmos e Programação

    Assistir aula

    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.

    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 ← expression

      Bloco:

      a ← expression

      avalia expression e, em seguida, atribui uma cópia do resultado à variável a.

    • AAP-1.B.3 O valor armazenado em uma variável será o último valor atribuído. Por exemplo:

      a ← 1 b ← a a ← 2 display(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:

    Uma variável é um armazém nomeado cujo valor pode mudar
    Uma variável é um armazém nomeado cujo valor pode mudar
    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.

    Explorar

    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á.

    Vocabulário Treinar
    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, value3

        cria uma nova lista que contém os valores value1, value2, value3 e ... nos índices 1, 2, 3 e ... respectivamente e a atribui a aList.

      • Texto:

        aList ← []

        Bloco:

        aList ← (vazio)

        cria uma nova lista vazia e a atribui a aList.

      • Texto:

        aList ← bList

        Bloco:

        aList ← bList

        atribui uma cópia da lista bList à lista aList. Por exemplo, se bList contiver [20, 40, 60], então aList també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 quando a é dividido por b. Suponha que a seja um número inteiro maior ou igual a 0 e b seja um número inteiro maior que 0. Por exemplo, 17 MOD 5 avalia para 2.

    • AAP-2.C.3 A folha de referência do exame fornece os operadores aritméticos +, -, *, / e MOD.

      Texto e Bloco:

      • a + b
      • a - b
      • a * b
      • a / b
      • a MOD b

      Eles são usados para realizar operações aritméticas em a e b. Por exemplo, 17 / 5 avalia para 3.4.

    • AAP-2.C.4 A ordem de operações usada em matemática se aplica ao avaliar expressões. O operador MOD tem 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.

    Explorar

    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.

    Vocabulário Treinar
    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 = b
      • a ≠ b
      • a > b
      • a < b
      • a ≥ b
      • a ≤ 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 = b avalia para true se a e b forem iguais; caso contrário, avalia para false.

    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, AND e OR, que avaliam para um valor booleano.

    • AAP-2.F.2 A folha de referência do exame fornece

      Texto:

      NOT condition

      Bloco:

      NOT condition

      que avalia para true se condition for false; caso contrário, avalia para false.

    • AAP-2.F.3 A folha de referência do exame fornece

      Texto:

      condition1 AND condition2

      Bloco:

      condition1 AND condition2

      que avalia para true se ambas condition1 e condition2 forem true; caso contrário, avalia para false.

    • AAP-2.F.4 A folha de referência do exame fornece

      Texto:

      condition1 OR condition2

      Bloco:

      condition1 OR condition2

      que avalia para true se condition1 for true ou se condition2 for true ou se ambas condition1 e condition2 forem true; caso contrário, avalia para false.

    • 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 *As três famílias de operadores: aritméticos, relacionais e lógicos

    • NOT inverte 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.

    Explorar

    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 true ou false.

    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 condition block of statements

      na qual o código em block of statements é executado se a expressão booleana condition avaliar para true; nenhuma ação é tomada se condition avaliar para false.

    • 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 condition first block of statements ELSE second block of statements

      na qual o código em first block of statements é executado se a expressão booleana condition avaliar para true; caso contrário, o código em second 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:

    Seleção escolhe entre caminhos baseado em uma condição
    Seleção escolhe entre caminhos baseado em uma condição
    IF (score ≥ 60)
    {
        DISPLAY("Pass")
    }
    ELSE
    {
        DISPLAY("Fail")
    }
    
    Explorar

    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 TIMES block of statements

      na qual o block of statements é executado n vezes.

    • AAP-2.K.3 A folha de referência do exame fornece

      Texto:

      REPEAT UNTIL(condition) { <block of statements> }

      Bloco:

      REPEAT UNTIL condition block of statements

      na qual o código em block of statements é repetido até que a expressão booleana condition avalie para true.

    • AAP-2.K.4 Em iteração REPEAT UNTIL(condition), um loop infinito ocorre quando a condição final nunca avaliará para true.

    • AAP-2.K.5 Em iteração REPEAT UNTIL(condition), se a condicional avaliar para true inicialmente, 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:

    Um loop de pré-condição (WHILE) testa antes do corpo, então pode executar zero vezes
    Um loop de pré-condição (WHILE) testa antes do corpo, então pode executar zero vezes
    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 无限循环.

    Explorar

    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

    Código-fonte Python em uma tela – algoritmos são instruções precisas e ordenadas
    Código-fonte Python em uma tela – algoritmos são instruções precisas e ordenadas

    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.

    Um fluxograma descreve um algoritmo usando os símbolos padrão
    Um fluxograma descreve um algoritmo usando os símbolos padrão
    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 i

        acessa o elemento de aList no índice i. O primeiro elemento de aList está no índice 1 e é acessado usando a notação aList[1].

      • atribuir um valor de um elemento de uma lista a uma variável

        Texto:

        x ← aList[i]

        Bloco:

        x ← aList i

        atribui o valor de aList[i] à variável x.

      • atribuir um valor a um elemento de uma lista

        Texto:

        aList[i] ← x

        Bloco:

        aList i ← x

        atribui o valor de x a aList[i].

        Texto:

        aList[i] ← aList[j]

        Bloco:

        aList i ← aList j

        atribui o valor de aList[j] a aList[i].

      • inserir elementos em um índice específico

        Texto:

        INSERT(aList, i, value)

        Bloco:

        INSERT aList, i, value

        desloca para a direita quaisquer valores em aList nos índices maiores ou iguais a i. O comprimento da lista é aumentado em 1, e value é colocado no índice i em aList.

      • adicionar elementos ao final da lista

        Texto:

        APPEND(aList, value)

        Bloco:

        APPEND aList, value

        aumenta o comprimento de aList em 1, e value é colocado no final de aList.

      • remover elementos

        Texto:

        REMOVE(aList, i)

        Bloco:

        REMOVE aList, i

        remove o item no índice i em aList e desloca para a esquerda quaisquer valores nos índices maiores que i. O comprimento de aList é 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 aList block of statements

      A variável item recebe o valor de cada elemento de aList sequencialmente, em ordem, do primeiro elemento ao último elemento. O código em block of statements é executado uma vez para cada atribuição de item.

    • 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:

    Uma lista armazena muitos valores em uma única variável, cada um encontrado pelo seu índice
    Uma lista armazena muitos valores em uma única variável, cada um encontrado pelo seu índice
    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
    }
    
    Vocabulário Treinar
    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

    Um telefone: a busca binária reduz pela metade as páginas restantes a cada passo
    Um telefone: a busca binária reduz pela metade as páginas restantes a cada passo

    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.

    A busca binária reduz o intervalo a cada passo (a lista deve estar ordenada)
    A busca binária reduz o intervalo a cada passo (a lista deve estar ordenada)

    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.

    Vocabulário Treinar
    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 statements

      que aceita zero ou mais argumentos; arg1 é atribuído a parameter1, arg2 é atribuído a parameter2, e assim por diante.

    • AAP-3.A.6 A folha de referência do exame fornece o procedimento

      Texto:

      DISPLAY(expression)

      Bloco:

      DISPLAY expression

      para 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 result o "valor do procedimento" sendo retornado pela chamada

      Texto:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

      Bloco:

      PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

    • AAP-3.A.9 A folha de referência do exame fornece o procedimento

      Texto:

      INPUT()

      Bloco:

      INPUT

      que 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 statements

      que é 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 statements RETURN expression

      que é usado para definir um procedimento que aceita zero ou mais argumentos. O procedimento contém block of statements e retorna o valor de expression. A instrução RETURN pode 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:

    Decompondo um programa em procedimentos e sub-procedimentos
    Decompondo um programa em procedimentos e sub-procedimentos
    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 抽象.

    Vocabulário Treinar
    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.

    Vocabulário Treinar
    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, b

      que gera e retorna um número inteiro aleatório de a a b, inclusive. Cada resultado tem igual probabilidade de ocorrer. Por exemplo, RANDOM(1, 3) pode retornar 1, 2 ou 3.

    • 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.

    Como o tempo de execução de um algoritmo cresce com o tamanho da entrada n
    Como o tempo de execução de um algoritmo cresce com o tamanho da entrada n
    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 <- expression atribui, 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.
  • 4

    Sistemas Computacionais e Redes

    Assistir aula
    4.1

    A Internet

    Programa

    Compreensão Duradoura (CSN-1): Sistemas computacionais e redes facilitam a transferência de dados.

    Objetivo de Aprendizagem CSN-1.A: Explicar como dispositivos computacionais trabalham juntos em uma rede. [Habilidade 5.A]

    • CSN-1.A.1 Um dispositivo computacional é um artefato físico que pode executar um programa. Alguns exemplos incluem computadores, tablets, servidores, roteadores e sensores inteligentes.
    • CSN-1.A.2 Um sistema computacional é um grupo de dispositivos computacionais e programas trabalhando juntos para um propósito comum.
    • CSN-1.A.3 Uma rede de computadores é um grupo de dispositivos computacionais interconectados capazes de enviar ou receber dados.
    • CSN-1.A.4 Uma rede de computadores é um tipo de sistema computacional.
    • CSN-1.A.5 Um caminho entre dois dispositivos computacionais em uma rede de computadores (um remetente e um destinatário) é uma sequência de dispositivos computacionais diretamente conectados que começa no remetente e termina no destinatário.
    • CSN-1.A.6 Roteamento é o processo de encontrar um caminho do remetente ao destinatário.
    • CSN-1.A.7 A largura de banda de uma rede de computadores é a quantidade máxima de dados que pode ser enviada em um período fixo de tempo.
    • CSN-1.A.8 A largura de banda geralmente é medida em bits por segundo.

    Objetivo de Aprendizagem CSN-1.B: Explicar como a Internet funciona. [Habilidade 5.A]

    • CSN-1.B.1 A Internet é uma rede de computadores composta por redes interconectadas que usam protocolos de comunicação padronizados e abertos (não proprietários).
    • CSN-1.B.2 O acesso à Internet depende da capacidade de conectar um dispositivo computacional a um dispositivo conectado à Internet.
    • CSN-1.B.3 Um protocolo é um conjunto de regras acordado que especifica o comportamento de um sistema.
    • CSN-1.B.4 Os protocolos usados na Internet são abertos, o que permite que os usuários conectem facilmente dispositivos computacionais adicionais à Internet.
    • CSN-1.B.5 O roteamento na Internet geralmente é dinâmico; não é especificado com antecedência.
    • CSN-1.B.6 A escalabilidade de um sistema é a capacidade do sistema de mudar de tamanho e escala para atender a novas demandas.
    • CSN-1.B.7 A Internet foi projetada para ser escalável.

    Objetivo de Aprendizagem CSN-1.C: Explicar como os dados são enviados pela Internet via pacotes. [Habilidade 5.A]

    • CSN-1.C.1 As informações são passadas pela Internet como um fluxo de dados. Fluxos de dados contêm pedaços de dados, que são encapsulados em pacotes.
    • CSN-1.C.2 Pacotes contêm um fragmento de dados e metadados usados para rotear o pacote entre a origem e o destino na Internet, bem como para o reensamblamento de dados.
    • CSN-1.C.3 Os pacotes podem chegar ao destino em ordem, fora de ordem ou não chegar em absoluto.
    • CSN-1.C.4 IP, TCP e UDP são protocolos comuns usados na Internet.

    Objetivo de Aprendizagem CSN-1.D: Descreva as diferenças entre a Internet e a World Wide Web. [Habilidade 5.A]

    • CSN-1.D.1 A World Wide Web é um sistema de páginas, programas e arquivos interligados.
    • CSN-1.D.2 HTTP é um protocolo usado pela World Wide Web.
    • CSN-1.D.3 A World Wide Web usa a Internet.

    Fonte: College Board AP Course and Exam Description

    Um conector Ethernet RJ45 — enlaces físicos transportam pacotes pela Internet
    Um conector Ethernet RJ45 — enlaces físicos transportam pacotes pela Internet

    A Internet 互联网 é uma rede global de redes. Os dados viajam como pacotes 数据包 – pequenos fragmentos que são enviados separadamente e remontados no destino. Duas ideias a tornam funcional em escala:

    A internet é a rede mundial; a web é um serviço rodando sobre ela
    A internet é a rede mundial; a web é um serviço rodando sobre ela
    • Protocolos 协议 são regras acordadas para comunicação. Endereços IP (Protocolo de Internet) roteiam pacotes; TCP os remontam em ordem e solicitam perdidos; HTTP transporta páginas da web; DNS traduz um nome como example.com em um endereço IP.
    • Redundância 冗余 e roteamento: existem muitos caminhos possíveis entre dois pontos, então se um caminho falhar, os pacotes tomam outro. Isso torna a Internet tolerante a falhas 容错.

    A Internet é projetada para ser aberta e escalável — baseada em padrões que qualquer um pode usar, para que continue funcionando à medida que bilhões de dispositivos se conectam. Largura de banda 带宽 é a quantidade de dados que uma conexão pode transportar por segundo.

    Explorar

    Como os dados cruzam a Internet em pacotes

    A Internet divide uma mensagem em pacotes numerados, cada um endereçado e roteado independentemente (muitas vezes por caminhos diferentes), e depois remontados no destino. Esse design a torna tolerante a falhas — se uma rota falhar, os pacotes seguem outra.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    Internet/ˈɪntənet/ 互联网 hù lián wǎng
    packets/ˈpækɪts/ 数据包 shù jù bāo
    Protocols/ˈprəʊtəkɒlz/ 协议 xié yì
    Redundancy/rɪˈdʌndənsi/ 冗余 rǒng yú
    fault-tolerant/fɒlt ˈtɒlərənt/ 容错 róng cuò
    Bandwidth/ˈbændwɪdθ/ 带宽 dài kuān
    reliability/rɪˌlaɪəˈbɪlɪti/ 可靠性 kě kào xìng
    Sequential computing/siːˈkwenʃl kəmˈpjuːtɪŋ/ 顺序计算 shùn xù jì suàn
    Parallel computing/ˈpærəlel kəmˈpjuːtɪŋ/ 并行计算 bìng xíng jì suàn
    Distributed computing/ˈdɪstrɪbjuːtɪd kəmˈpjuːtɪŋ/ 分布式计算 fēn bù shì jì suàn
    Assistir aula
    4.2

    Tolerância a Falhas

    Programa

    Compreensão Duradoura (CSN-1): Sistemas computacionais e redes facilitam a transferência de dados.

    Objetivo de Aprendizagem CSN-1.E: Para sistemas com tolerância a falhas, como a Internet: a. Descreva os benefícios da tolerância a falhas. [Habilidade 1.D] b. Explique como um dado sistema é tolerante a falhas. [Habilidade 5.A] c. Identifique vulnerabilidades a falhas em um sistema. [Habilidade 1.D]

    • CSN-1.E.1 A Internet foi projetada para ser tolerante a falhas, com abstrações para roteamento e transmissão de dados.
    • CSN-1.E.2 Redundância é a inclusão de componentes extras que podem ser usados para mitigar falhas de um sistema se outros componentes falharem.
    • CSN-1.E.3 Uma maneira de alcançar redundância de rede é ter mais de um caminho entre quaisquer dois dispositivos conectados.
    • CSN-1.E.4 Se um dispositivo ou conexão específico na Internet falhar, os dados subsequentes serão enviados por uma rota diferente, se possível.
    • CSN-1.E.5 Quando um sistema pode suportar falhas e ainda continuar funcionando, ele é chamado de tolerante a falhas. Isso é importante porque elementos de sistemas complexos falham em momentos inesperados, frequentemente em grupos, e a tolerância a falhas permite que os usuários continuem usando a rede.
    • CSN-1.E.6 A redundância dentro de um sistema geralmente requer recursos adicionais, mas pode oferecer o benefício da tolerância a falhas.
    • CSN-1.E.7 A redundância de opções de roteamento entre dois pontos aumenta a confiabilidade da Internet e ajuda ela a escalar para mais dispositivos e mais pessoas.

    Fonte: College Board AP Course and Exam Description

    Um roteador Wi-Fi: o gateway local que encaminha pacotes para a Internet mais ampla
    Um roteador Wi-Fi: o gateway local que encaminha pacotes para a Internet mais ampla

    Um sistema é tolerante a falhas se continua funcionando mesmo quando parte dele falha. A Internet alcança isso através de conexões redundantes: como pacotes podem ser roteados por múltiplos caminhos, a falha de um roteador ou cabo não interrompe a comunicação — o tráfego simplesmente é redirecionado. A tolerância a falhas custa recursos extras (os caminhos redundantes) mas melhora muito a confiabilidade 可靠性. Um único caminho sem backup não é tolerante a falhas.

    Comutação por pacotes envia pacotes por rotas independentes, permitindo que a rede tolera um enlace falho
    Comutação por pacotes envia pacotes por rotas independentes, permitindo que a rede tolera um enlace falho
    4.3

    Computação Paralela e Distribuída

    Programa

    Compreensão Permanente (CSN-2): A computação paralela e distribuída utiliza múltiplos computadores para resolver problemas complexos mais rapidamente ou processar grandes conjuntos de dados.

    Objetivo de Aprendizagem CSN-2.A: Para computação sequencial, paralela e distribuída: a. Compare soluções de problemas. [Habilidade 1.D] b. Determine a eficiência das soluções. [Habilidade 1.D]

    • CSN-2.A.1 Computação sequencial é um modelo computacional no qual as operações são realizadas em ordem, uma de cada vez.
    • CSN-2.A.2 Computação paralela é um modelo computacional onde o programa é dividido em várias operações menores de computação sequencial, algumas das quais são realizadas simultaneamente.
    • CSN-2.A.3 Computação distribuída é um modelo computacional no qual vários dispositivos são usados para executar um programa.
    • CSN-2.A.4 Comparar a eficiência das soluções pode ser feito comparando o tempo que elas levam para realizar a mesma tarefa.
    • CSN-2.A.5 Uma solução sequencial leva tanto tempo quanto a soma de todas as suas etapas.
    • CSN-2.A.6 Uma solução de computação paralela leva tanto tempo quanto suas tarefas sequenciais mais a mais longa de suas tarefas paralelas.
    • CSN-2.A.7 O "ganho de velocidade" de uma solução paralela é medido pelo tempo que levou para completar a tarefa sequencialmente dividido pelo tempo que levou para completar a tarefa quando feita em paralelo.

    Objetivo de Aprendizagem CSN-2.B: Descreva benefícios e desafios da computação paralela e distribuída. [Habilidade 1.D]

    • CSN-2.B.1 A computação paralela consiste em uma parte paralela e uma parte sequencial.
    • CSN-2.B.2 Soluções que usam computação paralela podem escalar mais eficazmente do que soluções que usam computação sequencial.
    • CSN-2.B.3 A computação distribuída permite resolver problemas que não poderiam ser resolvidos em um único computador devido ao tempo de processamento ou necessidades de armazenamento envolvidos.
    • CSN-2.B.4 A computação distribuída permite resolver problemas muito maiores mais rápido do que poderia ser feito usando um único computador.
    • CSN-2.B.5 Ao aumentar o uso de computação paralela em uma solução, a eficiência da solução ainda é limitada pela parte sequencial. Isso significa que, em algum momento, adicionar partes paralelas não aumentará significativamente a eficiência.

    Fonte: College Board AP Course and Exam Description

    Racks de servidores de centro de dados: computação distribuída espalha trabalho entre muitas máquinas
    Racks de servidores de centro de dados: computação distribuída espalha trabalho entre muitas máquinas
    • Computação sequencial 顺序计算 executa uma operação por vez.
    • Computação paralela 并行计算 divide uma tarefa em partes que são executadas ao mesmo tempo em vários processadores, terminando mais rápido.
    • Computação distribuída 分布式计算 usa muitos computadores conectados por uma rede para trabalhar em um único problema — essencial para problemas grandes demais para uma máquina única.
    Computação paralela: muitos processadores trabalham ao mesmo tempo
    Computação paralela: muitos processadores trabalham ao mesmo tempo

    O speedup 加速比 de uma solução paralela é o tempo sequencial dividido pelo tempo paralelo. O speedup é limitado: partes que devem ser executadas em sequência não podem ser aceleradas adicionando processadores, então dobrar os processadores raramente dobra a velocidade.

    Exemplo resolvido. Uma tarefa possui uma parte que deve ser executada sequencialmente, levando $40$ segundos, mais uma parte paralelizável que leva $60$ segundos em um único processador — portanto, em um único processador a tarefa inteira leva $40+60=100$ segundos. Distribuir a parte paralela por $3$ processadores e ela levará $\tfrac{60}{3}=20$ segundos, então o tempo total paralelo é $40+20=60$ segundos e o ganho de velocidade é $\tfrac{100}{60}\approx1.67$. A parte sequencial de $40$ segundos é um piso: mesmo com infinitos processadores, a tarefa nunca poderá terminar em menos de $40$ segundos.

    Habilidade para prova: dadas as tempos das partes sequenciais e paralelas de uma tarefa, ser capaz de calcular o tempo total paralelo e o ganho de velocidade.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    speedup/ˈspiːdʌp/ 加速比 jiā sù bǐ
    4.3

    Dicas de prova

    • Descrever como os dados viajam em pacotes através de uma rede redundante e tolerante a falhas de roteadores independentes.
    • Saber que protocolos (IP, TCP, HTTP) são regras acordadas, e que padrões abertos permitem a interoperabilidade entre sistemas diferentes.
    • Explicar escalabilidade e como a Internet cresce sem controle central.
    • Contrastar largura de banda (taxa) com latência (atraso), e descrever a consulta de nome para endereço do DNS.
    • Discutir a divisão digital e conceitos básicos de segurança (criptografia, autenticação) em termos simples.
  • 5

    Impacto da Computação

    Assistir aula
    5.1

    Efeitos Benéficos e Nocivos

    Programa

    Compreensão Permanente (IOC-1): Embora as inovações computacionais sejam tipicamente projetadas para atingir um propósito específico, elas podem ter consequências não intencionais.

    Objetivo de Aprendizagem IOC-1.A: Explique como um efeito de uma inovação computacional pode ser tanto benéfico quanto prejudicial. [Habilidade 5.C]

    • IOC-1.A.1 As pessoas criam inovações computacionais.
    • IOC-1.A.2 A forma como as pessoas realizam tarefas muitas vezes muda para incorporar novas inovações computacionais.
    • IOC-1.A.3 Nem todo efeito de uma inovação computacional é antecipado com antecedência.
    • IOC-1.A.4 Um único efeito pode ser visto como benéfico e prejudicial por diferentes pessoas, ou até mesmo pela mesma pessoa.
    • IOC-1.A.5 Avanços na computação geraram e aumentaram a criatividade em outros campos, como medicina, engenharia, comunicações e artes.

    Objetivo de Aprendizagem IOC-1.B: Explique como uma inovação computacional pode ter um impacto além de seu propósito pretendido. [Habilidade 5.C]

    • IOC-1.B.1 Inovações computacionais podem ser usadas de maneiras que seus criadores não haviam previsto originalmente:
      • A World Wide Web foi originalmente destinada apenas à troca rápida e fácil de informações dentro da comunidade científica.
      • Anúncios direcionados são usados para ajudar empresas, mas podem ser mal utilizados nos níveis individual e agregado.
      • Aprendizado de máquina e mineração de dados permitiram inovação em medicina, negócios e ciência, mas informações descobertas dessa forma também foram usadas para discriminar contra grupos de indivíduos.
    • IOC-1.B.2 Algumas das formas como as inovações computacionais podem ser usadas podem ter um impacto prejudicial na sociedade, economia ou cultura.
    • IOC-1.B.3 Programadores responsáveis tentam considerar as formas não intencionais como suas inovações computacionais podem ser usadas e os possíveis efeitos benéficos e prejudiciais desses novos usos.
    • IOC-1.B.4 Não é possível para um programador considerar todas as formas como uma inovação computacional pode ser usada.
    • IOC-1.B.5 Inovações computacionais muitas vezes tiveram efeitos benéficos não intencionais ao levar a avanços em outros campos.
    • IOC-1.B.6 O compartilhamento rápido de um programa ou a execução de um programa com um grande número de usuários pode resultar em impactos significativos além do propósito pretendido ou controle do programador.

    Fonte: College Board AP Course and Exam Description

    Uma pilha de lixo eletrônico — o computação tem custos ambientais além de benefícios
    Uma pilha de lixo eletrônico — o computação tem custos ambientais além de benefícios

    Toda inovação em computação pode ser usada de formas que ajudam e de formas que prejudicam — muitas vezes a mesma tecnologia faz ambas. Uma rede social conecta pessoas e pode espalhar desinformação; a automação aumenta a produtividade e pode eliminar empregos. Os efeitos frequentemente são inintencionais: os criadores não podem prever cada uso. Ao avaliar uma inovação computacional, pese seus benefícios e danos às pessoas e à sociedade, e lembre-se de que os danos nem sempre são intencionais.

    A computação afeta o bem-estar público de várias maneiras
    A computação afeta o bem-estar público de várias maneiras

    A computação também gera criatividade em outros campos, que o CED pede como benefício em seu próprio direito, não meramente como conveniência: modelagem e imagens em medicina, simulação em engenharia, novas formas nas artes e música, e novos tipos de comunicação inteiramente. Os efeitos benéficos de uma inovação muitas vezes estão em um campo distante da computação.

    5.2

    A Divisão Digital

    Programa

    Compreensão Permanente (IOC-1): Embora as inovações computacionais sejam tipicamente projetadas para atingir um propósito específico, elas podem ter consequências não intencionais.

    Objetivo de Aprendizagem IOC-1.C: Descreva questões que contribuem para a divisão digital. [Habilidade 5.C]

    • IOC-1.C.1 O acesso à Internet varia entre características socioeconômicas, geográficas e demográficas, bem como entre países.
    • IOC-1.C.2 A "divisão digital" refere-se ao acesso diferenciado a dispositivos computacionais e à Internet, baseado em características socioeconômicas, geográficas ou demográficas.
    • IOC-1.C.3 A divisão digital pode afetar tanto grupos quanto indivíduos.
    • IOC-1.C.4 A divisão digital levanta questões de equidade, acesso e influência, tanto global quanto localmente.
    • IOC-1.C.5 A divisão digital é afetada pelas ações de indivíduos, organizações e governos.

    Fonte: College Board AP Course and Exam Description

    A divisão digital 数字鸿沟 é o acesso desigual à computação e à Internet entre grupos — por renda, geografia, idade ou país. Aqueles com acesso ganham educação, empregos e serviços; aqueles sem ficam ainda mais para trás. A divisão é moldada por fatores econômicos, sociais e geográficos, e esforços para fechá-la (dispositivos acessíveis, acesso público, infraestrutura) visam tornar os benefícios da computação mais justos.

    Computadores de biblioteca pública: a divisão digital trata-se de acesso desigual a dispositivos, conectividade e habilidades
    Computadores de biblioteca pública: a divisão digital trata-se de acesso desigual a dispositivos, conectividade e habilidades
    Uma antena parabólica rural: a geografia ainda determina quem recebe internet rápida e quem espera
    Uma antena parabólica rural: a geografia ainda determina quem recebe internet rápida e quem espera
    5.3

    Viesamento Computacional

    Programa

    Compreensão Permanente (IOC-1): Embora as inovações computacionais sejam tipicamente projetadas para atingir um propósito específico, elas podem ter consequências não intencionais.

    Objetivo de Aprendizagem IOC-1.D: Explique como o viés existe em inovações computacionais. [Habilidade 5.E]

    • IOC-1.D.1 Inovações computacionais podem refletir vieses humanos existentes devido a vieses escritos nos algoritmos ou vieses nos dados usados pela inovação.
    • IOC-1.D.2 Programadores devem tomar medidas para reduzir o viés em algoritmos usados em inovações computacionais como uma forma de combater os vieses humanos existentes.
    • IOC-1.D.3 Vieses podem estar embutidos em todos os níveis do desenvolvimento de software.

    Fonte: College Board AP Course and Exam Description

    Um carro autônomo na rua de uma cidade — sistemas autônomos levantam questões de segurança e viesamento
    Um carro autônomo na rua de uma cidade — sistemas autônomos levantam questões de segurança e viesamento

    Viesamento 偏见 pode estar embutido em sistemas computacionais — muitas vezes sem intenção. Se os dados usados para construir um sistema refletem preconceitos existentes, ou se as suposições dos projetistas são unilaterais, o sistema pode produzir resultados injustos (por exemplo, uma ferramenta de contratação que favorece um grupo). O viesamento pode entrar em todas as etapas — coleta de dados, projeto e uso — então os sistemas devem ser testados quanto à equidade entre diferentes grupos. Reconhecer que "o computador disse" não é o mesmo que "justo" é um hábito importante.

    5.4

    Crowdsourcing

    Programa

    Compreensão Permanente (IOC-1): Embora as inovações computacionais sejam tipicamente projetadas para atingir um propósito específico, elas podem ter consequências não intencionais.

    Objetivo de Aprendizagem IOC-1.E: Explique como as pessoas participam de processos de resolução de problemas em escala. [Habilidade 1.C]

    • IOC-1.E.1 O acesso generalizado a informações e dados públicos facilita a identificação de problemas, o desenvolvimento de soluções e a disseminação de resultados.
    • IOC-1.E.2 A Ciência foi afetada pelo uso da computação distribuída e da "ciência cidadã" para resolver problemas científicos.
    • IOC-1.E.3 Ciência cidadã é pesquisa científica realizada total ou parcialmente por indivíduos distribuídos, muitos dos quais podem não ser cientistas, que contribuem com dados relevantes para a pesquisa usando seus próprios dispositivos computacionais.
    • IOC-1.E.4 Crowdsourcing é a prática de obter entrada ou informação de um grande número de pessoas via Internet.
    • IOC-1.E.5 Capacidades humanas podem ser aprimoradas por meio da colaboração via computação.
    • IOC-1.E.6 O crowdsourcing oferece novos modelos de colaboração, como conectar empresas ou causas sociais a financiamentos.

    Fonte: College Board AP Course and Exam Description

    Crowdsourcing 众包 obtém input, ideias ou financiamento de um grande grupo de pessoas, geralmente online. Ele aproveita o conhecimento e o esforço de muitos — projetos de mapeamento, avaliações de produtos, ciência cidadã e crowdfunding dependem disso. A Internet torna o crowdsourcing possível em escala e velocidade jamais alcançadas antes, permitindo que um projeto conte com contribuidores de todo o mundo.

    Uma edição coletiva no Wikipedia: crowdsourcing reúne o trabalho de muitas pessoas em um recurso compartilhado
    Uma edição coletiva no Wikipedia: crowdsourcing reúne o trabalho de muitas pessoas em um recurso compartilhado
    Vocabulário Treinar
    Inglês Chinês Pinyin
    digital divide/ˈdɪdʒɪtl dɪˈvaɪd/ 数字鸿沟 shù zì hóng gōu
    Bias/ˈbaɪəs/ 偏见 piān jiàn
    Crowdsourcing/ˈkraʊdsɔːsɪŋ/ 众包 zhòng bāo
    Intellectual property/ˌɪntəˈlektʃuːəl ˈprɒpəti/ 知识产权 zhī shí chǎn quán
    5.5

    Preocupações Legais e Éticas

    Programa

    Compreensão Permanente (IOC-1): Embora as inovações computacionais sejam tipicamente projetadas para atingir um propósito específico, elas podem ter consequências não intencionais.

    Objetivo de Aprendizagem IOC-1.F: Explique como o uso da computação pode levantar preocupações legais e éticas. [Habilidade 5.E]

    • IOC-1.F.1 Material criado em um computador é propriedade intelectual do criador ou de uma organização.
    • IOC-1.F.2 A facilidade de acesso e distribuição de informações digitalizadas levanta preocupações de propriedade intelectual sobre posse, valor e uso.
    • IOC-1.F.3 Devem ser tomadas medidas para salvaguardar a propriedade intelectual.
    • IOC-1.F.4 O uso de material criado por outra pessoa sem permissão e apresentado como próprio é plágio e pode ter consequências legais.
    • IOC-1.F.5 Alguns exemplos de formas legais de usar materiais criados por outras pessoas incluem:
      • Creative Commons — uma licença pública de direitos autorais que permite a distribuição gratuita de uma obra protegida por direitos autorais. Isso é usado quando o criador do conteúdo deseja dar aos outros o direito de compartilhar, usar e criar obras derivadas baseadas no trabalho que criou.
      • código aberto—programas que são disponibilizados gratuitamente e podem ser redistribuídos e modificados
      • acesso aberto—produção de pesquisa online gratuita, sem quaisquer restrições de acesso e com poucas ou nenhuma restrição de uso, como direitos autorais ou licenças
    • IOC-1.F.6 O uso de material criado por outra pessoa deve sempre ser citado.
    • IOC-1.F.7 Creative Commons, código aberto e acesso aberto permitiram amplo acesso a informações digitais.
    • IOC-1.F.8 Assim como qualquer tecnologia ou meio, o uso da computação para prejudicar indivíduos ou grupos levanta questões legais e éticas.
    • IOC-1.F.9 A computação pode desempenhar um papel em questões sociais e políticas, o que frequentemente levanta questões legais e éticas.
    • IOC-1.F.10 A lacuna digital levanta preocupações éticas relacionadas à computação.
    • IOC-1.F.11 Inovações em computação podem levantar questões legais e éticas. Alguns exemplos incluem:
      • o desenvolvimento de software que permite acesso a downloads e streaming de mídia digital
      • o desenvolvimento de algoritmos que contêm viés
      • a existência de dispositivos computacionais que coletam e analisam dados monitorando continuamente atividades

    Fonte: College Board AP Course and Exam Description

    Uma sala de controle de CCTV: sistemas de vigilância trocam ganhos de segurança contra preocupações de privacidade
    Uma sala de controle de CCTV: sistemas de vigilância trocam ganhos de segurança contra preocupações de privacidade

    A computação levanta questões de lei e ética:

    • Propriedade intelectual 知识产权 e direito autor 版权 protegem o trabalho dos criadores; usá-lo pode exigir permissão ou licença. Código-fonte aberto 开源 e licenças Creative Commons permitem que criadores compartilhem seu trabalho sob termos declarados.
    • Plágio 抄袭 – usar o trabalho de outros como próprio – é antiético e muitas vezes ilegal.
    • Coletar e usar dados pessoais levanta questões de privacidade sobre consentimento e uso indevido.

    Os três termos "abertos", que não são a mesma coisa

    Termo O que significa
    code-source open programas que são disponibilizados gratuitamente e podem ser redistribuídos e modificados por qualquer pessoa. A licença concede esses direitos explicitamente — gratuito não é a mesma coisa que código-fonte aberto, e um programa gratuito que você não pode modificar não é código-fonte aberto.
    open access 开放获取 pesquisa e outro conteúdo disponibilizado online sem custo, para que um leitor não precise de assinatura. Não diz nada sobre o direito de modificar.
    Creative Commons 知识共享 um conjunto de licenças que um criador aplica ao seu próprio trabalho para conceder permissões específicas antecipadamente — por exemplo "você pode reutilizar isso se me creditar" ou "você pode reutilizar isso mas não comercialmente".

    Os três são maneiras de conceder direitos que o criador detém por padrão sob copyright. É por isso que importam para a prova: o copyright é automático, então qualquer coisa não licenciada explicitamente é restrita, e usá-la precisa de permissão.

    O fato de algo ser tecnicamente possível não o torna legal ou ético.

    O que é registrado enquanto você navega

    Dois caminhos de coleta que o CED nomeia, e nenhum exige que você digite algo:

    • Sites podem registrar e manter um histórico dos indivíduos que visualizaram suas páginas — quais páginas, quando, quanto tempo e de qual dispositivo.
    • Motores de busca podem usar seu histórico de buscas para sugerir sites, e para vender marketing direcionado: o anúncio segue a busca, é por isso que um produto pesquisado uma vez aparece por semanas.

    Nenhum é inerentemente malicioso, e ambos são o mecanismo por trás de serviços que as pessoas acham úteis. O ponto que a prova quer é que dados coletados para um fim podem ser combinados e usados para outro, muitas vezes sem a pessoa perceber que concordou com isso.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    copyright/ˈkɒpɪraɪt/ 版权 bǎn quán
    Open-source/ˈəʊpən sɔːs/ 开源 kāi yuán
    Plagiarism/ˈpleɪdʒərɪzəm/ 抄袭 chāo xí
    open access/ˈəʊpən ˈækses/ 开放获取 kāi fàng huò qǔ
    Creative Commons/kriːˈeɪtɪv ˈkɒmənz/ 知识共享 zhī shí gòng xiǎng
    Personally identifiable information (PII)/ˈpɜːsənəli aɪˈdentɪfaɪəbl ˌɪnfəˈmeɪʃn/ 个人身份信息 gè rén shēn fèn xìn xī
    identity theft/aɪˈdentɪti θeft/ 身份盗窃 shēn fèn dào qiè
    5.6

    Computação Segura

    Programa

    Compreensão Duradoura (IOC-2): O uso de inovações em computação pode envolver riscos à segurança pessoal e à identidade.

    Objetivo de Aprendizagem IOC-2.A: Descrever os riscos à privacidade decorrentes da coleta e armazenamento de dados pessoais em um sistema computacional. [Habilidade 5.D]

    • IOC-2.A.1 Informações pessoais identificáveis (PII) são informações sobre um indivíduo que o identificam, vinculam, relacionam ou descrevem. Exemplos de PII incluem:
      • número do Seguro Social
      • idade
      • raça
      • número(s) de telefone
      • informações médicas
      • informações financeiras
      • dados biométricos
    • IOC-2.A.2 Motores de busca podem registrar e manter um histórico de buscas feitas pelos usuários.
    • IOC-2.A.3 Sites podem registrar e manter um histórico de pessoas que visualizaram suas páginas.
    • IOC-2.A.4 Dispositivos, sites e redes podem coletar informações sobre a localização de um usuário.
    • IOC-2.A.5 A tecnologia permite a coleta, uso e exploração de informações sobre, por e para indivíduos, grupos e instituições.
    • IOC-2.A.6 Motores de busca podem usar o histórico de buscas para sugerir sites ou para marketing direcionado.
    • IOC-2.A.7 Dados pessoais dispersos, como geolocalização, cookies e histórico de navegação, podem ser agregados para criar conhecimento sobre um indivíduo.
    • IOC-2.A.8 PII e outras informações colocadas online podem ser usadas para melhorar as experiências online de um usuário.
    • IOC-2.A.9 PII armazenada online pode ser usada para simplificar compras online.
    • IOC-2.A.10 A curadoria comercial e governamental de informações pode ser explorada se a privacidade e outras proteções forem ignoradas.
    • IOC-2.A.11 Informações colocadas online podem ser usadas de maneiras não previstas e que podem ter impacto prejudicial. Por exemplo, uma mensagem de e-mail pode ser reencaminhada, tweets podem ser repostados e posts nas redes sociais podem ser visualizados por empregadores potenciais.
    • IOC-2.A.12 PII pode ser usada para assediar ou roubar a identidade de uma pessoa ou ajudar no planejamento de outros atos criminosos.
    • IOC-2.A.13 Uma vez que informações são colocadas online, é difícil excluí-las.
    • IOC-2.A.14 Programas podem coletar sua localização e registrar onde você esteve, como chegou lá e quanto tempo ficou em um determinado local.
    • IOC-2.A.15 Informações postadas em serviços de mídias sociais podem ser usadas por outras pessoas. Combinar informações postadas em mídias sociais com outras fontes pode ser usado para deduzir informações privadas sobre você.

    Objetivo de Aprendizagem IOC-2.B: Explicar como recursos computacionais podem ser protegidos e mal utilizados. [Habilidade 5.E]

    • IOC-2.B.1 Medidas de autenticação protegem dispositivos e informações contra acessos não autorizados. Exemplos de medidas de autenticação incluem senhas fortes e autenticação multifator.
    • IOC-2.B.2 Uma senha forte é algo que é fácil para um usuário lembrar, mas que seria difícil para outra pessoa adivinhar com base no conhecimento desse usuário.
    • IOC-2.B.3 Autenticação multifator é um método de controle de acesso ao computador em que um usuário só é concedido acesso após apresentar com sucesso várias peças separadas de evidência a um mecanismo de autenticação, geralmente em pelo menos duas das seguintes categorias: conhecimento (algo que eles sabem), posse (algo que eles têm) e inherência (algo que eles são).
    • IOC-2.B.4 A autenticação multifator requer pelo menos duas etapas para desbloquear informações protegidas; cada etapa adiciona uma nova camada de segurança que deve ser quebrada para obter acesso não autorizado.
    • IOC-2.B.5 Criptografia é o processo de codificação de dados para evitar acessos não autorizados. Descriptografia é o processo de decodificação dos dados. Duas abordagens comuns de criptografia são:
      • Criptografia de chave simétrica envolve uma chave tanto para criptografia quanto para descriptografia.
      • Criptografia de chave pública combina uma chave pública para criptografia e uma chave privada para descriptografia. O remetente não precisa da chave privada do destinatário para criptografar uma mensagem, mas a chave privada do destinatário é necessária para descriptografar a mensagem.
      • Declaração de exclusão (EK IOC-2.B.5): Procedimentos matemáticos específicos para criptografia e descriptografia estão além do escopo deste curso e do exame AP.
    • IOC-2.B.6 Autoridades de certificação emitem certificados digitais que validam a propriedade de chaves de criptografia usadas em comunicações seguras e são baseados em um modelo de confiança.
    • IOC-2.B.7 Software de verificação de vírus e malware pode ajudar a proteger um sistema computacional contra infecções.
    • IOC-2.B.8 Um vírus computacional é um programa malicioso que pode copiar-se e ganhar acesso a um computador de forma não autorizada. Vírus computacionais frequentemente se anexam a programas legítimos e começam a executar independentemente em um computador.
    • IOC-2.B.9 Malware é software destinado a danificar um sistema computacional ou a assumir controle parcial de sua operação.
    • IOC-2.B.10 Todos os sistemas do mundo real possuem erros ou falhas de projeto que podem ser explorados para comprometer seu funcionamento. Atualizações regulares de software ajudam a corrigir erros que poderiam comprometer um sistema computacional.
    • IOC-2.B.11 Usuários podem controlar as permissões que os programas têm para coletar informações do usuário. Os usuários devem revisar as configurações de permissão dos programas para proteger sua privacidade.

    Objetivo de Aprendizagem IOC-2.C: Explicar como o acesso não autorizado a recursos computacionais é obtido. [Habilidade 5.E]

    • IOC-2.C.1 Phishing é uma técnica que tenta enganar um usuário para fornecer informações pessoais. Essas informações podem então ser usadas para acessar recursos online sensíveis, como contas bancárias e e-mails.
    • IOC-2.C.2 Keylogging é o uso de um programa para registrar cada tecla pressionada por um usuário de computador com o objetivo de obter acesso fraudulento a senhas e outras informações confidenciais.
    • IOC-2.C.3 Dados enviados por meio de redes públicas podem ser interceptados, analisados e modificados. Uma maneira pela qual isso pode acontecer é através de um ponto de acesso ilegítimo.
    • IOC-2.C.4 Um ponto de acesso ilegítimo é um ponto de acesso sem fio que fornece acesso não autorizado a redes seguras.
    • IOC-2.C.5 Um link malicioso pode estar disfarçado em uma página da web ou em uma mensagem de e-mail.
    • IOC-2.C.6 E-mails não solicitados, anexos, links e formulários em e-mails podem ser usados para comprometer a segurança de um sistema computacional. Eles podem vir de remitentes desconhecidos ou de remitentes conhecidos cujassegurança foi comprometida.
    • IOC-2.C.7 Downloads não confiáveis (frequentemente gratuitos) de sites de freeware ou shareware podem conter malware.

    Fonte: College Board AP Course and Exam Description

    Proteger dados pessoais é uma responsabilidade compartilhada. Ideias-chave:

    Criptografia embaralha texto claro com uma chave; apenas a chave pode descriptografá-la
    Criptografia embaralha texto claro com uma chave; apenas a chave pode descriptografá-la
    • Informações de identificação pessoal (PII) 个人身份信息 (nome, endereço, números de ID) devem ser compartilhadas com cuidado, pois podem ser usadas indevidamente para fraude de identidade 身份盗窃.
    • As ameaças incluem phishing 网络钓鱼 (enganá-lo a revelar informações), malware 恶意软件 e senhas fracas.
    • Um link malicioso pode estar disfarçado em uma página web ou em uma mensagem de e-mail: o texto que você vê e o endereço real para onde ele vai são separados, então um link lendo www.yourbank.com pode apontar para qualquer lugar. Passe o mouse para ver o destino real antes de clicar, e seja mais suspeito de um link que chega inesperadamente e cria urgência.
    • As defesas incluem senhas fortes e únicas, autenticação multifator 多因素认证, criptografia 加密 (embaralhar dados para que apenas pessoas autorizadas possam lê-las) e manter o software atualizado.

    Criptografia é a ferramenta central para manter os dados privados em trânsito e armazenamento. Ser um usuário responsável de computador significa proteger suas próprias e as informações dos outros.

    Habilidade para prova: ser capaz de identificar os efeitos benéficos e nocivos de uma inovação dada, explicar um risco de privacidade ou segurança, e citar uma prática de computação segura que a aborda.

    Exemplo resolvido. Um algoritmo de contratação é treinado com contratações passadas de uma empresa, que eram majoritariamente de um grupo, e depois rejeita candidatos qualificados de outros grupos. Nomeie o problema e sua causa: este é viesamento computacional, causado por dados de treinamento enviesados — o modelo aprendeu o padrão histórico em vez de uma regra justa. Uma resposta completa de prova afirma o dano (pessoas qualificadas são injustamente rejeitadas) e sua causa (o viesamento veio dos dados, não do código).

    Explorar

    Embaralhe uma mensagem com criptografia

    Criptografia protege os dados embaralhando-os com uma chave; apenas alguém com a chave pode lê-la de volta. Este cifra de César simples desloca cada letra — a criptografia real usa a mesma ideia com chaves muito mais fortes para manter senhas e mensagens seguras.

    Vocabulário Treinar
    Inglês Chinês Pinyin
    phishing/ˈfɪʃɪŋ/ 网络钓鱼 wǎng luò diào yú
    malware/ˈmælweə/ 恶意软件 è yì ruǎn jiàn
    multi-factor authentication/ˈmʌlti ˈfæktə ɔːˌθentɪˈkeɪʃn/ 多因素认证 duō yīn sù rèn zhèng
    encryption/enˈkrɪpʃn/ 加密 jiā mì
    open source/ˈəʊpən sɔːs/ 开源 kāi yuán
    5.6

    Dicas de prova

    • Argumentar ambos os efeitos benéficos e nocivos de uma inovação computacional — uma resposta equilibrada pontua melhor.
    • Use termos corretos para preocupações com dados: PII, privacidade, segurança e viesamento algorítmico.
    • Explique como crowdsourcing e grandes conjuntos de dados criam valor e levantam novos riscos.
    • Distinguir a divisão digital (acesso) do viesamento (equidade) e dar um exemplo concreto de cada um.
    • Vincular cada afirmação a uma inovação e efeito específicos, conforme a resposta escrita exige.

Entrar ou criar conta

IGCSE, A-Level & AP