Visitante!
Faça seu Login ou Registre-se!

Galeria de Jogos

[Ruby] Aula 4 - Condições e Estruturas de Controle 26 Respostas | 4506 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Raizen

  • *
  • Mensagens: 2471 Ouro: 1834

    Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!

    • Ver perfil
    • E-mail
Índice das aulas básicas
Índice das aulas avançadas
Índice das aulas de algoritmos
Estruturas Condicionais

Introdução
   Agora a coisa começa a ficar interessante, partimos para as estruturas condicionais!  :wow:, agora chega em um ponto aonde programar fica interessante, podendo criar especificações para o seu código, ou seja, começa a aprender a como manusear ele. Se ainda não viu as aulas anteriores, veja agora antes de se aprofundar nesse novo conhecimento.

   Começamos pela comparação, se tem uma condição, você tem que comparar algo, logo.
Código: [Selecionar]
== # se for igual
!= # diferente de
> #maior que
>= #maior ou igual a que
< #menor que
<= #menor ou igual que

  As vezes é necessário comparar mais que uma coisa, ai vem a conjunção .
Código: [Selecionar]
and / && # E, se tudo atinge seu objetivo.
or / || #ou se uma das coisas atinge o objetivo.
Claro aqui é só teoria, vamos colocar na prática que vocês pegam rapidinho!  :wow:

SE
A condição mais conhecida em qualquer linguagem de programação que existe, SE, em que o programa segue com o seguinte raciocínio.
SE alguma condição ENTAO algo acontece FIM DO SE.
todas seguem esse mesmo raciocínio, logo no Ruby pode ser escrito desse modo.
Código: [Selecionar]
if (algo atinge seu objetivo) then (algo acontece) endPorém nas versões recentes do Ruby, que já inclui todos os rpg makers, é comum pular linhas para indicar um próximo comando, substituindo o then, e mantendo o end em outra linha, para melhor visualização, exemplo.
Código: [Selecionar]
if (algo atinge seu objetivo)
  (algo acontece)
end # fim da condição
E claro, pode ter uma exceção se o código não for impresso, por exemplo.
Código: [Selecionar]
if (algo atinge seu objetivo)
  (algo acontece)
else # caso algo não atinja seu objetivo
  (algo diferente acontece)
end #fim da condição.

Na prática.
Código: [Selecionar]
a = 2
if a == 2 #atinge condição
  p "funcionou :D"
else
  p "não funcionou T-T"
end
Agora vamos juntar a comparação e a conjunção!
Código: [Selecionar]
a = 4
if a >= 0 and a <= 5
  p "a está entre 0 e 5"
else
  p "a não está entre 0 e 5"
end
Agora pegue o código acima, cole no seu RPG Maker e brinque um pouco com comparações e conjunções para ver se realmente pegou o jeito.

Se Não Se
Agora mais uma parte interessante, e se eu quiser colocar condições nas exceções?
Bom o mais lógico seria fazer o seguinte.
Código: [Selecionar]
a = 2
if a < 1
  p "a é menor que 1"
else
  if a == 1
    p "a é igual a 1"
  else
    p "a não é igual nem menor que 1"
  end
end
Começa a ficar confuso não? Por isso no Ruby tem a reservada elsif, que faz exatamente a mesma coisa, e ainda poupa espaço e tempo, o código acima com elsif.
Código: [Selecionar]
a = 2
if a < 1
  p "a é menor que 1"
elsif a == 1
  p "a é igual a 1"
else
  p "a não é igual nem menor que 1"
end

A menos que
A menos que, seria exatamente o contrário do se, e é usado o unless, isso seria o tal chamado, boas maneiras de programação, você em boa parte da vida como programador, irá usar o unless para substituir o se não, ou seja.
Código: [Selecionar]
if not a
end
seria substituido por
Código: [Selecionar]
unless a
End

Caso
Aprenderam bem o se(if), o se não(else) e o se não se(elsif)? Pois bem agora vem algo que junta boa parte disso, que é o case.
O case nada mais é que uma sequência de condições, em que se busca atingir 1 dos casos, porém diferente de uma condição, o case é muito usado para buscar condições de valor único, facilitando no entendimento do programa, e na hora de programar, exemplo:.
Código: [Selecionar]
a = 2
case a
  when 1
    p "a é 1"
  when 2
    p "a é 2"
  when 3
    p "a é 3"
end
Modifique o valor de a, e crie novas condições para ver o resultado  :clap: .

