講義メモ 後半

p.66 列挙型

・整数値に名前を付けてグループにて型にしたもの。
・例: グーは0番、チョキは1番、パーは3番とするとき「次の手 = 0」とするより「次の手 = グー」とした方が分かりやすく、
 可読性が上がる
・このグループ名を列挙名、要素を列挙子という
・C#が提供するライブラリの中にも列挙型があり、広く用いられている
 例: https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.keys Keys列挙型
・書式: enum 列挙名 { 列挙子, … }
・列挙子には自動的に0から整数があてはめられるが、代入も可能
・書式: enum 列挙名 { 列挙子 = 整数値, … }
・「 = 整数値」を指定しない場合、先頭は0、それ以降は1っ前の列挙子の値+1になる。

アレンジ演習:p.68 enum01.cs

・列挙子をint型にキャストせずに表示するとどうなるか確認しよう
 ⇒ 列挙子がそのまま表示される
・列挙子の持つ整数をint型の変数に代入できるかどうか確認しよう

作成例

//アレンジ演習:p.68 enum01.cs
using System;
class enum01
{
    enum MyMonth { //列挙名 MyMonthの定義
        Jan = 1, Feb, Mar, Apr, May, Jun, Jul,
        Aug, Sep, Oct, Nov, Dec //先頭が1なので2,3,4,5,…,12になる
    };
    public static void Main()
    {
        //列挙子の持つ整数をint型として扱うにはキャストする
        Console.WriteLine("Aprは{0}月", (int)MyMonth.Apr); //Aprは4月
        Console.WriteLine("Mayは{0}月", (int)MyMonth.May); //Mayは5月
        Console.WriteLine("Aprは{0}", MyMonth.Apr); //【追加】AprはApr
        int x = (int)MyMonth.Apr; //【追加】int型変数への列挙子の代入にも型キャストが必要
    }
}

p.69 3.14 オブジェクト型とボックス型:割愛し「第7章 クラス」「第6章 配列」で説明します

p.73 3.15 文字列型

・文字列は0文字以上の文字がならんだもので、文字数は確定しない
・文字列はstring型(.NETではSystem.String型)で扱える
・C#では文字列を(後述する)クラスで扱うので、文字数を得たり、比較したり、コピーしたりするための仕掛(プロパティ、文字配列、
 メソッド)が用意されている
・ここではクラス、プロパティ、配列、メソッドの詳細は後回しにして、便利な仕掛を理解しておこう

アレンジ演習:string01.cs

・コンソールに「文字列:」と表示し、文字列を入力したら、何文字あるか表示する処理を追加しよう

作成例

//アレンジ演習:p.73 string01.cs
using System;
class string01
{
    public static void Main()
    {
        string str = "今日はよい天気です";
        string mystr;
        char c;
        // Lengthプロパティ(後述)で文字列の長さを調べる
        Console.WriteLine("strは長さ{0}です", str.Length);
        //文字型変数cに文字列strの5番目の文字を代入
        c = str[4]; //文字列を文字の配列(後述)として扱える
        Console.WriteLine("文字列の5番目の文字は「{0}」です", c);
        //文字列strをmystrにコピー
        mystr = String.Copy(str); //静的メソッド(後述)を用いる
        Console.WriteLine("mystr = {0}", mystr);
        //文字列の検索
        int n = str.IndexOf('は'); //メソッドに文字を与えて用いる
        Console.WriteLine("文字列に'は'が出てくるのは{0}番目の文字", n + 1);
        n = str.IndexOf("よい"); //メソッドに文字列を与えて用いるオーバーロード(後述)
        Console.WriteLine("文字列に「よい」が出てくるのは{0}文字目から", n + 1);
        //【以下追加】
        Console.Write("文字列:");
        string name = Console.ReadLine();
        Console.WriteLine("{0}は{1}文字です。", name, name.Length);
    }
}

p.75「is演算子とas演算子」は割愛します

p.78 練習問題1 ヒント ex0301.cs

・うるう年を考えないので、1年の秒数は60秒×60分×24時間×365日で算出できる

作成例

//p.78 練習問題1 ex0301.cs
using System;
class ex0301
{
    public static void Main()
    {
        Console.WriteLine("1年は{0}秒", 60 * 60 * 24 * 365);
    }
}

提出:p.78 練習問題2 ex0302.cs

p.78 練習問題2 ヒント ex0302.cs

① 円の半径を格納するためのdouble型の変数rを宣言
②「半径:」と改行なしで表示
③ コンソールから入力を受け取り、double.parseメソッド(p.46参照)で実数化して変数rに格納
④ 円周率Math.PIと変数rの2乗を掛けた結果を面積として表示
【自由参加課題】この半径の球の体積も表示しよう

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です