সপ্তম শ্রেণি (মাধ্যমিক) - ডিজিটাল ও তথ্য প্রযুক্তি - NCTB BOOK

মানুষ দৈনন্দিন জীবনে কত রকম সমস্যার সম্মুখীন হয়! কিছু সমস্যার হয়তো নিয়মিত সম্মুখীন হতে হয় এবং সেটার সমাধান করতে হয়। আবার কিছু সমস্যা হয়তো নিয়মিত আসে না, কিন্তু হঠাৎ হঠাৎ উদয় হয়! আবার আমাদের সবার জীবনে কিন্তু একই রকম সমস্যার আগমন হয় না!

আগে যেকোনো সমস্যা মানুষকে নিজ হাতে সমাধান করতে হতো। এখন সমস্যার সমাধানে বিভিন্ন প্রযুক্তির ব্যবহার বাড়ছে। ফলে মানুষের জীবন আগের চেয়ে আরামদায়ক হচ্ছে। আমরা এই শিখন অভিজ্ঞতায় দেখব কীভাবে আমাদের চারপাশে থাকা বিভিন্ন বাস্তব সমস্যার সমাধান করার জন্য আমরা প্রযুক্তির সাহায্য নিতে পারি।

বিভিন্ন প্রযুক্তির মধ্যে রোবট এখন জনপ্রিয় হচ্ছে। কারণ, রোবট দিয়ে মানুষের প্রয়োজনীয় অনেক সমস্যার সমাধান খুব সহজেই করা যায়। রোবটকে কাজ করার জন্য নির্দেশ মানুষই শিখিয়ে দেয়।

আমরা এর আগে ষষ্ঠ শ্রেণিতে অ্যালগরিদম নিয়ে কাজ করেছিলাম। এবারে আমরা অ্যালগরিদম থেকে প্রবাহচিত্র তৈরি করব, তারপর সেই প্রবাহচিত্র থেকে রোবটের বোঝার উপযোগী সুডো কোডে রূপান্তর করব। সুডো কোড সম্পর্কে আমরা এখনও জানি না, কিন্তু এই শিখন অভিজ্ঞতা সম্পন্ন করার পর জেনে যাব। আচ্ছা, কেমন হয় যদি আমরা নিজেরাই এক একটি রোবট হয়ে যাই? রোবটের জন্য তৈরি করা সুডো কোডের নির্দেশ কি আমরা নিজেরাও বুঝতে পারব? এই শিখন অভিজ্ঞতায় আমরা নিজেরা রোবট সেজে সেই রহস্য উদঘাটনের চেষ্টা করব।

 

সেশন ১ - হরেক রকম বাস্তব সমস্যা

যেকোনো সমস্যা যেটা নিজেদের জীবনে মানুষ সম্মুখীন হয় সেটাই একটি বাস্তব সমস্যা। ‘মেঘা' নামের একটি মেয়ে ও তার সহপাঠীরা এরকম একটি বাস্তব সমস্যার সম্মুখীন হয়েছে। আসো আমরা মেঘার গল্প থেকে সেটি জেনে নিই—

মেঘা সপ্তম শ্রেণির একজন শিক্ষার্থী। একদিন ক্লাসের বিরতির সময় মেঘা উদাস বসে কিছু ভাবছিল।

তখন মেঘার বন্ধু জিসান এসে বলল, “কি রে সবাই গল্প করছে, আর তুই একা বসে বসে কী ভাবছিস?” তখন মেঘা বলল ‘আচ্ছা সবাইকেই জানাব, সবাইকে আমার কাছে আসতে বলো।'

মেঘার সব সহপাঠী অধীর আগ্রহে অপেক্ষা করছে মেঘা কী বলবে শোনার জন্য। তখন মেঘা শুরু করল, ‘আমি আজ ভোরে শীতে কাঁপতে কাঁপতে সোয়েটার পরে বিদ্যালয়ে আসছিলাম। তোরা তো জানিস

কয়েক দিন ধরে কেমন ঠাণ্ডা পড়ছে! এমন সময়ে দেখলাম দু'জন মানুষ, তাদের গায়ে কোনো গরম কাপড় নেই! ঠাণ্ডায় অনেক কষ্ট হচ্ছিল ওনাদের। আমাদের আশপাশে কত মানুষ আছে যাদের গরম কাপড় কেনার আর্থিক সামর্থ্য নেই! প্রতিবছর শীতকালে তারা কত কষ্ট করেন। আমরা কি এই সমস্যা সমাধানে কিছুই করতে পারি না?'

এই কথা শুনে মেঘার এক বন্ধু রিয়া বলল, ‘এটা তো আমি কখনও ভাবিনি। আমরা তো চাইলে একটা শীতবস্ত্র বিতরণ কর্মসূচি করতে পারি। তাহলে বেশকিছু মানুষ উপকৃত হবে যাদের এমন গরম কাপড় প্রয়োজন।'

মেঘা শুনে খুশি হয়ে বলল, ‘তাহলে তো আমাদের এখন বের করা উচিত এই কাজটা আমরা কীভাবে করব আর সেখানে আমাদের কী কী চ্যালেঞ্জ থাকবে।'