Avançando
Leia essa parte apenas se está afiado nas condições anteriores, caso contrário pule para os exercícios e só depois volte para cá!

Certo, pegaram bem as condições? pois as estruturas de controle, como comumente são chamados pelos programadores, serve para limitar o programa, e direciona-lo a fazer o que bem entende a você, aliando isso a aula 5, que é sobre estruturas de repetição, você ganha um aliado fortíssimo para programar, e se estão lendo essa parte aqui, é porque pegaram bem a ideia, então vou mostrar a última condição.

If/else, quando se trata de uma condição simples, ela pode ser substituída por simbologia, por exemplo.
Código: [Selecionar]
if algo == 2 then (algo1) else (algo2) endEsse código acima pode ser substituído por.
 
Código: [Selecionar]
algo == 2 ? (algo1) : (algo2)O que significa um código bem mais limpo e agradável.


Exercícios & Conclusão
Fáceis:
  • Crie uma Constante, que indica o número de laranjas, esse número é colocado pelo usuário, e se tiver um número exato a 12, imprima "uma dúzia.
  • crie uma condição aonde eu imprima a hora, que é colocado pelo usuário, exemplo...
Código: [Selecionar]
hora = 15
if...
e que imprima se a hora é impar, ou ela é par.

Intermediário:
  • Optimize o código a seguir com o que foi aprendido nessa aula.
Código: [Selecionar]
red = 5
if red == 1 then
  p "red eh 1"
else
  if red == 2 then
    p "red eh 2"
  else
    if red == 3 then
      p "red eh 3"
    else
      p "red nao é nenhum dos anteriores"
    end
  end
end

  • Crie um método de somar, em que os argumentos sejam 2 números, porém que imprima se a soma é acima de 10, ou abaixo de 10.
Avançado:
  • Faça um método aonde tenha 1 argumento, e indique se o número é divisível por 3, 4 ou 5. (lembrando que se for mais do que 1 deles, o método tem que indicar todos).
  • Faça uma classe qualquer criada por vocês, tenha 3 métodos, 1 método que recebe 2 valores quaisquer x e y, e que se a divisão de ambos der um número inteiro, chame o método 2, aonde é feito a divisão do maior pelo menor e retorna um Integer, e caso a divisão dos 2 dê um número quebrado(Float), ele chame o método 3, aonde retorne a divisão do maior pelo menor. (Esse é interessante  :rei: )


Coloquem aqui no tópico caso façam algum dos exercícios para eu verificar, lembrando que não precisa fazer os 6, visto que os últimos são bem mais complicados. E boa sorte nos estudos :)
« Última modificação: 16 Dez 2015, 10:30 por Raizen »

Kvothe

  • *
  • Mensagens: 618 Ouro: 1243
  • Maker Geral
    • Unity
    • Facebook
    • DeviantArt
    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 1 Online: 13 Mar 2013, 10:16
 Bem legal as suas aulas, bom você está de parabéns pois as aulas estão bem explicadas e tão... Aí fiz o dever de casa... Optei pelo avançado.;
Código: [Selecionar]
red = 3
[1, 2, 3].each { |i| if red == i then p "red é #{i}" else p "red não é #{i}" end }
« Última modificação: 13 Mar 2013, 10:18 por Dax »
"Amamos aquilo que amamos. A razão não entra nisso. Sob muitos aspectos, o amor insensato é o mais verdadeiro. Qualquer um pode amar uma coisa por causa de. É tão fácil quanto por um vintém no bolso. Mas amar algo apesar de, conhecer suas falhas e amá-las também, isto é raro, puro e perfeito". (O Temor do Sábio, pág. 58)

cristianoforce

  • *
  • Mensagens: 127 Ouro: 54
  • =)
    • RPG Maker XP
    • Ver perfil
  • NightWisher
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 2 Online: 13 Mar 2013, 11:21
Muito boa a aula Raizen, como sempre! ^^.

Duas coisas:

== # se for igual
!= # diferente de
> #maior que
>= #maior ou igual a que
< #menor que
< #menor ou igual que

Exercícios & Comclusão

Dois pequenos erros de digitação xD.

Não fiz os exercícios, até porque eu já conhecia tudo o que havia escrito xD, mas eu li o tópico para ver se não encontrava algo novo em folha :B

Parabéns!

Raizen

  • *
  • Mensagens: 2471 Ouro: 1834

    Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!

    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 3 Online: 13 Mar 2013, 14:06
