Skip to content

第3章 演算と演算子

この章では、C# で計算や文字列の組み立てを行うための 演算演算子 を学習します。

第 1 章では、数値を直接計算して表示しました。

Console.WriteLine(100 + 5);

第 2 章では、変数に値を保存する方法を学習しました。

int price = 120;
int quantity = 4;

この章では、変数に入っている値を使って計算したり、計算結果を別の変数に保存したりします。

たとえば、次のような処理ができるようになります。

単価 × 数量 で合計金額を求める
合計金額を人数で割る
余りを求める
数値の型を変換する
キーボードから入力された文字列を数値に変換する
文字列と変数を組み合わせて表示する

プログラムでは、計算や文字列の組み立てを頻繁に行います。

この章では、今後の条件分岐、繰り返し、配列、オブジェクト指向につながる基本として、演算と演算子を学習します。


この章でできるようになること

Section titled “この章でできるようになること”

この章を終えると、次のことができるようになります。

  • 演算と演算子の意味を説明できる
  • +-*/% を使った計算ができる
  • 整数同士の割り算の結果を説明できる
  • 余りを求める % 演算子を使える
  • +=*= などの代入演算子を使える
  • intdouble の違いを意識して計算できる
  • キャストによる型変換を使える
  • int.Parse を使って文字列を整数に変換できる
  • + を使って文字列を連結できる
  • 文字列補間を使って、変数の値を分かりやすく表示できる
  • 計算式を読みやすく書く意識を持てる

項目内容
開発環境Visual Studio 2022
プロジェクト種類コンソール アプリ
対象フレームワーク.NET 8
ソリューション名Chapter03
プロジェクト名Ch03_Operators

csproj の Nullable は disable に変更してください

プロジェクト作成後、Ch03_Operators.csproj を開き、<Nullable>disable</Nullable> に変更してください。

詳しい手順は、第 1 章「1-1 プロジェクトを作成する」を参照してください。

補足:ソリューション名とプロジェクト名は別の名前にします

本研修では、ソリューション名は Chapter03、プロジェクト名は Ch03_Operators のように分けます。

新規作成画面で「ソリューション名」欄を Chapter03 に変更してください。


作業を始める前に、次の内容を確認してください。

  • Visual Studio 2022 でコンソールアプリを作成できる(不安な場合は 付録 B「VS2022 の準備と基本操作」 を参照)
  • .NET 8.0 を選択できる
  • csproj の Nullable を disable に変更できる
  • Console.WriteLine を使って表示できる
  • int 型と string 型の変数を作成できる
  • 変数に値を代入できる
  • 文字列補間 $"..." を使って変数を埋め込める
  • Console.ReadLine でキーボードからの入力を受け取れる
  • 第 2 章の課題を Git に提出済みである

演算とは、値を使って計算や処理を行うことです。

たとえば、次のような処理は演算です。

100 + 5
120 * 4
totalPrice / memberCount
firstName + lastName

数値の計算だけでなく、文字列をつなげる処理も演算の一種です。


演算子とは、演算を行うための記号です。

たとえば、足し算には +、掛け算には * を使います。

演算子意味
+足し算、文字列連結
-引き算
*掛け算
/割り算
%割り算の余り
=代入
+=加算して代入
*=掛け算して代入

プログラムでは、数学と似た記号を使いますが、意味が少し違うものもあります。

特に = は、数学の「等しい」ではなく、C# では 右側の値を左側の変数に代入する という意味で使います。

int total = 100 + 50;

このコードは、次のように読みます。

100 + 50 を計算し、その結果を total に代入する

C# では、次の演算子を使って基本的な計算ができます。

演算子意味
+足し算10 + 3
-引き算10 - 3
*掛け算10 * 3
/割り算10 / 3
%余り10 % 3

次のコードを入力して実行してください。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int number1 = 10;
int number2 = 3;
Console.WriteLine(number1 + number2);
Console.WriteLine(number1 - number2);
Console.WriteLine(number1 * number2);
Console.WriteLine(number1 / number2);
Console.WriteLine(number1 % number2);
}
}
}

実行結果は次のようになります。

13
7
30
3
1

注目してほしいのは、次の結果です。

Console.WriteLine(number1 / number2);

10 / 3 の結果は、数学では 3.333... です。

しかし、上のコードでは 3 と表示されます。

これは、number1number2 がどちらも int 型だからです。

int 型同士の割り算では、小数部分が切り捨てられます。

10 / 3 = 3

