Skip to content

Latest commit

 

History

History
1135 lines (878 loc) · 39.9 KB

File metadata and controls

1135 lines (878 loc) · 39.9 KB

📚 বাংলাস্ক্রিপ্ট শেখার সম্পূর্ণ গাইড

BanglaScript Zero to Hero Learning Path

Version: 4.0
Author: BanglaScript Team
Last Updated: December 2025


📖 সূচিপত্র (Table of Contents)

  1. পরিচিতি (Introduction)
  2. ইন্সটলেশন (Installation)
  3. Level 1: শুরুর পাঠ (Beginner)
  4. Level 2: মধ্যবর্তী পাঠ (Intermediate)
  5. Level 3: উন্নত পাঠ (Advanced)
  6. Level 4: মাস্টার লেভেল (Master)
  7. প্রজেক্ট গাইড (Project Guide)
  8. কীওয়ার্ড রেফারেন্স (Keyword Reference)

পরিচিতি

বাংলাস্ক্রিপ্ট কি?

বাংলাস্ক্রিপ্ট হলো একটি প্রোগ্রামিং ভাষা যা বাংলায় JavaScript লেখার সুযোগ দেয়। এটি বাংলা কীওয়ার্ড ব্যবহার করে JavaScript-এ ট্রান্সপাইল হয়।

কেন বাংলাস্ক্রিপ্ট?

  • 🇧🇩 মাতৃভাষায় কোডিং - বাংলায় প্রোগ্রামিং শিখুন
  • 📚 শেখা সহজ - ইংরেজি না জানলেও শিখতে পারবেন
  • 🔄 JavaScript Compatible - সব JavaScript ফিচার সাপোর্ট করে
  • 🌐 Web Development - ওয়েব অ্যাপ তৈরি করুন বাংলায়

ইন্সটলেশন

প্রয়োজনীয়তা

  • Node.js (version 16 বা তার বেশি)
  • npm (Node Package Manager)

ইন্সটল করুন

# গ্লোবাল ইন্সটল (সব জায়গা থেকে ব্যবহার করতে পারবেন)
npm install -g banglascript

# ভার্সন চেক করুন
bjs --version

প্রথম প্রজেক্ট তৈরি

# নতুন প্রজেক্ট তৈরি করুন
bjs init my-first-app

# প্রজেক্টে যান
cd my-first-app

# বিল্ড করুন
npm run build

# রান করুন
npm start

Level 1: শুরুর পাঠ (Beginner)

📝 পাঠ ১.১: হ্যালো ওয়ার্ল্ড

প্রথম প্রোগ্রাম

// এটি একটি কমেন্ট - কম্পিউটার এটি পড়বে না
লিখো("হ্যালো বিশ্ব!");
লিখো("আমি বাংলাস্ক্রিপ্ট শিখছি!");

ব্যাখ্যা:

  • লিখো() = console.log() - স্ক্রিনে কিছু দেখায়
  • // দিয়ে কমেন্ট লেখা হয়
  • প্রতিটি লাইনের শেষে ; দিতে পারেন (ঐচ্ছিক)

রান করুন

# ফাইল সেভ করুন hello.bjs নামে, তারপর
bjs run hello.bjs

📝 পাঠ ১.২: ভেরিয়েবল (Variables)

ভেরিয়েবল হলো ডাটা রাখার বাক্স।

তিন ধরনের ভেরিয়েবল

// 1. ধ্রুবক (const) - মান পরিবর্তন হবে না
ধ্রুবক দেশ = "বাংলাদেশ";

// 2. চলক/সংখ্যা (let) - মান পরিবর্তন করা যায়
চলক বয়স = ২৫;
সংখ্যা নম্বর = ১০০;

// 3. পরিবর্তনশীল (var) - পুরাতন পদ্ধতি
পরিবর্তনশীল পুরাতন = "old";

ভেরিয়েবল ব্যবহার

ধ্রুবক নাম = "রহিম";
চলক বয়স = ২০;
সংখ্যা উচ্চতা = ১৭০;

লিখো("নাম: " + নাম);
লিখো("বয়স: " + বয়স);
লিখো("উচ্চতা: " + উচ্চতা + " সেমি");

// মান পরিবর্তন (শুধু চলক/সংখ্যায়)
বয়স = ২১;
লিখো("নতুন বয়স: " + বয়স);

বাংলা সংখ্যা ব্যবহার

// বাংলা সংখ্যা ব্যবহার করতে পারেন!
সংখ্যা ক = ১;
সংখ্যা খ = ২;
সংখ্যা গ = ৩;
সংখ্যা বড় = ১০০০;

লিখো(ক + খ);  // আউটপুট: 3
লিখো(বড়);    // আউটপুট: 1000

সংখ্যা রূপান্তর:

বাংলা ইংরেজি
0
1
2
3
4
5
6
7
8
9

📝 পাঠ ১.৩: ডাটা টাইপ (Data Types)

// স্ট্রিং (টেক্সট)
ধ্রুবক শহর = "ঢাকা";
ধ্রুবক বার্তা = 'হ্যালো!';

// সংখ্যা (নম্বর)
সংখ্যা তাপমাত্রা = ৩২;
সংখ্যা দাম = ৯৯.৯৯;

// বুলিয়ান (সত্য/মিথ্যা)
ধ্রুবক বৃষ্টি_হচ্ছে = সত্য;
ধ্রুবক রোদ = মিথ্যা;

// শূন্য মান
ধ্রুবক কিছুই_নেই = শূন্য;
ধ্রুবক অনির্ধারিত_মান = অনির্ধারিত;

// টাইপ চেক করা
লিখো(ধরন শহর);        // string
লিখো(ধরন তাপমাত্রা);  // number
লিখো(ধরন বৃষ্টি_হচ্ছে); // boolean

📝 পাঠ ১.৪: শর্ত (Conditions)

যদি-নাহলে (if-else)

সংখ্যা নম্বর = ৭৫;

যদি (নম্বর >= ৮০) {
    লিখো("গ্রেড: A+");
} নাহলে যদি (নম্বর >= ৭০) {
    লিখো("গ্রেড: A");
} নাহলে যদি (নম্বর >= ৬০) {
    লিখো("গ্রেড: B");
} নাহলে যদি (নম্বর >= ৫০) {
    লিখো("গ্রেড: C");
} নাহলে যদি (নম্বর >= ৪০) {
    লিখো("গ্রেড: D");
} নাহলে {
    লিখো("ফেল!");
}

তুলনা অপারেটর

সংখ্যা ক = ১০;
সংখ্যা খ = ২০;

// সমান কিনা
যদি (ক === খ) {
    লিখো("সমান");
}

// বড় কিনা
যদি (খ > ক) {
    লিখো("খ বড়");
}

// ছোট বা সমান কিনা
যদি (ক <= খ) {
    লিখো("ক, খ এর সমান বা ছোট");
}

তুলনা চিহ্ন:

চিহ্ন অর্থ
=== বা সমান সমান
!== বা অসমান অসমান
> বা বড় বড়
< বা ছোট ছোট
>= বা বড়_বা_সমান বড় বা সমান
<= বা ছোট_বা_সমান ছোট বা সমান

📝 পাঠ ১.৫: লুপ (Loops)

জন্য লুপ (for loop)

// ১ থেকে ৫ পর্যন্ত গণনা
জন্য (সংখ্যা i = ১; i <= ৫; i++) {
    লিখো("সংখ্যা: " + i);
}

// আউটপুট:
// সংখ্যা: 1
// সংখ্যা: 2
// সংখ্যা: 3
// সংখ্যা: 4
// সংখ্যা: 5

যখন লুপ (while loop)

চলক গণনা = ১;

যখন (গণনা <= ৩) {
    লিখো("গণনা: " + গণনা);
    গণনা = গণনা + ১;
}

থামাও ও চালিয়ে যাও (break & continue)

জন্য (সংখ্যা i = ১; i <= ১০; i++) {
    // ৫ হলে থামো
    যদি (i === ৫) {
        থামাও;
    }
    লিখো(i);
}

জন্য (সংখ্যা j = ১; j <= ৫; j++) {
    // জোড় সংখ্যা স্কিপ করো
    যদি (j % ২ === ০) {
        চালিয়ে_যাও;
    }
    লিখো("বিজোড়: " + j);
}

📝 পাঠ ১.৬: অনুষ্ঠান/ফাংশন (Functions)

ফাংশন তৈরি ও ব্যবহার

// সরল ফাংশন
অনুষ্ঠান শুভেচ্ছা() {
    লিখো("স্বাগতম!");
}

শুভেচ্ছা();  // ফাংশন কল করা

// প্যারামিটার সহ ফাংশন
অনুষ্ঠান নাম_বলো(নাম) {
    লিখো("হ্যালো, " + নাম + "!");
}

নাম_বলো("রহিম");   // হ্যালো, রহিম!
নাম_বলো("করিম");   // হ্যালো, করিম!

// রিটার্ন সহ ফাংশন
অনুষ্ঠান যোগ(ক, খ) {
    প্রেরণ ক + খ;
}

ধ্রুবক ফলাফল = যোগ(৫, ৩);
লিখো("যোগফল: " + ফলাফল);  // যোগফল: 8

অ্যারো ফাংশন (Arrow Function)

