Buscar

Pensamento Computacional

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 96 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 96 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 96 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Apostila de Pensamento Computacional 
Marcio Quirino - 1 
 
SUMÁRIO 
Introdução aos Princípios Fundamentais da Computação ................................................................... 5 
Introdução .................................................................................................................................................. 5 
1 - Equação essencial dos computadores ......................................................................................... 5 
Equação fundamental ................................................................................................................................ 5 
Humano versus máquina ........................................................................................................................... 7 
A alegoria da caverna............................................................................................................................. 7 
2 - Processo de exploração do potencial dos computadores ........................................................... 8 
Entre códigos e algoritmos: aprendendo a lógica do computador .............................................................. 8 
Código ........................................................................................................................................................ 8 
Algoritmo .................................................................................................................................................... 9 
Definição ................................................................................................................................................ 9 
Programadores versus computadores.................................................................................................. 10 
Como os computadores evoluem ............................................................................................................. 10 
Lei de Moore ........................................................................................................................................ 10 
Reflexão ................................................................................................................................................... 11 
3 - Código de instrução de computadores ....................................................................................... 11 
Códigos em execução .............................................................................................................................. 11 
Preparação ........................................................................................................................................... 11 
Prática 1 ............................................................................................................................................... 11 
Prática 2 ............................................................................................................................................... 12 
Prática 3 ............................................................................................................................................... 13 
Prática 4 ............................................................................................................................................... 15 
Prática 5 ............................................................................................................................................... 16 
Considerações finais ................................................................................................................................ 16 
Explore + .................................................................................................................................................. 17 
Fundamentos de Softwares de Computadores ................................................................................... 18 
Introdução ................................................................................................................................................ 18 
1 - Conceitos básicos de softwares ................................................................................................. 18 
Conhecendo o software ........................................................................................................................... 18 
O que é software? ................................................................................................................................ 18 
Software de código aberto.................................................................................................................... 20 
O que é um programa? ........................................................................................................................ 21 
Como o programa vai parar na memória RAM? ................................................................................... 23 
2 - Softwares funcionais ................................................................................................................... 24 
Sistema Operacional ................................................................................................................................ 24 
Definição .............................................................................................................................................. 24 
Boot e Reboot ...................................................................................................................................... 26 
Versões de Sistemas Operacionais ..................................................................................................... 27 
3 - Tipos de linguagens de programação ........................................................................................ 28 
Apostila de Pensamento Computacional 
Marcio Quirino - 2 
 
Conceito ................................................................................................................................................... 28 
Tipos de linguagem de programação ....................................................................................................... 28 
Linguagem compilada .......................................................................................................................... 28 
Linguagem dinâmica ou interpretada ................................................................................................... 30 
Tendências ........................................................................................................................................... 30 
Considerações finais ............................................................................................................................ 31 
Referências .............................................................................................................................................. 31 
Explore + .................................................................................................................................................. 32 
Fundamentos de Hardware ................................................................................................................. 33 
Introdução ................................................................................................................................................ 33 
1 - O que é hardware? ..................................................................................................................... 33 
O conceito de hardware ........................................................................................................................... 33 
A origem da máquina ........................................................................................................................... 33 
O que difere hardware de software? ....................................................................................................33 
Lei de Moore ............................................................................................................................................ 35 
2 - Componentes básicos de hardware ........................................................................................... 37 
Componentes fundamentais do computador ............................................................................................ 37 
Processador e placa-mãe ........................................................................................................................ 37 
CPU ...................................................................................................................................................... 37 
Placa-mãe ............................................................................................................................................ 37 
Memória temporária ................................................................................................................................. 37 
Random Access Memory ..................................................................................................................... 37 
Memória persistente ................................................................................................................................. 38 
Avanço das tecnologias de armazenamento persistente ..................................................................... 39 
Sistemas de arquivos ............................................................................................................................... 40 
Microcontroladores ................................................................................................................................... 40 
3 - Unidades de armazenamento de dados..................................................................................... 41 
Unidades de armazenamento .................................................................................................................. 41 
Byte .......................................................................................................................................................... 42 
Bits e bytes ........................................................................................................................................... 42 
Por que os computadores funcionam dessa forma? ................................................................................ 43 
Considerações finais ................................................................................................................................ 44 
Referências .............................................................................................................................................. 45 
Explore + .................................................................................................................................................. 45 
Representação de Imagens em Computadores ................................................................................. 46 
Introdução ................................................................................................................................................ 46 
1 - Fundamentos de pixels ............................................................................................................... 46 
Fundamentos sobre pixels ....................................................................................................................... 46 
Grade de pixel .......................................................................................................................................... 48 
2 - Esquema Red Green Blue (RGB)............................................................................................... 49 
Apostila de Pensamento Computacional 
Marcio Quirino - 3 
 
