ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

イテレータ

索引 イテレータ

イテレータ(iterator)とは、プログラミング言語において配列やそれに類似する集合的データ構造(コレクションあるいはコンテナ)の各要素に対する繰り返し処理の抽象化である。実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。JISでは反復子(はんぷくし)と翻訳されている。 ジェネレータ (プログラミング) の記事も参照のこと。.

34 関係: ポインタ (プログラミング)ランダムアクセスループ (プログラミング)プログラミング言語データ構造ダック・タイピングインクリメントオブジェクト (プログラミング)カーソル (データベース)コルーチンコンテナ (データ型)シーケンシャルアクセスジェネレータ (プログラミング)C SharpC++総称型DelphiD言語関数オブジェクト配列FgetcForeach文Iterator パターンJavaMicrosoft Visual Basic .NETPascalPerlPHP (プログラミング言語)PythonRubyStandard Template Library抽象化 (計算機科学)日本工業規格.NET Framework

ポインタ (プログラミング)

ポインタ (pointer) とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照する(指し示す)ものである。有名な例としては Pascal のポインタが挙げられる。 なお、C++では、さらに独立した「参照」という機能がある。.

新しい!!: イテレータとポインタ (プログラミング) · 続きを見る »

ランダムアクセス

ランダムアクセス(Random Access)とは、記憶装置などのデータへのアクセス方式のひとつで、端から順番にアクセスするというシーケンシャルアクセスに対して、何らかのアドレス付けによる番号などにより、目的のデータがある場所がわかっていれば、それを直接アクセスできる、というような方式である。Direct access storage device(DASD)など、「直接アクセス」という語もある。なお「ランダムアクセスメモリ」についてはRandom Access Memoryの記事を参照。 おおまかな説明になるが、例えばファイルシステムに利用しているディスクであれば、目的のファイルのパス文字列からinodeを得て、inodeからブロック番号を得る。ブロック番号は容易にディスクの実際のアドレス(Logical Block Addressing)に変換できるので、あとはディスクコントローラにそのLBAにアクセスするコマンドを投げる。ディスクコントローラにより、ディスクメディアであればヘッドが目的のセクタがあるシリンダに移動され(シーク)、目的のセクタが現れるまでディスクの回転を待ち、最終的に目的のセクタにアクセスが行われる。 シーケンシャルアクセスでは通常、端から全部のデータにアクセスしつつ、目的の場所まで待たなければならないので、レイテンシが膨大になる。それに対しランダムアクセスではどの場所のデータにアクセスするのでも、一般に同じ待ち時間でアクセスできる。(スループットの点では、シーケンシャルアクセス機器の存在意義を示すためもあって、近年のテープ機器などでは高性能化が進んでいる).

新しい!!: イテレータとランダムアクセス · 続きを見る »

ループ (プログラミング)

この記事では、コンピュータプログラムにおけるループ (loop) について説明する。ループとは、特定の条件下において特定の処理を繰り返すこと、あるいはそのように作られた制御構造のことを言う。日本語の名詞として「繰り返し」とも。特定の条件が成立している限り、特定の処理を繰り返し何度でも実行する。逆に言えば、条件が成立しなくなったときに、処理を中止する。 ループの、特別な形あるいは最も一般的な形として、無条件に繰り返す無限ループがある。詳細は無限ループの記事を参照。 ループは、繰り返しを継続するかどうかを判断するための条件式(反復条件)を持つ。反復条件がループ構造の始まりに置かれる場合、そのようなループ構造のことを前判定ループと呼ぶ。一方、反復条件がループ構造の後ろに置かれる場合、これを後判定ループと呼ぶ。しかし結局のところ以上のような分類は、プログラミング言語の発展の初期に、まず最初にどちらか片方だけが作られ、後から別のものが追加されたという歴史的由来に過ぎず、ループの「内側」のどこかに「ループの脱出」がある、という構造に一般化できるので前判定後判定という分類は本質ではない(実際に、たとえばVisual Basicの「Do...Loop 文」は、どの場合にも対応するよう対称的に作られている)。単にその「内側のどこか」が、その前端か後端にある場合が多い、というだけである。 むしろ、ループの先頭で何らかのデータをファイルから読み込んで計算を開始し、その途中で、繰り返しのその回を打ち切り次の繰り返しに進む、あるいは繰り返しを終わる、といったこともよくあり(ダイクストラは、最後が途中で終わる場合を「n+1/2回の反復」と名づけた)、さらには入れ子になった内側のループの中から外側のループを終わる、というような処理にどう対応するか、が思案のしどころである。 なお。.

