講義メモ 後半

p.28 フォーマット指定子を使った変数の表示

・変数の値と文字列を連結するのは手軽だが可読性が低く、見違えやすい
・そこで、文字列の中に番号つきで置き場所を指定できるのがフォーマット指定子
・Console.WriteLineとConsole.Writeで利用可能
・書式: Console.WriteLine("フォーマット指定子を使った文字列", 値または式);
  ※ 変数は式と同じ扱いになる
・フォーマット指定子は文字列の中に「{番号}」を埋め込める仕掛けで、番号は0番からいくつでも指定できる
・例:
 Console.WriteLine("私が{0}番!", 1); //「私が1番!」と表示
 Console.WriteLine("私が{0}番!君は{1}番!", 1, 2); //「私が1番!君は2番!」と表示
 Console.WriteLine("1辺10の正方形の面積は{0}", 10 * 10);
 int n = 10; Console.WriteLine("1辺{0}の正方形の面積は{1}", n, n * n);
・フォーマット指定子の中に同じ番号を複数指定して同じ値を埋め込むこともできる
 Console.WriteLine("私が{0}番!君も{0}番!", 1); //「私が1番!君も1番!」と表示
・フォーマット指定子の番号は昇順でなくても良い
 Console.WriteLine("私が{1}番!君は{0}番!", 2, 1); //「私が1番!君は2番!」と表示

p.28 text04.cs

//p.28 text04.cs
using System; 
class Text03
{
    public static void Main() //アプリケーションの実行開始場所
    {
        int x = 10;
        Console.WriteLine("x = {0}", x); //「x = 10」と表示
        Console.WriteLine("x = {0}, xの10倍は{1}です", x, x * 10); //「x = 10, xの10倍は100です」と表示
        Console.WriteLine("{0}は{1}ですが、{2}は{1}ではありません。", "猫", "ほ乳類", "とかげ");
   }
}

p.29 桁数の指定

・フォーマット指定子の番号の後に「,桁数」を指定できる
・この桁数は「最低限で何桁とるか」のことで、表示内容が桁数を超えていると、指定が無視される
例:int x = 10; Console.WriteLine("{0, 5}", x); //前に3空白入れて「   10」と表示
例:int x = 12345; Console.WriteLine("{0, 3}", x); //桁数は無視され「12345」と表示
・空白が前に入ることを右詰めという
・桁数の前に「-」をつけると左詰めになり、空白が後ろにつく
例:int x = 10; Console.WriteLine("{0, -5}", x); //前に3空白入れて「10   」と表示

p.30 text05.cs

//p.30 text05.cs
using System; 
class Text03
{
    public static void Main() //アプリケーションの実行開始場所
    {
        int x = 10, y = 123456789;
        Console.WriteLine("12345678901234567890123456789"); //目盛り
        Console.WriteLine("{0, 10}", "abc"); //「       abc」と表示
        Console.WriteLine("{0,  5}", "def"); //「  def」と表示
        Console.WriteLine("{0,  0}", "ghi"); //「ghi」と表示
        Console.WriteLine("{0, 10}{1, 10}", "あ", "い"); //「         あ         い」と表示
        Console.WriteLine("{0,-10}{1,-10}", "あ", "い"); //「あ         い         」と表示
        Console.WriteLine("x = {0, 5}, y = {1, 3}", x, y); //「x =    10, y = 123456789」と表示
   }
}

p.30 標準書式指定文字を使った書式の指定

・フォーマット指定子の番号の後に「,桁数:書式指定文字」を指定できる
・書式指定文字によって、16進数表記や指数表示、パーセント表示などが可能
※ 書式指定文字Gは「E、Fの短い方」ではなく「数値の型や、精度指定子が指定されているかどうかに応じて、
 固定小数点表記または指数表記のいずれかのより簡潔な形式」という仕様

p.30 text05.cs

//p.30 text05.cs
using System; 
class Text03
{
    public static void Main() //アプリケーションの実行開始場所
    {
        Console.WriteLine("D{0, 10:D}", 123); //整数の10進数表示「D       123」
        Console.WriteLine("X{0, 10:X}", 123); //整数の16進数表示「X        7B」
        Console.WriteLine("E{0, 10:E}", 123.456); //指数表示「E1.234560E+002」
        Console.WriteLine("F{0, 10:F}", 123.456); //浮動小数点表示「F    123.46」
        Console.WriteLine("F{0, 10:F5}", 123.456); //浮動小数点表示(小数点以下5桁)「F 123.45600」
        Console.WriteLine("C{0, 10:C}", 123456); //通貨表示「C  \123,456」
        Console.WriteLine("N{0, 10:N}", 1234.4568); //桁区切り浮動小数点表示「N  1,234.46」
        Console.WriteLine("P{0, 10:P}", 0.05); //パーセント表示「P     5.00%
        Console.WriteLine("G{0, 10:G}", 123.456); //固定小数点表記か指数表記の簡潔の方「G   123.456」
   }
}

