第3章 演算と演算子
この章の目的
Section titled “この章の目的”この章では、C# で計算や文字列の組み立てを行うための 演算 と 演算子 を学習します。
第 1 章では、数値を直接計算して表示しました。
Console.WriteLine(100 + 5);第 2 章では、変数に値を保存する方法を学習しました。
int price = 120;int quantity = 4;この章では、変数に入っている値を使って計算したり、計算結果を別の変数に保存したりします。
たとえば、次のような処理ができるようになります。
単価 × 数量 で合計金額を求める合計金額を人数で割る余りを求める数値の型を変換するキーボードから入力された文字列を数値に変換する文字列と変数を組み合わせて表示するプログラムでは、計算や文字列の組み立てを頻繁に行います。
この章では、今後の条件分岐、繰り返し、配列、オブジェクト指向につながる基本として、演算と演算子を学習します。
この章でできるようになること
Section titled “この章でできるようになること”この章を終えると、次のことができるようになります。
- 演算と演算子の意味を説明できる
+、-、*、/、%を使った計算ができる- 整数同士の割り算の結果を説明できる
- 余りを求める
%演算子を使える +=や*=などの代入演算子を使えるintとdoubleの違いを意識して計算できる- キャストによる型変換を使える
int.Parseを使って文字列を整数に変換できる+を使って文字列を連結できる- 文字列補間を使って、変数の値を分かりやすく表示できる
- 計算式を読みやすく書く意識を持てる
本章で使用する環境
Section titled “本章で使用する環境”| 項目 | 内容 |
|---|---|
| 開発環境 | Visual Studio 2022 |
| プロジェクト種類 | コンソール アプリ |
| 対象フレームワーク | .NET 8 |
| ソリューション名 | Chapter03 |
| プロジェクト名 | Ch03_Operators |
csproj の Nullable は disable に変更してください
プロジェクト作成後、
Ch03_Operators.csprojを開き、<Nullable>disable</Nullable>に変更してください。詳しい手順は、第 1 章「1-1 プロジェクトを作成する」を参照してください。
補足:ソリューション名とプロジェクト名は別の名前にします
本研修では、ソリューション名は
Chapter03、プロジェクト名はCh03_Operatorsのように分けます。新規作成画面で「ソリューション名」欄を
Chapter03に変更してください。
作業前チェック
Section titled “作業前チェック”作業を始める前に、次の内容を確認してください。
- Visual Studio 2022 でコンソールアプリを作成できる(不安な場合は 付録 B「VS2022 の準備と基本操作」 を参照)
-
.NET 8.0を選択できる - csproj の Nullable を disable に変更できる
-
Console.WriteLineを使って表示できる -
int型とstring型の変数を作成できる - 変数に値を代入できる
- 文字列補間
$"..."を使って変数を埋め込める -
Console.ReadLineでキーボードからの入力を受け取れる - 第 2 章の課題を Git に提出済みである
3-1 演算と演算子
Section titled “3-1 演算と演算子”演算とは、値を使って計算や処理を行うことです。
たとえば、次のような処理は演算です。
100 + 5120 * 4totalPrice / memberCountfirstName + lastName数値の計算だけでなく、文字列をつなげる処理も演算の一種です。
演算子とは、演算を行うための記号です。
たとえば、足し算には +、掛け算には * を使います。
| 演算子 | 意味 |
|---|---|
+ | 足し算、文字列連結 |
- | 引き算 |
* | 掛け算 |
/ | 割り算 |
% | 割り算の余り |
= | 代入 |
+= | 加算して代入 |
*= | 掛け算して代入 |
プログラムでは、数学と似た記号を使いますが、意味が少し違うものもあります。
特に = は、数学の「等しい」ではなく、C# では 右側の値を左側の変数に代入する という意味で使います。
int total = 100 + 50;このコードは、次のように読みます。
100 + 50 を計算し、その結果を total に代入する3-2 算術演算
Section titled “3-2 算術演算”基本的な計算
Section titled “基本的な計算”C# では、次の演算子を使って基本的な計算ができます。
| 演算子 | 意味 | 例 |
|---|---|---|
+ | 足し算 | 10 + 3 |
- | 引き算 | 10 - 3 |
* | 掛け算 | 10 * 3 |
/ | 割り算 | 10 / 3 |
% | 余り | 10 % 3 |
次のコードを入力して実行してください。
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); } }}実行結果は次のようになります。
1373031整数同士の割り算
Section titled “整数同士の割り算”注目してほしいのは、次の結果です。
Console.WriteLine(number1 / number2);10 / 3 の結果は、数学では 3.333... です。
しかし、上のコードでは 3 と表示されます。
これは、number1 と number2 がどちらも int 型だからです。
int 型同士の割り算では、小数部分が切り捨てられます。
10 / 3 = 3余りを知りたい場合は % を使います。
10 % 3 = 1余りを求める
Section titled “余りを求める”% は、割り算の余りを求める演算子です。
Console.WriteLine(10 % 3);実行結果:
1余りは、今後の条件分岐でよく使います。
たとえば、偶数か奇数かを判定するときに使えます。
int number = 8;
Console.WriteLine(number % 2);実行結果:
02 で割った余りが 0 なら偶数です。この考え方は、第 4 章の条件分岐で使います。
商品金額を計算する
Section titled “商品金額を計算する”業務アプリでは、金額や数量を計算する場面がよくあります。
次のコードでは、単価と数量から合計金額を求めます。
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円このように、変数名を適切に付けると、何を計算しているか分かりやすくなります。
1人あたりの金額を求める
Section titled “1人あたりの金額を求める”次のコードでは、合計金額を人数で割ります。
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 型同士の割り算では、小数は表示されません。そのため、余りが必要な場合は % を使います。
演算子の優先順位
Section titled “演算子の優先順位”複数の演算子を組み合わせた式では、計算される順番が決まっています。
第 1 章でも触れましたが、ここで改めて整理します。
| 優先順位 | 演算子 | 例 |
|---|---|---|
| 高 | *、/、% | 2 * 3 を先に計算 |
| 低 | +、- | 後から計算 |
たとえば、次の式は 掛け算が先 に計算されます。
int result = 10 + 2 * 3;Console.WriteLine(result);実行結果:
162 * 3 が先に 6 になり、その後 10 + 6 で 16 になります。
足し算を先に計算したい場合は、丸かっこ () を使います。
int result = (10 + 2) * 3;Console.WriteLine(result);実行結果:
36業務アプリでは、税込価格の計算などで優先順位が問題になることがあります。
// 単価 × 数量 × 税率 を一度に計算decimal totalIncludingTax = 180m * 5 * 1.10m;このコードは、左から順に 180m * 5 = 900m、900m * 1.10m = 990.00m と計算されます。
* と / が並んだ場合は、左から順に計算 されます。
迷ったらかっこを付ける
優先順位を全部覚えなくても、
()で囲めば意図した順番で計算できます。読む人にとっても分かりやすくなるため、複雑な計算では積極的に
()を使ってください。
エラーになる例:全角記号を使う
Section titled “エラーになる例:全角記号を使う”次のコードはエラーになります。
int total = 100 + 50;+ が全角記号だからです。
正しくは、半角の + を使います。
int total = 100 + 50;C# のコードでは、演算子や記号は基本的に半角で入力してください。
3-3 単項演算子
Section titled “3-3 単項演算子”単項演算子とは
Section titled “単項演算子とは”単項演算子とは、1 つの値に対して使う演算子です。
この章では、符号を表す + と - を確認します。
int x = +100;int y = -50;+100 は正の値、-50 は負の値を表します。
符号を反転する
Section titled “符号を反転する”次のコードを入力して実行してください。
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結果:70penalty に -10 が入っているため、basePoint + penalty は 80 + (-10) という意味になります。
補足:インクリメント
++とデクリメント--C# には、1 を加算する
++、1 を減算する--という単項演算子もあります。int count = 1;count++; // count に 1 を加える(count = 2)count--; // count から 1 を引く(count = 1)主に繰り返し処理で使われるため、本研修では 第 5 章「繰り返し処理」 で改めて扱います。 ここでは「そういう書き方もある」とだけ知っておけば十分です。
式全体にマイナスを付ける
Section titled “式全体にマイナスを付ける”式全体に - を付けることもできます。
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取消金額:-3603-4 代入演算子
Section titled “3-4 代入演算子”第 2 章で学習したように、変数に値を入れることを代入といいます。
int count = 1;このコードは、count という変数に 1 を代入しています。
変数の値を更新する
Section titled “変数の値を更新する”変数の値は、後から更新できます。
namespace Ch03_Operators{ internal class Program { static void Main(string[] args) { int count = 1;
Console.WriteLine(count);
count = count + 1;
Console.WriteLine(count); } }}実行結果:
12次の行に注目してください。
count = count + 1;これは、数学の式として見ると不自然です。
しかし、C# では次の意味になります。
現在の count の値に 1 を加え、その結果を count に代入するつまり、count の値を 1 増やしています。
複合代入演算子
Section titled “複合代入演算子”count = count + 1; は、次のように短く書けます。
count += 1;+= は、現在の値に右側の値を加えて、同じ変数に代入する演算子です。
namespace Ch03_Operators{ internal class Program { static void Main(string[] args) { int count = 1;
count += 1; Console.WriteLine(count);
count += 5; Console.WriteLine(count); } }}実行結果:
27主な複合代入演算子
Section titled “主な複合代入演算子”| 演算子 | 意味 | 例 |
|---|---|---|
+= | 加算して代入 | x += 3 |
-= | 減算して代入 | x -= 3 |
*= | 掛け算して代入 | x *= 3 |
/= | 割り算して代入 | x /= 3 |
%= | 余りを代入 | x %= 3 |
ポイントを加算する例
Section titled “ポイントを加算する例”次のコードでは、利用者のポイントを加算します。
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}"); } }}実行結果:
現在のポイント:10020ポイント加算後:12010ポイント利用後:110このように、現在の値をもとに増減させる処理では、複合代入演算子がよく使われます。
エラーではないが読みにくい例
Section titled “エラーではないが読みにくい例”次のコードは動作します。
points=points+20;しかし、読みやすいコードとはいえません。
次のように、空白を適切に入れると読みやすくなります。
points = points + 20;さらに、意図が「20 加算する」なら、次のように書くこともできます。
points += 20;研修では、動くだけでなく、読みやすいコードを書くことも意識してください。
3-5 数値の型変換
Section titled “3-5 数値の型変換”int 型と double 型
Section titled “int 型と double 型”int は整数を扱う型です。
int number = 10;double は小数を扱う型です。
double rate = 1.5;整数同士の割り算では、小数部分が切り捨てられます。
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 を使います。
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型による割り算の挙動
Section titled “型による割り算の挙動”割り算の結果が整数になるか小数になるかは、割り算の左右の型 で決まります。
| 左 | 右 | 結果の型 | 例 | 結果 |
|---|---|---|---|---|
int | int | int | 10 / 3 | 3(小数切り捨て) |
int | double | double | 10 / 3.0 | 3.3333... |
double | int | double | 10.0 / 3 | 3.3333... |
double | double | double | 10.0 / 3.0 | 3.3333... |
ポイントは、左右のどちらか片方が double であれば、結果は double になる ことです。
このルールは、次に学ぶキャストでも重要になります。
キャストによる型変換
Section titled “キャストによる型変換”int 型の値を、一時的に double 型として扱いたい場合があります。
そのようなときは、キャストを使います。
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; // 両方キャストシンプルに書くため、片方だけキャストするのが一般的です。
小数を整数に変換する
Section titled “小数を整数に変換する”double の値を int に変換することもできます。
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 で整数に変換しています。
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 とは
Section titled “int.Parse とは”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 は文字列を整数に変換する数字以外を変換しようとするとエラーになる3-6 文字列の連結
Section titled “3-6 文字列の連結”+ 演算子で文字列をつなげる
Section titled “+ 演算子で文字列をつなげる”+ は、数値では足し算を行います。
しかし、文字列に対して使うと、文字列をつなげる働きをします。
namespace Ch03_Operators{ internal class Program { static void Main(string[] args) { string lastName = "山田"; string firstName = "二郎";
string fullName = lastName + firstName;
Console.WriteLine(fullName); } }}実行結果:
山田二郎文字列と数値をつなげる
Section titled “文字列と数値をつなげる”文字列と数値を + でつなげることもできます。
namespace Ch03_Operators{ internal class Program { static void Main(string[] args) { string itemName = "ノート"; int price = 180;
string message = itemName + "の価格は" + price + "円です。";
Console.WriteLine(message); } }}実行結果:
ノートの価格は180円です。このように、文字列と数値を連結すると、数値は文字列として扱われます。
文字列連結の注意点
Section titled “文字列連結の注意点”次の 2 つを比べてください。
Console.WriteLine(100 + 20);Console.WriteLine("100" + "20");実行結果:
120100201 行目は数値の足し算です。
2 行目は文字列の連結です。
100 + 20 → 数値の足し算"100" + "20" → 文字列の連結" で囲むかどうかで、結果が変わります。
文字列と数値の + は左から順に評価される
Section titled “文字列と数値の + は左から順に評価される”文字列と数値を混ぜた + を使うときは、左から順に評価される ことに注意してください。
次の 2 つのコードを比べてください。
Console.WriteLine(1 + 2 + "abc");Console.WriteLine("abc" + 1 + 2);実行結果:
3abcabc12順番に追ってみると違いが分かります。
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}"のように書けば、{}の中で先に計算されるため、意図と結果がずれにくくなります。計算と文字列を混ぜたい場面では、文字列補間の方が安全です。
文字列補間を使う
Section titled “文字列補間を使う”文字列と変数を組み合わせて表示する場合は、文字列補間を使うと読みやすくなります。
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}個購入しました。";どちらも同じように表示できます。
しかし、文字列補間を使った方が、文章の形が分かりやすくなります。
本研修では、複雑な表示を行うときは文字列補間を積極的に使います。
よくあるつまずき
Section titled “よくあるつまずき”この章でよくあるつまずきを確認します。
| つまずき | 原因 | 対応 |
|---|---|---|
10 / 3 が 3 になる | int 同士の割り算になっている | 小数が必要なら double やキャストを使う |
% の意味が分からない | 割り算の商と余りを混同している | 10 / 3 は 3、10 % 3 は 1 と考える |
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 になっている | 半角の +、-、*、/、% を使う |
学んだことチェック
Section titled “学んだことチェック”次の項目について、自分で説明できるか確認してください。
- 演算とは何かを説明できる
- 演算子とは何かを説明できる
-
+、-、*、/を使って計算できる -
%が余りを求める演算子であることを説明できる -
int同士の割り算では小数部分が切り捨てられることを説明できる - 演算子の優先順位(
*///%が+/-より先に計算される)を説明できる -
+=を使って変数の値を増やせる -
count = count + 1の意味を説明できる -
doubleを使って小数を扱える - 割り算の結果の型が左右の型で決まることを説明できる
- キャストによる型変換を使える
- 片方だけキャストすれば
doubleになる理由を説明できる -
int.Parseで文字列を整数に変換できる -
+で文字列を連結できる - 文字列と数値の
+で意図しない結果が出る場面を説明できる - 文字列補間を使って変数を表示できる
研修の進め方によっては、隣の人またはチーム内で説明確認を行います。
次の内容を、自分の言葉で説明してください。
10 / 3と10 % 3の違いは何ですか。count = count + 1;は何をしているコードですか。+=はどのような意味ですか。intとdoubleの違いは何ですか。10 + 2 * 3の結果が16になる理由は何ですか。(double)total / memberCountで、memberCountをキャストしなくても良い理由は何ですか。Console.ReadLineで受け取った値を計算に使うには、何が必要ですか。"100" + "20"の結果が10020になる理由は何ですか。1 + 2 + "abc"と"abc" + 1 + 2の結果が違う理由は何ですか。
説明するときは、完全な答えでなくても構いません。自分の言葉で説明しようとすることが大切です。
この章の演習課題に取り組みます。
制限時間は 45 分 です。
時間内にすべて完成しなくても構いません。できたところまでを保存し、Git に提出してください。
演習の進め方の詳細は、付録A「演習の進め方」 を参照してください。
この章の演習の進め方
Section titled “この章の演習の進め方”課題はソリューション Kadai03 の中に作成してください。
各課題のプロジェクト名は次の通りです。
| 課題 | プロジェクト名 |
|---|---|
| 課題3-1 | Kd03_01_SplitBill |
| 課題3-2 | Kd03_02_PointUpdate |
| 課題3-3 | Kd03_03_InputQuantity |
| 課題3-4(発展) | Kd03_04_TimeConvert |
| 課題3-5(発展) | Kd03_05_AverageScore |
補足:ソリューションに複数のプロジェクトを追加する方法
最初の課題で
Kadai03ソリューションとKd03_01_SplitBillプロジェクトを同時に作成します。2 つ目以降の課題は、ソリューションエクスプローラーで
Kadai03を右クリックし、追加→新しいプロジェクトから追加します。
演習の共通ルール
Section titled “演習の共通ルール”以下は、本章のすべての課題に共通する作業です。各課題の本文には繰り返し書きません。
| 作業 | 内容 | 参照 |
|---|---|---|
| プロジェクト作成時の設定 | 「最上位レベルのステートメントを使用しない」にチェック | 第 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 してください。 未完成の場合は、どこまでできたかを報告できるようにしておきましょう。
まずは、全員が必須課題に取り組んでください。
課題3-1 割り勘計算
Section titled “課題3-1 割り勘計算”次の条件で、1人あたりの金額と余りを求めてください。
| 項目 | 値 |
|---|---|
| 合計金額 | 3500 |
| 人数 | 4 |
実行結果例:
合計金額:3500円人数:4人1人あたり:875円余り:0円条件:
/を使って 1 人あたりの金額を求める%を使って余りを求める- 変数名は意味が分かる名前にする
課題3-2 ポイント加算
Section titled “課題3-2 ポイント加算”現在のポイントが 100 あります。
次の処理を順番に行い、各段階のポイントを表示してください。
20ポイント加算15ポイント利用2倍キャンペーンで現在ポイントを2倍実行結果例:
開始時:10020ポイント加算後:12015ポイント利用後:1052倍後: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-5 平均点計算
Section titled “課題3-5 平均点計算”3 つの点数を変数に代入し、合計点と平均点を表示してください。
| 項目 | 値 |
|---|---|
| 点数1 | 80 |
| 点数2 | 75 |
| 点数3 | 92 |
実行結果例:
合計点:247点平均点:82.33333333333333点条件:
- 合計点を
int型で求める - 平均点は小数が表示されるようにする
- キャストを使って平均点を求める
ヒント:
double average = (double)total / 3;提出前チェックリスト
Section titled “提出前チェックリスト”提出前に、次の項目を確認してください。
- プログラムを Visual Studio から実行できる
-
+、-、*、/を使った計算ができている -
%を使って余りを求めている - 計算結果を変数に保存している
-
+=などの代入演算子を使っている - 小数が必要な計算で
doubleまたはキャストを使っている -
Console.ReadLineの入力値をint.Parseで数値に変換している - 文字列補間を使って分かりやすく表示している
- セミコロンの付け忘れがない
- 全角記号が混ざっていない
- インデントが整っている
- Git に commit している
- Git に push している
Git への提出
Section titled “Git への提出”第 3 章の課題プロジェクト群(Kadai03 ソリューション)を Git に提出します。
git statusgit add .git commit -m "Chapter03 演算と演算子"git pushGit の詳しい操作は、付録 C「Git のインストールと提出ルール」 を参照してください。
この章のまとめ
Section titled “この章のまとめ”この章では、演算と演算子について学習しました。
この章で学んだ主な内容は次の通りです。
- 演算とは、値を使って計算や処理を行うこと
- 演算子とは、演算を行うための記号である
+、-、*、/を使って基本的な計算ができる%を使うと割り算の余りを求められるint型同士の割り算では、小数部分が切り捨てられる- 複数の演算子を組み合わせた式は、
*、/、%が先に計算される +=、-=、*=などで変数の値を更新できる++、--は単項演算子の仲間で、第 5 章で改めて扱うintとdoubleでは扱える値の種類が違う- 割り算は左右のどちらか片方が
doubleなら結果もdoubleになる - キャストを使うと、一時的に別の型として扱える
Console.ReadLineの結果は文字列であるint.Parseを使うと、文字列を整数に変換できる+は文字列の連結にも使える- 文字列と数値の
+は左から順に評価される(意図がずれやすい) - 文字列補間を使うと、変数の値を文章の中に埋め込める(計算もそのまま書ける)
次章では、条件に応じた処理 を学習します。
条件分岐を使うと、入力された値や計算結果に応じて、実行する処理を変えられるようになります。
この章で学んだ % を使った余りの計算も、条件分岐の中で活躍します。