Pular para o conteúdo

Desenvolvimento Criativo

Princípios de Ciência da Computação do AP · Tópico 1

Treinar
Videoaula para este tópico Abrir a página do vídeo
6:15

Desenvolvimento Criativo

Aqui está um programa que deveria imprimir a média de dois números. Ele executa. Não falha. Imprime uma resposta — e a resposta está errada. Dê a ele quatro e seis…

Narração em inglês · Legendas em inglês + 中文 gravadas

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.

Aulas interativas sobre este tópico

Passe por ele passo a passo, com exercícios de verificação instantânea.

Provas Anteriores

Mais tópicos em Princípios de Ciência da Computação do AP

Entrar ou criar conta

IGCSE, A-Level & AP