Lei de Regulamentação da Profissao de Analista de Sistemas

PROJETO DE LEI DO SENADO

N° , DE 2007

Dispõe sobre a regulamentação do exercício da profissão de Analista de Sistemas e suas correlatas, cria o Conselho Federal e os Conselhos Regionais de Informática e dá outras providências.

O CONGRESSO NACIONAL decreta:

Título I

Do exercício da profissão de analista de sistemas e atividades relacionadas com a informática

Art. 1º É livre, em todo o território nacional, o exercício das atividades de análise de sistemas e demais atividades relacionadas com a Informática, observadas as disposições desta Lei.

Art. 2° Poderão exercer a profissão de Analista de Sistemas no País:

I - os possuidores de diploma de nível superior em Análise de Sistemas, Ciência da Computação ou Processamento de Dados, expedido por escolas oficiais ou reconhecidas;

II - os diplomados por escolas estrangeiras reconhecidas pelas leis de seu País e que revalidarem seus diplomas de acordo com a legislação em vigor;

III - os que, na data de entrada em vigor desta Lei, tenham exercido, comprovadamente, durante o período de, no mínimo cinco anos, a função de Analista de Sistemas e que requeiram o respectivo registro aos Conselhos Regionais de Informática.

Art. 3° Poderão exercer a profissão de Técnico de Informática:

I - os portadores de diploma de ensino médio ou equivalente, de Curso Técnico de Informática ou de Programação de Computadores, expedido por escolas oficiais ou reconhecidas;

II - os que, na data de entrada em vigor desta Lei, tenham exercido, comprovadamente, durante o período de, no mínimo quatro anos, a função de Técnico de Informática e que requeiram o respectivo registro aos Conselhos Regionais de Informática.

Art. 4º As atividades e atribuições dos profissionais de que trata esta Lei consistem em:

I - planejamento, coordenação e execução de projetos de sistemas de informação, como tais entendidos os que envolvam o processamento de dados ou utilização de recursos de informática e automação;

II - elaboração de orçamentos e definições operacionais e funcionais de projetos e sistemas para processamento de dados, informática e automação;

III - definição, estruturação, teste e simulação de programas e sistemas de informação;

IV - elaboração e codificação de programas;

V - estudos de viabilidade técnica e financeira para implantação de projetos e sistemas de informação, assim como máquinas e aparelhos de informática e automação;

VI - fiscalização, controle e operação de sistemas de processamento de dados que demandem acompanhamento especializado;

VII - suporte técnico e consultoria especializada em informática e automação;

VIII - estudos, análises, avaliações, vistorias, pareceres, perícias e auditorias de projetos e sistemas de informação;

IX - ensino, pesquisa, experimentação e divulgação tecnológica;

X - qualquer outra atividade que, por sua natureza, esteja incluída no âmbito de suas profissões.

Parágrafo único. É privativa do Analista de Sistemas a responsabilidade técnica por projetos e sistemas para processamento de dados, informática e automação, assim como a emissão de laudos, relatórios ou pareceres técnicos.

Art. 5° Ao responsável por plano, projeto, sistema ou programa é assegurado o direito de acompanhar a sua execução e implantação, para garantir a sua realização conforme as condições, especificações e detalhes técnicos estabelecidos.

Art. 6° A jornada de trabalho dos profissionais de que trata esta Lei não excederá quarenta horas semanais, facultada a compensação de horários e a redução de jornada, mediante acordo ou convenção coletiva de trabalho.

Parágrafo único. A jornada de trabalho dos profissionais submetidos a atividades que demandem esforço repetitivo será de vinte horas semanais, não excedendo a cinco horas diárias, já computado um período de quinze minutos para descanso.
Título II

Da fiscalização e exercício da profissão

Capítulo I

Dos órgãos fiscalizadores

Art. 7° A fiscalização do exercício das profissões regulamentadas nesta Lei será exercida pelo Conselho Federal de Informática (CONFEI) e pelos Conselhos Regionais de Informática (CREI), dotados de personalidade jurídica de direito público, autonomia administrativa e financeira, aos quais compete zelar pela observância dos princípios da ética e disciplina profissionais.

Capítulo II

Do Conselho Federal de Informática

Art. 8° O Conselho Federal de Informática é a instância superior de fiscalização do exercício profissional dos Analistas de Sistemas e profissões correlatas, com sede no Distrito Federal e jurisdição em todo o território nacional.

Parágrafo único. Compete ao Conselho Federal de Informática identificar as especializações dos profissionais de Informática e estabelecer sua denominação e suas atribuições.

Art. 9° Constituem atribuições do Conselho Federal de Informática, além de outras previstas em seu regimento interno.

I - elaborar seu regimento interno e aprovar os regimentos organizados pelos Conselhos Regionais de Informática;

II - orientar, disciplinar e fiscalizar o exercício das profissões de Analista de Sistemas e suas correlatas;

III - examinar e decidir, em última instância, os assuntos relativos ao exercício das profissões de Analista de Sistemas e suas correlatas;

IV - julgar, em última instância, os recursos sobre registros, decisões e penalidades impostas pelos Conselhos Regionais de Informática;

V - expedir resoluções e instruções necessárias ao bom funcionamento dos Conselhos Regionais de Informática;

VI - fixar a composição dos Conselhos Regionais de Informática, organizando-os e promovendo a instalação de tantos Conselhos Regionais quantos forem necessários, determinando suas sedes e zonas de jurisdição.

VII - promover a intervenção nos Conselhos Regionais de Informática, na hipótese de sua insolvência.

VIII - elaborar as prestações de contas e encaminhá-la ao Tribunal de Contas da União;