// অ্যারো ফাংশন
ধ্রুবক গুণ = (ক, খ) => ক * খ;

লিখো(গুণ(৪, ৫));  // 20

// একাধিক লাইন অ্যারো ফাংশন
ধ্রুবক বিস্তারিত_যোগ = (ক, খ) => {
    ধ্রুবক যোগফল = ক + খ;
    লিখো("দুটি সংখ্যার যোগ হলো: " + যোগফল);
    প্রেরণ যোগফল;
};

বিস্তারিত_যোগ(১০, ২০);

🎯 Level 1 অনুশীলন

অনুশীলন ১: পরিচয় কার্ড

// আপনার পরিচয় কার্ড তৈরি করুন
ব্যাক্তি নাম = "আপনার নাম";
পরিবর্তনশীল বয়স = ২০;
বাক্য পেশা = "শিক্ষার্থী";
বাক্য শহর = "ঢাকা";

অনুষ্ঠান পরিচয়_দেখাও() {
    লিখো("===================");
    লিখো("     পরিচয় কার্ড     ");
    লিখো("===================");
    লিখো("নাম: " + নাম);
    লিখো("বয়স: " + বয়স);
    লিখো("পেশা: " + পেশা);
    লিখো("শহর: " + শহর);
    লিখো("===================");
}

পরিচয়_দেখাও();

অনুশীলন ২: সংখ্যা পরীক্ষক

অনুষ্ঠান সংখ্যা_পরীক্ষা(সংখ্যা) {
    যদি (সংখ্যা > ০) {
        লিখো(সংখ্যা + " একটি ধনাত্মক সংখ্যা");
    } নাহলে যদি (সংখ্যা < ০) {
        লিখো(সংখ্যা + " একটি ঋণাত্মক সংখ্যা");
    } নাহলে {
        লিখো("সংখ্যাটি শূন্য");
    }
    
    যদি (সংখ্যা % ২ === ০) {
        লিখো("এটি জোড় সংখ্যা");
    } নাহলে {
        লিখো("এটি বিজোড় সংখ্যা");
    }
}

সংখ্যা_পরীক্ষা(৭);
সংখ্যা_পরীক্ষা(-৪);
সংখ্যা_পরীক্ষা(০);

Level 2: মধ্যবর্তী পাঠ (Intermediate)

📝 পাঠ ২.১: অ্যারে (Arrays)

অ্যারে তৈরি ও ব্যবহার

// অ্যারে তৈরি
ধ্রুবক ফলসমূহ = ["আম", "জাম", "কাঁঠাল", "লিচু"];
ধ্রুবক সংখ্যাসমূহ = [১, ২, ৩, ৪, ৫];

// অ্যাক্সেস করা (০ থেকে শুরু)
লিখো(ফলসমূহ[০]);  // আম
লিখো(ফলসমূহ[২]);  // কাঁঠাল

// দৈর্ঘ্য জানা
লিখো("মোট ফল: " + ফলসমূহ.দৈর্ঘ্য);  // 4

// নতুন আইটেম যোগ করা
ফলসমূহ.ঠেলো("কলা");
লিখো(ফলসমূহ);  // ["আম", "জাম", "কাঁঠাল", "লিচু", "কলা"]

// শেষ আইটেম বের করা
ধ্রুবক শেষ_ফল = ফলসমূহ.তোলা();
লিখো(শেষ_ফল);  // কলা

অ্যারে লুপ

ধ্রুবক শহরসমূহ = ["ঢাকা", "চট্টগ্রাম", "সিলেট", "রাজশাহী"];

// for লুপ
জন্য (সংখ্যা i = ০; i < শহরসমূহ.দৈর্ঘ্য; i++) {
    লিখো((i + ১) + ". " + শহরসমূহ[i]);
}

// প্রতিটিতে (forEach)
লিখো("=== forEach দিয়ে ===");
শহরসমূহ.প্রতিটিতে(অনুষ্ঠান (শহর, সূচক) {
    লিখো((সূচক + ১) + ". " + শহর);
});

অ্যারে মেথডস

ধ্রুবক নম্বরসমূহ = [১০, ২০, ৩০, ৪০, ৫০];

// ম্যাপ - প্রতিটি আইটেম পরিবর্তন
ধ্রুবক দ্বিগুণ = নম্বরসমূহ.ম্যাপ(অনুষ্ঠান (n) {
    প্রেরণ n * ২;
});
লিখো(দ্বিগুণ);  // [20, 40, 60, 80, 100]

// ফিল্টার - শর্ত অনুযায়ী বাছাই
ধ্রুবক বড়_সংখ্যা = নম্বরসমূহ.ফিল্টার(অনুষ্ঠান (n) {
    প্রেরণ n > ২৫;
});
লিখো(বড়_সংখ্যা);  // [30, 40, 50]

// খুঁজে - প্রথম ম্যাচ
ধ্রুবক পাওয়া = নম্বরসমূহ.খুঁজে(অনুষ্ঠান (n) {
    প্রেরণ n > ২৫;
});
লিখো(পাওয়া);  // 30

// অন্তর্ভুক্ত - আছে কিনা
লিখো(নম্বরসমূহ.অন্তর্ভুক্ত(৩০));  // true
লিখো(নম্বরসমূহ.অন্তর্ভুক্ত(১০০)); // false

📝 পাঠ ২.২: অবজেক্ট (Objects)

অবজেক্ট তৈরি ও ব্যবহার

// অবজেক্ট তৈরি
ধ্রুবক ছাত্র = {
    নাম: "রহিম",
    বয়স: ২০,
    শ্রেণী: "দশম",
    রোল: ৫,
    বিষয়সমূহ: ["বাংলা", "ইংরেজি", "গণিত"]
};

// অ্যাক্সেস করা
লিখো(ছাত্র.নাম);       // রহিম
লিখো(ছাত্র["বয়স"]);    // 20
লিখো(ছাত্র.বিষয়সমূহ[০]); // বাংলা

// মান পরিবর্তন
ছাত্র.বয়স = ২১;

// নতুন প্রপার্টি যোগ
ছাত্র.ফোন = "01712345678";

অবজেক্টের মেথড

ধ্রুবক ক্যালকুলেটর = {
    নাম: "সিম্পল ক্যালকুলেটর",
    
    যোগ: অনুষ্ঠান (ক, খ) {
        প্রেরণ ক + খ;
    },
    
    বিয়োগ: অনুষ্ঠান (ক, খ) {
        প্রেরণ ক - খ;
    },
    
    গুণ: অনুষ্ঠান (ক, খ) {
        প্রেরণ ক * খ;
    },
    
    ভাগ: অনুষ্ঠান (ক, খ) {
        যদি (খ === ০) {
            প্রেরণ "শূন্য দিয়ে ভাগ করা যায় না";
        }
        প্রেরণ ক / খ;
    }
};

লিখো(ক্যালকুলেটর.যোগ(১০, ৫));   // 15
লিখো(ক্যালকুলেটর.গুণ(৪, ৩));   // 12
লিখো(ক্যালকুলেটর.ভাগ(২০, ৫));  // 4

📝 পাঠ ২.৩: ক্লাস (Classes)

ক্লাস তৈরি

ক্লাস মানুষ {
    // কনস্ট্রাক্টর
    নির্মাতা(নাম, বয়স) {
        এই.নাম = নাম;
        এই.বয়স = বয়স;
    }
    
    // মেথড
    পরিচয়() {
        লিখো("আমার নাম " + এই.নাম + ", বয়স " + এই.বয়স);
    }
    
    বৃদ্ধি() {
        এই.বয়স = এই.বয়স + ১;
        লিখো("জন্মদিনের শুভেচ্ছা! এখন বয়স: " + এই.বয়স);
    }
}

// অবজেক্ট তৈরি
ধ্রুবক ব্যক্তি১ = নতুন মানুষ("রহিম", ২৫);
ধ্রুবক ব্যক্তি২ = নতুন মানুষ("করিম", ৩০);

ব্যক্তি১.পরিচয়();  // আমার নাম রহিম, বয়স 25
ব্যক্তি২.পরিচয়();  // আমার নাম করিম, বয়স 30
ব্যক্তি১.বৃদ্ধি();  // জন্মদিনের শুভেচ্ছা! এখন বয়স: 26

ইনহেরিটেন্স (Inheritance)

ক্লাস প্রাণী {
    নির্মাতা(নাম) {
        এই.নাম = নাম;
    }
    
    কথা_বলো() {
        লিখো(এই.নাম + " শব্দ করছে");
    }
}

ক্লাস কুকুর বিস্তৃত প্রাণী {
    নির্মাতা(নাম, জাত) {
        সুপার(নাম);
        এই.জাত = জাত;
    }
    
    কথা_বলো() {
        লিখো(এই.নাম + " বলছে: ঘেউ ঘেউ!");
    }
    
    তথ্য() {
        লিখো("নাম: " + এই.নাম + ", জাত: " + এই.জাত);
    }
}

ধ্রুবক টমি = নতুন কুকুর("টমি", "জার্মান শেফার্ড");
টমি.কথা_বলো();  // টমি বলছে: ঘেউ ঘেউ!
টমি.তথ্য();     // নাম: টমি, জাত: জার্মান শেফার্ড

