কম্পিউটার প্রোগ্রামিং
- কম্পিউটার প্রোগ্রাম কী?
উত্তরঃ কম্পিউটারে কোনো একটি বিশেষ কার্য সম্পাদন বা সমস্যা সমাধানের জন্য রচিত বা লিখিত ধারাবাহিক কতগুলো বিশেষ নির্দেশাবলী (instruction) বা কমান্ডকে কম্পিউটার প্রোগ্রাম বলে।
- প্রোগ্রামিং ভাষা কী?
উত্তরঃ কম্পিউটাকে আমাদের প্রয়োজনীয় নির্দেশাবলী জানানোর জন্য এক বিশেষ ধরণের ভাষা ব্যবহার হয়। এ বিশেষ ধরণের ভাষা কম্পিউটার প্রোগ্রাম রচনার জন্য ব্যবহৃত হয়ে থাকে বলে একে প্রোগ্রামিং ভাষা বা Programming Language বলে।
- যান্ত্রিক ভাষা কাকে বলে?
উত্তরঃ কম্পিউটার যন্ত্রটি সরাসরি যে ভাষা বুঝতে পারে সেই ভাষাকে যান্ত্রিক ভাষা বলে।
- নিম্নস্তরের ভাষা কাকে বলে?
উত্তরঃ যান্ত্রিক ভাষা শুধুমাত্র ০ ও ১ দিয়ে লেখা হয়, সেজন্য যান্ত্রিক ভাষাকে নিম্নস্তরের ভাষা বলা হয়।
- কিসের উপর ভিত্তি করে কম্পিউটারের ভাষা লেখা হয়?
উত্তরঃ বাইনারি ১ দ্বারা বিদ্যুৎ আছে (on) এবং ০ দ্বারা বিদ্যুৎ নেই (off) এর উপর ভিত্তি করেই কম্পিউটারের ভাষা তৈরি করা হয়।
- কম্পিউটার প্রোগ্রামিং ভাষার কয়টি প্রজন্ম?
উত্তরঃ কম্পিউটার প্রোগ্রামিং ভাষার ৫টি প্রজন্ম।
- অনুবাদক প্রোগ্রাম কাকে বলে?
উত্তরঃ যে প্রোগ্রাম কম্পিউটারের উৎস প্রোগ্রাম (যে ভাষায় প্রোগ্রামটি লেখা হয়) কে যন্ত্র ভাষায় অনুবাদ করে বস্তু প্রোগ্রামে রূপান্তর করে সে প্রোগ্রামকে অনুবাদক প্রোগ্রাম বলে। যেমন: কিউবেসিকে একটি প্রোগ্রাম লেখা হলো কিন্তু কম্পিউটার এ প্রোগ্রামটি বুঝবে না, এ প্রোগ্রামটিকে অনুবাদ করে মেশিনের ভাষায় (বাইনারিতে) বুঝিয়ে দিতে হয়। এ অনুবাদের কাজে অনুবাদক প্রোগ্রাম ব্যবহৃত হয়।
- অনুবাদক প্রোগ্রাম কয় প্রকার?
উত্তরঃ তিন প্রকার।
- i. অ্যাসেম্বলার
- কম্পাইলার
iii. ইন্টারপ্রেটার
- অ্যাসেম্বলার কী?
উত্তরঃ ইহা অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় অনুবাদ করে। এটি কোন কাজের সংক্ষিপ্ত শব্দ দ্বারা প্রোগ্রাম রচনা করা হয়।
- অ্যাসেম্বলারের কাজ লিখ?
উত্তরঃ নিম্নে অ্যাসেম্বলারের গুরুত্বপূর্ণ কাজগুলো দেওয়া হলোঃ
- নেমোনিক কোডকে মেশিন ভাষায় অনুবাদ করে।
- প্রত্যেক নির্দেশ ঠিক আছে কিনা পরীক্ষা করা, ঠিক না থাকলে ঠিক করা।
iii. সব নির্দেশ ও ডেটা প্রধান মেমরিতে রাখে।
- কম্পাইলার কী?
উত্তরঃ কম্পাইলার উচ্চস্তরের ভাষার উৎস প্রোগ্রামকে বস্তু প্রোগ্রামে অনুবাদ করে। কম্পাইলার সম্পূর্ণ প্রোগ্রামটিকে এক সঙ্গে পড়ে এবং এক সঙ্গে অনুবাদ করে। ভিন্ন ভিন্ন উচ্চস্তরের ভাষার জন্য ভিন্ন ভিন্ন কম্পাইলার লাগে। কোনো নির্দিষ্ট কম্পাইলার একটি মাত্র উচ্চস্তরের ভাষাকে মেশিন ভাষায় পরিণত করতে পারে। যেমন: যে কম্পাইলার BASIC কে মেশিন ভাষায় অনুবাদ করতে পারে তা FORTRAN কে মেশিন ভাষায় অনুবাদ করতে পারে না।
- কম্পাইলারের কাজ লিখ?
উত্তরঃ নিম্নে কম্পাইলারের গুরুত্বপূর্ণ কাজগুলো দেওয়া হলোঃ
- i. উৎস প্রোগ্রামকে বস্তু প্রোগ্রামে অনুবাদ করা।
- ii. প্রোগ্রামকে লিংক করা।
iii. প্রোগ্রামে কোনো ভুল থাকলে তা জানানো।
- প্রয়োজনে বস্তু বা উৎস প্রোগ্রামকে প্রিন্ট করা।
- ইন্টারপ্রেটার কী?
উত্তরঃ ইহা ব্যবহারে প্রোগ্রামের ভুল সংশোধন করা ও প্রোগ্রাম পরিবর্তন করা সহজ হয়। কারণ ইন্টারপ্রেটারের প্রোগ্রাম আকারে ছোট বলে মেমরি বাঁচে। তাছাড়া ছোট কম্পিউটারে ইন্টারপ্রেটার ব্যবহৃত হয়। ইহা এক লাইন করে পড়ে ও অনুবাদ করে।
- ইন্টারপ্রেটারের কাজ লিখ?
উত্তরঃ নিম্নে ইন্টারপ্রেটারের গুরুত্বপূর্ণ কাজগুলো দেওয়া হলোঃ
- i. উচ্চস্তরের ভাষাকে মেশিনের ভাষায় রূপান্তর করা।
- ii. ইহা এক লাইন পড়ে ও অনুবাদ করে।
iii. ইহা প্রতিটি লাইনের ভুল প্রদর্শন করে অনুবাদ কাজ বন্ধ করে দেয়।
- iv. ডিবাগিং ও টেস্টিংয়ের ক্ষেত্রে দ্রুত কাজ করে।
- অ্যালগরিদম কাকে বলে?
উত্তরঃ বিশিষ্ট গণিতবিদ আল খারিজমীর নাম থেকে অ্যাগরিদম কথাটির উৎপত্তি হয়েছে। কোন সমস্যা সমাধানের ধাপসমূহকে ভাষাগতভাবে লিপিবদ্ধ করাকে অ্যালগরিদম বলে। সমস্যা সমাধানের ক্ষেত্রে প্রোগ্রাম রচনার জন্য সবচেয়ে বেশি প্রয়োজনীয় অংশের নাম অ্যালগরিদম। প্র্রোগ্রাম রচনা ও নির্বাহের শুরু থেকে শেষ পর্যন্ত ধাপগুলো পর্যায়ক্রমিকভাবে লিপিবদ্ধ থাকে অ্যালগরিদমে।
- অ্যালগরিদমের বৈশিষ্ট লিখ?
উত্তরঃ নিম্নে অ্যালগরিদমের বৈশিষ্ট দেওয়া হলোঃ
- সহজবোধ্য হবে
- ii. কাজের উদ্দেশ্য সুস্পষ্ট হতে হবে
iii. প্রত্যেকটি ধাপে স্পষ্ট হবে যাতে যেকোন প্রোগ্রামার সহজে বুজতে পারে
- iv. ব্যাপকভাবে প্রয়োগ করা সম্ভব হবে
- v. প্রোগ্রামের ভুল নির্ণয় করা সম্ভব হবে
- vi. প্রোগ্রাম পরিবর্তন ও পরিবর্ধনে সহায়তা করবে।
- ফ্লোচার্ট কী?
উত্তরঃ ফ্লোচার্ট হচ্ছে এক ধরণের রেখাচিত্র যার সাহায্যে একটি অ্যালগরিদম বা প্রক্রিয়াকে প্রকাশ করা যায়।
- ফ্লোচার্ট কয় প্রকার?
উত্তরঃ ২ প্রকার। যথা:
ক. সিস্টেম ফ্লোচার্ট খ. প্রোগ্রাম ফ্লোচার্ট।
- সিস্টেম ফ্লোচার্ট কাকে বলে?
উত্তরঃ কোন সংগঠনের সকল কাজের একটি চিত্রের মাধ্যমে প্রকাশ করলে তাকে সিস্টেম ফ্লোচার্ট বলা হয়।
- প্রোগ্রাম ফ্লোচার্ট কী?
উত্তরঃ কোন প্রোগ্রামের অ্যালগরিদম রেখাচিত্রের সাহায্যে প্রকাশ করাকে প্রোগ্রাম ফ্লোচার্ট বলে।
- ডিবাগিং কাকে বলে?
উত্তরঃ প্রোগ্রামের ভুল-ত্রুটি সংশোধন করাকে ডিবাগিং বলে।
- প্রোগ্রামে কয় ধরনের ভুল হয়?
উত্তরঃ ৩ ধরনের ভুল হয়।
ক. সিনটেক্স ভুল,
খ. লজিক্যাল ভুল ও
গ. রানটাইম ও এক্সিকিউশন টাইম ভুল।
- সিনটেক্স ভুল কী?
উত্তরঃ সাধারণত প্রোগ্রামের ভাষার ব্যাকরণগত ভুলগুলোকে সিনটেক্স ভুল (Syntax Error) বলে। যেমনঃ বানান ভুল, কমা, ব্রাকেট না দেওয়া।
- যুক্তিগত ভুল কী?
উত্তরঃ প্রোগ্রামে যুক্তিগত যে সমস্ত ভুলগুলো থাকে সেগুলোকে যুক্তিগত ভুল (Logical Error) বলা হয়।
- রানটাইম ও এক্সিকিউশন টাইম ভুল কী?
উত্তরঃ কম্পিউটারকে ভুল ডেটা জানালে বা ডেটার ফরমেট ঠিক না থাকলে রান টাইম এ্যারোর ছাপায়। যে সব গাণিতিক প্রক্রিয়া সম্পাদন করা যায় না তা করতে গেলেও সিনট্যাক্স ভুল হয়। যেমন শূ্ন্য দিয়ে ভাগ করা কিংবা ঋণ সংখ্যার বর্গমুল বা লগারিদম বের করা। এসব ক্ষেত্রেও ভুলের বার্তা ছাপা হয়।
- অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কী?
উত্তরঃ প্রোগ্রামিং মডেলগুলোর মধ্যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং মডেল নতুন এবং জনপ্রিয়। অবজেক্ট বা চিত্রভিত্তিক কমান্ডের সাহায্যে চালিত প্রোগ্রামকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বলা হয়।
- ইভেন্ট কী?
উত্তরঃ কী-বোর্ডের কোনো কী-তে চাপ দেওয়া, কোনো বিশেষ কন্ট্রোলের উপর মাউসের পয়েন্টার দিয়ে ক্লিক করা ইত্যাদি হলো ইভেন্ট।
- ডেটা টাইপ কী?
উত্তরঃ ডেটার ধরনকে ডেটা টাইপ বলা হয়। C প্রোগ্রামিং এ বিভিন্ন প্রকার ডেটা নিয়ে কাজ করা হয়।
- ইউনারি অপারেটর কী?
উত্তরঃ যে সকল অপারেটর একটি মাত্র অপারেন্ড নিয়ে কাজ করে তাদের ইউনারি অপারেটর বলে।
- বাইনারি অপারেটর কাকে বলে?
উত্তরঃ যে সব অপারেটর দুইটি অপারেন্ড নিয়ে কাজ করে তাদেরকে বাইনারি অপারেটর বলে ।
- কী ওয়ার্ড কী?
উত্তরঃ বিশেষ কাজে ব্যবহারের জন্য সংরক্ষিত শব্দগুলে কে কী ওয়ার্ড বলে।
- স্টেটমেন্ট কী?
উত্তরঃ প্রোগ্রামে কোন এক্সপ্রেশনের শেষে যখন সেমিকোলন (;) দেওয়া হয়, তখন প্রোগ্রামের ভাষায় একে স্টেটমেন্ট বলা হয়।
- কন্ট্রোল স্টেটমেন্ট কাকে বলে?
উত্তরঃ প্রোগ্রামে শর্ত সাপেক্ষে কোন স্টেটমেন্ট সম্পাদনের জন্য কন্ডিশনাল কন্ট্রোল ব্যবহার হয়। এরূপ শর্ত যুক্ত স্টেটমেন্টকে কন্ডিশনাল কন্ট্রোল স্টেটমেন্ট বলে।
- অ্যারে কী?
উত্তরঃ অ্যারে হলো একই ধরনের ডেটার সমাবেশ। কতকগুলো ভেরিয়েবল ডেটা উপাদানের সমষ্টিকে অ্যারে বলে। অ্যারে শব্দের অর্থ হলো শ্রেণী বা বিন্যাস। একই জাতীয় বা সমজাতীয় ডেটার বিন্যাসকে বলা হয় অ্যারে।
- একমাত্রিক অ্যারে কাকে বলে?
উত্তরঃ যে অ্যারেতে একটি মাত্র কলাম ও একাদিক সারি অথবা একটি মাত্র সারি এবং একাদিক কলাম উপস্থাপন করা হয় তাকে একমাত্রিক অ্যারে বলা হয়।
- দ্বিমাত্রিক অ্যারে কাকে বলে?
উত্তরঃ যে অ্যারেতে একাদিক সারি ও একাদিক কলামে ডেটা উপস্থাপন করা হয় তাকে দ্বিমাত্রিক অ্যারো বলা হয়।
- ফাংশন কাকে বলে?
উত্তরঃ বড় কোন প্রোগ্রামকে ছোট ছোট অংশে ভাগ করার পদ্ধতিকে ফাংশান বলে।
- লাইব্রেরি ফাংশন কাকে বলে?
উত্তরঃ যে ফাংশন পূর্ব থেকে তৈরি করা থাকে এবং ফাংশনগুলোর ফাংশন প্রোটোটাইপ বিভিন্ন হেডার ফাইলে দেওয়া থাকে। এ ধরনের ফাংশন গুলোকে লাইব্রেরি ফাংশন বলে।
- মধ্য স্তরের ভাষা কী?
উত্তরঃ ১৯৬০ সালের দিকে ইংরেজী ভাষাকে প্রাধান্য দিয়ে কম্পিউটারের প্রোগ্রাম রচনার করার জন্যে যে ভাষা আবিষ্কৃত হয় তা মধ্য স্তরের ভাষা নামে পরিচিত।
- উচ্চস্তরের ভাষা কী?
উত্তরঃ উচ্চস্তরের ভাষা হলো ইংরেজী ভাষা এবং আরো বেশি কাঠামোবদ্ধ। উচ্চস্তরের ভাষা আমেরিকান ন্যাশনাল স্টান্ডার্ড ইন্সটিটিউটের নির্দেশ মেনে বেশির ভাগ উচ্চস্তরের ভাষা তৈরী হয়। উচ্চস্তরের ভাষা সহজে লেখা যায়, সংকলন করা যায় এবং ভুল সংশোধন করা যায়। উচ্চস্তরের ভাষায় বৈশিষ্ঠ্য হল ইহা বানিজ্যিক ও বৈজ্ঞানিক প্রয়োগের ভাষা। এটা বহু প্রয়োগ ও চতুর্থ প্রজন্ম ভাষা। তাই উচ্চস্তরের ভাষাকে বহু প্রয়োগের ভাষা বলা হয়।
- চতুর্থ প্রজন্মের ভাষা কী?
উত্তরঃ বিজ্ঞানীগণ কম্পিউটারের ভাষা উন্নতির জন্য অবিরত চেষ্টা করে চলছেন। তাদের অবিরত চেষ্টার ফসল হলো চতুর্থ প্রজন্মের ভাষা। চতুর্থ প্রজন্মের ভাষার সংক্ষিপ্ত রুপ হচ্ছে 4GL, ফক্স প্রো, ভিজুয়্যাল বেসিক, কোবল, এম এস এক্সেস, এস.কিউ,এল. এ সব প্রোগ্রামগুলো চতুর্থ প্রজন্মের ভাষা নামে পরিচিত। এ সব ভাষায় ডাটাবেজ কুয়েরী, অনুসন্ধান, সাজানো এবং প্রক্রিয়ার ক্ষেত্রে বড় ধরনের সুবিধা লাভ করা যায়।
- গঠন ও বৈশিষ্ট্য অনুযায়ী কম্পিউটার ভাষাকে কত ভাগে ভাগ করা যায়?
উত্তরঃ পাঁচ ভাগে ভাগ করা যায়।
- IDE-এর পূর্ণরূপ কী?
উত্তরঃ Integrated Development Environment
- ধ্রুবক কাকে বলে?
উত্তরঃ ধ্রুবক বলতে এমন কোনো মানকে বোঝানো হয়েছে যা প্রোগ্রাম করার পর পরিবর্তন করা যায় না। অর্থাৎ ’সি’ প্রোগ্রামিংয়ের প্রোগ্রাম নির্বাহের সময় যে সকল মানের কোনো পরিবর্তন হয়না তাকে ধ্রবক বলে।
- চলক কাকে বলে?
উত্তরঃ চলক মানে পরিবর্তনশীল। চলক বলতে এমন কোনো মানকে বোঝানো হয় যা প্রোগ্রামে চালু করার পর পরিবর্তন করা যায়। অর্থাৎ ’সি’ প্রোগ্রামিংয়ে প্রোগ্রাম নির্বাহে সময় যে সকল মান ব্যবহারকারী প্রয়োজনানুসারে পরিবর্তন করতে পারে তাকে চলক বলে।
printf(“Enter first number : “);
দুটি সংখ্যা Swap করার সহজ পদ্ধতি।
প্রোগ্রামার বন্ধুরা, এই পর্বে আমরা দেখবো কিভাবে তিনটি ভ্যারিয়েবল ব্যবহার করে এই কাজটি করা যায়।
প্রথমে a, b, temp নামের তিনটি ভ্যারিয়েবল নেই। এবার a ও b এর মধ্যে যথাক্রমে দুটি ভ্যালু a=15 এবং b=10 রাখি।
প্রসেসঃ
temp = a; // এই লাইনে temp ভ্যারিয়েবলে a এর মান রাখলাম। অর্থাৎ, এখন temp = ১৫ ।
a = b; // এই লাইনে b এর মান a তে রাখলাম। তাহলে, a এর মান হয় ১০। কারণ, b = ১০।
b = temp; // ফাইনালি, b তে temp ভ্যারিয়েবলের মানটি রাখলাম। যেহেতু, temp এর মান ১৫ ছিলো, সুতরাং b = ১৫।
এই প্রসেসটি এক্সিকিউট বা রান হওয়ার পর a এর মান হবে ১০ এবং b এর মান হবে ১৫।
খাতায় একবার নিজে নিজে অনুশীলন করুন।
নিচে এই সমস্যাটির সমাধান সি প্রোগ্রামিং দিয়ে দেখানো হলোঃ
#include<stdio.h>
int main()
{
int a,b,temp;
a = 15;
b = 10;
printf(“a = %d, b = %d\n”, a, b); // a = 15, b = 10
temp = a;
a = b;
b = temp;
printf(“a = %d, b = %d\n”, a, b); // a = 10, b = 15
return 0;
}
int main()
{
int a,b,temp;
a = 15;
b = 10;
printf(“a = %d, b = %d\n”, a, b); // a = 15, b = 10
temp = a;
a = b;
b = temp;
printf(“a = %d, b = %d\n”, a, b); // a = 10, b = 15
return 0;
}
কন্ডিশনাল অপারেটর ব্যবহারের মজা!
কন্ডিশনাল অপারেটর ব্যবহার করে আমরা একটি প্রোগ্রামকে অনেক সহজ করে দিতে পারি। যেসব প্রোগ্রামের
ক্ষেত্রে আমরা if…else ব্যবহার করে থাকি, সেসব ক্ষেত্রে কন্ডিশনাল অপারেটর ব্যবহার করতে পারি।
ক্ষেত্রে আমরা if…else ব্যবহার করে থাকি, সেসব ক্ষেত্রে কন্ডিশনাল অপারেটর ব্যবহার করতে পারি।
কন্ডিশনাল অপারেটর দেখতে কেমন?
: ? –এই হলো কন্ডিশনাল অপারেটর। এই অপারেটরটি যেভাবে কাজ করে তা বর্ণনা করা হলোঃ
ধরাযাক, num1 এবং num2 দুটি ভ্যারিয়েবল। যেখানে, num1, num2 এর চেয়ে বড়। তাহলে আমরা লিখতে পারি, num1 > num2 ? num1 – num2 : num2 – num1
এবার একটু বুঝে নিন। এখানে প্রশ্নবোধক চিহ্নের (?) আগের অংশটি কন্ডিশন চেক করে। যদি কন্ডিশনটি সত্য হয় তাহলে কোলনের (:) আগের অংশ এক্সিকিউট হয় অর্থাৎ num1 – num2 অপারেশনটি সম্পন্ন হয়। আর যদি কন্ডিশনটি সত্য না হয় তাহলে num2 – num1 অপারেশনটি সম্পন্ন হয়।
একটি সমস্যা সমাধান করা যাক। তাহলে আশা করি বুঝতে পারবেন ইনশা আল্লাহ। দুটি সংখ্যা থেকে আমাদের বিয়োগফল বের করতে হবে। শর্ত হচ্ছে, সবসময় বড় সংখ্যাটি থেকে ছোট সংখ্যাটি বিয়োগ করতে হবে অর্থাৎ, বিয়োগফল ঋণাত্বক হতে পারবে না।
এর জন্য যদি if…else ব্যবহার করে থাকি প্রোগ্রামটা দাঁড়ায় এরকমঃ
#include<stdio.h>
int main()
{
int num1,
num2, sub;
num2, sub;
printf(“Enter first number : “);
scanf(“%d”, &num1);
printf(“Enter second number : “);
scanf(“%d”, &num2);
if(num1>num2)
{
sub = num1-num2;
}
else{
sub = num2-num1;
}
printf(“%d\n”, sub);
return 0;
}
এবার আমরা কন্ডিশনাল
অপারেটর ব্যবহার করে প্রোগ্রামটিকে আরো ছোটো করার চেষ্টা করবো।
অপারেটর ব্যবহার করে প্রোগ্রামটিকে আরো ছোটো করার চেষ্টা করবো।
#include<stdio.h>
int main()
{
int num1,
num2, sub;
num2, sub;
printf(“Enter first number : “);
scanf(“%d”, &num1);
printf(“Enter second number : “);
scanf(“%d”, &num2);
sub = num1>num2?num1-num2:num2-num1;
printf(“%d\n”, sub);
return 0;
}
সকলে জন্য শুভ কামনা রইলো।
আরো টিপস্ পেতে সাথে থাকুন। কমেন্টে আপনার মতামত জানিয়ে সহযোগিতা করুন।
আরো টিপস্ পেতে সাথে থাকুন। কমেন্টে আপনার মতামত জানিয়ে সহযোগিতা করুন।
সমীকরণের মাধ্যমে সমস্যা সমাধানের মজা!
ধরাযাক, আপনাকে একটা সমস্যা দেওয়া হলো যেখানে ইনপুট যদি 1 দেওয়া হয় তাহলে আউটপুট হবে 0, অথবা ইনপুট যদি 0 দেওয়া হয় তাহলে আউটপুট হবে 1.
আপনাদের মধ্যে যাদের মাথায় সবসময় if…else ঘুরে তারা হয়তো if…else দিয়ে সমাধান করার চেষ্টা শুরু করে দিছেন। কিন্তু আমরা if…else ব্যবহার না করে সমীকরণের মাধ্যমে সমাধান করার চেষ্টা করবো।
আবার যাদের মাথায় সবসময় লজিক্যাল অপারেটর(&&, ||, !) ঘুরে তারা হইতো লজিক্যাল অপারেটর দিয়ে সমাধান করার কথা ভাবতেছেন।
আমরা বিভিন্ন উপায়ে সমাধান করে দেখবো। তারপর মজাটা আপনি ও বুঝতে পারবেন।
প্রথমে আমরা দেখবো if…else ব্যবহার করে কিভাবে সমাধান করা যায়।
#include<stdio.h>
int main()
{
int num;
printf(“Enter 0 or 1 : “);
scanf(“%d”, &num);
if(num==1)
printf(“0”);
else
printf(“1”);
return 0;
}
আশাকরি বুঝতে পেরেছেন। এবার লজিক্যাল অপারেটর নট(!) ব্যবহার করে সমাধান করার চেষ্টা করবো।
আমরা জানি, নট অপারেশনের কাজ সম্পর্কে। নট গেইট ব্যবহারের ফলে 1 ইনপুট দিলে আউটপুট হয় 0 অথবা 0 ইনপুট দিলে আউটপুট হয় 1. তাহলে এবার নট অপারেশন দিয়ে সমাধান করে ফেলি।
#include<stdio.h>
int main()
{
int num;
printf(“Enter 0 or 1 : “);
scanf(“%d”, &num);
printf(“Result : %d”, !num);
return 0;
}
এবার সমীকরণ প্রেমীদের জন্য রইলো নিচের সমাধানটি।
#include<stdio.h>
int main()
{
int num;
printf(“Enter 0 or 1 : “);
scanf(“%d”, &num);
num = 1-num;
printf(“%d”, num);
return 0;
}
এখানে আউটপুটের জন্য আরেকটা ভ্যারিয়েবল ব্যবহার করতে পারতাম। কিন্তু অতিরিক্ত ভ্যারিয়েবল ব্যবহার করা থেকে বিরত থাকলাম।
বর্ণনাঃ ধরাযাক, num এর মধ্যে আমি 0 ইনপুট দিলাম। তাহলে 1 থেকে 0 বিয়োগ করলে ফলাফল হয় 1 এবং এই ফলাফল আবার num ভ্যারিয়েবলের মধ্যে রাখলাম। একইভাবে যদি 1 ইনপুট দেই তাহলে 1 থেকে 1 বিয়োগ করলে ফলাফল হয় 0. অর্থাৎ, আপনি যদি 0 ইনপুট দেন তাহলে আউটপুট হবে 1 অথবা যদি 1 ইনপুট দেই তাহলে আউটপুট হবে 0. আশা করি সবাই বুঝতে পেরেছেন। কোথাও কোনো সমস্যা থাকলে, না বুঝে থাকলে অবশ্যই কমেন্টে জানাবেন। ভুল-ত্রুটি ক্ষমা সুন্দর দৃষ্টিতে দেখবেন।
Swapping নিয়ে মজার মজার টিপস্!
তিনটি ভ্যারিয়েবল ব্যবহার করে দুটি সংখ্যা Swap করার একটি পদ্ধতি আমার পূর্বের একটি পোস্টে বর্ণনা করা হয়েছিলো। এবার আমরা দেখবো দুটি ভ্যারিয়েবল ব্যবহার করে কতভাবে Swap করা যায়। চলুন শুরু করা যাক। প্রথমে আমি পূর্বের প্রোগ্রামটি একটু উল্লেখ করলাম। যারা এই প্রোগ্রামটি এখনো বুঝেননি তাদের কাছে আমার অনুরোধ রইলো পুর্বের প্রোগ্রামটি পড়ে আসার জন্য।
#include<stdio.h>
int main()
{
int num1=10, num2=12, swp;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
swp = num1;
num1 = num2;
num2 = swp;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
return 0;
}
- গাণিতিক অপারেটর(+, -) ব্যবহার করে Swap করার পদ্ধতি।
চলুন বন্ধুরা শুরু করা যাক আমাদের আজকের আলোচনা। দুটি ভ্যারিয়েবল ব্যবহার করে আমরা বিভিন্নভাবে Swap করে দেখবো। প্রথমে দেখা যাক গাণিতিক অপারেটর(+,-) ব্যবহার করে কিভাবে Swap করা যায়।
#include<stdio.h>
int main()
{
int num1 = 10, num2 = 12;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
num1 = num1 + num2;
num2 = num1 – num2;
num1 = num1 – num2;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
return 0;
}
এখানে, num1 এবং num2 ভ্যারিয়েবল দুটির মধ্যে দুটি ভ্যালু অ্যাসাইন করলাম। num1 = num1 + num2 যেখানে num1 = 10 এবং num2 = 12. সুতরাং, num1 = 10 + 12 = 22. তাহলে num1 এর বর্তমান ভ্যালু দাঁড়াল num1 = 22.
এর পরের লাইনে আমরা দেখতে পাচ্ছি যে, num2 = num1 – num2; তাহলে num2 = 22 – 12 = 10.
এবার এর পরের লাইনে থেকে আমরা পাই, num1 = num1 – num2; যেখানে, num1 = 22 – 10 = 12. অবশেষে আমাদের কাঙ্খিত ফলাফল চলে আসলো। অর্থাৎ, num1 = 12 এবং num2 = 10.
- গাণিতিক অপারেটর(*, /) ব্যবহার করে Swap করার পদ্ধতি।
#include<stdio.h>
int main()
{
int num1=10, num2=12;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
num1 = num1*num2;
num2 = num1/num2;
num1 = num1/num2;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
return 0;
}
এখানে, num1 এবং num2 ভ্যারিয়েবল দুটির মধ্যে দুটি ভ্যালু অ্যাসাইন করলাম। num1 = num1 * num2 যেখানে num1 = 10 এবং num2 = 12. সুতরাং, num1 = 10 * 12 = 120. তাহলে num1 এর বর্তমান ভ্যালু দাঁড়াল num1 = 120.
এর পরের লাইনে আমরা দেখতে পাচ্ছি যে, num2 = num1 / num2; তাহলে num2 = 120 / 12 = 10.
এবার এর পরের লাইনে থেকে আমরা পাই, num1 = num1 / num2; যেখানে, num1 = 120 / 10 = 12. অবশেষে আমাদের কাঙ্খিত ফলাফল চলে আসলো। অর্থাৎ, num1 = 12 এবং num2 = 10.
- বিটওয়াইজ XOR অপারেটর(^) ব্যবহার করে Swap করার পদ্ধতি।
বিটওয়াইজ অপারেটর দিয়েও ছোটখাটো কিছু মজার প্রোগ্রাম করা যায়। এই প্রোগ্রাম টা বুঝার জন্য আপনার XOR অপারেশন সম্পর্কে ধারণা থাকতে হবে।
#include<stdio.h>
int main()
{
int num1=10, num2=12;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
return 0;
}
এখানে num1 = 10 যার বাইনারি মান হচ্ছে 1010 এবং num2 = 12 যার বাইনারি 1100. এবার num1 = num1^num2; লাইনটি একটি বিশ্লেষণ করি।
num1 = 1010 ^ 1100
num1 | 1 | 0 | 1 | 0 |
num2 | 1 | 1 | 0 | 0 |
num1 = num1 ^ num2 | 0 | 1 | 1 | 0 |
num1 = 0110 |
এখানে আমরা num1 এবং num2 এর মধ্যে XOR অপারেশন চালিয়ে ফলাফল আবার num1 এর মধ্যে রাখলাম।
num2 = num1 ^ num2
num1 | 0 | 1 | 1 | 0 |
num2 | 1 | 1 | 0 | 0 |
num2 = num1 ^ num2 | 1 | 0 | 1 | 0 |
num2 = 1010 |
এখানে, num2 = 1010. এটি হচ্ছে বাইনারি ভ্যালু। বাইনারি সংখ্যাটিকে দশমিকে প্রকাশ করলে হয় 10.
অর্থাৎ, num2 = 10.
num1 = num1 ^ num2
num1 | 0 | 1 | 1 | 0 |
num2 | 1 | 0 | 1 | 0 |
num1 = num1 ^ num2 | 1 | 1 | 0 | 0 |
এখানে, num1 = 1100. এটি হচ্ছে বাইনারি ভ্যালু।
বাইনারি সংখ্যাটিকে দশমিকে প্রকাশ করলে হয় 12. অর্থাৎ, num1 = 12.
সুতরাং, num1 = 12 এবং num2 = 10. এটাই ছিলো আমাদের কাঙ্ক্ষিত ফলাফল।
- সমীকরণ ব্যবহার করে এক লাইনে Swap করার পদ্ধতি।
#include<stdio.h>
int main()
{
int num1=10, num2=12;
printf(“num1 = %d and num2 = %d\n”, num1, num2);
num2 = (num1+num2)-(num1 = num2);
printf(“num1 = %d and num2 = %d\n”, num1, num2);
return 0;
}
এখানে, প্রথমে (num1 = num2) অংশের কাজ সম্পন্ন হয়। অর্থাৎ, প্রথমে num1 = num2 বা num1 = 12 হয়। তাহলে আমরা দেখতে পাচ্ছি যে, num1 = 12. এবার (num1+num2) অপারেশন টা সম্পন্ন হওয়ার পর সেখানে থেকে num1 মানটা বিয়োগ হয়ে যায়। তাহলে num2 = 10. যেহেতু আমরা জানি যে, (num1+num2) = 22 এবং এখান থেকে যদি num1 এর মানটি বিয়োগ হয় তাহলে num2 = 10 দাঁড়ায়। তাহলে বন্ধুরা, আমরা এই সমাধানটা ও পেয়ে গেলাম। সবাইকে অনেক অনেক ধন্যবাদ জানাই ধৈর্য সহকারে পোষ্টটি পড়ার জন্য। সকলের জন্য শুভ কামনা রইলো।
0 comments:
Post a Comment