Você está na página 1de 358

DEFINIÇÃO

Conceitos primordiais sobre o funcionamento de computadores; computadores


como ferramentas desenvolvidas pelos humanos para criar soluções úteis;
soluções úteis a partir da compreensão de códigos de computador.

PROPÓSITO
Iniciar as bases do Pensamento Computacional demonstrando o seu
protagonismo no mercado de trabalho. Construir uma compreensão introdutória
dos conceitos primordiais que norteiam o mundo dos computadores.

OBJETIVOS
MÓDULO 1

Descrever a equação que representa a essência dos computadores

MÓDULO 2
Reconhecer o processo de exploração do potencial dos computadores através
de códigos e algoritmos

MÓDULO 3

Empregar códigos simples de instruções de computadores

INTRODUÇÃO
VOCÊ SABE COMO OS
COMPUTADORES SURGIRAM?
Muitos pensarão em teorias da conspiração, grupos secretos, investimentos
maciços de governos em tecnologia. Outros se lembrarão dos mais velhos
comentando sobre os cartões perfurados e dos primeiros computadores, que
eram do tamanho de uma sala. Um grupo de apaixonados por tecnologia
comentará o uso dessa tecnologia durante as guerras do século XX, quando
essas máquinas estavam relacionadas a arquivo e trânsito de informações.
No entanto, o processo é, definitivamente, mais longo e mais complexo. Os
computadores não são chips, bits e afins. Computadores são o que as
máquinas sempre representaram: homens em busca de soluções. Ao longo
dos séculos, essa necessidade nos permitiu criar diques para contenção de
água, prédios e até estradas para tornar as grandes viagens mais rápidas.

NÃO ENTENDEU?
Significa a necessidade x tecnologia. Imagine que você tenha um biscoito
delicioso, e sua característica mais maravilhosa é que ele sempre parece que
saiu do forno neste exato momento. Será que o biscoito é assim pelo fato de
possuir uma fórmula que o faz parecer sempre fresquinho, ou faz muito
sucesso por estar sempre fresquinho nos pontos de venda?

Filosoficamente, isso é um dilema; sociologicamente, é perceber uma estrutura


estruturante, algo que já existe, mas que, a partir de sua existência, gera
mudanças sociais.

POR EXEMPLO:
Os gregos, em um momento de crise – a fim de que os líderes das famílias
parassem de brigar –, decidem criar um conselho. Esse conselho administraria
por meio do voto, e os membros teriam o direito de falar e defender suas
ideias. Como essa medida deu certo, os pais passaram a querer que seus
filhos estudassem cada vez mais, para que tivessem mais força nesses
conselhos. Com isso, geração após geração, a Educação passou a ser cada
vez mais valorizada. É sempre assim: o homem busca soluções, que, uma vez
criadas, levarão a uma nova situação. Isso faz com que as proposições
estejam sempre em mudança.
A filosofia da ciência – e a palavra ciência é ótima, pois está relacionada a
tomar entendimento, entender – afirma que o seu desenvolvimento vem da
busca do homem por soluções. Assim, cada nova solução gera um novo
conjunto de buscas. Uma espada; um par de óculos; o desenvolvimento de
cirurgias, de um método de produção, de uma máquina a vapor, do trem, do
carro... Em todos os momentos, a tentativa é sempre a mesma: encontrar
soluções.

Quando a demanda do século XX exigia velocidade e uma visão mais global,


passamos a voar, desenvolvemos o telégrafo, o telefone e introduzimos
máquinas que pudessem introjetar essa capacidade humana. Acelerar era uma
questão de tempo.

O Pensamento Computacional não é um exercício sobre como as máquinas


dominarão o mundo, ou como a Inteligência Artificial substituirá a humanidade.
Trata-se de entender que essas máquinas e seus componentes são nossos
filhos; elas reproduzem e aceleram o volume de cálculos, armazenamentos e
comunicações que nós idealizamos. Dessa forma, cada vez que precisamos de
algo a mais, a máquina trabalha para atender nossas demandas.

Entender isso é perceber que não estamos em uma maratona contra a


tecnologia, com medo de nos tornarmos obsoletos. Novas tecnologias surgirão,
e isso é algo que nós mesmos buscamos. Cada máquina, cada software, cada
hardware tem o propósito de atender, acelerar e realizar um desejo do coletivo.
Algo que não tem essa funcionalidade é abandonado, é esquecido.

SEJA BEM-VINDO AO MUNDO DA


TECNOLOGIA E LEMBRE-SE:

VOCÊ VERÁ AQUI O QUE É NECESSÁRIO


PARA LIDAR COM ELA.
Módulo 1

Descrever a equação que representa a essência dos computadores

EQUAÇÃO FUNDAMENTAL DOS


COMPUTADORES
Anotem a equação para não se esquecerem dela:

COMPUTADOR
=
A IMENSA CAPACIDADE DE
PROCESSAR
X
PELA TERRÍVEL DEFICIÊNCIA NO
PENSAR.

VAMOS ENTENDER O QUE É ISSO.


Este módulo trata dos recursos básicos do funcionamento dos computadores.
Isso é muito importante, pois, em pleno século XXI, não é desejável que um
profissional pense no computador como algum tipo de caixa mágica com a qual
todos interagem diariamente. De fato, no mercado de trabalho atual, é cada vez
mais importante que os profissionais saibam como o computador faz o que faz.

É importante perceber que o mercado de trabalho não é um ente determinador,


mas, sem dúvida, a relação com a empregabilidade é fundamental. Você
consegue perceber alguma função na qual, em alguma medida, o uso da
tecnologia não é necessário?

PENSE BEM: AS SALAS DE AULA, OS


TREINAMENTOS... ENFIM, TUDO, DE
ALGUMA FORMA, VIVENCIA O USO DA
TECNOLOGIA.
Com isso, nós nos deparamos com um dilema: a adoção da tecnologia não é
linear, nem todos têm acesso a ela nem possuem a mesma experiência
enquanto usuários.
Fonte: Shutterstock

Durante muito tempo, pensou-se que lidar com os computadores consistia em


dominar a tecnologia vigente e aprender suas técnicas e seus fundamentos,
pois, assim, você estaria seguro. Porém, como isso é possível, tendo em vista
que parte das pessoas já estão no topo do uso da tecnologia, enquanto outros
ainda estão dando os primeiros passos?

ATENÇÃO
O desespero de diversas instituições gerou o processo mais absurdo: já que
todos não podem dispor de tecnologia, então vamos abrir mão dela. Isso só
aumentou a segregação, a fragilidade de grupos sociais que não têm acesso à
tecnologia. Quando fazemos isso, negamos a vários profissionais a
possibilidade de diminuir essas diferenças.
PORÉM, O QUE PODE SER FEITO? SE
NÃO APRENDEREMOS A USAR A
TECNOLOGIA DO MOMENTO, SE NÃO
RENEGAREMOS A TECNOLOGIA PARA
GARANTIR IGUALDADE, QUAL A
SOLUÇÃO PROPOSTA?
Uma ideia é entender o funcionamento básico dos computadores, perceber
como funcionam essas máquinas e, independentemente da tecnologia atual,
compreender qual o sentido de sua atualização – os computadores estão
sempre sendo atualizados, uma vez que o homem precisa constantemente de
novas respostas e possibilidades.

Fonte: Shutterstock

ATENÇÃO
Felizmente, qualquer pessoa pode compreender, basicamente, como os
computadores funcionam. Nosso objetivo é explorar as qualidades essenciais
dos computadores, como eles funcionam, o que eles podem e o que não
podem fazer.

Este módulo não requer nenhum conhecimento prévio em informática.

A essência fundamental dos computadores é que eles são extremamente


poderosos e profundamente tolos. Eles são poderosos, pois um computador
pode fazer bilhões de operações por segundo e consegue gerar dados a uma
velocidade inconcebível para nós, humanos.
Essa é a parte poderosa na essência dos computadores. No entanto, o
computador também é muito tolo, pois as operações que ele pode realizar
rapidamente são extremamente simples.

Por exemplo, adicionar dois números para obter um terceiro número, ou


verificar se um número é zero.

COMPUTADOR
=
PODEROSAMENTE RÁPIDOS, PORÉM
TOLOS.

PORTANTO, OPERAÇÕES TÃO SIMPLES


COMO ESSAS NÃO SÃO CAPAZES DE GERAR
DISCERNIMENTOS OU ENTENDIMENTOS
MAIS ELABORADOS, COMO, POR EXEMPLO,
IDENTIFICAR A IMPRESSÃO DIGITAL DE UMA
PESSOA, CERTO?”.
Embora você pense dessa forma, computadores fazem isso: identificam
digitalmente um indivíduo.

SAIBA MAIS
Estudos revelaram que os humanos possuem impressões digitais singulares.
Com base nisso, foi elaborada uma forma de retirar esses dados – primeiro, foi
utilizada graxa para colher digitais; atualmente, usam-se luz e calor –, criando
um banco de dados com essas informações. Portanto, o trabalho de
discernimento é humano; o computador apenas cruza, de forma mais rápida e
efetiva, os dados armazenados pelas pessoas.
Isso ocorre porque discernimento e compreensão são qualidades humanas!

É importante compreender o seguinte: o computador é realmente um mundo


mecânico, onde é possível executar operações muito simples a uma velocidade
incrivelmente alta. Por exemplo, desde 2005, processadores são capazes de
executar mais de 1 bilhão de instruções por segundo. Já os processadores
lançados em meados de 2019 são capazes de executar mais de 48 bilhões de
instruções por segundo.

Ao longo do tempo, Hollywood tem retratado em seus filmes computadores


que nunca são mostrados como mecânicos, mas, sim, como entidades com
características essencialmente humanas, como discernimento, compreensão,
criatividade e capacidade de se emocionar.

A realidade não poderia estar mais distante daquilo que é mostrado nos filmes.
O que temos é uma combinação engraçada, que une a poderosa capacidade
de executar instruções a um conjunto de instruções que, inicialmente, parecem
tolas. Então, é necessário compreender como é possível, mesmo assim, criar
recursos/soluções interessantes e poderosos.

FILMES
Na seção Explore+, indicaremos um vídeo da lendária cena do filme 2001: uma
odisseia no espaço, e esperamos que, ao ver esse trecho, você entenda como
computadores são bem diferentes do que é mostrado em filmes como esse.
A descrição de filmes que mostram isso é interessante,
como Matrix, Exterminador do futuro e Eu, robô. Basta ler uma sinopse para
perceber como o senso comum olha para o desenvolvimento das máquinas.

Figura: Computador executa (roda) as instruções conforme o que foi descrito


no código.
Qualquer pessoa que interage com computadores, provendo instruções em
alguma linguagem de programação, experimenta uma sensação vívida dessa
combinação.

E a Inteligência Artificial?
E os robôs que podem ter sentimentos?

Em todos esses casos, a equação fundamental se mantém.


Vamos retomar o início do tema, quando falamos dos gregos. Um dos
principais movimentos intelectuais trabalhados pelos gregos foi perceber que,
no mundo, existe uma parte física, calculável, com possibilidades amplas, e
que, sem essa percepção, não é possível entendê-la – trata-se do mundo
físico. Também temos outra parte, que, embora seja proveniente das
representações físicas do mundo, não depende delas para a construção dos
sujeitos.

ESTAMOS FALANDO DA METAFÍSICA, A


CONSTRUÇÃO DE PERCEPÇÕES MENTAIS
QUE OLHAM PELA LÓGICA, PELA
ARGUMENTAÇÃO, PELO ESTUDO, PELA
DIALOGIA, PELA CAPACIDADE MENTAL DE O
SUJEITO ALCANÇAR O ENTENDIMENTO.
ESSA PARTE NÃO TEM LIMITES; SUAS
REPRESENTAÇÕES SÃO INFINITAS.
Uma velha alegoria de Platão ajuda a explicar isso. Trata-se da alegoria da
caverna, em que é mostrado que todos nós vivemos em um mundo limitado,
físico, de pedra, com as representações nas paredes iluminadas por um fogo
contínuo atrás de nós. Quando libertos, o que encontramos é um mundo
infinito, perfeito, é o mundo do pensamento, da abstração. Nossa capacidade
de abstração e de pensar é infinita, mas nossa capacidade de materializar o
que foi pensado é limitada. Esse é um dos sentidos da alegoria. Buscamos ser
mais eficientes, mais próximos das múltiplas possibilidades de nossa mente.

O mundo perfeito, infinito, com possibilidades de construir e destruir,


infelizmente, não mora em uma máquina, mas na capacidade humana. A
máquina, o computador, é só mais um aprimoramento de nossos usos e
nossas ferramentas, ainda que aprisionados, limitados, mas tentando e
buscando ir mais longe.

CONSEGUIU ENTENDER SOBRE A


ALEGORIA DA CAVERNA?
No vídeo abaixo, os professores Rodrigo Rainha e Guilherme Dutra, explicam
melhor sobre esse assunto. Aqui também, você irá entender como o filme, Eu,
Robô muda a nossa percepção de entendimento de um computador x humano.
AGORA FICOU CLARO?
Vejamos mais um exemplo:

Enfrentar uma máquina em um jogo de xadrez era uma das maiores diversões
do século XX. Durante muito tempo, os grandes nomes do xadrez foram os
vencedores, mas, lenta e continuamente, o desempenho das máquinas foi
melhorando, e os jornais proclamavam:

Máquina vence o homem! Será mesmo?


Claro que não! Essa disputa nunca foi entre a máquina e o homem, mas,
sim, entre o programador e o xadrezista.

Enquanto as máquinas não receberam todas as informações para neutralizar e


calcular as probabilidades e dar o melhor resultado, o programador perdeu.
Porém, quando a capacidade de processar, arquivar e perceber os melhores
algoritmos foi atingida, quando a máquina caminhou o bastante para dar
respostas no tempo esperado, tivemos a impressão de que a máquina venceu
o homem.

Entretanto, tudo o que ela fez foi executar aquilo que o programador pediu, só
que com uma capacidade que o homem, de forma direta, jamais conseguiria.

Após esse entendimento e de ter assistido ao vídeo, coloque aqui o


seu relato. Agora é o momento de você organizar suas ideias.

1. A equação fundamental dos computadores a partir de suas narrativas.

2. Algo que, de alguma forma, não valida essa equação fundamental.

3. Provoque alguns amigos e familiares sobre a opinião deles. Não


precisa sair daqui, pois as redes sociais e os computadores já lhe dão
condição de, em minutos, ter suas respostas.
RESPOSTA
Vamos fazer o relato de uma experiência. No filme Eu, Robô, ocorre o debate
filosófico que estamos propondo. Será que, pela Inteligência Artificial, o
algoritmo pode ser compreendido de forma equivocada? Repare que o filme é
perfeito no uso da equação primordial, pois, em momento algum, trata de uma
mente coletiva para as máquinas. Nem mesmo a Vick, pois tudo o que ela faz é
executar uma ordem humana, que não foi feita corretamente. O robô criado
pelo doutor segue regras de programação e acúmulo e não cria nada que vá
além de sua programação. Embora o detetive busque encontrar algo que
comprove a falha – essa nossa expectativa de que as máquinas têm alma, vida
própria e são uma ameaça –, isso não acontece. É utilizada a equação de
formulação – máquinas impressionantemente velozes e capazes de processar,
mas totalmente burras, incapazes de “pensar” ou agir fora de sua
programação.

VERIFICANDO O APRENDIZADO
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que responda corretamente
a uma das seguintes questões.

1. ESTUDAMOS SOBRE A EQUAÇÃO ESSENCIAL DOS


COMPUTADORES. DE ACORDO COM O QUE FOI VISTO, OS
COMPUTADORES:
Possuem capacidade de discernimento.

Possuem capacidade de compreensão.


São incrivelmente rápidos e tolos.

Admitem instruções escritas segundo determinadas línguas, como a


Portuguesa ou a Inglesa.

2. ANALISE AS AFIRMAÇÕES A SEGUIR:

I – COMPUTADORES SÃO CAPAZES DE EXECUTAR


BILHÕES DE INSTRUÇÕES POR SEGUNDO.
II – COMPUTADORES SÃO CAPAZES DE DISCERNIR E
COMPREENDER, POR EXEMPLO, USANDO INTELIGÊNCIA
ARTIFICIAL.
III – TODA E QUALQUER CAPACIDADE DE
DISCERNIMENTO/COMPREENSÃO É AUSENTE EM
COMPUTADORES. SÃO AS PESSOAS, DOTADAS DE TAIS
HABILIDADES ESSENCIALMENTE HUMANAS, QUE
ESCREVEM LISTAS DE INSTRUÇÕES PARA OS
COMPUTADORES, QUE, EMBORA NÃO FAÇAM IDEIA DO
OBJETIVO DA EXECUÇÃO DAS INSTRUÇÕES EM QUESTÃO,
GERAM RESULTADOS QUE FAZEM SENTIDO PARA AS
PESSOAS.
Apenas I está correta.

Apenas II está correta.

Apenas III está correta.

I e III estão corretas.

GABARITO

1. Estudamos sobre a equação essencial dos computadores. De acordo


com o que foi visto, os computadores:

Parabéns! A alternativa "C " está correta.


Conforme vimos neste módulo, computadores são incrivelmente rápidos,
porém tolos, pois não possuem capacidade de compreensão e discernimento.
Inclusive, as instruções que são dadas às máquinas precisam estar de acordo
com as linguagens específicas de programação, que definem instruções muito
simples e um conjunto limitado de palavras que o computador é capaz de
compreender.

2. Analise as afirmações a seguir:

I – Computadores são capazes de executar bilhões de instruções por


segundo.
II – Computadores são capazes de discernir e compreender, por exemplo,
usando Inteligência Artificial.
III – Toda e qualquer capacidade de discernimento/compreensão é
ausente em computadores. São as pessoas, dotadas de tais habilidades
essencialmente humanas, que escrevem listas de instruções para os
computadores, que, embora não façam ideia do objetivo da execução das
instruções em questão, geram resultados que fazem sentido para as
pessoas.
Parabéns! A alternativa "D " está correta.

A questão é um retorno à equação primordial que adotamos: computadores


são tremendamente rápidos em sua capacidade de processar e armazenar,
mas são tolos, ou seja, são incapazes de estabelecer discernimento e
compreensão. Portanto, as afirmações I e III estão corretas.

O CONTEÚDO AINDA NÃO ACABOU.


Clique aqui e retorne para saber como desbloquear.

VOCÊ CONSEGUIU DESBLOQUEAR O


MÓDULO 2!
E, com isso, você:

Identificou a equação que representa a essência dos computadores


 Retornar para o início do módulo 1

Módulo 2

Reconhecer o processo de exploração do potencial dos computadores através


de códigos e algoritmos

ENTRE CÓDIGOS E ALGORITMOS –


APRENDENDO A LÓGICA DO
COMPUTADOR
Vamos voltar à dinâmica do entendimento do pensamento computacional. Você
está fazendo uma prova de Matemática, e o conteúdo é análise combinatória;
portanto, aprendeu todas as fórmulas e métricas, basta aplicá-las. Agora, é ler
o problema e colocar tudo lá.

Se a máquina é extremamente rápida, mas muito tola, como é possível a


implementação de tantos recursos úteis nos computadores?
Fonte: Shutterstock

Você repetiu o dia inteiro: Cn.k = (n+k−1)!k!(n−1)!Cn.k = (n+k-1)!k!(n-1)! E, na


hora, surge uma dúvida:

É UMA COMBINAÇÃO SIMPLES OU COM


REPETIÇÃO? NÃO SEI, EU SÓ APRENDI QUE
ESSA É A FÓRMULA. NÃO BASTA APENAS
COLOCAR OS NÚMEROS, E O RESULTADO
SERÁ ALCANÇADO?”.
Claro que não!

Uma fórmula é uma simplificação, e cada um de seus elementos só tem


sentido se for observado dentro de um contexto. Demos o exemplo
matemático, porém a Matemática é apenas uma leitura da vida.

Imagine um motorista que condicionou o seguinte: sinal (farol) amarelo é para


parar. Porém, no trânsito, nem todos pensam da mesma forma. Logo, se esse
motorista vê um sinal amarelo e para, pode ser que o condutor que vem atrás,
por não pensar como ele, não consiga frear. O resultado é a colisão. O ponto é
que, para que um computador execute o que você deseja, ele precisa de
informações, padrões e leituras, pois só assim ele será capaz de ampliar suas
possibilidades de soluções.

ATENÇÃO
Os computadores, e incluímos aí o seu celular ou o PC que você usa, têm a
mesma dinâmica. Todos receberam informações – processos e procedimentos
– para que pudessem executar o que se espera deles. É isso que vamos
estudar agora.

Fonte: Shutterstock

CÓDIGO
Para compreendermos a essência do funcionamento de um computador,
precisamos entender o que é um código.
Então, dentro do computador, temos um corpo de códigos, e eles são apenas
uma série de instruções, como, por exemplo: adicione dias e medidas e
compare-os.

Você se lembra da equação fundamental, não é mesmo?

Um computador corresponde à velocidade X a incapacidade de pensar. Então,


o trabalho da máquina consiste em apenas uma série de instruções; ela só
executa o que é pedido na ordem em que recebeu as orientações de quem
escreveu o código. O computador é capaz de passar por uma sequência de
instruções de uma forma incrivelmente rápida. Quem pensa e estrutura,
podendo ser cada vez mais complexo ou simples, é o sujeito que programa.

Há uma série de instruções, e o computador apenas caminha através delas,


executando cada uma exatamente como instruído. São as famosas
palavras executar e rodar, como você já deve ter ouvido.

Então, sim, um código é executado de forma muitíssimo rápida, mas as


instruções individuais são bastante simples, o que leva a uma pergunta natural:
Fonte: Shutterstock

SE ESSAS INSTRUÇÕES SÃO TÃO


SIMPLES, COMO PODEMOS TER UM
RECURSO ÚTIL?
Ou seja, como tornar o computador capaz de realizar tarefas que dependam de
algum nível de inteligência e discernimento?

Vamos tentar algo prático.


Usaremos o recurso de redução de olhos vermelhos de fotografias como um
exemplo de utilidade do computador. Existem infindáveis exemplos diferentes,
como enviar um e-mail, assistir a um vídeo on-line ou qualquer outra tarefa que
executamos em nossos computadores diariamente.

Que tal, agora, pensarmos nos filtros para maquiagem? Porém, isso serve para
quê?

Para atender aos desejos do usuário. Diverte, faz rir, aumenta a autoestima. A
programação não julga, não cria a demanda; ela atende à demanda. Embora
receba as instruções e realize as tarefas, a utilidade é do usuário, que
precisava daquilo.

Sempre que você pensar em um código, deve imaginar o seguinte: se ele foi
criado e, principalmente, se alcança um grande número potencial de utilização,
não foi o computador que evoluiu, mas, sim, a sociedade. Alguém captou uma
demanda e observou que a máquina, que a criação de um código, poderia
suprir essa carência, nem que fosse fazer rir.

Então, o que liga esses dois lados da essência de um computador: a demanda


humana e a necessidade de criação de um código para alcançar a solução? A
resposta é a seguinte: programadores.

Fonte: Shutterstock

Voltemos ao exemplo dos olhos vermelhos. Um programador de computador


talvez tenha tido a seguinte ideia: “Seria legal se os computadores fossem
capazes de reduzir os olhos vermelhos de fotografias, pois esse defeito é meio
macabro, e eu fico desconfortável ao vê-lo”.

Essa é uma ótima ideia!


Trata-se de um discernimento, uma escolha humana que atende a seus
anseios: deveríamos ter redução de olhos vermelhos. Assim, o programador de
computador pensa em uma maneira de tornar isso possível.

Resumidamente:
ALGORITMO
Para usar o e-mail, assistir a um vídeo, conversar pelo WhatsApp, realizar
operações bancárias, ou qualquer outro recurso útil via computador,
smartphones etc., foi preciso que, em algum momento, uma pessoa ou uma
equipe pensasse:

“Bem, deveríamos escrever um algoritmo para isso”.

Alguém estruturou os procedimentos necessários e, depois, transformou os


passos de alto nível em instruções suficientemente simples, para que o
computador/smartphone pudessem executá-las. Essa pessoa ou a equipe
trabalhou, então, escrevendo o código para a solução. Em seguida, um bom
tempo foi gasto para testar e melhorar o código, até que ele, de fato,
representasse com fidelidade o algoritmo projetado originalmente.

O programador pode se concentrar em ser criativo, para, então, criar um


algoritmo capaz de resolver um problema real.

Fonte: Shutterstock

Programadores de computadores são os responsáveis por discernir um


aproveitamento útil, transformar a ideia de aplicação (Ex.: redução de olhos
vermelhos em fotos) em um algoritmo e traduzir esse discernimento em uma
sequência de instruções simples, compreensíveis para o computador. As
máquinas, por outro lado, são inacreditavelmente rápidas. Assim,
programadores e computadores formam uma combinação extremamente
poderosa.
VAMOS ENTENDER A DIFERENÇA
ENTRE CÓDIGO E ALGORITMO.
CÓDIGO
O código é um conjunto qualquer de instruções simples escrito em alguma
linguagem padrão compreensível para o computador.

ALGORITMO
Por outro lado, um algoritmo é um termo que reflete uma ideia mais completa,
em que o conjunto de instruções possuem uma finalidade útil. Um algoritmo
não precisa ser escrito em uma linguagem de computador, podendo ser escrito,
por exemplo, em português.

Suponha que você tenha pensado em um algoritmo com a finalidade de


calcular a idade de pessoas baseado em sua data de nascimento. Então, você
começa a escrever um código que deve seguir uma das linguagens de
programação padrão. Enquanto não estiver funcionando, não poderá ser
classificado como um algoritmo, pois ainda não alcança sua finalidade.

A imagem a seguir pode ajudá-lo, caso você ainda esteja inseguro quanto à
diferença.

CÓDIGO
Definição simplificada

Sequência de instruções que computadores podem executar.

Linguagem

Deve ser escrito em uma linguagem de programação padrão, senão os


computadores não conseguirão executá-lo.

ALGORITMO
Definição simplificada
Sequência de passos simples e bem projetados para realizar uma tarefa ou
resolver um problema.

Linguagem

Pode ser escrito em português ou em uma linguagem de programação padrão.

ATENÇÃO
Então, no que o computador é bom? Bem, o computador é bom em ser
rápido e barato.

Para um melhor entendimento sobre os códigos e algoritmos, assista ao vídeo


a seguir, em que o professor Guilherme Dutra comenta sobre o assunto.

Com a Lei de Moore, os computadores têm ficado mais baratos, e isso ocorre
há várias décadas. Como resultado, eles podem ser mais difundidos e é
possível embutir mais pesquisa científica para desenvolvê-los, tornando-os
ainda mais rápidos. Conheça mais a seguir.

LEI DE MOORE
A previsão feita há mais de 50 anos por Gordon Moore é fantástica. A
tecnologia está em evolução e desenvolvimento contínuos. Afinal, cada vez
mais, sistemas dependem da tecnologia, em virtude de sua interconexão,
permitindo a ampliação da tecnologia e dos produtos e aumentando a
velocidade de sua substituição.
Dessa forma, a cada nova geração, um conjunto geracional antigo de
tecnologia passa a estar presente no mercado, sendo consumido por públicos
que não teriam acesso antes. Por outro lado, a cada evolução, a capacidade de
troca de dados e informações seriam maiores, e a necessidade de uso de
material, menor, permitindo um barateamento relativo. No limite, a evolução
tecnológica acaba barateando os computadores.

A popularização dos computadores é uma das maiores provas daquilo que foi
apontado por Moore:

Fonte: Shutterstock
Nos anos 1980, nos Estados Unidos (o que, no Brasil, só ocorreu a partir dos
1990).

A primeira onda de computadores pessoais, os PC, ocupou os espaços nas


lojas lentamente. Essas máquinas deixaram de ser enormes e pesadas.

Já nos anos 2000, as telas e as conexões eram a novidade;


Nos anos 2010, as bandas largas se multiplicaram.

Com o passar do tempo, o computador foi diminuindo, podendo ser encontrado


em forma de tablets, laptops, smartphones.
O acesso à tecnologia se deu em um tempo muito curto, o que é
impressionante. Quando achamos que dominamos determinada tecnologia,
tudo parece mudar de repente. É assustador!

Porém, sabe o que de alguma forma não mudou?

A DINÂMICA.

REFLEXÃO
Você aprendeu a lógica do funcionamento do computador. Vamos revisar:

Um computador é apenas mais uma das históricas tentativas humanas de


facilitar e resolver demandas que surgem de forma recorrente. Na busca
dessas demandas, cada inovação que aparece torna-se uma estrutura – quer
dizer, parte da sociedade, ao mesmo tempo, é estruturante e força novas
buscas, transformando toda a sociedade. Nós, humanos, temos essa
característica, e as máquinas vivem para atender demandas que são pensadas
e estruturadas por nós.

Depois que uma demanda é pensada, precisamos focar no processamento das


informações e na capacidade de armazená-las. Isso, aliás, é a origem de todo
o processo da computação. Homens precisavam ampliar sua capacidade de
armazenamento, de reprodução, de execução.

Agora, pense sobre a questão. Em seguida, construa um texto que conte um


pouco da história de como a tecnologia (em suas fases de desenvolvimento)
impactou em sua vida escolar, em sua casa etc.

Esse exercício é para você pensar em velocidade, mas é importante que


também perceba: continuamos desenhando códigos e executando algoritmos,
permanecemos como um operador de máquina da Revolução Industrial, ou
como uma criança aprendendo a ler e a escrever, que necessita entender a
mecânica de funcionamento e a busca de melhoria da execução.
Pense nisso!

VERIFICANDO O APRENDIZADO
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que responda corretamente
a uma das seguintes questões.

1. SOBRE A DIFERENÇA ENTRE ALGORITMOS E CÓDIGOS


DE COMPUTADORES, ANALISE AS AFIRMAÇÕES ABAIXO E
DEPOIS MARQUE A OPÇÃO QUE RELACIONA AS
AFIRMAÇÕES A UM CÓDIGO OU A UM ALGORITMO.

I - SEQUÊNCIA DE PASSOS SIMPLES E BEM PROJETADOS


PARA REALIZAR UMA TAREFA OU RESOLVER UM
PROBLEMA.
II - PODE SER EM UMA LINGUAGEM DE PROGRAMAÇÃO
PADRÃO.
III - SEQUÊNCIA DE INSTRUÇÕES QUE COMPUTADORES
PODEM EXECUTAR.
IV - DEVE SER ESCRITO EM UMA LINGUAGEM DE
PROGRAMAÇÃO PADRÃO, SENÃO OS COMPUTADORES
NÃO CONSEGUIRÃO EXECUTÁ-LO.
I – código, II – código, III – algoritmo, IV – algoritmo.

I – algoritmo, II – código, III – código, IV – algoritmo.

I – código, II – algoritmo, III – algoritmo, IV – código.

I – algoritmo, II – algoritmo, III – código, IV – código.

2. ANALISE AS AFIRMAÇÕES A SEGUIR E MARQUE A


OPÇÃO QUE LISTA AS AFIRMAÇÕES CORRETAS.

I - O SER HUMANO, QUE ESCREVE CÓDIGOS EM ALGUMA


LINGUAGEM PARA/ATRAVÉS DE UMA SEQUÊNCIA DE
INSTRUÇÕES BASTANTES SIMPLES, CONSEGUE GERAR
UMA APLICAÇÃO ÚTIL.
II - A INTELIGÊNCIA ARTIFICIAL, QUE ESCREVE CÓDIGOS
EM ALGUMA LINGUAGEM PARA/ATRAVÉS DE UMA
SEQUÊNCIA DE INSTRUÇÕES BASTANTES SIMPLES,
CONSEGUE GERAR UMA APLICAÇÃO ÚTIL.
III - O PROCESSADOR DO COMPUTADOR, QUE PROCESSA
INSTRUÇÕES ESCRITAS EM ALGUMA LINGUAGEM
PARA/ATRAVÉS DE UMA SEQUÊNCIA DE INSTRUÇÕES
BASTANTES SIMPLES, CONSEGUE GERAR UMA
APLICAÇÃO ÚTIL.
IV - O SER HUMANO, QUE ESCREVE CÓDIGOS EM ALGUMA
LINGUAGEM PARA/ATRAVÉS DE UMA SEQUÊNCIA DE
INSTRUÇÕES COMPLEXAS, CONSEGUE GERAR UMA
APLICAÇÃO ÚTIL.

I e II.

I e III.

II e IV.

Somente I.

GABARITO

1. Sobre a diferença entre algoritmos e códigos de computadores, analise


as afirmações abaixo e depois marque a opção que relaciona as
afirmações a um código ou a um algoritmo.

I - Sequência de passos simples e bem projetados para realizar uma tarefa


ou resolver um problema.
II - Pode ser em uma linguagem de programação padrão.
III - Sequência de instruções que computadores podem executar.
IV - Deve ser escrito em uma linguagem de programação padrão, senão
os computadores não conseguirão executá-lo.
Parabéns! A alternativa "D " está correta.
A associação entre códigos, algoritmo e a construção da linguagem da
programação é uma operação relativamente simples, mas vívida para a
compreensão. Ao longo do módulo, essas definições foram apontadas.

2. Analise as afirmações a seguir e marque a opção que lista as


afirmações corretas.

I - O ser humano, que escreve códigos em alguma linguagem para/através


de uma sequência de instruções bastantes simples, consegue gerar uma
aplicação útil.
II - A inteligência artificial, que escreve códigos em alguma linguagem
para/através de uma sequência de instruções bastantes simples,
consegue gerar uma aplicação útil.
III - O processador do computador, que processa instruções escritas em
alguma linguagem para/através de uma sequência de instruções
bastantes simples, consegue gerar uma aplicação útil.
IV - O ser humano, que escreve códigos em alguma linguagem
para/através de uma sequência de instruções complexas, consegue gerar
uma aplicação útil.
Parabéns! A alternativa "D " está correta.

Programadores de computadores são os responsáveis por discernir uma


aplicação útil e transformar a ideia de aplicação (Exemplo: redução de olhos
vermelhos em fotos) em um algoritmo e traduzir esse discernimento em uma
sequência de instruções simples, compreensíveis para o computador. Os
computadores, por outro lado, são inacreditavelmente rápidos. Então,
programadores e computadores formam uma combinação extremamente
poderosa.

O CONTEÚDO AINDA NÃO ACABOU.


Clique aqui e retorne para saber como desbloquear.

VOCÊ CONSEGUIU DESBLOQUEAR O


MÓDULO 3!
E, com isso, você:

 Reconheceu o processo de exploração do potencial dos computadores através


de códigos e algoritmos
 Retornar para o início do módulo 2

Módulo 3

Empregar códigos simples de instruções de computadores

CÓDIGOS EM EXECUÇÃO
Neste módulo, queremos chegar ao ponto em que você possa escrever algum
código de computador, executá-lo e ver o que ele faz.

No computador, tudo se resume realmente a códigos em execução (rodando).


É assim que as coisas acontecem. Assim, para que a natureza dos
computadores seja entendida, nada melhor do que rodar um pouco de código e
ver como ele funciona.

ATENÇÃO
Não se preocupe, pois não veremos casos complexos com um milhão de linhas
de código, mas, sim, apenas um pouco de código. Apenas o mínimo, para que
você tenha o primeiro contato com o que é escrever código de computador.

Antes de chegar ao código, será necessário um pouco de paciência. Os


elementos de código que serão mostrados aqui não são chiques, chamativos
ou complexos. Eles são muito simples. Talvez seja um pouco como um
brinquedo de peças de encaixe, isoladas, dispersas, complexas; porém, com o
tempo e a familiaridade, as possibilidades e o uso vão se modificando.

Assim como usamos alguma língua (Português, Inglês etc.) para conversar
com as pessoas, para escrever códigos que o computador compreenda, é
necessário usar uma das linguagens disponíveis. Existem várias linguagens de
computador diferentes para informar ao computador o que fazer.

Aqui, utilizaremos uma das mais usadas na atualidade, a Javascript.


Usaremos somente os principais recursos, para que você possa escrever e
manipular códigos bem simples e brincar com a ideia-chave: compreender de
fato como funcionam os computadores.

JAVASCRIPT
No mundo de computadores, alguns termos, como Javascript, são nomes
próprios e, por isso, não possuem tradução. Não se preocupe, pois
rapidamente você estará bem ambientado com este termo. O mesmo ocorre
com as instruções reconhecidas por linguagens de programação. Por exemplo,
a instrução print é reconhecida pela linguagem Javascript, e ambos os termos
não possuem tradução.

PRÁTICA 1
A seguir, assista ao vídeo do nosso primeiro exemplo prático.
Para compreender como imprimir strings, veja a Prática 2 a seguir.

STRINGS
Strings e números são os dois tipos de dados muito comuns no código de
computador. Por exemplo, uma string é usada para lidar com nomes de
pessoas, endereços, endereços de páginas web, endereços de e-mail, ou até
mesmo um parágrafo, quando alguém está redigindo uma redação. Todos
esses exemplos de tipos de textos são armazenados na memória do
computador como strings.

Esse é apenas um segundo tipo de dados que seremos capazes de usar para
informar ao computador como fazer as coisas. Existem muitos outros tipos de
dados, mas, por enquanto, nós nos limitaremos aos vistos até agora.

Outra novidade presente no código-fonte da Prática 2 é o uso de comentários


na segunda linha.

PRÁTICA 2
 Clique em Rodar e observe o resultado apresentado em Saída.

O QUE TEMOS DE NOVIDADE AQUI?


O que fizemos foi usar a sintaxe padrão para informar ao computador que o
que está sendo impresso é um texto (string). Para isso, cercamos as
strings Teste, Bom dia e Tchau com aspas duplas.
  Ao clicar em Rodar/Executar, você pode ver os textos e valores
numéricos corretamente impressos em Saída.

Um comentário, em JavaScript, começa com duas barras. Em seguida, você


pode escrever notas para você mesmo, para lembrá-lo, no futuro, do que você
pretendia ou do que está tentando fazer neste ponto do seu código. O
computador sabe ignorar comentários, então é apenas uma maneira de
adicionar decorações/lembretes ao código com pequenas observações.

O uso de comentários é considerado bastante importante, pois ajuda o


programador a compreender um código que não foi escrito por ele, ou até
mesmo um código que foi escrito por ele há tanto tempo, que ele não lembra
mais como raciocinou para escrever aquele trecho de código.

Um exemplo intrigante que podemos citar aqui é colocar a palavra print no


lugar de Tchau. Isso é intrigante, pois print também é o nome da instrução de
impressão reconhecida pela linguagem de programação que estamos usando.

O QUE OCORRERÁ AO
SUBSTITUIRMOS TCHAU POR PRINT E
CLICARMOS E RODAR?
Se você mesmo fizer este teste na Prática 2, obterá o resultado ilustrado na
figura a seguir.

Figura 6: Como a string print está delimitada por aspas na terceira linha, o
computador sabe que se trata apenas de mais um texto a ser impresso, e não
de outra instrução print.

Portanto, quando sequências de caracteres são colocadas entre aspas duplas,


como neste exemplo, o computador entende que se trata apenas de dados
passivos, e lida com eles conforme esperado.

ATENÇÃO
Note que temos uma lição importante aqui sobre sintaxe. Nós já sabemos que
ela é restrita e mecânica. No entanto, é importante entender que você está
seguindo um padrão/convenção ao escrever um código de computador que
envolve a sintaxe, o que é característico da linguagem de programação. Então,
é muito comum, mesmo para programadores muito profissionais, a ocorrência
de pequenos erros de sintaxe.

Quando há um erro de sintaxe, ao clicarmos no botão de execução, haverá


alguns erros de sintaxe listados em Saída. Então, é parte da tarefa de quem
escreveu o código corrigir esses erros de sintaxe até que o computador aceite
que as instruções estão de acordo com o padrão de sintaxe da linguagem de
programação em uso. Esse é apenas um processo rápido, superficial e comum.

A razão pela qual estamos discutindo isso neste módulo é que, quando alguém
está apenas começando a aprender a escrever códigos (programar), será
bastante comum se deparar com erros de sintaxe, pois isso é realmente
comum. Então, jamais se permita ter a impressão de que você não está
entendendo como escrever código. Apenas entenda que todo mundo passa por
erros de sintaxe, inclusive programadores com décadas de experiência. Então,
quando se deparar com erros de sintaxe, apenas faça uma checagem rápida e
cuidadosa para corrigir os erros e seguir adiante.

Para promover a ideia de que o erro de sintaxe não é grande coisa, queremos
mostrar como consertar isso. Veremos alguns exemplos práticos a seguir. São
apenas alguns exemplos de código, todos com erros de sintaxe. Queremos que
você treine o processo de identificá-los e corrigi-los.

PRÁTICA 3

TODO MUNDO PASSA POR ERROS DE


SINTAXE.
VAMOS APRENDER A IDENTIFICÁ-LOS
E CORRIGI-LOS?
O resultado de cada um dos seis exemplos a seguir deve ser imprimir em
Saída as letras destacadas em verde. Você precisa corrigir a sintaxe de cada
um dos seis exemplos. Depois que você corrigir a sintaxe das instruções, cada
um dos 6 exemplos imprimirá exatamente as três linhas indicadas em vermelho
mais à frente.

Saída esperada para cada um dos seis exemplos práticos a seguir:

1.

2.

3.

4.

5.

6.

MOSTRAR SOLUÇÃO
1. No primeiro exemplo, o segundo print está escrito errado. Há um l no lugar
do i.
2. No segundo exemplo, faltam aspas após o segundo B.
3. No terceiro exemplo, falta o parêntese direito na terceira instrução.
4. No quarto exemplo, falta “,” entre as duas letras B.
5. No quinto exemplo, está faltando o primeiro B na segunda linha. Além disso,
o terceiro print está escrito errado (pront).
6. No sexto exemplo, está faltando o parêntese esquerdo na primeira linha e o
parêntese direito na última linha.

Por fim, precisamos abordar mais um conceito básico: variáveis. Uma variável


no computador é como uma caixa, ou seja, um local onde podemos armazenar
valores para uso futuro.
Então, se tivermos um código como o descrito a seguir, onde atribuímos o valor
7 a uma variável V, o que isso significa é que há uma caixa no computador
chamada V, conforme ilustrado na tabela a seguir, nós simplesmente podemos
armazenar um valor, como um 7, nesta caixa. Também poderíamos armazenar
qualquer valor que quiséssemos.

CÓDIGO PARA ATRIBUIR VALOR A UMA


VARIÁVEL V
V=7;

O QUE SIGNIFICA NA PRÁTICA


“Caixa” de nome V, onde atribuímos o valor numérico 7

"Caixa" V  7

Sendo um pouco mais específico, essa “caixa” é, na verdade, um espaço na


memória do computador, em que podemos armazenar valores, e V é o nome
que damos a esta área reservada para armazenar o valor que desejarmos.
Em linhas posteriores, no código, se um V aparecer, o computador sabe o que
colocamos dentro da caixa (em nosso exemplo, o 7). A variável se torna uma
espécie de abreviação conveniente para qualquer valor que eu queira usar.

Veja o exemplo a seguir.

Na primeira linha, atribuímos o valor 7 à variável que optamos por chamar de


V.

Na segunda linha, damos um comando para imprimir o valor da variável, que


será 7 neste exemplo.

Na terceira linha, imprimimos uma string informando “O valor da variável é:” e,


depois, indicamos “V” para que o computador imprima de fato o valor
recuperado da variável.

  Clique em Rodar/Executar e observe os resultados. Notou que, sempre


que V é referenciado no código, o computador o substitui pelo valor 7?
Este é o equivalente a ler o valor armazenado na caixa.

Uma grande vantagem do uso de variáveis é que, se o programador quiser


usar um valor diferente em seu código, basta trocar o valor na linha de
atribuição de valor à variável, e todo o restante do código passará a usar o
novo valor sempre que houver referência à variável, que, em nosso exemplo, é
V.

PRÁTICA 4
  Observe o que acontece quando substituímos 7 por 1980 e clicamos em
Rodar.

Notou que todos os locais em que V foi referenciado resultaram em 1980 na


saída?
PRÁTICA 5
  Escreva, no quadro a seguir, um código que atribua a uma variável
chamada N a string Guilherme, e depois clique em Rodar para obter a
Saída a seguir destacada em vermelho:
Guilherme Guilherme Guilherme
Eu conheço um amigo chamado Guilherme.

MOSTRAR SOLUÇÃO
É importante destacar que o sinal de igual “=” usado em código de
computador significa atribuição de valor.
Fonte: Shutterstock

Brinque à vontade com as práticas anteriores, até que fique à vontade


para definir mais do que uma variável e imprimir mais do que um valor,
até estar confortável com a ideia de que, para computadores, o uso do
igual e de instruções significa atribuição. Isso é importante, pois, em
Matemática, o sinal de igual possui um significado diferente.

VERIFICANDO O APRENDIZADO
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que responda
corretamente a uma das seguintes questões.
1. ALTERE, NO QUADRO CÓDIGO-FONTE A SEGUIR, O
CÓDIGO, PARA QUE O RESULTADO DA EXECUÇÃO EM
SAÍDA SEJA CONFORME O TEXTO EM VERMELHO A
SEGUIR. USE O BOTÃO RODAR/EXECUTAR PARA TESTAR
SE O SEU CÓDIGO ESTÁ CORRETO E A SAÍDA, CONFORME
O ESPERADO.

SAÍDA ESPERADA:
13 35 BRASIL

QUANDO TIVER TERMINADO, MARQUE A OPÇÃO QUE


INFORMA O CÓDIGO-FONTE QUE VOCÊ USOU PARA
CHEGAR AO RESULTADO ESPERADO.
print(“treze”,”trinta e cinco”,Brasil).

print(13,35,Brasil).

print(13,35,”Brasil”).

print(13,35,”Brasil”.

2. QUAL SERÁ A SAÍDA DO CÓDIGO ABAIXO?

NOME=”JOÃO”
PRINT(NOME, “NOME”, “NOME”);
João João João.

NOME João João.

João NOME João.

João NOME NOME.

GABARITO

1. Altere, no quadro Código-Fonte a seguir, o código, para que o resultado


da execução em Saída seja conforme o texto em vermelho a seguir. Use o
botão Rodar/Executar para testar se o seu código está correto e a saída,
conforme o esperado.

Saída esperada:
13 35 Brasil

Quando tiver terminado, marque a opção que informa o código-fonte que


você usou para chegar ao resultado esperado.
Parabéns! A alternativa "C " está correta.

Na opção A, teríamos um erro informando que Brasil não está definido.


Além disso, os valores estão escritos por extenso.
Na opção B, estão faltando aspas duplas cercando a string Brasil, o que
geraria uma mensagem de erro.
Na opção D, falta o parêntese direito ao final da instrução.

2. Qual será a saída do código abaixo?

NOME=”João”
print(NOME, “NOME”, “NOME”);
Parabéns! A alternativa "D " está correta.

Em primeiro lugar, vamos analisar o código:

NOME=”João” -> Esta instrução atribui o texto passivo (string) “João” à


variável NOME
Print(NOME, “NOME”,”NOME”); -> Esta instrução ordena que o
computador imprima o conteúdo da variável NOME, depois o texto
passivo NOME e novamente o texto passivo NOME. Então, a “Saída”
resultante será: João NOME NOME

O CONTEÚDO AINDA NÃO ACABOU.


Clique aqui e retorne para saber como desbloquear.

CHEGOU AO FINAL DESTA


EXPERIÊNCIA!
E, com isso, você:

 Empregou códigos simples de instruções de computadores


 Retornar para o início do módulo 3

CONCLUSÃO

CONSIDERAÇÕES FINAIS
Pensamento Computacional parece um tema
futurístico. Inclusive, muitos alunos devem ter se lembrado dos
filmes de catástrofe, em que a tecnologia se levanta contra o
homem. Neste tema, você foi tranquilizado sobre essas
questões. Primeiro, descobriu que máquinas são terrivelmente
ignorantes e profundamente capazes. Somente a partir da
interação e da estruturação de um conjunto de linguagens
específicas, o grande potencial das máquinas – armazenamento e
processamento – pode ser efetivamente estruturado.

Sendo assim, Pensamento Computacional é um convite para que


você entenda como funciona essa relação entre máquinas e
homens e, com isso, perceba que não é preciso dominar
tecnicamente uma ferramenta apenas em determinado momento,
pois, embora elas sejam atualizadas constantemente, a dinâmica
e os fins permanecem os mesmos.

Neste sentido, o que você precisa conhecer, então, são as


linguagens que compõem esse novo universo: códigos e
algoritmos. Se você entendeu que código são as instruções que o
ser humano dá à máquina – mostrando que computadores
executam nossas demandas – e que algoritmo é a linha deste
comando estruturado para que a máquina interprete e execute,
você entendeu a essência da dinâmica comando, forma de
comando, execução, novas demandas, comandos e forma de
comando, sempre impulsionada pelas demandas humanas.

Para concluir, sugerimos que você faça inúmeros testes (em


alguma das práticas acima) a fim de perceber como se relacionou
com o assunto, criou e executou a dinâmica proposta. Como uma
criança que aprende a engatinhar e a ficar em pé, daqui por
diante, busque dar os primeiros passos, entendendo a mecânica,
e, em breve, você estará correndo.

AVALIAÇÃO DO TEMA:
REFERÊNCIAS
CARVALHO, A.; LORENA, A. Introdução à Computação:
hardware, software e dados. 1. ed. Rio de Janeiro: LTC, 2017.
DALE, N.; LEWIS J. Ciência da Computação. 4. ed. Rio de Janeiro:
LTC, 2011.
FEDELI, R. D.; POLLONI, E. G. F.; PERES, F. E. Introdução à
Ciência da Computação. 2. ed. São Paulo: Cengage, 2010.
FLANAGEN, D. Javascript: o guia definitivo. 6. ed. Porto Alegre:
Bookman, 2013.
GLENN, J. Ciência da Computação: uma visão abrangente. 11. ed.
Porto Alegre: Bookman, 2013.

EXPLORE+
A literatura e o cinema de ficção contribuíram muito para discutir
a percepção da máquina (e do computador) como superior e
possível inimiga da humanidade. Esta é uma das funções da arte:
provocar nossa reflexão! Assim, além das obras citadas ao longo
de nosso tema, sugerimos algumas outras:

Livros

 Admirável mundo novo, de Aldous Huxley (1932)

 Eu, robô, de Isaac Asimov (1950)

 Guerra dos Mundos, de H.G. Wells (1898):

 O homem do castelo alto, de Philip K. Dick (1962)

 1984, de George Orwell (1949)

Filmes

 A.I. Inteligência Artificial (2001)

 Animatrix (2003)
 Blade Runner (1982)

 Ex-Machina (2015)

 Gattaca (1997)

 Minority Report (2002)

 O homem bicentenário (1999)

 Wall-E (2008)

 Star Trek: Picard (2020)

CONTEUDISTA
Guilherme Dutra Gonzaga Jaime

CURRÍCULO LATTES
DEFINIÇÃO
Conceitos básicos e primordiais sobre a execução de softwares. Apresentação
das formas como instruções escritas por programadores para serem
executadas
por CPUs.

PROPÓSITO
Compreender a lógica dos softwares, que são parte de nosso mundo e
permanecerão assim por muito tempo.
OBJETIVOS
✓ Reconhecer conceitos básicos sobre softwares

✓ Identificar softwares funcionais, como sistemas operacionais e o firmware

✓ Diferenciar os dois principais tipos de linguagens de programação

VÍDEO
Antes de iniciarmos nosso estudo sobre software, assista ao vídeo a seguir.

INTRODUÇÃO
Neste módulo, descreveremos os conceitos básicos sobre software de
computadores e responderemos, de forma introdutória, às seguintes perguntas:

O que é software?

O que é código de computador?

Como os softwares rodam (são executados) em um computador?

O QUE É SOFTWARE?
Sempre que você baixa um programa ou vê um computador ligado, está
presenciando algum software sendo executado.

Até mesmo no passado, telégrafos, telefones, aparelhos de fax, todos já


possuíam um software, um conjunto de ações programadas que usavam a
estrutura física e lhes davam materialidade: voz, letras e imagens. Cada
máquina exercia exatamente a sua função, e repare: estamos indo além da
função mecânica.

Agora, imagine uma máquina de costura.


Ela faz sempre a mesma operação, um movimento mecânico repetitivo.

Porém, quem atua para que ela execute funções a partir do domínio de técnica
é o sujeito; a máquina mecânica é estruturada, e a mente humana é quem faz
a função.

Quando um sujeito decidiu que era possível programar a máquina para fazer
além da função repetida, para trançar uma estrutura, sucedendo e alcançando
a partir disso objetivos claros e novos, criou-se o software.

A máquina é capaz de ser programada para cumprir um conjunto de


funções definidas e desenhadas pelo sujeito.

O computador é filho da Guerra Mundial, da necessidade de novos


desenvolvimentos, de realizar processamento de informações e comunicação
mais eficientes, cruzando dados e armazenamento.

Porém, não basta construir a máquina; é necessário


executar, definir o que se deseja, programar e
reprogramar.
Softwares para computadores, então, passaram a ser uma demanda, uma
construção e sofisticação contínuas.

Sempre que um software é criado, imediatamente, passamos a pensar em


como melhorá-lo, transformá-lo em algo mais eficiente. Pessoas vivem disso e
recriam isso.

Nunca mais dominaremos perfeitamente todos os softwares que desejamos;


afinal, sempre que aprendemos sobre um, novas mudanças estarão chegando.

Já jogou videogame? Esses aparelhos mudaram e continuam mudando; hoje,


possuem gráficos e programações cada vez mais complexos.
Para entender tudo isso, é necessário compreender o que é, afinal, um
software para computadores.

Mas, afinal, o que é software?


Software é o conjunto de funções executadas na programação de um
computador.

Embora não seja uma entidade física, ganha materialização em sua construção
virtual, independentemente da rede.

É a manifestação de uma imagem e dos desdobramentos a partir da


construção de códigos e execuções.

Vamos entender melhor esse processo:

A CPU (Central Processing Unit), também chamada de


processador, é uma espécie de cérebro. É ela quem
realmente executa o que chamamos de “instruções
de código de máquina”.
Veja a imagem a seguir:

Figura 1: Execução de instruções pelo computador.

ESTAS INSTRUÇÕES
SÃO EXTREMAMENTE SIMPLES E
CONSTITUÍDAS APENAS DOS
NÚMEROS 0 (ZERO) E 1 (UM),
CONHECIDO COMO CÓDIGO BINÁRIO.
EXTREMAMENTE SIMPLES
Por exemplo, em uma instrução de código de máquina é possível adicionar
dois números; já em outra pode-se comparar dois números para ver qual deles
é maior.

Podemos pensar no conjunto de instruções de código de máquina que uma


CPU é capaz de executar como sendo um idioma de baixo nível, ou “código
de máquina” (também conhecido como “código nativo”). O idioma do código da
máquina está intimamente conectado ao projeto do hardware da CPU , ou
seja, não é algo que possa ser mudado à vontade.
Cada família de CPUs compatíveis (por exemplo, a
popular família Intel x86 usada em computadores
pessoais) possui seu próprio código de máquina
específico, que não é compatível com o código de
máquina de outras famílias de CPUs.
Como isso é feito?

HARDWARE
Hardware é o termo usado para se referir à parte física da coisa, o
equipamento.

NÃO É COMPATÍVEL COM O


CÓDIGO DE MÁQUINA DE OUTRAS
FAMÍLIAS
Por exemplo: os programas de PCs não rodam em smartphones, pois os
idiomas de baixo nível dessas CPUs são incompatíveis.
Os programadores escrevem instruções usando alguma
linguagem de programação.

Vamos a um exemplo:

Na linguagem JavaScript, a instrução (linha de código) para definir um pixel


(ponto) da tela com nível de vermelho para o nível 255 seria:

pixel.setRed(255).
Esta instrução é muito mais complexa do que uma instrução de código de
máquina individual que CPUs são capazes de executar. Então, nós a
chamamos de uma instrução de alto nível.

ALTO NÍVEL
O termo “alto nível” designa a ideia de que as instruções são mais próximas de
nossa língua falada, se comparadas ao código de máquina, que é de “baixo
nível”.

Instruções de alto nível são facilmente


compreensíveis pelos humanos, mas
os computadores não são capazes de executá-las.
O que ocorre, então, é que, antes de ser executada, a instrução de alto nível
será expandida em uma sequência – talvez cinco ou dez instruções de baixo
nível (código de máquina) –, de modo que, quando essas cinco ou dez
instruções forem executadas, uma após a outra, o resultado final terá o efeito
de definir o valor vermelho do pixel para 255, conforme designado pela
instrução de alto nível escrita pelo programador. Este processo está resumido
na Figura 2.
Figura 2: Compilador traduz linhas de código escritas pelo programador em
instruções de código de máquina compreensíveis à CPU.

Você pode estar se perguntando:

Como corrigir um erro de programação cometido pelo programador?


Se você quiser adicionar um recurso para corrigir um bug no Firefox (por
exemplo), a forma real de fazer isso é voltar ao código-fonte original e
realizar os ajustes necessários, alterando as instruções.
Em seguida, é necessário executar o compilador novamente para
compilar (traduzir de linguagem C++ para linguagem de máquina) uma
nova versão do Firefox que incluirá os ajustes realizados no código-fonte.

SOFTWARE DE CÓDIGO ABERTO


É importante construirmos uma noção do que significa software de
código aberto.
Trata-se de uma forma de distribuição de software em
que o programa compilado é fornecido, mas também há
acesso ao código-fonte original do programa.

Geralmente, o código-fonte é acompanhado de uma licença que diz algo


como:

“Aqui está o código-fonte, se você quiser criar sua própria versão


realizando as alterações que desejar, fique à vontade.”

IMPORTANTE
Trata-se de uma forma de distribuição, normalmente gratuita, de software
em que o programa compilado é fornecido, mas também há acesso ao
código-fonte original do programa.
Mas qual a diferença entre

softwares de código fechado e softwares de código aberto?


CÓDIGO FECHADO

Se você precisa de algum recurso diferente ou adicional, ou se há um bug


que você precisa corrigir, você realmente depende do fornecedor, pois
somente ele detém o código-fonte.

Então, somente o fornecedor é capaz de realizar ajustes e correções.

CÓDIGO ABERTO

Caso sejam necessários ajustes, correções e incrementações que você


realmente queira fazer com o programa – ou se o fornecedor original não
existe mais –, você tem total liberdade para agir.

Você mesmo pode realizar as modificações, ou talvez prefira contratar


alguém para fazer uma alteração e produzir sua própria versão
personalizada.

ATENÇÃO
Em geral, existem diversos tipos diferentes de termos de licença para
software de código aberto, mas, na maioria das vezes, eles exigem que,
se você fizer alterações no código-fonte e adicionar algum recurso, você
deve oferecer essas alterações à comunidade. Assim, da mesma maneira
que você se beneficiou dos outros ao obter o programa gratuito e seu
código-fonte, eles podem se beneficiar do seu trabalho.
VÍDEO
No vídeo a seguir, o professor Rodrigo Dias nos convida a refletir sobre
os impactos dos softwares de código aberto na sociedade.

Até aqui, comentamos sobre uma categoria de linguagens de


programação onde compiladores são usados para traduzir o código-fonte,
de forma a obter um arquivo executável que pode ser distribuído aos
usuários. Agora vamos nos concentrar na seguinte questão:

O QUE É UM PROGRAMA?
Observe novamente o lado direito da Figura 1 e perceba que a CPU está
executando uma sequência de instruções presentes na memória RAM.

FIGURA 1

Então, um programa/aplicativo, como, por exemplo,


o navegador de Internet Firefox, ou o editor de
textos Microsoft Word, nada mais são do que uma
enorme sequência dessas instruções simples de
código de máquina.
Assim, quando o Firefox está sendo executado no seu computador, isso
significa que, em algum lugar na RAM, há um bloco dessas instruções, e
a CPU as executa uma após a outra sequencialmente.

Tudo o que você pode ver o Firefox fazendo – como piscar o cursor,
conectar-se via rede a uma URL fornecida pelo usuário, desenhar
imagens na tela, obter páginas da Web, entre outros – ocorre graças à
CPU, que roda as instruções de forma tão inacreditavelmente rápida, que
você interage com o Firefox de forma fluida e natural.
FIREFOX
Em 2019, o projeto do navegador Firefox continha um total de 28.7
milhões de linhas de código/instruções.

Portanto, as instruções individuais


são realmente triviais, certo?
De que forma isso leva o cursor a piscar no ponto onde podemos digitar
algo, como no exemplo a seguir?

Uma forma bastante simples de pensar sobre isso é usar uma analogia: o
relacionamento entre areia e escultura.

Cada instrução em código de máquina seria um grão de areia, que, por si


só, é sem sentido e se parece com todos os outros. Porém, se você juntar
grande quantidade de maneira certa, pode construir uma estrutura geral
complicada, conforme sua imaginação e seu objetivo.

Em linhas gerais, é assim que programas como o Firefox, Chrome,


Microsoft Word, os jogos digitais, ou qualquer outro aplicativo, são
construídos.

Se olharmos à esquerda da Figura 1, veremos a CPU trabalhando para


buscar e executar as instruções de código de máquina disponíveis na
RAM.

FIGURA 1
Em 2019, o projeto do navegador Firefox continha um total de 28.7
milhões de linhas de código/instruções.
Para executar as instruções de código de máquina,
as instruções usam um método chamado ciclo
busca-execução (fetch execute cycle).
No ciclo busca-execução, a CPU iniciará buscando a instrução 1 e
carregando-a para dentro de si (CPU), e a executará.

Por exemplo, a CPU adicionará os dois números. Após executar a


instrução 1, a CPU simplesmente desce na lista e executa novamente o
ciclo busca-execução para a instrução 2. Em seguida, faz o mesmo para a
instrução três, e assim por diante. As instruções são executadas uma
após a outra sequencialmente.

SAIBA MAIS
Quando dizemos que uma CPU opera a 4 GHz (giga-hertz), ou 4 bilhões de
operações por segundo, estamos nos referindo exatamente a essas
pequenas instruções.

Há uma enorme variedade de tipos de instruções, mas há dois tipos


específicos que vale a pena comentarmos, mesmo em um curso
introdutório. Veja a seguir:

INSTRUÇÃO PARA ALTERAR A ORDEM DE EXECUÇÃO DE INSTRUÇÕES

Normalmente, a CPU apenas desce a lista e faz a execução das instruções


na ordem em que elas estão armazenadas na memória.

Conforme ilustrado na Figura 3, digamos que a instrução quatro diga:


“Pule para trás e comece a executar novamente na instrução 1”.

Neste caso, a CPU executaria as instruções na ordem: 1, 2, 3, 4 e, em


seguida, em vez de seguir para a instrução 5, daria um pulo para trás
e iria para (goto) a instrução 1, executando-a novamente, seguida das
instruções 2 e 3.
É assim que as estruturas de repetição de instruções (loops) são
implementadas pela CPU.

Figura 3: Instrução 4 solicitando que a CPU, em vez de seguir para a


instrução 5, volte a executar a instrução 1.

INSTRUÇÃO QUE TESTA ALGUMA CONDIÇÃO

Se a condição for verdadeira, diz, por exemplo, que ela avance para a
instrução 5.

Há uma instrução que olhará para alguma condição; assim, se a condição


for verdadeira, é como dizer à CPU: “Vá para (goto) a linha indicada”.
Caso seja falsa, a CPU vai para (goto) outra linha.
Então, organizando as instruções, você pode obter o efeito de uma
estrutura condicional, conhecida como declaração if.

GOTO
Goto é uma instrução na linguagem de informática e significa: vá para a
linha indicada e siga executando o código a partir desse local.

COMO O PROGRAMA VAI PARAR NA


MEMÓRIA RAM?
Ao serem instalados, programas são colocados em um dispositivo de
armazenamento persistente, como HD, SSD ou pendrive.

Vamos entender com o exemplo do Firefox:

O programa é basicamente um arquivo chamado Firefox.exe, que possui


muitos bytes. Na maioria dos casos, esses bytes são apenas as
instruções que compõem o programa, além de alguns ícones e fotos, por
exemplo.
FIREFOX.EXE
“.exe” trata-se de uma convenção de nomenclatura do Windows usada
para nomear o arquivo que é um programa. Isso ajuda a manter as coisas
mais claras.

Outros sistemas operacionais podem gerar, por exemplo, um arquivo


chamado Firefox, sem extensão, que é o equivalente do Firefox.exe no
Windows.
O que acontece quando você clica duas vezes no arquivo Firefox.exe, ou
no atalho que aponta para este arquivo?

Basicamente, são os três passos indicados na Figura 4:


FIREFOX.EXE
“.exe” trata-se de uma convenção de nomenclatura do Windows usada
para nomear o arquivo que é um programa. Isso ajuda a manter as coisas
mais claras.

Outros sistemas operacionais podem gerar, por exemplo, um arquivo


chamado Firefox, sem extensão, que é o equivalente do Firefox.exe no
Windows.
Figura 4: O que é carregar/iniciar um programa?

PASSO 1
Cópia dos bytes (ou seja, instruções) que compõem o arquivo do
dispositivo de armazenamento persistente (HD, por exemplo) para uma
área desocupada da memória RAM. Esta cópia é comumente chamada de
carregar (load) o programa.
PASSO 2
Após o carregamento (cópia do HD para a RAM), a CPU já é capaz de
realizar o ciclo busca-execução para rodar o programa Firefox. Então, o
passo dois consiste em apenas dizer à CPU “Aqui está a instrução 1 de
um programa. Você deve iniciar, a partir desta instrução, o ciclo busca-
execução para rodar este programa”.

PASSO 3
A CPU começa o processo de rodar/executar, de forma
inacreditavelmente rápida, as instruções. Pronto, nosso Firefox está
rodando, e o usuário já consegue navegar pela internet.

VERIFICANDO O APRENDIZADO
1. DEPOIS QUE UMA CPU EXECUTA UMA INSTRUÇÃO, O
QUE, GERALMENTE, FAZ A SEGUIR?

Apaga as instruções da RAM.

Executa a instrução anterior na sequência de instruções.

Executa a próxima instrução na sequência de instruções.

Grava a instrução no disco.

2. EM CÓDIGO DE MÁQUINA, PARA QUE SERVE A


INSTRUÇÃO GOTO?
Alterar a ordem de execução de instruções pela CPU, como, por exemplo,
para implementar loops de repetição e estruturas condicionais.

Ordenar ao sistema operacional que finalize a execução de um programa.

Ordenar ao sistema operacional que a ordem de execução de instruções


pela CPU, por exemplo, seja alterar para implementar loops de repetição e
estruturas condicionais.

Ordenar à CPU que pause a execução de instruções para aguardar que


algum evento definido ocorra.

GABARITO

1. Depois que uma CPU executa uma instrução, o que, geralmente, faz a
seguir?

A alternativa "C " está correta.

Dada a lista de instruções de um programa carregadas na RAM, a CPU as


executa uma a uma sequencialmente, na ordem em que aparecem.

2. Em código de máquina, para que serve a instrução goto?

A alternativa "A " está correta.

Conforme vimos no exemplo da Figura 2, a instrução goto é usada para


alterar a ordem de execução de instruções. Dois importantes exemplos da
utilidade desta instrução de código de máquina são implementar loops de
repetição e implementar estruturas condicionais.
SISTEMA OPERACIONAL
Comumente, quando se estuda conceitos básicos de software e
como ocorre a execução de instruções pela CPU, surgem
questionamentos como:

Quem lida com o duplo clique que usamos para ordenar que um
programa seja executado?

Quem garante que um novo programa carregado na RAM irá para


uma região da memória que está realmente ociosa, sem que haja
sobreposição de outros programas em execução?

Quem ordena o carregamento de um programa do HD para a


RAM?

Ao final da execução de um programa, quem realizada as


operações, como, por exemplo, liberar a região da RAM onde o
programa esteve durante sua execução?
A resposta às perguntas descritas anteriormente é a seguinte: é o
sistema operacional (SO).
Trata-se de um conjunto de tipos de
programas administrativos e de supervisão
que organizam todo o sistema. O sistema
operacional está para os computadores como
o governo está para uma nação.
O SO de um computador é como um primeiro programa de
supervisão que começa a ser executado quando o computador é
inicializado (“inicializa”). Ele desempenha um papel
administrativo e contábil invisível nos bastidores.

Quando um desktop, laptop ou smartphone é iniciado, o SO,


normalmente, organiza as coisas e inicia um programa
“explorador de arquivos” que exibe janelas e menus, entre
outros, que mostram ao usuário quais sistemas de arquivos
estão disponíveis. Isso permite que ele navegue e opere seu
equipamento, solicitando que programas/aplicativos sejam
iniciados ou finalizados, interagindo com esses
programas/aplicativos.

Em resumo, conforme ilustrado na Figura 5, o SO é responsável


por intermediar as solicitações que os usuários fazem a
programas/aplicações, gerenciando como tudo isso deve ser
demandado do hardware.

Figura 5: O sistema operacional e seu papel em sistema


computacional.

O sistema operacional mantém as coisas


organizadas em segundo plano, para
que vários programas possam ser executados
ao mesmo tempo, o que é conhecido como
“multitarefa”.
O SO fornece a cada programa sua própria área de memória, de
modo que cada programa acessa apenas seus próprios recursos,
tentando limitar, por motivos de segurança, o que um programa
incorreto ou mal-intencionado pode fazer.

Manter os programas separados é conhecido como “área


restrita”. Isso é importante para que cada programa funcione
independentemente, sem interferir em outros programas ou no
sistema como um todo. Da mesma forma, cada programa tem
algum acesso à tela através de uma janela, mas essa área de
saída é separada da saída de outros programas.

Vamos ver dois exemplos?

ARQUIVO WORD.EXE
Um arquivo .exe é essencialmente apenas um arquivo de
instruções de código de máquina. Quando você clica duas vezes
no programa, está ordenando que o SO “inicie” o programa,
executando as etapas de limpeza de alocação de uma área de
memória na RAM para o programa, carregando a primeira seção
do código de máquina do programa nessa memória e, finalmente,
direcionando a CPU para começar a executar esse código.

CÂMERA DIGITAL
Uma câmera digital também é um pequeno computador. Quando
é iniciado, ele não executa um programa de gerenciamento de
arquivos. Em vez disso, depois que a limpeza básica for
configurada, a câmera poderá executar um único programa que
desenha os menus, entre outros, na tela da câmera e responde a
cliques nos botões da câmera, e assim por diante.
Portanto, em particular, o SO gerencia vários programas e inicia e
finaliza programas. Dessa forma, um computador moderno pode
executar vários programas ao mesmo tempo; assim, o SO
trabalha (duro) para manter as coisas organizadas.

BOOT E REBOOT
O sistema operacional é, antes de qualquer programa do usuário,
a primeira coisa a ser executada quando seu computador é
ligado.

Somente após o carregamento do SO, o usuário pode selecionar


os programas que deseja rodar, clicando duas vezes nos ícones
correspondentes na área de trabalho.

Você pode estar se perguntando:

Qual é o programa que cuida da inicialização do SO logo que o


computador é ligado?
Há um programa especial, e muito pequeno,
denominado firmware, que é gravado pela fábrica no hardware.
O firmware é responsável por detectar quando um computador
estava desligado e acaba de ser ligado, e realiza alguns
procedimentos iniciais de teste de hardware, para então,
basicamente, procurar um dispositivo de armazenamento
persistente que contenha um SO instalado.

Depois disso, é possível, então, iniciar seu carregamento (cópia


das instruções que compõem o SO do disco para a RAM e
indicação para a CPU de qual é a primeira instrução do SO a ser
executada). Este processo está ilustrado na Figura 6.

O termo firmware é usado, geralmente, para se referir


especificamente ao firmware de inicialização, que controla um
computador desde o momento em que é ligado até o sistema
operacional principal assumir o controle.
A principal função do firmware de
inicialização é inicializar o hardware e, em
seguida, inicializar (carregar e executar) o
sistema operacional principal.
Veja o esquema a seguir de um computador pessoal. Neste tipo
de computador o firmware de inicialização é chamado,
geralmente, de BIOS (Basic Input/Output System), ou sistema
básico de entrada e saída.

Figura 6: Processo de boot em um computador.

Este processo é comumente denominado


inicializar
(boot ou boot up).
E quando ocorre o Reboot?
Ocorrerá o reboot quando ordenamos ao SO que o computador
seja reiniciado, ou seja, o próprio SO cuida das tarefas
necessárias para a finalização e o desligamento do computador.
Imediatamente, o computador é religado, e o processo de boot
recomeça.

Agora que conhecemos conceitualmente os sistemas


operacionais, que tal darmos uma olhada em alguns exemplos de
SO?
Chegando ao final deste módulo, podemos fazer algumas
perguntas:

Somente os sistemas operacionais e os


firmwares são exemplos de softwares
funcionais?
O que define um software como funcional?
Qual a sua importância no âmbito do
pensamento computacional?

VÍDEO
É exatamente isso que nos apresentará o professor Rodrigo Dias,
no vídeo a seguir!

VERIFICANDO O APRENDIZADO
INTRODUÇÃO
Em sistemas computacionais contemporâneos, é extremamente
raro escrever códigos de máquina manualmente. Isso ocorre
porque eles são compostos por um número enorme de
instruções muito simples; assim, fica difícil para os humanos
fazerem esse processo.

Em vez disso, um programador escreve o código (instruções) em


uma linguagem de computador de “alto nível”, com recursos
mais úteis e poderosos do que as operações simples
encontradas no código da máquina.

ALTO NÍVEL
Como vimos no módulo 1, o termo “alto nível” designa a ideia de
que as instruções são mais próximas de nossa língua falada, se
comparadas ao código de máquina, que é de “baixo nível”.

Exemplos de estruturas de alto nível são:

 Estruturas de repetição (loops), em que o programador


ordena que um conjunto de instruções seja executado
repetidamente;

 A função print(), que imprime algo na tela; ou


 A estrutura condicional (if), onde o programador solicita
que alguma condição seja testada, e, caso passe no teste,
algumas instruções sejam executadas.

Nenhum desses recursos de alto nível está


diretamente presente no código da máquina
de “baixo nível”. Eles são adicionados por
linguagens de programação, como JavaScript,
Java, Python, C, C++, entre outras.

TIPOS DE LINGUAGEM DE
PROGRAMAÇÃO
A classificação de linguagens de programação é mais detalhada e
abrangente do que a apresentada aqui, mas vamos nos limitar,
por questões de simplicidade, a agrupá-las nestas categorias.

O funcionamento de uma linguagem de programação é definida


por seu tipo, que pode ser:

1. LINGUAGEM COMPILADA
São aquelas em que o processo de tradução (compilação) é feito
com antecedência e o código é necessariamente executável.

Quando se utiliza uma linguagem


compilada, é necessário executar um
programa para traduzir os
arquivos-fonte, legíveis em
linguagem de alto nível, em código
executável. As linguagens
compiladas têm a vantagem de
produzir código de alta
performance, o qual está ajustado
para o funcionamento em um tipo
específico de processador ou
arquitetura de processador.
Aplicativos compilados, chamados
de código binário, só podem rodar
no tipo de computador para o qual
foram compilados, uma vez que
esses aplicativos consistem, na
realidade, em instruções em
linguagem de máquina, entendidas e
executadas pelo microprocessador.
(INDRUSIAK, 1996, p. 4)

LEANDRO SOARES INDRUSIAK


Doutorado em Ciências da Computação outorgado
conjuntamente pela Universidade Federal do Rio Grande do Sul e
pela Technische Universitat Darmstadt, Alemanha (2003).
Atualmente é professor do Departamento de Ciência da
Computação na Universidade de York, no Reino Unido.

Fonte: Lattes

EXEMPLO
No código a seguir, escrito na linguagem C++, na primeira linha, o
texto/string “Bom dia” está sendo atribuído à variável “a”, e, na
segunda linha, a variável “b” recebe o conteúdo da variável “a”
(ex.: “Bom dia”), e a exclamação é adicionada ao final da frase.

a = “Bom dia”;
b = a + “!”;
Então, o programador escreve o que é chamado de código-
fonte na linguagem de programação que escolher. Como vimos,
humanos preferem linguagens de alto nível pois são mais fáceis e
intuitivas.
Como a CPU consegue executar (rodar) instruções escritas em
linguagem de alto nível, se sabemos que a CPU só executa
código de máquina?
Uma das estratégias utilizadas é usar o compilador.

Como já vimos, trata-se de um software de propósito muito


específico: olhar para o código-fonte escrito pelo programador e
traduzi-lo, para criar um grande corpo de código de máquina
compatível com a CPU em que o programador deseja rodar o
programa.

EXEMPLO
Talvez haja uma parte do código-fonte onde existe uma instrução
if (estrutura condicional), mas não há uma instrução específica
em um código de máquina para uma instrução if.

No entanto, talvez haja uma sequência de cinco instruções de


código de máquina que, na verdade, chegam ao mesmo resultado
de uma instrução if. Portanto, o compilador faz esse tipo de
expansão.

Vamos usar o Firefox como exemplo novamente:

Esse navegador é escrito em C ++. Assim, para criar uma nova


versão do Firefox, após realizar os ajustes desejados em seu
código-fonte, alguém executa o compilador C ++, que lê o grande
corpo de código-fonte em linguagem de alto nível que constitui o
Firefox e produz, essencialmente, o arquivo Firefox.exe.
Este arquivo é a saída do compilador e contém as instruções de
código de máquina obtidas através da tradução do código-fonte
escrito pelos desenvolvedores do Firefox.

A etapa de compilação pode ser feita uma vez e bem antes da


execução do programa (por exemplo, produza o Firefox.exe na
sede da entidade que o desenvolve, a Mozilla, e depois distribua
o Firefox.exe, para que usuários de PC possam usá-lo).

IMPORTANTE
A compilação só precisa ser feita pelo
desenvolvedor/programador uma vez.

Conforme ilustrado pela Figura 7, o desenvolvedor/programador,


que escreveu o código-fonte, realiza a compilação e cria o
arquivo executável (exemplo: Firefox.exe), e pode simplesmente
enviá-lo para que outras pessoas consigam rodá-lo em seus
computadores, contanto que sejam compatíveis com o código de
máquina gerado.

Os usuários finais não precisam do código-fonte nem do


compilador.

Figura 7: Processo de disponibilização de um programa escrito


em linguagem compilada.

Porém, o processo não funciona ao contrário.


Ou seja: não é possível, a partir das instruções em código de
máquina do Firefox.exe, realizar a tradução reversa e obter o
código-fonte em linguagem de alto nível originalmente escrita
pelo(s) programador(es). É até possível obter uma versão
imperfeita do código-fonte original, mas esta versão fica bem
distante do ideal.

2. LINGUAGENS DINÂMICAS OU
INTERPRETADAS

A linguagem dinâmica se diferencia por se pautar no tempo de


execução, cruzando os dados com os protocolos por meio de
bibliotecas, criando “meta-objetos”, quer dizer, bibliotecas
complexas de combinação e execução.

EXEMPLO
Java, JavaScripts e Python são linguagens de programação
dinâmicas/interpretadas.

Uma forma de compreender essa categoria é pensar que, em vez


do compilador, é usado outro software de propósito especial
denominado interpretador.
Trata-se de um programa que lê código-fonte
escrito em uma linguagem como
Java, JavaScript, Python, entre outras, e o
“executa/roda”.
Talvez, o melhor exemplo para linguagem interpretada seja o
JavaScript:

Um interpretador para a linguagem JavaScript vem embutido em


navegadores de Internet, como o Firefox, o Chrome, o Microsoft
Internet Explorer ou o Microsoft Edge.

Assim, quando um navegador se depara com um website que


contenha algum código JavaScript embutido, ele pode usar seu
interpretador para executar esse código. Portanto, de forma
bastante resumida, a maneira como um intérprete funciona é a
seguinte: ele executa uma linha de código por vez.

Então, supondo que o exemplo a seguir seja um código-fonte


contendo duas instruções escritas em JavaScript, quando o
interpretador JavaScript do navegador for executar isso, ele
olharia a primeira linha e a executaria.

//Código Javascript

a = 1;
b = a + 1;
Portanto, neste exemplo, o interpretador diria: “Acho que preciso
de um nome de variável ´a´, e preciso colocar o valor ‘1’ nela”.
Então, após executar essa linha, ele segue em frente e
interpreta/executa a próxima linha, e assim por diante.

Agora que conhecemos as duas linguagens, aperte o play para


ouvir o professor Rodrigo Dias comparando-as.

PODCAST
TENDÊNCIAS
Falando de forma geral, atualmente, a tendência para a
programação de computadores caminha para o uso de
linguagens dinâmicas/interpretadas. Isso ocorre porque há um
consenso de que é bastante atraente poder programar de forma
mais simples e eficiente, mesmo sabendo que o programa final
rodará mais lentamente na CPU.

Isso talvez seja um pouco contraintuitivo, mas podemos refletir


sobre essa questão da seguinte forma:

Qual o recurso mais escasso em


programação de computadores?
Geralmente, a resposta é o programador!
Em todo o mundo, o mercado de trabalho da área da computação
sofre, cada vez mais, em virtude da falta de profissionais
qualificados. Portanto, usar menos horas de trabalho dos
programadores é um atrativo muito importante.

O fato de que o programa rodará mais lentamente na CPU é


considerado menos relevante, até porque, conforme a lei de
Moore, as CPUs estão cada vez mais baratas e o poder de
processamento delas cresce continuamente.

Então, se pensarmos em qual será a tendência para os próximos


anos, também há um consenso, no mercado, de que
o programador continuará a ser considerado um recurso cada
vez mais escasso, se comparado ao poder de processamento das
CPUs.

Para finalizar, vale a pena comentar sobre uma coisa chamada JIT
(Just in Time Compiler). O objetivo dos JITs é tentar obter o
melhor dos dois mundos: linguagens compiladas e linguagens
interpretadas.

A ideia é ter os benefícios da maior simplicidade de


desenvolvimento de programas usando linguagens dinâmica e,
ao mesmo tempo, obter um programa que rode mais rapidamente
na CPU.

Dessa forma, o JIT é responsável por ler parte


do código-fonte e tentar compilá-
lo rapidamente, antes de executá-lo. O mais
interessante é que isso funciona
muito bem!
Navegadores modernos de internet, como o Firefox, o Chrome, o
Microsoft Internet Explorer e o Microsoft Edge, agora embutem
JITs para código JavaScript. Assim, na verdade, quando você
está executando o código JavaScript dentro do navegador, o JIT
examina trechos do código dinâmico (Javascript) que estão
sendo executados com muita frequência e compila o código
nativo destes trechos em tempo real.

Portanto, o intérprete não é usado para casos


simples, mas para seções importantes do
código dinâmico (como o interior de uma
estrutura de repetição), e o JIT cria um bloco
de código de máquina na memória.
O código da máquina é executado para essa seção do código
dinâmico, oferecendo desempenho semelhante a linguagens
compiladas, como C e C ++, e é descartado quando o programa é
encerrado.

Note que, mesmo com o uso de JITs, ainda assim, linguagens


interpretadas possuem desempenho inferior ao de linguagens
compiladas com C e C++.

Além do JavaScript, a linguagem Java também usa a tecnologia


JIT extensivamente. O enorme ganho de desempenho dos
navegadores de internet nos últimos anos deve-se, em grande
parte, à implementação da tecnologia JIT para JavaScript.

VERIFICANDO O APRENDIZADO
CONCLUSÃO
CONSIDERAÇÕES FINAIS
Neste tema, você mergulhou na representação do que é um
software para computadores, reconhecendo alguns softwares
funcionais que fazem parte do seu cotidiano. No fim, aproximou-
se da linguagem de programação, podendo, com isso, perceber
como a linguagem e sua dinâmica são atualizadas
continuamente.

PODCAST

AVALIAÇÃO DO TEMA:
REFERÊNCIAS
CARVALHO, A.; LORENA, A. Introdução à
Computação: hardware, software e dados. 1. ed. Rio de Janeiro:
LTC, 2017.
DALE, N.; LEWIS J. Ciência da Computação. 4. ed. Rio de Janeiro:
LTC, 2011.
FEDELI, R. D.; POLLONI, E. G. F.; PERES, F. E. Introdução à
Ciência da Computação. 2. ed. São Paulo: Cengage, 2010.
FLANAGEN, D. Javascript: o guia definitivo. 6. ed. Porto Alegre:
Bookman, 2013.
GLENN, J. Ciência da Computação: uma visão abrangente. 11. ed.
Porto Alegre: Bookman, 2013.
INDRUSIAK, L. S. Linguagem Java. Consultado em meio
eletrônico em: 28 abr. 2020.
NET MARKETSHARE. Market Share Statistics for Internet
Technologies. Consultado em meio eletrônico em: 27 abr. 2020.

EXPLORE+
Pesquise e leia o texto Mercado de TI pode apresentar déficit de
290 mil profissionais em 2024.
Procure na Internet o artigo Proposta de integração da
engenharia de software nas estratégias empresariais, de
Adalberto Reis e Ivanir Costa, que apresenta uma reflexão sobre
essa importante área do pensamento computacional.
Pesquise também o livro Autonomia, liberdade e software livre,
de Doriedson de Almeida e Nicia Riccio, que traz importantes
reflexões a partir do tema “código aberto”.
Consulte o artigo A eficácia do software de educação ambiental
utilizado no ensino à distância, de Franklin Porto Jr., que
apresenta a importante articulação de três temas extremamente
atuais: pensamento computacional, meio ambiente e educação a
distância.

CONTEUDISTA
Guilherme Dutra Gonzaga Jaime

CURRÍCULO LATTES

EFINIÇÃO
Fundamentos do pensamento computacional. Conceitos fundamentais de
hardware de computadores. Componentes do hardware. Lei de Moore.
Unidades de armazenamento.

PROPÓSITO
Possuir iniciação consistente em Computação, na questão do desenvolvimento
contínuo do hardware, é uma das necessidades do mercado de trabalho. Deve-
se, então, construir uma compreensão introdutória sobre hardware de
computadores.

OBJETIVOS
MÓDULO 1

Definir o que é hardware

MÓDULO 2
Identificar os componentes básicos de hardware de computadores

MÓDULO 3

Reconhecer as unidades de armazenamento de dados


MÓDULO 1
Definir o que é hardware

INTRODUÇÃO
HARDWARE É O QUE VOCÊ PODE CHUTAR,
JÁ SOFTWARE É O QUE VOCÊ SÓ PODE
XINGAR.
Autor desconhecido.

Quem nunca ouviu essa infame anedota? Caso não tenha ouvido, você
precisará ainda mais do que será visto aqui. Porém, se você conhece e achou
que tinha entendido, saiba que essa definição não o ajuda muito.

Para começar, estamos trabalhando com a construção do mercado de produtos


que mais se modifica na contemporaneidade. A maior parte de nós compra um
produto quando ele já está obsoleto para determinados setores, ainda que nos
atenda muito bem.

Já reparou como a aparência dele muda o tempo todo? Computadores e


celulares evoluem de um ano para o outro. Se essa indústria muda tão rápido,
como eu posso explicar o funcionamento de um hardware? Como é possível
não lhe ofertar um produto obsoleto de antemão?

Vamos pensar sobre a parte física dessas máquinas? Assista ao vídeo a


seguir.

Neste vídeo, conheceremos a origem da máquina.


O CONCEITO PROPRIAMENTE
DITO
Hardware é o termo usado para se referir à parte física de um equipamento.
Devemos pensar que estamos falando dos componentes diretamente utilizados
pela estrutura tecnológica. Você já viu o interior do seu celular? Tudo ali se
encaixa, tem uma função, desde mecanismos para levar energia, poupar e
armazenar dados até possibilidades de encaixes que agregam outras
tecnologias. Cada um desses elementos é uma mistura de tecnologia de
desenvolvimento técnico e equilíbrio econômico para produção em massa.

O QUE DIFERE HARDWARE DE SOFTWARE?


O software é o código, ou seja, as instruções, o que é executado no
computador. No entanto, por aqui, vamos nos concentrar no hardware.

Vamos comparar o hardware computacional a outro objeto para ver se fica


mais claro.

Você já viu um piano? O esquema a seguir resume comparativamente o que é


hardware e o que é software nos computadores e nos pianos.
PIANO
 O piano e todos os seus componentes físicos.
 Os papéis e livretos onde as partituras são escritas e lidas.

 A tinta usada para escrever a partitura no papel.

Representação escrita e mundialmente padronizada da música. A música que


ouvimos.
COMPUTADOR
 Gabinete

 CPU

 Memória

 Disco rígido

 Monitor

 Pen drive

 Celulares

 Teclado
 Cartão de memória

 Disquete

 CD

 DVD

 SSD

Instruções (programações).

 HARDWARE (FISICAMENTE PALPÁVEL, OU SEJA,


EQUIPAMENTO, OBJETO FÍSICO)
 SOFTWARE

ENTÃO, UM HARDWARE É A
ESTRUTURA FÍSICA QUE PERMITE
EXECUTAR AS FUNÇÕES QUE
DESEJAMOS.
Vamos a outro exemplo que nos permite sofisticar um pouco mais a visão
sobre o que é o hardware.

Se olharmos um cérebro em um microscópio, veremos neurônios. Os


neurônios são a unidade fundamental do hardware humano relacionado ao
pensamento e processamento de informações.
O cérebro do computador é a CPU (Central Processing Unit). Quando olhamos
as partes de uma CPU, identificamos os transistores.
SAIBA MAIS
O processador Intel Core i9 9900k, lançado em 2018, contém 12 bilhões de
transistores.

O transistor é provavelmente uma das invenções mais importantes do século.


Este é um pequeno componente eletrônico que pode ser usado para criar todo
tipo de coisas diferentes.

Atualmente, encontramos transistores embutidos em componentes chamados


de chips.

CHIPS
Um chip é feito de um pequeno pedaço de silício de poucos milímetros (20mm).
Diferentes componentes eletrônicos podem ser gravados no silício, o que
permite construir componentes de maneira muito barata. O silício é o principal
componente do vidro.
 

Chip de computador: formatos comuns

Veja exemplos de diferentes formatos de transistores a seguir.


 

Transistores: formatos comuns

Os componentes mais comuns dos chips são os transistores. CPU, memórias e


diversos outros dispositivos eletrônicos se resumem a chips compostos por
transistores.
SAIBA MAIS
Chips são dispositivos de estado sólido (solid state), isto é, sem qualquer tipo
de partes móveis internamente. Não há engrenagens, rodas ou eixos que girem
dobradiças. Isso torna os chips dispositivos muito confiáveis, pois partes
móveis se desgastam com o tempo e requerem manutenção constante, como
ocorre em motores de veículos. Além disso, como já citamos, eles são
fabricados com altíssima quantidade, mas de forma muito barata. A
combinação de baixo custo e alta confiabilidade é uma das principais forças
motrizes da revolução dos computadores.

LEI DE MOORE
Uma das forças mais importantes do desenvolvimento do silício é a lei de
Moore, uma observação feita por Gordon Moore sobre como a fabricação de
chips vinha sendo capaz de inserir cada vez mais transistores dentro de um
chip. Essa lei diz que o número de transistores contidos em um chip dobra em
um período entre 18 e 24 meses.

Podemos entender a Lei de Moore sob dois aspectos:

GORDON MOORE
Engenheiro e empresário americano, um dos fundadores da Intel.

Gordon Moore

Engenheiro e empresário americano, um dos fundadores da Intel.


DESEMPENHO
A lei pode significar que a indústria tem conseguido dobrar o número de
transistores embutidos em um chip a cada dois anos. Essa observação
descreve um crescimento exponencial bastante poderoso.
ECONÔMICO
Os transistores estão ficando cada vez mais baratos. Dessa forma, com o
passar do tempo, devido ao baixo custo, é possível criar sistemas
computacionais em outros aparelhos, como telefone celular, geladeira,
torradeira, termostatos e até em óculos.

É importante entender que a lei de Moore não é uma lei da natureza, como a lei
da gravidade de Isaac Newton. Ao contrário, é apenas uma observação sobre
como a fabricação de transistores tende a funcionar. O comportamento
observado por Moore tem seguido firme desde 1965. Neste sentido, as
possibilidades do desenvolvimento de melhoria e aceleração da parte física
acabam por permitir o barateamento, transformando o hardware em uma
variável importante para o desenvolvimento das sociedades tecnológicas.
ISAAC NEWTON
Cientista inglês com importantes contribuições para a Física, Matemática e
Astronomia.

Retrato de Isaac Newton (1643-1727), de Sir Godfrey Kneller, 1689.


A qualidade duplicada da lei de Moore permite que um computador de décadas
atrás, que ocupava uma sala inteira e custava milhões de reais, seja, agora, do
tamanho de um cubo de açúcar e custe menos de cem reais.

Se pensarmos em apenas uma duplicação, que ocorre em um ano e meio,


podemos ter a impressão de que não é algo tão importante. Porém, se
pensarmos em um intervalo de 15 anos, teremos, segundo a lei de Moore, dez
duplicações, o que representa algo mil vezes maior, conforme ilustrado a
seguir.

Para termos a real noção da importância deste fenômeno para o crescimento


do poder computacional na atualidade, pense que um telefone celular
(smartphone) X, fabricado em 2019, possui poder de processamento bilhões de
vezes maior do que o computador de cálculo de trajetória usado na nave
espacial Apollo XI (AGC – Apollo Guidance Computer), que levou o homem à
Lua, em 1969.

1969
O contexto de conflitos mundiais do século XX fomentou fortemente a
tecnologia. Durante a Guerra Fria, houve uma forte corrida espacial. Os
soviéticos conseguiram enviar o homem ao espaço, com Iuri Gagarin, em 1961.
Tal realização fez o presidente Kennedy prometer que os americanos
chegariam à Lua, o que ocorreu em 1969.

Uma forma internacionalmente conhecida para medir o poder computacional de


processadores é o FLOPS (Floating-point Operations per Second ou
Operações de Ponto Flutuante por Segundo), que indica quantas operações
matemáticas com casas decimais o processador consegue realizar por
segundo.

Com base nisso, veja a comparação a seguir:

AGC
Fabricado em 1969
14,6 FLOPS

Capaz de realizar, aproximadamente, 14 operações matemáticas com casas


decimais por segundo.

SMARTPHONE
Fabricado em 2019
Mais de 40 GFLOPS (Giga FLOPS)

Capaz de realizar cerca de 40 bilhões de operações por segundo.


COMPUTADOR DE MESA(DESKTOP)
Fabricado em 2019
Pode chegar a 400 GLOPS

Capaz de realizar, aproximadamente, 400 bilhões de operações por segundo.


SAIBA MAIS
Supercomputadores fabricados em meados de 2019 possuem trilhões de
FLOPS, como é o exemplo de um supercomputador disponível na Universidade
de Campinas, que faz 4,5 trilhões de operações aritméticas por segundo.

Outro exemplo que você provavelmente observou em sua vida é que, a partir
de 2000, surgiram os pen drives, com, inicialmente, 8MB de capacidade de
armazenamento. Pelo mesmo preço, em 2019, já era possível comprar pen
drives de mais de 2000GB de capacidade. Ou seja, em menos de 20 anos,
houve um aumento de 250 mil vezes na capacidade de armazenamento dos
pen drives.

Pela lei de Moore, a fabricação dos chips que armazenam informação em pen
drives evoluiu de tal forma que é possível embutir mais transistores por,
praticamente, o mesmo preço. Então, eles podem oferecer mais e mais
capacidade de armazenamento.

Os exemplos que vimos para o poder de processamento de celulares


contemporâneos e a capacidade de armazenamento de pen drives evidenciam
a qualidade exponencial da lei de Moore.

VERIFICANDO O APRENDIZADO

ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que responda corretamente
a uma das seguintes questões.

1. A DEFINIÇÃO DE HARDWARE É:
Termo que designa uma invenção do homem que utiliza sistemas mecânicos.

Estrutura de programação do computador que define a velocidade e a dinâmica


da máquina.

Nome que passou a ser convencionado para a parte física dos equipamentos
de computação.

Definição genérica para tratar tudo o que é físico em uma máquina.

2. AO INTRODUZIRMOS A IDEIA DE QUE O MUNDO DOS


COMPUTADORES NÃO DEVE SER OBSERVADO COMO UM
RETRATO ATUAL DA TECNOLOGIA, O OBJETIVO É
DEMONSTRAR O SENTIDO DE SUA CONSTRUÇÃO COMO
SOLUÇÃO PARA OS HOMENS. NESTE SENTIDO,
HARDWARE PODE SER COMPREENDIDO COMO:

Exercício metafísico do homem para transformar a natureza.

Conjunto de técnicas requeridas de quem vai operar um computador.

Constante processo de invenções que permitam o desenvolvimento das CPUs.

Variável para o desenvolvimento de máquinas modernas computacionais.

GABARITO

1. A definição de hardware é:

Parabéns! A alternativa "C " está correta.

Hardware é uma nomenclatura convencionada no mundo da computação sobre


o maquinário específico de computadores (em várias escalas) que permite o
desenvolvimento e a melhoria das estruturas físicas.

2. Ao introduzirmos a ideia de que o mundo dos computadores não deve


ser observado como um retrato atual da tecnologia, o objetivo é
demonstrar o sentido de sua construção como solução para os homens.
Neste sentido, hardware pode ser compreendido como:

Parabéns! A alternativa "D " está correta.

Hardware é um componente importante para o desenvolvimento das máquinas.


As capacidades de armazenar, responder e reduzir geram, com a definição da
lei de Moore, uma possibilidade constante de avanço e também um volume
constante de obsolescência. Sem o hardware como variável, é impossível
pensar na continuidade do desenvolvimento de máquinas na
contemporaneidade.

O CONTEÚDO AINDA NÃO ACABOU.


Clique aqui e retorne para saber como desbloquear.
VOCÊ CONSEGUIU DESBLOQUEAR O
MÓDULO 2!
E, com isso, você:

 Definiu hardware.

 Retornar para o início do módulo 1


MÓDULO 2
Identificar os componentes básicos de hardware de computadores

INTRODUÇÃO
Para falar sobre computadores, vamos tratar dos componentes fundamentais
que o constituem.

Conforme ilustrado a seguir, temos a CPU, a memória RAM e a memória


Disco/HD/ pen drives.

CPU
(Cérebro)

MEMÓRIA RAM
(Temporária)

MEMÓRIA DISCO/HD/PEN DRIVE
 
 
(Permanente)

CPU
Também chamada de processador, é uma espécie de cérebro. É a CPU quem,
de fato, processa instruções.

RAM (RANDOM ACCESS MEMORY)


Memória de acesso aleatório é uma espécie de memória temporária. Também
chamada de memória volátil: tudo o que está na RAM é instantaneamente
apagado quando o computador é desligado.

MEMÓRIA PERSISTENTE
Geralmente, é um disco, um HD (Hard-Disk) ou um pen drive. Os dados
armazenados neste tipo de memória permanecem ali mesmo quando o
computador é desligado e, por isso, é chamada de memória persistente.

Clique nas caixas acima para visualizar o conteúdo.

A seguir, vamos entender um pouco melhor como cada um desses


componentes funcionam.

CPU
A parte mais importante do computador é a CPU. Ela faz a computação, ou
seja, executa instruções. A CPU possui um rol padronizado de operações
bastante simples para executar. Então, quando dizemos que um computador
executa dois bilhões de operações por segundo, realmente estamos falando
sobre a CPU. Isso significa que ela pode fazer centenas de bilhões de coisas
muito simples por segundo.

As instruções executadas pela CPU são escritas por pessoas que desejam
usar o computador e seu incrível poder de processamento para alcançar algum
objetivo útil. As instruções escritas em linguagens de programação são
denominadas código de computador.
 

CPU (do inglês Central Processing Unit), em português, significa Unidade Central de

Processamento. 

RANDOM ACCESS MEMORY


A Random Access Memory (RAM), que significa Memória de Acesso
Aleatório, pode ser chamada apenas de memória. A RAM é considerada
a memória principal, pois é o armazenamento temporário usado pela CPU
para manter os dados e o código utilizados enquanto processa instruções.
 

Pentes de memória RAM.

Em código de computador, quando escrevemos instruções como a = 2 + 5,


com o objetivo de que a variável a receba a soma dos valores 2 e 5, ocorrem,
na verdade, quatros coisas na memória RAM:

1
O valor 2 é armazenado em uma posição.
2
O valor 5 é armazenado em outra posição.
3
A instrução somar é armazenada em mais uma posição.
4
O espaço para a variável a é armazenado em mais um endereço.
A CPU lê/carrega os valores 2 e 5 da memória RAM e, depois, a instrução
soma. Então, a CPU realiza a operação e, depois, armazena o resultado na
posição da memória reservada para a variável a.
É importante observar que a CPU precisa da RAM para processar as
instruções de acordo com o código de computador escrito pelo programador. É
por isso que ela é chamada de memória principal.

A principal característica da RAM é que ela não é uma memória persistente,


mas, sim, uma memória volátil. Isso significa que, quando a energia elétrica é
desligada, ela imediatamente fica em branco. Portanto, ela funciona muito bem
como armazenamento rápido e temporário, mas não se trata de um
armazenamento de longo prazo.
Para ficar mais claro, vejamos o exemplo a seguir.

Imagine que o computador desligue por acidente enquanto você está digitando
o texto de um trabalho no Word antes de apertar o botão salvar. Você
certamente ficará chateado, pois perderá as informações digitadas desde a
última vez em que salvou seu trabalho.

Isso ocorre porque esses caracteres ainda estavam somente na memória RAM,
que não é persistente. Assim, a versão que você possui é a última versão que
salvou.

MEMÓRIA PERSISTENTE
O nosso terceiro componente de hardware é a memória/armazenamento
persistente, também chamada de memória secundária. Vejamos como ela
funciona de forma diferente da memória RAM.

Em um editor de texto, quando você pressiona o botão salvar, instrui o


computador a copiar a versão do documento que está na RAM (versão
temporária) para o disco/pen drive/HD, que são memórias persistentes, ou
seja, que permanecem com as informações armazenadas mesmo após o
desligamento.

Este exemplo simples permite que você compreenda a noção do que significa
ser persistente, como um disco/HD/pen drive, ou volátil, como a RAM.
SAIBA MAIS
Para equipamentos atuais, as memórias RAM, em geral, possuem capacidade
de bilhões de bytes, enquanto discos/HDs/pen drives possuem capacidade de
armazenamento de trilhões de bytes. Todos esses dispositivos, mesmo quando
o fornecimento de energia elétrica é cortado, mantêm os dados, apesar de
serem muito mais lentos do que a memória RAM.

AVANÇO DAS TECNOLOGIAS DE


ARMAZENAMENTO PERSISTENTE
Veja alguns dos dispositivos de armazenamento persistente.

HARD DISK
Por muito tempo, o armazenamento persistente em computadores foi feito com
um disco rígido (HD – Hard Disk). No passado, o preço do armazenamento
em memórias flash, SSD, pen drives e cartões SD era muito mais caro que os
discos rígidos e, por isso, os discos rígidos eram usados para tudo.

Note que um HD possui um disco giratório, que é rígido! Além disso, há uma
pequena cabeça semelhante às agulhas dos toca-discos antigos que escreve e
lê padrões magnéticos no disco para armazenar e ler dados.

Quando você estiver operando um computador e ouvir vários sons agudos de


“cliques”, o que você provavelmente está ouvindo é o disco rígido girando em
seu pequeno compartimento, com sua cabeça se movimentando para um lado
e para o outro.
SOLID STATE DISK
Mais recentemente, houve avanços no que chamamos de discos de estado
sólido (SSD – Solid State Disk). Assim, uma unidade SSD também armazena
dados persistentemente, mas, em vez de usar discos, como nos HDs, são
usados chips de memória de estado sólido. Estes componentes são chamados
de sólidos, pois não há partes móveis, como discos e cabeças de
escrita/leitura. Ao contrário, tudo é feito eletronicamente.

Dispositivos de armazenamento baseados em SSD são dezenas e até


centenas de vezes mais rápidos do que os discos rígidos, além de serem mais
confiáveis, já que não possuem partes mecânicas móveis. Seguindo esta
mesma tendência, um dos tipos mais recente de armazenamento secundário é
chamado de SSD M.2.

PEN DRIVE
Os pequenos pen drives USB utilizam tecnologia semelhante à do SSD. Seu
tamanho reduzido nos permite levar nossos arquivos conosco para qualquer
lugar. Desde o lançamento do seu primeiro modelo até hoje, a capacidade de
armazenamento dos pen drives cresceu consideravelmente e promete
aumentar ainda mais.
CARTÕES SD
Os cartões SD, usados em câmeras fotográficas digitais e celulares, conta com
a mesma tecnologia usada no Solid State Disk e nos pen drives. Apesar de seu
pequeno formato, já existem cartões SD com capacidade de armazenamento
acima de 500GB.

Observando o avanço das tecnologias de armazenamento persistente,


podemos reconhecer o padrão da lei de Moore. Chips de memórias flash estão
ficando mais baratos, e, assim, é cada vez mais comum o uso de dispositivos
de armazenamento baseados em estado sólido. É possível que, em alguns
anos, o disco rígido deixe de ser utilizado para o uso diário.

Para chegar a este ponto, precisamos apenas que a lei de Moore continue
ocorrendo e que os preços de SSD sigam caindo até alcançarem um valor
bastante convidativo, a ponto de as pessoas pensarem o seguinte: “Não
precisamos mais de HD. Podemos apenas usar esses chips, pois eles são
muito mais rápidos e confiáveis”.
MEMÓRIAS FLASH
Permite armazenar dados por longos períodos, sem precisar de alimentação
elétrica.

SISTEMAS DE ARQUIVOS
Quando você tem um dispositivo de armazenamento secundário e persistente,
há uma grande capacidade de armazenamento. Entretanto, por si só, estes
dispositivos não estão realmente prontos para o usuário.

Normalmente, o armazenamento de dados em disco rígido ou unidade flash é


organizado com esquemas convencionados, que são conhecidos como
sistemas de arquivos.

Um sistema de arquivos é apenas uma maneira de organizar a grande área de


bytes de dispositivos persistentes, dando a eles um tipo de estrutura familiar de
arquivos e pastas. Cada arquivo e pasta possuem nomes, que podem ser
movidos, copiados, editados, removidos etc.

AGORA, VAMOS REFLETIR SOBRE O


ASSUNTO.
Será que, ao tentarmos gravar mais dados em um pen drive cheio, acabaremos
sobrescrevendo os dados que já estavam lá?
Veja a resposta

Clique no botão acima.

Um arquivo é apenas uma maneira de ocupar certa área do dispositivo de


armazenamento e atribuir um nome a ele. O sistema de arquivos, então,
garante que, caso o usuário tente gravar novos arquivos quando o dispositivo
já está lotado, os dados já existentes não sejam sobrescritos.

PLACA-MÃE
Já estudamos CPU, memória RAM e diversos tipos de armazenamento
persistente (HD, SSD, M.2, pen drive), mas falta um componente fundamental
do computador, que é responsável por interligar CPU, RAM, discos etc.

A imagem a seguir apresenta uma placa-mãe, onde todos os componentes


eletrônicos são conectados.

Veja como conectamos alguns dos componentes na placa-mãe.


A CPU é montada em um compartimento próprio da placa-mãe.
A CPU recebe uma aplicação de uma pasta térmica, que é importante para
ajudá-la a transferir calor para o dissipador que será instalado por cima e,
assim, manter-se adequadamente resfriada durante seu funcionamento.
Um dissipador de calor, também chamado de cooler, é firmemente preso por
cima da CPU, ficando em contato com ao CPU e a pasta térmica.
Os pentes de memória RAM também precisam ser encaixados na placa.

Assista ao vídeo a seguir para conhecer mais detalhes desses componentes.


Neste vídeo, veremos as partes que compõem o hardware e a função de cada
uma delas.

MICROCONTROLADORES
Uma interessante consequência da lei de Moore é que os computadores se
tornaram tão pequenos e baratos, que você pode comprar versões cada vez
menores dessas máquinas por preços relativamente baixos. Eles podem se
encaixar em inúmeros lugares, o que antigamente era algo inimaginável.

Um pequeno computador embutido em um único chip é conhecido como


microcontrolador, que possui todos os componentes básicos, como CPU, RAM
e armazenamento persistente, em uma escala realmente pequena.
Logicamente, seu poder computacional, quando comparado a computadores
de mesa, é bastante limitado.

Então, microcontroladores são computadores realmente pequenos, que não


têm muito poder, mas são muito baratos, e quem tornou isso possível foi a lei
de Moore. Veja, a seguir, alguns exemplos de equipamentos que utilizam
microcontroladores.

TERMOSTATOS
CARROS
FORNOS DE MICRO-ONDAS
SAIBA MAIS
Um carro mais moderno possui microcontroladores espalhados pelo chassi,
realizando tarefas específicas para cada subsistema.

Um bom exemplo de um microcontrolador é uma placa Arduino. Trata-se de um


equipamento de projeto e de código aberto, oferecido apenas por artistas ou
entusiastas, ou apenas para brincar.

Observe o microcontrolador do Arduino destacado na imagem a seguir. É ali


que ficam a CPU, a memória RAM e o armazenamento persistente.
O microcontrolador está instalado sobre a placa azul, onde encontramos outros
componentes auxiliares, ou seja, de suporte. Por exemplo, para alimentação
elétrica e interface com um monitor de vídeo.

Atualmente, é possível comprar um Arduino por valores acessíveis. Este é um


item bem interessante para ser utilizado em sistemas computacionais a fim de
ler sensores ou interruptores. Também é possível controlar pequenas luzes,
por exemplo.

Portanto, é apenas uma maneira divertida de brincar e fazer uma espécie de


projeto de arte ou algo assim. O Arduino também é usado por escolas e
universidades de todo o mundo, pois permite que alunos estudem e
implementem sistemas computacionais de forma bastante efetiva a um custo
realmente reduzido, inclusive sem a necessidade de gastos com licenças e
royalties.

VERIFICANDO O APRENDIZADO
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que responda corretamente
a uma das seguintes questões.

O CONTEÚDO AINDA NÃO ACABOU.


Clique aqui e retorne para saber como desbloquear.
VOCÊ CONSEGUIU DESBLOQUEAR O
MÓDULO 3!
E, com isso, você:

 Identificou os componentes básicos de hardware de computadores.

 Retornar para o início do módulo 2


MÓDULO 3
Reconhecer as unidades de armazenamento de dados

INTRODUÇÃO
Você já perguntou a alguém se o computador ou o celular que você estava
querendo adquirir era bom?

Tenho certeza de que alguma coisa assim já aconteceu, e você foi orientado a
conferir qual era a memória RAM, a memória de armazenamento,
a velocidade do processador etc.
Com o tempo, ou você desistiu ou passou a aceitar o que as pessoas
recomendavam. Afinal, o mundo da informática lhe apresentou algumas
unidades de medidas novas. Certamente, você já teve um celular ou um
computador com uma memória medida em mega. Depois, você notou que
precisava de giga e, agora, muitos já dizem que você necessita de tera.
Porém, o que significa isso? Quem faz a conta do espaço que uma foto ou um
aplicativo ocupará no seu celular?

Não há nada de simples nessas nomenclaturas, mas, aos poucos, elas passam
a fazer parte de nosso cotidiano e acabam fazendo sentido.

Antigamente, os computadores – famosas torres – tinham processadores tão


barulhentos, que pareciam aviões decolando. Sempre que um problema era
detectado, surgia a possibilidade de um aquecimento, e logo era posto um
ventilador para esfriar as coisas. Assim, um processador era associado não
à capacidade de processar, mas à velocidade do cooler, e por aí vai.
As tecnologias físicas passaram pelo mesmo processo por séculos, ou seja,
primeiro vem a invenção, depois, a desconfiança. Com a expansão, vem a
assimilação. O resultado é a plena utilização dos vocabulários e das práticas
da tecnologia, como se sempre tivessem sido íntimas de nós. Pense no
número de pessoas que desejam saber quantos cavalos tem um motor, se a
sua potência é 1.0 ou 2.0, com 8 válvulas ou 16 válvulas.
O que você verá agora é uma breve introdução ao entendimento das unidades
de medida e sua lógica de utilização.

BYTE
Um byte é a espécie de medida mais comum de armazenamento de
informações. Uma forma simples de pensar em um byte é imaginar uma letra
que você digita no teclado. Cada caractere, como um “a” ou um “G”, pode ser
internamente armazenado no computador como um byte.
A capacidade de armazenamento de memórias, como RAM e discos/HD/pen
drives, é medida em bytes. Podemos dizer que um megabyte é um termo que
a maior parte de nós está acostumada a ouvir. Cada megabyte equivale a um
milhão de bytes.
Um gigabyte equivale a cerca de um bilhão de bytes. Então, com isso em
mente, confira as unidades a seguir.
 
 
Os equipamentos atuais utilizam a seguinte escala:

PEN DRIVE
GB

HD
TB

RAM
GB

BITS E BYTES
Historicamente, computadores são construídos de forma que a unidade básica
de informação a ser processada seja uma unidade denominada bit, que pode
assumir apenas dois valores, 0 (zero) ou 1 (um). Provavelmente, você já ouviu
a expressão que diz que computadores são apenas capazes de lidar com
números 0 (zero) e 1 (um). Isso se refere a bits.
Tudo o que computadores são capazes de fazer é necessariamente construído
a partir dessa coleção de bits simples. Então, no hardware de computadores,
qualquer componente interno é capaz de assumir dois estados diferentes e,
quando assume um estado, ele pode ficar nele. Por exemplo, um transistor
pode estar no estado ligado (1) ou no estado desligado (0).

Em um disco rígido, os dois estados diferentes são feitos com uma pequena
área onde o fluxo magnético tem polaridade sul-norte (bit zero) ou polaridade
norte-sul (bit um).

POR QUE OS COMPUTADORES


FUNCIONAM DESSA FORMA?
Os engenheiros que trabalham no desenvolvimento de computadores notaram
que esta é uma forma muito mais barata de construir tais hardwares quando
comparada a outras formas, pois a unidade fundamental de dados pode
assumir mais do que dois estados, como em um computador em que a unidade
fundamental de armazenamento seja o sistema decimal, que estamos
acostumados a usar.

Um bit, por si só, é pequeno demais para ser útil para qualquer coisa. Então, o
que podemos fazer é agrupar oito bits para criar um byte. Então, ao olhar
para um byte, você, na verdade, está olhando para um conjunto de oito dígitos
binários, ou seja, cada dígito só pode assumir os valores zero ou um, como no
exemplo a seguir.
Então, quanto de informação um byte pode conter exatamente? Em outras
palavras, quantos padrões e combinações diferentes um byte pode assumir?

Para começar essa discussão de forma simplificada, considere apenas um,


dois ou três bits e veja quantas combinações de valores diferentes esses bits
podem assumir:

1 BIT = 2 COMBINAÇÕES
0

2 BITS = 4 COMBINAÇÕES
0

3 BITS = 8 COMBINAÇÕES
0

0
0

1
1

Se prestar atenção, você notará que o número de possíveis combinações


distintas duplica cada vez que adicionamos um bit ao número de bits usados
para representar valores.

Matematicamente, poderíamos expressar assim: 2 x, onde x é o número de Bits.


Portanto, se um Byte é um grupo de oito bits, teremos 2^8 = 256
combinações diferentes.
Usando o raciocínio ilustrado anteriormente, sabemos que, com um byte (8
bits), podemos representar 28 valores distintos, ou seja, 256 valores.
MAS QUAL É A UTILIDADE DO QUE
ACABAMOS DE APRENDER?
Vamos começar refletindo sobre como usar esses padrões para representar
números decimais. Cada número receberá um dos 256 padrões diferentes.
Assim, um byte pode representar cada número das 256 combinações.

Número 0 
0

0
0

Número 1 
0

Número 2 
0

Número 3 
0

...

Número 255 
1

Não vamos entrar em mais detalhes sobre como eles são atribuídos, mas cada
número precisa de um padrão e não pode compartilhar seu padrão com outro
número.

OK, EU TENHO 255. POR QUE NÃO 256,


JÁ QUE 8 BITS PODEM REPRESENTAR
256 PADRÕES DIFERENTES?
A razão pela qual não é 256 é que começamos a contar do zero, e não do um.
Então, um byte armazenará números entre zero e 255. Dessa forma, 255 é o
máximo, mas são 256 valores distintos.

Um bom exemplo de como um byte (0-255) é usado na prática é o sistema de


representação de cores em computadores, em que cada um dos componentes
R (Red – vermelho), G (Green – verde) e B (Blue – azul) são representados na
memória do computador através de um byte cada. Ou seja, no padrão RGB,
temos 256 níveis distintos de vermelho, 256 níveis distintos de verde e 256
níveis distintos de azul. Usando este padrão, o computador será capaz de
representar 256x256x256 = 16.777.216 de cores (16.77 milhões de cores).

Achou tudo muito confuso? Não se preocupe, pois, no vídeo a seguir, você
poderá sanar as dúvidas que restaram sobre bit e byte.
Neste vídeo, veremos como os computadores armazenam e representam
dados numéricos.

VERIFICANDO O APRENDIZADO

ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que responda corretamente
a uma das seguintes questões.

O CONTEÚDO AINDA NÃO ACABOU.


Clique aqui e retorne para saber como desbloquear.
VOCÊ CHEGOU AO FINAL DA
EXPERIÊNCIA!
E, com isso, você:

 Reconheceu as unidades de armazenamento de dados.

 Retornar para o início do módulo 3


CONCLUSÃO
Neste tema, você conheceu o hardware, a forma como ele passou a ter sentido
em seu cotidiano com a expansão dos computadores, que, na prática,
representa uma continuidade da história humana na busca de melhorar sua
vida e criar invenções e desenvolvimento tecnológico.

As principais peças que compõem a computação estão em constante


modificação. Percebê-las é entender sua tendência e suas capacidades de
uso, conhecer o fenômeno de expansão e como elas estão diretamente
relacionadas ao hardware, à melhoria do custo e às suas possibilidades de
expansão. Por fim, você foi provocado a entender a constante ampliação das
medidas e da capacidade de desenvolvimento que o hardware pode oferecer
no cotidiano.
PODCAST

AVALIAÇÃO DO TEMA:

REFERÊNCIAS
CARVALHO, A.; LORENA, A. Introdução à Computação: hardware, software
e dados. 1. ed. Rio de Janeiro: LTC, 2017.
DALE, N.; LEWIS J. Ciência da Computação. 4. ed. Rio de Janeiro: LTC,
2011.
FEDELI, R. D.; POLLONI, E. G. F.; PERES, F. E. Introdução à Ciência da
Computação. 2. ed. São Paulo: Cengage, 2010.
FLANAGEN, D. Javascript: o guia definitivo. 6. ed. Porto Alegre: Bookman,
2013.
GLENN, J. Ciência da Computação: uma visão abrangente. 11. ed. Porto
Alegre: Bookman, 2013.

EXPLORE+
Leia a matéria Cluster da Unicamp faz 4,5 trilhões de operações por segundo,
da revista Exame, para conhecer o projeto de um supercomputador.

Pesquise na internet os seguintes artigos:

 Explorando novas tecnologias para o estímulo do pensamento


computacional em alunos do Ensino Médio. 
 Uma experiência do uso do hardware livre Arduino no ensino de
programação de computadores.

 Redimensionamento da computação em processo de ensino na Educação

Básica: o pensamento computacional, o universo e a cultura digital.

CONTEUDISTA
Guilherme Dutra Gonzaga Jaime

CURRÍCULO LATTES
DEFINIÇÃO
Conceitos primordiais sobre a representação de imagens digitais pelo
computador. Reconhecimento da importância de esquemas padronizados para
esse processo. Possibilidade de representação digitalizada de imagens reais.

PROPÓSITO
Compreender a representação de imagens digitais para a construção do saber
de um profissional da sociedade digital.
PREPARAÇÃO
Para realizar este tema, será necessário usar o explorador RGB, a fim de
manipular os controles deslizantes deste código HTML.

OBJETIVOS
MÓDULO 1

Identificar os fundamentos sobre pixels


MÓDULO 2

Reconhecer o esquema Red Green Blue (RGB) de representação de cores


em computadores

INTRODUÇÃO
Para começar, vamos assistir ao vídeo que aborda a evolução histórica da
representação de imagens.
SERIA POSSÍVEL ABRIR MÃO DO
COMPUTADOR NO MUNDO ATUAL?

O QUE PODE SER ELEMENTO DE AFINIDADE


TAMBÉM PODE RESULTAR EM ASPECTO DE
SEGREGAÇÃO.

As duas últimas gerações – as primeiras que tiveram computação na escola –


aprendiam que esta era uma nova disciplina.

Com o tempo, passou-se a contestar cada vez mais a utilidade das “aulas” de
informática. Seria necessário que a computação estivesse, como no resto do
mundo, inserida no contexto das práticas diversas.

ASSIM, O COMPUTADOR PASSOU A SER PARTE


INTEGRANTE DAS RELAÇÕES DE ENSINO E
APRENDIZAGEM.
Como formamos para este mundo?

Como podemos lidar com uma tecnologia que será constantemente superada,
reinaugurada?

Como fazemos para nos livrar da terrível sensação de estarmos obsoletos?

SÓ HÁ UM JEITO!
Inteirarmo-nos deste mundo, compreender como ele funciona,
desmitificar o entendimento de que isso é tarefa dos iniciados.
Neste tema, você será convidado a se atrever, a tentar, a compreender em um
nível mais avançado, para que possa ser um usuário mais competente e
entender a dinâmica de abstração na construção dos programas.
Para tal, escolhemos, como os seres humanos, há milênios, a primeira forma
de tentar entender o mundo: construir e representar suas imagens. Se já o
fizemos nas cavernas, com muito menos recursos, não serão algumas
máquinas que vão nos intimidar.

Boa reflexão!

ABSTRAÇÃO
Capacidade de desconsiderar características naturais ou orgânicas do mundo
real – temporais, espaciais e físicas – e concentrar a atenção nos atributos de
maior importância, para que a solução alcançada seja tratável por
computadores.

Identificar os fundamentos sobre pixels

FUNDAMENTOS SOBRE PIXELS


Neste módulo, aprenderemos como imagens são representadas em
computadores, ou seja, estudaremos as imagens digitais.

Observe o exemplo a seguir, com um lindo pássaro, em que vemos as cores


amarelo, roxo, azul, verde, preto e um fundo branco:
Fonte: Shutterstock

Figura 1: Exemplo de imagem digital

Você certamente observou como esta imagem é natural e arredondada. Temos


a nítida impressão de que estamos olhando para um pássaro de verdade.

Na parte interna do computador, entretanto, essa imagem, e qualquer outra,


resume-se a uma grande quantidade de números pequenos.

LEMBRE-SE: COMPUTADORES SÃO CAPAZES DE


LIDAR SOMENTE COM NÚMEROS. ENTÃO, COMO É
QUE ISSO FUNCIONA?
O primeiro passo para compreendermos as imagens digitais, ou seja, como o
computador representa uma imagem por meio de um conjunto de
números pequenos, é darmos um bom “zoom” na imagem da figura 1 para
observarmos mais detalhes. Veja:
Fonte: Shutterstock

Figura 2: Zoom no início do colar azul do pássaro

Na figura 2, você pode observar que há uma área azul no meio, uma parte
maior em preto à esquerda e uma parte branca à direita.

VOCÊ TAMBÉM PODE CONSTATAR QUE A IMAGEM


É FORMADA POR PEQUENOS QUADRADOS, CADA
UM DE UMA COR DIFERENTE. ELES SÃO O QUE
CHAMAMOS DE PIXELS. ENTÃO, CADA PIXEL É UM
QUADRADO.

Quando olhamos para uma imagem digital como um todo, sequer percebemos
que ela é formada por esses pequenos quadrados. Isso ocorre porque os pixels
são tão pequenos que geram uma ilusão de ótica, assemelhando-se a uma
imagem natural e arredondada.
Fonte: Shutterstock

Realmente, só conseguimos notar que imagens são formadas por pixels


quando usamos o recurso de zoom (figura 2).

ANTES DE PROSSEGUIRMOS, FAREMOS


UMA BREVE PROVOCAÇÃO.

VOCÊ CONHECE ALGUM OUTRO EXEMPLO, FORA DO MUNDO DOS

COMPUTADORES, EM QUE PONTOS (PIXELS) TAMBÉM SÃO USADOS PARA

REPRESENTAR IMAGENS?

A ideia básica por trás de imagens digitais é praticamente a mesma usada


pelas nossas avós quando costuravam lindos bordados ponto de cruz.
Nesses bordados, as imagens também são formadas por um conjunto de
pequenos “x” (pontos de cruz), cada um de uma cor. Os pontos de cruz são
os pixels dos lindos bordados das nossas avós.

Fonte: thriftyfun

Figura 3: Bordado ponto de cruz

Por exemplo, se a mesma imagem do pássaro na figura 1 for representada por


apenas 1.600 pixels, ficará conforme mostra a figura 4:

Fonte: Shutterstock

Figura 4: Mesmo pássaro da figura 1 com número total de pixels reduzido


para 1.600
Não há um número-esquema para o número de pixels contidos em uma
imagem. O fato é que quanto mais pixels houver em uma imagem, mais
próxima ela será da realidade.
AS CARACTERÍSTICAS FUNDAMENTAIS DE
QUALQUER IMAGEM DIGITAL SÃO:

ELAS SÃO FORMADAS POR PIXELS.

PIXELS SÃO QUADRADOS.

UM PIXEL SÓ PODE ASSUMIR UMA COR POR


VEZ. VOCÊ NÃO PODE, EM UM MESMO
INSTANTE, REPRESENTAR MAIS DE UMA
COR EM UM PIXEL.

Se você quiser analisar a quantidade de pixels em uma imagem, basta checar


quantos formam sua largura (colunas) e quantos formam sua altura (linhas).
Então, o número total de pixels é apenas uma questão de multiplicação.
SE HOUVER UMA IMAGEM COM 800 PIXELS DE
LARGURA POR 600 DE ALTURA, O TOTAL DE
PIXELS SERÁ: 800 X 600 = 480.000.

Fonte: Shutterstock

A imagem do pássaro apresentada na figura 1 é formada por 3.892 pixels de


largura (colunas) e 3.328 pixels de altura (linhas): 3.892 x 3.328. Aquele lindo
pássaro foi representado pelo uso de 12.952.576 pixels, ou seja, quase 13
milhões. Agora, fica fácil entender por que a imagem nos parece tão natural.

VOCÊ, PROVAVELMENTE, JÁ DEVE TER OUVIDO O


TERMO MEGAPIXEL.

Ele é usado para se referir a 1.000.000 (um milhão) de pixels. Então, o


exemplo da figura 1 possui praticamente 13 megapixels.
Fonte: Shutterstock

Telefones celulares, hoje em dia, são capazes de capturar imagens com


resoluções de 5, 10, 12, 16, 20 e até 100 megapixels. Com o passar dos anos,
as câmeras digitais se tornaram capazes de capturar cada vez mais
megapixels.

GRADE DE PIXEL
NOTAMOS QUE UMA IMAGEM DIGITAL É
REPRESENTADA PELO COMPUTADOR COMO UMA
GRADE DE PIXELS.

Cada pixel é um quadrado que só é capaz de assumir uma cor por vez. Além
disso, é necessário que haja um esquema de endereçamento para identificar
cada pixel na composição da imagem.

Nos computadores, foi padronizado o uso de um conjunto de números para


representar a coluna em que o pixel se encontra, onde 0 (zero) corresponde à
primeira coluna, 1 (um) corresponde à segunda, e assim por diante.

Temos o conjunto de valores do eixo y, onde 0 (zero) representa a primeira


linha (topo), 1 (um) representa a segunda, 2 (dois) representa a terceira
etc. Historicamente, é assim que os pixels de uma imagem são
enumerados pelo computador.

Fonte: Shutterstock

Tabela 1: Imagem digital representada em um computador

No exemplo da tabela 1, podemos ver três pixels indicados por setas. O pixel
(5,0), em azul, o pixel (1,1), em branco, e o pixel (2,4), em amarelo. É bem
comum dizer que esses valores são as coordenadas de um pixel, algo como o
endereço da posição do pixel em referência ao canto superior esquerdo.

Para reforçar o que você aprendeu até aqui, vamos ver mais detalhadamente
como as imagens digitais são representadas.

MESMO QUE UMA IMAGEM TENHA


100.000.000 PIXELS, QUALQUER PIXEL EM
PARTICULAR TEM UM NÚMERO X,Y QUE O
IDENTIFICA UNICAMENTE EM RELAÇÃO A
TODOS OS DEMAIS DA IMAGEM.

VERIFICANDO O APRENDIZADO
1. CONSIDERE A GRADE DE PIXELS A SEGUIR:

QUAL SERIA A COORDENADA DO PIXEL EM VERMELHO?

(3,4)
(4,3)

(2,3)

(3,2)

2. CONSIDERE AS REPRESENTAÇÕES DE IMAGENS A


SEGUIR:

ASSINALE A ALTERNATIVA QUE INDICA A IMAGEM COM O


SEGUNDO MENOR NÚMERO DE PIXELS:

GABARITO

1. Considere a grade de pixels a seguir:


Qual seria a coordenada do pixel em vermelho?
A alternativa "C " está correta.

Conforme observamos na imagem a seguir, o pixel em vermelho está na


coluna 2, linha 3:
Portanto, conforme esquema internacionalmente convencionado para
endereçamento de pixels, a coordenada para este pixel é (2,3).
2. Considere as representações de imagens a seguir:

Assinale a alternativa que indica a imagem com o segundo menor número


de pixels:
A alternativa "B " está correta.
Como você já sabe, quanto menor o número de pixels em uma imagem digital,
pior será nossa percepção sobre a qualidade da imagem, uma vez que usamos
menos pontos para representá-la. Partindo desse raciocínio e observando as
imagens apresentadas, notamos que a imagem X é a que nos dá a impressão
de pior qualidade, seguida pela imagem Y.

Reconhecer o esquema Red Green Blue (RGB) de representação de cores em


computadores

REPRESENTAÇÃO DE CORES EM
COMPUTADORES
Agora que sabemos como os computadores identificam pixels de uma imagem,
vamos descobrir como representam a cor de cada um deles.
Para entendermos como isso é feito, precisaremos recordar o lendário
físico Isaac Newton e seu experimento com o prisma de cores, que hoje
chamamos de prisma de Newton, ilustrado na figura.
ISAAC NEWTON (1643-1727)
Físico, astrônomo e matemático inglês, cujos trabalhos sobre a formulação das
três leis do movimento o levaram à Lei da Gravitação Universal. Além disso,
seus experimentos sobre a composição da luz branca o conduziram à moderna
Física Óptica. Na Matemática, lançou os fundamentos do cálculo infinitesimal.

Fonte: FRAZÃO, 2020.

Fonte: vignette.wikia
Figura 5: Prisma de Newton

Newton bolou e realizou este famoso experimento com um prisma, que é


apenas um pedaço triangular de vidro.

Conforme ilustrado na figura 5, a luz solar branca vem da esquerda, e o prisma


de vidro transparente divide este fecho de luz em um espectro de cores, que
está projetado na cadeira (o ideal é uma superfície branca), revelando que a
luz branca não é algo puro e indivisível.

Em vez disso, a luz branca pode ser separada em um espectro de cores


constituintes. Essas são justamente as cores que você vê em um arco-íris.
Portanto, as cores estão realmente em um espectro contínuo, conforme
ilustrado na figura 6.

Fonte: Shutterstock

Figura 6: O prisma de Newton dividia a luz branca em um espectro


contínuo de cores
Uma forma de representar cores é pensar em cores puras como uma
espécie de paleta. Um esquema mundialmente aceito é o uso as cores
puras vermelho, verde e azul.

Fonte: Shutterstock

VOCÊ CONSEGUE IDENTIFICAR ESSAS CORES NA


FIGURA 6?

Costuma-se utilizar essas três cores puras como constituintes para representar
qualquer outra cor que desejarmos.

Enquanto Newton usou um prisma para dividir a cor branca em um espectro


contínuo de cores que a constituem (exemplo: arco-íris), desejamos usar cores
constituintes e combiná-las para obter outras cores, e até mesmo a luz branca.

CURIOSIDADE
Por trás deste “experimento de Newton ao contrário”, os pressupostos de
Física não são exatamente os mesmos que Newton observou no experimento
com o prisma de vidro. Contudo, é uma forma intuitiva de pensar como o
computador usa cores constituintes e as combina para gerar qualquer outra
cor.

Se o espectro de cores é contínuo, ou seja, possui infinitas cores, por que só


damos nomes às sete cores do arco-íris?

Newton era adepto de convicções místicas, aquilo que acreditamos não ser
científico, e, na época, havia sete planetas conhecidos. Então, Newton pensou
que fazia sentido nomear sete cores conforme o número de planetas
conhecidos. É como se ele tivesse forçado o nome Anil/Índigo para uma cor
que poderia ser o azul apenas para potencializar o seu misticismo.

Fonte: Shutterstock

Agora, vamos estudar o esquema de codificação de cores específico chamado


de Red Green Blue (RGB) ou Vermelho, Verde e Azul. Desejamos que este
esquema seja simples o suficiente para que nos tornemos capazes de instruir
(codificar ou programar) computadores a representar qualquer cor como uma
combinação dessas três.

Se olharmos para a grade de pixels da tabela 1, precisaremos refletir sobre o


que cada cor representa dentro da grade. No esquema RGB, vamos usar luzes
vermelhas, verdes e azuis puras, e misturá-las em diferentes combinações
para alcançarmos todas as cores possíveis.

Fonte: Shutterstock

Tabela 1: Imagem digital representada em um computador


VAMOS DESCREVER O FUNCIONAMENTO
DO EXPLORADOR RGB, QUE É BEM SIMPLES.
Fonte: Shutterstock

Há três controles deslizantes. Cada um serve para ajustar as intensidades de


verde, de azul e de vermelho.

Se você escolher o valor 0 (zero) para o azul, significa que está ajustando o
“pixel grande” do centro para que não tenha absolutamente nenhuma
intensidade de azul.

À medida que você desliza o controle para a direita, vai aumentando a


intensidade de luz azul para 1, 2, 3... até chegar ao nível 255, que representa o
máximo de intensidade de luz azul que sua tela é capaz de emitir. O mesmo
vale para o vermelho e para o verde.

SAIBA MAIS
Para saber mais sobre o assunto, pesquise na internet a Tabela de Códigos
RGB.

TEORIA NA PRÁTICA
COMO JÁ MENCIONAMOS, A BASE DE NOSSA
PRÁTICA SERÁ O EXPLORADOR RGB.

Para deixá-la mais interessante, vamos enumerar, logo abaixo dos controles
deslizantes, a intensidade que você vai escolher para cada uma das três cores.
Você perceberá essa enumeração assim:   R:   G:   B:

Vamos, então, manipular o explorador RGB:

EXPLORADOR RGB
  Sem cor →→ Escuro →→ Mais claro →→ Saturação

Vermelho (R - Red): R:0 G:0 B:0

Verde (G - Green):  Mostrar Hexadecimal    #000000

Azul (B - Blue):

1. Observe que, na situação inicial, todos os controles deslizantes estão


totalmente para a esquerda, ou seja, 0 (zero) de intensidade para as luzes
vermelha, verde a azul. Com a ausência total de cores, o “pixel grande” à
direita está preto. Note que os valores R (vermelho), G (verde) e B (azul) para
a cor preta são (0,0,0).

2. Se você escolher o valor 0 (zero) para o vermelho, estará ajustando o “pixel


grande” do centro para que não tenha absolutamente qualquer intensidade de
vermelho.

À medida que você desliza o controle para a direita, vai aumentando a


intensidade de luz vermelha para 1, 2, 3... até chegar ao nível 255, que
representa o máximo de intensidade que sua tela é capaz de emitir.
a) Neste ponto, anote em um papel o código RGB que representa o vermelho
puro em sua maior intensidade.

