آموزش رایگان جاوا اسکریپت (JavaScript)

آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی

4م آبان 1403 محراب حسن زاده
آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی

ماشین حساب یکی از پروژه‌های ساده و پرکاربرد برای تمرین جاوا اسکریپت است. با ساخت یک ماشین حساب می‌توانید مهارت خود را در دستکاری DOM، مدیریت رویدادها و انجام محاسبات تقویت کنید. در این مقاله به شما نحوه ساخت یک ماشین حساب ساده با جاوا اسکریپت را آموزش می‌دهیم و همچنین نکات بهینه‌سازی و سئو مرتبط با استانداردهای گوگل را مرور می‌کنیم.


اهداف این مقاله:

  • ساخت یک ماشین حساب با HTML، CSS و جاوا اسکریپت

  • انجام عملیات ریاضی پایه (جمع، تفریق، ضرب، تقسیم)

  • استفاده از DOM برای مدیریت ورودی‌ها و خروجی‌ها

  • بهینه‌سازی تجربه کاربری


گام اول: ساختار HTML ماشین حساب

ابتدا باید یک ساختار HTML برای ماشین حساب ایجاد کنیم که شامل دکمه‌های اعداد و عملیات‌های ریاضی و یک صفحه نمایش برای نمایش نتایج باشد.



< ! DOCTYPE html >
< html lang="fa" >
< head >
    < meta charset="UTF-8" >
    < meta name="viewport" content="width=device-width, initial-scale=1.0" >
    < title > ماشین حساب < / title >
    < style >
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .calculator {
            background-color: #fff;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        .display {
            width: 100%;
            height: 50px;
            margin-bottom: 10px;
            text-align: right;
            font-size: 24px;
            padding: 10px;
            background-color: #eaeaea;
            border-radius: 5px;
            border: none;
        }
        .buttons {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            grid-gap: 10px;
        }
        .buttons button {
            width: 100%;
            padding: 20px;
            font-size: 18px;
            cursor: pointer;
            border-radius: 5px;
            border: 1px solid #ddd;
            background-color: #f0f0f0;
            transition: background-color 0.2s;
        }
        .buttons button:hover {
            background-color: #ddd;
        }
        .buttons .equals {
            background-color: #28a745;
            color: white;
        }
        .buttons .equals:hover {
            background-color: #218838;
        }
    < / style >
< / head >
< body >
    < div class="calculator" >
        < input type="text" id="display" class="display" disabled >
        < div class="buttons" >
            < button > 7 < / button >
            < button > 8 < / button >
            < button > 9 < / button >
            < button > / < / button >
            < button > 4 < / button >
            < button > 5 < / button >
            < button > 6 < / button >
            < button > * < / button >
            < button > 1 < / button >
            < button > 2 < / button >
            < button > 3 < / button >
            < button > - < / button >
            < button > 0 < / button >
            < button > . < / button >
            < button class="equals" > = < / button >
            < button > + < / button >
            < button class="clear" > C < / button >
        < / div >
    < / div >

    < script src="app.js" > < / script >
< / body >
< / html >


توضیحات HTML:

  • نمایشگر ماشین حساب: یک ورودی متنی با کلاس display برای نمایش اعداد و نتایج داریم که کاربر نمی‌تواند به صورت دستی در آن چیزی تایپ کند (از ویژگی disabled استفاده شده است).

  • دکمه‌های ماشین حساب: دکمه‌های اعداد (0 تا 9)، دکمه‌های عملیات ریاضی (+, -, *, /)، دکمه نقطه (.) و دکمه تساوی (=) برای محاسبات نهایی وجود دارد. همچنین یک دکمه برای پاک کردن (C) وجود دارد.


گام دوم: نوشتن کد جاوا اسکریپت

حالا باید کد جاوا اسکریپت را بنویسیم تا وقتی کاربر روی دکمه‌ها کلیک می‌کند، مقادیر به درستی در نمایشگر قرار گیرند و محاسبات انجام شود.

