Programming basics · Fundamentos de programação
| English | Português |
|---|---|
| variable/ˈveərɪəbl/ | variável |
| data type/ˈdeɪtə taɪp/ | tipo de dado |
| constant/ˈkɒnstənt/ | constante |
| flowchart/ˈfləʊtʃɑːt/ | fluxograma |
| structured English/ˈstrʌktʃəd ˈɪŋɡlɪʃ/ | inglês estruturado |
| pseudocode/ˈsuːdəʊkəʊd/ | pseudocódigo |
| assignment/əˈsaɪnmənt/ | atribuição |
| identifier/aɪˈdentɪfaɪə/ | identificador |
| operators/ˈɒpəreɪtəz/ | operadores |
| precedence/ˈpresɪdəns/ | precedência |
| concatenation/kənˌkætəˈneɪʃn/ | concatenação |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | rotinas de biblioteca |
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | biblioteca de programas |
| insert/ˈɪnsɜːt/ | inserir |
The number that did not fit
- On 4 June 1996 the first Ariane 5 rocket veered off course and destroyed itself 37 seconds after launch, with four satellites on board.
- The cause was one conversion: a 64-bit decimal value describing the rocket's sideways speed was copied into a 16-bit integer. Ariane 5 was faster than Ariane 4, the number was too big for the box, and the guidance computer shut down.
- Every variable has a data type 数据类型, and the type decides what fits. Choosing it is the first job in turning a design into code.
- This lesson is the basics: constants, variables, types, expressions, input and output, and the ready-made routines you may call.
O número que não cabia
- Em 4 de junho de 1996, o primeiro foguete Ariane 5 saiu da trajetória e destruiu-se 37 segundos após o lançamento, com quatro satélites a bordo.
- A causa foi uma conversão: um valor decimal de 64 bits descrevendo a velocidade lateral do foguete foi copiado para um inteiro de 16 bits. O Ariane 5 era mais rápido que o Ariane 4, o número era grande demais para a caixa, e o computador de orientação desligou.
- Cada variável tem um tipo de dado 数据类型, e o tipo decide o que cabe. Escolhê-lo é o primeiro trabalho em transformar um projeto em código.
- Esta lição é o básico: constantes, variáveis, tipos, expressões, entrada e saída, e as rotinas prontas que você pode chamar.
From design to code
- A design arrives as a flowchart 流程图 or as structured English 结构化英语. You turn it into pseudocode 伪代码, and later into a real language.
- Find the variables 变量 and their types. Input and output boxes become
INPUTandOUTPUT; decision diamonds becomeIF … ELSE … ENDIForCASE; loop arrows becomeWHILE,REPEAT … UNTILorFOR; process boxes become assignments. - Check by tracing a small input through your pseudocode before you call it finished.
Each flowchart symbol becomes one kind of pseudocode statement
Do projeto para o código
- Um projeto chega como um fluxograma 流程图 ou como inglês estruturado 结构化英语. Você o transforma em pseudocódigo 伪代码, e depois em uma linguagem real.
- Encontre as variáveis 变量 e seus tipos. Caixas de entrada e saída tornam-se
INPUTeOUTPUT; losangos de decisão tornam-seIF … ELSE … ENDIFouCASE; setas de loop tornam-seWHILE,REPEAT … UNTILouFOR; caixas de processo tornam-se atribuições. - Verifique traçando uma pequena entrada pelo seu pseudocódigo antes de considerá-lo concluído.

Cada símbolo de fluxograma torna-se um tipo de declaração de pseudocódigo
Constants and variables
- A constant 常量 holds a value that never changes while the program runs:
CONSTANT Pi = 3.14159. A variable holds one that may change, and is declared with a type:DECLARE Radius : REAL. - Use a constant for a fixed value that appears in several places, such as a tax rate or a maximum score.
- The benefits the mark scheme lists: it is set once and cannot be changed accidentally; a change is made in one place and reaches every statement that uses it; the identifier 标识符 gives the value a meaningful name.
A variable can be reassigned; a constant cannot
Constantes e variáveis
- Uma constante 常量 tem um valor que nunca muda durante a execução do programa:
CONSTANT Pi = 3.14159. Uma variável tem um que pode mudar, e é declarada com um tipo:DECLARE Radius : REAL. - Use uma constante para um valor fixo que aparece em vários lugares, como uma taxa de imposto ou uma pontuação máxima.
- Os benefícios que o gabarito lista: ela é definida uma vez e não pode ser alterada acidentalmente; uma mudança é feita em um único lugar e afeta todas as declarações que a usam; o identificador 标识符 dá ao valor um nome significativo.

