1.作成したプログラム #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- array = [] def bubble(array) kazu = array.length for x in 0 .. kazu -1 #並び換えのかいすう for n in 0 .. kazu -2 #並び換える数字 if array[n] > array[n+1] then k = array[n+1] array[n+1] = array[n] array[n] = k end end end end def display(array) for x in 0...array.length printf("%d ",array[x]) end print("\n") end print"小さい順に並び換えます。\n" while true print"好きな数字を入力してください。(終了はq)" number = gets.chomp! if number == "q" then break end array.push(number.to_i) #arrayの配列にnumberを追加 end print"もとの順番の配列\n" display(array) print"並べ替え後の配列\n" bubble(array) display(array) 2.プログラムの実行結果 小さい順に並び換えます。 好きな数字を入力してください。(終了はq)4 好きな数字を入力してください。(終了はq)8 好きな数字を入力してください。(終了はq)6 好きな数字を入力してください。(終了はq)3 好きな数字を入力してください。(終了はq)7 好きな数字を入力してください。(終了はq)4 好きな数字を入力してください。(終了はq)q もとの順番の配列 4 8 6 3 7 4 並べ替え後の配列 3 4 4 6 7 8 3.プログラムの説明 defの説明 bubble kazuにarray.length を代入する。 次にfor構文で、(参考・基礎プロ1の第4回)変数xに0からarrayの数−1の、一番後ろの前まで、以下の動きを繰り返し、順次代入する。 0からarrayの数−2の、一番後ろの2個前まで、もしarrayのn番目がn+1番目よりもおおき勝った場合、n+1番目を上に移動させたいので、kという空箱にn+1番目を代入し、n+1番目にn番目を代入し、からになったn番目にk(元n+1番目)を代入する。そしてそれをnに順次代入する。 display 変数xに0からarrayの数ぶん、arrayを一つづつ表示するのを繰り返す。 arrayを配列とする。 while文で、numberにユーザーの任意の数字を受け取り、arrayの配列にnumberを追加していく。 最後にdefを呼び出して、結果を表示する。 4.今回はとっても難しかった。西村先生の再帰のページを参考にしたり、別のク ラスの友達にヒントをもらいまくった。しかし、ユーザの任意の数を並びかえると 言うことだったので、参考になるものが少なかった。 バブルソートの構造は理解できたが、 for n in 0.. kazu -2 で、なぜ-2なの か分らない。他にも書き方があると思うので、何とか理解したい。 5.添付 --------------------------------------------------------------------------- 1.作成した図の説明と頑張った点について 「徹夜を悟くん」 悟くんの頭の部分はキーボードでできている。基礎プロは楽しいけど、難しいの で、私はよく徹夜で課題をするので、それをそのままキャラクターにした。作業 始めた瞬間、これは徹夜だと悟るので、その時の私の顔だ。友達もよく徹夜する。 色の組み合わせを、補色どうしにして少し目立つ感じにした。なにかインパクト が欲しかったので、文字を背景に入れこんだ。色を塗るのが難しくて、図形では なく、自由ペンツール(?)で線を太くして色塗りをした。 文字の間隔をつめたかったので、一回文字を図形化して、ばらばらにした。また、 レイヤーを複数作って、細かい編集や構図を決めた。 2.感想 書いていてとても楽しくて、?やっぱり徹夜してしまった。楽しい。 OpenOfficeのDrawを使ったけど、TGIFよりも使いやすいのではないかなと思った。 3.添付(上のと2つあります)