در فایل app.js، کد زیر را قرار دهید:



// دسترسی به المان‌های صفحه
const display = document.getElementById('display');
const buttons = document.querySelectorAll('.buttons button');

let currentInput = ''; // ورودی فعلی کاربر
let operator = null; // عملگر فعلی
let previousInput = ''; // ورودی قبلی

// اضافه کردن رویداد کلیک به تمامی دکمه‌ها
buttons.forEach(button => {
    button.addEventListener('click', () => {
        const value = button.textContent;

        // اگر دکمه عدد یا نقطه باشد
        if (!isNaN(value) || value === '.') {
            currentInput += value;
            display.value = currentInput;
        }

        // اگر دکمه عملگر باشد
        if (value === '+' || value === '-' || value === '*' || value === '/') {
            operator = value;
            previousInput = currentInput;
            currentInput = ''; // برای ورودی جدید
        }

        // اگر دکمه مساوی باشد
        if (value === '=') {
            if (operator && previousInput) {
                const result = calculate(previousInput, currentInput, operator);
                display.value = result;
                currentInput = result; // نتیجه به عنوان ورودی جدید
                previousInput = '';
                operator = null;
            }
        }

        // اگر دکمه پاک کردن باشد
        if (value === 'C') {
            clear();
        }
    });
});

// تابع انجام محاسبات
function calculate(a, b, operator) {
    a = parseFloat(a);
    b = parseFloat(b);
    switch (operator) {
        case '+':
            return a + b;
        case '-':
            return a - b;
        case '*':
            return a * b;
        case '/':
            return b !== 0 ? a / b : 'خطا';
    }
}

// تابع پاک کردن نمایشگر
function clear() {
    currentInput = '';
    previousInput = '';
    operator = null;
    display.value = '';
}


توضیحات کد:

  • currentInput و previousInput: متغیر currentInput برای ذخیره ورودی فعلی کاربر و previousInput برای ذخیره ورودی قبلی است.

  • دکمه‌های اعداد و عملگرها: وقتی کاربر روی یکی از دکمه‌های اعداد یا عملگرها کلیک می‌کند، ورودی به‌روزرسانی می‌شود و در نمایشگر نمایش داده می‌شود.

  • محاسبات: زمانی که دکمه تساوی (=) فشرده می‌شود، تابع calculate بر اساس عملگر فعلی محاسبات را انجام می‌دهد و نتیجه را در نمایشگر نشان می‌دهد.

  • پاک کردن: دکمه پاک کردن (C) تمامی ورودی‌ها را پاک کرده و نمایشگر را خالی می‌کند.


گام سوم: بهینه‌سازی تجربه کاربری

برای بهبود تجربه کاربری و عملکرد بهتر ماشین حساب، می‌توانیم نکات زیر را اعمال کنیم:

  • استفاده از Event Delegation: به جای اضافه کردن رویداد کلیک به تمامی دکمه‌ها به صورت جداگانه، می‌توانیم از Event Delegation استفاده کنیم و تنها یک رویداد به عنصر والد اضافه کنیم.

  • نمایش خطا برای تقسیم بر صفر: در صورتی که کاربر بخواهد یک عدد را بر صفر تقسیم کند، یک پیام خطا نمایش داده می‌شود.

  • اضافه کردن بازخورد بصری (Visual Feedback): با استفاده از CSS می‌توانیم جلوه‌های بصری بیشتری برای دکمه‌ها ایجاد کنیم تا کاربر هنگام کلیک احساس کند که دکمه‌ها درست کار می‌کنند.


