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

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

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

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

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

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش تگ‌های متنی اولیه در HTML: استایل‌دهی و قالب‌بندی متن‌ها

آموزش تگ‌های متنی اولیه در HTML: استایل‌دهی و قالب‌بندی متن‌ها

18م مرداد 1402

مطالعه بیشتر

آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed

آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed

5م شهریور 1402

مطالعه بیشتر

آموزش کامل ویژگی background در CSS: تنظیمات پس‌زمینه برای طراحی وب راهنمای جامع

آموزش کامل ویژگی background در CSS: تنظیمات پس‌زمینه برای طراحی وب راهنمای جامع

5م شهریور 1402

مطالعه بیشتر

آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل

آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل

5م آبان 1403

مطالعه بیشتر

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

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

2م آبان 1403

مطالعه بیشتر

آموزش مفاهیم اولیه CSS Grid Layout: طراحی شبکه‌های پیچیده و واکنش‌گرا راهنمای کامل

آموزش مفاهیم اولیه CSS Grid Layout: طراحی شبکه‌های پیچیده و واکنش‌گرا راهنمای کامل

6م شهریور 1402

مطالعه بیشتر

آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها

آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها

10م شهریور 1402

مطالعه بیشتر

آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی

آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی

29م مرداد 1402

مطالعه بیشتر

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

16م آبان 1403

مطالعه بیشتر

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

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

10م شهریور 1402

مطالعه بیشتر

آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی

آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی

5م آبان 1403

مطالعه بیشتر

توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6

توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6

2م شهریور 1403

مطالعه بیشتر

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