Representação de cores em computadores ............................................................................................. 49 
Esquema de Cores RGB .......................................................................................................................... 50 
Funcionamento ..................................................................................................................................... 50 
Pensamento computacional ..................................................................................................................... 51 
Considerações finais ................................................................................................................................ 52 
Referências .............................................................................................................................................. 52 
Explore + .................................................................................................................................................. 52 
Noções de Programação: Exemplos Com Manipulação de Imagens Digitais ................................... 53 
Introdução ................................................................................................................................................ 53 
1 - Manipulação de dados ................................................................................................................ 53 
Manipulação singular de dados ................................................................................................................ 53 
Instruções para manipulação simples de dados ................................................................................... 53 
Prática 1 ............................................................................................................................................... 54 
Considerações ..................................................................................................................................... 55 
Manipulando cada bit ............................................................................................................................... 55 
Considerações ..................................................................................................................................... 56 
Evoluindo a prática ................................................................................................................................... 57 
Prática 3 ............................................................................................................................................... 57 
Prática 4 ............................................................................................................................................... 58 
2 - Repetição for ............................................................................................................................... 58 
Estruturas de repetição ............................................................................................................................ 58 
Estrutura de repetição for ..................................................................................................................... 58 
Vamos praticar ......................................................................................................................................... 60 
Prática 1 ............................................................................................................................................... 60 
Prática 2 ............................................................................................................................................... 61 
Prática 3 ............................................................................................................................................... 61 
Prática 4 ............................................................................................................................................... 63 
3 - Asexpressões em código de computador ................................................................................. 63 
Expressões............................................................................................................................................... 63 
Prática 1 ............................................................................................................................................... 66 
Considerações ..................................................................................................................................... 67 
Enigma 5-2-10 .......................................................................................................................................... 68 
Vamos desvendar o enigma 5-2-10 abordado no vídeo? ..................................................................... 68 
4 - A estrutura condicional if ............................................................................................................. 69 
O que são estruturas condicionais? ......................................................................................................... 69 
Estrutura condicional ............................................................................................................................ 70 
Vamos praticar ......................................................................................................................................... 70 
Prática 1 ............................................................................................................................................... 70 
Vamos experimentar? .......................................................................................................................... 71 
Prática 2 ............................................................................................................................................... 72 
Apostila de Pensamento Computacional 
Marcio Quirino - 4 
 
Continuando a praticar ............................................................................................................................. 72 
Que tal praticar um pouco? .................................................................................................................. 72 
Considerações ..................................................................................................................................... 73 
Pensamento computacional ..................................................................................................................... 74 
Considerações finais ................................................................................................................................ 76 
Referências .............................................................................................................................................. 76 
Explore + .................................................................................................................................................. 76 
Pensamento Computacional e Aplicações na Área de Conhecimento .............................................. 77 
Introdução ................................................................................................................................................ 77 
1 - Pensamento computacional........................................................................................................ 77 
O que é pensamento computacional? ...................................................................................................... 77 
Pilares do pensamento computacional ..................................................................................................... 79 
Apresentação ....................................................................................................................................... 79 
Primeiro pilar — decomposição................................................................................................................ 79 
Segundo pilar — abstração ...................................................................................................................... 80 
Terceiro pilar — reconhecimento de padrões........................................................................................... 80 
Quarto pilar — algoritmos ........................................................................................................................ 81 
Mercado de trabalho e pensamento computacional ................................................................................. 81 
2 - Pensamento computacional em Economia Criativa, Negócios e Ciências Jurídicas ............... 82 
Economia Criativa .................................................................................................................................... 82 
Reinventando o mundo dos negócios ...................................................................................................... 84 
Computação no Direito ............................................................................................................................. 86 
3 - Pensamento Computacional em Educação e Engenharia ........................................................ 88 
Educação no século XXI .......................................................................................................................... 88 
Aplicação do pensamento computacional ................................................................................................ 91 
Pensamento computacional e ensino da Engenharia .............................................................................. 93 
Considerações finais ................................................................................................................................ 94 
Referências .............................................................................................................................................. 95 
Explore + .................................................................................................................................................. 95 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 5 
 