گام چهارم: نکات بهینه‌سازی و سئو

  • بارگذاری سریع صفحه: مطمئن شوید که فایل‌های جاوا اسکریپت و CSS به صورت بهینه بارگذاری می‌شوند. از تکنیک‌هایی مانند minification و compression برای کاهش حجم فایل‌ها استفاده کنید.

  • استفاده از Lazy Loading برای سایر منابع: اگر در صفحه منابع سنگین دیگری دارید که نیازی به بارگذاری فوری آن‌ها نیست، از تکنیک Lazy Loading استفاده کنید تا سرعت بارگذاری صفحه بهبود یابد.

  • تجربه کاربری مناسب: دکمه‌های ماشین حساب باید به گونه‌ای طراحی شوند که در تمامی اندازه‌های صفحه نمایش به درستی کار کنند. استفاده از طراحی واکنش‌گرا (Responsive Design) به بهبود تجربه کاربری کمک می‌کند.

  • استفاده از ARIA برای دسترسی‌پذیری: برای بهبود دسترسی‌پذیری کاربران با نیازهای ویژه، از ویژگی‌های ARIA مانند aria-label برای دکمه‌ها استفاده کنید تا کاربران با استفاده از ابزارهای کمکی به راحتی از ماشین حساب استفاده کنند.


نتیجه‌گیری

ساخت یک ماشین حساب ساده با استفاده از جاوا اسکریپت به شما کمک می‌کند تا مهارت‌های خود را در مدیریت DOM، رویدادها و محاسبات تقویت کنید. با رعایت نکات بهینه‌سازی و بهبود تجربه کاربری، می‌توانید صفحات تعاملی و کارآمدتری بسازید که هم برای کاربران جذاب باشد و هم از نظر سئو به بهبود رتبه سایت شما در موتورهای جستجو کمک کند.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

پیمایش اشیاء و آرایه‌ها در جاوا اسکریپت: راهنمای کامل برای Object.keys، Object.values، for...in و for...of
4م مهر 1403

پیمایش اشیاء و آرایه‌ها در جاوا اسکریپت: راهنمای کامل برای Object.keys، Object.values، for...in و for...of

مطالعه بیشتر
راهنمای کامل تگ‌های متنی HTML و اصول سئو برای محتوا
18م مرداد 1402

راهنمای کامل تگ‌های متنی HTML و اصول سئو برای محتوا

مطالعه بیشتر
راهنمای جامع نصب و پیکربندی محیط توسعه محلی (XAMPP، WAMP و Laragon)
14م خرداد 1405

راهنمای جامع نصب و پیکربندی محیط توسعه محلی (XAMPP، WAMP و Laragon)

مطالعه بیشتر
آموزش ساخت اولین فایل PHP و بررسی ساختار تگ‌ها بر اساس استاندارد وب
15م خرداد 1405

آموزش ساخت اولین فایل PHP و بررسی ساختار تگ‌ها بر اساس استاندارد وب

مطالعه بیشتر
آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال
23م آذر 1404

آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال

مطالعه بیشتر
آموزش ساخت Toggle Switch با CSS: طراحی دکمه‌های تغییر وضعیت جذاب و واکنش‌گرا
16م آبان 1403

آموزش ساخت Toggle Switch با CSS: طراحی دکمه‌های تغییر وضعیت جذاب و واکنش‌گرا

مطالعه بیشتر
آموزش جامع و گام‌به‌گام حلقه for در PHP + مثال‌های کاربردی
4م تیر 1405

آموزش جامع و گام‌به‌گام حلقه for در PHP + مثال‌های کاربردی

مطالعه بیشتر
تفاوت PHP با HTML، CSS و JavaScript؛ راهنمای جامع و ساده برای مبتدیان
21م خرداد 1405

تفاوت PHP با HTML، CSS و JavaScript؛ راهنمای جامع و ساده برای مبتدیان

مطالعه بیشتر
آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها
2م بهمن 1402

آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها

مطالعه بیشتر
آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد
24م آذر 1404

آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد

مطالعه بیشتر
مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on
28م شهریور 1402

مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on

مطالعه بیشتر
آموزش ساخت یک Todo List با استفاده از DOM و جاوا اسکریپت: راهنمای گام به گام
3م آبان 1403

آموزش ساخت یک Todo List با استفاده از DOM و جاوا اسکریپت: راهنمای گام به گام

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد