• Nenhum resultado encontrado

MC59 - Aprendendo a Programar de Forma Divertida e Eficiente

N/A
N/A
Protected

Academic year: 2021

Share "MC59 - Aprendendo a Programar de Forma Divertida e Eficiente"

Copied!
54
0
0

Texto

(1)

Agenda

(2)
(3)

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

(4)

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

(5)

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

(6)

Sobre o instrutor

Sobre o instrutor

o

o Como comecei a programar?Como comecei a programar?

o

(7)

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;

(8)

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

(9)

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;

(10)

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

(11)

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

(12)

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;

(13)

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

(14)

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

(15)

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:

(16)

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...

(17)

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

(18)

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;

(19)

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

(20)

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 petabyte

(21)

Sistema 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

(22)

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

(23)

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)

(24)

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

(25)

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

(26)

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 }

(27)

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

(28)

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

(29)

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;

(30)

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 ->

(31)

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

(32)

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;

(33)

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;

(34)

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;

(35)

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

(36)

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

(37)

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

(38)

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;

(39)

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.

(40)

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.

(41)

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

(42)

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;

(43)

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” 

(44)

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;

(45)

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); }

(46)

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); }

(47)

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!"); } }

(48)

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?"); }

(49)

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

(50)

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

(51)

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;

(52)

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;

(53)

Á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

(54)

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;

Referências

Documentos relacionados

Parece assim que os cardiologistas portugueses têm uma percec¸ão globalmente adequada da utilidade clínica da angio-TC, identificando os doentes que mais beneficiam da

1964: Managing for Results (“Administrando para Obter Resultados”, ed. Thomson Pio- neira). Neste livro, que complementa The Practice of Management, Drucker explica por que é

· Indicações sobre cuidados médicos urgentes e tratamentos especiais necessários Não existe mais nenhuma informação relevante disponível.. 5 Medidas de combate

Os estudos desenvolvidos neste trabalho tiveram como objetivo a análise do uso e ocupação do solo na área correspondente à bacia hidrográfica do rio Ubatiba, no

‘ O crime de insubmissão previsto no artigo 183 do CPM (‘deixar de apresentar-se o convocado à incorporação, dentro do prazo que lhe foi marcado ...’) aplica-se apenas aos

In the event of a complicated surgical embolectomy with the avulsion of the artery, the formation of a retinochoroidal anastomosis and reperfusion of the occluded artery may occur

Keywords: Glaucoma; Filtering surgery; Minimally invasive surgical procedures/methods; Anterior chamber.. RESUMO | Embora a cirurgia de glaucoma minimamente in- vasiva, que

Os colírios para alívio sintomático (45 % dos indicados), tipo lágrima artificial ou vasoconstrictores, representam um perigo para a saúde ocular do paciente por haver