এবার আরেক বন্ধু হাশেম বলল, ‘সবার আগে চ্যালেঞ্জ হলো আর্থিক। আমাদের বেশকিছু গরম কাপড় জোগাড় করতে হবে। এ জন্য আমরা একটা প্রচারণা করতে পারি। যেন যাদের আর্থিক সামর্থ আছে তারা টাকা দিয়ে অথবা তাদের বাসায় থাকা পুরোনো ব্যবহারের উপযোগী শীতবস্ত্র দিয়ে আমাদের এই উদ্যোগে সাহায্য করতে পারেন।'

এ কথা শুনে বন্ধু নেহা বলল ‘দেখ হাশেম আমি তোর সঙ্গে একমত। কিন্তু আমাদের আরেকটা গুরুত্বপূর্ণ দিক হলো সামাজিক অবস্থার কথা চিন্তা করা। সবার তো গরম কাপড় প্রয়োজন হবে না। আমরা ঠিক কাদের জন্য এই শীতবস্ত্র বিতরণ করব? অর্থাৎ সমাজের কোনো অংশের মানুষের জন্য আমাদের এই কর্মসূচি হবে সেটা নির্ধারণ করার জন্য আমাদের একটা জরিপ করতে হবে। সেই জরিপ থেকে আমরা বের করব সমাজের কোনো মানুষগুলোর গরম কাপড়ের অভাব আছে, তাই এই সমস্যার সমাধানে কাজ করার সময় একটা সামাজিক নির্ভরশীলতাও আছে।'

এবারে মেঘা বলল, ‘আমাদের আরও একটা ব্যাপার খেয়াল রাখতে হবে। শীতবস্ত্র সংগ্রহ করার পর ও কাদের প্রদান করা হবে সেই জরিপ করার পর আমাদের একটা ব্যবহারিক দিক নিয়ে ভাবতে হবে। যাদের জন্য শীতবস্ত্র বিতরণ করা হবে, তাদের মধ্যে সুষ্ঠুভাবে বিতরণের জন্য একটা নির্দিষ্ট স্থান নির্বাচন করতে হবে। আমরা চাইলে আমাদের বিদ্যালয় ব্যবহারের জন্যও অনুমতি নিতে পারি। বিদ্যালয় কর্তৃপক্ষের অনুমতি নেবার পর যাদের মধ্যে আমরা শীতবস্ত্র বিতরণ করব, তাদের শীতবস্ত্র গ্রহণের দিন, সময় ও স্থান জানিয়ে দিতে হবে। এরপর নির্ধারিত দিনে বিতরণ কর্মসূচি বাস্তবায়ন করতে হবে।'

এমন সময়ে রায়হান বলল, ‘আরও একটা দিক আছে। আমরা যদি বেশকিছু মানুষের মধ্যে শীতবস্ত্র বিতরণ করি, কাদের মধ্যে বিতরণ করব, তাদের তালিকা ঠিকমতো হিসাব-নিকাশ রাখতে হবে। যেন তালিকা থেকে কেউ বাদ না পড়ে আবার ভুলে একই ব্যক্তির কাছে দুইবার কাপড় বিতরণ না হয়। কাজেই এখানে একটা কারিগরি দিক আমাদের মাথায় রাখতে হবে। আমরা কাগজে-কলমে লিখে তালিকা নিয়ে কাজ করলে হিসাবে ভুল হতে পারে। তাই আমাদের উচিত একটি স্প্রেডশিট সফটওয়্যার ব্যবহার করা, যেখানে আমরা তালিকা এন্ট্রি করে রাখব ও কে কে শীতবস্ত্র নিয়ে গেল সেটি হিসাব রাখব।'

এবারে প্রিয়া বলল, ‘হ্যা আমাদের শীতবস্ত্র বিতরণ কর্মসূচির বেশকিছু দিক আমরা ভেবে ফেলেছি। তবে যেদিন আমরা বিতরণ 

করব, সেদিনের আবহাওয়া তথা পরিবেশের কথাও আমাদের মাথায় রাখতে হবে। আমরা আগে থেকে আবহাওয়ার পূর্বাভাস জেনে রাখব, যেন সেদিন বৃষ্টির বা অন্য কোনো কিছুর সম্ভাবনা আছে কি না, সেটা জেনে প্রস্তুত থাকতে পারি। নইলে তো পুরো শীতবস্ত্র বিতরণ কর্মসূচি বিঘ্ন হতে পারে!' মেঘা এবারে বলল, ‘বন্ধুরা আমি এখন খুব খুশি। সকালে যেই সমস্যা নিয়ে আমি এত কষ্ট পাচ্ছিলাম, আমরা সবাই মিলে আলোচনা করে সেটা সমাধান করার জন্য উপায় বের করে ফেলেছি। এখন আমাদের হাতে অনেক কাজ। সবাই মিলে দায়িত্ব ভাগ করে নিই, কে কোনো কাজ করবে। আশা করি, আমরা এই কাজে সফল হবই!'

