Document

プログラミング論 第3回 担当:山口崇志
C#の基礎
(開発環境, 変数, 制御構造, 配列)
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
C#の特徴
 C#言語(2000~)
 オブジェクト指向プログラミング言語
 プラットフォームに依存しない開発
 記述形式:C言語ベース
 言語モデル:Delphi
 MicrosoftのJava対抗?
 C#自体はオープンな規格である
 Unity, PlayStation Suite, Mono
 Microsoft .NET Framework
 共通言語基盤に準拠するプログラムの実行・開発環境
 共通言語基盤:CLI (Common Language Infrastructure)
 インタプリタ方式とコンパイラ方式併用
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
.NET Frameworkと開発実行フロー
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
Microsoft Visual Studio
 商用の統合開発環境
 RAD開発環境としてはかなり早い時期に登場
 複数言語のサポート
 Java, C++, Visual Studio, ASP.NET
 共通のデータ型(CTS: Common Type System)
 Microsoft Windowsとの高い親和性
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
プロジェクトとnamespace
 プロジェクト
 ソースコード管理
 リソース管理
 ライブラリ管理
 namespace
 ライブラリ管理の一種
 Javaのpackageと同様
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
プロジェクトの作成と管理
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
プロジェクトの新規作成
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
レイアウトの変更
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
GUIオブジェクトの追加
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
GUIオブジェクトのプロパティ編集
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
コンパイルと実行
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
デバッグ画面
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
ソースコードの確認(Program.cs)
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
プロジェクトファイルの確認
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
クラスの作成
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
新規クラスの設定
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
ソースコードの編集(HelloControlクラス)
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
ボタンの追加
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
イベントの追加と編集
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
C#の言語仕様
 言語仕様自体は構文も含めJavaと非常に近い
 参考
 Java 開発者のための C# プログラミング言語

http://msdn.microsoft.com/ja-jp/library/ms228358(v=vs.80).aspx
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
変数宣言
 基本構文はJavaと同様
 C#での書式
 アクセス修飾子 変数型 識別子;
 アクセス修飾子を省略した場合はprivate
 Javaでの書式
 アクセス修飾子 変数型 識別子;
 アクセス修飾子を省略した場合は”アクセス修飾子無し”
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
変数宣言
 変数制限の書式に若干制約がある
 C#での書式
 アクセス修飾子 変数型[] 識別子;
 アクセス修飾子を省略した場合はprivate
 Javaでの書式
 アクセス修飾子 変数型[] 識別子;
 アクセス修飾子 変数型 識別子[];
 アクセス修飾子を省略した場合は”アクセス修飾子無し”
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
C#のデータ型
予約語
sbyte
byte
short
ushort
int
uint
long
ulong
char
float
double
bool
decimal
string
実態
System.SByte
System.Byte
System.Int16
System.UInt16
System.Int32
System.UInt32
System.Int64
System.UInt64
System.Char
System.Single
System.Double
System.Boolean
System.Decimal
System.String
http://www.edu.tuis.ac.jp/~tyamagu/pl/
説明
符号付き8ビット整数
符号なし8ビット整数
符号付き16ビット整数
符号なし16ビット整数
符号付き32ビット整数
符号なし32ビット整数
符号付き64ビット整数
符号なし64ビット整数
文字型
単精度実数
倍精度実数
論理型(falseとtrueのみ)
10進型
文字列型
Javaの場合
byte
short
int
long
char
float
double
boolean
String
東京情報大学 ESCLab.
演算子とフロー制御
 書式もほぼJavaと同様だがバージョンによりC#、
Java共に使える書式が若干異なる
 キャストの方式が異なる
 C#はほぼBoxingが自動
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
クラスの定義
 継承やインターフェイスの実装等、基本構造は
Javaと同様だが書き方が異なる
 C#での書式




修飾子
修飾子
修飾子
修飾子
class 識別子
abstract class 識別子
class 識別子 : 親クラス
class 識別子 : interface1, ...
 Javaでの書式




修飾子
修飾子
修飾子
修飾子
class 識別子
abstract class 識別子
class 識別子 extends 親クラス
class 識別子 implements interface1, ...
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
構造体(struct)
 C#ではCやC++と同様に構造体が利用できる
 構造体とクラスの違い




複数の要素を持つ変数
C#での位置付けは簡易的なクラス
抽象化できない
若干クラスよりも効率的
 C#での書式
 修飾子 struct 識別子
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
メソッドの定義
 書式もほぼJavaと同様
 C#での書式
 修飾子 戻値の型 メソッド名(引数)
 paramキーワードにより不特定数の引数が利用可能
 Javaでの書式
 修飾子 戻値の型 メソッド名(引数)
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
通常課題
 通常課題:次のアプリケーションを作成せよ。
フォームを1つ表示する
フォームのタイトルはHelloとする
フォーム上にはLabel, TextBox, Buttonを1つ配置する
起動時にLabelに表示される文字列は”hello text here.”
とする
 起動時にTextBoxに表示される文字列は”World”とする
 Buttonに表示される文字は”Say Hello !!”とする
 ButtonをクリックするとLabelの文字列が次のようになる
 ”Hello [TextBoxに表示されている文字列] !!”




http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
追加課題
 前回のMVCモデルを用
いたJavaのプログラム
を参考に通常課題の要件
を満たすアプリケーショ
ンを作成せよ。
 なおC#で実装した場
合、各クラスのフィール
ドとメソッドは右図のよ
うになる。
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.
発展課題
 通常課題:次のアプリケーションを作成せよ。
 追加課題のHelloModelおよびHelloControlerを用いる
 設定フォームと表示フォームの2つを持つ
 設定フォームのタイトルは設定とする
 表示フォームのタイトルはHelloとする
 設定フォーム上にはTextBox, Buttonを1つ配置する
 表示フォーム上にはLabelを1つ配置する
 表示フォーム上のLabelは次の文字が表示される
 ”Hello [TextBoxに表示されている文字列] !!”
 起動時は設定フォームが表示される
 起動時にTextBoxに表示される文字列は”World”とする
 Buttonに表示される文字は”Say Hello !!”とする
 Buttonをクリックすると表示フォームが表示される
http://www.edu.tuis.ac.jp/~tyamagu/pl/
東京情報大学 ESCLab.