0Pricing
JavaScript Academy · Pelajaran

E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)

Implementasikan evaluator kecil yang menangani + dan - dari kiri ke kanan. Tokenisasi digit dan operator, abaikan spasi, serta tambahkan penjaga sederhana

E1 — Evaluator Ekspresi (bagian 1: + dan - LTR) adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 3 pelajaran total.

Yang akan kita bangun

Tujuan: Mengevaluasi string matematika kecil yang hanya menggunakan + dan -.

  • Tokenisasi angka dan operator
  • Abaikan spasi
  • Hitung dari kiri ke kanan
  • Tambahkan penjagaan kesalahan sederhana
E1 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 1

Penganalisis token: angka dan operator

Penganalisis token membentuk angka dari digit dan mengembalikan larik seperti [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 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 2

Evaluasi LTR (+/-)

Hitung dari kiri ke kanan. Kita belum menangani prioritas atau tanda kurung.

// 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 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 3

Pembungkus aman

Buat pembungkus aman yang mengembalikan nilai atau string kesalahan kecil bagi pemula.

// 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 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 4

Jalankan kasus kecil

Jaga agar contoh tetap kecil. Kita akan menambahkan prioritas, tanda kurung, dan minus unary pada bagian berikutnya.

// 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 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 5

Panduan bagi pemula

Kiat:

  • Mulailah dengan cakupan kecil (hanya + dan -).
  • Kembalikan kesalahan kecil daripada melemparkannya.
  • Tulis pembantu kecil (tokenisasi, evaluasi).
  • Tambahkan fitur selangkah demi selangkah.
E1 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 6

Kuis perilaku LTR

Pemeriksaan singkat: Hasil dari kiri ke kanan.

E1 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 7

Ringkasan

Ringkasan: Tokenisasi angka dan +/-, abaikan spasi, lalu evaluasi dari kiri ke kanan. Kembalikan kesalahan kecil. Berikutnya: prioritas dan tanda kurung.

E1 — Evaluator Ekspresi (bagian 1: + dan - LTR) — ilustrasi 8

Pertanyaan yang Sering Diajukan

Apakah pelajaran “E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)” gratis?

Ya — teks lengkap “E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)”?

Implementasikan evaluator kecil yang menangani + dan - dari kiri ke kanan. Tokenisasi digit dan operator, abaikan spasi, serta tambahkan penjaga sederhana Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. E1 — Evaluator Ekspresi (bagian 1: + dan - LTR)
  2. E2 — Penganalisis Log (Filter dan Penghitung Sederhana)
  3. E3 — Kumpulan/Antrean Promise (Konkurensi async)
← Kembali ke JavaScript Academy