| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| Explicar por que um sistema computacional requer um Sistema Operacional (SO) | |
| Explique as principais tarefas de gestão realizadas pelo Sistema Operacional | Incluindo gestão de memória, gestão de ficheiros, gestão de segurança, gestão de hardware (entrada/saída/periféricos), gestão de processos |
| Demonstre compreensão da necessidade de software de utilidade típico fornecido com um Sistema Operacional | Incluindo formatador de disco, verificador de vírus, software de desfragmentação, análise de conteúdos de disco / software de reparação de disco, compressão de ficheiros, software de cópia de segurança |
| Demonstre compreensão de bibliotecas de programas | Incluindo: • o software em desenvolvimento é frequentemente construído utilizando código existente de bibliotecas de programas • os benefícios para o desenvolvedor do software construído utilizando ficheiros de biblioteca, incluindo ficheiros Dynamic Link Library (DLL) |
Software de Sistema
Ciência da Computação A-Level · Tópico 5
20:46
Sistemas Operacionais
Você nunca viu isso, e nunca verá — mas ele está sempre lá. Atrás de cada aplicativo que você abre, cada arquivo que você salva, cada toque na tela, um invisível…
Narração em inglês · legendas em inglês e 中文 que você pode alternar
5.1
Sistemas Operacionais
Programa
Fonte: Programa Cambridge International
Por que um computador precisa de um SO
O hardware sozinho apenas busca e executa instruções — não sabe nada sobre arquivos, programas, redes ou usuários. O sistema operacional (SO) é a camada de software que:
- gerencia o hardware (processador, memória, E/S, armazenamento) dos programas em execução.
- fornece serviços (sistema de arquivos, rede, contas de usuário) através de uma interface clara, para que programas não precisem falar diretamente com o hardware.
- fornece uma interface para o usuário (linha de comando, GUI, toque).
- permite que vários programas compartilhem o hardware com segurança — cada um obtém tempo justo de CPU e é mantido fora da memória dos outros.
Sem um SO, cada programa precisaria de seus próprios drivers, e apenas um programa poderia rodar com segurança por vez.
"Descreva o propósito de um SO" — a lista de cinco pontos. O SO (1) fornece uma interface entre o usuário e o hardware; (2) oculta a complexidade do hardware do usuário e dos programas de aplicativo; (3) gerencia os recursos de hardware — tempo de processador, memória, armazenamento e dispositivos de entrada/saída — e os compartilha entre programas; (4) carrega software de aplicativo na memória e o executa, oferecendo a cada programa a mesma plataforma para rodar; (5) permite que vários programas executem simultaneamente (multitarefa) mantendo-os, e os dados dos usuários, seguros. Dê cinco pontos diferentes; "ele roda o computador" ou "gerencia recursos" sozinhos não geram nota.


Tarefas principais de gerenciamento
O programa de estudos nomeia cinco. Cada ponto abaixo é uma coisa que o SO realmente faz, o que uma questão "descreva" quer.
- gestão de memória — aloca memória para cada programa ao ser carregado, mantém a memória de cada programa separada (proteção de memória) para que um não sobrescreva outro, libera a memória quando um programa termina e faz swap de páginas entre RAM e armazenamento secundário (o disco) (memória virtual / paginação) para que mais programas estejam abertos do que a memória física permite.
- gestão de processos — um programa em execução é um processo. O SO cria e encerra processos, decide qual processo obterá a CPU a seguir (agendamento) e por quanto tempo (uma fatia de tempo), alterna entre eles, resolve conflitos quando dois querem o mesmo recurso e pode matar um que deixa de responder.
- gestão de hardware (entrada/saída e periféricos) — comunica-se com cada dispositivo através de seu driver de dispositivo, enfileira e armazena em buffer dados enviados para dispositivos lentos como uma impressora, responde a interrupções de dispositivos e compartilha um dispositivo entre vários programas.
- gestão de arquivos — cria, nomeia, copia, move e exclui arquivos e pastas, mantém a estrutura de diretório e um registro de onde cada arquivo está armazenado no disco, aloca espaço em disco para arquivos e impõe direitos de acesso (leitura / escrita / execução) para cada usuário.
- gestão de segurança — contas de usuário e senhas (autenticação), direitos de acesso, criptografia de dados armazenados, firewall, atualizações automáticas de segurança e um log de quem fez o quê.


