Pular para o conteúdo

Projeto de Algoritmos e Resolução de Problemas

Ciência da Computação do A-Level · Tópico 9

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

Pensamento Computacional

Aqui está uma tarefa: criar um sistema para gerenciar todo o estoque de uma loja — todos os produtos, todas as vendas, todas as entregas, todos os relatórios. Como um único problema gigante, ele é grande demais para…

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

9.1

Pensamento computacional

Programa
Os candidatos devem ser capazes de: Notas e orientações
Demonstre compreensão de abstração Necessidade e benefícios do uso de abstração Descreva o propósito de abstração Produza um modelo abstrato de um sistema incluíndo apenas detalhes essenciais
Descreva e utilize decomposição Dividir problemas em sub-problemas levando ao conceito de módulo de programa (procedimento / função)

Fonte: Programa Cambridge International

Pensamento computacional 计算思维 é o conjunto de ferramentas mentais para analisar um problema e projetar uma solução que um computador possa executar. Duas principais são abstração e decomposição.

Um quebra-cabeça parcialmente terminado
Pensamento computacional divide um grande problema em partes menores e mais fáceis — como resolver um quebra-cabeça

Abstração

Abstraction 抽象 significa manter as características essenciais de um problema e ignorar detalhes irrelevantes, fornecendo um modelo mais simples.

Exemplos:

  • um mapa de rede de trens mantém as estações e linhas, mas ignora a geografia.
  • uma class em programação orientada a objetos mantém apenas os atributos e métodos que o sistema precisa.
  • uma função oculta uma parte do trabalho atrás de um nome.

Um modelo completo de qualquer problema real seria muito grande para raciocinar, então a abstração é essencial.

O avaliador pede o objetivo da abstração e seus benefícios. Objetivo: produzir um modelo mais simples de um problema que contenha apenas os detalhes necessários para resolvê-lo. Benefícios: o problema fica mais fácil de entender e programar; o programa é menor e mais rápido de escrever e testar; o mesmo modelo pode ser reutilizado para problemas semelhantes. Quando solicitado a produzir um modelo abstrato de um sistema, liste apenas os dados e ações que a tarefa exige. Para uma grade escolar, isso significa as aulas, salas, professores e períodos; não significa a cor das salas ou a idade dos professores.

A abstração transforma uma geografia real caótica (um trajeto sinuoso com prédios espalhados) em um mapa de metrô limpo — círculos de estações espaçados uniformemente em uma linha reta, mantendo as estações e linhas e descartando a geografia
A abstração mantém o essencial (estações e linhas) e descarta detalhes irrelevantes (a geografia)

Decomposição

Decomposição 分解 significa dividir um grande problema em subproblemas menores, cada um mais fácil de resolver e tratado individualmente.

  1. encontre as partes principais da tarefa.
  2. divida cada uma em subtarefas menores.
  3. continue até que cada uma seja pequena o suficiente para ser projetada diretamente.
  4. resolva as tarefas pequenas e combine-as.

Para controle de estoque: "gerenciar estoque" → "registrar vendas", "registrar entregas", "produzir relatórios" → ("registrar vendas") "consultar produto", "diminuir contagem de estoque", "salvar a transação". A decomposição torna grandes problemas gerenciáveis, permite que uma equipe divida o trabalho e gera código modular — cada módulo se torna uma procedura 过程 ou função.

"Explique por que a decomposição é usada" é uma questão de três pontos com formato fixo. Dê três benefícios separados: cada subproblema 子问题 é pequeno o suficiente para ser projetado, codificado e testado independentemente; diferentes programadores podem trabalhar em diferentes módulos 模块 ao mesmo tempo; um módulo já existente (ou uma rotina de biblioteca) pode ser reutilizado, e um erro é mais fácil de encontrar porque está contido em um único módulo. Um diagrama estrutural (tópico 12) é o diagrama de uma decomposição: o programa no topo, seus módulos abaixo, e os dados passados entre eles.

Uma árvore com "Gerenciar estoque" no topo ramificando nos módulos "Registrar vendas", "Registrar entregas" e "Produzir relatórios", e "Registrar vendas" dividindo nas subtarefas "Consultar produto", "Diminuir contagem de estoque" e "Salvar transação"
Decompondo um programa em módulos e submódulos
Explorar

Resolver um problema à maneira computacional

Passe pelos quatro pilares na ordem em que você os usaria — decomponha o problema, identifique repetições, reduza aos essenciais, depois escreva os passos.

