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

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

わんくま同盟 東京勉強会 #10 オブジェクト指向 #1 Windows メッセージを使いこな す -Windows 流オブジェクト指向 - とっちゃん 高萩 俊行 Microsoft MVP for Windows SDK 2005/ /09.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
プログラミング基礎I(再) 山元進.
プログラミング言語としてのR 情報知能学科 白井 英俊.
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
Lightweight Language Weekend ls-lRシェル
VBA H106077 寺沢友宏.
最適化ソルバーのための Python言語入門
基礎プログラミング 第13回(2007年5月28日) 「関数」の補足説明 Report-Fの解説.
Ruby勉強会(第1回) 2006/06/29 竹内豪.
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
Boost.勉強会 #8 大阪 ( ) C++ Tips 3 カンマ演算子編.
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
の まとめ 2007/04/02 (Mon) / d;id:hzkr
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
C#とC++とオブジェクト指向 上甲 健史.
C言語講座 第3回 ポインタ、配列.
プログラミング論 関数ポインタ と 応用(qsort)
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
Collection, Generics, Iterator
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第8回放送授業.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 3 2 次元配列.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
マイグレーションを支援する分散集合オブジェクト
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
プログラミング演習I 2003年6月11日(第9回) 木村巌.
第10回 関数と再帰.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
君ならどうする – ls-lRシェル Python編
情報処理Ⅱ 小テスト 2005年2月1日(火).
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
プログラミング 2 静的変数.
Presentation transcript:

わんくま同盟 福岡勉強会 #4 yield について るーごん

わんくま同盟 福岡勉強会 #4 自己紹介 日本一人口が少ない県に住んでいます。 一昨年まで、ちょっと福岡に住みました。 仕事は主に dbMAGIC 。 プログラミング言語はよく分かりません。 好きなもの ポケモン、ファイブマン、ジェットマン、 ジュウレンジャー、カクレンジャー、はて なスター 特技:人見知り苦手なもの:しゃべるこ と

わんくま同盟 福岡勉強会 #4 今日の予定(目標) 自己紹介(済) イテレータとは・・・ Ruby のイテレータと yield Python のイテレータ、ジェネレータと yield C# のイテレータと yield まとめ ※全ての内容が正しいとは限らないので、 鵜呑みにしないでください!

わんくま同盟 福岡勉強会 #4 イテレータとは イテレータとは・・・ 言語によって違う・・・? 配列やコレクションなど(複数の要 素をもつオブジェクト)の各要素に 対し、処理を繰り返す場合に使われ る。

わんくま同盟 福岡勉強会 #4 [Ruby] イテレータについて イテレータ ⇒ブロック付きメソッド呼び 出し ブロック・・・ do end または { } で囲った部分を 「ブロック」と呼ぶ。

わんくま同盟 福岡勉強会 #4 [Ruby] イテレータについて ブロック付きメソッドの例1 each メソッド 順番に要素を取り出し、その要素を 使って処理をする (例) (1..10).each{|i| puts i }

わんくま同盟 福岡勉強会 #4 [Ruby] イテレータについて ブロック付きメソッドの例2 collect メソッド( map メソッドと同じ 動作) ブロックを実行した結果が戻り値と して返される。 ( 例 )‏ rugon = (1..10).map{|i| i + 2}

わんくま同盟 福岡勉強会 #4 [Ruby] イテレータについて 繰り返しでない ブロック付きメソッド呼び出しも ある。 例: sort メソッド 要素を並び替えた結果を返す

わんくま同盟 福岡勉強会 #4 [Ruby] イテレータの定義 主に、次のような方法。。。 1.yield を使う。 2.proc オブジェクトとして渡す。 ・・・他 今回は、 yield を使った場合について・・・・ ・・!

わんくま同盟 福岡勉強会 #4 [Ruby] イテレータの定義 yield の役割 呼び出し側のブロックを 実行する。 この時、 yield のあとに引数を指定 すると、引数をブロックに渡すこ とができる。

わんくま同盟 福岡勉強会 #4 [Python] イテレータとジェネレータ イテレータ iter() メソッドでイテレータオブジェク トを生成する。 イテレータオブジェクトは、 next() で 次の要素を返し、要素がなくなったら 例外を発生させる。

わんくま同盟 福岡勉強会 #4 [Python] イテレータとジェネレータ イテレータを使うと・・・ 要素の数を事前に把握したり、インデ ックスを指定するための変数を用意し たりする必要がない。 インデックスが存在しないようなオブ ジェクトでも扱える。

わんくま同盟 福岡勉強会 #4 [Python] イテレータとジェネレータ ジェネレータ イテレータのような機能を手軽に実装 するための機能。 ジェネレータ関数を呼ぶと、イテレー タオブジェクトが返ってくる。 yield の入った関数はジェネレータ関数 となる

わんくま同盟 福岡勉強会 #4 [Python] イテレータとジェネレータ Python での yield ジェネレータ関数を定義するときの、 関数の定義の中でのみ使用される。 yield 文を実行すると、関数の制御がい ったん止まり、処理が譲られる。 yield により、次に返す値を指定する。

わんくま同盟 福岡勉強会 #4 [C#] イテレータ(反復子) イテレータ(反復子)は・・・ 列挙子 (enumerator) オブジェクトを直 感的に作成することができる。 yield return を利用して列挙子オブジェ クトを返す。 C#2.0 以降。

わんくま同盟 福岡勉強会 #4 [C#] イテレータ(反復子) C# の yield について ブロックの中で yield を使うと反復子ブ ロックになる。 反復子ブロックを使うことで、簡単に 列挙子オブジェクトを作る事ができる 。

わんくま同盟 福岡勉強会 #4 [C#] イテレータ(反復子) yield return 列挙可能型の次の項目を指定する yield break 次の項目がないことを指定する。

わんくま同盟 福岡勉強会 #4 [C#] イテレータ(反復子) ( 例 )‏ public IEnumerator FiveMan()‏ { string[] Member = { " ファイブレッド ", " ファイ ブブルー ", " ファイブピンク ", " フ ァイブブラック ", " ファイブイエロー " }; for (int i = 0; i < Member.Length; i++)‏ yield return Member[i]; }

わんくま同盟 福岡勉強会 #4 C# と Python の比較(おまけ) C# の MoveNext と Python の next() の違い C# MoveNext の戻り値は bool 型で、次の要素が あれば、 True を返す。 MoveNext が実行されると Current の値が変 わる。 Python next() メソッドの戻り値が要素の値。 次の要素がなければ例外を返す。

わんくま同盟 福岡勉強会 #4 まとめ yield を使うことで、繰り返しの処理を シンプルに定義できる。 Ruby と、 C# や Python では yield の使い 方が異なる。 Ruby ⇒呼び出し側のブロックを実行 C# 、 Python ⇒次に返す要素を指定

わんくま同盟 福岡勉強会 #4 参考文献 『たのしい Ruby 第 2 版 Ruby ではじめる気軽なプロ グラミング』 高橋 征義 後藤 裕蔵 著 まつもと ゆきひろ 監修 ソフトバンク クリエイティブ (2008)‏ 『 Ruby レシピブック 268 の技』 青木 峰郎 後藤 裕蔵 高橋 征義 著 まつもと ゆきひろ 監修 ソフ トバンククリエイティブ (2006)‏ 『標準講座 C# 』 Daniel Solis 著 田中正造 監訳 和田隆夫 翻訳 翔泳社 (2008)‏ 『みんなの Python 』 柴田淳 著 新田光敏 発行 ‏ ソフトバンククリエイティブ (2006)‏