Como a gestão de memória e de processos suporta multitarefa (um favorito de quatro pontos). A gestão de memória carrega vários programas na memória ao mesmo tempo, cada um em sua própria área protegida, e acompanha quais endereços pertencem a quais; a gestão de processos compartilha o processador entre eles — cada processo roda por uma fatia de tempo, o SO salva seu estado e alterna para o próximo, e a alternância é tão rápida que todos os programas parecem rodar juntos. Interrupções permitem que o SO retome o processador de um processo sempre que um dispositivo precisar de atenção.
Interrupções. Uma interrupção de hardware vem de um dispositivo: uma tecla pressionada, um clique do mouse, uma impressora sem papel, um disco terminando uma transferência, uma falha de energia. Uma interrupção de software vem de um programa: divisão por zero, uma instrução inválida, uma tentativa de usar memória que não pertence ou uma solicitação de serviço do SO. O manipulador de interrupções do SO salva o estado do processo em execução, trata a interrupção e depois restaura o processo (o tópico 4 cobre o detalhe busca-executar).
Software utilitário
Programas utilitários são software de sistema que mantêm, reparam ou otimizam o computador em vez de realizar a tarefa do usuário; o avaliador aceita "realiza uma tarefa específica de manutenção que melhora o desempenho ou a segurança". A maioria dos SOs embute estes:

- formatador de disco — prepara um disco novo (ou apaga um antigo) para uso: configura seu sistema de arquivos e partições, apagando quaisquer dados existentes.
- verificador de vírus (antivírus) — escaneia arquivos e memória, compara código contra um banco de dados de assinaturas de vírus conhecidos e monitora comportamento suspeito, então isola ou excede o que encontrar; executa em agendamento e em todo download, e precisa ser atualizado conforme novos vírus aparecem.
- software de desfragmentação (desfragmentador de disco) — um disco rígido armazena um arquivo nos blocos livres encontrados, então após muitas salvamentos e exclusões um arquivo fica espalhado (fragmentado) pelo prato e a cabeça de leitura/escrita deve pular entre as partes. O desfragmentador move as partes de cada arquivo próximas umas das outras e agrupa o espaço livre em uma única região, para que arquivos carreguem mais rápido e novos arquivos não fiquem fragmentados. Não é necessário em um SSD, que não tem cabeça móvel.
- análise de conteúdo do disco / software de reparo de disco — mostra o que está usando o espaço do disco (arquivos grandes, duplicados ou temporários) para que possam ser removidos; encontra e repara setores defeituosos, clusters perdidos e erros de sistema de arquivos.
- compressão de arquivos (compactação) — reduz o tamanho dos arquivos para que ocupem menos armazenamento e transfiram mais rápido; arquivagem agrupa muitos arquivos em um único.
- software de backup (cópia de segurança) — copia arquivos para outro meio (disco externo, rede, nuvem) em agendamento para que os dados possam ser restaurados após perda, corrupção ou ataque de ransomware; uma cópia completa é seguida por backups incrementais apenas do que mudou.
- um firewall (filtra tráfego de rede por regras) e ferramentas de criptografia, para segurança; um monitor de sistema e atualizações automáticas.
Embutir estes com o SO economiza ao usuário a instalação de cada um.
Qual utilitário faz o quê. Desempenho: desfragmentação (acesso a arquivos mais rápido), reparo de disco (um disco com erros é lento ou falha), análise de conteúdo do disco (espaço livre ao excluir lixo), compressão (mais cabe no disco). Segurança: verificador de vírus, firewall, criptografia e backup (a única recuperação de ransomware). Uma questão "trace uma linha" associa cada utilitário a exatamente um propósito — aprenda os pares acima e use os nomes do programa de estudos.
Exemplo resolvido. Explique como a desfragmentação pode melhorar o desempenho de um computador (3 pontos).
Com o tempo um arquivo é armazenado em blocos espalhados pelo disco rígido, então lê-lo precisa de muitos movimentos da cabeça de leitura/escrita. O desfragmentador rearranja os blocos para que cada arquivo seja armazenado contigüemente e o espaço livre esteja junto. Arquivos são então lidos com menos movimentos de cabeça, então carregam mais rápido, e novos arquivos podem ser escritos em um espaço contínuo.
Onde o sistema operacional se situa
Toque em cada camada. O SO é a camada do meio — ele fica entre seus aplicativos e o hardware, compartilhando a máquina seguramente para que programas nunca toquem o hardware diretamente.
| English | Português |
|---|---|
| operating system/ˈɒpəreɪtɪŋ ˈsɪstəm/ | sistema operacional |
| processor/ˈprəʊsesə/ | Processador |
| multitasking/ˈmʌltitæskɪŋ/ | multitarefa |
| memory management/ˈmeməri ˈmænɪdʒmənt/ | gerenciamento de memória |
| memory protection/ˈmeməri prəˈtekʃn/ | proteção de memória |
| RAM/ræm/ | RAM |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | armazenamento secundário |
| virtual memory/ˈvɜːtʃuːəl ˈmeməri/ | memória virtual |
| paging/ˈpeɪdʒɪŋ/ | gerenciamento de páginas |
| process management/ˈprəʊses ˈmænɪdʒmənt/ | gerenciamento de processos |
| process/ˈprəʊses/ | processo |
| scheduling/ˈʃedjuːlɪŋ/ | agendamento |
| time slice/taɪm slaɪs/ | fatia de tempo |
| device driver/dɪˈvaɪs ˈdraɪvə/ | driver de dispositivo |
| interrupts/ˈɪntərʌpts/ | interrupções |
| directory/daɪˈrektəri/ | diretório |
| access rights/ˈækses raɪts/ | permissões de acesso |
| authentication/ɔːˌθentɪˈkeɪʃn/ | autenticação |
| firewall/ˈfaɪəwɔːl/ | Firewall |
| hardware interrupt/ˈhɑːdweə ˈɪntərʌpt/ | interrupção de hardware |
| software interrupt/ˈsɒftweə ˈɪntərʌpt/ | interrupção de software |
| interrupt handler/ˈɪntərʌpt ˈhændlə/ | manipulador de interrupções |
| utility program/juːˈtɪlɪti ˈprəʊɡræm/ | programa utilitário |
| antivirus/ˌæntɪˈvaɪrəs/ | antivírus |
| backup/ˈbækʌp/ | backup |
| compression/kəmˈpreʃn/ | compressão |
| disk defragmenter/dɪsk ˌdiːˈfræɡmentə/ | desfragmentador de disco |
| signatures/ˈsɪɡnɪtʃəz/ | assinaturas |
| fragmented/fræɡˈmentɪd/ | fragmentado |
| incremental backups/ˌɪŋkrɪˈmentl ˈbækʌps/ | backups incrementais |
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | biblioteca de programas |
| subroutines/ˈsʌbruːtiːnz/ | subrotinas |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | rotinas de biblioteca |
| static library/ˈstætɪk ˈlaɪbrəri/ | biblioteca estática |
| executable/ɪɡˈzekjʊtəbl/ | arquivo executável |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | biblioteca dinâmica |
| translator/trænˈsleɪtə/ | tradutor |
| machine code/məˈʃiːn kəʊd/ | código de máquina |
5.1
Bibliotecas de Programas
Uma biblioteca de programas é código pré-escrito (subrotinas, classes, módulos) que programas reutilizam em vez de escrevê-lo por conta própria — ex.: uma biblioteca matemática, uma biblioteca de rede, uma biblioteca gráfica.

Benefícios: economiza tempo (código pronto), confiável (bem testado, amplamente utilizado) e padronizado (comportamento consistente).
Lista de benefícios para o avaliador, voltada ao desenvolvedor. As rotinas de biblioteca já estão escritas e testadas, tornando o desenvolvimento mais rápido e barato; são confiáveis e, por serem usadas por muitos programas, largely error-free (praticamente livres de erros); o desenvolvedor não precisa de expertise naquela área (gráficos, compressão, criptografia, busca de caminhos); o programa é mais fácil de manter porque código comum fica em um único lugar; e toda uma equipe pode usar as mesmas rotinas, garantindo resultados consistentes. Desvantagens: uma rotina pode não fazer exatamente o que você precisa e não pode ser alterada; seu programa depende da biblioteca estar disponível, correta e segura — um bug ou vulnerabilidade na biblioteca é um bug no seu programa; e você deve aprender como chamá-la.
- uma biblioteca estática é copiada para o executável durante a compilação (funciona isoladamente, mas é maior e precisa ser recompilada para atualizar).
- uma biblioteca dinâmica (DLL, Dynamic Link Library;
.so) é carregada em tempo de execução (executáveis menores, compartilhados por vários programas, atualizados uma vez para todos).