b) Agora, retorne o controle do vermelho para a posição 0 (zero). O “pixel


grande” voltou a ficar preto, certo?

3. Faça o mesmo para o controle do verde: deslize-o lentamente para a direita.


Observe que o “pixel grande” vai ganhando intensidade até a máxima de verde,
que é 255.

a) Neste ponto, anote em um papel o código RGB que representa o verde puro
em sua maior intensidade.

b) Agora, retorne o controle do verde para a posição 0 (zero). O “pixel grande”


voltou a ficar preto, certo?

4. Por fim, faça o mesmo para o controle do azul.

a) Neste ponto, anote em um papel o código RGB que representa o azul puro
em sua maior intensidade.

b) Agora, retorne o controle do azul para a posição 0 (zero). O “pixel grande”


voltou a ficar preto, certo?

5. O que acontecerá se você deslizar os três controles RGB até a posição 50, e
o código RGB resultante for (50,50,50)?

a) O pixel resultante possui uma tonalidade cinza bem escura.

b) À esquerda do cinza-escuro, há um retângulo vermelho na vertical que


indica quanto de vermelho foi aplicado para obter o cinza do nosso “pixel
grande”.

c) Abaixo do pixel cinza-escuro, há um retângulo na horizontal que indica


quanto de verde foi aplicado no “pixel grande” para obter a tonalidade cinza-
escura.
d) À direita do “pixel grande”, há um retângulo azul na vertical que indica
quanto de azul foi aplicado para obter o tom cinza-escuro resultante.

6. Agora, deslize os controles para a direita, a fim de obter o código RGB


(100,100,100). A situação é análoga ao experimento 5 anterior. Você alcançará
uma tonalidade de cinza que, agora, estará bem mais clara. Observe que os
componentes constituintes vermelho, verde e azul estão mais saturados. Foi a
combinação dos três que gerou este cinza mais claro.

7. Chegou a hora de experimentarmos uma situação bastante interessante:


mover os controles R, G e B totalmente para a direita e obter o código RGB
(255,255,255).

a) Ao realizar este experimento, você notará que a cor resultante é branca!

b) Vamos unir este resultado ao que observamos nos experimentos 5 e 6 para


tentar fazer uma breve reflexão sobre a chama escala de cinza. Segundo o
esquema RGB, essa escala é alcançada por meio de códigos RGB, nos quais
temos o mesmo valor numérico para a intensidade dos constituintes de cores
azul, verde e vermelho.

c) RGB (0,0,0) resulta em preto, RGB (255,255,255) resulta em branco, valores


intermediários entre 0 e 255 representam diferentes tonalidades de cinza.
Quanto menores os valores, mais escura será a tonalidade de cinza, e quanto
maiores, mais clara ela será.

8. Para este experimento, você vai manter o controle verde sempre em 0


(zero). Manipularemos apenas os controles azul e vermelho, ambos até o 255,
para obtermos o código RGB (255,0,255). Observe que alcançamos um roxo
bem saturado.

9. Para este experimento, você vai manter o controle azul sempre em zero.
Manipularemos apenas os controles vermelho e verde, ambos até o 255, para
obtermos o código RGB (255,255,0). Observe que alcançamos um amarelo
bem saturado.
10. Para este experimento, você vai manter o controle azul sempre em 0 (zero).
Manipularemos apenas os controles vermelho e verde, ambos até o 125, para
obtermos o código RGB (125,125,0). Observe que alcançamos um amarelo
mais escuro.

11. Para este experimento, você vai manter o controle vermelho sempre em
zero. Manipularemos apenas os controles azul e verde, ambos até o 255, para
obtermos o código RGB (0,255,255). Observe que alcançamos um turquesa.

APLICAÇÃO NO DIAGRAMA
Fique à vontade para experimentar a ferramenta RGB até que estes conceitos
lhe pareçam naturais e intuitivos. Quando isso ocorrer, seu cérebro estará
pensando de forma bem mais próxima ao computador.

Fique tranquilo, pois não esperamos que você saiba de cor os três números
RGB para qualquer cor em particular. O importante é que você compreenda
que existe esse esquema básico para representar qualquer cor manipulando
apenas três cores constituintes básicas: vermelho, verde e azul.

Já sabemos com mais detalhes como os computadores usam o esquema RGB


para representar qualquer cor em um pixel. Agora, podemos refinar o diagrama
que vimos na tabela 1 e apresentar a tabela 2, onde, além da posição de cada
pixel, também representamos suas cores:

Tabela 2: Imagem digital representada em um computador, incluindo a cor


de cada pixel

Essencialmente, cada um desses pixels tem seus próprios três números, que
formam o código RGB de cores. Como já vimos, cada pixel possui uma única
cor por vez. Toda a informação necessária para representar a cor de um pixel
está nesses três números.

PENSAMENTO COMPUTACIONAL
Como humanos, estamos naturalmente acostumados a ver o
mundo, pensar e refletir a respeito dele sob a ótica de tudo o que é natural e
orgânico.

Fonte: Shutterstock

Você lembra da figura 1, onde viu a imagem de um lindo pássaro? Primeiro,


supomos que essa imagem fosse do mundo real e orgânico.

Depois, fomos gradativamente reduzindo o desafio de representar uma imagem


do mundo real em computador. A partir desse momento, passamos a empregar
a grade de valores da tabela 2 como um esquema cujos números representam
digitalmente qualquer imagem que possamos imaginar.

Fonte: Shutterstock

Tabela 2: Imagem digital representada em um computador, incluindo a cor


de cada pixel
Fonte: Shutterstock

Quando temos um arquivo de computador que armazena uma imagem, na


prática, o que está dentro desse arquivo são os dados de cada pixel, ou seja,
números para a posição x,y do pixel na tela, e números (RGB) usados para
indicar qual é a cor do pixel.

Fonte: Shutterstock

E se pensarmos em um processamento nos dados?

Por exemplo, se quiséssemos tirar uma foto e, talvez, torná-la um pouco mais
clara? No computador, vamos traduzir isso em alguma operação com números.

Agora que já estudamos a representação de imagens digitais, é fácil imaginar o


que precisaríamos fazer. Por exemplo, poderíamos pegar cada pixel da referida
imagem e aumentar os valores RGB em, digamos, 15%. Pronto! Geraríamos
uma imagem mais clara!
TUDO ISSO RESUME O QUE CHAMAMOS DE
PENSAMENTO COMPUTACIONAL.

VERIFICANDO O APRENDIZADO
USE O EXPLORADOR RGB. DEPOIS, CLIQUE NO
MENU DO MÓDULO 2, EM VERIFICANDO O
APRENDIZADO, PARA RETORNAR ÀS QUESTÕES
DESTE TÓPICO.
1. SUPONHA QUE VOCÊ ESTEJA UTILIZANDO O ESQUEMA
DE CODIFICAÇÃO DE CORES RGB E QUE A IMAGEM VISTA
SEJA A REPRESENTADA A SEGUIR:

AGORA, PROPOMOS O DESAFIO DE FAZER O ESQUEMA


RGB APRESENTAR ESTA IMAGEM:
2. MANIPULE O EXPLORADOR RGB E UTILIZE OS
CONTROLES DESLIZANTES PARA AJUSTAR O CÓDIGO DE
COR DO “PIXEL GRANDE” PARA (255,100,0). QUAL FOI A
COR RESULTANTE NO “PIXEL GRANDE”?

Azul-celeste

Amarelo

Verde-limão
Laranja

GABARITO

1. Suponha que você esteja utilizando o esquema de codificação de cores


RGB e que a imagem vista seja a representada a seguir:

Agora, propomos o desafio de fazer o esquema RGB apresentar esta


imagem:

A alternativa "A " está correta.


Para conseguirmos como resultante a cor branca no esquema RGB, é
necessário mover os controles R, G e B totalmente para a direita, a fim de
obtermos o código RGB (255,255,255). Isso representa a máxima intensidade
para as luzes vermelho, verde e azul.

2. Manipule o explorador RGB e utilize os controles deslizantes para


ajustar o código de cor do “pixel grande” para (255,100,0). Qual foi a cor
resultante no “pixel grande”?

A alternativa "D " está correta.

Conforme a tabela de cores RGB, você obterá a cor laranja ao configurar o


pixel com o código vermelho: 255, verde: 100 e azul: 0. Na prática, significa
que, para obter a cor laranja desta atividade, usamos uma combinação da
saturação máxima de vermelho com mais ou menos 50% de saturação de
verde. O azul ficou desativado, pois o configuramos para 0 (zero).

CONCLUSÃO
Com este estudo, você compreendeu como o computador é capaz de
representar digitalmente por meio de números uma imagem do mundo real ou
orgânico.

Este é um exemplo típico de uma habilidade chamada abstração – processo


bastante comum em Computação. Você começa com uma imagem inteira,
sons inteiros, ou algo orgânico ou natural do mundo real que gostaria de
representar, armazenar ou processar com computadores.
Outras habilidades importantes nesse contexto são detectar padrões e
escrever soluções, de forma que os computadores sejam capazes de executá-
las. Estes são os pilares que formam o pensamento computacional.

Em todas as pesquisas recentes de mercado e trabalho, o pensamento


computacional tem sido apontado como uma das competências mais
demandadas para os profissionais da era digital. Portanto, esperamos que você
perceba a importância de desenvolvê-lo.

AVALIAÇÃO DO TEMA:
REFERÊNCIAS
CARVALHO, A.; LORENA, A. Introdução à Computação: hardware, software
e Dados. 1. ed. Rio de Janeiro: LTC, 2017.
DALE, N.; LEWIS, J. Ciência da Computação. 4. ed. Rio de Janeiro: LTC,
2011.
FEDELI, R. D.; POLLONI, E. G. F.; PERES, F. E. Introdução à Ciência da
Computação. 2. ed. São Paulo: Cengage, 2010.
FLANAGEN, D. Javascript: o guia definitivo. 6. ed. Porto Alegre: Bookman,
2013.
FRAZÃO, D. Isaac Newton - cientista inglês. [S. l.]: eBiografia, 2020.
GLENN, J. Ciência da Computação: uma visão abrangente. 11. ed. Porto
Alegre: Bookman, 2013.
EXPLORE+
Pesquise no YouTube o canal Nerdologia e assista ao vídeo: O computador
ou o cérebro – quem é o mais potente? (2016), com o biólogo e pesquisador
Atila Iamarino.

Observe que mesmo tecnologias de ponta usam basicamente as mesmas


ideias, noções e habilidades abordadas neste tema.

CONTEUDISTA
Guilherme Dutra Gonzaga Jaime

CURRÍCULO LATTES

DEFINIÇÃO
Conceito de códigos. Combinação de códigos e instruções para computadores.
Representação digital de imagens: noções básicas.

PROPÓSITO
Exercitar importantes habilidades do pensamento computacional, como
abstração, automação, reconhecimento de padrões, análise e avaliação, com
vistas à compreensão do significado da programação.

PREPARAÇÃO
Para realizar este tema, será necessário usar alguns códigos-fonte específicos
e o código RGB.
OBJETIVOS
MÓDULO 1
Definir instruções para manipulação simples de dados

MÓDULO 2
Distinguir a estrutura de repetição for
MÓDULO 3
Reconhecer expressões

MÓDULO 4
Distinguir a estrutura condicional if

MÓDULO 1

Definir instruções para manipulação simples de dados

INTRODUÇÃO

VOCÊ JÁ OUVIU FALAR EM


MANIPULAÇÃO SINGULAR DE DADOS?

Neste módulo, vamos aprender a escrever códigos simples de computador


para manipulação singular de dados. Por singular, entenderemos a ausência
de condições de realizar uma manipulação de múltiplos dados de forma
eficiente.
VAMOS COM CALMA! UM PIXEL DE
CADA VEZ...

Para ilustrar melhor nossa discussão, usaremos como exemplo imagens para
aplicação de nossos códigos/instruções. Como são instruções simples de
manipulação de dados, você notará que, nos exemplos, manipularemos
apenas um pixel de cada vez.
INSTRUÇÕES PARA MANIPULAÇÃO
SIMPLES DE DADOS
Para começar, veja a imagem da figura 1, cujo nome é circulo.bmp, composta
por uma grade de 10x10 pixels:

Figura 1: Pequena imagem de 10 pixels de largura por 10 pixels de altura com fundo

branco e círculo preto ao meio.

A IMAGEM POSSUI UM FUNDO BRANCO,


COM UM CÍRCULO DESENHADO. O BMP É UM
FORMATO DE ARQUIVO USADO PARA
ARMAZENAR IMAGENS DIGITAIS.

BMP
– Bitmap image file ou arquivo de imagem bitmap

COMENTÁRIO
Não se preocupe, pois o tamanho da figura 1 não é um erro. A imagem
realmente está muito pequena. Nosso primeiro impulso é realizar uma
ampliação ou zoom para vê-la melhor. Esse é o ímpeto que queríamos
provocar em você quando a colocamos com esse tamanho.
COMO ESCREVER UM CÓDIGO QUE
SOLICITA QUE O COMPUTADOR AMPLIFIQUE
A IMAGEM CIRCULO.BMP?
Para isso, usaremos três instruções que fazem parte do conjunto de funções da
linguagem de programação JavaScript, conforme resumido na tabela 1:

Passo Instrução

1 img = newSimpleImage("circulo.bmp"); Carrega a imagem circulo.bmp na m


2 img.setZoom(20); Estabelece ampliação de 20 vezes

3 print(img); Apresenta a imagem na tela.

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 1: Ampliando e apresentando na tela a imagem circulo.bmp.

Agora que você aprendeu os passos que permitem ao computador amplificar a


imagem circulo.bmp, experimentaremos isso para alcançarmos um nível de
amplificação que nos deixe confortáveis.

Vamos praticar?

MÃO NA MASSA

PRÁTICA 1
À esquerda, temos o Código-Fonte; à direita, a Saída resultante do
processamento das instruções fornecidas. Logo abaixo, o
botão Rodar/Executar, que é a forma como ordenamos ao computador que
executa as instruções fornecidas.
Clique no botão Rodar/Executar e observe o resultado em Saída.

SOLUÇÃO
PERCEBEU A DIFERENÇA?
Note que aparece um círculo de 20x20 pixels, maior do que o apresentado
na figura 1.

FIGURA 1

Figura 1: Pequena imagem de 10 pixels de largura por 10 pixels de altura com fundo

branco e círculo preto ao meio.

Agora altere a instrução setZoom para realizar um zoom de 10 vezes em vez


de 20. Clique em Rodar/Executar e observe o resultado.

SOLUÇÃO
Note que a execução das instruções resulta em um círculo de 10x10 pixels,
agora menor que o anterior.

CONSIDERAÇÕES
Embora bastante simples, as instruções apresentadas na tabela 1 e na prática
que acabamos de realizar tornaram-nos capazes de instruir o computador a
realizar ampliação de imagens digitais ao nosso comando.

DICA
Fique à vontade: pratique e experimente com qualquer valor que deseje para a
instrução setZoom. Não tenha medo de errar!

AGORA VAMOS PARTIR PARA UM SEGUNDO


CENÁRIO UM POUCO MAIS INTERESSANTE.
Queremos estender o código usado na Prática 1 para sermos capazes de
manipular individualmente cada pixel.

Para isso, tudo que precisamos fazer é ajustar os passos da tabela 1 e


adicionar duas novas instruções logo antes da instrução print, conforme ilustra
a tabela 2:
Passo Instrução

img = new
1 Carrega a imagem circulo.bmp na memória e a
SimpleImage("circulo.bmp");

20 vezes o tamanho original para a imagem ar


2 img.setZoom(20);
Por exemplo, um zoom de 0.5 equivale a um a

3 pixel = img.getPixel(4,4) Obtém a referência ao pixel (4,4) da imagem a

4 pixel.setRed(255) Instrui o computador a ajustar para 255 o nível

5 print(image); Apresenta a imagem na tela.

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 2: Modificando um dos pixels de circulo.bmp para que ele fique vermelho.

Essas instruções também fazem parte das funções padronizadas pela


linguagem JavaScript.

ONDE APARECE A PRIMEIRA


INSTRUÇÃO NOVA DA TABELA 2?
RESPOSTA
A primeira instrução nova que vemos nela é a do Passo 3, que instrui o
computador a obter a referência ao pixel (4,4) da imagem armazenada na
variável img e, então, a atribuir essa referência à variável pixel.
RECOMENDAÇÃO
A partir de agora, qualquer operação que fizermos com a variável img será
efetuada sobre o pixel (4,4).

Em seguida, no Passo 4, a instrução pixel.setRed (255) ordena que o


computador ajuste a saturação de vermelho do pixel para o nível 255, que é o
maior valor possível.

PRÁTICA 2
A seguir, assista a uma breve contextualização da Prática 1, seguida do nosso
segundo exemplo prático.

Agora, vamos realizar alguns experimentos simples com o código da tabela 2,


manipulando o código-fonte a seguir para observarmos o que acontece:

Clique no botão Rodar/Executar e observe o resultado em Saída.

SOLUÇÃO

Note que o pixel (4,4), que fica mais ou menos no meio do círculo, ficou
vermelho.

Agora, altere o parâmetro da função getPixel para ( 4, 9 ) e, depois, clique


em Rodar/Executar.
SOLUÇÃO

Observe que, como fornecemos a coordenada de outro pixel (linha 9 em vez de


linha 4), o pixel vermelho ficou mais abaixo.

Experimente, também, com diferentes valores para o parâmetro da


função setRed.

SOLUÇÃO

Observe que, quanto menor o valor da saturação vermelha do pixel, mais


escuro será o vermelho apresentado no pixel em questão.

CONSIDERAÇÕES
Fique à vontade para experimentar com a Prática 2. Você pode escolher
qualquer valor entre 0 e 9 para as coordenadas do pixel (lembre-se: é uma
imagem de 10 pixels por 10 pixels) e qualquer valor entre 0 e 255 para o nível
de saturação vermelho do pixel (conforme o esquema de cores RGB).
Assim como a função setRed() ajusta o nível de vermelho para o pixel, temos
duas outras funções análogas para manipular os níveis de azul e de verde de
um pixel. A tabela 3 apresenta as três funções possíveis para essa
manipulação:

ESQUEMA DE CORES RGB


Esquema de codificação de cores, chamado RGB (Red, Blue, Green/Vermelho,
Azul, Verde). Trata-se de um esquema simples que permite que possamos
instruir (programar) o computador para representar qualquer uma das 16.7
milhões de cores formadas com a combinação dessas três.

Passo Instrução

1 pixel.setRed(número) Ajusta o nível de vermelho do pixel conform

2 pixel.setGreen(número) Ajusta o nível de verde do pixel conforme o

3 pixel.setBlue(número) Ajusta o nível de azul do pixel conforme o n

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 3: Três funções disponíveis para manipulações de cores de um pixel.

PRÁTICA 3
Vamos realizar alguns experimentos simples com o código da tabela 3,
manipulando o código-fonte a seguir para observar o que acontece:
Durante essa prática observe com atenção a proposição em português feita no
enunciado, em que o efeito desejado é descrito.

Depois, tente refletir:

QUAL É O CÓDIGO DE COMPUTADOR QUE


VOCÊ DEVE ESCREVER, OU SEJA, AS
INSTRUÇÕES E OS VALORES DIGITADOS NO
CÓDIGO-FONTE PARA ALCANÇAR O EFEITO
PROPOSTO?
Na prática, você aprenderá a traduzir:

Do português

Para a linguagem do computador

O código fornecido ajusta o pixel (4,0) para vermelho. Ajuste o código para que
o pixel (4,0) fique verde.

SOLUÇÃO

Manipule o pixel (4,0) para que fique amarelo.

SOLUÇÃO
Aqui, o pixel (4,0) estava originalmente preto, ou seja, código RGB (0,0,0).
Como sabemos que o amarelo é a combinação de verde e vermelho, a solução
é bem simples: basta adicionar o nível máximo (255) dessas cores
constituintes, conforme o código a seguir:

Manipule o pixel (5,0) para que fique amarelo.

SOLUÇÃO
A solução aqui é muito simples: basta alterar o código da solução anterior para
que a instrução getPixel( 4,0 ) passe a ser getPixel( 5,0 ).

TEORIA NA PRÁTICA
Suponha que, em vez de manipular apenas um pixel por vez, conforme fizemos
neste módulo, desejássemos manipular todos os pixels de uma imagem,
digamos de 10x10 pixels (exemplo: circulo.bmp).
Se usássemos o código que aprendemos a escrever neste módulo, teríamos
de escrever 100 vezes a instrução pixel = img.getPixel(), em que, a cada vez,
passaríamos os valores x,y para cada um dos pixels da imagem.

Isso traz vários problemas.

1. O primeiro deles é que o código ficaria difícil de ler/compreender.

2. O segundo é que, se for uma imagem maior, de 1980x1024 pixels, teríamos

cerca de 2 milhões de pixels.

Portanto, a instrução pixel = img.getPixel() teria de ser escrita cerca de 2


milhões de vezes no código fonte, a cada vez fazendo referência para um pixel
diferente.
ISSO SERIA INVIÁVEL, NÃO É MESMO?
No mundo real, quase sempre desejamos realizar operações com uma
quantidade muito grande de dados. Os engenheiros e cientistas de
computação pensaram nesta questão décadas atrás.

Felizmente, há técnicas de programação/codificação que nos permitem


manipular uma quantidade arbitrária de dados, sem ter de escrever
muitos códigos de computador.

VERIFICANDO O APRENDIZADO
1. CONSIDERE A IMAGEM A SEGUIR, CHAMADA
“CIRCULO.BMP”:
QUAL É O CÓDIGO DE COMPUTADOR NECESSÁRIO PARA
MANIPULAR O PIXEL DO CANTO SUPERIOR ESQUERDO
PARA QUE FIQUE VERMELHO?
2. CONSIDERANDO OS EXPERIMENTOS REALIZADOS NA
PRÁTICA 1, QUAL SERIA O CÓDIGO PARA QUE O
RESULTADO DO ZOOM FOSSE UM AFASTAMENTO DE 2 X
EM VEZ DE UMA APROXIMAÇÃO DE 2X?

MÓDULO 2

Descrever a estrutura de repetição for

INTRODUÇÃO
Estruturas de repetição são extremamente importantes, pois representam um
grande aumento no poder de quem escreve códigos de computador em
comparação com códigos, que são capazes de manipular dados singulares.

Neste módulo, veremos os princípios dessas estruturas.

ESTRUTURA DE REPETIÇÃO FOR
Observe a imagem de um pássaro apresentado na figura 2:
Figura 2: Imagem

com 584 pixels de largura e 500 pixels de altura representando um pássaro.

Se multiplicarmos o número de pixels de largura pelo número de pixels de


altura, teremos o total de pixel da imagem.

Neste caso:

584X500 = 292.000 PIXELS OU QUASE 0.3


MEGAPIXELS.
Essa nem é uma imagem muito grande, dado que os telefones celulares atuais
são capazes de tirar fotografias de mais de 10 milhões de pixels (10
megapixels).

Mesmo assim, se o autor de um código de computador, sem usar estruturas de


repetição, tentar escrever um código de computador para manipular cada um
dos pixels da imagem da figura 2, precisará repetir 292 mil vezes as instruções
que apontam para determinado pixel (exemplo: pixel = img.getPixel( x,y )),
cada uma delas seguidas com as instruções de manipulação desejada
(exemplo: pixel.setRed(255)).
Claramente, isso não é uma maneira prática de realizar uma operação com
grande quantidade de dados. As desvantagens vão desde um código de
computador difícil de ler, por ser muito extenso, até a dificuldade de
manutenção, atualização ou correção do código, caso haja necessidade futura.

ENTÃO, O QUE QUEREMOS É UMA CONSTRUÇÃO


NA QUAL POSSAMOS ESCREVER ALGUMAS
POUCAS LINHAS DE CÓDIGO QUE CAPTURAM
CERTAS MUDANÇAS DESEJADAS.
Depois, deixamos o computador executar essas linhas de código
repetidamente, uma vez para cada dado que desejamos manipular, ou seja, em
nosso exemplo, uma vez para cada pixel da imagem.

Existem diferentes maneiras de realizar isso em códigos de computador, mas,


por motivos de simplicidade, vamos estudar a estrutura de repetição for,
também chamada de loop for.
REPETIÇÃO FOR = LOOP FOR
Analise a sintaxe da estrutura de repetição for apresentada na figura 3:

Figura 3: Sintaxe da estrutura de repetição for destacada em negrito.

A linha de código for ( pixel: img ), traduzida de código de computador para


português, significa:
PARA CADA PIXEL DA IMAGEM ARMAZENADA NA
VARIÁVEL IMG, REPITA UMA A UMA TODAS AS
INSTRUÇÕES CERCADAS POR ABRE CHAVES “{“ E
FECHA CHAVES “}” LOGO A SEGUIR.
No exemplo da figura 3, temos três instruções destacadas em cinza dentro da
estrutura for. Nesse caso, estas serão as instruções repetidas para cada um
dos 292 mil pixels da imagem “pássaro.jpg”.
ATENÇÃO
Toda a sintaxe apresentada na figura 3 é requerida para que o computador
entenda que se trata de uma estrutura for e quais são as instruções a serem
repetidas.

Na prática, o que o computador fará para o código da figura 3 é fixar-se no


primeiro pixel da imagem, (0,0), no canto superior esquerdo, e executar os três
comandos que ajustam o nível das cores constituintes vermelho, verde e azul
todas para 0. Este pixel, então, ficará preto.

1
Observe a seta azul que liga o “}”, no final do loop for, no início da estrutura de
repetição. Quando o computador percebe que está na linha de instrução que
fecha a estrutura de repetição, acontece isso, conforme indicado pela seta azul:
o computador volta novamente para o início do loop.

Em seguida, o computador se fixará no segundo pixel (1,0) da imagem e


executará os três comandos em cinza, deixando o segundo pixel preto. O
mesmo ocorrerá para o terceiro, o quarto, o quinto e para todos os 292 mil
pixels da imagem do pássaro, até que toda a imagem esteja completamente
preta.
2

3
Você perceberá que as três instruções em cinza que formam o corpo do loop
for estão descoladas para a direita. Isso não é obrigatório para que o
computador compreenda as instruções.

É, no entanto, uma convenção muito comum mostrar que as linhas de dentro


da estrutura de repetição são especiais em relação às demais, porque são
executadas várias vezes, até que a condição estabelecida no início da
estrutura for seja satisfeita.

4
Neste exemplo, a condição para finalizar é que as três instruções sejam
executadas pelo computador para todos os pixels da imagem.

A técnica de recuar a linha de código para deixar claro à pessoa que o estiver
lendo que estas são instruções internas à estrutura de repetição é amplamente
chamada de indentação.
Vamos testar?

INDENTAÇÃO
Neologismo derivado da palavra indentation, em inglês.

MÃO NA MASSA
PRÁTICA 1
Vamos experimentar a estrutura for. Observe o código-fonte à baixo:
Lembre-se de que, ao clicar em Rodar/Executar, o computador realizará os
seguintes passos, conforme instruções:
INSTRUÇÃO 1
INSTRUÇÃO 2
Carregar a imagem “passaro.jpg” e armazená-la na variável img.
Para cada um dos 292 mil pixels da imagem “passaro.jpg”, executar as
instruções indicadas:

 Ajustar intensidade de vermelho do pixel para 0 (zero);

 Ajustar a intensidade de verde do pixel para 0 (zero);

 Ajustar a intensidade de azul do pixel para 0 (zero);

 Imprimir/apresentar a imagem na tela.

Note que o computador as executará para cada um dos 292 mil pixels da
imagem. Então, temos um total de 876 mil operações a serem realizadas pelo
computador.

Ao clicar em Rodar/Executar, tente observar quanto tempo o computador leva


para ajustar/executar as 876 mil instruções necessárias para colorir de preto
cada um dos 292 mil pixels da imagem “passaro.jpg” e, depois, apresentar a
imagem na tela.

SOLUÇÃO
A imagem preta deve aparecer na tela muito rapidamente:
Ao executar a Prática 1, você obteve um retângulo preto, o que não é muito útil.
Entretanto, não deixe de refletir sobre o quão rapidamente o computador foi
capaz de seguir suas instruções para manipular os quase 300 mil pixels da
imagem.

PRÁTICA 2
Vamos seguir assistindo a um vídeo com uma segunda prática.

É HORA DE PRATICAR!
Agora, vamos obter o canal alfa vermelho da imagem do pássaro apresentado
na figura 2 com base neste código-fonte:

a) Execute o código-fonte e observe o canal alfa em vermelho da imagem


apresentada.

SOLUÇÃO
O QUE VOCÊ NOTOU?
MOSTRAR COMPARAÇÃO
Assim como na Prática 1, observe o quão rapidamente o computador foi capaz
de remover os componentes azul e verde da imagem em questão. Lembre-se:
as instruções de dentro da estrutura for foram repetidas 876 mil vezes.

Compare com a imagem original da figura 2, replicada logo a seguir (por


comodidade), com a imagem resultante do item “a”.
Observe, também, que o lindo colar azul do pássaro praticamente desapareceu
na imagem canal alfa vermelho resultante. Isso significa que o colar é
constituído principalmente dos componentes verde e azul.

VOCÊ COMPREENDEU COMO O CANAL ALFA


EM VERMELHO FOI OBTIDO?
b) Para compreender melhor o código que foi executado, observe na
caixa de código-fonte que a instrução pixel.setRed() está comentada, ou
seja, marcada com “//” no início da linha:

COMENTADA
Comentários de códigos são interessantes por duas razões. A primeira é
permitir que o autor do código-fonte documente seu código com frases que
esclarecem o que ele estava pensando quando escreveu aquele trecho. A
segunda é fazer com que o computador ignore uma ou mais instruções.

VOCÊ CONSEGUE ALTERAR O CÓDIGO-


FONTE PARA OBTER OS OUTROS CANAIS?
TENTE!
 Obtenha os canais verde e azul respectivamente.

SOLUÇÃO
TEORIA NA PRÁTICA
AFINAL PARA QUE SERVE A
ESTRUTURA DE REPETIÇÃO FOR?
A estrutura de repetição for é um recurso muito poderoso, que nos
permite escrever algumas poucas linhas de código capazes de ordenar ao
computador que processe/manipule uma enorme quantidade de dados.
Neste módulo usamos exemplos de imagens para demonstrar o enorme
potencial das estruturas de repetição. Este foi apenas um exemplo.

Esteja certo de que essa estrutura é amplamente usada em computação e,


com certeza, faz parte do dia a dia de todos que, de alguma forma, escrevem
códigos para computador.

Por fim, devemos mencionar um detalhe da linguagem usada aqui: JavaScript.


Essa linguagem não possui uma estrutura de repetição for tão compacta e
simples como a que estudamos.

Usamos uma versão com sintaxe propositalmente simplificada, pois nosso


objetivo era compreender os princípios que motivam o uso de estruturas de
repetição. Entendemos que o uso de uma estrutura simplificada ajudaria você a
compreender melhor o que se passa.

COMENTÁRIO
Não queríamos gastar muito tempo fazendo-o compreender detalhes de
sintaxe. Este comentário é importante, pois, se você tentar aproveitar os
códigos de computador que escrevemos neste módulo, provavelmente, terá
problemas devido ao nosso uso simplificado da estrutura de repetição for.

Há outras linguagens de programação que possuem estrutura de repetição


bem simular àquela que usamos aqui, mas não JavaScript.
VERIFICANDO O APRENDIZADO

MÓDULO 3

Reconhecer expressões

INTRODUÇÃO
Neste módulo, estudaremos o uso de expressões em código de computador.

Expressões são construções bastante importantes, pois, em vez de usar


apenas valores simples em instruções, podemos combinar diferentes valores
para calcular o parâmetro mais personalizado.
Isso nos permite escrever códigos de computador que alcançam resultados
mais realistas. Quando apresentarmos exemplos práticos de manipulação de
imagens, você entenderá melhor o assunto.

Usaremos a linguagem de programação JavaScript, com algumas


simplificações para facilitar a compreensão.

EXPRESSÕES
Se analisarmos o código/instrução a seguir, veremos um tipo bem simples de
passagem de valor (51):
print(51);

Essa instrução imprimirá o valor 51 na tela.

Dizemos que 51 é o valor passado como parâmetro para a função print.

As linguagens de programação compreendem códigos que envolvem


expressões, conforme mostra o exemplo a seguir:

EXEMPLO
print(40+11);

Então, o termo 40+11, passado como parâmetro para a função print, é o que


chamamos de expressão.

Basicamente, em vez de um número fixo conhecido antecipadamente,


podemos usar um pouco de expressão aritmética. Assim, temos uma forma
mais rica de fornecer parâmetros para funções.

Isso funciona da seguinte maneira: quando o computador executar a linha de


código que contém a expressão, o primeiro passo será avaliá-la. Assim, ele
lerá e resolverá a expressão para chegar ao valor resultante.

Neste exemplo, 40+11 é apenas uma soma. O computador calcula


que 40+11 é igual a 51. Uma vez que a expressão foi avaliada e o resultado
foi 51, então, o computador continua a execução do código, usando o resultado
da expressão como parâmetro para a função. Com efeito, em nosso exemplo o
computador simplesmente imprimirá o valor 51 na tela.
COMENTÁRIO
De fato, podemos usar expressões em qualquer local do código de
computador, em que valores numéricos são admitidos. Portanto, é possível
sempre embutir expressões aritméticas para que seja computado o valor que
desejamos usar de fato. Isso nos possibilita resolver problemas mais realistas.

Antes de continuar, vamos conhecer três funções de manipulações de pixels


que fazem parte da linguagem de programação JavaScript:
Passo Instrução

1 pixel.getRed() Obtém/Lê o valor atual para o compo

2 pixel.getGreen() Obtém/Lê o valor atual para o compo

3 pixel.getBlue() Obtém/Lê o valor atual para o compo

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 4: Dado um pixel da imagem, como saber qual é o valor atual para os

componentes RGB do pixel?

Suponha um pixel em amarelo (exemplo: Código RGB 255,255,0). Neste caso,


a função pixel.getRed() retornará o valor 255, pois este é o valor atual do
componente vermelho (R) do pixel.
De forma análoga, a função pixel.getBlue() retornaria 0 (zero), pois este é o
valor atual do componente azul (B) do pixel em questão. Isso ocorre porque o
amarelo puro não possui azul em sua composição.

Agora, vamos supor que desejamos duplicar o valor atual do componente


vermelho de um pixel. Se esse valor for 50, ajustaremos para 100. Se for 105,
ajustaremos para 210. Em resumo, desejamos realizar um ajuste relativo no
valor. Então, seja qual for o valor atual, nós o duplicaremos.

Já conhecemos a função pixel.getRed() e a possiblidade do uso de


expressões. Logo, a tarefa ficou mais fácil. Uma primeira solução seria usar
este código:
ultimo = pixel.getRed();
pixel.setRed(ultimo*2);
1ª LINHA
O que a primeira linha faz é chamar pixel.getRed() e armazenar o valor
retornado na variável ultimo.
2ª LINHA
A segunda linha usa a função pixel.setRed() para informar que o novo valor
deste pixel será o dobro do último valor.
Optamos por usar a variável com nome ultimo para representar a ideia de que
o que está armazenado ali é o último valor lido do componente vermelho do
pixel.

Logo, quando começar a executar a segunda linha:

1
O primeiro passo do computador será avaliar qual é o resultado da
expressão ultimo*2. Se imaginarmos que o último valor para o pixel é 60, a
expressão multiplicará esse valor por 2, o que resultará em 120.

Em seguida, o computador executará a função pixel.setRed() com o valor 120


como parâmetro, o que dobrará a intensidade de vermelho do pixel em
questão.

3
Com efeito, o resultado das duas linhas de código é, de fato, duplicar a
intensidade de vermelho do pixel atual.
Agora que entendemos os princípios do uso de expressões em códigos de
computadores, vamos analisar o mesmo exemplo de duplicação do valor atual
da intensidade de vermelho de um pixel, porém com uma solução muito mais
comum no mundo real.

Veja a linha de código a seguir:

pixel.setRed( pixel.getRed()*2 );

Na prática, desejamos mostrar que a solução em questão pode ser


condensada em apenas uma linha de código.

Note que a variável ultimo não tinha um objetivo muito importante no código.


Ela apenas armazenava temporariamente o último valor do componente
vermelho do pixel para que este fosse usado na instrução seguinte.

