O documento introduz os conceitos de pensamento computacional e algoritmos, definindo-os como:
1) Pensamento computacional é o conjunto de habilidades intelectuais e de raciocínio que indicam como as pessoas interagem e aprendem a pensar por meio da linguagem computacional.
2) Algoritmos são conjuntos ordenados de passos executáveis que definem um processo finalizável para resolver um problema.
3) Os elementos fundamentais do pensamento computacional incluem decomposição, reconhecimento de padrões, abstração e algoritmos
1. Introdução ao pensamento
computacional e aos algoritmos
Sérgio Souza Costa
Os slides a seguir foram adaptados partir do material do professor Alex Barradas.
2. Roteiro
- O que são computadores?
- Pensamento Computacional
- Algoritmos
5. Atualmente presente em diversos dispositivos e formas.
Conceitos - computador
REFLEXÃO: Como serão
os computadores daqui
30 anos ? em 2051 ?
Pense bem pois
esperamos estar aqui,
vivendo e trabalhando :)
6. Pensamento computacional
Definição:
O conjunto de habilidades intelectuais e de raciocínio que
indicam como as pessoas interagem e aprendem a pensar
por meio da linguagem computacional. (WING, 2006)
JEANNETTE M. WING
Professor at Carnegie Mellon University / Vice president at Microsoft Research
About:
Link: http://www.cs.cmu.edu/~wing/
Journals:
Computational thinking
Link: https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf
Computational Thinking and Thinking About Computing
Link: http://www.cs.cmu.edu/~wing/publications/Wing08a.pdf
7. Pensamento computacional
Definição:
O conjunto de habilidades intelectuais e de raciocínio que
indicam como as pessoas interagem e aprendem a pensar
por meio da linguagem computacional. (WING, 2006)
JEANNETTE M. WING
Professor at Carnegie Mellon University / Vice president at Microsoft Research
About:
Link: http://www.cs.cmu.edu/~wing/
Journals:
Computational thinking
Link: https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf
Computational Thinking and Thinking About Computing
Link: http://www.cs.cmu.edu/~wing/publications/Wing08a.pdf
Não confundam
pensamento
computacional com
ciências da computação.
Enquanto o primento é
uma maneira de abordar
um problema, o outro é o
estudo da computação em
todos os seus elementos.
9. Pensamento Computacional e o code.org
Para conhecer melhor essa
iniciativa, pause o video e
acesse o video de
lançamento em 2013:
https://www.youtube.com/w
atch?v=nKIu9yen5nc
10. Pensamento Computacional e o code.org
Não deixem de visitar
https://code.org/ e
“brincar” um pouco.
Importante para o
aprendizado e para
conhecer uma possível
ferramenta que
poderão utilizar
Para conhecer melhor essa
iniciativa, pause o video e
acesse o video de
lançamento em 2013:
https://www.youtube.com/w
atch?v=nKIu9yen5nc
11. Pensamento Computacional no Brasil
Em muitas escolas particulares, os
alunos tem disciplina de pensamento
computacional desde a alfabetização.
Alguns professores tem levado esse
conhecimento para escolas públicas
através de projetos de extensão.
http://www.computacional.com.br/
14. Pensamento computacional
Decomposição:
Trata-se de quebrar um problema complexo;
Sistemas são dividos em partes menores;
Facilitar a compreensão.
- Nota: As peças pequenas podem ser, em seguida, examinadas e resolvidas, ou
concebidas individualmente, uma vez que são mais fáceis de trabalhar.
15. Pensamento computacional
Decomposição em prática (resolver um crime):
O crime foi cometido?
Quando o crime foi cometido?
Onde o crime foi cometido?
Existem provas?
Testemunhas?
Crimes semelhantes?
19. Pensamento computacional
Abstração:
Trata-se de filtrar;
Identificar os princípios gerais.
Abstração: permite criar uma ideia geral do que é o problema e como resolvê-lo
(modelo). O processe remove todos os detalhes e padrões que não irão nos ajudar
a resolver o problema.
Um algoritmo é uma abstração de um procedimento passo a passo para obter
entrada e produzir alguma saída desejada (Wing, 2008)
20. Pensamento computacional
O funcionamento de um carro é abstraído
através de poucos controle.
A comunicação entre os computadores
funciona considerando diferentes níveis de
abstração, conhecidos como camadas
21. Pensamento computacional
Algoritmo:
Desenvolvimento de uma solução passo-a-passo;
As regras a seguir para resolver o problema.
- Nota: Em um algoritmo, cada instrução é identificada e possui uma ordem de
execução definida.
23. Algoritmo
“Nas palavras de um lógico:
Um algoritmo é
um método finito,
escrito em um vocabulário simbólico fixo,
regido por instruções precisas,
que se movem em passos discretos, 1,2,3 ….,
cuja execução não requer insight, esperteza, intuição,
inteligênca ou clareza e lucidez,
e que mais cedo ou mais tarde chega a um fim.”
Berlinski D. O advento do algoritmo.
24. Algoritmo
“Uma vez descoberto o algoritmo que executa uma dada
tarefa, sua execução já não dependera do conhecimento
dos princípios nos quais se baseia, restringindo se
apenas seguir as instruções estabelecidas.
Capacidade de captar e transferir a inteligência
mediante os algoritmos”
Berlinski D. O advento do algoritmo.
25. Algoritmos
Definições:
“Ação ou acontecimento que, a partir de um estado inicial, após um
período de tempo finito, produz um estado final previsível e bem-
definido. Portanto, um algoritmo é a descrição de um conjunto de
comandos que, obedecidos, resultam numa sucessão finita de ações”.
(FARRER, 1999)
“É um conjunto ordenado de passos executáveis, não ambíguos, que
define um processo finalizável”. (BROOKSHEAR, 2013)
26. Algoritmos
Principais características dos algoritmos:
Finitude:
Um algoritmo deve sempre terminar após um número finito de passos.
Definição:
Cada passo de um algoritmo deve ser precisamente definido.
Entradas:
Ter a capacidade de receber dado(s) de entrada.
Saídas:
Poder gerar informações de saída.
Efetividade:
Um algoritmo deve ser eficiente.
27. Algoritmos: Curiosidade
O termo algoritmo com a computação, na verdade ele teve sua
origem no nome do matemático do século IX Muḥammad ibn Mūsā
al-Khwārizmī, cujo sobrenome foi latinizado para Algoritmi.
Um dos mais antigos algoritmos foram
criados ainda Grécia e Roma antiga.
Pesquise o algoritimo Crivo de
Eratóstenes, utilizado para encontrar
números primos .
28. Algoritmos: Como fazer ?
Fonte: Raoni Florentino da Silva Teixeira:
Introdução a Algoritmos
29. Algoritmos: como fazer?
ENTENDIMENTO DO PROBLEMA
• Leia atentamente o enunciado, esclarecendo possíveis dúvidas de
vocabulário e identificando os dados do problema e o resultado
esperado.
• Identifique quais ações podem ser executadas pelo algoritmo.
• Tente responder as perguntas: Você já viu este problema antes?
Você conhece um problema relacionado?
30. Algoritmos: como fazer?
CONSTRUÇÃO DO ALGORITMO
• Responda a questão: Você consegue transformar este problema em
algum outro que já foi resolvido?
• Avalie se o problema ainda parece complicado e, caso necessário, o
transforme-o em um problema auxiliar, eliminando alguma das
variáveis envolvidas. Considere os casos mais simples primeiro.
• Brinque com a solução e tente entender o que acontece quando
grupos de ações são combinadas.
• Procure encontrar padrões e descreva o algoritmo.
31. Algoritmos: como fazer?
EXECUÇÃO DO ALGORITMO
• Antecipe o resultado da solução do problema.
• Simule a execução do algoritmo e guarde a solução encontrada
AVALIAÇÃO DA RESPOSTA
• Avalie a solução. A cada iteração você aprende mais sobre o problema.
• Se estiver resolvendo um problema auxiliar, aumente a complexidade do problema
e refaça o processo.
• Inicie o processo novamente, se o resultado esperado não for alcançado
32. Algoritmos: três fases fundamentais
Dados (entrada):
A matéria-prima obtida por uma ou mais
fontes.
Processamento:
Manipulação das informações coletadas no
início da atividade.
Resultado (saída):
Subentende a dados organizados (processados
– segundo a uma orientação específica).
33. Algoritmos: três fases fundamentais
Dados (entrada):
A matéria-prima obtida por uma ou mais
fontes.
Processamento:
Manipulação das informações coletadas no
início da atividade.
Resultado (saída):
Subentende a dados organizados (processados
– segundo a uma orientação específica).
Base e Altura
34. Algoritmos: três fases fundamentais
Dados (entrada):
A matéria-prima obtida por uma ou mais
fontes.
Processamento:
Manipulação das informações coletadas no
início da atividade.
Resultado (saída):
Subentende a dados organizados (processados
– segundo a uma orientação específica).
Base e Altura
Base X Altura
35. Algoritmos: três fases fundamentais
Dados (entrada):
A matéria-prima obtida por uma ou mais
fontes.
Processamento:
Manipulação das informações coletadas no
início da atividade.
Resultado (saída):
Subentende a dados organizados (processados
– segundo a uma orientação específica).
Base e Altura
Base X Altura
Área
36. Algoritmos: três fases fundamentais
Dados (entrada):
A matéria-prima obtida por uma ou mais
fontes.
Processamento:
Manipulação das informações coletadas no
início da atividade.
Resultado (saída):
Subentende a dados organizados (processados
– segundo a uma orientação específica).
39. Linguagem natural
Os algoritmos são expressos diretamente em linguagem natural.
• Vantagem: Não é necessário aprender conceitos novos
• Desvantagem: A linguagem natural abre espaço para várias
interpretações e ambiguidades, o que pode dificultar sua tradução para
um programa
40. Linguagem natural - Exemplo 1
Crie um algoritmo para mostrar o resultado da multiplicação de dois
números:
Passo 1: Receber os dois números que serão multiplicados
Passo 2: Multiplicar os números
Passo 3: Mostrar o resultado obtido na multiplicação
41. Linguagem natural - Exemplo 2
Faça um algoritmo para mostrar a divisão de dois números
Passo 1: receber os dois números
Passo 2: Se o numerador (segundo número) for igual a zero a divisão
não poderá ser feita; caso contrário dividir os dois números e mostrar o
resultado
44. Fluxograma
É uma representação gráfica que emprega formas geométricas
padronizadas para indicar as diversas ações e decisões que
devem ser executadas.
• Vantagem: o entendimento de elementos gráficos é mais simples e um
pouco mais formal.
• Desvantagens
• É necessário aprender uma nova simbologia
• O algoritmo resultante pode não apresentar muitos detalhes,
dificultando sua tradução para uma linguagem de programação
• Um algoritmo detalhado pode ser complexo de entender
45. Fluxograma - Símbolos
Direção do fluxo
Indica Cálculos e
Atribuições
Indica Entrada de
Dados
Indica Tomada
de decisão
Saída de
Dados
Início/Fim
46. Fluxograma - Exemplo 1
inicio
N1, N2
M = N1 * N2
Imprime M Fim
Crie um algoritmo para mostrar o
resultado da multiplicação de dois
números.
47. Fluxograma - Exemplo 2
Faça um algoritmo para mostrar a divisão de
dois números
inicio
N1, N2 N2=0
Impossível
dividir
D = N1/N2
Imprime D fim
Sim
Não
49. Pseudocódigo
Emprega uma linguagem intermediária entre a linguagem natural
e uma linguagem de programação.
Vantagem
A transformação do algoritmo para uma linguagem de programação é
simples
Desvantagem
É necessário aprender as regras de especificação do pseudo-código
Como não é uma linguagem de programação, cada pessoa pode definir
suas próprias regras e símbolos
50. Pseudocódigo - Exemplo 1
Crie um algoritmo para mostrar o resultado da multiplicação de
dois números
Algoritmo Multiplicação
Var N1, N2, M Real
Inicio
Escreva (“Digite dois números”)
Leia (N1, N2)
M <- N1 * N2
Escreva “Multiplicação = “, M
Fim
52. Portugol
Baseada no Pascal, é utilizada como a primeira “linguagem de programação”.
Em muitos casos ela não é usada como uma linguagem para qual existem
interpretadores, como o Visualg:
53. Portugol
Baseada no Pascal, é utilizada como a primeira “linguagem de programação”.
Em muitos casos ela não é usada como uma linguagem para qual existem
interpretadores, como o Visualg:
Ao invés de trabalharmos
como Portugol, nesse
curso já iremos usar de
modo ainda superficial a
linguagem de
programação Python.
55. Linguagem de programação
“Um programa é uma sequência de símbolos que especifica uma computação. Uma
linguagem de programação é um conjunto de regras que especificam quais
sequências de símbolos constituem um programa e que computação o programa
descreve."
Um algoritmo precisa ser expresso
por uma linguagem de programação
para que um computador consiga
executar.
56. Linguagem de programação
“Um programa é uma sequência de símbolos que especifica
uma computação. Uma linguagem de programação é um
conjunto de regras que especificam quais sequências de
símbolos constituem um programa e que computação o
programa descreve." (Monti Ben-Ari - Understanding
Programming Languages)
"Uma linguagem de programação é um formalismo artificial em
que algoritmos podem ser expressos” (Gabbrielli, Maurizio,
Martini, Simone - Programming Languages: Principles and
Paradigms)
57. Linguagem de programação
Python:
Alto nível x baixo nível;
Linguagem geral x linguagem específica;
Interpretada x compilada.
https://www.python.org/
58. Linguagem de programação
Python:
Alto nível x baixo nível;
Linguagem geral x linguagem específica;
Interpretada x compilada.
https://www.python.org/
No próximo encontro
iremos falar um pouco
mais sobre essa
linguagem e o ambiente
que iremos utilizá-la.
59. Para saber mais
- Acessem, crie uma conta no site
https://code.org/
- Acessem o site brasileiro sobre pensamento
computacional:
http://www.computacional.com.br/