Follow Us
মাধ্যম নির্বাচন করুন / Select Medium:
Eng (English) Beng (বাংলা) Hindi (हिन्दी)
পশ্চিমবঙ্গ মধ্যশিক্ষা পর্ষদ (WBBSE) • শ্রেণি 8 • Computer Science • অধ্যায় 5
আনুমানিক সময়: ৫০ মিনিট
অগ্রগতি: অধ্যয়নে সক্রিয়

Introduction to Flash

পশ্চিমবঙ্গ মধ্যশিক্ষা পর্ষদের (WBBSE) অষ্টম শ্রেণির কম্পিউটার সায়েন্স পাঠ্যক্রমের প্রথম অধ্যায় 'কম্পিউটার ভাষার পরিচিতি' (Introduction to Computer Language)-র এই প্রামাণ্য স্টাডি মেটেরিয়ালে স্বাগত। একটি কম্পিউটার ভাষা হলো মানুষ ও কম্পিউটারের মধ্যে ভাববিনিময়ের সুনির্দিষ্ট মাধ্যম যার সাহায্যে প্রসেসরকে প্রয়োজনীয় নির্দেশ দেওয়া হয়। এই সমৃদ্ধ অধ্যায়ে শিক্ষার্থীরা কম্পিউটার ভাষার ৫টি প্রজন্মের বিবর্তন গভীরভাবে অধ্যয়ন করবে: প্রসেসরের সরাসরি বোধগম্য প্রথম প্রজন্মের বাইনারি মেশিন ভাষা (1GL) থেকে শুরু করে নেমোনিক সংকেতভিত্তিক দ্বিতীয় প্রজন্মের অ্যাসেম্বলি ভাষা (2GL), মানুষের ভাষার কাছাকাছি পোর্টেবল তৃতীয় প্রজন্মের উচ্চস্তরের ভাষা (3GL - যেমন C, Java, Python), ফলাফলমুখী চতুর্থ প্রজন্মের ভাষা (4GL - যেমন SQL), এবং কৃত্রিম বুদ্ধিমত্তা ও লজিকভিত্তিক পঞ্চম প্রজন্মের ভাষা (5GL - যেমন Prolog)। মানুষ লিখিত সোর্স কোড কীভাবে মেশিন কোডে রূপান্তরিত হয় তা বুঝতে শিক্ষার্থীরা অ্যাসেম্বলার, কম্পাইলার ও ইন্টারপ্রেটারের অনুবাদ কৌশল ও বৈশিষ্ট্যের তুলনামূলক বিশ্লেষণ শিখবে। এছাড়া সমস্যার সুশৃঙ্খল ও ধাপে ধাপে সমাধানের জন্য অ্যালগরিদমের মৌলিক শর্তাবলী (সসীমতা, নির্দিষ্টতা, ইনপুট, আউটপুট ও কার্যকারিতা) এবং তা চিত্রের মাধ্যমে প্রকাশের এএনএসআই ফ্লোচার্ট প্রতীকসমূহ বাস্তব উদাহরণের সাহায্যে শেখানো হয়েছে। পরিশেষে প্রোগ্রামিংয়ের তিনটি নিয়ন্ত্রণ কাঠামো (ক্রম, নির্বাচন ও পুনরাবৃত্তি) এবং বিভিন্ন প্রকার প্রোগ্রামিং ত্রুটির (সিনট্যাক্স, রানটাইম ও লজিক্যাল এরর) কারণ ও প্রতিকার পুঙ্খানুপুঙ্খভাবে আলোচনা করা হয়েছে।

কখনও কি ভেবে দেখেছেন?

তুমি কি কখনো ভেবে দেখেছ একটি সিলিকন চিপ—যা ০ ও ১ এবং বিদ্যুতের অন ও অফ সংকেত ছাড়া আর কিছুই বোঝে না—কীভাবে জটিল থ্রিডি গেম চালায়, মহাকাশযানের গতিপথ নিয়ন্ত্রণ করে কিংবা মানুষের মতো চ্যাটবটের মাধ্যমে উত্তর দেয়? এর পেছনে রয়েছে কম্পিউটার প্রোগ্রামিং ভাষা: যা মানুষের বুদ্ধিমত্তা ও কম্পিউটারের ডিজিটাল ইলেকট্রনিক সার্কিটের মধ্যে সংযোগকারী একমাত্র সেতু।

অধ্যায়টির গুরুত্ব

কম্পিউটার ভাষা ও সমস্যা সমাধানের অ্যালগরিদমিক চিন্তা শেখা বর্তমান ডিজিটাল যুগের সবচেয়ে গুরুত্বপূর্ণ মৌলিক দক্ষতা। প্রযুক্তি শুধুমাত্র ব্যবহার করার পরিবর্তে কীভাবে নিজস্ব অ্যাপ্লিকেশন, সফটওয়্যার বা গেম তৈরি করা যায়—তার প্রথম সোপান হলো কম্পিউটার ভাষার জ্ঞান। অ্যালগরিদম ও ফ্লোচার্ট শিক্ষার্থীদের জটিল ও কঠিন বাস্তব সমস্যাকে ছোট ছোট যৌক্তিক ধাপে বিভক্ত করে সমাধান করার মানসিক ক্ষমতা তৈরি করে। কম্পিউটারের মতো একটি যন্ত্রকে ধাপে ধাপে নির্দেশ দিয়ে পরিচালনা করার অভিজ্ঞতা শিক্ষার্থীদের মধ্যে নিয়মানুবর্তিতা, সূক্ষ্ম বিশ্লেষণ ক্ষমতা এবং ধৈর্য বৃদ্ধি করে। এছাড়া প্রোগ্রাম লেখার সময় বিভিন্ন ধরনের ত্রুটি (Syntax, Runtime, Logical Errors) শনাক্ত ও সংশোধন করার প্রক্রিয়া শিক্ষার্থীদের ভুল থেকে শিক্ষা নিয়ে নির্ভুলভাবে কাজ করার অনন্য অভ্যাস গড়ে তোলে।

পাঠের পূর্বে প্রয়োজনীয় ধারণা

  • কম্পিউটারের মৌলিক হার্ডওয়্যার উপাদান—সেন্ট্রাল প্রসেসিং ইউনিট (CPU), প্রধান মেমোরি (RAM/ROM) এবং সেকেন্ডারি স্টোরেজের সাধারণ কার্যপ্রণালী।
  • ০ এবং ১ ভিত্তিক বাইনারি সংখ্যা পদ্ধতি এবং উচ্চ ও নিম্ন ভোল্টেজ বৈদ্যুতিক সংকেতের প্রাথমিক ধারণা।
  • মৌলিক পাটিগণিত (যোগ, বিয়োগ, গুণ, ভাগ) এবং সাধারণ যৌক্তিক সমস্যা সমাধানের দক্ষতা।

শিখন লক্ষ্যমাত্রা ও ফলাফল

  • কম্পিউটার ভাষা, নির্দেশ (Instruction), প্রোগ্রাম (Program), সিনট্যাক্স ও সিম্যান্টিকসের সংজ্ঞা স্পষ্ট ভাষায় ব্যাখ্যা করা।
  • প্রোগ্রামিং ভাষার ৫টি প্রজন্মের (1GL মেশিন ভাষা থেকে 5GL কৃত্রিম বুদ্ধিমত্তা ও লজিক ভাষা) ক্রমবিকাশ, সুবিধা ও সীমাবদ্ধতা বিশ্লেষণ করা।
  • ভাষা অনুবাদক সফটওয়্যার—অ্যাসেম্বলার, কম্পাইলার ও ইন্টারপ্রেটারের ভূমিকা, অনুবাদ কৌশল, গতি ও ত্রুটি প্রদর্শনের পার্থক্য নিরূপণ করা।
  • ডোনাল্ড নুথের শর্তাবলী অনুযায়ী সসীম, সুস্পষ্ট ও কার্যকর অ্যালগরিদম তৈরি করা (গড় নির্ণয়, জোড়-বিজোড় যাচাই, বৃহত্তম সংখ্যা নির্ণয়, সরল সুদ গণনা)।
  • এএনএসআই (ANSI) স্ট্যান্ডার্ড জ্যামিতিক প্রতীক (টার্মিনাল, ইনপুট/আউটপুট, প্রসেস, ডিসিশন, ফ্লো লাইন, কানেক্টর) ব্যবহার করে নির্ভুল ফ্লোচার্ট অঙ্কন করা।
  • সিনট্যাক্স ত্রুটি, রানটাইম ত্রুটি ও লজিক্যাল ত্রুটির পার্থক্য বোঝা এবং স্ট্রাকচার্ড প্রোগ্রামিংয়ের তিনটি স্তম্ভ (সিকোয়েন্স, সিলেকশন, ইটারেশন) অনুধাবন করা।

অধ্যায়ের বিষয়সূচি ও রূপরেখা

1 অধ্যায় ১: কম্পিউটার ভাষার ধারণা ও...
2 অধ্যায় ২: ভাষা অনুবাদক সফটওয়্যার...
3 অধ্যায় ৩: সমস্যা সমাধানের ভিত্তি:...
4 অধ্যায় ৪: দৃশ্যমান সমস্যা সমাধান:...
5 অধ্যায় ৫: আধুনিক প্রোগ্রামিং ধারণা...

সম্পূর্ণ তত্ত্ব ও ধারণাগত আলোচনা

অধ্যায় ১: কম্পিউটার ভাষার ধারণা ও ৫টি প্রজন্মের ক্রমবিকাশ (1GL থেকে 5GL)

১.১ কম্পিউটার ভাষা কী?

কম্পিউটার একটি ইলেকট্রনিক যন্ত্র যা অতি দ্রুত ও নির্ভুলভাবে গণনা করতে পারে। কিন্তু মানুষের মতো কম্পিউটারের নিজস্ব কোনো বুদ্ধি বা চিন্তাশক্তি নেই। কম্পিউটারকে দিয়ে যেকোনো কাজ করাতে হলে তাকে ধাপে ধাপে স্পষ্ট নির্দেশ দিতে হয়। মানুষের এই নির্দেশ কম্পিউটারের কাছে পৌঁছে দেওয়ার মাধ্যমকেই কম্পিউটার ভাষা (Computer Language) বা প্রোগ্রামিং ভাষা বলা হয়।

  • নির্দেশ (Instruction): কম্পিউটার প্রসেসরকে একটি নির্দিষ্ট ক্ষুদ্র কাজ (যেমন দুটি সংখ্যা যোগ করা বা মেমোরি থেকে ডেটা আনা) করার জন্য দেওয়া একক আদেশ।
  • প্রোগ্রাম (Program): কোনো নির্দিষ্ট সমস্যা সমাধান বা ফল লাভের উদ্দেশ্যে কম্পিউটার ভাষায় ধারাবাহিকভাবে লেখা একগুচ্ছ নির্দেশের সমষ্টি।
  • প্রোগ্রামার (Programmer): যে ব্যক্তি সমস্যা বিশ্লেষণের মাধ্যমে প্রোগ্রামিং ভাষায় কোড লিখে সফটওয়্যার তৈরি করেন।
  • সিনট্যাক্স (Syntax): প্রতিটি ভাষার নিজস্ব কিছু ব্যাকরণগত নিয়ম, যতিচিহ্ন ও শব্দগঠন রীতি থাকে; কম্পিউটার ভাষায় কোড লেখার এই কঠোর নিয়মাবলীকে সিনট্যাক্স বলে।
  • সিম্যান্টিকস (Semantics): সিনট্যাক্স মেনে লেখা কোনো নির্দেশের প্রকৃত অর্থ ও কার্যকারিতাকে সিম্যান্টিকস বলা হয়।
সিনট্যাক্স বনাম সিম্যান্টিকস সাদৃশ্য:

বাংলায় বাক্যটি লক্ষ্য করো: "আমটি বালকটিকে খেল।" ব্যাকরণগতভাবে (Syntax) বাক্যটির গঠন সম্পূর্ণ সঠিক (কর্তা + কর্ম + ক্রিয়া)। কিন্তু অর্থগতভাবে (Semantics) বাক্যটি অসম্ভব ও অর্থহীন! প্রোগ্রামিংয়েও সিনট্যাক্স ঠিক থাকলেও লজিকের ভুলের কারণে প্রোগ্রাম ভুল আউটপুট দিতে পারে।

১.২ কম্পিউটার ভাষার ৫টি প্রজন্ম (Five Generations of Languages)

প্রযুক্তি ও মানুষের সুবিধার ওপর ভিত্তি করে কম্পিউটার ভাষার ইতিহাসকে পাঁচটি প্রজন্মে বিভক্ত করা হয়:

প্রজন্ম ভাষার নাম ও ধরন প্রধান বৈশিষ্ট্য ও সুবিধা সীমাবদ্ধতা বা অসুবিধা
প্রথম প্রজন্ম (1GL) মেশিন ভাষা (Machine Language) - নিম্নস্তরের ভাষা শুধুমাত্র বাইনারি অঙ্ক ০ এবং ১ দিয়ে লেখা। সিপিইউ সরাসরি বোঝে, কোনো অনুবাদক লাগে না। দ্রুততম গতিতে চলে। মানুষের পক্ষে কোড লেখা ও মনে রাখা অত্যন্ত কষ্টসাধ্য। হার্ডওয়্যার নির্ভর (এক মেশিনের কোড অন্য মেশিনে চলে না)। ভুল খোঁজা কঠিন।
দ্বিতীয় প্রজন্ম (2GL) অ্যাসেম্বলি ভাষা (Assembly Language) - নিম্নস্তরের ভাষা বাইনারির বদলে সংক্ষিপ্ত ইংরেজি সংকেত বা নেমোনিক কোড (যেমন ADD, SUB, MOV, JMP) ব্যবহৃত হয়। মেশিন ভাষার চেয়ে সহজবোধ্য। মেশিন নির্ভর। চালাতে অ্যাসেম্বলার অনুবাদক প্রয়োজন হয়। হার্ডওয়্যারের অভ্যন্তরীণ গঠন জানতে হয়।
তৃতীয় প্রজন্ম (3GL) উচ্চস্তরের ভাষা (High-Level Language - HLL) ইংরেজি শব্দ ও গাণিতিক চিহ্নের সমন্বয়ে গঠিত (যেমন print("Hello"))। মেশিন-স্বাধীন (Machine-Independent)। উদাহরণ: BASIC, C, C++, Java, Python। সরাসরি প্রসেসরে চলে না; কম্পাইলার বা ইন্টারপ্রেটার দিয়ে মেশিন ভাষায় অনুবাদ করতে হয়।
চতুর্থ প্রজন্ম (4GL) নন-প্রসিডিউরাল ভাষা (Non-Procedural / 4GL) 'কীভাবে করতে হবে' (How) তার চেয়ে 'কী ফলাফল চাই' (What) তার ওপর জোর দেওয়া হয়। অত্যন্ত ইউজার-ফ্রেন্ডলি। উদাহরণ: SQL (Structured Query Language)। বেশি মেমোরি প্রয়োজন হয় এবং নির্দিষ্ট কাজের বাইরে সাধারণ প্রোগ্রামিংয়ের জন্য উপযুক্ত নয়।
পঞ্চম প্রজন্ম (5GL) কৃত্রিম বুদ্ধিমত্তা ও লজিক ভাষা (AI & Logic Programming) মানুষের স্বাভাবিক ভাষার মতো যোগাযোগ ও দৃশ্যমান ইন্টারফেস। লজিক ও সীমাবদ্ধতার ভিত্তিতে স্বয়ংক্রিয় সমাধান। উদাহরণ: Prolog, Mercury। জটিল অ্যালগরিদম এবং অত্যন্ত শক্তিশালী প্রসেসর ও বৃহৎ মেমোরির প্রয়োজন হয়।

অধ্যায় ২: ভাষা অনুবাদক সফটওয়্যার (Language Processors)

২.১ অনুবাদক সফটওয়্যারের প্রয়োজনীয়তা

কম্পিউটারের সিপিইউ শুধুমাত্র মেশিন ভাষা (বাইনারি ০ ও ১) বুঝতে পারে। কিন্তু আধুনিক প্রোগ্রামাররা কোড লেখেন মানুষের বোধগম্য উচ্চস্তরের ভাষায় বা অ্যাসেম্বলি ভাষায়। মানুষের লেখা মূল প্রোগ্রামকে বলা হয় সোর্স কোড (Source Code)। এই সোর্স কোডকে কম্পিউটারের বোধগম্য মেশিন কোড বা অবজেক্ট কোডে (Object Code) রূপান্তর করার জন্য যে সিস্টেম সফটওয়্যার ব্যবহৃত হয়, তাকে ভাষা অনুবাদক (Language Translator / Processor) বলে।

২.২ অনুবাদক সফটওয়্যারের প্রকারভেদ
  • ১. অ্যাসেম্বলার (Assembler): যে অনুবাদক অ্যাসেম্বলি ভাষায় (2GL) লেখা নেমোনিক কোডকে (যেমন ADD, SUB) সরাসরি মেশিন ভাষায় রূপান্তর করে, তাকে অ্যাসেম্বলার বলে।
  • ২. কম্পাইলার (Compiler): যে অনুবাদক উচ্চস্তরের ভাষায় (3GL) লেখা সম্পূর্ণ সোর্স কোডকে একসাথে একবারে পড়ে বিশ্লেষণ করে এবং সম্পূর্ণ প্রোগ্রামটিকে মেশিন/অবজেক্ট ফাইলে রূপান্তর করে, তাকে কম্পাইলার বলে। রূপান্তরের শেষে যদি কোনো সিনট্যাক্স ভুল থাকে, তবে সমস্ত ভুলের একটি পূর্ণ তালিকা প্রদর্শন করে। উদাহরণ: C, C++ কম্পাইলার।
  • ৩. ইন্টারপ্রেটার (Interpreter): যে অনুবাদক উচ্চস্তরের ভাষায় লেখা সোর্স কোডকে এক লাইন এক লাইন করে পড়ে, অনুবাদ করে এবং সাথে সাথে কার্যকর (Execute) করে, তাকে ইন্টারপ্রেটার বলে। কোনো লাইনে ভুল পেলে ইন্টারপ্রেটার তাৎক্ষণিকভাবে কাজ বন্ধ করে ত্রুটি প্রদর্শন করে। উদাহরণ: Python, JavaScript, QBasic।
২.৩ কম্পাইলার ও ইন্টারপ্রেটারের তুলনামূলক পার্থক্য
তুলনার বিষয় কম্পাইলার (Compiler) ইন্টারপ্রেটার (Interpreter)
অনুবাদ পদ্ধতি সম্পূর্ণ প্রোগ্রামকে একসাথে একবারে পড়ে অনুবাদ করে। লাইন বাই লাইন (এক লাইন পড়ে, অনুবাদ করে ও চালায়)।
ত্রুটি প্রদর্শন (Error Reporting) পুরো প্রোগ্রাম পড়ার পর সমস্ত ভুলের তালিকা একসাথে দেখায়। যে লাইনে ভুল পায় ঠিক সেখানেই থেমে যায় এবং ভুল দেখায়।
চালানোর গতি (Execution Speed) একবার অবজেক্ট কোড তৈরি হলে অত্যন্ত দ্রুতগতিতে চলে। তুলনামূলকভাবে ধীরগতির (প্রতিবার চালানোর সময় অনুবাদ হয়)।
অবজেক্ট কোড তৈরি স্থায়ী অবজেক্ট ফাইল (.exe বা .obj) সংরক্ষণ করে। কোনো স্থায়ী অবজেক্ট ফাইল তৈরি করে না।
ডিবাগিং ও ভুল সংশোধন নতুন শিক্ষার্থীদের জন্য ভুল খুঁজে সমাধান করা কিছুটা কঠিন। খুবই সহজ, কারণ ভুল লাইনেই প্রোগ্রাম তাৎক্ষণিক থেমে যায়।

অধ্যায় ৩: সমস্যা সমাধানের ভিত্তি: অ্যালগরিদম (Algorithms)

৩.১ অ্যালগরিদম কী?

কোনো একটি সুনির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিপূর্ণ ও ধাপে ধাপে লিখিত নির্দেশাবলীর সসীম অনুক্রমকে অ্যালগরিদম (Algorithm) বলা হয়। নবম শতাব্দীর বিখ্যাত পারস্য গণিতবিদ মুহাম্মদ ইবনে মুসা আল-খোয়ারিজমি-র নামানুসারে এই শব্দের উৎপত্তি।

৩.২ একটি আদর্শ অ্যালগরিদমের ৫টি আবশ্যিক শর্ত (Donald Knuth-এর নীতি)
  • ১. সসীমতা (Finiteness): অ্যালগরিদমটি অবশ্যই নির্দিষ্ট ও সীমিত সংখ্যক ধাপের পর শেষ হতে হবে। এটি কখনোই অসীম লুপে ঘুরতে পারবে না।
  • ২. নির্দিষ্টতা (Definiteness): প্রতিটি ধাপের অর্থ সম্পূর্ণ স্পষ্ট, দ্ব্যর্থহীন ও নির্দিষ্ট হতে হবে যাতে কোনো বিভ্রান্তি না থাকে।
  • ৩. ইনপুট (Input): অ্যালগরিদমে শূন্য বা ততোধিক সুনির্দিষ্ট ইনপুট ডেটা গ্রহণ করার সুযোগ থাকতে হবে।
  • ৪. আউটপুট (Output): প্রক্রিয়াকরণ শেষে অ্যালগরিদমকে অবশ্যই অন্তত একটি সঠিক ও অর্থপূর্ণ ফলাফল প্রদান করতে হবে।
  • ৫. কার্যকারিতা (Effectiveness): প্রতিটি নির্দেশ অত্যন্ত মৌলিক ও বাস্তবায়নযোগ্য হতে হবে, যা কাগজ-কলমেও হিসাব করা সম্ভব।
৩.৩ বাস্তব ব্যবহারিক অ্যালগরিদম উদাহরণ
উদাহরণ ১: তিনটি সংখ্যার যোগফল ও গড় নির্ণয়ের অ্যালগরিদম
  1. ধাপ ১: শুরু করি (Start)।
  2. ধাপ ২: তিনটি সংখ্যা A, B এবং C ইনপুট নিই।
  3. ধাপ ৩: যোগফল নির্ণয় করি: Sum = A + B + C।
  4. ধাপ ৪: গড় নির্ণয় করি: Average = Sum / 3।
  5. ধাপ ৫: Sum এবং Average-এর মান প্রদর্শন করি (Print)।
  6. ধাপ ৬: সমাপ্ত করি (Stop)।
উদাহরণ ২: একটি সংখ্যা জোড় (Even) না বিজোড় (Odd) তা যাচাইয়ের অ্যালগরিদম
  1. ধাপ ১: শুরু করি (Start)।
  2. ধাপ ২: একটি পূর্ণসংখ্যা N ইনপুট নিই।
  3. ধাপ ৩: ভাগশেষ নির্ণয় করি: Remainder = N Mod 2।
  4. ধাপ ৪: যদি Remainder = 0 হয়, তবে প্রদর্শন করি "সংখ্যাটি জোড় (Even)"; অন্যথায় প্রদর্শন করি "সংখ্যাটি বিজোড় (Odd)"।
  5. ধাপ ৫: সমাপ্ত করি (Stop)।

অধ্যায় ৪: দৃশ্যমান সমস্যা সমাধান: ফ্লোচার্ট বা প্রবাহচিত্র (Flowcharts)

৪.১ ফ্লোচার্ট কী?

কোনো অ্যালগরিদমের যৌক্তিক পদক্ষেপগুলিকে যখন বিভিন্ন আদর্শ জ্যামিতিক প্রতীকের সাহায্যে চিত্রের আকারে প্রকাশ করা হয়, তখন তাকে ফ্লোচার্ট (Flowchart) বা প্রবাহচিত্র বলা হয়। একটি চিত্র হাজার শব্দের চেয়েও বেশি স্পষ্ট বার্তা দেয়; ফ্লোচার্ট দেখেই প্রোগ্রামের প্রবাহ সহজে বোঝা যায়।

