| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| 1 Entenda o ciclo de vida do desenvolvimento de programas, limitado a: análise, projeto, codificação e testes | • Incluindo identificar cada etapa e realizar essas tarefas para cada etapa: – análise: abstração, decomposição do problema, identificação do problema e requisitos – projeto: decomposição, diagramas de estrutura, fluxogramas, pseudocódigo – codificação: escrita de código de programa e testes iterativos – testes: teste de código de programa com o uso de dados de teste |
| 2 (a) Entenda que todo sistema computacional é composto por sub-sistemas, que são compostos por outros sub-sistemas (b) Entenda como um problema pode ser decomposto em suas partes componentes | • Incluindo: – entradas – processos – saídas – armazenamento |
| (c) Use diferentes métodos para projetar e construir uma solução para um problema | • Incluindo: – diagramas de estrutura – fluxogramas – pseudocódigo |
| 3 Explique a finalidade de um algoritmo dado | • Incluindo: – stating the purpose of an algorithm – describing the processes involved in an algorithm |
| 4 Entenda métodos padrão de solução | • Limitado a: – busca linear – ordenação bolha – totalização – contagem – encontrar valores máximo, mínimo e médio |
| 5 (a) Entenda a necessidade de verificações de validação serem feitas nos dados de entrada e os diferentes tipos de verificação de validação | • Incluindo: – verificação de intervalo – verificação de comprimento – verificação de tipo – verificação de presença – verificação de formato – dígito verificador |
| (b) Compreender a necessidade de checks de verificação nos dados de entrada e os diferentes tipos de checks de verificação | • Incluindo: – check visual – check de entrada dupla |
| 6 Sugerir e aplicar dados de teste adequados | • Limitado a: – normal – anormal – extremo – limite • Dados extremos são o maior/menor valor aceitável • Dados de limite são o maior/menor valor aceitável e o correspondente menor/maior valor rejeitado |
| 7 Preencher uma tabela de traçagem para documentar um dry-run de um algoritmo | • Incluindo, em cada etapa do algoritmo: – variáveis – saídas – prompts ao usuário |
| 8 Identificar erros em algoritmos fornecidos e sugerir formas de corrigi-los | |
| 9 Escrever e alterar algoritmos para problemas ou cenários dados, usando: pseudocódigo, código de programa e fluxogramas | • Precisão é necessária ao escrever algoritmos, ex: x > y é aceitável, mas x is greater than y não é aceitável • Veja seção 4 para símbolos de fluxograma • Veja seção 4 para pseudocódigo |
Projeto de algoritmos e resolução de problemas
Ciência da Computação do IGCSE · Tópico 7
9:17
O Ciclo de Vida do Desenvolvimento de Programas
Cada aplicativo no seu celular foi escrito por alguém assim. Mas eles não começaram digitando código. Antes da primeira linha, o problema foi estudado, a solução…
Narração em inglês · Legendas em inglês + 中文 gravadas
Programa
Fonte: Programa Cambridge International
7.1
Ciclo de vida do desenvolvimento de programas
O ciclo de vida do desenvolvimento de programas 程序开发生命周期 é o conjunto de etapas usadas para criar um programa. Existem quatro etapas.

| Etapa | O que você faz |
|---|---|
| análise 分析 | estudar o problema e descobrir o que é necessário |
| projeto 设计 | planejar como o programa funcionará |
| codificação 编码 | escrever o código do programa e testá-lo conforme avança |
| testes 测试 | executar o programa finalizado com dados de teste para encontrar erros |


Análise
Na análise você entende o problema. Duas habilidades-chave ajudam:
- abstração 抽象 — manter apenas os detalhes importantes e ignorar o resto;
- decomposição 分解 — dividir um grande problema em partes menores e mais fáceis.
Projeto
No projeto você planeja a solução, frequentemente usando decomposição. Você pode mostrar as partes como sub-sistemas 子系统 em um diagrama estrutural 结构图 (um gráfico que divide um sistema em caixas menores).
Codificação e testes
Na codificação você escreve o código do programa. Você usa testes iterativos 迭代测试 — testa pequenas partes repetidamente à medida que as constrói. Nos testes você executa todo o programa com dados de teste 测试数据 para verificar se funciona.
| Inglês | Chinês | Pinyin |
|---|---|---|
| flowchart/ˈfləʊtʃɑːt/ | 流程图 | liú chéng tú |
7.2
Ferramentas de projeto
Você pode planejar uma solução de três maneiras principais.
- um diagrama estrutural — mostra as partes de um sistema e como elas se encaixam;
- um fluxograma 流程图 — um diagrama usando caixas e setas para mostrar os passos em ordem;
- pseudocódigo 伪代码 — passos escritos em inglês simples, similar a código (não uma linguagem real).

