[Tutorial]Aula 2: Opersações matematicas

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Tutorial]Aula 2: Opersações matematicas

Mensagem  batataroxa em Qui Jan 08, 2009 7:39 pm

Aula 2 Operações matematicas
Um Pouco mais de Teoria
Antes de começarmos a parte prática, vamos estudar mais alguns conceitos importantes.
Dado: é a representação bruta de uma informação, pode ser um texto, um número, uma imagem...
Informação: é um conjunto de dados organizados que possuem uma significação.

Tipos de Dados
ATENÇÃO o entendimento dos tipos de dados é crucial para entender o rgss, em caso de dúvidas, poste!

Números: (Numeric)
Como o nome ja diz, são números, porém existem tipos específicos, vou citar alguns:
int short double float long...
geralmente esses nomes são relativos ao tamanho possível do número. Como assim? na matemática, os numeros são infinitos certo? Porém na informática a memória limita a quantidade de números possíveis, essa limitação é determinada pela quantidade de bits suportados, por exemplo, um número do tipo short tem 8bits, assim ele pode chegar até 255, se você estiver usando um short e ele chegar em 255, não da pra somar mais nada que da chash!
OK, chega de coisas complicadas, em RGSS, nos interessam apenas dois tipos de números, os "int" e os "float", a diferença é simples, int não tem vírgula e float tem!
O que isso provoca?
No RGSS sempre que eu digitar um número inteiro(sem vírgula=>em rgss a vírgula é o ponto, intão vo fala em ponto daqui em diante) esse número será um int, assim a divisão 5/2 dá 2 e sobra 1, se você quer que a divisão seja exata você usa 5/2.0 ou 5.0/2 e ai sai 2,5.

Texto (String)
Os textos são todos do tipo String, tudo o que você ver em seus scripts entre "" ou '', é uma String (int, string e etc, são só nomes, acostumem-se com eles!)


NA PRÁTICA
Chegou a hora galera! Abram seus rmxp/vx(s)! Criem um evento com trigger pressionar tecla, coloquem um gráfico só pra vcs saberem onde ele esta e vamos estudar os dados na prática!

1: O comando "print"
esse comando será muito utilizado por nós até a criação de nossa 1º Window, por isso temos que dominá-lo! No seu evento vá em chamar script e digite:
p "ola, este é o comando print. gostou?"
salve e entre no jogo, fale com o NPC que você criou, tem que aparecer uma tela com o que está entre "" no nosso comando, esse é o comando print! você coloca um p da um espaço e digita o conteúdo que você quer que apareça na tela, é provável que você ja tenha visto isso em algum script né!

2: As Strings!
Bom, como você ja sabe, strings são textos, assim, sinta-se à vontade para mudar o texto entre "", teste com vários textos de vários tamanhos, experimente também colocar o comando duas vezes como:
p "1"
p "2"
p "ai q saco isso!"
compreendido?

3: Os "ints" e os "floats"
primeiro vamos criar um objeto! Nosso objeto será um número, para fazer tal coisa, apenas coloque o nome do objeto com o valor dele(obs para quem manja de programação: é claro que aqui estamos instanciando uma variável, mas vamos deixar estes detalhes técnicos para outra aula.), vamos chamar nosso objeto de a, eu quero que a tenha o valor 3, assim eu coloco:
a = 3 (pronto a vale 3, mas como posso saber que realmente funcionou?)
bom a resposta é!!! "p", ou seja, print. Escreva na linha abaixo do a = 3, um p a e teste.
AHHHH que droga! deu pau! Pois é isso acontece por que "a" é um int certo? (um número inteiro) e o print mostra strings na tela, a princípio isso é um problema, mas o RGSS tem a solução que é...

Conversão de Dados

*.to_s > o método to_s é um método que transforma qualquer número em string, assim eu posso fazer com que os dados numéricos

que eu estou trabalhando possam ser colocados na tela como Strings.
Se você esta seguindo a aula corretamente, o seu "chamar script" deve estar:
a = 3
p a
pois bem, a é um inteiro, vamos transformá-lo em string, no comando print coloque a.to_s, salve, abra o jogo e fale com o

NPC, agora funcionou certo? Funcionou por que agora o 'a' que esta na tela é uma String e não um número!
Bom, nosso "a" é um int certo (quando não tem ponto é sempre int), transforme ele em um float, ao invés de colocar a = 3, coloque a = 3.1, salve e vá no NPC denovo.

*.to_f & *.to_i > estes comandos são para transformar int em float e float em int respectivamente, vamos testá-los, no seu chamar script adicione uma nova linha entre o print e o a = ..., nela coloque a = a.to_i, é assim que mudamos o tipo de dado do nosso objeto(variável), teste esses comandos, note que mesmo que você tenha colocado algum número depois do ponto, sempre que você usar o to_i, só vai aparecer a parte inteira do número em questão!
Alguns exemplos:
a = 4.0000001
p a.to_s
(vai aparecer "4.0000001")

a = 4.0000001
a = a.to_i
(vai aparecer "4")
p a.to_s

a = 2
a = a.to_f
p a.to_s
(vai aparecer "2.0")

Seja criativo e explore essas conversões!



