বর্ণ প্রোগ্রামিং ভাষা ডকুমেন্টেশন

ভূমিকা

বর্ণ একটি বাংলা স্ক্রিপ্টিং ভাষা যা বাংলা ভাষাভাষী প্রোগ্রামারদের জন্য ডিজাইন করা হয়েছে। এটি সহজে বোধগম্য সিনট্যাক্স এবং বাংলা কীওয়ার্ড ব্যবহার করে।

মৌলিক সিনট্যাক্স

১. চলক ঘোষণা

ধরি সংখ্যা = ১০
ধরি নাম = "আব্দুল"
ধরি আমি_ভালো= মিথ্যা

২. শর্তসাপেক্ষ বিবৃতি (যদি-অথবা-নাহলে)

ধরি বয়স = ১৮

যদি (বয়স >= ১৮) {
    দেখাও("আপনি ভোট দিতে পারবেন")
} নাহলে যদি (বয়স >= ১৩) {
    দেখাও("আপনি টিনএজার")
} নাহলে {
    দেখাও("আপনি শিশু")
}

৩. লুপ (যখন)

ধরি গণনা = ১

যখন (গণনা <= ১০) {
    দেখাও(গণনা)
    গণনা = গণনা + ১
}

ফাংশন

৪. সাধারণ ফাংশন

প্রক্রিয়া যোগফল(ক, খ) {
    ফেরত_দাও ক + খ
}

দেখাও(যোগফল(৫, ৭))  // ১২ দেখাবে

৫. ডিফল্ট প্যারামিটার সহ ফাংশন

প্রক্রিয়া অভিবাদন(নাম = "আতিথ্য") {
    দেখাও("স্বাগতম " + নাম)
}

অভিবাদন()           // "স্বাগতম আতিথ্য" দেখাবে
অভিবাদন("রহিম")     // "স্বাগতম রহিম" দেখাবে

ডাটা স্ট্রাকচার

৬. অ্যারে (তালিকা)

ধরি ফল = ["আম", "কলা", "পেঁপে"]

প্রতিটি (ফলের_নাম ফল এ) {
    দেখাও(ফলের_নাম)
}

// আউটপুট:
// আম
// কলা
// পেঁপে

৭. অবজেক্ট

ধরি ছাত্র = {
    নাম: "করিম",
    বয়স: ২০,
    রোল: ১২৩
}

দেখাও("করিমের রোল "+ ছাত্র.রোল)  //"করিম এর রোল ১২৩" দেখাবে

ক্লাস ও অবজেক্ট

৮. ক্লাস ডিফিনিশন

উপাদান গাড়ি {
    বানাও(মডেল, রঙ) {
        এটা.মডেল = মডেল
        এটা.রঙ = রঙ
    }
    
    তথ্য_দেখাও() {
        দেখাও("মডেল: " + এটা.মডেল + ", রঙ: " + এটা.রঙ)
    }
}

ধরি আমার_গাড়ি = নতুন গাড়ি("টয়োটা", "নীল")
আমার_গাড়ি.তথ্য_দেখাও()

৯. ইনহেরিটেন্স

উপাদান প্রাণী {
    বানাও(নাম) {
        এটা.নাম = নাম
    }
    
    খাও() {
        দেখাও(এটা.নাম + " খাবার খাচ্ছে")
    }
}

উপাদান বিড়াল সাথে আছে প্রাণী {
    বানাও(নাম, রঙ) {
        সুপার(নাম)
        এটা.রঙ = রঙ
    }
    
    মিউ() {
        দেখাও(এটা.নাম + " মিউ মিউ করছে!")
    }
}

ধরি বিল্লু = নতুন বিড়াল("বিল্লু", "কালো")
বিল্লু.খাও()  //"বিল্লু খাবার খাচ্ছে" দেখাবে
বিল্লু.মিউ()  // "বিল্লু মিউ মিউ করছে!" দেখাবে

অ্যাডভান্সড কনসেপ্ট

১০. রিকার্সিভ ফাংশন

প্রক্রিয়া ফ্যাক্টোরিয়াল(সংখ্যা) {
    যদি (সংখ্যা <= ১) {
        ফেরত_দাও ১
    }
    ফেরত_দাও সংখ্যা * ফ্যাক্টোরিয়াল(সংখ্যা - ১)
}

দেখাও(ফ্যাক্টোরিয়াল(৫))  // ১২০ দেখাবে

১১. ক্লোজার

প্রক্রিয়া কাউন্টার_বানাও() {
    ধরি গণনা = ০
    
    প্রক্রিয়া বৃদ্ধি() {
        গণনা = গণনা + ১
        দেখাও(গণনা)
    }
    
    ফেরত_দাও বৃদ্ধি
}

ধরি আমার_কাউন্টার = কাউন্টার_বানাও()
আমার_কাউন্টার()  // ১ দেখাবে
আমার_কাউন্টার()  // ২ দেখাবে
আমার_কাউন্টার()  // ৩ দেখাবে

১২. প্রমিস ও অ্যাসিঙ্ক/অপেক্ষা

প্রক্রিয়া ডাটা_আনো() {
    ফেরত_দাও নতুন প্রমিস((সমাধান, প্রত্যাখ্যান) => {
        অপেক্ষা(২০০০)  # ২ সেকেন্ড অপেক্ষা
        সমাধান("ডাটা লোড হয়েছে")
    })
}

অ্যাসিঙ্ক প্রক্রিয়া প্রধান() {
    দেখাও("ডাটা লোড হচ্ছে...")
    ধরি ফলাফল = অপেক্ষা ডাটা_আনো()
    দেখাও(ফলাফল)
}

প্রধান()

এরর হ্যান্ডলিং

১৩. চেষ্টা-ধরা ব্লক

প্রক্রিয়া ভাগফল(ভাজ্য, ভাজক) {
    যদি (ভাজক == ০) {
        ছুঁড়ে_দাও নতুন এরর("ভাজক শূন্য হতে পারবে না")
    }
    ফেরত_দাও ভাজ্য / ভাজক
}

পারলে{
    দেখাও(ভাগফল(১০, ০))
} না পারলে (ভুল) {
    দেখাও(" আমার কোডে একটি ত্রুটি ঘটেছে: " + ভুল)
} শেষে {
    দেখাও("প্রক্রিয়া সম্পন্ন")
}

ফাইল ইনপুট/আউটপুট

১৪. ফাইল পড়া

অ্যাসিঙ্ক প্রক্রিয়া ফাইল_পড়ো(ফাইলের_পথ) {
    ধরি ডাটা = অপেক্ষা ফাইল_সিস্টেম.পড়ো(ফাইলের_পথ, "utf-8")
    দেখাও(ডাটা)
}

চেষ্টা {
    অপেক্ষা ফাইল_পড়ো("ডাটা.txt")
} ধরা (এরর) {
    দেখাও("ফাইল পড়তে সমস্যা: " + এরর.বার্তা)
}

১৫. ফাইলে লেখা

অ্যাসিঙ্ক প্রক্রিয়া ফাইলে_লেখো(ফাইলের_পথ, বিষয়বস্তু) {
    অপেক্ষা ফাইল_সিস্টেম.লেখো(ফাইলের_পথ, বিষয়বস্তু, "utf-8")
    দেখাও("ফাইলে সফলভাবে লেখা হয়েছে")
}

ফাইলে_লেখো("লগ.txt", "নতুন লগ এন্ট্রি")

মডিউল সিস্টেম

১৬. মডিউল ইম্পোর্ট

# গণিত.বর্ণ ফাইলে
প্রক্রিয়া যোগ(ক, খ) {
    ফেরত_দাও ক + খ
}

প্রক্রিয়া গুণ(ক, খ) {
    ফেরত_দাও ক * খ
}

// প্রধান ফাইলে
ইম্পোর্ট { যোগ, গুণ } থেকে "গণিত.বর্ণ"

দেখাও(যোগ(২, ৩))  # ৫ দেখাবে
দেখাও(গুণ(২, ৩))  # ৬ দেখাবে

১৭. ডিফল্ট ইম্পোর্ট

# ইউটিল.বর্ণ ফাইলে
প্রক্রিয়া বর্গ(সংখ্যা) {
    ফেরত_দাও সংখ্যা * সংখ্যা
}

ফেরত_দাও বর্গ

# প্রধান ফাইলে
ইম্পোর্ট বর্গ থেকে "ইউটিল.বর্ণ"

দেখাও(বর্গ(৪))  # ১৬ দেখাবে

ফাংশনাল প্রোগ্রামিং

১৮. ম্যাপ

ধরি সংখ্যা = [১, ২, ৩, ৪, ৫]
ধরি বর্গ = সংখ্যা.মানচিত্র(প্রতি => প্রতি * প্রতি)

দেখাও(বর্গ)  # [১, ৪, ৯, ১৬, ২৫] দেখাবে

১৯. ফিল্টার

ধরি সংখ্যা = [১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, ১০]
ধরি জোড় = সংখ্যা.ছাঁকনি(প্রতি => প্রতি % ২ == ০)

দেখাও(জোড়)  # [২, ৪, ৬, ৮, ১০] দেখাবে

২০. রিডিউস

ধরি সংখ্যা = [১, ২, ৩, ৪, ৫]
ধরি যোগফল = সংখ্যা.হ্রাস((সমষ্টি, বর্তমান) => সমষ্টি + বর্তমান, ০)

দেখাও(যোগফল)  # ১৫ দেখাবে

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং

২১. গেটার/সেটার

উপাদান ব্যক্তি {
    বানাও(নাম, বয়স) {
        এটায়.নাম = নাম
        এটায়.বয়স = বয়স
    }
    
    পান_বিবরণ() {
        ফেরত_দাও এটায়.নাম + " (" + এটায়.বয়স + " বছর)"
    }
    
    সেট_বয়স(নতুন_বয়স) {
        যদি (নতুন_বয়স < ০) {
            ছুঁড়ে_দাও নতুন এরর("বয়স ঋণাত্মক হতে পারবে না")
        }
        এটায়.বয়স = নতুন_বয়স
    }
}

ধরি আমি = নতুন ব্যক্তি("করিম", ২৫)
দেখাও(আমি.পান_বিবরণ())  //"করিম (২৫ বছর)" দেখাবে
আমি.সেট_বয়স(২৬)
দেখাও(আমি.পান_বিবরণ())  //"করিম (২৬ বছর)" দেখাবে

২২. স্ট্যাটিক মেথড

উপাদান গণিত {
    স্ট্যাটিক বর্গমূল(সংখ্যা) {
        ফেরত_দাও সংখ্যা ** ০.৫
    }
}

দেখাও(গণিত.বর্গমূল(১৬))  # ৪ দেখাবে

অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং

২৩. মাল্টিপল প্রমিস

প্রক্রিয়া ডিলে(সময়, মান) {
    ফেরত_দাও নতুন প্রমিস((সমাধান) => {
        অপেক্ষা(সময়)
        সমাধান(মান)
    })
}

অ্যাসিঙ্ক প্রক্রিয়া প্রধান() {
    ধরি [ফলাফল১, ফলাফল২] = অপেক্ষা প্রমিস.সব([
        ডিলে(১০০০, "প্রথম"),
        ডিলে(২০০০, "দ্বিতীয়")
    ])
    
    দেখাও(ফলাফল১, ফলাফল২)
}

প্রধান()

২৪. প্রমিস রেস

প্রক্রিয়া সময়_নির্বাচন(সময়, মান) {
    ফেরত_দাও নতুন প্রমিস((সমাধান) => {
        অপেক্ষা(সময়)
        সমাধান(মান)
    })
}

অ্যাসিঙ্ক প্রক্রিয়া প্রধান() {
    ধরি বিজয়ী = অপেক্ষা প্রমিস.প্রতিযোগিতা([
        সময়_নির্বাচন(৩০০, "ধীর"),
        সময়_নির্বাচন(১০০, "দ্রুত"),
        সময়_নির্বাচন(২০০, "মধ্যম")
    ])
    
    দেখাও("বিজয়ী: " + বিজয়ী)  # "বিজয়ী: দ্রুত" দেখাবে
}

প্রধান()

রেগুলার এক্সপ্রেশন

২৫. প্যাটার্ন ম্যাচিং

ধরি পাঠ্য = "আমার ফোন নম্বর হলো ০১৭১২৩৪৫৬৭৮"
ধরি প্যাটার্ন = /০১[৩-৯]\d{৮}/g
ধরি মিল = পাঠ্য.মেলান(প্যাটার্ন)

যদি (মিল) {
    দেখাও("ফোন নম্বর পাওয়া গেছে: " + মিল[০])
} নাহলে {
    দেখাও("কোন ফোন নম্বর পাওয়া যায়নি")
}

DOM ম্যানিপুলেশন

২৬. এলিমেন্ট সিলেক্ট ও মডিফাই

ধরি শিরোনাম = ডকুমেন্ট.নির্বাচন("#শিরোনাম")
ধরি বোতাম = ডকুমেন্ট.নির্বাচন("#বোতাম")

বোতাম.শোনো("ক্লিক", প্রক্রিয়া() {
    শিরোনাম.বিষয়বস্তু = "আপনি বোতাম ক্লিক করেছেন!"
    শিরোনাম.স্টাইল.রঙ = "নীল"
})

ইভেন্ট হ্যান্ডলিং

২৭. ইভেন্ট লিসেনার

ধরি ফর্ম = ডকুমেন্ট.নির্বাচন("#আমার_ফর্ম")
ধরি ইনপুট = ডকুমেন্ট.নির্বাচন("#নাম")

ফর্ম.শোনো("জমা", প্রক্রিয়া(ঘটনা) {
    ঘটনা.প্রতিরোধ()
    দেখাও("নাম জমা দেওয়া হয়েছে: " + ইনপুট.মান)
})

স্টোরেজ

২৮. লোকাল স্টোরেজ

# ডাটা সেভ করা
স্থানীয়_সংগ্রহ.সেট("ব্যবহারকারী", {
    নাম: "রহিম",
    ইমেইল: "rahim@example.com",
    লগইন_সময়: নতুন তারিখ()
})

# ডাটা পড়া
ধরি ব্যবহারকারী = স্থানীয়_সংগ্রহ.গেট("ব্যবহারকারী")
দেখাও(ব্যবহারকারী.নাম)

API কল

২৯. ফেচ API

অ্যাসিঙ্ক প্রক্রিয়া ডাটা_আনো() {
    চেষ্টা {
        ধরি প্রতিক্রিয়া = অপেক্ষা আনো("https://api.example.com/data")
        যদি (!প্রতিক্রিয়া.ঠিক) {
            ছুঁড়ে_দাও নতুন এরর("নেটওয়ার্ক প্রতিক্রিয়া ঠিক নেই")
        }
        ধরি ডাটা = অপেক্ষা প্রতিক্রিয়া.জেসন()
        দেখাও(ডাটা)
    } ধরা (এরর) {
        দেখাও("API কল ব্যর্থ: " + এরর.বার্তা)
    }
}

ডাটা_আনো()

টেমপ্লেট প্রোজেক্ট

৩০. সম্পূর্ণ টো-ডো অ্যাপ

অভেদ টাস্ক {
    বানাও(শিরোনাম, সম্পন্ন = মিথ্যা) {
        এটায়.শিরোনাম = শিরোনাম
        এটায়.সম্পন্ন = সম্পন্ন
    }
}

অভেদ টাস্কম্যানেজার {
    বানাও() {
        এটায়.টাস্কগুলি = []
    }
    
    টাস্ক_যোগ(শিরোনাম) {
        ধরি নতুন_টাস্ক = নতুন টাস্ক(শিরোনাম)
        এটায়.টাস্কগুলি.যোগ(নতুন_টাস্ক)
        এটায়.রেন্ডার()
    }
    
    টাস্ক_টগল(সূচক) {
        এটায়.টাস্কগুলি[সূচক].সম্পন্ন = !এটায়.টাস্কগুলি[সূচক].সম্পন্ন
        এটায়.রেন্ডার()
    }
    
    রেন্ডার() {
        ধরি তালিকা = ডকুমেন্ট.নির্বাচন("#টাস্ক-তালিকা")
        তালিকা.বিষয়বস্তু = ""
        
        এটায়.টাস্কগুলি.প্রতিটি((টাস্ক, সূচক) => {
            ধরি আইটেম = ডকুমেন্ট.তৈরি("li")
            আইটেম.বিষয়বস্তু = টাস্ক.শিরোনাম
            
            যদি (টাস্ক.সম্পন্ন) {
                আইটেম.শ্রেণী.যোগ("সম্পন্ন")
            }
            
            আইটেম.শোনো("ক্লিক", () => এটায়.টাস্ক_টগল(সূচক))
            তালিকা.যোগ(আইটেম)
        })
    }
}

ধরি ম্যানেজার = নতুন টাস্কম্যানেজার()

ধরি ফর্ম = ডকুমেন্ট.নির্বাচন("#টাস্ক-ফর্ম")
ধরি ইনপুট = ডকুমেন্ট.নির্বাচন("#নতুন-টাস্ক")

ফর্ম.শোনো("জমা", (ঘটনা) => {
    ঘটনা.প্রতিরোধ()
    যদি (ইনপুট.মান) {
        ম্যানেজার.টাস্ক_যোগ(ইনপুট.মান)
        ইনপুট.মান = ""
    }
})