Arquivos de Dynamic Link Library (DLL). Uma DLL é uma biblioteca que é carregada na memória apenas quando um programa a chama, no tempo de execução, e permanece como um arquivo separado em vez de ser copiada para o executável. Benefícios: o executável é menor; vários programas em execução compartilham uma cópia da DLL na memória; uma DLL pode ser atualizada (correção de bug, novo dispositivo) sem recompilar os programas que a utilizam; e a memória é usada apenas enquanto a rotina estiver necessária. Desvantagens: o programa não funcionará se a DLL estiver ausente, movida ou for a versão errada; uma DLL atualizada pode quebrar um programa que dependia do comportamento antigo; e uma DLL falsa colocada no seu lugar roda com os direitos do programa.
Exemplo resolvido. Uma equipe escreve o software para um robô de restaurante e usa uma biblioteca de programas que inclui uma rotina para encontrar o caminho mais curto entre mesas. Explique dois benefícios e uma desvantagem para a equipe.
Benefícios: a rotina já está escrita e testada, então a equipe economiza tempo e pode confiar no resultado; a equipe não precisa entender algoritmos de busca de caminho e pode gastar o tempo nas funcionalidades próprias do robô. Desvantagem: a rotina pode não lidar exatamente com as necessidades do restaurante (mover cadeiras, corredores de sentido único) e a equipe não pode alterá-la, então podem ter que contornar suas limitações.
Laboratório de conceitos de computação
Classifique exemplos concretos pelo conceito de computação que eles demonstram.
5.2
Tradutores de linguagem
Programa
| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| Demonstre compreensão da necessidade de: • software ensamblador para a tradução de um programa em linguagem assemble • um compilador para a tradução de um programa em linguagem de alto nível • um intérprete para a tradução e execução de um programa em linguagem de alto nível | |
| Explique os benefícios e desvantagens do uso de um compilador ou intérprete e justifique o uso de cada um | |
| Demonstre consciência de que programas em linguagem de alto nível podem ser parcialmente compilados e parcialmente interpretados, como Java (modo console) | |
| Descreva características encontradas num Ambiente de Desenvolvimento Integrado (IDE) típico | Incluindo: • para codificação, incluindo prompts sensíveis ao contexto • para deteção inicial de erros, incluindo verificações de sintaxe dinâmicas • para apresentação, incluindo formatação automática, expansão e contração de blocos de código • para depuração, incluindo passo a passo, pontos de interrupção, i.e., variáveis, expressões, janela de relatório |
Fonte: Programa Cambridge International
Você escreve código-fonte; o computador executa código de máquina. Um tradutor converte entre eles.
Montador
Um ensamblador traduz linguagem de ensamblagem para código de máquina: cada instrução mnemônica (LDD, ADD, JMP) torna-se exatamente uma instrução de código de máquina, e endereços simbólicos e rótulos são substituídos por endereços reais. É necessário porque o processador executa apenas código de máquina, e a linguagem de ensamblagem é usada onde o programador precisa de controle direto do hardware (sistemas embarcados, drivers de dispositivo).
Compilador
Um compilador traduz um programa de alto nível para código de máquina uma única vez, antes de ser executado.
- ele relata todos os erros no tempo de compilação; uma vez limpo, produz um executável independente que roda sem o compilador instalado e pode ser executado várias vezes.
- geralmente mais rápido no tempo de execução (nenhuma tradução durante a execução), mas atrelado a uma CPU/SO — recompilar para cada plataforma.
A descrição de dois pontos: um compilador traduz o programa inteiro de alto nível para código de máquina (código objeto) antes de ser executado, produz um arquivo executável e relata todos os erros de sintaxe juntos em uma lista no final da tradução. Ele não executa o programa.
Interpretador
Um interpretador traduz e executa um programa de alto nível linha por linha, não produzindo nenhum executável.
- ele relata um erro quando chega nessa linha, depois para; você pode corrigi-lo e continuar — bom para desenvolvimento.
- o interpretador deve estar instalado para executar o programa; geralmente mais lento (cada execução re-traduz), mas fácil de portar entre plataformas.
A descrição de duas marcas: um interpretador traduz uma declaração do programa de alto nível por vez e a executa imediatamente antes de passar para a próxima; nenhum arquivo executável é produzido; ele para no primeiro erro encontrado e o relata. Tanto o código-fonte quanto o interpretador devem estar presentes sempre que o programa for executado.

Escolhendo entre eles
| Use um compilador quando: | Use um interpretador quando: |
|---|---|
| velocidade no tempo de execução importa | você quer ciclos rápidos de edição–execução |
| distribuir para usuários sem ferramentas de desenvolvimento | escrever scripts multiplataforma |
| o programa roda muitas vezes | o programa é pequeno ou rodado uma única vez |
| ensinar iniciantes |
Benefícios e desvantagens, conforme a lista do gabarito.
| compilador | interpretador | |
|---|---|---|
| velocidade de execução | rápida — já é código de máquina | lenta — traduzida em cada execução |
| o que o usuário precisa | apenas o executável; sem tradutor, e o código-fonte permanece privado | o código-fonte e o interpretador |
| encontrar erros | todos os erros listados de uma vez, após a tradução do programa inteiro | cada erro relatado na linha onde ocorre, à medida que você desenvolve |
| alterar o código | recompilar o programa inteiro após cada alteração | editar e executar novamente imediatamente |
| portabilidade | código de máquina roda em apenas uma plataforma; recompilar para cada | a mesma fonte roda em qualquer lugar que exista um interpretador |
Exemplo resolvido. Um desenvolvedor usa um interpretador enquanto escreve um programa e um compilador quando termina. Explique como cada um é usado (4 marcas).
Durante o desenvolvimento, o interpretador executa o programa parcialmente escrito imediatamente, sem esperar por uma tradução completa; ao encontrar um erro, ele relata a linha, então o desenvolvedor corrige e executa novamente imediatamente — um ciclo rápido de edição–execução que facilita o debugging. Quando o programa está terminado, o compilador traduz todo o programa em um executável que roda mais rápido, não precisa de tradutor no computador do usuário e não revela o código-fonte, podendo ser vendido ao público.
Híbrido: Java
Java é compilado para bytecode (uma forma intermediária independente de plataforma), que uma máquina virtual (JVM) então interpreta — ou usa compilação just-in-time para transformar partes quentes em código nativo. Assim, erros são capturados cedo, o bytecode roda em qualquer lugar com uma JVM ("escreva uma vez, execute em qualquer lugar"), e programas de longa duração atingem velocidade próxima à nativa. C# e Python usam designs semelhantes.
A frase do programa é "parcialmente compilado e parcialmente interpretado": a etapa de compilação captura erros de sintaxe e produz bytecode compacto e portátil; a etapa de interpretação permite que esse único arquivo de bytecode rode em qualquer máquina com uma máquina virtual, custando alguma velocidade. Java em modo console (um programa de texto executado pela linha de comando) é o exemplo do programa.

Exemplo resolvido. O código-fonte Java é compilado em bytecode, que uma JVM então interpreta. Por que usar ambos, em vez de compilar diretamente para código de máquina? Um compilador produz código de máquina para um processador e sistema operacional, então um programa compilado em uma máquina não funcionará em outra. O compilador do Java, em vez disso, visa uma máquina virtual, então o bytecode que ele produz é idêntico em todos os lugares; cada plataforma então fornece sua própria JVM para interpretar esse bytecode em suas próprias instruções nativas. Um único arquivo compilado, portanto, funciona em qualquer lugar onde exista uma JVM - "escreva uma vez, execute em qualquer lugar". O preço é a velocidade: interpretar bytecode é mais lento do que executar código nativo, razão pela qual uma JVM real também usa compilação JIT para transformar bytecode frequentemente executado em código nativo enquanto o programa roda. Nomeie ambos os lados - os pontos são pela portabilidade comprada ao custo da velocidade.
O caminho do compilador: código-fonte para programa em execução
Passe por como um compilador funciona — traduzindo todo o programa uma vez, antes de executar. Contraste com um interpretador, que traduz e executa uma linha de cada vez.
| English | Português |
|---|---|
| compiler/kəmˈpaɪlə/ | compilador |
| object code/ˈɒbdʒekt kəʊd/ | código-objeto |
| interpreter/ɪnˈtɜːprɪtə/ | interpretador |
| bytecode/ˈbaɪtkəʊd/ | bytecode |
| virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ | máquina virtual |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | compilação just-in-time |
| portable/ˈpɔːtəbl/ | portátil |
5.2
Ambiente de Desenvolvimento Integrado (IDE)
Um ambiente integrado de desenvolvimento (IDE) agrupa as ferramentas para escrever, testar e depurar código em um único aplicativo:

O syllabus agrupa as funcionalidades em quatro tipos. Aprenda qual funcionalidade pertence a qual, porque as perguntas pedem para classificá-las e descrever uma de cada grupo.
- Para codificação: comandos sensíveis ao contexto — ao digitar, o IDE exibe identificadores, palavras-chave ou parâmetros adequados naquele ponto do código; autocompletar termina o nome por você; indentação automática e correspondência de colchetes mantêm o layout correto enquanto você digita.
- Para detecção inicial de erros: verificações dinâmicas de sintaxe — o editor verifica a sintaxe enquanto você digita e sublinha ou destaca um erro imediatamente, antes da tradução do programa; após a tradução, mensagens de erro com números de linha.
- Para apresentação: prettyprint — palavras-chave, identificadores, strings e comentários exibidos em cores ou fontes diferentes (destaque de sintaxe) com indentação consistente, para que a estrutura seja visível à primeira vista; expandir e contrair blocos de código — ocultar o corpo de um loop, um IF ou uma subrotina para ver o esqueleto.
- Para depuração: pontos de interrupção — o programa pausa quando atinge uma linha marcada; passo único — a partir da pausa, execute uma linha por vez; uma janela que mostra os valores atuais de variáveis e expressões conforme mudam; e uma janela de relatório que lista erros, avisos e saída.
Outras funcionalidades: integração com tradutor (compile ou execute com uma tecla, erros mostrados inline), um depurador que aciona as funcionalidades de depuração acima, integração com controle de versão (git), gerenciamento de projeto, sistema de ajuda, ferramentas de refatoração (renomeação segura) e integração com testes unitários.

Uma IDE acelera o desenvolvimento ao colocar escrever → executar → depurar → corrigir atrás de uma única interface. IDEs comuns: Visual Studio, PyCharm, Eclipse, VS Code.

Exemplo resolvido. Uma função Calculate() retorna um valor inesperado quando o programa é executado. Descreva como as funcionalidades de depuração de uma IDE típica ajudam a encontrar a causa (4 pontos).
Defina um breakpoint na primeira linha de Calculate(), para que o programa pause lá em vez de continuar executando. Em seguida, faça single-step pela função uma linha por vez. Após cada passo, leia os valores das variáveis e de qualquer expressão que você tenha pedido à IDE para watch, e compare-os com os valores esperados; a primeira linha após a qual um valor está errado é onde está o erro lógico. A report window mostra qualquer mensagem de erro de tempo de execução e a saída produzida até então.
Exemplo resolvido. Coloque cada funcionalidade no seu grupo do syllabus: prettyprint, context-sensitive prompt, dynamic syntax check, breakpoint, expand/collapse code blocks, report window.
Coding: context-sensitive prompt. Detecção inicial de erros: dynamic syntax check. Apresentação: prettyprint, expand/collapse code blocks. Depuração: breakpoint, report window.
Licenças de software usadas ao traduzir ou distribuir código
Uma licença de software especifica o uso permitido, cópia, modificação e redistribuição de uma obra protegida por direitos autorais. Software Livre refere-se às liberdades de executar, estudar, alterar e compartilhar software; pode ser vendido. Licenças Open-source permitem acesso ao código-fonte e modificação/redistribuição licenciada. Freeware pode custar nada enquanto retém direitos de fonte e modificação. Para questões de redistribuição, identifique as condições reais da licença; veja o tópico 7 para comparações e escolhas justificadas.
| English | Português |
|---|---|
| debugger/ˈdiːbʌɡə/ | depurador |
| context-sensitive prompts/ˈkɒntekst ˈsensɪtɪv prɒmpts/ | sugestões sensíveis ao contexto |
| auto-complete/ˈɔːtəʊ kəmˈpliːt/ | autocompletar |
| dynamic syntax checks/daɪˈnæmɪk ˈsɪntæks tʃeks/ | verificação dinâmica de sintaxe |
| prettyprint/ˈpretɪprɪnt/ | formatação automática |
| syntax highlighting/ˈsɪntæks ˈhaɪlaɪtɪŋ/ | destaque de sintaxe |
| single stepping/ˈsɪŋɡl ˈstepɪŋ/ | execução passo a passo |
| report window/rɪˈpɔːt ˈwɪndəʊ/ | janela de relatório |
| version control/ˈvɜːʃn kənˈtrəʊl/ | controle de versão |
| refactoring/rɪˈfæktərɪŋ/ | refatoração |
| unit test/ˈjuːnɪt test/ | teste unitário |
5.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 |
|---|---|
| sistema operacional | software que gerencia o hardware e recursos do computador e fornece uma interface entre o usuário, os programas de aplicativo e o hardware |
| software utilitário | software de sistema que executa uma tarefa específica para manter, otimizar ou proteger o computador, como um verificador de vírus ou desfragmentador |
| biblioteca de programas | conjunto de rotinas pré-escritas e testadas (subrotinas, classes, módulos) que um programa pode usar em vez de escrever as próprias |
| Dynamic Link Library (DLL) | uma biblioteca de programas cujas rotinas são carregadas na memória apenas quando o programa as chama, em tempo de execução, e são compartilhadas entre programas |
| assembler | tradutor que converte um programa de linguagem de montagem em código de máquina, uma instrução por instrução |
| compiler | tradutor que converte todo um programa de linguagem de alto nível em código de máquina antes de ser executado, produzindo um arquivo executável |
| interpreter | tradutor que traduz e executa um programa de linguagem de alto nível uma declaração por vez |
| integrated development environment | aplicativo único que fornece as ferramentas para escrever, traduzir, executar e depurar um programa |
| context-sensitive prompt | pop-up que sugere identificadores, palavras-chave ou parâmetros que se encaixam no ponto atual do código |
| dynamic syntax check | verifica a sintaxe do código à medida que é digitado e sinaliza um erro antes que o programa seja traduzido |
| prettyprint | exibe o código com palavras-chave, identificadores e comentários em cores ou fontes diferentes e com indentação consistente |
| breakpoint | linha marcada na qual o programa em execução pausa para que as variáveis possam ser inspecionadas |
| single stepping | executa um programa pausado uma declaração por vez sob o controle do programador |
| English | Português |
|---|---|
| assembler/əˈsemblə/ | montador |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | linguagem de montagem |
| integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ | ambiente integrado de desenvolvimento |
5.2
Dicas de prova
- Liste as tarefas do SO pelos seus nomes do syllabus (gestão de memória, processo, hardware, arquivos e segurança) e diga o que cada uma faz — "gerencia recursos" sozinho é muito vago.
- Compare compiler vs interpreter vs assembler: o que cada um traduz, quando o traduz e como os erros são relatados.
- Explique o que uma IDE oferece usando os grupos do syllabus: coding, detecção inicial de erros, apresentação, depuração.
- Uma resposta de "benefício para o desenvolvedor" nomeia a economia do desenvolvedor: tempo, custo, competência, confiabilidade ou manutenção. Um "drawback" nomeia uma dependência: disponibilidade, versão, adequação, segurança.
- Para "descrever a operação de" um tradutor, dê três coisas: o que é traduzido (programa inteiro ou uma declaração), quando (antes de executar ou enquanto executa) e como os erros são relatados (todos de uma vez ou no primeiro erro).
Erros comuns
- Escrever "o OS controla o computador" ou "gerencia recursos" sem exemplo de tarefa. Cada ponto é uma tarefa nomeada com o que ela faz.
- Dizer que um interpreter "compila linha por linha". Um interpreter traduz e executa cada declaração; ele nunca produz um executável.
- Dizer que um compiler executa o programa. Ele apenas traduz; o executável roda depois, sem o compiler.
- Colocar uma DLL "dentro" do executável. Isso é uma biblioteca estática; uma DLL permanece um arquivo separado carregado em tempo de execução.
- Dizer que a desfragmentação "exclui" ou "comprime" arquivos, ou que é necessária em SSDs. Ela apenas move blocos para que cada arquivo seja armazenado contiguamente.
- Classificar prettyprint ou contrair blocos sob "depuração". Eles são funcionalidades de apresentação; depuração refere-se a breakpoints, single stepping, watching variables e report window.
| English | Português |
|---|---|
| breakpoints/ˈbreɪkpɔɪnts/ | pontos de interrupção |
Aulas interativas sobre este tópico
Passe por ele passo a passo, com exercícios de verificação instantânea.