Vamos supor que o pixel em questão esteja com os valores RGB (50,20,30).
Então, o componente vermelho possui o valor 50. O computador fará o
seguinte:

Executar a instrução pixel.getRed() para obter o valor atual do pixel, que é 50;


Avaliar a expressão pixel.getRed()*2 e resolvê-la, multiplicando o valor atual do
pixel por 2 e obtendo o resultado 100;
Executar a instrução pixel.setRed() usando como parâmetro o resultado da
operação aritmética do Passo 2, ou seja, o valor dobrado para o componente
vermelho do pixel, que é 100.

Com isso, o novo valor RGB para o pixel em questão será: RGB (100,20,30).
Se fizermos o mesmo para todos os pixels de uma imagem, o usuário
perceberá essa alteração como uma imagem com os tons de vermelho mais
destacados.

Se, no mesmo exemplo, desejássemos reduzir pela metade a intensidade de


vermelho do pixel, a linha de código ficaria assim:

pixel.setRed( pixel.getRed()/2 );
Note que, em vez de usarmos o asterisco, que denota multiplicação, utilizamos
o “/”, que denota divisão.

Outra forma de escrever a mesma solução seria multiplicar o pixel atual por
0.5, o que é o mesmo que dividir por 2. Então, nesse caso, teríamos:

pixel.setRed( pixel.getRed()*0.5 );

Para entender melhor o assunto, vamos fazer alguns exercícios.

MÃO NA MASSA

PRÁTICA 1
Vamos ajustar a tonalidade de cores de uma imagem por meio de instruções
simples. Comecemos por esta:

Figura 4: Imagem de flores em amarelo com 587x330 pixels, totalizando quase 194 mil

pixels.
a) Observe a imagem de flores amarelas apresentada na figura 4.
Suponha que desejemos ajustar esta imagem para obtermos tonalidades
mais para o laranja.

Para alcançar o objetivo desta prática, basta reduzir um pouco a intensidade do


componente verde (G) de cada um dos pixels da imagem.

Por exemplo, basta inserirmos a linha de código a seguir dentro da estrutura de


repetição usada para repetir a instrução a todos os pixels da imagem:

pixel.setGreen( pixel.getGreen()*0.7 );

O que essa instrução faz é ajustar a intensidade de verde do pixel em questão


para 70% do valor atual. Esse é o resultado aritmético que você obtém quando
multiplica um valor por 0.7.

Note que o código-fonte fornecido não contém a instrução citada. Apenas


disponibilizamos o “esqueleto” do código contendo a solução:

Se você clicar em Rodar/Executar, o computador apenas apresentará a


imagem original com as flores em amarelo. Isso ocorre porque não há
instruções de ajuste de cores no código-fonte.

Você mesmo deve inserir a instrução que realiza a redução da tonalidade de


verde do pixel. Insira a instrução dentro da estrutura de repetição for logo
abaixo do comentário que indica aposição correta.

Depois, clique em Rodar/Executar para que o computador execute seu código.


Observe o resultado.
Se tiver dúvidas, clique em Solução, mas não deixe de tentar implementar sua
solução no código-fonte fornecido. Basta inserir uma linha de código!
MOSTRAR SOLUÇÃO

Aqui, vemos lindas flores de cor laranja! Experimente reduzir ainda mais o
componente de verde da figura. Observe que, quanto menor o componente de
verde, mais as cores das flores se aproximarão do vermelho.
CONSIDERAÇÕES
Reflita sobre a quantidade de operações realizada em um piscar de olhos pelo
computador, dado o código-fonte que geramos.

Para cada um dos 194 mil pixels da imagem da figura 4, o computador fez as
seguintes operações:

 Obteve a intensidade de verde do pixel;

 Multiplicou a intensidade de verde do pixel por 0.7;

 Ajustou a intensidade de verde do pixel para o resultado dos dois passos

anteriores.

Então, em português, poderíamos descrever o objetivo deste exercício


simplesmente como: tornar a imagem um pouco mais laranja.

Reflita sobre como esse objetivo foi traduzido do português para o código
de computador que usamos ao realizarmos a operação.
A capacidade de fazer essa tradução e escrever uma solução que
computadores são capazes de executar rapidamente é para nós uma
habilidade chave para o chamado pensamento computacional.
b) Voltando à imagem da figura 4, suponha, agora, que desejamos
convertê-la em uma imagem de escala de cinza.
Recorde, na tabela 5, que uma imagem em escala de cinza possui, para cada
pixel, exatamente o mesmo valor para os componentes RGB (vermelho,
verde e azul):

Esquema RGB R - Vermelho

Branco 255
Azul 0

Vermelho 255

Verde 0

Amarelo 255

Magenta 255

Ciano 0

Preto 0

(1,1,1) cinza muito escuro (quase preto)


(2,2,2)
(3,3,3)
(4,4,4)
(5,5,5)
(6,6,6)
Escala de cinza
.
.
.
(252,252,252)
(253,253,253)
(254,254,254) cinza muito claro (quase br

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 5: Escala de cinza do esquema de cores RGB.

Use os controles deslizantes do visualizador RGB para comprovar este


conceito:
  Sem cor →→ Escuro →→ Mais claro →→ Saturação

Vermelho (R - Red): R:0 G:0 B:0

Verde (G - Green):  Mostrar Hexadecimal    #000000

Azul (B - Blue):

Para alcançar o objetivo de converter a imagem de flores amarelas em uma


imagem em escala de cinza, vamos calcular, para cada pixel, o valor médio dos
componentes RGB. Depois, ajustaremos cada um dos três componentes para
esse valor médio.

Veja o trecho de código a seguir, que calcula a média dos três componentes
(R, G e B) para um dado pixel, depois, atribui esse valor médio aos três
componentes de cor do pixel:

soma=(pixel.getGreen()+pixel.getGreen()+pixel.getGreen());
media= soma/3;
pixel.setRed( media );
pixel.setGreen( media );
pixel.setBlue( media );

Copie e cole estas linhas de código no código-fonte de experimento de


programação disponível no início desta prática:

Como desejamos tornar todos os bits da imagem em escala de cinza, você


deverá colar este trecho dentro da estrutura de repetição for. Depois, clique
em Rodar/Executar. Observe o computador executar suas instruções e
transformar a imagem para escala de cinza.

SOLUÇÃO
DICA
Fique à vontade para experimentar com o código-fonte, obter diferentes
resultados e refletir sobre o resultado obtido com as instruções que você
testou. Por exemplo, você pode multiplicar a média por 1.1, 1.5 ou 2 e observar
como a imagem vai ficando mais clara. Não tenha medo de errar!

PRÁTICA 2
Assista ao vídeo com uma segunda prática.

VAMOS DESVENDAR O ENIGMA 5-2-10


ABORDADO NO VÍDEO?
Considere a imagem da figura 5, contendo frutas em seis tons de cores:
Figura 5: Frutas em 6 cores diferentes, com 863 pixels de largura por 535 pixels de

altura, totalizando quase 462 mil pixels.

Esta imagem foi modificada, dividindo, para cada pixel, os valores dos
componentes RGB (vermelho, verde e azul) por 5, 2 ou 10. O resultado é
apresentado na figura 6:
Figura 6: Imagem da figura 5, mas com os componentes RGB manipulados.

Note que a imagem está mais escura, além de ter suas cores distorcidas.

Vamos praticar!

Recupere a imagem (Figura 6) para o lindo padrão de cores da figura 5


original.

Fique à vontade para experimentar com as multiplicações pelos três valores


citados e tente descobrir como retornar para as cores originais, ou seja,
desvendar o enigma!

RECOMENDAÇÃO
Para diminuir o número de combinações que você tentará, tenha em mente
que, quando a imagem foi modificada, os valores 5, 10 e 2 foram usados
apenas uma vez cada.

SOLUÇÃO
COMO VOCÊ SE SAIU?
MOSTRAR SOLUÇÃO

Ao realizar as multiplicações para obter a imagem original de volta, você só


precisa saber qual dos três valores foi usado para cada um dos três
componentes de cores.

A tabela 6 mostra as seis possibilidades para esta combinação:

Possibilidade Tentativa de t

pixel.setRed( pixel.getRed()*5);
1 pixel.setGreen( pixel.getGreen()*10);
pixel.setBlue( pixel.getBlue()*2);

pixel.setRed( pixel.getRed()*5 );
2 pixel.setGreen( pixel.getGreen()*2 );
pixel.setBlue( pixel.getBlue()*10 );

pixel.setRed( pixel.getRed()*2 );
3 pixel.setGreen( pixel.getGreen()*5 );
pixel.setBlue( pixel.getBlue()*10 );
pixel.setRed( pixel.getRed()*2 );
4 pixel.setGreen( pixel.getGreen()*10 );
pixel.setBlue( pixel.getBlue()*5 );

pixel.setRed( pixel.getRed()*10 );
5 pixel.setGreen( pixel.getGreen()*5 );
pixel.setBlue( pixel.getBlue()*2 );

pixel.setRed( pixel.getRed()*10 );
6 pixel.setGreen( pixel.getGreen()*2 );
pixel.setBlue( pixel.getBlue()*5 );

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 6: Possibilidades de combinação dos valores 5, 10 e 2.

Então, o que você precisa fazer é inserir as três instruções no código-fonte,


dentro da estrutura de repetição for, conforme as possibilidades da tabela 6.
Sempre clique em Rodar/Executar para conferir se obteve a imagem original de
volta.

No pior dos casos, você só precisará realizar seis tentativas.

TEORIA NA PRÁTICA
Como você deve ter percebido neste módulo, é muito importante perceber que
estamos o tempo todo falando de comunicação. Claro que, tratando-se da
máquina, não podemos nos comunicar com ela da mesma forma que eu me
comunico com você.

Como você viu, o simples comando “torne a imagem um pouco mais laranja”
não poderia ser realizado apenas com estas palavras. Foi necessário traduzir
essa mensagem para código de computador, de forma que o comando fosse
obedecido.
Nesse sentido, apenas com a realização de tentativas, com a identificação de
erros nos comandos e sua correção, é que podemos nos aprimorar. E, pouco a
pouco, dar embasamento ao nosso pensamento computacional.

VOCÊ DEVERÁ USAR AS CAIXAS DE


CÓDIGOS PARA REALIZAR AS ATIVIDADES
DO VERIFICANDO O APRENDIZADO.
Clique em Rodar/Experimentar para ordenar ao computador que execute as
instruções escritas por você.
VERIFICANDO O APRENDIZADO

MÓDULO 4

Descrever a estrutura condicional if

INTRODUÇÃO

O QUE SÃO ESTRUTURAS


CONDICIONAIS?
Estruturas condicionais são as linhas de código de computador empregadas
para expressar a ideia de lógica ou seletividade.

Usando esses tipos de instruções, somos capazes de preparar o computador


para realizar um teste, cujo resultado será verdadeiro ou falso, aplicando-o
para controlar se determinado pedaço de código será ou não executado.
Todas as linguagens de programação possuem estruturas condicionais. Neste
módulo, analisaremos um tipo específico: a declaração if (do inglês, if-
statement). Não deixe de manter em mente que if, em inglês, significa se.

Nós nos basearemos em exemplos e práticas na linguagem JavaScript,


estando sempre voltados para a resolução de interessantes problemas de
manipulação de imagens.

ESTRUTURA CONDICIONAL
A seguir, vemos a sintaxe de uma declaração if conforme a linguagem de
programação JavaScript:

1. if( pixel.getRed() > 160 ) {


2. pixel.setRed(0);
3. pixel.setGreen(0);
4. Pixel.setBlue(0);
5. }

Repare na linha 1. Em português, essa instrução significa:


Se a intensidade do componente vermelho do pixel for maior do que
160, então execute as instruções que estão entre as chaves esquerda e direita.

Em outras palavras, as instruções das linhas 2, 3 e 4 só serão executadas pelo


computador se o resultado do teste for verdadeiro.

Pense nessa instrução como uma forma de selecionar os pixels que serão
afetados pelas instruções das linhas 3, 4 e 5.

1
Por exemplo, ainda na instrução 1, se o valor do componente vermelho do pixel
em questão for 140, então, as instruções 2,3 e 4 não serão executadas pelo
computador, pois o teste if( 140> 160) retornará, é claro, falso.

Se o valor do componente vermelho do pixel em questão for 160, então as


instruções 2,3 e 4 também não serão executadas, pois o resultado do teste if
(140 > 160) será falso.

3
A execução das instruções 2, 3 e 4 só ocorrerá, por exemplo, se o valor do
componente vermelho do pixel em questão, obtido pela função pixel.getRed(),
for 161 ou qualquer valor maior do que este.

Note, na linha 1, onde há a instrução if, que o teste a ser realizado pelo


computador está entre parênteses. Esta é uma sintaxe requerida pela
linguagem JavaScript.
4
Somente seguindo essa sintaxe o computador será capaz de entender que se
trata de um teste que ele deve realizar, para então decidir se irá ou não
executar as instruções entre as chaves esquerda“{“ e direita “}”, que delimitam
a declaração if.
COMENTÁRIO
Na prática, frequentemente vemos uma declaração if ser usada dentro de uma
estrutura de repetição, como a estrutura for. Esse tipo de combinação permite
que problemas bastante interessantes sejam resolvidos.
Para o restante deste módulo experimentaremos com a estrutura condicional if.
Abordaremos várias práticas simples que envolvem manipulação de imagens
digitais, começando por casos bem rudimentares e chegando a aplicações do
mundo bem interessantes, ainda que simples.

Optamos por usar exemplos com imagens digitais, pois esta é uma forma muito
simples, intuitiva e rápida para você observar os efeitos da execução de
algumas linhas de código de computador. Isso ocorre porque estamos
acostumados a observar imagens do mundo real desde que nascemos. Então,
este é um processo altamente intuitivo para todos.

Para analisar e avaliar o efeito de determinadas linhas de código, basta


observar a imagem e comparar o antes e o depois da execução do código.

MÃO NA MASSA

PRÁTICA 1
Considere a imagem apresentada na figura 7:
Figura 7:

Imagem representativa do esquema de Cores RGB.

Imagine que desejamos escrever um código de computador que altere somente


a região em vermelho, transformando-a em cinza.

Para entender como é possível escrever um código de computador a fim de


alterar a região em vermelho, considere a tabela 7, que indica como cada cor é
representada segundo o esquema RGB:

Esquema RGB R - Vermelho

Branco 255

Azul 0
Vermelho 255

Verde 0

Amarelo 255

Magenta 255

Ciano 0

Preto 0

(1,1,1) cinza muito escuro (quase preto)


(2,2,2)
(3,3,3)
(4,4,4)
(5,5,5)
(6,6,6)
Escala de cinza
.
.
.
(252,252,252)
(253,253,253)
(254,254,254) cinza muito claro (quase br

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 7: Esquema RGB – Exemplos de cores comuns.

Note que o vermelho equivale ao código RGB(255,0,0). Uma primeira tentativa


para transformar a região vermelha em cinza seria pensar nesse código RGB.

Então, podemos escrever um código que ordena ao computador que, para


cada pixel da imagem, verifique se o componente vermelho é 255. Em caso
positivo, ajuste a cor do pixel para cinza, ou seja, RGB(120,120,120).
VAMOS EXPERIMENTAR?
a) No código-fonte à esquerda estão listadas as linhas de código que
representam, em código de computador, o passo a passo da tentativa do
parágrafo anterior. Clique em Rodar/Executar e observe o resultado.

SOLUÇÃO

Repare que não só a região vermelha foi transformada em cinza, mas também
as regiões amarelo, branco e magenta. Colorimos mais do que a região
proposta pelo exercício.

Observe a tabela 7. Você notará que as cores amarelo, branco e magenta


também possuem, assim como o vermelho, o valor 255 para o componente R.

Então, nossa instrução if ao computador precisa ser mais específica. Lembre-


se: o computador faz exatamente o que ordenamos.

b) Na prática, precisamos checar três tarefas: para que apenas a região


vermelha seja ajustada para cinza, devemos verificar se o Red é igual a 255,
se o Green é igual a 0 (zero), e se o Blue é igual a 0 (zero).

Então, você precisará substituir, no código-fonte, toda a linha da


instrução if pela instrução a seguir:
if( pixel.getRed() == 255 &&pixel.getGreen() == 0
&&pixel.getBlue() == 0 ){

Você pode usar o recurso de copiar e colar para isso:

Em seguida, clique em Rodar/Executar e observe que o objetivo desta prática


será alcançado.

SOLUÇÃO

Observe que, com essa ação, você programou para que a região somente
vermelha fosse ajustada para cinza, mas, ao mesmo tempo, permitiu que as
regiões de interseção entre as três cores se apresentassem sem alteração.

PRÁTICA 2
Preparamos um vídeo abordando uma segunda prática.

QUE TAL PRATICAR UM POUCO?


Observe a imagem apresentada na figura 8:
Figura 8: Uma calçada com o meio-fio pintado de amarelo.

Imagine que desejamos ajustar a imagem para que o meio-fio fique cinza em
vez de amarelo.

Pela tabela 7 sabemos que o amarelo é uma cor composta pela combinação


de vermelho e verde.
Vamos utilizar o código-fonte a seguir para experimentar com diferentes
abordagens de construção para a instrução IF até alcançarmos uma solução
mais refinada que nos pareça suficientemente boa.

TABELA 7
Esquema RGB R - Vermelho

Branco 255

Azul 0

Vermelho 255
Verde 0

Amarelo 255

Magenta 255

Ciano 0

Preto 0

(1,1,1) cinza muito escuro (quase preto)


(2,2,2)
(3,3,3)
(4,4,4)
(5,5,5)
(6,6,6)
Escala de cinza
.
.
.
(252,252,252)
(253,253,253)
(254,254,254) cinza muito claro (quase br

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 7: Esquema RGB – Exemplos de cores comuns.

a) No código que já consta no código-fonte, o if está testando se os níveis de


verde e de vermelho de cada pixel são maiores do que 120. Isso reflete a ideia
de que um bom nível de verde e vermelho indica que o pixel pode ser amarelo.
Se o teste do IF for positivo, o pixel que atende à condição será para a cor
preta: RGB (0,0,0). Isso será interessante, pois, ao analisarmos a imagem
resultante, basta observarmos o que estiver em preto. Estes terão sido os
pixels selecionados pela instrução if.
Clique em Rodar/Executar e observe o resultado.

SOLUÇÃO

Repare nesta imagem que, de fato, boa parte do meio-fio amarelo foi pintado
de preto. Porém, analisando melhor, podemos detectar um problema: parte
importante da calçada e do asfalto foram pintados de preto. Isso ocorre pois
essas são áreas da imagem original em que os pixels são mais
iluminados/claros.

Então, os três componentes, vermelho, verde e azul, devem estar acima de


120, gerando um tom cinza suficientemente claro.

b) Instrua o computador a selecionar apenas pixels cujos componentes


vermelho e verde estejam acima de 150.

Em seguida, clique em Rodar/Executar e observe o resultado.

SOLUÇÃO
Observe que ainda falta nitidez nas cores, como se a tinta do meio-fio estivesse
se espalha do também para a calçada. É necessário que façamos mais ajustes.
c) Ajuste a estrutura if, a fim de selecionar apenas pixels ainda mais claros e
em tom de amarelo. Clique em Rodar/Experimentar e observe o resultado.

SOLUÇÃO

A SELEÇÃO PARECE MELHOR, CERTO?


Temos menos quantidade pintada de preto na calçada. Porém outro problema
tornou-se evidente: os pixels da lateral do meio-fio não foram selecionados
pelo if. Isso ocorre porque seu tom de amarelo é mais escuro. Certamente, seu
nível de luminosidade é menor do que 150. Portanto, esses pixels não passam
no teste do if.
d) No último passo desta prática tentaremos pensar em uma solução mais
inteligente para a instrução if, de forma que consigamos, também, selecionar
os pixels da lateral para realizar o ajuste de cores.
Então, vamos construir uma estratégia melhor. Para começar, observe nosso
“laboratório RGB” com controles deslizantes para os componentes vermelho,
verde e azul:

  Sem cor →→ Escuro →→ Mais claro →→ Saturação

Vermelho (R - Red): R:0 G:0 B:0

Verde (G - Green):  Mostrar Hexadecimal    #000000

Azul (B - Blue):

Repare que você obteve um amarelo-escuro.

e) Agora, deslize o controle azul de 0(zero) para 84. Se tiver dificuldade em


obter o valor exato, use as setas direcionais direita/esquerda no teclado.
Observe o resultado.

SOLUÇÃO

Observe o amarelo gradativamente aproximando-se do cinza.


CONSIDERAÇÕES
Queremos tirar proveito do padrão da natureza que acabamos de observar.

Tons de amarelo são caracterizados por níveis equivalentes de vermelho e


verde e um nível de azul muito mais baixo.

Como, porém, podemos escrever uma estrutura if para instruir o


computador a selecionar os pixels que atendam a esse padrão?

Felizmente, isso é muito simples! Observe as duas figuras a seguir:

Na primeira figura, se calcularmos a média dos três componentes R(97), G(97)


e B(0), obteremos o valor 64.6. A linha tracejada representa onde estaria esse
valor nos controles deslizantes.
Repare que os componentes vermelho e verde estão acima da média. O
mesmo comportamento se repete na segunda figura.

Então, vamos usar essa observação para construir uma solução mais
inteligente para a instrução if e observar se, desse modo, selecionamos os
pixels em amarelo do meio-fio de forma mais satisfatória.

f) Volte ao código-fonte desta prática e realize os ajustes destacados em


vermelho a seguir:

for( pixel: img ){


   media=( pixel.getRed()+pixel.getGreen()+pixel.getBlue() ) / 3;
if( pixel.getRed() >media&&pixel.getGreen() >media ){
pixel.setRed( 0 );
pixel.setGreen( 0 );
pixel.setBlue( 0 );
}
}
print( img );

img = new SimpleImage("calcada.jpg");

Adicionaremos uma linha para o computador calcular a média automaticamente


e, na estrutura if, testaremos se o valor do vermelho e do verde são maiores do
que a média. Depois, clique em Rodar/Executar e observe o resultado.

SOLUÇÃO
Agora, confirmamos que a nossa estrutura if é capaz de selecionar, de forma
bem satisfatória, os pixels que desejamos ajustar para a tonalidade cinza.
g) Já pensamos em uma forma de escrever a instrução if, de modo que os
pixels do meio-fio sejam corretamente selecionados para modificação de cor. O
último passo para alcançarmos nosso objetivo é ajustar as instruções internas
à estrutura if, em que, de fato, as cores dos pixels selecionados são ajustadas.
Durante os passos anteriores deixamos as instruções alterando o valor dos
componentes RGB para 0 (zero), para que pudéssemos observar o que ficou
em preto e refletir se a nossa estrutura if estava correta.
Agora, pense um pouco: queremos que o meio-fio, que era amarelo,
apareça em escala de cinza.
Pela tabela 7 já sabemos que a escala de cinza equivale a dizer que os três
componentes R, G e B possuem o mesmo valor. Ora, nós já ordenamos que o
computador calcule automaticamente a média dos três componentes do pixel.

TABELA 7
Esquema RGB R - Vermelho

Branco 255

Azul 0

Vermelho 255

Verde 0

Amarelo 255
Magenta 255

Ciano 0

Preto 0

(1,1,1) cinza muito escuro (quase preto)


(2,2,2)
(3,3,3)
(4,4,4)
(5,5,5)
(6,6,6)
Escala de cinza
.
.
.
(252,252,252)
(253,253,253)
(254,254,254) cinza muito claro (quase br

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal

Tabela 7: Esquema RGB – Exemplos de cores comuns.

Então, a variável chamada media contém uma estimativa de quanta


luminosidade existe no pixel sendo tratado. Uma boa tentativa seria trocar o 0
(zero) das instruções de ajuste de cor internas ao if pela variável media.

Realize esses ajustes no código-fonte, conforme destacado em vermelho:

for( pixel: img ){


    media=( pixel.getRed()+pixel.getGreen()+pixel.getBlue() ) / 3;
if( pixel.getRed() > media &&pixel.getGreen() > media ){
pixel.setRed( media );
pixel.setGreen( media );
pixel.setBlue( media );
   }
}
print( img );

SOLUÇÃO

Isso realmente parece bem melhor! Conseguimos alcançar o nosso


objetivo.

Escrevemos um código de computador que é capaz de instruí-lo a detectar


automaticamente a região em amarelo do meio-fio, para, então, ajustar sua
tonalidade de cor de amarelo para cinza.

TEORIA NA PRÁTICA
O pensamento computacional já é considerado em vários países do mundo
como a competência fundamental usada por todas as pessoas nas próximas
décadas. Assim como a leitura, a escrita e a aritmética, essa competência será
imprescindível para o mercado de trabalho.

Professores e alunos do Ensino Fundamental, do Ensino Médio e do Ensino


Superior, cientistas, engenheiros, historiadores, artistas, médicos, advogados,
todos precisarão usá-la para desempenhar seu papel de forma competitiva.

Este estudo está baseado justamente no pensamento computacional.


Primeiramente, compreendemos que o computador representa qualquer
conceito do mundo real por meio de números. No caso de imagens, os
números indicam a posição do pixel e sua cor.

Para isso, precisamos desconsiderar qualquer outro detalhe da imagem que


não seja fundamental para sua representação:

1
Quantos pixels usaremos para representá-la;

Qual é a cor de cada pixel.


2
Esse tipo de habilidade é denominada abstração e constitui um dos pilares
primordiais do pensamento computacional.

Em seguida, escrevemos linhas de códigos (instruções) de computador para


que ele fosse capaz de automaticamente manipular esses números e, assim,
realizarmos ajustes nas imagens, conforme o objetivo proposto.

Dessa forma, praticamos outra habilidade chave do chamado pensamento


computacional, que é a automação, ou seja, escrever soluções na forma de
instruções que o computador é capaz de seguir automaticamente para chegar
ao resultado desejado.
Durante o desenvolvimento das práticas, sempre paramos para observar e
analisar os resultados obtidos nas imagens apresentadas. Então, refletimos
sobre como poderíamos melhorar os resultados alcançados e realizamos
ajustes em nosso código para alcançar resultados mais adequados. Isso
constitui outro pilar fundamental do pensamento computacional,
denominado análise/avaliação.

Observe que, durante as práticas realizadas, o código-fonte que escrevemos


sempre decompôs o problema proposto em partes mais simples, que seguiram
o seguinte passo a passo padrão:

PASSO 1
PASSO 2
PASSO 3
PASSO 4
PASSO 5
Carregar a imagem na memória para que fosse trabalhada – escrevemos uma
linha de código que carrega a imagem;
Automaticamente processar, um a um, todos os pixels (centenas de milhares)
de uma imagem – usamos a estrutura for para instruir o computador a repetir
as instruções para cada pixel da imagem;
Selecionar em quais pixels desejamos realizar ajuste de cores – escrevemos a
estrutura if para que o computador realizasse testes e, conforme o resultado
(verdadeiro ou falso), executasse ou não as instruções de manipulação de
cores do pixel;

Alterar a cor de um pixel – escrevemos linhas de código para alterar os


componentes RGB (vermelho, verde e azul) para alterar a cor de um pixel,
conforme nosso objetivo;

Imprimir o resultado na tela – escrevemos a função print para que o resultado


das instruções (a imagem manipulada) fosse apresentado na tela.
A habilidade de decompor um problema em problemas bem menores e mais
simples, que podem ser resolvidos isoladamente com uma ou poucas linhas de
código de computador, é mais um dos pilares do pensamento computacional,
denominado decomposição.

Além disso, durante a prática do ajuste de cor do meio-fio de amarelo para


escala de cinza, foi preciso observar um padrão natural/orgânico de qualquer
pixel de tonalidades amareladas. Eles possuem os componentes verde e
vermelho maiores do que o componente azul.

Então, usamos esta observação em nosso favor e escrevemos um código de


computador que foi capaz de automaticamente selecionar pixels em diversos
tons de amarelo, para que pudéssemos ajustar suas cores. Essa habilidade é
denominada detecção de padrões.

A aprendizagem de todos esses pilares permitirá que você desenvolva cada


vez mais saberes na área da Computação.
VOCÊ DEVERÁ USAR O EXPLORADOR RGB E
A CAIXA DE CÓDIGOS PARA REALIZAR AS
ATIVIDADES DO VERIFICANDO O
APRENDIZADO.
  Sem cor →→ Escuro →→ Mais claro →→ Saturação

Vermelho (R - Red): R:0 G:0 B:0

Verde (G - Green):  Mostrar Hexadecimal    #000000

Azul (B - Blue):

Clique em Rodar/Experimentar para ordenar ao computador que execute as


instruções escritas por você.

VERIFICANDO O APRENDIZADO

CONCLUSÃO

CONSIDERAÇÕES FINAIS
Praticamos aqui conceitos primordiais de pensamento computacional ao
exercitarmos noções de programação de computadores com exemplos de
manipulação de imagem.

Além disso, realizamos experimentos práticos de programação embutidos no


conteúdo digital. Não hesite em voltar ao conteúdo e usar esses experimentos
para transmitir adiante o conhecimento adquirido.

PODCAST

AVALIAÇÃO DO TEMA:

REFERÊNCIAS
CARVALHO, A.; LORENA, A. Introdução à computação: hardware, software
e Dados. Rio de Janeiro: LTC, 2017.
DALE, N.; LEWIS, J. Ciência da Computação. 4. ed. Rio de Janeiro: LTC,
2011.
FEDELI, R. D.; POLLONI, E. G. F.; PERES, F. E. Introdução à Ciência da
Computação. 2. ed. São Paulo: Cengage, 2010.
FLANAGEN, D. JavaScript: o guia definitivo. 6. ed. Porto Alegre: Bookman,
2013.
GLENN, J. Ciência da Computação: uma visão abrangente. 11. ed. Porto
Alegre: Bookman, 2013.

EXPLORE+
Pesquise na internet e leia o seguinte artigo:
ANDRADE, D. et al. Proposta de atividades para o desenvolvimento do
pensamento computacional no ensino fundamental. In: Anais [...].
Campinas: Unicamp, 2013. p. 169-178.

CONTEUDISTA
Guilherme Dutra Gonzaga Jaime

CURRÍCULO LATTES
DEFINIÇÃO
Apresentação do conceito de pensamento computacional e sua importância
para profissionais de diversas áreas, como Economia Criativa, Negócios,
Ciências Jurídicas, Educação e Engenharia.

PROPÓSITO
Discutir o pensamento computacional com base nos pilares de abstração,
decomposição, reconhecimento de padrões e automação de tarefas por meio
de algoritmos, destacando sua relevância para quaisquer profissionais do
século XXI.

OBJETIVOS
MÓDULO 1
Definir o pensamento computacional e sua importância para o profissional do
século XXI

MÓDULO 2
Identificar as aplicações do pensamento computacional na Economia Criativa,
nos Negócios e nas Ciências Jurídicas

MÓDULO 3
Reconhecer a relevância do pensamento computacional nas áreas de
Educação e Engenharia

INTRODUÇÃO
Há muitos anos, a sociedade utiliza computadores como ferramentas capazes
de resolver as mais diversas dificuldades em todas a áreas do conhecimento
como:

SAÚDE

EDUCAÇÃO
ENGENHARIA

ECONOMIA CRIATIVA

CIÊNCIAS JURÍDICAS
TECNOLOGIA DA INFORMAÇÃO
Antes de qualquer problema ser solucionado, é necessário compreendê-lo,
bem como as maneiras pelas quais ele pode ser resolvido. O pensamento
computacional é o nome dado a um conjunto de habilidades que nos permite
fazer isso.

Neste tema, perceberemos que, com as constantes mudanças que o mundo


vem atravessando, torna-se cada vez mais importante a compreensão do
pensamento computacional por profissionais de todas as áreas, e não apenas
os ligados à Computação.

MÓDULO 1

Definir o pensamento computacional e sua importância para o profissional do


século XXI

O QUE É PENSAMENTO
COMPUTACIONAL?
A velocidade com a qual a sociedade está mudando nunca foi tão acelerada. A
evolução, nas primeiras décadas do século XXI, equivale a centenas de anos
da história humana. Nesse tempo, vimos tecnologias inovadoras serem
lançadas e, alguns anos depois, serem substituídas por outras ainda
mais disruptivas.

DISRUPTIVAS
Se entendemos disrupção como a interrupção de uma sequência normal de
qualquer processo, podemos entender como tecnologias disruptivas aquelas
que provocam uma mesma interrupção – ou transformação – no modo como
determinado procedimento acontece. Além da atração natural que uma
inovação como essa pode trazer, tais tecnologias também auxiliam na
mudança de toda uma concepção acerca do processo em questão.

COMO EXEMPLO DE TECNOLOGIAS


INOVADORAS PODEMOS CITAR:
Fonte: Aaron Burden / unsplash

Antes de a escrita ser popularizada, grande parte do conhecimento produzido


por indivíduos era perdida, pois a transmissão oral não tinha capacidade de ser
perpetuada. A escrita acabou com essa limitação, mas o novo desafio passou a
ser armazenar e difundir o conhecimento desenvolvido para todo o mundo.

A tecnologia veio suprir essa lacuna seja com a criação da imprensa no século
XVI, seja com os computadores ultramodernos. Hoje, o conhecimento gerado
em qualquer parte do mundo pode ser consultado em segundos por outra
pessoa do outro lado do globo. Isso permite melhor cooperação e,
consequentemente, uma evolução mais rápida e efetiva de tudo ao nosso
redor. O avanço da ciência e da tecnologia continua a progredir de forma cada
vez mais rápida, tendo como uma das consequências desse processo uma
sociedade largamente dependente da computação.

Fonte: ThisisEngineering RAEng / unsplash

Se compararmos o comportamento de diversos profissionais do século


passado com os atuais, encontraremos grandes diferenças nas formas de
pensar e fazer seu trabalho. Vejamos os exemplos seguintes:
Museums Victoria / Unsplash

Um cientista de antigamente passava dias em seu laboratório isolado com seus


tubos de ensaio, fazendo experimentos.
Fonte: National Cancer Institute / unsplash

O atual passa a maior parte do tempo em frente de um computador, seja


pesquisando artigos que o auxiliarão em seu trabalho, seja desenvolvendo
modelos computacionais que possam comprovar seus estudos.

Outro exemplo bastante claro são os engenheiros, que trocaram o lápis e o


papel por softwares capazes de desenhar, projetar em 3D e realizar cálculos
específicos de Engenharia de forma precisa e extremamente rápida.
Fonte: thisisengineering / unsplash
Fonte: thisisengineering / unsplash

Essas e muitas outras profissões já utilizam o pensamento computacional para


desenvolver soluções que permitem que a tecnologia se torne uma grande
aliada de seus processos. E essa é uma tendência que surge cada vez mais
forte.

Assim, observamos uma importante mudança no mercado de trabalho:


algumas habilidades e competências, que antes eram específicas da área de
Computação, passam a ser consideradas fundamentais para qualquer
profissional do século XXI. Esse conjunto de habilidades
denominamos pensamento computacional.
Você compreendeu o que é pensamento computacional até aqui?
Veremos a seguir mais detalhes sobre o assunto.

Mas, antes de entrarmos em detalhes sobre o real significado do pensamento


computacional, entenderemos, primeiramente, o que ele não é. E isso será
importante para esclarecermos alguns mitos.

Veja dois exemplos de mito:

PENSAR COMO COMPUTADORES

É comum associarmos, erroneamente, o termo pensamento computacional à


ação de pensar como um computador. Mas computadores não
pensam! Apenas seguem instruções expressas, objetivas e simples – como,
por exemplo, somar dois números.
PENSAMENTO COMPUTACIONAL É O MESMO QUE PROGRAMAR

Outro mito é considerar que pensamento computacional seja o mesmo que


programar, o que também não é verdade. Afinal, nem mesmo precisamos de
um computador para praticar o pensamento computacional.

De acordo com Blikstein (2008), pensamento computacional não se trata de


saber navegar na internet, enviar e-mail, publicar material na web ou operar um
processador de texto. Pensamento computacional significa saber usar o
computador como um instrumento de aumento dos poderes cognitivo e
operacional humanos. Em outras palavras, trata-se de usar computadores e
suas redes para aumentar nossa produtividade, inventividade e criatividade.

AGORA, VAMOS COMEÇAR A REFLETIR SOBRE O QUE É,


DE FATO, O PENSAMENTO COMPUTACIONAL.

Para que um computador funcione, por meio de linhas de código simples e


diretas, é necessário que um indivíduo ou uma equipe reflita sobre como
estruturar e organizar as instruções que serão passadas para a máquina. Essa
pessoa ou grupo deve, então, escrever as instruções de forma que o
computador resolva o problema proposto ao seguí-las.
Essa maneira de compreender a dificuldade, raciocinar e buscar a melhor
solução possível é a etapa que antecede à programação, também conhecida
como pensamento computacional.

Fonte: Freepik / Freepik

A maior parte das pessoas aprende a utilizar o computador apenas como


usuário de soluções já existentes. Por exemplo, por meio de um sistema de
busca na web, os indivíduos usam palavras-chave para encontrar o assunto
desejado e, assim, por meio das opções “copiar” e “colar”, tornam-se apenas
repetidores de um conhecimento já existente.
Fonte: Freepik / Freepik

A partir de modelos, o pensamento computacional nos permite analisar um


problema complexo, entender seus detalhes e propor possíveis soluções. É
possível, então, escrever essas respostas de maneira que um computador, um
humano ou ambos possam entendê-las. Note que, ao agir dessa forma, as
pessoas estão construindo seu próprio conhecimento, no sentido de solucionar
determinada questão proposta.

PILARES DO PENSAMENTO
COMPUTACIONAL
De forma geral, há quatro pilares ou habilidades necessárias para que
possamos exercer o pensamento computacional, conforme ilustração a seguir:

Fonte: Cérebro / Freepik

Pilares do pensamento educacional.

O objetivo é desenvolver um raciocínio mais estruturado e direto, o que pode


auxiliar muito na solução de problemas complexos.

Vamos entender cada um deles:

PRIMEIRO PILAR - DECOMPOSIÇÃO


A decomposição busca dividir um problema ou sistema complexo em partes
menores, mais fáceis de compreender, gerenciar e resolver. Quando deixamos
de olhar para um sistema como um todo e estudamos cada uma de suas peças
menores, fica mais simples de compreender e buscar a solução desejada.

Para entender melhor a decomposição, imagine a situação:

Fonte: Studiogstock / Freepik

Uma companhia aérea precisa levar pessoas e bagagens de uma cidade até a
outra, usando aviões.

Se você precisasse explicar esse problema, como faria?

Explicaria sobre aviões, pilotos, bagagens e emissão de passagens, tudo ao


mesmo tempo?
Para tornar essa complicada questão tratável, precisamos abordá-la por partes,
ou seja, decompor o problema.

Em um primeiro momento, você provavelmente falaria sobre todas as possíveis


formas de se comprar a passagem aérea: por meio do site da própria
companhia ou de parceiros, por telefone ou, ainda, presencialmente.

Depois, explicaria sobre as opções para a realização do check-in para


confirmar sua presença naquele voo. Na sequência, daria orientação sobre o
despacho de bagagens, caso necessário e esclareceria os procedimentos de
embarque na aeronave.

Por fim, você gastaria algum tempo expondo os procedimentos realizados pelo
piloto e pelo controle de tráfego aéreo para que a aeronave consiga decolar,
voar até a cidade destino e pousar. Essa parte, por si só, é tão complicada, que
você poderia decompô-la novamente em pedaços menores para facilitar suas
explicações.

Neste exemplo, estamos desagrupando uma questão complexa em outras


menores que, por sua vez, também podem ser fragmentadas. A ideia principal
da decomposição é dividir o problema até que se torne algo tratável e possa
ser executado com satisfatório nível de eficiência.

COMENTÁRIO
No mundo da computação, o processo de decomposição ocorre de forma
frequente, já que os computadores são inacreditavelmente rápidos, mas
desprovidos de qualquer inteligência. Então, para que tenham utilidade,
precisamos indicar quais instruções simples devem realizar, uma após a outra,
até que o problema seja resolvido por completo.

SEGUNDO PILAR - ABSTRAÇÃO


Buscamos desconsiderar informações ou detalhes que não sejam
imprescindíveis para resolver nosso problema.
Ainda no exemplo da companhia aérea, vamos pensar no procedimento de
embarque.

Diariamente, os atendentes responsáveis pelo embarque fazem a verificação


de milhares de passageiros que precisam viajar em seus aviões. Essas
pessoas possuem diferentes característica, além de portarem malas, bolsas,
mochilas, casacos ou diversos outros tipos de objetos pequenos.
Para cada avião, a verificação realizada pelos atendentes deve ser rápida e
objetiva. A equipe tem poucos minutos para embarcar centenas de pessoas ao
mesmo tempo, registrar informações importantes para o fornecimento
adequado do serviço. Para isso, é preciso aplicar o princípio da abstração, que
propõe ignorar detalhes irrelevantes para concentrar-se no que realmente
importa.

DIFERENTES CARACTERÍSTICAS
 Nome;

 Documento de identificação;

 Altura;

 Peso;

 Cor do cabelo;

 Cor dos olhos, etc.


Fonte: Freepik / Freepik

Em nosso exemplo, o atendente deve focar-se apenas nos dados de nome e


foto presentes na carteira de identidade e confrontá-los com as informações do
cartão de embarque, abstraindo todas as outras averiguações ou
características físicas. O funcionário também deve se atentar ao número, ao
peso e à dimensão dos itens de bagagem de mão, de modo que estejam em
conformidade com as diretrizes de segurança.

Não se preocupar com informações desnecessárias, além de economizar


tempo, permite que possamos desenvolver a solução mais genérica
possível, que atenderá uma série de problemas que segue o mesmo
padrão. Este será nosso próximo foco de estudo.
TERCERIRO PILAR - RECONHECIMENTO
DE PADRÕES
Padrões  são semelhanças ou características que alguns dos problemas
compartilham entre si. O reconhecimento destas referências tem por objetivo
aproveitar soluções já usadas no passado para lidar com uma nova dificuldade
que seja suficientemente similar.

Os padrões podem ser observados tanto entre problemas diferentes, quanto


entre partes de uma mesma dificuldade.

Em grandes aeroportos, é comum precisarmos caminhar longas distâncias


para conseguirmos embarcar no voo. Sabemos, também, que pessoas mais
idosas ou com dificuldade de locomoção tendem a andar mais devagar. Porém,
para que as companhias aéreas consigam cumprir a apertada agenda de
viagens diárias, é importante que não haja atrasos. Logo, todos os passageiros
precisam se deslocar em tempo hábil.

Fonte:Freepik / Freepik

Para solucionar essa questão, os aeroportos disponibilizam esteiras rolantes


muito similares às escadas rolantes de shopping centers, porém mais
apropriadas ao propósito de auxiliar o deslocamento de passageiros. Então,
mesmo que um deles consiga andar por conta própria, poderá caminhar sobre
a esteira com o intuito de diminuir o tempo de chegada ao portão de embarque.
Note que, embora esse problema seja diferente de ajudar pessoas a subir ou
descer pisos de shopping centers, as soluções são muito parecidas: um
sistema de esteiras rolantes de metal movimentadas por motores elétricos.

Podemos imaginar que um profissional, em algum momento, tentando


solucionar essa questão, pensou:

“Talvez possamos usar escadas rolantes modificadas para resolver o


problema de demora no deslocamento de passageiros dentro de um
terminal de aeroporto, pois, em ambos os casos, precisamos locomover
pessoas a pé por alguns metros”.

Os padrões podem ser observados tanto entre problemas diferentes, quanto


entre partes de uma mesma dificuldade.
Fonte: Freepik / Freepik

QUARTO PILAR - ALGORÍTMOS


Fundamental do pensamento computacional é a automação por meio
de algoritmos.

Em nosso exemplo de uma empresa aérea, podemos relacionar a criação de


algoritmos aos documentos com instruções dadas a cada funcionário, onde ele
acessa detalhes passo a passo dos procedimentos que deve seguir para a
realização de seu trabalho. Isso permite que o colaborador, mesmo que novato
e sem conhecer as complexas engrenagens da companhia, possa facilmente
seguir um conjunto de instruções simples, garantindo que o problema, pelo
qual seja responsável, receba o tratamento adequado.
Nesses exemplos, utilizamos analogias diferentes para várias situações típicas
de uma empresa área, de forma a facilitar a compreensão dos quatro pilares do
pensamento computacional. Porém, é importante que você mantenha em
mente que a decomposição, a abstração, o reconhecimento de padrões e
os algoritmos trabalham juntos para resolver um problema, não existindo uma
ordem de importância ou de prioridade entre eles. São como as quatro pernas
de uma mesa: sem uma delas, não é possível chegar ao resultado esperado.
DICA
Experimente aplicar em uma dificuldade que tenha ou em uma situação de seu
cotidiano os quatro pilares do pensamento computacional e veja como eles
podem facilitar ou acelerar sua resolução.

MERCADO DE TRABALHO E
PENSAMENTO COMPUTACIONAL

Fonte: macrovector / Freepik

Cada vez mais competitivo, o mercado de trabalho busca profissionais que


tenham, além de conhecimento teórico sobre o cargo que ocuparão,
capacidade para inovar, planejar, decidir, aprender e ter boa relação
interpessoal. Essas habilidades, também conhecidas como soft skills , são
percebidas em atitudes simples, como a forma que um candidato se comporta
em uma entrevista, um desafio ou uma dinâmica de grupo.
SOFT SKILLS
“As chamadas habilidades interpessoais, cujo termo em inglês é soft skills, têm
chamado a atenção das empresas, principalmente das áreas de vendas,
marketing e software. Estudo realizado pela maior rede social profissional do
mundo mostra que mais de 90% dos recrutadores admitem que as soft
skills importam tanto ou mais que as competências técnicas. Trata-se de uma
forma que ajuda a medir como o profissional se comporta em determinadas
situações, além da relação com outras pessoas.”

(CALIL, 2019)

Veremos a seguir a exposição de algumas das capacidades que o profissional


deve ter:

CAPACIDADE PARA INOVAR

A inovação ocorre por meio da capacidade de se pensar algo que já existe de


uma maneira diferente, fugindo do óbvio, saindo do senso comum. O
pensamento computacional está diretamente relacionado a essa habilidade,
pois, a partir de um raciocínio diferente, você pode encontrar novas formas
para resolver problemas, desde os mais simples aos mais complexos.
CAPACIDADE DE PLANEJAR

Outra característica que é muito procurada pelos caça-talentos das


organizações é a capacidade de planejamento . As hierarquias institucionais
estão cada vez mais auto-organizáveis. Em outras palavras, os profissionais
conhecem os problemas que devem ser resolvidos e fazem seu próprio
planejamento, sempre pensando em como sua atividade se encaixará no
trabalho da equipe como um todo. Os quatro pilares aqui aprendidos
potencializam o exercício dessa capacidade.
CAPACIDADE DE APRENDER
Até o século passado, o estudante que se graduava estava apto a exercer sua
profissão pelo resto da vida, pois havia obtido todos os fundamentos
necessários para isso. Atualmente, o conhecimento requer renovação
constante, portanto uma das capacidades procuradas pelo mercado de
trabalho é a aprendizagem dos novos padrões e tecnologias à medida que
surgem.
CAPACIDADE PARA RACIOCINAR LOGICAMENTE

O raciocínio lógico, muitas vezes atribuído indevidamente apenas aos


matemáticos, é ferramenta com grande valor no mercado de trabalho. Sua
aplicação na decomposição de problemas e no reconhecimento de padrões é
indiscutível. E assim como nossas demais habilidades, quanto mais o
raciocínio lógico é exercitado, mais se torna natural.

O pensamento computacional influencia positivamente todas essas


habilidades. Nos próximos módulos, veremos exemplos de como esse conceito
vem mudando o mundo a nossa volta.

ATENÇÃO
Usar o pensamento computacional não é saber utilizar as ferramentas criadas
pela tecnologia. É saber usar a tecnologia para criar novas ferramentas.

Você pode aplicar o pensamento computacional para automatizar tarefas


simples de seu dia a dia ou da empresa em que atua.

Neste vídeo, trataremos a respeito dos quatro pilares do pensamento


computacional e de sua importância para o profissional contemporâneo.
VERIFICANDO O APRENDIZADO
1. SABEMOS QUE O COMPUTADOR REPRESENTA UMA
TECNOLOGIA MUITO VERSÁTIL E QUE NÃO PODE SER
REDUZIDA A UMA ÚNICA FUNÇÃO. POR ISSO,
COMPREENDER O CONCEITO DE PENSAMENTO
COMPUTACIONAL É FUNDAMENTAL PARA QUE NÃO O
CONFUNDAMOS COM OUTRAS RELAÇÕES QUE O SER
HUMANO POSSA TER COM O COMPUTADOR.
SOBRE ESSE CONCEITO, PODEMOS AFIRMAR QUE:

I. SABER NAVEGAR PELA INTERNET OU MESMO ENVIAR E


RECEBER E-MAILS CARACTERIZA AÇÕES REFERENTES
AO PENSAMENTO COMPUTACIONAL.
II. POR SE TRATAR DE UMA TAREFA MAIS COMPLEXA DO
QUE MERA PESQUISA NA REDE, A PUBLICAÇÃO DE
CONTEÚDO NA WEB CARACTERIZA-SE COMO
PENSAMENTO COMPUTACIONAL.
III. É NO AUMENTO REAL DA CONDIÇÃO COGNITIVA E
OPERACIONAL DO SER HUMANO QUE SE ENCONTRA O
PENSAMENTO COMPUTACIONAL.
DAS AFIRMATIVAS ANTERIORES, ESTÁ(ÃO) CORRETA(S):

Somente I

Somente II

Somente III

I e II

2. PODEMOS AFIRMAR QUE, ENTRE OS QUATRO PILARES


DO PENSAMENTO COMPUTACIONAL, EXISTE UM
PRINCIPAL?

Sim. A decomposição é o pilar mais importante de todos, pois é responsável


por realizar a divisão do problema complexo.

Não. Existem dois principais: o reconhecimento de padrões e os algoritmos,


que, juntos, realizam a automação.
Sim. O pilar mais importante é a abstração, que possibilita a criação de uma
solução genérica, a qual soluciona diversos problemas.

Não, pois todos os pilares são igualmente importantes para o pensamento


computacional.

GABARITO

1. Sabemos que o computador representa uma tecnologia muito versátil e


que não pode ser reduzida a uma única função. Por isso, compreender o
conceito de pensamento computacional é fundamental para que não o
confundamos com outras relações que o ser humano possa ter com o
computador.
Sobre esse conceito, podemos afirmar que:

I. Saber navegar pela internet ou mesmo enviar e receber e-mails


caracteriza ações referentes ao pensamento computacional.
II. Por se tratar de uma tarefa mais complexa do que mera pesquisa na
rede, a publicação de conteúdo na web caracteriza-se como pensamento
computacional.
III. É no aumento real da condição cognitiva e operacional do ser humano
que se encontra o pensamento computacional.
Das afirmativas anteriores, está(ão) correta(s):
A alternativa "C " está correta.

Como estudamos, a partir das afirmações de Blinkstein (2008), não são as


meras habilidades tecnológicas digitais que caracterizam o pensamento
computacional, mas a utilização de computadores ou redes a fim de ampliar de
forma significativa a produtividade humana e, especialmente, sua capacidade
inventiva.
2. Podemos afirmar que, entre os quatro pilares do pensamento
computacional, existe um principal?

A alternativa "D " está correta.

Assim como todos os pilares de uma casa são igualmente importantes – se


retirarmos qualquer um deles a construção inteira desaba –, no pensamento
computacional, os quatro pilares aprendidos se completam e possibilitam que
problemas complexos sejam resolvidos de maneira estruturada.

MÓDULO 2

Identificar as aplicações do pensamento computacional na Economia Criativa,


nos Negócios e nas Ciências Jurídicas

ECONOMIA CRIATIVA
Agora que você já sabe o que é pensamento computacional, vamos entender
como ele se aplica às mais variadas áreas do conhecimento e como ele vem
transformando o mundo a nosso redor.

Clique sobre as datas da linha do tempo.

SÉC. XVIII
Desde a primeira Revolução Industrial (séc. XVIII), a sociedade tem pautado
sua economia em bens tangíveis de consumo.
SÉC. XXI
No século XXI, com o advento do pensamento computacional, essa situação
começou a mudar.

2001
O jornalista australiano Peter Coy  publicou um artigo na revista americana
Businessweek sobre uma nova modalidade econômica, que estaria se
formando a partir de empresas com foco em conhecimento e inventividade.
Assim, surgiu a expressão Economia Criativa.O governo local passou a
incorporar, em sua estratégia política e macroeconômica, segmentos que
tinham como base o capital intelectual e a criatividade, para impulsionar o
desenvolvimento local, regional e nacional.
Ao mesmo tempo, o Reino Unido incluiu pela primeira vez em sua balança
comercial alguns itens, como: artes performáticas, artesanato, arquitetura,
design, design de moda, editoração, editoração eletrônica, música,
publicidade, rádio, TV, software, games, vídeo, cinema e fotografia.

2007
Em 2007, a Organização das Nações Unidas (ONU) se articulou, por meio da
Organização das Nações Unidas para a Educação, a Ciência e a Cultura
(UNESCO) com a Conferência das Nações Unidas para o Comércio e o
Desenvolvimento (UNCTAD), difundindo conceitos de economia da Cultura e
Economia Criativa em escala global. Foram desenvolvidas pesquisas sobre o
setor cultural, sendo criada a coordenação da Rede de Cidades
Criativas. Isso abriu possibilidades de desenvolvimento local com base em
vocações criativas, conectando várias cidades do mundo que, a partir da
obtenção do selo Cidade Criativa, passaram a compartilhar suas experiências e
entrar em contato direto com um amplo repertório de práticas bem-sucedidas
de desenvolvimento local.

PETER COY
Peter Coy é editor de economia da Bloomberg Businessweek, onde está desde
1989. Embora com formação original em História, Coy é quase uma
celebridade quando o tema envolve questões econômicas, sendo
frequentemente consultado e entrevistado por programas de TV, nos principais
canais jornalísticos dos EUA.

Bloomberg.

REDE DE CIDADES CRIATIVAS


“A Rede de Cidades Criativas reúne mais de 180 municípios em todos os
continentes, com o objetivo de promover a cooperação entre cidades que têm
na criatividade um fator estratégico para o desenvolvimento urbano
sustentável.

Atualmente, os municípios integrantes da rede estão distribuídos em sete


diferentes setores criativos: gastronomia, cinema, música, design, artesanato e
artes folclóricas, arte mídia e literatura.

Oito cidades brasileiras já integram a Rede: Belém (PA), Florianópolis (SC) e


Paraty (RJ), no campo da gastronomia; Brasília (DF) e Curitiba (PR), em
design; João Pessoa (PB), em artesanato e artes folclóricas; Salvador (BA), na
música; e Santos (SP), no cinema.”

(BRASIL, 2019)

A UNCTAD afirma que o conceito de Economia Criativa está em constante


evolução (UNITED NATIONS, 2004). Esta instituição estimula o debate para a
criação de novas metodologias que gerem informações internacionalmente
relevantes.

Atualmente, podemos subdividir a Economia Criativa nos seguintes tipos de


atividades:

Artes performáticas

Música ao vivo, teatro, dança, circo etc.

Artes visuais

Pintura, escultura, fotografia e antiguidades.

Audiovisual

Cinema, rádio, TV etc.

Edição e impressão

Livros, imprensa e outras publicações.

Expressões culturais tradicionais

Artesanato, festivais etc.

Design

Gráfico, de moda, de joias e de brinquedos.

Novas mídias

Software, games e demais conteúdos digitais.

Patrimônio cultural

Museus, bibliotecas, sítios arqueológicos etc.

Serviços criativos

Arquitetura, Publicidade, pesquisa e desenvolvimento, e recreação.

Mas a Economia Criativa não acontece sozinha. Para que seja possível, é
necessário um ambiente propício com infraestrutura, política de incentivo e
suporte tecnológico. O pensamento computacional é peça fundamental nessa
nova área da Economia, pois é por meio dele que novas mídias podem ser
desenvolvidas, como softwares, games e outros conteúdos digitais.

COMO TEM OCORRIDO A PRÁTICA DA


ECONOMIA CRIATIVA?
Veremos a seguir

Fonte: Freepik / Freepik

Bibliotecas e museus têm se reinventado com base na tecnologia, seja por


meio de sistemas de busca mais rápidos e precisos para localizar suas obras,
seja por hologramas, realidade virtual e outros efeitos que tornam ainda mais
fascinantes as experiências de seus visitantes.

Fonte: geralt / pixabay

A Publicidade deixou de ser algo genérico e passou a ser direcionada


exatamente para o público que pode converter-se em potencial consumidor.
Essa inovação torna a experiência de uso melhor para os clientes, que veem
anúncios de seu real interesse. E proporciona mais rentabilidade para as
empresas, com maior retorno sobre a quantidade de propaganda exibida.
Fonte: kjpargeter / Freepik

A Arquitetura e o Design de interiores avançaram por meio de ferramentas


gráficas que permitem que o cliente veja projetos em 3D ou até adentre sua
nova casa, antes mesmo de a obra ser iniciada. O equivalente ocorre com a
indústria da moda, de veículos, de joias, de brinquedos e de todas as outras
áreas relacionadas ao design.
Fonte: bedneyimages / Freepik

Shows e festivais passaram a ser muito mais seguros e organizados a partir


da tecnologia do pensamento computacional: desde a venda de ingressos
inteligentes, que não podem ser falsificados ou revendidos ilegalmente, até o
uso de robôs, para um ajuste perfeito dos equipamentos de som e luz. Isso
sem falar dos festivais, transmitidos pela internet para todo o mundo, em tempo
real.
Fonte: welcomia / Freepik

A fotografia e a filmagem ultrapassaram todos os limites alcançados


anteriormente por suas lentes de altíssima qualidade. Essa evolução ocorreu
pelos inúmeros algoritmos de Inteligência Artificial, que corrigem cores, luzes,
imperfeições e que, recentemente, vêm substituindo até a necessidade do uso
da maquiagem, tornando as imagens capturadas melhores que a própria
realidade.
Fonte: master1305 / Freepik

Os famosos efeitos especiais do Cinema , antes exclusivos de produções


milionárias como as de Hollywood, estão cada vez mais acessíveis devido ao
barateamento da tecnologia. O que permite que produtoras menores, de todas
as partes do mundo, pratiquem sua criatividade e criem obras fantásticas,
retratando a cultura de diferentes países e regiões.

A Economia Criativa está em constante evolução com o apoio do pensamento


computacional. A criatividade humana é inestimável e ainda insubstituível. Com
o uso de algoritmos e tecnologia é potencializada alcançando resultados
inimagináveis.

Mas você pode estar se perguntando:


O pensamento computacional só afeta essa nova economia, que é movida
pela criatividade?

Vejamos!

Freepik / Freepik

REINVENTANDO O MUNDO DOS


NEGÓCIOS
Os negócios tradicionais, que sempre movimentaram a economia do mundo,
continuam existindo, mas a forma com que ocorrem já é completamente
diferente de 10 ou 15 anos atrás.

A preocupação com a resiliência, a segurança e a eficiência dos negócios está


relacionada diretamente à tecnologia. Sem ela, não é possível proporcionar
uma boa experiência aos clientes, fazendo com que empresas sejam deixadas
de lado e percam posicionamento no mercado. Independentemente do negócio
praticado, as organizações precisam utilizar a tecnologia a seu favor.

Sabemos que mais do que vender um produto, as empresas devem conhecer


seu cliente, suas necessidades e seus desejos.

MAS SE SUA EMPRESA FOSSE


TRADICIONAL, COMO SE DESENVOLVERIA
ESSA TAREFA?
Pense por uns instantes!

Se pensarmos de forma tradicional, essa tarefa seria manual e cansativa, com


análise feita por amostragem. No entanto, por meio do pensamento
computacional e de alguns algoritmos especializados, é possível individualizar
cada consumidor.

Você deve conhecer alguns casos clássicos de empresas que, por terem sua
posição muito bem estabelecida no mercado, esqueceram da importância da
inovação e não conseguiram mais acompanhar as mudanças no consumo.

Vejam dois exemplos a seguir:


A Blockbuster – maior rede de locadoras de filmes e videogames no mundo,
com sede no Estados Unidos – decretou falência em 2010, mesmo ano em que
a Netflix iniciou sua expansão internacional, chegando ao Brasil em 2011. Esta,
por sua vez, fundada em 1997, iniciou-se como um serviço de entrega de
DVDs pelos correios, mas soube se adaptar à nova realidade que se moldou
no início do século, com a popularização da internet de banda larga.

Antes mesmo de cogitar streaming, quando era apenas uma locadora, a


Netflix se preocupou em compreender o perfil de seu público. Percebeu que
muitos clientes ficavam insatisfeitos por perderem o prazo de devolução e
precisarem pagar multas, com frequência. Observando a necessidade do
mercado, foi a primeira a criar um plano de locação mensal, com títulos
ilimitados por cliente. Bastava escolher e aguardar a entrega, sem
preocupações.
STREAMING
Cada vez mais, esta tecnologia tem invadido o cotidiano das pessoas. Trata-se
da transmissão de dados pela internet, fundamentalmente de áudio e vídeo,
sem que o usuário tenha necessidade de fazer download ou baixar esses
dados. Isso permite que, gratuitamente ou com valores muito baixos, músicas e
filmes sejam consumidos inclusive por celulares smartphones de modelos mais
simples.
 SAIBA MAIS
Até o século passado, as greves dos bancários causavam comoção nacional. Saques,

depósitos, transferências – nenhuma operação bancária era realizada durante dias. O

país parava e torcia para que um acordo fosse realizado o mais rápido possível, para

que tudo voltasse à normalidade.

Atualmente, o banco está na palma de nossas mãos, por meio de aplicativos

em smartphones ou internet banking. Para os raros casos em que ainda precisamos

de dinheiro em espécie, há caixas eletrônicos espalhados por shoppings, farmácias e

pequenos mercados em toda a cidade.

As transações financeiras por cartões de crédito, cada vez mais seguras, também

estão mais populares e acessíveis. 2017 foi o primeiro ano em que estas operações

superaram as realizadas em dinheiro, alcançando a marca de 23,3 trilhões em todo o

mundo.

Além da forma tradicional, os cartões de crédito vêm apresentando variações por meio

de aplicativos que geram QR Codes ou dispositivos de aproximação, os quais

realizam pagamento com verificação biométrica ou reconhecimento facial.

QR CODES
“Evolução do código de barras [...] consiste em um gráfico 2D [...] que pode ser
lido pelas câmeras da maioria dos celulares, encaminhando o usuário a um
texto, a um endereço ou a uma imagem.”

(ANDRION, 2019 )

Fonte: Freepik / Freepik

E não são apenas os cartões de crédito que estão ganhando espaço. As


criptomoedas, como o Bitcoin, valorizam-se ano após ano, representando um
sistema financeiro independente de governos ou agentes reguladores.

“ESSA CRIPTOMOEDA É PRODUZIDA DE


FORMA DESCENTRALIZADA POR MILHARES
DE COMPUTADORES, MANTIDOS POR
PESSOAS QUE “EMPRESTAM” A
CAPACIDADE DE SUAS MÁQUINAS PARA
CRIAR BITCOINS E REGISTRAR TODAS AS
TRANSAÇÕES FEITAS. NO PROCESSO DE
NASCIMENTO DE UMA BITCOIN, CHAMADO
DE “MINERAÇÃO”, OS COMPUTADORES
CONECTADOS À REDE COMPETEM ENTRE SI
NA RESOLUÇÃO DE PROBLEMAS
MATEMÁTICOS. QUEM GANHA, RECEBE UM
BLOCO DA MOEDA”
(AZEVEDO, 2017)

COMENTÁRIO
O futuro de nossas relações econômicas ainda é incerto, mas podemos afirmar que a

tecnologia estará presente nelas. A mudança é contínua nos paradigmas da

administração do mundo dos negócios. Não basta aprendermos a conviver com as

inovações tecnológicas atuais, precisamos estar preparados para todas as que

ocorrerão no futuro, ano após ano.

Dessa maneira, todas as empresas que desejarem se manter competitivas


precisam estar atentas às mudanças tecnológicas. Para isso, buscam
profissionais preparados que saibam fazer bom uso do pensamento
computacional em seu dia a dia, tornando, assim, o ambiente corporativo
um lugar mais funcional e inovador.
Fonte: Freepik / Freepik

COMPUTAÇÃO NO DIREITO
A tecnologia evolui de forma crescente e avança sobre as mais diversas áreas
de conhecimento.

Mas ela seria capaz de automatizar atividades classificadas como


propriamente humanas?
Será que poderíamos confiar a máquinas a tomada de decisões tão
importantes para nossa sociedade?

Estas perguntas vêm sendo respondidas em diversos lugares do mundo por


meio de sistemas de apoio à decisão que, por si só, não têm autonomia para
realizar escolhas, mas são de grande valia para facilitar o trabalho de
profissionais das mais variadas áreas.

EXEMPLO
Telemedicina: um médico que, auxiliado por tecnologia, pode ter exames de imagem

mais detalhados, diagnósticos facilitados, inúmeros robôs para dar mais precisão a

seus movimentos. Mesmo com todas essas ferramentas, quem será responsável por

realizar a cirurgia será o médico. E se ele souber aplicar o pensamento computacional

para dominar toda essa tecnologia, a chance de sucesso será muito maior.
Departamentos jurídicos das empresas: No Brasil, em um passado muito recente,

nos departamentos jurídicos das empresas, existiam pessoas responsáveis por

verificar rotineiramente o Diário Oficial, para procurar por nomes, números de

processos e outras informações relevantes para sua atividade. Todo esse trabalho

manual, além de custoso e cansativo, poderia gerar erros, imprecisões ou atrasos.

Hoje em dia, sistemas computacionais fazem essa verificação em minutos e com alta

precisão, trazendo, consequentemente, vantagens financeiras para as organizações.

Algumas pesquisas apontam que profissões podem ser substituídas por


máquinas em um futuro breve.

PARALEGAL
“Alguém que, não sendo advogado, auxilia e assessora advogados, realizando
funções paralelas e de grande importância para o sucesso do escritório de
advocacia. Como é evidente, (esse profissional) não pode exercer atividades
típicas de um advogado, como dar consultas ou assinar petições junto aos
tribunais.”

(FREITAS, 2010)

VOCÊ SABIA
Certas funções relacionadas ao Direito, como assistente jurídico e paralegal , foram

classificadas como de alto risco. Porém outras funções, que envolvem inteligência

social e criatividade, como as de advogado, apresentaram baixo risco de substituição.

Mas o avanço do pensamento computacional não se limita apenas a


automatizar trabalhos manuais.

Os algoritmos vêm evoluindo para, por meio de Inteligência Artificial, interpretar


textos, identificar tendências e até mesmo sugerir decisões com base nessas
informações. Softwares já fazem buscas inteligentes na literatura jurídica,
identificam os pontos mais relevantes em um processo, geram hipóteses a
partir do aprendizado da máquina e elaboram respostas utilizando redação
própria.

EXEMPLO
Um escritório de advocacia americano anunciou, em 2016, que havia contratado um

robô-advogado. Tratava-se do software ROSS Intelligence que, por meio do sistema

de computação cognitiva da empresa International Business Machines Corporation

(IBM), é capaz de utilizar Inteligência Artificial para realizar pesquisas jurídicas

avançadas. Empregando linguagem comum, os advogados da empresa podem fazer

perguntas ao sistema como se estivessem conversando com um colega de trabalho.

ROSS INTELLIGENCE
“Em 2016, a mídia especializada mostrou grande alvoroço ao noticiar a
primeira contratação de ROSS, o “robô advogado”, pela banca de advocacia
nova-iorquina Baker & Hostetler. A notícia levou o público, sobretudo os
advogados ao redor do globo, a cogitar que a advocacia estaria prestes a
sofrer mudanças decisivas... O principal atributo que diferencia o Watson dos
demais computadores é sua capacidade de trabalhar diretamente com a
linguagem humana, dispensando assim que seu interlocutor tenha
conhecimentos de programação”

(AB2L, 2017)

Quanto mais o software é utilizado, mais elaboradas se tornam suas pesquisas,


pois o algoritmo aprende por meio de um sistema de feedback. Esse sistema
tem por objetivo diminuir os custos com pessoal e o tempo necessário para
realizar pesquisas, uma vez que pode executar milhares de instruções por
segundo.

EXEMPLO
No estado americano de Wisconsin, outro algoritmo, denominado Correctional
Offender Management Profiling for Alternative Sanctions (COMPAS), também
ganhou muito destaque. Ele é utilizado para calcular a probabilidade de
reincidência de um réu, baseado apenas em fatos e comportamentos, evitando,
assim, erros humanos. Esse sistema funciona por meio de um formulário que,
após preenchido e processado, gera um valor entre 1 e 10. Quanto maior é o
valor, maior é considerada a periculosidade do indivíduo.

O algoritmo utiliza diversos critérios para o cálculo da probabilidade de


reincidência dos acusados. Entre eles estão:

CRITÉRIOS DO A

A existência de outros infratores na família ou entre grupos de amizade

O nível de envolvimento em crimes

O grau de escolaridade

A situação financeira

Os hábitos relacionados à recreação e ao lazer


O histórico de uso de drogas

Os dados sobre “pensamentos criminosos”

 Atenção! Para visualização completa da tabela utilize a rolagem horizontal


Tais informações são fornecidas pelos próprios acusados ao responderem o
questionário, que gera uma árvore de decisão.

O sistema traça o perfil do suspeito e o disponibiliza para que o juiz


responsável tome as medidas cabíveis. Inicialmente, a intenção do sistema era
avaliar a necessidade de prisão do acusado em fases anteriores ao julgamento,
porém, mesmo que indiretamente, o juiz e o júri acabam sendo influenciados
pelo perfil traçado pelo algoritmo no momento de decidirem a sentença.

As ferramentas de apoio de tomada de decisão geram muita polêmica em todo


o mundo, pois o resultado obtido pelo sistema pode influenciar diretamente no
tipo de pena ou no tempo de prisão de acusados.
Fonte: ilixe48 / Freepik

Entretanto, podemos afirmar que um algoritmo opera de forma imparcial, não


observando, gênero, etnia, religião ou qualquer outra fonte de preconceito,
além de não ser passível de alterações de humor ou outras variações
subjetivas.

Outro modelo que ganhou muita atenção foi o de Daniel Martin Katz,

desenvolvido em 2014. Por meio de um algoritmo de aprendizado de máquina

(machine learning) com métodos estatísticos, ele conseguiu prever 70% das

decisões da Suprema Corte americana. Para isso, foram analisadas 28 mil

decisões anteriores e mais de 240 mil votos. Utilizando apenas essas

informações, as previsões foram realizadas.

DANIEL MARTIN KATZ


“Cientista, tecnólogo e professor que aplica uma abordagem politécnica
inovadora no ensino de Direito, a fim de ajudar a formar advogados para os
maiores desafios da sociedade de hoje. Tanto sua pesquisa, quanto seu
método de ensino integram Ciência, Tecnologia, Engenharia e Matemática.”

Site do danielmartinkatz

MAS QUAL OBJETIVO DE KATZ?


O objetivo de Katz é reduzir os custos da Justiça e, consequentemente, torná-
la mais acessível e eficiente. Seus resultados são considerados um avanço na
denominada ciência da Previsão Legal Quantitativa – Quantitative Legal
Prediction (QLP) – propiciando ampliação das potenciais aplicações de
métodos quantitativos na análise do Direito.

Em seu artigo, Katz afirma que chegou o momento em que softwares passarão
a desenvolver tarefas próprias de advogados, inclusive algumas consideradas
não triviais. Dessa maneira, uma vez criadas as soluções computacionais, a
pressão pela redução de despesas forçaria escritórios e clientes a utilizarem a
tecnologia para funções antes realizadas por equipes de operadores jurídicos.
O resultado seria tão impactante, que seria necessário repensar a própria
prática do Direito.

Após estudarmos esses três casos, podemos concluir que o pensamento


computacional está cada vez mais presente no mundo jurídico. Apesar de não
sabermos quanto tempo demorará para ele ocupar um espaço significativo nos
tribunais brasileiros, precisamos estar preparados para essa nova realidade
que está se desenhando, tornando-nos verdadeiros profissionais do século
XXI, compreendendo e dominando o pensamento computacional.

O pensamento computacional é muito importante para a Gestão. Neste vídeo,


você entenderá como se preparar para o mercado de trabalho, fazendo o bom
uso dessa estratégia.
VERIFICANDO O APRENDIZADO
1. A ECONOMIA CRIATIVA É UMA ÁREA QUE, CADA VEZ
MAIS, VEM UTILIZANDO O PENSAMENTO COMPUTACIONAL
EM SEU ESTUDO E DESENVOLVIMENTO. PODEMOS
IDENTIFICAR COMO ECONOMIA CRIATIVA:

I. DESIGN – DE INTERIORES, GRÁFICO, DE MODA, DE JOIAS


E DE BRINQUEDOS
II. NOVAS MÍDIAS – SOFTWARE, GAMES E DEMAIS
CONTEÚDOS DIGITAIS
III. EXPRESSÕES CULTURAIS TRADICIONAIS –
ARTESANATO, FESTIVAIS ETC.

DOS ITENS ANTERIORES, ESTÁ(ÃO) CORRETO(S):

Somente I

I e III

I e II

I, II e III

2. A UTILIZAÇÃO DE MÁQUINAS QUE AUXILIAM O SER


HUMANO NAS MAIS DIVERSAS ATIVIDADES, OU SEJA, NO
PLENO USO DO PENSAMENTO COMPUTACIONAL, ATINGE
ÁREAS CADA VEZ MAIS INESPERADAS. TALVEZ, O DIREITO
SEJA UMA DELAS, POR SE TRATAR DE UMA PRÁTICA
TIPICAMENTE HUMANA, JÁ QUE SE BASEIA, DE MODO
PRIORITÁRIO, NA ARTE ARGUMENTATIVA.

SOBRE ESSA UTILIZAÇÃO, PODEMOS AFIRMAR QUE:


I. ALÉM DA AUTOMATIZAÇÃO DE TRABALHOS MANUAIS,
POR MEIO DA UTILIZAÇÃO DE INTELIGÊNCIA ARTIFICIAL,
TEM SIDO POSSÍVEL INTERPRETAR TEXTOS, IDENTIFICAR
TENDÊNCIAS E ATÉ MESMO SUGERIR DECISÕES COM
BASE NESSAS INFORMAÇÕES JURÍDICAS ANTERIORES.
II. HÁ PREVISÃO DE QUE, NAS PRÓXIMAS DÉCADAS,
HAVERÁ SOFTWARES QUE FAÇAM BUSCAS INTELIGENTES
NA LITERATURA JURÍDICA, IDENTIFICANDO OS PONTOS
MAIS RELEVANTES EM UM PROCESSO E GERANDO
HIPÓTESES PARA OUTROS CASOS SIMILARES.
III. O QUE TEM DIMINUÍDO A VELOCIDADE DA UTILIZAÇÃO
DE SOFTWARES NO ÂMBITO DO DIREITO É O AUMENTO
DOS CUSTOS COM PESSOAL, BEM COMO O AUMENTO DO
TEMPO NECESSÁRIO PARA REALIZAR PESQUISAS QUE
AJUDARIAM EM UM PROCESSO JURÍDICO.

DAS AFIRMATIVAS ANTERIORES, ESTÁ(ÃO) CORRETA(S):

Somente I

II e III

Somente II

I e III

GABARITO

1. A Economia Criativa é uma área que, cada vez mais, vem utilizando o
pensamento computacional em seu estudo e desenvolvimento. Podemos
identificar como Economia Criativa:

I. Design – de interiores, gráfico, de moda, de joias e de brinquedos


II. Novas mídias – software, games e demais conteúdos digitais
III. Expressões culturais tradicionais – artesanato, festivais etc.
Dos itens anteriores, está(ão) correto(s):
A alternativa "D " está correta.

De acordo Newbigin (2010, p. 15), a Economia Criativa compreende “aquelas


atividades que têm sua origem na criatividade, na habilidade e no talento
individual, e que potencializam a criação de empregos e riqueza por meio da
geração e exploração da propriedade intelectual”. Portanto, as categorias
apresentadas aqui, além de outras como edição e impressão, Patrimônio
Cultural, estão no rol das atividades criativas.

2. A utilização de máquinas que auxiliam o ser humano nas mais diversas


atividades, ou seja, no pleno uso do pensamento computacional, atinge
áreas cada vez mais inesperadas. Talvez, o Direito seja uma delas, por se
tratar de uma prática tipicamente humana, já que se baseia, de modo
prioritário, na arte argumentativa.

Sobre essa utilização, podemos afirmar que:


I. Além da automatização de trabalhos manuais, por meio da utilização de
Inteligência Artificial, tem sido possível interpretar textos, identificar
tendências e até mesmo sugerir decisões com base nessas informações
jurídicas anteriores.
II. Há previsão de que, nas próximas décadas, haverá softwares que
façam buscas inteligentes na literatura jurídica, identificando os pontos
mais relevantes em um processo e gerando hipóteses para outros casos
similares.
III. O que tem diminuído a velocidade da utilização de softwares no âmbito
do Direito é o aumento dos custos com pessoal, bem como o aumento do
tempo necessário para realizar pesquisas que ajudariam em um processo
jurídico.
Das afirmativas anteriores, está(ão) correta(s):
A alternativa "A " está correta.

O avanço dos softwares utilizados na área do Direito já permite essa busca


inteligente na literatura jurídica e, ao contrário do afirmado, com custos muito
menores e velocidade muito maior do que as pesquisas realizadas no formato
tradicional. Alguns deles são capazes de aprender, ou seja, de se tornar mais
eficientes a cada pesquisa que realizam.

MÓDULO 3

Reconhecer a relevância do pensamento computacional nas áreas de


Educação e Engenharias

EDUCAÇÃO NO SÉCULO XXI

Fonte: macrovector / freepik

Após compreender a mudança que vem ocorrendo no mundo, você pode se


perguntar:
Como podemos garantir que todos tenham a mesma oportunidade de
sucesso nessa nova economia?

A resposta a este questionamento não é simples, mas podemos iniciar com


mudanças significativas na Educação.

Os resultados das mudanças no campo da Educação não são de curto prazo.


Uma mudança metodológica ou curricular pode levar uma geração inteira até
ser percebida. Isso se deve à própria natureza do campo da Educação, que
trabalha a formação do indivíduo, e não apenas o acúmulo de conhecimento.

Ao longo do tempo, foi sendo desenvolvido, nas sociedades ocidentais, um


pensamento mais utilitarista acerca da educação, que envolve questões como:

Para que aprender isso?


Para que serve?
Como se aplica?

Essa maneira de encarar a educação desvirtua a concepção do próprio campo


educacional, que pensa na formação como um todo, e não de forma
fragmentada. Forma-se o indivíduo e o cidadão, lançando-se mão de saberes
diversos, oriundos das ciências humanas, sociais, da natureza, exatas,
biológicas e afins.

Contudo, isso não significa, de forma alguma, que a teoria esteja afastada da
prática. Ao contrário, a educação contemporânea está cada vez mais vinculada
à prática e as tecnologias educacionais são ferramentas fundamentais na
construção desse processo, o que transforma a aprendizagem em algo
tangível, estimulando o interesse do aluno.

As aulas de Matemática, muitas vezes, podem ser o terror dos estudantes, pois
alguns deles não compreendem a importância de aprender a calcular uma
equação de 2º grau, por exemplo. Muito do que aprendemos pode ser utilizado
em situações cotidianas, enquanto outros conhecimentos servem para
desenvolver nosso raciocínio e nos tornar capazes de resolver problemas
complexos de diversas naturezas. O desenvolvimento do pensamento crítico e
de competências emocionais prepara os alunos para o sucesso a longo prazo.
O aprendizado do pensamento computacional ajuda os jovens a desenvolver
habilidades importantes não apenas para as disciplinas da área de exatas, mas
também de Ciências Sociais, Artes e Linguagem. Assim, eles serão mais
capazes de articular um problema e de pensar logicamente.

Isso os ajuda não só a resolver problemas, mas também a perceber certas


abordagens adotadas para a solução, ajudando a explorar causa e efeito, e a
analisar como suas ações ou as de outras pessoas afetam a situação em
questão. Essas habilidades podem ter impactos poderosos sobre os jovens e
sobre como gerenciam seus relacionamentos com as pessoas a seu redor.
Fonte: freepik / freepik

VOCÊ SABIA
O governo dos Estados Unidos possui uma iniciativa para preparar as crianças desde

cedo para o “emprego do futuro”. Isso não significa simplesmente saber utilizar

computadores, mas agir e tomar decisões com base nos quatro pilares do pensamento

computacional.

Por meio do programa Ciência da Computação para Todos, o governo dos Estados

Unidos leva essa iniciativa a centenas de escolas por todo o país, oferecendo a
crianças, principalmente a meninas e minorias, a oportunidade de criar suas próprias

soluções para os problemas do mundo e, também, de ter melhores condições para

concorrer a vagas no mercado de trabalho dos anos vindouros.

Para que isso seja possível, os professores, formados em uma geração anterior,

precisam receber treinamento especial para conhecer os diferentes tipos de

abordagem para cada faixa etária, e garantirndo que o processo de ensino e

aprendizagem tenha qualidade.

A INSERÇÃO DO PENSAMENTO
COMPUTACIONAL NA ESCOLA NÃO VISA
TÃO SOMENTE À EMPREGABILIDADE, À
COMPETITIVIDADE E À ASCENSÃO
ECONÔMICA, MAS PRINCIPALMENTE À
CONSTRUÇÃO DE COMPETÊNCIAS E
HABILIDADES FUNDAMENTAIS AOS SERES
HUMANOS PARA O EFETIVO EXERCÍCIO DA
CIDADANIA EM UMA SOCIEDADE DIGITAL.
(BLIKSTEIN, 2008)

Ainda sobre os Estados Unidos, em 2010, algumas organizações propuseram


um conjunto de ferramentas, denominadas Computational Thinking Toolkit (Kit
de ferramentas para pensamento computacional), a fim de desenvolver as
habilidades do pensamento computacional em escolas de Educação Básica.
As ferramentas foram estruturadas em nove conceitos, baseados nos
quatro pilares estudados anteriormente.
São eles:
1. Coleta de dados;
2. Análise de dados;
3. Representação de dados;
4. Decomposição de problemas;
5. Abstração;
6. Algoritmos;
7. Automação;
8. Paralelismo;
9. Simulação.

Fonte: pressfoto / freepik

Esses nove conceitos devem ser aplicados em atividades práticas, de


modo a proporcionar o desenvolvimento cognitivo dos alunos,
substituindo, assim, a metodologia tradicional de aulas expositivas.
Dessa maneira, o aluno deixa de ser apenas um receptor passivo e passa
a ser ator principal na construção de seu conhecimento, aumentando seu
grau de entendimento e o interesse pelas aulas.
ALÉM DOS ESTADOS UNIDOS, DIVERSOS PAÍSES
DESENVOLVIDOS APRESENTAM INICIATIVAS
PROMISSORAS NA INCLUSÃO DO PENSAMENTO
COMPUTACIONAL NOS ENSINOS FUNDAMENTAL E
MÉDIO, POIS, ASSIM COMO A ALFABETIZAÇÃO E O
RACIOCÍNIO LÓGICO, QUANTO MAIS CEDO SE
APRENDER O PENSAMENTO COMPUTACIONAL,
MAIOR SERÁ A FACILIDADE NO PROCESSO DE
APRENDIZAGEM.
E COMO É NO BRASIL?
Atualmente, no Brasil, o ensino do pensamento computacional ainda está em
fase embrionária, mas já há algumas iniciativas muito interessantes. A Base
Nacional Comum Curricular (BNCC), homologada em 2018, referencia
diretamente o pensamento computacional em diversos trechos. A parte a
seguir trata da progressão das aprendizagens essenciais do Ensino
Fundamental para o Ensino Médio:

A ÁREA DE MATEMÁTICA, NO ENSINO


FUNDAMENTAL, CENTRA-SE NA
COMPREENSÃO DE CONCEITOS E
PROCEDIMENTOS EM SEUS DIFERENTES
CAMPOS E NO DESENVOLVIMENTO DO
PENSAMENTO COMPUTACIONAL, VISANDO À
RESOLUÇÃO E FORMULAÇÃO DE
PROBLEMAS EM CONTEXTOS DIVERSOS.
(BRASIL, 2017, p. 471)

ATENÇÃO
Nesse aspecto, o pensamento computacional atua como ferramenta importante para

combater a rejeição à Matemática, da qual tratamos anteriormente. Mas, para além


disso, atua no sentido de pensar problemas de forma global, construindo diversas

soluções possíveis. Novas habilidades e competências passam a ser desenvolvidas

como análise e lógica, operacionalizadas a partir do conhecimento matemático desde

a infância.

Assim, a BNCC indica que o pensamento computacional:

[...] ENVOLVE AS CAPACIDADES DE


COMPREENDER, ANALISAR, DEFINIR,
MODELAR, RESOLVER, COMPARAR E
AUTOMATIZAR PROBLEMAS E SUAS
SOLUÇÕES, DE FORMA METÓDICA E
SISTEMÁTICA, POR MEIO DO
DESENVOLVIMENTO DE ALGORITMOS.
(BRASIL, 2017, p. 473)

A proposta da Base Nacional Comum Curricular é criar uma familiaridade com


as tecnologias e suas ferramentas, como planilhas eletrônicas e calculadoras,
desde o Ensino Fundamental.

Quando falamos nessa tecnologia, de imediato, muitos se remetem à área


de Exatas, certo?

Devemos lembrar, porém, que todas as áreas do conhecimento necessitam


dessas habilidades e competências.

EXEMPLO
Construir gráficos a partir do domínio das planilhas eletrônicas é importante para

compreender a demografia no estudo da Geografia, o tráfico de escravos no estudo de

História, entre tantos outros exemplos e demais possibilidades.

O Ministério da Educação (MEC) incentiva o desenvolvimento de competências


e habilidades relacionadas ao uso das tecnologias de forma transversal,
presentes em todas as áreas do conhecimento. Além disso, aborda o assunto
de forma direcionada, focando na compreensão das tecnologias e em sua
aplicação em diversas práticas sociais.

O papel dessas tecnologias não é apenas tornar o processo de aprendizagem


mais estimulante, mas sim trabalhar com o aluno na construção do
conhecimento por meio de tais ferramentas.

Na implantação do pensamento computacional nas escolas, esbarramos


em alguns problemas.

Limitar a aulas de informática e a operação de editores de textos e


navegadores de internet.

A falta de professores capacitados para aplicar esse conteúdo

VOCÊ SABIA
A tendência é que tal cenário mude em breve: professores de todas as áreas poderão

reestruturar o conteúdo que lecionam para transformá-lo em um problema que possa

ser solucionado a partir da aplicação do pensamento computacional em atividades

tanto escolares, quanto extracurriculares.

APLICAÇÃO DO PENSAMENTO
COMPUTACIONAL
Vamos conhecer agora algumas ferramentas utilizadas para tornar
possível a aplicação do pensamento computacional na área educacional.
Bell, Witten e Fellows (2011) propõem uma técnica para ensinar Ciência
da Computação por meio de atividades de entretenimento, sem a
necessidade do uso do computador. Além de ser de fácil aplicação, essa
técnica favorece países e lugares menos desenvolvidos, onde não há fácil
acesso a tecnologias, fazendo, assim, um papel social.
Utilizando jogos, atividades interativas e desenvolvimento colaborativo, essa
técnica ensina pequenos conceitos de computação, conforme mostra a tabela a
seguir:

Jogos

De cartas pintadas e ordenadas Aprender números b

De palavras Reconhecer padrõe

 Atenção! Para visualizaçãocompleta da tabela utilize a rolagem horizontal


Exemplos de atividades interativas para aplicação do pensamento
computacional na educação
Fonte: BELL, WITTEN E FELLOWS, 2011.

VAMOS VER UM EXEMPLO?


O jogo de palavras, a criança deve procurar pelo conjunto de letras repetido e
substituir por um retângulo em branco com uma seta. A figura a seguir ilustra a
atividade:
Computação sem computador (Fonte: BELL; WITTEN; FELLOWS, 2011, p. 24.)

Em uma amostra pequena, a quantidade de letras economizadas parece pouca


mas, quando aplicamos a mesma técnica em um poema completo, a economia
pode ser muito grande. Veja:
Computação sem computador

Fonte: BELL; WITTEN; FELLOWS, 2011, p. 25.

Apesar de parecer uma brincadeira ou um joguinho muito simples, essa mesma


técnica é utilizada para compactar arquivos nos computadores.

OUTRAS FERRAMENTAS
PLATAFORMA SCRATCH

Oferece uma linguagem de programação visual baseada em blocos, voltada


para crianças de 8 a 16 anos, mas utilizada por pessoas de todas as idades. É
disponibilizada em mais de 40 idiomas e ajuda os jovens a aprenderem a
pensar criativamente, raciocinar sistematicamente e trabalhar em colaboração.

PLATAFORMA HORA DO CÓDIGO

Propõe uma experiência de uma hora de Ciência da Computação. Seu objetivo


é mostrar que qualquer um pode aprender o básico de programação e ampliar
a participação no campo computacional. Também com adesão mundial, já
alcançou 100 milhões de alunos que programaram em um dos 45 idiomas
disponíveis.

O estudante pode selecionar entre os diversos temas de programação um que


seja de seu interesse, desde a construção de um jogo simples até a criação de
músicas com seleção de instrumentos e notas musicais. Uma vantagem dessa
ferramenta é que, quando não houver laboratório de informática disponível para
os alunos, eles poderão utilizar smartphones que, individualmente ou em
pares, podem proporcionar o aprendizado necessário.
CODE.ORG

É uma organização sem fins lucrativos, com maior destaque e apoio direto de
governos e das principais empresas de tecnologia (Amazon, Microsoft,
Facebook, Google etc.). Seu objetivo é alcançar todas as crianças em todas as
escolas do mundo, para que possam ter a oportunidade de aprender o
pensamento computacional.

Desde 2013, em parceria com todas as iniciativas vistas anteriormente, o


projeto já alcançou 10% de todos os alunos do mundo, o que é um número
incrível para tão pouco tempo, se considerarmos todas as desigualdades
sociais do planeta. Isso foi possível devido a parcerias com Mistérios da
Educação de diversos países e apoio da UNESCO.

A Code.org é uma plataforma totalmente gratuita que oferece cursos para


estudantes, treinamento e capacitação para professores e educadores e
organiza campanhas para quebrar estereótipos criados em relação à Ciência
da Computação. Para tornar o aprendizado mais atrativo aos estudantes, essas
iniciativas utilizam a gamificação .

HORA DO CÓDIGO
Voluptate consequat amet nostrud ullamco. Ut consectetur deserunt ea Lorem
deserunt in aliqua nulla. Ullamco ut sint aliqua id eiusmod ipsum ex pariatur
amet nulla. Do sit excepteur fugiat deserunt do occaecat ullamco.

fonte.com.br

CODE.ORG
“Organização sem fins lucrativos dedicada a expandir o acesso à Ciência da
Computação em escolas e aumentar a participação das mulheres e das
minorias não representadas. Nossa visão é de que todo estudante em toda
escola tenha a oportunidade de aprender Ciência da Computação, assim como
aprende Biologia, Química ou Álgebra.”

Fonte:code.org

GAMIFICAÇÃO
Expressão criada em 2002 para representar técnicas que utilizam dinâmicas de
jogos, cujo objetivo é facilitar o entendimento de determinado assunto por meio
da interatividade e da motivação.

PENSAMENTO COMPUTACIONAL E
ENSINO DA ENGENHARIA
Fonte: ThisisEngineering RAEng / unsplash

Grande parte do ensino de Engenharia requer uma base sólida de Matemática,


além de compreensão e vivência práticas. Porém, muitas mudanças recentes
no Ensino Médio resultaram em queda nas habilidades e nos conhecimentos
dos alunos em áreas como Aritmética e Leitura. Combinado com os alunos
provenientes de uma distribuição geográfica maior, isso resulta em um conjunto
heterogêneo de habilidades iniciais entre os estudantes.
Fonte: ThisisEngineering RAEng / unsplash

ENGENHARIA
Fonte: jcomp / Freepik

MATEMÁTICA
Fonte: Pim Chu / unsplash

VIVENCIAS PRÁTICAS
Um segundo desafio está relacionado à crescente complexidade dos sistemas
que os engenheiros recém-qualificados deverão analisar, projetar e testar em
sua carreira. Não é mais adequado apenas compreender os princípios
subjacentes. Um engenheiro graduado deve agora ter um conhecimento de
trabalho muito mais profundo dos processos envolvidos no projeto desses
sistemas complexos.

Abordar a crescente lacuna entre as habilidades desiguais dos novos alunos e


as expectativas mais altas dos alunos de Graduação, dentro da duração
limitada dos cursos típicos de Engenharia, é um desafio cada vez mais difícil.
Para promover essa transformação, tais cursos precisam integrar o
pensamento computacional em todos os aspectos do currículo.

Fonte: Arif Riyanto / unsplash

COMENTÁRIO
As experiências de várias instituições acadêmicas líderes dos Estados Unidos e da

Europa demonstram que, quando isso é feito de forma sistemática, os alunos

aprendem rapidamente conceitos matemáticos desde o início, usando ferramentas de

software simbólicas e numéricas. Além disso, os estudantes adquirem uma

compreensão mais profunda de programação e de Engenharia de Sistemas com o

aprendizado prático baseado em projetos, por meio de laboratórios virtuais.


OS ALUNOS TAMBÉM APRENDEM A:
PENSAR DE FORMA INDEPENDENTE

A INVESTIGAR E A EXPLORAR AMBIENTES

A APLICAR AS FERRAMENTAS USADAS PELOS ENGENHEIROS EM SUA


PROFISSÃO

As plataformas de programação e simulação numérica, como, por exemplo,


o MATLAB , podem atuar como facilitadoras para promover a transição dos
cursos tradicionais de Engenharia para os cursos modernos, onde os requisitos
de análise definidos pelos organismos de acreditação, como o Conselho
Regional de Engenharia e Agronomia (CREA), são atendidos.

MODAL
Do inglês Matrix Laboratory, é um software (programa) voltado para cálculos
numéricos. Por ser interativo e possuir alto desempenho, é muito utilizado
quando se busca exatidão e velocidade na solução desses cálculos.
Fonte:wikpediaUma superfície criada no Matlab .

Essas plataformas permitem a integração do pensamento e das ferramentas


computacionais para promover uma compreensão mais profunda dos princípios
de Engenharia. Elas também permitem o uso de aplicativos simples para dar
vida a conceitos, antes de incentivar e capacitar os alunos a desenvolverem
suas próprias soluções.

Hoje, a maioria dos estudantes se sente confortável usando


computadores ao iniciar seus estudos, mas poucos se sentem à vontade
em aplicá-los para resolver problemas de Engenharia. Para fechar essa
lacuna, o pensamento computacional e o desenvolvimento de habilidades
associadas têm sido cada vez mais integrados ao longo do currículo.
Embora a base matemática para o ensino desta área seja relativamente
estável, a complexidade e a natureza multidisciplinar dos problemas de
Engenharia exigem atualmente que os cursos atendam a vários objetivos de
aprendizado ao mesmo tempo.

A capacidade de usar softwares não é apenas um requisito para os


engenheiros de hoje, mas também uma solução que permite aos alunos
colocarem, em prática, a teoria que aprenderam em sistemas reais.

A experiência com uma variedade de ferramentas pode ajudar os estudantes a


ampliar seus horizontes, mas esse benefício deve ser ponderado em relação à
capacidade de explorar conceitos de Engenharia em maior profundidade,
usando – e ganhando experiência com isso – o mesmo ambiente de
ferramentas em cada ano de seus estudos.

Professores em todo o mundo descobriram que o uso do mesmo conjunto de


softwares, desde o primeiro ano até o final do curso, aprimora a experiência de
aprendizado – particularmente quando essas mesmas ferramentas são usadas
por engenheiros que trabalham com problemas do mundo real na indústria.

Veja como tem sido a aplicação nos cursos de graduação


APLICAÇÃO NO INÍCIO DOS ESTUDOS

Em vez de começar no primeiro ano de estudo com construções abstratas de


programação, em vários locais do mundo, os alunos são introduzidos à
computação por simulação e experimentam conceitos de Engenharia
diretamente usando plataformas de hardware, como o LEGO Mindstorms .
Essa introdução promove a retenção e ajuda a mitigar a lacuna de
conhecimento em tópicos de Matemática e Engenharia que, normalmente, são
abordados nos semestres posteriores. As habilidades de programação são
aprimoradas nos primeiros semestres dos cursos de Matemática e Física, que
servem como pré-requisitos para entrar na sequência da Engenharia.
LEGO MINDSTORMS
Conjunto de hardware e software para o desenvolvimento de robôs
programáveis com base em blocos de construção do sistema Lego – brinquedo
cuja ideia principal é fazer combinações por meio do encaixe de pequenas
peças, geralmente de plástico.

LEGO Mindstorms (Fonte:wikpedia).

COMENTÁRIO
À medida que o nível de conforto dos alunos com programação aumenta e a

complexidade dos problemas estudados também, o componente de computação é

estendido para incluir um simulador.


GERALMENTE, OS CURRÍCULOS DE
ENGENHARIA CULMINAM EM UMA SÉRIE DE
CURSOS APLICADOS EM LABORATÓRIO,
NOS QUAIS OS ESTUDANTES SÃO
INCENTIVADOS A DEMONSTRAR AS
HABILIDADES DE RESOLUÇÃO DE
PROBLEMAS, ADQUIRIDAS COM
DESENVOLVIMENTO DE PROJETOS
DESENVOLVIDOS ANTERIORMENTE.
Ao ajudar a gerar entusiasmo, estabelecer um objetivo cedo e introduzir
habilidades que são reforçadas posteriormente, a integração do pensamento
computacional serve para envolver os alunos, mantendo-os motivados à
medida que o nível de complexidade dos projetos aumenta. Isso permite
aprimorar o aprendizado e aumentar a retenção.

Neste vídeos você conhecerá os principais desafios da aplicação do


pensamento computacional na educação.

VERIFICANDO O APRENDIZADO
1. QUAL É O OBJETIVO DE INCLUIR O PENSAMENTO
COMPUTACIONAL NO CURRÍCULO DA EDUCAÇÃO
BÁSICA?

Estimular as crianças a escolherem a graduação em Tecnologia da Informação.


Ocupar o tempo das crianças e incentivar a escola em tempo integral.

Desenvolver o raciocínio das crianças para a solução de problemas complexos.

Estimular as crianças a gostarem de Matemática.

2. QUAL É A JUSTIFICATIVA DE INTEGRARMOS O ESTUDO


DO PENSAMENTO COMPUTACIONAL COM O ENSINO DA
ENGENHARIA?

A Engenharia da Computação é um potencial mercado.

Os sistemas de Engenharia estão cada vez mais complexos, e precisamos de


engenheiros qualificados.

Os alunos precisam adquirir conhecimentos básicos em informática.

É necessário cumprir a carga horária mínima obrigatória estabelecida pelo


Ministério da Educação em laboratórios de informática.

GABARITO

1. Qual é o objetivo de incluir o pensamento computacional no currículo


da Educação Básica?

A alternativa "C " está correta.

O pensamento computacional, ensinado desde os primeiros anos da Educação


Básica, permite que estudantes desenvolvam habilidades de resolver
problemas complexos pelo ponto de vista da Computação.

2. Qual é a justificativa de integrarmos o estudo do pensamento


computacional com o ensino da Engenharia?

A alternativa "B " está correta.


Com o desenvolvimento tecnológico – especialmente o digital – cada vez mais
veloz, é necessário que o campo da Engenharia também esteja atento a sua
utilização. Afinal, quanto mais exatidão nos cálculos – com a utilização do
software MATLAB, por exemplo – maior segurança no produto final entregue à
sociedade.

CONCLUSÃO

CONSIDERAÇÕES FINAIS
Como você deve ter percebido, há inúmeras possibilidades de utilização do
pensamento computacional, seja nas áreas que lhe foram apresentadas, seja
em tantas outras que você já identificou ou que identificará ao longo de sua
profissão.  

É muito importante que você busque conhecer cada uma das ferramentas
indicadas, explorando possibilidades, identificando aquelas que melhor se
aproximam de sua área de conhecimento e interesse. Afinal, como você
também já sabe, as habilidades são aprimoradas na atuação prática.

Em se tratando de pensamento computacional, essa prática está em plena


transformação, o que exige de cada um de nós a busca incessante pelo
conhecimento e aprimoramento.
AVALIAÇÃO DO TEMA:

REFERÊNCIAS
AB2L. Associação Brasileira de LawTechs e LegalTechs. Better call ROSS.
Artigos: Inteligência Artificial. 01.10.2017 

AZEVEDO, R. Entenda o que é bitcoin. Revista Exame. On-line. Caderno


MERCADOS. 16.06.2017 

ANDRION, R. Você sabe o que é QR Code? – A gente explica. [S. l.]: Olhar
Digital, 2019.  

BELL, T.; WITTEN, I.; FELLOWS, M. Computer Science Unplugged.


Christchurch: Canterbury University, 2011.

BLIKSTEIN, P. O pensamento computacional e a reinvenção do computador na


educação. [S. l.]: Blikstein Consultoria, 2008.

BRASIL. Ministério da Educação. Base Nacional Comum Curricular: educação


é a base. Brasília: MEC, 2017. 

BRASIL. Ministério do Turismo. Ministério da Cidadania. Secretaria Especial da


Cultura. Assessoria de Comunicação. Quatro cidades brasileiras foram
selecionadas para concorrer ao título de Cidade Criativa da Unesco. Brasília:
MTur, MC, Secult, 2019.  

CALIL, M. As habilidades mais buscadas em entrevistas de emprego. Revista


Exame, 14 maio 2019. 

FREITAS, V. P. de. Bacharel sem OAB poderia trabalhar como paralegal. [S.
l.]: Consultor Jurídico, 2010. 

MAYBIN, S. Sistema se algoritmo que determina pena de condenados cria


polêmica nos EUA. [S. l.]: BBC News, 2016. 
NEWBIGIN, J. A economia criativa: um guia introdutório. London: British
Council, 2010. 

UNITED NATIONS. Creative industries and development. In: UNITED


NATIONS CONFERENCE ON TRADE AND DEVELOPMENT, XI., 2004, São
Paulo, Documents. São Paulo: Centro de Convenções do Anhembi, 2004.

EXPLORE+
 Como vimos, o pensamento computacional vem mudando o mundo a nosso

redor por meio de seus quatro pilares;

 Para compreender melhor esses princípios, a British Broadcasting

Corporation (BBC) preparou algumas lições bem simples e objetivas

em: Computational thinking - KS3 Computing - BBC Bitesize. Pesquise

na internet este material, cujo original está em inglês, mas você pode usar o

tradutor de seu navegador, se assim preferir, para fazer a leitura;

 Em relação à aplicação prática do pensamento computacional nas escolas,

recomendamos que você acesse o site Code.org para conhecer a iniciativa.

CONTEUDISTA
Rafael José do Nascimento Silva

CURRÍCULO LATTES
Guilherme Dutra Gonzaga Jaime

CURRÍCULO LATTES

Você também pode gostar