Aprendendo a programar.
Capítulo I
Introdução tecnológica ao
desenvolvimento de aplicativos.
Como funciona um computador?
• O computador é um aparelho que talvez pareça mais
complexo do que outros, mas depende das instruções para
saber o que fazer. Por exemplo, quando você pressiona o
botão de ligação, o computador mostra seu logo, depois
carrega o Windows, depois de uns minutos aparece o
ponteiro do mouse para poder começar a usá-lo, depois
carrega a área de trabalho e assim por diante.
• Parece que ele é inteligente, mas quase sempre faz a
mesma coisa, na mesma ordem. Ele está cumprindo
ordens.
• A programação é simplesmente as ordens que o
computador precisa para fazer alguma coisa, do mais
simples até o mais complexo, mas todas elas são ordens.
Como forneço essas ordens?
• Ao longo do curso, vamos aprender como
fornecer essas ordens e você vai encontrar
muitos termos estranhos para denominar cada
uma das formas de fornecer essas ordens.
• Você vai começar a escutar termos como HTML,
CSS, Javascript, C#, MVC, Java, SQL, Ruby, Python,
C, C++, WPF, Android, IOS, Windows Phone,
Windows 8 , Serviços REST, JSON, XML, AJAX,
AJAJ.
Dominar a Matrix
• Vamos começar por aqui. Você está lendo este
curso, neste computador, devido a que
alguém escreveu um programa que
chamaram Sistema Operacional e a que outras
pessoas escreveram o programa chamado
Internet Explorer para navegar na Internet e
chegar até aqui. Alguém também programou
este site para que você encontre este
documento.
Dominar a Matrix (continuação)
• Você usou o telefone hoje para uma
mensagem ou para falar? Você pode se
comunicar porque na companhia telefônica
existem programas informáticos que verificam
quem é você, se você tem saldo na conta para
realizar a ligação, através do número que você
marcou detecta para quem está ligando,
localiza onde está essa pessoa, envia um sinal
para que toque o telefone do destinatário e
estabelece a ligação.
Como funcionam as coisas?
• Já dissemos que os aparelhos não são
inteligentes, só sabem fazer uma tarefa
repetidamente de forma muito eficiente.
• Cada vez que vemos que uma tarefa é realizada
sempre da mesma forma, ela é candidata para
criar um programa para que seja feita
automaticamente.
• Portanto, devemos compreender que programar
é simplesmente dizer para o computador como é
a sequência de passos para conseguir realizar
uma tarefa.
Exemplo com um jogo
• Temos um jogo com uma personagem. Ao
pressionar o botão do joystick, ele pula.
• Se o botão é pressionado repetidamente, a
personagem pula da mesma forma que a vez
anterior.
• Vamos pensar só na personagem pulando,
sem considerar o que acontece no resto do
jogo.
Exemplo com um jogo (continuação)
• A personagem pula porque alguém escreveu, com uma linguagem de
programação, como deve se comportar a personagem. Os passos seriam:
– Desenhar a personagem na tela
– Ficar esperando que o usuário realize alguma coisa com o joystick
– Receber um sinal do joystick, o usuário pressionou um botão
– Qual botão pressionou? Se pressionou acima, continuar
– Ler a posição atual da personagem na tela
– Calcular a distância de pulo, 20 pixels, 30 pixels
– Carregar a sequência de imagens com cada quadro de personagem pulando
– Imprimir na tela cada uma das sequências, mudando a posição na tela
– Voltar para o passo 2.
• Aliás, um jogo não é só uma personagem que pode pular. Há muitas coisas
que acontecem ao mesmo tempo, mas elas são... mais linhas de código
realizadas por um programador.
Primeira regra do programador:
"Todo comportamento repetitivo e predizível
pode ser programável."
Um braço robótico
• Se descrevemos a sequência de passos para dirigir um
braço robótico, como no exemplo do jogo, há uma
semelhança:
• Ambos os dois estão executando uma série de passos
lógicos, ordenados e sequenciais.
• Diante da mesma ação, o mesmo resultado.
• Isso é devido a uma codificação em um programa
informático, na linguagem que for, mas há uma grande
diferença:
• Enquanto o braço robótico interage com o mundo físico,
movendo parte de um lado para outro, o outro programa
só interage com um mundo virtual, imprimindo imagens na
tela.
Um braço robótico (continuação)
• Ambos os processos precisam de um programa informático que os
controle e o programador é quem escreve essa série de passos.
• A única diferença é a interação com o mundo exterior.
• No caso da robótica, além de executar os passos, é necessário que
o resultado da sequência de passos ative mecanismos físicos para
mover cada uma das engrenagens do braço.
• Entretanto, o sistema informático para consultar o álbum só teve
que interagir com o mundo exterior, imprimindo o resultado na
tela.
• A chave para desenhar qualquer sistema é levar em conta como
serão as interações com o mundo exterior.
• Nesse curso, vamos tratar dos processos virtuais, aqueles que não
têm interação física além de ler valores de uma interface de
usuário e processar essa interação para atingir um resultado.
Aplicativos conectados ou
desconectados
• Na hora de realizar um aplicativo, é importante
decidir se precisamos que o programa dependa
de uma conexão a Internet ou que funcione
mesmo quando não houver conexão.
• O primeiro ponto para diferenciar é se os
aplicativos são conectados ou desconectados.
• Os aplicativos conectados são aqueles que para
funcionar precisam uma conexão a Internet. Do
contrário, eles não funcionam.
• Um exemplo podem ser os jogos em rede. Sem
conexão, eles não funcionam.
Web sites
• Então... um web site é um aplicativo?
• Se o web site permite realizar alguma coisa, ele é um
aplicativo conectado, já que só funciona com Internet.
• Quando um web site serve para realizar alguma coisa
concreta, ele interage com o usuário, realiza alguma coisa
com as informações e fornece um resultado, então ele é
um aplicativo.
• A diferença principal entre um web site e um aplicativo
web é que no aplicativo web o usuário pode interagir e
alterar o resultado conforme essa interação.
• Os web sites que permitem realizar alguma coisa são
aplicativos web conectados.
Aplicativos conectados
• O aplicativo desconectado deve ser instalado
ou rodado de algum meio presente
fisicamente para poder ser utilizado, enquanto
o aplicativo conectado pode ser usado
diretamente acessando a Internet.
• Exemplo: Microsoft Word, Visual Studio, etc.
O que preciso para aprender a
programar?
• Para saber programar você precisa saber duas ou três
linguagens de programação e duas ou três tecnologias
adicionais, e considerar 4 fatores principais:
• Como vou interagir com o usuário?
Devo decidir como quero que o usuário se comunique com o
aplicativo.
– O usuário utiliza o smartphone, pressiona botões, usa a
câmera.
– O usuário acessa um site para utilizar meu aplicativo.
– O usuário utiliza sensores físicos, teclados especiais,
joysticks ou telas tácteis.
O que preciso para aprender a
programar? (continuação)
• Preciso lembrar informações?
Devo decidir se o aplicativo salva meus dados, se
mantém estatísticas, escores, se salva informações
que podem ser recuperadas em qualquer momento.
– O usuário não salva nenhum tipo de informações.
Cada vez que usa o aplicativo é como começar de
novo.
– O usuário salva informações e pode recuperá-las.
O que preciso para aprender a
programar? (continuação)
• Preciso conexão permanente para funcionar?
Devo decidir se meu aplicativo precisa se comunicar
com outros usuários para funcionar ou se depende
da existência de conexão à Internet para ser
executado.
– O usuário interage com outros usuários, e vê
informações deles ou se comunica com eles.
– O usuário não instala nada para executar o
aplicativo, simplesmente acessa um site.
O que preciso para aprender a
programar? (continuação)
• Se o aplicativo precisa se conectar com outros
aplicativos
– O aplicativo utiliza mapas de Internet ou conexão com
outros aplicativos para compartilhar informações.
– O aplicativo acessa servidores com stats de usuários.
– O aplicativo não precisa se conectar com ninguém.
A tecnologia que usaremos dependerá do que
precisarmos realizar.
Tecnologias
• O usuário acessa através de uma página web?
– HTML + CSS + Javascript
– Adobe Air + Java
• O usuário acessa através de um aplicativo em um
telefone celular?
– PhoneGap + HTML + CSS + Javascript
– O telefone é Windows Phone?
• Windows Mobile WPF + Window Phone + C# .NET
– O telefone é Android?
• Android Development Kit + Java
– O telefone é IPhone?
• IOS SDK + Objective C
Tecnologias
• O usuário acessa através de um tablet?
– PhoneGap + HTML + CSS + Javascript
– O tablet tem Windows 8?
• Windows WPF + Window 8 + C# .NET
– O tablet tem Android?
• Android Development Kit + Java
– O tablet é IPad?
– IOS SDK + Objective C
• O usuário utiliza o GPS, câmera, acelerômetro?
– IOS SDK, Android Development Kit
Tecnologias
• O usuário utiliza intensivamente componentes externos
como joystick, sensor de movimento, gráficos 3D ou
áudio?
– O aplicativo é um jogo?
• C# .NET ou C++ ou Java
• Preciso realizar gráficos complexos.
– Unity, Adobe Air
• Não preciso realizar gráficos complexos.
– LimeJS, CSS
– O aplicativo não é um jogo?
• C++ ou C# .NET ou Java
• O aplicativo é para Windows?
– WPF + C#.NET
• Ele é para Mac?
– Java, C++, etc
Tecnologias
• Preciso armazenar e recuperar informações?
– SQL, SQL Server Express ou My SQL
• Não tenho muita certeza ainda sobre quais dados preciso armazenar?
– Banco de dados documentais
• Aplicativo conectado ou desconectado
– Preciso de conexão com outros?
– O aplicativo precisa de conexão permanente para ser executado?
• Javascript, C#.NET, Java, WCF, Servidor Web
– O aplicativo só funciona através de uma página web?
– O aplicativo precisa da rede, mas deve ser instalado ?
• Serviços Rest, JSON, WCF
• O aplicativo não precisa se conectar e funciona na área de trabalho?
– C#.NET ou Java
Tecnologias
• O aplicativo precisa interagir com outros
aplicativos?
– Java, C#.NET, WCF, Serviços REST
• O aplicativo trabalha com componentes
eletrônicos ou robóticos?
– Arduino
O que usamos?
• O que escolhem os programadores?
– HTML, CSS, Javascript, Adobe Air, Java, C++, C#.NET, WPF,
WCF, Serviços Rest, Windows Phone SDK, IOS SDK,
Android SDK, Unity, SQL, PHP
• O que vamos ensinar nesse curso?
• HTML, CSS, Javascript, jQuery, C#, SQL, LINQ, Serviços
Rest
Não é necessário aprender todas as linguagens de
programação que existem ao mesmo tempo. É
suficiente entender para que servem e usar a mais
conveniente.

10102015164828

  • 1.
    Aprendendo a programar. CapítuloI Introdução tecnológica ao desenvolvimento de aplicativos.
  • 2.
    Como funciona umcomputador? • O computador é um aparelho que talvez pareça mais complexo do que outros, mas depende das instruções para saber o que fazer. Por exemplo, quando você pressiona o botão de ligação, o computador mostra seu logo, depois carrega o Windows, depois de uns minutos aparece o ponteiro do mouse para poder começar a usá-lo, depois carrega a área de trabalho e assim por diante. • Parece que ele é inteligente, mas quase sempre faz a mesma coisa, na mesma ordem. Ele está cumprindo ordens. • A programação é simplesmente as ordens que o computador precisa para fazer alguma coisa, do mais simples até o mais complexo, mas todas elas são ordens.
  • 3.
    Como forneço essasordens? • Ao longo do curso, vamos aprender como fornecer essas ordens e você vai encontrar muitos termos estranhos para denominar cada uma das formas de fornecer essas ordens. • Você vai começar a escutar termos como HTML, CSS, Javascript, C#, MVC, Java, SQL, Ruby, Python, C, C++, WPF, Android, IOS, Windows Phone, Windows 8 , Serviços REST, JSON, XML, AJAX, AJAJ.
  • 4.
    Dominar a Matrix •Vamos começar por aqui. Você está lendo este curso, neste computador, devido a que alguém escreveu um programa que chamaram Sistema Operacional e a que outras pessoas escreveram o programa chamado Internet Explorer para navegar na Internet e chegar até aqui. Alguém também programou este site para que você encontre este documento.
  • 5.
    Dominar a Matrix(continuação) • Você usou o telefone hoje para uma mensagem ou para falar? Você pode se comunicar porque na companhia telefônica existem programas informáticos que verificam quem é você, se você tem saldo na conta para realizar a ligação, através do número que você marcou detecta para quem está ligando, localiza onde está essa pessoa, envia um sinal para que toque o telefone do destinatário e estabelece a ligação.
  • 6.
    Como funcionam ascoisas? • Já dissemos que os aparelhos não são inteligentes, só sabem fazer uma tarefa repetidamente de forma muito eficiente. • Cada vez que vemos que uma tarefa é realizada sempre da mesma forma, ela é candidata para criar um programa para que seja feita automaticamente. • Portanto, devemos compreender que programar é simplesmente dizer para o computador como é a sequência de passos para conseguir realizar uma tarefa.
  • 7.
    Exemplo com umjogo • Temos um jogo com uma personagem. Ao pressionar o botão do joystick, ele pula. • Se o botão é pressionado repetidamente, a personagem pula da mesma forma que a vez anterior. • Vamos pensar só na personagem pulando, sem considerar o que acontece no resto do jogo.
  • 8.
    Exemplo com umjogo (continuação) • A personagem pula porque alguém escreveu, com uma linguagem de programação, como deve se comportar a personagem. Os passos seriam: – Desenhar a personagem na tela – Ficar esperando que o usuário realize alguma coisa com o joystick – Receber um sinal do joystick, o usuário pressionou um botão – Qual botão pressionou? Se pressionou acima, continuar – Ler a posição atual da personagem na tela – Calcular a distância de pulo, 20 pixels, 30 pixels – Carregar a sequência de imagens com cada quadro de personagem pulando – Imprimir na tela cada uma das sequências, mudando a posição na tela – Voltar para o passo 2. • Aliás, um jogo não é só uma personagem que pode pular. Há muitas coisas que acontecem ao mesmo tempo, mas elas são... mais linhas de código realizadas por um programador.
  • 9.
    Primeira regra doprogramador: "Todo comportamento repetitivo e predizível pode ser programável."
  • 10.
    Um braço robótico •Se descrevemos a sequência de passos para dirigir um braço robótico, como no exemplo do jogo, há uma semelhança: • Ambos os dois estão executando uma série de passos lógicos, ordenados e sequenciais. • Diante da mesma ação, o mesmo resultado. • Isso é devido a uma codificação em um programa informático, na linguagem que for, mas há uma grande diferença: • Enquanto o braço robótico interage com o mundo físico, movendo parte de um lado para outro, o outro programa só interage com um mundo virtual, imprimindo imagens na tela.
  • 11.
    Um braço robótico(continuação) • Ambos os processos precisam de um programa informático que os controle e o programador é quem escreve essa série de passos. • A única diferença é a interação com o mundo exterior. • No caso da robótica, além de executar os passos, é necessário que o resultado da sequência de passos ative mecanismos físicos para mover cada uma das engrenagens do braço. • Entretanto, o sistema informático para consultar o álbum só teve que interagir com o mundo exterior, imprimindo o resultado na tela. • A chave para desenhar qualquer sistema é levar em conta como serão as interações com o mundo exterior. • Nesse curso, vamos tratar dos processos virtuais, aqueles que não têm interação física além de ler valores de uma interface de usuário e processar essa interação para atingir um resultado.
  • 12.
    Aplicativos conectados ou desconectados •Na hora de realizar um aplicativo, é importante decidir se precisamos que o programa dependa de uma conexão a Internet ou que funcione mesmo quando não houver conexão. • O primeiro ponto para diferenciar é se os aplicativos são conectados ou desconectados. • Os aplicativos conectados são aqueles que para funcionar precisam uma conexão a Internet. Do contrário, eles não funcionam. • Um exemplo podem ser os jogos em rede. Sem conexão, eles não funcionam.
  • 13.
    Web sites • Então...um web site é um aplicativo? • Se o web site permite realizar alguma coisa, ele é um aplicativo conectado, já que só funciona com Internet. • Quando um web site serve para realizar alguma coisa concreta, ele interage com o usuário, realiza alguma coisa com as informações e fornece um resultado, então ele é um aplicativo. • A diferença principal entre um web site e um aplicativo web é que no aplicativo web o usuário pode interagir e alterar o resultado conforme essa interação. • Os web sites que permitem realizar alguma coisa são aplicativos web conectados.
  • 14.
    Aplicativos conectados • Oaplicativo desconectado deve ser instalado ou rodado de algum meio presente fisicamente para poder ser utilizado, enquanto o aplicativo conectado pode ser usado diretamente acessando a Internet. • Exemplo: Microsoft Word, Visual Studio, etc.
  • 15.
    O que precisopara aprender a programar? • Para saber programar você precisa saber duas ou três linguagens de programação e duas ou três tecnologias adicionais, e considerar 4 fatores principais: • Como vou interagir com o usuário? Devo decidir como quero que o usuário se comunique com o aplicativo. – O usuário utiliza o smartphone, pressiona botões, usa a câmera. – O usuário acessa um site para utilizar meu aplicativo. – O usuário utiliza sensores físicos, teclados especiais, joysticks ou telas tácteis.
  • 16.
    O que precisopara aprender a programar? (continuação) • Preciso lembrar informações? Devo decidir se o aplicativo salva meus dados, se mantém estatísticas, escores, se salva informações que podem ser recuperadas em qualquer momento. – O usuário não salva nenhum tipo de informações. Cada vez que usa o aplicativo é como começar de novo. – O usuário salva informações e pode recuperá-las.
  • 17.
    O que precisopara aprender a programar? (continuação) • Preciso conexão permanente para funcionar? Devo decidir se meu aplicativo precisa se comunicar com outros usuários para funcionar ou se depende da existência de conexão à Internet para ser executado. – O usuário interage com outros usuários, e vê informações deles ou se comunica com eles. – O usuário não instala nada para executar o aplicativo, simplesmente acessa um site.
  • 18.
    O que precisopara aprender a programar? (continuação) • Se o aplicativo precisa se conectar com outros aplicativos – O aplicativo utiliza mapas de Internet ou conexão com outros aplicativos para compartilhar informações. – O aplicativo acessa servidores com stats de usuários. – O aplicativo não precisa se conectar com ninguém. A tecnologia que usaremos dependerá do que precisarmos realizar.
  • 19.
    Tecnologias • O usuárioacessa através de uma página web? – HTML + CSS + Javascript – Adobe Air + Java • O usuário acessa através de um aplicativo em um telefone celular? – PhoneGap + HTML + CSS + Javascript – O telefone é Windows Phone? • Windows Mobile WPF + Window Phone + C# .NET – O telefone é Android? • Android Development Kit + Java – O telefone é IPhone? • IOS SDK + Objective C
  • 20.
    Tecnologias • O usuárioacessa através de um tablet? – PhoneGap + HTML + CSS + Javascript – O tablet tem Windows 8? • Windows WPF + Window 8 + C# .NET – O tablet tem Android? • Android Development Kit + Java – O tablet é IPad? – IOS SDK + Objective C • O usuário utiliza o GPS, câmera, acelerômetro? – IOS SDK, Android Development Kit
  • 21.
    Tecnologias • O usuárioutiliza intensivamente componentes externos como joystick, sensor de movimento, gráficos 3D ou áudio? – O aplicativo é um jogo? • C# .NET ou C++ ou Java • Preciso realizar gráficos complexos. – Unity, Adobe Air • Não preciso realizar gráficos complexos. – LimeJS, CSS – O aplicativo não é um jogo? • C++ ou C# .NET ou Java • O aplicativo é para Windows? – WPF + C#.NET • Ele é para Mac? – Java, C++, etc
  • 22.
    Tecnologias • Preciso armazenare recuperar informações? – SQL, SQL Server Express ou My SQL • Não tenho muita certeza ainda sobre quais dados preciso armazenar? – Banco de dados documentais • Aplicativo conectado ou desconectado – Preciso de conexão com outros? – O aplicativo precisa de conexão permanente para ser executado? • Javascript, C#.NET, Java, WCF, Servidor Web – O aplicativo só funciona através de uma página web? – O aplicativo precisa da rede, mas deve ser instalado ? • Serviços Rest, JSON, WCF • O aplicativo não precisa se conectar e funciona na área de trabalho? – C#.NET ou Java
  • 23.
    Tecnologias • O aplicativoprecisa interagir com outros aplicativos? – Java, C#.NET, WCF, Serviços REST • O aplicativo trabalha com componentes eletrônicos ou robóticos? – Arduino
  • 24.
    O que usamos? •O que escolhem os programadores? – HTML, CSS, Javascript, Adobe Air, Java, C++, C#.NET, WPF, WCF, Serviços Rest, Windows Phone SDK, IOS SDK, Android SDK, Unity, SQL, PHP • O que vamos ensinar nesse curso? • HTML, CSS, Javascript, jQuery, C#, SQL, LINQ, Serviços Rest Não é necessário aprender todas as linguagens de programação que existem ao mesmo tempo. É suficiente entender para que servem e usar a mais conveniente.