কোনটা এসিড, কোনটা ক্ষারক,কোনটা লবণ তা নিয়ে তোমরা প্রায় সময়ই ঝামেলায় পড় অথচ কিছু টেকনিক জানলেই তোমরা এ সমস্যার সমাধান পেতে পার ।
যৌগ দেখে কিভাবে এসিড, ক্ষারক, লবণ চিনতে হয় আজ তা নিয়ে আলোচনা করা হবে ।
এর জন্য প্রথমে ধাতু ও অধাতু
সম্পর্কে জানতে হবে ।
_______________
ধাতু = সাধারণত বিক্রিয়ায় যেসব মৌল e দান
করে তারা ধাতু ।
ধাতু e দান করে ধাতব আয়ন বা ধনাত্নক
আয়নে পরিণত হয়।
যেমন → Na, যা e দান করে Na+ আয়নে পরিণত
হয় ।
আরও উদাহরণঃ Ca,Mg,K,Li ইত্যাদি ।
ব্যতিক্রম- H (হাইড্রোজেন) ।
কেননা হাইড্রোজেন e দান করা সত্বেও অধাতু ।
_______________
অধাতু = সাধারণত বিক্রিয়ায় যেসব মৌল e গ্রহণ
করে তারা অধাতু ।
অধাতু e গ্রহণ করে অধাতব আয়ন বা ঋণাত্মক
আয়নে পরিণত হয় ।
যেমন- Cl, যা e গ্রহণ করে Cl- আয়নে পরিণত হয় ।
আরও উদাহরণঃ F,Br,O,Br ইত্যাদি ।
_______________
Just ৪টা সূত্র মনে রাখ , তাহলে এসিড ও ক্ষারক
সহজেই চিনতে পারবে ।
_______________
সূত্র ০১: ধাতুর সাথে H/O/OH-
থাকলে সেগুলো ক্ষারক হবে ।
সূত্র ০২: অধাতুর সাথে H/O/OH-
থাকলে সেগুলো এসিড হবে ।
সূত্র ০৩: ধনাত্নক যৌগমূলক + OH- = ক্ষারক ।
সূত্র ০৪: ঋণাত্মক যৌগমূলক + H+ = এসিড ।
_______________
সূত্রগুলোর ব্যাখ্যা নিচে দেওয়া হল
_______________
ব্যাখ্যা ০১: ধাতুর সাথে হাইড্রোজেন
থাকলে সেটি ক্ষারক ।
যেমন → NaH, MgH2, KH, CaH2
_______________
ব্যাখ্যা ০২ : ধাতুর সাথে অক্সিজেন থাকলেও
সেটি ক্ষারক ।
যেমন → Na2O, MgO, K2O, CaO
_______________
ব্যাখ্যা ০৩ : ধাতুর সাথে হাইড্রোক্সাইড থাকলেও
সেটি ক্ষারক ।
যেমন → NaOH, Mg(OH)2, KOH, Ca(OH)2
_______________
ব্যাখা ০৪: অধাতুর সাথে হাইড্রোজেন
থাকলে সেটি এসিড ।
যেমন → HBr, HCl, HF
ব্যাখা ০৫: অধাতুর সাথে অক্সিজেন
থাকলে সেটি এসিড ।
যেমন → CO²
_______________
ব্যাখা ০৬ : অধাতুর সাথে হাইড্রোক্সাইড
থাকলে সেটি এসিড ।
যেমন → HClO, HBrO, HIO
_______________
ব্যাখা ০৭ : ঋণাত্মক যৌগমূলকের সাথে H+ যুক্ত
হলে এসিড হয় ।
যেমন → HNO3, HNO2
_______________
ব্যাখা ০৮ : ধনাত্নক যৌগমূলকের সাথে OH- যুক্ত
হলে ক্ষারক হয় ।
যেমন → NH4OH.
_______________
লবণ চেনার সূত্রঃ
H+ বাদে যে কোনো ধনাত্নক আয়ন বা মূলক
+
OH- বাদে যে কোনো ঋণাত্মক আয়ন বা মূলক =
লবণ ।
যেমনঃ
Na+ + Cl- → NaCl
Na+ + F- → NaF
NH4+ + Cl- → NH4Cl
_______________
১-২ টা যৌগ হয়তো উপরোক্ত সূত্র নাও
মানতে পারে । এগুলো ব্যতিক্রম ধরে নিবে ।
_______________
pH এর শর্টকাট ট্রিক
.005 M H²SO⁴ এর pH কত ?
→ -log (0.005 x 2) [যেহেতু H ২টা ]
→ -log (.01)
→ 2
pH এর শর্টকাট ট্রিকঃ
যদি দশমিক সংখ্যার শেষ অঙ্ক 1
থাকে তবে দশমিকের
পর যতগুলো অঙ্ক থাকে তার pH তত ।
0.01 M ঘনমাত্রার pH এর কত ?
0.01 এখানে দশমিকের পর দুই ঘর আছে তাই এর pH 2.
কোন যৌগের পরিমান কে কিভাবে মোলারিটিতে প্রকাশ করে ??
Ques.10% Na২CO3 দ্রবনের
মাত্রা কে মোলারিটিতে প্রকাশ কর ।
Here,
M=106
X=10
=>S=(10×X)/M
=>S=(10×10)/106
=>S=0.9434 M (ans)
মাত্রা কে মোলারিটিতে প্রকাশ কর ।
Here,
M=106
X=10
=>S=(10×X)/M
=>S=(10×10)/106
=>S=0.9434 M (ans)
সি প্রোগ্রামিং শেখা [পর্বঃ৫.১-লুপ,লুপ...আর লুপ]
প্রথম পর্বে আমরা Hello World প্রিন্ট করলাম
এবং হতাশ হলাম…হতাশ হলাম এই কারণে যে আমরা সামান্য একটা লাইন আউটপুট পাওয়ার
জন্য ৬-৭ লাইনের একটা প্রোগ্রাম লিখে ফেলেছি…এর চেয়ে তো নোটপ্যাড খুলে
ধুমধাম হ্যালো ওয়ার্ল্ড লিখে ফেললেই হয়..তাই না? সহজ একটা লাইন আউটপুট করতে
যদি এই লেভেলের তেনা প্যাচানো লাগে তাহলে প্রোগ্রামারের “ভাব” জিনিসটা
থাকলো কই?
ভাব আছে…আসলেই আছে..আর এই পর্বটাই ওই ভাব বাড়ানোর কাজ কারবার নিয়েই…
সেইদিন জলিল যে কাজটা করে “অসম্ভবকে সম্ভব” করেছিলো,সেই কাজটা আজ আমরাও করবো…আর সেই কাজটাকে প্রোগ্রামিং এর ভাষায় বলে লুপিং…লুপিং হলো কম্পিইলারকে দিয়ে একই কাজ বারাবার করে নেওয়া…কোন শর্তদিয়ে সেই শর্তের সাপেক্ষে স্টেটমেন্ট দিয়ে সেই কাজ বারবার করিয়ে নেওয়া…আর জলিলের কাজ দেখে আপনারা অনুমান করতেই পারতেছেন যে আমরা এখন লুপিং দিয়ে কি কি করতে যাচ্ছি…সেসব পরে দেখানো যাবে,তার আগে লুপিং নিয়ে ব্যাসিক কিছু আলোচনা করা যাকঃ
একটু আগেই বলছিলাম,লুপ হল একই ধরণের কাজ বারবার করার একটি প্রক্রিয়া। একটু ভয়েলো মত লক্ষ করলে দেখা যাবে আমাদের দৈনন্দিন জীবনেই বিভিন্ন ধরণের লুপ চলছে । প্রতিটা মানুষ কিছু না কিছু লুপের মধ্যে আছে । যেমনঃ আমরা প্রতিদিন সকালে ঘুম থেকে উঠি, সারাদিন বিভিন্ন কাজ করি, রাতে ঘুমাতে যাই । পরেরদিন সকালে আবার ঘুম থেকে উঠি,ঘুম থেকে উঠে ফেসবুক গুতাই,ফ্রেশ হই,ব্রেকফাস্ট করি, স্কুল/কলেজ/ভার্সিটি/কর্মস্থলে যাই,ব্যগে করে “বিদ্যা” নিয়ে যাই,বিদ্যা নিয় ফিরি,এরপর বাসায় আসি,অন্যান্য কাজকর্ম করি । এভাবে চব্বিশ ঘণ্টার একটা লুপ চলছে। আবার সপ্তাহের ৭ দিন, একেকদিন আমরা একেক রুটিন অনুযায়ী কাজ করি। সপ্তাহ শেষে আবার সেই একই রুটিন অনুযায়ী আবার কাজ করি, এভাবে একের পর এক চলতে থাকে। এভাবে ৭ দিনের কর্মকাণ্ড একটি লুপের মধ্যে চলছে। বছরের ৩৬৫ দিনের কর্মকান্ড’র লুপ চলছে । আমরা দিনদুনিয়ার মায়া ত্যাগ করে পরপারে না যাওয়া পর্যন্ত চলতেই থাকবে…
প্রোগ্রামিং এর ক্ষেত্রেও দেখা যায় একই ধরনের কাজ, কেবল কিছু মানের পরিবর্তন ঘটিয়ে বারবার করতে হয়। তখন কাজটির জন্য লুপ ব্যবহার করা হয়। এতে যে কাজগুলো বারবার করতে হবে সেগুলো একসাথে লিখে যতবার করতে হয় ততবারের একটি লুপ চালালেই হয়ে গেল! এখন দেখা যাক ব্যাপারটির জন্য আমাদের C ল্যাংগুয়েজে কি আছে…
সি তে while,go,do,for,goto এই কি-ওয়ার্ডগুলো লুপিং এর কাজে ব্যাবহার করা হয়…এরা কিছু শর্তের উপর ভিত্তি করে কোড এক্সিকিউট করে…শর্ত যতক্ষন পর্যন্ত না মিথ্যা হবে,ততক্ষন এরা কোড এক্সিকিউট করবে…আর,সি তে তিন ধরনের লুপ দেখা যায়…
for লুপের গঠনঃ
এখানে for হলো কীওয়ার্ড। কীওয়ার্ড কে আপনি কোনরকম পরিবর্তন করে লিখতে পারবেন না। for কে For বা FOR লিখতে পারবেন না। for কীওয়ার্ড এর পর () এর ভেতরে তিনটি অংশ থাকেঃ
১ম iteration:
এখানে লুপের শুরতে int t=0; এই স্টেটমেন্টটা এক্সিকিউট হবে এবং t এর মান 0 সেট হবে। এখন condition অংশে এসে দেখবে t এর মান 0 এর জন্য t<3 শর্তটি সত্য। তাই for লুপের ভেতরের স্টেটমেন্ট টা এক্সিকিউট হবে।
২য় iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে আসবে এবং i=i+1 পাবে, তাই i এর নতুন মান হবে 0+1 = 1. এখন t এর এই নতুন মান নিয়ে condition অংশে যাবে এবং t এর মান 1 এর জন্য t<3 শর্তটি সত্য, তাই আবার for লুপের ভেতরে ঢুকবে।
৩য় iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে আসবে এবং t=t+1 পাবে, তাই i এর নতুন মান হবে 1+1 = 2. এখন t এর এই নতুন মান নিয়ে condition অংশে যাবে এবং t এর মান 2 এর জন্য t<3 শর্তটি সত্য, তাই আবার for লুপের ভেতরে ঢুকবে।
১১তম iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে আসবে এবং t=t+1 পাবে, তাই i এর নতুন মান হবে 10+1 = 11. এখন t এর এই নতুন মান নিয়ে condition অংশে যাবে এবং t এর মান 11 এর জন্য t<10 শর্তটি মিথ্যা, তাই আর for লুপের ভেতরে ঢুকবে না। for লুপ থেকে বের হয়ে যাবে।
এখন যদি আমি স্ক্রিনে ১-১০০০ পর্যন্ত সংখ্যা দেখতে চাই,তাহলে কোডটি হবেঃ
এখন,আমি চোখের পলকে 1 থেকে 1000 পর্যন্ত সংখ্যার যোগফল বের করতে পারি এভাবে………
আমরা for লুপ এ কমা ব্যাবহার করে আমরা একাধিক initialization,একাধিক condition,একাধিক increment/descrement করতে পারি। যেমনঃ
আমরা আবার লুপের মধ্যে লুপ চালাতে পারি। এটিকে বলে nested for looping ।
এগুলোই একেবারে বেসিক। লুপ জিনিসটা কিভাবে কাজ করে এবং এর সিন্ট্যাক্স কিরকম সেগুলো বুঝতে পারলে বাকি কাজ হল প্র্যাকটিস করা। বিভিন্ন সমস্যা সমাধান করতে গেলে নতুন নতুন পরিস্থিতির সম্মুখীন হতে হয় এবং তখন নতুনভাবে চিন্তা করা যায় । আজ শুধু ব্যাসিক আলোচনা হলো । আগামী পর্বে for loop নিয়ে কিছু প্রব্লেম সল্ভ করা হবে ।
ভাব আছে…আসলেই আছে..আর এই পর্বটাই ওই ভাব বাড়ানোর কাজ কারবার নিয়েই…
জলিল সাকিব দুই বন্ধু…সাকিব একজন সাধারণ পিসি ইউজার,আর জলিল বেসিক লেভেলের প্রোগ্রামার…জলিল প্রতিদিন অনেক কষ্টকরে প্রোগ্রামিং শেখে…হ্যালো সখিনা,হ্যালো জরিনা প্রিন্ট করে দেখায়…আর সাকিব নোটপ্যাড খুলে ধুমধাম টাইপ করে তার ভাব নষ্ট করে দেয়…ব্যাপারটা জলিলের মোটেই ভালো লাগেনা…তো জলিল একদিন কোড লিখলো…আউটপুট আসলো 1-5 পর্যন্ত সব সংখ্যা…সাকিব রীতিমত তারা নোডপ্যাড ওপেন করে ১-৫ টাইপ করে জলিলের দিকে তাকিয়ে সিরাম একটা হাসি দিলো…এরপর জলিল কোড লিখলো…১-১০০০ পর্যন্ত প্রিন্ট করলো,ফিবোনাক্কি সিরিজের নাম্বারগুলা বের করে দেখালো,অনেকগুলা ইনপুট দেওয়া নাম্বারের যোগফল নির্নয় করলো,স্বাভাবিক সংখ্যার স্কয়ারের যোগফল,কিউবের যোগফল,প্রাইম নাম্বার বের করলো,আর্মস্ট্রং নাম্বার চেক করলো,ফ্যাক্টোরিয়াল নাম্বার বের করলো…
সাকিব শকজ,জলিল রকজ 8|
সেইদিন জলিল যে কাজটা করে “অসম্ভবকে সম্ভব” করেছিলো,সেই কাজটা আজ আমরাও করবো…আর সেই কাজটাকে প্রোগ্রামিং এর ভাষায় বলে লুপিং…লুপিং হলো কম্পিইলারকে দিয়ে একই কাজ বারাবার করে নেওয়া…কোন শর্তদিয়ে সেই শর্তের সাপেক্ষে স্টেটমেন্ট দিয়ে সেই কাজ বারবার করিয়ে নেওয়া…আর জলিলের কাজ দেখে আপনারা অনুমান করতেই পারতেছেন যে আমরা এখন লুপিং দিয়ে কি কি করতে যাচ্ছি…সেসব পরে দেখানো যাবে,তার আগে লুপিং নিয়ে ব্যাসিক কিছু আলোচনা করা যাকঃ
লুপঃ
একটু আগেই বলছিলাম,লুপ হল একই ধরণের কাজ বারবার করার একটি প্রক্রিয়া। একটু ভয়েলো মত লক্ষ করলে দেখা যাবে আমাদের দৈনন্দিন জীবনেই বিভিন্ন ধরণের লুপ চলছে । প্রতিটা মানুষ কিছু না কিছু লুপের মধ্যে আছে । যেমনঃ আমরা প্রতিদিন সকালে ঘুম থেকে উঠি, সারাদিন বিভিন্ন কাজ করি, রাতে ঘুমাতে যাই । পরেরদিন সকালে আবার ঘুম থেকে উঠি,ঘুম থেকে উঠে ফেসবুক গুতাই,ফ্রেশ হই,ব্রেকফাস্ট করি, স্কুল/কলেজ/ভার্সিটি/কর্মস্থলে যাই,ব্যগে করে “বিদ্যা” নিয়ে যাই,বিদ্যা নিয় ফিরি,এরপর বাসায় আসি,অন্যান্য কাজকর্ম করি । এভাবে চব্বিশ ঘণ্টার একটা লুপ চলছে। আবার সপ্তাহের ৭ দিন, একেকদিন আমরা একেক রুটিন অনুযায়ী কাজ করি। সপ্তাহ শেষে আবার সেই একই রুটিন অনুযায়ী আবার কাজ করি, এভাবে একের পর এক চলতে থাকে। এভাবে ৭ দিনের কর্মকাণ্ড একটি লুপের মধ্যে চলছে। বছরের ৩৬৫ দিনের কর্মকান্ড’র লুপ চলছে । আমরা দিনদুনিয়ার মায়া ত্যাগ করে পরপারে না যাওয়া পর্যন্ত চলতেই থাকবে…
প্রোগ্রামিং এর ক্ষেত্রেও দেখা যায় একই ধরনের কাজ, কেবল কিছু মানের পরিবর্তন ঘটিয়ে বারবার করতে হয়। তখন কাজটির জন্য লুপ ব্যবহার করা হয়। এতে যে কাজগুলো বারবার করতে হবে সেগুলো একসাথে লিখে যতবার করতে হয় ততবারের একটি লুপ চালালেই হয়ে গেল! এখন দেখা যাক ব্যাপারটির জন্য আমাদের C ল্যাংগুয়েজে কি আছে…
সি তে while,go,do,for,goto এই কি-ওয়ার্ডগুলো লুপিং এর কাজে ব্যাবহার করা হয়…এরা কিছু শর্তের উপর ভিত্তি করে কোড এক্সিকিউট করে…শর্ত যতক্ষন পর্যন্ত না মিথ্যা হবে,ততক্ষন এরা কোড এক্সিকিউট করবে…আর,সি তে তিন ধরনের লুপ দেখা যায়…
- for loop
- while loop
- do while loop
for লুপ
for লুপের গঠনঃ
1
2
3
4
|
for(initialization statement; test expression; update statement)
{
code/s to be executed;
}
|
এখানে for হলো কীওয়ার্ড। কীওয়ার্ড কে আপনি কোনরকম পরিবর্তন করে লিখতে পারবেন না। for কে For বা FOR লিখতে পারবেন না। for কীওয়ার্ড এর পর () এর ভেতরে তিনটি অংশ থাকেঃ
- initialization(প্রারম্ভিকীকরণ/শুরু করা)
- condition(শর্ত)
- increment or decrements(বাড়ানো/কমানো)
for loop যেভাবে কাজ করেঃ
1
2
3
4
|
int t;
for (t=1;t<=10;t++)
printf("%d", t};
|
১ম iteration:
এখানে লুপের শুরতে int t=0; এই স্টেটমেন্টটা এক্সিকিউট হবে এবং t এর মান 0 সেট হবে। এখন condition অংশে এসে দেখবে t এর মান 0 এর জন্য t<3 শর্তটি সত্য। তাই for লুপের ভেতরের স্টেটমেন্ট টা এক্সিকিউট হবে।
২য় iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে আসবে এবং i=i+1 পাবে, তাই i এর নতুন মান হবে 0+1 = 1. এখন t এর এই নতুন মান নিয়ে condition অংশে যাবে এবং t এর মান 1 এর জন্য t<3 শর্তটি সত্য, তাই আবার for লুপের ভেতরে ঢুকবে।
৩য় iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে আসবে এবং t=t+1 পাবে, তাই i এর নতুন মান হবে 1+1 = 2. এখন t এর এই নতুন মান নিয়ে condition অংশে যাবে এবং t এর মান 2 এর জন্য t<3 শর্তটি সত্য, তাই আবার for লুপের ভেতরে ঢুকবে।
১১তম iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে আসবে এবং t=t+1 পাবে, তাই i এর নতুন মান হবে 10+1 = 11. এখন t এর এই নতুন মান নিয়ে condition অংশে যাবে এবং t এর মান 11 এর জন্য t<10 শর্তটি মিথ্যা, তাই আর for লুপের ভেতরে ঢুকবে না। for লুপ থেকে বের হয়ে যাবে।
iteration কে আমরা সহজকথায় “ধাপ” হিসেবে বিবেচনা করতে পারি…কন্ডিশন যতক্ষন সত্য থাকে অর্থাৎ কন্ডিশনের মান যতক্ষ।।1 থাকে ততক্ষনই ইটারেশন চলে…উপরের লুপে ১১তম ধাপে এসে কন্ডিশন এর মান ০ হয়েছে,তাই ওই লুপটিকে আমরা ১০টি ইটারেশনের লুপ বলতে পারি…
জেনে রাখা ভালো,সি তে True কন্ডিশনের মান 1,আর False কন্ডিশনের মান 0 দিয়ে প্রকাশ করা হয়…
এখন যদি আমি স্ক্রিনে ১-১০০০ পর্যন্ত সংখ্যা দেখতে চাই,তাহলে কোডটি হবেঃ
1
2
3
|
for(t=1; t<=1000; t++){
printf("%d",t);
}
|
এখন,আমি চোখের পলকে 1 থেকে 1000 পর্যন্ত সংখ্যার যোগফল বের করতে পারি এভাবে………
1
2
3
|
for(i=1; i<=1000; i++)
sum+=i;
|
আমরা for লুপ এ কমা ব্যাবহার করে আমরা একাধিক initialization,একাধিক condition,একাধিক increment/descrement করতে পারি। যেমনঃ
1
2
3
|
for(i=1,j=10; i<=10,j>0; i++,j--)
sum+=i+j;
|
আমরা আবার লুপের মধ্যে লুপ চালাতে পারি। এটিকে বলে nested for looping ।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main ()
{
for(i=1; i<=10; i++)
{
for(j=1; j<=5; j++)
printf("bla bla bla\n ");
}
return 0;
}
|
এগুলোই একেবারে বেসিক। লুপ জিনিসটা কিভাবে কাজ করে এবং এর সিন্ট্যাক্স কিরকম সেগুলো বুঝতে পারলে বাকি কাজ হল প্র্যাকটিস করা। বিভিন্ন সমস্যা সমাধান করতে গেলে নতুন নতুন পরিস্থিতির সম্মুখীন হতে হয় এবং তখন নতুনভাবে চিন্তা করা যায় । আজ শুধু ব্যাসিক আলোচনা হলো । আগামী পর্বে for loop নিয়ে কিছু প্রব্লেম সল্ভ করা হবে ।
সি প্রোগ্রামিং শেখা [পর্বঃ৪.২-স্টেটমেন্ট কন্ট্রোলিং (Switch Statement)]
Else if এর মতো Switch ও একটি কন্ডিশনাল স্টেটমেন্ট । যা সিলেকশন স্টেটমেন্ট নামেও পরিচিত । Switch স্টেটমেন্ট সাধারণত ৪টি কিওয়ার্ড নিয়ে কাজ করে । যথাঃ Switch,Case,Break,Default ।
Switch এর সাধারণ গঠন এইরকমঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
switch (n) {
case constant1:
code/s to be executed if n equals to constant1;
break;
case constant2:
code/s to be executed if n equals to constant2;
break;
.
.
.
default:
code/s to be executed if n doesn't match to any cases;
}
<
|
Switch Case এর কিছু কমন নিয়ম জেনে আসা যাকঃ
নিয়ম ১ঃ কেস লেভেলগুলো ইউনিক হতে হবে
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
int id = 3 ;
switch(id)
{
case 1:
printf("C Programming Language");
break;
case 2:
printf("C++ Programming Language");
break;
case 2:
printf("Web Technology");
break;
default :
printf("No student found");
break;
}
|
সি প্রোগ্রামিং শেখা [পর্বঃ৪.১-স্টেটমেন্ট কন্ট্রোলিং (If Else)]
আগের পর্বগুলোতে আমরা প্রিন্ট করা,স্ক্যান করা, টুকটাক ম্যাথ করা শিখছি । যদি ওটাকে ওয়ানডে ম্যাচ মনে করি,তাহলে প্রথম দশ ওভার খেলে ফেলেছেন আপনি । আর ওগুলাতে ভালো করা মানে আপনি খুব ভালো একজন ওপেনার 8|
আজকে আলোচনা হবে লজিক এপ্লাই করে কিভাবে
প্রোগ্রামের স্টেটমেন্ট কন্ট্রোল করা যায় সেটা নিয়ে । এইটার জন্য কিছু
কি-ওয়ার্ড জেনে নেওয়া দরকার আমাদের । আর সেগুলা হলো If,Else If,Switch ।
উপরোক্ত কিওয়ার্ডগুলো আমাদেরকে শর্তসাপেক্ষে প্রোগ্রাম লেখার সুবিধা দিবে ।
আচ্ছা,তাহলে শুরু করা যাকঃ
সাধারণ If স্টেটমেন্টের গঠনঃ
1
2
3
4
|
if (test expression)
{
statement(s) to be executed if test expression is true;
}
|
সাধারণ Else If স্টেটমেন্টের গঠনঃ
1
2
3
4
5
6
|
if (test expression) {
statements to be executed if test expression is true;
}
else {
statements to be executed if test expression is false;
}
|
নিচের ছবিটি দেখুনঃ
দুটি স্টেটমেন্ট প্রায় একইরকম…প্রথমটাতে স্টেটমেন্টের শর্ত সত্য হলে স্টেটমেন্ট কাজ করবে,নাহলে করবে না…কিন্তু Else If এ সিস্টেম এমন যে If স্টেটমেন্ট কাজ না করলে Else If এর স্টেটমেন্ট কাজ করবে…উদাহরণ এ দেখিঃ
উদাহরণ ৪.১ঃ
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h>
int main(){
int num;
printf("Enter a number to check.\n");
scanf("%d",&num);
if(num<0) { /* নাম্বারটি শূন্য অপেক্ষা কম কিনা তা চেক করবে. */
printf("Number = %d\n",num);
}
/*যদি স্টেটমেন্টটি সত্য হয় তাহলে প্রিন্ট করবে,নাহলে করবে নাহ */
printf("The if statement in C programming is easy.");
return 0;
}
|
উদাহরণ ৪.২ঃ আমরা একটা কোড লিখবো যেইটা একটা সংখ্যা ইনপুট দিলে সেটা জোড় না বিজোড় তা বলে দিবে আচ্ছা…এইটার গঠন আমরা অনুমান করে ফেলতেই পারি…কিন্তু শর্ত কিভাবে লিখবো? আসলে শর্ত হবে “সংখ্যাকে ২ দিয়ে ভাগ করলে যদি ভাগশেষ না থাকে তাহলে জোড়,আর থাকলে বিজোড়” সেটিকে আমরা লিখবো এইভাবে n%2==0 । ব্যাখ্যা হলো n একটি সংখ্যা…যেটির ভাগশেষ শূন্য । ভাগশেষ বুঝাইতে “%” চিহ্ন আর সমান বুঝাইতে দুইটা = = চিহ্ন । আচ্ছা…এখন লিখে ফেলা যাক প্রোগ্রামটাঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include<stdio.h>
main()
{
int n;
printf("Enter an integer\n");//একটি ইন্টিজার নাম্বার চাচ্ছি
scanf("%d",&n);
if ( n%2 ==0); //শর্ত লিখলাম...
printf("Even\n");//শর্ত সত্য হলে জোড়
else
printf("Odd\n");//শর্ত মিথ্যা হলে বিজোড়
return 0;
}
|
উদাহরণ ৪.৩ঃ এটি হবে Vowel & Consonent চেক করার প্রোগ্রাম । প্রথমে আমরা ইউজারের কাছে একটা ক্যারেক্টার চাইবো,ইউজার ওইটা প্রেস করবে । আমরা ওইটা স্ক্যান করে নিয়ে দেখবো তা ( a,e,i,o,u ) এর সাথে মেলে কিনা…মিলে গেলে Vowel,আর না,মিল্লে কনসোনেন্ট এখানে একটা সমস্যা আছে,আর তা হলো ইউজার আপারকেস ক্যারেক্টার চাপবে না লোয়ারকেজ…আমরা আমাদের সুবিধার জন্য শর্ত লিখার সময় আপারকেজ ও লোয়ারকেজ দুইটাই এড করে দিবো …আর আগেরটাতে আমরা সমান বুঝাতে “==” চিহ্ন ব্যবহার করেছি,এইটাতেও করবার অতিরিক্ত চিহ্ন থাকবে Or/বা বুঝাতে || চিহ্ন…আর কোন ক্যারেক্টার মেনশন করে দিতে ‘ ‘ চিহ্ন…মানে ch == ‘A’ লিখলে A ক্যারেক্টারটা মেনশন হয়ে যাবে । আচ্ছা…তাহলে আমাদের শর্ত হলোঃ
(ch == ‘a’ || ch == ‘A’ || ch == ‘e’ || ch == ‘E’ || ch == ‘i’ || ch == ‘I’ || ch ==’o’ || ch==’O’ || ch == ‘u’ || ch == ‘U’) //মানে হইলো এগুলো চিহ্ন টাইপ করলে Vowel শো করবার না করলে বুঝ যাবো উনি কনসোনেন্ট টাইপ করেছেন 8|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main()
{
char ch;
printf("Enter a character\n");
scanf("%c", &ch);
if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i' || ch == 'I' || ch =='o' || ch=='O' || ch == 'u' || ch == 'U')
printf("%c is a vowel.\n", ch);
else
printf("%c is not a vowel.\n", ch);
return 0;
}
|
উদাহরণ ৪.৪ঃ লিপ ইয়ারের কোড…নিজে লেখার চেষ্ঠা করুন…তারপর নিচের কোডের সাথে মিলিয়ে নিন
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
int main()
{
int year;
printf("Enter a year to check if it is a leap year\n");
scanf("%d", &year);
if ( year%400 == 0)
printf("%d is a leap year.\n", year);
else if ( year%100 == 0)
printf("%d is not a leap year.\n", year);
else if ( year%4 == 0 )
printf("%d is a leap year.\n", year);
else
printf("%d is not a leap year.\n", year);
return 0;
}
|
উদাহরন ৪.৫ঃ আমরা একটি প্রোগ্রাম বানাবো যা দুটি নাম্বার চাইবে,পরে সেই দুইটি নাম্বারের রিলেশন আউটপুট দিবে?
আমরা এটার জন্য if statement এর ভিতরে আরেকটা if statement ইউজ করবো…এরকম স্টেটমেন্টকে বলে nested if else statement …উদাহরণটা দেখা যাকঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>
int main(){
int numb1, numb2;
printf("Enter two integers to check\n");
scanf("%d %d",&numb1,&numb2);
if(numb1==numb2) //checking whether two integers are equal.
printf("Result: %d = %d",numb1,numb2);
else
if(numb1>numb2) //checking whether numb1 is greater than numb2.
printf("Result: %d > %d",numb1,numb2);
else
printf("Result: %d > %d",numb2,numb1);
return 0;
}
|
উদাহরণ ৪.৬ একটি প্রোগ্রাম লিখবো যা আপারকেজ ও লোয়ারকেজ ইংরেজি অক্ষর আউটপুট দিবে…
কিভাবে লিখবো? ২৬ টি ক্যারেক্টার,আপারকেজ লোয়ারকেজ মিলিয়ে ৫২টা ক্যারেক্টারের জন্য আলাদা আলাদা প্রিন্ট স্ক্যান ফাংশন ইউজ করবো? :-/ উত্তর হলো ,না,করতে হবে না…if স্টেটমেন্ট দিয়ে খুব সহজেই করা যায় এইটা…কিন্তু,সমস্য হইলো শর্ত লেখা…শর্ত কিরকম হবে?
শর্ত হবে এইরকম…যা,a to z সব প্রিন্ট করে ফেলবে… && চিহ্ন ইউজ করছি “লজিকাল এবং” বুঝাতে…প্রোগ্রামে দুইটা শর্ত একসাথে বুঝাতে এটা ইউজ করবো…যেমনঃ 2<x<7 বুঝাতে শর্ত লিখবো এইভাবে 2<x && x<7 …তাহলে লিখে ফেলি প্রোগ্রামটাঃ
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h>
int main()
{
char ch = 'W';
if(ch >= 'a' && ch <= 'z') {
printf("%c is lower case\n", ch);
}
if(ch >= 'A' && ch <= 'Z') {
printf("%c is upper case\n", ch);
}
return 0;
}
|
অনেকতো হলো উদাহরণ,এইবার কিছু প্রাকটিস প্রব্লেম দেওয়া যাকঃ
অনুশীলনী ৪.১ঃ পজিটিভ নেগেটিভ নাম্বার চেক করার প্রোগ্রাম তৈরি করুন?
অনুশীলনী ৪.২ঃ ১-১০০ এর মাঝে কতগুলো সংখ্যা একইসাথে ৪ এবং ৫ দিয়ে ভাগ যায় নির্নয় করুন?