Escolar Documentos
Profissional Documentos
Cultura Documentos
começar a programar
Curso base para iniciante
Juliana Mascarenhas
Tech Education Specialist / Sócia (Content Creator) @SimplificandoRedes
Me Modelagem Computacional / Cientista de dados
@in/juliana-mascarenhas-ds/
[1]
Juliana Mascarenhas
Tech Education Specialist
Sócia no @SimplificandoRedes
Cientista de dados
Desenvolvedora Java/Python
https://github.com
/julianazanelatto
Me Modelagem Computacional - LNCC
[2]
Sobre Mim
Técnica de Telecomunicações - Mestre em modelagem
CEFET/RJ computacional – LNCC
[3]
Sobre Mim
Sobre Mim
Gerenciamento de
Redes de computadores
Projetos
2009 2014
2012 2017
[5]
Cursos
[6]
Objetivo Geral
Você será capaz de entender o
que significa pensar computacionalmente.
Pensamento aplicável à qualquer área do conhecimento.
[7]
Percurso
[8]
Percurso
[9]
Aula 1: Pensamento
Computacional
// Primeiros passos para começar a programar
[10]
Objetivo Geral
[11]
Percurso
[12]
Percurso
[13]
Percurso
[14]
Etapa 1
Introdução ao pensamento
computacional
// Primeiros passos para programar/Pensamento
Computacional
[15]
Overview
Pensamento computacional?
[16]
Overview
Pensamento computacional?
Sistemático e eficiente
[17]
Overview
Pensamento computacional?
Sistemático e eficiente
Disciplina Habilidade
acadêmica generalista
[19]
Overview
Pensamento computacional?
Matemática
Leitura
Escrita
Disciplina Habilidade
acadêmica generalista
[20]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
de padrões
Dividir um problema
complexo em subproblemas Abstração
Design de
algoritmos
[21]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
de padrões
Dividir um problema
complexo em subproblemas Abstração
Design de
algoritmos
[22]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
de padrões
Identificar padrões ou
tendências Abstração
Design de
algoritmos
[23]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
de padrões
Identificar padrões ou
tendências Abstração
Similaridades e
diferenças entre os Design de
problemas algoritmos
PADRÃO
COMPORTAMENTAL
[24]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
de padrões
Extrapolar o conceito do
problema para um forma
Abstração
generalista
Design de
algoritmos
[25]
Overview
C = 2.π.r Decomposição
[26]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
de padrões
Automatizar
Abstração
Definir passo a passo a
solução do problema.
Design de
algoritmos
[27]
Overview
Decomposição
Baseado em 4 pilares
Reconhecimento
Operator
de padrões
Input Output
Automatizar
Abstração
Definir passo a passo a
solução do problema.
Design de
algoritmos
[28]
Overview
Processo Contínuo Refinamento Teste
• Testar a solução
• Aperfeiçoamento da Análise
solução encontrada
[29]
Overview Abstração
Resolução de problemas
Análise
Execução da solução e
avaliação (refinamento)
Expressão de solução
Automatização
[30]
Raciocínio
Lógico
Overview
Refinamento Decomposição
Algoritmos Padrões
Abstração
[31]
Overview
1.CS + Math 2.CS + Sci/Eng
Desenvolvimento e
abstração;
CS Análise de dados e design
de soluções; Definição e
Reconhecimento de uso de abstrações; Teste
padrões ... e refinamento de
1 2 algoritmos ...
3
3.CS + Sci/Eng + Math Math 4 Sci/Eng
4.Math +Sci/Eng
Modelagem; Definição de
problemas; Definição e Desenvolvimento e
uso de abstrações; abstração;
Reconhecimento de Reconhecimento de
padrões ... padrões ...
[32]
Overview
Exemplos
Química
• Aperfeiçoamento de reações químicas pela utilização de al
goritmos, através da identificação de quimícos
Engenharia
• Simulações de aeronavas executadas via
software em detrimento do tunel de vento
[33]
Overview
Exemplos
Biologia
• Modelagem e mapeamento do genoma
humano
Computação
• Simulação de problemas de alta ordem
em supercomputadores
[34]
Overview
Competências
• Pensamento sistemático
• Colaboração dentro da equipe
• Criatividade e design
• Facilitador
[35]
Etapa 2
Habilidades
complementares
// Primeiros passos para começar a
programar/Pensamento Computacional
[36]
Percurso
[37]
Percurso
[38]
Percurso
[39]
Habilidades
Raciocínio Lógico
Aperfeiçoamento
[40]
Raciocínio Lógico
[41]
Raciocínio Lógico
Habilidade de treinamento
[42]
Raciocínio Lógico
Indução
Classificação Dedução
Abdução
[43]
Raciocínio Lógico
Indução
Abdução
Indução
Abdução
Ciências
experimentais
Fenômeno observado [45]
Raciocínio Lógico
Indução
Leis e teorias
Classificação Dedução
Abdução
Previsões e explicações[46]
Raciocínio Lógico
Indução
Leis e teorias
Classificação Dedução
Abdução
Ciências exatas
Previsões e explicações[47]
Raciocínio Lógico
Indução
Classificação Dedução
Ex: A grama está molhada, logo
deve ter chovido
Abdução
Conclusão Premissa
[48]
Raciocínio Lógico Processo
investigativo
Indução Diagnósticos
Classificação Dedução
Ex: A grama está molhada, logo
deve ter chovido
Abdução
Conclusão Premissa
[49]
Raciocínio Lógico
Inferência
Sintética Analítica
[50]
Raciocínio Lógico
Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens
se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que
o pai está à frente de Fernanda e o filho e esquerda; e que
a mãe está do lado direito de Sérgio.
Mesa
[51]
Raciocínio Lógico
Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens
se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que
o pai está à frente de Fernanda e o filho e esquerda; e que
a mãe está do lado direito de Sérgio.
Fernanda
Filho Mesa
Pai
[52]
Raciocínio Lógico
Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens
se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que
o pai está à frente de Fernanda e o filho e esquerda; e que
a mãe está do lado direito de Sérgio.
Fernanda
Filho Mesa Mãe
Pai
Sérgio [53]
Raciocínio Lógico
Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens
se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que
o pai está à frente de Fernanda e o filho e esquerda; e que
a mãe está do lado direito de Sérgio.
R: Sérgio é o pai
Teresa é a mãe Mesa
Fernanda a filha e Roberto é o filho.
[54]
Aperfeiçoamento
Melhoramento Ato de aperfeiçoar
Aprimoramento
Refinamento
[55]
Aperfeiçoamento
Melhoramento Ato de aperfeiçoar
Refinamento
[56]
Aperfeiçoamento
Ato de aperfeiçoar
[57]
Etapa 3
Pilares: Decomposição
// Primeiros passos para começar a
programar/ Pensamento Computacional/
[58]
Percurso
[59]
Percurso
[60]
Percurso
[61]
Objetivo Geral
É preciso coompreender como executar cada etapa de
um pensamento computacional.
[62]
Decomposição
[63]
Decomposição
Primeiro passo da resolução de problemas dentro do conceito
de pensamento computacional
[64]
Decomposição
Estratégia
[65]
Decomposição
Estratégia Estudar, explorar
Decompor em elementos
constituíntes
[66]
Decomposição
Estratégia
Combinar os elementos
recompondo o problema original Síntese
[67]
Decomposição
Processo de
Estratégia reconstrução
Combinar os elementos
recompondo o problema original Síntese
Fundir os
Consiste em reunir elementos de
elementos distintos maneira coerente
em um único
elemento [68]
Decomposição
Estratégia
Sequêncial
Ordem de execução de tarefas
menores
Paralelo
[69]
Decomposição
Estratégia
Sequêncial
Ordem de execução de tarefas
menores
[70]
Decomposição
Estratégia
Paralelo
Ordem de execução de tarefas
menores
Tarefas podem ser executadas Eficiência
concomitantemente.
Tempo
[71]
Decomposição Variáveis
Pequenos
problemas
Segmentação
[72]
Decomposição Variáveis
Pequenos
problemas
• Não basta aplicar Segmentação
Maneiras distintas de
decompor o mesmo
problema
[73]
Decomposição
Como decompor?
Identificar ou Agregar os
coletar dados dados
Funcionalidade Decomposição
[74]
Decomposição
Exemplos
[75]
Decomposição
Ex do cotidiano: cozinhar
• Identificar os ingredientes
• Determinar as etapas (sequêncial ou paralelo)
• Executar cada etapa
• Agregar os ingredientes para finalizar (Recompor com
coerência)
[76]
Decomposição
Ex do cotidiano: funcionamento de uma bike
• Identificar os componentes
Funcionamento
• Papel de cada componente
do sistema
• Interdependência das peças
[77]
Decomposição
Exemplo: criar um app
• Finalidade
• Interface Definição de
• Funcinalidades componentes e etapas
• Pré-requisitos
Desenvolvimento mais
eficiente
[78]
Decomposição
Exemplo: criar um app
• Finalidade
• Interface Definição de
• Funcinalidades componentes e etapas
• Pré-requisitos
Desenvolvimento mais
eficiente
[79]
Decomposição
Exemplo: Artigo
Padrão Movimento
[81]
Etapa 4
Pilares: Padrões
// Primeiros passos para começar a
programar/ Pensamento Computacional/
[82]
Padrões
Reconhecimento de Padrões
• Modelo base
• Estrutura invariante
• Repetição
[83]
Padrões
Reconhecimento de Padrões
• Modelo base
• Estrutura invariante
• Repetição Similaridades e
diferença
[84]
Padrões
Ex: fotos de redes sociais
...
Compressão
Salvar no servidor
de dados
[85]
Padrões
Ex: fotos de redes sociais
...
Compressão
Salvar no servidor
de dados
[86]
Padrões
Ex: Compressão de dados
3 2 1 2 1
[88]
Padrões
Seres vivos x padrões
[89]
Padrões
Reconhecimento de Padrões
[90]
Padrões
Reconhecimento de Padrões
[91]
Padrões
Reconhecimento de Padrões
Classes
Categorias
[92]
Padrões
Reconhecimento de Padrões
Dependem do
domínio Classes
Categorias
[93]
Padrões
Pelo ser humano
• Grau de similaridade
Como o computador
• Grupos conhecidos x objeto reconhece padrões?
desconhecido
[94]
Padrões
Pelo ser humano
• Grau de similaridade
Como o computador
• Grupos conhecidos x objeto reconhece padrões?
desconhecido
COMPARAÇÃO
[95]
Padrões
Representação de atributos
[96]
Padrões
Representação de atributos
Armazenar dados
[97]
Padrões
Representação de atributos
Armazenar dados
Regras de decisão
[98]
Padrões
Em resumo ...
[99]
Padrões
Extração de características
Abordagem
Classificação de dados
DIFERENTES
Métodos Aplicações
[100]
Padrões
Aplicações
• Classificação de dados
• Reconhecimento de imagem
• Reconhecimento de fala
• Análise de cenas
• Classificação de documentos
[101]
Padrões
Redes Neurais
Machine Learning
Aplicações
• Classificação de dados
Inteligência Artificial
• Reconhecimento de imagem
• Reconhecimento de fala
• Análise de cenas
• Classificação de documentos Ciência de dados
[102]
Etapa 5
Pilares: Abstração
// Primeiros passos para começar a
programar/ Pensamento Computacional/
[103]
Abstração
Generalização /
Abstração
ABSTRAIR
Observar, um ou mais elementos,
avaliando características e
propriedades em separado
[104]
Abstração
Generalização /
Abstração
ABSTRAÇÃO
Processo intelectual de
ABSTRAIR isolamento de um objeto da
realidade
Observar, um ou mais elementos,
avaliando características e
propriedades em separado
[105]
Abstração
Generalização / Generalizar
Abstração Tornar-se geral, mais amplo,
extensão
ABSTRAÇÃO
Processo intelectual de
ABSTRAIR isolamento de um objeto da
realidade
Observar, um ou mais elementos,
avaliando características e
propriedades em separado
[106]
Abstração
Generalização / Abstração
Generalização, na lógica, é
a operação intelectual que
consiste em reunir numa cl
asse geral, um conjunto de
seres ou fenômenos
similares.
[107]
Abstração
Como classificar
os dados?
• Características
• Pontos essenciais
• Generalizar x detalhar
[108]
Abstração
REPRESENTAÇÃO
[109]
Abstração
Representação de dados
Estudantes
[110]
Abstração
Representação de dados
CARACTERÍSTICAS
Estudantes
[111]
Abstração
Representação de dados
CARACTERÍSTICAS
Estudantes • Nome completo • Trabalho
• Matrícula • Tem filhos
• Endereço • Programa preferido
• Campus • Livro preferido
• Curso • Tamanho do calçado
• Telefone • ...
• Email
• ...
[112]
Abstração
Representação de dados
Pontos
essenciais
CARACTERÍSTICAS
Estudantes • Nome completo • Trabalho
• Matrícula • Tem filhos
• Endereço • Programa preferido
• Campus • Livro preferido
• Curso • Tamanho do calçado
• Telefone • ...
• Email
• ...
[113]
Abstração
Conceitos baseados
em abstrações
[114]
Abstração
Conceitos baseados
em abstrações
[115]
Abstração
Conceitos baseados
em abstrações
[116]
Abstração
Conceitos baseados
em abstrações
[117]
Abstração
Conceitos baseados
em abstrações
[118]
Abstração
Conceitos baseados
em abstrações
c a
b
a b c
P
R
D O
A C
E
D S
O S
S A
D
O [120]
Abstração
Conceitos baseados
em abstrações Cliente Servidor
Layer 3
Layer 2
Layer 1
[121]
Abstração
Conceitos baseados
em abstrações Cliente Servidor
c a
b
a b c Layer 3
P Layer 2
R
D O
A C
Layer 1
E
D S
O S
S A
D
O [122]
Abstração
Conceitos baseados
em abstrações
Exemplos
[123]
Abstração
Por onde começar a limpar o terreno?
[124]
Classificar?
Abstração
Por onde começar a limpar o terreno?
[125]
Classificar?
Abstração
Por onde começar a limpar o terreno?
[126]
Distâncias
Abstração
Por onde começar a limpar o terreno?
[127]
Distâncias
Abstração
Por onde começar a limpar o terreno?
[128]
Abstração
Por onde começar a limpar o terreno?
[129]
Etapa 6
Pilares: Algortimos
// Primeiros passos para começar a
programar/ Pensamento Computacional/
[130]
Algoritmos
• Energia
• Trabalhador
• Eficiência
• Rapidez
[131]
Algoritmos
• Energia
• Trabalhador
• Eficiência
• Rapidez
[132]
Algoritmos
• Energia
• Trabalhador
• Eficiência
• Rapidez
[133]
Algoritmos
PROCESSAMENTO DE DADOS
[134]
Algoritmos
PROCESSAMENTO DE DADOS
[135]
Algoritmos
Processo de resolução de problemas "step by setp" utilizando
instruções
Instruções
Qual a ordem de
execução?
[136]
Algoritmos
Processo de resolução de problemas "step by setp" utilizando
instruções
Instruções
Qual a ordem de
execução?
[137]
Algoritmos
Desenvolvimento do Programa
• Análise
Estudo e definição dos dados
de entrada e saída
• Algoritmo
• Codificação
[138]
Algoritmos
Desenvolvimento do Programa
• Análise
• Algoritmo
• Descreve o problema por meio de
• ferramentas narrativas, fluxograma,
• ou pseudocódigo
• Codificação
[139]
Algoritmos
Desenvolvimento do Programa
• Análise
• Algoritmo
• Codificação
O algoritmo é codificado de acordo
com a linguagem de programação
escolhida
[140]
Algoritmos
Sequência de passos com objetivo definido
[142]
Algoritmos
[143]
Algoritmos
Como construir um algoritmo?
• Compreenção do problema
• Definição dados de entrada
Pontos mais importantes
• Definir processamento
• Definir dados de saída
• Utilizar um método de construção
• Teste e diagnóstico
[144]
Algoritmos
Como construir um algoritmo?
Narrativa
Fluxograma
Pseudocódigo
[149]
Algoritmos
Construção de algoritmos
Sem conceitos
Narrativa novos
Utilização da
Fluxograma
linguagem natural
Diversas interpretações
Pseudocódigo
possíveis
[150]
Algoritmos
Construção de algoritmos
Simples
Narrativa entendimento
Utilização de símbolos
Fluxograma pré-definidos
Conhecimento prévio da
Pseudocódigo estrutura e símbolos
[151]
Algoritmos
Construção de algoritmos
Fluxograma Portugol
Passos a serem
Pseudocódigo seguidos
[152]
Algoritmos
Multiplicação de dois
números:
[153]
Algoritmos
Média de alunos:
[154]
Etapa 7
[155]
Perdido
[156]
Perdido
Como resolver o problema utilizando o pensamento
computacional?
[157]
Perdido
Como resolver o problema utilizando o pensamento
computacional?
• Identificar mecanismos
• Recursos comuns
• Detalhes mais importantes
[158]
Perdido
Água
Sobrevivência Comida
Abrigo
[159]
Perdido
Água
Sobrevivência Comida
Abrigo
[160]
Perdido Chuva
Água
Nascente
Coletar
Comida
Sobrevivência
Caçar
Loclização
Abrigo Proteção
Quente e seco
[161]
Perdido Chuva
Água
Nascente Fogo
Coletar
Comida
Localização Mapa
Fogo
Abrigo Proteção
Lança
[162]
Perdido Chuva
Água
Nascente Fogo
Coletar
Comida
Localização Mapa
Fogo
Abrigo Proteção
Lança
REPETIÇÃO
Quente e seco Fogo
[163]
Perdido Chuva
Onde construir o
abrigo?
Água
Nascente Fogo
Procurar água
Coletar
Comida
Localização Mapa
Fogo
Procurar comida Abrigo Proteção
Lança
[164]
Perdido Chuva
Água
Nascente Fogo
Coletar
Comida
Localização Mapa
Fogo
Abrigo Proteção
Lança
[165]
Perdido Chuva
Água
Nascente Fogo
Coletar
Comida
Localização Mapa
Fogo
Abrigo Proteção
FOCO: Lança
• Decomposição
• Reconhecimento de padrões
• Abstração
• Decomposição
• Reconhecimento de padrões
• Abstração
• Pegar o peixe
• Colocar água na panela
• Fever a água
• Limpar o peixe
• Fazer o cozido
• Assar o filé
[169]
Pescar
Preparando a comida
Ferver a água
• Pegar o peixe
• Colocar água na panela Fazer o cozido
• Fever a água
• Limpar o peixe Assar o filé
• Fazer o cozido
• Assar o filé Comer
[170]
Perdido
Mesmo processo para
• Encontrar água
• Construir abrigo
• Máximizar chances de resgate
• ...
[171]
Etapa 8
[172]
Soma de intervalo
Ex: soma de n° entre 1 e 200
1+2
1+3
1+4
1+5 ...
[173]
Soma de intervalo
Ex: soma de n° entre 1 e 200
1+2
1+3
1+4 Solução ineficiente!
1+5 ...
[174]
Soma de intervalo
Ex: soma de n° entre 1 e 200
200 + 1
199 + 2
198 + 3 Outra forma de
197 + 4 ... expressar a solução
[175]
Soma de intervalo
Ex: soma de n° entre 1 e 200
Padrão
200 + 1 200 + 1 = 201
199 + 2 199 + 2 = 201
198 + 3 198 + 3 = 201
197 + 4 ... 197 + 4 = 201 ...
Decomposição
[176]
Soma de intervalo
Ex: soma de n° entre 1 e 200
Padrão
200 + 1 200 + 1 = 201
199 + 2 199 + 2 = 201
198 + 3 198 + 3 = 201
197 + 4 ... 197 + 4 = 201 ...
Decomposição
[177]
Soma de intervalo
Ex: soma de n° entre 1 e 200
[180]
Soma de intervalo
Expressar em variáveis
Ex: soma de n° entre x e y
1 e 200
[x, y] -> intervalo
200 + 1 = 201
y+x = resultado parcial 199 + 2 = 201
(y-1) + (x+1) = resultado_parcial
…
[181]
Soma de intervalo
100 x 201 = 20.100
Expressar em variáveis
Ex: soma de n° entre x e y
[184]
Adivinhe o número
Ex: adivinhe o número
[185]
Adivinhe o número
Possível solução
Ex: adivinhe o número
O número é 1?
O número é 2?
O número é 3?
...
[186]
Adivinhe o número
Possível solução
Ex: adivinhe o número
O número é 1?
O número é 2?
Ineficiente
O número é 3?
[187]
Adivinhe o número
Possível solução
Ex: adivinhe o número
[189]
Adivinhe o número Método de
busca
[191]
Aula 2: Introdução à Lógica
de programação
// Primeiros passos para começar a programar
[192]
Objetivo Geral
[193]
Percurso
[194]
Etapa 1
O que é Lógica?
[195]
Lógica
Numerosas soluções
Questão
Problema
[196]
Lógica
Definição formal
[197]
Lógica
Lógica
[198]
Lógica
Definição formal de lógica
[199]
Forma como desencadeiam
acontecimentos
Lógica
Organização coesa
Lógica
Forma de raciocínio
[200]
Lógica
Lógica
[201]
Lógica
Percebe que essa
definição se aplica no
seu cotidiano?
[202]
Lógica
Percebe que essa
definição se aplica no
seu cotidiano? Sequência de instruções
[203]
Lógica
Percebe que essa
definição se aplica no
seu cotidiano? Sequência de instruções
Ações
Ações
Ações
[204]
Lógica
Percebe que essa
definição se aplica no
seu cotidiano? Sequência de instruções
Ações
Ação
Ações
Ações
[205]
Lógica
Percebe que essa
definição se aplica no
seu cotidiano? Sequência de instruções
Ações
Ação
Ações
Ações
[206]
Lógica Falta de costume
[207]
Lógica Falta de costume
Instruções detalhadas
[208]
Lógica Por que entender a lógica
em programação?
Steve Jobs
[209]
Etapa 2
Técnicas de Lógica de
Programação
// Primeiros passos para começar a programar/
Introdução à Lógica de Programação
[210]
Técnicas
Planta baixa
[211]
Técnicas
• Modelo tradicional
[218]
Técnica Linear
Acordar
[219]
Técnica Linear
Fazer o café
Acordar
[220]
Técnica Linear
Tomar o café
Fazer o café
Acordar
[221]
Técnica Estruturada
Estrutura
Técnica Estruturada
Programas
Escrita
Entendimento
Objetivo
Validação
Manutenção
Módulo 1
Controlada por um conjunto
Módulo 3 de regras
Módulo 2
[225]
Técnica Modular
Módulo 1 • Simplicação
Metas
Módulo 3 • Decompor o problema
Módulo 2 • Verificação do módulo
[227]
Técnica Modular
[229]
Objetivo
[230]
Percurso
[231]
Percurso
[232]
Percurso
[233]
Etapa 1
Tipologias e
variáveis
// Primeiros passos para começar a programar/
Fundamentos de algoritmos
[234]
Variáveis
[235]
Variáveis
Informação
Dados Instruções
[236]
Tipos de dados
Tratadas e processadas
Informação
Dados Instruções
[237]
Tipos de dados
Tratadas e processadas
Informação
Numéricos
Caractéres
Dados Instruções
Lógicos
[238]
Tipos - Numérico
0, 1, 5, 50, 60 , 800, …
Numéricos -58, -50, -49, 32, -10, -5
Inteiros
Reais
5.95, 9.54, -8.8, -0.555 ...
0, 1, 5, 50, 60 , 800, …
-58, -50, -49, 32, -10, -5
[239]
Tipo - Caracteres
Caractere "Programação"
k "PROGRAMAÇÃO"
A "KU*&NH53g"
"Fone:(25)99865-5741"
p C e "Rua alameda, n°45"
[240]
Tipo - Lógico
Booleano
Lógico
Verdadeiro - 1
Falso - 0
[241]
Tipo - Lógico
Booleano
Lógico
.Verdadeiro .V ou .S
Verdadeiro - 1
.Falso .F ou .N
Falso - 0
Português estruturado
[242]
O que é uma Variável
variável? Mutável
Possui variações
Inconstante
Incerto
Instável
[243]
O que é uma Variável
variável?
a-b=d a+b=c
[244]
O que é uma Variável
variável?
a-b=d a+b=c
[245]
Variável
Variável
[246]
Variável Identificar
Variável
[247]
Variável
Nome da variável
Regras
Controle
Viagiada, controle
[250]
O que é uma Variável
variável?
O que não muda
Inalterável Definição
Invariável
[251]
O que é uma Variável
variável?
O que não muda
Inalterável Definição
Invariável
[252]
Constante?
Variável
O que não muda
Inalterável Definição
Tratadas e processadas
Informação Operações
Dados Instruções
[254]
Etapa 2
Instruções primitivas
[255]
Instruções Primitivas
Cálculo matemáticos
Operadores
Variáveis
Constantes
[256]
Instruções Primitivas
Cálculo matemáticos
Operadores
Variáveis
Constantes
Binário Unário
[257]
Instruções Primitivas Operadores
Area = pi*raio²
fonte: livro de referência [259]
Instruções Primitivas
Definição formal
Notação Janela
Window
Operações
Ventana
[261]
Outros conceitos
Entrada, processamento e saída
Dados
[262]
Outros conceitos
Entrada, processamento e saída
Dados
[263]
Exemplo
Início programa:
Nota1 = 5
Média escolar Nota = 8
Resultado = 0
Escreva resultado
Fim programa
Saída:
6.5
[264]
Exemplo Variável
Início programa:
Nota1 = 5
Média escolar Nota = 8 Constante
Resultado = 0
Escreva resultado
Fim programa
Saída:
6.5
[265]
Exemplo Variável
Início programa:
Nota1 = 5
Média escolar Nota = 8 Constante
Resultado = 0
Escreva resultado
Fim programa
Saída:
6.5
[266]
Exemplo Variável
Início programa:
Nota1 = 5
Média escolar Nota = 8 Constante
Resultado = 0
Fim programa
Saída:
6.5
[267]
Etapa 3
Estruturas condicionais e
operadores
// Primeiros passos para começar a programar/
Fundamentos de algoritmos
[268]
Exemplo Variável
Início programa:
Nota1 = 5
Média escolar Nota = 8 Constante
Resultado = 0
Fim programa
Saída:
6.5
[269]
Estrutura Condicional
Estado de uma pessoa ou coisa Condição
Operação
[271]
Estrutura Condicional
Inverdade Qual a
ideia?
Condição Exceção
Satisfeita
Operação
[272]
Estrutura Condicional
Operadores Relacionais
Estrutura Condicional
Condicional Simples
Condição
Operação
Condicional Simples
Se (<codição>) então
<instruções para condição verdadeira>
fim_se
A = 0
B = 0
X = 0
leia A
leia B
X = A + B
se (X > 10)
escreva X
Fim se
Fim programa
Condicional Composta
Condição Exceção
Operação
Fonte: livro de
referência
Estrutura Condicional
Condicional Composta
Se (<codição>) então
<instruções para condição verdadeira>
fim_se
Fonte: livro de
referência
Estrutura Condicional
Inicio programa:
A = 0
B = 0
X = 0
leia A
leia B
X = A + B
se (X > 10)
escreva X
Fim se
Fonte: livro de
Fim programa
referência
Estrutura Condicional
Condicional Composta
Condição Exceção
Operação
Fonte: livro de
referência
[281]
Estrutura Condicional
Condicional Composta
Se (<codição>) então
<instruções para condição verdadeira>
Senão
<instruções para condição falsa>
fim_se Fonte: livro de
referência
[282]
Estrutura Condicional
Inicio programa:
A = 0
B = 0
X = 0
leia A
leia B
X = A + B
se (X >= 10)
X = X-7
Senão
X = X+5
Fim se
Nota1 = 5
Média escolar Nota = 8
Resultado = 0
Escreva resultado
Fim programa
Saída:
6.5
[284]
Estrutura Condicional
Condicional Encadeado
Operação Operação
[285]
Estrutura Condicional
Condicional Encadeado
[286]
Estrutura Condicional
Início programa:
A = 0
B = 0
X = 0
leia A
leia B
X = A + B
se (X >= 10)
X = X-7
Senão
X = X+5
Fim se
Operadores Lógicos
Fonte: biblioo.info
[288]
Estrutura Condicional
Operadores
lógicos? Quando utilizar?
• Verificação de V ou F
• Substituição
• encadeamento de condições
[289]
Estrutura Condicional
Quando utilizar?
• Verificação de V ou F
• Substituição
Fonte: biblioo.info
• encadeamento de condições
[290]
Estrutura Condicional
AND – operador Lógico
Condição verdadeira
Fonte: dot.li.com
• Todas devem ser satisfeitas
[291]
Fonte: livro de referência
Estrutura Condicional
AND – operador Lógico
[292]
Fonte: livro de referência
Estrutura Condicional
OR – operador Lógico
Condição verdadeira
• Apenas uma das condições Fonte: dot.li.com
Deve ser verdadeira
[293]
Fonte: livro de referência
Estrutura Condicional
AND – operador Lógico
Ex:
Fonte: dot.li.com
se (choveu .ou. grama_molhada) então
escreva "Plantas regadas"
senão
escreva "Regar plantas"
[294]
Fonte: livro de referência
Estrutura Condicional
NOT – operador Lógico
• Operador de negação
• Inversão do resultado lógico
• Operador de negação
• Inversão do resultado lógico
Ex:
• Not B - > tudo que não está em B
[296]
Etapa 4
Estruturas de
repetição
// Primeiros passos para começar a programar/
Fundamentos de algoritmos
[297]
Estruturas de Repetição
Laços
Controle de fluxo
Loop
[298]
Estruturas de Repetição
Condições de parada
Trecho de um
programa
[299]
Estruturas de Repetição
Condições de parada
Trecho de um
programa • Número de repetições
pré-fixada
Trecho de um
programa
[301]
Qual a
vantagem?
Estruturas de Repetição
Mas não é só
repetir o código?
Redução de linhas
Trecho de um
programa Compreensão facilitada
Redução de erro
[302]
Estruturas de RepetiçãoTem mais de tipo
de estrutura de
repetição?
[303]
Estruturas de Repetição
Enquanto
Teste lógico
• Início
Número de repetições
• indefinidas
Fonte: pt.vecteezy.com
Grama alta
[304]
Estruturas de Repetição
Enquanto
Teste lógico
• Início
Número de repetições
• indefinidas Aparar grama
Fonte: pt.vecteezy.com
Grama alta
[305]
Estruturas de Repetição
Enquanto
Teste lógico
• Início
Analisar grama
Número de repetições
• indefinidas Aparar grama
Fonte: pt.vecteezy.com
Grama alta
[306]
Estruturas de Repetição
Enquanto
grama = Falso
Teste lógico
• Início Enquanto (grama == falso) faça
[307]
Estruturas de Repetição
Procurar artigo
Repita
Virar página
Teste lógico
Analisar conteúdo
• final
Número de repetições
• indefinidas
[308]
Estruturas de Repetição
Para … de … até
Teste somatorio = 0
• Início para inicio = 1 até 10
[309]
Uma dentro
Estruturas de Repetição
Consigo mesclar da outra?
as estruturas?
Trecho de um
programa
[310]
Uma dentro
Estruturas de Repetição
Consigo mesclar da outra?
as estruturas?
Enquanto (<condição>)
Trecho de um Se (<condição2>)
<instruções>
programa fimse
...
fim enquanto
[311]
Etapa 5
Vetores e matrizes
[312]
Vetores e Matrizes
0, 1, 5, 50, 60 , 800, …
Numéricos -58, -50, -49, 32, -10, -5
Inteiros
Reais
5.95, 9.54, -8.8, -0.555 ...
0, 1, 5, 50, 60 , 800, …
-58, -50, -49, 32, -10, -5
[313]
Vetores e Matrizes Container
Definição formal
Matriz unidimensional
[314]
Vetores e Matrizes Container
Definição formal
[315]
Vetores e Matrizes
Coleção de variáveis
Contiguas em memória
Índices
Matrizes
[316]
Vetores e Matrizes
nota11 = 10
nota21 = 5
Média escolar
nota12 = 7
nota22 = 8
------------------------------------------
notas_aluno1 = [10,5]
notas_aluno2 = [7,8]
[317]
Vetores e Matrizes
nota11 = 10
nota21 = 5
Média escolar
nota12 = 7
nota22 = 8
------------------------------------------
notas_aluno1 = [10,5]
notas_aluno2 = [7,8]
A cada duas posições
------------------------------------------ um novo aluno
notas_alunos = [10,5,7,8]
[318]
Vetores e Matrizes
Definição
Leitura
[319]
Vetores e Matrizes
Dados de alunos
[320]
Vetores e Matrizes
Dados de alunos
[321]
Vetores e Matrizes
matriz_alunos[6][6]
Média escolar escreva "ID aluno"
escreva matriz_alunos[0][0]
escreva "Média"
escreva matriz_alunos[0][6]
------------------------------------------
Menor quantidade
de linhas
[322]
Etapa 6
[323]
Funções
Subprograma
Subalgoritmo
Função
Bloco
Método Sub-rotina
[324]
Funções
Similar ao conceito de
função matemática
blog.professorferretto.com.br
[325]
Funções
Definição formal
Decomposição do algoritmo
[326]
Funções
Definição formal
Decomposição do algoritmo
[327]
Funções
Função? Não é mais fácil
fazer tudo junto?
Modularização do programa
[328]
Funções
Função? Não é mais fácil
fazer tudo junto?
Definição formal
Assinatura
[329]
Funções
Definição Definição formal
Variável local
[330]
Funções
Definição Definição formal
Dados
Resultado
Função
[332]
Funções Alterar estado do
programa
Dados
Resultado
Função
[333]
Funções
Exemplo
[334]
Funções
Reutilização de código
Exemplo
[335]
Funções
funcao mediaescolar(nota1,nota2)
Média escolar resultado = 0
resultado = (Nota1 + Nota2)/2
retorne resultado
fim funcao
------------------------------------------
aluno1 = mediaescolar(nota11,nota21)
aluno2 = mediaescolar(nota12,nota22)
aluno13 = mediaescolar(nota13,nota23)
[336]
Etapa 7
Instruções de
entrada/saída
// Primeiros passos para começar a programar/
Fundamentos de algoritmos
[337]
Instruções de entrada/saída
Dados
Resultado
Processamento [338]
Instruções de entrada/saída
Quais os tipos e como Como exibir meu
inserir os dados? resultado?
Dados
Resultado
Processamento [339]
Instruções de entrada/saída
Definição formal
Instruções de entrada
[340]
Instruções de entrada/saída
Metadados
[341]
Instruções de entrada/saída
Definição formal
Instruções de saída
[342]
Instruções de entrada/saída
Arquivos
Dispositivos de saída
Log do sistema
Arquivos de acesso
ao usuário Híbridos
[343]
Instruções de entrada/saída
Saída programada
Existem dois tipos de
saídas dentro de um programa
(algoritmo) Saída por interrupção
[344]
Instruções de entrada/saída
Saída programada
Existem dois tipos de
saídas dentro de um programa
(algoritmo) Saída por interrupção
Condicinal
Incondicional
[345]
Instruções de entrada/saída
Saída programada
Existem dois tipos de
saídas dentro de um programa
(algoritmo) Saída por interrupção
Aguarda o
dispositivo Condicinal
Incondicional
[346]
Instruções de entrada/saída
• Bem sucedida
• Erro de sintaxe ou outro
• Erros de programação
• Problemas com a interface código
[347]
Aula 4: Linguagens de
programação
// Primeiros passos para começar a programar
[348]
Objetivo
[349]
Percurso
[350]
Percurso
[351]
Etapa 1
Introdução à linguagem de
programação
// Primeiros passos para começar a programar/
Linguagens de programação
[352]
Introdução Por que falar de história da
computação?
[353]
Introdução Por que falar de história da
computação?
[354]
Introdução Por que falar de história da
computação?
Hardware Software
[355]
Introdução História da computação
[356]
Introdução História da computação
[357]
Introdução História da computação
[359]
Introdução História da computação
[360]
Introdução História da computação
Von Neuman
Alan Turing na Projeto Dilab EUA
escola de cifra e Codificador de voz Máquina de cartões
Instrumentos códigos Turing, Neunam e Claude Shanon – usado no censo
computacionais 9 matemáticos Shanon algebra booleana americano
Entre 40 e
1820 1940 1948 1880
50
Claude
Shannon [362]
Introdução História da computação
Von Neuman
Alan Turing
[363]
Introdução História da computação
[365]
Introdução História da computação
[366]
Introdução História da computação
[367]
Introdução 2° guerra mundial
Fonte: inf.ufrgs.br
Primeiros computadores ENIAC
Válvula Programável
Relés - avanço 18 mil válvulas
IBM
Separação de memórias
Dicisão - algoritmo
Harvard Mark 1
Mulheres programando no ENIAC
[368]
Introdução
EDVAC
Programa armazenado
Colossus - programação por fio [369]
Introdução
1975 1977 1980 1985 2001
Intel 8080 Apple II Apple III Windows 1.0 Windows XP
Linguagem
basic - fonte:
Microsoft computerhistory.org
Fonte:wired.com
Lisa – fracasso
Apple IBM-PC da Apple Windows 2000
opensource
1975 1977 1980 1985 2001
Intel 8080 Apple II Apple III Windows 1.0 Windows XP
Linguagem
basic -
Microsoft
IBM-PC
Lisa – fracasso
Apple IBM-PC da Apple Windows 2000
LISA
Lisa – fracasso
Apple IBM-PC da Apple Windows 2000
Lisa – fracasso
Apple IBM-PC da Apple Windows 2000
• Primeira linguagem
• Linguagem de
• Montagem
• Máquina
[374]
Ling. de máquina Paradigmas Novos conceitos
1949 Entre 60 e 70 2000
Anos 50 Déc. 90
fonte:
computerhistory.org
Anos 50 Déc. 90
Anos 50 Déc. 90
Anos 50 Déc. 90
Anos 50 Déc. 90
[381]
Introdução
Problemas de decisão • Caracter lógico - Sim ou Não
• Ideia
• Pertencimento
A
Ex: "Dado um número n inteiro
positivo, determine se n e primo"
[382]
Introdução
Problemas de decisão • Caracter lógico - Sim ou Não
• Ideia
• Pertencimento
A
Ex: "Dado um número n inteiro
positivo, determine se n e primo"
[383]
Introdução
• Relacionamento binário
Problemas de busca
• Objetivo
• Semelhante ao nome
• x está em A?
[384]
Introdução
Problemas de otimização Objetivo
• Maximizar, ou
• Minimizar uma função
Aplicações
[385]
Introdução
O que é uma linguagem de programação?
[386]
Introdução
O que é uma linguagem de programação?
Tradução
Código fonte
Interpretação
[388]
Etapa 2
Como o computador
entende o programa?
// Primeiros passos para começar a programar/
Linguagens de programação
[389]
Introdução
Tradução
Código fonte
Interpretação
[390]
Introdução
Como o
computador Um programa é um amontado de palavras
entende o
programa?
senão for possível que o computador
entenda
[391]
Introdução
Como o
computador Um programa é um amontado de palavras
entende o
programa?
senão for possível que o computador
entenda
Processo de tradução
[392]
Introdução
Executa analise do programa
Como o
computador
Compilador
entende o
programa?
[396]
Tradução
Análises
Programa fonte
Bibliotecas
externas
[397]
Tradução Programa fonte
Execução
Interpretador
[398]
Introdução Execução mais rápida
Programas menores
Programas menores
Características de um
programa
// Primeiros passos para começar a programar/
Linguagens de programação
[401]
Características
Basta sair
programando?
[402]
Características
Basta sair
programando?
[403]
Características
Legibilidade
Desenvolvimento de Redigibilidade
programas
Confiabilidade
Custo
Diretrizes
[404]
Características
Legibilidade
[405]
Características
Facilidade de escrita de
Redigibilidade código
• Pode conflitar com a legibilidade
• Ortogonalidade
• Simplicidade da escrita
• Suporte à abstração
• Reuso do código
• Expressividade Coerência nas instruções
[406]
Características
Facilidade de escrita de
Redigibilidade código
• Pode conflitar com a legibilidade
• Ortogonalidade
• Simplicidade da escrita
• Suporte à abstração
• Reuso do código
• Expressividade Coerência nas instruções
operador ++
uso do for [407]
Características
Confiabilidade
Possui:
• verificação de tipos
• Trata exceções
• Uso de ponteiros
• Compatibilidade entre compiladores
[409]
Características
Outras características
Atualizações
Uso para IA
Disponibilidade de ferramentas
[410]
Etapa 4
Análises de código
[411]
Análise
[412]
Análise léxica
[413]
Análise léxica
Elementos
denominados tokens
[414]
Análise léxica Elementos:
Elementos
denominados tokens
[415]
Análise léxica Elementos:
Elementos:
Elementos
denominados tokens Caracteres de espaços em
branco, comentários, ...
[416]
Análise sintática
Forma
Sintaxe:
"componente do sistema linguístico que interligam os
constituintes da sentença, atribuindo-lhe uma
estrutura"
Corretude do programa
[417]
Análise sintática
Forma
Sintaxe:
"componente do sistema linguístico que interligam os
constituintes da sentença, atribuindo-lhe uma estrutura"
Padrão - gramática
• Depende da linguagem de programação utilizada
[418]
Análise semântica
Significado
Semântica:
"É o estudo do significado. Incide sobre
a relação entre significantes, como: palavras, frases, sina
is e símbolos"
Lógica do programa
[419]
Análise semântica
Significado
Semântica:
"É o estudo do significado. Incide sobre
a relação entre significantes, como: palavras, frases, sina
is e símbolos"
Erro de semântica: if (x = 0)
• não faz o que é esperado printf("O valor e' nulo\n");
[420]
Análise semântica
if (x == 0)
Significado printf("O valor e' nulo\n");
Semântica:
Erro de semântica
"É o estudo do significado. Incide sobre
a relação entre significantes, como: palavras, frases, sina
is e símbolos"
Erro de semântica: if (x = 0)
• não faz o que é esperado printf("O valor e' nulo\n");
[421]
Etapa 5
Paradigmas de
programação
// Primeiros passos para começar a programar/
Linguagens de programação
[422]
Paradigmas
O que é um
paradigma?
[423]
Paradigmas
O que é um
paradigma? Definição formal
Computação
Estruturado Lógico
distribuída
[425]
Classificação
Computação
Estruturado Lógico
distribuída
[426]
Classificação
Computação
Estruturado Lógico
distribuída
[427]
Classificação
Computação
Estruturado Lógico
distribuída
[428]
Classificação
Computação
Estruturado Lógico
distribuída
[429]
Classificação
Computação
Estruturado Lógico
distribuída
[430]
Classificação
Computação Lógico
Estruturado
distribuída
Ada
[431]
Paradigma Estruturado
Conceitos:
• Sequência
• Decisão
• Iteração
Ênfase em sequência
[432]
Paradigma Estruturado
Conceitos:
• Sequência
• Decisão
• Iteração
Ênfase em sequência
[433]
Paradigma Estruturado
Dominou o mercado até POO
Conceitos:
• Sequência
• Decisão
• Iteração
Ênfase em sequência
[434]
Paradigma Estruturado
Utilização:
• Problemas simples e diretos
• Aprender programação
Ênfase em sequência
[435]
Paradigma Estruturado
Conceitos:
• Sequência
• Decisão
• Iteração
Ênfase em sequência
[436]
Orientação à Objeto
Paradigma de programação
baseado na utilização de objetos
e suas interações
[437]
Orientação à Objeto
O que é um objeto?
[438]
Orientação à Objeto
O que é um objeto?
[439]
Orientação à Objeto
O que é um objeto?
Orientação a Objeto
O que tenho Atributos
[442]
Orientação à Objeto
Modelo
Classificação
Atributos
Métodos
Estados
[443]
Orientação à Objeto
O que é um objeto?
Ponto de vista da programação
POO Estruturada
Classe
Alocação em
Alocação em memória memória
Variável
Operações associadas Operações
associadas
[444]
Orientação à Objeto
classe caneta():
cor: inteiro
carga: caracter
tampada: lógico
metodo escrever()
Se estado tampada
Escreva ("Destampar")
Senão
Escreva ("algo")
Fimse
metodo tampar()
Tampada = verdadeiro
fimclasse [445]
Orientação à Objeto
HERANÇA
Pilares de ENCAPSULAMENTO
Orientação a Objeto
POLIMORFISMO
ABSTRAÇÃO
[446]
Orientação à Objeto
Classe mãe
• Classes
Classe filho Classe filha
• Características
• Atributos
• Métodos
Comportamento Comportamento e
e estado
Estado gerais Específicos
[447]
Orientação à Objeto
PE Problemas específicos e
diretos
[448]
Referências
Bibliográficas
// Primeiros passos para começar a programar
[449]
Referências
Computional Thiking
https://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf
https://ubiquity.acm.org/article.cfm?id=1922682
https://www.youtube.com/watch?v=YVEUOHw3Qb8
https://simplificandoredes.com/historia-da-computacao/
https://simplificandoredes.com/pensamento-computacional/
[450]
Referências
Padrões
https://www.cin.ufpe.br/~if114/Monografias/Reconhecimento/
https://web.fe.up.pt/~jmsa/recpad/index.htm
https://www.teses.usp.br/teses/disponiveis/18/18133/tde-10072006-
002119/publico/Capitulo_2_mestrado.pdf
http://www.vision.ime.usp.br/~teo/publications/dissertacao/node9.html
https://periodicos.furg.br/vetor/article/view/3363/3811
[451]
Referências
Programação e algoritmos
http://www.inf.ufes.br/~tavares/labcomp2000/aulas.htm
https://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/
http://www.inf.ufes.br/~tavares/labcomp2000/aula1.htm
[452]
Referências
Algoritmos
https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3t
WYp6V_F-5jb5L2iHb
Algoritmos - MIT
[453]
Referências
• José Augusto Manzano, Algoritmos -
lógica para desenvolvimento de programação de computadores, Ed. Érica,
17a ed. (ou mais recentre) - livro de referência
• Ana Fernandes
Ascencio, Fundamentos da programação de computadores - algoritmos,
Pascal, C/C e Java, Ed. Pearson, 2a ed.
[455]
Dúvidas?
> Fórum/Artigos
> Comunidade Online (Discord)
[456]