প্রোগ্রাম কন্ট্রোল স্টেটমেন্ট হচ্ছে সেই সব স্টেটমেন্ট যা একটি প্রোগ্রামের কোড এক্সেকিউশন এর প্রবাহ (flow) নিয়ন্ত্রন করে। অর্থাৎ কোন লাইনের পরে কোন লাইন কোড এক্সেকিউট হবে সেটা নিয়ন্ত্রণ করে এই সব স্টেটমেন্ট গুলো। এই অংশে আমরা কেবল এই স্টেটমেন্ট গুলোর সাধারণ পরিচিতি শিখবো। বিস্তারিত আলোচনা পরবর্তী পোস্ট সমূহে করা হবে।
C ভাষায় কন্ডিশনাল বা শর্তাবদ্ধ কন্ট্রোল স্টেটমেন্ট গুলো হচ্ছেঃ
১. ব্রাঞ্চিং স্টেটমেন্ট → if, else, switch
২. লুপিং স্টেটমেন্ট → for, while, do
এই দুই ধরনের কন্ডিশনাল স্টেটমেন্ট এর সহায়ক হিসেবে আছে case, break, এবং continue স্টেটমেন্ট।
আন কন্ডিশনাল বা নিঃশর্ত জাম্প স্টেটমেন্ট হিসেবে আছে goto। আর ফাংশন এর টার্মিনেশন স্টেটমেন্ট return ও কন্ট্রোল স্টেটমেন্ট এর ভেতরেই পরে।
এখন এদের সাধারণ পরিচিতি দেওয়া যাক।
if : if স্টেটমেন্ট এর সাধারন রূপ হচ্ছে
if (শর্ত)
{
শর্ত সত্য হলে যে কোড রান হবে সেগুলো
}
অর্থাৎ if স্টেটমেন্ট এর পরে '()' এর মধ্যে একটি শর্ত দিতে হবে, এবং সেই শর্ত সত্য হলেই কেবল '{}'এর মধ্যবর্তী কোড সমূহ এক্সেকিউট হবে।
else: else স্টেটমেন্ট if স্টেটমেন্ট এর সহযোগী স্টেটমেন্ট হিসেবে ব্যবহৃত হয়। কখনোই শুধু else স্টেটমেন্ট ব্যবহার করা যায় না। if স্টেটমেন্ট এর শর্ত সত্য না হলে কি ঘটবে সেটা else স্টেটমেন্ট দিয়ে এক্সেকিউট করা হয়। else স্টেটমেন্ট এর সাধারণ রূপ হচ্ছে,
if (শর্ত)
{
শর্ত সত্য হলে যে কোড রান করবে
}
else
{
শর্তটি মিথ্যা হলে যে কোড রান করবে
}
অর্থাৎ একটি if...else জোড়া দিয়ে দ্বিমুখী সিদ্ধান্ত (two way decision making) নেওয়া যায়।
মনে রাখতে হবে যে, if স্টেটমেন্ট else স্টেটমেন্ট ছাড়াও ব্যবহার করা যায়, কিন্তু else স্টেটমেন্ট কে অবশ্যই একটি if স্টেটমেন্ট এর সাথে ব্যবহার করতে হবে।
switch: switch স্টেটমেন্ট হচ্ছে বহুমুখী সিদ্ধান্ত গ্রহন (multi way decision making) এর জন্য ব্যবহৃত হয়। এর সাধারণ রূপ হচ্ছে,
switch (value)
{
case label1:
এক্সেকিউশনের জন্য কোড;
break;
case label2:
এক্সেকিউশন এর জন্য কোড;
break;
.........
.........
case labelN:
এক্সেকিউশন এর জন্য কোড;
break;
default:
এক্সেকিউশন এর জন্য কোড;
}
label গুলোকে অবশ্যই ইন্টিজার বা ক্যারেকটার কনস্ট্যান্ট হতে হবে। যে label টি value এর সাথে ম্যাচ করবে সেই label এর কোডটি এক্সেকিউট হবে।
switch এর সাথে সম্পর্কিত স্টেটমেন্ট হচ্ছে case, break এবং default।
for: লুপ হচ্ছে একটি নির্দিষ্ট শর্তাধীনে একটি নির্দিষ্ট কোড বা কোড সমাবেশকে বারবার (repeat) এক্সেকিউট করার একটি ব্যবস্থা। আর for স্টেটমেন্ট হচ্ছে C এর অন্যতম লুপ স্টেটমেন্ট।
for লুপ হচ্ছে C এর সবচে ফ্লেক্সিবল লুপ স্টেটমেন্ট। একে বিভিন্ন ভাবে ব্যবহার করা হয়। তবে, এর সবচে বহুল ব্যবহৃত রূপ হচ্ছে,
for (লুপ শুরুর শর্ত; লুপ চলতে থাকার শর্ত; লুপ নিয়ন্ত্রকের পরিবর্তন ধাপ)
{
যে কোড বা কোড সমূহের রিপিটেশন ঘটবে
}
সাধারণত for লুপ একটি কাউন্টার কন্ট্রোলড লুপ। তাই, "লুপ শুরুর শর্ত" হিসেবে একটি লুপ কন্ট্রোল ভ্যালিয়েবলকে ইনিশিয়ালাইজ করা হয়। "লুপ চলতে থাকার শর্ত" হিসেবে রিলেশনাল অপারেটর ব্যবহার করে লুপ কন্ট্রোল ভ্যারিয়েবল নিয়ে একটি এক্সপ্রেশন তৈরী করা হয়। এই এক্সপ্রেশন যতক্ষণ পর্যন্ত সত্য হবে ততক্ষণ লুপ টি চলবে। "লুপ নিয়ন্ত্রক এর পরিবর্তন ধাপ" এ সাধারণত লুপ কন্ট্রোল ভ্যারিয়েবল এর মান কে বাড়ানো বা কমানো হয়। for লুপ নিয়ে বিস্তারিত আলোচনায় এগুলো ব্যাখ্যা করা হবে।
while: while হচ্ছে আরেকটি লুপ স্টেটমেন্ট। এর সাধারণ রূপ হচ্ছে,
while (নিয়ন্ত্রক শর্ত)
{
যে কোড বা কোড সমাবেশকে রিপিট করা হবে
}
"নিয়ন্ত্রক শর্ত" যতক্ষন সত্য হবে ততক্ষন লুপ চলবে। শর্তটি মিথ্যা হলে লুপ থেমে যাবে। নিয়ন্ত্রক শর্তের পরিবর্তনের অংশটি কোড সমাবেশের সাথেই থাকবে।
সাধারণত while লুপ হচ্ছে সেন্টিনেল কন্ট্রোলড লুপ।
do: do... while জোড় হচ্ছে আরেকটি লুপ স্টেটমেন্ট। এর সাধারণ রূপ হচ্ছে,
do
{
যে কোড বা কোড সমাবেশকে বার বার রিপিট করা হবে
} while (নিয়ন্ত্রক শর্ত);
do একটি এক্সিট কন্ট্রোল লুপ। অর্থাৎ কোড সমাবেশ ১ বার এক্সেকিউট হবার পরে নিয়ন্ত্রক শর্ত সত্য কি না সেটা দেখা হয়। এছাড়া এর বাকি সব বৈশিষ্ট্য প্রায় while লুপ এর মতই।
break: switch ও যে কোন লুপ স্টেটমেন্ট থেকে তাৎক্ষণিক বের হয়ে আসার জন্য break স্টেটমেন্ট ব্যবহার করা হয়।
continue : এটি শুধু লুপ স্টেটমেন্ট গুলোর সাথে ব্যবহার করা যায়। continue স্টেটমেন্ট এক্সেকিউট হলে লুপ তাৎক্ষণিক রিপিট হয়। অর্থাৎ লুপ চলমান ধাপের পরবর্তী ধাপে চলে যায়। পরে বিস্তারিত উদাহরণ সহ এটি নিয়ে আলোচনা করা হবে।
goto: এটি হচ্ছে আনকন্ডিশনাল জাম্প স্টেটমেন্ট। এর সাধারন রূপ হচ্ছে,
goto label;
প্রোগ্রাম কোডের যে অবস্থানে "label:" কথাটি থাকবে "goto label;" এক্সেকিউট হলে প্রোগ্রামটি সেই অবস্থানের ঠিক পরেই যে কোড আছে তা এক্সেকিউট করা শুরু করবে।
goto স্টেটমেন্ট সহজে ব্যবহার হয় না বললেই চলে। তারপরও এটি নিয়ে পরে বিস্তারিত আলোচনা করা হবে।
return: return হচ্ছে কোন ফাংশনের টার্মিনেশন স্টেটমেন্ট। এর সাধারণ রূপ হচ্ছে,
return value;
return স্টেটমেন্ট এক্সেকিউট হলে প্রোগ্রাম এক্সেকিউট বর্তমান ফাংশন থেকে বের হয়ে কলিং ফাংশনে ফেরত আসে। আর void ছাড়া অন্য যে কোন ধরনের ফাংশনের ক্ষেত্রে কলিং ফাংশনকে value রিটার্ন দেওয়াও return এর কাজ। আরো বিস্তারিত আলোচনার জন্য এখানে দেখুন।
এখানেই শেষ হচ্ছে C প্রোগ্রাম কন্ট্রোল স্টেটমেন্ট নিয়ে সাধারণ আলোচনা। বুঝতে সমস্যা হলেও কোন অসুবিধা নাই। এইগুলো নিয়ে বিস্তারিত আলোচনা পরবর্তী পোস্ট সমূহে করা হয়েছে।
C ভাষায় কন্ডিশনাল বা শর্তাবদ্ধ কন্ট্রোল স্টেটমেন্ট গুলো হচ্ছেঃ
১. ব্রাঞ্চিং স্টেটমেন্ট → if, else, switch
২. লুপিং স্টেটমেন্ট → for, while, do
এই দুই ধরনের কন্ডিশনাল স্টেটমেন্ট এর সহায়ক হিসেবে আছে case, break, এবং continue স্টেটমেন্ট।
আন কন্ডিশনাল বা নিঃশর্ত জাম্প স্টেটমেন্ট হিসেবে আছে goto। আর ফাংশন এর টার্মিনেশন স্টেটমেন্ট return ও কন্ট্রোল স্টেটমেন্ট এর ভেতরেই পরে।
এখন এদের সাধারণ পরিচিতি দেওয়া যাক।
if : if স্টেটমেন্ট এর সাধারন রূপ হচ্ছে
if (শর্ত)
{
শর্ত সত্য হলে যে কোড রান হবে সেগুলো
}
অর্থাৎ if স্টেটমেন্ট এর পরে '()' এর মধ্যে একটি শর্ত দিতে হবে, এবং সেই শর্ত সত্য হলেই কেবল '{}'এর মধ্যবর্তী কোড সমূহ এক্সেকিউট হবে।
else: else স্টেটমেন্ট if স্টেটমেন্ট এর সহযোগী স্টেটমেন্ট হিসেবে ব্যবহৃত হয়। কখনোই শুধু else স্টেটমেন্ট ব্যবহার করা যায় না। if স্টেটমেন্ট এর শর্ত সত্য না হলে কি ঘটবে সেটা else স্টেটমেন্ট দিয়ে এক্সেকিউট করা হয়। else স্টেটমেন্ট এর সাধারণ রূপ হচ্ছে,
if (শর্ত)
{
শর্ত সত্য হলে যে কোড রান করবে
}
else
{
শর্তটি মিথ্যা হলে যে কোড রান করবে
}
অর্থাৎ একটি if...else জোড়া দিয়ে দ্বিমুখী সিদ্ধান্ত (two way decision making) নেওয়া যায়।
মনে রাখতে হবে যে, if স্টেটমেন্ট else স্টেটমেন্ট ছাড়াও ব্যবহার করা যায়, কিন্তু else স্টেটমেন্ট কে অবশ্যই একটি if স্টেটমেন্ট এর সাথে ব্যবহার করতে হবে।
switch: switch স্টেটমেন্ট হচ্ছে বহুমুখী সিদ্ধান্ত গ্রহন (multi way decision making) এর জন্য ব্যবহৃত হয়। এর সাধারণ রূপ হচ্ছে,
switch (value)
{
case label1:
এক্সেকিউশনের জন্য কোড;
break;
case label2:
এক্সেকিউশন এর জন্য কোড;
break;
.........
.........
case labelN:
এক্সেকিউশন এর জন্য কোড;
break;
default:
এক্সেকিউশন এর জন্য কোড;
}
label গুলোকে অবশ্যই ইন্টিজার বা ক্যারেকটার কনস্ট্যান্ট হতে হবে। যে label টি value এর সাথে ম্যাচ করবে সেই label এর কোডটি এক্সেকিউট হবে।
switch এর সাথে সম্পর্কিত স্টেটমেন্ট হচ্ছে case, break এবং default।
for: লুপ হচ্ছে একটি নির্দিষ্ট শর্তাধীনে একটি নির্দিষ্ট কোড বা কোড সমাবেশকে বারবার (repeat) এক্সেকিউট করার একটি ব্যবস্থা। আর for স্টেটমেন্ট হচ্ছে C এর অন্যতম লুপ স্টেটমেন্ট।
for লুপ হচ্ছে C এর সবচে ফ্লেক্সিবল লুপ স্টেটমেন্ট। একে বিভিন্ন ভাবে ব্যবহার করা হয়। তবে, এর সবচে বহুল ব্যবহৃত রূপ হচ্ছে,
for (লুপ শুরুর শর্ত; লুপ চলতে থাকার শর্ত; লুপ নিয়ন্ত্রকের পরিবর্তন ধাপ)
{
যে কোড বা কোড সমূহের রিপিটেশন ঘটবে
}
সাধারণত for লুপ একটি কাউন্টার কন্ট্রোলড লুপ। তাই, "লুপ শুরুর শর্ত" হিসেবে একটি লুপ কন্ট্রোল ভ্যালিয়েবলকে ইনিশিয়ালাইজ করা হয়। "লুপ চলতে থাকার শর্ত" হিসেবে রিলেশনাল অপারেটর ব্যবহার করে লুপ কন্ট্রোল ভ্যারিয়েবল নিয়ে একটি এক্সপ্রেশন তৈরী করা হয়। এই এক্সপ্রেশন যতক্ষণ পর্যন্ত সত্য হবে ততক্ষণ লুপ টি চলবে। "লুপ নিয়ন্ত্রক এর পরিবর্তন ধাপ" এ সাধারণত লুপ কন্ট্রোল ভ্যারিয়েবল এর মান কে বাড়ানো বা কমানো হয়। for লুপ নিয়ে বিস্তারিত আলোচনায় এগুলো ব্যাখ্যা করা হবে।
while: while হচ্ছে আরেকটি লুপ স্টেটমেন্ট। এর সাধারণ রূপ হচ্ছে,
while (নিয়ন্ত্রক শর্ত)
{
যে কোড বা কোড সমাবেশকে রিপিট করা হবে
}
"নিয়ন্ত্রক শর্ত" যতক্ষন সত্য হবে ততক্ষন লুপ চলবে। শর্তটি মিথ্যা হলে লুপ থেমে যাবে। নিয়ন্ত্রক শর্তের পরিবর্তনের অংশটি কোড সমাবেশের সাথেই থাকবে।
সাধারণত while লুপ হচ্ছে সেন্টিনেল কন্ট্রোলড লুপ।
do: do... while জোড় হচ্ছে আরেকটি লুপ স্টেটমেন্ট। এর সাধারণ রূপ হচ্ছে,
do
{
যে কোড বা কোড সমাবেশকে বার বার রিপিট করা হবে
} while (নিয়ন্ত্রক শর্ত);
do একটি এক্সিট কন্ট্রোল লুপ। অর্থাৎ কোড সমাবেশ ১ বার এক্সেকিউট হবার পরে নিয়ন্ত্রক শর্ত সত্য কি না সেটা দেখা হয়। এছাড়া এর বাকি সব বৈশিষ্ট্য প্রায় while লুপ এর মতই।
break: switch ও যে কোন লুপ স্টেটমেন্ট থেকে তাৎক্ষণিক বের হয়ে আসার জন্য break স্টেটমেন্ট ব্যবহার করা হয়।
continue : এটি শুধু লুপ স্টেটমেন্ট গুলোর সাথে ব্যবহার করা যায়। continue স্টেটমেন্ট এক্সেকিউট হলে লুপ তাৎক্ষণিক রিপিট হয়। অর্থাৎ লুপ চলমান ধাপের পরবর্তী ধাপে চলে যায়। পরে বিস্তারিত উদাহরণ সহ এটি নিয়ে আলোচনা করা হবে।
goto: এটি হচ্ছে আনকন্ডিশনাল জাম্প স্টেটমেন্ট। এর সাধারন রূপ হচ্ছে,
goto label;
প্রোগ্রাম কোডের যে অবস্থানে "label:" কথাটি থাকবে "goto label;" এক্সেকিউট হলে প্রোগ্রামটি সেই অবস্থানের ঠিক পরেই যে কোড আছে তা এক্সেকিউট করা শুরু করবে।
goto স্টেটমেন্ট সহজে ব্যবহার হয় না বললেই চলে। তারপরও এটি নিয়ে পরে বিস্তারিত আলোচনা করা হবে।
return: return হচ্ছে কোন ফাংশনের টার্মিনেশন স্টেটমেন্ট। এর সাধারণ রূপ হচ্ছে,
return value;
return স্টেটমেন্ট এক্সেকিউট হলে প্রোগ্রাম এক্সেকিউট বর্তমান ফাংশন থেকে বের হয়ে কলিং ফাংশনে ফেরত আসে। আর void ছাড়া অন্য যে কোন ধরনের ফাংশনের ক্ষেত্রে কলিং ফাংশনকে value রিটার্ন দেওয়াও return এর কাজ। আরো বিস্তারিত আলোচনার জন্য এখানে দেখুন।
এখানেই শেষ হচ্ছে C প্রোগ্রাম কন্ট্রোল স্টেটমেন্ট নিয়ে সাধারণ আলোচনা। বুঝতে সমস্যা হলেও কোন অসুবিধা নাই। এইগুলো নিয়ে বিস্তারিত আলোচনা পরবর্তী পোস্ট সমূহে করা হয়েছে।
অসাধারণ :)
ReplyDelete