উপরে আমরা মেঘা ও তার বন্ধুদের শীতবস্ত্র বিতরণ কর্মসূচি নিয়ে জানতে পারলাম। ওরা যখন এই কর্মসূচি হাতে নিয়েছে, তখন ওদের সমস্যা সমাধানের জন্য পাঁচটি দিক নিয়েও ভাবতে হয়েছে। এগুলো হলো – অর্থনৈতিক, সামাজিক, ব্যবহারিক, কারিগরি ও পরিবেশগত দিক। সত্যি বলতে যেকোনো বাস্তব সমস্যার ক্ষেত্রেই এ রকম বেশকিছু দিক বা চ্যালেঞ্জের সম্মুখীন আমরা হতে পারি। তবে সব বাস্তব সমস্যার ক্ষেত্রেই পাঁচটি দিকই থাকবে এমন কিন্তু নয়! কোনো সমস্যা হয়তো শুধু একটি দিকের উপর নির্ভরশীল, কোনোটি হয়তো একাধিক দিকের উপর নির্ভরশীল। তবে আমরা এখন থেকে যেকোনো সমস্যা নিয়ে কাজ করার সময়ে সেটি এই পাঁচটি দিকের সঙ্গে নির্ভরশীল কি না, সেটি যাচাই করে নেব, তাহলে সমাধান করতেও সুবিধা হবে। এবারে একটি কাজ করি, নতুন একটি সমস্যা নিয়ে ভাবি। ধরি, নতুন একটি অপরিচিত জায়গায় আমরা ঘুরতে যাব। এক্ষেত্রে কোনো কোনো দিকের উপর আমাদের নির্ভরশীলতা কাজ করবে? এবং সেই দিকগুলোয় ঠিক কী রকম নির্ভরশীলতা আসবে? সেটি নিচের ছকে লিখে ফেলি—

সমস্যার নাম – অপরিচিত নতুন জায়গায় ঘুরতে যাওয়া
নির্ভরশীলতার দিকঅর্থনৈতিকসামাজিকব্যবহারিককারিগরিপরিবেশগত

 

 

 

     

 

 

সেশন ২ – সমস্যা সমাধানে প্রযুক্তির ব্যবহার

বিভিন্ন প্রযুক্তির ব্যবহার মানব সভ্যতার জন্য একটি আশীর্বাদ। সঠিক সময়ে সমস্যা সমাধানে সঠিক প্রযুক্তি ব্যবহার করা উচিত। আমাদের চারপাশে এমন অনেক সমস্যা আছে যা আগে মানুষ নিজে নিজে সমাধান করত, কিন্তু এখন প্রযুক্তির ব্যবহারের কারণে সেটি সমাধান করা অনেক সহজ হয়ে গেছে। গত সেশনে আমরা অপরিচিত নতুন জায়গায় ঘুরতে যাওয়া নিয়ে ভেবেছি। অতীতে অপরিচিত জায়গায় ঘুরতে গেলে অবশ্যই আগে ঐ জায়গায় গিয়েছে এমন কারও থেকে সেই জায়গার ব্যাপারে ধারণা নিতে হতো। তার থেকে জেনে নিতে হতো কীভাবে আমরা সেই জায়গায় যেতে পারি, কত সময় লাগবে, কোন রাস্তার পর কোন রাস্তায় যেতে হবে ইত্যাদি।

তবে এখন এ ক্ষেত্রে সহজ সমাধান হলো কোনো ম্যাপ সফটওয়্যার ব্যবহার করা। এই ধরনের সফটওয়্যারে আমরা কোথায় আছি এবং গন্তব্য কোথায় সেটি লিখে দিলে আমাদের দেখিয়ে দেয় কত সময়ের মধ্যে আমরা পৌঁছাতে পারব, রাস্তায় কতটুকু যানজট আছে, কোনো রাস্তা দিয়ে গেলে যেতে সুবিধা হবে, কোনো যানবাহনে উঠলে যেতে কত সময় লাগবে আরও কত কী!

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

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

কথায় আছে ‘প্রয়োজনীয়তাই উদ্ভাবনের জনক।'

করোনা অতিমারির পূর্বে বিভিন্ন অনলাইন সভা করার সফটওয়্যারের চাহিদা তেমন ছিল না। কিন্তু করোনা অতিমারির সময় সারা পৃথিবীতেই ঘরে অবরুদ্ধ ছিল মানুষ। তাই এই সময় প্রয়োজন হয় জুম, গুগল মিট, মাইক্রোসফট টিম ইত্যাদি অনলাইন মিটিং সফটওয়্যার ব্যবহার করে অনলাইন ক্লাস, ব্যবসায়িক মিটিং ইত্যাদির আয়োজন করা। যদি এই প্রযুক্তি একটি বিকল্প হিসেবে না আসত, তাহলে করোনার সময়ে সারা পৃথিবীর অনেক কার্যক্রম স্থবির হয়ে যেতে পারত। কাজেই এ ক্ষেত্রে এই প্রযুক্তি অগণিত কাজে মানুষকে সাহায্য করেছে।

আবার অনেক সময় একটি সমস্যা সমাধানে কোনো প্রযুক্তি উদ্ভাবনের পরেও দেখা যায় সমস্যাটি সম্পূর্ণ সমাধান হয়নি বা সমাধানে কোনো ঘাটতি রয়ে গেছে। তখন সেই প্রযুক্তিকে হালনাগাদ বা আপগ্রেড করার প্রয়োজন হয়। যেমন আর্থিক লেনদেনের কথা ভাবি। আগে এক জায়গা থেকে অন্য জায়গায় টাকা পাঠানোর প্রক্রিয়া বেশ জটিল ছিল। মানি অর্ডার করে কারও কাছে টাকা পাঠালে তার কাছে টাকা পৌঁছাতে অনেক সময় লাগত।

বর্তমানে মোবাইলের মাধ্যমেই নির্দিষ্ট টাকা লেনদেনের প্লাটফর্মের মাধ্যমে নিমেষেই দেশের এক স্থান থেকে অন্য স্থানে টাকা পাঠানো যায়। তবে প্রথম যখন এই ধরনের টাকা লেনদেন সার্ভিস চালু হয়েছিল, একটি সমস্যা হতো। ধরো আমরা আমাদের ৫০০ টাকা নিজের অ্যাকাউন্ট থেকেই উত্তোলন করব। এ জন্য টাকা লেনদেনের নির্দিষ্ট এজেন্টের কাছে গিয়ে সেই এজেন্টের মোবাইল ফোন নাম্বারে প্রথমে আমাদের টাকা ক্যাশ আউটের জন্য পাঠাতে হবে।

এজেন্ট টাকা নিজের অ্যাকাউন্টে বুঝে পেলে আমাদের টাকা দিয়ে দেবেন। সমস্যা হচ্ছে যদি এজেন্টের মোবাইল ফোন নাম্বার টাইপ করার সময়ে আমরা কোনো ভুল করে ফেলি, তাহলে ঐ এজেন্টের কাছে টাকা না গিয়ে ভুল কোনো নাম্বারে টাকা চলে যাবে। এতে আমাদের ক্ষতি হবে। প্রথম দিকে মানুষ এভাবেই ভুল নম্বরে টাকা পাঠিয়ে বিপদে পড়ত।

এই সমস্যাকেও কিন্তু আবার প্রযুক্তির সাহায্যেই সমাধান করা হয়েছে ! এখন যেকোনো মোবাইল নাম্বারে টাকা লেনদেনের এজেন্টের দোকানে একটি কিউআর কোড (QR Code) কোড দেওয়া থাকে। মোবাইল সেটে থাকা টাকা পাঠানোর অ্যাপলিকেশনে এই কিউ আর কোড স্ক্যান করার সুবিধা থাকে। ফলে এজেন্টের নাম্বার ভুল টাইপ করার ভয় থাকে না। কিউ আর কোড স্ক্যান করার পর সঠিক নাম্বারে টাকা পাঠানো সুনিশ্চিত থাকে।

আবার শুধু টাকা কাউকে পাঠানো বা নিজে টাকা পাবার ক্ষেত্রে এই অ্যাপলিকেশনগুলো ব্যবহার করা যায় তা কিন্তু নয়! এগুলো দিয়ে বাসাবাড়ির ইলেক্ট্রিসিটি, পানি ইত্যাদি সংযোগের বিল প্রদান করা যায়, ফলে নির্দিষ্ট অফিসে গিয়ে লাইন ধরে বিল প্রদান করার ঝামেলা কমে গেছে। একটি প্রযুক্তি প্রথমে হয়তো নির্দিষ্ট একটি সমস্যার সমাধানের জন্যই উদ্ভাবন করা হয়, কিন্তু পরে একই প্রযুক্তি আরও বিভিন্ন জায়গায় কাজে লাগানো যায়!

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

২০২২ সালে সীতাকুণ্ডে লাগা আগুন নেভানোর কাজে বাংলাদেশ ফায়ার সার্ভিস ও সিভিল ডিফেন্স বাহিনী প্রথমবারের মতো রোবটের ব্যবহার করে।

এ রকম আরও বিভিন্ন রোবটবিষয়ক প্রযুক্তির ব্যবহার ক্রমাগত বৃদ্ধি পাচ্ছে।

এভাবে যেকোনো সমস্যার জন্যই আমরা প্রযুক্তির সাহায্য নিয়ে সমাধানের উপায় বের করতে পারি।

 

আগামী সেশনের প্রস্তুতি

বাসায় গিয়ে আমরা কিছু বাস্তব সমস্যা খুঁজে বের করার চেষ্টা করব, যেই সমস্যাগুলো বিভিন্ন প্রযুক্তি ব্যবহার করে সমাধান করা সম্ভব। বিশেষ করে কোনো নির্দিষ্ট রোবট দিয়ে সমাধান করা যাবে এমন সমস্যাগুলো তুমি খুঁজে বের করার চেষ্টা করতে পারো।

এমন পাঁচটি সমস্যার কথা নিচের ছকে লিখে ফেলি—

১.

 

২.

 

৩.

 

৪.

 

৫.

 

 

 

সেশন ৩ - সমস্যা সমাধানের অ্যালগরিদম বানাই

আমরা বাসায় গিয়ে বেশকিছু সমস্যার তালিকা তৈরি করেছিলাম যে সমস্যাগুলো প্রযুক্তির মাধ্যমে সমাধান করা সম্ভব। এবারে আমরা একটি সমস্যা নির্বাচন করে সেটি সমাধানের ধাপগুলো অর্থাৎ অ্যালগরিদম লিখব। তার আগে নিচের কাজগুলো সম্পন্ন করতে হবে—

১. শিক্ষক পুরো ক্লাসের সবাইকে নিয়ে মোট ছয়টি ভিন্ন দলে ভাগ করে দেবেন।

২. প্রতিটি দলের সকল সদস্য নিজেদের লেখা বিভিন্ন সমস্যা যেগুলো প্রযুক্তি দিয়ে (বিশেষ করে কোনো রোবট দিয়ে) সমাধান করা যায় সেগুলোর তালিকা একসঙ্গে করবে।

৩. এবারে নিজেরা মিলে আলোচনা করে সিদ্ধান্ত নেবে একটি সমস্যা বাছাই করতে। এই সমস্যা নিয়েই পরবর্তী সেশনগুলোতে আমরা কাজ করব।

৪. সমস্যা নির্বাচনের ক্ষেত্রে কোনো সমস্যা দলের একাধিক শিক্ষার্থীর তালিকায় ছিল সেটিকে প্রাধান্য দেওয়া যেতে পারে।

৫. এবারে নির্বাচন করা সমস্যা সমাধানের ধাপগুলো অর্থাৎ অ্যালগরিদম আলোচনা করে লিখে ফেলি। মনে রাখতে হবে, অ্যালগরিদম এমনভাবে লিখতে হবে যেন একটি রোবটকে সেই অ্যালগরিদম দিলে অ্যালগরিদমের ধাপগুলো অনুসরণ করে রোবটটি পুরো কাজটি করে ফেলতে পারে।

যেমন আমরা এর আগে আগুন নেভানোর জন্য রোবটের ব্যবহার সম্পর্কে জেনেছিলাম। তুমি যদি আগুন নেভানোর একটি রোবট হতে তাহলে তোমার কাজ করার অ্যালগরিদম কেমন হতো?

এ ক্ষেত্রে আমাদের অ্যালগরিদম হবে পরের পাতার মতো -

সমস্যা – আগুন নেভানোর জন্য রোবট ব্যবহার করা

অ্যালগরিদম -

১ম ধাপ। প্রথমে রোবট চালু করি;

২য় ধাপ। রোবটের ক্যামেরা দিয়ে সামনের অবস্থা দেখি; 

৩য় ধাপ। যদি দেখি কোথাও আগুন দেখা যাচ্ছে না তাহলে ৪র্থ ধাপে চলে যাই। আর যদি দেখি | সামনে আগুন দেখা যাচ্ছে, তাহলে রোবটের পাইপ দিয়ে পানিপ্রবাহ করি, আগুন না নেভা পর্যন্ত পানি | ঢালতে থাকি । 

৪র্থ ধাপ। কাজ শেষ ।

এবারে নিজেদের দলের নির্বাচন করা সমস্যার বিষয়বস্তু ও সমাধানের অ্যালগরিদম লিখে ফেলি—

সমস্যা-

অ্যালগরিদম-

 

 

 

 

 

 

 

 

 

 

 

সেশন ৪ - চল প্রবাহচিত্র বানাই

এর আগে ষষ্ঠ শ্রেণিতে আমরা প্রবাহচিত্র (Flow Chart) তৈরি করা দেখেছিলাম। তবে সেগুলো ছিল খুবই সরল প্রবাহচিত্র। কোনো যন্ত্রকে প্রোগ্রাম করার বা নির্দেশনা বুঝিয়ে দেবার জন্য মূলত দুটি ধাপ আছে। প্রথমটি প্রবাহচিত্র তৈরি করা; যেন আমাদের নির্দেশনাগুলো যন্ত্রের বোঝার উপযোগী হয়, এরপর সেই প্রবাহচিত্র অনুযায়ী প্রোগ্রাম লিখতে হয়।

প্রবাহচিত্র আঁকার সবচেয়ে বড় সুবিধা হলো ছবি দেখেই একনজরে পুরো নির্দেশনার ধাপগুলো সহজে বোঝা যায়। ফলে যন্ত্রকে পুরো নির্দেশনা বোঝানো সহজ হয়।

আবার যদি আবার নির্দেশনার ধাপে কোনো ভুল থাকে, সেটি সব সময় অ্যালগরিদম থেকে সহজে শনাক্ত করা যায় না। কিন্তু সেই তুলনায় প্রবাহচিত্র থেকে সহজে এ রকম ভুল ধরা যায় যে পুরো নির্দেশনার কোনো অংশে কী ভুল হচ্ছে।

আবার নির্দেশনায় কোনো পরিবর্তন আনার ক্ষেত্রেও প্রবাহচিত্র ব্যবহার করলে পরিবর্তন আনা সহজ হয়। তবে প্রবাহচিত্রের কোনো সমস্যা থাকে না তা-ও নয়।

আমাদের তৈরি করা নির্দেশনার ধাপ যদি অনেক বেশি জটিল হয়, তাহলে পুরো নির্দেশনা প্রবাহচিত্রে উপস্থাপন করা বেশ কঠিন হয়ে যাবে। এ জন্য নির্দেশনার ধাপ অনেক বেশি জটিল হলে তখন প্রবাহচিত্র ব্যবহার সব সময় সম্ভব হয় না।

আমরা ষষ্ঠ শ্রেণিতে যে সরল প্রবাহচিত্রগুলো দেখেছিলাম, সেখানে মূলত তীর চিহ্ন দিয়ে পুরো নির্দেশনার শুরু থেকে শেষ পর্যন্ত সরলরৈখিকভাবে বিভিন্ন নির্দেশনা দেখানো হয়েছিল; যা একটি অ্যালগরিদম থেকে খুব বেশি ভিন্ন নয়।

কিন্তু একটি প্রবাহচিত্রে শুরু ও শেষের মাঝে বিভিন্ন রকম পরিস্থিতির উদ্ভব হতে পারে। কোনো নির্দিষ্ট তথ্য ইনপুট বা আউটপুট দিতে হতে পারে, কোনো সিদ্ধান্ত নেওয়া প্রয়োজন হতে পারে, অন্য কোনো কাজ সম্পাদন করা প্রয়োজন হতে পারে ইত্যাদি।

ইনপুট আর আউটপুট শব্দ দুটি তুমি কি কখনও শুনেছ? ইনপুট মানে হলো বাইরে থেকে কোনো তথ্য গ্রহণ করা। যেমন ধরি আমি চোখ দিয়ে একটা সাদা বিড়াল দেখতে পাচ্ছি। বিড়াল কিন্তু আমার চোখের বাইরে ছিল। বিড়ালটির রং কী সেই তথ্য আমার চোখ গ্রহণ করেছে। বিড়ালের রং সাদা— এই তথ্যটি হলো চোখের ইনপুট ।

আবার বাইরের জগতে কোনো কাজ করে দেখালে সেটা হলো আউটপুট। যেমন তুমি যখন মুখ দিয়ে কথা বলো, মুখ থেকে শব্দ তৈরি হয়ে বাইরে যায়। এই যে শব্দ বা তথ্য বাইরে গেল মুখ থেকে, এই তথ্যটি হলো মুখের আউটপুট।

আমরা যন্ত্রের বোঝার উপযোগী যেই প্রবাহচিত্র তৈরি কর ব, সেখানে বেশকিছু প্রতীক আমাদের ব্যবহার করতে হবে-

প্রতীকঅর্থবিস্তারিত
শুরু/শেষএকটি কাজের শুরু বা শেষ বুঝাতে এই প্রতীক ব্যবহার করা হয়।
প্রসেসএকদম বেসিক কোনো প্রসেস বা ধাপ দেখানোর সময় এই প্রতীক ব্যবহার করা হয়।
সিদ্ধান্তযেকোনো সিদ্ধান্ত নেবার সময় এই প্রতীক ব্যবহার করা হয়।
ইনপুট/ আউটপুটকোনো ডাটা ইনপুট নেবার জন্য বা আউটপুট প্রদানের জন্য ব্যবহার করা হয়।
সংযোগকারীপ্রবাহচিত্রে এক ধাপের সঙ্গে অন্য ধাপকে একসঙ্গে যুক্ত করা প্রয়োজন হলে এই প্রতীক ব্যবহার করা হয়।
প্রবাহের দিকএই দিক দিয়ে একটি ধাপের পর কোনো ধাপ অনুসরণ হচ্ছে সেটি বোঝা যায়।

এর বাইরেও আরও বিভিন্ন প্রতীক আছে প্রবাহচিত্র আঁকার জন্য। সেগুলো পরবর্তী শ্রেণিসমূহে প্ৰয়োজন হলে তখন আমরা শিখে নেব।

এখন আবার আগের সেশনে শিখে আসা রোবট দিয়ে আগুন নেভানোর অ্যালগরিদমের কথা ভাবি।

তুমি যদি নিজে একটি আগুন নেভানোর রোবট হতে, তাহলে আগে তৈরি করা অ্যালগরিদমকে আমরা প্রবাহচিত্রে রূপান্তর করলে দেখতে কেমন হবে?

সমস্যা—আগুন নেভানোর জন্য রোবট ব্যবহার করা

প্রবাহচিত্র -

 

 

সেশন ৫ - নিজেদের তৈরি অ্যালগরিদমকে প্রবাহচিত্রে রূপান্তর

আমরা এর আগে দেখেছি কীভাবে অ্যালগরিদম থেকে সহজেই প্রবাহচিত্রে রূপান্তর করা যায়। প্রবাহচিত্রে অ্যালগরিদমের মতো এত বিস্তারিত নির্দেশনা লেখার প্রয়োজন হয়নি।

বরং আমরা যে বিভিন্ন প্রতীক ব্যবহার করছি তার কারণেই বোঝা যাচ্ছে কোন ধাপে কোন কাজ হচ্ছে। এবারে আমরা নিজেরা দলগতভাবে যে সমস্যা নির্ধারণ করেছিলাম, সেই সমস্যা থেকে তৈরি করা আমাদের অ্যালগরিদমকে প্রবাহচিত্রে রূপান্তর করব।

আমাদের তৈরি করা অ্যালগরিদমে নিশ্চয়ই বেশকিছু ধাপ আছে। কাজের সুবিধার্থে প্রথমে আমরা নির্ধারণ করে নিই কোন কোন ধাপে আমরা ইনপুট নিয়েছি বা আউটপুট দিয়েছি, কোন কোন ধাপে কী রকম সিদ্ধান্ত নেওয়া হয়েছে ও কোন কোন ধাপে শুধু সাধারণ তথ্য প্রসেস করা হয়েছে।

এরপর প্রবাহচিত্র সেই অনুযায়ী আমরা আঁকব—

সমস্যা -

বিভিন্ন ইনপুট / আউটপুট—

 

 

 

বিভিন্ন সিদ্ধান্তের ধাপ—

 

 

 

বিভিন্ন সাধারণ কাজ—

 

 

 

আমাদের প্রবাহচিত্র –

 

 

 

 

 

