Agenda
Agenda
Agenda
Objetivos e introdução
Objetivos e introdução
Fundamentos da eletrônica e
Fundamentos da eletrônica e computaçãocomputação
Introdução à programação
Introdução à programação
Lógica de programação
Lógica de programação
Carreira e áreas de atuação
Carreira e áreas de atuação
Perguntas e respostas
Objetivos
Objetivos
o
o Apresentar tecnicamente eletrônica, computaçãoApresentar tecnicamente eletrônica, computação
e programação de forma descontraída e
e programação de forma descontraída e
motivadora;
motivadora; o
o Ensinar as primeiras noções de lógica deEnsinar as primeiras noções de lógica de
programação;
programação; o
o Demonstrar exemplos de eletrônica e trechos deDemonstrar exemplos de eletrônica e trechos de
código C / Java;
código C / Java; o
o Apresentar ferramentas open-source eApresentar ferramentas open-source e
oportunidades profissionais;
oportunidades profissionais; o
Filosofias de ensino
Filosofias de ensino
o
o Aprender conceitos “sob-demanda”;Aprender conceitos “sob-demanda”;
o
o Visualizar sempre uma aplicação prática eVisualizar sempre uma aplicação prática e
do mundo real;
do mundo real; o
o Usar um dispositivo que aumente aUsar um dispositivo que aumente a
interação do aluno com o computador;
interação do aluno com o computador; o
o Se divertir com o processo deSe divertir com o processo de
aprendizado;
aprendizado; o
o Valorizar o Valorizar o experimentalisexperimentalismo;mo;
o
Sobre o instrutor
Sobre o instrutor
o
o Como comecei a programar?Como comecei a programar?
o
Dicas
o Serão MUITOS novos termos que não
precisam ser decorados agora;
o O material está disponível para download;
o Estudar informática / computação significa
estudar um conjunto de conceitos e técnicas;
o Não se espante: como a informática,
outras áreas também tem um conjunto
enorme de terminologias: médica, náutica, administração de empresas, música;
O que vamos usar?
o Java: popular plataforma e linguagem de
desenvolvimento
o Arduino: plataforma para criação de dispositivos
eletrônicos digitais e analógicos;
o C / C++: linguagem de programação mais
tradicional do mundo.
o Processing + SoundCipher: ferramenta baseada
em Java para computação gráfica e musical;
o Program-ME: dispositivo criado pela Globalcode
O que posso fazer com
o Java: softwares para Web, desktop, telefone celular, palmtops, robôs, mainframe e smartcard
o Arduino: criar seus próprios dispositivos eletrônicos conectando componentes e comunicando com
diversos softwares;
o C / C++: qualquer tipo de software; nesta ocasião vamos usar para programar o Arduino;
o Processing + SoundCipher: interfacear com Arduino representando gráficos e soms
o Program-ME: tudo que faz um Arduino além de
conter nativamente controle de motores/relês, leds, buzzer (som), botão e sensor de luz;
Onde faço o download?
o Java: java.sun.com
o Arduino: www.arduino.cc
o C / C++: vem com arduino
o Processing + : www.processing.org
o SoundCipher : www.soundcipher.org
o Program-ME: www.arduino.cc
Terminologia
o Código-fonte: código que contém
instruções de um programa. Legível para humanos e ilegível para computadores;
o Código de máquina: código ilegível para
humanos e legível para computadores
o Compilação: processo de conversão do
código-fonte em um novo arquivo com o código de máquina;
o Interpretação: processo onde o
código-fonte é interpretado e imediatamente executado em código de máquina, sem
Terminologia
o Open-source: software cujo código-fonte
é disponibilizado e aberto;
o Debug: processo utilizado para analisar
erros em código-fonte;
o Plataforma de desenvolvimento:
conjunto de tecnologia + ferramentas para desenvolvimento, execução e
o Informática: informação + automática;
o Portabilidade: capacidade de executar
um mesmo aplicativo em diferentes sistemas;
Agenda
Objetivos e introdução
Fundamentos da eletrônica e computação Introdução à programação
Lógica de programação
Carreira e áreas de atuação Perguntas e respostas
Eletrônica
o Eletrônica é a raiz da computação;
o Eletrônica é uma ciência que estuda o
controle de energia elétrica;
o Podemos dividir a eletrônica em duas:
– Analógica; – Digital;
o Curiosidade é bem-vinda: é importante
conhecer o que esta por traz de um computador;
o Mas calma: você não vai precisar soldar
Eletrônica Analógica
o Sinal elétrico com tensão variável;
o Sinais lidos de forma direta sem passar por qualquer decodificação complexa;
o Circuitos analógicos podem ser criados sem nenhum tipo de chip;
o Componentes analógicos clássicos:
Eletrônica Analógica
o DEMO
– Exemplo potenciômetro configurando intensidade de um LED
– Vamos colocar um pouco de música? Um piano com potenciômetro...
Eletrônica Digital
o Sinal codificado de apenas dois estados;
o Um circuito codifica o sinal analógico para
digital;
o Informações são tratadas como 0 e 1 ou
LOW e HIGH;
o Utiliza sistema binário da matemática;
o Transistores são circuitos digitais capazes de
armazenar e comutar zeros e uns;
o 400 milhões de transistores em um Dual
Eletrônica Digital
o Um led pode ser acionado
digitalmente:
– Quando 0 = desligado (0 volts);
– Quando 1 = ligado (5 volts – conforme equipo);
o DEMO:
– Ligando ou desligando um LED por digital;
Eletrônica Digital
o A conversão de 0 e 1 (base binária)
para números decimais (base 10) fica
por nossa conta;
o O espaço onde armazenamos 0 ou 1
é chamado bit;
o Um bit representa dois estados, e um
conjunto de bits?
o 8 bits podem representar 256
Bits, bytes, kilobytes...
o 1 bit o 8 bits = 1 byte o 1024 bytes = 1 kilobyte o 1024 kilobytes = 1 megabyte o 1024 megabytes = 1 gigabyte o 1024 gigabytes = 1 terabyte o 1024 terabytes = 1 petabyteSistema binário
o O número 145 é representado por “1001
0001”, como?
o A conversão de bits para decimais
acontece através de uma regra de potência:
o 128 + 16 + 1 = 145
Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8
Valor 27=128 26=64 25=32 24=16 23=8 22=4 21=2 20=1 Estado 1 0 0 1 0 0 0 1
Sistema binário
o Um exemplo mais simples é número um.
Para representá-lo precisamos apenas ligar o bit da ponta direita:
o Podemos com 8 bits representar um
número de 0 a 255 ou -128 a +127
totalizando sempre 256 possíveis estados
Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8
Valor 27=128 26=64 25=32 24=16 23=8 22=4 21=2 20=1 'Estado 0 0 0 0 0 0 0 1 TOTAL 0 0 0 0 0 0 0 1
Sistema binário
o Podemos usar a calculadora do sistema
operacional para conversão;
o Outros exemplos: 128|64 |32 |16 |8 |4 |2 |1 | 0 0 0 0 1 0 1 0 = 10 (2+8=10) 0 0 0 1 1 0 0 0 = 24 (8+16=24) 1 1 0 0 0 0 0 0 = 192 (64+128=192) 1 0 1 1 1 0 1 0 = 186 (2+8+16+32+128=186)
Sistema binário
o Percebemos que com oito bits, o maior
número que podemos representar é
255;
o Para representar números maiores que
255 precisamos usar mais bits: – 1 bit = 2 estados
– 8 bits = 256
– 16 bits = 65.536
– 32 bits = 4.294.967.296
Do bit para n mero, do n mero
para letra
o Agora sabemos como converter bits para
números, mas como representar letras?
o Existe uma tabela mundial chamada ASCII que
estabelece uma letra para cada número;
o Para português, inglês e vários outros idiomas
uma letra pode ser representada em 8 bits;
o Exemplo:
– a = 65, b= 66, c= 67
Tabela ASCII
Binário Decimal Hexa Glifo 0010 0000 32 20 0010 0001 33 21 ! 0010 0010 34 22 " 0010 0011 35 23 # 0010 0100 36 24 $ 0010 0101 37 25 % 0010 0110 38 26 & 0010 0111 39 27 ' 0010 1000 40 28 ( 0010 1001 41 29 ) 0010 1010 42 2A 0010 1011 43 2B + 0010 1100 44 2C , 0010 1101 45 2D -0010 1110 46 2E . 0010 1111 47 2F / 0011 0000 48 30 0 0011 0001 49 31 1 0011 0010 50 32 2 0011 0011 51 33 3 0011 0100 52 34 4 0011 0101 53 35 5 0011 0110 54 36 6 0011 0111 55 37 7 0011 1000 56 38 8 0011 1001 57 39 9 0011 1010 58 3A : 0011 1011 59 3B ; 0011 1100 60 3C < 0011 1101 61 3D =
Binário Decimal Hexa Glifo 0100 0000 64 40 @ 0100 0001 65 41 A 0100 0010 66 42 B 0100 0011 67 43 C 0100 0100 68 44 D 0100 0101 69 45 E 0100 0110 70 46 F 0100 0111 71 47 G 0100 1000 72 48 H 0100 1001 73 49 I 0100 1010 74 4A J 0100 1011 75 4B K 0100 1100 76 4C L 0100 1101 77 4D M 0100 1110 78 4E N 0100 1111 79 4F O 0101 0000 80 50 P 0101 0001 81 51 Q 0101 0010 82 52 R 0101 0011 83 53 S 0101 0100 84 54 T 0101 0101 85 55 U 0101 0110 86 56 V 0101 0111 87 57 W 0101 1000 88 58 X 0101 1001 89 59 Y 0101 1010 90 5A Z 0101 1011 91 5B [ 0101 1100 92 5C \ 0101 1101 93 5D ]
Binário Decimal Hexa Glifo 0110 0000 96 60 ` 0110 0001 97 61 a 0110 0010 98 62 b 0110 0011 99 63 c 0110 0100 100 64 d 0110 0101 101 65 e 0110 0110 102 66 f 0110 0111 103 67 g 0110 1000 104 68 h 0110 1001 105 69 i 0110 1010 106 6A j 0110 1011 107 6B k 0110 1100 108 6C l 0110 1101 109 6D m 0110 1110 110 6E n 0110 1111 111 6F o 0111 0000 112 70 p 0111 0001 113 71 q 0111 0010 114 72 r 0111 0011 115 73 s 0111 0100 116 74 t 0111 0101 117 75 u 0111 0110 118 76 v 0111 0111 119 77 w 0111 1000 120 78 x 0111 1001 121 79 y 0111 1010 122 7A z 0111 1011 123 7B { 0111 1100 124 7C | 0111 1101 125 7D }
Idiomas complexos
o Apesar de podermos representar todos
os caracteres necessários para
português, inglês, espanhol, etc., alguns idiomas podem ter mais de 20.000
letras tornando a representação em 8 bits insuficiente;
o Atualmente com a globalização e
internet letras podem ser representadas por 2 bytes, 16 bits;
o A tabela UNICODE é utilizada na Internet
Informações entram e saem
o Um computador pode receber ou
escrever informações;
o Entrada de informações = teclado,
mouse, dispositivo USB, scanner, máquina digital, microfone;
o Saída de informações = monitor,
impressora, som;
o Entrada e Saída (obrigatoriamente) =
hard-disk, pen-drive, memória, DVD-RW, rede
Resumo
o Eletrônica digital é a base da computação;
o Transistor é um dos componentes mais
importantes;
o Computadores trabalham basicamente
com manipulação e armazenamento de 0 e 1;
o O sistema binário permite a conversão de
seqüência de bits em decimais, hexadecimais e grifo;
Resumo: o ciclo vicioso
Eletrônica -> Analógica -> Digital -> Transistor -> 0 e 1 -> Decimal -> Caractere -> Código-fonte -> Código de máquina -> 0 e 1 ->
Transistor -> Digital -> Analógica -> Eletrônica -> Analógica -> Digital ->
Transistor > 0 e 1 > Decimal > Caractere -> Código-fonte --> Código de máquina --> 0 e 1 -> Transistor -> Digital -> Analógica ->
Eletrônica -> Analógica -> Digital ->
Transistor > 0 e 1 > Decimal > Caractere -> Código-fonte --> Código de máquina --> 0 e 1 -> Transistor -> Digital -> Analógica ->
Agenda
Objetivos e introdução
Fundamentos da eletrônica e computação Introdução à programação
Lógica de programação
Carreira e áreas de atuação Perguntas e respostas
Introdução à programação
o Processo de desenvolvimento de
software:
1. Escrevemos instruções em uma
determinada linguagem. Este conjunto de instruções é chamado de código-fonte;
2. Utilizamos um compilador que vai traduzir o código-fonte para código de máquina gerando o software;
Introdução à programação
o Para desenvolver softwares precisamos:
– Escolher uma linguagem de programação – Compilador / ferramenta da linguagem
escolhida
– Editor de código
o Mas também utilizamos:
– Ferramentas para depuração de erros, testes, tuning;
– Diagramas para prototipagem / modelagem; – Emuladores;
Introdução à programação
o Inúmeras linguagens de programação:
– Tradicionais: Basic, Pascal, C / C++, LISP, Cobol, Fortran, ABAP;
– Modernas: Java, Microsoft .NET C#, VB.NET, Ruby, Python, Groovy;
– Mais recentes: ERLANG, Scala, F#
o Alguns conceitos são os mesmos em várias
linguagens: lógica, orientação a objetos, funções;
o Outros conceitos podem variar radicalmente:
paralelismo, comunicação com hardware, gerenciamento de memória;
Introdução à programação
o Conclusão: devemos aprender BEM conceitos
fundamentais da computação e programação.
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);
o CALMA: uma coisa por vez. Hoje lógica de
Introdução à programação
o Para desenvolver em Java deve-ser fazer
o download de:
– Java Development Kit 1.6 – NetBeans 6.7 (opcional)
– URL: java.sun.com (vídeos de instalação no nosso site)
o DEMO:
– Ola Mundo com JDK
– Ola Mundo com NetBeans
Introdução à programação
o Toda linguagem de programação
disponibiliza um conjunto de instruções, exemplo Java:
abstract boolean break byte case catch char class const continue default do double else extends
final finally float for goto if implements import instanceof int interface long native new package
private protected public return short static strictfp super switch synchonized
this throw throws transient try void volatile while
Introdução à programação
o Vamos apresentar duas linguagens em
paralelo:
– C++: linguagem poderosa utilizada para escrever sistemas operacionais e outras linguagens, incluindo o Java;
– Java: linguagem mais simples que C++ com amplo mercado mundial e adotada para desenvolvimento corporativo de aplicativos de todos os portes;
o No nosso contexto usamos:
– C++: para codificar o Program-ME que facilita o entendimento de conceitos básicos;
– Java: para apresentar exemplos tradicionais de lógica de programação;
O que faz um programa?
1. Recebe dados através de dispositivos de entrada como: teclado, hard-disk, mouse, cameras, etc.
2. Armazena o dado na memória RAM; 3. Efetua algum processamento;
4. Apresenta algum resultado em um
dispositivo de saída como: vídeo, áudio, hard-disk, etc.
O que faz um programa?
CONCLUSÃO
Um programa de computador utiliza dispositivos de entrada e saída para
automatizar um processo com tais informações.
Agenda
Objetivos e introdução
Fundamentos da eletrônica e computação Introdução à programação
Lógica de programação
Carreira e áreas de atuação Perguntas e respostas
Lógica de Programação
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, seu endereço de e-mail
– 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 houver conexão com a Internet.
– Programar funções específica;
Variáveis e memória
o Um programa pode armazenar dados na
memória usando variáveis;
o 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;
o Devemos indicar o tipo da variável, devemos
atribuir um nome para ela e opcionalmente indicar um valor inicial:
– int x = 10;
– int = tipo, x = nome, 10 = valor inicial
“Reserve 4 bytes na memória, chame este espaço de memória de x e coloque 10 nele”
Lógica de Programação
o 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 de 32 bits; – double = números com ponto flutuante de 64 bits; – char = armazenar letras, 8 a 32 bits
– String = seqüência de caracteres “Globalcode”; – Date = armazena uma data;
Código básico para 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 para 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); }
If / Condições com Program-ME
int luminosidade; void setup() { Serial.begin(9600); } void loop() {// entrada de informação na variável
// analogRead(0) representa o sensor de luz do Program-ME luminosidade = analogRead(0); if(luminosidade<500) { Serial.println("Esta claro!"); } else { Serial.println("Esta escuro!"); } }
If / Condições com 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();
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?"); }
Agenda
Objetivos e introdução
Fundamentos da eletrônica e computação Introdução à programação
Lógica de programação
Carreira e áreas de atuação Perguntas e respostas
Carreira de programador
o É independente de idade, formação, sexo,
localização, idioma;
o Remunera de R$ 1.200,00 (junior / trainee) a
R$ 15.000,00 (senior: líderes / arquitetos / engenheiros)
o Inúmeras oportunidades no exterior;
o Requer inglês afiado para realmente se dar
bem;
o Estudo e interesse continuo;
o As coisas se atualizam rápido, mas os velhos
Quanto tempo demora?
o No primeiro mês você já vai estar se divertindo
bastante com coisas básicas
o Em seis meses poderá começar a estudar coisas
mais avançadas;
o Em dois anos estará conhecendo e usando
orientação a objetos com fortes possibilidades de emprego;
o Em quatro anos poderá começar a se
especializar, certificar e dominará
desenvolvimento de média complexidade;
o Em oito anos emprego onde quiser, bom salário e
alta complexidade;
Programador por hobie
o Programar é desafiador e os conhecimentos de
programação podem ser aplicados em diferentes contextos;
o Até músicos estão virando programadores...
o Programar = ter controle e efetivamente comandar o
seu computador;
o Projetos incríveis podem ser desenvolvidos por hobie: – Segway caseiro;
– Máquinas CNC;
– Robôs;
– Aplicativos para telefone celular;
– Site de pesca, vinho, yoga, aventuras, comida, mergulho;
Áreas de atuação
o Um mercado incrível e crescente nos últimos
30 anos:
– Desenvolvimento Web / Dispositivos móveis – Arquiteturas Enterprise / Service 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 / Rede / Segurança
o Faltarão 600.000 profissionais de tecnologia da
O que estudar?
o Lógica de programação com Java e mais uma
linguagem;
o Orientação a objetos o Linux básico
o Banco de dados básico
o Redes e Internet: protocolos, serviços e
configurações de rede, HTML, CSS e servidor HTTP;