0Pricing
C++ Academy · レッスン

シンプルな電卓CLIの構築

演算子を解析して式を評価するコマンドライン電卓を構築します。

「シンプルな電卓CLIの構築」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

プロジェクトの目標

3 + 4 のような式を読み取り、結果を出力するコマンドライン電卓を作成します。最小限の機能にとどめながら、適切に構造化します。

必要なヘッダー

入出力には iostream、入力には string が必要です。

#include <iostream>
#include <string>
#include <sstream>

メインループの骨組み

1行を読み取り、解析し、計算して出力します。EOF で終了します。

int main() {
    std::string line;
    while (std::getline(std::cin, line)) {
        if (line == "quit") break;
        double result = evaluate(line);
        std::cout << "= " << result << "\n";
    }
}

stringstream による解析

オペランド2つと演算子1つで構成される場合、stringstream によるトークン化が簡単で堅牢です。

double evaluate(const std::string& line) {
    std::stringstream ss(line);
    double a, b;
    char op;
    ss >> a >> op >> b;
    return apply(op, a, b);
}

演算子を適用する

演算子の文字に対して switch を使います。

double apply(char op, double a, double b) {
    switch (op) {
        case '+': return a + b;
        case '-': return a - b;
        case '*': return a * b;
        case '/': return b != 0 ? a / b : 0;
        default:  return 0;
    }
}

エラー処理

ユーザーが無効な入力をした場合はどうすればよいでしょうか。ストリームの状態を確認し、分かりやすいメッセージを表示してください。

if (!(ss >> a >> op >> b)) {
    std::cout << "Invalid input\n";
    return 0;
}

ゼロ除算

ゼロ除算は明示的に処理してください。エラーを表示するか例外を送出するかは、設計に合う方を選びます。

if (op == '/' && b == 0) {
    throw std::runtime_error("division by zero");
}

演算子を追加する

switch を拡張して、%、べき乗の ^、または sqrt のような名前付き関数など、より多くの演算をサポートします。

状態を保持する

累計を扱いたい場合は、最後の結果を保存し、ユーザーが + で式を始められるようにします。

double last = 0;
// if first token is an operator, use `last` as the first operand

UX を仕上げる

入力ごとにプロンプトを表示し、終了時には quit または EOF を受け付け、空行は無視します。

オペランドを3つ以上扱う

3 + 4 * 2 のような複数オペランドの式には、式パーサーが必要です。標準的な方法は shunting-yard アルゴリズムです。

電卓をテストする

ファイルから入力をパイプすると、すばやくテストできます。

echo "3 + 4\n10 / 2" | ./calc

クイックチェック

3 + 4 のような空白区切りのトークンを解析するのに便利な標準ライブラリ機能はどれですか。

まとめ

小さな CLI 電卓によって、入出力、stringstream による解析、switch による振り分けを学べます。エラー処理、演算子の追加、状態保持、そして最終的には式パーサーへと拡張できます。

よくある質問

「シンプルな電卓CLIの構築」レッスンは無料ですか?

はい。「シンプルな電卓CLIの構築」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「シンプルな電卓CLIの構築」で何を学びますか?

演算子を解析して式を評価するコマンドライン電卓を構築します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「シンプルな電卓CLIの構築」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. シンプルな電卓CLIの構築
  2. CSVファイルの読み書き
  3. 数当てゲーム
  4. 単語頻度カウンター
← C++ Academyに戻る