:: Topo :: doCoding :: Linguagens de Programação :: Ruby :: FORPC101 ::
Week-01
Apesar dos textos referirem-se sobretudo à versão 1.8.6 do Ruby (MRI) também foi dito que todo o código é compatível com a versão 1.9.
É mencionado usar-se como ambiente de aprendizagem o Windows, com o Ruby - One-Click Installer - que por omissão vem como o SciTE.
Aprendizagem
A cópia do código das lições para o Geany - ou outro editor - vem com cada linha prefixada com ”# ”, o que é uma chatice para remover. Isto porque os comentários Ruby também começam com o caracter ”#”. Além disso, aconteceu em algumas ocasiões, em vez de ”# ” vir prefixada cada linha com o número de linha, alinhado à esquerda.
- Para já, o Ruby parece-me uma boa linguagem orientada a objectos, sem as “limitações” ou “constrangimentos” de outras - tais como C++ ou Java. Tudo são objectos, incluindo números. E sendo uma linguagem “aberta” é possível - e fácil - extender mesmo as classes core da linguagem.
- Com Ruby não tenho problemas em esquecer-me de terminar um statement (”;”) - nem devo, sequer - e também posso quebrar uma linha comprida em várias “sub-linhas” (“\”).
- A precedência de operadores é algo complexa, mas rapidamente entendida. É um bom ponto a favor da linguagem mas também pode induzir “novatos” em erro.
- A classe String é muito poderosa e flexível. Uma das melhores, pelo menos é a melhor que conheço, e tal como em Java são “mutáveis”.
- Os operadores de incrementar (++) e decrementar (–) não estão disponíveis em Ruby.
- printf() - idêntico a C ou a Perl. Muito bom.
- Equivalente loop for:
step
1.step(100, 10) {|i| print i, " " }
- local_variables() - imprime as variáveis de scope local.
- system() - para executar comandos “shell”. Muito bom.
Exercícios
Exercício 1
exercise-01.rb
=begin What do you think is the output of this program? Why? Goal: Understanding operator precedence and association. =end y = false z = true x = y or z puts x # outputs false, because "=" (assignment) has higher precendence than "or" (x = y) or z puts x # outputs false x = (y or z) puts x # outputs true, because "(...)" has the highest precedence. x = y || z puts x # outputs true, because "||" has higher precendence than "=" (assignment).
Exercício 2
exercise-02.rb
=begin The following program prints the value of the variable. Why? Read up the Ruby documentation and try and find the answer. =end my_string = 'Hello Ruby World' def my_string 'Hello World' end puts my_string # outputs Hello Ruby World puts my_string() # outputs Hello World
Exercício 3
exercise-03.rb
=begin Read up the sprintf documentation and find out the output being printed by this Ruby code. Goal: To realize that the Ruby documentation is at times incomplete or not clear. =end puts "%05d" % 123 # outputs 00123: number formatted with 5 digits and padded left with zero's. puts "%05d" % 12.3 # outputs 00012: decimal part is disregarded when printing an integer.
Exercício 4
exercise-04.rb
=begin Write a Ruby program that displays how old I am, if I am 979000000 seconds old. Note: To format the output to say 2 decimal places, we can use the Kernel's format method. For example, if x = 45.5678 then format("%.2f", x) will return a string 45.57 =end # age_in_years = age_in_seconds / 60 / 60 / 24 / 365 age_in_seconds = 979000000 age_in_minutes = age_in_seconds / 60 age_in_hours = age_in_minutes / 60 age_in_days = age_in_hours / 24 age_in_years = age_in_days / 365 puts 'I am ' + format("%.2f", age_in_years) + ' years old...' # Without an explicit Float all calculation are done with integers. age_in_years = age_in_days / 365.00 puts 'I am ' + format("%.2f", age_in_years) + ' years old...' # With an explicit Float the result is more accurate.
Exercício 5
exercise-05.rb
=begin Write a Ruby program that tells you how many minutes are there in a year (do not bother right now about leap years etc.). =end # minutes_in_year = 365 * 24 * 60 days_in_year = 365 hours_in_days = days_in_year * 24 minutes_in_days = hours_in_days * 60 puts 'There are ' + minutes_in_days.to_s + ' in a year'
Questionário
Referências
Considerações
Pontos Altos
Esta secção regista o que considero serem os pontos altos da linguagem Ruby quando comparada com outras linguagens que conheço.
Pontos Baixos
Esta secção regista o que considero serem os pontos baixos da linguagem Ruby quando comparada com outras linguagens que conheço.