p.32 カスタム書式指定文字を使った書式の指定

・標準書式指定文字の代わりに「0」で先行ゼロや後続ゼロを指定したり「.」で小数点位置を指定できる
・小数点位置のみを指定するには「0」ではなく「#」を用いる
・「0」や「#」の数で「最低限で何桁とるか」を指定できる
・桁数指定と併用できる
・「0,0」または「#,#」とすることで3桁カンマ区切りができる
・p.33 text07.csの018、019行目のような複雑な指定方法もある

提出:アレンジ演習 p.33 text07.cs

・カスタム書式指定「0,0」に対して負の数-123456789を指定するとどうなるか確認しよう

講義メモ

・p.22「変数を使ってみる」から再開します

提出フォロー:アレンジ演習 p.17 myname01.cs

・各行の後方に適当なコメントを追記しよう

作成例

// myname01.cs ← メモ書き
using System; //プログラム内で用いている外部機能のありか(名前空間)を示す
class MyName01 //クラス名の宣言
{
    public static void Main() //アプリケーションの実行開始場所
    {
        Console.WriteLine("私の名前はシャア"); //カッコ内の指定内容をコンソールに表示
    }
}

p.22 変数を使ってみる

・変数はヴァリアブル(変化できるもの)の和訳で、記憶領域を確保して名前をつけたもの
・よって、データを格納できる器のイメージ
・記憶領域を確保するには大きさと用途の情報が必要で、これをデータ型という
・例えば、最もよく使われるデータ型が「int」で、1個32ビットサイズので整数用。±程度の整数を格納できる。
・C#では変数を事前に用意して用いる。この用意を「変数の宣言」という
・変数の宣言の書式: データ型 変数名;
・例: int age; //整数型変数ageの宣言
・カンマつなぎで、複数の同じ型の変数を同時に宣言できる
・例: int y, m, d; //整数型変数y,m,dの宣言(年月日用)
・変数にデータを格納することを代入といい、代入に用いるデータを値という
・代入するとその変数に以前に代入されていた値は上書きされる
・C#では2項=演算子で代入を表す
・例: int y; y = 1962; //整数型変数yの宣言と、値の代入
・例: int y; y = 1962; y = 1960; //変数yの値は1962から1960になる

p.23(代入とデータ型)

・C#ではデータ型にマッチしない値は代入できない
・例: int y; y = 3.14; //整数型変数yの宣言と、実数の代入(エラーになる)
※ 小数点以下のデータを持つ値を実数という

p.23(初期化)

・C#では宣言のみを行った変数の値は基本的に利用できない
・また、宣言と値の代入は同時に行うことが多いので、これを初期化という
・初期化の書式: データ型 変数名 = 初期値;
・例: int y = 1962; //整数型変数yを1962で初期化
・カンマつなぎで、複数の同じ型の変数を同時に初期化できる
・例: int y = 1960, m = 3, d = 10; //整数型変数y,m,dの宣言(年月日用)

p.23(変数名)

・プログラマは変数名を自由に設定できるが、業務上の理由や要請により、命名ルールが与えられることも多い。
・ルール:英大文字・小文字・数字・「_」と全角文字が利用可能だが、先頭文字は数字は禁止。
 ※ 全角文字も利用可能だが推奨されないことが多い。また、利用できない文字もある
・システムが用いるキーワード(特別な意味を持つ単語・予約語)は変数名にはできない
 ※ 予約語は小文字のみであり、予約語を大文字にした単語は変数名にできるが、推奨されない。

p.25(変数と演算)

・整数型の変数は、加算や減算などの演算に利用できる
・例: int a = 3, b = 4; int c = a + b; //変数Cの値は7になる
・例: int a = 3, b = 4; int c = a - b; //変数Cの値は-1になる

p.25 変数のデータを表示する

