OB
אופיר ברנס
Builder · TLV
חזרה לכל הפרויקטים
PWA · 2026 · Personal Project

Calc

מחשבון מדעי premium — Shunting-Yard parser, פונקציות מתמטיות, tape history, ו-4 memory slots

Calc

Calc — מחשבון מדעי מלא ב-3 מצבים: בסיסי, מדעי וזיכרון. נבנה מאפס ב-Vanilla JS עם expression parser מקורי המבוסס על אלגוריתם Shunting-Yard של Dijkstra — ללא ספריות חיצוניות, ללא eval().

3 מצבים, מקלדת אחת

בסיסי (4×5)

ספרות 0-9, נקודה עשרונית, 4 פעולות (+ − × ÷), אחוז (%), פלוס/מינוס (±), AC, ⌫.

מדעי (5×6)

כל מה שיש בבסיסי + פונקציות מתמטיות:

  • טריגונומטריה — sin, cos, tan
  • לוגריתמים — ln (טבעי), log (בסיס 10), eˣ
  • חזקות — x², xʸ, √
  • קבועים — π, e
  • ערכים — |x|, 1/x, x! (פקטוריאל עד 170!)

זיכרון (4 משבצות)

M1, M2, M3, M4 — לחץ על משבצת לבחירה, ואז:

  • M+ — מוסיף את התוצאה הנוכחית למשבצת
  • M− — מחסר
  • MR — מחזיר את הערך לחישוב
  • MC — מנקה

ה-Parser: Shunting-Yard

האפליקציה ממירה את הביטוי לרישום פולני הפוך (RPN) ואז מעריכה — אותה גישה של מחשבונים מקצועיים:

  1. Tokenizer — שובר את 12+sin(π/4)×8 ל-[12, +, sin, (, π, /, 4, ), ×, 8]. מזהה minus אונרי בהקשר.
  2. Shunting-Yard — מעלה לאופרטורים precedence (^>×/>+−) ו-associativity (^ ימני, השאר שמאלי). מוציא ל-RPN: 12 π 4 / sin 8 × +.
  3. RPN evaluator — מחסנית פשוטה שמחשבת את התוצאה.

תוצאה: 18.157, מדויק לפי IEEE 754 עם רנדור חכם של float artifacts (round to 12 decimals).

פיצ'רים נוספים

  • Live evaluation — התוצאה מתעדכנת תוך כדי הקלדה
  • Tape history — 50 חישובים אחרונים שמורים ב-IndexedDB. לחץ על שורה כדי להחזיר את התוצאה כקלט חדש.
  • Copy result — לחיצה אחת להעתקת התוצאה לקליפבורד
  • תמיכה במקלדת מלאה — 0-9, +, −, *, /, (, ), %, Enter (=), Backspace, Esc (AC)
  • Vibration feedback — קל על כל מקש, חזק על = ו-AC
  • Notation מדעית אוטומטית למספרים גדולים מדי / קטנים מדי

טכנולוגיות

  • Shunting-Yard algorithm מקורי — tokenize → infix-to-postfix → RPN evaluate
  • JavaScript Number עם rounding ל-12 ספרות לטיפול ב-float precision (0.1+0.2 → 0.3 נקי)
  • IndexedDB — tape (autoIncrement keys, sorted DESC) + memory slots
  • Vibration API — feedback פר-מקש
  • Clipboard API — העתקה
  • Service Worker — cache-first + revalidate, אופליין מלא
  • PWA installable עם 3 גדלי איקונים

עיצוב

פלטה mauve + warm-cream + butter-yellow — אסתטיקה premium מסוג luxury watch / מחשבון מדעי קלאסי. נבדלת מ-violet (Focus), fuchsia (QR), plum (Flash). רקע #1a0d18 עמוק · mauve #a06ca6 · cream #fef9c3 · אופרטורים בזהב #fcd34d · equals במאוב bright #c084fc.

טיפוגרפיה — Heebo + IBM Plex Mono ל-display ולמספרים (300-500 weight, tabular-nums) + Frank Ruhl Libre לכותרות. Glassmorphic display עם backdrop-filter blur+saturate, layered gradient borders, button shadows עם depth 3D.

פתח את Calc ב-ofir.zbang.net/calc

· TECHNOLOGY ·
PWA Shunting-Yard RPN IndexedDB Vibration API Clipboard API Service Worker Custom Parser

פרויקטים קשורים.

· YOUR PROJECT NEXT ·

הפרויקט הבא שלך?

בוא נדבר