৪.২ এএনএসআই (ANSI) স্ট্যান্ডার্ড ফ্লোচার্ট প্রতীকসমূহ
প্রতীকের নাম জ্যামিতিক আকৃতি ব্যবহার ও কাজের অর্থ
টার্মিনাল (Terminal) ডিম্বাকৃতি বা ওভাল (Oval) প্রোগ্রামের শুরু (Start) এবং শেষ (Stop/End) নির্দেশ করতে ব্যবহৃত হয়।
ইনপুট / আউটপুট (Input / Output) সামান্তরিক (Parallelogram) ব্যবহারকারীর কাছ থেকে ডেটা ইনপুট নেওয়া (Read A) বা ফলাফল প্রিন্ট করার কাজে ব্যবহৃত হয়।
প্রক্রিয়াকরণ (Process) আয়তক্ষেত্র (Rectangle) গাণিতিক হিসাব-নিকাশ বা মান অ্যাসাইন করার নির্দেশ (যেমন Sum = A + B)।
সিদ্ধান্ত গ্রহণ (Decision) হীরক বা রম্বস (Diamond / Rhombus) কোনো যৌক্তিক শর্ত পরীক্ষা করার জন্য। এর থেকে দুটি বা তিনটি বহির্গামী তীর বের হয় (Yes/No, True/False)।
প্রবাহ রেখা (Flow Lines) তীরচিহ্নযুক্ত সরলরেখা (Arrows →, ↓) নির্দেশাবলী কোন দিক থেকে কোন দিকে প্রবাহিত হচ্ছে তা নির্দেশ করে। সাধারণত উপর থেকে নিচে বা বাম থেকে ডানে যায়।
কানেক্টর (Connector) ক্ষুদ্র বৃত্ত (Small Circle) ফ্লোচার্ট অনেক বড় হলে বা একাধিক পৃষ্ঠায় বিস্তৃত হলে বিভিন্ন অংশের সংযোগ ঘটাতে ব্যবহৃত হয়।
৪.৩ ফ্লোচার্ট অঙ্কনের সোনালী নিয়মাবলী
  • ফ্লোচার্টের শুরু সর্বদা একটি ওভাল (Start) এবং শেষ সর্বদা একটি ওভাল (Stop) দিয়ে হতে হবে।
  • প্রবাহের দিক সর্বদা উপর থেকে নিচে বা বাম থেকে ডানে হওয়া বাঞ্ছনীয়।
  • প্রসেস বক্সে কেবল একটি ইনপুট লাইন এবং একটি আউটপুট লাইন থাকে।
  • ডিসিশন (রম্বস) বক্সে একটি ইনপুট লাইন প্রবেশ করে এবং শর্তের ফলাফলের ওপর ভিত্তি করে দুটি আউটপুট লাইন (Yes এবং No) বের হয়।
  • প্রবাহ রেখাগুলি কখনোই একে অপরকে ক্রস বা ছেদ করবে না; প্রয়োজনে কানেক্টর ব্যবহার করতে হবে।

অধ্যায় ৫: আধুনিক প্রোগ্রামিং ধারণা, ত্রুটির প্রকারভেদ ও নিয়ন্ত্রণ কাঠামো

৫.১ প্রোগ্রামিং ত্রুটির প্রকারভেদ (Types of Programming Errors)

কম্পিউটার প্রোগ্রামে ত্রুটিকে প্রযুক্তিগত ভাষায় বাগ (Bug) এবং তা খুঁজে সমাধান করাকে ডিবাগিং (Debugging) বলা হয়। প্রোগ্রামিংয়ে প্রধানত তিন ধরনের ত্রুটি দেখা যায়:

ত্রুটির প্রকার সংজ্ঞা ও কারণ বাস্তব উদাহরণ শনাক্তকারী
সিনট্যাক্স ত্রুটি (Syntax Error) প্রোগ্রামিং ভাষার ব্যাকরণগত নিয়ম, বানানের ভুল বা সেমিকোলন/ব্র্যাকেট বাদ পড়লে ঘটে। print "Hello" (ব্র্যাকেট বাদ পড়েছে) অথবা prnt(x) (বানান ভুল)। কম্পাইলার বা ইন্টারপ্রেটার কোড চালানোর আগেই তাৎক্ষণিক ধরে ফেলে।
রানটাইম ত্রুটি (Runtime Error) প্রোগ্রাম চলার সময় অপ্রত্যাশিত কোনো গাণিতিক বা সিস্টেমিক অসঙ্গতি ঘটলে প্রোগ্রাম ক্র্যাশ করে। কোনো সংখ্যাকে শূন্য (0) দিয়ে ভাগ করা (x / 0) অথবা মেমোরি শেষ হয়ে যাওয়া। কম্পাইলেশন সফল হয়, কিন্তু প্রোগ্রাম চলার সময় হঠাৎ ক্র্যাশ করে।
লজিক্যাল ত্রুটি (Logical Error) প্রোগ্রামের সিনট্যাক্স ঠিক থাকে এবং প্রোগ্রাম সম্পূর্ণ চলে, কিন্তু ভুল যুক্তির কারণে ভুল ফলাফল আসে। গড় নির্ণয়ের সময় Avg = A + B / 2 লেখা (ব্র্যাকেট না থাকায় প্রথমে ভাগ হয়ে যাবে)। কম্পাইলার ধরতে পারে না; প্রোগ্রামারকে নিজে ড্রাই-রান করে খুঁজে বের করতে হয়।
৫.২ স্ট্রাকচার্ড প্রোগ্রামিংয়ের ৩টি নিয়ন্ত্রণ কাঠামো (Control Constructs)
  • ১. অনুক্রম বা সিকোয়েন্স (Sequence): নির্দেশগুলি উপর থেকে নিচে একটার পর একটা স্বাভাবিক নিয়মে ক্রমানুসারে কার্যকর হয়।
  • ২. নির্বাচন বা সিলেকশন (Selection / Branching): কোনো নির্দিষ্ট শর্তের ওপর ভিত্তি করে একাধিক পথের মধ্য থেকে একটি পথ বেছে নেওয়া হয় (যেমন: if-else গঠন)।
  • ৩. পুনরাবৃত্তি বা ইটারেশন (Iteration / Looping): কোনো কাজ বারবার করার জন্য লুপ ব্যবহার করা হয় যতক্ষণ না কোনো নির্দিষ্ট শর্ত পূরণ হয় (যেমন: for, while লুপ)।