余りを知りたい場合は % を使います。

10 % 3 = 1

% は、割り算の余りを求める演算子です。

Console.WriteLine(10 % 3);

実行結果:

1

余りは、今後の条件分岐でよく使います。

たとえば、偶数か奇数かを判定するときに使えます。

int number = 8;
Console.WriteLine(number % 2);

実行結果:

0

2 で割った余りが 0 なら偶数です。この考え方は、第 4 章の条件分岐で使います。


業務アプリでは、金額や数量を計算する場面がよくあります。

次のコードでは、単価と数量から合計金額を求めます。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int unitPrice = 180;
int quantity = 5;
int totalPrice = unitPrice * quantity;
Console.WriteLine($"単価:{unitPrice}");
Console.WriteLine($"数量:{quantity}");
Console.WriteLine($"合計:{totalPrice}");
}
}
}

実行結果:

単価:180円
数量:5個
合計:900円

このように、変数名を適切に付けると、何を計算しているか分かりやすくなります。


次のコードでは、合計金額を人数で割ります。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int totalPrice = 1000;
int memberCount = 3;
int pricePerPerson = totalPrice / memberCount;
int remainder = totalPrice % memberCount;
Console.WriteLine($"合計金額:{totalPrice}");
Console.WriteLine($"人数:{memberCount}");
Console.WriteLine($"1人あたり:{pricePerPerson}");
Console.WriteLine($"余り:{remainder}");
}
}
}

実行結果:

合計金額:1000円
人数:3人
1人あたり:333円
余り:1円

int 型同士の割り算では、小数は表示されません。そのため、余りが必要な場合は % を使います。


複数の演算子を組み合わせた式では、計算される順番が決まっています。

第 1 章でも触れましたが、ここで改めて整理します。

優先順位演算子
*/%2 * 3 を先に計算
+-後から計算

たとえば、次の式は 掛け算が先 に計算されます。

int result = 10 + 2 * 3;
Console.WriteLine(result);

実行結果:

16

2 * 3 が先に 6 になり、その後 10 + 616 になります。

足し算を先に計算したい場合は、丸かっこ () を使います。

int result = (10 + 2) * 3;
Console.WriteLine(result);

実行結果:

36

業務アプリでは、税込価格の計算などで優先順位が問題になることがあります。

// 単価 × 数量 × 税率 を一度に計算
decimal totalIncludingTax = 180m * 5 * 1.10m;

このコードは、左から順に 180m * 5 = 900m900m * 1.10m = 990.00m と計算されます。

*/ が並んだ場合は、左から順に計算 されます。

迷ったらかっこを付ける

優先順位を全部覚えなくても、() で囲めば意図した順番で計算できます。

読む人にとっても分かりやすくなるため、複雑な計算では積極的に () を使ってください。


エラーになる例:全角記号を使う

Section titled “エラーになる例:全角記号を使う”

次のコードはエラーになります。

int total = 10050;

が全角記号だからです。

正しくは、半角の + を使います。

int total = 100 + 50;

C# のコードでは、演算子や記号は基本的に半角で入力してください。


単項演算子とは、1 つの値に対して使う演算子です。

この章では、符号を表す +- を確認します。

int x = +100;
int y = -50;

+100 は正の値、-50 は負の値を表します。


次のコードを入力して実行してください。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int basePoint = 80;
int penalty = -10;
int result = basePoint + penalty;
Console.WriteLine($"基準点:{basePoint}");
Console.WriteLine($"減点:{penalty}");
Console.WriteLine($"結果:{result}");
}
}
}

実行結果:

基準点:80
減点:-10
結果:70

penalty-10 が入っているため、basePoint + penalty80 + (-10) という意味になります。

補足:インクリメント ++ とデクリメント --

C# には、1 を加算する ++、1 を減算する -- という単項演算子もあります。

int count = 1;
count++; // count に 1 を加える(count = 2)
count--; // count から 1 を引く(count = 1)

主に繰り返し処理で使われるため、本研修では 第 5 章「繰り返し処理」 で改めて扱います。 ここでは「そういう書き方もある」とだけ知っておけば十分です。


式全体に - を付けることもできます。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int price = 120;
int quantity = 3;
int amount = price * quantity;
int cancelAmount = -amount;
Console.WriteLine($"金額:{amount}");
Console.WriteLine($"取消金額:{cancelAmount}");
}
}
}

実行結果:

金額:360
取消金額:-360

第 2 章で学習したように、変数に値を入れることを代入といいます。