7.3
Algoritmos
Um algoritmo 算法 é um conjunto de passos, na ordem correta, que resolve um problema. Todo algoritmo pode ser dividido em três partes:
- entrada 输入 — os dados que entram;
- processamento 处理 — o trabalho realizado nos dados;
- saída 输出 — o resultado que sai.
Isso é chamado de decomposição em entradas, processos e saídas. Por exemplo, para "encontrar a média de três notas": as entradas são as três notas; o processamento é somá-las e dividir por 3; a saída é a média.

7.4
Validação e verificação
Quando os dados são inseridos, você os verifica para reduzir erros.
Validação 验证 verifica se os dados são razoáveis e seguem as regras. Ela não pode verificar se os dados são verdadeiros, apenas se são permitidos.
| Verificação de validação | O que ela verifica |
|---|---|
| verificação de intervalo 范围检查 | o valor está entre um valor mínimo e máximo permitido |
| verificação de comprimento 长度检查 | o número de caracteres é permitido (ex: uma senha ≥ 8) |
| verificação de tipo 类型检查 | o dado é do tipo correto (ex: um número, não letras) |
| verificação de presença 存在性检查 | algo foi realmente inserido (não deixado em branco) |
| format check 格式检查 | os dados estão no padrão correto (ex.: data como dd/mm/yyyy) |
| check digit 校验码 | um dígito extra confirma que um número foi inserido corretamente |
Verification 核实 verifica que os dados foram copiados ou inseridos corretamente (sem erros ao digitar). Dois métodos:
- visual check 目视检查 — uma pessoa compara os dados digitados com o original;
- double entry 双重输入 — os dados são inseridos duas vezes e as duas cópias são comparadas.
| Inglês | Chinês | Pinyin |
|---|---|---|
| format check/ˈfɔːmæt tʃek/ | 格式检查 | gé shì jiǎn chá |
| check digit/tʃek ˈdɪdʒɪt/ | 校验码 | jiào yàn mǎ |
| verification/ˌverɪfɪˈkeɪʃn/ | 核实 | hé shí |
| visual check/ˈvɪʒuːəl tʃek/ | 目视检查 | mù shì jiǎn chá |
| double entry/ˈdʌbl ˈentri/ | 双重输入 | shuāng chóng shū rù |
7.5
Trace tables
Uma trace table 追踪表 registra o valor de cada variável conforme um algoritmo é executado, passo a passo. Ela ajuda você a:

- verificar se um algoritmo funciona corretamente;
- descobrir o que um algoritmo faz seguindo-o com dados fornecidos.
Exemplo: faça a traça deste algoritmo com a entrada 5.
INPUT N
Total ← 0
FOR I ← 1 TO N
Total ← Total + I
NEXT I
OUTPUT Total
| i | total | OUTPUT |
|---|---|---|
| 1 | 1 | |
| 2 | 3 | |
| 3 | 6 | |
| 4 | 10 | |
| 5 | 15 | 15 |
A traça mostra que o algoritmo soma de 1 até n. Com entrada 5, a saída é 15.
Worked example. Faça a traça deste algoritmo e dê a saída.
X ← 20
Count ← 0
WHILE X > 1
X ← DIV(X, 2)
Count ← Count + 1
ENDWHILE
OUTPUT Count
DIV retorna apenas a parte inteira de uma divisão. Faça uma linha por passagem: x torna-se 10 (count 1), depois 5 (count 2), depois 2 (count 3), depois 1 (count 4). Agora x > 1 é falso, então o loop para e a saída é 4. Dois hábitos protegem essas marcas: teste a condição antes de cada passagem em vez de depois, e escreva uma nova linha para cada passagem — tentar guardar os valores na cabeça é o que causa erros nas traces.
Uma tabela de traçado
Passe pela iteração e preencha a tabela de traçado, uma linha por passagem.
| Inglês | Chinês | Pinyin |
|---|---|---|
| pseudocode/ˈsuːdəʊkəʊd/ | 伪代码 | wěi dài mǎ |
| algorithm/ˈælɡərɪθəm/ | 算法 | suàn fǎ |
| input/ˈɪnpʊt/ | 输入 | shū rù |
| processing/ˈprəʊsesɪŋ/ | 处理 | chǔ lǐ |
| output/ˈaʊtpʊt/ | 输出 | shū chū |
| trace table/treɪs ˈteɪbl/ | 追踪表 | zhuī zōng biǎo |
7.6
Test data
Test data são dados usados para testar um programa. Existem quatro tipos que você deve saber.
| Tipo | Significado | Example (age 0–120 allowed) |
|---|---|---|
| normal 正常数据 | dados sensatos que devem ser aceitos | 25 |
| abnormal 异常数据 | dados errados que devem ser rejeitados | -4 or "cat" |
| extreme 极端数据 | os maiores e menores valores ainda permitidos | 0 and 120 |
| boundary 边界数据 | os valores de cada lado de um limite (um permitido, outro não) | 120 and 121 |
| Inglês | Chinês | Pinyin |
|---|---|---|
| test data/test ˈdeɪtə/ | 测试数据 | cè shì shù jù |
| normal/ˈnɔːml/ | 正常数据 | zhèng cháng shù jù |
| abnormal/əbˈnɔːml/ | 异常数据 | yì cháng shù jù |
| extreme/ekˈstriːm/ | 极端数据 | jí duān shù jù |
| boundary/ˈbaʊndəri/ | 边界数据 | biān jiè shù jù |
7.7
Standard methods of solution
Você deve conhecer esses algoritmos comuns.
Busca linear
Uma busca linear 线性查找 verifica cada item de uma lista, um por um, até encontrar o valor desejado ou chegar ao final.
Found ← FALSE
FOR I ← 0 TO 9
IF List[I] = SearchValue
THEN
Found ← TRUE
ENDIF
NEXT I
OUTPUT Found

