quinta-feira, 5 de maio de 2011

Flash - AS3 basico

Aqui mostrarei algumas coisas básicas que apareciam no AS2 e transformarei-as em códigos para AS3

Botão

O botão feito no AS2 era muito simples de fazer, certo bastava criar um novo Objeto como Botão

Selecioná-lo e começar a programar



nesse caso, programeio-o para escrever "botão" na aba "saída" ao apertá-lo
código:
on (release) {
trace("botão");
}


Em AS3, o mesmo código fazendo a mesma utilidade no mesmo objeto sairia um pouco mais complicado. começando por:

criar o botão e convertê-lo para MovieClip (ou até mesmo para botão, caso queira que fique mais bonitinho)



agora devemos instancia-lo



depois deveremos clicar no frame em que localiza-se o botão e ir na aba de ações para finalmente programar:



Botao_mc.addEventListener(MouseEvent.MOUSE_DOWN, clique);

o que significa essa linha?

significa que quando um evento do mouse acontecer, no caso o click do mouse(MOUSE_DOWN) no moviclip chamado Botao_mc, executará a função chamada "clique"

agora que chamamos a função clique quando o Botao_mc for clicado, deveremos criar a função



function clique (e:MouseEvent):void
{
trace("botao");
}

primeiramente, criamos uma função com o código function, e em seguida devemos colocar o nome da função, entre parênteses devemos colocar o tipo da função, e como função é um tipo de variável, deveremos dar um tipo pra ela, nesse caso é :void que significa que é uma 'variável' inútil, ela não retornará valores nenhum para o exterior da função

agora que criamos a função, deveremos criar o corpo dela, como estou baseando-me em um código simples de AS2, apenas coloquei um trace();, mas no comando você pode colocar qualquer coisa.

e aqui finalizo o tutorial sobre AS3 Flash - básico, bons estudos

Flash - mudanças

e ai galera, neste post mostrarei a vocês algumas modificações que ocorreram na atualização do ActionScript 2 para o ActionScript 3 primeiramente uma simples introdução
A linguagem de programação ActionScript é usada e desenvolvida pela Adobe, é a linguagem cujo o programa Flash utiliza atualmente. O ActionScript é utilizado para orientar objetos, ou seja, sua base é em objetos do palco.
Mudanças
Várias mudanças ocorreram, algumas boas e outras ruins, e a primeira que citarei é o _root. do AS2. o _root. era utilizado basicamente para chamar variáveis externas, agora no AS3 não existe mais esse comando, tornando desnecessário chamar variáveis externas através de um comando.
Algumas outras mudanças ocorreram apenas na escrita, como por exemplo o hitTest (as2) que mudou para hitTestObjet (as3), por exemplo
Uma mudança drástica que houve no ActionScript, é que agora os objetos não podem mais ter códigos de programação, ou seja, todo o código deve ser colocado unicamente nos frames e não mais em MovieClips ou Botões ... as mudanças que ocorreram no AS3 é para melhorar o desenvolvimento do programa, melhorou com certeza, mas muitos programadores estão tendo dificuldades para mudar para o AS3, mas quem ja se adaptou com certeza aprova o AS3.
Funções
no AS2 ja existiam as famosas Functions(){} mas agora no AS3 tornou-se quase obrigatório saber fazer para pelo menos fazer uma homepage ou um jogo, por exemplo para quem ja sabia funções no AS2 com certeza não encontrará dificuldades nesse tópico, mas para quem é iniciante no ramo, aconselho dar uma lida em algoritmos e etc... para finalizar, vou deixar minha opinião: como sou praticamente leigo no assunto (ainda estou aprendendo) eu diria que o AS3 facilitará bastante meu futuro, apesar de eu estar com algumas dificuldades, tentarei assemelhar alguns comandos de Pascal/Delphi/Java/AS2 com o AS3 para que eu possa situar-me a essa linguagem o mais brevemente possível e continuar praticando assim como eu praticava com o AS2.

Algoritmo - Leia 10 números e retorne o maior

Parece que na prova do 1o ano de LTP, caiu um algoritmo pedindo para que se leia 10 números e retorne qual é o maior número. Ou foram isso que fontes não muito confiáveis minhas me disseram... (na verdade, foi o próprio Joker que me falou saiudhoesuiad)
*Edit: tenho bons motivos mesmo pra falar que são fontes não muito confiáveis... ele estava me zuando quando falou que era essa a questão da prova... E eu ainda acreditei e fiz tudo isso... Bem, vai ficar aqui como material didático...*
Enfim, mão na massa!
Supondo que você não queira ver a explicação, pule para o final e pegue o código-fonte
Vamos ver... 1o passo é o diagrama de variáveis
Ele pede que sejam lidos 10 números e seja impresso o maior número -> colocando isso num exemplo real, imagine assim: um amigo seu vai te falando vários números, e você tem que falar no final qual foi o maior número que ele falou... você não precisa lembrar dos outros números... ele fala 1, depois fala 5 [5 é maior que 1, você pode esquecer do 1], 3[3 é menor que 5, mantém o 5], 8 [8 é maior que 5, agora você só precisa lembrar do 8]
ou seja, ele pede que sejam lidos 10 números e seja impresso o maior número... temos a variável do número que foi dito agora, e do maior número. (Num, e Maior)
ok, mas são 10 números, então precisamos de uma variável pra contar quantos números já foram (Cont)
E | Num
P | Cont
S | Maior
alguma dúvida até aí?
vamos pra estrutura básica:

Algoritmo Maior-Número
  inteiro: Num, Cont, Maior; {ou ainda, caso vocês tenham aprendido assim/prefira, você pode colocar um abaixo do outro -> inteiro: Num; / inteiro: Cont; / inteiro: Maior;}
Início
  <comandos>
Fim.

para declarar variáveis no algoritmo, colocamos <tipo de variável>: <nome da variável 1 do tipo definido>, <nome da variável 2 do tipo definido>, <...>; {fechamos com um ponto e vírgula}
Tipos de variáveis:
  • Caracter: variáveis de texto, aceitam qualquer tipo de texto
  • Inteiro: variáveis numéricas que só aceitam números inteiros, como 1, 6, 15; mas não aceitam números fracionários, como 7.3, 1.5, etc
  • Real: variáveis numéricas que aceitam números inteiros ou fracionários, como 1, 6, 15, 7.3, 1.5, 71.163, etc
  • Lógico: variáveis que seguem a álgebra booleana, que só podem ter dois valores: Verdadeiro ou Falso. Supondo que você seja do meu colégio e esteja no primeiro ano com o mesmo professor que eu tive, você provavelmente não vai ver muito esse tipo
O Contador de números lidos é inteiro, não tem como ler um número e meio. O Maior número vai receber um valor de um outro Número, portanto, o tipo da variável Maior depende do tipo da variável Num. Como Num é um número, e não é especificado que é um número real, nem existe motivo para supor que seja um número real, pode-se utilizar como inteiro.
vamos ao Programa

Início
  Cont <- 0; {zerar o contador}
  Maior <- 0; {transformar o maior número até o momento em 0}
  Enquanto Cont < 10 Faça
    <comandos que serão repetidos>
  Fim-Enquanto;
Fim.

Essa é a estrutura principal do programa
Quais serão os comandos repetidos?
Primeiro ele vai ler um número. então, vai pegar cada número lido e vai verificar se o número é maior que o maior número já registrado. Se o número for maior, ele fica registrado como maior; senão, é descartado.


  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
  Fim-Enquanto;


Depois, não pode se esquecer de contar que foi lido mais um número.


  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
    Cont <- Cont + 1;
  Fim-Enquanto;

até agora temos:

Algoritmo Maior-Número
  inteiro: Num, Cont, Maior;
Início
  Cont <- 0;
  Maior <- 0;
  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
    Cont <- Cont + 1;
  Fim-Enquanto;

Fim.

Ok, ele verifica o maior número e registra ele. Mas espere um momento! Ele tem que falar qual foi o maior número!

Algoritmo Maior-Número;
  inteiro: Num, Cont, Maior;
Início
  Cont <- 0;
  Maior <- 0;
  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
    Cont <- Cont + 1;
  Fim-Enquanto;
  Imprima(Maior);
Fim.

Código-Fonte em Algoritmo: Aqui
Código-Fonte em Pascal: Aqui

Uma observação: Se você botar Enquanto Cont <= 10, você vai ter que igualar Cont a 1 no início do programa
Se você botar Enquanto Cont < 10, você vai ter que igualar Cont a 0 no início do programa

quarta-feira, 4 de maio de 2011

Delphi - Questão da Prova

Até agora não tínhamos entrado em Delphi porque não sabemos muito de Delphi, apesar de Delphi ter o código similar ao Pascal. Porém, hoje tivemos uma prova de Delphi, e se não foi uma surpresa o professor pedindo pra nós fazermos o código de uma calculadora em Delphi. 80% da turma nem tentou fazer, e os 20% que tentaram, 15% falharam miseravelmente e 5% acha que se deu bem, mas também falhou miseravelmente.
Pois bem, acredito que não era assim que o Professor queria que fosse feito, mas foi a unica forma que consegui.
Acreditem ou não, colegas, mas esse é o código fonte:
Ultima questão da prova de Delphi
Até descobrir em que categoria inserir, essa postagem estará sem marcadores.
Lembrando que são 17 botões (Button), e mais o rótulo (Label) de resultado:

  1. um (1)
  2. dois (2)
  3. três (3)
  4. quatro (4)
  5. cinco (5)
  6. seis (6)
  7. sete (7)
  8. oito (8)
  9. nove (9)
  10. zero (0)
  11. vírgula (,)
  12. somar (+)
  13. subtrair (-)
  14. multiplicar (x ou *)
  15. dividir (/)
  16. resultado (=)
  17. limpar
E o programa nem está instável... [/sarcasmo
Qualquer botão que você decida brincar de apertar fora de ordem, e trava...

De qualquer forma, pretendo utilizar esse código-fonte no futuro pra ensinar Pascal e Delphi... Me esperem...

terça-feira, 3 de maio de 2011

Questão da Identação

Vou falar agora sobre a questão da Identação.

Primeiramente, queria pedir desculpas pelas postagens até agora não terem identação, mas é porque o Blogspot não aceita identação. Eu vou passar a fazer a identação através de imagem.
*20:31 Edit: Problema de identação acaba de ser resolvido. Códigos passarão a ser postados pelo docs.google*
Identação é a organização do texto. Exemplo:

Primeiro Sem Identação, depois Com Identação
Conseguem ver a diferença?
A identação serve apenas para organização do código, não alterando o funcionamento do programa. Se você quiser testar, abra o Pascalzim, e coloque isso:

Program Pzim ; Type M=Array [1..6,1..6] of Integer; VAR Mat:M; I,J:Integer; Begin I := 1; J := 1; While (I <= 6) and (J <= 6) do Begin If (J = 1) or (J = 6) or (I = 1) or (I = 6) Then Mat[I,J] := 1 Else If ((J = 2) and ((I <> 1) or (I <> 6))) or  ((J = 3) and ((I = 2) or (I = 5))) or ((J = 4) and ((I = 2) or (I = 5))) or ((J = 5) and ((I <> 1) or (I <> 6))) Then Mat[I,J] := 2 Else Mat [I,J] := 3; Inc (I); If (I = 7) and (J < 6) Then Begin I := 1; Inc (J); End; End; I := 1; J := 1; While (I <= 6) and (J <= 6) do Begin If (Mat[I,J] = Mat[1,1]) Then Textcolor ( LightGreen ) Else If (Mat[I,J] = Mat[2,2]) Then Textcolor ( Yellow ) Else Textcolor ( LightBlue ); If I <> 6 Then Begin Write (Mat[I,J]); Textcolor ( Black ); Write ('|'); End Else Writeln (Mat[I,J]); Inc (I); If (I = 7) and (J < 6) Then Begin I := 1; Inc (J); End; End; End.

Leigo: Mas isso vai funcionar?
Amumu: Claro que vai, Leigo.
Leigo: Então eu posso botar na prova?
Amumu: CLARO QUE NÃO, CRIATURA DE DEUS!!

Funcionar, funciona. Mas existem 2 bons motivos pra você não fazer isso:
1o: Você está fazendo seu programa monolinha (com uma linha só) no Pascalzim, pensa "que beleza, vai ficar perfeito!", daí você termina, e aperta F9. Aparece "Erro na linha 1". Ok, AONDE da linha 1?
2o: Independente se você está no Ensino Técnico ou no Ensino Superior*, você está aprendendo para entrar no mundo do trabalho. Então, você está sendo avaliado como seria avaliado numa empresa. Eles avaliam a organização e a simplicidade do programa. Se o programa vier a ser editado no futuro, pra você se achar nele, sem identação, vai ser uma guerra (acredite em mim, já sofri com isso em Delphi, no primeiro trimestre ainda). E se você sair da empresa, entrar outra pessoa, e o programa precisar de adaptação, pior ainda, aí que o outro não vai se achar. As empresas procuram códigos fáceis de serem entendidos por outros técnicos, talvez um dia você tenha que se aposentar, mude de empresa, de cidade, de estado, país, enfim, e quem vier a te substituir vai precisar entender o programa.
*Eu só citei ensino técnico ou superior, porque estamos falando do Pascal, que é uma linguagem didática, ou seja, apenas de aprendizado. O Pascal não é usado comercialmente.

Leigo: Eu notei que você e o Joker utilizam identações diferentes. Qual a mais correta?
Exemplo:
ele usa (se não for assim é algo parecido)
If <condição> then
<comandos>
else
<comandos>

você usa
If <condição>
then <comandos>
else <comandos>

Amumu: A menos que seu professor seja um carrasco e exiga que você faça como ele ensinou, ambas estão corretas.

NOTA: Algoritmo é uma linguagem pra se usar na teoria. Essa questão da identação se aplica ao Pascal e HTML. Creio eu que se aplique à todas as linguagens, mas não tenho todos os compiladores no meu computador pra testar, então é difícil afirmar.