新しい!!: イテレータとループ (プログラミング) · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: イテレータとプログラミング言語 · 続きを見る »

データ構造

データ構造(データこうぞう、data structure)は、計算機科学において、データの集まりをコンピュータの中で効果的に扱うため、一定の形式に系統立てて格納するときの形式のことである。 ソフトウェア開発において、データ構造についてどのような設計を行うかは、プログラム(アルゴリズム)の効率に大きく影響する。そのため、さまざまなデータ構造が考え出されている。 多くのプログラムの設計において、データ構造の選択は主要な問題である。これは大規模システムの構築において、実装の困難さや質、最終的なパフォーマンスはベストのデータ構造を選択したかどうかに大きく依存してきたという経験の結果である。多くの場合、データ構造が決まれば、利用するアルゴリズムは比較的自明に決まる。しかし場合によっては、順番が逆になる。つまり、与えられた仕事をこなす最適なアルゴリズムを使うために、そのアルゴリズムが前提としている特定のデータ構造が選択される。いずれにしても適切なデータ構造の選択は極めて重要である。 この洞察は、多くの定式化された設計手法やプログラミング言語において、データ構造がアルゴリズムよりもキーとなる構成要素となっていることに現れている。大半の言語は異なるアプリケーションにおいてデータ構造を安全に再利用できるよう、実装の詳細をインターフェイスの背後に隠蔽するような、モジュール化のしくみを備えている。C++やJavaといったオブジェクト指向プログラミング言語はクラスをこの目的に用いている。 データ構造は専門的なプログラミングにとって非常に重要なので、C++におけるSTLや、Java API、および.NET Frameworkのようなプログラミング言語の標準ライブラリや環境において多くのデータ構造がサポートされている。 データ構造が実装を表すのかインターフェースを表すのかについてはいくらか議論がある。どのように見えるかは相対的な問題なのかもしれない。データ構造は2つの関数の間にあるインターフェイスとして見ることもできるし、データ型に基づいて構成されたストレージにアクセスする方法を実装したものとして見ることもできる。.

新しい!!: イテレータとデータ構造 · 続きを見る »

ダック・タイピング

ダック・タイピング(duck typing)とは、Smalltalk、Perl、Python、Rubyなどのいくつかの動的型付けオブジェクト指向プログラミング言語に特徴的な型付けの作法のことである。それらの言語ではオブジェクト(変数の値)に何ができるかはオブジェクトそのものが決定する。つまり、オブジェクトがあるインタフェースのすべてのメソッドを持っているならば、たとえそのクラスがそのインタフェースを宣言的に実装していなくとも、オブジェクトはそのインタフェースを実行時に実装しているとみなせる、ということである。それはまた、同じインタフェースを実装するオブジェクト同士が、それぞれがどのような継承階層を持っているのかということと無関係に、相互に交換可能であるという意味でもある。 この用語の名前は「ダック・テスト」に由来する。 "If it walks like a duck and quacks like a duck, it must be a duck"(もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルである) デーブ・トーマスはRubyコミュニティで初めてこの言葉を使ったと考えられている。 C++のtemplateはダック・タイピングの静的版である。例えば、各種のiteratorはIterator基底クラスのようなものからメソッドを継承しているわけではないが、同じ構文でコンパイルが通るならば、それはiteratorの一種として扱える。C++で言う「同じインターフェースを持つ」とは、コンパイラにとってインターフェースが同じだということである。したがって、iteratorの実装はオブジェクトである必要すらない。 もう1つ、ダック・タイピングに似たアプローチにOCamlのstructural subtypingがある。メソッドのシグネチャが互換ならば、宣言上の継承関係は関係なくとも、オブジェクトの型は互換であるというものである。これはOCamlの型推論システムによってコンパイル時にすべて決定される。.

新しい!!: イテレータとダック・タイピング · 続きを見る »

インクリメント

インクリメント、増量 (increment) は、一般には増加という意味だが、コンピュータ用語としては、変数の値を1増やす演算のことである。逆に、1減らす演算はデクリメント (decrement) である。.

新しい!!: イテレータとインクリメント · 続きを見る »

オブジェクト (プログラミング)

ブジェクト(object)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念である。.

新しい!!: イテレータとオブジェクト (プログラミング) · 続きを見る »

カーソル (データベース)

