社会人から始めたプログラミング

プログラミング、エンジニアに関することでの備忘録、シェアしたい情報などを共有するためのブログです。

sortのalgorithm ソートのアルゴリズム!

「まずはソートのアルゴリズムをやってみな!」

そんなことを言われたのは1ヶ月前ぐらいのこと。

 

これは、アメリカに住むプログラミングのお仕事をしている友達に、

 「プログラミング始めるよ!何から始めたらいい?」

って言ったら返信で返ってきた言葉。   

 

 「んー…よくわからない笑、わかったら送るね!」

 

そう返信しておいた。

まぁ初心者にこれがいいのか悪いのかはわからないが、

とにかく1ヶ月前の自分にはさっぱりだった。。笑

 

でもたまたま学習してたら、一つわかったらここで発表!

 

ルビーの言語で、ソート(小さい数字順に配列の中身を入れ替えてくれる)メソッド

を書く機会があったので、こちらに載せます。

 

ソートのアルゴリズム

 

# < Description >
# if you want to try other scores, please change score points yourself.
# ex) score = [45,7,38,90,489,123]
# And try sort_method.rb on your terminal.

score = [3,1,4,6,3,7,9,90,1,4,7,9,0,9,5] def score.sort_method puts sort_score_array = [] self.each do |score| index = 0 sort_score_array.each do |sort_score| if sort_score < score index += 1 end end if index == sort_score_array.length sort_score_array << score else i = 0 new_sort_score_array = [] sort_score_array.each do |sort_score| if i == index new_sort_score_array << score end new_sort_score_array << sort_score i += 1 end sort_score_array = new_sort_score_array end end puts sort_score_array end score.sort_method

(SyntaxHighlighter でこのコードに行数がついた表現をしてくれるように設定できるよ!)

 

これで配列の中にある数字を小さい順に並び替えてくれるよ!

 

ポイントは、

①最初のif文のところで何番目に数字が大きいか確認する。

②空の配列を準備して、小さい順番通りに入れていく。

 

です!!

 

これを理解するには、全くプログラミングをやってない段階からだと

・eachメソッドが何をしているのか。

・i += ってなんなのか

・if文はなんなのか

・メソッドの定義ってクラスメソッド、インスタンスメソッド、特異メソッドってあるけどなんなのか

・配列ってなんなのか

・<<とか==とか[ ]ってなんなのか

 

ということが必要そうだ…

少しは理解できて進めたようだ。

 

うん、できたときとか、わかった時とか、

考えてる時もなかなか楽しくなってきた。

 

やっぱ少しずつできるようになると楽しいね!

 

 

としさん

 

「インスタンスオブジェクト」と「クラスオブジェクト」

インスタンスとクラスのオブジェクト。

 

一体なんなのか。

 

仮に車に例えると、

クラスは型

インスタンスは出来上がった車、それ自体。

 

そんな風に言われていたりしますね。

まだ実態はつかめていなけれど、

 

でも先へ進むためには使わなければならない。

そんな時は使い分けをどうするか。

 


インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) | mah365

いいサイトがありましたのでご覧ください。

 

本日は以上。

お疲れ様です。

 

としさん

 

 

 

初プルリクエスト(PR or Pull Request)

こんばんは。

 

ブログ2日目。

としさんです。

そうだな、毎日10分ぐらいでも書くことにしよう。

うん。そうしよう。

 

ただいま主にRuby on Railsで開発に参加中!

実は一昨日「初めてプルリクエスト」を実行。

 

メール機能周りをメインのリポジトリに取り込んでもらえるように要請。

 

ーーー

あ、まだリポジトリの正確な意味は把握していないが、

まあとにかくそこでメインの開発が進んで、データが蓄積されていくのです。

 

で、その場所はGitHubっていうサイトをみんな使っているらしいので、

私たちもそこでやっております。

ーーー

 

開発を管理しているメインのリポジトリで、

自分がいじった機能をチェックしてもらい、

本体の機能として取り込むわけです。

 

結果。

「修正の嵐」

 

RSpecでのテストも、メソッドも見直し。

チェックしていただいたのでより効率的なものがかけたりしたのでよかったです。

 

ということで、

<Pull Request前のチェック表>

□ インデントを揃える。(インデントは半角で2つのスペースと教わったよ)

□ <Discription>は英語で表記(これは今の開発環境を整えるためで他では違うだろうな) + 使う人にわかりやすいように必要な場合に書いておく

□ 変数名に冠詞は使わない。意味がわかるような変数を使う。

□ 変数の名前が二つの単語を使っている場合「 _  」アンダーバーを使う。

    ex) ○ reminder_mail  ←→  × remindermail

□ commitの名前も英語(これも今の開発環境を整えるためだから他のシチュでは日本語でもいいですね)、そして、最初は大文字、命令形で。

    ex) Fix a typo of a missing letter of variable name by adding it

参照:コミットメッセージの書き方:http://www.clear-code.com/blog/2012/2/21.html

 

 

これからどんどん増えてくだろうな、うん。

 

そういえば、corverageというものがあるということを教えていただいた。

Ruby on Rails でアプリ作るとだいたい備わってるのかな、

appの中にあるフォルダの中のcoverage/index.htmlていうのがあるので、テストのときに、メソッドがしっかり動いているかの目安となるものが見れるみたいです。

 

「0~100%」の間で表記されます。

 

ま、あくまでも自分の思った通りに動いているかというよりは、

そのメソッドが構文として正しいかとか、エラーが出ていないかっていうのが重視されている模様。

 

 

本日は以上。

そのうちメソッドなども載せていくでしょう。

 

としさん

 

 

p.s.

はてなブログ、「見たまま編集」のせいか、

ペーストした時の止まり具合がひどい…。。。