One of the popular exercises I set on our Perl courses goes something like ...
Write a program to ask the user to enter four numbers each between the value of 1 and 6. If the user enters a number below 1 or over 6, ask him to enter that number again. If the user enters the word END, stop reading numbers.
Print out the count, average and total of all the numbers entered. Take care to print an appropriate error message for the average if no numbers were entered.
and I then add
Please try to do the following exercise WITHOUT using the words "while" or "if" in your program. which encourages the use of a
for loop, lazy operators, and constructs such as
unless and
? ... :, even though in real life you would use at lead one
if for this task.
I set the same exercise in Ruby earlier today - unusually, this week's group is not converting from another language such as Perl where such constructs are familiar - they've done a little C and Java, where the options are limited and I wanted to gently encourage them to try these new and powerful facilities. Sample program -
[here] and a comparative example in Perl
[here].
What do I notice as I look at the two programs? A remarkable similarity in the concepts. A simplification in Ruby in terms of not having to think if I'm comparing strings and numbers, but a need in Ruby to convert with
.to_s and
.to_i methods. The lack of $ on local variable names in Ruby, which means that I can't just drop a variable into a string to output it - I need to use
#{...}. And the use of methods in Ruby such as
.chomp as it's so much an object oriented language. With all those changes, every single line of code is different ...
If you want to learn Perl, take a look at our
Perl Courses. If you want to learn Ruby, take a look at our
Ruby Courses. In both cases, we've options to help you learn whether you've never programmed before, if you're experinced in one of the pair and converting, or - as is more usual - if you're somewhere between.
(written 2012-02-21, updated 2012-02-25)
24c9
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q102 - Choosing your language [3785] Programming languages - what are the differences between them? - (2012-06-27)
[3764] Shell, Awk, Perl of Python? - (2012-06-14)
[3558] Python or Lua - which should I use / learn? - (2011-12-21)
[3169] Rekeying a table - comparison in #Ruby #Perl and #Python - (2011-02-14)
[2866] Ruby - how does it compare and where is it the right language? - (2010-07-11)
[2700] The same very simple program in many different programming languages - (2010-03-31)
[2536] All the Cs ... and Java too - (2009-12-13)
[2535] When should I use Java, Perl, PHP, or Python? - (2009-12-13)
[2507] Admission - (2009-11-19)
[2048] Learning to program in PHP, Python, Java or Lua ... - (2009-02-19)
[2001] I have not programmed before, and need to learn - (2009-01-19)
[1990] Speaking all the languages - (2009-01-12)
[76] Learning to program in - (2004-10-07)
R104 - Ruby - Control Structures [3769] Muttable v immutable and implications - Ruby - (2012-06-20)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2471] A short form of if ... then ... else - (2009-10-23)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[1891] Ruby to access web services - (2008-11-16)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[995] Ruby's case - no break - (2006-12-17)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
P206 - Perl - More Loops and Conditionals [3914] While, for, foreach or something else to loop. - (2012-11-06)
[3398] Perl - making best use of the flexibility, but also using good coding standards - (2011-08-19)
[2972] Some more advanced Perl examples from a recent course - (2010-09-27)
[2967] Multiway branches in Perl - the given and when syntax - (2010-09-22)
[2832] Are you learning Perl? Some more examples for you! - (2010-06-27)
[2824] A pint of Black Rat, and a lazy barman - (2010-06-25)
[2817] Setting a safety net or fallback value in Perl - (2010-06-19)
[2815] switch and case, or given and when in Perl - (2010-06-17)
[1825] Question Mark - Colon operator (Perl and PHP) - (2008-10-08)
[1191] Smart English Output - via PHP and Perl ? : operator - (2007-05-18)
[657] The ternary operator in Python - (2006-03-25)
[299] What - no switch or case statement? - (2005-05-03)
[138] Perl - redo and last without a loop - (2004-12-02)
579d
Some other Articles
Some TestWise examples - helping use Ruby code to check your web site operationLoading Ruby classes - where does Ruby look?Matching regular expressions, and substitutions, in RubyRuby v Perl - a comparison examplelists and struct::list in Tcl - Introduction to struct::list and examplesThe fileutil package and a list of file system commands in TclBus top - colours of LondonHistoric documents for WiltshireTcl - dicts - a tutorial and examples