自分磨きのITノート

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

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#でプログラミング入門 ー 変数のスコープ

前回は、関数まで説明しました。

今回は、「変数のスコープ」です。スコープとは、変数の有効な範囲のことです。プログラムからはそのスコープ内にある変数しか使用できません。スコープ外にプログラムが移るとその変数は破棄されたりします。

プログラムでいう範囲の大きさを書きますと、
グローバル変数 > クラス内変数 > 関数内変数 > 条件または繰り返し文内変数・・・
と、なります。

※ クラスの変数は、「アクセス修飾子」で範囲が変わるのでクラスの説明を参照ください。


さっそく例を見てみましょう。

C#

using System;
    class ScopeTest
    {
        public static int glo = 1;/*グローバル変数*/
        private static int mem = 2;/*メンバー変数*/
        static void Main()
        {
            int fnc = 3; /* 関数内だけの変数 */
            for (int i=0; i <= 2; i++)
            {
                int loop = 4; /* 繰り返し内だけの変数 */
                if (loop == 4)
                {
                   int jyo = Hoge(); /* 条件内だけの変数 */
                    Console.WriteLine("jyo={0}",jyo);
                }
                Console.WriteLine("loop={0}", loop);
            }
            Console.WriteLine("fnc={0}", fnc);
            Console.WriteLine("mem={0}", mem);
            Console.WriteLine("glo={0}", glo);
            Console.ReadLine(); // プログラムをここでストップさせるためのもの
        }
        static int Hoge()
        {
            int fnc = 5;
            return fnc;
        }

    }

出力結果

jyo=5
loop=4
jyo=5
loop=4
jyo=5
loop=4
fnc=3
mem=2
glo=1

それほど難しいものではないと思いますが、スコープ範囲外で変数を使おうとすると、コンパイルエラーとなり実行できないと思います。

条件内や繰り返し文内の変数はその中でしか使用することができません。繰り返し文内の変数は2度目プログラムがくると初期化されてしまいます。

同じスコープ内で同じ名前の変数を持つことができません。スコープが別だとプログラム上同じ変数名をつけられます。

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