Uma variável pode ser reatribuída; uma constante não pode
A variable is a labelled box · Uma variável é uma caixa rotulada
Each assignment stores one value in a named box; reassigning the same name overwrites it. Step through the program and watch each box take its current value. · Cada atribuição armazena um valor em uma caixa nomeada; reatribuir o mesmo nome sobrescreve-o. Passe pelo programa e observe cada caixa assumindo seu valor atual.
A constant holds a fixed value that never changes while the program runs, whereas a variable can be reassigned. · Uma constante mantém um valor fixo que nunca muda enquanto o programa executa, enquanto uma variável pode ser reatribuída.
Constants (like Pi or a maximum score) make code clearer and let you change a recurring value in one place. · Constantes (como Pi ou pontuação máxima) tornam o código mais claro e permitem alterar um valor recorrente em um único lugar.
Which are benefits of using a constant for a value such as a tax rate? Select all · todos that apply. · Quais são benefícios de usar uma constante para um valor como uma taxa de imposto? Selecione todos os que se aplicam.
The three mark-scheme benefits are safety, a single point of change, and readability. Speed is not one of them. · Os três benefícios do gabarito são segurança, ponto único de alteração e legibilidade. Velocidade não é um deles.
The six data types
INTEGERfor whole numbers (a count, an index, a loop counter).REALfor numbers with a fractional part (a price, an average).CHARfor one character in single quotes,'A'.STRINGfor text in double quotes,"Hello".BOOLEANforTRUEorFALSE(a flag such asFound).DATEfor a calendar date.- Read the type off how the variable is used: a decimal point means
REAL,TRUEmeansBOOLEAN, single quotes meanCHAR, an array index orDIVandMODmeanINTEGER. Write the type in capitals as the guide spells it.
Os seis tipos de dados
INTEGERpara números inteiros (uma contagem, um índice, um contador de loop).REALpara números com parte fracionária (um preço, uma média).CHARpara um único caractere entre aspas simples,'A'.STRINGpara texto entre aspas duplas,"Hello".BOOLEANparaTRUEouFALSE(uma bandeira comoFound).DATEpara uma data de calendário.- Leia o tipo baseado em como a variável é usada: um ponto decimal significa
REAL,TRUEsignificaBOOLEAN, aspas simples significamCHAR, um índice de array ouDIVeMODsignificamINTEGER. Escreva o tipo em maiúsculas como o guia o soletra.
Worked example: state the appropriate data type
Found ← FALSEisBOOLEAN: it holds a truth value.Initial ← 'K'isCHAR: one character in single quotes.Name ← "Li Wei"isSTRING: text in double quotes.Price ← 12.99isREAL: it has a fractional part.Count ← Count + 1isINTEGER: a counter that goes up in whole steps.- One mark per correct type, so answer every row even when unsure; a blank cannot score.
Exemplo resolvido: declare o tipo de dado apropriado
Found ← FALSEéBOOLEAN: ele armazena um valor lógico.Initial ← 'K'éCHAR: um caractere entre aspas simples.Name ← "Li Wei"éSTRING: texto entre aspas duplas.Price ← 12.99éREAL: ele tem uma parte fracionária.Count ← Count + 1éINTEGER: um contador que aumenta em passos inteiros.- Um ponto por tipo correto, então responda todas as linhas mesmo quando não tiver certeza; um campo em branco não pontua.
Match each value to the data type its variable should be declared with. · Combine cada valor com o tipo de dado com que sua variável deveria ser declarada.
A decimal point, single quotes, double quotes and a truth value each point to one type. · Um ponto decimal, aspas simples, aspas duplas e um valor lógico apontam cada um para um tipo.
Assignment and expressions
- Assignment 赋值 uses the arrow:
Total ← Total + 1,Average ← Sum / Count. - Arithmetic operators 运算符 are
+ - * /, plusDIVfor whole-number division andMODfor the remainder:7 DIV 2 = 3and7 MOD 2 = 1. - Comparisons are
=,<>,<,>,<=,>=; logic isAND,OR,NOT. - Precedence 优先级, highest first:
NOT, then* / DIV MOD, then+ -, then comparisons, thenAND, thenOR. Use brackets when unsure.
Atribuição e expressões
- Atribuição 赋值 usa a seta:
Total ← Total + 1,Average ← Sum / Count. - Operadores aritméticos operators 运算符 são
+ - * /, maisDIVpara divisão de número inteiro eMODpara o resto:7 DIV 2 = 3e7 MOD 2 = 1. - Comparações são
=,<>,<,>,<=,>=; lógica éAND,OR,NOT. - Precedência 优先级, da mais alta para a mais baixa:
NOT, depois* / DIV MOD, depois+ -, depois comparações, depoisAND, depoisOR. Use parênteses quando estiver inseguro.
What is the value of 7 DIV 2? · Qual é o valor de 7 DIV 2?
DIV is integer division: 7 ÷ 2 = 3 remainder 1, so DIV gives 3. · DIV é divisão inteira: 7 ÷ 2 = 3 resto 1, então DIV resulta em 3.
What is the value of 7 MOD 2? · Qual é o valor de 7 MOD 2?
MOD gives the remainder: 7 ÷ 2 leaves remainder 1. · MOD dá o resto: 7 ÷ 2 deixa resto 1.
Which symbol assigns a value to a variable in this pseudocode? · Qual símbolo atribui um valor a uma variável neste pseudocódigo?
Assignment uses ←; = is comparison. · Atribuição usa ←; = é comparação.
Match each pseudocode operator to what it does. · Combine cada operador de pseudocódigo com o que ele faz.
← stores, = compares; DIV gives the quotient and MOD the remainder (7 DIV 2 = 3, 7 MOD 2 = 1). · ← armazena, = compara; DIV dá o quociente e MOD o resto (7 DIV 2 = 3, 7 MOD 2 = 1).
Input and output
OUTPUT "Enter your name:"prompts;INPUT Namereads the keyboard into the variable;OUTPUT "Hello, ", Nameprints several items separated by commas.- Strings are joined with
&, called concatenation 拼接:"A" & "BC"is"ABC". - Keep the quotes straight:
"7"is a string,7is a number, and'7'is a single character.
Entrada e saída
OUTPUT "Enter your name:"faz prompts;INPUT Namelê o teclado na variável;OUTPUT "Hello, ", Nameimprime vários itens separados por vírgulas.- Strings são unidas com
&, chamado concatenação 拼接:"A" & "BC"é"ABC". - Mantenha as aspas claras:
"7"é uma string,7é um número, e'7'é um único caractere.
Built-in functions and library routines
- A program library 程序库 holds routines that are already written, compiled and tested; calling one is faster and safer than writing your own. The Paper 2 insert 附页 lists the library routines 库例程 you may use, with their exact names.
- Strings:
LENGTH(s),LEFT(s, n),RIGHT(s, n),MID(s, start, n)with positions counted from 1,TO_UPPER(s),TO_LOWER(s). Conversion:NUM_TO_STR(x),STR_TO_NUM(s),IS_NUM(s),ASC(c),CHR(n). - Numbers and dates:
INT(x)cuts to the whole part;RAND(n)gives a real from 0 up to but not including n, soINT(RAND(6)) + 1is a dice roll;DAY,MONTH,YEAR,DAYINDEX,SETDATE,TODAY;EOF(f)for files.
The common string routines on s = "COMPUTER", positions 1 to 8
Funções embutidas e rotinas de biblioteca
- Uma biblioteca de programas 程序库 contém rotinas que já estão escritas, compiladas e testadas; chamar uma é mais rápido e seguro do que escrever a sua própria. O insert 附页 do Paper 2 lista as rotinas de biblioteca 库例程 que você pode usar, com seus nomes exatos.
- Strings:
LENGTH(s),LEFT(s, n),RIGHT(s, n),MID(s, start, n)com posições contadas a partir de 1,TO_UPPER(s),TO_LOWER(s). Conversão:NUM_TO_STR(x),STR_TO_NUM(s),IS_NUM(s),ASC(c),CHR(n). - Números e datas:
INT(x)corta para a parte inteira;RAND(n)dá um real de 0 até mas não incluindo n, entãoINT(RAND(6)) + 1é uma rolagem de dado;DAY,MONTH,YEAR,DAYINDEX,SETDATE,TODAY;EOF(f)para arquivos.

