কোডিং করতে গিয়ে আটকে গেলে কি করবেন: পর্ব ২

মোঃ আবু তাহের
Coder Ants
Published in
5 min readJan 7, 2019

ইংরেজিতে একটা সমস্যা লেখা আছে কিন্তু আপনার ইংরেজি খুব দুর্বল কিন্তু তা বলে ত সমস্যায় আটকে থাকতে পারেন না। আমরা ইংরেজি ও প্রোগ্রামিং এর ভীতি দূর করার জন্য সর্বোচ্চ প্রচেষ্টা করবো।

সমস্যা

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

ধরি আপনার সমস্যাটা একটা প্রোগ্রামিং সমস্যা। আপনার ক্লায়েন্ট আপনাকে তার ভাষায় কিছু বলে দিয়েছে এবং আপনি সেটা না বুঝতে পারলে মাস শেষে ঘর ভাড়া নিয়ে আপনার চিন্তার অভাব হবে না।

নিচের সমস্যাটা দেখুন।

লিখে দিয়েছে বেসিক জাভাস্ক্রিপ্ট। কিন্তু বেসিকের ব ও বুঝতে পারতেসেন না। কি করা যায়?

প্রথম কাজ হবে প্রতিটা বাক্য পড়বেন। প্রথম বাক্যটা পড়ি,

In the game of golf each hole has a par meaning the average number of strokes a golfer is expected to make in order to sink the ball in a hole to complete the play.

এত বড় লেখা যে ব্যাপারটা খুব জটিল হয়ে গেসে। এত বড় কথা একসাথে পড়তে গেলে একদম মাথা নষ্ট হয়ে যাবে। আসেন এটাকে আরো ছোট করি।

In the game of golf

এটার মানে কি? গলফ? আমি কি গলফ পারি? এটার সাথে প্রোগ্রামিং এর কি সম্পর্ক?

আচ্ছা মাথা নষ্ট না করে পড়তে থাকেন। আমাদের বুঝা দরকার গলফ খেলায় কিছু একটা হয়। আচ্ছা বুঝলাম, তাই আমি গলফ খেলা সম্পর্কে কিছু জানা দরকার। ঠিক কিনা? দেখেন একটা লিংকও দিয়ে দিয়েছে। ওটা দেখা যাক।

বিশাল আরেকটা পৃষ্টা। একটা বেসিক সমস্যা সমাধান করতে গিয়ে এখন কি আমাকে গলফ খেলা বুঝতে হবে নাকি?

আরে নাহ!!! বুঝলে ভালো, না বুঝলে কোন সমস্যা নাই। কারণ পরের লাইনে বলে দিসে আমাদের কি করা লাগবে। গলফ বুঝার দরকার নাই।

পরের লাইনটা যেহেতু এখনো অনেক বড়, এটাকে কয়েকটা টুকরা করি। একদম পারফেক্ট হতে হবে বলে কোন কথা নাই। চেষ্টা করে যা বুঝতে পারি আরকি।

  • In the game of golf
  • each hole
  • has a par
  • meaning the average number of strokes
  • a golfer is expected to make
  • in order to sink the ball in a hole
  • to complete the play.

চিন্তা করে দেখেন, ভেঙ্গে নিলে অনেক কিছু ভাবা যায়, তবে সব ভাঙ্গতে ভাঙ্গতে আমরা অধৈর্য হয়ে পড়ি। এত কিছু ভাবলে প্রোগ্রামিং করবো কখন?

যাই হউক, কি লিখেছে পড়ে দেখি,

  • গলফ খেলায়,
  • প্রতিটা গর্তে
  • একটা par আছে
  • যেটা হলো কতগুলো stroke হবে সেটার একটা গড় নাম্বার
  • খেলোয়ার ওইটা করা লাগবে
  • বলটা গর্তে ঢুকাতে
  • ওই খেলাটা শেষ করতে।

এই কথাগুলো খুব জটিল লাগতে পারে। কিন্তু যত জটিলই হউক, এটা বুঝতে পেরেছি এখানে বল আর গর্তের সাথে par আর stroke এর কিছু ব্যাপার আছে যেটা করলেই গলফ খেলা হয়। আধাআধি যা বুঝার আরকি।

আচ্ছা পরের লাইনে যাই।

  • Depending on how far above or below par
  • your strokesare
  • there is a different nickname.

