甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Welcome to the Frontpage

Ada95チュートリアル セクション2.2 「宣言と本体」 #1

E-mail Print PDF

Ada95チュートリアル セクション2.2 「宣言と本体」 #1

プログラムユニット(サブプログラムと、パッケージを含む)は、通常、二つのパートから構成されている。

  • 宣言部
    ここでは、他のプログラムユニットで見ることができる情報を含んでいる。
    宣言部は、プログラムユニットへのインターフェースを定義する。
    時には、人によっては、仕様書として宣言部を参照する。C言語における、ヘッダーファイルに似たものとされている。
  • 本体部
    本体は、他のパートからは見ることが出来ない実装の詳細を含んでいる。先ほどの人々は、C言語における、.cファイルに似たものとしている。

プログラムユニットにおける、これらの分離されたパートは、通常、分離されたファイルとして保管されている。この宣言部と本体部の明白な分離が 、大規模かつ独立したソフトウェアコンポーネントを設計し、記述し、試験することを実現しているのである。

二つの特殊なケースは、プログラミングを容易にするのを助ける

  1. 分離された宣言部は、サブプログラム(プロシージャと関数)には、要求されていない。
    もし、サブプログラムが宣言部がなく本体部のみを持っていたなら、サブプログラムの本体部は、それ自体の宣言部として機能する。
    このことは、レッスン1のハローワールドプログラムの記述を容易にすることが出来ている要因である。技術的には、簡単なプログラムはそれ自体の宣言部を自動的に提供する1つのプロシージャ本体部である。
  2. ある種のパッケージにおいて、詳細を実装するのは不可能である。
    たとえば、パッケージの宣言部が、定数の集合から構成されているような場合である。(たとえば、円周率πや、2の平方根といった数)。
    この場合、パッケージは本体部を持たない。必要ないからである。
    これは、比較的まれな存在である。ほとんどのパッケージは、宣言部と本体部の両方を持っている。

出典: http://www.adahome.com/Tutorials/Lovelace/s2s2.htm

Last Updated on Monday, 12 September 2011 07:13
 

Ada95チュートリアル セクション2.1 「プログラムユニット」 #1

E-mail Print PDF

Ada95チュートリアル セクション2.1 「プログラムユニット」 #1

さて、Adaのコードがどのように見えるか、ささやかな香りを嗅いだところで、いくつかのキーとなる用語を定義していおく必要がある。

より公式には、1つのAdaプログラムは、1つ、もしくは、複数のプログラムユニットから構成される。

プログラムユニットとは、以下に上げるものでありうる。

  1. サブプログラム。実行すべきアルゴリズムを定義する。プロシージャも関数も、どちらもサブプログラムである。
  2. パッケージ。実体の集合を定義する。パッケージは、Adaでの主たるグルーピングのメカニズムである。Modulaの「module」に相当する。
  3. タスクユニット。これは、他の計算と同時に、並行処理がおきる場合に定義される。
  4. プロテクテッドユニット。これは、並行計算の間で、データ共有を調整することが出来る。Ada 83では、存在していなかった。
  5. ジェネリックユニット。これは、再利用可能なコンポーネントを助ける。(C++のテンプレートが似たようなものである)。

最後の三つは、先進的なトピックである。そこで、ここでは、パッケージとサブプログラムに集中することにしよう。

パッケージは、プログラムユニットの中でも、構造的にもっとも重要なものである。

ほとんどのAdaプログラムは、そのプログラムを開始する「main」のプロシージャとともに、基本的にたくさんの数のパッケージの集合からなっている。

出典: http://www.adahome.com/Tutorials/Lovelace/s2s1.htm

Last Updated on Monday, 12 September 2011 07:09
 

Ada95チュートリアル セクション1.3 「use節」 #1

E-mail Print PDF

Ada95チュートリアル セクション1.3 「use節」 #1

いくつかのプログラムは、読者が常にプロシージャを使うために定義を既述しなければならない場合に、冗漫になる場合がある。

このような場合に、Adaはuse節を提供している。

読者がプロシージャーを使うが、それがどこで定義されているかを記述しない場合、AdaコンパイラーはUse節にリストされたユニットを検索するのである。

use節は、with節に続き、キーワードuseで始まる。そして、検索すべきライブラリーユニットをリストする。

ここでは、最初のプログラムに、use節を適用した例である。

 

-- Print a simple message to demonstrate a trivial Ada program.
with Ada.Text_IO;
use Ada.Text_IO;  -- use clause - automatically search Ada.Text_IO.
procedure Hello2 is
begin
Put_Line("Hello, world!"); -- Note: No longer has "Ada.Text_IO" in front.
end Hello2;

出典: http://www.adahome.com/Tutorials/Lovelace/s1s3.htm

 

Last Updated on Monday, 12 September 2011 07:03
 

Ada95チュートリアル セクション1.4 「簡単な変数、整数とパラメーター、例外」 #1

E-mail Print PDF

Ada95チュートリアル セクション1.4 「簡単な変数、整数とパラメーター、例外」 #1

次に、簡単な変数とパラメーターのやり取りについて見ることが出来るプログラムを作ってみよう。

このプログラムは、1で始まり、二倍数を無限に計算し表示する。

我々は、このプログラムをプロシージャComputeと名付ける。

このプロシージャーの内部で、Doubleと呼ばれるローカルプロシージャーを作成する。このプロシージャーは、与えられた数を二倍する。ローカルな整数の変数は、Xと名付ける。

-- Demonstrate a trivial procedure, with another nested inside.
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;

procedure Compute is

procedure Double(Item : in out Integer) is
begin -- procedure Double.
Item := Item * 2;
end Double;

X : Integer := 1;   -- Local variable X of type Integer.

begin -- procedure Compute
loop
Put(X);
New_Line;
Double(X);
end loop;
end Compute;

 

 

ローカル変数「X」は、ひとつの整数型の初期変数である。

整数型は、符合付き整数値を格納したい場合に使われる。最小値、最大値の範囲に注意する必要はない。

後で見ることになるが、最小値、最大値の範囲が何か注意するかどうかの場合、なすべきことは他にある。

この新しいプロシージャーは、ローカルなプロシージャーであり、「Double」と名付けられた。これは、1つの値を取り、それを二倍する。

ローカルなプロシージャは、ローカルな変数と同じく、それをとりまくプロシージャーの内部だけで使用することが出来る。

このプロシージャの中に、プロシージャが入れ子になった機能は、大規模なプログラムで有効であり、Pascalに標準に備わっている機能である(CやC++にはない)。

「in out」句は、この値が受け取られ、プロシージャーの中で変更されることを示している。

「with .. Integer_Text_IO」句は、Ada 95パッケージにおいて事前に定義されている、整数によるテキスト入出力機能を使うことを許している。

二番目の「begin」文は、Computeプロシージャー自身を定義している。

Computeは、無限ループを持っている。これは、現在の値と、それを二倍する作業を繰り返し行なっているためである。

「Put」は、その値をプリントし、「New_Line」句は、次の行にいくよう指示している。

計算機は、無限に大きな値を計算することは出来ない。

すぐに、もしくは、しばらくすれば、その数を保存する空間を使いつくしてしまうであろう。

この場合、何がおこるであろうか。

いくつかの言語(とりわけ、C)では、単純に、がらくたを許してしまう。

Adaは、よりベターなアプローチを取っている。2倍計算のような計算が実行できないとき、Adaは、例外を上げる。

このように、すぐに、あるいは、しばらくもすれば、このプログラムは停止し、なぜ、どこで停止したかを説明するメッセージを表示する。

あとのセクションで学ぶように、これらの例外は、プログラムの内部でキャッチされ処理することができるのである。

また、GNAT Adaコンパイラの利用者に、簡単な註記をしておく。

このような特定のエラー(整数オーバーフロー)を、ランタイム時に検出するには、GNATでは、「-gnato」オプションを付けて、コンパイルする必要がある。

これを、最終的にはGNATのデフォルト設定にしようという計画もある。

詳しくは、GNATのドキュメンテーションを参照されたし。

出典: http://www.adahome.com/Tutorials/Lovelace/s1sf.htm

Last Updated on Monday, 25 March 2013 11:39
 

Ada95チュートリアル セクション1.2 「簡単なプログラム」 #1

E-mail Print PDF

Ada95チュートリアル セクション1.2 「簡単なプログラム」 #1

ここに、Adaによる簡単なプログラムがある。これは、メッセージを表示するものである。

しばしば、ハローワールドプログラムと呼ばれるものである。

-- Print a simple message to demonstrate a trivial Ada program.
with Ada.Text_IO;
procedure Hello is
begin
Ada.Text_IO.Put_Line("Hello, world!");
end Hello;


各行の説明

  1. 最初の行は、コメントを表わしている。Adaのコメントは、「--」で始まり、行の終わりまでをコメントとして扱う。

    C++での「//」と同じように動作する。
  2. 2行目は、with節を表わす。これは、我々が必要とするライブラリーユニットや、その他のものを特定する。

    この特定のwith節は、我々が必要とするAda.Text_IOを特定している。

    Ada.Text_IOライブラリーユニットは、事前定義されたライブラリーユニットであり、基本的な入出力を行なう動作を提供する。
  3. 3行目は、Helloという名前の新しいプロシージャーを我々が定義していることを宣言している。

    Adaにおいては、メインプログラムの名前に特殊なものが必要ないことに注意されたし。

    Cや、C++においては、mainと呼ばれるものが、Pascalにおいても、プログラムとして認識される特殊なものが必要である。
  4. 4行目は、begin句である。これは、プロシージャーHelloの定義の始点を示す。

  5. 5行目は、Ada.Text_IOのプロシージャーPut_Lineを呼び出している。

    このプロシージャーは、標準出力(通常は、スクリーン)に行をプリントし、現在の行を終える。

    プロシージャー呼び出しのための基本文法は、ライブラリーユニット名を与え、ピリオドでプロシージャーの名前をつなぎ、その後に括弧で括って、パラメータを与える(パラメータがあれば)。

    すぐに、この場合どのように行なうか見ることが出来る。

    Adaにおいては、ダブルクォーテーションで文字列を囲む。(CやC++と同じである。Pascalでは、シングルクォーテーションを使っている)。

  6. 最後の行は、プロシージャーの定義を終えている。

 

Adaは、各文をセミコロンで終る。これは、CやC++と同じであり、標準のPascalとは異っている。

標準のPascalでは、セミコロンは、文のセパレーターとして使われる。

もしあなたが、実際のコンパイラーでのコンパイル結果を知りたいのなら、次のページを参考にしてほしい。

参考: http://www.adahome.com/Tutorials/Lovelace/how2comp.htm

出典: http://www.adahome.com/Tutorials/Lovelace/s1s2.htm

Last Updated on Saturday, 07 August 2010 13:30
 


Page 31 of 35

アンケート

オンライン中のユーザ

We have 62 guests online

広告

Featured Links:
Joomla!
Joomla! The most popular and widely used Open Source CMS Project in the world.
JoomlaCode
JoomlaCode, development and distribution made easy.
Joomla! Extensions
Joomla! Components, Modules, Plugins and Languages by the bucket load.
Joomla! Shop
For all your Joomla! merchandise.

ニュース速報

リナックスアカデミーから受託している某教育案件の件で、(株)びぎねっとで、打合せを行った

弊社で受けている部分も若干の影響があったので、資料を修正する必要がある

現在、作業中の資料1と、今後作成する資料2

これらに基づき、資料3と、資料4を作成する

講義ガイドについては、別途作成の予定(資料5、及び資料6)