আমাদের কথা খুঁজে নিন

   

সি প্রোগ্রামিং: বিগিনার লেভেল - পর্ব ১.২

আমি এক ভাঙা বাড়ির ভাঙা ঘরের ভাঙা বারান্দা, আমি পথের মাঝে খুঁজে পাওয়া একটাকা আধখানা, আমি বিদ্যাসাগর মাইকেলেরই মস্ত বড় ভুল, আমি কিশোরীর ওই হারিয়ে যাওয়া মুক্তো গাঁথা দুল...

পর্ব ১.২: ডেটা টাইপ: সি-তে বিভিন্ন ডেটা স্টোর বা ইনপুট এর জন্য বিভিন্ন ডেটা টাইপ ব্যবহার করতে হয়। যেমন কোন পূর্ণ সংখ্যার জন্য int (integer-এর সংক্ষিপ্ত রূপ), একটি অক্ষরের জন্য char (character-এর সংক্ষিপ্ত রূপ) ইত্যাদি। সি-তে যখন কোন পূর্ণসংখ্যা নিয়ে কাজ করতে হবে তখন একটি int-টাইপের ভ্যারিয়েবল ডিক্লেয়ার করতে হবে। ভ্যারিয়েবল হল একটি পাত্র বা প্লেট এর মত যা কিছু ধারন করতে পারে। ইন্টিজার হল ০, ১, ২... এরকম পূর্ণসংখ্যা (ঋণাত্বক সহ)।

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

সে রকম আপনার কম্পিউটারের RAM হল আপনার ডাইনিং টেবিলের মত, যেখানে আপনি ভাত, ডাল, তরকারীর জন্য বিভিন্ন স্থান বা বাটি নির্দিষ্ট করে দিয়েছেন। তেমনি RAM বা মেমরি ব্লকে একটি int-টাইপের ভ্যারিয়েবল ডিক্লেয়ার করার মানে হল একটি ইন্টিজার সংরক্ষন করার জন্য স্থান নির্দিষ্ট করে দেয়া। সি ল্যাঙ্গুয়েজে আরেকটি কোড দেখুন: #include <stdio.h> #include <conio.h> int main() { clrscr(); int a,b,c; printf(“Please enter first number: “); scanf(“%d”,&a); printf(“\nPlease enter second number: “); scanf(“%d”,&b); c=a+b; printf(“\nThe summation is: %d “,c); return 0; } এখানে clrscr() এর পরের লাইনটি খেয়াল করুন, এখানে তিনটি ইন্টিজার ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে। আপনি চাইলে তিনটি একসাথে ডিক্লেয়ার না করে আলাদা আলাদা করেও ডিক্লেয়ার করতে পারবেন। সেক্ষেত্রে লিখতে হত - int a; int b; int c; এরপর printf() ফাংশন ব্যবহার করে Please enter the first number: কথাটি স্ক্রীনে ছাপানো হয়েছে।

এরপরের লাইনে একটি নতুন ফাংশন scanf() ব্যবহার করা হয়েছে। scanf() এর কাজ হল ইউজারের কাছ থেকে কোন কিছু ইনপুট নেওয়া। scanf()-এর গঠন- scanf(“কন্ট্রোল স্ট্রিং”,&মেমরি-লোকেশন) এখানে আমারা একটি ইন্টিজার ইনপুট নিতে চাই। ইন্টিজারের জন্য কন্ট্রোল স্ট্রিং হল %d। scanf() -এর মধ্যে কম্পাইলার যখন %d পাবে তখন এটি ইউজারের কাছ থেকে একটি ইন্টিজার ভ্যালু গ্রহনের জন্য প্রস্তুত হবে।

কন্ট্রোল স্ট্রিং লিখতে হয় ডাবল কোটেশন এর মধ্যে, এরপর একটি কমা(,) দিয়ে একটি ভ্যারিয়েবল নির্দিষ্ট করে দিতে হয় যেখানে কম্পাইলার ইউজারের কাছ থেকে ডেটা নিয়ে স্টোর করবে। এখানে আগেই ডিক্লেয়ার করা a নামের ইন্টিজার ভ্যারিয়েবলটিতে কনসোল(কীবোর্ড,মনিটর) থেকে ইনপুট নিয়ে সেটি স্টোর করা হয়েছে। পরবর্তি দুই লাইনের কাজ এখন আপনি নিজেই বুঝতে পারবেন। দ্বিতীয় যে scanf() এর ব্যবহার করা হয়েছে সেটিতে b ভ্যারিয়েবলটিতে ডেটা স্টোর করা হয়েছে। এখানে লক্ষ করুন, ভ্যারিয়েবলের নামের আগে & চিহ্ন ব্যবহার করা হয়েছে।

এই & চিহ্নটি হল একটি পয়েন্টার যা ঐ ভ্যারিয়েবলটির এড্রেস পয়েন্ট করে। scanf() এর ক্ষেত্রে ভ্যারিয়েবলের নামের আগে এই চিহ্নটি ব্যবহার করতে হয়। কিন্তু কেন করতে হয় তা পরবর্তিতে আলোচনা করা হবে। এর পরবর্তি লাইনটি এবার দেখুন, c=a+b। এখানে এখন a এবং b ভ্যারিয়েবল দুইটিতে দুইটি ইন্টিজার সংখ্যা আছে।

এই লাইনটি এক্সিকিউট করার পর c নামের ভ্যারিয়েবলটিতে a এবং b এর ভ্যালুর সমষ্টি এসাইন হয়ে যাবে। মনে রাখবেন, = অপারেটরটির বাম পাশে যে ভ্যারিয়েবলে ডেটা এসাইন করতে চান সেটি লিখতে হবে। আর ডানপাশে লিখতে হবে যার ভ্যালু এসাইন করতে চান সেটি। অর্থাৎ এই লাইনটির অর্থ দাড়াল এই রকম, a+b এর ভ্যালু c নামক ভ্যারিয়েবলে এসাইন কর। এরপরের লাইনে c এর ভ্যালু অর্থাৎ a+b এর ভ্যালু প্রিন্ট করা হবে।

এখানে ডাবল কোটেশনের মধ্যে শুরু হয়েছে \n দিয়ে, এর অর্থ হল new line। printf() এর ডাবল কোটেশনের মধ্যে \n দিলে তা পরবর্তি লাইনে আউটপুট প্রদর্শন করে। এখানে একটি নতুন লাইনে The summation is: এটুকু প্রিন্ট করার পর %d কন্ট্রোল স্ট্রিং পাবে, অর্থাৎ একটি ইন্টিজার ভ্যালু প্রিন্ট করার নির্দেশ পাবে। কমার পর c ভ্যারিয়েবল উল্লেখ করার কারনে এই %d এর স্থলে c এর ভ্যালু প্রিন্ট করা হবে। ভ্যারিয়েবলের নামকরনের সময় কয়েকটি জিনিস লক্ষ রাখবেন, ভ্যারিয়েবলের নাম অবশ্যই কোন ইংরেজি অক্ষর দিয়ে শুরু হবে (a-z, A-Z), কোন সংখ্যা দিয়ে হতে পারবে না (0-9)।

ভ্যারিয়েবলের নামে আন্ডারস্কোর ( _ ) ছাড়া অন্য কোন চিহ্ন ( , . / ; ! @ ইত্যাদি ) থাকতে পারবে না, এবং পরপর দুইটি আন্ডারস্কোর দেয়া যাবে না। ভ্যারিয়েবলের নাম সি এর কোন সিনট্যাক্স (printf, int, char) এর মত হতে পারবে না। A, a অথবা vari, Vari, vAri ইত্যাদি আলাদা আলাদা ভ্যারিয়েবল। এবার আপনার নিজের কিছু কাজ, এই কোডটি দেখার পর আপনি অবশ্যই একটি প্রোগ্রাম বানাতে পারবেন যা ইউজারের কাছ থেকে দুইটি সংখ্যা ইনপুট নিয়ে তার বিয়োগফল প্রকাশ করে। আর \n ব্যবহার না করে একই কোড কম্পাইল করে দেখুন।

তাতে \n -এর কাজ বুঝতে পারবেন। ১.০ ১.১ ১.২

অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।