IX - examinar e aprovar a proporção das representações dos grupos profissionais dos Conselhos Regionais de Informática;

X - autorizar o Presidente a adquirir, onerar ou, mediante licitação, alienar bens imóveis.

Art. 10. O Conselho Federal de Informática será constituído, inicialmente, de nove membros efetivos e nove suplentes, eleitos em escrutínio secreto, em Assembléia dos delegados.

§ 1° A composição a que se refere este artigo fica sujeita a um acréscimo de membros, até o limite máximo de tantos quantos forem os Estados da Federação que contenham Conselhos Regionais de Informática.

§ 2° Cada Conselho Regional de Informática se fará representar por, no mínimo, um membro no Conselho Federal de Informática.

§ 3° O mandato dos membros do Conselho Federal de Informática será de dois anos, sem recondução.

Art. 11. Em cada ano, na primeira reunião, os conselheiros elegerão o Presidente, o Vice-Presidente, o Primeiro Secretário, o Segundo Secretário, o Primeiro Tesoureiro e o Segundo Tesoureiro.

Parágrafo único. As atribuições dos cargos a que se refere este artigo serão determinadas no regimento interno do Conselho Federal de Informática.

Art. 12. O Conselho Federal de Informática reunir-se-á, ordinariamente, uma vez ao mês e, extraordinariamente, quando convocado pelo seu Presidente ou pela maioria absoluta de seus membros.

§ 1º As deliberações do Conselho Federal de Informática serão válidas desde que aprovadas com a presença da metade mais um de seus membros.

§ 2° A substituição de qualquer membro do Conselho Federal de Informática, em suas faltas e impedimentos, far-se-á pelo respectivo suplente.

Art. 13. Constituem renda do Conselho Federal de Informática:

I - vinte por cento do produto da arrecadação prevista nos incisos I, III e IV do art. 20 desta Lei.

II - doações, legados, juros e receitas patrimoniais;

III - subvenções;

IV - outros rendimentos eventuais.

Capítulo III

Dos Conselhos Regionais de Informática

Art. 14. Os Conselhos Regionais de Informática são órgãos de fiscalização do exercício das profissões de Analista de Sistemas e correlatas, em suas regiões.

Parágrafo único. Cada unidade da Federação só poderá ficar na jurisdição de um Conselho Regional de Informática.

Art. 15. Constituem atribuições dos Conselhos Regionais de Informática, além de outras previstas em regimento interno.

I - organizar e alterar seu regimento interno, submetendo-o à apreciação e aprovação do Conselho Federal de Informática;

II - orientar, disciplinar e fiscalizar o exercício da profissão em sua área de competência;

III - sugerir ao Conselho Federal de Informática as medidas necessárias à orientação e fiscalização do exercício profissional;

IV - remeter, anualmente, relatório ao Conselho Federal de Informática com relações atualizadas dos profissionais inscritos, cancelados ou suspensos;

V - encaminhar a prestação de contas ao Conselho Federal de Informática;

VI - examinar os requerimentos e processos de registros em geral, expedindo as carteiras profissionais ou documentos de registros;

VII - autorizar o Presidente a adquirir, onerar ou, mediante licitação, alienar bens imóveis.

Art. 16. Os Conselhos Regionais de Informática serão compostos por membros efetivos e suplentes, em número determinado pelo Conselho Federal de Informática, de conformidade com o inciso VI do art. 9 desta Lei, sendo brasileiros, eleitos em escrutínio secreto, pelos profissionais inscritos na respectiva área de ação.

Parágrafo único. O mandato dos membros dos Conselhos Regionais de Informática será de dois anos, não sendo permitida a reeleição.

Art. 17. Os membros de cada Conselho Regional de Informática reunir-se-ão uma vez por mês, em caráter ordinário e, extraordinariamente, sempre que convocados pelo seu Presidente ou por metade mais um de seus membros.

Art. 18. A substituição de cada membro dos Conselhos Regionais de Informática, em seus impedimentos e faltas, far-se-á pelo respectivo suplente.

Art. 19. A Diretoria de cada Conselho Regional de Informática será eleita, em escrutínio secreto, pelos profissionais nele inscritos.

Parágrafo único. As atribuições dos cargos a que se refere este artigo serão determinadas no regimento interno de cada Conselho Regional de Informática.

Art. 20. Constituem renda dos Conselhos Regionais de Informática:

I - anuidades cobradas dos profissionais inscritos;

II - taxas de expedição de documentos;

III - emolumentos sobre registros e outros documentos;

IV - doações, legados, juros e subvenções;

V - outros rendimentos eventuais.

Art. 21. Aos Conselhos Regionais de Informática compete dirimir dúvidas ou omissões relativas à presente Lei, com recurso “ex-officio”, de efeito suspensivo, para o Conselho Federal de Informática, ao qual compete decidir em última instância.

Capítulo IV

Do Registro e da Fiscalização Profissional

Art. 22. Todo profissional de Informática, habilitado na forma da presente Lei, para o exercício da profissão, deverá inscrever-se no Conselho Regional de Informática de sua área de atuação.

Parágrafo único. Para a inscrição de que trata este artigo, é necessário que o interessado:

I - satisfaça as exigências de habilitação profissional previstas nesta Lei;

II - não esteja impedido, por outros fatores, de exercer a profissão.

Art. 23. Em caso de indeferimento do pedido pelo Conselho Regional de Informática, o candidato poderá recorrer ao Conselho Federal de Informática, dentro do prazo fixado no regimento interno.

Art. 24. Qualquer pessoa ou entidade poderá representar ao Conselho Regional de Informática contra o registro de candidatos.

Art. 25. Aos estudantes dos cursos e escolas de nível superior de Análise de Sistemas, Ciência da Computação, Processamento de Dados, ou de Técnico de Informática de nível médio, será concedido registro temporário para a realização de estágio de formação profissional.

Parágrafo único. Os estágios somente serão permitidos no período de formação profissional, não podendo ultrapassar o prazo de dois anos.

Art. 26. Se o profissional, firma ou organização, registrado em qualquer Conselho Regional de Informática, exercer atividade em outra região, ficará obrigado a visar o seu registro na região de exercício da atividade.

Art. 27. Exerce ilegalmente a profissão de Analista de Sistemas:

I - a pessoa física ou jurídica que exercer atividades privativas do Analista de Sistemas e que não possuir registro nos Conselhos Regionais de Informática;

II - o profissional que emprestar seu nome a pessoas, firmas, organizações ou empresas executoras de projetos ou serviços de informática, sem sua real participação nos trabalhos delas.

Capítulo V

Das Anuidades, Emolumentos e Taxas

Art. 28. Os profissionais registrados nos Conselhos Regionais de Informática, de conformidade com esta Lei, estão obrigados ao pagamento de uma anuidade aos Conselhos a cuja jurisdição pertençam.

§ 1º A anuidade a que se refere este artigo é devida a partir de 10 de janeiro de cada ano.

§ 2° Após 31 de março, o valor da anuidade será acrescida de vinte por cento, a título de mora.

§ 3° Após o exercício respectivo, o valor da anuidade terá seu valor atualizado para o vigente à época do pagamento, acrescido de vinte por cento a título de mora.

Art. 29. O profissional que deixar de efetuar o pagamento da anuidade durante dois anos consecutivos, terá cancelado seu registro profissional sem, no entanto, desobrigar-se dessa dívida.

Parágrafo único. O profissional que incorrer no disposto deste artigo poderá reabilitar-se mediante novo registro, saldadas as anuidades em débito, as multas que lhe forem impostas e taxas regulamentares.

Art. 30. O Conselho Federal de Informática baixará resoluções estabelecendo Regimento de Custas e promoverá sua revisão sempre que necessário.

Capítulo VI

Das Infrações e Penalidades

Art. 31. Constituem infrações disciplinares, além de outras:

I - transgredir preceito de ética profissional;

II - exercer a profissão quando impedido de fazê-lo, ou facilitar, por qualquer meio, o seu exercício aos não inscritos ou impedidos;

III - praticar, no exercício da atividade profissional, ato que a lei defina como crime ou contravenção;

IV - descumprir determinações dos Conselhos Regionais ou Federal, de Informática, em matéria de competência destes, depois de regularmente notificado;

V - deixar de pagar, na data prevista, as contribuições devidas ao Conselho Regional de Informática de sua jurisdição.

Art. 32. As infrações disciplinares estão sujeitas à aplicação das seguintes penas:

I - advertência;

II - multa;

III - censura;

IV - suspensão do exercício profissional até trinta dias;

V - cassação do exercício profissional “ad referendum” do Conselho Federal.

Art. 33. Compete aos Conselhos Regionais de Informática a aplicação das penalidades, cabendo recurso, com efeito suspensivo, para o Conselho Federal de Informática, no prazo de trinta dias da ciência da punição.

Art. 34. Esta Lei entra em vigor na data de sua publicação.

JUSTIFICATIVA

A regulamentação da profissão de analista de sistemas e suas correlatas tornou-se uma exigência da realidade. Essa atividade, relativamente nova no mercado de trabalho, assumiu uma importância que não pode mais ser desconsiderada. Nesse sentido, o ilustre Deputado Eduardo Paes apresentou o Projeto de Lei nº 1.947, de 2003, para atender a essa demanda do mundo jurídico trabalhista e dos profissionais atuantes na informática.

Infelizmente, a referida proposição foi arquivada ao término da legislatura passada, sem uma análise mais apurada. Em nosso entendimento, o tema merece ser novamente examinado. Por essa razão, estamos apresentando proposta nos mesmos moldes, com pequenas adequações e correções que, nosso entendimento, aprimoram a proposição.

A criação de Conselho Federal de Informática (CONFEI) e dos Conselhos Regionais de Informática (CREI), constante da iniciativa, tem por objetivo sanar uma importante lacuna na legislação brasileira, dada a relevância da informática no setor produtivo e sua influência no dia-a-dia do cidadão brasileiro.

Com as normas aqui propostas, pretendemos tornar livres as atividades de informática, compatibilizando a legislação com a realidade tecnológica em que vivemos. Realidade esta que colocou nas mãos do usuário do computador a possibilidade de desenvolver seus próprios programas e de se conectar com o mundo, com todas as implicações daí decorrentes.

Estamos privilegiando o profissional da área, reconhecendo seu direito e obrigação de assumir a responsabilidade técnica pelos projetos desenvolvidos em bases profissionais. É desse profissional que se espera o cumprimento de normas éticas e a colaboração efetiva para que haja segurança nas comunicações e o respeito às normas legais, civis e criminais aplicáveis à atividade.

Nesse sentido, os Conselhos são um instrumento poderoso de fiscalização, impondo limites e estabelecendo parâmetros justos e equilibrados para o bom andamento da atividade. Eles servem também para a partilha e divulgação de conhecimentos, interferindo nas políticas públicas para a informática. Esperamos que possam colaborar efetivamente para a inclusão digital, tema diretamente relacionado com a cidadania e a democracia.

Pelas razões expostas, demandamos o apoio dos ilustres pares para a aprovação deste projeto de lei. Estamos certos de que ele fará justiça para com os profissionais da informática, servindo para a valorização dos profissionais e para a excelência na atividade.

Sala das Sessões,

Senador EXPEDITO JÚNIOR

Comentários (1)

Programando em Ruby II - Tipos, Numeros, Strings, Array

codigofonteContinuando os Artigos sobre Ruby…..

Hoje falaremos sobre Tipos, Numeros, Strings, Array

Antes de começarmos a falar propriamente da linguagem ruby, vamos pensar um pouco sobre algumas características de outras linguagens de programação. No fundo de qualquer linguagem de programação o objetivo é disponibilizar uma sintaxe e semantia que sejam capaz de escrever a solução de um problema que seja finito e bem delineado. Porém existem várias complicações nesse meio, ou seja, imagine qual seria a atribuição verdadeira de uma linguagem, podemos pensar de várias formas, mais vamos aos extremos:

Uma Linguagem tem que ser:

Uma Linguagem tem que ser completa, com todas as funções possiveis prontas, tem que ser rigida e formal o suficiente para que não leve o programador a errar, tem que ser formal o suficietne que transforme o ato de programar algo previsível e desenhavel como um processo de engenharia, onde antes de começar a ato de programar seja possível prever o resultado com grande garantia.

Bem essa seria a linguagem ideal, porém vamos aos detalhes. Uma linguagem que tenha todas as funções possiveis prontas e ja disponíveis seria ótimo pois ja teria tudo a mão durante a programação, porem o aprendizado de várias funções prontas seria mais demorado e complexo tornando mais dificil o aprendizado do linguagem. Uma libguagem que seja formal o suficiente para ão deixar o programador errar torna o resultado masi previsível, porém, torna o processo de programar algo mecanico e mata a possibilidade de criar metodos novos de resolvel algum problema de uma maneira diferente limitando a capacidade dos programadores. Tornar o processo de programar algo como um processo puramente de engenharia seria o ideal pois tornaria os software mais previsíveis, porém o ato de programar e um ato de arte não de pura matemática, sendo onde deve ser bem dosado o que será arte e o que será planejamento e previsão.

Ou uma linguagem deve ser simples, só com as funcionalidades indispesáveis, com alto poder de explansão, tem que ser totalmente flexivél e adaptavél para que libere a criatividade do programador, deve ser dinamica o suficiente para que o software seja algo perfieto e nada previsível.

Bem essa também seria a linguagem ideal porém vamos as detalhes: Uma liguagem simples que so contenas funços básicas seria muito simples de aprender, porem a toda nova necessidade seria necessário que seja escrito, onde tornar o ato de programar totalmente artístico en nada previsível torna o software mais sucessível a erros e falhas.

Bem isso são alguns pontos que são interessantes serem lembrados antes de começarmos a falar em ruby, pois ruby é uma linguagem que tende mais a segunda opção acima não tão extrema, mais algo perto. A linguagem ruby foi feito por um programador e visa a satisfação do programador, ela também e altamente expansível e adaptavel, e dinamica e simples.

Bem Vamos a Ruby!

TIPOS

Bem, em ruby nao tem tipos! Não da maneira que se tem em java, como primitivos, ou sej, numeros, caracteres, booleanos.

Em Ruby tudo é objeto, e sendo assim:

1 - é um Objeto da classe Fixnum

1231231.654645 - é um objeto da classe Float

“a” - é um objeto da classe String

true - é um objeto da classe TrueClass

false - é um objeto da classe FlaseClass

Sabendo que objetos tem métodos, quas são os métodos de um Fixnum ou do 1

irb(main):007:0> 1.methods

[”%”, “inspect”, “<<”, “singleton_method_added”, “&”, “clone”, “>>”, “round”, “method”, “public_methods”, “instance_variable_defined?”, “divmod”, “equal?”, “freeze”, “integer?”, “chr”, “*”, “+”, “to_i”, “methods”, “respond_to?”, “-”, “upto”, “between?”, “prec”, “truncate”, “/”, “dup”, “instance_variables”, “__id__”, “modulo”, “succ”, “|”, “eql?”, “object_id”, “zero?”, “~”, “id”, “to_f”, “singleton_methods”, “send”, “prec_i”, “taint”, “step”, “to_int”, “frozen?”, “instance_variable_get”, “^”, “__send__”, “instance_of?”, “remainder”, “to_a”, “+@”, “nonzero?”, “-@”, “type”, “**”, “floor”, “<”, “protected_methods”, “<=>”, “instance_eval”, “display”, “==”, “prec_f”, “quo”, “>”, “===”, “downto”, “id2name”, “size”, “instance_variable_set”, “kind_of?”, “abs”, “extend”, “>=”, “next”, “to_s”, “<=”, “coerce”, “hash”, “ceil”, “class”, “tainted?”, “=~”, “private_methods”, “div”, “nil?”, “untaint”, “times”, “to_sym”, “[]”, “is_a?”]

Notem que o Objeto 1 tem todos os metodos necessários para ser auto-suficiente, ou seja, o objeto 1 é capas de se somar, subtrair, multiplicar, dividir e muitas outras ações usando os métodos. Legal isso sendo assim a linguagem ruby não tem nada a ver com soma, isso e responsabilidade dos objetos.

Bem parece que a linguagem ruby realmente e bem simples, ela nao faz quase nada, nem mesmo operações matemáticas básicas, etão o quela realmetne faz.

Bem uma coisa interessante da linguagem ruby e o “sintax sugar”, e como e chamado alguns recursos de ajuda ao programador, coisas que tornam algo complicado de ser lido ou escrito em açucar sintatico para o programdor.

Olhem esse exemplor - a = 10 + 20

Bem para se chamar um método de um objeto escreve-se assim “Objeto.Metodo”

Então ja que em Ruby o 10 e um Objeto Fixnum e + é um metodo do objeto ficaria ssim:

a.=(10.+(20))

ai entra o sintax sugar em açao e deixa voe escrever assim:

a = 10 + 20

Isso nao mudou nada o 10 continua sendo objeto e + um metodo do objeto 10, porem a sintaxe ficou açucarada e bem mais legível, legal isso.

A função de sintax sugar é muito usada em ruby, sempre que ruby puder tornar as coisas mais legíes e simples ele as tornará.

Funções avançadas em numeros

Voltando as números, talvez voce tenha notado que apesar de a Classe Fixnum ter bastantes métodos ela nao contem métodos muto avançados de matemática, isso fic a cargo de um módulo chamado Math

Raiz Quadrada de 25 ficaria assim em ruby

Math.sqrt(25)

Metodos do módulo Math

[”inspect”, “cos”, “log10″, “private_class_method”, “const_missing”, “clone”, “method”, “public_methods”, “atan”, “public_instance_methods”, “instance_variable_defined?”, “erf”, “method_defined?”, “equal?”, “freeze”, “included_modules”, “const_get”, “asinh”, “methods”, “respond_to?”, “sin”, “module_eval”, “class_variables”, “sqrt”, “dup”, “protected_instance_methods”, “cosh”, “instance_variables”, “public_method_defined?”, “erfc”, “__id__”, “eql?”, “object_id”, “const_set”, “atanh”, “id”, “singleton_methods”, “tan”, “send”, “frexp”, “class_eval”, “taint”, “frozen?”, “instance_variable_get”, “sinh”, “include?”, “private_instance_methods”, “__send__”, “instance_of?”, “private_method_defined?”, “to_a”, “name”, “exp”, “autoload”, “type”, “<”, “protected_methods”, “instance_eval”, “<=>”, “acos”, “display”, “==”, “>”, “ldexp”, “===”, “instance_method”, “instance_variable_set”, “tanh”, “kind_of?”, “extend”, “protected_method_defined?”, “const_defined?”, “>=”, “ancestors”, “atan2″, “to_s”, “<=”, “public_class_method”, “log”, “hash”, “class”, “tainted?”, “instance_methods”, “asin”, “=~”, “private_methods”, “class_variable_defined?”, “hypot”, “nil?”, “untaint”, “constants”, “acosh”, “is_a?”, “autoload?”]

Conversão de numeros

Felizmente a classes Numericas possuem métodos de conversão, ficando assim:

1.to_i - Converte para inteiro

1.to_s - Converte para String

1.to_f - Converte para Float

1.chr - Converte na tabela Ascii

Tem muito mais conversoes possível que voce pode ver na documentação

STRING

Bem agora vamos falr um pouco sobre String

String é uma cadeia de Caracteres, em ruby não, String é um objeto da Classe String.

“Ola eu sou uma String” ou ‘Ola eu sou uma String’

A diferença entre scrings com Aspas dupla e Simples e que Strings com Aspas duplas aceita caractere de formatacao, tipo quebra de linha e outros.

Vamos dar uma olhada nos métodos diponíveis em Strings

“Ola eu sou uma String”.methods

[”%”, “select”, “[]=”, “inspect”, “<<”, “each_byte”, “clone”, “method”, “gsub”, “casecmp”, “public_methods”, “to_str”, “partition”, “tr_s”, “empty?”, “instance_variable_defined?”, “tr!”, “equal?”, “freeze”, “rstrip”, “*”, “match”, “grep”, “chomp!”, “+”, “next!”, “swapcase”, “ljust”, “to_i”, “swapcase!”, “methods”, “respond_to?”, “upto”, “between?”, “reject”, “sum”, “hex”, “dup”, “insert”, “reverse!”, “chop”, “instance_variables”, “delete”, “dump”, “__id__”, “tr_s!”, “concat”, “member?”, “object_id”, “succ”, “find”, “eql?”, “each_with_index”, “strip!”, “id”, “rjust”, “to_f”, “singleton_methods”, “send”, “index”, “collect”, “oct”, “all?”, “slice”, “taint”, “length”, “entries”, “chomp”, “frozen?”, “instance_variable_get”, “upcase”, “sub!”, “squeeze”, “include?”, “__send__”, “instance_of?”, “upcase!”, “crypt”, “delete!”, “detect”, “unpack”, “to_a”, “zip”, “lstrip!”, “type”, “center”, “<”, “protected_methods”, “instance_eval”, “map”, “<=>”, “rindex”, “display”, “any?”, “==”, “>”, “split”, “===”, “strip”, “size”, “sort”, “instance_variable_set”, “gsub!”, “count”, “succ!”, “downcase”, “min”, “kind_of?”, “extend”, “squeeze!”, “downcase!”, “intern”, “>=”, “next”, “find_all”, “to_s”, “<=”, “each_line”, “each”, “rstrip!”, “class”, “slice!”, “hash”, “sub”, “tainted?”, “private_methods”, “replace”, “inject”, “=~”, “tr”, “reverse”, “nil?”, “untaint”, “sort_by”, “lstrip”, “to_sym”, “capitalize”, “max”, “chop!”, “is_a?”, “capitalize!”, “scan”, “[]”]

Com certeza uma das atribuiçoes mais importantes de uma linguagem de programaçao e manipular bem strings ou textos, e ruby com certeza da conta do recado, trabalhar com String e ruby e buito facil e produtivo.

Manipulação de String

a = “bom” => “bom”

a * 3 => “bombombom”

a + ” dia” => “Bom Dia”

a << ” Hacker” => “Bom dia Hacker”, a diference de + e << e que o + gera um novo objeto e o << adiciona no memo objeto.

a.upcase => “BOM DIA HACKER”

a.downcase => “bom dia hacker”

a.capitalize => “Bom dia hacker”

Percorrendo e Alterando uma String

a = “Estudando Ruby” => “Estudando Ruby”
a[0] = “e” => “estudando Ruby”

a[10] => 82, codigo da tabela ascii

a.delete(”R”) => “estudando uby”

a.insert(9,”R”) => “estudando Ruby”

a.reverse => “ybuR odnadutse”

Bem temos em ruby uma maneira simples de concatenar textos

Exite a notação “#{}”

Imagine escrever o texto assim

a = “nome do usuario”

“Bom dia”+ a => “Bom dia nome do usuario”

“Bom dia #{a}” => “Bom dia nome do usuario”

Tem muito mais coisas legais sobre String, mais veremos mais adiante em outro artigo.

ARRAY

Agora vamos ver um pouco sobre Array

Array é um capitulo aparte em Ruby, aqui e que ruby mostra seus diferenciais e torna tudo mais interessante, algo que com certeza voce vai se beneficiar.

a = [] => Cria um array vazio

a = [1,2,3,4,5] => cria e ja popula uma array

Vamos dar uma olha nos methos da classe array

a.methods

[”select”, “[]=”, “inspect”, “<<”, “compact”, “&”, “clone”, “last”, “method”, “public_methods”, “partition”, “delete_if”, “empty?”, “instance_variable_defined?”, “equal?”, “freeze”, “each_index”, “*”, “grep”, “sort!”, “assoc”, “+”, “to_ary”, “methods”, “respond_to?”, “-”, “reject”, “insert”, “reverse!”, “dup”, “push”, “delete”, “instance_variables”, “concat”, “member?”, “__id__”, “|”, “find”, “eql?”, “pack”, “join”, “reverse_each”, “object_id”, “each_with_index”, “collect!”, “rassoc”, “id”, “at”, “compact!”, “singleton_methods”, “index”, “collect”, “send”, “all?”, “reject!”, “flatten”, “slice”, “taint”, “length”, “entries”, “pop”, “instance_variable_get”, “frozen?”, “transpose”, “include?”, “__send__”, “instance_of?”, “detect”, “to_a”, “indexes”, “zip”, “map!”, “uniq”, “type”, “fetch”, “protected_methods”, “instance_eval”, “map”, “<=>”, “values_at”, “rindex”, “display”, “any?”, “==”, “===”, “shift”, “size”, “sort”, “instance_variable_set”, “clear”, “min”, “kind_of?”, “extend”, “find_all”, “to_s”, “indices”, “each”, “class”, “flatten!”, “slice!”, “hash”, “first”, “tainted?”, “replace”, “inject”, “=~”, “private_methods”, “delete_at”, “reverse”, “nitems”, “nil?”, “untaint”, “sort_by”, “unshift”, “max”, “fill”, “is_a?”, “[]”, “uniq!”]

Algumas funções básicas sobre arrays

a = Array.new ou a=[]

a << “Joaquim” => [”Joaquim”]

a.insert(1,”Silva”) => [”Joaquim”,”Silva”]

a.first => “Joaquim”

a.last => “Silva”

a.empty? => false

Bem na verdade a classe array tem muitos métodos, e com certeza tem u que supra sua necessidades, vamos ver um ouco csobre interaçao com array.

a = [4,5,6,7,8,9,10]

a.each {|i| puts i} => 4,5,6,7,8,9,10

Bem existem várias variaçoes de interadores em array, mais acredito que ainda falaremos muito sobre esse assunto, que certamente sera aborado em soutros temas, sendo assuim, ficamos por aqui!

No proximo artigo falaremos sobre Classes, Objetos, Sibgleton, etc.

Comentários

Programando em Ruby I - Orientação a Objetos

Tudo no Paradigma de Programação a Orientada a Objetos resume-se em:

  • Classes
  • Atributos
  • Metodos

Na construção de uma Classe, observamos:

  • Herança
  • Abstração
  • Encapsulamento
  • Polimorfismo

E por fim tudo Acaba em Objeto.

Ou seja, Objetos são Instancias de Classes que forma construídas observado Heranças, Encapsulamento, Polimorfismo e abstração.

Bem! Voce pode estar se perguntando, isso eu ja sabia! Porem vale apena lembrar antes de entrarmos no assunto, pois em alguns momentos esses conseitos serão importantes para esclarecer dúvidas sobre as várias implementações do Paradigma.

Para entendermos melhor vamos analizar a função seguir:

a = 10 + 20

Vamos Ver o que é cada um dos membros dessa função.

“a” - é uma variável

“=” - é um operador

“10″ - é um número

“+” - é um operador

“20″ - é um número

Na primeira olhada na funçao podemos identificar facilmente as partes que a compoem. E bem claro que a função e composta de variáveis, operadores e números.

doidoBem voltemos então as bases da Orientação a Objetos(no começo do artigo), procure por variáveis, operadores e números. Isso mesmo não existe variáveis, operadores e números, na Orientação a Objetos só existem, Objetos compostos de atributos e metodos.

Vamos rever a função, agora Orientado a Objetos

a = 10 + 20

“a” - é um objeto