int count = 1;

このコードは、count という変数に 1 を代入しています。


変数の値は、後から更新できます。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int count = 1;
Console.WriteLine(count);
count = count + 1;
Console.WriteLine(count);
}
}
}

実行結果:

1
2

次の行に注目してください。

count = count + 1;

これは、数学の式として見ると不自然です。

しかし、C# では次の意味になります。

現在の count の値に 1 を加え、その結果を count に代入する

つまり、count の値を 1 増やしています。


count = count + 1; は、次のように短く書けます。

count += 1;

+= は、現在の値に右側の値を加えて、同じ変数に代入する演算子です。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int count = 1;
count += 1;
Console.WriteLine(count);
count += 5;
Console.WriteLine(count);
}
}
}

実行結果:

2
7

演算子意味
+=加算して代入x += 3
-=減算して代入x -= 3
*=掛け算して代入x *= 3
/=割り算して代入x /= 3
%=余りを代入x %= 3

次のコードでは、利用者のポイントを加算します。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int points = 100;
Console.WriteLine($"現在のポイント:{points}");
points += 20;
Console.WriteLine($"20ポイント加算後:{points}");
points -= 10;
Console.WriteLine($"10ポイント利用後:{points}");
}
}
}

実行結果:

現在のポイント:100
20ポイント加算後:120
10ポイント利用後:110

このように、現在の値をもとに増減させる処理では、複合代入演算子がよく使われます。


エラーではないが読みにくい例

Section titled “エラーではないが読みにくい例”

次のコードは動作します。

points=points+20;

しかし、読みやすいコードとはいえません。

次のように、空白を適切に入れると読みやすくなります。

points = points + 20;

さらに、意図が「20 加算する」なら、次のように書くこともできます。

points += 20;

研修では、動くだけでなく、読みやすいコードを書くことも意識してください。


int は整数を扱う型です。

int number = 10;

double は小数を扱う型です。

double rate = 1.5;

整数同士の割り算では、小数部分が切り捨てられます。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int total = 1000;
int memberCount = 3;
int pricePerPerson = total / memberCount;
Console.WriteLine(pricePerPerson);
}
}
}

実行結果:

333

小数まで求めたい場合は、double を使います。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
double total = 1000;
double memberCount = 3;
double pricePerPerson = total / memberCount;
Console.WriteLine(pricePerPerson);
}
}
}

実行結果:

333.3333333333333

割り算の結果が整数になるか小数になるかは、割り算の左右の型 で決まります。

結果の型結果
intintint10 / 33(小数切り捨て)
intdoubledouble10 / 3.03.3333...
doubleintdouble10.0 / 33.3333...
doubledoubledouble10.0 / 3.03.3333...

ポイントは、左右のどちらか片方が double であれば、結果は double になる ことです。

このルールは、次に学ぶキャストでも重要になります。


int 型の値を、一時的に double 型として扱いたい場合があります。

そのようなときは、キャストを使います。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
int total = 1000;
int memberCount = 3;
double pricePerPerson = (double)total / memberCount;
Console.WriteLine(pricePerPerson);
}
}
}

実行結果:

333.3333333333333

次の部分に注目してください。

(double)total

これは、total を一時的に double として扱う、という意味です。

先ほどの「型による割り算の挙動」表で見たとおり、左右のどちらか片方が double になれば結果も double になる ため、ここでは total だけをキャストしています。memberCount まで両方キャストしなくても、結果は同じ 333.3333... になります。

// どちらの書き方も同じ結果
double a = (double)total / memberCount; // 左だけキャスト
double b = (double)total / (double)memberCount; // 両方キャスト

シンプルに書くため、片方だけキャストするのが一般的です。


double の値を int に変換することもできます。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
double source = 15.8;
int number = (int)source;
Console.WriteLine(number);
}
}
}

実行結果:

15

小数部分は切り捨てられます。

注意

(int)15.8 は四捨五入ではありません。 小数部分が切り捨てられます。


エラーになる例:型が合わない代入

Section titled “エラーになる例:型が合わない代入”

次のコードはエラーになります。

double source = 15.8;
int number = source;

double 型の値を、そのまま int 型の変数に代入しようとしているためです。

小数部分が失われる可能性がある変換は、C# が自動では行いません。

明示的にキャストします。

double source = 15.8;
int number = (int)source;

入力された文字列を数値に変換する

Section titled “入力された文字列を数値に変換する”

Console.ReadLine で入力された値は、文字列として扱われます。

