Ruby勉強会(第1回) 2006/06/29 竹内豪.

Slides:



Advertisements
Similar presentations
わんくま同盟 福岡勉強会 #4 yield について るーごん. わんくま同盟 福岡勉強会 #4 自己紹介 日本一人口が少ない県に住んでいます。 一昨年まで、ちょっと福岡に住みました。 仕事は主に dbMAGIC 。 プログラミング言語はよく分かりません。 好きなもの ポケモン、ファイブマン、ジェットマン、
Advertisements

P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
なぜ今Pythonか? Pythonをお薦めする18の理由
2007/12/12 ema.
JavaScript プログラミング入門 2006/11/10 神津.
プログラミング言語としてのR 情報知能学科 白井 英俊.
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
アルゴリズムとプログラミング (Algorithms and Programming)
Lightweight Language Weekend ls-lRシェル
Ruby Extended Library Howto
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
最適化ソルバーのための Python言語入門
プログラミング序論演習.
Ruby Extended Library Howto
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
第6章 2重ループ&配列 2重ループと配列をやります.
ビューとコントローラ.
第20章 Flyweight ~同じものを共有して無駄をなくす~
ピカチュウによる オブジェクト指向入門 (新版)
PHPの基礎と開発手法 Based on PHP5
スクリプト言語を用いたPHITSの連続実行
データベース設計 第9回 Webインタフェースの作成(1)
第10回 プログラミングⅡ 第10回
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
Cプログラミング演習.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
MATLAB測位プログラミングの 基礎とGT (2)
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング言語入門.
二分木のメソッド(続き).
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
プログラミング基礎B 文字列の扱い.
プログラムの制御構造 配列・繰り返し.
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
ソフトウェア制作論 平成30年11月21日.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
アルゴリズムとデータ構造 2011年7月8日課題の復習
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
ファイルの読み込み #!/usr/bin/env perl #Perlスクリプトの指定 open(FILE, "food.txt");
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
アルゴリズムからプログラムへ GRAPH-SEARCH
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
暗号技術 ~JAVAプログラム②~ (6週目)
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
高度プログラミング演習 (11).
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
プログラミング 4 文字列.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング序論演習.
君ならどうする – ls-lRシェル Python編
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
情報処理Ⅱ 第3回 2004年10月19日(火).
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
情報処理3 第4回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

Ruby勉強会(第1回) 2006/06/29 竹内豪

Windows XPでRubyを使う 一番お気軽な方法 irbを使う バイナリをダウンロードしてきて解凍http://www.garbagecollect.jp/ruby/mswin32/ja/ フォルダを適当な名前にリネームしてCドライブ直下に移動(例:rubyにリネームしてC:\rubyに移動) PATHを通す(PATH=ほげほげ;C:\ruby\bin;とか) irbを使う http://jarp.does.notwork.org/win32/からreadline.dllをダウンロードしてきて、binフォルダと同じ場所に入れる

Rubyはオブジェクト指向言語である #新しいオブジェクトの生成 song1 = Song.new(“Ruby Tuesday”) song2 = Song.new(“Enveloped in Python”) #定数もオブジェクトとして扱う “gin joint”.length →9 “Rick”.index(“c”) →2 -1942.abs →1942 sam.play(aSong)→”duh dum, dum de dum …” Java → number = Math.abs(number) Ruby→ number = number.abs

Rubyの基本(1) #メソッドの作り方 def sayGoodnight(name) result = “Goodnight, “ + name return result end #文の終わりにセミコロンはつかない puts sayGoodnight(“john-Boy”) puts sayGoodnight(“Mary-Ellen”)

Rubyの基本(2) #ここらへんはPerlとだいたい同じ #右から順に評価されたり、カッコ省略したり puts sayGoodnight “John-Boy” puts sayGoodnight (“John-Boy”) puts(sayGoodnight “John-Boy”) puts(sayGoodnight(“John-Boy”)) puts “And Goodnight,\nGrandma”

Rubyの基本(3) #ダブルクオート内での変数の評価 def sayGoodnight(name) result = “Goodnight, #{name}” return result end “Goodnight, #{name}”

Rubyの基本(4) 先頭文字について ローカル変数、メソッドの引数、メソッド名はすべて小文字またはアンダースコア(_)で始める グローバル変数にはドル記号($)をつける インスタンス変数にはアットマーク(@)をつける クラス変数には2つのアットマーク(@@)を先頭につける クラス名、モジュール名、定数は先頭文字を大文字にする

配列とハッシュ(1) #undefじゃなくnil a = [1, ‘cat’, 3.14 ] a[0] → 1 a[2] → nil a → [1, “cat”, nil] empty1 = [] empty2 = Array.new

配列とハッシュ(2) a = %w{ ant bee cat dog elk } a[0] → “ant” a[3] → “dog” instSection = { ‘cello’ => ‘string’, ‘clarinet’ => ‘woodwind’, ‘drum’ => ‘percussion’, ‘oboe’ => ‘woodwind’, ‘trumpet’ => ‘brass’, ‘violin’ => ‘string’, }

配列とハッシュ(3) instSection[‘oboe’] → “woodwind” instSection[‘cello’] → “string” instSection[‘bassoon’] → “nil” #未定義値のデフォルト設定 histogram = Hash.new(0) histogram[‘key1’] → 0 histogram[‘key1’] → historgram[‘key1’] + 1 histogram[‘key1’] → 1

制御構造(1) #ブロックはendで終わらせる If count > 10 puts “Try again” elsif tries == 3 puts “You lose” else puts “Enter a number” end

制御構造(2) while weight < 100 and numPallets <= 30 pallet = nextPallets <= 30 weight += pallet.weight numPallets += 1 end if radation > 3000 puts “Danger, Will Robinson”

制御構造(3) puts “Danger, will Robinson” if radiation > 3000 while square < 1000 square = square*square end square = square*square while square < 1000

正規表現(1) #パッと見Perlと同じっぽい /Perl|Python/ /P(erl|ython)/ /\d\d:\d\d:\d\d/ /Perl\s+Python/ /Ruby (Perl|Python)/

正規表現(2) if line =~ /Perl|Python/ puts “Scripting language mentioned: #{line}” end #Stringクラスの置換メソッド(substitute) line.sub(/Perl/, ‘Ruby’) line.sub(/Python/, ‘Ruby’)

ブロックとイテレータ(1) #両方ともブロック {puts “Hello” } do club.enroll(person) person.socialize end

ブロックとイテレータ(2) #このyieldというのがよくわからない^^; def callBlock yield end callBlock { puts “In the block” } 実行結果 In the block

ブロックとイテレータ(3) def callBlock yield “hello”, 99 end callBlock { |str, num| …} a = %w( ant bee cat dog elk ) a.each { |animal| puts animal}

ブロックとイテレータ(4) def each for each element yield(element) end [ ‘cat’, ‘dog’, ‘horse’ ].each do |animal| print animal, “ – “

ブロックとイテレータ(5) #組み込みのイテレータ 5.times { print *** } 3.upto(6) {|i| print i } (‘a’..’e’).each {|char| print char }

読み書き(1) #おなじみprintf printf “Number: %5.2f, String: %s”, 1.23, “hello” #1行キーボードから入力を読み込む line = gets print = line

読み書き(2) while gets if /Ruby/ print end ARGF.each { |line| print line if line =~ /Ruby/ }

参考文献 達人プログラマーズガイド プログラミングRuby Rubyインストールガイド デビット・トーマス+アンドリュー・ハント 著 デビット・トーマス+アンドリュー・ハント 著 田和 勝 訳 まつもとゆきひろ 監修 ピアソン・エデュケーション Rubyインストールガイド http://www.ruby-lang.org/ja/install.cgi