প্রোগ্রামিং সিনট্যাক্স, কমান্ড ও অনুবাদক নীতি

সরল সুদের সূত্র (Simple Interest Formula)
SI = (P * R * T) / 100
P = মূলধন (Principal), R = সুদের হার (Rate), T = সময় (Time in years)।
গড় নির্ণয়ের সঠিক সূত্র (Average Formula)
Average = (A + B + C) / 3
বন্ধনী (Parentheses) ব্যবহার বাধ্যতামূলক, নতুবা অপারেটর অগ্রাধিকারের নিয়মে ভুল ফলাফল আসবে।
জোড় সংখ্যা যাচাইয়ের মডুলাস শর্ত (Even Number Condition)
Number Mod 2 == 0
Mod অপারেটর ভাগশেষ নির্ণয় করে। ভাগশেষ শূন্য হলে সংখ্যাটি জোড়, অন্যথায় বিজোড়।

সমাধানকৃত উদাহরণ ও প্রয়োগ (Solved Examples)

উদাহরণ 1
দুটি সংখ্যা X এবং Y-এর মধ্যে কোনটি বৃহত্তম তা নির্ণয় করার একটি সুস্পষ্ট অ্যালগরিদম লেখো।
ধাপে ধাপে সমাধান / উত্তর:
ধাপ ১: শুরু করি (Start)।\nধাপ ২: দুটি সংখ্যা X এবং Y ইনপুট নিই।\nধাপ ৩: যদি X > Y হয়, তবে প্রদর্শন করি 'X বৃহত্তম'; অন্যথায় যদি Y > X হয়, তবে প্রদর্শন করি 'Y বৃহত্তম'; নতুবা প্রদর্শন করি 'উভয় সংখ্যা সমান'।\nধাপ ৪: সমাপ্ত করি (Stop)।
উদাহরণ 2
কোনো ছাত্র তিনটি পরীক্ষায় প্রাপ্ত নম্বর A, B, C ইনপুট নিয়ে গড় নির্ণয়ের জন্য কোড লিখল: Avg = A + B + C / 3। এই কোডে কী ভুল রয়েছে এবং এর সঠিক রূপ কী হবে?
ধাপে ধাপে সমাধান / উত্তর:
এটি একটি গুরুতর লজিক্যাল ত্রুটি (Logical Error)। কম্পিউটার গণিতে ভাগের অগ্রাধিকার (Precedence) যোগের চেয়ে বেশি। বন্ধনী না থাকার কারণে কম্পিউটার প্রথমে C / 3 করবে এবং তার সাথে A ও B যোগ করবে। সঠিক কোডটি হবে: Avg = (A + B + C) / 3।
উদাহরণ 3
কম্পাইলার ও ইন্টারপ্রেটারের মধ্যে প্রধান কার্যকরী পার্থক্য কী?
ধাপে ধাপে সমাধান / উত্তর:
কম্পাইলার সম্পূর্ণ সোর্স কোডকে একসাথে একবারে পড়ে মেশিন কোডে রূপান্তর করে এবং শেষে সমস্ত সিনট্যাক্স ভুলের তালিকা দেয়। ফলে এটি দ্রুত চলে। অন্যদিকে ইন্টারপ্রেটার কোডকে এক লাইন এক লাইন করে অনুবাদ করে চালায় এবং প্রথম ভুলেই সাথে সাথে থেমে যায়।
উদাহরণ 4
ফ্লোচার্টে 'সামান্তরিক' এবং 'আয়তক্ষেত্র' প্রতীকের কাজের মধ্যে পার্থক্য কী?
ধাপে ধাপে সমাধান / উত্তর:
সামান্তরিক (Parallelogram) প্রতীকটি ব্যবহারকারীর কাছ থেকে ডেটা ইনপুট নেওয়া বা আউটপুট ফলাফল প্রদর্শনের কাজে ব্যবহৃত হয়। আর আয়তক্ষেত্র (Rectangle) প্রতীকটি গাণিতিক হিসাব-নিকাশ বা প্রসেসিংয়ের কাজে ব্যবহৃত হয়।
উদাহরণ 5
মেশিন ভাষা এবং উচ্চস্তরের ভাষার মধ্যে দুটি প্রধান পার্থক্য উল্লেখ করো।
ধাপে ধাপে সমাধান / উত্তর:
(১) মেশিন ভাষা শুধুমাত্র বাইনারি ০ ও ১ দিয়ে গঠিত এবং প্রসেসর সরাসরি বোঝে; উচ্চস্তরের ভাষা ইংরেজি শব্দের মতো এবং প্রসেসর সরাসরি বোঝে না (অনুবাদক লাগে)। (২) মেশিন ভাষা হার্ডওয়্যার-নির্ভর; উচ্চস্তরের ভাষা মেশিন-স্বাধীন ও পোর্টেবল।

সাধারণ ভুলত্রুটি ও সতর্কতা (Common Traps)

সাধারণ ভুল ধারণা

অ্যালগরিদমে গড় বা সূত্রের ক্ষেত্রে বন্ধনী (Parentheses) ব্যবহার না করা।

সঠিক পদ্ধতি ও সমাধান

Avg = A + B + C / 3 লিখলে কেবল C-কে 3 দিয়ে ভাগ হবে। সর্বদা বন্ধনী ব্যবহার করতে হবে: Avg = (A + B + C) / 3।

সাধারণ ভুল ধারণা

ফ্লোচার্টে ডিসিশন (রম্বস) বক্স থেকে বের হওয়া লাইনে Yes এবং No লেবেল না দেওয়া।

সঠিক পদ্ধতি ও সমাধান