Pensamento Computacional 
Introdução aos Princípios Fundamentais da 
Computação 
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 ao 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. 
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. 
1 - Equação essencial dos computadoresEquação fundamental 
Anotem a equação para não se esquecerem dela. O computador é igual a: 
 
Fonte: Estácio de Sá 
Vamos entender o que é isso. Este conteúdo 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. 
É essencial 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 em que o uso 
tecnológico não é necessário? Pense bem: as salas de aula, os treinamentos... Enfim, tudo, de alguma 
forma, vivencia o uso da tecnologia. 
Apostila de Pensamento Computacional 
Marcio Quirino - 6 
 
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 como usuários. 
 
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. Mas 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 aprendermos a usar a tecnologia do momento, se renegarmos 
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. 
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 conteúdo não requer nenhum 
conhecimento prévio em informática. 
A essência fundamental dos computadores é composta pelas seguintes características: 
 
Fonte: Estácio de Sá 
Você provavelmente deve pensar, “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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 7 
 
Isso ocorre porque discernimento e compreensão são qualidades humanas! É importante 
compreender o seguinte: o computador é realmente um mundo mecânico, em que é 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. Qualquer pessoa que interage com computadores, provendo instruções em 
alguma linguagem de programação, experimenta uma sensação vívida dessa combinação. 
Humano versus máquina 
E a inteligência artificial? E os robôs que podem ter sentimentos? Em todos esses casos, a equação 
fundamental se mantém. 
O computador possui a capacidade de fazer as ações sobre sequenciamento lógico definido, 
com um conjunto de variações e velocidades elevadas, conforme são ampliadas as capacidades de 
armazenamento e processamento. Por outro lado, se os comandos não forem estabelecidos, se os 
parâmetros não estiverem dispostos e estruturados, a máquina chega a um limite. 
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 especificamente 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 universal. 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. 
A alegoria da caverna 
Agora ficou claro? Vejamos mais um caso. 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 8 
 
Enquanto as máquinas não receberam todas as informações para neutralizar, 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. 
2 - Processo de exploração do potencial dos computadores 
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? 
Você repetiu o dia inteiro: 
 
Fonte: Estácio de Sá 
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. 
Comentário 
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. 
Código 
Para compreendermos o 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, por 
exemplo: adicione dias e medidas e compare-os. Você se lembra da equação fundamental, não é mesmo? 
Um computador corresponde à incapacidade de pensar à velocidade X. 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 9 
 
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: 
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? Mas 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 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. 
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. 
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, temos as seguintes etapas: 
1 - O programador procura a cor vermelha na foto e, talvez, checaríamos se ela tem uma forma 
arredondada. 
2 - Em seguida, o programador precisa pensar em uma forma de desempenhar cada um desses 
passos e escrever um algoritmo em instruções tão simples, tornando possível que o computador 
execute cada uma. 
3 - Ao final, o programador tem a função de redução de olhos vermelhos funcionando. 
O resultado do sequenciamento de instruções compreensíveis ao computador para realizar uma 
dada tarefa (ex: redução de olhos vermelhos) é chamado de algoritmo. 
Algoritmo 
Definição 
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 ou o smartphone pudesse 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 10 
 
O programador pode se concentrar em ser criativo, para, então, criar um algoritmo capaz de resolver 
um problema real. 
Programadores versus computadores 
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 agora a diferença entre código e algoritmo: 
 
