آموزش رایگان جاوا اسکریپت (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، رویدادها و محاسبات تقویت کنید. با رعایت نکات بهینه‌سازی و بهبود تجربه کاربری، می‌توانید صفحات تعاملی و کارآمدتری بسازید که هم برای کاربران جذاب باشد و هم از نظر سئو به بهبود رتبه سایت شما در موتورهای جستجو کمک کند.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع
28م مهر 1403

آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع

مطالعه بیشتر
آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب
9م آبان 1403

آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب

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

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

مطالعه بیشتر
آموزش Event Handling و v-on در Vue.js | مدیریت رویدادها با مثال کاربردی
22م آذر 1404

آموزش Event Handling و v-on در Vue.js | مدیریت رویدادها با مثال کاربردی

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

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

مطالعه بیشتر
آشنایی با Vue CLI و ایجاد پروژه‌های پیشرفته در Vue.js | راهنمای کامل
29م آذر 1404

آشنایی با Vue CLI و ایجاد پروژه‌های پیشرفته در Vue.js | راهنمای کامل

مطالعه بیشتر
Lifecycle Hooks در Vue.js | مدیریت چرخه حیات کامپوننت‌ها با مثال کاربردی
29م آذر 1404

Lifecycle Hooks در Vue.js | مدیریت چرخه حیات کامپوننت‌ها با مثال کاربردی

مطالعه بیشتر
تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها
9م آبان 1403

تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها

مطالعه بیشتر
ایجاد Layout‌های واکنش‌گرا با flex-direction و justify-content در CSS Flexbox: راهنمای جامع
11م آبان 1403

ایجاد Layout‌های واکنش‌گرا با flex-direction و justify-content در CSS Flexbox: راهنمای جامع

مطالعه بیشتر
اصول پایه React.js: آشنایی با کامپوننت‌ها، وضعیت و رندرینگ
28م شهریور 1402

اصول پایه React.js: آشنایی با کامپوننت‌ها، وضعیت و رندرینگ

مطالعه بیشتر
استفاده از display در CSS: تغییر نحوه نمایش عناصر - راهنمای جامع
9م آبان 1403

استفاده از display در CSS: تغییر نحوه نمایش عناصر - راهنمای جامع

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

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

مطالعه بیشتر

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