ডিসিশন বক্সের দুটি শাখা অবশ্যই চিহ্নিত করতে হবে—শর্ত সত্যি হলে কোন দিকে যাবে (Yes/True) এবং মিথ্যে হলে কোন দিকে যাবে (No/False)।

সাধারণ ভুল ধারণা

কম্পাইলার এবং ইন্টারপ্রেটারের কাজের মধ্যে বিভ্রান্ত হওয়া।

সঠিক পদ্ধতি ও সমাধান

মনে রাখার সহজ উপায়: কম্পাইলার = পুরো বই একসাথে অনুবাদ। ইন্টারপ্রেটার = লাইভ অনুবাদকের মতো এক বাক্য এক বাক্য অনুবাদ।

সাধারণ ভুল ধারণা

সিনট্যাক্স এরর এবং লজিক্যাল এররকে একই ভাবা।

সঠিক পদ্ধতি ও সমাধান

সিনট্যাক্স এরর ব্যাকরণের ভুল (যা কম্পাইলার সাথে সাথে ধরে)। লজিক্যাল এরর হলো হিসাবের যুক্তিগত ভুল (যা কম্পাইলার ধরতে পারে না, ভুল ফলাফল দেখে বুঝতে হয়)।

কম্পিউটার ভাষার বিবর্তন, অনুবাদক ও সমস্যা সমাধান কনসেপ্ট ম্যাপ (WBBSE অষ্টম শ্রেণি অধ্যায় ১)

পশ্চিমবঙ্গ মধ্যশিক্ষা পর্ষদ অষ্টম শ্রেণি কম্পিউটার সায়েন্স • অধ্যায় ১ কনসেপ্ট ম্যাপ কম্পিউটার ভাষার পরিচিতি ও সমস্যা সমাধান (Introduction to Computer Language) টপিক আইডি: ২৬৪২ ৫টি প্রজন্ম (1GL-5GL) ভাষার বিবর্তন ধারা বাইনারি সংকেত থেকে কৃত্রিম মেধা ১ম প্রজন্ম: মেশিন ভাষা (1GL) • খাঁটি বাইনারি (০ ও ১-এর সংকেত) • দ্রুততম সম্পাদন | যন্ত্র-নির্ভর ২য় প্রজন্ম: অ্যাসেম্বলি ভাষা (2GL) • নেমোনিক কোড (ADD, SUB, MOV) • অ্যাসেম্বলার অনুবাদক আবশ্যক ৩য় প্রজন্ম: উচ্চস্তরের ভাষা (3GL) • ইংরেজি মতো বাক্য (C, Python) • কম্পাইলার বা ইন্টারপ্রেটার প্রয়োজন ৪র্থ ও ৫ম প্রজন্মের ভাষা • 4GL: নির্দেশমূলক SQL (কী চাই) • 5GL: AI ও লজিক ভাষা (Prolog) • প্রাকৃতিক ভাষা ও জ্ঞান-ভাণ্ডার বিবর্তনীয় অগ্রগতি যন্ত্রের জটিল কোড থেকে মানুষের সহজ ও বোধগম্য কৃত্রিম মেধা। অনুবাদক প্রোগ্রাম ল্যাঙ্গুয়েজ প্রসেসর সোর্স কোড থেকে মেশিন কোড অ্যাসেম্বলার (Assembler) • অ্যাসেম্বলি থেকে মেশিন ভাষা • সরাসরি ১:১ নেমোনিক রূপান্তর কম্পাইলার (Compiler) • সমগ্র প্রোগ্রাম একসাথে অনুবাদ করে • স্থায়ী অবজেক্ট (.exe) ফাইল তৈরি হয় • দ্রুত সম্পাদন; সব ভুল শেষে দেখায় ইন্টারপ্রেটার (Interpreter) • লাইন ধরে ধরে অনুবাদ ও সম্পাদন • কোনো স্থায়ী .exe তৈরি করে না • প্রথম ভুলেই থেমে যায়; সহজ ডিবাগ অনুবাদ রূপরেখা পর্যায় সোর্স কোড (C / Python কোড) ↓ অনুবাদক (কম্পাইলার / ইন্টারপ্রেটার) ↓ অবজেক্ট কোড (.obj / বাইটকোড) ↓ এক্সিকিউটেবল মেশিন কোড (.exe) ফ্লোচার্ট প্রতীকসমূহ চিত্রভিত্তিক সমস্যা সমাধান প্রমিত ANSI / ISO প্রতীকসমূহ শুরু টার্মিনাল (ডিম্বাকার) প্রোগ্রাম শুরু ও শেষ নির্দেশক I/O ইনপুট / আউটপুট মান গ্রহণ ও ফলাফল প্রদর্শন গণনা প্রসেস (আয়তক্ষেত্র) গাণিতিক হিসাব ও মান নির্ধারণ ? ডিসিশন (রম্বস) শর্ত যাচাই ও শাখা বিভাজন প্রবাহ রেখা ও সংযোগকারী • প্রবাহ রেখা (↓ →): ধাপের দিক • সংযোগকারী (○): বৃত্তাকার লিংক নিয়ম: উপর থেকে নিচে প্রবাহ; ডিসিশন থেকে ২টি বহির্গামী তীর; রেখা যেন পরস্পরকে না কাটে। যুক্তি ও ত্রুটিসমূহ প্রোগ্রামিং ধারণা অ্যালগরিদম, বাগ ও কাঠামো অ্যালগরিদমের ৫টি বৈশিষ্ট্য • সসীমতা (নির্দিষ্ট ধাপে সমাপ্তি) • সুনির্দিষ্টতা (দ্ব্যর্থহীন স্পষ্টতা) • ইনপুট (≥ ০) ও আউটপুট (≥ ১) • কার্যকারিতা (বাস্তবায়নযোগ্যতা) ৩ প্রকার প্রোগ্রামিং ত্রুটি ১. সিনট্যাক্স ত্রুটি (Syntax) ভাষার ব্যাকরণগত ভুল (বানান) ২. রানটাইম ত্রুটি (Runtime) চলাকালীন অপ্রত্যাশিত ত্রুটি (০ ভাগ) ৩. লজিক্যাল ত্রুটি (Logical) যুক্তির ত্রুটি (ভুল ফলাফল প্রদান) ৩টি গঠন কাঠামো ▶ অনুক্রম (Sequence): পর্যায়ক্রমিক ▶ নির্বাচন (Selection): শর্তসাপেক্ষ ▶ পুনরাবৃত্তি (Iteration): লুপ চালনা প্রসিডিউরাল বনাম OOP: অবজেক্ট ডেটা ও মেথডকে একত্রে ধারণ করে।

