HSC ICT Chaper 5 Part 2

HSC ICT Chapter 5 Part 2 Main Point: অ্যালগরিদম (Algorithm) কি?, ফ্লোচার্ট বা প্রবাহ চিত্র (Flow Chart) কি?, প্রােগ্রাম ফ্লোচার্ট (Program Flowchart) কি?, সিস্টেম ফ্লোচার্ট (System Flowchart) কি?, সূডোকোড (Pseudocode) কি?, স্ট্রাকচার্ড প্রােগ্রামিং (Structured Programing) কি?, অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং (Object Oriented Programming-OOP) কি?, ভিজুয়্যাল প্রােগ্রামিং (Visual Programming) কি?, ইভেন্ট ড্রাইভেন প্রােগ্রামিং (Event Driven Programming) কি?


অ্যালগরিদম (Algorithm) কি?

অ্যালগরিদম (Algorithm): কোন নির্দিষ্ট সমস্যা সমাধানের জন্য ধাপে ধাপে সমাধান করার পদ্ধতিকে অ্যালগরিদম বলা হয়। কোন সমস্যাকে কম্পিউটার প্রােগ্রামিং দ্বারা সমাধান করার পূর্বে কাগজে কলমে সমাধান করার জন্য অ্যালগরিদম ব্যবহার করা হয়।

অ্যালগরিদম তৈরির শর্ত বা নিয়মসমূহ:

  • সহজবােধ্য হতে হবে।
  • প্রত্যেকটি ধাপ স্পষ্ট হতে হবে যাতে সহজে বােঝা যায়।
  • এক বা একাধিক ইনপুট থাকতে হবে।
  • সসীম (নির্দিষ্ট) সংখ্যক ধাপে সমস্যা সমাধান হতে হবে।
  • অ্যালগরিদম ব্যাপকভাবে প্রয়ােগ উপযােগি হতে হবে ।
  • কমপক্ষে একটি আউটপুট থাকতে হবে।

অ্যালগরিদমের সুবিধাসমূহ:

  • সহজে প্রােগ্রামের উদ্দেশ্যে বােঝা যায়।
  • সহজে প্রােগ্রামের ভুল নির্ণয় করা যায়।
  • প্রােগ্রামের প্রবাহের দিক বােঝা যায়।
  • জটিল প্রােগ্রাম সহজে রচনা করা যায়।
  • প্রােগ্রাম পরিবর্তন সহজ হয়, ইত্যাদি।

ফ্লোচার্ট বা প্রবাহ চিত্র (Flow Chart) কি?

ফ্লোচার্ট বা প্রবাহ চিত্র (Flow Chart): বিশেষ কতকগুলাে চিহ্নের সাহায্যে চিত্রভিত্তিক কোন নির্দিষ্ট সমস্যার সমাধান করাই ফ্লোচার্ট বা প্রবাহ চিত্র। ফ্লোচার্টের সাহায্যে প্রােগ্রাম বােঝা সহজ হয় বলে এটি প্রােগ্রামার ও ব্যবহারকারীর মাঝে সংযােগ রক্ষার জন্য ব্যবহৃত হয়।

একটি আদর্শ ফ্লোচার্টের বৈশিষ্ট্যসমূহ-

  1. সহজে প্রােগ্রামের উদ্দেশ্য বােঝা যায়।
  2. প্রােগ্রামের ভুল নির্ণয়ে সহায়তা করে।
  3. প্রোগ্রাম রচনায় সহায়তা করে।
  4. প্রােগ্রাম পরিবর্তন এবং পরিবর্ধনে সহায়তা করে।
  5. সহজে ও সংক্ষেপে জটিল প্রােগ্রাম লেখা যায়, ইত্যাদি।

ফ্লোচার্ট তৈরি করার নিয়মাবলি(Rules of Drawing Flow Chart):

  • প্রচলিত প্রতীক ব্যবহার করা।
  • তীর চিহ্ন দিয়ে উপর থেকে নিচে বা বাম থেকে ডান দিকে প্রবাহ দেখানাে ।
  • সংযােগ চিহ্ন যত কম হয় ততই ভাল ।
  • সহজে বােধগম্য হওয়া উচিৎ।
  • চিহ্নগুলাে ছােট বড় হলে ক্ষতি নেই তবে আকৃতি ঠিক থাকতে হবে ।
  • প্রয়ােজনে চিহ্নের সাথে মন্তব্য দিতে হবে, ইত্যাদি।

