0Pricing
JavaScript Academy · レッスン

E1 — 式評価器(パート1:+と-の左から右への処理)

+と-を左から右へ処理する小さな評価器を実装します。数字と演算子をトークン化し、空白を無視して、簡単なガードを追加します。

「E1 — 式評価器(パート1:+と-の左から右への処理)」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。

作成するもの

目標: +と-だけを使う小さな数式文字列を評価します。

  • 数値と演算子をトークン化します
  • 空白を無視します
  • 左から右に計算します
  • 基本的なエラーガードを追加します
E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト1

トークナイザー: 数値と演算子

トークナイザーは数字から数値を組み立て、[12, "+", 3, "-", 4]のような配列を返します。

// Tokenize: split into numbers and operators; ignore spaces
function tokenize(expr) {
  if (typeof expr !== "string") return null;

  const tokens = [];
  let num = "";

  for (let i = 0; i < expr.length; i = i + 1) {
    const ch = expr[i];

    if (ch === " ") {
      // skip spaces
      continue;
    }

    if (ch >= "0" && ch <= "9") {
      // build number
      num = num + ch;
    } else if (ch === "+" || ch === "-") {
      // flush pending number
      if (num.length > 0) {
        tokens.push(Number(num));
        num = "";
      }
      tokens.push(ch);
    } else {
      // unsupported character
      return null;
    }
  }

  if (num.length > 0) tokens.push(Number(num));
  return tokens;
}

console.log("tokens:", tokenize("12 + 3 - 4"));
E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト2

左から右に評価(+/-)

左から右に計算します。まだ演算子の優先順位や括弧には対応しません。

// Evaluate tokens left-to-right for + and - only
function evalPlusMinus(tokens) {
  if (!Array.isArray(tokens) || tokens.length === 0) return null;

  // result starts with first number
  let acc = tokens[0];
  if (typeof acc !== "number") return null;

  // step through [op, num] pairs
  for (let i = 1; i < tokens.length; i = i + 2) {
    const op = tokens[i];
    const val = tokens[i + 1];

    if ((op !== "+" && op !== "-") || typeof val !== "number") {
      return null;
    }

    if (op === "+") acc = acc + val;
    else acc = acc - val;
  }

  return acc;
}

console.log("eval 10-3-2:", evalPlusMinus([10, "-", 3, "-", 2]));
E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト3

安全なラッパー

値または初心者にも分かりやすい短いエラー文字列のいずれかを返す安全なラッパーを作成します。

// Glue the pieces: from string to result
function evalExprSimple(expr) {
  const tokens = tokenize(expr);
  if (tokens === null) {
    return { ok: false, error: "Invalid character" };
  }
  const result = evalPlusMinus(tokens);
  if (typeof result !== "number") {
    return { ok: false, error: "Invalid sequence" };
  }
  return { ok: true, value: result };
}

console.log("12 + 3 - 4 =", evalExprSimple("12 + 3 - 4"));
console.log("bad char   =", evalExprSimple("2 + a"));
E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト4

小さなケースを実行する

例は小さく保ちます。後のパートで、優先順位、括弧、単項マイナスを追加します。

// A few quick checks
const cases = [
  "0-3",
  "7+5",
  "10-3-2",
  "2 + 2 + 2",
  "9 - 1 + 1"
];

for (const c of cases) {
  const r = evalExprSimple(c);
  console.log(c, "=>", r.ok ? r.value : r.error);
}

// Note: unary minus (like "-3+2") not handled yet
// This simple version expects a number first
E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト5

初心者向けガイド

ヒント:

  • まずは小さな範囲(+と-だけ)から始めます。
  • 例外を投げる代わりに小さなエラーを返します。
  • 小さなヘルパー(tokenize、eval)を作成します。
  • 機能を段階的に追加します。
E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト6

左から右の動作クイズ

クイックチェック: 左から右に計算した結果を確認します。

E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト7

まとめ

まとめ: 数値と+/-をトークン化し、空白を無視して、左から右に評価します。小さなエラーを返します。次は、優先順位と括弧です。

E1 — 式評価器(パート1:+と-の左から右への処理) — イラスト8

よくある質問

「E1 — 式評価器(パート1:+と-の左から右への処理)」レッスンは無料ですか?

はい。「E1 — 式評価器(パート1:+と-の左から右への処理)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。

「E1 — 式評価器(パート1:+と-の左から右への処理)」で何を学びますか?

+と-を左から右へ処理する小さな評価器を実装します。数字と演算子をトークン化し、空白を無視して、簡単なガードを追加します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「E1 — 式評価器(パート1:+と-の左から右への処理)」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. E1 — 式評価器(パート1:+と-の左から右への処理)
  2. E2 — ログアナライザー(簡単なフィルターとカウンター)
  3. E3 — Promiseプール/キュー(非同期コンカレンシー)
← JavaScript Academyに戻る