E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)
Implementacja niewielkiego ewaluatora obsługującego + i - od lewej do prawej. Tokenizacja cyfr i operatorów, ignorowanie spacji oraz dodanie prostych zabezpieczeń
E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej) to bezpłatna lekcja JavaScript Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej JavaScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs JavaScript Academy zawiera 3 lekcji w sumie.
Co utworzymy
Cel: obliczać wartości z krótkich ciągów matematycznych zawierających wyłącznie + i -.
- Tokenizowanie liczb i operatorów
- Ignorowanie spacji
- Obliczanie od lewej do prawej
- Dodanie prostych zabezpieczeń przed błędami

Tokenizer: liczby i operatory
Tokenizer tworzy liczby z cyfr i zwraca tablicę w rodzaju [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"));
Obliczanie od lewej do prawej (+/-)
Obliczenia są wykonywane od lewej do prawej. Na razie nie obsługujemy kolejności działań ani nawiasów.
// 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]));
Bezpieczna otoczka
Należy utworzyć bezpieczną otoczkę, która zwraca wartość albo krótki komunikat o błędzie zrozumiały dla początkujących.
// 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"));

Uruchamianie małych przypadków
Przykłady powinny być małe. W kolejnych częściach dodamy kolejność działań, nawiasy i jednoargumentowy minus.
// 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

Wskazówki dla początkujących
Wskazówki:
- Należy zacząć od małego zakresu (+ i -).
- Zamiast zgłaszać wyjątki należy zwracać krótkie komunikaty o błędach.
- Należy pisać małe funkcje pomocnicze (tokenize, eval).

Quiz z obliczania od lewej do prawej
Szybkie sprawdzenie: wynik obliczania od lewej do prawej.

Podsumowanie
Podsumowanie: należy tokenizować liczby i symbole +/-, ignorować spacje oraz obliczać wynik od lewej do prawej. Należy zwracać krótkie komunikaty o błędach. Następny temat: kolejność działań i nawiasy.

Ucz się JavaScript dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 59
- Lekcje
- 200
Często zadawane pytania
Czy lekcja „E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)” jest bezpłatna?
Tak — pełny tekst „E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu JavaScript Academy, przejdź na CoddyKit PRO. Kurs JavaScript Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)”?
Implementacja niewielkiego ewaluatora obsługującego + i - od lewej do prawej. Tokenizacja cyfr i operatorów, ignorowanie spacji oraz dodanie prostych zabezpieczeń Ćwiczysz JavaScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć JavaScript Academy?
Nie wymagamy żadnego doświadczenia. JavaScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.
Ile czasu zajmuje lekcja „E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji JavaScript Academy?
Tak. Każda lekcja JavaScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- E1 — ewaluator wyrażeń (część 1: + i - od lewej do prawej)
- E2 — analizator logów (proste filtry i liczniki)
- E3 — pula/kolejka Promise (asynchroniczna współbieżność)