2. Agenda
● Objetivos e Introdução
● Fundamentos da Eletrônica e Computação
● Introdução a Programação
● Lógica de Programação
● Banco de Dados
● Mobile
● Web
● Internet das Coisas
● Carreiras
3. Objetivos
● Apresentar tecnicamente eletrônica,
computação e programação de forma
descontraída e motivadora;
● Primeiras noções de lógica de programação;
● Demonstrar exemplos de eletrônica e
trechos de código Java e C de forma prática
e lúdica;
4. Filosofia de Ensino
● Aprender conceitos “sob-demanda”;
● Visualizar aplicações práticas e do mundo
real;
● Se divertir com o processo de aprendizado;
● Valorizar o experimentalismo;
● Vivência em comunidade;
6. Terminologia
● Código-fonte: código que contém instruções de um
programa. Legível para humanos e ilegível para
computadores;
● Código de Máquina: código ilegível para humanos e legível
para computadores;
● Compilação: processo de conversão do código-fonte para
código de máquina;
● Interpretação: processo onde o código fonte é interpretado e
executado imediatamente na máquina do usuário;
7. Fundamento Eletrônica e
Computação
● Eletrônica é a raiz da computação;
● Ciência que estuda o controle da energia
elétrica;
● Podemos dividir a eltrônica em duas:
○ Analógica;
○ Digital;
● Devo conhecer o hardware?
10. Eletronica Digital
● Dois estados possíveis: 0 e 1;
● Conversão de base binária para base
decimal é por conta do desenvolvedor;
● O espaço que armazena o 0 ou 1 é o bit;
● 8 bits são chamados de byte e conseguem
representar 256 estados diferentes;
12. Número de estados possíveis
● 1 bit = 2 estados;
● 2 bits = 4 estados;
● 3 bits = 8 estados;
● 8 bits = 256 estados;
● 16 bits = 65.536 estados;
● 2 elevado a quantidade de bits é igual ao
número de estados possíveis;
14. Resumo
● Eletrônica digital é a base da computação;
● Computadores trabalham basicamente com
manipulação e armazenamento de 0 e 1;
● Sim, tudo é 0 e 1. Vídeos, fotos,
documentos, e-books e aplicativos para
smartphones;
15. Introdução a Programação
● Processo de desenvolvimento de software:
● Primeiro passo:
○ Escrevemos instruçoes em uma
determinada linguagem de programação.
Este conjunto de instruções é chamado
de código fonte.
○ Java, C, Python, JavaScript;
16. Introdução a Programação
● Processo de desenvolvimento de software:
● Segundo passo:
○ Utilizamos um compilador que vai
traduzir o código fonte para código de
máquina gerando o software;
17. Introdução a Programação
● Processo de desenvolvimento de software:
● Terceiro passo:
○ Executamos o software;
○ Diferentes plataformas oferecem
diferentes maneiras para executar o
software;
18. Introdução a Programação
● Para desenvolver software precisamos:
○ Escolher uma linguagem de programação;
○ Compilador / ferramenta da linguagem escolhida;
○ Editor de código;
● Mas também utilizamos:
○ Ferramentas para depuração de erros;
○ Diagramas para prototipagem/modelagem;
○ Emuladores;
○ Criatividade;
19. Introdução a Programação
● Inúmeras linguagens de programação:
○ Tradicionais: Basic, Pascal, C/C++, LISP, Cobol,
Fortran, ABAP;
○ Modernas: Java, .NET, C#, VB.NET, Ruby, Python,
Groovy;
○ Mais recentes: ERLANG, Scala, F#, Swift;
● Alguns conceitos são os mesmos em várias linguagens;
● Outros conceitos podem variar radicalmente: paralelismo,
comunicação com hardware, gerenciamento de memória;
20. Introdução a Programação
● Conclusão: devemos aprender bem conceitos
fundamentais da computação e programação;
● São eles:
○ Princípios da computação e lógica binária;
○ Lógica e sintaxe básica de programação;
○ Orientação a objetos;
○ Sistemas de entrada e saída;
○ Armazenamento de dados e banco de dados;
○ Sistema operacional;
○ Rede TCP/IP (internet);
21. Introdução a Programação
● Vamos apresentar duas linguagens em paralelo:
○ C/C++: linguagem poderosa utilizada para
escrever sistemas operacionais e outras
linguagens, incluindo o Java;
○ Java: linguagem mais simples que C/C++ com
amplo mercado mundial e adota para
desenvolvimento corporativo de aplicativos de
todos os portes;
22. Introdução a Programação
● No nosso contexto utilizamos:
○ C/C++: para codificar o Program-ME, facilitando o
entendimento de conceitos básicos;
○ Java: para apresentar exemplos tradicionais de
lógica de programação;
23. Oque Faz um Programa?
● Recebe dados através de dispositivos de entrada
como: teclado, HD, mouse, câmeras, sensores,
etc;
● Armazena os dados na memória RAM;
● Efetua algum processamento;
● Apresenta algum resultado em um dispositiov de
saída como: áudio, vídeo, HD, atuadores, etc.
24. Oque Faz um Programa?
● CONCLUSÃO:
○ Um programa de computador utiliza
dispositivos de entrada e saída para
automatizar um processo com tais
informações.
● INFORMÁTICA!
25. Lógica de Programação
● Conjunto básico de instruções de uma linguagem
para:
○ Manipular informações na memória:
■ Ex: sua data de nascimento, os produtos da sua compra on-line, etc;
○ Programar condições:
■ Ex: se o saldo for maior que o valor solicitado para saque, efetuar o
saque, do contrário mostre uma mensagem;
○ Programar repetições de código:
■ Ex: execute este código enquanto houve conexão de rede;
26. Variáveis de memória
● Um programa pode armazenar dados na
memória usando variáveis;
● Temos diferentes tipos de variáveis para
diferentes tipos de dados: sim/não, número
pequeno, número grande, com ponto flutuante ou
sem, data, hora, nome;
● Existem linguagem tipadas e não tipadas.
27. Variáveis de memória
● Nas tipadas, é necessário indicar o tipo da variável,
atribuir um nome a ela e, opcionalmente, indicar um valor
inicial;
○ int x = 10;
○ int = tipo
○ x = nome/identificador
○ 10 = valor inicial
● Reserve 4 bytes na memória, chame este espaço de X e
coloque o valor 10 nele;
28. Exemplo prático
● Cálculo de média;
● Quais os dados serão necessários?
● O valor inicial de uma variável pode ser o resultado de
uma expressão;
● Vamos trabalhar!
30. Qual tipo usar?
● Java:
○ boolean: 1 bit, verdadeiro ou falso, sim ou não;
○ byte: números inteiros com 8 bits;
○ short: números inteiros com 16 bits;
○ int: números inteiros com 32 bits;
○ long: números inteiros com 64 bits;
○ float: números com ponto flutuante com 32 bits;
○ double: números com ponto flutuante com 64 bits;
31. Código Básico Program-ME
//variável na memória
int luminosidade;
//Configuração inicial void setup() {
Serial.begin(9600);
}
//Inicialização do programa
void loop() {
luminosidade = analogRead(0);
Serial.println(luminosidade);
}
32. Código Básico Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int idade =0;
int novaIdade = 0;
Scanner teclado = new Scanner(System.in);
System.out.println("Entre com a sua idade:");
idade = teclado.nextInt();
novaIdade = idade / 2;
System.out.printf("Mas voce tem cara de %s n", novaIdade);
}
}
33. Condição If com Program-ME
void setup() {
Serial.begin(9600);
}
void loop() {
// entrada de informação na variável
int luminosidade = analogRead(0);
if(luminosidade<500) {
Serial.println("Esta claro!");
} else {
Serial.println("Esta escuro!");
}
}
34. Ligando Lâmpadas com ADK
● ADK: Arduino do Google
● Relé: interruptor eletromecânico;
35. Condição If com Java
public class Main {
public static void main(String[] args) {
int idade =0;
int novaIdade = 0;
Scanner teclado = new Scanner(System.in);
System.out.println("Entre com a sua idade:");
idade = teclado.nextInt();
if(idade<25)
System.out.println("Tem muito chão!");
if(idade>25 && idade<60)
System.out.println("Fase boa!");
if(idade>60)
System.out.println("Melhor ainda, ta aprendendo ate a programar?");
}
}
36. Banco de Dados
● Persiste informações importantes;
● Banco, Perfis em Redes Sociais, Compras Online, etc;
● SGBD - Sistema Gerenciadores de Banco de Dados;
● Tipos de Banco de Dados:
○ Bando de Dados Relacional;
○ Banco de Dados Orientado a Objetos;
○ Banco de Dados Hierárquico;
37. Banco de Dados Relacional
● Relacionamento entre entidadas;
● MER - Modelo Entidade Relacionamento;
● Conceito de tabelas, registros e chaves;
● Softwares gratuitos e pagos para criação
de MER;
39. Linguagem SQL
● SQL - Structured Query Language;
● Manipulação de Dados;
○ Insert, Update, Delete;
● Definição de Dados;
○ create table, alter table, drop;
● Consulta de Dados;
40. Banco de Dados NoSQL
● Inicialmente o nome era NoREL;
● Não usa a idéia de entidade
relacionamento;
● Utilizado em cases como Google, Twitter e
Facebook;
● Ideal na escalabilidade;
41. Web
● A Internet permeia todo o cotidiano;
● Redes Sociais;
● Mensageiros eletrônicos;
● E-commerce;
● Padrões;
● Barreira mobile/web diminuindo;
44. Mobile
● Telefones celulares foram os precursores;
● Java ME, BREW, SuperWaba;
● Java ME - Java EE - Java SE;
● Aplicativos ainda não eram levados a sério;
● Lançamento do iOS em 2008 e a Apple
Store revolucionou;
45. Mobile
● Hoje: cerca de 3 milhões de aplicativos na Apple Store
e Google Play;
● Android, iOS, Windows Phone;
● Android:
○ Java e C;
● iOS:
○ Objetive-C e Swift;
● Windows Phone:
46. Mobile
● Ambientes de desenvolvimento extremamente
profissionais;
● Lojas online;
● Participação no resultado das vendas:
○ 70-30%
● Android: 25 dólares;
● iOS: 99 dólares por ano;
47. Mobile - Demonstração
● Criando aplicativo de rotas em Android;
● Temas relacionados;
● Open-source e reaproveitamento de código;
48. Internet das Coisas
● Criado inicialmente pelo MIT e focado no uso de
tags RFID;
● Hoje, colocar objetos na rede;
● Quantos? Pesquisas apontam para 50 bilhões de
coisas em rede para 2020;
● Principais empresas adotaram o conceito;
● Programação para diferentes plataformas;
50. Carreira de Programador
● Independente de idade, formação, sexo, localização e
idioma;
● Remunera de R$1.200,00 (júnior, trainee) a R$15.000,00
(ou mais) (sênior, líderes, arquitetos, engenheiros);
● Inúmeras oportunidades no exterior;
● Requer profissionais poliglota (no mínimo inglês);
● Estudo e interesse contínuo;
● As coisas se atualizam rápido, mas os velhos conceitos
51. Quanto tempo demora?
● No primeiro mês você já deve estar se divertindo com coisas
básicas;
● Em seis meses poderá começar a estudar coisas mais avançadas;
● Em dois anos estará conhecendo e usando orientação a objetos
com fortes possibilidades de emprego;
● Em quatro anos poderá começar a se especializar, certificar e
dominará desenvolvimento de média complexidade;
● Em oito anos emprego onde quiser, bom salário e alta
complexidade;
52. Programador por Hobbie
● Programar é desafiador e os conhecimentos de
programação podem ser aplicados em diferentes contextos;
● Até músicos estão virando programadores;
● Programar: ter controle e efetivamente comandar o seu
computador;
● Projetos incríveis podem ser desenvolvidos por hobbie:
segway caseiro, máquinas CNC, robôs, aplicativos mobile,
sites, embarcados, hacker o mundo, baixa eletrônica, etc;
● Vídeo com Barack Obama;
53. Áreas de Atuação
● Um mercado incrível e crescente nas últimas décadas:
○ Desenvolvimento Web / Mobile;
○ Arquiteturas Enterprise / Serice Oriented Architecture;
○ Testes e qualidade / processos e metodologias;
○ Games / TV Digital;
○ Projetos de pesquisa / Armazenamento de dados;
○ Imagem / Redes sociais / Venda na internet;
○ Robótica / Redes / Segurança
54. Áreas de Atuação
● Em 2022 teremos um déficit de 408 mil profissionais de TI;
● http://g1.globo.com/bom-dia-brasil/noticia/2014/11/sobram-
vagas-com-salarios-de-ate-r-10-mil-na-area-de-ti.html
● Brasil pode deixar de arrecadar R$115 bilhões por falta de
profissionais em TI no ano de 2020;
● http://trainingtecnologia.com.br/faltam-profissionais-de-ti/