Operações Matemáticas
Agora vamos explorar junto da conversão de dados, as operações matemáticas.
Para começar, apague o código que você já fez (por via das dúvidas, sabe-se lá oq vc coloco!), coloque no lugar:
a = 1
p a.to_s
e vamos ao trabalho!!!!

ATENÇÃO
O comando "=": na programação o = significa que o que vem antes do igual deve ficar igual ao que vem depois, ou seja, quando eu coloco a = 1, significa que eu to mandando o "a" valer 1, esse conceito é muito importante, pois no rgss, o = é um comando como o + e o -!

1º Possibilidade
Na nossa primeira soma, vamos fazer com o nosso 'a', coloque do lado de a = 1 um + 3, tem que ficar a = 1 + 3, salve e fale com o NPC, nosso print mostrou 4 na tela certo? Agora vamos subtrair, mude o + para o - e teste. Fácil não? Você pode fazer uma série de + e -, por exemplo 3 + 5 + 7 - 8, note que quando aparece na tela, só aparece o número sem pontos, tente colocar algum número com .0 por exemplo 2 + 4.0 - 5, no print vai aparecer com .0 porque se um dos números da operação é float, o 'a'vira float caso contrário ele será um int.
Vamos agora dividir e multiplicar, os símbolos são respectivamente / e *, assim vamos la! Insira agora no seu a = .. algumas multiplicações, inicie com poucas operações como:
a = 5 / 9 ou a = 3 * 4, note que nas divisões não aparecem os decimais, mesmo o cálculo não sendo exato, como você já deve saber, todo número sem . é int e não vai calcular os decimais, pra achar eles faça com que algum dos números volvidos no cálculo seja float. Importante, como na matemática normal (convencional), as multiplicações e divisões são prioritárias em relação à soma e subtração, por exemplo a = 2 + 2 / 2, a resposta será 3, pois 2 + 2 / 2 > 2 + 1 > 3, por isso, assim como na matemática que estamos acostumados, podemos (e devemos) usar parênteses, mas lembre-se, sempre que abrir um parênteses tem que fechar ele:
a = ( 3 + 5 ) / 4 > correto
a = 3 + 5 ) / 4 ou ( 3 + 5 / 4 > errado!
esse erro é motivo de muitas falhas nos scripts! É importante salientar que programar é como escrever, se você escrever errado, o programa não funciona!

Conceito: Variável > é todo objeto meramente numérico, ou seja, se a = 2, intão a é uma variável, porque é um número.

2º Possibilidade
Você pode operar as variáveis sem mudar o seu valor, por exemplo, se eu tenho a minha variável 'a', e eu quero apenas somar

3, se eu não sei quanto a vale, não posso usar a = 'algo' + 3, uma alternativa é usar a = a + 3, porém não é muito usual,

vamos aprender da forma + prática, seu código deve ser:
a = 2
a += 3
p a.to_s
no nosso caso, nós sabemos quanto vale o 'a' ja no início, mas veremos mais a frente que nem sempre será assim, bom como vocês ja viram, para mexer (somar, subtrair...) um valor de uma variável basta usar <variável> <operação>= <valor>, vamos aos testes:
a = 3
a -= 4
p a.to_s
use as multiplicações e / com a mesma lógica, basta colocar o símbolo da operação antes do =

3º Possibilidade
Suponha que além do 'a' eu tenha um 'b', é possível fazer operações com duas ou mais variáveis, a lógica é exatamente igual aos meios anteriores, vamos lá!
a = 3
b = 4
c = a + b
p c.to_s
note que eu usei uma 3º variável, pense bem, se eu colocasse a = a + b, o 'a' não valeria mais 3 e sim a soma de 3 com 4, por isso é normal usar uma variável extra que terá o valor das anteriores!
Obs.: se eu tenhu a e quero somar mesmo o b no a, basta colocar a += b, o funcionamento é o mesmo que no 2º meio
Obs.: se eu colocasse a = a + b funcionaria do mesmo modo, porque eu faria com que o a virasse a soma dos dois



Exercícios:
Para responder os exercícios:
1º tire uma foto do código que você criou, lá com o chamar script aberto.
2º tire uma nova foto com a mensagem com a resposta que aparecer no comando print (dentro do jogo)
3º coloque as imagens no imageshak e mande no formato thumbnail (as miniaturas q agente clica a abre a foto)
4º mande pra mim por e-mail


Execute os seguintes cálculos:
Usando apenas uma variável (pode ser "a" mesmo)
a) 3 + 2 - 5 + 9
b) ( 3 + 4 ) / 6 (quero com resultado em float!)
c) 5 * 7.0 + 2 (use o 7.0, mas quero o resultado em int!)
d) 982 * 231 + 432

usando 2 variáveis
a) a * ( 4 + b ) (a=4, b=9)
b) (a + b)² (vcs não aprenderam elevar ao ², façam de algum geito que funcione!) (a=3, b=5)
c) ( 1 / a ) + ( 3 * b ) (resultado em float com a divisão exata) (a=4, b=5)
d) 2 + b * 4 * 6 / 9 - a (quero duas respostas diferentes, use ()) (a=8, b=2)


Tags de Busca

RGSS
RGSS2
Matemática
Tipo de Dados
Converção
tutorial por Anderson Porto

batataroxa
Admin

Mensagens : 37
Data de inscrição : 07/01/2009

Ver perfil do usuário http://brrpgmaker.forumeiro.net

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum