সি-- প্রোগ্ৰামিং (ভেরিয়েবল ডেটা টাইপ ও মডিফায়ার)Part-03
********************************************************************
ভেরিয়েবল Variable বা চলন হল মেমোরি. ( R A M) লোকেশন নাম বা ঠিকানা। প্রোগ্রামে যখন কোন ডেটা কাজ করা হয়, প্রাথমিক ভাবে সেগুলো কম্পিউটারের রেম অবস্থান করে সেগুলো কম্পিউটারের রেম অবস্থান করে পরবর্তী সময়ে সেগুলো পুনরুদ্ধার বা পুনব্যবহালের জন্য ঐ নাম বা ঠিকানা জানা প্রয়োজন হয়।
সুতরাং, প্রোগ্রাম ডেটা নিয়ে কাজ করার সময় প্রতিটি ডেটার জন্য একটি ভেরিয়েবল ব্যবহৃার
করতে হয়। প্রতিবার প্রোগ্রাম নির্বাচনের সময় মেমোরি ভেরিয়েবলগুলো অবস্থান এবং সংক্ষিপ্ত
মান পরিবর্তন হয় বা হতে পারে এরূপ নামকরণ করা হয় ।
ভেরিয়েবল ঘোষণা করলে যা হয় :
প্রোগ্রামের কোনো ভেরিয়েবল ঘোষণা করা হলে কম্পাইলার ঐ ভেরিয়েবলর নামে ডেটা টাইপ অনুযায়ী মেমরিতে (R A M ) প্রয়োজনীয় পরিসর (রাইট ) বরাদ্দ করে ।
পরবর্তীতে প্রোগ্রাম নিবাহের সময় ভেরিয়েবল
মান নির্ধারণ করা হলে নির্ধারিত মান সমতুল্য বাইনারি সংখ্যার রূপান্তরী হয়ে মেমোরির ঐ লোকেশনে সংরক্ষিত হয় এবং প্রোগ্রাম নির্বাহ শেষে স্বয়ংক্রিয়ভাবে বরাদ্দকৃত মেমোরি পরিসর খালি করে দেয়।
গুরুত্বপূর্ণ তথ্য : সব প্রোগ্রামেই কিছু না কিছু ডেটা
নিয়ে কাজ করা হয়। প্রোগ্রামে ব্যবহারের জন্য ডেটাকে প্রথমে মেমরিতে সংরক্ষণ করা হয় এবং প্রোয়োজনে মেমরি থেকে ডেটা উত্তেলন করে কাজে লাগান হয় ।নিম্ন পর্যায়ের ভাষায় মেমোরিতে ডেটা রাখার জন্য সরাসরি বিট ,বাইট
এবং মেমরি এ্যড্রেস ব্যবহার করা হয়,মা বড় বড়
প্রোগ্রামের জন্য অত্যন্ত জটিল এবং কষ্ট কর।
# ভরিয়েবলের প্রকারভেদ। সি ভাষায় মোটামুটি
ছয় ধরনের ভরিয়েবল ব্যবহার হয় । যথা :
১| সংখ্যাসূচক বা নিউমোরিক ভেরিয়েবল ।
( Numeric Variable )
২| বিন্যাস বা এ্যারে ভরিয়েবল ।
( Array Variable)
৩| নির্দেশক বা পয়েন্টার ভরিয়েবল
( Pointer Variable )
৪| অক্ষরমালা বা স্ট্রিং ভেরিয়েবল ।
( String Variable)
৫| বিল্ট– ইন ভরিয়েবল (Built - in Variable ) .
৬| ব্যবহারকারী বর্ণিত বা কাস্টম ভেরিয়েবল
( Custom Variable )
নিউমোরিক ভেরিয়েবল যে চালক বা ভেরিয়েবল
মান সংখ্যায় হয় তাকে সংখ্যাসূচক চালক বা
ভেরিয়েবলের মান সংখ্যায় হয় তাকে সংখ্যাসূচক চালক বা নিউমেবিল বলা হয়। এরূপ ভেরিয়েবল
মান প্রোগ্রামের নির্দিষ্ট করে দেয়া যায় অথবা প্রোগ্রাম নির্বাহের সময় কীবোর্ড বা অন্য কোন উৎস থেকে নেয়া যায় ।
সি ভাষাযব্যবহৃত100নিউমেরিক ভেরিয়েবলগুলো পূর্ণসংখ্যা ( যেমন: 100, 200, 300,1000, _4890, 12345, ইত্যাদি ) , দশমিক চিহ্ন বিশিষ্ট বৃহৎ সংখ্যা( যেমন : 3.5x10-200অর্থাৎ3.5E-200,3.5x10-200, 3.5x-200 অর্থাৎ 3.5E-203 ইত্যাদি ) হতেপারে।প্রোগ্রামে এ ধরনের ভরিয়েবলের ব্যবহারই অধিক
এ্যারে ভরিয়েবল: একই ধরনের কতগুলো ভেরিয়েবলের সমষ্টিকে এ্যারে ভরিয়েবল বা নিব্যাস চালক বলা হয়। এ্যারে আবার একামিত্রিক
দ্বিমাত্রিক ও বহুমাত্রিক হতে পারে। যেমন : একমাত্রিক এ্যারের উদাহরণ হল: A[2,3] মা মোট ৬ টি ভেরিয়েবলের সমষ্টি নির্দেশ করে। আমারা part 05 এর বিষয়ে আরো আলোচনা করব ।
পয়েন্টার ভরিয়েবল পয়েন্টার এক প্রকারভেরিয়েবল যা একই টাইপের অপর কোন ভেরিয়েবলকে নির্দেশ করে ; অর্থাৎ একই টাইপের অপর কোন ভেরিয়েবলের মেমরি এ্যড্রেস ধারণ করে। পয়েন্টার ভরিয়েবলের ব্যবহারবিধি সম্পর্কে নবম ।
স্ট্রিং ভেরিয়েবল যখন এক বা একাধিক ক্যারেক্টার বা বণ দ্বিতীয় বন্ধনীর মধ্যো আবদ্ধ
করা হয়। তখন তাঁকে স্ট্রিং বা অক্ষরমালা বলা হয়
যেমন : "Computer" Programming in c" "University of Dhaka " ইত্যাদি। সি তে স্ট্রিং ভেরিয়েবল ঘোষণার জন্য আলাদা কোনো ভেরিয়েবলকে এ্যারে কিংবা পয়েন্টার ভরিয়েবল
হিসেবে ঘোষণা করে তাকে স্ট্রিং সংরক্ষণ করা হয়
যেমন:
Char ch1 [30 ] = " programming in C " ;
Char * ch 2 = " University of Dhaka;
বিল্ট- ইন ভরিয়েবল সি তে বেশ কয়েকটি বিল্ট ইন ভরিয়েবল আছে যেগুলো কতগুলো লাইব্রেরী ফাংশন কিংবা ডেটা আইটেম মান সংরক্ষণে ব্যবহৃত হয়ে থাকে।
কাস্টম ভেরিয়েবল অনেক সময় প্রোগ্ৰামের তারপ্রয়োজনীয় বিভিন্ন টাইপ ভেরিয়েবলের সমন্বয়ে নিজস্ব ডেটা টাইপ তৈরি করে নেন এবং প্রোগ্রামে প্রোয়োজনীয় স্থানে সেই টাইপ এর প্রয়োজনীয়তা সংখ্যাক ভেরিয়েবল ঘোষণা ও ব্যবহার করেন। প্রোগ্রামার তথা প্রোগ্রাম ভাষা ব্যবহারকারী কর্তৃক তৈরি এরূপ ডেটা টাইপকে ইউজার ডিফাইন্ড বা কাস্টম ডেটা টাইপ এবং এই টাইপ ভেরিয়েবলকে কাস্টম ভেরিয়েবল বলা হয়।
ডেটা টাইপ ও মডিফায়ার ভেরিয়েবল ঘোষণা জন্য ডেটার হয়। ডেটার ধরন এবং মেমোরি পরিসর সংরক্ষণের ভিত্তিতে সি ভাষায় ব্যবহৃত
হয় এরূপ চারটি মৌলিক ডেটা টাইপ আছে ।
যথা: 1| Char
2| float
3| int
4| double
এজন্য ভেরিয়েবল ঘোষণার সময় ডেটা টাইপের সাথে মডিফায়ার ( modifier ) ব্যবহার করে মৌলিক নিয়ে কাজ করতে হয় । এজন্য ভেরিয়েবল ঘোষণার সময় ডেটা টাইপের সাথে মডিফাই (modifier) ব্যবহার করে মৌলিক ডেটা
টাইপ ভেরিয়েবলের জন্য সংরক্ষিত মেমোরি পরিসর , ডেটার প্রকৃতি এবং ধারণ ক্ষমতার পরিবর্তন (modifiy ) বা পরিবর্ধন করা যায় । সি তে চারটি মডিফায়ার আছে | যথা :
1|Signed
2| Unsigned
3|Short
4| Long
ভেরিয়েবল ঘোষণার নায়মাবলি প্রোগ্রামার প্রোগ্রাম রচনার শুরুতে প্রোয়োজনীয় সংখ্যাক ভেরিয়েবল নামকরণ করতে পারেন? না, কারণ
ভেরিয়েবল ঘোষণা এবং নামকরণের মধ্যে কিছু মৌলিক সীমাবদ্ধতা ও নিয়ম কানুন রয়েছে।
যেমন – অনেক সময় এক প্রোগ্রামেরের রচিত প্রোগ্রাম অন্য প্রোগ্রামার কতৃক পরিবর্তনা বা পরিবর্ধনের প্রোয়োজন হতে পারে । সেক্ষেত্রে
প্রোগ্রামে কোন ভেরিয়েবল কোন কাজে ব্যবহৃত
হয়েছে তা বুঝতে অসুবিধা হতে পারে।
একজন্য প্রোগ্রামে ভেরিয়েবল ঘোষণা এবং নামকরণের জন্য সুনির্দিষ্ট কিছু নিয়ম নীতি অনুসরণ করতে হয় । যেমন :
• একই ফাংশনে একই নামে দুই বা ততোধিক ভেরিয়েবল ঘোষণা করা যায় না । তবে একই
প্রোগ্রামে ব্যবহৃত দুই বা ততোধিক ফাংশনে নামে
কোন ভেরিয়েবলের নামকরণ করতে পারেন?
না, কারণ
• ভেরিয়য়েবল নামকরণে কেবল আলফাবেটিক
ক্যারেক্টার ( a......z, .A..........z) ভিজিট (0,1, .2
.........9) এবং আন্ডাররস্কোর (— ) ও ডলার চিহ্ন
($) ব্যবহার করা যায়। এ আন্ডারস্কোর ও ডাবল
চিহ্ন ব্যবতীত অন্য কোন স্পেশাল ক্যারেক্টরের
(যেমন : !,@,#,$, *,+,– ইত্যাদি) ব্যবহার করা যায় না। যেমন (my _var,My$Ro2 ) বৈধ ভেরিয়েবল
, কিন্তু my@var and My&Roll অবৈধ ।
ভেরিয়েবল ঘোষণার স্তান :
প্রোগ্রামে ভেরিয়েবল ঘোষণার অপর একটি বিবেচ্য বিষয় হল স্থান নির্বাচন। সি প্রোগ্রাম সাধারণত ফাংশনের শুরুতে ভেরিয়েবল ঘোষণা করা হয় পরে প্রোয়োজনীয় অনুযায়ী ব্যবহার করা হয়। এতে অসুবিধা হল ,প্রোগ্ৰামের কি কি এবং কোনো টাইপ কতগুলো ভেরিয়েবল আছে তা এক নজরে বলা হয়।
{অবৈধ –উদাহরণ – কারণ –শুদ্ধরূপ }
int 5x , = বণ দিয়ে শুরু হয় নাই ।
int "Roll"; = কোটেশন হবে না ।
int "main "; = main ব্যবহার করা যাবে না ।
int "Roll " –10= চিহ্নের ব্যবহার বৈধ নয় ।
flat Marks –10 = মাঝে ফাঁকা থাকবে না।
ব্যাকস্লাশ ক্যারেক্টারেক্টার
অর্থাৎ বিশেষ কিছু ক্যারেক্টার আছে ( যেমন , \ ,\n,\r,\t ইত্যাদি) যে গুলো Parintf ( ) ফাংশানে ডাবল কোটেশনের ( " ") মধ্যে যেভাবে ব্যবহার
ব্যবহার করা হয় হুবহু সেরূপ ফলাফল প্রদান করেনা । যেমন :
/*Cpo4 –02.C */
# include<Sydio .h >
# include<Conio .h >
main ( )
{
Clrscr ( );
Printf ( " welcome to\ ne Programming )"
getch ( ) ;
}
উপরোক্ত প্রোগ্রামটি লিখে নির্বাহ করলে আউটপুট
উইন্ডোজতে নীম্নরূপ ফলাফল প্রদর্শিত হবে ।
Welcome to
C programming.
নিম্নে এরূপ আরও একটি প্রোগ্রাম ( Cpo_03.c)
দেয়া হল ।
/* Cpo4_03.c */
# include<studio.h>
#include <conio.h >
main ( )
{
Clrscr ( );
Printf (" w/e/1/c/o/m/e/t /o/c/p/r/o/g/r/a/m/m/i/n/g");
ফলাফল: উপরোক্ত প্রোগ্রামটি নির্বাহ করলে আউটপুট উইন্ডোজ নিম্নরূপ ফলাফল প্রদর্শিত হবে।
Welcome to CP
oh
mmi
g
নিম্নে একই Printf ( ) ফাংশন ব্যবহার করে প্রোগ্রামের ফলাফল একাধিক লাইনে প্রদশনের
জন্য নিউ লাইন ( n/) ব্যাকস্লাশ ক্যারেক্টার ব্যবহার
করে একটি প্রোগ্রাম ( ) দেয়া হল :
/*Cpo4_04 .c */
# include<Stdio .h >
# include< Studio.h>
main ( )
Clrscr ( )
Printf ("welcome\nc \t programming",);
getch ( );
}
Output:
Welcome to
C Programming.
উপরোক্ত প্রোগ্রামে ব্যবহৃত Printf ( Welcome\tto\ nc\ programming " ) ; স্টেটমেন্টে Welcome ও toএবং C ও programming,
দূরে দূরে ( এক ট্যাব পরিমাণ ) প্রদর্শিত হয়েছে।
অনুরূপভাবে, মাঝে অপর একটি নিউ লাইন ( n)
ক্যারেক্টার ব্যবহারের ফলে ফলাফল পরপর দুই লাইনে প্রদর্শিত হয়েছে। অর্থাৎ :
Printf ("welcome\tto\nc\tProgramming ".);
Printf ("welcome to\n ") ;
Printf ("C programming) ;
বা
Printf (" Welcome to ") ;
Printf ("In" );
Printf (" C programming");
বা,
Printf ("Welcome to");
Printf ("In C programming.");
স্টেটমেন্টহমূহের অনুরূপ
নিম্নে আরও কয়েকটি ব্যাক্লস্লাশ ক্যারেক্টার ব্যবহার করে একটি প্রোগ্রাম ( Cpo4_05.C) দেয়া হল।
/*Cpo4_04 .c */
/* Using Backslash Characters */
# include< Studio.h>
main ( )
{
Printf ("welcome to \*C programming",);
}
Output:
Welcome to "C Programming".
0 মন্তব্যসমূহ