・C#が提供する、Console.WriteLine()メソッドを用いると、データや計算結果をコンソールに表示できる
・例: int a = 3, b = 4; Console.WriteLine(a + b); //7が表示される
・2項+演算子は複数の意味を持ち、前後両方が数値(または数値型の変数)であれば加算
・ではなくて、前後どちらかが文字列であれば連結する
・通常の数式と同様に、加減算よりも乗除算が優先されるが、カッコによって優先順位を変更できる
・例: area = (10 + 20) * 30 / 2; //上辺10下辺20高さ30の台形の面積を代入
・同じ演算子や同じ優先度の場合は基本的に左から順に用いられる
・例: Console.WriteLine(1 + " + " + 2 + 3); //「1 + 23」となる
・例: Console.WriteLine(1 + 2 + " + " + 3); //「3 + 3」となる

p.25 text01.cs

//p.25 text01.cs
using System; 
class Text01
{
    public static void Main() //アプリケーションの実行開始場所
    {
        int a = 10, b = 20, total; //変数a,bの初期化と、変数totalの宣言
        total = a + b; //変数aの値と変数bの値を加算した結果を変数totalに代入
        Console.WriteLine(a + " + " + b + " = " + total); //「+」で連結した結果をコンソールに表示
    }
}

p.26(計算結果の連結)

・カッコで優先順位を変更する事で、先に加算を行い、加算結果を連結することもできる
・なお、計算結果を変数に代入せずに、計算式そのものをConsole.WriteLineのカッコ内に記述できる

p.26 text02.cs

//p.26 text02.cs
using System; 
class Text01
{
    public static void Main() //アプリケーションの実行開始場所
    {
        int a = 10, b = 20, total; //変数a,bの初期化と、変数totalの宣言
        Console.WriteLine(a + " + " + b + " = " + (a + b)); //「+」で連結した結果をコンソールに表示
    }
}

p.26(連結と加算)

・先に連結が行われると、その結果は文字列扱いになる
・よって、連結後に加算しようとしても連結になる
・例: Console.WriteLine(a + " + " + b + " = " + a + b); //10 + 20 = 1020

p.27 2.4 WriteLineメソッドとWriteメソッド

・プログラム中で「○○せよ」という指示にあたる部分をメソッドという
・Console.WriteLineはメソッドであり、カッコ内の内容をコンソールに出力して改行する
・対して、Console.Writeメソッドもあり、カッコ内の内容をコンソールに出力するが改行はしない
・なお、Console.WriteLine()とすると、改行のみを行う

p.27 text03.cs

//p.27 text03.cs
using System; 
class Text03
{
    public static void Main() //アプリケーションの実行開始場所
    {
        Console.Write("あ"); //文字列をコンソールに表示(改行しない)
        Console.Write("い"); //文字列をコンソールに表示(改行しない)
        Console.Write("う"); //文字列をコンソールに表示(改行しない)
        Console.Write("え"); //文字列をコンソールに表示(改行しない)
        Console.Write("お"); //文字列をコンソールに表示(改行しない)
        Console.WriteLine(); //改行のみ行う
   }
}

今週の話題

販売本数ランキング 今回トップは「ロックマンエグゼ アドバンスドコレクション」GO!
Niantic × カプコン『モンスターハンターナウ』発表―『モンハン』AR位置情報ゲーム GO!
ゲーム業界と他業種の化学反応が次のビジネスチャンスに―交流イベント「Game Technology Summit Vol.0」トークセッションレポート GO!
『ポートピア連続殺人事件』が“AI搭載版”になって新登場!技術デモ作品として、Steamで4月24日無料公開へ GO!
「だからほんとにゲームなんだって!」超リアルなボディカムFPS『Unrecord』開発者が疑われすぎて開発画面まで公開する GO!

削除要請無視のアップローダーサイトへの鉄槌は約6850万円の損害賠償―任天堂、海賊版配布めぐる海外裁判に勝訴! GO!

前回のコメントより

・まだ初心者なのでゆっくりのペースで授業を進めてくれると、うれしいです。

 了解です。メリハリをつけて進めましょう。

・関係ないですが、ポスター増えるといいなって思います^^

 了解です。404教室は窓が無く殺風景ですので、
 ゲーム・アニメ系のポスターを追加してみますね。

講義メモ 第2章 テキストを表示する

p.17 初めてのC#プログラム

・Visual Studioではプロジェクトごとに1実行ファイルとなる
・Sample.csは実行用ソースファイルなので、このプロジェクトに別の実行用ソースファイルを追加することはできない
・よって、本来は別のプロジェクトを作成するのだが、代わりに、現在の実行用ソースファイルを除外すると良い(ファイルは消えないし、元に戻すこともできる)
・実行用ソースファイルの作りは似ているので、下記の手順で次の実行用ソースファイルに取り掛かると良い
① 現在の実行用ソースファイル(Sample.cs)の全てをコピー(※ Ctrl+A, Ctrl+C)
② 現在の実行用ソースファイル(Sample.cs)を右クリックして「プロジェクトから除外」
③ プロジェクトを右クリックして「追加」「新しい項目」「コード」「コードファイル」
④ 次の実行用ソースファイル名(myname01.cs)にして「追加」
⑤ ペースト(Ctrl+V)して、書き換える
※「ファイル」「最近使ったファイル」で開いて用いても良い(ここで開いたファイルはプロジェクトには追加されないので影響しない)

p.17 myname01.cs

// myname01.cs
using System;
class MyName01
{
    public static void Main()
    {
        Console.WriteLine("私の名前はシャア");
    }
}

p.18 プログラムの構造

・1行目の「// myname01.cs」はコメントといい、実行とは無関係なメモ書き
 ※業務ではコメントの記述ルールが決まっている場合が多い
 (例:作成者、権利、作成日と作成理由、更新日と更新理由 等)
・コメントは頭に「//」を置くか、「/*」と「*/」で挟んで記述する
 (「//」は行末からでも可、「/*」と「*/」は改行を挟んでも可)
・2行目の「using System;」はusingディレクティブといい、プログラム内で用いている外部機能のありか(名前空間)を示す(p.390で後述)
 ※基礎コースでは決まり文句と理解してOK
・3行目の「class MyName01」はクラス名の宣言。プログラム名とほぼ同じだが、部品化する場合は部品名になる
・4行目の「{」から9行目の「}」までがクラスの宣言に含まれる範囲
 ※1ソースファイルに(実行用ではなく部品である)複数のクラスを記述できる
・5行目の「public static void Main()」は(それぞれに意味があるがまとめると)アプリケーションの実行開始場所・実行内容を示す
・Mainが処理名でメソッド(処理や手続き)ともいう
 ※コンソールアプリケーションではMainメソッドのあるクラスが実行用になる
・6行目の「{」から8行目の「}」までがMainメソッドに含まれる実行内容の範囲
・7行目の「Console.WriteLine("…");」は、C#がSystem名前空間で提供してくれる表示用処理の呼び出しで、
 カッコ内の指定内容をコンソールに表示
 ※System名前空間にあるConsoleクラスが持つWriteLineメソッドに文字列を渡して依頼している

p.20 メソッドの呼び出し

・7行目の「Console.WriteLine("…");」は、C#がSystem名前空間で提供してくれる表示用処理の呼び出しで、
 カッコ内の指定内容をコンソールに表示する
・System名前空間にあるConsoleクラスが持つWriteLineメソッドに文字列を渡して依頼している
・よって「System.Console.WriteLine("…");」と書いても良く、こうすれば「using System;」は不要
・しかし、冗長になりやすいので、あらかじめ「using System;」を記述することで、Mainメソッドの内部を読みやすくすると良い

p.21 インデント

・字下げともいい、Wordなどでも用いる可読性を上げる工夫
・C#では主に「{」「}」で行い、範囲が一目でわかるようにするのがポイント
・「{」に対応する「}」が同じ高さになり、内部に含まれる「{」「}」が内側に見えるようにする
・Visual Studioが自動的に行ってくれるが、SpaceキーやTabキーで行っても良い
・字下げの桁数は自由だが、業務ではルールで定めることが多い(例:スペース4個分)
・全体を規定のルールでまとめてインデントするには[Ctrl]を押しながら[A][K][D]を順に押すと良い

提出:アレンジ演習 p.17 myname01.cs

・各行の後方に適当なコメントを追記しよう

提出方法

①「提出フォーム」
②「Browse Files」をクリック
③「PC」「DATA(D:)」「Project1」「Project1」「myname01.cs」を右クリックし「送る」「圧縮(ZIP形式)フォルダ」
④「myname01.zip」をクリックし「開く」
⑤「お名前 (必須)」「メッセージ」を記入して「送信」

講義メモ

・オリエンテーション
・テキストを表示する

p.2 C#で何ができるのか

・デスクトップアプリケーションの開発: C#は、WindowsやMac、Linuxなどのデスクトップアプリケーションを
 開発することができます。
・ゲーム開発: C#はUnityなどのゲームエンジンで利用されており、ゲーム開発に利用されることが多いです。
・ウィンドウアプリケーションの開発: C#はWindows FormsやWPFなどのUIフレームワークをサポートしており、
 GUIを持ったウィンドウアプリケーションを開発することができます。
・ウェブアプリケーションの開発: C#はASP.NETというウェブフレームワークをサポートしており、
 WebサイトやWebアプリケーションを開発することができます。
・ネットワークプログラミング: C#は、TCP/IPやUDPなどのネットワークプロトコルをサポートしており、
 ネットワークアプリケーションの開発が可能です。
・データベースの操作: C#は、ADO.NETを使って、SQL Server、Oracle、MySQLなどの主要なデータベースとの連携が可能です。
・機械学習: C#は、ML.NETという機械学習フレームワークをサポートしており、機械学習のアプリケーション開発が可能です。

p.3 オブジェクト指向

・プログラムを「〇〇せよ」を中心に書くことをプロセス指向といい、単純で使い捨てのプログラム開発に向く(古い考え方)
・これを、チーム開発、再利用、部品化できるようにする考え方がオブジェクト指向
・プログラムを「〇〇を〇〇する」という機能を成す部品(オブジェクト)の集まりとみなす考え方
・オブジェクト指向の実現には対応するプログラム言語が必要で、C#、Java、C++などが対応しており「オブジェクト指向言語」と言われる
・オブジェクトを記述したり利用するための仕掛けがクラスで、オブジェクトの設計図として用いるので、実質的にはプログラムを指す
・カプセル化、継承、多態性はテキスト後半で扱う

p.6 プログラムができあがるまで

・プログラムを人間が読み書きするための言語がプログラム言語
・プログラム言語で描いたプログラムをソースプログラム(あるいは単にソース)という
・ソースを記述して保存したものがソースファイルで、C#のソースファイルは拡張子「.cs」が付く
・コンピュータにとってのソースファイルは文字列の並びであり、そのままでは実行できない
・コンピュータが解釈し実行できる機械語に、ソースを翻訳するのがコンパイラで、翻訳することをコンパイルという
・また、OSが用意している実行用ライブラリから機能を貰ってコンパイル結果に結合することで実行用ファイル(.exe)を作るのが
 リンク。
・C#ではコンパイル+リンクをビルドという
・Visual StudioにおけるC#ではビルドが自動化されているので、新しいソースや、書き換えたソースを実行しようとすると
 自動的にビルドされる
・なお、C#やJavaではコンパイルで直接に機械語を出力せずに、実行環境向けの中間コードを生成して用いる仕掛けになっている

p.8 .NET Framework

・マイクロソフトが開発・提供しているプログラミング/実行環境で、OS等による違いの影響を最小化して効率を上げられる仕組み
・C#は旧来からあるC言語をルーツとするため、C言語に由来する用語と、.NET Frameworkの用語が混在している

p.10 統合開発環境

・IDEともいい、各種のプログラム言語や開発対象向きに提供されている仕掛け
・プログラムを効率的に記述する仕掛け(エディター)と実行をサポートする仕掛け(ビルド、デバッグ等)、
 ソースや実行ファイルを管理する仕掛け(エクスプローラ)を持つのが一般的
・C#では主にVisual Studioを用いる

p.11 Visual Studioの使い方

・テキストの説明は旧バージョンなので、ここではVS2022で説明する
・個人のPCにインストール際には「.NET Framework」のチェックをお忘れなく
開始手順
① スタート⇒Visual Studio 2022
②「新しいプロジェクトの作成」
③「すべての言語」になっていたら「C#」に変更
④「空のプロジェクト(.NET Framework)」「次へ」
⑤ プロジェクト名を適当に入力(自前のUSBなら自由、でなければわかるように)
⑥ 場所を「...」ボタンを用いてUSBメモリまたは「DATA(D)」で「新しいフォルダ」を作成して「フォルダの選択」
⑦「作成」
※ Visual Studioのウィンドウレイアウトが乱れていたら「ウィンドウ(W)」「ウィンドウレイアウトのリセット」を実行し「はい」
⑧「ソリューションエクスプローラ」の「プロジェクト名(例:Project1)」を右クリックして「追加」「新しい項目」
⑨「Visual C#アイテム」の「コード」「コードファイル」
⑩「名前」を「CodeFile1.cs」から作成したいソースファイル名に変更(例:sample.cs)に変更
⑪「追加」して行番号「1」が表示されたら準備完了

p.11 Visual Studioの使い方のつづき

① プログラムを入力
②「ファイル」「Sample.csの保存」または「すべて保存」
 ※ 画面左上のプログラム名タグの「*」があれば未保存
③「デバッグ」「デバッグなしで開始」でビルド&実行
④ 実行コンソールが開いて結果と「続行するには何かキーを押してください . . .」が表示される
⑤ 実行内容を確認したら、必ず何かのキーを押して実行コンソールを閉じる

p.15 sample.cs

// sample.cs
using System;
class Sample
{
    public static void Main()
    {
        Console.WriteLine("Hello World!");
    }
}