You are on page 1of 52

Introduo Linguagem de Programao

1 - Algoritmo

Um algoritmo formalmente uma sequencia finita de


passos que levam a execuo de uma tarefa Como
exemplos de algoritmos podemos citar os algoritmos das
operaes bsicas (adio, multiplicao, diviso e
subtrao) , calcular a mdia das notas do aluno,

2 Programas

Os programas de computadores nada mais so do que


algoritmos escritos numa linguagem de computador
(Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que
so interpretados e executados por uma mquina, no caso
um computador.

Para armazenar um algoritmo na memria de um


computador e para que ele possa, em seguida, comandar
as operaes a serem executadas, necessrio que ele
seja programado, isto , que seja transcrito para uma
linguagem que o computador possa entender. A escolha
da linguagem de programao para se usar depende antes
de tudo da existncia de um programa compilador (que
traduza o algoritmo escrito na linguagem escolhida para a
linguagem
de
mquina)
ou
de
um
programa interpretador (que interprete cada comando do
programa e execute uma srie de instrues que a ele
correspondem).

A tabela a seguir apresenta uma relao das principais


linguagens de programao com o ano em que foram
desenvolvidas:

3 - Fases para desenvolvimento de algoritmos

Para desenvolver um algoritmo, precisamos primeiro


dividir o problema em trs fases fundamentais.

Onde temos:

ENTRADA: So os dados de entrada do algoritmo;

PROCESSAMENTO: So os procedimentos utilizados para


chegar ao resultado final;

SADA: So os dados j processados.

Para se criar um programa que seja executvel dentro de


um computador, voc dever ter em mente trs pontos de
trabalho: a entrada de dados, o seu processamento e a
sada dos mesmos. Sendo assim, todo programa estar
trabalhando com estes trs conceitos. Se os dados forem
entrados de forma errada, sero consequentemente
processados de forma errada e resultaro em respostas
erradas. Uma entrada e uma sada podero ocorrer dentro
de um computador de diversas formas. Por exemplo, uma
entrada poder ser feita via teclado, modem, leitores
ticos, disco, entre outras. Uma sada poder ser feita em
vdeo, impressora, disco, entre outras formas.

4 - FORMAS DE REPRESENTAO DE ALGORITMOS

Dentre as formas de representao de algoritmos mais


conhecidas so:

Descrio Narrativa;
Fluxograma Convencional ;
Pseudocdigo, tambm conhecido como Linguagem
Estruturada ou Portugol.

Passo a passo para a construo de um algoritmo:

Entendimento do problema;

Identificar as entradas, ou seja, identificar os dados que


devem ser fornecidos a fim de possibilitar a resoluo do problema;

Identificar as sadas que devem ser geradas como resultado


da soluo;

Determinar o que deve ser feito para transformar as entradas


em sadas (processamento);.

Construir o algoritmo, utilizando uma forma de representao.

4.1 - Descrio Narrativa

Nesta forma de representao os algoritmos so expressos


diretamente em linguagem natural. Como por exemplo,
tm-se os algoritmos seguintes:

Esta representao pouco usada na prtica porque o uso


de linguagem natural muitas vezes d oportunidade a ms
interpretaes, ambiguidades e imprecises. Por exemplo,
a instruo afrouxar ligeiramente as porcas no algoritmo
da troca de pneus est sujeita a interpretaes diferentes
por pessoas distintas. Uma instruo mais precisa seria:
afrouxar a porca, girando-a de 30 no sentido antihorrio.

4.2 - Fluxograma Convencional

uma representao grfica de um algoritmo por meio de


smbolos. Cada smbolo tem uma forma geomtrica que
define sua funo genrica e no seu interior haver uma
descrio do passo do algoritmo. Os smbolos so ligados
por flechas que indicam o fluxo. Os principais smbolos de
fluxograma so:

Exemplos: Fluxograma Calcular a mdia aritmtica de


uma aluno.

4.3 - Pseudocdigo

Esta forma de representao de algoritmos, tambm


conhecida como portugus estruturado ou portugol,
bastante rica em detalhes e, por assemelhar-se bastante
forma em que os programas so escritos, encontra muita
aceitao, sendo, portanto a forma de representao de
algoritmos que ser adotada nos exemplos..
Estrutura do pseudocdigo:

Exemplo: Pseudocdigo Calcula a mdia aritmtica


de uma aluno.

5 - TIPOS DE DADOS

Todo o trabalho realizado por um computador baseado na


manipulao das informaes contidas em sua memria.
Estas informaes podem ser classificadas em dois tipos:

As instrues, que comandam o funcionamento da mquina e


determinam a maneira como devem ser tratados os dados;

Os dados propriamente ditos, que correspondem poro das


informaes a serem processadas pelo computador.

A classificao apresentada a seguir no se aplica a


nenhuma linguagem de programao especfica; pelo
contrrio, ela sintetiza os padres utilizados na maioria das
linguagens.

Tipos Inteiros: so caracterizados como tipos inteiros, os


dados numricos positivos ou negativos. Excluindo-se destes
qualquer nmero fracionrio. Como exemplo deste tipo de dado,
tem-se os valores: 35, 0, -56, 1024 entre outros;

Tipos Reais: so caracterizados como tipos reais, os dados


numricos positivos e negativos e nmeros fracionrios. Como
exemplo deste tipo de dado, tem-se os valores: 35, 0, -56, 1.2,
-45.987 entre outros;

Tipos Caracteres: so caracterizados como tipos caracteres,


as sequencias contendo letras, nmeros e smbolos especiais. Uma
sequencia de caracteres deve ser indicada entre aspas (). Este tipo
de dado tambm conhecido como alfanumrico, string, literal ou
cadeia. Exemplo: Programao, Rua Alfa, 52 Apto 1, Fone 5749988, 04387-030, , 7 entre outros;

Tipos Lgicos: so caracterizados como tipos lgicos os dados


com valor verdadeiro e falso.

Para armazenar os dados na memria, imagine que a


memria de um computador um grande arquivo com
vrias gavetas, onde cada gaveta pode armazenar apenas
um nico valor (seja ele numrico, caractere ou lgico). Se
um grande arquivo com vrias gavetas, necessrio
identificar com um nome a gaveta que se pretende utilizar.
Desta forma o valor armazenado pode ser utilizado a
qualquer momento.

6 - Variveis

Para utilizarmos informaes, necessrio que o


computador as receba e as "memorize". Para que seja
possvel para o computador "memorizar" algo, antes
preciso reservar espao na memria. Podemos fazer isso
declarando uma varivel.

Ao declararmos uma varivel, no apenas estamos


reservando um espao de memria, como tambm
estamos associando um nome a ele, o identificador. Ao
invs de utilizarmos o endereo da varivel na memria,
que seria geralmente notado na forma hexadecimal, como
por exemplo 0x0012FED4, referimo-nos ao endereo
apenas pelo seu nome. Apenas para deixar claro, a prpria
notao em hexadecimal j uma simplificao, pois
computadores na verdade trabalham com binrio.

Todas as variveis utilizadas em algoritmos devem ser


definidas antes de serem utilizadas. Isto se faz necessrio
para permitir que o compilador reserve um espao na
memria para as mesmas.

Regras para Criar os nomes (identificadores) das


variveis\constantes

As variveis e as constantes tm um nome (Rtulo) que as


identificam dentro do cdigo\pseudocdigo. Esse nome
deve ser criado conforme as seguintes regras:
a) O primeiro caractere deve ser SEMPRE uma letra;
b) Os nomes devem ser formados por caracteres
pertencentes s letras do alfabeto e aos nmeros. Se o
identificador for mais de uma palavra, podemos separ-los
com
o
underline
_
c) No pode haver espaos em branco entre os caracteres
do
identificados
d) Os nomes escolhidos devem ser explicativos do seu
contedo;
e) Nomes de variveis longos dificultaro a codificao
(verificar tamanho dependendo da linguagem que for
programar);
f)
No
deve
utilizar
acentuao
ou
cedilha;
g) Os nomes dados s variveis no podem ser os mesmos
nomes das palavras reservadas da linguagem que ser
utilizada.

Exemplos de nomes de variveis:

Salario correto
1ANO errado (no comeou uma letra)
ANO1 correto
a casa errado (contm o caractere branco)
SAL/HORA errado (contm o caractere /)
SAL_HORA correto
ENQUANTO - errado ( uma palavra reservada da
linguagem)

7.3 - Operadores Lgicos

Os operadores lgicos ou booleanos so usados para


combinar expresses relacionais. Tambm devolvem como
resultado valores lgicos verdadeiro ou falso. A tabela
abaixo apresenta os tipos de operadores lgicos.

Note que a tabela anterior, apresenta os operadores lgicos


j ordenados de acordo com suas prioridades, ou seja, se
na mesma expresso tivermos o operador ou e o operador
no, por exemplo, primeiro devemos executar o no e
depois o ou.

De uma forma geral, os resultados possveis para os


operadores lgicos podem ser vistos na tabela abaixo,
conhecida como Tabela Verdade.

Exemplos de expresses utilizando operadores lgicos:

Para A = V, B = F e C = F , as expresses abaixo fornecem


os seguintes resultados:

Exemplo01: escrito em pseudocdigo (a resposta vai


depender do valor da varivel salrio).

Exemplo02: escrito em pseudocdigo a resposta vai


depender do valor da varivel salrio)..

8 - INSTRUES PRIMITIVAS

Como o prprio nome diz, instrues primitivas so os


comandos bsicos que efetuam tarefas essenciais para a
operao dos computadores, como entrada e sada de
dados (comunicao com o usurio e com dispositivos
perifricos), e movimentao dos mesmos na memria.
Estes tipos de instruo esto presentes na maioria das
linguagens de programao

8.1 Comando de atribuio

O comando de atribuio ou simplesmente atribuio,


a principal maneira de armazenar uma informao em
uma varivel. A seguir temos um exemplo de um algoritmo
utilizando o comando de atribuio:

8.2 Comandos de Sada de Dados (ESCREVA)

os comandos de sada de dados so o meio pelo qual


informaes contidas na memria dos computadores so
colocadas nos dispositivos de sada, para que os usurios
possam visualiz-las. A seguir temos um exemplo de um
algoritmo utilizando o comando de sada de dados:

8.3 Comandos de entrada de dados (LEIA)

o meio pelo qual as informaes dos usurios so


transferidas para a memria dos computadores, para que
possam ser usadas nos programas. A seguir temos um
exemplo de um algoritmo utilizando o comando de entrada
de dados:

Exemplos de atividade:
1)
Escreva as definies dos tipos para as variveis
apresentadas na tabela abaixo:

2)
Determine o resultado lgico das expresses abaixo, e
diaga se so verdadeiras ou falsas. Considere os seguintes
valores para as variveis:Q = 5, W = 10, K = 12, R =
FALSO, TAM = Grande, TEXTO = Word.

3)
Mostre, atravs de tabelas-verdade, se as seguintes
expresses so ou no equivalentes:

4.

Identifique o tipo dos dados:

5) Marque com X os identificadores vlidos:

Veja os vdeos a seguir para revisar os


conceitos:

http://www.youtube.com/watch?
v=41ubXTEPFO0&list=PLucm8g_ezqNpYL-zlutCuBplhx9aqkdd
http://www.youtube.com/watch?v=H08P85hsIxQ
http://www.youtube.com/watch?
v=H08P85hsIxQ&list=PLtNm7EHz5ttaCMKul9jqocoO3ZVeRJ
MBY
http://www.youtube.com/watch?v=fK_ibRxQJIM

Segue alguns materiais de apoio sobre


introduo / algoritmo:
http://www.cefetsp.br/edu/adolfo/disciplinas/lpro/materiais/L
inguagem_Visualg2.0.pdf
ftp://ftp.unilins.edu.br/dica/109109AlgoritmoProgramBasica/
ApostilaProgBasica.pdf
http://www.gse.ufsc.br/~fferlini/unisul/algo/A04/02.Tipos.de.
Dados.Variaveis.e.Entrada.Saida.pdf

ESTRUTURAS DE CONTROLE

9 - ESTRUTURAS DE CONTROLE DO FLUXO DE


EXECUO
At o momento os algoritmos apresentados utilizam
apenas instrues primitivas de atribuio, e de entrada e
sada de dados. Qualquer conjunto de dados fornecido a um
algoritmo destes ser submetido ao mesmo conjunto de
instrues, executadas sempre na mesma sequencia.
No entanto, na prtica muitas vezes necessrio executar
aes diversas em funo dos dados fornecidos ao
algoritmo. Em outras palavras, dependendo do conjunto de
dados de entrada do algoritmo, deve-se executar um
conjunto diferente de instrues. Alm disso, pode ser
necessrio executar um mesmo conjunto de instrues um
nmero repetido de vezes. Em resumo necessrio
controlar o fluxo de execuo das instrues (a sequencia
em que as instrues so executadas num algoritmo) em
funo dos dados fornecidos como entrada do mesmo.
De acordo com o modo como o controle do fluxo de
instrues de um algoritmo feito, as estruturas bsicas de
controle so classificadas em:

estruturas sequenciais;

estruturas de deciso;

estruturas de repetio

9.1 - Estrutura Sequencial

Na estrutura sequencial os comandos de um algoritmo so


executados numa sequncia pr-estabelecida. Cada
comando executado somente aps o trmino do comando
anterior.
Exemplo: Leia uma temperatura em graus centgrados e
imprima a equivalente em graus farheneit ( F = 9C/5 + 32).

9.2 - Estruturas de Deciso

Neste tipo de estrutura o fluxo de instrues a ser seguido


escolhido em funo do resultado da avaliao de uma ou
mais condies. Uma condio uma expresso lgica.
A classificao das estruturas de deciso feita de acordo
com o nmero de condies que devem ser testadas para
que se decida qual o caminho a ser seguido. Segundo esta
classificao, tm-se 3 tipos de estruturas de deciso:

Estrutura de Deciso Simples (Se ... ento)

Estrutura de Deciso Composta (Se ... ento ... seno)

Estrutura de Deciso Mltipla do Tipo Escolha (Escolha ...


Caso ... Seno)

9.2.1

- Estruturas de Deciso Simples ( Se ... ento )

Nesta estrutura uma nica condio (expresso lgica)


avaliada. Dependendo do resultado desta avaliao, um
comando ou conjunto de comandos sero executados (se a
avaliao for verdadeira) ou no sero executados (se a
avaliao for falsa).
No diagrama de blocos abaixo a estrutura para instruo
se...ento representado por:

Exemplo: estrutura condicional simples

9.2.2 - Estruturas de Deciso Composta ( Se ... ento ...


seno )

Nesta estrutura uma nica condio (expresso lgica)


avaliada. Se o resultado desta avaliao for verdadeiro, um
comando ou conjunto de comandos sero executados. Caso
contrrio, ou seja, quando o resultado da avaliao for
falso, um outro comando ou um outro conjunto de
comandos sero executados.

No diagrama de blocos abaixo apresenta a estrutura para


instruo se...ento...seno representado por:

Exemplo de algoritmo que l um nmero e escreve se o


mesmo ou no maior que 100:

9.2.3 - Estrutura encadeada

O encadeamento ou aninhamento das instrues de


seleo se so possveis e podem conter dentro de seus
blocos, do entao quando teste condicional for
verdadeiro, ou do senao quandoteste for falso, todas as
instrues possveis na elaborao de um algoritmo,
podendo ser outras instrues de seleo simples ou
composta. A esta possibilidade de uma instruo
condicional se estar dentro de outra condicional que se
denomina Seleo Encadeada.

Exemplo 01: apresentar se um nmero informado pelo


usurio positivo, negativo ou zero.

9.2.4 - Estruturas de Deciso Mltipla do Tipo Caso


( Caso ... fim_caso ... seno

Este tipo de estrutura uma generalizao da


construo Se, onde somente uma condio era avaliada e
dois caminhos podiam ser seguidos. Na estrutura de
deciso do tipo Caso pode haver uma ou mais condies a
serem testadas e um comando diferente associado a cada
uma destas.
No diagrama de blocos a estrutura para instruo
caso...fim_caso...seno representado por:

Um exemplo de aplicao desta construo o algoritmo


para reajustar o salrio de acordo com a funo. Se for
tcnico, aumentar o salrio 50%, se for gerente, aumentar
30% e se for outro cargo, aumentar 20%.

Exemplos de atividade
1. Ler dois valores para as variveis A e B, e efetuar a troca de
valores de forma que a varivel A passe a possuir o valor da
varivel B e a varivel B passe a possuir o valor da varivel
A. Apresentar os valores trocados.

2. Escreva um algoritmo para calcular a rea de um


tringulo, sendo dados a sua base e a sua altura.

3. Escreva um algoritmo que leia dois nmeros e exiba o


maior deles.

Exemplo: CONDICIONAL COMPOSTA (executa o ENTO ou o


SENO)

4. Ler um valor numrico inteiro e apresentar uma


mensagem informando se o valor par ou mpar.

5. Ler os valores de quatro notas escolares de um aluno.


Calcular a mdia aritmtica e apresentar a mensagem
Aprovado se a mdia obtida for maior ou igual a 5; caso
contrrio, apresentar a mensagem Reprovado. Informar
junto com cada mensagem o valor da mdia obtida.
Exemplo: CONDICIONAL COMPOSTA (executa o ENTO ou o
SENO)

6. Escreva um algoritmo que determine o grau de


obesidade de uma pessoa, sendo fornecido o peso e a
altura da pessoa. O grau de obesidade determinado pelo
ndice da massa corprea (Massa = Peso / Altura2 ) atravs
da tabela abaixo:

Veja alguns vdeos relacionaos ao contedo:

http://www.youtube.com/watch?v=mJzVSmv5vn8
http://www.youtube.com/watch?v=OuGTgew4F-s
http://www.youtube.com/watch?v=X9lhtbr8JN0
http://www.youtube.com/watch?v=3L9VKy80m-w
(condicional encadeada)

Veja alguns contedos de material de apoio


sobre estrutura de controle:

http://pt.slideshare.net/LuizAugustoMacdoMorais/aula-9estruturas-condicionais
http://erinaldosn.files.wordpress.com/2011/03/aula-4estrutura-condicional.pdf
http://www.comp.uems.br/~mercedes/disciplinas/2013/AED
I/Estrutura%20Condicional%20Resolvida.pdf (atividade /
resposta)

Introduo - Estrutura de repetio

Os laos de repetio so muito teis e muito utilizados,


pois possibilitam a facilidade de repetir um certo trecho de
programa por um determinado nmero de vezes. O nmero
de vezes que um lao pode repetir um trecho de programa
pode ser previamente conhecido ou no (vai depender da
caracterstica de execuo do lao)

Para os laos predeterminados, de forma geral podem ser


usados os tipos de laos de repetio: enquanto,
repita e para. Para os laos indeterminados, podem ser
usados apenas os laos de repetio dos
tipos enquanto e repita. Os laos de repetio dos
tipos enquanto erepita so controlados pelo uso de
condio, logo so laos de repetio condicionais. J o lao
de repetio do tipo para incondicional, pois no faz uso
do conceito de condies.

De forma geral, quando h necessidade de trabalhar com


um lao de repetio predeterminado, utiliza-se o conceito
para, deixando os conceitos de laos de repetio enquanto
e repita para situaes de laos indeterminados. Apesar
desta caracterstica operacional, nesta obra sero utilizados
todos os tipos de lao para demonstrar suas aplicaes nas
mais variadas situaes.

O algoritmo ao abaixo tem o objetivo de calcular a mdia


aritmtica de duas notas de um aluno. Em uma sala de aula
no tem somente um aluno. Como criar um algoritmo que
calcule a mdia de 30 alunos?
?

J pensou se tivssemos que calcular a mdia de mais 5


alunos na sala, dessa forma teramos que escrever mais
cinco algoritmos. Para cada aluno que fosse acrescentado
na sala, seria necessrio acrescentar mais um algoritmo.
Apesar da facilidade, torna-se um algoritmo invivel.

Outra forma de solucionar este problema seria usar o


mesmo conjunto de comandos novamente, ou seja,

voltando para o incio do conjunto de comandos para


execut-lo novamente para os outros alunos. Por exemplo,
a sala de aula possui 30 alunos, deve-se iniciar o algoritmo
para calcular a mdia de um aluno. Aps terminar com este
aluno, o algoritmo volta para o incio do conjunto de
comandos para passar para o prximo aluno. Desta forma
executaria as 30 mdias dos 30 alunos sem precisar
escrever o conjunto de comandos 30 vezes. A esses
conjuntos do algoritmo que se repetem dado o nome de
estrutura de repetio.

Existem basicamente trs tipos de estruturas de repetio:

Enquanto / Fim do enquanto

Repita / At

Para / Fim para

REPETIO COM TESTE NO INCIO ENQUANTO / FIM


DO ENQUANTO

Corresponde a estrutura de controle que permite executar


vrias vezes um mesmo conjunto de comandos de um
algoritmo, mas verifica antes de cada execuo se pode
repetir o mesmo conjunto.
Em portugol, escreve-se o comando enquanto /
fimenquanto, da forma apresentada abaixo. Note que se
forma um bloco de comandos, delimitado ente o incio e o
fim do loop.

Veja o exemplo:

A estrutura Enquanto / Fim do enquanto corresponde


estrutura de repetio com teste no incio. Esta estrutura
permite que um comando ou um bloco seja repetido
enquanto uma <Condio> for verdadeira. Caso a
<Condio> for falsa, mesmo que seja no primeiro, os
comandos no so executados.
Sintaxe:
Enquanto <Condio> faca
COMANDO 1;
COMANDO 2;
...
COMANDO N;
Fim do enquanto

O problema do loop infinito:

Corrigindo o problema do loop infinito:

Vamos escrever um algoritmo que leia o nome do aluno, e


as duas notas, calcule e escreva o nome e a mdia de cada
um dos 30 alunos.

REPETIO COM TESTE NO FINAL REPETA...ATE

Esta estrutura de controle tambm permite executar vrias


vezes um mesmo conjunto de comandos de um algoritmo.
A diferena entre a estrutura Enquanto / Fim do
enquanto e a estrutura REPEATA...ATE que a primeira s
executada quando a <Condio> for verdadeira, j a

segunda, s continua executando os comandos dentro da


estrutura quando a <Condio> for falsa.

Sintaxe:

REPITA
COMANDO 1;
COMANDO 2;
...
COMANDO N;
ATE (<Condio>)
Exemplo: escreva um algoritmo que leia o nome do aluno,
e as duas notas, calcule e escreva o nome e a mdia de
cada um dos 30 alunos.

REPETIO COM VARIVEL DE CONTROLE FOR

Em portugol, escreve-se o comando para / fimpara, da


forma apresentada abaixo. Note que se forma um bloco de
comandos, delimitado ente o incio e o fim do loop.
Veja a sintaxe do comando:

Loop para/faa com passo crescente igual a 1.

No lao de repetio para / fimpara tambm possvel usar


o incremento de 2 em 2, 3 em 3 incluindo o passo desejado
na instruo para / fimpara (exemplo: para I de 0 at 10
passo 2 faa.

Outra forma de usar o para / fimpara para a contagem


regressiva (exemplo: para I de 10 at 0 passo - 1 faa.

EXEMPLOS DE ATIVIDADE:

1) Qual o resultado da MEMRIA e do VDEO ao executar


o algoritmo abaixo:

2) Qual o resultado da MEMRIA e do VDEO ao executar


o algoritmo abaixo:

Material de apoio sobre estrutura de


repetio:

http://www.inf.ufsc.br/~lau.lung/INE5201/Aula%207%20%20ESTRUTURA_DE_REPETICAO.pdf

http://www.comp.uems.br/~mercedes/disciplinas/2013/AEDI
/EstruturaRepeticaoResolvida.pdf (exerccios / resoluo)

http://dietinf.ifrn.edu.br/lib/exe/fetch.php?
media=corpodocente:minora:disciplinas:algoritmos:slides:t
ema_6_-_repeticao.pdf

http://pessoal.utfpr.edu.br/sbkaminski/arquivos/Aula_07%20
_Repeticao_Enquanto.pdf

Vdeos sobre estrutura de repetio:

http://www.youtube.com/watch?v=6BLB0fBqzlg

http://www.youtube.com/watch?v=NqnODC-hfwc

http://www.youtube.com/watch?v=yUPCGrj3J08

Extra

O computador:http://lief.if.ufrgs.br/pub/linguagens/FFerrariCCechinel-Introducao-a-algoritmos.pdf

Histrico dos Computadores

Arquitetura Bsica

Dispositivos de Entrada e de Sada

Algoritmos

------------------------------------------------------------------------------------------------------------------------------

veja um exemplo de algoritmos de Desvio Condicional no


vdeo abaixo: efetua a leitura de dois nmeros e faz
comparaes para impresso de mensagem ;b) verificar se
um nmero informado pelo usurio par ou impar; c)
calcula e imprime uma mensagem dizendo se o aluno foi
APROVADO ou REPROVADO:

http://www.youtube.com/watch?v=9OuLFgtY0eU

http://www.youtube.com/watch?
v=Nk3TSpZcrV8&feature=related

You might also like