ট্র্যাক
/
Go
Go
/
অনুশীলনী
/
পাখি পর্যবেক্ষক
পাখি পর্যবেক্ষক

পাখি পর্যবেক্ষক

লার্নিং অনুশীলনী

ভূমিকা

সাধারণ সিনট্যাক্স

কিছু লজিক বারবার চালানোর জন্য সবচেয়ে বেশি ব্যবহৃত স্টেটমেন্টগুলোর একটি হলো for লুপ। Go-তে এটি for কিওয়ার্ড, একটি হেডার এবং কোঁকড়া বন্ধনীর ভেতরে মোড়ানো লুপের বডি সম্বলিত একটি কোড ব্লক নিয়ে গঠিত। হেডারটি সেমিকোলন ; দিয়ে আলাদা করা ৩টি অংশ নিয়ে গঠিত: init, condition এবং post।

for init; condition; post {
  // loop body - code that is executed repeatedly as long as the condition is true
}
  • init অংশটি এমন কিছু কোড, যা লুপ শুরু হওয়ার আগে কেবল একবার রান করে।
  • condition অংশটি অবশ্যই এমন একটি এক্সপ্রেশন হতে হবে যার ফলাফল একটি বুলিয়ান, এবং যা নিয়ন্ত্রণ করে লুপটি কখন থামবে। এই শর্তটি যতক্ষণ ট্রু-তে মূল্যায়িত হয়, ততক্ষণ লুপের ভেতরের কোড রান করবে। এক্সপ্রেশনটি ফলস-এ মূল্যায়িত হওয়ামাত্র লুপের আর কোনো ইটারেশন রান করবে না।
  • post অংশটি এমন কিছু কোড, যা প্রতিটি ইটারেশনের শেষে রান করবে।

লক্ষ্য করুন: অন্য ভাষার মতো এখানে হেডারের তিনটি অংশকে ঘিরে প্রথম বন্ধনী () থাকে না। আসলে এমন বন্ধনী বসানো একটি কম্পাইলেশন এরর। তবে লুপের বডিকে ঘিরে থাকা দ্বিতীয় বন্ধনী { } সবসময়ই প্রয়োজন।

for লুপ: একটি উদাহরণ

সাধারণত init অংশটি একটি কাউন্টার ভ্যারিয়েবল তৈরি করে, condition অংশটি পরীক্ষা করে লুপটি চালিয়ে যাওয়া উচিত নাকি থামানো উচিত, আর post অংশটি সাধারণত প্রতিটি পুনরাবৃত্তির শেষে কাউন্টারটি ইনক্রিমেন্ট করে।

for i := 1; i < 10; i++ {
  fmt.Println(i)
}

এই লুপটি 1 থেকে 9 পর্যন্ত সংখ্যাগুলো প্রিন্ট করবে (9 সহ)। উপরের উদাহরণে দেখানো হয়েছে, ধাপ নির্ধারণ করা হয় সাধারণত একটি ইনক্রিমেন্ট বা ডিক্রিমেন্ট স্টেটমেন্ট ব্যবহার করে।

নির্দেশনা

আপনি একজন আগ্রহী পাখি পর্যবেক্ষক, যিনি খেয়াল রাখেন আপনার বাগানে কত পাখি এসেছে। সাধারণত পাখি গোনার জন্য আপনি নোটবুকে দাগ কেটে হিসাব রাখেন, কিন্তু আপনার তথ্য নিয়ে আরও ভালোভাবে কাজ করার জন্য গত কয়েক সপ্তাহের পাখি গণনা আপনি ডিজিটাল করে ফেলেছেন।

1. এতদিনে আপনি মোট কতটি পাখি গুনেছেন তা নির্ণয় করুন

চলুন, সামগ্রিক চিত্র দেখে তথ্য বিশ্লেষণ শুরু করি। আপনি লগ রাখা শুরু করার পর থেকে মোট কতটি পাখি গুনেছেন তা বের করুন।

এমন একটি ফাংশন TotalBirdCount লিখুন, যা প্রতিদিনের পাখি গণনা সম্বলিত int-এর একটি স্লাইস নেয়। এটি আপনার গোনা মোট পাখির সংখ্যা রিটার্ন করবে।

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34

2. নির্দিষ্ট একটি সপ্তাহে আসা পাখির সংখ্যা হিসাব করুন

এখন আপনার পাখি গণনার সংখ্যাগুলো সম্পর্কে মোটামুটি ধারণা হয়ে গেছে, তাই আপনি আরও সূক্ষ্ম বিশ্লেষণ করতে চান।

এমন একটি ফাংশন BirdsInWeek লিখুন, যা প্রতিদিনের পাখি গণনার একটি স্লাইস এবং একটি সপ্তাহ নম্বর নেয়।

এটি ওই নির্দিষ্ট সপ্তাহে আপনার গোনা মোট পাখির সংখ্যা রিটার্ন করে। ধরে নিতে পারেন, সপ্তাহগুলো সবসময় সম্পূর্ণভাবে হিসাব করা হয়।

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12

3. গণনার একটি ভুল সংশোধন করুন

আপনি বুঝতে পারলেন যে যে সময়টা আপনি পাখিদের হিসাব রাখার চেষ্টা করছিলেন, সেই পুরো সময় বাগানের এক দূরের কোণে একটি পাখি লুকিয়ে ছিল।

আপনি বুঝতে পারলেন, এই পাখিটি সবসময় একদিন পরপর আপনার বাগানে সময় কাটাত।

ওই দিনগুলোর মাঝে এটি ঠিক কোথায় ছিল তা আপনি জানেন না, তবে নিশ্চিতভাবে আপনার বাগানে নয়।

আপনার পাখি পর্যবেক্ষকের অন্তর্দৃষ্টি আরও বলে, আপনার তালিকায় যে প্রথম দিনটির হিসাব আপনি রেখেছিলেন, সেদিন পাখিটি আপনার বাগানেই ছিল।

এই নতুন তথ্য অনুযায়ী, এমন একটি ফাংশন FixBirdCountLog লিখুন, যা প্রতিদিন গোনা পাখির একটি স্লাইস আর্গুমেন্ট হিসেবে নেয় এবং গণনার ভুলটি সংশোধন করে সেই স্লাইসটি রিটার্ন করে।

birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Go Exercism

পাখি পর্যবেক্ষক শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট166টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।