Pular para o conteúdo

Programação

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

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

Programação

Aqui está um programa curto. Ele lê cinco notas de teste e imprime o total. As cinco notas são oito, nove, sete, seis e dez, então o total deve ser quarenta. Observe…

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

8.1

Variables and constants

Programa
Os candidatos devem ser capazes de: Notas e orientações
1 Declarar e usar variáveis e constantes
2 Compreender e usar tipos de dados básicos • Incluindo: – inteiro – real – char – string – Booleano
3 Compreender e usar entrada e saída
4 (a) Compreender e usar o conceito de sequência
(b) Compreender e usar o conceito de seleção • Incluindo: – instruções IF – instruções CASE
(c) Compreender e usar o conceito de iteração • Incluindo: – laços controlados por contagem – laços de pré-condição – laços de pós-condição
(d) Compreender e usar os conceitos de somatório e contagem
(e) Compreender e usar o conceito de manipulação de strings • Incluindo: – comprimento – substring – upper – lower • O primeiro caractere da string pode ser posição zero ou um
(f) Compreender e utilizar operadores aritméticos, relacionais e lógicos • Aritméticos, limitados a: – + – – – / – * – ^ (elevado à potência) – MOD – DIV • Relacionais, limitados a: – = – < – <= – > – >= – <> (diferente de) • Lógicos, limitados a: – AND – OR – NOT
5 Compreender e usar instruções aninhadas • Incluindo seleção e iteração aninhadas • Os candidatos não serão exigidos a escrever mais de três níveis de instruções aninhadas
6 (a) Compreender o significado de procedimentos, funções e parâmetros (b) Definir e usar procedimentos e funções, com ou sem parâmetros (c) Compreender e usar variáveis locais e globais • Procedimentos e funções podem ter até três parâmetros
7 Compreender e usar rotinas de biblioteca • Incluindo: – MOD – DIV – ROUND – RANDOM
8 Compreender como criar um programa mantensível • Incluindo uso adequado de: – identificadores significativos – recurso de comentários fornecido pela linguagem de programação – procedimentos e funções – comentários relevantes e apropriados da sintaxe • Use identificadores significativos para: – variáveis – constantes – arrays – procedimentos e funções

Fonte: Programa Cambridge International

Uma variable 变量 é um armazém nomeado que segura um valor que pode mudar enquanto o programa executa. Uma constante 常量 é um armazém nomeado cujo valor é fixo e não muda.

A variable named age holding the value 16
Uma variável é um armazém nomeado cujo valor pode mudar
Lines of program code on a screen
Variables and constants são armazéns nomeados para valores, definidos no código do programa

Você deve declare 声明 eles (dizer seu nome e tipo) antes do uso:

DECLARE Score : INTEGER
DECLARE Name : STRING
CONSTANT Pi ← 3.142
Two RAM memory modules
Enquanto um programa executa, suas variáveis são mantidas na memória do computador (RAM)

Use uma constante para um valor que nunca muda (como Pi), para que seja definido em um único lugar e fácil de ler.

Explorar

Variáveis e atribuição

Passe pelas linhas e observe cada variável assumir o seu novo valor.

Vocabulário Treinar
Inglês Chinês Pinyin
variable/ˈveərɪəbl/ 变量 biàn liàng
constant/ˈkɒnstənt/ 常量 cháng liàng
declare/dɪˈkleə/ 声明 shēng míng
8.1

Data types

Um data type 数据类型 diz que tipo de valor uma variável segura. Você deve conhecer cinco tipos básicos.

Tipos de dados: inteiro (7), real (3.5), char ('A'), string ("hello"), booleano (true/false)
Os tipos de dados básicos: integer, real, char, string e boolean
Tipo Holds Exemplo
integer 整数 um número inteiro 42, -7
real 实数 um número com ponto decimal 3.14, -0.5
char 字符 um único caractere 'A', '?'
string 字符串 uma sequência de caracteres "Hello"
Boolean 布尔值 um de dois valores TRUE ou FALSE
Vocabulário Treinar
Inglês Chinês Pinyin
data type/ˈdeɪtə taɪp/ 数据类型 shù jù lèi xíng
integer/ˈɪntɪdʒə/ 整数 zhěng shù
real/rɪəl/ 实数 shí shù
char/tʃɑː/ 字符 zì fú
string/strɪŋ/ 字符串 zì fú chuàn
Boolean/ˈbuːlɪən/ 布尔值 bù ěr zhí
8.1

Input and output

Entrada 输入 lê um valor do usuário. Saída 输出 mostra um valor na tela.

OUTPUT "What is your name?"
INPUT Name
OUTPUT "Hello ", Name
Vocabulário Treinar
Inglês Chinês Pinyin
input/ˈɪnpʊt/ 输入 shū rù
output/ˈaʊtpʊt/ 输出 shū chū
8.1

The three basic structures

Todo programa é construído a partir de três estruturas de controle.

Três pequenos fluxogramas: sequência (caixas em linha), seleção (um teste ramificando duas maneiras), e iteração (um teste com um corpo que retorna em loop)
As três estruturas de controle: sequence执行步骤按顺序,selection选择分支,iteration重复主体

Sequência

Sequência 顺序 significa que as etapas são executadas uma após a outra, em ordem, de cima para baixo.

INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT Area

Seleção

Seleção 选择 escolhe quais etapas executar, baseado em uma condição. Use uma instrução IF, ou uma instrução CASE quando houver muitas opções.

IF Score >= 50
  THEN
    OUTPUT "Pass"
  ELSE
    OUTPUT "Fail"
ENDIF
CASE OF Grade
    'A' : OUTPUT "Excellent"
    'B' : OUTPUT "Good"
    OTHERWISE OUTPUT "Keep trying"
ENDCASE

Iteração

Iteração 迭代 (um loop 循环) repete etapas. Existem três tipos.

Um count-controlled loop 计数循环 repete um número fixo de vezes:

FOR I ← 1 TO 5
    OUTPUT "Hello"
NEXT I

Um pre-condition loop 前测循环 verifica a condição antes de cada repetição, então pode executar zero vezes:

WHILE Answer <> "stop" DO
    INPUT Answer
ENDWHILE

Um post-condition loop 后测循环 verifica a condição depois de cada repetição, então sempre executa pelo menos uma vez:

REPEAT
    INPUT Password
UNTIL Password = "secret"
Dois fluxogramas de loop: WHILE testa a condição antes do corpo; REPEAT executa o corpo primeiro e testa depois
Um loop pre-condition (WHILE) testa antes do corpo, então pode executar zero vezes; um loop post-condition (REPEAT) testa depois, então executa pelo menos uma vez
Explorar

Como uma escada IF … ELSE IF decide

As condições são testadas de cima para baixo; a PRIMEIRA que for verdadeira executa e as outras são puladas. Deslize a pontuação e observe qual ramificação acende.

Explorar

Seleção

Altere o valor e observe qual ramo é executado — seleção em ação.

Vocabulário Treinar
Inglês Chinês Pinyin
sequence/ˈsiːkwəns/ 顺序 shùn xù
selection/sɪˈlekʃn/ 选择 xuǎn zé
iteration/ˌɪtəˈreɪʃn/ 迭代 dié dài
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
8.1

Somatório e contagem

  • totalling 求和 — continuar somando valores a um total acumulado: Total ← Total + Value.
  • counting 计数 — adicionar 1 a um contador cada vez: Count ← Count + 1.
count = count + 1 conta até 1; total = total + value soma a um total acumulado
Um contador conta até 1; um total constrói uma soma acumulada

Uma tabela de rastreamento seguindo um loop sobre os valores 4, 7 e 5: total vai 0, 4, 11, 16 enquanto count vai 0, 1, 2, 3 *A trace table segue um loop de totalling e counting passo a passo

Total ← 0
FOR I ← 1 TO 10
    INPUT Mark
    Total ← Total + Mark
NEXT I
OUTPUT Total

Worked example. Um programa deve ler 5 notas, depois exibir o total e a média.

Total ← 0
FOR I ← 1 TO 5
    INPUT Mark
    Total ← Total + Mark
NEXT I
Average ← Total / 5
OUTPUT Total, Average

Duas linhas transportam as notas. Total ← 0 deve ficar antes do loop: coloque-o dentro e o total será reiniciado em cada passagem, então o programa exibirá apenas a última nota. E Average ← Total / 5 deve ficar depois do loop, porque o total não está completo até que todas as notas tenham sido somadas. Inicialize antes, calcule depois — essa ordem é o que a questão realmente testa.

Vocabulário Treinar
Inglês Chinês Pinyin
totalling/ˈtəʊtəlɪŋ/ 求和 qiú hé
counting/ˈkaʊntɪŋ/ 计数 jì shù
8.1

Operators

Operadores aritméticos

Operador Significado
+ - * / add, subtract, multiply, divide
^ raised to the power of
MOD the remainder 余数 after division
DIV the whole-number part of a division

Por exemplo, 17 MOD 5 é 2, e 17 DIV 5 é 3.

Relational operators

Estes comparam dois valores e dão um resultado Booleano: =, <, <=, >, >=, e <> (not equal to).

Logical operators

Estes unem condições: AND (ambas devem ser verdadeiras), OR (pelo menos uma deve ser verdadeira), NOT (reverte verdadeiro/falso).

Três famílias de operadores: operadores aritméticos como mais e vezes dão um número, operadores relacionais como menor-que comparam e dão verdadeiro ou falso, operadores lógicos E OU NÃO juntam condições
As três famílias de operadores: aritméticos, relacionais e lógicos
IF Age >= 13 AND Age <= 19
  THEN
    OUTPUT "Teenager"
ENDIF
Vocabulário Treinar
Inglês Chinês Pinyin
remainder/rɪˈmeɪndə/ 余数 yú shù
8.1

Manipulação de strings

Uma string é feita de caracteres. Operações úteis:

  • comprimento 长度 — o número de caracteres na string;
  • substring 子串 — uma parte menor retirada da string;
  • upper case 大写 — alterar letras para maiúsculas;
  • lower case 小写 — alterar letras para minúsculas.
name ← "Computer"
OUTPUT LENGTH(name)          // 8
OUTPUT SUBSTRING(name, 1, 4) // "Comp"
OUTPUT UCASE(name)           // "COMPUTER"
OUTPUT LCASE(name)           // "computer"

(O primeiro caractere pode ser contado como posição 0 ou posição 1, dependendo da linguagem.)

Explorar

SUBSTRING: pegar parte de uma string

O primeiro caractere está na posição 1. SUBSTRING(Palavra, Início, Comprimento) pega Caracteres Length começando em Início — arraste as duas alças e leia a chamada que ela constrói.

Vocabulário Treinar
Inglês Chinês Pinyin
substring/ˈsʌbstrɪŋ/ 子串 zi chuàn
upper case/ˈʌpə keɪs/ 大写 dà xiě
lower case/ˈləʊə keɪs/ 小写 xiǎo xiě
length/leŋθ/ 长度 cháng dù
8.1

Nested statements

Uma nested statement 嵌套语句 é uma estrutura de controle colocada dentro de outra. Você pode aninhar selection e iteration.

FOR I ← 1 TO 3
    IF MOD(I, 2) = 0
      THEN
        OUTPUT I, " is even"
      ELSE
        OUTPUT I, " is odd"
    ENDIF
NEXT I

Você não precisará escrever mais de três níveis de aninhamento.

Vocabulário Treinar
Inglês Chinês Pinyin
nested statement/ˈnestɪd ˈsteɪtmənt/ 嵌套语句 qiàn tào yǔ jù
8.1

Procedimentos e funções

Para evitar repetir código, você pode dividir um programa em blocos nomeados.

  • Uma procedure 过程 (rotina) é um bloco de código nomeado que executa uma tarefa. Você a executa com CALL.
  • Uma função 函数 (função) é como uma procedure, mas ela retorna um valor para o local onde foi chamada.

Um parameter 参数 (parâmetro) é um valor passado para uma procedure ou função (até três parâmetros).

PROCEDURE Greet(PersonName : STRING)
    OUTPUT "Hello ", PersonName
ENDPROCEDURE

CALL Greet("Sam")
FUNCTION Square(N : INTEGER) RETURNS INTEGER
    RETURN N * N
ENDFUNCTION

Answer ← Square(5)   // answer is 25

Variáveis locais e globais

  • Uma local variable 局部变量 (variável local) é declarada dentro de uma procedure ou função. Ela só pode ser usada ali.
  • Uma global variable 全局变量 (variável global) é declarada no programa principal. Ela pode ser usada em qualquer lugar.

Variáveis locais são mais seguras, pois não podem ser alteradas por engano a partir de outra parte do programa.

Vocabulário Treinar
Inglês Chinês Pinyin
procedure/prəˈsiːdʒə/ 过程 guò chéng
function/ˈfʌŋkʃn/ 函数 hán shù
parameter/pəˈræmɪtə/ 参数 cān shù
local variable/ˈləʊkl ˈveərɪəbl/ 局部变量 jú bù biàn liàng
global variable/ˈɡləʊbl ˈveərɪəbl/ 全局变量 quán jú biàn liàng
8.1

Rotinas da biblioteca

Uma library routine 库程序 (rotina de biblioteca) é um trecho de código pronto para uso. Você deve conhecer estes:

Routine O que faz
MOD dá o resto de uma divisão
DIV dá a parte inteira de uma divisão
ROUND arredonda um número real para um número de casas decimais
RANDOM dá um número aleatório
Vocabulário Treinar
Inglês Chinês Pinyin
library routine/ˈlaɪbrəri ruːˈtiːn/ 库程序 kù chéng xù
8.1

Escrevendo um programa mantensável

Um programa maintainable 可维护 (mantensável) é fácil para outras pessoas lerem e alterarem depois. Para criar um:

  • usar meaningful identifiers 有意义的标识符 — nomes claros para variáveis, constantes, arrays, procedures e functions (totalScore, não x);
  • adicione comments 注释 (comentários) para explicar o que as partes do código fazem;
  • use procedures e functions para dividir o trabalho em pequenos blocos.
Vocabulário Treinar
Inglês Chinês Pinyin
maintainable/meɪnˈteɪnəbl/ 可维护的 kě wéi hù de
meaningful identifiers/ˈmiːnɪŋfl aɪˈdentɪfaɪəz/ 有意义的标识符 yǒu yì yì de biāo shí fú
comments/ˈkɒments/ 注释 zhù shì
8.2

Matrizes

Programa
Os candidatos devem ser capazes de: Notas e orientações
1 Declarar e usar arrays unidimensionais (1D) e bidimensionais (2D)
2 Compreender o uso de arrays • Incluindo o uso de variáveis como índices em arrays
3 Escrever valores em e ler valores de um array usando iteração • O primeiro índice pode ser zero ou um • Incluindo iteração aninhada

Fonte: Programa Cambridge International

Um array 数组 (array) é uma única variável que armazena muitos valores do mesmo tipo, encontrados por um index 索引 (índice, um número de posição).

Arrays unidimensionais

Um one-dimensional (1D) array 一维数组 (array unidimensional) é como uma lista simples.

DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
OUTPUT Scores[1]
Cinca caixas em fileira rotuladas com índice 1 a 5, contendo valores, com o valor no índice 2 destacado como 75
Um array 1D armazena muitos valores em uma única variável; cada um é encontrado pelo seu índice

Você pode usar um loop para preencher ou ler um array:

FOR I ← 1 TO 5
    INPUT Scores[I]
NEXT I

Arrays bidimensionais

Um two-dimensional (2D) array 二维数组 (array bidimensional) é como uma tabela com linhas e colunas. Ele usa dois índices.

DECLARE Grid : ARRAY[1:3, 1:3] OF INTEGER
Grid[1, 1] ← 5
Grid[2, 3] ← 8
A 3 por 3 grade com linhas e colunas numeradas; a célula na linha 2, coluna 3 está destacada e rotulada como linha da grade 2 coluna 3
Um array 2D é uma tabela; cada valor é encontrado por dois índices, [linha, coluna]

Você lê um array 2D com um loop dentro de outro loop (iteração aninhada).

Explorar

Matrizes

Escolha uma linha e uma coluna para ler uma célula. Os arrays da Cambridge contam a partir de 1, e um elemento 2D é escrito com UM par de parênteses — Grid[2, 3].

Vocabulário Treinar
Inglês Chinês Pinyin
array/əˈreɪ/ 数组 shù zǔ
index/ˈɪndeks/ 索引 suǒ yǐn
one-dimensional (1D) array/wʌn daɪˈmenʃənl əˈreɪ/ 一维数组 yī wéi shù zǔ
two-dimensional (2D) array/tuː daɪˈmenʃənl əˈreɪ/ 二维数组 èr wéi shù zǔ
8.3

Manipulação de arquivos

Programa
Os candidatos devem ser capazes de: Notas e orientações
1 Compreender o propósito de armazenar dados em um arquivo para uso por um programa
2 Abrir, fechar e usar um arquivo para leitura e escrita • Incluindo: – ler e escrever itens únicos de dados – ler e escrever uma linha de texto

Fonte: Programa Cambridge International

Um programa pode armazenar dados em um arquivo 文件 (arquivo) para que ele seja mantido após o programa parar. Você deve abrir o arquivo, usá-lo e depois fechá-lo.

OPENFILE "data.txt" FOR WRITE
WRITEFILE "data.txt", "Hello"
CLOSEFILE "data.txt"

OPENFILE "data.txt" FOR READ
READFILE "data.txt", Line
CLOSEFILE "data.txt"

Você pode ler e escrever itens individuais de dados ou uma linha inteira de texto. Sempre feche um arquivo quando terminar de usá-lo.

Vocabulário Treinar
Inglês Chinês Pinyin
file/faɪl/ 文件 wén jiàn
8.3

Dicas de prova

  • Uma variable (variável) pode mudar enquanto o programa roda; uma constante (constante) é fixa. Aprenda os cinco tipos de dados: integer, real, char, string, Boolean.
  • Todo programa é construído a partir de três estruturas: sequence (sequência), selection (seleção - IF / CASE) e iteration (iteração - loops).
  • Um loop WHILE testa antes do corpo, então pode rodar zero vezes; um loop REPEAT … UNTIL testa depois, então sempre roda pelo menos uma vez.
  • MOD dá o resto e DIV a parte inteira de uma divisão: 17 MOD 5 é 2, 17 DIV 5 é 3.
  • Uma função retorna um valor; uma procedure não. Uma variável local funciona apenas dentro do seu bloco; uma global funciona em qualquer lugar.

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