program.htm




コンピュータ の プログラム言語


プログラム言語には、以下に記すように多くの種類がある。

FORTRAN(フォートラン)
科学技術計算用に開発された言語で、1956年に IBM 製コンピュータに用いられた。
現在でも科学技術分野の計算においては、しばしば用いられる。

BASIC(ベーシック)
1964年に米国ダートマス大学でプログラム言語の教育用に開発された。
1975年に Bill Gates(ビル ゲイツ)がパソコン用に移植したことで急激に普及した。

C言語
1972年頃 Dennis Ritchie(デニス リッチ)により DEC 製コンピュータのオペレ−ティング システム(OS)
である UNIX(ユニックス)のプログラム記述言語として開発された。
現在では、C言語を更に発展させた C++ がコンピュータのプログラム記述言語として、
ソフト開発等に幅広く用いられている。 

JavaScript(ジャバ スクリプト)
Netscape(ネットスケープ)社により開発され、Webブラウザ表示用言語の HTML 内に直接記述
することが可能なインタプリタ方式の言語であって、Java と類似した仕様をもつ。
プログラムとしての機能はあまり豊富ではないが、使用法は比較的簡便である。

HTML(エッチティーエムエル)
HTML は Hyper Text Markup Language の略語であって、インターネットで使用される
Webブラウザ表示用ファイルを作成するためのテキスト編集に限定したインタプリタ方式の
言語である。
プログラムとしての機能は限定されているが、使用法は極めて簡便である。

Java(ジャバ)
1995年に、Sun Microsystems(サン マイクロシステムズ)社により発表された言語で、
C言語や C++ に類似した仕様をもつ。
Java はインターネット並びにネットワークに対応しており、Web(ウェブ)ブラウザ表示用言語
である HTML(エッチティーエムエル)から簡単に呼び出して利用することが可能な
Applet(アプレット)と呼ばれるプログラム処方がある。

(注) 上記の各プログラム言語の記述において、FORTRAN, BASIC, HTML は
    大文字と小文字を区別せずに使用できるが、C言語, Java, JavaScript は
    大文字と小文字を区別して用いなければならない。

(注) プログラム言語には、上記の他に COBOL(コボル), ALGOL(アルゴル),
    LISP(リスプ), Pascal(パスカル) など様々な言語がある。

(注) パソコンのオペレ−テイング システム(OS) 言語の中、
    Windows(ウィンドウズ) または MS-DOS(エムエス-ドス)においては、
    大文字と小文字は区別されない。
    一例として、MS-DOS上のファイル名やファイル拡張子では、
    大文字と小文字の相異は区別されない。
    ただし サーバ等で主に用いられている OS言語 UNIX(ユニックス)では、
    大文字と小文字は区別される。

インタプリタ方式
ソースファイルをバイナリーコード(2進数)で記述される機械語に
逐次変換しながらプログラムを実行する。
この方式は、実行速度が遅いという欠点があるが、使用法は簡便である。 
この方式のプログラム言語には、JavaScript 並びに HTML と
一部の BASIC などがある。

コンパイラ方式
ソースファイルをコンパイラを用いて予め一括してバイナリーコード(2進数)で
記述される機械語に変換しておき、後に このプログラムをコンピュータに
ロードして実行する。
コンパイラとは、ソースファイルを機械語のファイルに一括変換するための
専用ソフトである。
この方式は実行速度は速いが、予めコンパイラによるコードの変換操作が
必要となるために使用法は簡便ではない。 
多くのプログラム言語は、このコンパイラ方式を採用している。

(注) ソースファイルとは、各言語の文法に従ってプログラムが
    記された原本となるファイルをいう。
    各言語ともソースファイルはアスキー文字によって記述され、
    コンパイラの入力ファイルとなる。
    アスキー文字とは、アスキーコード表に登録されている文字であって、
    英数字や句読点 並びに 記号,括弧 などがある。

(注) コンピュータ内での演算処理はすべてバイナリーコード(2進数)
    すなわち機械語で行われる。

(注) Java に関しては、コンパイラ方式とインタプリタ方式を併用している。

コンパイラ方式のプログラム作成手順
1. 各言語の仕様や文法に基づいてプログラムを記したソースファイルを作成する。
2. ソースファイルの内容をコンパイラによって機械語に変換する。 
   コンパイラの出力ファイルは、すべて2進数で記述されたバイナリーファイル
   となっている。
   各プログラム言語のコンパイラは、最終的には実行形式ファイルを出力する。
3. コンピュータに実行形式ファイルをロードしてプログラムを走らせる。