সেশন ৬ - যন্ত্র বুঝুক কথা

আগের সেশনে আমরা নিজেদের সমস্যার সমাধান নিয়ে প্রবাহচিত্র তৈরি করেছি। তবে কোনো যন্ত্রকে সরাসরি আসলে প্রবাহচিত্র ধরিয়ে দেওয়া হয় না। যন্ত্রকে নির্দিষ্ট কোনো প্রোগ্রাম অথবা কোড লিখে দিতে হয় যেখানে কাজের ধাপগুলো যন্ত্রের বোঝার উপযোগী করে লেখা থাকে।

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

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

সাধারণত একটা প্রোগ্রামিং ভাষায় কিছু নির্দিষ্ট নিয়ম অনুসরণ করে মানুষের বোঝার উপযোগী (যেমন ইংরেজি বা বাংলা ইত্যাদি) ভাষায় করে যন্ত্র বুঝতে পারে এমন করে নির্দেশনা লেখা হয়। এরপর সেই নির্দেশ যন্ত্রের কাছে পাঠানো হলে যন্ত্র সেটিকে খুব সহজে মেশিন কোডে রূপান্তর করে নেয় ও নির্দেশ অনুসরণ করে কাজ করে। প্রশ্ন আসতে পারে কোনো প্রোগ্রামিং ভাষাটি শিখব?

আসলে যেকোনো একটি প্রোগ্রামিং ভাষা শিখে যন্ত্রকে নির্দেশ দেওয়া শুরু করা যেতে পারে। একটি শেখা গেলে তারপর অন্যগুলো শেখা অনেক সহজ হয়ে যাবে আমাদের জন্য। আমরা এখনই সরাসরি নির্দিষ্ট কোনো প্রোগ্রামিং ভাষা শিখতে যাচ্ছি না। তার পরিবর্তে যেকোনো প্রোগ্রামিং ভাষায় সহজে রূপান্তর করা যাবে এমন সুডো কোড (pseudo code) আমরা তৈরি করা শিখব।

সুডো কোড জিনিসটা কী? সুডো মানে হলো অনুরূপ বা ছদ্ম।

মূলত সুডো কোড হচ্ছে অ্যালগরিদমকে মানুষের বোঝার উপযোগী ভাষায় এমনভাবে সংকেত বা কোড আকারে প্রকাশ করা, যেটি থেকে সহজেই যেকোনো প্রোগ্রামিং ভাষায় পুরো নির্দেশমালাকে রূপান্তর করা যাবে।

তবে খেয়াল রাখতে হবে সুডো কোড কিন্তু সত্যিকারের একটি প্রোগ্রাম নয়। তাই কোনো প্রোগ্রামিং ভাষায় না লিখে শুধু সুডো কোড লিখে দিলে যন্ত্র সেটি বুঝতে পারবে না। সুডো কোড যেকোনো সময়ে যেকোনো প্রোগ্রামিং ভাষায় রূপান্তর করা যায়, এটাই সবচেয়ে বড় সুবিধা।

আমরা যদি আমাদের রোবট দিয়ে আগুন নিভানোর প্রবাহচিত্রকে সুডো কোডে রূপান্তর করতে যাই, তাহলে কিছু জিনিস ভেবে নিতে হবে।

প্রথমতো, সকল ইনপুট বা আউটপুটকে নির্দিষ্ট চলক (ক, খ, গ ইত্যাদি) দিয়ে প্রকাশ করতে হবে। আবার কোনো সিদ্ধান্ত নেবার সময় ‘যদি' ও ‘অন্যথায়’ দিয়ে প্রকাশ করব।

আর কোনো কাজ সম্পন্ন করার সময় (যেমন আগুন নিভাচ্ছি) সেটাকে একটা ফাংশন হিসেবে () চিহ্ন দিয়ে

ফাংশন মানে হলো নির্দিষ্ট কিছু ধাপ অনুসরণ করে নির্ধারিত একটি কাজ শেষ করা।

যেমন আগুন নিভানোর ফাংশন হতে পারে আগুন নিভাই()

সুডো কোডটি দেখতে এমন হবে—

শুরু

ক = ক্যামেরা

যদি ক = হ্যাঁ হয়, আগুন নিভাই () এরপর শেষ

অন্যথায় শেষ

তাহলে কত সহজে একটি সুডো কোড দিয়ে আমরা পুরো কাজটি দেখিয়ে দিলাম!

এবারে আমরা একইভাবে নিজেদের দলের তৈরি করা প্রবাহচিত্রকে সুডো কোডে রূপান্তর করে ফেলি—

 

 

সেশন ৭— কাগজ দিয়ে রোবট বানাই

আমরা এই শিখনফলে একটি বাস্তব সমস্যা নিয়ে কাজ করা শুরু করে সেটিকে সমাধানের জন্য অ্যালগরিদম তৈরি করেছি, প্রবাহচিত্র তৈরি করেছি ও সুডো কোড তৈরি করেছি। কিন্তু সুডো কোড তৈরি করলাম কার জন্য? একটি যন্ত্রকে দিয়ে সমস্যার সমাধান করার জন্য তো তাই না?

তাহলে একটা যন্ত্র বা রোবট না বানালে কীভাবে চলে! এবারে আমরা একটি রোবট তৈরি করব কাগজ কেটে। আর এজন্য আমরা ব্যবহার করব প্রবাহচিত্রের বিভিন্ন প্রতীককে! পরের পৃষ্ঠায় আমাদের এই জন্য একটি প্রবাহচিত্র তৈরি করাই আছে! সেটিকে অনুসরণ করে আমরা এই রোবট তৈরি করব!

প্রয়োজনীয় উপকরণ- কাঁচি ও আঠা।

আশা করি, প্রবাহচিত্র দেখেই বুঝতে পারছ কীভাবে আমাদের কাগজের রোবট তৈরি করতে হবে। এখানে একই প্রতীক একাধিক দেওয়া আছে। পছন্দমতো যে প্রতীক যতগুলো খুশি ব্যবহার করে দলগতভাবে নিজেদের পছন্দমতো কাগজের রোবট তৈরি করে ফেলো।

মজার জিনিস হচ্ছে আমরা নিজেরা এই কাজটা করছি, তাই এই প্রবাহচিত্রে দেয়া নির্দেশনা অনুসরণ করে পছন্দমত প্রতীক কেটে কাগজের রোবট তৈরি করে নিচ্ছি। তবে কম্পিউটার নিজে এমনভাবে পছন্দমত প্রতীক আলাদা করে নিতে পারতো না। এমন করার জন্য কম্পিউটারকে আগে থেকে শিখিয়ে নিতে হয় কোনটা কি প্রতীক ও দেখতে কেমন হয়

 

 

সেশন ৮ - রোবটে সুডো কোড চালাই

গত দুটি সেশনে আমরা নিজেদের নির্বাচন করা সমস্যার সমাধান থেকে সুডো কোড তৈরি করেছি এবং পাশাপাশি একটি কাগজের রোবট তৈরি করেছি প্রবাহচিত্র অনুসরণ করে।

কিন্তু আমাদের তৈরি করা সুডো কোড ঠিক আছে কি না বা সেটি আসলেই রোবটের বোধগম্য হয়েছে কি না, সেটি তো যাচাই করতে হবে!

তাই এবারে আমরা একটি খেলা খেলব রোবটে সুডো কোড চালানোর জন্য। প্রথমেই আমরা এই খেলার নিয়ম জেনে নিই-

১. দুটি করে দল পরস্পর মুখোমুখি হবে। তাদের হাতে নিজেদের তৈরি করা সুডো কোড ও নিজেদের দলের কাগজের রোবট থাকবে।

২. এবারে শুরু হবে মজার খেলা।

একটি দল তাদের তৈরি সুডো কোড অন্য দলটির কাছে হস্তান্তর করবে। পাশাপাশি কোনো সমস্যার সমাধানের জন্য সুডো কোডটি তৈরি করা হয়েছিল সেটিও কাগজে লিখে দেবে।

৩. অন্য দলের কাছ থেকে পাওয়া সুডো কোড পাবার পর আমরা রোবটের অভিনয় করব। নিজেকে রোবট হিসেবে চিন্তা করব।

৪. আমি যদি রোবট হতাম, তাহলে আমার কাছে থাকা বর্তমান সুডো কোড অনুসরণ করে কি নির্ধারিত সেই সমস্যা আসলেই সমাধান করতে পারতাম? সেটি যাচাই করে দেখব আমরা। 

৫. সুডো কোডে দেওয়া প্রতিটি ধাপ অনুসরণ করে কাজটি সফলভাবে সম্পন্ন করতে পারলে তখন নিচের ছক পূরণ করে ফেলব

প্ৰশ্নযাচাই ( হ্যাঁ বা না লিখি)
পুরো সুডো কোড কি বুঝতে পেরেছি? 
সুডো কোড অনুসরণ করে পুরো কাজ কি করা গেছে? 
সুডো কোডে কোন নির্দিষ্ট ইনপুট বা আউটপুট কি পেয়েছি? 
সুডো কোডে কোথাও কি কোনো সিদ্ধান্ত নিতে হয়েছে? 
আমাদের কি মনে হয় এর চেয়ে আরও কম ধাপে পুরো সুডো কোড সম্পন্ন করা যেত? 
সুডো কোডে এমন কোন ধাপ কি বাদ পড়েছে যেটা অবশ্যই প্রয়োজনীয় ছিল? 

৬. এই ছকের অধিকাংশ ধাপের উত্তর যদি সন্তোষজনক হয়, তাহলে অন্য দলটিকে অভিনন্দন জানাই। আর আমাদের দলের তৈরি করা কাগজের রোবট উপহার হিসেবে অন্য দলটিকে প্রদান করি।

তাহুলে সব দলই যদি সফলভাবে সুডো কোড সম্পন্ন করে থাকে, প্রতিটি দলই নিজের দলের তৈরি করা কাগজের রোবটের পরিবর্তে নতুন একটি কাগজের রোবট উপহার পাবে!

কি দারুণ না?

এভাবে আমরা কিন্তু যেকোনো বাস্তব সমস্যার সমাধানের জন্যই প্রযুক্তির সাহায্য নিতে প্রয়োজনীয় অ্যালগরিদম, প্রবাহচিত্র ও সুডো কোড তৈরি করতে পারি।

প্রয়োজনে যেকোনো সময় শিক্ষকের পরামর্শও নিতে পারি এই কাজগুলো করার জন্য।

Content added By