Você está na página 1de 455

Primeiros passos para

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

2011 - 2015 2023

2009 – 2011 2017 - 2019

Ingressar no Doutorado LNCC


Engenharia da computação - UCP
(objetivo)

[3]
Sobre Mim
Sobre Mim
Gerenciamento de
Redes de computadores
Projetos
2009 2014

2012 2017

Programação Ciencia de dados

[5]
Cursos

[6]
Objetivo Geral
Você será capaz de entender o
que significa pensar computacionalmente.
Pensamento aplicável à qualquer área do conhecimento.

Dessa forma, será capaz


de resolver qualquer problema de uma maneria
mais objetiva e eficiente.

[7]
Percurso

Aula 1 Pensamento Computacional

Aula 2 Introdução à lógica da programação

Aula 3 Fundamentos de Algoritmos

[8]
Percurso

Aula 4 Linguagens de programação

Aula 5 Primeiro contato com a programação

[9]
Aula 1: Pensamento
Computacional
// Primeiros passos para começar a programar

[10]
Objetivo Geral

Apresentar os conceitos que caracterizam o pensamento com


putacional, permitindo que o Dev entenda o
que significa pensar computacionalmente.

[11]
Percurso

Etapa 1 Introdução ao pensamento computacional

Etapa 2 Habilidade complementares

Etapa 3 Pilares: Decomposição

[12]
Percurso

Etapa 4 Pilares: Padrões

Etapa 5 Pilares: Abstração

Etapa 6 Pilares: Algoritmos

[13]
Percurso

Etapa 7 Estudo de caso conceitual: perdido

Etapa 8 Estudo de caso aplicado: Soma de um intervalo

Etapa 9 Estudo de caso aplicado: Adivinhe um número

[14]
Etapa 1

Introdução ao pensamento
computacional
// Primeiros passos para programar/Pensamento
Computacional

[15]
Overview
Pensamento computacional?

Processo de pensamento envolvido na expressão de soluções


em passos computacionais ou algoritmos que podem ser
implementados no computador.

(Aho, 2011; Lee, 2016)

[16]
Overview
Pensamento computacional?

Sistemático e eficiente

Formulação e resolução de problemas

[17]
Overview
Pensamento computacional?

Sistemático e eficiente

Formulação e resolução de problemas

Sejam capazes de resolver


Humanos & máquinas
[18]
Overview
Pensamento computacional?

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

Baseado em 4 pilares Design


Reconhecimento
de padrões
Extrapolar o conceito do
problema para um forma
Abstração
generalista Métodos
Classes
POO
Design de
Herança Polimorfismo algoritmos

[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

• Definir uma solução

• 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

Etapa 1 Introdução ao pensamento computacional

Etapa 2 Habilidade complementares

Etapa 3 Pilares: Decomposição

[37]
Percurso

Etapa 4 Pilares: Padrões

Etapa 5 Pilares: Abstração

Etapa 6 Pilares: Algoritmos

[38]
Percurso

Etapa 7 Estudo de caso conceitual: perdido

Etapa 8 Estudo de caso aplicado: Soma de um intervalo

Etapa 9 Estudo de caso aplicado: Adivinhe um número

[39]
Habilidades
Raciocínio Lógico

Aperfeiçoamento

[40]
Raciocínio Lógico

Raciocínio lógico é uma forma


de pensamento estruturado, ou raciocínio,
que permite encontrar a conclusão ou determinar a resolução
de um problema.

[41]
Raciocínio Lógico

Raciocínio lógico é uma forma


de pensamento estruturado, ou raciocínio,
que permite encontrar a conclusão ou determinar a resolução
de um problema.

Habilidade de treinamento
[42]
Raciocínio Lógico
Indução

Classificação Dedução

Abdução

[43]
Raciocínio Lógico

Indução

Classificação Dedução Leis e teorias

Abdução

Fenômeno observado [44]


Raciocínio Lógico

Indução

Classificação Dedução Leis e teorias

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

Abdução Indução Dedução

[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

Aprimoramento A partir de uma solução,


determinar pontos de melhora e
refinamento

Refinamento
[56]
Aperfeiçoamento
Ato de aperfeiçoar

• Encontrar solução eficiente Melhor uso de recursos


• Otimizar processos
• Simplificar linhas de códigos Melhorar códigos e
• Funções bem definidas algoritmos

[57]
Etapa 3

Pilares: Decomposição
// Primeiros passos para começar a
programar/ Pensamento Computacional/

[58]
Percurso

Etapa 1 Introdução ao pensamento computacional

Etapa 2 Habilidade complementares

Etapa 3 Pilares: Decomposição

[59]
Percurso

Etapa 4 Pilares: Padrões

Etapa 5 Pilares: Abstração

Etapa 6 Pilares: Algoritmos

[60]
Percurso

Etapa 7 Estudo de caso conceitual: perdido

Etapa 8 Estudo de caso aplicado: Soma de um intervalo

Etapa 9 Estudo de caso aplicado: Adivinhe um número

[61]
Objetivo Geral
É preciso coompreender como executar cada etapa de
um pensamento computacional.

Dessa forma, as aulas subsequêntes são dedicadas


à compreensão individual de cada pilar desse
processo de pensamento.

[62]
Decomposição

"If you can't solve a problem,


then there is an easier
problem that you can solve: find it"

George Polya – professor e matemático

[63]
Decomposição
Primeiro passo da resolução de problemas dentro do conceito
de pensamento computacional

"Dado um problema complexo, devemos quebra-lo


em problemas menores. Portanto, problemas
mais fáceis e gerenciáveis."

[64]
Decomposição
Estratégia

Processo de quebrar e determinar


partes menores e gerenciáveis Análise

[65]
Decomposição
Estratégia Estudar, explorar

Processo de quebrar e determinar


partes menores e gerenciáveis Análise
"realizar exame
detalhado"

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

Dependência entre tarefas.


Executadas em "fila"

[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

• Desenvolver a decomposição "by yourself"

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

• O que será abordado?


• Estrutura Definição de
• Conteúdo de cada tópico componentes e etapas
• Textos de conexão
Sequêncial ou paralelo
Em ordem ou não
[80]
Decomposição
Exemplo: movimentos
de um avatar Ações

Padrão Movimento

Virar Mover Andar Correr Sentar Levantar

Direita Esquerda Cima Baixo Mover perna Impulsionar

[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

Compressão por reconhecimento de padrões


[87]
Padrões
Seres vivos x padrões

[88]
Padrões
Seres vivos x padrões

[89]
Padrões
Reconhecimento de Padrões

• Por que determinar padrões?

[90]
Padrões
Reconhecimento de Padrões

• Por que determinar padrões?

Generelizar, com objetivo de obter


resolução para problemas diferentes

[91]
Padrões
Reconhecimento de Padrões

• Por que determinar padrões?

Classes
Categorias

[92]
Padrões
Reconhecimento de Padrões

• Por que determinar


Tipo de mediapadrõ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

Como simular esse


Aprendizado – conceito comportamento?
associado ao objeto

[96]
Padrões
Representação de atributos

Como simular esse


Aprendizado – conceito comportamento?
associado ao objeto

Armazenar dados

[97]
Padrões
Representação de atributos

Como simular esse


Aprendizado – conceito comportamento?
associado ao objeto

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

Input Operator Output

[114]
Abstração
Conceitos baseados
em abstrações

Input Operator Output

[115]
Abstração
Conceitos baseados
em abstrações

Input Operator Output

[116]
Abstração
Conceitos baseados
em abstrações

Input Operator Output

[117]
Abstração
Conceitos baseados
em abstrações

Input Operator Output

[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

O computador recebe, manipula e


armazena dados.

[134]
Algoritmos
PROCESSAMENTO DE DADOS

O computador recebe, manipula e


armazena dados.

[135]
Algoritmos
Processo de resolução de problemas "step by setp" utilizando
instruções

O que precisa ser


feito?

Instruções
Qual a ordem de
execução?
[136]
Algoritmos
Processo de resolução de problemas "step by setp" utilizando
instruções

O que precisa ser


feito?

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

Execução de tarefas específicas

Conjunto de operações que resultam


em uma sucessão finita de ações
[141]
Algoritmos

[142]
Algoritmos

Instruções executadas passo a passo


para concluir a tarefa

[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?

• Compreenção do problema Dados fornecidos e


Cenário
• Definição dados de entrada
• Definir processamento
• Definir dados de saída
• Utilizar um método de construção
• Teste e diagnóstico
[145]
Algoritmos
Como construir um algoritmo?

• Compreenção do problema Cálculos e Restrições


• Definição dados de entrada
• Definir processamento
• Definir dados de saída
• Utilizar um método de construção
• Teste e diagnóstico
[146]
Algoritmos
Como construir um algoritmo?

• Compreenção do problema Após processamento


• Definição dados de entrada
• Definir processamento
• Definir dados de saída
• Utilizar um método de construção
• Teste e diagnóstico
[147]
Algoritmos
Como construir um algoritmo?
Construção e refinamento do
• Compreenção do problema algoritmo
• Definição dados de entrada
• Definir processamento
• Definir dados de saída
• Utilizar um método de construção
• Teste e diagnóstico
[148]
Algoritmos
Construção de algoritmos

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

Narrativa Regras definidas

Fluxograma Portugol

Passos a serem
Pseudocódigo seguidos
[152]
Algoritmos

Multiplicação de dois
números:

Passo 1 – recebe os valores


Passo 2 – Multiplica
Passo 3 – Imprime resultado

[153]
Algoritmos

Média de alunos:

Passo 1 – recebe os valores


Passo 3 – Imprime resultado
Passo 4 – Regra de aprovação
Passo 5 – Imprima o resultado

[154]
Etapa 7

Estudo de caso conceitual:


perdido
// Primeiros passos para começar a
programar/ Pensamento Computacional/

[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

Sobrevivência Caçar Fogo

Localização Mapa

Fogo

Abrigo Proteção

Lança

Quente e seco Fogo

[162]
Perdido Chuva

Água

Nascente Fogo

Coletar

Comida

Sobrevivência Caçar Fogo

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

Sobrevivência Caçar Fogo Danger zones

Localização Mapa

Fogo
Procurar comida Abrigo Proteção

Lança

Quente e seco Fogo

[164]
Perdido Chuva

Água

Nascente Fogo

Coletar

Comida

Sobrevivência Caçar Fogo

Localização Mapa

Fogo

Abrigo Proteção

Lança

Quente e seco Fogo

[165]
Perdido Chuva

Água

Nascente Fogo

Coletar

Comida

Sobrevivência Caçar Fogo

Localização Mapa

Fogo

Abrigo Proteção
FOCO: Lança

Nos aspectos principais, não


Quente e seco Fogo
precisa de detalhamento.
[166]
Perdido
So far so good …

• Decomposição
• Reconhecimento de padrões
• Abstração

Próximo passo ... [167]


Perdido
So far so good … Determinar instruções passo a
passo para cozinhar

• Decomposição
• Reconhecimento de padrões
• Abstração

Próximo passo ... [168]


Perdido
Preparando a comida

• Pegar o peixe
• Colocar água na panela
• Fever a água
• Limpar o peixe
• Fazer o cozido
• Assar o filé
[169]
Pescar

Perdido Colocar água na


Limpar o peixe
panela

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

Estudo de caso aplicado:


soma de um intervalo
// Primeiros passos para começar a
programar/ Pensamento Computacional/

[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

200 + 1 = 201 Valor se repete


199 + 2 = 201
198 + 3 = 201 Quantas vezes? 200/2 = 100
197 + 4 = 201
... Resultado
201 x 100 = 20.100
[178]
Soma de intervalo
Ex: soma de n° entre 1 e 200 Expressar em variáveis

200 + 1 = 201 Valor se repete


199 + 2 = 201
198 + 3 = 201 Quantas vezes? 200/2 = 100
197 + 4 = 201
... Resultado
201 x 100 = 20.100
[179]
Soma de intervalo
Expressar em variáveis
Ex: soma de n° entre x e y
1 e 200
[x, y] -> intervalo

[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

[x, y] -> intervalo


total x resultado parcial = resultado

y+x = resultado parcial y/2 = total


(y-1) + (x+1) = resultado_parcial
… 200/2 = 100
[182]
Soma de intervalo
Algoritmo
Passo 1 – Recebe os valores (x e y)
Passo 2 – Resolva:
y/2 = total
Passo 3 – Resolva:
y+x = resultado_parcial
Passo 4 – Ache o total
Final = total x resultado_parcial
Passo 5 – Imprima o resultado
[183]
Etapa 9

Estudo de caso aplicado:


adivinhe o número
// Primeiros passos para começar a
programar/ Pensamento Computacional/

[184]
Adivinhe o número
Ex: adivinhe o número

O problema consiste em determinar o número escolhido por uma


pessoa dentro de um intervalo.

Perguntas com respostas de sim e não.

[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?

... Desperdício de tempo

[187]
Adivinhe o número
Possível solução
Ex: adivinhe o número

P: O número é maior que 50?


R: Não.
P: O número é menor que 20?
R: Sim.

até encontrar o número
[188]
Adivinhe o número Método de
busca

Ex: Busca binária Mais eficiente que busca


por varredura

[189]
Adivinhe o número Método de
busca

Ex: Busca binária Mais eficiente que busca


por varredura
Passo 1 – Ordenar o vetor
Passo 2 – Módulo de L/2
Passo 3 – Acessar estrutura
Passo 4 – Comparar valores
Passo 5 – Repita até encontrar o número
Passo 6 – Imprima "Busca bem sucedida"
[190]
Habilidade
Como aprimorar essa habilidade?

Permitindo que seus alunos expliquem suas decisões e seu


processo de desenvolvimento ...

(Brennan & Renesck)


Para um problema proposto

[191]
Aula 2: Introdução à Lógica
de programação
// Primeiros passos para começar a programar

[192]
Objetivo Geral

Esta aula foca em apresentar o conceito de lógica


aplicada à programação, como um processo de pensamento
atrelado ao conceito de algoritmos e resolução de
problemas.

[193]
Percurso

Etapa 1 O que é Lógica?

Etapa 2 Técnicas de lógica da programação

Etapa 3 Breve história da computação

[194]
Etapa 1

O que é Lógica?

// Primeiros passos para começar a programar/


Introdução à Lógica de Programação

[195]
Lógica
Numerosas soluções
Questão

Problema

Proposta duvidosa Objeto de discussão

[196]
Lógica

Definição formal

"Problema é uma questão que foge a uma determinada regra,


ou melhor é um desvio de percurso, o qual impede de atingir
um objetivo com eficiencia e eficácia."

[197]
Lógica

Lógica

[198]
Lógica
Definição formal de lógica

"Parte da filosofia que trata das formas do pensamento


em geral (dedução, indução, hipótese, inferência etc.) e
das operações intelectuais que visam à determinação do
que é verdadeiro ou não."

[199]
Forma como desencadeiam
acontecimentos
Lógica
Organização coesa

Lógica

Forma de raciocínio

Ordenação que segue convenções

[200]
Lógica
Lógica

"Organização e planejamento das instruções, assertivas em


um algoritmo, a fim de viabilizar a implantação de
um programa."

[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

Seres humanos podem prever


comportamentos, computadores não.

[207]
Lógica Falta de costume

Seres humanos podem prever


comportamentos, computadores não.

Instruções detalhadas
[208]
Lógica Por que entender a lógica
em programação?

"Everybody in this country should learn


how to program a computer because it
teaches you how to think."

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

Planta baixa Projeto


[212]
Técnicas

Planta baixa Projeto Planejamento


[213]
Técnicas

Planta baixa Projeto Planejamento


Seguem a lógica e determinam as instruções [214]
Técnica Linear

• Modelo tradicional

• Não tem vínculo


• Estrutura hierárquica
• Programação de computadores

Modelos de desenvolvimento e resolução


[215]
Técnica Linear

• Modelo tradicional fonte:


editoraconstruir.com.br

• Não tem vínculo


• Estrutura hierárquica
• Programação de computadores

Modelos de desenvolvimento e resolução


[216]
Técnica Linear
Execução sequenciada
fonte:
editoraconstruir.com.br

Ordenação de elementos por uma única


propriedade.

Recursos limitados Única dimensão

Modelos de desenvolvimento e resolução


[217]
Técnica Linear

[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

Organização, disposição e ordem dos elementos essenciais


que compõem um corpo (concreto ou abstrato)

Modelos de desenvolvimento e resolução


[222]
Processamento de dados

Técnica Estruturada
Programas
Escrita

Entendimento
Objetivo
Validação

Manutenção

Modelos de desenvolvimento e resolução Facilitar


[223]
Técnica Estruturada
Acordar

Modelos de desenvolvimento e resolução


[224]
Técnica Modular
Partes independentes

Módulo 1
Controlada por um conjunto
Módulo 3 de regras
Módulo 2

Módulo 4 Modelos de desenvolvimento e resolução

[225]
Técnica Modular

Modelo padrão [226]


Técnica Modular

Módulo 1 • Simplicação

Metas
Módulo 3 • Decompor o problema
Módulo 2 • Verificação do módulo

Módulo 4 Modelos de desenvolvimento e resolução

[227]
Técnica Modular

Módulo preparar Módulo preparar bebida


acordar Módulo tomar
café da manhã

Regras Modelos de desenvolvimento e resolução [228]


Aula 3: Fundamentos de
algoritmos
// Primeiros passos para começar a programar

[229]
Objetivo

Nesta aula serão apresentados os conceitos básicos para


o correto entendimento de algoritmos.
Esses conceitos como, variáveis, tipos de
dados, instruções, condições, entre
outros temas relacionados.

[230]
Percurso

Etapa 1 Tipologia e variáveis

Etapa 2 Instruções primitivas

Etapa 3 Estruturas condicionais e operadores

[231]
Percurso

Etapa 4 Estruturas de repetição

Etapa 5 Vetores e matrizes

Etapa 6 O que são funções?

[232]
Percurso

Etapa 7 Instruções de entrada/saída

[233]
Etapa 1

Tipologias e
variáveis
// Primeiros passos para começar a programar/
Fundamentos de algoritmos

[234]
Variáveis

Qual a função do computador?

[235]
Variáveis

Qual a função do computador?

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?

Variável - pode assumir qualquer um dos valores


de um determinado conjunto de valores

a-b=d a+b=c
[244]
O que é uma Variável
variável?

Variável - pode assumir qualquer um dos valores


de um determinado conjunto de valores

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

• Atribuição de um ou mais caracteres


• Primeira letra - não número
• Sem espaços em branco
• Vedado
• Utilização de palavras reservadas
• Caracteres e números
[248]
Variável
Nome da variável
Regras x2
Nome_usuario
• Atribuição de um ou mais caracteres
• Primeira letra - não número
• Sem espaços em branco telefone
• Vedado
• Utilização de palavras reservadas
Z4
• Caracteres e números
user12 [249]
Variável
Modificação
de estado
Ação
Papéis de uma
variável

Controle

Viagiada, controle
[250]
O que é uma Variável
variável?
O que não muda

Inalterável Definição

Tudo aquilo que é fixo ou estável.

Invariável
[251]
O que é uma Variável
variável?
O que não muda

Inalterável Definição

Tudo aquilo que é fixo ou estável.

Invariável
[252]
Constante?
Variável
O que não muda

Inalterável Definição

pi = 3,14 Tudo aquilo que é fixo ou estável.


phi = 1,618
Invariável
resulta = recebido * 0.10
[253]
Objetivo

Tratadas e processadas

Informação Operações

Dados Instruções
[254]
Etapa 2

Instruções primitivas

// Primeiros passos para começar a programar/


Fundamentos de algoritmos

[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

fonte: livro de referência [258]


Instruções Primitivas
Operadores

Area = pi*raio²
fonte: livro de referência [259]
Instruções Primitivas

Definição formal

Instruções são linguagem de palavras-chave (vocabulário) de


uma determinada de programação que tem por finalidade
comandar um computador que irá tratar os dados

O que são instruções?


[260]
Instruções Primitivas
Linguagens de programação

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

Resultado = (Nota1 + Nota2)/2

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

Resultado = (Nota1 + Nota2)/2

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

Resultado = (Nota1 + Nota2)/2

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

Resultado = (Nota1 + Nota2)/2


E se quisermos verificar se foi
aprovado ou não? Escreva resultado

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

Resultado = (Nota1 + Nota2)/2


E se quisermos verificar se foi
aprovado ou não? Escreva resultado

Fim programa

Saída:
6.5

[269]
Estrutura Condicional
Estado de uma pessoa ou coisa Condição

Que expressão uma condição


ou suposição
Condicional
Contem ou implica uma suposição
ou hipótese
[270]
Estrutura Condicional
Qual a
ideia?
Condição

Operação
[271]
Estrutura Condicional
Inverdade Qual a
ideia?
Condição Exceção

Satisfeita

Operação
[272]
Estrutura Condicional

Simples Composta Encadeada

Condição Condição Exceção Condição Condição Exceção

Operação Operação Operação


Operação
Estrutura Condicional

Operadores Relacionais
Estrutura Condicional

Condicional Simples

Condição

Operação

Fonte: livro de referência


Estrutura Condicional

Condicional Simples

Se (<codição>) então
<instruções para condição verdadeira>
fim_se

Fonte: livro de referência


Estrutura Condicional
Início programa:

A = 0
B = 0
X = 0

leia A
leia B

X = A + B

se (X > 10)
escreva X
Fim se

Fim programa

Fonte: livro de referência


Estrutura Condicional

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

Fim programa Fonte: livro de


referência
[283]
Exemplo
Início programa:

Nota1 = 5
Média escolar Nota = 8
Resultado = 0

Resultado = (Nota1 + Nota2)/2

Escreva resultado

Fim programa

Saída:
6.5

[284]
Estrutura Condicional

Condicional Encadeado

Condição Condição Exceção

Operação Operação

Condições sucessivas Fonte: livro de


referência

[285]
Estrutura Condicional

Condicional Encadeado

Se (<codição 1>) então


<instruções para condição verdadeira>
Senão
Se (<condição 2>) então
<instruções para: condição 2 verdadeira e condição 1 falsa>
Senão
<instruções para condição 1 e 2 falsas> Fonte: livro de
fim_se referência

[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

Fim programa Fonte: livro de


referência
[287]
Estrutura Condicional

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

Ex: Curso de inglês


Fonte: dot.li.com

se (gramatica .e .conversacao) então


escreva "aprovado"
senão
escreva "Reprovado"

[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

Fonte: livro de referência


[295]
Estrutura Condicional
NOT – operador 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

Trecho de um Malhas de repetição


programa
Repetição

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

• Condição a ser satisfeita


[300]
Estruturas de Repetição
Mas não é só
repetir o código?

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?

Enquanto ... faça

Repita ... até

Para ... de … até … faça

[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

<instrução de cortar grama>


Número de repetições <atualiza grama>
• indefinidas fim enquanto

[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

Número de repetições somatorio = somatorio + inicio


Escreva somatorio
• Definidas
fim para

[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

// Primeiros passos para começar a programar/


Fundamentos de algoritmos

[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

"Um vetores é caracterizado por uma variavel dimensionada


com tamanho pré-fixado."

Matriz unidimensional

[314]
Vetores e Matrizes Container

Definição formal

"Matriz é uma tabela organizada em linhas e colunas no form


ato m x n, onde m representa o número de linhas (horizontal)
e n o número de colunas (vertical)"

[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

vetor conjunto [1..8]<inteiro>


vetor[15]
Vetor = []
Operações
Atribuiçã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

O que são funções?

// Primeiros passos para começar a programar/


Fundamentos de algoritmos

[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

As funções, ou sub-rotinas são blocos de instruções que


realizam tarefas específicas

Decomposição do algoritmo
[326]
Funções
Definição formal

As funções, ou sub-rotinas são blocos de instruções que


realizam tarefas específicas

Decomposição do algoritmo
[327]
Funções
Função? Não é mais fácil
fazer tudo junto?

Modularização do programa

Código mais claro e conciso


Reutilização de instruções

[328]
Funções
Função? Não é mais fácil
fazer tudo junto?

Definição formal

"São blocos de instruções (código), identificados


por nomes e parâmetros"

Assinatura

[329]
Funções
Definição Definição formal

Nome "São blocos de instruções


(código), identificados
por nomes e parâmetros"
Invocação

Variável local
[330]
Funções
Definição Definição formal

Nome "São blocos de instruções


(código), identificados
por nomes e parâmetros"
Invocação

São destruídas ao encerrar a função


Variável local
[331]
Funções

Dados

Resultado

Função
[332]
Funções Alterar estado do
programa

Dados

Resultado

Função
[333]
Funções

Agora vamos determinar a média escolar


através de uma função.

Qual o ganho que teremos ao fazer essa modificação?

Exemplo
[334]
Funções
Reutilização de código

Agora vamos determinar a média escolar


através de uma função.

Qual o ganho que teremos ao fazer essa modificação?

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

Consiste na inserção e recebimento de dados do mundo real


por meio de ação de alguma interface, seja teclado, mouse,
arquivos, entre outros.

Instruções de entrada
[340]
Instruções de entrada/saída
Metadados

Arquivos Inserção de dados

[341]
Instruções de entrada/saída
Definição formal

Consiste na impressão dos dados do mundo abstrato, digital por


meio de ação de alguma interface.

Os formatos podem variar desde simples arquivos binários


até complexas querys de banco de dados.

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

Definida pelos periféricos

[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

Casos Saída na programação

• 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

O objetivo desta aula é apresentar os paradigmas de


programação existentes, incluindo o conceito em si.
As linguagens de programação são baseadas em um ou mais
paradigmas, sendo o último caso conhecido como linguagem
multiparadigma.

[349]
Percurso

Etapa 1 Introdução à linguagem de programação

Etapa 2 Como um computador entende o programa?

Etapa 3 Características de um programa

[350]
Percurso

Etapa 4 Análises e código

Etapa 5 Paradigmas de programação

[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?

• Compreender as dificuldades enfrentadas;


• Fundamentos da computação;
• O processo de pensamento.

[353]
Introdução Por que falar de história da
computação?

• Compreender as dificuldades enfrentadas;


• Fundamentos da computação;
• O processo de pensamento.
Novos paradigmas
Base em pesquisas anteriores

[354]
Introdução Por que falar de história da
computação?

• Compreender as dificuldades enfrentadas;


• Fundamentos da computação;
• O processo de pensamento.
Novos paradigmas
Base em pesquisas anteriores

Hardware Software
[355]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage
Fonte: estalmat.org - ábaco romano

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
1920 1940 1948 1880
50

[356]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

2° guerra mundial: 1939 - 1945


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
1920 1940 1948 1880
50

[357]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

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
fonte: http://www.arithmometre.org/ [358]
Introdução História da computação

3mil A.C 1837 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

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 1840 1948 1880
50

[359]
Introdução História da computação

3mil A.C 1837 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

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 1840 1948 1880
50

[360]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

Máquina enigma – cenas do filme Jogo da


Imitação

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

Alan Turing [361]


Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage
Alan Turing

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

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

Von Neuman
Alan Turing

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

[363]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Alan Turing
Charles Babbage

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
1920 1940 1948 1880
50
Fonte: jstor.org
[364]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

Projeto Dilab EUA


Claude
Alan Turing na
escola de cifra e Codificador de voz Shannon
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

[365]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

Alan Turing na Projeto Dilab EUA fonte: invent.org


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

[366]
Introdução História da computação

3mil A.C 1937 1942 – 43 1946 1950


Primeiro dispositivo Conceito de Transcrição de Ada ACE IA – Turing
de cálculo software Lovelace Neuman e Turing
Charles Babbage

Alan Turing na Projeto Dilab EUA fonte: invent.org


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

[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

1976 1981 1983 1988


[370]
Introdução

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

1976 1981 1983 1988


Apple II
[371]
Introdução
1975 1977 1980 1985 2001
Intel 8080 Apple II Apple III Windows 1.0 Windows XP
Linguagem
basic -
Microsoft Apple III

LISA
Lisa – fracasso
Apple IBM-PC da Apple Windows 2000

1976 1981 1983 1988


Interface de usuário [372]
Introdução
1975 1977 1980 1985 2001
Intel 8080 Apple II Apple III Windows 1.0 Windows XP
Linguagem
basic -
Microsoft

Lisa – fracasso
Apple IBM-PC da Apple Windows 2000

1976 1981 1983 1988


[373]
Introdução
Assembly
• 1949

• 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

1° linguagens Alto nível


[375]
Ling. de máquina Paradigmas Apple II Novos conceitos
1949 Entre 60 e 70 2000

fonte:
computerhistory.org

Anos 50 Déc. 90

1° linguagens Alto nível


[376]
ML
Prolog

Ling. de máquina Paradigmas Novos conceitos


1949 Entre 60 e 70 2000

Anos 50 Déc. 90

1° linguagens Alto nível


[377]
ML
Prolog

Ling. de máquina Paradigmas Novos conceitos


1949 Entre 60 e 70 2000

Anos 50 Déc. 90

1° linguagens Alto nível


[378]
ML
Prolog

Ling. de máquina Paradigmas Novos conceitos


1949 Entre 60 e 70 2000

Anos 50 Déc. 90

1° linguagens Alto nível


[379]
Introdução
Problemas computacionais

Objeto de discussão que possui instruções passo a passo


que são mais facilmente resolvíveis em ambiente
computacinal.
Problemas de otimização
Problemas de busca
Problemas de decisão
[380]
Introdução
Problemas de decisão • Caracter lógico - Sim ou Não
• Ideia
• Pertencimento

[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?

• Recorrente em teoria de grafos


• Ex: clique

[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?

Método padronizado composto por um


conjunto de regras sintáticas e semânticas de
implementação de um código fonte.

[386]
Introdução
O que é uma linguagem de programação?

Método padronizado composto por um


conjunto de regras sintáticas e semânticas de
implementação de um código fonte.

Conjunto de palavras com regras


[387]
Introduçã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?

Linguagem de alto nível


[393]
Introdução Linguagem de
máquina
Executa analise do programa
Como o
computador
Compilador
entende o
programa?

Linguagem de alto nível Assembly [394]


Introdução Linguagem de
máquina
Executa analise do programa
Como o
computador
Compilador
entende o
programa?

Linguagem de alto nível Assembly [395]


Introdução

(1) Geração do programa objeto


Tradução
(2) Execução do programa objeto

Interpretação Programa fonte executado


diretamente

[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

(1) Geração do programa objeto


Tradução
(2) Execução do programa objeto

Programas menores

Interpretação Programa fonte executado


diretamente
Maior flexibilidade
[399]
Introdução Execução mais rápida

(1) Geração do programa objeto


Tradução
(2) Execução do programa objeto

Programas menores

Interpretação Programa fonte executado


diretamente
Maior flexibilidade
[400]
Etapa 3

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?

Sim, existem importantes


características

[403]
Características
Legibilidade

Desenvolvimento de Redigibilidade
programas
Confiabilidade

Custo
Diretrizes
[404]
Características
Legibilidade

• Facilidade de leitura "Estado que é legível"


• Compreensão
• Ortogonalidade
• Definição adequada das
estruturas
Coerência nas instruções

[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

Faz o que foi programado para fazer


[408]
Características
Custo
Possui:
• Treinamento
Análise de impacto
• Codificação
• Compilação
• Execução
• Infra-estrutura

[409]
Características
Outras características
Atualizações
Uso para IA

Disponibilidade de ferramentas

Comunidade ativa Adoção pelo mercado

[410]
Etapa 4

Análises de código

// Primeiros passos para começar a programar/


Linguagens de programação

[411]
Análise

[412]
Análise léxica

Particionar Classificar Eliminar

[413]
Análise léxica

Particionar Classificar Eliminar

Elementos
denominados tokens
[414]
Análise léxica Elementos:

identificadores, palavras reservadas,


números, strings

Particionar Classificar Eliminar

Elementos
denominados tokens
[415]
Análise léxica Elementos:

identificadores, palavras reservadas,


números, strings

Particionar Classificar Eliminar

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

"Forma de resolução de problemas com


diretrizes e limitações específicas de cada
paradigma utilizando linguagem de
programação."
[424]
Classificação

Orientação à objeto Procedural Funcional

Computação
Estruturado Lógico
distribuída

[425]
Classificação

Orientação à objeto Procedural Funcional

Computação
Estruturado Lógico
distribuída

[426]
Classificação

Orientação à objeto Procedural Funcional

Computação
Estruturado Lógico
distribuída

[427]
Classificação

Orientação à objeto Procedural Funcional

Computação
Estruturado Lógico
distribuída

[428]
Classificação

Orientação à objeto Procedural Funcional

Computação
Estruturado Lógico
distribuída

[429]
Classificação

Orientação à objeto Procedural Funcional

Computação
Estruturado Lógico
distribuída

[430]
Classificação

Orientação à objeto Procedural Funcional

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

POO ainda não compreendida por muitos

Ê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

Análogo ao mundo real

[437]
Orientação à Objeto
O que é um objeto?

[438]
Orientação à Objeto
O que é um objeto?

[439]
Orientação à Objeto
O que é um objeto?

"Um objeto é descrito por características


específicas, comportamentos e estado"

O que tenho Sou capaz de fazer Como faço


[440]
Orientação à Objeto
O que tenho Sou capaz de fazer Como faço
escrever
Modelo Tampada
desenhar
Cor Destampada
rabiscar
Carga Em uso
pintar
Corpo
Tampa
destampar
Ponta
[441]
Orientação à Objeto

Orientação a Objeto
O que tenho Atributos

Sou capaz de fazer Métodos

Como faço Estados

[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

POO Reuso de código

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

Livro: Fundamentos da programação de computadores – Pearson

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.

• Andrew S. Tanenbaum, “Livro Organização Estruturada de Computadores”,


Ed. Pearson, 5a edição -- Capítulo 1
[454]
Referências

• The Formal Semantics of Programming Languages, Glynn Winskel Deitel


e Deitel, “C++ How to Program”, 5th edition, Editora Prentice Hall, 2005 --
Capítulo 1

• Waldemar Celes, Renato Cerqueira e José Lucas Rangel,


"Introdução a Estrutura de Dados com Técnica de Programação em C",
Editora Campus-Elsevier, 2004 -- Capítulo 1

[455]
Dúvidas?
> Fórum/Artigos
> Comunidade Online (Discord)

[456]

Você também pode gostar