Forth

Forth

মধ্যম

নির্দেশনা

Forth-এর একটি খুব সাধারণ উপসেটের জন্য একটি ইভ্যালুয়েটর তৈরি করুন।

Forth হলো একটি স্ট্যাক-ভিত্তিক প্রোগ্রামিং ভাষা। Forth-এর একটি ছোট উপসেটের জন্য একটি খুব সাধারণ ইভ্যালুয়েটর তৈরি করুন।

আপনার ইভ্যালুয়েটরকে নিচের শব্দগুলো সাপোর্ট করতে হবে:

  • +, -, *, / (পূর্ণসংখ্যার গণনা)
  • DUP, DROP, SWAP, OVER (স্ট্যাক ম্যানিপুলেশন)

আপনার ইভ্যালুয়েটরকে প্রচলিত সিনট্যাক্স ব্যবহার করে নতুন শব্দ ডিফাইন করার সুবিধাও দিতে হবে: : word-name definition ;.

সহজ রাখতে আপনার শুধু একটি ডেটা টাইপ সাপোর্ট করলেই হয়: অন্তত ১৬ বিট আকারের সাইনড ইন্টিজার।

সিনট্যাক্সের জন্য আপনার নিচের নিয়মগুলো ব্যবহার করা উচিত: একটি সংখ্যা হলো এক বা একাধিক (ASCII) ডিজিটের একটি ক্রম, আর একটি শব্দ হলো এক বা একাধিক অক্ষর, ডিজিট, প্রতীক বা যতিচিহ্নের এমন একটি ক্রম যা সংখ্যা নয়। (Forth সম্ভবত একটু ভিন্ন নিয়ম ব্যবহার করে, কিন্তু এটা যথেষ্ট কাছাকাছি।)

শব্দগুলো কেস-ইনসেনসিটিভ।

এক্সেপশন কাস্টমাইজ করা ও রেইজ করা

কখনও কখনও আপনার কোডে এক্সেপশন কাস্টমাইজ করা এবং raise করা, দুটোই প্রয়োজন হয়। এমনটা করলে আপনার সর্বদা একটি অর্থবহ এরর মেসেজ যোগ করা উচিত, যাতে বোঝা যায় এররটির উৎস কী। এতে আপনার কোড আরও পড়ার উপযোগী হয় এবং ডিবাগিংয়ে অনেক সাহায্য করে।

নতুন এক্সেপশন ক্লাসের মাধ্যমে কাস্টম এক্সেপশন তৈরি করা যায় (বিস্তারিত জানতে classes দেখুন), যেগুলো সাধারণত Exception-এর সাবক্লাস হয়।

যেসব ক্ষেত্রে আপনি জানেন যে এররটির উৎস কোনো নির্দিষ্ট এক্সেপশন টাইপের একটি রূপ হবে, সেখানে আপনি Exception ক্লাসের অধীনস্থ built in error types-এর একটি থেকে ইনহেরিট করতে বেছে নিতে পারেন। এররটি রেইজ করার সময়ও আপনার একটি অর্থবহ মেসেজ যোগ করা উচিত।

এই নির্দিষ্ট অনুশীলনীতে স্ট্যাক যথেষ্ট পরিমাণে ভরাট না থাকলে রেইজ/"থ্রো" করার জন্য একটি কাস্টম এক্সেপশন তৈরি করা প্রয়োজন। টেস্টগুলো তখনই পাস করবে যখন আপনি একটি উপযুক্ত এক্সেপশন কাস্টমাইজ করবেন, সেই এক্সেপশনটি raise করবেন এবং উপযুক্ত এরর মেসেজ যোগ করবেন।

# subclassing the Exception to create a StackUnderflowError
class StackUnderflowError(Exception):
    """Exception raised when Stack is not full.
       message: explanation of the error.
    """
    def __init__(self, message):
        self.message = message

        
# raising a StackUnderflowError
raise StackUnderflowError("Insufficient number of items in stack")

এছাড়াও, এই অনুশীলনীতে এরর মেসেজসহ বেশ কিছু built-in exceptions রেইজ করা প্রয়োজন। মেসেজসহ একটি built-in exception রেইজ করতে, মেসেজটি exception টাইপের আর্গুমেন্ট হিসেবে লিখুন:

# an example when division by zero is attempted.
raise ZeroDivisionError("divide by zero")

#an example when the operation is undefined.
raise ValueError("undefined operation")
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Python Exercism

Forth শুরু করতে প্রস্তুত?

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