O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente, por Ricardo Ogliari

22.534 visualizações

Publicada em

Slides para apresentação no Minicurso Grauito da campanha Open4Education

Publicada em: Educação
  • Seja o primeiro a comentar

Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente, por Ricardo Ogliari

  1. 1. Aprendendo a Programar Globalcode
  2. 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. 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. 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;
  5. 5. Sobre o instrutor: ● Como começei a programar; ● O que faço hoje;
  6. 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. 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?
  8. 8. Eletrônica Analógica ● Exemplo com sensor de luz; ● Exemplo com potenciômetro;
  9. 9. Eletrônica Digital ● Exemplo com LEDs;
  10. 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;
  11. 11. 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;
  12. 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;
  13. 13. Fundamento da Computação ● Informações entram e saem Entrada Processamento Saída
  14. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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!
  29. 29. Exemplo prático byte nota1 = 9; byte nota2 = 7; byte nota3 = 10; float media = (nota1 + nota2 + nota3) / 3;
  30. 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. 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. 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. 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. 34. Ligando Lâmpadas com ADK ● ADK: Arduino do Google ● Relé: interruptor eletromecânico;
  35. 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. 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. 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;
  38. 38. Banco de Dados Relacional
  39. 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. 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. 41. Web ● A Internet permeia todo o cotidiano; ● Redes Sociais; ● Mensageiros eletrônicos; ● E-commerce; ● Padrões; ● Barreira mobile/web diminuindo;
  42. 42. Web ● Desenvolvimento separado em camadas; ● Estrutura de Dados ○ HTML ● Apresentação ○ CSS ● Comportamento
  43. 43. Web ● Camadas na prática...
  44. 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. 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. 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. 47. Mobile - Demonstração ● Criando aplicativo de rotas em Android; ● Temas relacionados; ● Open-source e reaproveitamento de código;
  48. 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;
  49. 49. Internet das Coisas ● Vídeos… ● Demos...
  50. 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. 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. 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. 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. 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/

×