Fonte: Estácio de Sá 
Suponha que você tenha pensado em um algoritmo com a finalidade de calcular a idade de pessoas 
com base 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. 
Como os computadores evoluem 
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. 
A cada geração, um conjunto geracional antigo de tecnologia está presente no mercado, sendo 
consumido por públicos que não teriam acesso antes. A cada evolução, porém, 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. 
1 - Nos anos 1980, nos Estados Unidos (o que só ocorreu no Brasil a partirdos 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. 
2 - Nos anos 2000, as telas e as conexões eram a novidade. 
3 - Nos anos 2010, as bandas largas se multiplicaram. 
Apostila de Pensamento Computacional 
Marcio Quirino - 11 
 
4 - 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! Mas 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. 
Relembrando 
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 se 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 a demandas que são pensadas e 
estruturadas por nós. 
Depois que uma demanda é pensada, precisamos focar o processamento das informações e a 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. 
3 - Código de instrução de computadores 
Códigos em execução 
Preparação 
Aqui 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 apenas um 
pouco de código. Somente 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, é 
necessário usar uma das linguagens disponíveis para escrever códigos que o computador compreenda. 
Existem várias linguagens de computador diferentes para informar ao computador o que fazer. 
Aqui, utilizaremos uma das mais usadas na atualidade, uma versão simplificada da linguagem 
Javascript, por exemplo, empregando instruções simplificadas para impressão na tela e nas estruturas de 
repetição. 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. 
Prática 1 
Assista ao vídeo para o nosso primeiro exemplo prático. 
Para compreender como imprimir strings, veja a Prática 2 a seguir. 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 12 
 
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 Executar e observe o resultado apresentado em Saída. 
 
Fonte: Estácio de Sá 
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 Executar, você pode ver os textos e valores numéricos corretamente impressos em 
Saída. 
Dica 
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 Executar? Se você mesmo fizer este 
teste na Prática 2, obterá o resultado ilustrado no emulador a seguir. 
Apostila de Pensamento Computacional 
Marcio Quirino - 13 
 
 
Fonte: Estácio de Sá 
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, alguns serão listados em Saída. 
Então, é parte da tarefa de quem escreveu o código corrigir esses erros 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 é que, quando alguém está apenas começando a aprender 
a escrever códigos (programar), será bastante comum se deparar com erros de sintaxe. 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 
Como vimos, 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 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 seis exemplosimprimirá exatamente as três linhas indicadas em vermelho mais 
à frente. 
Apostila de Pensamento Computacional 
Marcio Quirino - 14 
 
 
Fonte: Estácio de Sá 
Saída esperada para cada um dos seis exemplos práticos a seguir: 
 
Fonte: Estácio de Sá 
... 
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 em que 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, nessa caixa. Também poderíamos armazenar qualquer valor que quiséssemos. 
O que significa na prática? 
“Caixa” de nome V, em que atribuímos o valor numérico 7: 
"Caixa" ← 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 essa á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. 
1 - Na primeira linha, atribuímos o valor 7 à variável que optamos por chamar de V. 
2 - Na segunda linha, damos um comando para imprimir o valor da variável, que será 7 neste 
exemplo. 
3 - 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 15 
 
Clique em Executar e observe os resultados. 
 
Fonte: Estácio de Sá 
Notou que, sempre que V é referenciado no código, o computador o substitui pelo valor 7? Esse é 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 Executar. Note que todos 
os locais em que V foi referenciado resultaram em 1980 na saída. 
 
Fonte: Estácio de Sá 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 16 
 
Prática 5 
Escreva, a seguir, um código que atribua a uma variável chamada N a string Guilherme, e depois 
clique em Executar para obter a seguinte Saída: 
Guilherme Guilherme Guilherme 
Eu conheço um amigo chamado Guilherme 
 
Fonte: Estácio de Sá 
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. 
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 material, 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. 
Nesse 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 desse 
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. 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 17 
 
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 material, sugerimos algumas outras. 
Leia os seguintes 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). 
Assista: 
A.I. – Inteligência artificial, de Steven Spielberg (2001). 
Animatrix, de Shinichiro Watanabe, Takeshi Koike, Yoshiaki Kawajiri, Peter Chung, Koji Morimoto, 
Mahiro Maeda e Andrew R. Jones (2003). 
Blade Runner – O caçador de androides, de Ridley Scott (1982). 
Ex-Machina: Instinto artificial, de Alex Garland (2015). 
Gattaca – A experiência genética, de Andrew Niccol (1997). 
Minority report – A nova lei, de Steven Spielberg (2002). 
O homem bicentenário, de Chris Columbus (1999). 
Wall-E, de Andrew Stanton (2008). 
Jornada nas estrelas: Picard, de Akiva Goldsman, Michael Chabon, Kirsten Beyer e Alex Kurtzman 
(2020–atualmente) 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 18 
 
Fundamentos de Softwares de Computadores 
Introdução 
Para que os computadores atuais possam ter alguma utilidade para nós, usuários, é necessário que 
eles recebam instruções das ações que devem executar, por exemplo, para que você assista a um vídeo, 
ouça um podcast ou leia este texto. 
Essas instruções são passadas aos computadores por meio dos softwares, que podemos chamar 
por agora de programas de computador. São esses programas, com inúmeras finalidades, que determinarão 
as ações que podem ser desenvolvidas pelo computador. 
De uma maneira simples, os programas são formados por instruções que são executadas por um 
componente chamado processador. O resultado do processamento das instruções ou de um conjunto de 
instruções determinará a finalidade do programa. 
Estamos falando de computadores, mas isso não ocorre apenas neles. Quaisquer dispositivos 
eletrônicos podem ter softwares para executar uma ação específica, como controlar o funcionamento de 
uma geladeira, ou de propósito mais amplo, como o computador que você carrega no seu bolso, o seu 
smartphone. 
1 - Conceitos básicos de softwares 
Conhecendo o software 
Aqui descreveremos os conceitos básicos sobre software de computadores e responderemos, de 
forma introdutória, às seguintes perguntas: 
1 - O que é software? 
2 - O que é código de computador? 
3 - 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áquinaexercia exatamente a sua função, e repare: estamos indo além da função mecânica. 
Exemplo 
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 II Guerra Mundial, da necessidade de novos desenvolvimentos, de realizar 
processamento de informações e comunicação mais eficientes, cruzando dados e armazenamento. 
Apostila de Pensamento Computacional 
Marcio Quirino - 19 
 
Não basta construir a máquina; é necessário executar, definir o que se deseja, programar e 
reprogramar. 
Softwares para computadores 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 
aprendermos sobre um, novas mudanças estarão chegando. 
Já jogou videogame? Esses aparelhos mudaram e continuam mudando; atualmente, possuem 
gráficos e programações cada vez mais complexos. 
Para entender tudo isso, é necessário compreender o que é, afinal, um software para computadores. 
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: 
 
Fonte: Estácio de Sá 
Essas 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 20 
 
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. 
Vamos a um exemplo: 
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). 
Essa 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. 
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. Esse processo está resumido na imagem a seguir. 
 
Fonte: Estácio de Sá 
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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 21 
 
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.” 
Atenção! 
Trata-se de uma forma de distribuição de software, normalmente gratuita, 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 aberto e softwares de código fechado? 
Código aberto 
Se forem necessários ajustes, correções e incrementações que você queira fazer com o programa – ou se o 
fornecedor original não existe mais –, você tem total liberdade para agir. 
Código fechado 
Se você precisa de algum recurso diferente ou adicional, ou se há um bug que precisa ser corrigido, você 
realmente depende do fornecedor, pois somente ele detém o código-fonte. 
Então, só o fornecedor é capaz de realizar ajustes e correções. 
Em geral, existem 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. 
O que é um programa? 
Observe o lado direito da imagem abaixo e perceba que a CPU está executando uma sequência de 
instruções presentes na memória RAM. Então, um programa/aplicativo como, por exemplo, o navegador de 
Internet Firefox, ou o editor de textos Microsoft Word, nada mais é do que uma enorme sequência dessas 
instruções simples de código de máquina. 
 
Fonte: Estácio de Sá 
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 à 
Apostila de Pensamento Computacional 
Marcio Quirino - 22 
 
CPU, que roda as instruções de forma tão inacreditavelmente rápida que você interage com o Firefox de 
forma fluida e natural. 
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? 
Resposta 
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 é sem sentido e parecido com todos os 
outros. Porém, se você juntar grande quantidade de maneira certa, pode construir uma estrutura complexa, conforme 
sua imaginação e seu objetivo. 
Em linhas gerais, é assim que programas como o Firefox, Chrome, MicrosoftWord, os jogos digitais, 
ou qualquer outro aplicativo são construídos. 
Se olharmos à esquerda da imagem abaixo, veremos a CPU trabalhando para executar as instruções 
de código de máquina disponíveis na RAM. 
 
Fonte: Estácio de Sá 
Comentário 
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, 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 (gigahertz), ou 4 bilhões de operações por segundo, estamos 
nos referindo exatamente a essas pequenas instruções. 
Existe 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: 
Apostila de Pensamento Computacional 
Marcio Quirino - 23 
 
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 imagem a seguir, digamos que a instrução quatro diga: “Pule para trás e 
comece a executar novamente na instrução 1”. 
Nesse 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. 
 
Fonte: Estácio de Sá 
Você sabe o que é goto? 
A 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. 
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. 
A seguir, você fará uma descoberta a respeito do programa. 
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: 
Exemplo 
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. 
O que acontece quando você clica duas vezes no arquivo Firefox.exe, ou no atalho que aponta para 
esse arquivo? 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 24 
 
Basicamente, são os três passos indicados na imagem a seguir: 
 
Fonte: Estácio de Sá 
Veja a descrição de cada um desses passos: 
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. Essa 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 dessa instrução, o ciclo busca-
execução para rodar o programa”. 
Passo 3 
A CPU começa o processo de rodar/executar as instruções de forma incrivelmente rápida. Pronto, 
nosso Firefox está rodando, e o usuário já consegue navegar pela Internet. 
2 - Softwares funcionais 
Sistema Operacional 
Definição 
Comumente, quando se estuda conceitos básicos de software e como ocorre a execução de 
instruções pela CPU, surgem questionamentos como: 
1 - Quem lida com o duplo clique usado para ordenar que um programa seja executado? 
2 - Quem garante que um novo programa carregado na RAM irá para uma região da memória que 
esteja realmente ociosa, sem que haja sobreposição de outros programas em execução? 
3 - Quem ordena o carregamento de um programa do HD para a RAM? 
4 - 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? 
Apostila de Pensamento Computacional 
Marcio Quirino - 25 
 
A resposta às perguntas descritas anteriormente é a seguinte: o Sistema Operacional (SO). 
O SO é 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 imagem a seguir, 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. 
 
Fonte: Estácio de Sá 
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”. Ele 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 por meio de uma janela, mas essa área de saída 
é separada da saída de outros programas. 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 26 
 
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. 
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çãodo 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). 
Comentário 
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, a seguir, o esquema de um computador pessoal. Nesse 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 27 
 
 
Fonte: Estácio de Sá 
Este processo é comumente denominado inicializar (boot ou boot up). 
E quando ocorre o Reboot? 
Resposta 
O reboot ocorre 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. 
Versões de Sistemas Operacionais 
Como já mencionado, a primeira coisa a ser executada quando seu computador é ligado é o SO. 
Antes mesmo de qualquer outro programa do usuário. Agora que conhecemos conceitualmente os sistemas 
operacionais, que tal darmos uma olhada em alguns exemplos de SO e onde são aplicados? 
Computador Pessoal (PC): 
Microsoft Windows: proprietário, pago. Usado em cerca de 80% dos desktops/laptops. 
Linux: aberto, gratuito. Usado em cerca de 80% dos servidores em ambientes de computação em 
nuvem. Em desktops e laptops, é usado principalmente por entusiastas e projetos de inclusão 
social. 
Mac OS X: proprietário, pago, específico para computadores Apple. Usado por cerca de 5% dos 
desktops/laptops. 
Smartphone: 
IOS: proprietário, específico para Apple Iphone. 
Android: aberto, usado pelos demais fabricantes (Samsung, Motorola, LG, Sony etc.). Projeto 
baseado no Linux. 
Depois do que estudamos até aqui, 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? 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 28 
 
3 - Tipos de linguagens de programação 
Conceito 
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. 
Exemplos de estruturas de alto nível são: 
1 - Estruturas de repetição (loops), em que o programador ordena que um conjunto de instruções 
seja executado repetidamente; 
2 - A função print(), que imprime algo na tela; 
3 - A estrutura condicional (if), em que 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. Veja, a seguir, quais 
são. 
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) 
Veja um exemplo de linguagem compilada: 
Na primeira linha do código a seguir, escrito na linguagem C++, 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. 
Apostila de Pensamento Computacional 
Marcio Quirino - 29 
 
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 exista uma instrução if (estrutura condicional), mas não 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. 
Esse arquivo é a saída do compilador e contém as instruções de código de máquina obtidas mediante a 
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 com sistema operacional Windows possam usá-lo). 
Atenção! 
A compilação só precisa ser feita pelo desenvolvedor/programador uma vez. 
Conforme ilustrado pela imagem a seguir, 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. 
 
Fonte: Estácio de Sá 
 
Apostila de Pensamento Computacional 
Marcio Quirino - 30 
 
Preste atenção: 
O processo não funciona

Continue navegando