データベースにおけるカーソル()は、一連のデータに順にアクセスする際の検索条件および「現在位置」を保持するデータ要素である。.

新しい!!: イテレータとカーソル (データベース) · 続きを見る »

コルーチン

ルーチン(co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞 co は協調を意味するが、複数のコルーチンが中断・継続により協調動作を行うことによる。 サブルーチンと異なり、状態管理を意識せずに行えるため、協調的処理、イテレータ、無限リスト、パイプなど、継続状況を持つプログラムが容易に記述できる。 コルーチンはサブルーチンを一般化したものと考えられる。コルーチンをサポートする言語には Modula-2、Simula、Icon、Lua、C#、Limbo などがある。マルチスレッドで原理的には同じことができるため、現在はそちらが使われるケースが多い。これはマルチスレッドであれば直接OSの支援を受けられることや、エントリー/リターンの構造を変えずにコードを多重化できるので、過去の言語との親和性が良いなどが理由である。ただし、マルチスレッドの場合プログラマが同期制御を行わなければならないので、コルーチンのような簡易さはない。 コルーチンという名称は、メルヴィン・コンウェイの1963年の論文が起源である。.

新しい!!: イテレータとコルーチン · 続きを見る »

コンテナ (データ型)

ンピュータプログラミングにおいて、コンテナとはオブジェクトの集まりを表現するデータ構造、抽象データ型またはクラスの総称である。コレクションとも言う。コンテナには複数の種類があり、それぞれ独自の方法でオブジェクトを組織的に格納する。 よく知られたものには、.

新しい!!: イテレータとコンテナ (データ型) · 続きを見る »

シーケンシャルアクセス

ーケンシャルアクセス (sequential access) とは、記憶装置などにおけるデータへのアクセス方式のひとつであり、記憶媒体の先頭から順に検索しアクセスしていく。そのため、後ろに記録されたデータに辿り着くまで時間がかかる。これは順次アクセスとも言われる。 コンピュータでは利便性の点でランダムアクセスの機器がもっぱらだが、(かつての)カセットテープやビデオテープなどオーディオやビデオ用としては多用された。超大容量のバックアップや安全な輸送のためなど、コンピュータ用の磁気テープ機器にも一定の需要がある。.

新しい!!: イテレータとシーケンシャルアクセス · 続きを見る »

ジェネレータ (プログラミング)

ェネレータは、プログラムにおいて、数列の各要素の値などを次々と生成(ジェネレート)し他の手続きに渡す、という機能を持っている手続きである。値を渡す方法としては、コールバックのようにして他の手続きを呼ぶものもあれば、呼び出される度に次々と異なる値を返す関数であることもある。.

新しい!!: イテレータとジェネレータ (プログラミング) · 続きを見る »

C Sharp

C#(シーシャープ)は、アンダース・ヘルスバーグが設計(デザイン)したプログラミング言語であり、構文(syntax)は(名前にもある通り)C言語や、C言語風に構文が設計されたC++やJavaなどの影響があるが、構文以外についてはヘルスバーグが以前の所属であるBorlandで設計したDelphiからの影響がある。 Microsoftによる謳い文句としては、マルチパラダイムプログラミング言語、強い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ、などといった点が強調されている。 CLIといった周辺も含め、Microsoftのフレームワーク「.NET Framework」の一部である他、VJ++で「非互換なJava」をJavaに持ち込もうとしたような以前のMicrosoftとは異なり、その多くの仕様を積極的に公開し標準化機構に託して自由な利用を許す(ECMA-334、ISO/IEC 23270:2003、JIS X 3015)など、同社の姿勢の変化があらわれている一面でもある(実際に「Mono」という、フリーソフトウェアの定義に合致したライセンスの、コミュニティによる実装がある)。.

新しい!!: イテレータとC Sharp · 続きを見る »

C++

C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.

新しい!!: イテレータとC++ · 続きを見る »

総称型

総称型(generic type)、あるいはパラメタ付型(parametric type)とは、型付けされたプログラミング言語においてデータ型の定義とそれを参照する式(型式)の一部にパラメタを許すことによって類似した構造を持つ複数のデータ型を一括して定義して、それらを選択利用する仕組みである。 総称型は、暗黙の型変換(implicit type conversion)あるいは型強制(type coercion)、多重定義あるいはオーバーロード(overload)、継承(inheritance)あるいは包含(inclusion)と並んでプログラミング言語においてポリモーフィズムを実現するための一つの手段であると看做せる。 総称型が使われている言語の例としてC++のテンプレート、JavaやC#のジェネリクスがある。.

新しい!!: イテレータと総称型 · 続きを見る »

Delphi

Delphi(デルファイ)は、コンソール (CUI)、デスクトップ (GUI)、Web、モバイルアプリケーション開発のための統合開発環境 (IDE) である。 DelphiのコンパイラはPascal を独自に拡張した Object Pascal (Delphi 言語) を用いて、プラットフォーム毎にネイティブコードを生成する。対応プラットフォームはWindows、macOS、iOS、Android、Linux。 元々DelphiはボーランドがTurbo Pascal / Borland Pascalの後継として開発したWindows用のRADツールである。C++ Builderとは多くのコアコンポーネント、特にIDEとVisual Component Library (VCL) を共有していたが、Borland Developer Studio 2006の登場まではそれぞれ独立した製品だった。 2006年にボーランドの開発ツール部門がコードギアとして完全子会社化され、2008年にエンバカデロ・テクノロジーズに買収された。2015年10月に、上記エンバカデロ・テクノロジーズがアイデラにより買収される発表がなされた。 本項では Delphi Prism として開発されていた 「Embacardero Prism(エンバカデロ プリズム)」 についても述べる。.

新しい!!: イテレータとDelphi · 続きを見る »

D言語

D言語(ディーげんご、D programming language)は、プログラミング言語のひとつ。C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングやオブジェクト指向プログラミング、関数型プログラミングなどをサポートするマルチパラダイムプログラミング言語である。.

新しい!!: イテレータとD言語 · 続きを見る »

関数オブジェクト

関数オブジェクト(かんすうオブジェクト、function object)は、プログラミング言語において、関数(サブルーチンないしプロシージャ)を、オブジェクトとしたものである。手続きオブジェクトとも言う(プロシージャ=手続き)。なお、ここでのオブジェクトの語は、いわゆるオブジェクト指向のそれに限らず、「第一級オブジェクト」という語におけるのと同じ、メモリ上に空間を確保されたもの、といった意味である。関数が第一級オブジェクトである場合は特に第一級関数と言う。 関数と変数の名前空間が共通である言語の場合、構文の設計によっては、a.

新しい!!: イテレータと関数オブジェクト · 続きを見る »

配列

この記事では、コンピュータ・プログラムにおいて配列(はいれつ、array)と呼ばれているデータ構造およびデータ型について説明する。計算科学方面ではベクトルという場合もある。また、リストも参照。一般に、添え字で個々の要素を区別する。.

新しい!!: イテレータと配列 · 続きを見る »

Fgetc

fgetcは、ファイルストリームから1文字読み込むC言語の標準Cライブラリの関数。標準ヘッダーファイル stdio.h で宣言されている。呼称はエフゲットシーと呼ばれることが多い。 unsigned char で読み込み int に型キャストして返す。入力に成功した場合には入力した文字が、入力に失敗した場合あるいはファイル終端に達した場合にはEOFが返却値となる。 fgetc関数は、動作的にはgetcと等価である。だが、getcがマクロで実装されてもよいのに対し、fgetcは必ず関数として実装されている。そのため、fgetcの引数として副作用のある式を指定しても、問題なく動作する。また、関数ポインタを取得することも出来る。.

新しい!!: イテレータとFgetc · 続きを見る »

Foreach文

foreach文(フォーイーチぶん)とはプログラミング言語においてリストや連想配列などの「コレクション」と呼ばれるデータ構造の各要素に対して与えられた文の実行を繰り返すというループを記述するための文である。foreach文はしばしばfor文の一部という位置付けにある。for文と異なり要素の参照順序が定義されないこともある。.

新しい!!: イテレータとForeach文 · 続きを見る »

Iterator パターン

Iterator パターン(イテレータ・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とする。.

新しい!!: イテレータとIterator パターン · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: イテレータとJava · 続きを見る »

Microsoft Visual Basic .NET

Visual Basic.NET (ヴィジュアル ベーシック ドットネット)はマイクロソフトが開発したプログラミング言語およびその処理系。VB.NETと略されて呼ばれることが多い。.NETに対応していない旧来のMicrosoft Visual Basic(バージョン6.0まで、VB6)の後継である。 なおVisual Studio 2005以降では、「Visual Basic.NET」や「VB.NET」という呼称ではなく、従来のように「Visual Basic」という呼称が用いられるようになっているが、6.0以前との互換性はなく、また.NETベースであることには変わりない。.

新しい!!: イテレータとMicrosoft Visual Basic .NET · 続きを見る »

Pascal

Pascal(パスカル)は、ニクラウス・ヴィルトの設計(デザイン)によるコンピュータ・プログラミング言語である。ALGOL(直接的にはその一派生である、ヴィルトが関与したALGOL W)などの影響があるが、個人の設計であることに由来する簡素だがよく整った言語仕様(構文と意味)を持つ。用途の中に教育を意識しており、構造化された制御構造など、その当時「良きプログラミングの慣習」と考えられていたことの影響もある。一方で批判者からは、あくまでも教育用に過ぎない言語だ、といったような評もあることにはあったが、PascalコンパイラをPascalで書ける(いわゆる言語処理系のブートストラップ)ことをはじめ、Pascalで書かれた#実用プログラム例は多くある。名前は、哲学者・数学者・科学者で、機械式計算機を製作するなど技術者でもあったブレーズ・パスカルにあやかったものである。.

新しい!!: イテレータとPascal · 続きを見る »

Perl

Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理などのプログラムを書くのに広く用いられている。 言語処理系としてのperlはフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布されており、誰でもどちらかのライセンスを選択して利用することができる。UNIXやWindowsなど多くのプラットフォーム上で動作する。.

新しい!!: イテレータとPerl · 続きを見る »

PHP (プログラミング言語)

PHP(ピー・エイチ・ピー)は "The PHP Group" によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページ作成するための機能を多く備えていることを特徴とする。 名称の PHP は再帰的頭字語として、 "PHP: Hypertext Preprocessor" を意味するとされており、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。.

新しい!!: イテレータとPHP (プログラミング言語) · 続きを見る »

Python

Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。.

新しい!!: イテレータとPython · 続きを見る »

Ruby

Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。 また日本で開発されたプログラミング言語としては初めて国際電気標準会議で国際規格に認証された事例となった。.

新しい!!: イテレータとRuby · 続きを見る »

Standard Template Library

Standard Template Library (STL) は、プログラミング言語C++の規格で定義された標準ライブラリの一つ。ヒューレット・パッカード社在籍の研究者(当時)であったアレクサンドル・ステパノフ等によって考案され、後にANSI/ISO標準に組み込まれた。.

新しい!!: イテレータとStandard Template Library · 続きを見る »

抽象化 (計算機科学)

抽象化(ちゅうしょうか、Abstraction)は、計算機科学において詳細を捨象し、一度に注目すべき概念を減らすことおよびその仕組みである。 この概念は数学における「抽象化」からのアナロジーである。数学での抽象化技法の起源は数学的定義である。例えば、コンピュータでも数学でも、数はプログラミング言語上の概念であり、数学上の概念でもある。数の計算概念は数学の概念に基づいているため、実装の詳細はハードウェアとソフトウェアに依存したとしても、それが制約とはならない。 大まかに言えば、抽象化は制御抽象化とデータ抽象化に分けられる。制御抽象化は動作の抽象化であり、データ抽象化はデータ構造の抽象化である。例えば、構造化プログラミングでの制御抽象化とは、サブプログラムや定式化された制御フローの使用を意味する。データ抽象化とは、本来ビット列であるデータを意味のある方法で扱うことを意味する。例えば、データ型の背景にある動機は抽象化である。オブジェクト指向プログラミングはデータとコードを同時に抽象化する試みと見ることもできる。.

新しい!!: イテレータと抽象化 (計算機科学) · 続きを見る »

日本工業規格

鉱工業品用) 日本工業規格(にほんこうぎょうきかく、Japanese Industrial Standards)は、工業標準化法に基づき、日本工業標準調査会の答申を受けて、主務大臣が制定する工業標準であり、日本の国家標準の一つである。JIS(ジス)またはJIS規格(ジスきかく)と通称されている。JISのSは英語 Standards の頭文字であって規格を意味するので、「JIS規格」という表現は冗長であり、これを誤りとする人もある。ただし、この表現は、日本工業標準調査会、日本規格協会およびNHKのサイトでも一部用いられている。.

新しい!!: イテレータと日本工業規格 · 続きを見る »

.NET Framework

Microsoft.NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発したアプリケーション開発・実行環境である。 Windowsアプリケーションだけでなく、XML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。一般に.NETという場合、.NET全体の環境を指す。.

新しい!!: イテレータと.NET Framework · 続きを見る »

ここにリダイレクトされます:

イテレーター反復子

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »