Pular para o conteúdo

Software de Sistema

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

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

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.

Um sistema operacional desktop na tela
Um sistema operacional desktop gerencia a tela, arquivos e programas para o usuário
Um smartphone segurado em uma mão, mostrando a tela inicial do Android com seus ícones de aplicativos
Um telefone precisa de um tão quanto: este é um sistema operacional mobile, Android

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ê.
Diagrama de hub com o sistema operacional no centro ligado por raios à gestão de memória, processo, arquivo, dispositivo e segurança e à interface do usuário
As principais tarefas que o sistema operacional gerencia
Um mapa de memória com o sistema operacional e três aplicativos cada em seu próprio bloco, separados por endereços de fronteira; um acesso dentro de um bloco é permitido mas um acesso que ultrapassa uma fronteira é bloqueado
A proteção de memória mantém cada aplicativo em seu próprio bloco de memória

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:

Programas utilitários comuns: antivírus, backup, compressão de arquivos e desfragmentação de disco
Programas utilitários: antivírus, backup, compressão e desfragmentação
  • 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.

Explorar

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.

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

Um novo programa em desenvolvimento reutilizando rotinas prontas de uma biblioteca de matemática, uma biblioteca de gráficos e uma biblioteca de rede
Um novo programa reutilizando rotinas prontas de bibliotecas

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).
Uma biblioteca estática é copiada para o executável durante a compilação, criando um programa independente maior; um arquivo de biblioteca dinâmica permanece separado, é carregado durante a execução e é compartilhado por vários programas
Estática: a biblioteca é copiada para o executável. Dinâmica: um arquivo de biblioteca compartilhada é carregado no tempo de execução

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.

Explorar

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.

Um compilador traduz o código-fonte uma vez em um executável que então roda muitas vezes sem tradutor presente; um interpretador traduz e executa o código-fonte linha por linha, em cada execução
Um compilador traduz uma vez em um programa independente; um interpretador traduz linha por linha, em cada execução

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.

O código-fonte Java é compilado uma vez em bytecode independente de plataforma (.class), que uma JVM no Windows, macOS ou Linux então interpreta ou compila JIT em código nativo
Java compila para bytecode portátil que qualquer JVM executa — escreva uma vez, execute em qualquer lugar

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.

Explorar

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.

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

Um IDE reúne o editor de código, um botão Executar e um depurador em um único programa
Um IDE agrupa o editor, um botão Executar e um depurador

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 janela de IDE anotada com tags numeradas: palavras-chave coloridas (prettyprint), bloco de código contraído, prompt pop-up sugerindo um nome, sublinhado ondulado do verificador dinâmico de sintaxe, ponto de breakpoint na margem, seta na linha atual durante single stepping, painel de variáveis e report window
As funcionalidades da IDE apresentam os nomes do syllabus, nos locais onde você os veria na tela

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.

Um fluxo de trabalho de debugger: defina um breakpoint, execute o programa e, quando ele atingir o breakpoint, pause para inspecionar as variáveis, depois faça single stepping linha por linha ou continue
Um debugger: defina um breakpoint, execute, então pause para inspecionar variáveis e faça single stepping pelo código

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.

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

Provas Anteriores

Mais tópicos em Ciência da Computação A-Level

Entrar ou criar conta

IGCSE, A-Level & AP