Bem legal as suas aulas, bom você está de parabéns pois as aulas estão bem explicadas e tão... Aí fiz o dever de casa... Optei pelo avançado.;
Código: [Selecionar]
red = 3
[1, 2, 3].each { |i| if red == i then p "red é #{i}" else p "red não é #{i}" end }
Vish, mas ai é avançado demais k x], mas gostei do medo que você fez :D, essas aulas são básicas, então é só para quem está começando mesmo :P, tipo você qé é bolado nisso já kk, tira isso de letra u_u.

@cristianoforce: oooops xD, vlws manin já arrumei :D.

felipefalcon
  • *
  • Mensagens: 738 Ouro: 586

    Vencedor do concurso "Carta para o Papai Noel", natal de 2015. Participantes do Maps Together 2 Vencedor do Concurso A caixa

    • RPG Maker VX/Ace
    • Ver perfil
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 4 Online: 08 Abr 2013, 23:15
Agora corrija meu código, sei que têm algo errado, acho.
Código: [Selecionar]
class Felipef
   def laranjas
     laranjas = 12
 if laranjas == 12
   p "Possui uma dúzia de laranjas"
 else
   p "Não tem uma dúzia"
   end
 end
 def horas
   horas = 24
   if horas == 1
     p "ímpar"
   elsif horas == 3
     p "ímpar"
   elsif horas == 5
     p "ímpar"
   elsif horas == 9
     p "ímpar"
   elsif horas == 11
     p "ímpar"
   elsif horas == 13
     p "ímpar"
   elsif horas == 15
     p "ímpar"
   elsif horas == 17
     p "ímpar"
   elsif horas == 19
     p "ímpar"
   elsif horas == 21
     p "ímpar"
   elsif horas == 23
     p "ímpar"
   else
     p "par"
     end
   end
     end
   conta = Felipef.new
   conta.laranjas
   conta.horas

Tem como você me explicar, se tiver como, deixar esta condição que eu fiz das horas, tipo bem simplificada XD?(Acho que escrevi mt)
  

Raizen

  • *
  • Mensagens: 2471 Ouro: 1834

    Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!

    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 5 Online: 09 Abr 2013, 00:00
Sim sim k ^^, na verdade era algo assim apenas que eu esperava xD.

Código: [Selecionar]
class Felipef
   def laranjas
     laranja = 12
 if laranja == 12
   p "Possui uma dúzia de laranjas"
 else
   p "Não tem uma dúzia"
   end
 end
 def horas
   hora = 24
   if hora % 2 == 1
     p "ímpar"
   else
     p "par"
     end
   end
     end
   conta = Felipef.new
   conta.laranjas
   conta.horas

Lembrando 2 coisas, não use nome de variáveis iguais a nome de métodos :X.

Você havia colocado laranjas e laranjas, e horas e horas, isso não é muito legal xD, na verdade da StackError se você testar, provavelmente... porque ele tenta chamar o método dentro dele mesmo, então só deixar uma variável com nome diferente do método =D.

E, a ideia do impar e par, era usar esse simbolo %, que é resto logo... 5 % 2 == 1
4 % 2 == 0

O resto de 5 por 2, é 1.
O resto de 4 por 2, é 0.
=D
« Última modificação: 09 Abr 2013, 00:02 por Raizen »

felipefalcon
  • *
  • Mensagens: 738 Ouro: 586

    Vencedor do concurso "Carta para o Papai Noel", natal de 2015. Participantes do Maps Together 2 Vencedor do Concurso A caixa

    • RPG Maker VX/Ace
    • Ver perfil
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 6 Online: 09 Abr 2013, 12:37
Sim sim k ^^, na verdade era algo assim apenas que eu esperava xD.

Código: [Selecionar]
class Felipef
   def laranjas
     laranja = 12
 if laranja == 12
   p "Possui uma dúzia de laranjas"
 else
   p "Não tem uma dúzia"
   end
 end
 def horas
   hora = 24
   if hora % 2 == 1
     p "ímpar"
   else
     p "par"
     end
   end
     end
   conta = Felipef.new
   conta.laranjas
   conta.horas

Lembrando 2 coisas, não use nome de variáveis iguais a nome de métodos :X.

Você havia colocado laranjas e laranjas, e horas e horas, isso não é muito legal xD, na verdade da StackError se você testar, provavelmente... porque ele tenta chamar o método dentro dele mesmo, então só deixar uma variável com nome diferente do método =D.