(注) コンパイラが出力する実行形式ファイルは、コンピュータがもつ CPU 固有の機械語
    でもって記述されているので、異なる CPU をもつコンピュータ間では互換性がない。

(注) CPU とは、Central Processing Unit の略語であって、
    中央演算処理装置のことである。
    この CPU はコンビュータシステムの根幹をなす最重要部品である。

(注) ソースファイルは一般にテキストエディタ等を用いて作成並びに編集するが、
    コンパイラによりバイナリーコードに変換された実行形式ファイルは、
    通常のテキストエディタ等では開くことが出来ない。
    実行形式ファイルは専用のバイナリーエディタを用いて開く。

(注) 2進数表示のバイナリーコードは大変読み難いので、バイナリーエディタ等
    においては 16進数に変換して表示することが多い。
    現在では特別の場合を除き、バイナリーコードを直接編集する必要性は生じない。

10進数 2進数 16進数
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 10000 10




 各プログラム言語について ソースファイルの記述例





[1] 二つの文字列 ABCDEFGHIJKLMNOPQRSTUVWXYZ と 0123456789 を行別に表示する。


C言語の例

ファイル名 MyFile1.c

[ ディスプレイに出力するとき ]
-----------------------------------------
#include <stdio.h>

void main(void)
{
   char *x1, *x2;
   x1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   x2="0123456789";
   printf("%s \n", x1);
   printf("%s \n", x2);
}
-----------------------------------------

(注) プログラム第一行の #include <stdio.h> は、標準入出力ファイルの挿入を指示するコマンドで、
    プリプロセッサ制御文と呼ばれる。
    すなわち定型的に使用される既成のプログラム群が、このコマンドにより最初に挿入される。
    現在では、コンピュータを制御するための数多くの既成プログラム群があり、それらは系統的に整理され
    関数として幅広く提供されている。
    それら既成プログラムを使用可能にするために、プリプロセッサ制御文で指定する。

(注) プログラム中の void main (void) {  }main(メイン)関数 と呼ばれる。
    C言語のプログラムは、必ず一つの main 関数が存在しなければならない。
    プログラムにおける関数とは、独立した処理プログラムの一つの単位を指し、
    一般的には他のプログラムから呼び出して用いることが可能であり、
    また 他のプログラムに対して、処理(値)を渡すこともできる。
    ただし void は、値を返さない関数の型を意味し、この指定では他のプログラムからは
    呼び出し不能であるが、他のプログラムに値を渡すことは可能な関数となる。
    したがって main 関数は、他のプログラムに対して値を渡すのみで、呼び出されることはない。
    上記のプログラムにおいて printf ( ) は、ディスプレイ画面に変数を出力処理するための
    関数としての既成プログラムを呼び出している。

(注) プログラム中の chr は文字列型宣言子である。
    ここでは変数 x1x2 をそれぞれ文字列型変数として用いることを宣言している。
    C言語の場合、文字列型を宣言するときは、各変数の前に 「 * 」 が必要である。
    変数に文字列を格納する際には、文字列を 「 " 」 と「 " 」 で囲うこと。
    C言語系のプログラムにおいては、文の終わりに必ずセミコロン 「」 を記す。
    また小文字を主に用いる習慣がある。
    なお C言語系のプログラムでは、大文字と小文字は区別される。

(注) 関数 printf ("%s \n",x1) は、二つの変数 "%s \n" と x1 を受け取っている。
    printf 関数内の %s は文字列の出力制御指定子であり、\n は改行の指定である。
    すなわち 文字列変数 x1 の内容が出力され、改行される。

(注) Windows または MS-DOS 系のシステムにおけるC言語ソースファイルの拡張子は、「.c 」 とする。
    なお C++ のときの拡張子は、「.cpp 」 とする。 ( これは大文字でも可。)

(注) C言語のソースファイルは、コンパイラを用いて実行形式ファイル(.exe)に変換する必要がある。


[ C ドライブのハードディスクにファイル出力するとき ]
---------------------------------------------
#include <stdio.h>

void main(void)
{
   FILE *fp;
   char *x1, *x2;
   fp = fopen("c:file1.txt", "w") ;
   x1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   x2="0123456789";
   fprintf(fp,"%s \n", x1);
   fprintf(fp,"%s \n", x2);
   fclose(fp);
}
---------------------------------------------

(注) プログラムの中、FILE *fp において fp はファイルを指定する変数として宣言している。
    C言語の場合、ファイルを指定する変数を宣言するときは、変数の前に 「 * 」 が必要である。
    この変数 fpfprintf 関数や fclose 関数に渡される。
    なお fprintf 関数 は、ファイルに変数の内容を出力処理するための関数であり、
    fclose 関数は、ファイルを閉じる処理をするための関数である。

(注) 関数 fopen ("c:file1.txt","w") は、二つの変数 "c:file1.txt" と "w" を受け取っている。
    fopen 関数内の file1.txt は出力ファイル名である。
    すなわち fopen ("c:file1.txt","w") は、C ドライブのハードディスク上に
    テキストファイル file1.txt を作成して開く。
    ここで "w" は上書きモードを指定している。 書き込みモードのときは "a" とする。

(注) 関数 fprintf (fp ,"%s \n",x1) は、三つの変数 fp"%s \n"x1 を受け取っている。
    fprintf 関数内の fp は出力ファイルの指定である。

(注) 関数 fclose (fp) は、ファイル fp を閉じる。

(注) C言語のソースファイルは、コンパイラを用いて実行形式ファイル(.exe)に変換する必要がある。





JavaScript(ジャバ スクリプト)の例

ファイル名 MyFile1.htm
-------------------------------------------
<html>
<body>

<script language="JavaScript">
    x1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
    x2 = "0123456789" ;
    document.write(x1, "<br>") ;
    document.write(x2, "<br>") ;
</script>

</body>
</html>
-------------------------------------------

(注) JavaScript は HTMLファイル中のスクリプトブロック内に直接記述することが出来る。
    スクリプトブロックとは、HTMLタグ <script language="JavaScript"> と </script> で
    囲まれた領域のことである。

(注) document.write ( ) は、画面に変数の内容を表示するための関数に該当する。
    document.write (x1, "<br>") では、二つの変数 x1 と "<br>" を受け取っている。
    すなわち 変数 x1 の内容が表示され、改行される。 ( <br> は HTMLの改行コマンド。)

(注) JavaScript のプログラムにおいては、文の終わりに必ずセミコロン 「」 を記す。

(注) スクリプトブロック内では、大文字と小文字は区別される。

(注) JavaScript では、変数に対して型宣言をする必要はない。

(注) JavaScript は、インタプリタ方式なのでコンパイラは必要なく、ソースファイルから直接に実行可能である。





HTML(エッチティーエムエル)の例

ファイル名 MyFile1.htm
------------------------------------
<html>
<body>

ABCDEFGHIJKLMNOPQRSTUVWXYZ <br>
0123456789 <br>

</body>
</html>
------------------------------------

(注) HTMLにおいては、 <html></html> 並びに <body></body> などをタグという。
    ここで <html><body> などを開始タグ、 スラッシュの入っている </html></body>
    などを終了タグという。この開始タグと終了タグは、必ず対になるように記述する。

(注) HTML本文は、<body></body> の間の領域に記す。 <br> は改行タグである。

(注) HTMLプログラムのコマンドにおいては、大文字と小文字は区別されない。

(注) Windows または MS-DOS 系のシステムにおける HTMLソースファイルの拡張子は、「.html
    または 「.htm 」 とする。 ( これは大文字でも可。)

(注) HTML は、インタプリタ方式なのでコンパイラは必要なく、ソースファイルから直接に実行可能である。





Java (ジャバ)の例

Applet(アプレット)側のファイル名 MyFile1.java
----------------------------------------------
import java.applet.* ;
import java.awt.* ;

public class MyFile1 extends Applet
{
   public void paint(Graphics gr)
   {
      String x1, x2 ;
      x1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
      x2 = "0123456789" ;
      gr.drawString(x1, 20,30) ;
      gr.drawString(x2, 20,50) ;
   }
}
----------------------------------------------

(注) Applet(アプレット)とは、HTMLから呼び出されて Webブラウザ内で実行される Javaプログラム
    のことをいう。
    Applet は一種のクラスファイル(.class)であって、実行形式ファイル(.exe)とは異なり
    単独では実行出来ない。
    クラスとは、プログラムの構成単位のことであり、それ自身も小さなプログラムとして独立に
    ファイル管理されることが多い。クラスの内容は主にメソッドなどからなる。
    メソッドとは、Java において関数に該当するプログラム単位のことを指す。

(注) プログラム中の import は既成のプログラム群を用いるための指定である。
    import java.applet.* は、アップレット関係の既成プログラムを用いることを指定している。
    import java.awt.* は、ウィンドウ画面関係の既成プログラムを用いることを指定している。

(注) Java のプログラムにおいては、文の終わりに必ずセミコロン 「」 を記す。

(注) public class MyFile1 extends Applet { } は、クラスファイル名が MyFile1
    アップレットであることを定義している。
    このアップレット領域内にメソッドなどのプログラムを記述する。
    public は、アップレットが他のプログラムから呼び出し可能であることを指定している。

(注) プログラムの中、String は文字列宣言子である。
    すなわち 変数 x1x2 は文字列型として用いることをを宣言している。

(注) public void paint (Graphics gr) { } は、アップレットの画面 gr を指定して
    作成するためのメソッドである。
    Java においては、画面のような対象を、一般にオブジェクトという。
    ここでは gr を、画面を指定するオブジェクト名として用いている。

(注) gr.drawString ( ) は、gr で指定された画面に、変数の内容を表示するためのメソッドである。
    gr.drawString (x1, 20, 30) の場合、文字列型変数 x1 の内容を、表示領域の左端から
    横方向 20 ピクセル,上端から縦方向 30 ピクセル の位置に表示する。

(注) Java のプログラムでは、大文字と小文字は区別される。

(注) Windows または MS-DOS 系のシステムにおける Javaソースファイルの拡張子は、「.java 」 とする。

(注) Java のソースファイルは、コンパイラを用いてクラスファイル(.class)に変換する必要がある。


HTML側のファイル名 MyFile1.htm
------------------------------------------------------------------
<html>
<body>

<applet code="MyFile1.class" width=500 height=300> </applet>

</body>
</html>
------------------------------------------------------------------

(注) HTML側ファイル中、タグ内の数字 500300 は、ピクセル単位での Applet 表示範囲指定である。
    ここでは、幅が 500 ピクセル,高さを 300 ピクセル に指定している。

(注) Java は JavaScript のように HTMLファイル中に直接記述することが出来ないために、
    別に HTMLファイルを作成し、そこから Javaで作られたクラスファイルを呼び出す方式をとる。

(注) 異なる CPU をもつコンピュータ機種間での互換性を維持するために、Javaコンパイラで出力される
    Applet は、他言語コンパイラとは異なり、CPU 固有の機械語まで変換されずにバイトコードと呼ばれる
    中間のコードで記述されたクラスファイルとなっている。
    実行するときは、HTMLファイル側から Applet が呼び出されたとき、Webブラウザに組み込まれて
    いる Java仮想マシンが、Applet のバイトコードを CPU 固有の機械語に逐次変換しながら
    インタプリタ方式で実行する。








[2] 二つの実数 x 1 と x 2 の加減乗除の計算結果を行別に表示する。


C言語の例

ファイル名 MyFile2.c

[ ディスプレイに出力するとき ]
-----------------------------------------
#include <stdio.h>
#include <math.h>
#include <errno.h>

void main(void)
{
   double x1, x2, wa, sa, seki, syo ;
   x1 = 8153.687 ;
   x2 = 5382.249 ;
   wa = x1 + x2 ;
   sa = x1 - x2 ;
   seki = x1 * x2 ;
   syo = x1 / x2 ;
   printf(" %f \n", wa) ;
   printf(" %f \n", sa) ;
   printf(" %f \n", seki) ;
   printf(" %f \n", syo) ;
}
-----------------------------------------

(注) プログラム第二行と第三行の #include <math.h>#include <errno.h> は、
    数学関数ライブラリの挿入を指示するプリプロセッサ制御文である。

(注) プログラム中、double は倍精度実数型変数の宣言子である。
    すなわち変数 x1,x2,wa,sa,seki,syo は倍精度実数型変数として用いられる。
    倍精度実数の有効桁数は 15桁である。
    なお プログラムにおける実数とは、小数点付の数のことを指す。

(注) 関数 printf (" %f \n",wa) は二変数 " %f \n" と wa を受け取っている。
    printf 関数内の %f は実数型変数値の出力指定である。
    整数型変数値の場合は %d とする。
    なお プログラムにおいて整数とは、小数点の付かない数のことを指す。


[ C ドライブのハードディスクにファイル出力するとき ]
--------------------------------------------
#include <stdio.h>
#include <math.h>
#include <errno.h>

void main(void)
{
   FILE *fp ;
   double x1, x2, wa, sa, seki, syo ;
   fp=fopen("c:file2.txt", "w") ;
   x1 = 5382.249 ;
   x2 = 8153.687 ;
   wa = x1 + x2 ;
   sa = x1 - x2 ;
   seki = x1 * x2 ;
   syo = x1 / x2 ;
   fprintf(fp, " %f \n", wa) ;
   fprintf(fp, " %f \n", sa) ;
   fprintf(fp, " %f \n", seki) ;
   fprintf(fp, " %f \n", syo) ;
   fclose(fp) ;
}
--------------------------------------------

