এই সিরিজের পূর্বের টিউটোরিয়াল গুল।
1. সি টিউটোরিয়াল, পর্ব ১ - (প্রোগ্রামিং ল্যাংগুয়েজের ইতিহাস)
2. সি টিউটোরিয়াল, পর্ব ২ – (প্রোগ্রামিং ল্যংগুয়েজের সূচনা লগ্ন)
3. সি টিউটোরিয়াল, পর্ব ৩- (সি ল্যাংগুয়েজের ইতিহাস)
4. সি টিউটোরিয়াল, পর্ব ৪– (C প্রোগ্রাম এর ফরম্যাট)
আরো একবার সবাইকে আমন্ত্রন জানাচ্ছি সি টিউটোরিয়ালে। পূর্বের পর্ব গুলোতে আমরা সি ল্যাংগুয়েজের মূল গঠন শিখেছে। আজকের পর্ব থেকে আমরা সি এর সবচেয়ে গুরুত্বপূর্ন বিষয় গুল শিখব। আজকের আলোচনার বিষয় ভেরিয়েবল।
সি টিউটোরিয়াল, পর্ব ১ - (প্রোগ্রামিং ল্যাংগুয়েজের ইতিহাস) মেমরি সেল নিয়ে আলোচনা করা হয়েছিল। একটি সফল প্রোগ্রাম তৈরি করা হয় সমস্যা সমাধানের জন্য। তাই সমাধান করার জন্য আমাদেরকে অবশ্যই সমস্যাটি কম্পিউটারের মাধ্যমে প্রোগ্রামকে দিব তারপর ঐ সমস্যা সমাধান করে কম্পিউটারের মাধ্যমে প্রোগ্রাম আমাদেরকে ফলাফল জানাবে। মনে করি “ আমরা ৫ এবং ৩ যোগ করতে পারছিনা তাই এই সমস্যা সমাধানের জন্য আমরা একটি প্রোগ্রাম তৈরি করব যা আমাদের কাছ থেকে আমাদের সমস্যার বিষয় বস্তু ৫ ও ৩ কে আমাদের কাছ থেকে ইনপুট করে ও সর্বশেষ যোগ করে আমাদেরকে পুনরায় ফলাফল দেখাবে।
যদি আমরা প্রোগ্রামের অভন্ত্যরে চিন্তা করে দেখি তা হলে উক্ত প্রোগ্রামটি কিভাবে কাজ করবে। প্রথমে আমাদের কাছ থেকে একটি সংখ্যা চেয়ে নিবে এবং তা একটি মেমরি সেলে জমা করে রাখবে। ধরি ১ম মেমরি সেলটির নাম্বার হচ্ছে “১২৫৪৭৮” । প্রোগ্রামটি পুনরায় আমাদের কাছ থেকে অন্য একটি নাম্বার চাইবে এবং তা অন্য একটি মেমরি সেলে জমা করে রাখবে। ধরি ২য় মেমরি সেলটির নাম্বার হচ্ছে “১২৫৪৭৯” । প্রোগ্রামিটি এই ২ মেমরি সেল জমে থাকা ডাটা যোগ করবে এবং যোগ ফল অন্য একটি মেমরি সেলে জমা করবে। মনে করে যোগফল জমা করে রাখা মেমরি সেলটির নাম্বার হচ্ছে “১২৫৪৮০” । ফাইনাললি প্রোগ্রাম আমাদেরকে “১২৫৪৮০” নাম্বার মেমরি সেলে জমা করে রাখা ডাটা দেখাবে।
আমরা এখানে মাত্র ২ টি সংখ্যার যোগ করেছে কিন্তু বাস্তবে এই ধরনের সাধারন সমস্যা সমাধানের জন্য প্রোগ্রাম লিখা হয়না। বাস্তবে যে সকল প্রোগ্রাম লিখা হয় তাতে অসংখ্য ইউজার ডিপেন্ড ইনপুট নেওয়ার প্রয়োজন হয়, অসংখ্যবার ডাটা প্রসেস করার প্রয়োজন হয়। আর এই অসংখ্যবার কাজ করার জন্য অসংখ্য বার মেমরি সেল এর নাম্বার সেট করে দেওয়ার প্রয়োজন হবে। মেমরি সেল নির্বাচন করার সমই অবশ্যই আপনাকে নিশ্চিত হতে হবে উক্ত মেমরি সেল অন্য কোন কাজে ব্যবহার করা হয়েছে কিনা। যদি ভুল ক্রমে একই মেমরি সেল অধিক ইনপুট নেওয়ার কাজে ব্যবহার হয় তাহলে প্রোগ্রাম লজিক্যাল ভুল করবে। এছারাও একটি কম্পিউটারের অভান্তরীনে হাজার হাজার মেমরি সেল রয়েছে যার হিসাব রাখা খুবই কষ্টকর এবং সরাসরি মেমরি সেলের নাম্বার/এড্রেস নিয়ে কাজ করতেগেলে কম্পিউটারের অভন্তরীন সম্পর্কে ভাল জ্ঞ্যান থাকা আবশ্যক।
এই সকল সমস্যা দূর করার জন্য ও এ থেকে মুক্তি পাওয়ার জন্য হাই লেভেল ল্যাংগুয়েজ গুলোতে ভেরিয়েবল ব্যবহার করা হয়। অর্থাৎ মেমরি সেলের এড্রেস/নাম্বার ব্যবহার না করে একটি রুপক নাম ব্যবহার করা হয়। এই রুপক নামকেই ভেরিয়েবল বলা হয়। যেহেতু মিড লেভেলের ল্যাংগুয়েজ এ হাই লেভেল ল্যাংগুয়েজের সকল গুনাবলী থাকে তাই সি ল্যাংগুয়েজেও ভেরিয়েবল নিয়ে কাজ করা যায়। ভেরিয়েবল নিয়ে কাজ করার সবচেয়ে বড় সুবিধা হচ্ছে আপনাকে মেমরি সেল নিয়ে চিন্তা করার দরকার পরবেনা। কারন কম্পাইলার এর অভন্তরীন থেকে প্রয়োজন অনুসারে মেমেরি সেল এড্রেস ঠিক করে নিবে। আপনাকে শুধু বলে দিতে হবে ঐ ভেরিয়েবলের জন্য কতটুক জায়গার রাখবে।
ভেরিয়েবল নিয়ে কাজ করার পূর্বে আমাদেরকে অবশ্যই প্রোগ্রামকে বলে দেওয়ার প্রয়োজন হবে যে, কি নামে ভেরিয়েবল হবে, কি ধরনের ডাটা ( টেক্সট, নাম্বার ) হবে এবং মেমরিতে কতটুক জায়গা রাখবে উক্ত ভেরিয়েবলের জন্য। প্রোগ্রামকে ভেরিয়েবল সম্পর্কে এই বলে দেওয়াকে বলা হয় ভেরিয়েবল ডিক্লেয়ার করা। মানে হচ্ছে ভেরিয়েবল ঘোষনা করা।
চলুন একটি উদাহরন দেখা যাক। উদাহরন হিসেবে আমরা আমাদের পূর্বের সাধারন সমস্যাটি ব্যবহার করব।
|
উপরের কোড টুক কপি করে code Blocks এ পেষ্ট করে রান করুন। cmd উইন্ডো আসবে। যে কোন একটি সংখ্যা লিখুন মনে করি আমাদের প্রথম সংখ্যাটি ‘৫’ এবং এন্টার প্রেস করুন। আবার একটি সংখ্যা প্রেস করুন মনে করি ২য় সংখ্যাটি ‘৩’ এবং এরপর এন্টার প্রেস করুন। প্রোগ্রামটি আমাদেরকে দেখাবে “your 2 number sum is: 8” । পুনরায় এন্টার প্রেস করুন ইউন্ডোটি চলে যাবে। আবার অন্য ২ টি সংখ্যা দিয়ে চেষ্টা করুন। codeBlock সম্পর্কে সি টিউটোরিয়াল, পর্ব ৩- (সি ল্যাংগুয়েজের ইতিহাস) অংশে আলোচনা করা হয়েছে।
1. মেইন ফাংশন শুরু। মেইন ফাংশন সম্পর্কে ফাংশন পর্বে আলোচনা করা হবে।
2. (Int num1;) : সি ল্যাংগুয়েজ সাধারনত ৪ ধরনের ডাটা টাইপ নিয়ে কাজ করে যথা- char, integer(int), float, double. ডাটা টাইপ নিয়েও আমরা পরবর্তিতে আলোচনা করব। ২ নাম্বার লাইনে আমরা ভেরিয়েবল ডিক্লেয়ার করেছি। “Int num1;” এর ‘int’ দিয়ে বুঝানো হয়েছে উক্ত ভেরিয়েবলটি integer ডাটা টাইপ (ডাটা টাইপ নিয়ে আমরা পরবর্তিতে আলোচনা করব) । “Int num1;” এর ‘num1’ হচ্ছে ভেরিয়েবলের নাম ও এই ভেরিয়েবলটি আমাদের কাছ থেকে নেওয়া ১ম নম্বারটি ষ্টোর করব এবং সর্বশেষ ক্লোন হচ্ছে ষ্টেটম্যান্ট আলাদা করার জন্য।
3. (Int num2;) : এই লাইনটি ২য় ভেরিয়েবল এর জন্য। যা আমাদের কাছ থেকে নেওয়া ২য় নম্বারটি ষ্টোর করবে।
4. (int sum;) : উক্ত কোডটির মাধ্যমে ৩য় নম্বার ভেরিয়েবল ডিক্লেয়ার করা হয়েছে যাতে আমরা পরবর্তিতে “num1” এবং “num2” ভেরিয়েবলের যোগ ফল জমা করে রাখব।
5. (scanf("%d",&num1); ) : “scanf("%d",&num1);” অংশের scanf ফাংশন ব্যবহার করা হয়েছে। যার মাধ্যমে ইউজার থেকে ইনপুট নেওয়া হয়। scanf ফাংশন সম্পর্কে পরবর্তিতে আলোচনা করা হবে। “"%d"” এর মাধ্যমে ইন্টেজার টাইপ ডাটা ইনপুট করা হবে বলে দেওয়া হয়েছে। “&num1” এর মাধ্যমে বলা হয়েছে যে ইন্টেজার টাইপ নাম্বারটি ষ্টোর করা হবে তা “num1” ভেরিয়েবলে জমা করতে হবে এবং ক্লোন এর মাধ্যমে ষ্টেটম্যন্টটি কে আলাদা করা হয়েছে।
6. (scanf("%d",&num2); ) : ইউজার থেকে ইন্টেজার টাইপ ২য় ইনপুট নেওয়ার জন্য।
7. (sum = num1 + num2) : এর “sum =” অর্থ হচ্ছে “sum” ভেরিয়েবলে জমা হবে এবং “sum = num1 + num2;” এর “num1 + num2” হচ্ছে “num1” এবং “num2” ভেরিয়েবল যোগ হবে। সম্পূর্ন কোডটির অর্থ হচ্ছে “sum” ভেরিয়েবলে জমা হবে “num1” এবং “num2” ভেরিয়েবলের যোগ ফল।
8. (printf("you 2 number sum is: %d",sum) ) : এই লাইনের “printf” ফাংশন ব্যবহার করা হয়েছে। “printf("you 2 number sum is: %d",sum);” এর “you 2 number sum is:” হচ্ছে নরমাল টেক্সট / ষ্ট্রিং। এবং “%d” এর মাধ্যমে বলা হয়েছে এই স্থানে একটি ইন্টেজার টাইপ ডাটা বসবে। কোন ইন্টেজার টাইপ ডাটা বসবে তা “,” এর পর থাকবে। ‘,’ এর পরের “sum” হচ্ছে আমাদের পূর্বের ভেরিয়েবল যাতে আমরা “num1” এবং “num2” এর যোগফল জমা করে রেখেছি। এবং পূর্বের “%d” স্থানে ‘sum’ ভেরিয়েবলে জমা হওয়া ডাটা দেখাবে।
9. (getchar();) : “getchar();” ও একটি ফাংশন যার মাধ্যমেও ইনপুট নেওয়া হয়ে থাকে। পরবর্তিতে এই বিষয়ে বিশাদ আলোচনা করা হবে। যাই হোক getchar(); ব্যবহার করা হয়েছে যে কোন একটি কী প্রেস করার পর্যন্ত অপেক্ষা করার জন্য। যে কোন একটি কী প্রেস করুন cmd উইন্ডোটি বন্ধ হয়ে যাবে।
10. (}) : মেইন ফাংশন ক্লোজ করার জন্য।
11. এবং সর্বশেষ কোন বিষয় বুঝতে কষ্ট হলে অথবা বুঝতে না পরলে কমেন্টের মাধ্যমে জানাবেন। 😀
যারা নতুন সি শিখছেন অথবা শিখার চেষ্টা করছেন তাদের কাছে এই বিষয় গুল অর্থহীন মনে হতে পারে। কিন্তু ঠিক তা নয়। মনে হয় “দূর এসব কি করছে বাস্তব কাজ কিভাবে করব”। অ,আ,ক,খ না শিখলে কখনই বাংলা পড়া সম্ভাব নয়। এই বিষয় গুলও ঠিক তাই।
সবাই ভাল সুস্থতা কামনা করে এবং আমার জন্য দোয়া চেয়ে বিদায় নিচ্ছি। আল্লাহাফেজ।
নিজেকে জ্ঞান বিজ্ঞানের আলোয় আলোকিত করতে টিউটোরিয়াল বিডির সাথেই থাকুন।
টিউনটির মূল লেখক ইমরান এবং টিউনটি পূর্বে টিউটরিয়ালবিডিতে প্রকাশিত।
আমি টিউটোহোস্ট। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 5 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 162 টি টিউন ও 69 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
টিউটোহোস্ট বাংলাদেশের একটি জনপ্রিয় ওয়েব হোস্টিং সেবাদানকারী প্রতিষ্ঠান। যুক্তরাস্ট্র এবং যুক্তরাজ্য ভিত্তিক দ্রুতগতির বেশ কিছু ওয়েব সারভারে গুরুত্বপূর্ণ তথ্যগুলো নিরাপদে সংরক্ষণ করা হয়। আমরা এদেশে ২৪ ঘন্টা এবং বছরে ৩৬৫ দিন অনলাইন এবং ফোন সাপোর্টের ব্যবস্থা রেখেছি। বাংলেদশসহ অনেক দেশের জনপ্রিয় ওয়েবসাইট আমাদের সারভার ব্যবহার করছে।
প্রিয় টিউনার,
আপনি ভুল ভাবে আপনার চেইন টিউনের শিরোনাম গুলো দিচ্ছেন। আপনি পর্ব হিসেবে টিউনের শিরোনাম গুলো –
চেইন টিউনের নাম [পর্ব-০১] :: চেইন টিউনের ভিতরের বিষয়বস্তু …
চেইন টিউনের নাম [পর্ব-০২] :: চেইন টিউনের ভিতরের বিষয়বস্তু ….
চেইন টিউনের নাম [পর্ব-০৩] :: চেইন টিউনের ভিতরের বিষয়বস্তু
এর অর্থ প্রথমে চেইন টিউনের নাম, এরপর (স্পেস দিয়ে) স্কয়ার ব্রাকেটের ( [ ] ) মধ্যে পর্ব হাইফেন (-) দিয়ে দুই সংখ্যায় পর্বের নম্বর। স্কয়ার ব্রাকেটের ( [ ] ) ভিতরে কোন স্পেস দিবেন না। এরপর (স্পেস দিয়ে) ডাবল কোলন (::) এর পরে (স্পেস দিয়ে) চেইন টিউনের ভিতরের বিষয়বস্তু॥ এই ফরমেটে চেইন টিউনের শিরোনাম গুলো লিখুন।
এই চেইনের পূর্বের পর্ব গুলোর শিরোনাম গুলোও যদি টেকটিউনস চেইন টিউনের শিরোনাম মোতাবেক করা না থাকে তবে সব গুলো এখনই সংশোধন করুন ও পরবর্তী সকল চেইন টিউনে সঠিক ভাবে চেইন টিউনের শিরোনাম দিন।
টেকটিউনস থেকে আপনার টিউন গুলো চেইন করে দেওয়া হবে। চেইন টিউন কীভাবে প্রক্রিয়া হয় তা জানতে ‘টেকটিউনস সজিপ্র’ https://www.techtunes.io/faq এর ‘চেইন টিউন’ অংশ দেখুন। ধন্যবাদ।