এই পর্বে যা শিখবেন
- ব্যবহারিক পরীক্ষা সাধারণত কীভাবে হয়, আর ফাইল সেভ, নাম দেওয়া ও সময় ভাগের নিয়ম
- বাংলা ও ইংরেজি টাইপিং টেস্টে গতি (WPM) আর নির্ভুলতা কীভাবে মাপা হয়, আর কীভাবে বাড়াবেন
- Word, Excel আর PowerPoint-এর পরীক্ষায় বারবার আসে এমন কাজ — ফলাফল শিট থেকে mail merge পর্যন্ত
- HTML দিয়ে HSC ধাঁচের পেজ, আর ল্যাবের ক্লাসিক C প্রোগ্রাম লেখা, চালানো ও যাচাই করা
- SQL-এ টেবিল বানানো, ডেটা ঢোকানো, খোঁজা আর বদলানো — আর ভাইভায় এক লাইনে উত্তর দেওয়া
১ · ব্যবহারিক পরীক্ষা কেমন হয় — সময়, ফাইল, নাম আর ভাইভা
লিখিত পরীক্ষায় আপনি জানেন কি না, তা দেখা হয়। ব্যবহারিক পরীক্ষায় দেখা হয়, আপনি কাজটা করতে পারেন কি না — নির্দিষ্ট সময়ে, অচেনা কম্পিউটারে, পরীক্ষকের সামনে। রান্নার বই মুখস্থ থাকা আর সত্যিকারের চুলায় ভাত রান্না করার মধ্যে যে পার্থক্য, এখানেও তাই। তাই এই পর্বের প্রতিটি কাজ পড়ে নয়, হাতে করে শিখতে হবে।
কোথায় কী ধরনের ব্যবহারিক কাজ আসে, তা প্রতিষ্ঠান আর সময়ভেদে বদলায়। নিচের টেবিলটি একটি সাধারণ ছবি মাত্র। নম্বর বণ্টন, সময় আর ঠিক কোন কাজ আসবে — তা সবসময় আপনার বোর্ড, বিশ্ববিদ্যালয় বা নিয়োগ বিজ্ঞপ্তির সর্বশেষ নির্দেশনা থেকে মিলিয়ে নিন।
| পরীক্ষা | সাধারণত যা থাকে | এই পাতার অংশ |
|---|---|---|
| SSC ICT | অফিস সফটওয়্যারের কাজ — ডকুমেন্ট, স্প্রেডশিট, প্রেজেন্টেশন; কখনো ইন্টারনেট ব্যবহার | ৩, ৪ |
| HSC ICT | HTML দিয়ে ওয়েব পেজ আর C প্রোগ্রাম লেখা ও চালানো; সাথে খাতা ও মৌখিক অংশ | ৫, ৬ |
| চাকরির কম্পিউটার দক্ষতা পরীক্ষা (কম্পিউটার অপারেটর, ডাটা এন্ট্রি, অফিস সহকারী কাম কম্পিউটার মুদ্রাক্ষরিক ইত্যাদি) | বাংলা ও ইংরেজি টাইপিং টেস্ট, Word-এ চিঠি বা টেবিল, Excel-এ হিসাব | ২, ৩, ৪ |
| বিশ্ববিদ্যালয় ও ট্রেনিং সেন্টারের ল্যাব পরীক্ষা | C প্রোগ্রাম, SQL কোয়েরি, ছোট ওয়েব পেজ, সাথে ভাইভা | ৫, ৬, ৭ |
প্রায় সব ব্যবহারিক পরীক্ষার সাধারণ নিয়ম
- সময় বাঁধা: একটি নির্দিষ্ট সময়ে এক বা একাধিক কাজ। শুরুতেই পুরো প্রশ্ন একবার পড়ে নিন, তারপর সময় ভাগ করুন।
- ফাইল সেভ: পরীক্ষক যে ফোল্ডারে বলবেন, সেখানেই সেভ করুন — যেমন
D:\Exam\Roll_101. ডেস্কটপে বা অন্য কোথাও রাখলে ফাইল খুঁজে না পেলে নম্বরও যেতে পারে। - ফাইলের নাম: সাধারণত রোল, বিষয় বা কাজের নম্বর দিয়ে নাম দিতে বলা হয়, যেমন
101_Excel_Q2.xlsx. স্পেস আর বিশেষ চিহ্ন (/ \ : * ? " < > |) এড়িয়ে চলুন। ফাইলের extension (.docx,.xlsx,.pptx,.html,.c) ঠিক আছে কি না দেখুন। - প্রিন্ট বা দেখানো: কোথাও আউটপুট প্রিন্ট করতে হয়, কোথাও পরীক্ষককে স্ক্রিনে চালিয়ে দেখাতে হয়। C-তে অনেক সময় খাতায় অ্যালগরিদম বা প্রোগ্রামও লিখতে হয়।
- ভাইভা: কাজ দেখানোর সময় বা পরে কয়েকটি মৌখিক প্রশ্ন — “এই সূত্রে
$কেন দিলেন?” “altকী কাজে লাগে?” নিজের করা কাজ ব্যাখ্যা করতে পারাই এখানে আসল (অংশ ৮-এ তালিকা আছে)। - যা চলবে না: মোবাইল, ইন্টারনেট (নির্দেশ না থাকলে), পেন ড্রাইভ, অন্যের ফাইল কপি — আর AI টুল (অংশ ৯)।
ব্যবহারিক পরীক্ষায় নম্বর আসে দেখা যায় এমন জিনিস থেকে: নির্দেশমতো নামের ফাইল, ঠিক জায়গায় ঠিক ফরম্যাট, সঠিক সূত্র ও ফল, চলমান প্রোগ্রাম, আর পরিষ্কার ব্যাখ্যা। প্রতিটি কাজের সাথে দেওয়া “নম্বর পাওয়ার তালিকা” আসলে পরীক্ষকের চোখে দেখার তালিকা — কাজ শেষে নিজেই মিলিয়ে নিন।
এই পাতার কাজগুলোর তালিকা আর রিভিশনের পর্ব
| অংশ | কাজ | আগে ঝালিয়ে নিন |
|---|---|---|
| ২ · টাইপিং | বাংলা ও ইংরেজি গতি ও নির্ভুলতা | পর্ব ০৭ |
| ৩ · Word ও PowerPoint | W1–W6: আবেদনপত্র, নোটিশ, রুটিন টেবিল, mail merge, সূচিপত্র, ছবি ও সমীকরণ; P1–P2: প্রেজেন্টেশন | পর্ব ০৯, পর্ব ১২ |
| ৪ · Excel | E1–E8: ফলাফল শিট, RANK, VAT, COUNTIF/SUMIF, VLOOKUP/XLOOKUP, চার্ট, conditional formatting ও dropdown, sort ও filter | পর্ব ১০, পর্ব ১১ |
| ৫ · HTML | H1–H6: ফরম্যাটিং, তালিকা, লিংক ও ছবি, rowspan/colspan টেবিল, ফর্ম, পুরো পেজ | পর্ব ৩৬, পর্ব ৩৭ |
| ৬ · C | C1–C10: যোগফল-গড় থেকে প্যাটার্ন পর্যন্ত ল্যাবের দশটি ক্লাসিক | পর্ব ৩৯, পর্ব ৪০ |
| ৭ · SQL | S1–S4: CREATE, INSERT, SELECT, UPDATE | পর্ব ৪২ |
২ · টাইপিং টেস্ট — বাংলা ও ইংরেজিতে গতি আর নির্ভুলতা
সরকারি-বেসরকারি অনেক পদে, বিশেষ করে কম্পিউটার অপারেটর বা অফিস সহকারী পদে, প্রথম ব্যবহারিক ধাপটাই টাইপিং টেস্ট। সাধারণত একটি ছাপা অনুচ্ছেদ দেওয়া হয়, আর নির্দিষ্ট সময়ে (যেমন কয়েক মিনিট) সেটি হুবহু টাইপ করতে হয় — বাংলায় একবার, ইংরেজিতে একবার। ন্যূনতম গতি কত লাগবে, তা নিয়োগ বিজ্ঞপ্তিতে লেখা থাকে; পদভেদে আলাদা, তাই সেটিই আপনার লক্ষ্য।
গতি আর নির্ভুলতা কীভাবে মাপা হয়
গতি মাপা হয় WPM (Words Per Minute — প্রতি মিনিটে শব্দ) এককে। শব্দ ছোট-বড় হয় বলে কম্পিউটারভিত্তিক টাইপিং টুলগুলো সাধারণত ধরে নেয় ৫টি অক্ষর (স্পেসসহ) = ১টি শব্দ। কোনো কোনো পরীক্ষায় আবার সরাসরি শব্দ গোনা হয়। মাপার নিয়ম যেটাই হোক, ধারণা একই:
| মাপ | হিসাব | উদাহরণ: ৫ মিনিটে ১১৫০ অক্ষর, ১২টি ভুল রয়ে গেছে |
|---|---|---|
| Gross WPM (মোট গতি) | (মোট অক্ষর ÷ ৫) ÷ মিনিট | (১১৫০ ÷ ৫) ÷ ৫ = ৪৬ |
| Net WPM (ভুল বাদে গতি) | Gross − (না-শোধরানো ভুল ÷ মিনিট) | ৪৬ − (১২ ÷ ৫) = ৪৬ − ২.৪ = ৪৩.৬ |
| Accuracy (নির্ভুলতা) | সঠিক অংশ ÷ মোট × ১০০ | (১১৫০ − ১২) ÷ ১১৫০ × ১০০ ≈ ৯৯% |
লক্ষ করুন, ভুল সরাসরি গতি কমিয়ে দেয়। অনেক পরীক্ষায় ভুলের জন্য আলাদা করে নম্বরও কাটা হয়। তাই দ্রুত কিন্তু ভুলে ভরা টাইপের চেয়ে একটু ধীর কিন্তু নির্ভুল টাইপ প্রায় সবসময় বেশি নম্বর পায়।
কাজ T1 · ইংরেজি টাইপিং টেস্ট
পরীক্ষকের নির্দেশ: “নিচের অনুচ্ছেদটি ৫ মিনিটে Word-এ হুবহু টাইপ করুন। বানান, বড়-ছোট হাতের অক্ষর আর বিরামচিহ্ন যেমন আছে তেমন রাখুন। শেষে Roll_Eng.docx নামে সেভ করুন।”
- হাত রাখুন হোম রো-তে: বাঁ হাত A S D F, ডান হাত J K L ; — F আর J-এর ছোট উঁচু দাগ চোখ বন্ধ করেও জায়গা চিনিয়ে দেয়। দুই বুড়ো আঙুল স্পেসবারে।
- চোখ রাখুন ছাপা লেখায়, পর্দায় নয়, কি-বোর্ডে তো নয়ই। একটি লাইন শেষ হলে আঙুল দিয়ে কাগজে জায়গা ধরে রাখুন, যাতে লাইন বাদ না পড়ে।
- ভুল টাইপ হলে সাথে সাথে Backspace দিয়ে শোধরান — পরে খুঁজে বের করার চেয়ে এটা দ্রুত। তবে পুরো শব্দ মুছে আবার লেখার অভ্যাস কমান।
- Word-এর স্বয়ংক্রিয় বানান-সংশোধন (AutoCorrect) কখনো ইচ্ছামতো বদলে দেয়, যেমন বাক্যের প্রথম অক্ষর বড় করে দেওয়া। মূল লেখার সাথে না মিললে শেষে একবার চোখ বুলিয়ে মিলিয়ে নিন।
- সময় শেষ হলে টাইপ থামিয়ে Ctrl+S. বাড়তি সময়ে লেখা অনেক জায়গায় গোনা হয় না।
সাধারণ ভুল: শুরুতে খুব জোরে টাইপ করে পরে ক্লান্ত হয়ে যাওয়া; লাইন বাদ পড়া; একটি লাইন দুবার লেখা; Caps Lock চালু রেখে টাইপ; দুটি শব্দের মাঝে দুটি স্পেস। নিয়মিত অনুশীলনে প্রতিদিন ১৫–২০ মিনিটই যথেষ্ট — একদিনে দুই ঘণ্টার চেয়ে প্রতিদিন অল্প অনেক বেশি কাজে দেয়।
কাজ T2 · বাংলা টাইপিং টেস্ট
পরীক্ষকের নির্দেশ: “নিচের বাংলা অনুচ্ছেদটি নির্ধারিত সময়ে টাইপ করুন। যুক্তবর্ণ, কার-চিহ্ন আর দাঁড়ি যেন সঠিক থাকে। Roll_Bangla.docx নামে সেভ করুন।”
- লেআউট আগে জানুন। বিজ্ঞপ্তিতে বা পরীক্ষার কক্ষে বলে দেওয়া হয় কোন সফটওয়্যারে টাইপ করবেন। অনেক অফিসে বিজয় লেআউটের প্রচলন বেশি; আবার কোথাও অভ্রর মতো phonetic পদ্ধতিও চলে। যে লেআউটে পরীক্ষা হবে, অনুশীলনও সেটাতেই করুন — পরীক্ষার দিনে লেআউট বদলানো খুব কঠিন।
- Unicode না ANSI? পর্ব ০৭-এ দেখেছেন, পুরোনো ANSI ফন্টে (যেমন SutonnyMJ) লেখা অন্য কম্পিউটারে ভাঙা দেখাতে পারে। নির্দেশ না থাকলে Unicode মোডে Unicode ফন্টে (যেমন Nikosh, Kalpurush, SolaimanLipi) টাইপ করা নিরাপদ।
- যুক্তবর্ণে গতি হারাবেন না। বেশি ব্যবহৃত যুক্তবর্ণগুলো (ক্ত, ন্ত, ন্দ, ক্ষ, ত্র, প্র, স্ত) আলাদা করে অনুশীলন করুন। বিজয়ে হসন্তের G (লিংক কি) কোথায় লাগে, আঙুলের অভ্যাসে নিয়ে আসুন।
- বাংলায় কার-চিহ্নের ক্রম: Unicode-এ আগে ব্যঞ্জন, পরে কার (যেমন “কি” = ক + ি), যদিও পর্দায় ি-কার আগে দেখায়। বিজয়ের মতো লেআউটে সফটওয়্যার এই ক্রম সামলায়; শুধু টাইপের ক্রমটা অনুশীলনে পাকা করুন।
- শেষে মূল লেখার সাথে লাইন ধরে মিলিয়ে, সেভ করে, ফাইল বন্ধ করুন।
সাধারণ ভুল: ইংরেজি মোডে থেকে বাংলা লিখতে গিয়ে কয়েক লাইন ইংরেজি অক্ষর টাইপ হয়ে যাওয়া (মোড বদলের শর্টকাট আগে জেনে নিন); ভুল ফন্ট বেছে নেওয়ায় বাক্স দেখানো; দাঁড়ির বদলে ইংরেজি দাঁড়ির মতো “|” চিহ্ন দেওয়া; “ড়/ঢ়/য়”-এর মতো নুক্তা-যুক্ত অক্ষরে গুলিয়ে ফেলা।
উপমা: টাইপিং গতি অনেকটা রিকশাচালকের পায়ের জোরের মতো — একদিনে তৈরি হয় না, কিন্তু প্রতিদিন অল্প চালালে কয়েক সপ্তাহেই বদল টের পাওয়া যায়। আর ঢাকার রাস্তায় যে রিকশা জোরে চালিয়ে ধাক্কা খায়, সে দেরিতেই পৌঁছায় — টাইপিংয়ে ভুলও ঠিক তেমন।
৩ · Word আর PowerPoint — আটটি ব্যবহারিক কাজ
Word-এর কাজে পরীক্ষক সাধারণত দেখেন, আপনি হাতে-হাতে স্পেস দিয়ে সাজান, নাকি সঠিক টুল ব্যবহার করেন। স্পেস চেপে লেখা ডানে সরানো, Enter চেপে নতুন পাতায় যাওয়া, নিজে লিখে পাতার নম্বর বসানো — এগুলো দেখতে ঠিক লাগলেও ধরা পড়ে যায়। নিচের মেনুর পথগুলো Microsoft 365-এর Word অনুযায়ী (Word 2016 থেকে প্রায় একই); Google Docs-এর আলাদা পথ যেখানে দরকার, পাশে দেওয়া আছে। রিভিশন: পর্ব ০৯, পর্ব ১২.
কাজ W1 · একটি আবেদনপত্র ফরম্যাট করা (সহজ)
পরীক্ষকের নির্দেশ: “প্রধান শিক্ষক বরাবর তিন দিনের ছুটির একটি আবেদনপত্র টাইপ করুন। পাতা A4, চারদিকে ১ ইঞ্চি মার্জিন। বিষয় লাইন বোল্ড। মূল অংশ Justify, লাইন স্পেসিং 1.5. ফন্ট বাংলায় Nikosh 14 (না থাকলে যেকোনো Unicode বাংলা ফন্ট)। Roll_W1.docx নামে সেভ করুন।”
- Layout → Size → A4, তারপর Layout → Margins → Custom Margins-এ Top, Bottom, Left, Right সব 1". (Docs: File → Page setup.)
- পুরো লেখা টাইপ করুন আগে, ফরম্যাট পরে — এতে সময় বাঁচে। তারপর Ctrl+A দিয়ে সব বেছে Home ট্যাবে ফন্ট ও আকার দিন।
- বিষয় লাইন বেছে Ctrl+B. মূল অনুচ্ছেদ বেছে Ctrl+J (Justify).
- Home → Paragraph গ্রুপের কোণের ছোট তীর → Line spacing: 1.5 lines; এখানেই “Spacing After” দিয়ে অনুচ্ছেদের মাঝে ফাঁক দিন, বাড়তি Enter দিয়ে নয়।
- প্রথম লাইন একটু ভেতরে চাইলে একই বক্সে Special: First line.
- F12 (Save As) চেপে নির্দেশিত ফোল্ডার ও নাম দিয়ে সেভ।
সাধারণ ভুল: স্পেসবার চেপে লেখা ডানে বা মাঝে সরানো (অন্য কম্পিউটারে খুললে আঁকাবাঁকা হয়ে যায়); শুধু বিষয় নয়, পুরো লেখা বোল্ড করে ফেলা; পাতার আকার Letter রয়ে যাওয়া — অনেক কম্পিউটারে ডিফল্ট আকার Letter থাকে, A4 নয়।
কাজ W2 · Header, footer আর পাতার নম্বরসহ নোটিশ (সহজ)
পরীক্ষকের নির্দেশ: “দুই পাতার একটি অফিস নোটিশ বানান। প্রতিটি পাতার ওপরে প্রতিষ্ঠানের নাম (header), নিচে ‘গোপনীয় নয় — সবার জন্য’ লেখা (footer), নিচের মাঝখানে পাতার নম্বর। প্রথম পাতায় header থাকবে না। দ্বিতীয় অংশ নতুন পাতা থেকে শুরু হবে।”
- Insert → Header → Blank; প্রতিষ্ঠানের নাম লিখে মাঝখানে আনুন (Ctrl+E).
- Header & Footer ট্যাব খোলা থাকতেই Different First Page-এ টিক দিন — প্রথম পাতার header খালি থাকবে।
- Go to Footer চেপে footer-এর লেখা দিন। তারপর Page Number → Bottom of Page → Plain Number 2 (মাঝখানে)। “Different First Page” চালু থাকলে প্রথম পাতার footer আলাদা — সেখানেও নম্বর চাইলে আলাদা করে বসাতে হবে।
- Close Header and Footer বা মূল লেখায় দুবার ক্লিক করে বেরিয়ে আসুন।
- দ্বিতীয় অংশের শুরুতে কার্সর রেখে Ctrl+Enter (Insert → Page Break).
সাধারণ ভুল: পাতার নম্বর হাতে “১”, “২” লিখে দেওয়া — একটি লাইন যোগ হলেই সব গোলমাল; header-এ লেখার বদলে পাতার মূল অংশের একদম ওপরে লেখা; প্রথম পাতা থেকে header সরাতে গিয়ে সব পাতার header মুছে ফেলা। Docs-এ পথ: Insert → Headers & footers, আর Insert → Page numbers; “Different first page” অপশন header-এর পাশেই থাকে।
কাজ W3 · Merge করা ঘরসহ ক্লাস রুটিন (মাঝারি)
পরীক্ষকের নির্দেশ: “রবি থেকে বৃহস্পতিবার, প্রতিদিন পাঁচটি পিরিয়ডের একটি ক্লাস রুটিন টেবিল বানান। তৃতীয় পিরিয়ডের পর টিফিনের কলামটি সব দিনের জন্য একটিই ঘর হবে (ওপর থেকে নিচ পর্যন্ত merge). সোমবারের শেষ দুই পিরিয়ডে একটিই ঘরে ‘ICT ব্যবহারিক’। শিরোনাম সারি রঙিন ও বোল্ড। পাতা Landscape.”
- Layout → Orientation → Landscape.
- Insert → Table → Insert Table: Columns 7, Rows 6. প্রথম সারিতে “দিন/সময়”, পাঁচটি পিরিয়ডের সময় আর মাঝে “টিফিন” (চতুর্থ পিরিয়ডের জায়গার আগে) লিখুন।
- টিফিন কলামের সারি ২ থেকে ৬ পর্যন্ত ঘরগুলো বেছে Table Layout → Merge Cells. “টিফিন” লিখে Text Direction চেপে খাড়া করুন।
- সোমবারের শেষ দুই ঘর বেছে আবার Merge Cells, তারপর “ICT ব্যবহারিক”।
- পুরো টেবিল বেছে Table Layout → Align Center; প্রথম সারি বেছে Table Design → Shading থেকে হালকা রং, আর Ctrl+B.
- টেবিল একাধিক পাতায় গেলে প্রথম সারি বেছে Repeat Header Rows — প্রতি পাতায় শিরোনাম আসবে।
সাধারণ ভুল: merge না করে শুধু ঘরের দাগ (border) মুছে দেওয়া — দেখতে এক ঘর মনে হয়, কিন্তু আসলে কয়েকটি ঘর; ভুল ঘর বেছে merge করা (Undo: Ctrl+Z, অথবা Split Cells); কলাম গুনতে ভুল করে শেষে কলাম যোগ-বিয়োগে সময় নষ্ট। শুরুর আগে খাতায় টেবিলের একটি ছোট খসড়া এঁকে নিন — HTML-এর rowspan/colspan টেবিলেও (কাজ H4) একই কৌশল কাজে লাগবে।
কাজ W4 · Mail merge দিয়ে প্রবেশপত্র (মাঝারি)
পরীক্ষকের নির্দেশ: “একটি Excel ফাইলে ৫ জন পরীক্ষার্থীর রোল, নাম, কেন্দ্র আর আসন নম্বর আছে। Word-এ একটি প্রবেশপত্রের নকশা বানিয়ে mail merge দিয়ে প্রত্যেকের আলাদা প্রবেশপত্র তৈরি করুন। ফল একটি নতুন ডকুমেন্টে রাখুন, নাম Roll_W4_Merged.docx.”
এই কাজটি ধাপে ধাপে দেখুন। “পরে” চাপুন:
- ১ · তালিকাExcel-এ ডেটা
- ২ · নকশাWord-এ মূল কার্ড
- ৩ · সংযোগSelect Recipients
- ৪ · ফিল্ডInsert Merge Field
- ৫ · মেলানোPreview, Finish
Roll | Name | Centre | Seat 101 | Rahim | Govt. College | 12 102 | Karim | Govt. College | 13 103 | Nusrat | Model School | 07 104 | Tanvir | Model School | 08 105 | Sadia | Govt. College | 14
প্রবেশপত্র — ব্যবহারিক পরীক্ষা
রোল: ______ আসন: ______
নাম: ____________________
কেন্দ্র: ____________________
ফাঁকা জায়গাগুলোতেই পরে ফিল্ড বসবে
students.xlsx -> Sheet1$ [x] First row of data contains column headers ৫টি রেকর্ড যুক্ত হলো Edit Recipient List: কাউকে বাদ দেওয়া, সাজানো
রোল: «Roll» আসন: «Seat» নাম: «Name» কেন্দ্র: «Centre»
রোল: 101 আসন: 12
নাম: Rahim
কেন্দ্র: Govt. College
… মোট ৫টি পাতা, প্রতিটি আলাদা পরীক্ষার্থীর
- তালিকা তৈরি। Excel-এ প্রথম সারিতে কলামের নাম (Roll, Name, Centre, Seat), নিচে প্রতি সারিতে একজন। মাঝে ফাঁকা সারি রাখবেন না। ফাইল সেভ করে বন্ধ করুন — খোলা থাকলে Word অনেক সময় সংযোগ করতে ঝামেলা করে। আসন নম্বর “07” রাখতে চাইলে Excel-এ ঘরটি Text ফরম্যাটে রাখুন, না হলে 7 হয়ে যাবে।
- নকশা। Word-এ নতুন ডকুমেন্টে Mailings → Start Mail Merge → Letters. তারপর প্রবেশপত্রের স্থায়ী অংশটুকু বানান — শিরোনাম, লেবেল (রোল, নাম…), চাইলে একটি টেবিল বা border. যে অংশ প্রতিজনের জন্য বদলাবে, সেখানে আপাতত ফাঁকা রাখুন।
- সংযোগ। Select Recipients → Use an Existing List, Excel ফাইলটি দেখিয়ে শিটটি বাছুন, “First row of data contains column headers”-এ টিক। এখন Word জানে কোন তালিকা থেকে নাম নেবে।
- ফিল্ড বসানো। প্রতিটি ফাঁকা জায়গায় কার্সর রেখে Insert Merge Field থেকে মিলিয়ে ফিল্ড বাছুন। ডকুমেন্টে দেখাবে
«Name»-এর মতো merge field — এগুলো “এখানে তালিকার মান বসবে” চিহ্ন। নিজে টাইপ করে « » লিখলে কাজ করবে না। - দেখা ও মেলানো। Preview Results চেপে তীর দিয়ে পাঁচজনের কার্ড দেখে নিন। সব ঠিক থাকলে Finish & Merge → Edit Individual Documents → All. Word একটি নতুন ডকুমেন্ট বানায়, যাতে পাঁচটি প্রবেশপত্র — এটিকেই নির্দেশমতো নামে সেভ করুন। মূল নকশার ফাইলটিও আলাদা নামে সেভ রাখুন।
সাধারণ ভুল: একই পাতায় দুটি করে কার্ড চাইলে প্রথম কার্ডের পরে Rules → Next Record বসাতে হয় — না দিলে দুটি কার্ডেই একই নাম আসে; বড় তালিকার জন্য Start Mail Merge → Labels-ও কাজে লাগে। তারিখ বা দশমিক সংখ্যা Excel-এ এক রকম আর Word-এ অন্য রকম দেখাতে পারে — তখন Excel-এ সেটিকে Text ফরম্যাটে রাখা সহজ সমাধান। আর Google Docs-এ সব অ্যাকাউন্টে নিজস্ব mail merge নেই; সাধারণত add-on লাগে — পরীক্ষায় সাধারণত Word-ই দেওয়া হয়।
কাজ W5 · Style দিয়ে শিরোনাম আর স্বয়ংক্রিয় সূচিপত্র (মাঝারি)
পরীক্ষকের নির্দেশ: “‘কম্পিউটারের ইতিহাস’ বিষয়ে তিন পাতার একটি ছোট প্রতিবেদন লিখুন — তিনটি অধ্যায়, প্রতিটিতে দুটি উপ-অংশ। প্রথম পাতায় স্বয়ংক্রিয় সূচিপত্র (TOC) দিন, পাতার নম্বরসহ। শেষে একটি নতুন উপ-অংশ যোগ করে সূচিপত্র হালনাগাদ করুন।”
- লেখা টাইপ করুন। প্রতিটি অধ্যায়ের নামের লাইনে কার্সর রেখে Home → Styles → Heading 1; উপ-অংশে Heading 2. শর্টকাট: Ctrl+Alt+1 / 2.
- সব Heading 1-এর রং বা ফন্ট বদলাতে চাইলে একটি একটি করে বদলাবেন না — Styles গ্যালারিতে Heading 1-এ ডান-ক্লিক → Modify. এক জায়গায় বদলালে সবখানে বদলায়; style-এর আসল সুবিধা এটাই।
- প্রতিটি অধ্যায়ের আগে Ctrl+Enter. Insert → Page Number দিয়ে নম্বর দিন।
- প্রথম পাতার শুরুতে কার্সর রেখে References → Table of Contents → Automatic Table 1. Word নিজে থেকে শিরোনাম আর পাতার নম্বর তুলে আনে; Ctrl চেপে কোনো শিরোনামে ক্লিক করলে সেখানে চলে যায়।
- নতুন উপ-অংশ যোগ করে সূচিপত্রে ক্লিক → Update Table → Update entire table.
সাধারণ ভুল: শিরোনাম শুধু বোল্ড আর বড় করা — দেখতে শিরোনাম, কিন্তু Word-এর কাছে সাধারণ লেখা, তাই সূচিপত্রে আসে না; লেখা বদলানোর পরে Update না করা, ফলে পুরোনো পাতার নম্বর রয়ে যায়; সূচিপত্র হাতে টাইপ করে বিন্দু (.....) দিয়ে সাজানো। Docs-এ পথ: Insert → Table of contents; শিরোনামে Format → Paragraph styles → Heading 1.
কাজ W6 · ছবি, ক্যাপশন আর গণিতের সমীকরণ (মাঝারি)
পরীক্ষকের নির্দেশ: “একটি পাতায় ‘দ্বিঘাত সমীকরণ’ বিষয়ে ছোট অনুচ্ছেদ লিখুন। পাশে একটি ছবি বসান — লেখা ছবির চারপাশে ঘুরবে। ছবির নিচে ক্যাপশন ‘চিত্র ১: …’। অনুচ্ছেদের নিচে সমীকরণ editor দিয়ে x-এর মান নির্ণয়ের সূত্রটি লিখুন।”
- Insert → Pictures → This Device (পরীক্ষক যে ছবি দেবেন)। ছবির কোণ ধরে টেনে ছোট করুন — কোণ ধরলে অনুপাত ঠিক থাকে, পাশ ধরলে ছবি চেপ্টা হয়।
- ছবিতে ক্লিক → পাশের Layout Options বোতাম → Square. এবার ছবিটি টেনে অনুচ্ছেদের ডানে রাখুন।
- ছবিতে ডান-ক্লিক → Insert Caption; Label: Figure (চাইলে New Label-এ “চিত্র”), তারপর বাকি লেখা। ডান-ক্লিক → View Alt Text-এ এক বাক্যে ছবির বর্ণনা।
- সমীকরণের জায়গায় Insert → Equation (শর্টকাট Alt+=)। Equation ট্যাব থেকে Fraction, Radical, Script বেছে লিখুন: x = (−b ± √(b² − 4ac)) / 2a. দ্রুত লেখার জন্য সরাসরি টাইপও চলে:
x=(-b\pm\sqrt(b^2-4ac))/2aলিখে Space চাপলে Word বেশিরভাগ চিহ্ন নিজে সাজিয়ে নেয়।
সাধারণ ভুল: সমীকরণ সাধারণ লেখায় “x = -b +- root…” টাইপ করা; বর্গ বোঝাতে superscript না দিয়ে “b2” লেখা; ছবি “In Line with Text” রয়ে যাওয়ায় লেখার মাঝে বড় ফাঁকা জায়গা; ক্যাপশন নিজে টাইপ করা, ফলে দ্বিতীয় ছবিতে নম্বর ঠিক না হওয়া। Docs-এ সমীকরণ: Insert → Equation.
কাজ P1 · Slide Master, transition আর speaker notes-সহ ছয় স্লাইডের প্রেজেন্টেশন (মাঝারি)
পরীক্ষকের নির্দেশ: “‘ডিজিটাল সেবা ও আমাদের জীবন’ বিষয়ে ছয়টি স্লাইডের একটি প্রেজেন্টেশন বানান: শিরোনাম, সূচি, তিনটি বিষয়ভিত্তিক স্লাইড (একটিতে ছবি, একটিতে টেবিল বা চার্ট), আর ধন্যবাদ। Slide Master দিয়ে প্রতিটি স্লাইডে একই ফন্ট ও নিচে প্রতিষ্ঠানের নাম দিন; শিরোনাম স্লাইড ছাড়া সব স্লাইডে নম্বর। সব স্লাইডে একই transition. প্রতিটি বিষয়ভিত্তিক স্লাইডে speaker notes লিখুন।”
- View → Slide Master. বাঁয়ের তালিকার একদম ওপরের বড় স্লাইডটি (মাস্টার) বাছুন। এখানে শিরোনাম আর লেখার ফন্ট বদলান, চাইলে কোণে লোগো দিন — নিচের সব layout-এ চলে যাবে। Close Master View.
- Insert → Header & Footer: Slide number-এ টিক, Footer-এ প্রতিষ্ঠানের নাম, Don't show on title slide-এ টিক → Apply to All.
- Home → New Slide-এর নিচের তীর থেকে layout বেছে ছয়টি স্লাইড বানান। প্রতিটি বিষয়ভিত্তিক স্লাইডে ৩–৫টি ছোট বুলেট — পুরো অনুচ্ছেদ নয়।
- ছবি: Insert → Pictures. টেবিল: Insert → Table. চার্ট: Insert → Chart (পাশে একটি ছোট Excel শিট খোলে, সেখানে সংখ্যা দিন)।
- Transitions ট্যাব থেকে একটি সরল transition (যেমন Fade) বেছে Apply To All.
- প্রতিটি স্লাইডের নিচের Notes অংশে (না দেখা গেলে View → Notes) বলার কথাগুলো লিখুন। স্লাইড শো চালালে এগুলো দর্শক দেখে না; Presenter View-তে শুধু বক্তা দেখেন।
- F5 দিয়ে শুরু থেকে, Shift+F5 দিয়ে বর্তমান স্লাইড থেকে চালিয়ে দেখুন।
.pptxহিসেবে সেভ।
সাধারণ ভুল: প্রতিটি স্লাইডে হাতে প্রতিষ্ঠানের নাম লেখা — একটিতে বানান ভুল হলে ছয়টিতে ঠিক করতে হয়; প্রতিটি স্লাইডে আলাদা আলাদা চোখ-ধাঁধানো transition; স্লাইডে পুরো অনুচ্ছেদ লিখে দেওয়া; speaker notes-এর জায়গায় স্লাইডেই নোট লেখা। Google Slides-এ: Slide → Edit theme (মাস্টারের মতো), Slide → Transition, আর নিচে “Click to add speaker notes”.
কাজ P2 · Animation-এর ক্রম, স্লাইডের ভেতরে লিংক আর PDF (মাঝারি)
পরীক্ষকের নির্দেশ: “P1-এর সূচি স্লাইডের তিনটি বুলেট ক্লিকে একে একে আসবে। সূচির প্রতিটি লেখায় ক্লিক করলে সংশ্লিষ্ট স্লাইডে যাবে। শেষে প্রেজেন্টেশনটি PDF হিসেবেও সেভ করুন।”
- সূচি স্লাইডের লেখার বক্স বাছুন → Animations → Appear বা Fade. Effect Options → By Paragraph দিলে প্রতিটি বুলেট আলাদা ক্লিকে আসে। Animation Pane খুলে ক্রম আর Start (On Click / After Previous) মিলিয়ে নিন।
- প্রথম বুলেটের লেখা বেছে Insert → Link (Ctrl+K) → Place in This Document → স্লাইড ৩. বাকি দুটিতেও একই।
- লিংক শুধু স্লাইড শোতে কাজ করে — F5 দিয়ে পরীক্ষা করুন।
- File → Export → Create PDF/XPS (বা Save As → PDF). PDF-এ animation থাকে না, স্থির পাতা হয় — এটি জানা থাকলে ভাইভায় কাজে লাগে।
সাধারণ ভুল: Edit মোডে লিংকে ক্লিক করে “কাজ করছে না” ভাবা; প্রতিটি বুলেটে আলাদা আলাদা animation দিয়ে ক্রম গুলিয়ে ফেলা; PDF সেভ করে মূল ফাইল সেভ না করা।
৪ · Excel — আটটি ব্যবহারিক কাজ, সূত্র আর প্রত্যাশিত ফল
Excel-এর ব্যবহারিক কাজে পরীক্ষক প্রায় সবসময় দেখতে চান সূত্র, শুধু ফল নয়। ক্যালকুলেটরে হিসাব করে ঘরে ২৫৫ লিখে দিলে পর্দায় ফল ঠিক, কিন্তু সূত্র না থাকায় নম্বর কাটা যায়। তাই প্রতিটি ফল একটি সূত্র থেকে আসা চাই, আর সূত্র একবার লিখে fill handle দিয়ে নিচে টেনে দিতে হবে। নিচের সব কাজ একই ডেটা দিয়ে — পাঁচজন শিক্ষার্থী, তিনটি বিষয়। নিজের কম্পিউটারে এই শিটটি একবার বানিয়ে নিন, তারপর কাজগুলো একে একে করুন। রিভিশন: পর্ব ১০, পর্ব ১১.
| A · Roll | B · Name | C · Bangla | D · English | E · ICT | |
|---|---|---|---|---|---|
| 2 | 101 | Rahim | 78 | 85 | 92 |
| 3 | 102 | Karim | 65 | 70 | 88 |
| 4 | 103 | Nusrat | 82 | 74 | 95 |
| 5 | 104 | Tanvir | 55 | 28 | 70 |
| 6 | 105 | Sadia | 72 | 91 | 84 |
কাজ E1 · SUM, AVERAGE আর IF দিয়ে ফলাফল শিট (মাঝারি)
পরীক্ষকের নির্দেশ: “উপরের ডেটা দিয়ে F কলামে মোট, G কলামে গড় (দুই দশমিক ঘর), H কলামে গ্রেড, I কলামে ফল (Pass/Fail) বের করুন। গ্রেডের নিয়ম: গড় ৮০+ A+, ৭০+ A, ৬০+ A-, ৫০+ B, ৪০+ C, ৩৩+ D, তার কম F; তবে কোনো বিষয়ে ৩৩-এর কম পেলে গ্রেড F আর ফল Fail. সব সূত্র একবার লিখে নিচে কপি করবেন।”
পুরো কাজটি ধাপে ধাপে দেখুন — প্রতিটি ধাপে কোন ঘরে কী সূত্র, আর কী ফল আসে:
- ১ · ডেটাশিরোনাম ও নম্বর
- ২ · মোটSUM
- ৩ · গড়AVERAGE
- ৪ · গ্রেডnested IF
- ৫ · ফলIF + MIN
- ৬ · মেধাক্রমRANK
- ৭ · সাজানো ও সেভফরম্যাট, যাচাই
A B C D E F G H I J
Roll Name Bangla English ICT Total Average Grade Result Rank
101 Rahim 78 85 92
… সারি ৬ পর্যন্ত, মোট ৫ জন
F2: =SUM(C2:E2) -> 255 F3: =SUM(C3:E3) -> 223 (Excel নিজে সারি বদলেছে) F4 -> 251 F5 -> 153 F6 -> 247
G2: =AVERAGE(C2:E2) -> 85.00 G3 -> 74.33 G4 -> 83.67 G5 -> 51.00 G6 -> 82.33 =F2/3-ও চলে, তবে বিষয় বাড়লে ভুল হবে
=IF(MIN(C2:E2)<33,"F",
IF(G2>=80,"A+",IF(G2>=70,"A",IF(G2>=60,"A-",
IF(G2>=50,"B",IF(G2>=40,"C",IF(G2>=33,"D","F")))))))
Rahim A+ | Karim A | Nusrat A+ | Tanvir F | Sadia A+
I2: =IF(MIN(C2:E2)>=33,"Pass","Fail") Pass | Pass | Pass | Fail | Pass Tanvir-এর গড় 51, কিন্তু English 28
J2: =RANK(F2,$F$2:$F$6) Rahim 1 | Karim 4 | Nusrat 2 | Tanvir 5 | Sadia 3 $ ছাড়া: J3-এ পরিসর F3:F7 হয়ে যেত — ভুল!
- A1:J6 বেছে All Borders; শিরোনাম বোল্ড ও রঙিন
- G কলাম: 2 দশমিক ঘর
- View → Freeze Panes → Freeze Top Row
- Ctrl + ` চেপে সূত্রগুলো একবার দেখে নিন
- Ctrl + S -> 101_Excel_E1.xlsx
- ডেটা ও শিরোনাম। A1 থেকে J1 পর্যন্ত কলামের নাম লিখুন, তারপর A2:E6-এ নম্বর। শিরোনাম ইংরেজিতে রাখলে সূত্র পড়তে সুবিধা, তবে নির্দেশ বাংলায় চাইলে বাংলাই দিন। নম্বরগুলো সংখ্যা হিসেবে ঢুকেছে কি না দেখুন — সংখ্যা ঘরের ডানে বসে, লেখা বাঁয়ে।
- মোট। F2-তে
=SUM(C2:E2)লিখে Enter. তারপর F2 বেছে ঘরের ডান-নিচের ছোট বর্গটি (fill handle) F6 পর্যন্ত টানুন, বা দুবার ক্লিক করুন। প্রতিটি সারিতে সূত্রের ঠিকানা নিজে বদলায় — এটাই relative reference. - গড়। G2-তে
=AVERAGE(C2:E2), নিচে টানুন। দুই দশমিক ঘর দেখাতে Home ট্যাবের Increase/Decrease Decimal. মনে রাখবেন, এটি শুধু দেখানো বদলায়; ভেতরে 74.3333… থাকে। নির্দেশে “গোল করে” বললে=ROUND(AVERAGE(C2:E2),2). - গ্রেড। শর্তগুলো বড় থেকে ছোট ক্রমে — nested IF. সবার আগে “কোনো বিষয়ে ফেল?” যাচাই, কারণ গড় ভালো হলেও এক বিষয়ে ফেল করলে F. বন্ধনী গুনে মেলান: সাতটি IF মানে শেষে সাতটি
). Excel 2019/365-এ ছোট বিকল্পIFS, আর কাজ E5-এ দেখবেন VLOOKUP দিয়েও করা যায়। - ফল।
MIN(C2:E2)তিন বিষয়ের সবচেয়ে কম নম্বর দেয়; সেটি ৩৩ বা বেশি হলেই সব বিষয়ে পাস। একই কাজ=IF(AND(C2>=33,D2>=33,E2>=33),"Pass","Fail")দিয়েও হয়, কিন্তু বিষয় বাড়লে MIN-এর সূত্র ছোট থাকে। লেখা (“Pass”) সবসময় উদ্ধৃতিচিহ্নে। - মেধাক্রম।
RANK(সংখ্যা, পরিসর)বলে দেয় পরিসরের মধ্যে সংখ্যাটি বড় থেকে কততম। পরিসরটি সব সারিতে একই থাকতে হবে, তাই$F$2:$F$6— absolute reference. সমান মোট হলে দুজনই একই rank পান, আর পরের rank একটি বাদ পড়ে। - সাজানো ও যাচাই। border, বোল্ড শিরোনাম, দশমিক ঘর ঠিক করুন। জমার আগে Ctrl+` (Esc-এর নিচের কি) চেপে সব ঘরের সূত্র একসাথে দেখুন — কোথাও হাতে লেখা সংখ্যা রয়ে গেল কি না ধরা পড়ে; আবার চেপে ফিরে আসুন। একজনের ফল হাতে হিসাব করে মিলিয়ে নিয়ে সেভ করুন।
| Name | F · Total | G · Average | H · Grade | I · Result | J · Rank |
|---|---|---|---|---|---|
| Rahim | 255 | 85.00 | A+ | Pass | 1 |
| Karim | 223 | 74.33 | A | Pass | 4 |
| Nusrat | 251 | 83.67 | A+ | Pass | 2 |
| Tanvir | 153 | 51.00 | F | Fail | 5 |
| Sadia | 247 | 82.33 | A+ | Pass | 3 |
নিজের শিটের ফল মেলাতে নিচের ছোট টুলটি চালান। এটি Excel নয় — একই নিয়মগুলো JavaScript-এ লিখে একই ডেটায় হিসাব করে, যাতে আপনার Excel-এর ফল ঠিক কি না নিশ্চিত হতে পারেন। নম্বর বদলে (যেমন Karim-এর English 70-এর বদলে 30) আবার চালিয়ে দেখুন, আর Excel-এও একই বদল করে মেলান।
// same data and rules as task E1 (a checker, not a replacement for Excel)
const rows = [
[101, 'Rahim', 78, 85, 92],
[102, 'Karim', 65, 70, 88],
[103, 'Nusrat', 82, 74, 95],
[104, 'Tanvir', 55, 28, 70],
[105, 'Sadia', 72, 91, 84],
];
const grade = (avg, low) => low < 33 ? 'F' : avg >= 80 ? 'A+' : avg >= 70 ? 'A'
: avg >= 60 ? 'A-' : avg >= 50 ? 'B' : avg >= 40 ? 'C' : avg >= 33 ? 'D' : 'F';
const sheet = rows.map(([roll, who, ...marks]) => {
const total = marks.reduce((s, x) => s + x, 0); // =SUM(C2:E2)
const avg = total / marks.length; // =AVERAGE(C2:E2)
const low = Math.min(...marks); // MIN(C2:E2)
return { roll, who, total, avg, grade: grade(avg, low), result: low >= 33 ? 'Pass' : 'Fail' };
});
for (const r of sheet) {
const rank = 1 + sheet.filter((o) => o.total > r.total).length; // =RANK(F2,$F$2:$F$6)
console.log(r.roll, r.who.padEnd(6), r.total, r.avg.toFixed(2), r.grade.padEnd(2), r.result, 'rank', rank);
}
const totals = sheet.map((r) => r.total);
console.log('MAX', Math.max(...totals), '| MIN', Math.min(...totals));
console.log('COUNTIF Pass:', sheet.filter((r) => r.result === 'Pass').length,
'| COUNTIF A+:', sheet.filter((r) => r.grade === 'A+').length);
console.log('SUMIF ICT of Pass:', rows.filter((x, i) => sheet[i].result === 'Pass').reduce((s, x) => s + x[4], 0));
console.log('AVERAGE ICT:', rows.reduce((s, x) => s + x[4], 0) / rows.length);আউটপুট: প্রথম পাঁচ লাইন উপরের টেবিলের সাথে হুবহু মেলে — যেমন 102 Karim 223 74.33 A Pass rank 4 আর 104 Tanvir 153 51.00 F Fail rank 5. তারপর MAX 255 | MIN 153, COUNTIF Pass: 4 | COUNTIF A+: 3, SUMIF ICT of Pass: 359 আর AVERAGE ICT: 85.8 — এগুলো কাজ E2 আর E4-এর উত্তর। লক্ষ করুন, grade-এর শর্তও বড় থেকে ছোট ক্রমে, ঠিক Excel-এর nested IF-এর মতো; আর rank মানে “আমার চেয়ে বেশি মোট কতজনের, তার সাথে ১”, যা RANK ফাংশনের সংজ্ঞাই।
কাজ E2 · MAX, MIN আর RANK (সহজ)
পরীক্ষকের নির্দেশ: “F8-এ সর্বোচ্চ মোট, F9-এ সর্বনিম্ন মোট, F10-এ শ্রেণির গড় মোট দেখান। J কলামে মেধাক্রম। দ্বিতীয় সর্বোচ্চ মোট কত, তাও বের করুন।”
| ঘর | সূত্র | ফল |
|---|---|---|
| F8 | =MAX(F2:F6) | 255 |
| F9 | =MIN(F2:F6) | 153 |
| F10 | =AVERAGE(F2:F6) | 225.8 |
| F11 | =LARGE(F2:F6,2) | 251 (দ্বিতীয় সর্বোচ্চ) |
| J2 (নিচে কপি) | =RANK(F2,$F$2:$F$6) | 1, 4, 2, 5, 3 |
সাধারণ ভুল: F8-এর সূত্রে পরিসর হিসেবে F2:F10 দিয়ে ফেলা — তাহলে নিজের ঘরও পরিসরে ঢুকে যায় আর Excel circular reference-এর সতর্কবার্তা দেয়। RANK-এ $ ভুলে যাওয়া — প্রথম সারিতে ঠিক, পরের সারিগুলোতে ধীরে ধীরে ভুল। নতুন Excel-এ RANK.EQ নামটিও আছে, কাজ একই; RANK পুরোনো সংস্করণের সাথে মেলানোর জন্য রাখা। RANK-এর তৃতীয় ঘরে 1 দিলে ছোট থেকে ক্রম (যেমন দৌড়ের সময়ে কম সময় = প্রথম)।
কাজ E3 · VAT হিসাবে absolute reference (সহজ)
পরীক্ষকের নির্দেশ: “একটি দোকানের চারটি পণ্যের দাম দেওয়া আছে। F1 ঘরে VAT-এর হার 15% লিখুন। C কলামে প্রতিটি পণ্যের VAT, D কলামে VAT-সহ দাম, আর D6-এ সর্বমোট বের করুন। পরে হার বদলালে যেন শুধু F1 বদলালেই চলে।”
| A · পণ্য | B · দাম | C · VAT =B2*$F$1 | D · মোট =B2+C2 | |
|---|---|---|---|---|
| 2 | খাতা | 250 | 37.5 | 287.5 |
| 3 | ক্যালকুলেটর | 1200 | 180 | 1380 |
| 4 | কলম | 80 | 12 | 92 |
| 5 | ব্যাগ | 560 | 84 | 644 |
| 6 | সর্বমোট =SUM(D2:D5) | 2403.5 | ||
কেন $: C2-এর সূত্র নিচে কপি করলে B2 বদলে B3, B4 হওয়া চাই, কিন্তু হার সবসময় F1-এই। $F$1 না দিলে C3-এ সূত্র হবে =B3*F2, F2 খালি, তাই VAT শূন্য — কোনো error-ও দেখাবে না, যা সবচেয়ে বিপজ্জনক। সূত্র লেখার সময় F1-এ ক্লিক করে F4 চাপলে Excel নিজে $F$1 বানিয়ে দেয়; আবার চাপলে F$1 (mixed reference). এখানে হারটি শুধু অনুশীলনের জন্য — বাস্তবে পণ্যভেদে হার আলাদা হতে পারে, তাই অফিসের কাজে সর্বশেষ সরকারি হার দেখে বসান।
কাজ E4 · COUNTIF আর SUMIF (মাঝারি)
পরীক্ষকের নির্দেশ: “E1-এর শিট থেকে বের করুন: কতজন পাস করেছে, কতজন A+ পেয়েছে, ICT-তে কতজন ৯০ বা বেশি পেয়েছে, পাস করা শিক্ষার্থীদের ICT নম্বরের যোগফল, আর পাস করা শিক্ষার্থীদের গড় মোট।”
| প্রশ্ন | সূত্র | ফল |
|---|---|---|
| পাস কতজন | =COUNTIF(I2:I6,"Pass") | 4 |
| A+ কতজন | =COUNTIF(H2:H6,"A+") | 3 |
| ICT-তে ৯০ বা বেশি | =COUNTIF(E2:E6,">=90") | 2 |
| পাসদের ICT যোগফল | =SUMIF(I2:I6,"Pass",E2:E6) | 359 |
| পাসদের গড় মোট | =AVERAGEIF(I2:I6,"Pass",F2:F6) | 244 |
গঠনটা মনে রাখুন: COUNTIF(কোথায় খুঁজব, কী শর্ত); SUMIF(কোথায় শর্ত দেখব, কী শর্ত, কোথা থেকে যোগ করব)। শর্তে তুলনা চিহ্ন থাকলে পুরোটা উদ্ধৃতিচিহ্নে: ">=90". শর্তের সংখ্যা অন্য ঘরে থাকলে জোড়া দিতে হয়: ">="&K1. একাধিক শর্তে COUNTIFS/SUMIFS, যেমন =COUNTIFS(I2:I6,"Pass",E2:E6,">=90") → 2. সাধারণ ভুল: SUMIF-এ তৃতীয় ঘর (যোগের পরিসর) বাদ দেওয়া — তখন Excel শর্তের পরিসরই যোগ করতে চায়, আর “Pass” লেখা যোগ করে ফল 0.
কাজ E5 · VLOOKUP আর XLOOKUP (মাঝারি)
পরীক্ষকের নির্দেশ: “(ক) L1 ঘরে রোল লিখলে M1-এ সেই শিক্ষার্থীর নাম আর N1-এ মোট আসবে। (খ) একটি আলাদা গ্রেড টেবিল বানিয়ে nested IF ছাড়াই গ্রেড বের করুন।”
| কাজ | সূত্র | ফল (L1 = 103) |
|---|---|---|
| রোল দিয়ে নাম (হুবহু মিল) | =VLOOKUP(L1,$A$2:$J$6,2,FALSE) | Nusrat |
| রোল দিয়ে মোট | =VLOOKUP(L1,$A$2:$J$6,6,FALSE) | 251 |
| একই কাজ XLOOKUP-এ | =XLOOKUP(L1,$A$2:$A$6,$B$2:$B$6,"পাওয়া যায়নি") | Nusrat |
| রোল 109 (তালিকায় নেই) | VLOOKUP / XLOOKUP | #N/A / পাওয়া যায়নি |
(খ) গ্রেড টেবিল: O2:P8-এ ছোট থেকে বড় ক্রমে নিম্নসীমা আর গ্রেড লিখুন — 0 F, 33 D, 40 C, 50 B, 60 A-, 70 A, 80 A+. তারপর =IF(MIN(C2:E2)<33,"F",VLOOKUP(G2,$O$2:$P$8,2,TRUE)). শেষের TRUE মানে “আনুমানিক মিল”: হুবহু 74.33 না পেলে তার চেয়ে ছোট সবচেয়ে বড় সীমা (70) ধরে নেয়, তাই Karim পায় A. এজন্যই টেবিল ছোট থেকে বড় ক্রমে সাজানো থাকা বাধ্যতামূলক। নিয়ম বদলালে শুধু টেবিল বদলালেই চলে — সাতটি IF-এর চেয়ে এটি পরিষ্কার।
VLOOKUP-এর তিনটি শর্ত মনে রাখুন: খোঁজার মান থাকতে হবে পরিসরের প্রথম কলামে; তৃতীয় ঘরের সংখ্যা গোনা হয় পরিসরের প্রথম কলাম থেকে, শিটের A থেকে নয়; আর হুবহু মিলের জন্য শেষে FALSE (বা 0). শেষ ঘর বাদ দিলে ডিফল্ট আনুমানিক মিল — অসাজানো তালিকায় চুপচাপ ভুল নাম আনে। XLOOKUP-এ এই ফাঁদগুলো নেই, কিন্তু এটি Excel 2021, Microsoft 365 আর Google Sheets-এ আছে; Excel 2016/2019-এ নেই। পরীক্ষার কম্পিউটারে কোন সংস্করণ, আগে দেখে নিন।
কাজ E6 · চার্ট (সহজ)
পরীক্ষকের নির্দেশ: “শিক্ষার্থীদের নাম আর মোট নম্বর দিয়ে একটি Clustered Column চার্ট বানান। চার্টের শিরোনাম ‘মোট নম্বরের তুলনা’, দুই অক্ষের নাম দিন। চার্টটি ডেটার পাশে রাখুন।”
- B1:B6 বেছে Ctrl চেপে ধরে F1:F6 বাছুন — দুটি আলাদা কলাম একসাথে বাছা হলো।
- Insert → Charts → Column → Clustered Column (বা Recommended Charts).
- চার্টের শিরোনামে ক্লিক করে লেখা বদলান। চার্টের পাশের + (Chart Elements) → Axis Titles-এ টিক, তারপর “শিক্ষার্থী” আর “মোট নম্বর”।
- চার্টের কিনারা ধরে টেনে ডেটার ডানে রাখুন।
কোন চার্ট কখন: কয়েকজনের তুলনা — column/bar; সময়ের সাথে বদল (মাসভিত্তিক বিক্রি) — line; পুরোটার কোন অংশ কত (বাজেটের খাত) — pie. সাধারণ ভুল: Roll আর নম্বর একসাথে বেছে ফেলা, ফলে রোল নম্বরও একটি বার হিসেবে আসে; শিরোনাম “Chart Title” রয়ে যাওয়া; তুলনার জন্য pie চার্ট নেওয়া।
কাজ E7 · Conditional formatting আর dropdown তালিকা (মাঝারি)
পরীক্ষকের নির্দেশ: “(ক) C2:E6-এ ৩৩-এর কম নম্বর লাল রঙে দেখান, আর ৮০ বা বেশি সবুজে। (খ) K কলামে ‘Group’ শিরোনাম দিয়ে K2:K6-এ এমন ব্যবস্থা করুন, যাতে শুধু Science, Commerce বা Arts বাছা যায়; অন্য কিছু লিখলে সতর্কবার্তা আসবে।”
- C2:E6 বেছে Home → Conditional Formatting → Highlight Cells Rules → Less Than… → 33, রং “Light Red Fill with Dark Red Text”.
- আবার Highlight Cells Rules → Greater Than…-এ “৮০ বা বেশি” দিতে গেলে 79 লিখতে হয় (Greater Than মানে কঠোরভাবে বড়)। পরিষ্কার উপায়: New Rule → Format only cells that contain → Cell Value → greater than or equal to → 80, তারপর সবুজ রং। নিয়মগুলো দেখতে-বদলাতে: Manage Rules.
- K2:K6 বেছে Data → Data Validation → Settings: Allow List, Source:
Science,Commerce,Arts(কমা দিয়ে, স্পেস ছাড়া)। - একই বক্সের Error Alert ট্যাবে Style: Stop, বার্তা: “শুধু তালিকা থেকে বাছুন”। OK.
- K2-এ “Biology” লিখে পরীক্ষা করুন — সতর্কবার্তা আসা উচিত।
সাধারণ ভুল: শুধু একটি ঘর বেছে নিয়ম দেওয়া, ফলে বাকি ঘরে কাজ করে না; পুরো সারি রং করতে চাইলে সূত্রভিত্তিক নিয়ম লাগে (New Rule → Use a formula: =$I2="Fail", পরিসর A2:J6) — $I-এর $ ভুলে গেলে রং এলোমেলো হয়। Google Sheets-এ: Format → Conditional formatting, আর Data → Data validation → Dropdown.
কাজ E8 · Sort আর Filter (সহজ)
পরীক্ষকের নির্দেশ: “(ক) পুরো শিট মোট নম্বর অনুযায়ী বড় থেকে ছোট ক্রমে সাজান। (খ) Filter দিয়ে শুধু পাস করা শিক্ষার্থীদের দেখান, তারপর যাদের মোট ২৪০ বা বেশি শুধু তাদের।”
- ডেটার যেকোনো ঘরে ক্লিক করে Data → Sort. “My data has headers”-এ টিক। Sort by: Total, Order: Largest to Smallest. OK.
- Data → Filter (Ctrl+Shift+L) — শিরোনামে ছোট তীর আসবে।
- Result-এর তীর → শুধু Pass-এ টিক → OK.
- Total-এর তীর → Number Filters → Greater Than Or Equal To → 240.
- সব আবার দেখাতে: Data → Clear.
সাধারণ ভুল: শুধু F কলাম বেছে Sort চাপা, আর Excel-এর “Expand the selection” সতর্কবার্তায় “Continue with the current selection” বেছে নেওয়া — তাহলে শুধু মোটগুলো সাজে, নামের সাথে মিল ভেঙে যায়; এটি শিটের সবচেয়ে বড় দুর্ঘটনাগুলোর একটি। Filter-এ লুকানো সারি মুছে গেছে ভাবা — আসলে শুধু লুকানো; সারির নম্বর নীল হয়ে থাকে। Sort করার পরেও RANK-এর ফল একই থাকে, কারণ RANK সারির অবস্থান নয়, মান দেখে।
৫ · HTML — HSC ধাঁচের ছয়টি কাজ, লাইভ প্রিভিউসহ
HTML-এর ব্যবহারিক কাজে সাধারণত Notepad (বা Notepad++, VS Code)-এ কোড লিখে .html নামে সেভ করে ব্রাউজারে খুলে দেখাতে হয়। পরীক্ষক দেখেন: ট্যাগ ঠিক আছে কি না, জোড়া ট্যাগ বন্ধ হয়েছে কি না, attribute সঠিক কি না, আর পাতাটি নির্দেশমতো দেখাচ্ছে কি না। প্রতিটি কাজে প্রথমে সমাধানের HTML দেওয়া আছে — পরীক্ষায় আপনি শুধু এটুকুই লিখবেন। তার নিচের চালানো যায় এমন বক্সে “Run” চাপলে সেই HTML একটি প্রিভিউতে দেখাবে, আর সাথের ছোট JavaScript পাতাটি পরীক্ষা করে লিখে দেবে কোন ট্যাগ কতবার আছে, লিংক কোথায় যায়, ঘর কয়টি — অনেকটা পরীক্ষকের চেকলিস্টের মতো। JavaScript অংশ পরীক্ষার জন্য নয়, শুধু যাচাইয়ের জন্য। রিভিশন: পর্ব ৩৬, পর্ব ৩৭.
সেভ করার নিয়ম: Notepad-এ File → Save As → “Save as type: All Files”, নাম index.html (শেষে .txt যেন না বসে), Encoding: UTF-8. বাংলা লেখা ভাঙা দেখালে প্রায় সবসময় কারণ দুটি: encoding UTF-8 নয়, অথবা <head>-এ <meta charset="UTF-8"> নেই।
কাজ H1 · Heading, paragraph আর formatting (সহজ)
পরীক্ষকের নির্দেশ: “‘আমার বিদ্যালয়’ শিরোনামে একটি ওয়েব পেজ তৈরি করুন। একটি প্রধান শিরোনাম ও দুটি উপ-শিরোনাম থাকবে। একটি অনুচ্ছেদে তিনটি শব্দ যথাক্রমে bold, italic ও underline করুন। H2O আর (a+b)2 সঠিকভাবে দেখান। একটি অনুভূমিক রেখার পর মাঝখানে দুই লাইনে যোগাযোগের তথ্য দিন।”
সমাধান (HTML):
<h1>আমার বিদ্যালয়</h1>
<h2>পরিচিতি</h2>
<p>আমাদের বিদ্যালয়ে <b>বিজ্ঞান</b>, <i>ব্যবসায় শিক্ষা</i> ও <u>মানবিক</u> — তিনটি বিভাগ আছে।</p>
<h2>বিজ্ঞানের কোণ</h2>
<p>পানির সংকেত H<sub>2</sub>O আর একটি পরিচিত সূত্র (a+b)<sup>2</sup> = a<sup>2</sup> + 2ab + b<sup>2</sup></p>
<hr>
<p style="text-align:center">যোগাযোগ: অফিস কক্ষ, প্রধান ভবন<br>সময়: সকাল ৯টা থেকে বিকেল ৪টা</p>// examiner-style check: which tags are used, and how many times?
const want = ['h1', 'h2', 'p', 'b', 'i', 'u', 'sub', 'sup', 'hr', 'br'];
for (const t of want) {
console.log(t.padEnd(4), document.getElementsByTagName(t).length);
}
const sups = [...document.querySelectorAll('sup')].map((e) => e.textContent);
console.log('sup text:', sups.join(','), '| centred p:', document.querySelector('p[style]') !== null);আউটপুট: h1 1, h2 2, p 3, b 1, i 1, u 1, sub 1, sup 3, hr 1, br 1, শেষে sup text: 2,2,2 | centred p: true. লক্ষ করুন: <hr> আর <br> খালি ট্যাগ (empty tag) — এদের বন্ধ করার ট্যাগ নেই; বাকি সব জোড়া ট্যাগ। <sub> নিচে, <sup> ওপরে লেখে। পুরোনো বইয়ে <center> বা <font> দেখতে পারেন; আধুনিক HTML-এ এগুলো বাদ দেওয়া হয়েছে, তাই এখানে style="text-align:center". পরীক্ষার নির্দেশে পুরোনো ট্যাগ চাইলে সেটিই লিখুন, তবে ভাইভায় আধুনিক বিকল্পটি বলতে পারলে ভালো।
নম্বর পাওয়ার তালিকা: একটিই h1, উপ-শিরোনামে h2; প্রতিটি অনুচ্ছেদ p ট্যাগে; তিন রকম formatting; sub ও sup; hr ও br; সব জোড়া ট্যাগ বন্ধ। সাধারণ ভুল: নতুন লাইনের জন্য কোডে শুধু Enter চাপা — ব্রাউজার কোডের Enter উপেক্ষা করে, তাই <br> বা নতুন <p> লাগে; <h1> খুলে </h2> দিয়ে বন্ধ করা।
কাজ H2 · ক্রমিক, অক্রমিক আর ভেতরের তালিকা (সহজ)
পরীক্ষকের নির্দেশ: “ভর্তির জন্য প্রয়োজনীয় তিনটি কাগজের একটি ক্রমিক তালিকা বানান। তারপর বিভাগগুলোর একটি অক্রমিক তালিকা (বর্গাকার বুলেট), যেখানে ‘বিজ্ঞান’-এর ভেতরে তিনটি বিষয়ের a, b, c ক্রমের তালিকা থাকবে। শেষে দুটি শব্দের অর্থসহ একটি description list দিন।”
সমাধান (HTML):
<h3>ভর্তির প্রয়োজনীয় কাগজ</h3>
<ol type="1">
<li>SSC-র নম্বরপত্র</li>
<li>জন্ম নিবন্ধনের কপি</li>
<li>চার কপি ছবি</li>
</ol>
<h3>বিভাগ ও বিষয়</h3>
<ul style="list-style-type:square">
<li>বিজ্ঞান
<ol type="a"><li>পদার্থবিজ্ঞান</li><li>রসায়ন</li><li>ICT</li></ol>
</li>
<li>ব্যবসায় শিক্ষা</li>
<li>মানবিক</li>
</ul>
<dl><dt>HTML</dt><dd>ওয়েব পেজ সাজানোর মার্কআপ ভাষা</dd><dt>URL</dt><dd>ওয়েবে কোনো পাতার ঠিকানা</dd></dl>for (const list of document.querySelectorAll('ol, ul')) {
const kind = list.getAttribute('type') || list.style.listStyleType || 'default';
const depth = list.parentElement.closest('ol, ul') ? 2 : 1;
const items = [...list.children].map((li) => li.firstChild.textContent.trim());
console.log(list.tagName, 'type=' + kind, 'depth=' + depth, '->', items.join(' / '));
}
console.log('dt:', document.querySelectorAll('dt').length, '| dd:', document.querySelectorAll('dd').length);আউটপুট: OL type=1 depth=1 -> SSC-র নম্বরপত্র / জন্ম নিবন্ধনের কপি / চার কপি ছবি, UL type=square depth=1 -> বিজ্ঞান / ব্যবসায় শিক্ষা / মানবিক, OL type=a depth=2 -> পদার্থবিজ্ঞান / রসায়ন / ICT, আর dt: 2 | dd: 2. ভেতরের তালিকা (nested list) বসে বাইরের তালিকার একটি <li>-এর ভেতরে — “বিজ্ঞান” লেখার পরে, </li>-এর আগে। ol-এর type হতে পারে 1, A, a, I, i; শুরুর সংখ্যা বদলাতে start="5". ul-এর বুলেট বদলাতে পুরোনো বইয়ে type="square" দেখবেন; আধুনিক উপায় CSS-এর list-style-type.
সাধারণ ভুল: ভেতরের তালিকা </li>-এর পরে বসানো (তখন সেটি কোনো li-এর ভেতরে থাকে না, HTML ভুল হয়); <li> ছাড়া সরাসরি ol-এর ভেতরে লেখা; <dl>-এ dt আর dd-এর ক্রম গুলিয়ে ফেলা।
কাজ H3 · লিংকের সেট আর alt-সহ ছবি (মাঝারি)
পরীক্ষকের নির্দেশ: “একটি পেজে তিনটি অভ্যন্তরীণ লিংক (হোম, আমাদের কথা, একই পাতার ‘যোগাযোগ’ অংশ), একটি বাইরের সাইটের লিংক যা নতুন ট্যাবে খুলবে, আর একটি ইমেইল লিংক দিন। প্রতিষ্ঠানের লোগো বসান, যাতে ক্লিক করলে লোগোটি বড় করে খোলে; আর একটি ভবনের ছবি নির্দিষ্ট মাপে দিন। সব ছবিতে বিকল্প লেখা (alt) থাকবে।”
সমাধান (HTML):
<nav><a href="index.html">হোম</a> | <a href="about.html">আমাদের কথা</a> | <a href="#contact">যোগাযোগ</a></nav>
<p><a href="https://www.wikipedia.org/" target="_blank" rel="noopener">উইকিপিডিয়া (নতুন ট্যাবে)</a></p>
<p><a href="../logo.webp"><img src="../logo.webp" alt="ABCL TECH-এর লোগো" width="90"></a>
<img src="images/school.jpg" alt="বিদ্যালয়ের মূল ভবন" width="160" height="90"></p>
<h3 id="contact">যোগাযোগ</h3>
<p><a href="mailto:office@school.example">office@school.example</a></p>for (const a of document.querySelectorAll('a')) {
const label = a.textContent || '[image link]';
console.log(a.getAttribute('href').padEnd(26), (a.target || '(same tab)').padEnd(10), '|', label);
}
for (const img of document.images) {
console.log('img', img.getAttribute('src'), '| alt:', img.alt || 'MISSING', '| width:', img.getAttribute('width'));
}
document.addEventListener('click', (e) => { // in this preview, links go nowhere
if (e.target.closest('a')) e.preventDefault();
});আউটপুট: ছয়টি লিংকের লাইন — index.html … (same tab) | হোম, about.html, #contact, https://www.wikipedia.org/ … _blank | উইকিপিডিয়া (নতুন ট্যাবে), ../logo.webp … | [image link] আর mailto:office@school.example; তারপর দুটি ছবির src, alt আর width. প্রিভিউতে প্রথম ছবিটি (সাইটের আসল লোগো) দেখা যায়, কিন্তু দ্বিতীয়টির ফাইল নেই — তাই সেখানে ভাঙা ছবির চিহ্নের সাথে alt লেখা “বিদ্যালয়ের মূল ভবন” দেখায়। alt-এর কাজ ঠিক এটাই: ছবি না এলে, বা দৃষ্টিপ্রতিবন্ধী কেউ screen reader দিয়ে পড়লে, ছবির জায়গায় এই লেখা।
মনে রাখুন: <a>-এর href বলে কোথায় যাবে; target="_blank" নতুন ট্যাবে খোলে (সাথে rel="noopener" নিরাপদ অভ্যাস); #contact একই পাতার id="contact"-এ নিয়ে যায়; mailto: ইমেইল অ্যাপ খোলে। <img> খালি ট্যাগ; src আর alt অবশ্যই। ছবি কোডের ফাইলের পাশের images ফোল্ডারে থাকলে src="images/school.jpg" — পরীক্ষায় ছবি কোথায় রেখেছেন আর কোডে কী লিখেছেন, দুটো মেলানোই সবচেয়ে বড় কাজ। সাধারণ ভুল: ফাইলের নামের বড়-ছোট হাতের অক্ষর না মেলানো (School.JPG বনাম school.jpg — অনেক সার্ভারে আলাদা ধরা হয়); পুরো পথ C:\Users\...\school.jpg লিখে দেওয়া, যা অন্য কম্পিউটারে কাজ করে না; href-এ www.wikipedia.org লিখে https:// বাদ দেওয়া (তখন ব্রাউজার একে নিজের ফোল্ডারের একটি ফাইল ভাবে)।
কাজ H4 · rowspan আর colspan-সহ ফলাফলের টেবিল (মাঝারি)
পরীক্ষকের নির্দেশ: “নিচের মতো একটি টেবিল তৈরি করুন: ‘রোল’, ‘নাম’ আর ‘মোট’ শিরোনাম দুই সারি জুড়ে; ‘প্রাপ্ত নম্বর’ শিরোনাম তিন কলাম জুড়ে, তার নিচে বাংলা, ইংরেজি, ICT. দুজন শিক্ষার্থীর তথ্য দিন, আর শেষ সারিতে প্রথম পাঁচ কলাম জুড়ে ‘সর্বমোট’। টেবিলের border ও শিরোনাম (caption) থাকবে।”
সমাধান (HTML):
<table border="1">
<caption>ব্যবহারিক পরীক্ষার ফলাফল</caption>
<tr><th rowspan="2">রোল</th><th rowspan="2">নাম</th><th colspan="3">প্রাপ্ত নম্বর</th><th rowspan="2">মোট</th></tr>
<tr><th>বাংলা</th><th>ইংরেজি</th><th>ICT</th></tr>
<tr><td>101</td><td>Rahim</td><td>78</td><td>85</td><td>92</td><td>255</td></tr>
<tr><td>102</td><td>Karim</td><td>65</td><td>70</td><td>88</td><td>223</td></tr>
<tr><td colspan="5">সর্বমোট</td><td>478</td></tr>
</table>const tbl = document.querySelector('table');
let slots = 0;
for (const row of tbl.rows) {
for (const c of row.cells) slots += c.colSpan * c.rowSpan;
}
const written = tbl.querySelectorAll('th, td').length;
console.log('rows:', tbl.rows.length, '| cells written:', written, '| grid slots:', slots, '(5 x 6 = 30)');
const dataRows = [...tbl.rows].slice(2, -1);
const rowOk = dataRows.every((r) =>
[2, 3, 4].reduce((s, k) => s + Number(r.cells[k].textContent), 0) === Number(r.cells[5].textContent));
const grand = dataRows.reduce((s, r) => s + Number(r.cells[5].textContent), 0);
console.log('row totals ok:', rowOk, '| grand total:', grand, '| written:', tbl.rows[4].cells[1].textContent);
console.log('tbody added by browser:', tbl.tBodies.length === 1);আউটপুট: rows: 5 | cells written: 21 | grid slots: 30 (5 x 6 = 30), তারপর row totals ok: true | grand total: 478 | written: 478 আর tbody added by browser: true. মূল কৌশল এখানেই: টেবিলটি আসলে ৫ সারি × ৬ কলাম = ৩০টি খোপের একটি গ্রিড। প্রতিটি ঘর তার colspan × rowspan সংখ্যক খোপ দখল করে। আপনি ২১টি ঘর লিখেছেন, কিন্তু খোপ ভরেছে ৩০টিই — হিসাব মিললে টেবিল সঠিক। দ্বিতীয় সারিতে মাত্র তিনটি ঘর, কারণ বাকি তিনটি খোপ ওপরের rowspan-ওয়ালা ঘরগুলো আগেই দখল করে আছে। শেষ লাইনটি দেখায়, আপনি <tbody> না লিখলেও ব্রাউজার নিজে বসিয়ে নেয়।
সাধারণ ভুল: rowspan দেওয়া কলামের ঘর পরের সারিতে আবার লিখে ফেলা — টেবিল ডানে একটি বাড়তি কলাম ঠেলে দেয়; colspan-এর বানান colspane বা colSpan="3"-এর বদলে colspan=3" (উদ্ধৃতিচিহ্ন অর্ধেক); <th> আর <td> গুলিয়ে ফেলা। Word-এর রুটিন টেবিলের (কাজ W3) মতোই, লেখার আগে খাতায় গ্রিড এঁকে প্রতিটি সারিতে কোন ঘর কয়টি খোপ নেবে লিখে নিন। পাঠ্যবইয়ে border="1" দেখবেন; আধুনিক HTML-এ border দেওয়ার আসল উপায় CSS — পরীক্ষার নির্দেশ যেটা চায়, সেটাই লিখুন।
কাজ H5 · একটি সাধারণ ফর্ম (মাঝারি)
পরীক্ষকের নির্দেশ: “লাইব্রেরির সদস্য হওয়ার একটি ফর্ম বানান: পুরো নাম (বাধ্যতামূলক), ইমেইল, পাসওয়ার্ড, সদস্যপদের ধরন (সাধারণ/আজীবন — একটিই বাছা যাবে), আগ্রহ (বই/কম্পিউটার — একাধিক বাছা যাবে), জেলা (dropdown), মন্তব্য (কয়েক লাইনের বক্স), আর জমা ও মুছে ফেলার বোতাম। প্রতিটি ঘরের পাশে লেবেল থাকবে।”
সমাধান (HTML):
<form id="member" action="/join" method="post">
<div><label class="k" for="fn">পুরো নাম</label><input id="fn" name="fullname" required></div>
<div><label class="k" for="mail">ইমেইল</label><input id="mail" type="email" name="email"></div>
<div><label class="k" for="pw">পাসওয়ার্ড</label><input id="pw" type="password" name="password"></div>
<div>সদস্যপদ: <label><input type="radio" name="plan" value="general"> সাধারণ</label> <label><input type="radio" name="plan" value="life"> আজীবন</label></div>
<div>আগ্রহ: <label><input type="checkbox" name="interest" value="books"> বই</label> <label><input type="checkbox" name="interest" value="computer"> কম্পিউটার</label></div>
<div><label class="k" for="dist">জেলা</label><select id="dist" name="district"><option>Dhaka</option><option>Rajshahi</option><option>Sylhet</option></select></div>
<div><label class="k" for="msg">মন্তব্য</label><textarea id="msg" name="comment" rows="2" cols="24"></textarea></div>
<input type="submit" value="জমা দিন"> <input type="reset" value="মুছে ফেলুন">
</form>const frm = document.getElementById('member');
for (const el of frm.elements) {
const lab = el.labels && el.labels.length ? el.labels[0].textContent.trim() : '-';
console.log(el.type.padEnd(10), (el.name || '-').padEnd(9), 'label:', lab);
}
console.log('empty form valid?', frm.checkValidity()); // fullname is required
frm.fullname.value = 'Nusrat Jahan';
frm.email.value = 'nusrat.example.com'; // no @
console.log('bad email valid?', frm.checkValidity());
frm.email.value = 'nusrat@example.com';
frm.plan.value = 'life'; // picks a radio button
frm.district.value = 'Sylhet';
console.log('now valid?', frm.checkValidity());
console.log([...new FormData(frm)].map(([k, v]) => k + '=' + v).join('&'));আউটপুট: প্রথম এগারো লাইনে প্রতিটি ঘরের ধরন, নাম আর লেবেল — text, email, password, দুটি radio, দুটি checkbox, select-one, textarea, submit, reset. তারপর empty form valid? false (নাম বাধ্যতামূলক), bad email valid? false (@ নেই), now valid? true, আর শেষে যা সার্ভারে যেত: fullname=Nusrat Jahan&email=nusrat@example.com&password=&plan=life&district=Sylhet&comment=. লক্ষ করুন: radio-র দুটি বোতামের name একই (plan) বলেই একটিমাত্র বাছা যায়; টিক না দেওয়া checkbox পাঠানোই হয় না; আর বোতাম দুটির name নেই, তাই তারাও তালিকায় নেই।
মনে রাখুন: <form>-এর action বলে তথ্য কোথায় যাবে, method কীভাবে (get/post); প্রতিটি <input>-এর type তার আচরণ ঠিক করে; <label for="…">-এর মান ঘরের id-এর সাথে মিললে লেবেলে ক্লিক করলেও ঘর বাছা হয়। সাধারণ ভুল: radio-গুলোর name আলাদা দেওয়া (তখন সবগুলো একসাথে বাছা যায়); <select>-এর ভেতরে <option> না দিয়ে শুধু লেখা; পাসওয়ার্ডের জন্য type="text" রেখে দেওয়া; <textarea>-কে খালি ট্যাগ ভেবে বন্ধ না করা।
কাজ H6 · পুরো পেজের কাঠামো একসাথে (সহজ)
পরীক্ষকের নির্দেশ: “একটি পূর্ণাঙ্গ HTML ডকুমেন্ট লিখুন, যার শিরোনাম বারে ‘আমার প্রথম পেজ’ দেখাবে, পাতার পটভূমি হালকা রঙের, আর বাংলা লেখা ঠিকমতো দেখাবে। ভেতরে একটি শিরোনাম, একটি অনুচ্ছেদ আর একটি মন্তব্য (comment) রাখুন। ফাইলটি index.html নামে সেভ করে ব্রাউজারে খুলে দেখান।”
<!DOCTYPE html>
<html lang="bn">
<head>
<meta charset="UTF-8">
<title>আমার প্রথম পেজ</title>
<style>
body { background-color: #f0f7ff; font-family: sans-serif; }
</style>
</head>
<body>
<!-- এই লেখাটি মন্তব্য, ব্রাউজারে দেখাবে না -->
<h1>স্বাগতম</h1>
<p>এটি আমার বানানো প্রথম ওয়েব পেজ।</p>
</body>
</html>প্রত্যাশিত ফল: ব্রাউজারের ট্যাবে “আমার প্রথম পেজ”, হালকা নীল পটভূমিতে বড় করে “স্বাগতম” আর নিচে অনুচ্ছেদটি; মন্তব্যটি দেখা যাবে না। নম্বর পাওয়ার তালিকা: <!DOCTYPE html> প্রথম লাইনে; html, head, body সঠিকভাবে নেস্টেড ও বন্ধ; <title> head-এর ভেতরে; meta charset; comment-এর সঠিক রূপ <!-- -->. পুরোনো বইয়ের <body bgcolor="..."> অনেক ব্রাউজারে এখনো কাজ করে, কিন্তু আধুনিক নিয়মে বাদ পড়েছে — CSS-ই নিরাপদ। ফাইল খুলে কিছু না দেখালে প্রথমে দেখুন নাম index.html.txt হয়ে যায়নি তো (Windows-এ File Explorer → View → File name extensions চালু করে দেখুন)।
৬ · C প্রোগ্রাম — ল্যাবের দশটি ক্লাসিক
C-এর ব্যবহারিক পরীক্ষায় সাধারণত একটি বা দুটি সমস্যা দেওয়া হয়। আপনাকে খাতায় অ্যালগরিদম বা ফ্লোচার্ট লিখতে হতে পারে, তারপর কম্পিউটারে প্রোগ্রাম লিখে compile করে, পরীক্ষকের দেওয়া ইনপুটে চালিয়ে দেখাতে হয়। ল্যাবে প্রায়ই Code::Blocks, Dev-C++ বা অন্য কোনো IDE থাকে; কোথাও কোথাও এখনো Turbo C. নিচের দশটি প্রোগ্রাম বারবার ফিরে আসা “ক্লাসিক” — প্রতিটি নিজে না দেখে লিখতে পারলে বেশিরভাগ প্রশ্ন এগুলোরই রূপান্তর। চারটি এই পাতাতেই চলে (ইনপুট আগে থেকে দেওয়া, চাইলে বদলান); বাকিগুলোর প্রত্যাশিত আউটপুট দেওয়া আছে — নিজের কম্পিউটারে চালিয়ে মেলান। রিভিশন: পর্ব ৩৯, পর্ব ৪০.
প্রতিটি C প্রোগ্রামে নম্বর পাওয়ার সাধারণ তালিকা: #include <stdio.h> (header file); int main(void) আর শেষে return 0; (main); অর্থবহ ভ্যারিয়েবলের নাম; ইনপুটের আগে বার্তা (prompt); scanf-এ &; সঠিক format specifier (%d, %f, %lld); ভেতরের লাইনে ইনডেন্ট; কোনো error বা warning ছাড়া compile; অন্তত দুটি ভিন্ন ইনপুটে চালিয়ে দেখানো।
কাজ C1 · তিনটি সংখ্যার যোগফল ও গড় (সহজ)
নির্দেশ: “তিনটি পূর্ণসংখ্যা ইনপুট নিয়ে তাদের যোগফল ও গড় (দুই দশমিক ঘর পর্যন্ত) দেখানোর প্রোগ্রাম লিখুন।”
#include <stdio.h>
int main(void)
{
int a, b, c, sum;
float avg;
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
printf("%d %d %d\n", a, b, c); /* shows the input online */
sum = a + b + c;
avg = sum / 3.0f; /* 3.0f, not 3 */
printf("Sum = %d\n", sum);
printf("Average = %.2f\n", avg);
return 0;
}ইনপুট 45 67 82, তাই আউটপুট Sum = 194 আর Average = 64.67. সবচেয়ে বড় ফাঁদ ভাগে: sum / 3 লিখলে দুটোই int, তাই ভাগফলও int — 64, দশমিক অংশ হারিয়ে যায়, তারপর float-এ রাখলেও 64.00 (integer division). 3.0f বা (float)sum / 3 লিখলে আসল ভাগ হয়। ইনপুটের পরের printf লাইনটি শুধু অনলাইনে চালালে ইনপুট দেখানোর জন্য; পরীক্ষায় লাগবে না।
কাজ C2 · জোড় না বিজোড় (সহজ)
নির্দেশ: “একটি পূর্ণসংখ্যা জোড় না বিজোড়, তা নির্ণয়ের প্রোগ্রাম লিখুন।”
#include <stdio.h>
int main(void)
{
int n;
printf("Enter a number: ");
scanf("%d", &n);
if (n % 2 == 0)
printf("%d is even\n", n);
else
printf("%d is odd\n", n);
return 0;
}প্রত্যাশিত আউটপুট: ইনপুট 7 → 7 is odd; ইনপুট 10 → 10 is even; ইনপুট −4 → -4 is even. % ভাগশেষ দেয়; জোড় সংখ্যার ২ দিয়ে ভাগশেষ ০. সাধারণ ভুল: if (n % 2 = 0) — একটি = মানে মান বসানো, তুলনা নয়; এখানে compile error আসে। ঋণাত্মক বিজোড় সংখ্যায় (যেমন −7) n % 2 হয় −1, তাই “n % 2 == 1 হলে বিজোড়” লিখলে ভুল হয় — == 0 দিয়ে যাচাই নিরাপদ।
কাজ C3 · তিনটি সংখ্যার মধ্যে বড়টি (সহজ)
#include <stdio.h>
int main(void)
{
int a, b, c, max;
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
if (a >= b && a >= c)
max = a;
else if (b >= c)
max = b;
else
max = c;
printf("Largest = %d\n", max);
return 0;
}প্রত্যাশিত আউটপুট: 12 45 30 → Largest = 45; 9 9 3 → Largest = 9. >= নেওয়ার কারণ: দুটি সংখ্যা সমান হলে > দিয়ে কোনো শর্তই সত্য না হয়ে ভুল ফল আসতে পারে। else if (b >= c)-এ আর a-র সাথে তুলনা লাগে না, কারণ এখানে পৌঁছানো মানেই a সবচেয়ে বড় নয়। পরীক্ষায় অন্তত একবার সমান সংখ্যা দিয়ে চালিয়ে দেখান — পরীক্ষকেরা প্রায়ই ঠিক এটাই দেন।
কাজ C4 · অধিবর্ষ (leap year) নির্ণয় (মাঝারি)
নির্দেশ: “একটি সাল অধিবর্ষ কি না নির্ণয়ের প্রোগ্রাম লিখুন।” নিয়ম: সালটি ৪ দিয়ে বিভাজ্য কিন্তু ১০০ দিয়ে নয়, অথবা ৪০০ দিয়ে বিভাজ্য হলে অধিবর্ষ। নিচের প্রোগ্রাম একসাথে কয়েকটি সাল পড়ে, যাতে সব ধরনের কেস একবারে দেখা যায়:
#include <stdio.h>
int main(void)
{
int year;
/* reads years until the input ends */
while (scanf("%d", &year) == 1) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
printf("%d is a leap year\n", year);
else
printf("%d is not a leap year\n", year);
}
return 0;
}আউটপুট: 2024 is a leap year, 1900 is not a leap year, 2000 is a leap year, 2023 is not a leap year. ১৯০০ ৪ দিয়ে বিভাজ্য হলেও ১০০ দিয়ে বিভাজ্য আর ৪০০ দিয়ে নয় — তাই অধিবর্ষ নয়; ২০০০ ৪০০ দিয়ে বিভাজ্য, তাই অধিবর্ষ। শুধু year % 4 == 0 লিখলে ১৯০০-তে ভুল উত্তর আসে, আর পরীক্ষক প্রায়ই ঠিক ১৯০০ বা ২১০০ দিয়েই পরীক্ষা করেন। পরীক্ষায় সাধারণত একটি সাল পড়লেই চলে: while-এর বদলে একবার scanf. scanf সফলভাবে একটি সংখ্যা পড়লে 1 ফেরত দেয়; ইনপুট শেষ হলে আর 1 দেয় না, তাই লুপ থামে।
কাজ C5 · ফ্যাক্টোরিয়াল (সহজ)
#include <stdio.h>
int main(void)
{
int n, i;
long long fact = 1; /* 13! already overflows int */
printf("Enter n: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
fact = fact * i;
printf("%d! = %lld\n", n, fact);
return 0;
}প্রত্যাশিত আউটপুট: 5 → 5! = 120; 0 → 0! = 1 (লুপ একবারও চলে না, fact শুরু থেকেই 1 — গণিতেও 0! = 1); 20 → 20! = 2432902008176640000. int সাধারণত 32-bit, যার সর্বোচ্চ মান প্রায় ২১৪ কোটি; 13! = 6227020800 তার চেয়ে বড়, তাই int-এ overflow হয়ে ভুল সংখ্যা আসে। long long (%lld) 20! পর্যন্ত ধরে রাখতে পারে। সাধারণ ভুল: fact-এর শুরুর মান না দেওয়া বা 0 দেওয়া — তখন গুণফল আবর্জনা বা সবসময় 0.
কাজ C6 · ফিবোনাচি ধারা (মাঝারি)
#include <stdio.h>
int main(void)
{
int n, i, a = 0, b = 1, next;
printf("How many terms? ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("%d ", a);
next = a + b;
a = b;
b = next;
}
printf("\n");
return 0;
}প্রত্যাশিত আউটপুট: 10 → 0 1 1 2 3 5 8 13 21 34. প্রতিবার আগের দুটি পদের যোগফলই পরের পদ। তিনটি ভ্যারিয়েবলের “হাতবদল” (next = a + b; a = b; b = next;) ক্রম বদলালে ধারা ভুল হয় — খাতায় প্রথম চারটি ধাপের টেবিল (i, a, b, next) বানিয়ে dry run করলে ভাইভায়ও ব্যাখ্যা সহজ হয়। কোনো কোনো বই ধারা 1, 1, 2 দিয়ে শুরু করে; প্রশ্নে কোনটা চাওয়া হয়েছে দেখে নিন।
কাজ C7 · মৌলিক সংখ্যা যাচাই (মাঝারি)
নির্দেশ: “একটি সংখ্যা মৌলিক (prime) কি না নির্ণয় করুন।” নিচের প্রোগ্রাম কয়েকটি সংখ্যা একসাথে যাচাই করে:
#include <stdio.h>
int main(void)
{
int n, i, isPrime;
while (scanf("%d", &n) == 1) {
isPrime = (n >= 2); /* 0 and 1 are not prime */
for (i = 2; i * i <= n; i++) {
if (n % i == 0) {
isPrime = 0;
break;
}
}
printf("%d: %s\n", n, isPrime ? "prime" : "not prime");
}
return 0;
}আউটপুট: 1: not prime, 2: prime, 29: prime, 51: not prime, 97: prime. ৫১ দেখতে মৌলিক মনে হলেও ৩ × ১৭ — পরীক্ষকের প্রিয় ফাঁদ। লুপ i * i <= n পর্যন্ত, কারণ n-এর কোনো উৎপাদক √n-এর বড় হলে তার জোড়াটি √n-এর ছোট, আর সেটি আগেই ধরা পড়ত; ৯৭-এর জন্য শুধু ২ থেকে ৯ পর্যন্ত দেখলেই চলে। break প্রথম উৎপাদক পেলেই লুপ থামায়। পাঠ্যবইয়ের সরল সংস্করণে লুপ n/2 বা n-1 পর্যন্ত চলে — সেটিও সঠিক, শুধু ধীর; কিন্তু ১ আর ২-এর কেস আলাদা করে ভাবতে ভুলবেন না।
কাজ C8 · অঙ্কগুলোর যোগফল আর সংখ্যা উল্টানো (মাঝারি)
#include <stdio.h>
int main(void)
{
int n, digit, sum = 0, rev = 0;
printf("Enter a positive number: ");
scanf("%d", &n);
while (n > 0) {
digit = n % 10; /* last digit */
sum = sum + digit;
rev = rev * 10 + digit;
n = n / 10; /* drop the last digit */
}
printf("Sum of digits = %d\n", sum);
printf("Reverse = %d\n", rev);
return 0;
}প্রত্যাশিত আউটপুট: 1234 → Sum of digits = 10, Reverse = 4321; 1200 → যোগফল 3, আর উল্টো 21 (সামনের শূন্য সংখ্যায় থাকে না)। দুটি কৌশল মুখস্থ নয়, বুঝে রাখুন: n % 10 শেষ অঙ্ক দেয়, n / 10 শেষ অঙ্ক বাদ দেয়। এখান থেকেই প্যালিনড্রোম যাচাই (মূল সংখ্যা == উল্টো সংখ্যা?) — তবে লুপে n বদলে যায়, তাই আগে মূল মান অন্য ভ্যারিয়েবলে রেখে দিতে হয়।
কাজ C9 · অ্যারের সর্বোচ্চ, সর্বনিম্ন আর সাজানো (মাঝারি)
নির্দেশ: “ছয়টি সংখ্যার একটি অ্যারে থেকে সবচেয়ে বড় ও ছোট সংখ্যা বের করুন এবং সংখ্যাগুলো ছোট থেকে বড় ক্রমে সাজান।”
#include <stdio.h>
int main(void)
{
int a[6] = {45, 12, 78, 34, 89, 23};
int n = 6, i, j, temp, max, min;
max = min = a[0];
for (i = 1; i < n; i++) {
if (a[i] > max) max = a[i];
if (a[i] < min) min = a[i];
}
printf("Max = %d, Min = %d\n", max, min);
for (i = 0; i < n - 1; i++) /* bubble sort */
for (j = 0; j < n - 1 - i; j++)
if (a[j] > a[j + 1]) {
temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp;
}
printf("Sorted:");
for (i = 0; i < n; i++) printf(" %d", a[i]);
printf("\n");
return 0;
}আউটপুট: Max = 89, Min = 12 আর Sorted: 12 23 34 45 78 89. max আর min-এর শুরুর মান a[0] — 0 দিয়ে শুরু করলে সব সংখ্যা ঋণাত্মক হলে max ভুল হতো, আর min সবসময় 0 থাকত। Bubble sort-এ প্রতিটি বাইরের ঘূর্ণনে সবচেয়ে বড় সংখ্যাটি শেষে “ভেসে ওঠে”, তাই ভেতরের লুপ প্রতিবার একটি কম ঘর দেখে (n - 1 - i). অ্যারের index 0 থেকে n−1; লুপে i <= n লিখলে অ্যারের বাইরে পড়া হয় — compile হয়, কিন্তু ফল অনিশ্চিত। বড় থেকে ছোট সাজাতে শুধু >-কে < করুন।
কাজ C10 · তারকা আর সংখ্যার প্যাটার্ন (মাঝারি)
#include <stdio.h>
int main(void)
{
int n = 4, i, j;
for (i = 1; i <= n; i++) { /* row */
for (j = 1; j <= i; j++) /* i stars in row i */
printf("* ");
printf("\n");
}
for (i = 1; i <= n; i++) {
for (j = 1; j <= i; j++)
printf("%d ", j); /* 1 2 ... i */
printf("\n");
}
return 0;
}প্রত্যাশিত আউটপুট:
*
* *
* * *
* * * *
1
1 2
1 2 3
1 2 3 4
প্যাটার্নের কৌশল: বাইরের লুপ = সারি, ভেতরের লুপ = সেই সারিতে কতবার। প্রথমে নিজেকে প্রশ্ন করুন “সারি i-তে কয়টি চিহ্ন?” — উত্তর i হলে j <= i; উল্টো ত্রিভুজে j <= n - i + 1; পিরামিডে আগে n - iটি স্পেস, তারপর 2i − 1টি তারকা। printf("\n") ভেতরের লুপের বাইরে, বাইরের লুপের ভেতরে — জায়গা ভুল হলে সব এক লাইনে বা প্রতিটি তারকা আলাদা লাইনে চলে আসে। এটি nested loop-এর সবচেয়ে পরিচিত পরীক্ষা।
৭ · SQL — টেবিল বানানো থেকে UPDATE
ডেটাবেসের ব্যবহারিক কাজে সাধারণত একটি ছোট টেবিল বানিয়ে কয়েকটি সারি ঢুকিয়ে কিছু প্রশ্নের উত্তর কোয়েরি দিয়ে বের করতে হয়। ল্যাবে MySQL, SQLite বা অন্য কোনো ডেটাবেস থাকতে পারে; মূল SQL প্রায় একই, ছোটখাটো পার্থক্য থাকে (যেমন টাইপের নাম)। রিভিশন: পর্ব ৪১, পর্ব ৪২.
পরীক্ষকের নির্দেশ: “(S1) students নামে একটি টেবিল তৈরি করুন — roll (প্রাইমারি কি), name, stream, gpa, district. (S2) পাঁচটি সারি যোগ করুন। (S3) যাদের GPA 4.5 বা বেশি, তাদের নাম ও GPA বড় থেকে ছোট ক্রমে দেখান; আর ঢাকার শিক্ষার্থীদের তালিকা নামের ক্রমে। (S4) রোল ৫-এর GPA ভুল ছিল — 4.40 করে হালনাগাদ করুন, তারপর দেখান।”
নিচের বক্সে আসল বিষয় SQL-এর লাইনগুলো। Python এখানে শুধু বাহক: সে মেমরিতে একটি অস্থায়ী SQLite ডেটাবেস বানিয়ে আমাদের SQL চালায় আর ফল ছাপে — পর্ব ৪২-এর মতোই। উদ্ধৃতিচিহ্নের ভেতরের SQL পড়ুন, বদলে আবার চালান।
import sqlite3
db = sqlite3.connect(":memory:")
def show(title, sql):
print("--", title)
for row in db.execute(sql): print(*row, sep=" | ")
# S1: CREATE TABLE
db.execute("""CREATE TABLE students (
roll INTEGER PRIMARY KEY, name TEXT NOT NULL,
stream TEXT, gpa REAL, district TEXT)""")
# S2: INSERT
db.executescript("""
INSERT INTO students VALUES (1, 'Rahim', 'Science', 4.75, 'Dhaka');
INSERT INTO students VALUES (2, 'Karim', 'Commerce', 3.90, 'Khulna');
INSERT INTO students VALUES (3, 'Nusrat', 'Science', 5.00, 'Rajshahi');
INSERT INTO students VALUES (4, 'Sadia', 'Arts', 4.50, 'Sylhet');
INSERT INTO students VALUES (5, 'Tanvir', 'Commerce', 4.20, 'Dhaka');""")
show("all rows", "SELECT * FROM students ORDER BY roll")
# S3: SELECT + WHERE + ORDER BY
show("gpa >= 4.5", "SELECT name, gpa FROM students WHERE gpa >= 4.5 ORDER BY gpa DESC")
show("Dhaka", "SELECT roll, name FROM students WHERE district = 'Dhaka' ORDER BY name")
# S4: UPDATE, then check
db.execute("UPDATE students SET gpa = 4.40 WHERE roll = 5")
show("after UPDATE", "SELECT * FROM students WHERE roll = 5")
show("per stream", "SELECT stream, COUNT(*) FROM students GROUP BY stream ORDER BY stream")আউটপুট: প্রথমে পাঁচটি সারি (যেমন 1 | Rahim | Science | 4.75 | Dhaka; Python দশমিকের শেষের শূন্য দেখায় না, তাই 3.90 দেখায় 3.9). তারপর GPA ≥ 4.5: Nusrat | 5.0, Rahim | 4.75, Sadia | 4.5 — 4.5 নিজেও আছে, কারণ শর্ত >=. ঢাকা: 1 | Rahim, 5 | Tanvir. UPDATE-এর পরে 5 | Tanvir | Commerce | 4.4 | Dhaka. শেষে বোনাস: stream অনুযায়ী গণনা Arts | 1, Commerce | 2, Science | 2. প্রতিটি প্রশ্নে ORDER BY থাকায় ফল প্রতিবার একই ক্রমে আসে — ORDER BY না দিলে ডেটাবেস যেকোনো ক্রমে দিতে পারে।
পরীক্ষার খাতায় বা MySQL-এ লিখতে হলে টাইপগুলো একটু আলাদা হয়, যেমন roll INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gpa DECIMAL(3,2). প্রত্যাশিত টেবিল (S3-এর প্রথম প্রশ্ন):
| name | gpa |
|---|---|
| Nusrat | 5.00 |
| Rahim | 4.75 |
| Sadia | 4.50 |
সবচেয়ে বিপজ্জনক ভুল: UPDATE students SET gpa = 4.40; — WHERE ছাড়া UPDATE সব সারি বদলে দেয়; DELETE-এও একই কথা। অভ্যাস করুন: আগে SELECT * FROM students WHERE roll = 5; চালিয়ে দেখুন কোন সারি আসে, তারপর একই WHERE দিয়ে UPDATE. আরও ভুল: লেখার মান উদ্ধৃতিচিহ্ন ছাড়া (WHERE district = Dhaka); WHERE-এর আগে ORDER BY; একই প্রাইমারি কি দুবার INSERT (error আসে — এটাই প্রাইমারি কি-র কাজ); প্রতিটি কমান্ডের শেষে সেমিকোলন ভুলে যাওয়া, ফলে কয়েকটি কমান্ড একসাথে চালাতে গেলে error.
৮ · পরীক্ষার দিন — চেকলিস্ট, ভাইভা আর বিপদে করণীয়
অনেকে কাজ জেনেও ব্যবহারিক পরীক্ষায় নম্বর হারান ছোট ছোট কারণে: ভুল ফোল্ডারে সেভ, শেষ মুহূর্তে কম্পিউটার আটকে যাওয়া, একটি কাজে পুরো সময় খরচ। এগুলো জ্ঞানের নয়, অভ্যাসের ব্যাপার — আর অভ্যাস আগে থেকেই তৈরি করা যায়।
সময়ের একটি সহজ ভাগ
| ধাপ | মোট সময়ের প্রায় | যা করবেন |
|---|---|---|
| পড়া ও পরিকল্পনা | ১০% | পুরো প্রশ্ন পড়ুন, প্রতিটি কাজে কত নম্বর দেখুন, সহজ কাজ আগে চিহ্নিত করুন; ফাইলের নাম ও ফোল্ডার খাতায় লিখে রাখুন |
| মূল কাজ | ৭০% | প্রতিটি কাজের “অবশ্যই লাগবে” অংশ আগে — সূত্র, ট্যাগ, চলমান প্রোগ্রাম; সাজসজ্জা পরে |
| যাচাই | ১৫% | নম্বর পাওয়ার তালিকা ধরে মিলানো, এক-দুটি ফল হাতে হিসাব, প্রোগ্রাম দুটি ইনপুটে চালানো |
| শেষ সেভ ও জমা | ৫% | সব ফাইল সঠিক নামে ও ফোল্ডারে কি না দেখা, ফাইল খুলে একবার নিশ্চিত হওয়া |
পরীক্ষার দিনের চেকলিস্ট
ব্যবহারিকের ভাইভায় প্রায়ই আসে এমন প্রশ্ন
ভাইভায় পরীক্ষক সাধারণত আপনার নিজের করা কাজ থেকেই প্রশ্ন করেন। উত্তর এক-দুই বাক্যে, নিজের কাজের উদাহরণ দেখিয়ে দিন। ভাইভার আরও প্রশ্নের জন্য পর্ব ৫৪ দেখুন।
| প্রশ্ন | এক লাইনের উত্তর |
|---|---|
| Mail merge কেন ব্যবহার করলেন? | একই নকশার চিঠি বা প্রবেশপত্র তালিকার প্রত্যেকের নামে একবারে বানাতে। |
| Header আর footer কী? | প্রতিটি পাতার ওপরে আর নিচে একই রকম লেখা, যেমন প্রতিষ্ঠানের নাম বা পাতার নম্বর। |
| সূচিপত্র নিজে থেকে এলো কীভাবে? | শিরোনামগুলোতে Heading style দিয়েছি; Word সেগুলো থেকেই সূচিপত্র বানায়। |
| Relative আর absolute reference-এর পার্থক্য? | Relative কপি করলে বদলায় (B2 → B3), absolute $ দিয়ে আটকানো থাকে ($F$1). |
| VLOOKUP-এর শেষে FALSE কেন? | হুবহু মিল খোঁজার জন্য; না দিলে আনুমানিক মিল হয়ে ভুল ফল আসতে পারে। |
| এই চার্টটি কেন বেছে নিলেন? | কয়েকজনের মান তুলনায় column চার্ট সবচেয়ে সহজে পড়া যায়; অংশ-অনুপাতে pie, সময়ের ধারায় line. |
| Slide Master কী? | সব স্লাইডের ফন্ট, রং, লোগো আর footer এক জায়গা থেকে ঠিক করার মূল নকশা। |
| HTML-এর পূর্ণরূপ? এটি কি প্রোগ্রামিং ভাষা? | HyperText Markup Language — এটি মার্কআপ ভাষা, লেখার গঠন বোঝায়; এতে শর্ত বা লুপ নেই। |
| Tag আর attribute-এর পার্থক্য? | Tag উপাদানের ধরন বলে (<img>), attribute তার বাড়তি তথ্য দেয় (src, alt). |
<br>-এর বন্ধ ট্যাগ নেই কেন? | এটি খালি (empty) ট্যাগ — ভেতরে কোনো লেখা রাখে না, শুধু লাইন ভাঙে। |
| rowspan আর colspan কী? | একটি ঘর কয়টি সারি (rowspan) বা কয়টি কলাম (colspan) জুড়ে থাকবে। |
| alt কেন দিলেন? | ছবি না এলে বা screen reader-এর জন্য ছবির জায়গায় এই লেখা দেখানো/পড়া হয়। |
#include <stdio.h> কেন? | printf, scanf-এর মতো ইনপুট-আউটপুট ফাংশনের ঘোষণা এই header ফাইলে থাকে। |
= আর ==-এর পার্থক্য? | = মান বসায়, == দুটি মান সমান কি না তুলনা করে। |
scanf-এ & কেন? | & ভ্যারিয়েবলের মেমরি-ঠিকানা দেয়, যাতে scanf সেখানে ইনপুটের মান রাখতে পারে। |
%d আর %f? | %d পূর্ণসংখ্যা (int), %f দশমিক সংখ্যা (float) দেখায় বা পড়ে। |
| Compiler কী করে? | পুরো সোর্স কোড একবারে মেশিনের ভাষায় অনুবাদ করে চালানো যায় এমন ফাইল বানায়, আর ভুল থাকলে error দেখায়। |
| Primary key কী? | যে কলামের মান প্রতিটি সারিতে আলাদা ও খালি নয় — সারিটিকে অনন্যভাবে চেনায়, যেমন রোল। |
| WHERE ছাড়া UPDATE দিলে কী হয়? | টেবিলের সব সারি বদলে যায়। |
কৌশলের প্রশ্ন — বিপদে পড়লে কী করবেন
প্রতিটি প্রশ্ন আগে নিজে ভাবুন, তারপর খুলুন।
প্র ০১পরীক্ষার মাঝে Excel-এর ঘরে #NAME?, #VALUE! বা ##### দেখা দিলে কী করবেন? (মাঝারি)
প্রথম কথা: আতঙ্কিত হবেন না, আর সূত্র মুছে হাতে সংখ্যা লিখে দেবেন না — তাতে নম্বর আরও কমে। প্রতিটি error value আসলে একটি সংকেত, যা বলে দেয় কোথায় খুঁজতে হবে। ঘরটিতে ক্লিক করে ওপরের formula bar-এ সূত্রটি পড়ুন, তারপর বার্তা অনুযায়ী এগোন:
#####— কোনো ভুল নেই; কলাম সরু, সংখ্যাটি জায়গায় আঁটছে না। কলামের শিরোনামের ডান কিনারায় দুবার ক্লিক করুন।#NAME?— Excel কোনো নাম চিনছে না: ফাংশনের বানান ভুল (=AVERAG(), লেখা উদ্ধৃতিচিহ্ন ছাড়া (=IF(G2>=80,A+,…)), অথবা পুরোনো Excel-এ নতুন ফাংশন (XLOOKUP, IFS).#VALUE!— হিসাবের মধ্যে লেখা ঢুকেছে, যেমন নম্বরের ঘরে ভুলে স্পেস বা “৭৮” বাংলা অঙ্কে টাইপ। বাংলা অঙ্ক Excel অনেক সময় সংখ্যা হিসেবে নেয় না — নম্বরের ঘরে ইংরেজি অঙ্ক দিন।#DIV/0!— শূন্য বা খালি ঘর দিয়ে ভাগ। ভাগের ঘরটি দেখুন।#REF!— সূত্র যে ঘরকে দেখাচ্ছিল তা মুছে গেছে, বা VLOOKUP-এর কলাম নম্বর পরিসরের বাইরে।#N/A— খোঁজার মান পাওয়া যায়নি (VLOOKUP/XLOOKUP). বানান, বাড়তি স্পেস আর সংখ্যা-বনাম-লেখা মিলিয়ে দেখুন।
বড় সূত্রে কোন অংশে ভুল ধরতে না পারলে Formulas → Evaluate Formula চাপুন — Excel ধাপে ধাপে দেখায় সূত্রের কোন অংশ কী মান দিচ্ছে। অথবা সূত্রটি ভেঙে পাশের ফাঁকা ঘরে ছোট ছোট অংশ আলাদা করে লিখে দেখুন (যেমন শুধু =MIN(C2:E2)). IFERROR দিয়ে error লুকানো যায়, কিন্তু কারণ না বুঝে লুকালে ভুল ফল চাপা পড়ে — পরীক্ষায় শুধু তখনই দিন, যখন নির্দেশে বলা আছে (“না পেলে ‘পাওয়া যায়নি’ দেখান”)।
সময়ের হিসাবও মাথায় রাখুন: একটি ঘরে পাঁচ মিনিটের বেশি আটকে থাকলে সেটিতে একটি ছোট মন্তব্য রেখে পরের কাজে যান, শেষে ফিরে আসুন। বাকি কাজগুলোর নম্বর একটি ঘরের চেয়ে বেশি।
মূল উপলব্ধি: error মানে Excel আপনাকে ঠিকানা দিচ্ছে — বার্তাটি পড়ুন, formula bar দেখুন, দরকারে Evaluate Formula; সূত্র মুছে হাতে সংখ্যা লিখবেন না।
প্র ০২এত HTML ট্যাগ আর attribute মনে রাখবেন কীভাবে? (সহজ)
মুখস্থের তালিকা হিসেবে নয়, পরিবার হিসেবে মনে রাখুন। HSC স্তরের প্রায় সব কাজ ছয়টি পরিবারে পড়ে: কাঠামো (html, head, title, meta, body), লেখা (h1–h6, p, br, hr, b, i, u, sub, sup), তালিকা (ol, ul, li, dl, dt, dd), লিংক ও মিডিয়া (a, img), টেবিল (table, caption, tr, th, td) আর ফর্ম (form, label, input, select, option, textarea). একটি পরিবারের একটি মনে পড়লে বাকিগুলো সাথে আসে।
দ্বিতীয় কৌশল: নামের অর্থ জানুন — তখন আর মুখস্থ লাগে না। ol = ordered list, ul = unordered list, li = list item, tr = table row, td = table data, th = table header, href = hypertext reference, src = source, alt = alternative text. rowspan/colspan = row/column span (কয়টি সারি বা কলাম জুড়ে)।
তৃতীয়: খালি ট্যাগের ছোট তালিকাটি আলাদা মনে রাখুন — br, hr, img, input, meta. বাকি প্রায় সব জোড়া ট্যাগ। আর বন্ধ করার নিয়ম একটাই: যেটা শেষে খুলেছেন, সেটা আগে বন্ধ — <b><i>…</i></b>, ঠিক যেমন টিফিন বক্সের ভেতরের বাটিটা আগে বন্ধ করে তারপর বক্সের ঢাকনা।
চতুর্থ এবং সবচেয়ে কার্যকর: হাতে লিখুন। প্রতিদিন একটি ছোট পেজ দেখে নয়, মনে করে লিখুন — আজ তালিকা, কাল টেবিল, পরশু ফর্ম। লিখে ব্রাউজারে খুলুন; না মিললে খুঁজে বের করুন কেন। এক-দুই সপ্তাহে কাঠামোটা আঙুলে চলে আসে। লেখার পরে W3C-র অনলাইন HTML validator-এ পেস্ট করলে বন্ধ না হওয়া ট্যাগ বা ভুল জায়গার ট্যাগ ধরিয়ে দেয় — অনুশীলনের সময় দারুণ সহায়ক।
মূল উপলব্ধি: ছয়টি পরিবার, নামের অর্থ, খালি ট্যাগের ছোট তালিকা আর প্রতিদিন হাতে লেখা — মুখস্থের চেয়ে অনেক টেকসই।
প্র ০৩C প্রোগ্রাম compile হচ্ছে না, error-এর তালিকা লম্বা — দ্রুত কীভাবে ঠিক করবেন? (মাঝারি)
নিয়ম এক: সবার আগে প্রথম error. একটি সেমিকোলন বা বন্ধনী বাদ পড়লে compiler পরের অনেক লাইনকেও ভুল বোঝে, আর দশটি error দেখায়। প্রথমটি ঠিক করে আবার compile করুন — প্রায়ই বাকিগুলো নিজে থেকেই চলে যায়।
নিয়ম দুই: লাইন নম্বর দেখুন, কিন্তু আগের লাইনও দেখুন। সেমিকোলন বাদ পড়লে error সাধারণত দেখায় পরের লাইনে (“expected ';' before …”)। কয়েকটি পরিচিত বার্তা:
expected ';' before …— আগের লাইনের শেষে;নেই।'totl' undeclared— ভ্যারিয়েবলের বানান ভুল, বা ঘোষণা করতে ভুলে গেছেন।implicit declaration of function 'printf'—#include <stdio.h>নেই, বাPrintfবড় হাতের P (C বড়-ছোট হাতের অক্ষর আলাদা ধরে)।expected declaration or statement at end of input— কোনো{-এর জোড়া}নেই। IDE-তে বন্ধনীতে কার্সর রাখলে জোড়াটি হাইলাইট হয়।lvalue required as left operand of assignment— তুলনার জায়গায়=(যেমনif (n % 2 = 0)).
নিয়ম তিন: warning-কেও গুরুত্ব দিন। scanf("%d", n)-এ & ভুলে গেলে প্রোগ্রাম compile হয়ে যেতে পারে, কিন্তু চালালে ক্র্যাশ বা আবর্জনা মান; ভালো compiler তখন format নিয়ে warning দেয়। এগুলো syntax error নয়, প্রায় logic error-এর কাছাকাছি — প্রোগ্রাম চলে, ফল ভুল।
নিয়ম চার: ছোট ধাপে লিখুন। পুরো প্রোগ্রাম লিখে শেষে compile না করে প্রথমে শুধু ইনপুট আর একটি printf লিখে compile করুন, তারপর একটু একটু করে যোগ করুন। পরীক্ষার চাপে এতে সময় বাঁচে, কারণ ভুল সবসময় শেষ যোগ করা অংশে। আর পুরোনো Turbo C-এর অভ্যাস (void main(), conio.h, getch()) আধুনিক GCC-ভিত্তিক IDE-তে warning বা error দিতে পারে — int main(void) আর return 0; সবখানে চলে।
মূল উপলব্ধি: প্রথম error আগে, আগের লাইনও দেখুন, warning উপেক্ষা নয়, আর ছোট ধাপে compile — compile error ঠিক করা মুখস্থ নয়, পদ্ধতি।
প্র ০৪পরীক্ষার মাঝে কম্পিউটার আটকে গেল, বিদ্যুৎ চলে গেল বা ফাইল খুঁজে পাচ্ছেন না — কী করবেন? (সহজ)
প্রথম কাজ: সাথে সাথে পরীক্ষককে জানান, নিজে নিজে কম্পিউটার বন্ধ-চালু বা অন্য কম্পিউটারে বসবেন না। পরীক্ষক সময় যোগ করবেন কি না, অন্য কম্পিউটার দেবেন কি না — এগুলো তাঁর সিদ্ধান্ত, আর ঘটনাটি তাঁর জানা থাকা আপনার জন্যই নিরাপদ।
প্রোগ্রাম সাড়া না দিলে কয়েক সেকেন্ড অপেক্ষা করুন; অনেক সময় এটি শুধু ধীর। পুরোপুরি আটকে গেলে পরীক্ষকের অনুমতিতে Task Manager (Ctrl+Shift+Esc, পর্ব ০৬) থেকে শুধু সেই প্রোগ্রামটি বন্ধ করা যায়। Word বা Excel আবার খুললে বাঁ পাশে “Document Recovery” দেখাতে পারে — সেখান থেকে AutoRecover-এর শেষ কপিটি খুলে সাথে সাথে নতুন নামে সেভ করুন। AutoSave শুধু OneDrive-এ রাখা ফাইলে কাজ করে; পরীক্ষার কম্পিউটারে সাধারণত AutoRecover-ই ভরসা, আর তা কয়েক মিনিট পরপর কপি রাখে — তাই নিজের Ctrl+S-ই সবচেয়ে বড় বীমা।
ফাইল খুঁজে না পেলে: Word/Excel-এ File → Open → Recent-এ শেষ খোলা ফাইলগুলো থাকে; ফাইলে ডান-ক্লিক করে “Open file location” পথ দেখায়। File Explorer-এর সার্চ বক্সে নামের অংশ লিখেও খোঁজা যায়। এজন্যই শুরুতে খাতায় ফাইলের নাম আর ফোল্ডার লিখে রাখার পরামর্শ।
C প্রোগ্রামের ক্ষেত্রে একটি বাড়তি নিরাপত্তা: অ্যালগরিদম বা মূল কোড খাতায় আগে লিখে রাখলে (যেখানে খাতায় লেখার নিয়ম আছে) কম্পিউটারের দুর্ঘটনাতেও আপনার কাজের প্রমাণ থাকে। আর পুরো ঘটনায় শান্ত থাকা জরুরি — পরীক্ষকেরা এমন ঘটনা আগেও দেখেছেন, আর শান্তভাবে সমস্যা জানানোও এক ধরনের পেশাদারিত্ব, যা চাকরির পরীক্ষায় চোখে পড়ে।
মূল উপলব্ধি: নিজে সমাধানের চেষ্টার আগে পরীক্ষককে জানান; ঘন ঘন সেভ আর শুরুতে লিখে রাখা নাম-ফোল্ডারই দুর্ঘটনার সেরা প্রস্তুতি।
প্র ০৫বাংলা লেখা বাক্স, ভাঙা অক্ষর বা অদ্ভুত চিহ্নে দেখাচ্ছে — Word আর HTML-এ কী করবেন? (মাঝারি)
কারণ প্রায় সবসময় একটি: লেখার এনকোডিং আর ফন্ট মিলছে না (পর্ব ০৭, ১৮)। Unicode-এ প্রতিটি বাংলা অক্ষরের একটি নির্দিষ্ট নম্বর আছে, তাই Unicode ফন্টে যেকোনো কম্পিউটারে একই লেখা দেখায়। পুরোনো ANSI পদ্ধতিতে (যেমন SutonnyMJ-এর মতো ফন্ট) বাংলা অক্ষরগুলো আসলে ইংরেজি অক্ষরের জায়গায় বসানো থাকে — সেই ফন্ট না থাকলে লেখা ইংরেজি আবর্জনা দেখায়।
Word-এ: লেখায় বাক্স (□) দেখালে ফন্টে বাংলা অক্ষরই নেই — লেখা বেছে Nikosh, Kalpurush বা SolaimanLipi-র মতো Unicode বাংলা ফন্ট দিন। লেখা ইংরেজি অক্ষরের জঞ্জাল দেখালে সেটি সম্ভবত ANSI-তে টাইপ করা; তখন সেই ANSI ফন্ট দিলেই ঠিক দেখায়, অথবা বিজয়ের মতো সফটওয়্যারের রূপান্তর (converter) সুবিধা দিয়ে Unicode-এ বদলানো যায়। পরীক্ষার নির্দেশে কোন পদ্ধতি চাওয়া হয়েছে, আগে দেখে নিন।
HTML-এ: দুটি জিনিস একসাথে লাগে। এক, <head>-এ <meta charset="UTF-8">; দুই, ফাইলটি আসলেই UTF-8-এ সেভ করা (Notepad-এ Save As-এর Encoding). একটি ঠিক থাকলেও অন্যটি ভুল হলে “অ”-এর মতো অদ্ভুত চিহ্ন আসে — একে বলে mojibake. আধুনিক Windows-এর Notepad সাধারণত ডিফল্টে UTF-8-এই সেভ করে, তবু পরীক্ষার কম্পিউটারে একবার দেখে নেওয়া ভালো।
যুক্তবর্ণ ভেঙে গেলে (যেমন “ক্ষ” আলাদা হয়ে ক্ষ দেখায়): ফন্টটি হয়তো ঠিকমতো যুক্তবর্ণ সাজাতে পারে না, অথবা লেখার মাঝে অদৃশ্য কোনো চিহ্ন ঢুকেছে। অন্য Unicode ফন্ট দিয়ে দেখুন; না হলে শব্দটি মুছে আবার টাইপ করুন।
মূল উপলব্ধি: বাংলার সমস্যার দুই চাবি — Unicode ফন্ট আর UTF-8; Word-এ ফন্ট বদলান, HTML-এ meta charset ও সেভের encoding দুটোই মেলান।
প্র ০৬সময় প্রায় শেষ, কাজ অর্ধেক — কীভাবে সবচেয়ে বেশি নম্বর বাঁচাবেন? (মাঝারি)
ব্যবহারিক পরীক্ষায় নম্বর সাধারণত অংশে অংশে আসে — সূত্রের জন্য কিছু, ফরম্যাটের জন্য কিছু, চলমান প্রোগ্রামের জন্য কিছু, ব্যাখ্যার জন্য কিছু। তাই “সব বা কিছুই না” ভাবনা ছাড়ুন। শেষ ১০–১৫ মিনিটে নিয়ম একটাই: যেটুকু করেছেন, তা দেখানোর মতো অবস্থায় আনুন.
প্রথমে সেভ। সব খোলা ফাইল এখনই সঠিক নামে সেভ করুন — না-সেভ করা নিখুঁত কাজের নম্বর শূন্য।
C-তে: অর্ধেক লেখা প্রোগ্রাম যদি compile না হয়, যে অংশ চলে না সেটুকু /* … */ দিয়ে মন্তব্যে রেখে দিন, যাতে বাকিটা compile হয়ে চলে। চলমান অর্ধেক প্রোগ্রাম প্রায়ই compile না হওয়া পুরো প্রোগ্রামের চেয়ে বেশি নম্বর পায়। মন্তব্যে এক লাইনে লিখে দিন বাকি অংশে কী করতে চেয়েছিলেন — পরীক্ষক আপনার ভাবনা দেখতে পান।
Excel-এ: সব সারিতে সূত্র কপি হয়েছে কি না দেখুন (একটি টানেই হয়); সাজসজ্জা (রং, border) বাদ দিলেও চলে, কিন্তু সূত্র আর ফল নয়। Word-এ: লেখা আর মূল ফরম্যাট (শিরোনাম, টেবিল, পাতার নম্বর) আগে, ছবি-রং পরে। HTML-এ: সব ট্যাগ বন্ধ হয়েছে কি না দেখে ব্রাউজারে একবার খুলুন।
পরের বারের জন্য শিক্ষা: পরিকল্পনার সময় প্রতিটি কাজের পাশে খাতায় সময় লিখে রাখুন (যেমন “E1 — ২০ মিনিট”), আর সেই সময় পেরোলে কাজটি “যথেষ্ট ভালো” অবস্থায় রেখে পরেরটিতে যান। অনুশীলনের সময় ঘড়ি ধরে পুরো একটি নমুনা পরীক্ষা দিলে এই বোধ তৈরি হয় — এই পাতার যেকোনো তিনটি কাজ নিয়ে এক ঘণ্টার একটি “মক টেস্ট” দিয়ে দেখুন।
মূল উপলব্ধি: আগে সেভ, তারপর যা আছে তা চলমান ও দেখানোর মতো করুন — নম্বর আসে অংশে অংশে, তাই অসম্পূর্ণ কিন্তু কাজ করা জিনিসই জমা দেওয়ার মতো।
৯ · AI দিয়ে অনুশীলন — কিন্তু পরীক্ষার হলে নয়
ব্যবহারিক পরীক্ষার কক্ষে AI টুল, ইন্টারনেট বা মোবাইল ব্যবহার সাধারণত সম্পূর্ণ নিষিদ্ধ — এটি অসদুপায় হিসেবে গণ্য হতে পারে, আর তার ফল পুরো পরীক্ষা বাতিল পর্যন্ত গড়াতে পারে। চাকরির দক্ষতা পরীক্ষাতেও একই কথা। তাছাড়া পরীক্ষাটি মাপছে আপনার হাতের দক্ষতা; চাকরিতে গিয়ে প্রতিদিনের কাজ আপনাকেই করতে হবে।
অনুশীলনের সময় অবশ্য AI chatbot হতে পারে একজন ধৈর্যশীল প্রশ্নকর্তা: নতুন নতুন ডেটা দিয়ে কাজ বানিয়ে দেবে, আপনার সমাধান মিলিয়ে দেখবে, ভুলের কারণ ব্যাখ্যা করবে। শর্ত একটাই — সমাধান নয়, কাজ আর মূল্যায়ন চাইবেন। নিচের prompt দিয়ে একটি মক ব্যবহারিক পরীক্ষা চালান (পর্ব ৪৭-এ AI-এর নিরাপদ ব্যবহার দেখেছেন):
AI-কে বলা হয়েছে শুধু কাজ দিতে, সমাধান লুকিয়ে রাখতে, আর আপনার উত্তর কঠোরভাবে মূল্যায়ন করতে:
AI-এর বানানো কাজ আর তার “প্রত্যাশিত উত্তর” — দুটোই যাচাই করে নিতে হয়। AI কখনো কখনো আত্মবিশ্বাসের সাথে ভুল বলে (hallucination): ভুল হিসাবের ফল, এমন মেনুর পথ যা আপনার Office সংস্করণে নেই, পুরোনো ও বাদ পড়া HTML ট্যাগ, বা Turbo C-যুগের void main(). সবচেয়ে ভালো যাচাই হলো চালিয়ে দেখা: Excel-এর সূত্র সত্যিকারের Excel-এ, HTML ব্রাউজারে, C কোড compiler-এ।
AI দিয়ে অনুশীলনের চেকলিস্ট
১০ · কোর্স সমাপ্তি — ৫৫টি পর্বের পরে আপনি কোথায়
এটি ৮টি মডিউল আর ৫৫টি পর্বের এই কোর্সের শেষ পর্ব। একবার পেছনে তাকান। পর্ব ০১-এ প্রশ্ন ছিল, “কম্পিউটার আসলে কী?” — ইনপুট, প্রসেস, আউটপুট আর স্টোরেজ। আজ আপনি একটি ফলাফল শিট সূত্র দিয়ে বানাতে পারেন, rowspan-ওয়ালা টেবিলের গ্রিড হিসাব করতে পারেন, একটি C প্রোগ্রাম লিখে, compile করে, তার ভুল ধরতে পারেন — আর জানেন, এই সবকিছুর নিচে ট্রানজিস্টর থেকে অপারেটিং সিস্টেম পর্যন্ত কী কী স্তর কাজ করছে। আন্তরিক অভিনন্দন — এটা সত্যিই বড় অর্জন।
এখন আপনি যা পারেন
- কম্পিউটারের সাথে পরিচয় (পর্ব ০১–০৮): হার্ডওয়্যার, মেমরি ও স্টোরেজ, সফটওয়্যার ও লাইসেন্স, অপারেটিং সিস্টেম ব্যবহার, বাংলা টাইপিং ও Unicode, কম্পিউটার কেনা ও যত্ন।
- অফিস ও দৈনন্দিন ডিজিটাল দক্ষতা (পর্ব ০৯–১৫): Word, Excel, PowerPoint, ইন্টারনেট ও ইমেইল, ক্লাউডে একসাথে কাজ, ই-সেবা ও মোবাইল ব্যাংকিং।
- সংখ্যা পদ্ধতি ও ডিজিটাল লজিক (পর্ব ১৬–২২): বাইনারি থেকে হেক্সাডেসিমাল, 2's complement, কোড ও প্যারিটি, বুলিয়ান অ্যালজেব্রা, লজিক গেট, অ্যাডার ও ফ্লিপ-ফ্লপ।
- কম্পিউটার ভেতর থেকে (পর্ব ২৩–২৯): বিমূর্ততার স্তর, CPU-র কাজের চক্র, cache ও virtual memory, process ও file system, boot, মিডিয়া ডেটা আর কমান্ড লাইন।
- যোগাযোগ ও নেটওয়ার্ক (পর্ব ৩০–৩৫): ডেটা কমিউনিকেশন, Wi-Fi থেকে 5G, LAN-WAN ও টপোলজি, IP-DNS-HTTP, ডোমেইন-হোস্টিং আর ক্লাউড।
- ওয়েব, প্রোগ্রামিং ও ডেটাবেস (পর্ব ৩৬–৪২): HTML, অ্যালগরিদম ও ফ্লোচার্ট, C প্রোগ্রামিং, ডেটাবেস ও SQL.
- নিরাপত্তা, সমাজ ও আধুনিক প্রযুক্তি (পর্ব ৪৩–৫০): সাইবার নিরাপত্তা, এনক্রিপশন, গোপনীয়তা ও আইন, AI ও আধুনিক প্রযুক্তি, ফ্রিল্যান্সিং, সমস্যা সমাধান আর একটি অফিসের পুরো IT পরিকল্পনার ক্যাপস্টোন।
- পরীক্ষা প্রস্তুতি (পর্ব ৫১–৫৫): SSC-HSC কৌশল, চাকরির পরীক্ষা, MCQ প্রশ্নব্যাংক, লিখিত ও ভাইভা, আর এই পর্বের ব্যবহারিক কাজ।
পরীক্ষা ও সার্টিফিকেট
লগইন করলে ড্যাশবোর্ডে শেখার সাতটি মডিউলের (পর্ব ০১–৫০) প্রতিটির একটি টেস্ট আর একটি ফাইনাল পরীক্ষা পাবেন। শেখার এই সব পর্ব পড়া শেষ করে ফাইনালে ৬০% বা তার বেশি পেলে একটি ফ্রি কোর্স-সমাপ্তির সার্টিফিকেট পাবেন। প্রতিটি পর্বের “পড়েছি” বোতাম চাপা থাকলে আপনার অগ্রগতি সেখানে দেখা যাবে — অগ্রগতি সেভ হয় শুধু লগইন করা অবস্থায়। ফাইনালের আগে পর্ব ৫৩-এর MCQ প্রশ্নব্যাংক একবার ঘুরে আসুন। আর যে পর্ব দুর্বল লাগে, কোর্স হোম থেকে সেটি আবার পড়ুন।
এরপর কোন পথে
এই কোর্স ছিল পুরো কম্পিউটার জগতের একটি মানচিত্র। এবার যে অংশ আপনাকে সবচেয়ে টেনেছে, সেখানে গভীরে যান — ABCL TECH-এর প্রতিটি কোর্সও বাংলায়, শুরু থেকে:
C প্রোগ্রামিং · Python
পর্ব ৩৮–৪০-এর পরের ধাপ: পয়েন্টার, স্ট্রাকচার, ফাইল — বা Python দিয়ে দ্রুত কাজের প্রোগ্রাম, ডেটা আর অটোমেশন।
HTML ও CSS · JavaScript
পর্ব ৩৬–৩৭-এর পরের ধাপ: সুন্দর, মোবাইলে মানানসই আর ইন্টারঅ্যাকটিভ ওয়েবসাইট — ফ্রিল্যান্সিংয়ের সবচেয়ে চাহিদার দক্ষতাগুলোর একটি।
কম্পিউটার নেটওয়ার্ক · অপারেটিং সিস্টেম
পর্ব ২৬ আর ৩০–৩৫-এর পরের ধাপ: প্রোটোকল, রাউটিং, process, memory management — সিস্টেম আর নেটওয়ার্ক প্রশাসনের ভিত্তি।
DBMS ও SQL · সাইবার নিরাপত্তা
পর্ব ৪১–৪৪-এর পরের ধাপ: JOIN, normalization, transaction — আর নিজের ও প্রতিষ্ঠানের তথ্য রক্ষার আধুনিক কৌশল।
আরও গভীরে: যাঁরা জানতে চান Excel-এর একটি সূত্র বা আপনার C প্রোগ্রাম ঠিক কীভাবে CPU-র নির্দেশে পরিণত হয়, তাঁদের জন্য Computer Architecture কোর্সটি পর্ব ২৩–২৫-এর সরাসরি পরের ধাপ — রেজিস্টার, পাইপলাইন আর মেমরি সিস্টেমের ভেতরের নকশা। এটি না পড়লেও এই কোর্সের কোনো অংশ বুঝতে অসুবিধা হবে না।
বোঝা, যাচাই করা আর নিজের হাতে করে দেখানো — এগুলোই আপনাকে দক্ষ বানায়।
৫৫টি পর্ব শেষ করা সহজ কাজ নয় — আপনার ধৈর্য আর পরিশ্রমকে আন্তরিক অভিনন্দন। প্রথম “ফাইল কোথায় সেভ হলো?”, প্রথম ভাঙা বাংলা ফন্ট, প্রথম #VALUE!, প্রথম “expected ';'” — সেগুলোর সামনে যে বিভ্রান্তি ছিল, তা-ই আজ আপনার অভিজ্ঞতা। ব্যবহারিক পরীক্ষার আগে এই পাতার কাজগুলো অন্তত একবার করে নিজের হাতে করুন, আর পরিবারের কাউকে বা বন্ধুকে একটি কাজ শিখিয়ে দিন — শেখানোই শেখার সবচেয়ে পাকা পরীক্ষা। শুভকামনা।
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমC প্রোগ্রামের ব্যবহারিক পরীক্ষায় প্রশ্ন পাওয়া থেকে জমা পর্যন্ত ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- 📖 প্রশ্ন পড়ে ইনপুট, আউটপুট আর শর্ত বোঝা
- 📝 খাতায় অ্যালগরিদম বা ফ্লোচার্ট লেখা
- ⌨️ নির্দেশিত নামে ফাইল সেভ করে কোড লেখা
- ⚙️ compile করে প্রথম error থেকে একে একে ঠিক করা
- 🔍 দুটি ভিন্ন ইনপুটে চালিয়ে আউটপুট মিলিয়ে দেখা
- 💾 শেষবার সেভ করে পরীক্ষককে চালিয়ে দেখানো
(সহজ) Excel-এ C2 ঘরের সূত্র =B2*$F$1 নিচের C3 ঘরে কপি করলে C3-এর সূত্র কী হবে?
- =B2*$F$1
- =B3*$F$1
- =B3*$F$2
- =C3*$F$1
(সহজ) HTML টেবিলে একটি ঘরকে পাশাপাশি দুটি কলাম জুড়ে বিস্তৃত করতে কোনটি লিখতে হয়?
- <td rowspan="2">
- <td merge="2">
- <td colspan="2">
- <td width="2">
(মাঝারি) C-তে int sum = 194; float avg = sum / 3; লিখে printf("%.2f", avg) চালালে কী ছাপা হয়?
- 64.00
- 64.67
- 65.00
- compile error
(মাঝারি) Word-এ References → Table of Contents দিয়ে স্বয়ংক্রিয় সূচিপত্র বানালে শিরোনামগুলো তাতে আসার জন্য কী করা জরুরি?
- শিরোনাম বোল্ড ও বড় ফন্টে লেখা
- শিরোনামের নিচে underline দেওয়া
- প্রতিটি পাতায় header বসানো
- শিরোনামে Heading 1 / Heading 2 style দেওয়া
(মাঝারি) Excel-এ I2:I6 ঘরে যথাক্রমে Pass, Pass, Fail, Pass, Pass লেখা থাকলে =COUNTIF(I2:I6,"Pass") কী ফল দেবে?
- 5
- 4
- 1
- #VALUE!
(মাঝারি) C-তে year নামের সাল অধিবর্ষ কি না যাচাইয়ের সঠিক শর্ত কোনটি?
- year % 4 == 0
- year % 4 == 0 && year % 100 != 0
- (year % 4 == 0 && year % 100 != 0) || year % 400 == 0
- year % 4 == 0 && year % 100 != 0 && year % 400 == 0
(সহজ) SQL-এ students টেবিলের রোল ৫-এর gpa-র ভুল মান 4.40 করে সংশোধনের সঠিক কমান্ড কোনটি?
- UPDATE students SET gpa = 4.40 WHERE roll = 5;
- INSERT INTO students (roll, gpa) VALUES (5, 4.40);
- UPDATE students SET gpa = 4.40;
- SELECT students SET gpa = 4.40 WHERE roll = 5;
(কঠিন) Excel-এ A2:D6 পরিসরে চারটি কলাম আছে। =VLOOKUP(103,A2:D6,5,FALSE) কী ফল দেবে?
- #N/A
- E কলামের মান
- 0
- #REF!
(সহজ) টাইপিং টেস্টে ৫ মিনিটে স্পেসসহ ১০০০টি অক্ষর টাইপ করলে, ৫ অক্ষর = ১ শব্দ ধরে Gross WPM কত?
- 200
- 40
- মিনিটে ২০০ অক্ষর মানে 200 WPM
- 8
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব শব্দ এখানে একসাথে:
মনে রাখুন
- ব্যবহারিকে নম্বর আসে দেখা যায় এমন জিনিস থেকে — নির্দেশমতো নামের ফাইল, সঠিক টুলে ফরম্যাট, সূত্র থেকে আসা ফল, চলমান প্রোগ্রাম আর পরিষ্কার ব্যাখ্যা।
- Word-এ স্পেস আর Enter নয়, টুল: margin, indent, page break, header-footer, merge cells, Heading style ও স্বয়ংক্রিয় সূচিপত্র, Insert Merge Field.
- Excel-এ একবার সূত্র, তারপর fill handle; স্থির ঘরে
$; গ্রেডে বড় থেকে ছোট শর্ত আর আগে ফেল যাচাই; VLOOKUP-এ FALSE; জমার আগে Ctrl+`. - HTML-এ খালি ট্যাগ চিনুন, বাকিগুলো উল্টো ক্রমে বন্ধ করুন; alt, href, colspan × rowspan-এর গ্রিড হিসাব, আর UTF-8. C-তে প্রথম error আগে,
3.0f-এর ভাগ,&, সীমার কেস (১৯০০, ১, সমান সংখ্যা)। - SQL-এ UPDATE/DELETE-এর আগে একই WHERE দিয়ে SELECT; পরীক্ষার দিন ঘন ঘন সেভ, সময় ভাগ, বিপদে আগে পরীক্ষককে জানানো — আর AI শুধু অনুশীলনে, পরীক্ষার হলে নয়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কম্পিউটার ফান্ডামেন্টালস ও ICT · কোর্স হোম৫৫টি পর্বপুরো কোর্সের রোডম্যাপ — দুর্বল বিষয় খুঁজে আবার পড়ুন, পরীক্ষা ও সার্টিফিকেটের তথ্য।
- পর্ব ৫৪ · লিখিত ও মৌখিক (ভাইভা) প্রশ্নআগের পর্বব্যবহারিকের ভাইভার জন্যও কাজে লাগে এমন গুছিয়ে উত্তর দেওয়ার অনুশীলন।
- পর্ব ১১ · Excel গভীরে — XLOOKUP, pivot table, chart আর data validationরিভিশনঅংশ ৪-এর কাজগুলোর পেছনের ধারণা।
- পর্ব ৩৭ · HTML-এ লিংক, ছবি, টেবিল আর ফর্মরিভিশনrowspan/colspan-এর গ্রিড আর ফর্মের সব ধরনের ঘর।
- পর্ব ৪০ · C-তে অ্যারে আর ফাংশনরিভিশনC9-এর মতো অ্যারের সমস্যা আর ফাংশনে ভাগ করে লেখা।
- C প্রোগ্রামিং কোর্সপরের কোর্সল্যাবের প্রোগ্রাম থেকে পয়েন্টার, স্ট্রাকচার আর ফাইল পর্যন্ত, বাংলায় শুরু থেকে।
- HTML ও CSS কোর্সপরের কোর্সHSC-র HTML থেকে আধুনিক, মোবাইলে মানানসই ওয়েবসাইট।