As rotinas comuns de string em s = "COMPUTER", posições 1 a 8
Which routine converts a string to capitals in 9618 pseudocode? · Qual rotina converte uma string para maiúsculas no pseudocódigo 9618?
UCASE is the IGCSE name and is not accepted here. Use the exact names printed in the Paper 2 insert. · UCASE é o nome IGCSE e não é aceito aqui. Use os nomes exatos impressos na inserção do Paper 2.
Worked example: evaluate each expression
- Given
Word ← "Program",Code ← 'Q'andN ← 7. Work from the inside out. LENGTH(Word)is7.MID(Word, 4, 2)is"gr": two characters from position 4.LEFT(Word, 3) & "!"is"Pro!".TO_UPPER(RIGHT(Word, 2))is"AM": the inner function runs first.ASC(Code) - ASC('A')is16, because'Q'is 81 and'A'is 65.N DIV 2 + N MOD 2is3 + 1 = 4.NUM_TO_STR(N) & "th"is"7th".INT(N / 2)is3, the whole part of 3.5.
Exemplo resolvido: avalie cada expressão
- Dado
Word ← "Program",Code ← 'Q'eN ← 7. Trabalhe de dentro para fora. LENGTH(Word)é7.MID(Word, 4, 2)é"gr": dois caracteres da posição 4.LEFT(Word, 3) & "!"é"Pro!".TO_UPPER(RIGHT(Word, 2))é"AM": a função interna executa primeiro.ASC(Code) - ASC('A')é16, porque'Q'é 81 e'A'é 65.N DIV 2 + N MOD 2é3 + 1 = 4.NUM_TO_STR(N) & "th"é"7th".INT(N / 2)é3, a parte inteira de 3.5.
With Word ← "Program", the value of MID(Word, 4, 2) is "". · Com Word ← "Program", o valor de MID(Word, 4, 2) é "".
Positions count from 1: P-r-o-g-r-a-m, so position 4 is g and two characters from there are gr. · As posições contam a partir de 1: P-r-o-g-r-a-m, então a posição 4 é g e dois caracteres dali são gr.
Worked example: find the error
- Each statement may misuse a function or an operator. Describe the error, or write NO ERROR.
Result ← 2 & 4:&joins strings, but 2 and 4 are integers, so+is needed.SubString ← MID("pseudocode", 4, 1): NO ERROR, one character from position 4,"u".Answer ← LENGTH(42):LENGTHtakes a string, not an integer.Flag ← "TRUE": a Boolean isTRUEwithout quotes; with quotes it is a string.
Exemplo resolvido: encontre o erro
- Cada declaração pode mal usar uma função ou um operador. Descreva o erro, ou escreva SEM ERRO.
Result ← 2 & 4:&une strings, mas 2 e 4 são inteiros, então+é necessário.SubString ← MID("pseudocode", 4, 1): SEM ERRO, um caractere da posição 4,"u".Answer ← LENGTH(42):LENGTHespera uma string, não um inteiro.Flag ← "TRUE": um Boolean éTRUEsem aspas; com aspas é uma string.
Result ← 2 & 4 correctly stores 6 in Result. · Result ← 2 & 4 armazena corretamente 6 em Resultado.
& joins strings. For two integers the operator is +; this is the error the exam asks you to describe. · & junta strings. Para dois inteiros, o operador é +; este é o erro que a prova pede para você descrever.
Marks that slip away
- The IGCSE names
UCASE,LCASE,VALandSTRare not accepted at A Level. UseTO_UPPER,TO_LOWER,STR_TO_NUM,NUM_TO_STR. - Single quotes make a
CHAR, double quotes make aSTRING.'A'and"A"are different types. - String positions start at 1, not 0.
MID(s, 1, 1)is the first character. RAND(n)never returns n itself, andINTcuts off the fraction rather than rounding.
Marcas que escapam
- Os nomes IGCSE
UCASE,LCASE,VALeSTRnão são aceitos no A Level. UseTO_UPPER,TO_LOWER,STR_TO_NUM,NUM_TO_STR. - Aspas simples fazem um
CHAR, aspas duplas fazem umSTRING.'A'e"A"são tipos diferentes. - As posições de string começam em 1, não em 0.
MID(s, 1, 1)é o primeiro caractere. RAND(n)nunca retorna n próprio, eINTcorta a fração em vez de arredondar.
You've got it
- design → pseudocode: find the variables and types, then map each flowchart symbol to a statement and trace a small input
- constant set once, changed in one place, named; variable declared with one of six types read off how it is used
←assigns;DIVwhole-number division,MODremainder; precedenceNOT→* / DIV MOD→+ -→ comparisons →AND→OR- use the insert's library routines with their exact 9618 names:
LENGTH,MID,TO_UPPER,NUM_TO_STR,INT,RAND
Entendeu?
- design → pseudocódigo: encontre as variáveis e tipos, depois mapeie cada símbolo de fluxograma para uma declaração e trace uma pequena entrada
- constante definida uma vez, alterada em um lugar, nomeada; variável declarada com um dos seis tipos lidos pela forma como é usada
←atribui;DIVdivisão de número inteiro,MODresto; precedênciaNOT→* / DIV MOD→+ -→ comparações →AND→OR- use as rotinas de biblioteca do insert com seus nomes exatos 9618:
LENGTH,MID,TO_UPPER,NUM_TO_STR,INT,RAND