“=” - é um método do objeto “a”

“10″ - é um objeto

“+” - é um método do objeto “10″

“20″ - é um objeto

Poderia ser escrito assim:

a.=(10.+(20))

Ou seja, tudo em uma linguagem Orientada a Objetos são objetos.

É assim que Ruby implementa a Orientação a Objetos, tudo que é manipulado em um Programa segue a seguinte ordem, Palavra Reservada, Objeto ou Método, não existe nada além disso.

Isso simplifica muito o aprendizado da linguagem, pois aprendendo as palavras reservadas, o resto é tudo objetos, e quando voce precisa fazer alguma coisa com um objeto basta chamar seus métodos e pronto, simples assim.

Vejamos um exemplo de um objeto em ruby

“eu sou um objeto”

Voce deve estar olhando e vendo que isso é uma String, isso mesmo, e também e um objeto, e tem um monte de métodos

Vamos fazer o texto ficar todo em maiúsculo

“eu sou um objeto”.upcase

“EU SOU UM OBJETO”

Notem, nós chamamos o métodos “upcase” diretamente na String. O Objeto é auto-suficiente, contém todos os métodos pertinentes a sí, isso é muito importante, pois libera a linguagem dessas obrigações.

Vejamos os numeros

10

Isso também é um objeto e tem seus métodos por exemplo, o + é um métodos do objeto 10.

10.+(20)

ou 10 + 20

Um pouco mais de filosofia sobre Orientação a Objetos!

Bem voce deve estar pensando, “bem se o + e um método do objeto 10, eu poderia sobrescreve-lo, e fazer o + realizar qualquer coisa!”, Sim isso mesmo voce pode sobrescrever qualquer método e modifica-lo de acordo com suas necessidade.

Ficaria assim:

class MeuNumero < Fixnum
def +(numero)
42
end
end

numero = MeuNumero.new(1)
# Repare como um operador de soma é um método em ruby, ao contrário de outras linguagens
puts numero+2 # 1+2 = 42 ??? Sim, sobrescrevemos o método de soma para retornar 42 sempre.

Bem mais isso não e perigoso, imagine um método que chama + e que realiza uma divisao, poderia confundir o programador. Isso é verdade, porém da muita flexibilidade, e deixa tudo Orientado a Objetos.

Muitas linguagens como o Java deixam os operadores dentro da própria linguagem e nao como um método do objeto numero, e os númentos também são primitivos e não objetos, com isso se diminui a possibilidade de uso errado das coisas, porém deixa a linguagem muito suja e complexa, pois nao sabe quando deve-se chamar um método ou quando deve-se chamar uma função da linguagem, e também deixa o conseito de Orientação a Objetos errado, por isso que java é PseudoOrientada a Objetos, em alguns pontos ela e totalmente procedural, ou seja:

a = 10 + 20

Isso é totalmente procedural pois:

“10″ - é um número(primitivo)

“+” - é uma função da linguagem java

“20″ - é um número(primitivo)

Essa função em java não é nada orientado a objeto.

Bem essa era a parte filosófoca do nosso artigo, mais era importante saber e relembrar as bases do Conseito de Orientação a Objetos, pois serão muito úteis no aprendizado da linguagem Ruby.

No proximo artigo veremos mais a fundo na Linguagem Ruby.

Comentários (2)

Introdução a Linguagem Ruby!

Ruby

O que é a Linguagem de programação Ruby?

Segundo Yukihiro Matsumoto, ou “Matz”, o criador da linguagem Ruby: Mats

“Ruby é uma Linguagem de script interpretada para programação orienteada a objetos, de modo fácil e rápido. Ela tem vários recuros para processar arquivos de texto e para fazer tarefas de gerenciamento de sistemas. Ela é simples, direta ao ponto, extensível e portável. Oh, preciso mensionar, é totalmente livre, o que significa não só livre de precisar pagar para usá-la, mais também a liberdade de usar, copiar, modificar e distribuí-la”

Pensamentos de Mats:
“Para mim o propósito da vida é parcialmente em ter prazer. Programadores às vezes sentem prazer quando podem se concentrar na parte criativa da programação. Então Ruby foi projetado para fazer programadores felizes”

Matz começou a trabalhar no Ruby em 24 de fevereiro de 1993, a primeira versão alpha ficou pronta em dezembro de 1994. Até 1996, ele trabalhou sozinho, quando começou a se formar uma comunidade ao redor da linguagem. A partir daí, apesar de ainda fazer a maior parte do desenvolvimento sozinho, Matz passou a receber fixes e patches da comunidade.

Características da Linguagem

  • Principio da Menor Surpresa
  • Orientada a Objetos “de verdade” (nao como java “pseudoorientada”)
  • Tipagem Dinamica
  • Fortemente Tipada
  • Mixins
  • Clousures ou Blocos
  • Continuations
  • Bindings

Porque usar Ruby?

“Você quer aproveitar a vida, não quer? Se conseguir terminar seu trabalho mais rápido e seu trabalho for divertido, isso é bom, não é? Esse é o propósito da vida, em parte. Sua vida é melhor.Quero solucionar problemas que encontro no cotidiano usando computadores, então preciso escrever programas. Usando Ruby, quero me concentrar nas coisas que faço, não nas regras mágicas da linguagem, como começar com public void alguma coisa alguma coisa para dizer “print hello world”. Apenas quero dizer “print this!”. Não quero todas as diversas palavras mágicas. Quero me concentrar na tarefa. Essa é a idéia básica. Por isso tenho tentado fazer o código Ruby conciso e suscinto.” Mats