Vocabulário Treinar
Inglês Chinês Pinyin
computational thinking/ˌkɒmpjuːˈteɪʃənl ˈθɪŋkɪŋ/ 计算思维 jì suàn sī wéi
abstraction/əbˈstrækʃn/ 抽象 chōu xiàng
decomposition/ˌdiːkɒmpəˈzɪʃn/ 分解 fēn jiě
sub-problem/sʌb ˈprɒbləm/ 子问题 zi wèn tí
procedure/prəˈsiːdʒə/ 过程 guò chéng
modules/ˈmɒdjuːlz/ 模块 mó kuài
algorithm/ˈælɡərɪθəm/ 算法 suàn fǎ
sequence/ˈsiːkwəns/ 顺序 shùn xù
unambiguous/ʌnæmˈbɪɡjuːəs/ 无歧义 wú qí yì
deterministic/dɪˌtɜːmɪˈnɪstɪk/ 确定性 què dìng xìng
9.2

Algoritmos

Programa
Os candidatos devem ser capazes de: Notas e orientações
Demonstre compreensão de que um algoritmo é uma solução para um problema expressa como uma sequência de passos definidos
Utilize nomes de identificador adequados para a representação de dados usados por um problema e represente-os usando uma tabela de identificadores
Escreva pseudocódigo que contenha entrada, processamento e saída
Escreva pseudocódigo usando as três construções básicas de sequência, seleção e iteração (repetição)
Documente um simples algoritmo usando uma descrição em inglês estruturado, um diagrama de fluxo ou pseudocódigo
Escreva pseudocódigo a partir de: • uma descrição em inglês estruturado • um diagrama de fluxo
Desenhe um diagrama de fluxo a partir de: • uma descrição em inglês estruturado • pseudocódigo
Descreva e utilize o processo de refinamento progressivo para expressar um algoritmo a um nível de detalhe a partir do qual a tarefa pode ser programada
Use declarações lógicas para definir partes de uma solução algorítmica

Fonte: Programa Cambridge International

Ordenação bolha, passo a passo

Um algoritmo 算法 é uma solução expressa como uma sequência de passos definidos. Cada passo é unívoco 无歧义 (um único significado), determinístico 确定性 (mesma entrada → mesma saída), finito (os passos terminam) e efetivo (cada um pode ser executado). Um algoritmo diz o que fazer, independente da linguagem de programação usada para implementá-lo.

Explorar

Seleção: siga os ramos DO / SE NÃO

Arraste a pontuação e observe qual ramo é executado. A seleção testa cada condição por sua vez e toma a PRIMEIRA que for verdadeira — é assim que funciona O SE ... SENÃO SE ... SENÃO.

Assistir aula
9.2

Tabela de identificadores

Ao iniciar um algoritmo, liste todas as peças de dados em uma tabela de identificadores 标识符表 — seu identificador 标识符 (o nome da variável 变量), tipo de dado 数据类型 e descrição. A tabela do exame tem exatamente estas três colunas:

Identificador Tipo de dado Descrição
Category STRING categoria do produto
SaleDate DATE quando o item foi vendido
ItemCost REAL custo do item
InStock BOOLEAN TRUE se estiver em estoque
Sales ARRAY[1:30] OF REAL os totais diários de vendas dos últimos 30 dias

Use nomes descritivos (ItemCost, não x): um identificador começa com uma letra, não contém espaços e é escrito da mesma forma toda vez que aparece. Tipos comuns são INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE, além de arrays. A tabela força você a nomear todas as peças de dados antes de escrever o código, e uma questão "complete a tabela de identificadores" dá um ponto por cada tipo de dado ou descrição correta, então escreva o tipo exatamente como o guia de pseudocódigo faz.

Uma tabela de identificadores listando cada variável com seu nome, tipo de dado e descrição, por exemplo ItemCost como um REAL para o custo do item
Uma tabela de identificadores nomeia todas as peças de dados antes de escrever o código
Vocabulário Treinar
Inglês Chinês Pinyin
identifier table/aɪˈdentɪfaɪə ˈteɪbl/ 标识符表 biāo shí fú biǎo
identifier/aɪˈdentɪfaɪə/ 标识符 biāo shí fú
9.2

Pseudocódigo — as três construções básicas

Pseudocódigo 伪代码 é uma maneira estruturada e independente de linguagem para descrever algoritmos.

