O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Ruby_SuperAula 5 .>Enter

Iniciado por Enter, 04/01/2015 às 15:02

04/01/2015 às 15:02 Última edição: 04/01/2015 às 15:09 por Enter
Вы говорите по- русски?Только немного

Se for repassar o guia, dê os devidos créditos ao criador: Enter
Dou inicio a esse espaço para uma aula de linguagem Ruby.
Ter instalado Ruby no seu computador.
Mensagem do dia: "Ao invés de ficar desejando novos presentes, você já desembrulhou os que já tem? Já olhou ao seu redor?."
[box2 class=titlebg title=Lição 5: Melhorar Interface para programar, Win32API, MenuInterativo e +]
Aula 4 .>Enter
Aula 5 .>Enter (Você está nela! :clap:)


Olá pessoal. Hoje começa uma nova etapa, pois agora vamos adquirir uma interface mais agradável para programar em Ruby - E futuramente vamos migrar para uma ferramenta IDE e GUI
Vamos usar Windows API (Utilizado para fazer aplicações no Windows);
Vamos montar um menu de interação simples - será o seu primeiro projeto em Ruby, então, comemore!
Depois de ter feito o seu menu de interação eu recomendo que você idealize algum projeto pequeno e simples e tente implementá-lo. Mas entenda que o foco agora não é a interface gráfica do seu projeto - pois esse assunto será abortado nas próximas lições. É importante que agora você consolide a base que já tem.

Algumas ferramentas de desenvolvimento disponibilizam recursos como:
GUI(=Interface gráfica do utilizador)
IDE(= Ambiente Integrado de Desenvolvimento)


Mas por agora vamos utilizar o notepad++, que é um editor de texto que suporta diversas linguagens, é bem leve e organizado, para introduzi-los no uso de ferramentas de desenvolvimento.

Vamos começar:

1º Faça download do Notepad++ no seguinte endereço: http://notepad-plus-plus.org/

2º Configurando o Notepad++ para executar códigos em ruby.
Observação: Não se preocupe muito com essa parte, você só precisará configurar isso uma vez.

Abra o seu Notepad++

- Agora vá na aba: "Run"
- Clique em "Run..."
Irá abrir uma janela cujo título é: "The program to Run" e um campo em baixo para ser preenchido. Essa janela está requisitando o
caminho de onde os arquivos do ruby se encontra. E ela quer saber com qual programa você vai executar o código. Mas você não pode colocar simplesmente o caminho "C:/.../Ruby.../arquivo.x" pois o ruby precisa de todos os arquivos daquela pasta e não apenas de um arquivo do ruby
- Para entender melhor, vá na pasta do ruby > /bin e veja que há vários arquivos lá.
Então, nesse campo em branco você vai digitar um comando que vai fazer executar o cmd(Prompt de comandos) e em seguida um comando dele (sabe o prompt de comandos do windows? - ele tem comandos padrões).

- Então o comando que você vai digitar é o seguinte:

cmd /K ruby "$(FULL_CURRENT_PATH)"
[hs width=320 height=240]https://uploaddeimagens.com.br/images/000/423/043/full/01.jpg?1420390168[/hs]

--- Explicação rápida: o "/K" diz que será executado um comando e manterá em execução,lendo o código como do tipo ruby .Se você colocasse "/C" executaria mas não o manteria e o irb abriria, mostraria algo e em segundos fecharia automaticamente. Pos o "/C" Executa um comando cmd mas não o mantém.


Colocado o código no campo a ser preenchido. Abaixo desse campo há três botões: "Run" "Save" e "Cancel". Clique no "Save" para salvar esta configuração, aí será aberto uma outra janela chamada "Shortcut" que aonde você definirá a tecla de atalho para executar o seu código ruby e o nome desse caminho de atalho.
- Nomeie o caminho para: Run Ruby program e defina a tecla de atalho para o botão F6 do seu teclado. E dê OK.

---- Agora sempre que você tiver um código Ruby no notepad++ e quiser executá-lo aperte a tecla F6.


[hs width=320 height=240]http://s12.postimg.org/jdno0dscd/image.jpg[/hs]

3º Testando

Vamos criar um código em ruby para testar se o notepad está executando corretamente.
- Antes de digitar o código: vá na aba Encoding do editor notepad++ e verifique se está configurado para UTF-8, caso não esteja marque para ficar como UTF-8 - caso contrário poderá ter problemas gerados devido a formatação dos acentos das strings(=textos) do editor notepad++
- Digite o código abaixo no seu Notepad++ e salve-o com extensão ".rb" na pasta que desejar(Vá em Salvar As...>Dê um nome para o arquivo e no campo "Tipo" selecione a opção Ruby file).:

class Cachorro
def somar(numero1,numero2)
puts numero1+numero2
end
end

esparta = Cachorro.new
esparta.somar(10,7)

Agora dentro do notepad++, na aba em que o código acima estiver(Você pode criar várias abas no notepad++) aperta a tecla F6 e veja se o cmd abriu juntamente com o valor de retorno "17" (que é a saída[output] do código que escrevemos acima).

Lembrando que o valor de retorno tem que ser 17 pois numero1+numero2 = 17, pois determinamos que numero1 = 10 e numero2 = 7.



4º Conhecendo a função de importar(require) e usando API do Windows; Win32API library.

Uma das coisas que você precisa saber para desenvolver um bom software é a capacidade de importar pacotes; é nos pacotes que ficam as fontes-códigos do sistema operacional -  para serem utilizados.
Por exemplo: Caso você queira abrir criar uma janela do windows, você vai precisar importar um pacote do SO(Sistema Operacional) do computador.

Nessa etapa, vamos utilizar o Win32API, então será necessário ter o windows no seu computador, pois é um pacote do sistema operacional windows.

Abra o notepad++, Crie uma nova aba/arquivo em branco, salve-a como ".rb" Ruby File e a nomeia de: AcessandoAPIWindows


No ruby a sintaxe para importar é: require NomeDoPacote

Agora, digite o seguinte código:
require "Win32API"  #Vai utilizar esse pacote

#Crie duas variaveis
variavelMensagem= "Esse e o valor da variavelMensagem, e uma String. Nao coloque acento, pois vai dar erro" 
titulo= "Win32API com o Ruby" 
 
#criando Instancia da classe Win32API / criando o Objeto api
api = Win32API.new('user32', 'MessageBox',['L', 'P', 'P', 'L'],'I')

#executando e modificando/dando valor aos parâmetros à janela do pacote:
api.call(0,variavelMensagem,titulo,0)



Observação: Tudo que e escrito ao lado de "#" não é processao como linhas de comando/código, pois isso foi especificado durante a criação da linguagem ruby.
"#" É o comando para você fazer comentários no seu código, para ajuda-lo e ajudar aos outros a reutilizar e entender o seu código.

"call(parametro, parametro, parametro, parametro)" é um método que está dentro da classe Win32API.



Agora que você digitou o código acima e leu os comentários(#), execute apertando a tecla F6 do seu teclado. Observe que Será aberto a cmd e a janela do windows
que você criou. Observe tudo o que você modificou nela.

[hs width=320 height=240]http://s2.postimg.org/ac3xx9tix/image.jpg[/hs]



A essa altura você pode estar se perguntando: mas como é que você vai saber as posições/ordem corretas de cada parâmetro e quais são todos os parametros disponiveis para serem atribuidos a uma janela?
Bom, para isso você precisa ter acesso ao código desse pacote. No caso do Win32API você deve procurar nos sites de suporte.
Observação: Você pode e deve pesquisar nos sites dos criadores de qualquer pacote o material que eles mesmo preparam para dar suporte aos desenvolvedores.
No caso, acesse esses dois links:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx   
https://www.ruby-forum.com/topic/57693

5º Montando um menu interativo!

Crie um novo arquivo com extensão ".rb" (ruby file) com o notepad++ - salvando-o numa pasta. E nomeie para: MenuInterativo.
Agora, primeiramente vamos idealizá-lo:

- "Um programa em que seja dadas opção ao usuário e que ele escolha qual será executada para obter o output(saída) correspondente. E esse output deve estar aparecer através de uma janela windows".

Beleza, agora vamos implementá-lo no arquivo em branco que você criou:

require "Win32API"  #Vai utilizar esse pacote
class MenuInterativo
attr_accessor :resposta, :mensagem, :variavelMensagem, :titulo, :calcular

def mostrarOpcoes
opcao1 = "Definir um apelido para esse projeto"
opcao2 = "Somar dois numeros para voce"
puts "Olá, eu sou um menu interativo. Posso fazer algumas coisas, quer ver?"
puts "Eu posso..."
#O "\n" serve para pular linha no output(saida)
puts "1 "+opcao1
puts "2 "+opcao2
puts "Digite o numero da opcao correspondente ao que voce deseja:"
#utilizamos o gets.chomp para pegar algum dado que o usuario digitar. Há outras maneiras de se fazer isso..Essa é uma das mais rápidas
resposta = gets.chomp.to_i
puts resposta

#escolhe (atraves do numero 1 ou 2) a opção e a executa com o auxilio de condições


if resposta ==1
puts "Escreva o apelido do seu projeto, não utiliza acentos:"
variavelMensagem= gets.chomp 
titulo = "Apelido Definido"
else
puts "Escreva o valor de um numero para ser somado, O valor do numero1:"
calcular= gets.chomp.to_i
puts "Escreva o valor do numero2"
calcular = gets.chomp.to_i + calcular
puts calcular
variavelMensagem=  calcular.to_s #Você tem que converter o valor para string, pois o messagebox do win32api só aceita Strings(textos). Usamos o: .to_s para string e .to_i para inteiros(int)
titulo= "Win32API com o Ruby"  
end
#Não se preocupe em decorar isso, pois você absorve isso com a prática. E além do mais, sempre quando você precisar utiliza-la, você pode consultar a sintaxe dela.
 
api = Win32API.new('user32', 'MessageBox',['L', 'P', 'P', 'L'],'I')
api.call(0,variavelMensagem,titulo,0)
 

end #fim do método mostrarOpcoes (que também trata o output de acordo com a resposta do usuario


#Agora vamos centralizar tudo, para ficar mais organizado na hora de instanciar o objeto(menu1) e executar somente um método(Principal) e a partir desse os outros métodos da classe vão ser executados
def Principal

#O que vai ser lido ao dar Run! É o que está aqui em baixo: 
#E a partir disso é referenciado o que está acima(que é o método mostrarOpcoes)
mostrarOpcoes #executa o método
end
end  #da classe


##FORA DA CLASSE, Damos o COMANDO:
#Aqui é onde você está intanciando o objeto e executando o método da classe
#1º instancia o objeto
menu1 = MenuInterativo.new
#2º executa
menu1.Principal

[hs width=320 height=240]http://s21.postimg.org/5sfdxsmjr/image.jpg[/hs]

Links com artigos teóricos para curiosidades:
http://www.rubytips.org/
http://www.rubytips.org/2011/12/22/using-notepad-for-writing-ruby-programs-in-windows/
https://www.ruby-lang.org/pt/documentation/ruby-from-other-languages/to-ruby-from-java/
https://sites.google.com/site/mhbbcmd/comandos-prompt/cmd
http://www.akitaonrails.com/2009/01/12/o-melhor-ambiente-windows-para-rails#.VKhMpPnF868
http://zetcode.com/lang/rubytutorial/io/


[/box2]
Task:
Faça o código do 5º passo no minimo 2 vezes, não copie e cole - digite manualmente. E caso tenha alguma dúvida anote-a para pesquisar ou perguntar quando tiver oportunidade.