目次

概要

これから本格的に C# によるプログラミングを解説して行くことになりますが、 ただ文章で説明するよりも実際にサンプルプログラムを挙げて説明するほうが分かりやすいと思うので、 そうして行きたいと思います。 また、ただ単に計算を行うだけのプログラムよりも、 ユーザーからの入力を受け取って、計算結果を出力するようなもののほうが面白いでしょうから、 そのようなサンプルプログラムを挙げていきたいと思っています。

そのためにまず、C# の文字ベースプログラムにおける入出力の行い方について簡単に説明しておきます。 ただ、現時点ではまだ詳しい説明は出来ませんので、 「とりあえずこうすれば入出力が行える」ということだけ覚えておいてもらうことになります。

値の入出力
値の入出力

ポイント
  • 「まずは慣れろ」ということで、とりあえず今は詳しい説明省略。

入力

C#でユーザーからの入力を受け取りたい場合、 Console.ReadLine というものを使います。

  • C#
  • VB
  • F#
  • C++
var str = Console.ReadLine(); // ユーザーの入力した文字列を1行読み込む
Dim str = Console.ReadLine()
let str = Console.ReadLine()
auto str = Console::ReadLine();

数値を入力したい場合には、さらに Parse というものを使って、以下のようにします。

  • C#
  • VB
  • F#
  • C++
var n    = int.Parse(Console.ReadLine());  // ユーザーの入力した整数を読み込む
var x = double.Parse(Console.ReadLine()); // ユーザーの入力した実数を読み込む
Dim n = Integer.Parse(Console.ReadLine())
Dim x = Double.Parse(Console.ReadLine())
let n = Int32.Parse(Console.ReadLine())
let x = Double.Parse(Console.ReadLine())
auto n = Int32::Parse(Console::ReadLine());
auto x = double::Parse(Console::ReadLine());

intdouble については「変数と式」で、 var については「型推論」で、 Console については「ライブラリ」で説明します。

出力

計算結果などを出力したい場合には Console.Write というものを使います。

  • C#
  • VB
  • F#
  • C++
int m = 1, n = 3;
Console.Write("m = {0}, n = {1}", m, n); // 文字や数値の出力
Dim m = 1, n = 3
Console.Write("m = {0}, n = {1}", m, n)
let m, n = 1, 3
Console.Write("m = {0}, n = {1}", m, n)
int m = 1, n = 3;
Console::Write("m = {0}, n = {1}", m, n);

この出力の仕方はフォーマット出力といって、 {0} とある場所に m の値が、 {1} とある場所に n の値が書き込まれます。 例えば上述のサンプルの出力結果は以下のようなものになります。

m = 1, n = 3
サンプル
  • C#
  • VB
  • F#
  • C++
using System;

class Program
{
    static void Main()
    {
        // 入力を促すメッセージの表示して、文字を入力してもらう
        Console.Write("あなたのお名前は? : ");
        var name = Console.ReadLine();

        // 入力を促すメッセージの表示して、数値を入力してもらう
        Console.Write("あなたのお年は?   : ");
        var age = int.Parse(Console.ReadLine());

        // メッセージの出力
        Console.WriteLine("{0} ({1}歳) さん、ようこそお越しくださいました。", name, age);
    }
}
Module Program

    Sub Main()
        Console.Write("あなたのお名前は? : ")
        Dim name = Console.ReadLine()

        Console.Write("あなたのお年は?   : ")
        Dim age = Integer.Parse(Console.ReadLine())

        Console.WriteLine("{0} ({1}歳) さん、ようこそお越しくださいました。", name, age)
    End Sub

End Module
open System

Console.Write("あなたのお名前は? : ")
let name = Console.ReadLine()

Console.Write("あなたのお年は?   : ")
let age = Int32.Parse(Console.ReadLine())

Console.WriteLine("{0} ({1}歳) さん、ようこそお越しくださいました。", name, age)
Console::Write("あなたのお名前は? : ");
auto name = Console::ReadLine();

Console::Write("あなたのお年は?   : ");
auto age = int::Parse(Console::ReadLine());

Console::WriteLine("{0} ({1}歳) さん、ようこそお越しくださいました。", name, age);
あなたのお名前は? : tiyu
あなたのお年は?   : 12
tiyu (12歳) さん、ようこそお越しくださいました。

GUI 雛形プログラム

GUI プログラム(Windows アプリ)を使って演習問題(の一部)を解いてもらうために、 演習用 GUI プログラムの雛形を用意しました。

GUI 雛形プログラム1

プログラムは図1に示すような見た目で、 A ~ E のテキストボックスに値を入力し、 [実行] ボタンを押してプログラムを実行します。

GUI 雛形プログラム1
GUI 雛形プログラム1

GUI プログラムの大部分は、この時点までの知識では説明できませんが、 今はとりあえず、分からない大部分は無視してもらって、 InputData.cs 中の「TODO: ↓ここに演習問題の回答コードを書いてください」というコメントのある部分だけ書き換えてください。

(旧バージョン)

(※旧ウェブサイトから未移植につきコードなし)

プログラムは図1に示すような見た目で、 A ~ E のテキストボックスに値を入力し、 [Run] ボタンを押してプログラムを実行します。

GUI 雛形プログラム1
GUI 雛形プログラム1

GUI プログラムの大部分は、この時点までの知識では説明できませんが、 今はとりあえず、分からない大部分は無視してもらって、 Form1.cs 中の「TODO: ↓ここに演習問題の回答コードを書いてください」というコメントのある部分だけ書き換えてください。

演習問題の多くは基本的に CUI プログラム(コマンドプロンプト)を前提に作っていますが、 値を入力してもらって、何らかの計算を行って、結果を出力するタイプの演習問題には、 この雛形プログラムを利用できます。

演習問題

問題1

Console.Write を用いて、自分の名前を画面に表示せよ。

解答例1

using System;

class Sample
{
  static void Main()
  {
    Console.Write("岩永信之");
  }
}

問題2

Console.ReadLine を用いて文字列を1行読み込み、 Console.Write を用いて読んだ文字列をそのまま鸚鵡返しするプログラムを作成せよ。

おまけ: 1度読み込んだ文字列を2度ずつ鸚鵡返しするものを作成せよ。

解答例1

using System;

class Sample
{
  static void Main()
  {
    string line = Console.ReadLine();
    Console.Write(line);
  }
}

解答例2

using System;

class Sample
{
  static void Main()
  {
    string line = Console.ReadLine();
    Console.Write(line);
    Console.Write(line);
  }
}

更新履歴

ブログ