অধ্যায় সারসংক্ষেপ ও গুরুত্বপূর্ণ বিষয়

মূল বিষয় 1
কম্পিউটার ভাষা হলো মানুষ ও কম্পিউটারের মধ্যে যোগাযোগের মাধ্যম, যা সিনট্যাক্স ও সিম্যান্টিকস নিয়মে গঠিত।
মূল বিষয় 2
কম্পিউটার ভাষার ৫টি প্রজন্ম: 1GL (মেশিন ভাষা - বাইনারি), 2GL (অ্যাসেম্বলি ভাষা - নেমোনিক), 3GL (উচ্চস্তরের ভাষা - C, Java, Python), 4GL (নন-প্রসিডিউরাল - SQL), 5GL (কৃত্রিম বুদ্ধিমত্তা - Prolog)।
মূল বিষয় 3
সিপিইউ শুধুমাত্র বাইনারি মেশিন ভাষা বুঝতে পারে; উচ্চস্তরের সোর্স কোডকে মেশিন কোডে রূপান্তর করতে অনুবাদক প্রয়োজন।
মূল বিষয় 4
অনুবাদক তিন প্রকার: অ্যাসেম্বলার (অ্যাসেম্বলি কোড রূপান্তর), কম্পাইলার (পুরো কোড একসাথে অনুবাদ), ইন্টারপ্রেটার (এক লাইন এক লাইন করে অনুবাদ)।
মূল বিষয় 5
অ্যালগরিদম হলো সসীম ধাপে কোনো সমস্যা সমাধানের লিখিত নির্দেশমালা, যার ৫টি শর্ত: সসীমতা, নির্দিষ্টতা, ইনপুট, আউটপুট ও কার্যকারিতা।
মূল বিষয় 6
ফ্লোচার্ট হলো অ্যালগরিদমের চিত্ররূপ। মূল প্রতীক: ওভাল (Start/Stop), সামান্তরিক (Input/Output), আয়তক্ষেত্র (Process), রম্বস (Decision), তীরচিহ্ন (Flow Lines)।
মূল বিষয় 7
প্রোগ্রামিংয়ের তিন ধরনের ত্রুটি: সিনট্যাক্স ত্রুটি (ব্যাকরণগত ভুল), রানটাইম ত্রুটি (চলার সময় ক্র্যাশ), লজিক্যাল ত্রুটি (ভুল ফলাফল)।
মূল বিষয় 8
স্ট্রাকচার্ড প্রোগ্রামিংয়ের ৩টি মূল কাঠামো হলো সিকোয়েন্স (ক্রম), সিলেকশন (শর্তসাপেক্ষ শাখা) এবং ইটারেশন (লুপ)।

স্ব-মূল্যায়ন অনুশীলন (Check Your Understanding)

মূল ধারণাগত স্পষ্টতা যাচাই করার জন্য অনুশীলন প্রশ্ন। উত্তর দেখার আগে নিজে সমাধান করার চেষ্টা করো।

1
কম্পিউটারের সিপিইউ সরাসরি কোন ভাষাটি অনুবাদক ছাড়াই বুঝতে পারে?
উত্তর ও ব্যাখ্যা দেখুন
উত্তর: মেশিন ভাষা (Machine Language বা 1GL)।
০ এবং ১ দিয়ে গঠিত প্রথম প্রজন্মের ভাষার কথা ভাবো।
2
কোন অনুবাদক প্রোগ্রামকে এক লাইন এক লাইন করে পড়ে এবং প্রথম ভুলেই কাজ বন্ধ করে দেয়?
উত্তর ও ব্যাখ্যা দেখুন
উত্তর: ইন্টারপ্রেটার (Interpreter)।
Python বা JavaScript-এ ব্যবহৃত অনুবাদক।
3
ফ্লোচার্টে কোনো শর্ত পরীক্ষা করার জন্য কোন জ্যামিতিক প্রতীকটি ব্যবহৃত হয়?
উত্তর ও ব্যাখ্যা দেখুন
উত্তর: রম্বস বা হীরক আকৃতি (Diamond / Rhombus - Decision Box)।
হীরক আকৃতির প্রতীকটির কথা ভাবো যার দুটি বহির্গামী লাইন থাকে।
4
কোনো সংখ্যাকে ০ দিয়ে ভাগ করলে কোন ধরনের ত্রুটি ঘটে?
উত্তর ও ব্যাখ্যা দেখুন
উত্তর: রানটাইম ত্রুটি (Runtime Error - Division by Zero)।
প্রোগ্রাম চলার সময় ঘটা ক্র্যাশের কথা ভাবো।
5
অ্যালগরিদমের 'সসীমতা' (Finiteness) শর্তটির অর্থ কী?
উত্তর ও ব্যাখ্যা দেখুন
উত্তর: অ্যালগরিদমটি অবশ্যই নির্দিষ্ট ও সীমিত সংখ্যক ধাপের পর সমাপ্ত হতে হবে, এটি কখনোই অসীমকাল চলতে পারবে না।
ধাপের সংখ্যা ও সমাপ্তি সম্পর্কে ভাবো।
অধ্যায় পড়া শেষ হয়েছে?
অনুশীলন শুরু করো

অনলাইন মক টেস্ট দিয়ে প্রস্তুতি যাচাই করো

পশ্চিমবঙ্গ মধ্যশিক্ষা পর্ষদ (WBBSE) পাঠ্যক্রম অনুযায়ী বহু বিকল্পীয় প্রশ্ন (MCQ) সমাধান করো। তাৎক্ষণিক ফলাফল, সঠিক ব্যাখ্যা এবং নিজের স্কোর জেনে নাও।