ফ্লোচার্টের প্রকারভেদ: ফ্লোচার্টকে প্রধানত দুই ভাগে ভাগ করা যায় । যেমন:-

  1. প্রােগ্রাম ফ্লোচার্ট (program flowchart) ও
  2. সিস্টেম ফ্লোচার্ট (system flowchart)।

প্রােগ্রাম ফ্লোচার্ট (Program Flowchart) কি?

প্রােগ্রাম ফ্লোচার্ট (Program Flowchart): প্রোগ্রাম ফ্লোচার্টে প্রোগ্রামের বিভিন্ন ধাপের বিস্তারিত বিবরণ চিত্রের মাধ্যমে প্রদর্শিত হয়। প্রােগ্রাম ফ্লোচার্ট ব্যবহার করে প্রােগ্রাম রচনা করা হয়। এছাড়া প্রােগ্রামে ভূল নির্ণয় ও সংশোধনের জন্য এই ফ্লোচার্ট ব্যবহার করা হয় । প্রবাহ চিত্রে অনেক রকম প্রতীক চিহ্ন ব্যবহার করা হয়। তার মধ্যে বহুল ব্যবহৃত চিহ্নগুলাের বর্ণনা নিম্নরূপ:

প্রতীক (Symbol) অর্থ (Meaning)
flowchart of Start / End Start / End
flowchart of process Process
flowchart of pre process Predefined Process
flowchart of input / output Input / Output
flowchart of decision Decision
flowchart of connector Connector
flowchart of Sort note Sort Note
flowchart of direction of flow Direction of flow
flowchart of display Display
flowchart of direct memory access Direct Memory Access
flowchart of document Documentation

সিস্টেম ফ্লোচার্ট (System Flowchart) কি?

সিস্টেম ফ্লোচার্ট (System Flowchart): সিস্টেম ফ্লোচার্টে উপাত্ত গ্রহণ, প্রক্রিয়াকরণ, স্মৃতিতে সংরক্ষণও ফলাফল প্রদর্শনের প্রবাহ দেখানাে হয়। অর্থাৎ যে ফ্লোচার্টের মাধ্যমে কোন ব্যবস্থার সংগঠনকে সহজে তুলে ধরা যায় তাকে সিস্টেম ফ্লোচার্ট বলে।

ফ্লোচার্টের মৌলিক গঠন:

  1. সরল অনুক্রম (simple sequence)।
  2. নির্বাচন (selection)।
  3. লুপ বা চক্র (repetition or loop) ও
  4. জাম্প (jump)।

১। সরল অনুক্রম (Simple Sequence): একটি সরল স্ট্রাকচারে সকল নির্দেশগুলাে নির্বাহের অনুক্রমে সাজানাে থাকে।

২। নির্বাচন (Selection): যে সকল ক্ষেত্রে সিদ্ধান্তের প্রয়ােজন হয় বা তুলনা করে কার্যনির্বাহ করতে হয় সেক্ষেত্রে এই স্ট্রাকচার ব্যবহৃত হয়।

৩। লুপ বা চক্র (Repetition or loop): প্রােগ্রামে একই ধরনের কাজ বারবার করার প্রয়ােজন হলে লুপ বা চক্র ব্যবহার করা হয়।

৩। লুপ বা চক্র (Repetition or loop): প্রােগ্রামে একই ধরনের কাজ বারবার করার প্রয়ােজন হলে লুপ বা চক্র ব্যবহার করা হয়।


সূডোকোড (Pseudocode) কি?

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

তিনটি সংখ্যার গড় নির্ণয়ের সূডােকোড-
start
input x, y, z
total = x+y+z
average = total/3
output average
end


প্রােগ্রাম ডিজাইন মডেল (Program Design Model) কি?

প্রােগ্রাম ডিজাইন মডেল (Program Design Model): প্রােগ্রামের গঠন রীতিনীতিকে প্রােগ্রামের মডেল বলা হয়। সুচারুভাবে প্রােগ্রাম লেখা এবং সহজে বােঝার জন্য প্রােগ্রাম রচনার ক্ষেত্রে কয়েকটি মডেল ব্যবহার করা হয়। এই মডেল গুলো প্রোগ্রামের অনুধাবনযোগ্যতা বৃদ্ধি করে। উল্লেখযােগ্য কয়েকটি মডেল সম্পর্কে আলােচনা করা হলাে-

স্ট্রাকচার্ড প্রােগ্রামিং (Structured Programing) কি?

স্ট্রাকচার্ড প্রােগ্রামিং (Structured Programing): সর্বপ্রথম ডাচ কম্পিউটার বিজ্ঞানী এডগার ওয়েইবে ডেইকস্ট্রা (Edsger Wybe Dijkstra) বড় প্রােগ্রাম উন্নয়নের উদ্দেশ্যে স্ট্রাকচার্ড প্রােগ্রামিং এর ধারণা দেন। স্ট্রাকচার্ড মডেলে সম্পূর্ণ সমস্যাকে বিভিন্ন অংশ বা মডিউলে ভাগ করা হয়। প্রতিটি মডিউলকে ছােট আকারের সমস্যা সহজে সমাধান করা যায়। একবার কোন কোড লিখে তা একাধিকবার ব্যবহার করা যায়। এতে সময় অপচয় রােধ করা যায়। প্রােগ্রামের নির্দিষ্ট কাঠামাে থাকায় ডিবাগিং বা প্রােগ্রামের ভুল সংশােধন করা সহজ হয়। স্ট্রাকচার্ড প্রােগ্রামিং এ একটি মূল প্রােগ্রাম থাকে যা বিভিন্ন মডিউলকে কল করে। স্ট্রাকচার্ড প্রােগ্রামে তিন ধরনের কাঠামাে ব্যবহৃত হয়ে থাকে। যথা:-

  1. পর্যায়ক্রমিক কাঠামাে: এ কাঠামােতে প্রােগ্রামের বা মডিউলের একটির পর একটি নির্দেশ ধারাবাহিকভাবে নির্বাহ হয়। নির্দেশের ধারাবাহিকতা বা পর্যায় কখনাে বিঘ্নিত হয় না।
  2. সিদ্ধান্তমূলক কাঠামাে: এ কাঠামাে একটি নির্দিষ্ট শর্তের ওপর নির্ভর করে। শর্তটি সত্য হলে, একটি স্টেটমেন্ট বা নির্দেশ নির্বাহ হয়। আর শর্ত মিথ্যা হলে অন্য আরেকটি স্টেটমেন্ট নির্বাহ হয়। এক বা একাধিক সিদ্ধান্তমূলক কাজের জন্য মূলত এ কাঠামােটি ব্যবহার করা হয়ে থাকে।
  3. চক্রবর্ত কাঠামোে: এ কাঠামােকে লুপ বলা হয়। এক বা একাধিক নির্দেশ বারবার লিখতে হয় না। এক বা একাধিক নির্দেশকে শর্তহীনভাবে নির্দিষ্ট সংখ্যক বার বা শর্তের অধীন অনির্দিষ্ট সংখ্যক বার নির্বাহ করা যায়।

স্ট্রাকচার্ড প্রােগ্রামিং বা প্রােসিডিউর অরিয়েন্টেড প্রােগ্রামিং এর বৈশিষ্ট্য/সুবিধা/অসুবিধাসমূহ:

  • মূল প্রােগ্রামকে ফাংশনের ভিত্তিতে ছােট ছােট অংশে ভাগ করা হয়।
  • প্যারামিটার পাসিং বা অপারেটিং সিস্টেমের মাধ্যমে প্রােগ্রামের অংশগুলাের মধ্যে সংযােগ স্থাপিত হয়। প্রতিটি ফাংশনের ডেটা আলাদা থাকে।
  • প্রােগ্রামে ডেটা অপেক্ষা ফাংশনের অধিক গুরুত্ব দেয়া হয়।
  • বেশিরভাগ ফাংশনে গ্লোবাল variable ব্যবহার করা হয় ।
  • একহ ডেটা এক ফাংশন থেকে অন্য ফাংশনে স্থানান্তরিত হতে পারে।
  • প্রয়ােজনে যেকোন সময় প্রােগ্রামে অতিরিক্ত ফাংশন যােগ করা যায় না।
  • প্রােগ্রাম ডিজাইনে টপ-ডাউন (Top-Down) পদ্ধতি অনুসরণ করা হয়।
  • প্রােগ্রামিং এ প্রেসিডিউর অরিয়েন্টেড প্রােগ্রাম ভাষা, ইত্যাদি।

অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং (Object Oriented Programming-OOP) কি?

অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং (Object Oriented Programming-OOP): অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং মডেলে ডেটা ও সংশ্লিষ্ট কোডকে একক হিসেবে বিবেচনা করা হয়। এ ধরনের একককে ক্লাস (class) বলে। এক ক্লাসের ডেটা অন্য ক্লাসের কাছে অদৃশ্য। ফলে অনিচ্ছাকৃতভাবে ভুল চলকের মান ব্যবহার করা সম্ভব নয়। একটি ক্লাস এক একটি ধরন বােঝায়। ক্লাসে কোন ডেটা রেখে নির্বাহ করতে হলে নির্দিষ্ট ক্লাসের অবজেক্ট তৈরী করতে হয়। অবজেক্টের বিভিন্ন কোডকে নির্বাহ করানাের জন্য সংশ্লিষ্ট অবজেক্টকে বিশেষ বার্তা পাঠাতে হয়। কোন প্রােগ্রাম উন্নয়নের সময় ক্লাসগুলাে এমনভাবে নির্মাণ করা হয়, যাতে তা বাস্তব সমস্যাকে ভালােভাবে উপস্থাপন করতে পারে। ছােট আকারের প্রােগ্রাম রচনার জন্য OOP মডেল কোন বিশেষ সুবিধা দেয় না। কিন্তু বড় ধরনের প্রােগ্রাম (কয়েক হাজার লাইনের অধিক) উন্নয়নের জন্য OOP অপরিহার্য মডেল। OOP এর বিশেষ সুবিধা হলাে-

ইনহেরিটেন্সের মাধ্যমে প্রচলিত ক্লাসকে বর্ধিত করে নতুন ও উন্নত ক্লাস তৈরি করা যায়। ডেটা লুকানো থাকে বলে অপ্রত্যাশিত পরিবর্তন সম্ভব না। সহজেই ছােট থেকে বড় প্রােগ্রাম উন্নয়ন করা যায়। সকল প্রােগ্রামিং ভাষা অবজেক্ট ওরিয়েন্টড প্রােগ্রামিং সমর্থন করে না। কোন প্রােগ্রামিং ভাষাকে পরিপূর্ণ অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং ভাষা হতে হলে কমপক্ষে তিনটি বৈশিষ্ট্য থাকতে হয়। এগুলাে হলাে:-

  1. ইনহেরিটেন্স (Inheritance): ইনহেরিটেন্স এমন একটি ক্ষমতা যার মাধ্যমে কোন প্রচলিত ক্লাসের কোন পরিবর্তন করে পরিবর্ধিত নতুন ক্লাস তৈরি করা যায়। নতুন ক্লাস মূল ক্লাসের প্রয়ােজনীয় বৈশিষ্ট্য ধারণ করে থাকে।
  2. এনক্যাপসুলেশন (Encapsulation): কোন চলকের ডেটা এবং ইনস্ট্রাকশন একত্রিত অবস্থায় থাকাকে এনক্যাপসুলেশন বলে। যে চলকের জন্য যে ডেটা সেই চলকের বাইরে তার আর কোন অস্তিত্ব নেই। ফলে ডেটার ওপর প্রােগ্রামের অন্য অংশের কোন প্রভাব পড়ে না।
  3. পলিমরফিজম (Polymorphism): পলিমরফিজম অর্থ হচ্ছে বহুরূপ। এ বৈশিষ্ট্যের জন্য কোন কোড মডিউলের নাম এক হলেও একাধিক রূপ থাকতে পারে। কখন কোন রূপটি ব্যবহৃত হবে তা কম্পাইলার নির্ণয় করবে। একই অপারেটর ভিন্ন ধরনের ডেটার ওপর প্রয়ােগ করা যেতে পারে। সঠিক ডেটা নিরূপণ কম্পাইলারের দায়িত্ব।

ভিজুয়্যাল প্রােগ্রামিং (Visual Programming) কি?

ভিজুয়্যাল প্রােগ্রামিং (Visual Programming): গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) সমৃদ্ধ পরিবেশকে বলা হয় ভিজুয়্যাল (visual) বা দৃশ্যমান কাজের পরিবেশ। চিত্রভিত্তিক বা ভিজুয়্যাল পরিবেশে কাজ করা সহজ বলে চিত্রভিত্তিক প্রােগ্রামিং ভাষাও উদ্ভাবিত হয়েছে। চিত্রভিত্তিক পরিবেশ হলেও প্রােগ্রামিং এর ক্ষেত্রে মূলত স্ট্রাকচার্ড প্রােগ্রামিং অথবা OOP মডেল ব্যবহৃত হয়। তবে প্রকৃত প্রােগ্রামিং এ প্রােগ্রাম থেকে আড়ালে থাকে বলে চিত্রভিত্তিক প্রােগ্রামিং বেশ জনপ্রিয়। মাইক্রোসফ্ট (Microsoft) কোম্পানির ভিজুয়্যাল বেসিক হলাে প্রথম চিত্রভিত্তিক প্রােগ্রামিং মডেল। যার জনপ্রিয়তা দেখে বােরল্যান্ড (Borland) নির্মাণ করেন ডেলফি। বর্তমানে ভিজুয়্যাল বেসিক ও ডেলফি দুটিই জনপ্রিয় সফটওয়্যার। ভিজুয়্যাল প্রােগ্রামিংকে অনেকে প্রােগ্রামিং ভাষা বা মডেল বলতে চান না। কারণ এগুলাে প্রকৃতপক্ষে এক ধরনের অ্যাপ্লিকেশন প্রােগ্রাম। বড় আকারের বা দক্ষ প্রােগ্রাম রচনার জন্য এসব সফটওয়্যার খুব একটা ব্যবহৃত হয় না। তবুও চিত্রভিত্তিক প্রােগ্রামিং এর জনপ্রিয়তা দিন দিন বৃদ্ধি পাচ্ছে।


ইভেন্ট ড্রাইভেন প্রােগ্রামিং (Event Driven Programming) কি?

ইভেন্ট ড্রাইভেন প্রােগ্রামিং (Event Driven Programming): স্ট্রাকচার্ড এবং অবজেক্ট ওরিয়েন্টেড প্রােগ্রামিং মডেলের মূল বৈশিষ্ট্য হচ্ছে প্রােগ্রামের শুরু থেকে শেষ পর্যন্ত নির্বাহ হওয়া। প্রােগ্রাম নির্বাহের প্রবাহ সিদ্ধান্তমূলক ও লুপ কাঠামাে ব্যবহার করে কিছুটা নিয়ন্ত্রণ করা গেলেও ব্যবহারকারী প্রােগ্রাম পরিচালনাকালে পুরােপুরি স্বাধীনতা পায় না। উদাহরণস্বরূপ 50,000 টি সংখ্যা যােগ করার একটা প্রােগ্রাম স্ট্রাকচার্ড অথবা OOP মডেলে লিখলে তা ব্যবহারকারীকে সম্পূর্ণ সুবিধা দিতে পারে না। যেমন- যােগ করাকালীন যেকোন মুহূর্তে ব্যবহারকারী প্রক্রিয়াটিকে বাতিল করতে চাইলে, বা নতুন করে শুরু করতে চাইলে তা সম্ভব হয় না। ব্যবহারকারীকে এ ধরনের সুবিধা দেওয়ার জন্য উদ্ভাবিত হয়েছে ইভেন্ট ড্রাইভেন প্রােগ্রামিং মডেল। প্রােগ্রামের সাথে ব্যবহারকারীকে যেকোন ধরনের মিথস্কিয়াকে (Interaction) ইভেন্ট বলে। মাউস সরানাে, ক্লিক করা, কিবাের্ডে কোন কি (key) চাপা, প্রতিটিই এক একটি ইভেন্ট।
ইভেন্ট ড্রাইভেন প্রােগ্রামিং মডেলে কোন প্রােগ্রামের সব নির্দেশ ধারাবাহিকভাবে নির্বাহ হয় না। প্রােগ্রামটিতে বিভিন্ন পণ্ডের জন্য সংশ্লিষ্ট কোড মডিউল থাকে যা কেবল ঐ ইভেন্ট উৎপন্ন হলেই নির্বাহ হয়। অন্যথায় তা অলস বসে থাকে । যেমন- মাইক্রোসফট ওয়ার্ডে মেনু ও টুলবার প্রদর্শিত হয়। প্রােগ্রামের শুরুতে এগুলাে কিছুই করে না। কিন্তু ব্যবহারকারী যখনই কোন মেনুবার বা টুলবারের বােতামে ক্লিক করে তখনই একটি ইভেন্টের সৃষ্টি হয়। সাথে সাথে ইভেন্টের সংশ্লিষ্ট কোড দ্বারা মডিউলটি নির্বাহ হয়। সব ভিজুয়্যাল প্রােগ্রামই হচ্ছে ইভেন্ট ড্রাইভেন প্রােগ্রাম।