次のコードでは、入力された文字列を int.Parse で整数に変換しています。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("購入数を入力してください。");
string input = Console.ReadLine();
int quantity = int.Parse(input);
int unitPrice = 180;
int totalPrice = unitPrice * quantity;
Console.WriteLine($"合計金額:{totalPrice}");
}
}
}

実行例:

購入数を入力してください。
5
合計金額:900円

int.Parse は、文字列を int 型に変換するための命令です。

int quantity = int.Parse(input);

このコードは、input に入っている文字列を整数に変換し、quantity に代入しています。


エラーになる例:数字以外を入力する

Section titled “エラーになる例:数字以外を入力する”

次のプログラムで、購入数に abc と入力するとエラーになります。

string input = Console.ReadLine();
int quantity = int.Parse(input);

abc は整数に変換できないためです。

このような入力ミスへの対応は、後の章で学ぶ 例外処理 で扱います。

この章では、まず次のことを覚えておきましょう。

Console.ReadLine の結果は文字列
数値として使いたい場合は変換が必要
int.Parse は文字列を整数に変換する
数字以外を変換しようとするとエラーになる

+ は、数値では足し算を行います。

しかし、文字列に対して使うと、文字列をつなげる働きをします。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
string lastName = "山田";
string firstName = "二郎";
string fullName = lastName + firstName;
Console.WriteLine(fullName);
}
}
}

実行結果:

山田二郎

文字列と数値を + でつなげることもできます。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
string itemName = "ノート";
int price = 180;
string message = itemName + "の価格は" + price + "円です。";
Console.WriteLine(message);
}
}
}

実行結果:

ノートの価格は180円です。

このように、文字列と数値を連結すると、数値は文字列として扱われます。


次の 2 つを比べてください。

Console.WriteLine(100 + 20);
Console.WriteLine("100" + "20");

実行結果:

120
10020

1 行目は数値の足し算です。

2 行目は文字列の連結です。

100 + 20 → 数値の足し算
"100" + "20" → 文字列の連結

" で囲むかどうかで、結果が変わります。


文字列と数値の + は左から順に評価される

Section titled “文字列と数値の + は左から順に評価される”

文字列と数値を混ぜた + を使うときは、左から順に評価される ことに注意してください。

次の 2 つのコードを比べてください。

Console.WriteLine(1 + 2 + "abc");
Console.WriteLine("abc" + 1 + 2);

実行結果:

3abc
abc12

順番に追ってみると違いが分かります。

1 + 2 + "abc"
↓ 左から評価
3 + "abc" ← まだ数値同士なので 3
"3" + "abc" ← 文字列が登場した時点で文字列連結に切り替わる
"3abc"
"abc" + 1 + 2
↓ 左から評価
"abc" + 1 ← 最初から文字列なので連結
"abc1"
"abc1" + 2 ← さらに連結
"abc12"

意図したとおりに表示されない場合は、丸かっこで計算順を明示します。

Console.WriteLine("abc" + (1 + 2));

実行結果:

abc3

このつまずきは、文字列補間で回避できます

$"abc{1 + 2}" のように書けば、{} の中で先に計算されるため、意図と結果がずれにくくなります。

計算と文字列を混ぜたい場面では、文字列補間の方が安全です。


文字列と変数を組み合わせて表示する場合は、文字列補間を使うと読みやすくなります。

Program.cs
namespace Ch03_Operators
{
internal class Program
{
static void Main(string[] args)
{
string itemName = "ノート";
int price = 180;
int quantity = 5;
int totalPrice = price * quantity;
Console.WriteLine($"{itemName}{quantity}個購入しました。");
Console.WriteLine($"合計金額は{totalPrice}円です。");
}
}
}

実行結果:

ノートを5個購入しました。
合計金額は900円です。

$"..." の中で {変数名} と書くと、変数の値を埋め込めます。


文字列補間をおすすめする理由

Section titled “文字列補間をおすすめする理由”

次の 2 つのコードを比べてください。

string message = itemName + "" + quantity + "個購入しました。";
string message = $"{itemName}{quantity}個購入しました。";

どちらも同じように表示できます。

しかし、文字列補間を使った方が、文章の形が分かりやすくなります。

本研修では、複雑な表示を行うときは文字列補間を積極的に使います。


この章でよくあるつまずきを確認します。

