gcmlcm Class を定義

GCM=8  LCM=96

C# 言語で一般的な方法で gcmlcm Class を定義します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. static メソッドを定義 では、static メソッドを定義した Class を紹介しました。
    しかし static メソッドよりは、ここで説明する Automatic メソッドの方が一般的かも知れません。
    int d1,d2; は class gcmlcm のメソッドから共通に参照されるデータフイールドです。
  2. public gcmlcm(int n, int m) は Constructor で、new でインスタンス化するときに呼び出されます。
    Constructor は Object Class の名前と同じ関数名で定義します。
    ここでは gcmlcm の共通領域(d1, d2)にパラメータで渡された値を格納します。
  3. ~gcmlcm() は Destructor で、Object Class が終了するときに自動的に呼び出されます。
    Destructor は Constructor の名前の前にチルダ(~)を付けて定義します。
    今回は Destructor で行うことは何も無いので省略してもかまいません。
  4. public int gcm() と public int lcm() は最大公約数と最小公倍数を求めるメソッドです。
  5. Main() では new で gcmlcm Class をインスタンス化します。
    new は本来メモリ領域を割り当てる命令ですが、ここではメモリ領域に Object Class を割り当てて Constructor を実行します。
    Static 宣言されていない Object Class は、インスタンス化して始めて呼び出すことが出来るようになります。
    C#では new で割り当てた領域は、ガベージコレクション(Garbage Collection)が起動して自動的に開放してくれます。
    従って、C言語の delete に相当する命令は使われません。
  6. glcm.gcm() と glcm.lcm() で GCM と LCM を計算して表示しています。
    GCM, LCM の説明は 分数の計算 を参照して下さい。
    System.Console.ReadLine(); は表示を確認するために追加した命令です。
  7. ソースコードです。
    /*********************************************/
    /*★ C# GCM LCM  Object Class    前田 稔 ★*/
    /*********************************************/
    using System;
    
    class console
    {
        public static int Main()
        {
            gcmlcm  glcm = new gcmlcm(24,32);
    
            Console.WriteLine("GCM={0}  LCM={1}",glcm.gcm(),glcm.lcm());
            System.Console.ReadLine();
            return 0;
        }
    }
    
    class gcmlcm
    {
        int     d1,d2;
    
        public gcmlcm(int n, int m)
        {
            d1= n;
            d2= m;
        }
        ~gcmlcm()
        {
        }
    
        public int gcm()
        {
            int n,m;
            n= d1;
            m= d2;
            while(n!=m)
            {   if (n>m)    n-= m;
                else        m-= n;
            }
            return n;
        }
    
        public int lcm()
        {
            int     wk;
            wk= gcm();
            return d1*d2/wk;
        }
    }
    

ファイルを分ける

  1. Main() メソッドと Object Class のファイルを分けてみましょう。
    分けるのは簡単で、Console.cs に加えて GcmLcm.cs をプロジェクトに追加するだけです。
  2. Console.cs ファイルです。
    /****************************************************/
    /*★ gcmlcm Class を呼び出す Main 関数    前田 稔 ★*/
    /****************************************************/
    using System;
    
    class console
    {
        public static int Main()
        {
            gcmlcm  glcm = new gcmlcm(24,32);
    
            Console.WriteLine("GCM={0}  LCM={1}",glcm.gcm(),glcm.lcm());
            System.Console.ReadLine();
            return 0;
        }
    }
    
  3. GcmLcm.cs ファイルです。
    /************************************/
    /*★ C# gcmlcm Class    前田 稔 ★*/
    /************************************/
    using System;
    
    class gcmlcm
    {
        int     d1,d2;
        //Constructor
        public gcmlcm(int n, int m)
        {
            d1= n;
            d2= m;
        }
        //Destructor
        ~gcmlcm()
        {
        }
     
        public int gcm()
        {
            int n,m;
            n= d1;
            m= d2;
            while(n!=m)
            {   if (n>m)    n-= m;
                else        m-= n;
            }
            return n;
        }
    
        public int lcm()
        {
            int     wk;
            wk= gcm();
            return d1*d2/wk;
        }
    }
    
  4. [追加][既存項目]からソースファイル(Console.cs と GcmLcm.cs)をプロジェクトに加えて下さい。
    メニューの [デバッグ] から [デバッグ開始] または [デバッグなしで開始] を選択すれば実行されます。
    ファイルを分けたからと言って、今までと何も変わりません。
    C/C++ でも同様のプログラムを作成しています。
    C# では簡単ですが C/C++ では様子が違います。
    C/C++ のプログラムは ref class を参照して下さい。
  5. コマンド・プロンプトから分割コンパイルする方法です。
    一般的なコマンド・プロンプトからのコンパイルは CLIで操作 を参照して下さい。
    1. 次のファイルを、例えば C:\TMP に格納します。
      ・Console.cs
      ・GcmLcm.cs
    2. スタートメニューから[すべてのプログラム][Visual C++ 2005 Express Edition][Visual Studio Tools] [Visual Studio 2005 コマンド プロンプト] から起動します。
    3. Console.cs と GcmLcm.cs をコンパイルして Console.exe を作成します。
      CD C:\TMP
      CSC Console.cs GcmLcm.cs
    4. プログラムを実行します。
      Console.exe

超初心者のプログラム入門(C# Frame Work)