(注) 関数 fopen ("c:file2.txt","w") は、二つの変数 "c:file1.txt" と "w" を受け取っている。
    fopen 関数内の file2.txt は出力ファイル名である。
    すなわち fopen ("c:file2.txt","w") は、C ドライブのハードディスク上に
    テキストファイル file2.txt を作成して開く。
    ここで "w" は上書きモードを指定している。 書き込みモードのときは "a" とする。

(注) 関数 fprintf (fp ,"%f \n",wa) は、三つの変数 fp"%f \n"wa を受け取っている。
    fprintf 関数内の fp は出力ファイルの指定である。

(注) 関数 fclose (fp) は、ファイル fp を閉じる。





JavaScriptの例

ファイル名 Myfile2.htm
--------------------------------------
<html>
<body>

<script language="JavaScript">
    x1 = 5382.249 ;
    x2 = 8153.687 ;
    wa = x1 + x2 ;
    sa = x1 - x2 ;
    seki = x1 * x2 ;
    syo = x1 / x2 ;
    document.write(wa, "<br>") ;
    document.write(sa, "<br>") ;
    document.write(seki, "<br>") ;
    document.write(syo, "<br>") ;
</script>

</body>
</html>
--------------------------------------

(注) JavaScript は HTMLファイル中のスクリプトブロック内に直接記述することが出来る。
    スクリプトブロックとは、HTMLタグ <script language="JavaScript"> と </script> で
    囲まれた領域のことである。

(注) document.write ( ) は、画面に変数の内容を表示するための関数に該当する。
    document.write (x1,"<br>") では、二つの変数 x1 と "<br>" を受け取っている。
    ここでは、変数 x1 の内容が表示され改行される。 ( <br> は HTMLの改行コマンド。)

(注) スクリプトブロック内では、大文字と小文字は区別される。

(注) JavaScript では、変数に対して型宣言をする必要はない。

(注) JavaScript は、インタプリタ方式なのでコンパイラは必要なく、ソースファイルから直接に実行可能である。





Javaの例

Applet (アプレット) 側のファイル名 MyFile2.java
--------------------------------------------------
import java.applet.* ;
import java.awt.* ;
import java.lang.Math ;

public class MyFile2 extends Applet
{
   public void paint(Graphics gr)
   {
      double x1, x2, wa, sa, seki, syo ;
      String St_wa, St_sa, St_seki, St_syo ;
      x1 = 5382.249 ;
      x2 = 8153.687 ;
      wa = x1 + x2 ;
      sa = x1 - x2 ;
      seki = x1 * x2 ;
      syo = x1 / x2 ;
      St_wa = Double.toString(wa) ;
      St_sa = Double.toString(sa) ;
      St_seki = Double.toString(seki) ;
      St_syo = Double.toString(syo) ;
      gr.drawString(St_wa, 20,30) ;
      gr.drawString(St_sa, 20,50) ;
      gr.drawString(St_seki, 20,70) ;
      gr.drawString(St_syo, 20,90) ;
   }
}
--------------------------------------------------

(注) double は倍精度実数型変数の宣言子である。
    すなわち 変数 x1,x2,wa,sa,seki,syo は、倍精度実数型として用いることを宣言している。

(注) String は文字列型変数の宣言子である。
    すなわち 変数 St_wa,St_sa,St_seki,St_syo は、文字列型として用いることを宣言している。

(注) プログラム中、Double.toString ( ) は、実数型から文字列型に変数の型変換を行う。
    St_wa = Double.toString (wa) は、実数型 wa を文字列型に変換したうえで、
    文字列型 St_wa に格納している。
    アップレット表示領域には、実数型や整数型の変数の内容を直接表示できないので、
    必ず文字列型に変換する必要がある。
    gr.drawString ( ) 内の数字は、ピクセル単位での文字表示位置の指定である。
    gr.drawString (St_wa,20,30) の場合、文字列型変数 St_wa に格納されている文字を
    表示領域の左端から横方向 20 ピクセル,上端から縦方向 30 ピクセル の位置に表示する。


HTML側のファイル名 MyFile2.htm
-----------------------------------------------------------------
<html>
<body>

<applet code="MyFile2.class" width=500 height=300> </applet>

</body>
</html>
-----------------------------------------------------------------

(注) HTML側ファイル中、タグ内の数字 500300 は、ピクセル単位での Applet 表示範囲指定である。
    ここでは、幅が 500 ピクセル,高さを 300 ピクセル に指定している。

(注) Java は JavaScript のように HTMLファイル中に直接記述することが出来ないために、
    別に HTMLファイルを作成し、そこから Javaで作られたクラスファイルを呼び出す方式をとる。