つまずき原因対応
10 / 33 になるint 同士の割り算になっている小数が必要なら double やキャストを使う
% の意味が分からない割り算の商と余りを混同している10 / 3310 % 31 と考える
10 + 2 * 3 の結果が想定と違う演算子の優先順位を忘れている* が先。意図したい順番に () を使う
count = count + 1 が分かりにくい数学の等号として見ている右側を先に計算し、左側に代入すると読む
int number = 1.5; がエラーになるint に小数を代入しているdouble を使うか、明示的にキャストする
(int)total / memberCount で小数にならないキャスト対象を間違えている小数にしたいのは結果。(double)total / memberCount のように double にキャストする
int.Parse でエラーになる入力値が数値ではない数字を入力する。入力エラー対応は例外処理で学ぶ
"100" + "20"120 にならない文字列として連結されている数値として計算したいなら " で囲まない
"abc" + 1 + 2"abc3" にならない左から評価され "abc1" + 2 = "abc12" になっている"abc" + (1 + 2) または $"abc{1 + 2}" と書く
$ を付け忘れる文字列補間にならない$"..." の形になっているか確認する
全角の演算子を使っている日本語入力が ON になっている半角の +-*/% を使う

次の項目について、自分で説明できるか確認してください。

  • 演算とは何かを説明できる
  • 演算子とは何かを説明できる
  • +-*/ を使って計算できる
  • % が余りを求める演算子であることを説明できる
  • int 同士の割り算では小数部分が切り捨てられることを説明できる
  • 演算子の優先順位(*///%+/- より先に計算される)を説明できる
  • += を使って変数の値を増やせる
  • count = count + 1 の意味を説明できる
  • double を使って小数を扱える
  • 割り算の結果の型が左右の型で決まることを説明できる
  • キャストによる型変換を使える
  • 片方だけキャストすれば double になる理由を説明できる
  • int.Parse で文字列を整数に変換できる
  • + で文字列を連結できる
  • 文字列と数値の + で意図しない結果が出る場面を説明できる
  • 文字列補間を使って変数を表示できる

研修の進め方によっては、隣の人またはチーム内で説明確認を行います。

次の内容を、自分の言葉で説明してください。

  1. 10 / 310 % 3 の違いは何ですか。
  2. count = count + 1; は何をしているコードですか。
  3. += はどのような意味ですか。
  4. intdouble の違いは何ですか。
  5. 10 + 2 * 3 の結果が 16 になる理由は何ですか。
  6. (double)total / memberCount で、memberCount をキャストしなくても良い理由は何ですか。
  7. Console.ReadLine で受け取った値を計算に使うには、何が必要ですか。
  8. "100" + "20" の結果が 10020 になる理由は何ですか。
  9. 1 + 2 + "abc""abc" + 1 + 2 の結果が違う理由は何ですか。

説明するときは、完全な答えでなくても構いません。自分の言葉で説明しようとすることが大切です。


この章の演習課題に取り組みます。

制限時間は 45 分 です。

時間内にすべて完成しなくても構いません。できたところまでを保存し、Git に提出してください。

演習の進め方の詳細は、付録A「演習の進め方」 を参照してください。


課題はソリューション Kadai03 の中に作成してください。

各課題のプロジェクト名は次の通りです。

課題プロジェクト名
課題3-1Kd03_01_SplitBill
課題3-2Kd03_02_PointUpdate
課題3-3Kd03_03_InputQuantity
課題3-4(発展)Kd03_04_TimeConvert
課題3-5(発展)Kd03_05_AverageScore

補足:ソリューションに複数のプロジェクトを追加する方法

最初の課題で Kadai03 ソリューションと Kd03_01_SplitBill プロジェクトを同時に作成します。

2 つ目以降の課題は、ソリューションエクスプローラーで Kadai03 を右クリックし、追加新しいプロジェクト から追加します。


以下は、本章のすべての課題に共通する作業です。各課題の本文には繰り返し書きません。

作業内容参照
プロジェクト作成時の設定最上位レベルのステートメントを使用しない」にチェック第 1 章 1-1
csproj の編集<Nullable>disable</Nullable> に変更第 1 章 1-1
コードを書く場所Main メソッドの中(本章 3-2 などのサンプル形式と同じ)3-2
ファイルを保存して実行Ctrl + S で保存 → F5 で実行第 1 章 1-2

特に 2 つ目以降のプロジェクト(Kd03_02_PointUpdate など)も、新規追加するたびに csproj の Nullable を disable に変更する 必要があります。忘れると警告が出やすくなります。

演習課題のコードは、本文と同じ namespace + class Program + Main の枠組みの中に書きます。

提出について

制限時間になったら、完成・未完成に関わらず作業を止めます。 できたところまでを Git に commit し、push してください。 未完成の場合は、どこまでできたかを報告できるようにしておきましょう。


まずは、全員が必須課題に取り組んでください。


次の条件で、1人あたりの金額と余りを求めてください。

項目
合計金額3500
人数4

実行結果例:

合計金額:3500円
人数:4人
1人あたり:875円
余り:0円

条件:

  • / を使って 1 人あたりの金額を求める
  • % を使って余りを求める
  • 変数名は意味が分かる名前にする

現在のポイントが 100 あります。

次の処理を順番に行い、各段階のポイントを表示してください。

20ポイント加算
15ポイント利用
2倍キャンペーンで現在ポイントを2倍

実行結果例:

開始時:100
20ポイント加算後:120
15ポイント利用後:105
2倍後:210

条件:

  • +=-=*= を使う
  • 各段階の値を表示する

課題3-3 入力された数量で金額計算

Section titled “課題3-3 入力された数量で金額計算”

単価 180 円の商品について、購入数をキーボードから入力し、合計金額を表示してください。

実行例:

購入数を入力してください。
5
合計金額:900円

条件:

  • Console.ReadLine を使う
  • int.Parse を使って入力値を整数に変換する
  • 合計金額は計算で求める

必須課題が終わった人は、発展課題に取り組んでください。


課題3-4 経過秒数を時/分/秒に変換

Section titled “課題3-4 経過秒数を時/分/秒に変換”

経過した秒数を、時・分・秒に分けて表示するプログラムを作成してください。

項目
経過秒数3725

実行結果例:

経過秒数:3725秒
内訳:1時間 2分 5秒

条件:

  • /% を組み合わせて使う
  • 時間、分、秒をそれぞれ変数で管理する
  • 表示には文字列補間を使う

ヒント:

時間 = 経過秒数 / 3600
残り = 経過秒数 % 3600
分 = 残り / 60
秒 = 残り % 60

3 つの点数を変数に代入し、合計点と平均点を表示してください。

項目
点数180
点数275
点数392

実行結果例:

合計点:247点
平均点:82.33333333333333点

条件:

  • 合計点を int 型で求める
  • 平均点は小数が表示されるようにする
  • キャストを使って平均点を求める

ヒント:

double average = (double)total / 3;

提出前に、次の項目を確認してください。

  • プログラムを Visual Studio から実行できる
  • +-*/ を使った計算ができている
  • % を使って余りを求めている
  • 計算結果を変数に保存している
  • += などの代入演算子を使っている
  • 小数が必要な計算で double またはキャストを使っている
  • Console.ReadLine の入力値を int.Parse で数値に変換している
  • 文字列補間を使って分かりやすく表示している
  • セミコロンの付け忘れがない
  • 全角記号が混ざっていない
  • インデントが整っている
  • Git に commit している
  • Git に push している

第 3 章の課題プロジェクト群(Kadai03 ソリューション)を Git に提出します。

Terminal window
git status
git add .
git commit -m "Chapter03 演算と演算子"
git push

Git の詳しい操作は、付録 C「Git のインストールと提出ルール」 を参照してください。


この章では、演算と演算子について学習しました。

この章で学んだ主な内容は次の通りです。

  • 演算とは、値を使って計算や処理を行うこと
  • 演算子とは、演算を行うための記号である
  • +-*/ を使って基本的な計算ができる
  • % を使うと割り算の余りを求められる
  • int 型同士の割り算では、小数部分が切り捨てられる
  • 複数の演算子を組み合わせた式は、*/% が先に計算される
  • +=-=*= などで変数の値を更新できる
  • ++-- は単項演算子の仲間で、第 5 章で改めて扱う
  • intdouble では扱える値の種類が違う
  • 割り算は左右のどちらか片方が double なら結果も double になる
  • キャストを使うと、一時的に別の型として扱える
  • Console.ReadLine の結果は文字列である
  • int.Parse を使うと、文字列を整数に変換できる
  • + は文字列の連結にも使える
  • 文字列と数値の + は左から順に評価される(意図がずれやすい)
  • 文字列補間を使うと、変数の値を文章の中に埋め込める(計算もそのまま書ける)

次章では、条件に応じた処理 を学習します。

条件分岐を使うと、入力された値や計算結果に応じて、実行する処理を変えられるようになります。

この章で学んだ % を使った余りの計算も、条件分岐の中で活躍します。