Download - Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente, por Ricardo Ogliari
Aprendendo a Programar Globalcode
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
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;
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;
Sobre o instrutor: ● Como começei a programar; ● O que faço hoje;
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;
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?
Eletrônica Analógica ● Exemplo com sensor
de luz; ● Exemplo com
potenciômetro;
Eletrônica Digital ● Exemplo com LEDs;
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;
Bit, Byte, kBytes, mBytes ● 1 bit; ● 8 bits = 1 byte; ● 1024 bytes = 1 kilobyte; ● 1024 kilobytes = 1 megabyte; ● 1024 megabytes = 1 gigabyte; ● 1024 gigabytes = 1 terabyte;
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;
Fundamento da Computação
● Informações entram e saem
Entrada Processamento Saída
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;
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;
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;
Introdução a Programação
● Processo de desenvolvimento de software: ● Terceiro passo: ○ Executamos o software; ○ Diferentes plataformas oferecem
diferentes maneiras para executar o software;
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;
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;
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);
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;
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;
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.
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!
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;
○ Programar funções específicas:
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.
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;
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!
Exemplo prático byte nota1 = 9; byte nota2 = 7; byte nota3 = 10; float media = (nota1 + nota2 + nota3) / 3;
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; ○ char: armazena letras 8 a 32 bits;
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);
}
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);
} }
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!"); }
}
Ligando Lâmpadas com ADK
● ADK: Arduino do Google ● Relé: interruptor eletromecânico;
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?"); }
}
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;
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;
Banco de Dados Relacional
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; ○ select;
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; ● Google App Engine;
Web
● A Internet permeia todo o cotidiano; ● Redes Sociais; ● Mensageiros eletrônicos; ● E-commerce; ● Padrões; ● Barreira mobile/web diminuindo; ● Plano de dados melhores;
Web
● Desenvolvimento separado em camadas; ● Estrutura de Dados ○ HTML
● Apresentação ○ CSS
● Comportamento ○ JavaScript
Web
● Camadas na prática...
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;
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:
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;
E d d i
Mobile - Demonstração
● Criando aplicativo de rotas em Android; ● Temas relacionados; ● Open-source e reaproveitamento de código;
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;
Internet das Coisas
● Vídeos… ● Demos...
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
ficam;
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; ● Mais de 10 anos poderá ser sênior;
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;
Á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
Á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/