ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Hello World以前のプログラム言語(その3:プログラムをまとめる)。

2006-10-29 18:21:32 | Weblog

 情報処理とは何?から、Hello Worldを各種言語で出力するまでの流れをかく、シリーズHello World以前のプログラム言語のつづきです(このシリーズは、土日に書きます)。

 コンピューターは情報を処理する機械で、
情報を処理するとは、必要な入力データ(情報)をいれて、なんらかの処理をさせて、目的となる出力データ(情報)を得ることであると書きました。
 で、問題は、その処理なんですが、どういう処理をさせたいかというのを書いたものがプログラムで、こんな文を使って書きます

1.処理を命令する文

2.条件によって、処理を分けるための文
   単純に条件をわける文
   繰り返しする文

3.変数を宣言する文

 ってことを、前回までに書きました。

 で、今回は、そのさき、プログラムをまとめる話を書きます。



■プログラムをまとめる

 というので、プログラムを上から順番に書いていくと、同じことが何回も出てきてしまいます。
 たとえば、20度づつ、ものを回転させて表示するということを考えましょう。
 この場合、
 1.現在のXY座標を20度回転させたときのXY座標を求めて
 2.それを表示します
 3.で、さらに20度回転させたときのXY座標を求めて
 4.それを表示します

 このとき、「XY座標を20度回転させたときのXY座標を求め」る部分と、「それを表示」する部分が、何回も繰り返し、出てきてしまいます。

 そこで、この、何回も出てくる部分をまとめようという考え方がでてきました。

 具体的にいうと、原点から、ある角度を回転させたXY座標を求めるという場合は、ここに書いたように、以下の処理を行います。

 1.ある角度(360度で表現する)を、360で割って、それに円周率の2倍をかける
 2.三角関数のsin(1で求めた値)をもとめる。これをsとする
 3.三角関数のcos(1で求めた値)をもとめる。これをcとする
 4.c*X座標-s*Y座標(*は乗算)を求め、それを新しいX座標とする
 5.s*X座標+c*Y座標(*は乗算)を求め、それを新しいY座標とする

実際には、もともとある回転しようとするものの中心を、まずは、その原点に持ってくるという処理がさらに入るのですが、まあ、それは省略して、上の処理をしないといけません。

 このとき、この5個の処理を何回も繰り返していたら大変なので

  角度、X座標、Y座標を渡してください。そしたら、回転結果を返します

 という処理をまとめて、つくっておいて、実際に使うときは、そのまとめた処理を呼び出すという形をとります。




■プログラムの2通りのまとめ方

 そのようにプログラムをまとめる場合ですが、とくに値が1つしか返す必要がない場合と、複数の値を返して欲しい場合、あるいはまったく返してくれなくていい場合というのがあります。なんで、1つしか返さない場合を分けて言うかというと、数学的に考えたとき、そういうものを特別に扱っているからです。

 数学的に、いくつかのものを入力して(もちろん、1個しか入れなくてもいい。0個というのは数学的にはないかもしれないが、コンピューター的にはカウンタや現在時刻取得である)、1つしか値を返さないものを、関数といいます。

 コンピューターのプログラムの世界でも、いくつかのものをいれて、1つしか返さないものを関数(ファンクション)といい、そうでないものを、サブルーチンといいます。

 Visual Basicでは、この区別ははっきりしていて、
   サブルーチンはSubと、はじめにかいて、
      そのまとまりのおわりには、End Subと書きます
   ファンクションはfunctionとはじめに書きます。
      そのまとまりのおわりには、End functionと書きます

 Javaの場合には、この書き方はあいまいで、subとfunctionの区別はありません。
 ただし、値を返せない場合は、返す値の型のところにvoidと書いて、値は返さないよ!
 と明示します。

 なお、複数の値を返す場合は、入力値を書き換えたり、呼び出したほうも、呼び出されたほうもアクセスできるところに返します。
 なので、複数の値を返すサブルーチンというのはないです。サブルーチンは値を返しません。(VBのsubは、値を返さない)。




 ちょっと話が複雑になってしまい、うまく、かけなかったですたが、とにかく、プログラムをまとめる方法があって、実際には、そのまとめた部分を呼び出すことによって、同じような処理を何回も書くことを防いでいるということです。
 書き方については、詳しく、もっと先の機会に書きます。

 次回のこのシリーズは、データのまとめ方です。



この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ソフトバンクやウィルコムが... | トップ | DTPでタグ付きテキストを... »
最新の画像もっと見る

Weblog」カテゴリの最新記事