RichardOnRails wrote: > On Jul 28, 5:52 pm, RichardOnRails > <RichardDummyMailbox58... / USComputerGurus.com> wrote: >> On Jul 28, 3:34 pm, "Michael W. Ryder" <_mwry... / worldnet.att.net> >> wrote: >> >> >> >>> RichardOnRails wrote: >>>> On Jul 27, 12:36 pm, Prateek Agarwal <prateek.a... / gmail.com> wrote: >>>>> I am new to Ruby and am still learning some of the basic stuff. >>>>> What's the method name for the Power operation(as in 'a' to the power >>>>> 'b')? >>>>> -- >>>>> Posted viahttp://www.ruby-forum.com/. >>>> Whoops. I forgot to paste in the program (sorry), which follows: >>>> =begin # Note this comments out all lines until the =end >>>> def power(a,b) >>>> result=a**b # "a" should be "a.chomp.to_1"; ditto "b"; >>>> # the "chomp" removes the newline which the user presses >>>> # "result" is unnecessary >>>> result.to_i # does nothing >>>> return result # unnecessary: >>>> # Since we've eliminated everything else, the method >>>> # has only one statement, i.e. the expression >>>> # a ** b with the replacements suggested above >>>> # Ruby returns the last statement's value >>>> end >>>> puts "a=" # use printf rather than puts (which appends a newline) >>>> a=gets >>>> a.to_i # does nothing; "a" does not get change, and the >>>> result >>>> # is discarded >>>> puts "b=" # same as "a" >>>> b=gets >>>> b.to_i # ditto as for "a" >>>> c=power(a,b) # numeric result assigned to c, probably an integer but >>>> # not necessarily >>>> puts "c=#{c}" # These final two lines might be more elegantly >>>> # written in Ruby as suggested below >>>> =end >>>> # The result of all these changes are the following 8 lines >>>> # (plus blank lines); save them, say, as: Test.rb >>>> # and run them as: ruby Test.rb >>>> def power(a,b) >>>> a.chomp.to_i**b.chomp.to_i >>>> end >>>> printf "a=" >>>> a = gets >>>> print "b=" >>>> b = gets >>>> puts "%d**%d = %d" % [a, b, power(a,b)] >>> As an "improvement" to your code I would take the chomp and to_i out of >>> the power function to make it more generic and add them after the gets. >> Hi Michael, >> >> Your point is well taken. >> >> I did that for a newbie to point the stuff that's needs to be done to >> get things working as he intends. He's not likely to look up "to_i" >> to learn all its machinations. >> >> In fact, there's one more that I would have thrown in, had I >> remembered it: strip. >> >> I do that in string-handlers I write: >> 1. in part, to remind myself what to_i would do for me automatically >> 2. in part, to guarantee that that stuff gets done even if new >> versions of Ruby eliminate some helpful feature. >> 3. in part, because I might decide to extend a program using the input >> string as though it contained only the digits that to_i revealed, >> forgetting that a lot of "baggage" had been removed. >> >> Perhaps having taught Computer Technology at AU in DC for a decade >> gives me a different perspective than production program with a lean- >> and-mean code perspective. >> >> Do I make any sense? >> >> Best wishes, >> Richard > > Hey Michael, > > After posting my reply to you, I re-read you post and realized I > misinterpreted it. I favor putting all that baggage in the OP's > "power" routine rather than having to remember that stuff when writing > each invocation of "power". > > Does that make any sense? > > Best wishes, > Richard The reason I stripped out the conversions from the power function is to allow its use with either integers or floats. Plus I prefer to convert input to it's desired form as soon as possible, rather than having to remember to convert it everywhere it is used. If a is an integer there is no need to store it as a string with \n on the end and then having to remember to chomp and to_i it everywhere you need it. What if the OP wanted to use a and b later such as showing the power of a and b and then the power of a+1 and b+1? He would have to again chomp the variables and convert them to integers, add one to each, then convert them back to strings before feeding them to the power function.