As três construções básicas como mini-flowcharts: sequência executa passo A então B então C; seleção testa uma condição e faz X ou Y; iteração repete um corpo enquanto uma condição é verdadeira, retornando ao início
Os três blocos construtivos de qualquer algoritmo: sequência, seleção e iteração

1. Sequência

Passos são executados um após o outro (sequência 顺序):

INPUT Name
INPUT Age
OUTPUT "Hello", Name

2. Seleção

Uma escolha de quais passos executar, baseada em uma condição (seleção 选择):

IF Age >= 18 THEN
    OUTPUT "Adult"
ELSE
    OUTPUT "Minor"
ENDIF

Para mais opções, use CASE OF ... ENDCASE.

3. Iteração

Repetir um bloco (iteração 迭代, um laço 循环):

FOR i ← 1 TO 10
    OUTPUT i
NEXT i

Um loop WHILE testa a condição antes de cada passagem (pode rodar zero vezes); um loop REPEAT...UNTIL testa depois de cada passagem (sempre roda pelo menos uma vez).

WHILE Total < 100 DO
    INPUT Value
    Total ← Total + Value
ENDWHILE

REPEAT
    INPUT Mark
UNTIL Mark >= 0 AND Mark <= 100
Dois flowcharts lado a lado. WHILE testa a condição primeiro, então o corpo pode nunca executar: o losango fica acima do corpo e a ramificação Não sai do loop. REPEAT UNTIL executa o corpo primeiro e testa depois dele, então o corpo sempre executa pelo menos uma vez: o corpo fica acima do losango e a ramificação Não retorna a ele
Um loop WHILE testa antes do corpo rodar; um loop REPEAT ... UNTIL testa depois, então seu corpo sempre roda pelo menos uma vez

Escolher o loop vale um ponto: FOR quando você sabe quantas vezes (um loop controlado por contador 计数循环); WHILE quando o loop pode não rodar de todo (um loop pré-condição 前测循环); REPEAT ... UNTIL quando deve rodar pelo menos uma vez, como na validação de entrada (um loop pós-condição 后测循环). Uma resposta "descreva a construção de iteração" nomeia a construção, diz onde a condição é testada e dá a consequência (zero vezes ou pelo menos uma vez).

Operações comuns

  • atribuição 赋值: x ← 5 (uma seta; = é para comparação).
  • entrada/saída: INPUT variable, OUTPUT expression.
  • comparações =, <>, <, >, <=, >=; lógica AND, OR, NOT.
  • aritmética + - * /, mais DIV (divisão inteira) e MOD (resto).
  • strings: LENGTH, LEFT, RIGHT, MID, e & para concatenação 拼接 (juntar).

O pseudocódigo que o exame espera

Toda resposta de pseudocódigo é avaliada contra o guia de pseudocódigo publicado pela Cambridge. Escreva estas formas exatamente:

Construção Pseudocódigo
Variável DECLARE Total : INTEGER
Array DECLARE Marks : ARRAY[1:30] OF REAL
Constante CONSTANT MaxTries = 3
Atribuição Total ← Total + Value
Entrada / Saída INPUT Name
OUTPUT "Hello ", Name
Seleção CASE OF Choice
1 : OUTPUT "Add"
OTHERWISE OUTPUT "Error"
ENDCASE
Loop FOR FOR i ← 1 TO 10 STEP 2 ... NEXT i
Loop WHILE WHILE Total < 100 DO ... ENDWHILE
Loop REPEAT REPEAT ... UNTIL Mark >= 0
Aritmética inteira 17 DIV 5 = 3
17 MOD 5 = 2
Strings LENGTH(S), LEFT(S, 3), RIGHT(S, 2)
MID(S, 2, 4), UCASE(S), LCASE(S)
Conversões INT(3.7) = 3, NUM_TO_STR(12)
STR_TO_NUM("4.5"), ASC('A') = 65, CHR(66) = 'B'
Aleatório RAND(100)
INT(RAND(100)) + 1

RAND(100) gera um número real de 0 até (mas não incluindo) 100. INT(RAND(100)) + 1 gera um inteiro de 1 a 100.

Dois hábitos valem pontos em todas as questões: declare toda variável que usar, com o tipo da sua tabela de identificadores, e inicialize 初始化 todo contador 计数器 e total (Count ← 0, Total ← 0) antes do loop que o altera.

Entrada → Processamento → Saída

Todo programa segue este formato:

INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT "Area = ", Area

Listar entradas e saídas primeiro deixa o algoritmo mais limpo.

Exemplo resolvido. Escreva pseudocódigo que insere 100 inteiros e outputa quantos deles, e a soma desses, estão entre 10 e 20 inclusos.

Tabela de identificadores: Count : INTEGER (contador de loop), Value : INTEGER (o inteiro inserido), InRange : INTEGER (quantos estavam no intervalo), Total : INTEGER (soma deles).

DECLARE Count, Value, InRange, Total : INTEGER
InRange ← 0
Total ← 0
FOR Count ← 1 TO 100
    INPUT Value
    IF Value >= 10 AND Value <= 20 THEN
        InRange ← InRange + 1
        Total ← Total + Value
    ENDIF
NEXT Count
OUTPUT InRange, Total

Se a questão pedir para "identificar duas construções e dizer como cada uma é usada", responda no mesmo formato: iteração, o loop FOR, repete a entrada 100 vezes; seleção, a instrução IF, adiciona um valor apenas quando está no intervalo.

Exemplo resolvido. Um programa escolhe um número secreto inteiro de 1 a 100. O usuário chuta até acertar; após cada chute errado, o programa diz "Muito baixo" ou "Muito alto", e no final ele outputa quantos palpites foram feitos.

Tabela de identificadores: Secret : INTEGER (o número a ser adivinhado), Guess : INTEGER (a entrada do usuário), Tries : INTEGER (quantos palpites até agora).

DECLARE Secret, Guess, Tries : INTEGER
Secret ← INT(RAND(100)) + 1
Tries ← 0
REPEAT
    INPUT Guess
    Tries ← Tries + 1
    IF Guess < Secret THEN
        OUTPUT "Too low"
    ELSE
        IF Guess > Secret THEN
            OUTPUT "Too high"
        ENDIF
    ENDIF
UNTIL Guess = Secret
OUTPUT "You took ", Tries, " guesses"

Um loop REPEAT ... UNTIL é a escolha certa porque o usuário deve chutar pelo menos uma vez. Os pontos são para: o número aleatório no intervalo correto, um loop que termina em um chute correto, o contador que começa em zero e aumenta dentro do loop, as duas mensagens sob as condições certas, e a saída final.

Fluxograma do jogo de adivinhação: Início, depois defina Segredo como um inteiro aleatório de 1 a 100 e Tentativas como 0, depois insira um palpite, adicione um às Tentativas, teste se o palpite é igual ao segredo (Sim leva à saída Tentativas e Parada), caso contrário teste se o palpite é menor (Sim sai Muito baixo, Não sai Muito alto), e ambas as saídas retornam ao input
O mesmo jogo de adivinhação como flowchart: os dois losangos de decisão são as duas instruções IF, e a seta de retorno é o loop REPEAT ... UNTIL

Exemplo resolvido. Outputar dois números inteiros aleatórios diferentes, cada um entre $-10$ e $10$ inclusos.

Há 21 valores possíveis, então INT(RAND(21)) gera de 0 a 20 e subtraindo 10 desloca para o intervalo $-10$ a $10$. O segundo número deve ser gerado novamente até diferir do primeiro:

DECLARE First, Second : INTEGER
First ← INT(RAND(21)) - 10
REPEAT
    Second ← INT(RAND(21)) - 10
UNTIL Second <> First
OUTPUT First, Second
Todo programa segue a forma entrada, então processamento, então saída, mostrado com o exemplo de área: entrar o comprimento e a largura, processar multiplicando, sair a área
Todo programa segue o formato Entrada, Processamento, Saída
Explorar

IF … ELSE seleção

Altere o valor e observe qual ramo é executado — como um programa toma decisões.

Vocabulário Treinar
Inglês Chinês Pinyin
variable/ˈveərɪəbl/ 变量 biàn liàng
data type/ˈdeɪtə taɪp/ 数据类型 shù jù lèi xíng
pseudocode/ˈsuːdəʊkəʊd/ 伪代码 wěi dài mǎ
loop/luːp/ 循环 xún huán
count-controlled loop/kaʊnt kənˈtrəʊld luːp/ 计数循环 jì shù xún huán
pre-condition loop/priː kənˈdɪʃn luːp/ 前测循环 qián cè xún huán
post-condition loop/pəʊst kənˈdɪʃn luːp/ 后测循环 hòu cè xún huán
assignment/əˈsaɪnmənt/ 赋值 fù zhí
concatenation/kənˌkætəˈneɪʃn/ 拼接 pīn jiē
initialise/ɪˈnɪʃəlaɪz/ 初始化 chū shǐ huà
counter/ˈkaʊntə/ 计数器 jì shù qì
structured English/ˈstrʌktʃəd ˈɪŋɡlɪʃ/ 结构化英语 jié gòu huà yīng yǔ
stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ 逐步求精 zhú bù qiú jīng
logic statement/ˈlɒdʒɪk ˈsteɪtmənt/ 逻辑语句 luó jí yǔ jù
precedence/ˈpresɪdəns/ 优先级 yōu xiān jí
De Morgan's law/də ˈmɔːɡənz lɔː/ 德摩根定律 dé mó gēn dìng lǜ
9.2

Três notações

O mesmo algoritmo pode ser escrito de três formas.

  • inglês estruturado 结构化英语 — linguagem natural com indentação e palavras-chave fixas; bom para uma descrição de alto nível.
  • flowchart 流程图 — um diagrama com formas padrão:
Forma Significado
Retângulo arredondado Início / Parada
Paralelogramo Entrada / Saída
Retângulo Processamento
Losango Decisão
Seta Fluxo de controle
  • pseudocódigo — a notação de palavras-chave acima; mais próximo do código.

Você deve ser capaz de converter entre qualquer par: cada IF é um losango de decisão, cada laço é uma seta de retorno, e uma sequência são retângulos empilhados.

SE ... ENTÃO ... SENÃO ... FIM_SE

Um fluxograma para calcular a média de números: terminadores redondos Início e Fim, paralelogramas de entrada/saída, retângulos de processamento e um losango de decisão "count < n?" cuja ramificação Sim retorna ao laço para ler o próximo valor
Um fluxograma para calcular a média de uma lista de números, usando as formas padrão
Vocabulário Treinar
Inglês Chinês Pinyin
flowchart/ˈfləʊtʃɑːt/ 流程图 liú chéng tú
selection/sɪˈlekʃn/ 选择 xuǎn zé
iteration/ˌɪtəˈreɪʃn/ 迭代 dié dài
9.2

Refinamento passo a passo

Refinamento passo a passo 逐步求精 começa com um esboço de alto nível e expande cada etapa até que seja pequena o suficiente para ser codificada. Para uma média de $n$ números:

Nível 1:

Read in the numbers
Compute the average
Output the average

Nível 2:

INPUT n
total ← 0
FOR i ← 1 TO n
    INPUT value
    total ← total + value
NEXT i
average ← total / n
OUTPUT average

C refinamento mantém a estrutura anterior e adiciona detalhes.

Uma questão de seis pontos sobre "aplicar refinamento passo a passo" fornece um esboço de alto nível e pede que cada etapa seja expandida em instruções concretas que um programador poderia codificar. Mantenha as etapas na mesma ordem, nomeie os dados que cada etapa lê ou produz, e pare quando cada linha for uma única entrada, atribuição, saída, laço ou condição. Por exemplo, "validar a senha" torna-se: digite a senha; verifique se seu comprimento é pelo menos 8; verifique se contém pelo menos um dígito; saia "aceita" se ambas as verificações forem bem-sucedidas, caso contrário saia "rejeitada".

Refinamento passo a passo: um esboço de Nível 1 (ler os números, calcular a média, sair a média) é expandido em pseudocódigo detalhado de Nível 2 com o loop de entrada e a divisão
Refinamento passo a passo: expanda cada etapa de alto nível em pseudocódigo detalhado
Explorar

Refinamento passo a passo: esboço para código

Desça pelos níveis. Você começa com a tarefa inteira em uma linha e continua expandindo cada passo em partes menores — até que todos os passos sejam simples o suficiente para serem codificados diretamente.

9.2

Declarações lógicas

Uma declaração lógica 逻辑语句 é uma condição Booleana 布尔 controlada por ramificações, construída a partir de comparações (x > 10), conectivos (AND, OR, NOT) e colchetes. Use-a como condição de IF, WHILE ou REPEAT...UNTIL:

WHILE attempts < 3 AND NOT loggedIn DO
    INPUT password
    IF password = correctPassword THEN
        loggedIn ← TRUE
    ELSE
        attempts ← attempts + 1
    ENDIF
ENDWHILE

Precedência 优先级 (maior para menor): NOT, depois AND, depois OR. Use colchetes quando tiver dúvidas. Erros comuns:

  • a = 1 OR 2 está errado — escreva a = 1 OR a = 2.
  • NOT a > 5 significa NOT (a > 5), ou seja, a <= 5.
  • NOT (A AND B) é o mesmo que (NOT A) OR (NOT B) (Lei de De Morgan 德摩根定律) — útil para simplificar condições.

Transformar uma frase em uma declaração lógica é uma habilidade testada diretamente nos exames. "Um ingresso é gratuito para qualquer pessoa com menos de 5 ou mais de 65 anos" torna-se Age < 5 OR Age > 65. "Uma nota é válida se for um número inteiro de 0 a 100" torna-se Mark >= 0 AND Mark <= 100. "O laço para quando o arquivo termina ou dez registros foram lidos" torna-se UNTIL EOF(File) OR Count = 10. Escreva cada comparação por extenso: Age > 65 e Age < 5, nunca Age > 65 OR < 5.

Uma árvore de análise para "attempts < 3 AND NOT loggedIn": NOT aplica-se primeiro a loggedIn, então AND une isso com attempts < 3
Precedência: NOT vincula-se a loggedIn primeiro, então AND combina os dois lados

Exemplo resolvido. Escreva uma tabela de identificadores e pseudocódigo para ler 10 números e exibir o maior. A tabela de identificadores nomeia cada variável com seu tipo de dado e propósito: Count : INTEGER (contador de laço), Num : REAL (o número acabado de ser lido), Max : REAL (maior até agora).

Max ← -999999
FOR Count ← 1 TO 10
    INPUT Num
    IF Num > Max THEN
        Max ← Num
    ENDIF
NEXT Count
OUTPUT Max

A decisão de design que carrega os pontos é inicializar Max: ela deve começar abaixo de qualquer entrada possível - ou, ainda mais seguro, ser definida como o primeiro número lido. Inicializá-la como 0 faz o algoritmo retornar incorretamente 0 para uma lista de números negativos, um bug que sua traçagem só expõe se os dados de teste incluírem um negativo.

Vocabulário Treinar
Inglês Chinês Pinyin
Boolean/ˈbuːlɪən/ 布尔 bù ěr
9.2

Definições aceitas pelo examinador

Uma questão de definição é avaliada contra wording fixo. Aprenda estas exatamente, e dê apenas uma resposta.

Termo Definição
abstração manter os detalhes essenciais de um problema e omitir os detalhes que não são necessários
decomposição dividir um problema em subproblemas menores, cada um dos quais pode ser resolvido separadamente
algoritmo uma solução para um problema expressa como uma sequência de passos definidos
tabela de identificadores uma tabela listando cada identificador usado em um algoritmo com seu tipo de dado e uma descrição de seu propósito
pseudocódigo uma forma estruturada e independente de linguagem de escrever os passos de um algoritmo
fluxograma um diagrama que mostra os passos e decisões de um algoritmo usando símbolos padrão unidos por setas
sequência instruções executadas uma após a outra na ordem escrita
seleção escolher quais instruções executar de acordo com uma condição
iteração repetir um grupo de instruções enquanto, ou até, uma condição ser satisfeita
refinamento passo a passo dividir cada etapa de um esboço em etapas menores, repetidamente, até que cada etapa possa ser codificada diretamente
declaração lógica uma condição construída a partir de comparações e dos operadores AND, OR e NOT que avalia como VERDADEIRO ou FALSO
9.2

Dicas de prova

  • Defina um algoritmo como uma sequência inequívoca, finita e determinística de passos, independente da linguagem.
  • Use as três construções corretamente — sequência, seleção, iteração — e mantenha uma tabela de identificadores com tipos de dados.
  • Divida um problema por decomposição e abstração, depois refinamento passo a passo.
  • Escreva pseudocódigo que realmente funcionaria: declare variáveis e siga o estilo de pseudocódigo do exame.

Erros comuns

  • Usar = para atribuir um valor. Atribuição é ←; = é uma comparação.
  • Esquecer ENDIF, ENDWHILE, ENDCASE ou NEXT. Toda construção fecha, e a palavra de fechamento é onde o ponto da construção é verificado.
  • Não inicializar um total ou contador antes do laço, de modo que o algoritmo soma a um valor que nunca existiu.
  • Usar um laço FOR quando o número de repetições é desconhecido. Ler até um valor sentinela ou um palpite correto precisa de WHILE ou REPEAT ... UNTIL.
  • Escrever Age > 65 OR < 5. Cada lado de OR e AND deve ser uma comparação completa.
  • Responder "explique por que a decomposição é usada" com um benefício escrito de três maneiras. Três pontos precisam de três benefícios diferentes.

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 A-Level

Entrar ou criar conta

IGCSE, A-Level & AP