Pular para o conteúdo

Projeto de algoritmos e resolução de problemas

Ciência da Computação do IGCSE · Tópico 7

Treinar
Videoaula para este tópico Abrir a página do vídeo
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
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

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.

Um programador digitando código em um computador
O software é escrito por programadores, que seguem o ciclo de desenvolvimento
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
Quatro etapas em sequência — análise, projeto, codificação, testes — com uma seta voltando dos testes para o projeto
As quatro etapas do desenvolvimento de programas; testes retroalimentam para corrigir e refinar o projeto
Um fluxograma de programa com caixas de processo losangos de decisão
Um fluxograma de programa detalha os passos e decisões de um programa durante a etapa de projeto

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.

Vocabulário Treinar
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).
Um fluxograma para somar os números de 1 a n, com símbolos de início/fim, entrada/saída, processo e decisão, além de uma legenda nomeando cada forma
Um fluxograma para o algoritmo de soma, usando os símbolos padrão (início/fim, entrada/saída, processo, decisão)
7.3

Algoritmos

Ordenação bolha, passo a passo

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.

Três caixas — ENTRADA (as 3 notas), PROCESSO (somá-las, dividir por 3), SAÍDA (a média) — unidas por setas
Todo algoritmo se decompõe em entrada, processamento e saída — aqui, encontrando a média de três notas
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.
Vocabulário Treinar
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:

A trace table with columns count, total, output
Uma tabela de rastreamento registra o valor de cada variável enquanto o programa executa
  • 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.

Explorar

Uma tabela de traçado

Passe pela iteração e preencha a tabela de traçado, uma linha por passagem.

Vocabulário Treinar
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
Vocabulário Treinar
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
Uma lista de oito números sendo analisados da esquerda para a direita, procurando por 5; os quatro primeiros não correspondem e o quinto é encontrado
Linear search verifica cada item em sequência do início até encontrar o valor

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
Uma lista onde o primeiro par 5 e 2 está fora de ordem, mostrado trocando para 2 e 5, com uma nota para repetir para cada par
Bubble sort compara cada par adjacente e os troca se estiverem fora de ordem, repetindo até ordenar

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

Provas Anteriores

Mais tópicos em Ciência da Computação do IGCSE

Entrar ou criar conta

IGCSE, A-Level & AP