A Linguagem Ruby e com certeza uma excelente ferramenta para se fazer um bom programa, ela traz em si, um aglomerados de boas coisas de vária Linguagens, tais como Lisp, Perl, Python, Ada, Smaltalk, Eiffel, e muitas outras. Traz em sim o poder das linguagens Dinamicas, o poder da Orientaçao a Objetos, O Poder dos Mixins, O Poder dos Blocos, O poder dos Continuations e Binfings.

Se vocês esta lendo este artigo é muito provavelmente que ja tenha ouvido falar na linguagem Ruby, talvez esteja se preguntando, “Será que devo estudar e aprender esta linguagem”, com toda certeza o meu conselho é que você estude, mesmo que não tenha nenhuma pretenção de usá-la brevemente. A linguagem Ruby traz em si a proposta de tornar a ato de programar algo prazeroso e agradavél, contexto esses abandonado e despresado pelas outras linguagens, só isso ja bastaria para usá-la, porém, alem de tudo ela traz consigo uma comunidade forte de pensadores, não de somente usários e sim de críticos que tornar o simples processo de aprender Ruby ainda mais edificador e agradável.

Nos proximos Artigos abordaremos as características Tecnicas da Linguagens

Fontes:

www.rubyonbr.org

www.akitaonrails.com

www.ruby-lang.org

simplesideias.com.br

Comentários (1)

O discurso final do filme “O Grande Ditador”

liberade_de_expressao

“Todos nós desejamos ajudar uns aos outros. Os seres humanos são assim. Desejamos viver para a felicidade do próximo - não para o seu infortúnio. Por que havemos de odiar e desprezar uns aos outros? Neste mundo há espaço para todos. A terra, que é boa e rica, pode prover a todas as nossas necessidades.

O caminho da vida pode ser o da liberdade e da beleza, porém nos extraviamos. A cobiça envenenou a alma dos homens, levantou no mundo as muralhas do ódio e tem-nos feito marchar a passo de ganso para a miséria e os morticínios. Criamos a época da velocidade, mas nos sentimos enclausurados dentro dela. A máquina, que produz abundância, tem-nos deixado em penúria. Nossos conhecimentos fizeram-nos céticos; nossa inteligência, empedernidos e cruéis. Pensamos em demasia e sentimos bem pouco. Mais do que de máquinas, precisamos de humanidade. Mais do que de inteligência, precisamos de afeição e doçura. Sem essas virtudes, a vida será de violência e tudo será perdido.

A aviação e o rádio nos aproximou. A própria natureza dessas coisas é um apelo eloqüente à bondade do homem, um apelo à fraternidade universal, a união de todos nós. Neste mesmo instante a minha voz chega a milhares de pessoas pelo mundo afora. Milhões de desesperados: homens, mulheres, criancinhas, vítimas de um sistema que tortura seres humanos e encarcera inocentes. Aos que podem me ouvir eu digo: não desespereis! A desgraça que tem caído sobre nós não é mais do que o produto da cobiça em agonia, da amargura de homens que temem o avanço do progresso humano. Os homens que odeiam desaparecerão, os ditadores sucumbem e o poder que do povo arrebataram há de retornar ao povo. E assim, enquanto morrem homens, a liberdade nunca perecerá.

Soldados! Não vos entregueis a esses brutais, que vos desprezam, que vos escravizam, que arregimentam vossas vidas, que ditam os vossos atos, as vossas idéias e os vossos sentimentos. Que vos fazem marchar no mesmo passo, que vos submetem a uma alimentação regrada, que vos tratam como gado humano e que vos utilizam como bucha de canhão. Não sois máquina. Homens é que sois. E com o amor da humanidade em vossas almas. Não odieis. Só odeiam os que não se fazem amar, os que não se fazem amar e os inumanos.

Soldados! Não batalheis pela escravidão. Lutai pela liberdade. No décimo sétimo capítulo de São Lucas está escrito que o reino de Deus está dentro do homem - não de um só homem ou grupo de homens, mas de todos os homens. Está em vós. Vós, o povo, tendes o poder - o poder de criar máquinas; o poder de criar felicidade. Vós o povo tendes o poder de tornar esta vida livre e bela, de fazê-la uma aventura maravilhosa. Portanto - em nome da democracia - usemos desse poder, unamo-nos todos nós. Lutemos por um mundo novo, um mundo bom que a todos assegure o ensejo de trabalho, que dê futuro à mocidade e segurança à velhice.

É pela promessa de tais coisas que desalmados têm subido ao poder. Mas, só mistificam. Não cumprem o que prometem. Jamais o cumprirão. Os ditadores liberam-se, porém escravizam o povo. Lutemos agora para libertar o mundo, abater as fronteiras nacionais, dar fim à ganância, ao ódio e a prepotência. Lutemos por um mundo de razão, um mundo em que a ciência e o progresso conduzam à ventura de todos nós. Soldados, em nome da democracia, unamo-nos.

Hannah, estás me ouvindo? Onde te encontrares, levanta os olhos. Vês, Hannah? O sol vai rompendo as nuvens que se dispersam. Estamos saindo da treva para a luz. Vamos entrando num mundo novo - um mundo melhor, em que os homens estarão acima da cobiça, do ódio e da brutalidade. Ergue os olhos, Hannah. A alma do homem ganhou asas e afinal começa a voar. Voa para o arco-íris, para a luz da esperança. Ergue os olhos, Hannah. Ergue os olhos.”

Comentários

Recomeçando!

Vamos recomeçar nossos artigos, ainda não sei ate quando vou conseguir, mais sempre me esforçarei para me manter com opinião!

Comentários (1)