自分磨きのITノート

プログラミング(C#、VB.NET)言語やデータベースの役立つ情報を初心者から中級者向けに発信します。

プログラミング入門

C#でプログラミング入門 - クラスとは

前回は、構造体を説明しました。今回は、いよいよクラスです。

今、殆どのプログラミング言語(C#以外)でもクラスを使ってプログラミングが出来ます。
ここ十数年、長く使われ続けているクラスは、プログラミングを行う上で重要な存在です。

クラスは、抽象化した構造を作るのに向いています。モノを作るために必要な設計図みたいなものです。例えば、車のベースの設計図があるとしたら、それから様々な車種の設計図を派生して作れるようなものに近いです。設計図(クラス)から実物になったものをオブジェクトインスタンスと呼んだりします。

クラスの利用は、変数や関数をグループ化して独自の型を作成できます。

Windows上で役に立つツールを手軽に作りたい!となると、.Net Frameworkを利用することになります。.Netは、Windowsを操作するDLL(API)をラップしたクラスがたくさんあります。それにはある程度クラスは避けて通れません。しかし、最初からすべて理解することは難しいと思います。でも、「なんちゃってプログラム」でも構文エラーにならなければ動いてしまいます(^∀^)

最初は、いろいろクラスに触れながら「どう動く」を理解していけばよいのです。
以下、クラスの代表的な3つの機能を紹介していきます。

・カプセル化(隠ぺい化)

内部の動きを隠すことができる。⇒利用者は、やりたいことの関数を呼べば、内部の動きを気にする必要がない。
外部から内部変数の直接な変更をできないようにして、主コードと分離ができる。⇒汎用性が高くなる。

・継承

親(基底クラス)の属性/関数/イベントを受け継いだ子(継承クラス)が作れる。

・多態性

基底クラスのオブジェクトに継承したクラスのオブジェクトを代入し、振る舞いを変化させる「ポリモーフィズム(多態性)」が使える。

他にも、クラスにはたくさんの機能があります。何ページにもなる本があるくらいですから。
オブジェクト指向(クラス及び構造体)プログラミングは、追々進めていきましょう。

クラスの構文から見ていきましょう。

クラスの構造

アクセス修飾子 Class クラス名 {
  内部変数
 イベント定義  プロパティ定義  メソッド定義etc }

クラスの利用方法


続きを読む

Windowsプログラミング入門 - (無償版)Visual Studio Community 2017インストールとプロジェクト作成

Windows上で動作するアプリを作成する場合、画面(ユーザインターフェース:UI)をソースコードでゴリゴリ書くのは非効率です。Microsoftから提供されている統合開発環境(IDE)Visual Studio(以下VS)を使えば色々なツールやUIデザイナーが付いてきて便利です。

.Net Framework上で動作するアプリケーションであれば、無償(無料)で開発することができます。学習用途で使用するなら、VSのCommunityエディションで十分です。今回はインストール方法を説明します。

また、VSのエディションについて下記にまとめてます。


Visual Studioエディション
エディション名  説 明
Community 学生、個人、中小企業、非営利団体向け。Professionalと同等の機能が使えるので、Windowsプログラミング入門するなら最適です。
個人で利用するならこれがオススメです(商用利用は制限あり)。
Express 誰でも利用可能。商用利用も可能。
VSについている機能・ツールやテンプレートは少ないですが、普通にソースコードを実行ファイル・ライブラリにコンパイルできます。2015シリーズは、デスクトップ・Win10アプリとWEBアプリの開発できるが、2017シリーズはデスクトップのみで、Expressは2017シリーズで最後になる模様。
Professional ほぼ開発する上で困ることのない基本エディション。
Team Fundation Serverの連携ができる。サードパーティ製品利用する場合もこのエディションからが多い。
Enterprise テスト・分析やXamarin拡張機能など豊富な拡張機能が使える。値段が高いのでほしい機能があるか要確認。


Visual Stadio Community 2017のインストール方法

続きを読む

C#でプログラミング入門 - 構造体

前回は、変数のスコープをやりました。今回は、構造体です。

構造体は、いくつもの変数をひとまとめにしてグループ化することが出来ます。後に説明するクラスと違い値型であるのが特徴的です。(値型については、前回の関数の参照型渡しをご覧ください)また、クラスより軽量であるため、大量のデータを扱うときに使用すれば、高速に処理が出来ます(差がほとんど感じられない場合もありますが)。クラスと使い分けて使用できれば、上級プログラマーの仲間入りですね(・∀・)つ

構文

アクセス修飾子 struct 構造体の名前{
        アクセス修飾子  変数;
        アクセス修飾子  変数;・・・
        public 構造体名(引数){
            初期化;
        }
    }

C#

public class Kouzoutai{
    public struct person{
        public string name;
        public int age;
        //private weight; // privateを書くとコンパイラによってはエラー
        public person(string nm,int ag){
            name=nm;
            age=ag; 
        }
    }
    public static void Main(){
        person p1;
        p1.age = 15;
        p1.name = "hoge";
        System.Console.WriteLine("name={0},age={1}",p1.name,p1.age);
        person p2 = new person("foo" ,23);
        System.Console.WriteLine("name={0},age={1}",p2.name,p2.age);
    }
}

結果

name=hoge,age=15
name=foo,age=23


最初に、personという構造体を定義しています。変数の前にpublicというアクセス装飾子が付いています。これは、外部から変数にアクセス出来ることを意味しています。詳しくは、クラス変数のスコープなどで説明します。privateというアクセス装飾子もありますが、構造体で使うとコンパイルエラーになる場合があります。

person構造体内にnameage変数を定義しています。

下にはperson(){~};と記述しています。これは関数と違って少し特殊なものです。コンストラクタと呼び、構造体をnewしたときに処理されます。構造体の初期化などに使用します。

main関数内では、「初期化せずに値をセットする方法」と「newして初期化する方法」のサンプルです。構造体の内部変数への参照は、ドット(.)を使い、"構造体変数名.内部変数"と書きます。
newもコンストラクタが呼ばれ値がセットされている様子が分かります。

最後に、Console.WriteLine関数でフォーマットを指定して出力しています。
WriteLineの第二引数が"{0}"に入り、第三引数が"{1}"に入る書き方です。第四引数もあれば"{数字}"で追加できます。このフォーマットというものは、固定の文字列の一部を加えるときに重宝します。フォーマットされた文字列を返すString.Format(文字列,第一引数,第二引数・・・)関数でも同じようなことが出来ます。


構造体の余談

続きを読む

C#でプログラミング入門 ー 関数

前回は、配列をやりました。

今回は、関数(メソッド)です。プログラミングの関数は、主のプログラム部分とは別の場所に決まった処理を定義しておき、いつでも利用できるようにしておくものです。算数のように変数に値を渡して、方程式のように使用することもできます。記事の随所にも出てきた数値を文字列にするToString()も関数です(クラスに属する関数)。

構文は以下のようになります。

関数(メソッド)の書き方

戻り値の型 関数名(引数部){
 関数内の処理;
 return 戻り値;
}

早速、関数を使ったサンプルソースです。

C#

public class kansu{
    // 決まった文字列を出力するメソッド
    public static void outputLine(){
        System.Console.WriteLine("=-=-=-=-=");
    }
    // 三角形の面積を計算するメソッド
    public static double calc_menseki_sankaku(int teihen, int takasa){
        double ret = (teihen*takasa)/2 ;
        return ret;
    }
    public static void Main(){
        // 文字列を出力するメソッドの呼び出し
        outputLine();
        // calc_menseki_sankakuを呼び出している
        double kekka = calc_menseki_sankaku(5,10);
        System.Console.WriteLine(kekka.ToString());
        // もう一度 文字列を出力するメソッドの呼び出し
        outputLine();
    }
}

結果

=-=-=-=-=
25
=-=-=-=-=
1つ目のoutputLine()関数は、値を戻さない関数です。main関数と同じく値を戻さない処理だけの関数は頭にvoidを記述します。(publicstaticは、"クラス"の記事などで説明したいと思います)

関数名は、英数字とアンダーバーが使用できます。値を引き渡す(引数部)は、省略したり複数引き渡すことができます。outputLineの処理内容は、単純ですが出力結果に文字列を出力するというものです。main側から呼び出したい時は、outputLine();と記述することで、関数へプログラム処理をジャンプさせることができます。関数呼び出しは、引数がなくても括弧”( )”を忘れずにつけましょう。関数側のプログラム処理が終われば、mainへと戻ってきます。

続いて2つ目のcalc_menseki_sankaku(int ,int)関数は、三角形の面積を計算し、doubleを戻り値としています。第一引数にteihenと第二引数にtakasaの値を引数に渡して、関数内で計算しています。関数の最後で、returnを記述し、関数の戻り値型と同じ型を返しています。


複雑なプログラムをmain関数にずらずらと書いていくと、ソースコードがとても長くなり、重複する処理が多くなります。関数を用いることにより、簡素化やメンテナンス性をよくしていきます。

引数の値渡し、参照渡し

続きを読む

C#でプログラミング入門 ― 配列

前回は、繰り返し構文をやりました。今回は配列です。

配列は、一つの変数に複数の値を入れることができます。
例えば、5つの同じ型を使うとします。5つ変数を用意するのではなく、一つの変数を配列にします。そうすると変数を5つ用意したことになります。

では、ソースコードを見てみましょう。

C#

public class Hairetu{
    public static void Main(){
        int[] suji = new int[3];
        int gokei=0;
        suji[0] = 10;
        suji[1] = 20;
        suji[2] = 30;
        for (int i=0; i<suji.Length; i++){
            gokei += suji[i];
        }
        System.Console.WriteLine((gokei/suji.Length).ToString());
    }
}

結果

20

変数を配列にする場合、型の後に"[ ]"を書き、そのあとにnew int [箱の数]で配列を宣言しています。newという新しいキーワードが出てきましたが、値型の変数とは違いこう書くんだ!と覚えてください。

※ ここでは詳しく説明しませんが、配列は値型ではなく参照型なります。IEnumerableインターフェースが継承されたり、関数(メソッド)が違ったりします。 

サンプルプログラムでは、数値の箱を3つ(int[3])用意しました。
値を入れる場合は、"[ ]"の中に番号(添字)を書いて対象の箱にいれています。ちなみにこの添字は、0から始まります。3つ用意しましたので、使う添字は0~2です。

※ CやC#・VB.NET・javaの世界では、添字は、0から始まります(先頭)。しかし、ExcelのVBA・VB6は1から始まるのでご注意を!

続いてFor文です。suji変数に.Lengthと書くと、配列の数を取得できます。「配列の数だけ繰り返す」というFor条件になります。
繰り返し中では、下記の処理を記述しています。
 gokei += suji[i];
は、
 gokei = gokei + suji[i];
になり、元のgokei変数と配列の値を足して、gokei変数に代入し直しています。"+="は、値を加算したい時などによく使います。減算したい時は、”-=”です。

最後に平均を出力して終わっています。結果の数値を括弧でくくって.ToString()で文字列にしています。計算を括弧でくくっている理由は、計算結果が数値型になるためです。


配列はforeach文が使える

続きを読む
スポンサードリンク
自己紹介
【管理人】
なみやん
【コメント】
プログラムを組むことが大好きな30代男性。IT系の仕事を10年ちょいやっています。このブログを通して知識を人に伝えることによって、自分をさらに磨こうと精進しています。応援よろしくお願いします。
免責事項
当サイトで紹介しているサンプルソースコードは自由に使用いただいても結構が、自己責任でお使いください。また、記事の内容が主観的であったり、努力していますが正しくなかったりする場合がございます。読者本人の判断にお任せいたします。