Você está na página 1de 24

Aprendendo a programar.

Captulo I
Introduo tecnolgica ao
desenvolvimento de
aplicativos.

Como funciona um
computador?
O computador um aparelho que talvez parea mais
complexo do que outros, mas depende das instrues
para saber o que fazer. Por exemplo, quando voc
pressiona o boto de ligao, o computador mostra seu
logo, depois carrega o Windows, depois de uns minutos
aparece o ponteiro do mouse para poder comear a uslo, 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 programao simplesmente as ordens que o
computador precisa para fazer alguma coisa, do mais
simples at o mais complexo, mas todas elas so ordens.

Como forneo 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 comear a escutar termos como
HTML, CSS, Javascript, C#, MVC, Java,
SQL, Ruby, Python, C, C++, WPF, Android,
IOS, Windows Phone, Windows 8 , Servios
REST, JSON, XML, AJAX, AJAJ.

Dominar a Matrix
Vamos comear por aqui. Voc est
lendo este curso, neste computador,
devido a que algum 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. Algum
tambm programou este site para
que voc encontre este documento.

Dominar a Matrix
(continuao)
Voc usou o telefone hoje para uma
mensagem ou para falar? Voc pode se
comunicar porque na companhia telefnica
existem programas informticos que
verificam quem voc, se voc tem saldo na
conta para realizar a ligao, atravs do
nmero que voc marcou detecta para quem
est ligando, localiza onde est essa pessoa,
envia um sinal para que toque o telefone do
destinatrio e estabelece a ligao.

Como funcionam as coisas?


J dissemos que os aparelhos no so
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 sequncia de passos
para conseguir realizar uma tarefa.

Exemplo com um jogo


Temos um jogo com uma personagem.
Ao pressionar o boto do joystick, ele
pula.
Se o boto 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 (continuao)


A personagem pula porque algum escreveu, com uma linguagem
de programao, como deve se comportar a personagem. Os passos
seriam:
Desenhar a personagem na tela
Ficar esperando que o usurio realize alguma coisa com o joystick
Receber um sinal do joystick, o usurio pressionou um boto
Qual boto pressionou? Se pressionou acima, continuar
Ler a posio atual da personagem na tela
Calcular a distncia de pulo, 20 pixels, 30 pixels
Carregar a sequncia de imagens com cada quadro de personagem pulando
Imprimir na tela cada uma das sequncias, mudando a posio na tela
Voltar para o passo 2.

Alis, um jogo no s uma personagem que pode pular. H muitas


coisas que acontecem ao mesmo tempo, mas elas so... mais linhas
de cdigo realizadas por um programador.

Primeira regra do
programador:
"Todo comportamento repetitivo e
predizvel pode ser programvel."

Um brao robtico
Se descrevemos a sequncia de passos para dirigir um
brao robtico, como no exemplo do jogo, h uma
semelhana:
Ambos os dois esto executando uma srie de passos
lgicos, ordenados e sequenciais.
Diante da mesma ao, o mesmo resultado.
Isso devido a uma codificao em um programa
informtico, na linguagem que for, mas h uma grande
diferena:
Enquanto o brao robtico interage com o mundo fsico,
movendo parte de um lado para outro, o outro programa
s interage com um mundo virtual, imprimindo imagens
na tela.

Um brao robtico
(continuao)
Ambos os processos precisam de um programa informtico que os
controle e o programador quem escreve essa srie de passos.
A nica diferena a interao com o mundo exterior.
No caso da robtica, alm de executar os passos, necessrio
que o resultado da sequncia de passos ative mecanismos fsicos
para mover cada uma das engrenagens do brao.
Entretanto, o sistema informtico 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 sero as interaes com o mundo exterior.
Nesse curso, vamos tratar dos processos virtuais, aqueles
que no tm interao fsica alm de ler valores de uma
interface de usurio e processar essa interao para
atingir um resultado.

Aplicativos conectados ou
desconectados
Na hora de realizar um aplicativo, importante
decidir se precisamos que o programa dependa
de uma conexo a Internet ou que funcione
mesmo quando no houver conexo.
O primeiro ponto para diferenciar se os
aplicativos so conectados ou desconectados.
Os aplicativos conectados so aqueles que para
funcionar precisam uma conexo a Internet. Do
contrrio, eles no funcionam.
Um exemplo podem ser os jogos em rede. Sem
conexo, eles no funcionam.

Web sites
Ento... 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 usurio, realiza
alguma coisa com as informaes e fornece um
resultado, ento ele um aplicativo.
A diferena principal entre um web site e um
aplicativo web que no aplicativo web o usurio
pode interagir e alterar o resultado conforme essa
interao.
Os web sites que permitem realizar alguma coisa
so 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
trs linguagens de programao e duas ou trs
tecnologias adicionais, e considerar 4 fatores
principais:
Como vou interagir com o usurio?
Devo decidir como quero que o usurio se comunique
com o aplicativo.
O usurio utiliza o smartphone, pressiona botes, usa
a cmera.
O usurio acessa um site para utilizar meu aplicativo.
O usurio utiliza sensores fsicos, teclados especiais,
joysticks ou telas tcteis.

O que preciso para aprender a


programar? (continuao)
Preciso lembrar informaes?
Devo decidir se o aplicativo salva meus
dados, se mantm estatsticas, escores, se
salva informaes que podem ser
recuperadas em qualquer momento.
O usurio no salva nenhum tipo de
informaes. Cada vez que usa o
aplicativo como comear de novo.
O usurio salva informaes e pode
recuper-las.

O que preciso para aprender a


programar? (continuao)
Preciso conexo permanente para
funcionar?
Devo decidir se meu aplicativo precisa se
comunicar com outros usurios para funcionar
ou se depende da existncia de conexo
Internet para ser executado.
O usurio interage com outros usurios, e v
informaes deles ou se comunica com eles.
O usurio no instala nada para executar o
aplicativo, simplesmente acessa um site.

O que preciso para aprender a


programar? (continuao)
Se o aplicativo precisa se conectar com outros
aplicativos
O aplicativo utiliza mapas de Internet ou conexo
com outros aplicativos para compartilhar
informaes.
O aplicativo acessa servidores com stats de
usurios.
O aplicativo no precisa se conectar com ningum.

A tecnologia que usaremos depender do


que precisarmos realizar.

Tecnologias
O usurio acessa atravs de uma pgina web?
HTML + CSS + Javascript
Adobe Air + Java

O usurio acessa atravs 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 usurio acessa atravs 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 usurio utiliza o GPS, cmera,


acelermetro?
IOS SDK, Android Development Kit

Tecnologias
O usurio utiliza intensivamente componentes
externos como joystick, sensor de movimento,
grficos 3D ou udio?
O aplicativo um jogo?
C# .NET ou C++ ou Java
Preciso realizar grficos complexos.
Unity, Adobe Air

No preciso realizar grficos complexos.


LimeJS, CSS

O aplicativo no 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 informaes?
SQL, SQL Server Express ou My SQL

No tenho muita certeza ainda sobre quais dados preciso


armazenar?
Banco de dados documentais

Aplicativo conectado ou desconectado


Preciso de conexo com outros?
O aplicativo precisa de conexo permanente para ser executado?
Javascript, C#.NET, Java, WCF, Servidor Web

O aplicativo s funciona atravs de uma pgina web?


O aplicativo precisa da rede, mas deve ser instalado ?
Servios Rest, JSON, WCF

O aplicativo no 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, Servios REST

O aplicativo trabalha com


componentes eletrnicos ou
robticos?
Arduino

O que usamos?
O que escolhem os programadores?
HTML, CSS, Javascript, Adobe Air, Java, C++,
C#.NET, WPF, WCF, Servios Rest, Windows Phone
SDK, IOS SDK, Android SDK, Unity, SQL, PHP

O que vamos ensinar nesse curso?


HTML, CSS, Javascript, jQuery, C#, SQL, LINQ,
Servios Rest
No necessrio aprender todas as linguagens
de programao que existem ao mesmo tempo.
suficiente entender para que servem e usar a
mais conveniente.