読者です 読者をやめる 読者になる 読者になる

配列メソッド>練習3

Ruby 練習

引き続きトライ。

好きな数だけ単語の入力をしてもらい(1行に1単語と入力が続き 最後は空行でEnterのみとする)それをアルファベット順に並び替えて出力するようなプログラムを書いてみましょう。
空行でEnterを押した時つねにプログラムが終了するかなどのテストもおこないましょうね。

配列あたりからコードの順番や優先度がとんちんかんになっていて、いただいたご助言とても参考になります大感謝です。

  • まず大枠をとらえて(好きな数をユーザの入力がある間はそれを繰り返し、Enterになればalphabet順に出力)
  • 行間やその仕様の意図する文脈を感覚的にわかるのも大事。下でもらったご教示の通り
    • ループとイテレータの相違とか
    • いくつかの材料をどの順で書くといいのかとか
    • 『結果としてこうなる』ように意識してその順にコードを書くことなど

コードに触れて読み真似ながら習得するのが早道なのだということ。

このプログラムを自分で書くなら以下の順番で書きます
1. p gets というコードで Enter, foobar などを入力してみる
2. "\n" が入ることがわかるが、これが邪魔なので gets.chomp にする
3. p gets.chomp をループの中に入れる (loop do / end や while true / end) など
4. word = gets.chomp と代入するようにする
5. word が空文字かどうかを調べてループを抜けられるようにする
6. word が空文字じゃないときの処理を書けるように if を書く
  • foobarとは→foobar
    • 同義語:hoge, ホニャララ

空文字(Enter)になったらループを抜けて終わるプログラムができた。

alphabets=[ ]
  word =gets.chomp
  until word ==''
  word = gets.chomp
  puts word
  end
moomin:programmingRuby tomomi$ ruby array.rb
foobar
honyararara
honyararara
hoge   
hoge
foo and bar 
foo and bar


moomin:programmingRuby tomomi$

いのつづき。
うううううう何をどうしたいんだ。咀嚼吸収力が足らない。

alphabets=[]
  word =gets.chomp
  while word !=''
  word = gets.chomp
  
  if word.length ==0
  word = strings  #いやちがうだろう
  puts strings
  
  else
  word.length!=0  #ん?
  end
 end
 
   puts word.sort
moomin:programmingRuby tomomi$ ruby array.rb
hello
domo
arararara

array.rb:7: undefined local variable or method `strings' for main:Object (NameError)

to be continued..