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

Introdução a programação

Iniciado por Raizen, 28/11/2012 às 10:44

28/11/2012 às 10:44 Última edição: 12/09/2019 às 20:42 por Raizen
[box class=windowbg1]
Índice das aulas básicas
  • Aula 1 - Introdução
  • Aula 2 - Objetos
  • Aula 3 - Operações
  • Aula 4 - Condições
  • Aula 5 - Repetição
  • Aula 6 - Arrays
  • Aula 7 - Hashes
    [/box]
    [box class=windowbg1]
    Índice das aulas avançadas
  • Aula 8 - Superclasses e instâncias
  • Aula 9 - Try & Catch
  • Aula 10 - Method Overload (Sobrecarga de Métodos)
    [/box]
    [box class=windowbg1]
    Índice das aulas de algoritmos
  • Aula 1 - Sort
  • Aula 2 - Busca
  • Aula 3 - Recursividade
    [/box]
    [box class=windowbg1]
    Aulas Diversas
  • Aula Especial - Otimização dos códigos

    [/box]
    [box class=windowbg2]
    Introdução a Programação
    [/box]

    [box class=catbg2]
    O início
    [/box]

    [box class=catbg3]  O começo da programação era algo bem menos trivial do que estamos acostumados a ver, a programação era baseada em dizer se algo está ligado ou não, e consequentemente usar isso para reproduzir uma resposta lógica.
      Essa programação de ligado/desligado é o conhecido sistema binário, em que cada bit é ligado(1) ou desligado(0). Essa programação trabalhava diretamente no processador, e ainda trabalha, porém com o avançar da tecnologia, e cada vez mais bits sendo paralelamente "lidos" pelo microprocessador, foi capaz de se criar as linguagens altas, em que são muito mais didáticos e diretos para se programar.
      As linguagens de alto nível são as que trabalham para criar os programas que estão acostumados a ver, elas não tem tanta "intimidade" com os processadores, porém dão uma maleabilidade muito grande para que consiga dizer a máquina como ela deve agir.
    [/box]

    [box class=catbg2]
    Lógica de Programação
    [/box]
    [box class=catbg3]  O computador é uma máquina, ela não saberá o que você quer a menos que diga a ela. Basicamente, você deve indicar quando inicia um bloco e quando o termina, bloco são conjunto de comandos que formam um algoritmo, esse algoritmo o programa fará a risca, e cada comando dele precisa estar bem definido.
    Exemplo:
    Iniciar Bloco
    iniciar variavel b;
    variavel b == soma de 4 e 5;
    imprimir b;
    fechar bloco
    

    A ideia é que cada passo dado no programa, você deve indicar quando inicia, quando termina e o que fazer.
    [/box]

    [box class=catbg2]
    Linguagem Orientada a objetos
    [/box]
    [box class=catbg3]  Esse tipo de linguagem permite a criação de objetos, o que exatamente seria objetos?
    Objetos no Ruby e em outras linguagens semelhantes, é bem simples de entender o que são pela seguinte analogia.
       Eu tenho uma caixa, coloco nele um bloco de códigos, sempre que eu quiser que esse bloco seja ativado, eu não preciso chamar o bloco de códigos novamente, eu posso apenas chamar "caixa". Claro não necessariamente apenas a chamo pelo nome, cada tipo de objeto diferente tem que ser inicializado diferentemente, além disso, uma grande vantagem da linguagem orientada a objetos, é chamar apenas parte daquele objeto (métodos e atributos), assim eu posso manipular blocos de códigos sempre e quando eu precisar usa-los. Olhe na imagem a seguir, retirada do site ruby-br.org

      A próxima aula é exatamente sobre isso, objetos do Ruby, e ai será bem mais prática do que essa aula, boa sorte nos estudos =).
    [/box]

Estou estudando logica de programação e outros coisa no meu curso tecnico , espero que me ajude com o ruby  :ded:

Citação de: Hennry online 27/02/2015 às 09:28
Estou estudando logica de programação e outros coisa no meu curso tecnico , espero que me ajude com o ruby  :ded:

Sim. Em meu curso técnico eu tive Pascal, C, e uma introduão de Java. Nunca criei nenhum script em ruby (porque programação era a matéria que eu mais odiava  :XD: minhas piores notas eram em progrmação) mas o basico de programação de outras linguagens torna muito mais fácil aprender outras. Já fiz modificações em scripts para o RPG Maker apenas com o cohecimento de outras.
Mas este tutorial de Rizen é muito bom. Aqueles que se interessam na linguagem ruby, acredito que não terão grandes dificuldades.

"Era uma vez um elfo encantado que morava num pé de caqui..."

Citação de: Silverlake online 27/02/2015 às 11:44
Citação de: Hennry online 27/02/2015 às 09:28
Estou estudando logica de programação e outros coisa no meu curso tecnico , espero que me ajude com o ruby  :ded:

Sim. Em meu curso técnico eu tive Pascal, C, e uma introduão de Java. Nunca criei nenhum script em ruby (porque programação era a matéria que eu mais odiava  :XD: minhas piores notas eram em progrmação) mas o basico de programação de outras linguagens torna muito mais fácil aprender outras. Já fiz modificações em scripts para o RPG Maker apenas com o cohecimento de outras.
Mas este tutorial de Rizen é muito bom. Aqueles que se interessam na linguagem ruby, acredito que não terão grandes dificuldades.

Desde meu primeiro dia de aula no ano passado eu ja gostei de cara das materias que envolviam programação  :rainbow:
Agora no segundo modulo estou aprendendo a tecnica de orientação a objetos e a mexer com o netbens , e o delfhin acho que é assim que escreve . Aprendi um pouco sobre variaveis tambem , nessa parte de programação do rpg maker nao to tendo tanta dificuldade por ja ter uma base . mas agora vo me esforçar pra aprender o ruby , ainda to vendo a parte do tutorial das variaveis do maker . entao vamo q vamo pq sou nobasso no rpg maker  :wow:

Oi .-. Desculpa surgir assim do nada. Comecei a aprender Java recentemente, e de repente de veio uma dúvida que nunca tinha tido antes. Procurei em alguns lugares mas ainda sim estou confusa.
A dúvida é sobre referências.

Em Java, quando você faz o seguinte código:
void func(Classe objetoLocal) {
objetoLocal.atributo = 3;
}

E depois chama:
Classe meuObjeto = new Classe();
func(meuObjeto);

Até onde sei, você muda o meuObjeto, mesmo que dentro na função eu mude o objetoLocal, porque Java trabalha com referência quando se trata de objetos. Mas se em vez disso você fizer algo como:
void func(Classe objetoLocal) {
objetoLocal = new Classe();
}

O meuObjeto continua intacto, porque meuObjeto e objetoLocal são "ponteiros" independentes.

Eu sei que você provavelmente já sabe disso, eu falei mais para contextualizar e ilustrar melhor minha dúvida. Minha pergunta mesmo é... é exatamente a mesma coisa em Ruby? Os objetos são vistos como se fossem ponteiros de C/C++? Ou se eu passar um objeto como parâmetro, a função recebe um objeto totalmente novo e independente do original?
Se for como Java, Ruby possui "tipo primitivos" também ou é tudo referência mesmo, inclusive inteiros e floats?
Já perceberam que em vez de as pessoas usarem esse espaço para uma assinatura de fato, elas colocam alguma coisa aleatória (imagem, frase filosófica, divulgação, tipo o que estou fazendo agora), e colocam no corpo das mensagens o que deveria ser a assinatura?

@Pretty-Bele:
Vamos ver se eu saquei tudo x), antes de tudo devo dizer que eu assim, trabalho mesmo com desenvolvimento, mas fico mais na parte "média" ao invés da baixa xD. O que eu conheço e sei do Ruby, é que tudo é objeto, e que esses objetos são alocados na memória no momento de declaração deles.

Então se você passar como um atributo em um método/função, será o mesmo objeto que está apontado para o mesmo local. Isso para Arrays também, por isso tem a função dup em alguns objetos, que é para criar uma nova alocação na memória para aquele objeto.

Mas isso não é válido para tudo, acho que Integers, Floats e Strings não são, esses são criados uma nova alocação toda vez, tanto que tem o Symbol que é usado justamente para não ser criado essa alocação na memória.

Não sei se fui confuso xD, mas é basicamente isso que disse que tem no java, no C e em outras linguagens, eu fiz um code aqui não sei se é o que busca, mas tentei codificar aqui.

class Raizen
  def start
    @time = 0
  end
  def change_timer
    @time += 1
  end
  def prt
    p @time
  end
end

obj = Raizen.new # Iniciei a classe Raizen
obj.start # Iniciei a variável timer
obj.change_timer # mudei a variável timer para @time += 1

def get_char(rai)
  @rai = rai # Aqui declaramos @rai = rai que tem a variável @time igual a 1
  @rai.prt # imprime 1
end

get_char(obj)
obj.change_timer # adiciono um no objeto obj
@rai.prt # Aqui time ficou igual a 2, porque ele está apontado para a mesma alocação do obj.

02/04/2015 às 14:41 #6 Última edição: 02/04/2015 às 14:48 por Pretty-Belle
É, então ele funciona como o Java/C#. Eu acho importante mencionar isso nas suas aulas, faz uma bela de uma diferença. Inclusive, pelo que testei agora, os tipo "primitivos" (os que sempre são passados por parâmetro) são só os números, strings são tratadas como referências, assim como objetos.
Acredito que vá ter gente (assim como já aconteceu comigo) que acredita que atribuir um objeto a outro (obj2 = obj1) vai estar copiando o obj1 para uma alocação separada e a referenciando em obj2. Ou seja, se modificar obj2 não vai mudar o obj1, o que não é o que acontece. Eu me enrolei bastante com isso nas minhas primeiras tentativas de script.
Verificar aqui também é uma boa: http://www.tutorialspoint.com/ruby_terminal_online.php
Se você ficar os seguintes comandos
str1 = "a"
str2 = str1
str2 << "b"
str1
str2
Ambas vão mostrar "ab". Se você fizer a mesma coisa só que usando números, a resposta é diferente. Então é bom lembrar desse detalhe quando for passar uma string para uma função. Detalhe: com strings, se usar "+=" em vez "<<" é alocado um novo objeto. Creio eu porque o operador "+" retorna um novo objeto "soma" em vez de apenas modificar o atual (é um chute, não sei ao certo ><)
Enfim, é muito bom saber que funciona como Java, facilitou muito a minha vida xD Uma outra fez eu tinha quebrado a cabeça para saber como referenciar a um objeto, e não sabia que o próprio objeto já era uma referência, lol.
Obrigada por esclarecer x3
Já perceberam que em vez de as pessoas usarem esse espaço para uma assinatura de fato, elas colocam alguma coisa aleatória (imagem, frase filosófica, divulgação, tipo o que estou fazendo agora), e colocam no corpo das mensagens o que deveria ser a assinatura?