Lógica e Pensamento Computacional
Lógica e Pensamento Computacional
Lógica e Pensamento Computacional
COMPUTACIONAL
Pensamento lógico
e algorítmico
Marcelo da Silva dos Santos
OBJETIVOS DE APRENDIZAGEM
Introdução
O termo pensamento computacional (do inglês, computational thinking) foi
apresentado na década de 1980 por Seymour Papert e, em 2006, a pesquisa-
dora Jeannette Wing publicou um artigo sobre o tema, que passou a receber
atenção da comunidade científica e popularizou a ideia de utilizar a tecnologia
como recurso interdisciplinar. A primeira impressão que se tem do tema é que
está ligado ao uso da tecnologia, mas vai muito além disso, sendo fortemente
relacionado ao estímulo ao raciocínio lógico e à criatividade.
O conceito visa ao desenvolvimento lógico e algorítmico para resolução
de problemas não apenas da área da computação, mas de todas as áreas de
conhecimento. Para isso, é de grande importância o estudo de dois outros
conceitos: o pensamento lógico e o pensamento algorítmico. Ambas as áreas são
habilidades que podem ser desenvolvidas por qualquer pessoa, e não somente
por cientistas da computação e profissionais de tecnologia, e aplicadas nas
atividades diárias, estimulando a criatividade e a produtividade por meio da
lógica e da construção de algoritmos.
2 Pensamento lógico e algorítmico
Método indutivo
As premissas ou fatos conduzem a uma “lei de formação” pela repetição de
algum padrão de comportamento (LAW, 2008). Veja um exemplo.
Método dedutivo
Neste método, as premissas são avaliadas e ordenadas em uma sequência de
causa e efeito, de modo que a conclusão obtida seja resultante da sequência
completa, emergindo como fato novo extraído ou deduzido a partir das premis-
sas constituintes (LAW, 2008). Veja um exemplo com as seguintes premissas.
Pensamento algorítmico
O pensamento lógico é utilizado cotidianamente sem que as pessoas percebam,
por exemplo, ao acordarmos pela manhã e darmos início a uma sequência de
etapas até que estejamos prontos para sair de casa, que é quando já estamos
utilizando o pensamento lógico e algorítmico sem perceber. Caso essas etapas
fossem descritas em ordem de execução como itens de tarefas, estaríamos
construindo um algoritmo. Na ciência computacional não é diferente, pois
também podemos solucionar problemas utilizando o mesmo pensamento
lógico-algorítmico, descrevendo instruções em etapas bem definidas com a
finalidade de atingir determinado objetivo.
No momento em que é feita a transição do pensamento lógico para o
pensamento algorítmico, é necessário analisar que esses conceitos não são
os mesmos. Com a lógica, você tem a compreensão do problema e como ele
pode ser subdividido e encontra possíveis soluções para ele. Já no momento
em que descrevemos todas as tarefas necessárias e a ordem em que elas
devem ser executadas para que o problema seja resolvido, estamos criando
um algoritmo.
Pensamento lógico e algorítmico 7
De acordo com Beecher (2017), essa sequência de passos pode ser utilizada
para explicar a um terceiro (seja humano ou uma máquina) como resolver o
problema, seguindo tais regras com precisão. Assim como já ocorre com o
pensamento lógico, o ser humano possui uma compreensão intuitiva do que
é um algoritmo, tão utilizado pela ciência computacional, e desenvolver seu
pensamento algorítmico torna-se essencial para o profissional da computação,
pois um algoritmo correto é a base final de qualquer solução executada por
computador.
Estudiosos da programação como Ada Lovelace (1815—1852), considerada
a primeira programadora da história, buscaram formas de comunicar ideias
para as máquinas para que elas pudessem compreender e computar por nós,
humanos (BEECHER, 2017). Então, concluiu-se que o nosso modelo intuitivo
era insuficiente, gerando a necessidade de formular regras de forma clara
e inequívoca, como os computadores exigem, evoluindo para estruturas
para fornecer instruções aos computadores. Por mais precisos que tenham
se tornado, os algoritmos também se tornaram mais complexos, tanto que
uma descrição formal deles pode se estender por vários parágrafos. Em
nosso caso, a melhor maneira de compreender sua construção é estudar
suas estruturas básicas.
Variáveis e constantes
Auxiliam no armazenamento dos estados e informações durante a execução
do processo. Tal estrutura pode armazenar temporariamente informações
adicionais que serão processadas pelas instruções, e seus valores podem
sofrer variações durante a execução do algoritmo, por isso são conhecidas
como “variáveis”. Já as “constantes” são as que guardam valores que devem
permanecer inalterados durante toda a execução do algoritmo (por exemplo,
o valor da constante pi, cujo valor aproximado é 3,141593, calculada pela razão
entre a medida da circunferência de um círculo — 2·π·r— e o seu diâmetro —
2·r, na geometria).
Operadores
São utilizados para realizar operações diversas, dependendo de sua categoria.
Veja cada um deles a seguir.
Operador Comparação
== Igual a
!= Diferente de
Condicionais
Em determinados momentos, durante a execução das tarefas, é preciso tomar
algum tipo de decisão. Por exemplo: deve-se armazenar um número somente
se o resultado de uma soma for maior que um valor de referência; caso con-
trário, o número deve ser descartado. As estruturas condicionais permitem
a execução de determinadas instruções considerando situações (condições)
específicas que precisam ser satisfeitas.
10 Pensamento lógico e algorítmico
“Caso o aluno tenha média igual ou maior que 7, então ele estará aprovado.”
FimSe
if(condição){
"ação executada caso o teste seja verdadeiro"
} else {
"ação executada caso o teste seja falso"
}
Pensamento lógico e algorítmico 11
Repetições
Permitem a execução de uma mesma instrução várias vezes até que uma
condição seja alcançada. Utilizando essa ferramenta, pode-se tanto repetir
uma ação em um número exato de vezes (p. ex.: bloquear um acesso após
três tentativas) como repetir determinadas instruções até uma condição ser
atendida (p. ex.: estude até entender a lição, independentemente do tempo
que levar). Qualquer uma destas formas exige uma condição para que a re-
petição cesse, seja por terminar o número de iterações especificado ou por
chegar ao resultado desejado.
No caso de repetições em número predeterminado, tem-se a estrutura
Para. Com ela é possível, por exemplo, ter a situação “Repita de 1 até 5 a ação:
escolha aleatoriamente uma letra do alfabeto e escreva na tela para o usuário”.
Sua estrutura em pseudocódigo pode ser representada assim:
Para variável de (valor de início) ate (valor do fim) faça
instruções
FimPara.
No caso de uma repetição sem quantidade definida, ou seja, até que algo
aconteça, pode-se utilizar a estrutura Enquanto, que significa que, como
o próprio nome diz, enquanto houver a condição de teste, ele continuará
repetindo. Essa estrutura utiliza um condicional para avaliar se ele deve ser
executado, ou seja, só é possível entrar na estrutura de repetição Enquanto se
a condição teste for verdadeira, senão ela não irá entrar no laço de repetição.
Sua estrutura em pseudocódigo pode ser representada assim:
Enquanto(condição) faça
instruções
FimEnquanto
onde cada uma das expressões auxilia a controlar o número de repetições que
devem ser executadas.
while (expr)
do {
instrução a ser repetida
} while (expr);
1. iniciar o jogo
2. iniciar uma repetição:
3. pedir ao jogador para escolher um quadrado
Pensamento lógico e algorítmico 13
incorretas. Isso se dá em parte pela forma com que lidamos com essas so-
luções, em que normalmente executamos as tarefas sem nos darmos conta.
Segundo Beecher (2017), é possível que uma pessoa que execute a mesma
tarefa durante anos tenha dificuldade para ensinar outra pessoa a realizar essa
tarefa. E, ao criarmos um algoritmo para ser executado por um computador,
o problema é maior ainda, pois a falta de uma simples instrução é capaz de
parar o funcionamento de um sistema complexo.
Referências
BEECHER, K. Computational thinking: a beginner’s guide to problem-solving and pro-
gramming. Swindon: BCS Learning & Development, 2017. 288 p.
FIGUEIREDO, C. M. H.; LAMB, L. C. Teoria da Computação: uma Introdução à Comple-
xidade e à Lógica Computacional. In: JORNADA DE ATUALIZAÇÃO EM INFORMÁTICA,
34., 2015, Porto Alegre. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação,
2015, p. 10–67. Disponível em: https://sol.sbc.org.br/livros/index.php/sbc/catalog/
download/6/6/19-1?inline=1. Acesso em: 18 dez. 2020.
MOKARZEL, F.; SOMA, N. Introdução à ciência da computação. Rio de Janeiro: Elsevier,
2008. 429 p.
NORONHA, C. Lógica e Algoritmos de Programação. Medium, San Francisco, 13 fev. 2019.
Disponível em: https://medium.com/@caio.cnoronha/l%C3%B3gica-e-algoritmos-de-
-programa%C3%A7%C3%A3o-47b4a872b815. Acesso em: 18 dez. 2020.
PAPERT, S. Mindstorms: children, computers, and powerful ideas. New York: Basic
Books, 1980. 230 p.
WING, J. M. Computational thinking. Communications of the ACM, New York, v. 49, n. 3,
p. 33–35, Mar. 2006.
Leituras recomendadas
MADEIRA, C. Introdução ao Pensamento Computacional com Scratch. In: CONGRESSO
SOBRE TECNOLOGIAS NA EDUCAÇÃO, 2., 2017, Mamanguape. Anais […]. Mamanguape:
Universidade Federal da Paraíba, 2017. p. 725–730. Disponível em: http://ceur-ws.org/
Vol-1877/CtrlE2017_MC_4.pdf. Acesso em: 24 nov. 2020.
OLIVEIRA, C. M. et al. Utilização de Desafios para o Desenvolvimento do Pensamento
Computacional no Ensino Superior: Um Relato de Experiência. In: SIMPÓSIO BRASI-
LEIRO DE INFORMÁTICA NA EDUCAÇÃO, 30., 2019, Brasília. Anais […]. Brasília: Sociedade
Brasileira de Computação, 2019. p. 2005–2014. Disponível em: https://www.br-ie.org/
pub/index.php/sbie/article/view/8934. Acesso em: 18 dez. 2020.
PAULA, B. H.; VALENTE, J. A.; BURN, A. O uso de jogos digitais para o desenvolvimento
do currículo para a Educação Computacional na Inglaterra. Currículo sem Fronteiras,
[S. l.], v. 14, n. 3, p. 46–71, 2014. Disponível em: http://www.curriculosemfronteiras.org/
vol14iss3articles/paula-valente-burn.htm. Acesso em: 18 dez. 2020.
RILEY, D. D.; HUNT, K. A. Computational thinking for the modern problem solver. Boca
Raton: CRC Press, 2014. 406 p. (Chapman & Hall/CRC Textbooks in Computing).