Bubble sort (Ordenação por bolha)
Um bubble sort 冒泡排序 coloca uma lista em ordem. Ele compara cada par de itens adjacentes e os troca se estiverem na ordem errada. Isso se repete até que nenhuma mais troca seja necessária.
FOR I ← 0 TO 8
IF List[I] > List[I + 1]
THEN
Temp ← List[I]
List[I] ← List[I + 1]
List[I + 1] ← Temp
ENDIF
NEXT I

Somatório e contagem
- totalling 求和 — continuar somando valores a um total acumulado (
Total ← Total + Value). - counting 计数 — adicionar 1 a um contador cada vez que algo acontece (
Count ← Count + 1).
Maximum, minimum and average
- para encontrar o maximum 最大值: manter o maior valor visto até agora.
- para encontrar o minimum 最小值: manter o menor valor visto até agora.
- para encontrar o average 平均值: dividir o total pela quantidade de valores.
Total ← 0
FOR I ← 0 TO 9
Total ← Total + List[I]
NEXT I
Average ← Total / 10
OUTPUT Average
| Inglês | Chinês | Pinyin |
|---|---|---|
| linear search/ˈlɪnɪə sɜːtʃ/ | 线性查找 | xiàn xìng chá zhǎo |
| bubble sort/ˈbʌbl sɔːt/ | 冒泡排序 | mào pào pái xù |
| totalling/ˈtəʊtəlɪŋ/ | 求和 | qiú hé |
| counting/ˈkaʊntɪŋ/ | 计数 | jì shù |
| maximum/ˈmæksɪməm/ | 最大值 | zuì dà zhí |
| minimum/ˈmɪnɪməm/ | 最小值 | zuì xiǎo zhí |
| average/ˈævrɪdʒ/ | 平均值 | píng jūn zhí |
7.8
Dicas de prova
- Aprenda as quatro etapas do ciclo de vida: análise → design → codificação → teste. Abstraction mantém apenas os detalhes importantes; decomposition divide um problema em partes menores.
- Validação verifica se os dados são sensatos (verificações de faixa, comprimento, tipo, presença, formato); verification verifica se foram copiados corretamente (uma verificação visual ou entrada dupla).
- Aprenda os quatro tipos de dados de teste: normal (aceito), abnormal (rejeitado), extreme (os maiores/menores ainda permitidos), boundary (os valores de ambos os lados de um limite).
- Para descobrir o que um algoritmo faz, preencha uma trace table — anote o valor de cada variável em cada etapa.
- Conheça os algoritmos padrão: busca linear (verifique cada item em sequência) e bubble sort (troque pares adjacentes até que nenhuma troca seja necessária).
| Inglês | Chinês | Pinyin |
|---|---|---|
| program development life cycle/ˈprəʊɡræm dɪˈveləpmənt laɪf ˈsaɪkl/ | 程序开发生命周期 | chéng xù kāi fā shēng mìng zhōu qī |
| analysis/əˈnæləsɪs/ | 分析 | fēn xī |
| design/dɪˈzaɪn/ | 设计 | shè jì |
| coding/ˈkəʊdɪŋ/ | 编码 | biān mǎ |
| testing/ˈtestɪŋ/ | 测试 | cè shì |
| abstraction/əbˈstrækʃn/ | 抽象 | chōu xiàng |
| decomposition/ˌdiːkɒmpəˈzɪʃn/ | 分解 | fēn jiě |
| sub-systems/sʌb ˈsɪstəmz/ | 子系统 | zi xì tǒng |
| structure diagram/ˈstrʌktʃə ˈdaɪəɡræm/ | 结构图 | jié gòu tú |
| iterative testing/ˈɪtərətɪv ˈtestɪŋ/ | 迭代测试 | dié dài cè shì |
| validation/ˌvælɪˈdeɪʃn/ | 验证 | yàn zhèng |
| range check/reɪndʒ tʃek/ | 范围检查 | fàn wéi jiǎn chá |
| length check/leŋθ tʃek/ | 长度检查 | cháng dù jiǎn chá |
| type check/taɪp tʃek/ | 类型检查 | lèi xíng jiǎn chá |
| presence check/ˈprezəns tʃek/ | 存在性检查 | cún zài xìng jiǎn chá |
Aulas interativas sobre este tópico
Passe por ele passo a passo, com exercícios de verificação instantânea.