E, a ideia do impar e par, era usar esse simbolo %, que é resto logo... 5 % 2 == 1
4 % 2 == 0

O resto de 5 por 2, é 1.
O resto de 4 por 2, é 0.
=D
Obrigadopor corrigir, não sabia deste troço aí dos métodos e váriaveis não vlw XD
Vai ver porque nunca precisei usar.^^
  

Raizen

  • *
  • Mensagens: 2471 Ouro: 1834

    Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!

    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 7 Online: 09 Abr 2013, 17:56
Na verdade, sendo bem chato kk, mas se ler acho que entenderá bem, isso funciona para qualquer coisa.
Imagina o seguinte, eu tenho uma caixa.

Essa caixa eu coloco o nome de box, sempre que no programa eu buscar o box, ele vai pegar essa caixa e abrir, abrindo a caixa é que vemos se é uma variável, método, tanto que se eu buscar box2, e eu não criei essa box2, ele vai falar objeto não encontrado, ou seja não existe. Então criando com o nome laranja o método, só haverá uma caixa com nome laranja, se houver por exemplo uma classe com nome Laranja, não pode haver uma constante com nome Laranja. Isso porque Laranja já está sendo ocupado por outra coisa, ele pega um espaço no programa :P, então serve para qualquer coisa, não "nomeie" 2 coisas diferentes com mesmo nome, isso em qualquer linguagem ^^.

RyanKamos

  • *
  • Mensagens: 460 Ouro: 419

    Participantes do Maps Together 2 Vencedores do Protótipo Premiado

    • Construct 2
    • Facebook
    • Twitter
    • Google+
    • LinkedIn
    • Youtube
    • Pinterest
    • Ver perfil
    • E-mail
  • Luvas de AçoElmo de NatalColossusKnight CrestLegend
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 8 Online: 11 Abr 2013, 19:33
Aeee, to aprendendo hehe
Fiz a lição 1:
Spoiler
Código: [Selecionar]
=begin
###############################################################################
                              TESTE [Horas/Maçãs]
###############################################################################
=end

class Ryan_bag
  def apples
    all_apples = 12
    if all_apples == 12
      p "Você tem 12 maçãs!"
    else all_apples < 12
      p "Você não tem 12 maçãs!"
    end
  end
  def clock
    hours = 19
    if hours % 2 == 1
      p "Impar"
    else
      p "Par"
    end
  end
end
 
resultado = Ryan_bag.new
resultado.apples
resultado.clock
[close]
E Lição 2:  :clap:
Spoiler
Código: [Selecionar]
=begin
###############################################################################
                              TESTE 2 [Soma/Poções]
###############################################################################
=end
class Ryan_potions
  def potions (x, y)
    all_potions = x + y
    if all_potions >= 10
      p "Você tem 10 poções"
    else all_potions < 10
      p "Você não tem 10 poções"
    end
  end
end

resultado = Ryan_potions.new
resultado.potions(5,5)
[close]

A 3º não entendi muito bem kkkk, já quebrei a cabeça pra fazer a 2 kkkk

Raizen

  • *
  • Mensagens: 2471 Ouro: 1834

    Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!

    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 9 Online: 11 Abr 2013, 19:47
Perfeito  :wow:, depois tente os outros, a 3 na verdade, é só escrever aquele código de um jeito mais curto do que está xD.

Ah e na um eu havia pedido constante que seria...

Constante, aquele valor que não muda, de resto parabéns, e fico feliz que esteja acompanhando :D, a aula 5 deve sair lá na próxima semana provavelmente.

RyanKamos

  • *
  • Mensagens: 460 Ouro: 419

    Participantes do Maps Together 2 Vencedores do Protótipo Premiado

    • Construct 2
    • Facebook
    • Twitter
    • Google+
    • LinkedIn
    • Youtube
    • Pinterest
    • Ver perfil
    • E-mail
  • Luvas de AçoElmo de NatalColossusKnight CrestLegend
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 10 Online: 11 Abr 2013, 20:34
Ok, ops sorry kkkk, mas entendi como funfa, isso é o mais importante kk agradeço a você pelas aulas, eu sempre quis aprender scripts :3
Nossa, eu to caçando a 5º aula aqui e to "Cadê? Só tem 6º" kkkkk, aguardo então, enquanto isso leio as outras. obrigado :3

NetinhoMaker

  • *
  • Mensagens: 75 Ouro: 4
  • Fuçando o RGSS3
    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 11 Online: 27 Jul 2013, 02:52
