mc59 - aprendendo a programar de forma divertida e eficiente

Upload: michele-silva

Post on 05-Jul-2015

168 views

Category:

Documents


0 download

TRANSCRIPT

Agenda

AgendaObjetivos e introduo Fundamentos da eletrnica e computao Introduo programao Lgica de programao Carreira e reas de atuao Perguntas e respostas

Objetivoso Apresentar tecnicamente eletrnica, computao e programao de forma descontrada e motivadora; o Ensinar as primeiras noes de lgica de programao; o Demonstrar exemplos de eletrnica e trechos de cdigo C / Java; o Apresentar ferramentas open-source e oportunidades profissionais; o Apresentar um plano de estudos para uma formao completa;

Filosofias de ensinoo Aprender conceitos sob-demanda; o Visualizar sempre uma aplicao prtica e do mundo real; o Usar um dispositivo que aumente a interao do aluno com o computador; o Se divertir com o processo de aprendizado; o Valorizar o experimentalismo; o Vivncia em comunidade;

Sobre o instrutoro Como comecei a programar? o O que fao hoje?

Dicaso Sero MUITOS novos termos que no precisam ser decorados agora; o O material est disponvel para download; o Estudar informtica / computao significa estudar um conjunto de conceitos e tcnicas; o No se espante: como a informtica, outras reas tambm tem um conjunto enorme de terminologias: mdica, nutica, administrao de empresas, msica;

O que vamos usar?o Java: popular plataforma e linguagem de desenvolvimento o Arduino: plataforma para criao de dispositivos eletrnicos digitais e analgicos; o C / C++: linguagem de programao mais tradicional do mundo. o Processing + SoundCipher: ferramenta baseada em Java para computao grfica e musical; o Program-ME: dispositivo criado pela Globalcode para ensino de eletrnica e programao;

O que posso fazer como Java: softwares para Web, desktop, telefone celular, palmtops, robs, mainframe e smartcard o Arduino: criar seus prprios dispositivos eletrnicos conectando componentes e comunicando com diversos softwares; o C / C++: qualquer tipo de software; nesta ocasio vamos usar para programar o Arduino; o Processing + SoundCipher: interfacear com Arduino representando grficos e soms o Program-ME: tudo que faz um Arduino alm de conter nativamente controle de motores/rels, leds, buzzer (som), boto e sensor de luz;

Onde fao o download?o o o o o o o Java: java.sun.com Arduino: www.arduino.cc C / C++: vem com arduino Processing + : www.processing.org SoundCipher : www.soundcipher.org Program-ME: www.arduino.cc So todos open-source e gratuitos.

Terminologiao Cdigo-fonte: cdigo que contm instrues de um programa. Legvel para humanos e ilegvel para computadores; o Cdigo de mquina: cdigo ilegvel para humanos e legvel para computadores o Compilao: processo de converso do cdigo-fonte em um novo arquivo com o cdigo de mquina; o Interpretao: processo onde o cdigofonte interpretado e imediatamente executado em cdigo de mquina, sem gerar novo arquivo;

Terminologiao Open-source: software cujo cdigo-fonte disponibilizado e aberto; o Debug: processo utilizado para analisar erros em cdigo-fonte; o Plataforma de desenvolvimento: conjunto de tecnologia + ferramentas para desenvolvimento, execuo e o Informtica: informao + automtica; o Portabilidade: capacidade de executar um mesmo aplicativo em diferentes sistemas;

AgendaObjetivos e introduo Fundamentos da eletrnica e computao Introduo programao Lgica de programao Carreira e reas de atuao Perguntas e respostas

Eletrnicao Eletrnica a raiz da computao; o Eletrnica uma cincia que estuda o controle de energia eltrica; o Podemos dividir a eletrnica em duas: Analgica; Digital; o Curiosidade bem-vinda: importante conhecer o que esta por traz de um computador; o Mas calma: voc no vai precisar soldar nada (pelo menos por enquanto).

Eletrnica Analgicao Sinal eltrico com tenso varivel; o Sinais lidos de forma direta sem passar por qualquer decodificao complexa; o Circuitos analgicos podem ser criados sem nenhum tipo de chip; o Componentes analgicos clssicos: potencimetros, sensor de luz, temperatura;

Eletrnica Analgicao DEMO Exemplo potencimetro configurando intensidade de um LED Vamos colocar um pouco de msica? Um piano com potencimetro...

Eletrnica Digitalo Sinal codificado de apenas dois estados; o Um circuito codifica o sinal analgico para digital; o Informaes so tratadas como 0 e 1 ou LOW e HIGH; o Utiliza sistema binrio da matemtica; o Transistores so circuitos digitais capazes de armazenar e comutar zeros e uns; o 400 milhes de transistores em um Dual Core, o dobro no Quad;

Eletrnica Digitalo 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; Mostrando o valor de um boto;

Eletrnica Digitalo A converso de 0 e 1 (base binria) para nmeros decimais (base 10) fica por nossa conta; o O espao onde armazenamos 0 ou 1 chamado bit; o Um bit representa dois estados, e um conjunto de bits? o 8 bits podem representar 256 diferentes estados

Bits, bytes, kilobytes...o o o o o o o 1 bit 8 bits = 1 byte 1024 bytes = 1 kilobyte 1024 kilobytes = 1 megabyte 1024 megabytes = 1 gigabyte 1024 gigabytes = 1 terabyte 1024 terabytes = 1 petabyte

Sistema binrioo O nmero 145 representado por 1001 0001, como? o A converso de bits para decimais acontece atravs de uma regra de potncia:Bit 1 Valor Estado TOTAL 27=128 1 128 Bit 2 26=64 0 Bit 3 25=32 0 Bit 4 Bit 5 Bit 6 Bit 7 22=4 21=2 0 0 Bit 8 20=1 1 1 24=16 23=8 1 16 0

o 128 + 16 + 1 = 145

Sistema binrioo Um exemplo mais simples nmero um. Para represent-lo precisamos apenas ligar o bit da ponta direita:Bit 1 Valor TOTAL 27=128 0 Bit 2 26=64 0 0 Bit 3 25=32 0 0 Bit 4 Bit 5 Bit 6 Bit 7 22=4 21=2 0 0 0 0 Bit 8 20=1 1 1 24=16 23=8 0 0 0 0

'Estado 0

o Podemos com 8 bits representar um nmero de 0 a 255 ou -128 a +127 totalizando sempre 256 possveis estados

Sistema binrioo Podemos usar a calculadora do sistema operacional para converso; o Outros exemplos:128|64 |32 |16 |8 |4 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1 0 (2+8+16+32+128=186) |2 |1 | 1 0 0 0 0 0 1 0 = = = = 10 (2+8=10) 24 (8+16=24) 192 (64+128=192) 186

Sistema binrioo Percebemos que com oito bits, o maior nmero que podemos representar 255; o Para representar nmeros maiores que 255 precisamos usar mais bits: 1 bit = 2 estados 8 bits = 256 16 bits = 65.536 32 bits = 4.294.967.296 64 bits = 18.446.744.073.709.551.616

Do bit para nmero, do nmero para letrao Agora sabemos como converter bits para nmeros, mas como representar letras? o Existe uma tabela mundial chamada ASCII que estabelece uma letra para cada nmero; o Para portugus, ingls e vrios outros idiomas uma letra pode ser representada em 8 bits; o Exemplo: a = 65, b= 66, c= 67 o Teclas como ENTER, TAB tambm tem nmero;

Tabela ASCIIBinrio Decimal 00100000 32 00100001 00100010 00100011 00100100 00100101 00100110 00100111 00101000 00101001 00101010 00101011 00101100 00101101 00101110 00101111 00110000 00110001 00110010 00110011 00110100 00110101 00110110 00110111 00111000 00111001 00111010 00111011 00111100 00111101 00111110 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 Hexa 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E Glifo ! " # $ % & ' ( ) Binrio 01000000 01000001 01000010 01000011 01000100 01000101 01000110 01000111 01001000 01001001 01001010 01001011 01001100 01001101 01001110 01001111 01010000 01010001 01010010 01010011 01010100 01010101 01010110 01010111 01011000 01011001 01011010 01011011 01011100 01011101 01011110 01011111 Decimal 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Hexa 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F Glifo @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ Binrio 01100000 01100001 01100010 01100011 01100100 01100101 01100110 01100111 01101000 01101001 01101010 01101011 01101100 01101101 01101110 01101111 01110000 01110001 01110010 01110011 01110100 01110101 01110110 01110111 01111000 01111001 01111010 01111011 01111100 01111101 01111110 Decimal 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 Hexa 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E Glifo ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

+ , . / 0 1 2 3 4 5 6 7 8 9 : ; < = >

Idiomas complexoso Apesar de podermos representar todos os caracteres necessrios para portugus, ingls, espanhol, etc., alguns idiomas podem ter mais de 20.000 letras tornando a representao em 8 bits insuficiente; o Atualmente com a globalizao e internet letras podem ser representadas por 2 bytes, 16 bits; o A tabela UNICODE utilizada na Internet no lugar da ASCII;

Informaes entram e saemo Um computador pode receber ou escrever informaes; o Entrada de informaes = teclado, mouse, dispositivo USB, scanner, mquina digital, microfone; o Sada de informaes = monitor, impressora, som; o Entrada e Sada (obrigatoriamente) = hard-disk, pen-drive, memria, DVD-RW, rede

Resumoo Eletrnica digital a base da computao; o Transistor um dos componentes mais importantes; o Computadores trabalham basicamente com manipulao e armazenamento de 0 e 1; o O sistema binrio permite a converso de seqncia de bits em decimais, hexadecimais e grifo;

Resumo: o ciclo viciosoEletrnica -> Analgica -> Digital -> Transistor -> 0 e 1 -> Decimal -> Caractere -> Cdigofonte -> Cdigo de mquina -> 0 e 1 -> Transistor -> Digital -> Analgica -> Eletrnica -> Analgica -> Digital -> Transistor -> 0 e 1 -> Decimal -> Caractere > Cdigo-fonte -> Cdigo de mquina -> 0 e 1 -> Transistor -> Digital -> Analgica -> Eletrnica -> Analgica -> Digital -> Transistor -> 0 e 1 -> Decimal -> Caractere > Cdigo-fonte -> Cdigo de mquina -> 0 e 1 -> Transistor -> Digital -> Analgica -> Eletrnica

AgendaObjetivos e introduo Fundamentos da eletrnica e computao Introduo programao Lgica de programao Carreira e reas de atuao Perguntas e respostas

Introduo programaoo Processo de desenvolvimento de software:1. Escrevemos instrues em uma determinada linguagem. Este conjunto de instrues chamado de cdigo-fonte; 2. Utilizamos um compilador que vai traduzir o cdigo-fonte para cdigo de mquina gerando o software; 3. Executamos o software;

Introduo programaoo Para desenvolver softwares precisamos: Escolher uma linguagem de programao Compilador / ferramenta da linguagem escolhida Editor de cdigo o Mas tambm utilizamos: Ferramentas para depurao de erros, testes, tuning; Diagramas para prototipagem / modelagem; Emuladores; Criatividade...

Introduo programaoo Inmeras linguagens de programao: 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 so os mesmos em vrias linguagens: lgica, orientao a objetos, funes; o Outros conceitos podem variar radicalmente: paralelismo, comunicao com hardware, gerenciamento de memria;

Introduo programaoo Concluso: devemos aprender BEM conceitos fundamentais da computao e programao. o So eles: Princpios da computao e lgica binria; Lgica e sintaxe bsica de programao; Orientao a objetos; Sistemas de entrada e sada; Armazenamento de dados e banco de dados; Sistema operacional; Rede TCP/IP (internet); o CALMA: uma coisa por vez. Hoje lgica de programao.

Introduo programaoo Para desenvolver em Java deve-ser fazer o download de: Java Development Kit 1.6 NetBeans 6.7 (opcional) URL: java.sun.com (vdeos de instalao no nosso site) o DEMO: Ola Mundo com JDK Ola Mundo com NetBeans Ola Mundo Mvel com NetBeans e Java ME

Introduo programaoo Toda linguagem de programao disponibiliza um conjunto de instrues, exemplo Java:abstract catch default final if interface private static this void boolean char do finally implements long protected strictfp throw volatile break class double float import native public super throws while byte const else for instanceof new return switch transient case continue extends goto int package short synchonized try

Introduo programaoo 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 bsicos; Java: para apresentar exemplos tradicionais de lgica de programao;

O que faz um programa?1. Recebe dados atravs de dispositivos de entrada como: teclado, hard-disk, mouse, cameras, etc. 2. Armazena o dado na memria RAM; 3. Efetua algum processamento; 4. Apresenta algum resultado em um dispositivo de sada como: vdeo, udio, hard-disk, etc.

O que faz um programa?

CONCLUSOUm programa de computador utiliza dispositivos de entrada e sada para automatizar um processo com tais informaes.

INFORMTICA!

AgendaObjetivos e introduo Fundamentos da eletrnica e computao Introduo programao Lgica de programao Carreira e reas de atuao Perguntas e respostas

Lgica de Programaoo Conjunto bsico de instrues de uma linguagem para: Manipular informaes na memria; Ex : sua data de nascimento, os produtos da sua compra on-line, seu endereo de e-mail

Programar condies; Ex. Se o Saldo for maior que o valor solicitado para saque, efetuar o saque, do contrrio mostre uma mensagem.

Programar repeties de cdigo; Ex. Execute este cdigo enquanto houver conexo com a Internet.

Programar funes especfica; Ex. Calcular seno, coseno, gravar no banco de dados;

Variveis e memriao Um programa pode armazenar dados na memria usando variveis; o Temos diferentes tipos de variveis para diferentes tipos de dados: sim/no, nmero pequeno, nmero grande, com ponto flutuante ou sem, data, hora, nome;o Devemos indicar o tipo da varivel, 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 memria, chame este espao de memria de x e coloque 10 nele

Lgica de Programaoo Java: boolean = 1 bit, verdadeiro ou falso, sim ou no byte = nmeros inteiros com 8 bits short = nmeros inteiros com 16 bits int = nmeros inteiros com 32 bits long = nmeros inteiros com 64 bits Float = nmeros com ponto flutuante de 32 bits; double = nmeros com ponto flutuante de 64 bits; char = armazenar letras, 8 a 32 bits String = seqncia de caracteres Globalcode; Date = armazena uma data;

Cdigo bsico para Program-ME//varivelnamemria intluminosidade; //Configuraoinicial voidsetup(){ Serial.begin(9600); } //Inicializaodoprograma voidloop(){ luminosidade=analogRead(0); Serial.println(luminosidade); }

Cdigo bsico para Javaimportjava.util.Scanner; publicclassMain{ publicstaticvoidmain(String[]args){ intidade=0; intnovaIdade=0; Scannerteclado=newScanner(System.in); System.out.println("Entrecomasuaidade:"); idade=teclado.nextInt(); novaIdade=idade/2; System.out.printf("Masvocetemcarade%s\n",novaIdade); } }

If / Condies com Program-MEintluminosidade; voidsetup(){ Serial.begin(9600); } voidloop(){ //entradadeinformaonavarivel //analogRead(0)representaosensordeluzdoProgram-ME luminosidade=analogRead(0); if(luminosidade