ইংরেজি এই অংশটার বাংলা হলো, par এর চেয়ে stroke কত বেশি বা কম সেটার উপর নির্ভর করে ওই শটের একটা নাম আছে। মানে কত ভালো খেললো সেটার একটা ব্যাপার। ক্রিকেটের প্রতিটি জিনিসের যেমন নাম আছে, নো বল, চার ছক্কা ইত্যাদি। তেমনি, “ Hole-in-one!”, “ Eagle” এইসব আরকি। আমাদের দেশে গলফ এত জনপ্রিয় না, তাই সবাই এইসব না ও জানতে পারে। সেটা অবশ্য আমাদের দেখার বিষয় না। আমরা আমাদের দুই লাইন বুঝে গেছি এতক্ষণে।

গলফ খেলায় প্রতিটা শটে par আর stroke নামের একটা ব্যাপার আছে, যেটা দিয়ে ওই শটের নাম করা হয়। আমাদের ওইটা দিয়েই একটা ফাংশন বানাতে হবে, যেটায় তারা par আর stroke দিয়ে দিবে, যা সহজে বের করার জন্য একটা টেবিলও দিয়ে দিসে।

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

অথবা হতে পারে আমি এখনো কিছুই বুঝি নাই, কারণ আমার মাথা এতটা ভালো না, কিন্তু এটাও ত হতে পারে আমি মূল ব্যাপারটা ধরতেই পারিনি? হতে পারে এই পোস্টে একভাবে বুঝিয়ে গিয়েছে কিন্তু বিগিনার হিসাবে আমি কিছুই বুঝিনি কারণ না বুঝার কত কারণই থাকতে পারে।

আমি পুরো সমস্যার উপর দিয়ে যাবো না। এটা দেখাতে চাইলাম সমস্যা না বুঝলে কি করা লাগবে। সমস্যা না বুঝলে আবার পোস্টের শুরু হতে পড়ে দেখেন। যেই অংশ বুঝতেসেন না ওটা ভেঙ্গে আরো দুই টুকরা করেন। করতে করতে করতে করতে…

আচ্ছা রাখেন। এত সময় নাই টুকরা করার। নিচে বাকি অংশের ছবিতে লাল দাগ দেয়া অংশগুলো দেখেন। par আর strokes আর্গুমেন্ট দিচ্ছে।

আবার নিচে, ‍golfScore(4,1) দিলে Hole-in-One দেখাচ্ছে।

কিভাবে কি হলো? 4 হলো par, 1 হলো strokes, ও ত বললোই strokes যদি ১ হয়, তবে Hole-in-One দেখাবে। strokes যদি par এর সমান হয় তাহলে বলবে Par.

সব কিছু একসাথে না দেখে একটা একটা করে বিষয় দেখে এইটা বুঝতে পারবেন যে if else কন্ডিশন আর কিছু ≤ ≥ দিয়েই আমরা এই সমস্যা সমাধান করে ফেলতে পারি।

Strokes আর Par এর ব্যাপার এখনো মাথার উপর দিয়ে গেলেও সমস্যা নাই। আমাদের ওটার চেয়ে জরুরী ব্যাপার হলো এই প্রোগ্রাম সমাধান করতে যা দরকার সেটা আমরা পেয়ে গেসি।

আর এখানে মূল কথা হলো,

প্রতিটি সমস্যা এভাবে ভেঙ্গে ফেলবেন যতক্ষণ না ব্যাপারটা বুঝতে পারতেসেন। সব যদি একসাথে বুঝতে যান, তাহলে কোন ভাবেই করতে পারবেন না।

ইয়ে মানে এটা না। সমস্যা ভাঙ্গতে গিয়ে মাথা ভেঙ্গে ফেললে হবে না।

তবে আশা করি ব্যাপারটা খোলাশা করতে পেরেছি। এই সমস্যার বিস্তারিত আজ আলোচনা করবো না, সেটা আপনাদের জন্য রেখে দিলাম, সব আমি করলে আপনারা কি করবেন? 😂

পরের বার আমরা একটা বাস্তব সমস্যা ও সমাধান একদম শুরু হতে শেষ পর্যন্ত করবো এবং সমস্যার আরো গভীরে যাবার উপায় নিয়ে আলোচনা করবো। আরো বেশি করে ভাঙ্গবো।

সবাই ভালো থাকবেন।

--

--

মোঃ আবু তাহের
Coder Ants

প্রোগ্রামিং জগতে ঘুরি ফিরি। শিখতে ও শিখাতে ভালোবাসি।