Submit Search
Upload
Ruby で学ぶプログラミング入門
•
14 likes
•
2,982 views
R
Ryota Kameoka
Follow
2015年4月25日に CAMPHOR- HOUSE にて行われた「Ruby で学ぶプログラミング入門」の発表スライドです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 70
Download now
Download to read offline
Recommended
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
AtCoder Inc.
プログラミング入門
プログラミング入門
Kenji Azami
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
kaetsu.js #02
kaetsu.js #02
Noritada Shimizu
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
Kazuyuki Mori
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料
考司 小杉
Tokyo.R #67 初心者セッション3
Tokyo.R #67 初心者セッション3
Nozomi Miyazaki
Recommended
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
AtCoder Inc.
プログラミング入門
プログラミング入門
Kenji Azami
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
kaetsu.js #02
kaetsu.js #02
Noritada Shimizu
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
Kazuyuki Mori
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料
考司 小杉
Tokyo.R #67 初心者セッション3
Tokyo.R #67 初心者セッション3
Nozomi Miyazaki
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
AtCoder Inc.
CoffeeScript
CoffeeScript
Ryo Maruyama
Nagoya.R #12 入門者講習
Nagoya.R #12 入門者講習
Yusaku Kawaguchi
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
京大 マイコンクラブ
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
Yossy Taka
JavaScript Basic 01
JavaScript Basic 01
Yossy Taka
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
Rubyist生活に欠かせないブロック構文の話
Rubyist生活に欠かせないブロック構文の話
Kohei Taniguchi
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
SAKAUE, Tatsuya
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
JavaScript Basic 02 jQuery
JavaScript Basic 02 jQuery
Yossy Taka
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
More Related Content
Similar to Ruby で学ぶプログラミング入門
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
AtCoder Inc.
CoffeeScript
CoffeeScript
Ryo Maruyama
Nagoya.R #12 入門者講習
Nagoya.R #12 入門者講習
Yusaku Kawaguchi
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
京大 マイコンクラブ
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
Yossy Taka
JavaScript Basic 01
JavaScript Basic 01
Yossy Taka
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
Rubyist生活に欠かせないブロック構文の話
Rubyist生活に欠かせないブロック構文の話
Kohei Taniguchi
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
SAKAUE, Tatsuya
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
JavaScript Basic 02 jQuery
JavaScript Basic 02 jQuery
Yossy Taka
Similar to Ruby で学ぶプログラミング入門
(13)
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
CoffeeScript
CoffeeScript
Nagoya.R #12 入門者講習
Nagoya.R #12 入門者講習
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
JavaScript Basic 01
JavaScript Basic 01
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
Rubyist生活に欠かせないブロック構文の話
Rubyist生活に欠かせないブロック構文の話
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
JavaScript Basic 02 jQuery
JavaScript Basic 02 jQuery
Recently uploaded
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Recently uploaded
(9)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Ruby で学ぶプログラミング入門
1.
Ruby で学ぶ プログラミング入門 2015-04-25 Ryota Kameoka @
CAMPHOR- HOUSE
2.
CAMPHOR- のご紹介 • 京都のIT系学生コミュニティー •
プログラマーとデザイナーが集まる場所 • 京大, 同志社, 京都精華, などなど • camph.net
3.
IPSJ77Now
4.
びわこ花火ガイド
5.
イベントの様子
6.
camph.net
7.
スピーカー紹介 • 亀岡 亮太
(@ryota-ka) • 京都大学経済学部 B4 • 11才でプログラミングに触れる • ちゃんとやってるのはここ1年ぐらい • 詳しくは → http://ryota-ka.me/
8.
今日の目標 • 「プログラミングおもしろい」と気付く • 「プログラミング向いてないな」気付く •
プログラミングの基本的な考え方を知る • ピザを食べて友達を増やして帰る • なにかひとつでも持って帰ってもらえれば!
9.
わからなくなったら • 恥ずかしがらずに近くの人に聞きましょう! • プログラミングできる人も混ざってます •
今のうちに隣の人と仲良くなりましょう
10.
さて, さっそくですが プログラミング #とは
11.
プログラミング #とは プログラミング言語(プログラミングげんご) またはプログラム言語(プログラムげんご)とは、 コンピュータに対する一連の動作の指示を記述す るための人工言語で、コンピュータ言語の一カテ ゴリである。この一連の指示をプログラムと呼び、 それを記述することをプログラミングと呼ぶ。 (出典 :
Wikipedia「プログラミング言語」)
12.
❓❓❓
13.
プログラミング #とは (要約) •
人間がコンピューターに行ってほしい操作の手順を伝える • 曖昧な自然言語を使うのは難しい • 画面に Hello と表示してください • Hello と画面に表示しろ • コンピューターに命令する専用の簡単な言語(プログラミン グ言語)を作って, それを用いて手順を伝える
14.
プログラミング言語 • AWK • BASIC •
Brainfuck • C • C++ • Clojure • COBOL • Erlang • Objective-C • OCaml • Pascal • Perl • PHP • Prolog • Python • R • Ruby • Rust • Scala • Smalltalk • Swift などなど • FORTRAN • Go • Haskell • HSP • Java • JavaScript • LISP • Lua
15.
プログラミング言語 愛を語るならフランス語 文学を語るなら英語 科学計算なら FORTRAN iPhone アプリなら
Swift それぞれの言語に得意分野がある
16.
Ruby ができることの例
17.
今日作るもの 英単語クイズゲーム
18.
実際に見てみよう
19.
問題を分解してみる
20.
文字を表示する 文字の入力を受け取る 正解かどうかを判定する 正解率を計算する • 辞書を用意しておく (apple はりんご,
dog は犬, book は本, …) • 登録されている単語の数だけ出題を繰り返す
21.
はじめてみよう👍 prog-8.com
22.
画面に文字を表示する
23.
画面に文字を表示する • puts “表示させたい文字列” •
文字列は (Shift+7) または (Shift+2) で囲む
24.
計算してみる • × じゃなくて
* • ÷ じゃなくて / • % は余りを求める puts 1 + 1 # => 2 puts 3 * 4 # => 12 puts 32 / 4 # => 8 puts 27 % 5 # => 2
25.
オブジェクト • 今日はあまり深く考えない! • 理屈より具体的な例を見てみよう
26.
オブジェクトとメソッド • “Progate”.length # 結果
: 7 もしもし “Progate” さん あなたの文字数は何文字ですか?
27.
オブジェクトとメソッド • 3.14.round # 結果
: 3 もしもし 3.14 さん あなた四捨五入したらどうなりますの?
28.
オブジェクトとメソッド • puts “ABC”.reverse #
答え : 画面に “CBA” と表示される じゃあこう書いたら何が起こるでしょう? もしもし “ABC” さん あなた逆から読んだらどうなりますの? • puts “CBA”
29.
変数 • データを保存しておく入れ物のようなもの x =
80 # x に 80 という値を保存 puts x + 20 # 画面に 100 と表示 x = 100 # 値を書き換えられる puts x / 50 # 画面に 2 と表示
30.
注意 • = は等式ではありません!!!!! “x
= 80” は, 「xという変数に80という値を保存しておく」 という意味です
31.
変数の再代入 • 変数の値は書き換えられる x =
100 x = x + 50 puts x # なんと表示されるでしょう? # 答え : 150 100
32.
入力された文字を受け取る • puts :
画面に文字を出力する • gets : キーボードから文字を読み取る
33.
オブジェクトの型 • 10 +
20 => 30 • “プログラミング“ + “入門” => “プログラミング入門” • 10 + “個のりんご” => ??? _人人人人人_ > エラー <  ̄Y^Y^Y^Y ̄
34.
そもそも • 10 +
“個のりんご” 数字 文字列+ => 足せるわけねえ💢💢 • 数字 + 数字 は OK • 文字列 + 文字列 も OK • 数字 + 文字列 は ダメ🙅
35.
型の変換 • 10.to_s +
“個のりんご” 10を 文字列(string)にしたらどうなるの? => “10” + “個のりんご” => “10個のりんご” ちゃんと足せました👏👏
36.
真偽値 • ある条件(命題)が正しいか, 正しくないかを表す値を 「真偽値」と呼ぶ •
正しいことを true, 正しくないことを false で表す • 高校英語の正誤問題, T とか F とかで答えましたよね?
37.
真偽値 • 30 >
20 (30が20より大きいか) => true (正しい) • 20 == 10 (20は10と等しいか) => false (正しくない)
38.
制御構造 - if •
条件によって処理を分ける (もしなら…する) 例) もし100円以上持っていれば 100円払ってりんごを買う
39.
100円を払う りんごを1つ手に入れる 100円以上持っている? Yes😄 No😫
40.
制御構造 - if •
条件によって処理を分ける (もしなら…する) もし100円以上持っていれば 100円払ってりんごを買う if money >= 100 money -= 100 apple += 1 end
41.
制御構造 - if money
= 120 if money >= 100 money -= 100 apple += 1 end money = 80 if money >= 100 money -= 100 apple += 1 end → 何も起こらない 正しい!true! 正しくない!false! → 実行される
42.
制御構造 - else •
もし(if)100円持っていれば → 100円払ってりんごを買う • そうでなければ(else) → ぼくはかなしい😢
43.
100円を払う りんごを1つ手に入れる 100円以上持っている? Yes😄 No😫 かなしい
44.
制御構造 - else if
money >= 100 money -= 100 apple += 1 else puts “お金が足りないのでつらい” end
45.
制御構造 - elsif •
もし(if)3,000円持っていれば → 3,000円払ってメロンを買う • そうでなくてもし(else + if)100円持っていれば → 100円払ってりんごを買う • そうでなければ(else) → ぼくはかなしい😢
46.
3,000円を払う メロンを1つ手に入れる 3,000円以上持っている? Yes😄 No😫 かなしい じゃあ100円以上持っている? 100円を払う りんごを1つ手に入れる No😂Yes😊
47.
制御構造 - elseif if
money >= 3000 money -= 3000 melon += 1 elsif money >= 100 money -= 100 apple += 1 else puts “お金が足りないのでつらい” end
48.
論理演算子 • 条件 P,Q
(e.g. x > 100) • P && Q => P かつ Q • P || Q => P または Q
49.
配列 • x, y,
z じゃなくて a1, a2, a3 • 添字は1じゃなくて0から • [‘Alice’, ‘Bob’, ‘Charlie’]
50.
配列 names = [‘Alice’,
‘Bob’, ‘Charlie’] puts names.size # => 3 names.push(‘Dave’) puts names[0] # => ‘Alice’ puts names[1] # => ‘Bob’
51.
配列のメリット • 変数がムダに増えない • 扱うべき変数の数を人間が知らなくてもいい •
データ自体が知っているので (size) • 他にもたくさん(割愛)
52.
ハッシュ • 配列 : names[0]
= ‘Alice’ names[1] = ‘Bob’ • ハッシュ : words[‘apple’] = ‘りんご’ words[‘dog’] = ‘犬’
53.
制御構造 - while •
条件が真である間ループを繰り返す • 例) 卒業単位が うまで1年間を繰り返す
54.
124単位以上持っている? 授業を受ける 単位を取る Yes😄 No😫 卒業🍣
55.
制御構造 - while credit
= 0 year = 1 while credit < 124 do puts “授業を受ける” year += 1 credit += rand(40) end
56.
例えばなぜか 単位が取れないとして
57.
制御構造 - while credit
= 0 year = 1 while credit < 124 do puts “授業を受けない” year += 1 # credit += rand(40) end → 無限ループ🙅
58.
124単位以上持っている? 授業を受けない 単位が取れない Yes😄 No😫 卒業🍣
59.
124単位以上持っている? 授業を受けない 単位が取れない Yes😄 No😫 卒業🍣 8回生? 退学💀 No😅 Yes😂
60.
制御構造 - break while
credit < 124 do puts “授業を受ける” year += 1 credit += rand(40) if year == 8 break end end ← ループを途中で抜ける
61.
ハッシュに対する繰り返し 1周目はapple/りんご 2周目はdog/犬 3周目はbook/本 というデータがほしい
62.
words = { ‘apple’
=> ‘りんご’, ‘book’ => ‘本’, ‘dog’ => ‘犬’ } words.each do |key, value| puts “key: ” + key puts “value: ” + value end 1周目: key: apple value: りんご 2周目: key: book value: 本 3周目 key: dog value: 犬
63.
関数 • 一定の処理・計算をまとめる • 正解率を計算する関数を定義してみよう
64.
関数 • (正解率) =
100 (正解数) (出題数) • percentage(正解数, 出題数) = 100 (正解数) (出題数)
65.
percentage 関数 def percentage(a,
b) return 100 * a / b end
66.
percentage 関数 (改) def
percentage(a, b) if b == 0 return 0 else return 100 * a / b end end
67.
できました👏👏
68.
終えてみて • プログラミングって意外と地道 • 最初は覚えることがたくさん •
思い通りに書けるようになると楽しい!
69.
最後に もうちょっと勉強したい方は 是非 CAMPHOR- に 遊びに来てください!!
70.
ありがとうございました ..
Download now