O exercício fácil, mas acho que não é assim a verificação se é impar ou par. :rei:
Código: [Selecionar]
class Netinho
  laranjas = 12
  hora = 12
  if laranjas == 12
    p "uma dúzia"
  else
    p "não tem 12"
  end
  if hora =
  if horas = 0 or 2 or 4 or 6 or 8 or 10 or 12 or 13 or 14 or 15 or 16 or 18 or 20 or 22 or 24
    p "par"
  else
    p "impar"
  end
 
end


Esse intermediário foi um pouco fácil também, só não entendi direito o segundo ponto pedido.
"Crie um método de somar, em que os argumentos sejam 2 números, porém que imprima se a soma é acima de 10, ou abaixo de 10."
Código: [Selecionar]
red = 5
if red >= 1 and red <= 5
  p "red está entre 1 e 5"
else
  p "red não é nenhum dos anteriores"
end

Posso melhorar em alguma coisa?!
Cansei de ser Herói, agora vou ser vilão...

Mepps

  • *
  • Mensagens: 112 Ouro: 23
  • "Dentro do possivel, Tudo é possivel"
    • RPG Maker VX/Ace
    • Facebook
    • Ver perfil
    • E-mail
  • Colossus
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 12 Online: 27 Jul 2013, 09:44
Exercícios Facieis

Laranjas

Código: [Selecionar]
class Laranjas;
def laranja(x);

laranja = x

if laranja < 0
puts " você não tem nenhuma Laranja";
elsif laranja.between?(1,5);
puts " Voce tem #{laranja} Laranjas ";
elsif laranja == 6 then puts " Você tem meia duzia ";
elsif laranja.between?(7,11);
puts " Voce tem #{laranja} Laranjas ";
elsif laranja == 12 then puts " Você tem uma duzia ";
elsif laranja > 12;
puts " Voce tem #{laranja} Laranjas ";

end;
end;
end;

resultado = Laranjas.new
resultado.laranja(6)

Horas

Código: [Selecionar]
class Tempo;
def horas;
hora = 23;
if hora % 2 == 1;
puts "ímpar";
else;
puts "par";
end;
end;
end;

resultado = Tempo.new
resultado.horas


Codigo Optimizado - Intermediario


Código: [Selecionar]
case red = 4

when 1
puts "red é 1"
 
when 2
puts "red é 2"
 
when 3
"red é 3"
   
else
puts "red nao é nenhum dos anteriores"

end

Programa de  Soma de 2 Algoritimos
Código: [Selecionar]
class Matematica;
def soma(x,y);
soma = x + y;

if soma < 10;
puts " A soma e menor que 10 seu valor é #{soma}";
elsif soma > 10
puts " a soma e Maior que 10 seu valor é #{soma}";

end;
end;
end;

resultado = Matematica.new
resultado.soma(5,6)
resultado.soma(5,6)


Avançado


Código: [Selecionar]
class Division;
def arg(x)
arg = [x]
divisivel  = "Divisivel por 3 "
ndivisivel = "Desculpe Não é divisivel por 3"

if arg.each{|chave,valor,retorno|puts"#{chave} => #{divisivel} e seu resultado é : #{chave/3}  " if chave%3==0}
if arg.each{|chave,valor|puts"#{chave} => #{ndivisivel}" unless chave%3==0}

end
end
end
end

resultado = Division.new
resultado.arg(11)


Raizen

  • *
  • Mensagens: 2471 Ouro: 1834

    Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!

    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 13 Online: 27 Jul 2013, 18:22
Vou só responder a esse exercicio Mepps, das outras aulas nem preciso falar que está certo né shUAs xD.

Bom você manja a valer, nem tem tanta razão de eu corrigir algo rs, mas muito bem x], usou até um bloco para uma array, apesar que nem precisava de tanto x], anyway vlws por ter dado uma olhada na aula, tento fazer de um modo simples para ser entendível e claro, vamos movimentar essa área mais :D, boa sorte man.

NetinhoMaker

  • *
  • Mensagens: 75 Ouro: 4
  • Fuçando o RGSS3
    • Ver perfil
    • E-mail
Re: Aula 4 - Condições e Estruturas de Controle
Resposta 14 Online: 27 Jul 2013, 20:52
Faltou corrigir o meu Raizen, que está acima do Mepps.
Cansei de ser Herói, agora vou ser vilão...

 

Versão Mobile