সূচিপত্র
C variable কি? C data type
নিচের কোডটি লিখুন এবং চালিয়ে দেখুন-
#include <stdio.h>
int main(){
int a=7;
int b=8;
printf("First num = %d \n Second num = %d",a,b);
return 0;
}
স্ক্রিনে কি প্রিন্ট হয়েছে? নিশ্চয় এটা-
First num = 7
Second num = 8
কিভাবে হল? এখানে a বা b কি জিনিস? %d দ্বারা কি বোঝায়? সবগুলো প্রশ্নের উত্তর ধারাবাহিকভাবে বের করার চেষ্টা করব। এখানে a বা b হচ্ছে সি প্রোগ্রামিং এর ভ্যারিয়েবল। প্রোগ্রামিং করার সময় আমাদের অনেক ডেটা সংরক্ষণ করতে হয়। আর এই C variable এর কাজ হচ্ছে ডাটা সংরক্ষণ করা। যেমন আমরা a variable এ 7 সংরক্ষণ করেছি। a এর সামনে int (integer এর সংক্ষিপ্ত রূপ ) হচ্ছে একধরনের data type যা দ্বারা বুঝানো হয়েছে- a একটি integer type ভ্যারিয়েবল। সুতরাং a ভ্যারিয়েবলে integer ছাড়া অন্য কিছু রাখতে পারবেন না। ভ্যারিয়েবলে কোন ধরনের ডেটা সংরক্ষণ করতে চান সেই অনুযায়ী ভ্যারিয়েবলের data type লিখতে হয়। আবার একই type এর একাধিক ভ্যারিয়েবল কমা দিয়ে আলাদা করে একই লাইনে লিখতে পারেন। যেমন উপরের কোডটিতে এভাবে লিখলেও হত int a=7,b=8;। তাহলে ভ্যারিয়েবল Declare করার সাধারণ ফরমেটটি হল -
variable_type variable name;
উপরের প্রোগ্রাম যদি First num = a লিখতাম তাহলে কি হত? তাহলে এটাই প্রিন্ট হত। কিন্তু আমরা তো a প্রিন্ট করতে চাই না, বরং a এর মান প্রিন্ট করতে চাই। এটা করার জন্য আমরা %d ব্যবহার করেছি যা দ্বারা কম্পিউটার বোঝে এখানে একটা ইন্টিজার বসবে এবং সেটা হবে একটা variable এর মান। একাধিক variable এর জন্য এর ক্রম অনুসরণ করবে। যেমন উপরের প্রোগ্রাম এ a,b এর জায়গায় b,a লিখে দেখুন কি হয়। তো এভাবে variable এর মান প্রিন্ট করার পদ্ধতিকে বলা হয় Formated output. %d কে বলা হয় Format Specifier.
এখন আমারা দুইটি সংখ্যা ভাগ করার জন্য একটি প্রোগ্রাম লিখবো। নিচের কোডটি লিখুন এবং চালিয়ে দেখুন,
#include <stdio.h>
int main(){
int a=6,b=4,ans;
ans = a/b;
printf("Result = %d",ans);
return 0;
}
কি প্রিন্ট হয়েছে? নিশ্চয় 1 । কিন্তু সঠিক উত্তর তো হওয়ার কথা 1.5 । তাহলে ভুল কোথায় হল?
আচ্ছা, আমরা ans কে integer variable হিসেবে declare করেছি। তাই এটি শুধু মাত্র পুর্নসংখ্যার অংসটুকু সংরক্ষণ করেছে। আমরা যদি ভগ্নাংশসহ পুর্নসংখ্যাটি চাই তাহলে আমাদের আরেক ধরনের data type ব্যবহার করতে হবে যেটা ভগ্নাংশ সংরক্ষণ করতে পারে। এরকম দুই ধরনের আছে, float type এবং double type. দুইটা প্রায় একই। float দশমিকের পর ছয় ঘর পর্যন্ত সঠিক ভাবে সংরক্ষণ করতে পারে যেখানে double বারো ঘর পর্যন্ত পারে। তাহলে এবার নিচের কোডটি চালিয়ে দেখ উত্তর কত আসে।
#include <stdio.h>
int main(){
int a=6,b=4;
double ans;
ans = a/b;
printf("Result = %lf",ans);
return 0;
}
সি প্রোগ্রামিং এ প্রধানত পাঁচ ধরনের data type ব্যবহার হয়। যথা-
1. int
2. float
3. double
4. char
5. void
যেকোনো character সংরক্ষণের জন্য char data type ব্যবহার করা হয়। যেমন,
#include <stdio.h>
int main(){
char a = 'M', b = 'N';
printf("First letter = %c \n Second letter = %c",a,b);
return 0;
}
void দ্বারা নির্দিস্ট কোনো data type বুঝানো হয় না। এটা সাধারণত বিভিন্ন function তৈরিতে এ ব্যবহার করা হয়।
সি প্রোগ্রামিং এ গাণিতিক অপারেশন
সি প্রোগ্রামে যোগ, বিয়োগ, গুণ, ভাগ এবং ভাগশেষ নির্নয়ের জন্য যথাক্রমে +, -, *, / এবং % চিহ্ন ব্যবহৃত হয়। যেমন,
#include <stdio.h>
int main(){
int a=30,b=10,sum,sub,mul;
double div; // Hence division may be fractional
sum = a+b;
sub = a-b;
mul = a*b;
div = a/b;
printf("Sum = %d\nSub = %d\nMul = %d\nDiv = %lf\n",sum,sub,mul,dib);
int x=15,y=10;
int c = x%y;
printf("%d",c);
return 0;
}
নিচের কোডটি দেখে উত্তর দেওয়ার চেষ্টা কর এবং কেন হবে তা বল-
#include <stdio.h>
int main(){
int x = 10;
int y = 4;
x = 20;
printf("X = %d\n",x);
x = x+y;
printf("X = %d\n",x);
return 0;
}
মূলত সি কম্পাইলার সবশেষ মানটি গ্রহণ করে। এভাবে সি variable এর মান update দেওয়া যায়।
সি Input
আমরা এখন পর্যন্ত বিভিন্ন প্রোগ্রামে printf() ব্যবহার করে Output নিয়ে কাজ করছি। নিজেরা কিছু input দেইনি। উপরের প্রোগ্রামগুলোতে আমারা variable এর মান নিজেরাই program এ লিখে দিয়েছি। এখন যদি এই মান আমরা অন্য ইউজারের কাছে থেকে নিতে চাই তাহলে কোডটি কেমন হবে? মূলত ইউজারের কাছে থেকে input নিতে হলে scanf() function টি ব্যবহৃত হয়। দুইটি সংখ্যার যোগফল নির্নয়ের জন্য কোডটি হবে এরূপ-
#include <stdio.h>
int main(){
int a,b,ans;
printf("Enter Two numbers: ");
scanf("%d%d",&a,&b);
ans = a+b;
printf("Result = %d",ans);
return 0;
}
scanf() এর কাজ হল printf() এর ঠিক উল্টা। scanf() function এর ব্যবহারের সময় format specifier দিয়ে বুঝিয়ে দিতে হয় যে প্রোগ্রামটি কোন ধরনের Data ইনপুট নেবে এবং কমা দিয়ে যে variable এ ডাটা রাখা হবে তার ঠিকানা উল্লেখ করে দিতে হয়। যেমন উপরের প্রোগ্রামে scanf() %d দ্বারা বুঝিয়েছে এটা integer input নেবে এবং &a হচ্ছে কম্পিউটারের মেমরিতে a variable এর ঠিকানা। এবার নিজেরা তিনটি সংখ্যার গড় নির্ণয়ের জন্য একটা প্রোগ্রাম লেখুন এবং লেখা শেষ হলে যাচাই করুন। এই পোস্টের শেষে আমি একটা উত্তর দিয়েছি।
ভেরিয়েবলের নাম লেখার নিয়ম
- সি ভাষার জন্য নির্দিস্ট করা কোনো শব্দ ভেরিয়েবল এর নাম হিসেবে ব্যবহার করা যাবে না। যেমন int, main, double, char, for, if, else, void, float ইত্যাদি।
- ভেরিয়েবল এর নাম লেখার জন্য শুধুমাত্র charater (A-Z and a-z), numbers(0-9) এবং _ চিহ্ন ব্যবহার করা যাবে।
- কোনো number দিয়ে ভেরিয়েবল এর নাম শুরু করা যাবে না। শুরুর লেটারটি অবশ্যই কোনো character দিয়ে শুরু হবে। যেমন 0num, 55a, 9sum ইত্যাদি গ্রহণযোগ্য নয়। b9, a55, t_32, ca9b ইত্যাদি গ্রহণযোগ্য।
আরও পড়ুন