📝 পাঠ ২.৪: এরর হ্যান্ডলিং (Error Handling)

অনুষ্ঠান ভাগ_করো(ক, খ) {
    চেষ্টা {
        যদি (খ === ০) {
            ছুড়ে_দাও নতুন Error("শূন্য দিয়ে ভাগ করা যায় না!");
        }
        ধ্রুবক ফলাফল = ক / খ;
        লিখো("ফলাফল: " + ফলাফল);
        প্রেরণ ফলাফল;
    } ধরো (ত্রুটি) {
        ত্রুটি_লিখো("সমস্যা হয়েছে: " + ত্রুটি.message);
    } অবশেষে {
        লিখো("অপারেশন শেষ");
    }
}

ভাগ_করো(২০, ৪);   // ফলাফল: 5
ভাগ_করো(১০, ০);   // সমস্যা হয়েছে: শূন্য দিয়ে ভাগ করা যায় না!

📝 পাঠ ২.৫: সুইচ (Switch)

অনুষ্ঠান দিনের_নাম(দিন) {
    সুইচ (দিন) {
        কেস ১:
            লিখো("রবিবার");
            থামাও;
        কেস ২:
            লিখো("সোমবার");
            থামাও;
        কেস ৩:
            লিখো("মঙ্গলবার");
            থামাও;
        কেস ৪:
            লিখো("বুধবার");
            থামাও;
        কেস ৫:
            লিখো("বৃহস্পতিবার");
            থামাও;
        কেস ৬:
            লিখো("শুক্রবার");
            থামাও;
        কেস ৭:
            লিখো("শনিবার");
            থামাও;
        সাধারণ:
            লিখো("অবৈধ দিন");
    }
}

দিনের_নাম(৫);  // বৃহস্পতিবার
দিনের_নাম(১);  // রবিবার

🎯 Level 2 প্রজেক্ট: শিক্ষার্থী ম্যানেজমেন্ট

ক্লাস শিক্ষার্থী {
    নির্মাতা(নাম, রোল, শ্রেণী) {
        এই.নাম = নাম;
        এই.রোল = রোল;
        এই.শ্রেণী = শ্রেণী;
        এই.নম্বরসমূহ = [];
    }
    
    নম্বর_যোগ(বিষয়, নম্বর) {
        এই.নম্বরসমূহ.ঠেলো({ বিষয়: বিষয়, নম্বর: নম্বর });
    }
    
    গড়_নম্বর() {
        যদি (এই.নম্বরসমূহ.দৈর্ঘ্য === ০) প্রেরণ ০;
        
        চলক মোট = ০;
        এই.নম্বরসমূহ.প্রতিটিতে(অনুষ্ঠান (item) {
            মোট = মোট + item.নম্বর;
        });
        প্রেরণ মোট / এই.নম্বরসমূহ.দৈর্ঘ্য;
    }
    
    গ্রেড() {
        ধ্রুবক গড় = এই.গড়_নম্বর();
        যদি (গড় >= ৮০) প্রেরণ "A+";
        নাহলে যদি (গড় >= ৭০) প্রেরণ "A";
        নাহলে যদি (গড় >= ৬০) প্রেরণ "B";
        নাহলে যদি (গড় >= ৫০) প্রেরণ "C";
        নাহলে যদি (গড় >= ৪০) প্রেরণ "D";
        নাহলে প্রেরণ "F";
    }
    
    রিপোর্ট() {
        লিখো("===== রেজাল্ট কার্ড =====");
        লিখো("নাম: " + এই.নাম);
        লিখো("রোল: " + এই.রোল);
        লিখো("শ্রেণী: " + এই.শ্রেণী);
        লিখো("----- বিষয়ভিত্তিক নম্বর -----");
        এই.নম্বরসমূহ.প্রতিটিতে(অনুষ্ঠান (item) {
            লিখো(item.বিষয় + ": " + item.নম্বর);
        });
        লিখো("-------------------------");
        লিখো("গড় নম্বর: " + এই.গড়_নম্বর().toFixed(২));
        লিখো("গ্রেড: " + এই.গ্রেড());
        লিখো("=========================");
    }
}

// ব্যবহার
ধ্রুবক ছাত্র১ = নতুন শিক্ষার্থী("রহিম উদ্দিন", ৫, "দশম");
ছাত্র১.নম্বর_যোগ("বাংলা", ৮৫);
ছাত্র১.নম্বর_যোগ("ইংরেজি", ৭৮);
ছাত্র১.নম্বর_যোগ("গণিত", ৯২);
ছাত্র১.নম্বর_যোগ("বিজ্ঞান", ৮৮);
ছাত্র১.নম্বর_যোগ("সমাজ", ৭৫);

ছাত্র১.রিপোর্ট();

Level 3: উন্নত পাঠ (Advanced)

📝 পাঠ ৩.১: অ্যাসিঙ্ক প্রোগ্রামিং

Promise

অনুষ্ঠান ডাটা_আনো() {
    প্রেরণ নতুন Promise(অনুষ্ঠান (resolve, reject) {
        setTimeout(অনুষ্ঠান () {
            ধ্রুবক ডাটা = { নাম: "রহিম", বয়স: ২৫ };
            resolve(ডাটা);
        }, ২০০০);
    });
}

// Promise ব্যবহার
ডাটা_আনো()
    .then(অনুষ্ঠান (ডাটা) {
        লিখো("ডাটা পাওয়া গেছে:", ডাটা);
    })
    .catch(অনুষ্ঠান (ত্রুটি) {
        ত্রুটি_লিখো("সমস্যা:", ত্রুটি);
    });

Async/Await

অ্যাসিঙ্ক অনুষ্ঠান মূল_কাজ() {
    লিখো("ডাটা লোড হচ্ছে...");
    
    চেষ্টা {
        ধ্রুবক ডাটা = অপেক্ষা ডাটা_আনো();
        লিখো("পাওয়া গেছে:", ডাটা);
    } ধরো (ত্রুটি) {
        ত্রুটি_লিখো("সমস্যা:", ত্রুটি);
    }
    
    লিখো("কাজ শেষ!");
}

মূল_কাজ();

API থেকে ডাটা আনা

অ্যাসিঙ্ক অনুষ্ঠান জেসন_আনো(url) {
    ধ্রুবক response = অপেক্ষা fetch(url);
    যদি (!response.ok) {
        ছুড়ে_দাও নতুন Error("নেটওয়ার্ক সমস্যা");
    }
    প্রেরণ অপেক্ষা response.json();
}

অ্যাসিঙ্ক অনুষ্ঠান ব্যবহারকারী_দেখাও() {
    চেষ্টা {
        ধ্রুবক ডাটা = অপেক্ষা জেসন_আনো("https://api.github.com/users/octocat");
        লিখো("নাম:", ডাটা.name);
        লিখো("লোকেশন:", ডাটা.location);
    } ধরো (ত্রুটি) {
        ত্রুটি_লিখো("API Error:", ত্রুটি);
    }
}

ব্যবহারকারী_দেখাও();

📝 পাঠ ৩.২: DOM ম্যানিপুলেশন

এলিমেন্ট সিলেক্ট করা

// ID দিয়ে সিলেক্ট
ধ্রুবক heading = দস্তাবেজ.আইডি_দ্বারা_পাও("শিরোনাম");

// CSS সিলেক্টর দিয়ে
ধ্রুবক বোতাম = দস্তাবেজ.সিলেক্টর_দ্বারা_পাও("#submit-btn");
ধ্রুবক সব_আইটেম = দস্তাবেজ.সব_সিলেক্টর_দ্বারা_পাও(".item");

// ক্লাস দিয়ে
ধ্রুবক কার্ডসমূহ = দস্তাবেজ.শ্রেণী_দ্বারা_পাও("card");

// ট্যাগ দিয়ে
ধ্রুবক প্যারাগ্রাফসমূহ = দস্তাবেজ.ট্যাগ_দ্বারা_পাও("p");

কন্টেন্ট পরিবর্তন

ধ্রুবক div = দস্তাবেজ.সিলেক্টর_দ্বারা_পাও("#result");

// টেক্সট পরিবর্তন
div.টেক্সট_পরিবর্তন_করো = "নতুন টেক্সট";

// HTML পরিবর্তন
div.বিষয়বস্তু_পরিবর্তন_করো = "<b>বোল্ড টেক্সট</b>";

// স্টাইল পরিবর্তন
div.শৈলী.রঙ = "blue";
div.শৈলী.background = "#f0f0f0";
div.শৈলী.padding = "20px";

ইভেন্ট হ্যান্ডলিং

ধ্রুবক বোতাম = দস্তাবেজ.সিলেক্টর_দ্বারা_পাও("#btn");

বোতাম.ইভেন্ট_যোগ_করো("click", অনুষ্ঠান () {
    লিখো("বোতামে ক্লিক করা হয়েছে!");
    সতর্কবার্তা("হ্যালো!");
});

// DOMContentLoaded ইভেন্ট
দস্তাবেজ.ইভেন্ট_যোগ_করো("DOMContentLoaded", অনুষ্ঠান () {
    লিখো("পেজ লোড হয়েছে!");
    // এখানে আপনার কোড
});

📝 পাঠ ৩.৩: সম্পূর্ণ ওয়েব অ্যাপ

// ওয়েব অ্যাপ - টুডু লিস্ট

দস্তাবেজ.ইভেন্ট_যোগ_করো("DOMContentLoaded", অনুষ্ঠান () {
    
    ধ্রুবক ইনপুট = দস্তাবেজ.সিলেক্টর_দ্বারা_পাও("#todo-input");
    ধ্রুবক বোতাম = দস্তাবেজ.সিলেক্টর_দ্বারা_পাও("#add-btn");
    ধ্রুবক তালিকা = দস্তাবেজ.সিলেক্টর_দ্বারা_পাও("#todo-list");
    
    চলক কাজসমূহ = [];
    
    অনুষ্ঠান তালিকা_রেন্ডার() {
        তালিকা.বিষয়বস্তু_পরিবর্তন_করো = "";
        
        কাজসমূহ.প্রতিটিতে(অনুষ্ঠান (কাজ, সূচক) {
            ধ্রুবক li = দস্তাবেজ.তৈরি_করো("li");
            li.টেক্সট_পরিবর্তন_করো = কাজ;
            
            // ডিলিট বোতাম
            ধ্রুবক delBtn = দস্তাবেজ.তৈরি_করো("button");
            delBtn.টেক্সট_পরিবর্তন_করো = "❌";
            delBtn.ইভেন্ট_যোগ_করো("click", অনুষ্ঠান () {
                কাজসমূহ.কেটে_দাও(সূচক, ১);
                তালিকা_রেন্ডার();
            });
            
            li.যোগ_করো(delBtn);
            তালিকা.যোগ_করো(li);
        });
    }
    
    অনুষ্ঠান কাজ_যোগ() {
        ধ্রুবক কাজ = ইনপুট.value.trim();
        যদি (কাজ) {
            কাজসমূহ.ঠেলো(কাজ);
            ইনপুট.value = "";
            তালিকা_রেন্ডার();
        }
    }
    
    বোতাম.ইভেন্ট_যোগ_করো("click", কাজ_যোগ);
    
    // Enter কী দিয়েও যোগ করা যাবে
    ইনপুট.ইভেন্ট_যোগ_করো("keypress", অনুষ্ঠান (e) {
        যদি (e.key === "Enter") {
            কাজ_যোগ();
        }
    });
    
    লিখো("টুডু অ্যাপ প্রস্তুত!");
});

Level 4: মাস্টার লেভেল (Master)

📝 পাঠ ৪.১: মডিউল সিস্টেম

ফাইল এক্সপোর্ট (utils.bjs)

// utils.bjs
অনুষ্ঠান যোগ(ক, খ) {
    প্রেরণ ক + খ;
}

অনুষ্ঠান বিয়োগ(ক, খ) {
    প্রেরণ ক - খ;
}

ধ্রুবক PI = ৩.১৪১৫৯;

module.exports = { যোগ, বিয়োগ, PI };

ফাইল ইমপোর্ট (main.bjs)

// main.bjs
ধ্রুবক utils = require("./utils");

লিখো(utils.যোগ(৫, ৩));    // 8
লিখো(utils.বিয়োগ(১০, ৪)); // 6
লিখো(utils.PI);           // 3.14159

📝 পাঠ ৪.২: API সার্ভার তৈরি

// server.bjs
ধ্রুবক http = require("http");
ধ্রুবক PORT = ৩০০০;

// ডাটাবেস (মেমোরি)
চলক ব্যবহারকারীরা = [
    { id: ১, নাম: "রহিম" },
    { id: ২, নাম: "করিম" }
];

ধ্রুবক server = http.createServer(অনুষ্ঠান (req, res) {
    res.setHeader("Content-Type", "application/json; charset=utf-8");
    
    যদি (req.url === "/" && req.method === "GET") {
        res.writeHead(২০০);
        res.end(JSON.stringify({
            বার্তা: "বাংলাস্ক্রিপ্ট API সার্ভার",
            সংস্করণ: "1.0"
        }));
    } নাহলে যদি (req.url === "/users" && req.method === "GET") {
        res.writeHead(২০০);
        res.end(JSON.stringify(ব্যবহারকারীরা));
    } নাহলে {
        res.writeHead(৪০৪);
        res.end(JSON.stringify({ ত্রুটি: "পাওয়া যায়নি" }));
    }
});

server.listen(PORT, অনুষ্ঠান () {
    লিখো("সার্ভার চালু: http://localhost:" + PORT);
});

📝 পাঠ ৪.৩: Math ফাংশন ব্যবহার

// র‍্যান্ডম সংখ্যা
ধ্রুবক রান্ডম = এলোমেলো_সংখ্যা();  // 0-1 এর মধ্যে
লিখো(রান্ডম);

// নির্দিষ্ট রেঞ্জে র‍্যান্ডম
অনুষ্ঠান র‍্যান্ডম_রেঞ্জ(মিন, ম্যাক্স) {
    প্রেরণ গণিত.ফ্লোর(এলোমেলো_সংখ্যা() * (ম্যাক্স - মিন + ১)) + মিন;
}

লিখো(র‍্যান্ডম_রেঞ্জ(১, ১০));  // 1-10 এর মধ্যে

// অন্যান্য Math ফাংশন
লিখো(গণিত.বর্গমূল(১৬));  // 4
লিখো(গণিত.শক্তি(২, ৩));  // 8
লিখো(গণিত.পরম(-৫));     // 5
লিখো(গণিত.সর্বোচ্চ(১, ৫, ৩)); // 5
লিখো(গণিত.সর্বনিম্ন(১, ৫, ৩)); // 1
লিখো(গণিত.রাউন্ড(৪.৬)); // 5
লিখো(গণিত.সিলিং(৪.১)); // 5
লিখো(গণিত.ফ্লোর(৪.৯)); // 4

প্রজেক্ট গাইড

🚀 প্রজেক্ট আইডিয়া

Beginner প্রজেক্ট

  1. ক্যালকুলেটর - যোগ, বিয়োগ, গুণ, ভাগ
  2. গ্রেড ক্যালকুলেটর - নম্বর থেকে গ্রেড
  3. সংখ্যা অনুমান খেলা - র‍্যান্ডম সংখ্যা অনুমান

Intermediate প্রজেক্ট

  1. টুডু অ্যাপ - কাজের তালিকা
  2. কুইজ অ্যাপ - প্রশ্নোত্তর
  3. খরচ ট্র্যাকার - আয়-ব্যয় হিসাব

Advanced প্রজেক্ট

  1. ব্লগ অ্যাপ - পোস্ট তৈরি ও দেখা
  2. চ্যাট অ্যাপ - রিয়েল-টাইম মেসেজ
  3. ই-কমার্স - পণ্য ও কার্ট

কীওয়ার্ড রেফারেন্স

ভেরিয়েবল

বাংলা JavaScript
ধ্রুবক const
চলক/সংখ্যা let
পরিবর্তনশীল var
ব্যাক্তি const
বাক্য/শব্দ let

মান

বাংলা JavaScript
সত্য true
মিথ্যা false
শূন্য null
অনির্ধারিত undefined

ফাংশন

বাংলা JavaScript
অনুষ্ঠান function
প্রেরণ/ফেরত return
অ্যাসিঙ্ক async
অপেক্ষা await

শর্ত ও লুপ

বাংলা JavaScript
যদি if
নাহলে else
নাহলে যদি else if
জন্য for
যখন while
থামাও break
চালিয়ে_যাও continue
সুইচ switch
কেস case
সাধারণ default

ক্লাস

বাংলা JavaScript
ক্লাস class
নির্মাতা constructor
এই this
নতুন new
বিস্তৃত extends
সুপার super

কনসোল

বাংলা JavaScript
লিখো console.log
ত্রুটি_লিখো console.error
লিখো_সতর্কতা console.warn
পরিষ্কার_করো console.clear

DOM

বাংলা JavaScript
দস্তাবেজ document
সিলেক্টর_দ্বারা_পাও querySelector
আইডি_দ্বারা_পাও getElementById
ইভেন্ট_যোগ_করো addEventListener
টেক্সট_পরিবর্তন_করো innerText
বিষয়বস্তু_পরিবর্তন_করো innerHTML
শৈলী style

এরর হ্যান্ডলিং

বাংলা JavaScript
চেষ্টা try
ধরো catch
অবশেষে finally
ছুড়ে_দাও throw

অ্যারে মেথড

বাংলা JavaScript
ঠেলো push
তোলা pop
প্রতিটিতে forEach
ম্যাপ map
ফিল্টার filter
খুঁজে find
দৈর্ঘ্য length
জোড়া join
সাজাও sort

🎓 শেখার টিপস

  1. প্রতিদিন অনুশীলন করুন - ছোট ছোট প্রোগ্রাম লিখুন
  2. ভুল করতে ভয় পাবেন না - ভুল থেকেই শেখা হয়
  3. ডকুমেন্টেশন পড়ুন - নতুন কিছু জানতে
  4. প্রজেক্ট করুন - বাস্তব সমস্যা সমাধান করুন
  5. কমিউনিটিতে যুক্ত হন - অন্যদের সাথে শেয়ার করুন

📚 রিসোর্স


শুভ কোডিং! 🇧🇩 বাংলায় কোড লিখুন!