├── docs ├── faq.md ├── loop_en.md ├── condition_en.md ├── faq_en.md ├── comment_en.md ├── function_en.md ├── operators_en.md ├── variable_en.md ├── api_reference_en.md ├── contribution_en.md ├── comment.md ├── condition.md ├── contribution.md ├── variable.md ├── introduction_en.md ├── operators.md ├── function.md ├── api_reference.md ├── loop.md └── introduction.md ├── .gitignore ├── examples ├── function.ptk ├── variable.ptk ├── getting_started.ptk ├── sample.ptk ├── loop.ptk └── condition.ptk ├── package.json └── README.md /docs/faq.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/loop_en.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/condition_en.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/faq_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /docs/comment_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /docs/function_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /docs/operators_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /docs/variable_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /docs/api_reference_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /docs/contribution_en.md: -------------------------------------------------------------------------------- 1 | Please contribute here. 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .tmp 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /examples/function.ptk: -------------------------------------------------------------------------------- 1 | /* 2 | * সিন্টেক্স : ফাংশন ফাংশনের_নাম(প্যারামিটার){ } 3 | * 4 | * বৃহত্তম সংখ্যা নির্নয়ের ফাংশন 5 | */ 6 | 7 | 8 | ফাংশন বৃহত্তম(ক, খ){ 9 | যদি(ক থেকে খ বড় হয়){ 10 | রিটার্ন খ; 11 | }নাহলে{ 12 | রিটার্ন ক; 13 | } 14 | } 15 | 16 | ধরি বড়_নাম্বার = বৃহত্তম(১২,৪৫); 17 | দেখাও("বৃহত্তম নাস্বার টি হল:" + বড়_নাম্বার ); 18 | -------------------------------------------------------------------------------- /examples/variable.ptk: -------------------------------------------------------------------------------- 1 | /* ভ্যারিয়েবল ডিফাইন করা 2 | * 3 | * 'ধরি' কিওয়ার্ড এর মাধ্যমে ভ্যারিয়েবল ডিক্লেয়ার করতে হবে। 4 | */ 5 | 6 | ধরি ক = ১০; // নাম্বার 7 | ধরি খ = ২ * ৫ + ২.৬; // দশমিক নাম্বার 8 | ধরি ব = সত্য; // বুলিয়ান 9 | ধরি এ = [১,৩,৪]; // এ্যারে 10 | 11 | /* অবজেক্ট ডিফাইন করা */ 12 | ধরি অ = { 13 | নাম : "ইকরাম হোসেন", 14 | শখ : "আকাশ কুসুম স্বপ্ন দেখা" 15 | } 16 | 17 | দেখাও(ক, খ, এ, অ); 18 | -------------------------------------------------------------------------------- /examples/getting_started.ptk: -------------------------------------------------------------------------------- 1 | /* পতাকা(); 2 | * মজার মজার কোড লিখুন! রান করুন! সাবমিট করুন! 3 | */ 4 | 5 | //*** প্রোগ্রাম: ৩ বড় না ৪ বড় ? ***// 6 | যদি(৩ থেকে ৪ বড় হয়){ 7 | দেখাও("বল্টুঃ আমি আগেই জানতাম ৪ বড়।"); 8 | }নাহলে{ 9 | দেখাও("পল্টুঃ ঘোড়ার ডিম"); 10 | } 11 | 12 | 13 | //*** প্রোগ্রাম: নন্দলাল ***// 14 | ধরি জগত = "সুন্দর"; 15 | যদি (জগত দেখতে "সুন্দর" হয়){ 16 | দেখাও("থাকবো নাকো বদ্ধ ঘরে দেখবো এবার জগতটাকে"); 17 | }নাহলে{ 18 | দেখাও("আমি নন্দলাল হব, এ জগতকে ভয় পাব"); 19 | } 20 | -------------------------------------------------------------------------------- /examples/sample.ptk: -------------------------------------------------------------------------------- 1 | /* 2 | রিটার্ন - পাঠাও 3 | লুপ - রিপিট, ঘুরাও, চলবে 4 | 5 | 6 | */ 7 | 8 | ধরি জাতীয়_কবি = "কাজী নজরুল ইসলাম"; 9 | যদি(জাতীয়_কবি "কাজী নজরুল ইসলাম" হয়){ 10 | 11 | } 12 | 13 | 14 | যদি(তুমি.ভালোবাস(আমাকে)){ 15 | লুপ(অসীম){ 16 | 17 | } 18 | } 19 | 20 | /* একবার না পারিলে দেখ শত বার */ 21 | লুপ(১০০ বার){ 22 | চেষ্টা_কর(); 23 | } 24 | 25 | যদি( খিদা() > ০ ){ 26 | খাবার_দাও(); 27 | } 28 | নাহলে { 29 | আমার_সাথে_খেল(); 30 | } 31 | 32 | 33 | 34 | যদি(বস == আশেপাশে){ 35 | কাজ_কর(); 36 | } 37 | নাহলে { 38 | গেম.খেল(); 39 | } 40 | -------------------------------------------------------------------------------- /docs/comment.md: -------------------------------------------------------------------------------- 1 | # কমেন্ট 2 | 3 | যখন আপনি কোড লিখছেন তখন হয়তো আপনি কোন জটিল এলগরিদম লিখছেন যেটা কিছুদিন পর আপনি নিজে দেখলে এলিয়েনদের কোড মনে হতে পারে। আবার বড় সিস্টেম তৈরী করতে গেলে কোথায় কি লিখছেন বা কেন লিখেছিলেন সেটা আপনার মনে থাকবে না , আর না থাকাটা স্বাভাবিক। তাছাড়া আপনার কোড লাইন বাই লাইন পড়ে অন্য কেউ যদি সিস্টেম বুঝতে চায় তবে সেটা সহজে বোধগম্য হবে না। এ সমস্যা সমাধানে কোডের পাশাপাশি কিছু কমেন্ট লিখে রাখা ভাল। কমেন্ট আসলে কোন কোড নয় , "কোড বুঝার সুবিধার জন্য আপনার নিজের মত করে কোডে কিছু লিখা " কোডে কমেন্ট কিছু লিখাকে নিষ্ক্রিয় করে রাখে এগুলো রান হয় না। সিঙ্গেল লাইন এবং মাল্টি-লাইন কমেন্ট নিচে দেখানো হলঃ 4 | 5 | ``` 6 | // সিঙ্গেল লাইন কমেন্ট, দুটি স্ল্যাশ দিয়ে শুরু 7 | 8 | /* 9 | মাল্টি-লাইন কমেন্ট 10 | কোডের বিবরন ১ 11 | কোডের বিবরন ২ 12 | */ 13 | ``` 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "potaka", 3 | "version": "1.0.0", 4 | "description": "A sentence based easy bangla programming language for kids and beginners", 5 | "main": "lib/parser.js", 6 | "directories": { 7 | "doc": "docs", 8 | "example": "examples" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/ikrum/potaka.git" 16 | }, 17 | "keywords": [ 18 | "potaka", 19 | "bangla", 20 | "programming" 21 | ], 22 | "dependencies": { 23 | "escodegen": "^1.8.0" 24 | }, 25 | "devDependencies": { 26 | "grunt": "^1.0.1", 27 | "grunt-contrib-concat": "^1.0.1", 28 | "grunt-contrib-copy": "^1.0.0", 29 | "grunt-contrib-cssmin": "^1.0.1", 30 | "grunt-contrib-uglify": "^1.0.1", 31 | "grunt-filerev": "^2.3.1", 32 | "grunt-unicode": "^0.1.4", 33 | "grunt-usemin": "^3.1.1" 34 | }, 35 | "author": "Ikrum Hossain", 36 | "license": "MIT", 37 | "bugs": { 38 | "url": "https://github.com/ikrum/potaka/issues" 39 | }, 40 | "homepage": "https://github.com/ikrum/potaka#readme" 41 | } 42 | -------------------------------------------------------------------------------- /examples/loop.ptk: -------------------------------------------------------------------------------- 1 | /* মিনি লুপ 2 | * 3 | * সিনটেক্স : লুপ( কতবার_ঘুরবে? ){ } 4 | * _ইন্ডেক্স : মিনি লুপের ভিতর '_ইন্ডেক্স' কিওয়্যার্ড টি কত নাম্বার লুপ চলছে তা নির্দেশ করে 5 | * _ইন্ডেক্স : '_ইন্ডেক্স' ০ থেকে শুরু হয় 6 | */ 7 | 8 | দেখাও("লুপ ৩ বার ঘুরবে:"); 9 | লুপ(৩ বার){ 10 | দেখাও( "লুপ এ _ইন্ডেক্স এর মান: " + _ইন্ডেক্স ); // এই লাইনটি ৩ বার এক্সিকিউট হবে 11 | } 12 | 13 | /* সীমাহীন বা ইনফিনিট লুপ: উদাহরন ১ 14 | * 15 | * কতবার লুপটি ঘুরবে, তা উল্যেখ না থাকলে এটি ইনফিনিট লুপ হিসেবে ধরা হবে 16 | * অনেকটা while(true){ } এর মত 17 | * 18 | * থামো : লুপ থেকে বের হওয়ার জন্য এই কিওয়্যার্ড টি ব্যবহার করা হয় 19 | */ 20 | লুপ(){ 21 | দেখাও("অসীম লুপ, উদাহরন ১"); 22 | যদি(_ইন্ডেক্স == ২) 23 | থামো; // Equivalent to 'break' keyword 24 | } 25 | 26 | // ভ্যারিয়েবল ব্যবহার করে লুপ 27 | ধরি প = ৩; // ৩ বার 28 | 29 | লুপ(প){ দেখাও("লুপ(প)"); } 30 | লুপ(প বার){ দেখাও("প বার"); } 31 | লুপ(প-২*২); // লুপটির কোন বডি নেই 32 | লুপ(প-২*২){ দেখাও("প-২*২"); }; 33 | 34 | /* রেগুলার লুপ 35 | * Equivalent to : for(var i = 0; i<3; i++){ } 36 | */ 37 | লুপ( ধরি ই = ০; ই<৩ ; ই++ ){ 38 | দেখাও(ই+" নং সাধারন লুপ চলমান"); 39 | } 40 | 41 | /* উদাহরনে ব্যবহৃত ফাংশন সমূহ */ 42 | 43 | ফাংশন খাও(){} 44 | ফাংশন ঘুমাও(){} 45 | ফাংশন কোড_কর(){} 46 | ফাংশন মারা_যাও(){ 47 | দেখাও("৮০ বছর বয়সে আমি মারা গেলাম"); 48 | } 49 | -------------------------------------------------------------------------------- /examples/condition.ptk: -------------------------------------------------------------------------------- 1 | /* 2 | * সিন্টেক্স : যদি(তুলনামূলক এক্সপ্রেশন){} নাহলে{ } 3 | * 4 | * -- মাতৃভাষায় কন্ডিশনাল এক্সপ্রেশন কয়েকটি উদাহরণ: -- 5 | * যদি( ক এর মান খ এর সমান হয় ) 6 | * যদি( ক এর মান খ এর সমান না হয় ) 7 | * যদি( খ এর মান ১০ থেকে বড় হয় ) 8 | * যদি( খ এর মান ১০ থেকে বেশি না হয় ) 9 | * যদি( খ এর মান ক থেকে ছোট হয় ) 10 | * যদি( বয়স ১৮ থেকে কম হয় ) 11 | * যদি( বয়স ১০ এর বেশি হয় ) 12 | * যদি(৩ থেকে ৪ ছোট হয়) 13 | */ 14 | 15 | ধরি বৃষ্টি = সত্য; 16 | যদি(বৃষ্টি হয়){ 17 | দেখাও("চলো বৃষ্টিতে ভিজি"); 18 | } 19 | 20 | ধরি বয়স = ১০; 21 | যদি(বয়স ১৮ থেকে বেশি না হয় এবং বয়স ১০ এর সমান হয় অথবা বয়স এর মান ১০ থেকে বড় হয়){ 22 | দেখাও("পড়াশোনায় মনোযোগী হও"); 23 | } 24 | 25 | ধরি জীবন = "দু:খ" 26 | যদি(জীবন এর মান "দু:খ" হয়){ 27 | দেখাও("দু:খ কে কন্ট্রোল+অল্টার+ডিলিট মারো"); 28 | } 29 | 30 | যদি(_টাইপ(জীবন) == "লেখা" এবং _টাইপ(বয়স) == "নাম্বার"){ 31 | দেখাও("আমার টাইপ ঠিক আছে"); 32 | } 33 | 34 | ধরি সুখ = সত্য ; 35 | করণীয়(সুখ); 36 | 37 | সুখ = মিথ্যা ; 38 | করণীয়(সুখ); 39 | 40 | ফাংশন করণীয়(সুখ){ 41 | যদি(সুখ == সত্য অথবা সুখ == অসীম){ 42 | প্রেম_কর(); 43 | কষ্ট_পাও(); 44 | }নাহলে{ 45 | প্রেমিকা_ছাড়(); 46 | সুখে_থাক(); 47 | } 48 | } 49 | 50 | 51 | /* উদাহরনে ব্যবহৃত ফাংশনের সঙ্গা */ 52 | ফাংশন প্রেম_কর(){ 53 | দেখাও("প্রেম শুরু করলাম"); 54 | } 55 | ফাংশন কষ্ট_পাও(){ 56 | দেখাও("আমি ভালো নেই !"); 57 | } 58 | ফাংশন সুখে_থাক(){ 59 | দেখাও("এখন সুখে আছি !"); 60 | } 61 | ফাংশন প্রেমিকা_ছাড়(){ 62 | দেখাও("প্রেমিকাকে সালাম !"); 63 | } 64 | -------------------------------------------------------------------------------- /docs/condition.md: -------------------------------------------------------------------------------- 1 | # কন্ডিশন 2 | শর্ত সাপেক্ষে কোন কিছু করাকে প্রোগ্রামিং এর ভাষায় কন্ডিশন বা কন্ডিশনাল স্টেটমেন্ট বলে। যেমন, আপনি আপনার বাসার দারোয়ানকে বলে দিয়েছেন অপরিচিত মানুষকে গেটের ভিতর ঢুকতে না দিতে। আর আপনার দারোয়ান সেটা মেনে নিয়ে অপরিচিত কাউকে বাসায় প্রবেশ করতে দেয় না। এখানে, দারোয়ান আপনাকে বাসায় প্রবেশ করতে দেবে, কিন্তু শর্ত সাপেক্ষে। সেই শর্তটা কি? শর্তটা হল: "আপনি যদি পরিচিত হন"। এবার প্রোগ্রামিং করে আপনার জন্য একটা ডিজিটাল দারোয়ান বানাই যে অপরিচিত মানুষদের বাসায় ঢুকতে দেবে না। 3 | 4 | ``` 5 | ধরি সে_পরিচিত = হ্যা; 6 | 7 | যদি( সে_পরিচিত হয় ){ 8 | দেখাও("আহেন স্যার, ভিত্তে আহেন।"); // প্রবেশ করতে দাও 9 | }নাহলে{ 10 | দেখাও("ভাই রাস্তা মাপেন।"); // প্রবেশের অনুমতি নেই 11 | } 12 | ``` 13 | 14 | প্রোগ্রামটি দেখে আশা করি বোঝা গেছে, তবে শর্ত দেয়ার নিয়মটি হচ্ছে - যদি লিখে এর পর '()' প্যরেনথেসিসের (প্রথম বন্ধনী) মাঝখানে শর্তটি লিখতে হবে এখানে এক বা একাধিক শর্ত থাকতে পারে, একাধিক শর্ত এবং বা অথবা দিয়ে আপনি লিখতে পারেন এর মাঝে , তার পর '{}' কারলি ব্রেছ (দ্বিতীয় বন্ধনী) এর মাঝে সিদ্ধান্তটি কি হবে তা লিখবো। এখন আমাদের উপরের কোডটির দিকে তাকালে দেখতে পাবেন "নাহলে" একটি শব্দ সেটা কি করে? এর মানে হচ্ছে আপনার দেয়া শর্ত যদি না মানে অর্থাৎ সত্য না হয় তাহলে সে কি করবে সেটা আমরা বলে দেবে "নাহলে" এর পরের '{}' দ্বিতীয় বন্ধনীর মাঝে। 15 | 16 | আচ্ছা বুঝলাম কিন্তু আমাদের যদি একাধিক শর্ত থাকে সেটার জন্যে আমরা "নাহলে" যদি ব্যবহার করতে পারি অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ এ যা else if, সেক্ষেত্রে আপনার প্রথম কন্ডিশন সত্য না হলে পরেরটা চেক করবে এভাবে ক্রমান্বয়ে চেক করে যাবে যেটি সত্য হবে সেটিই কাজ করবে। আমরা এর জন্যে একটি উদাহরন দেখিঃ 17 | 18 | ``` 19 | ধরি তোমার_বয়স = ১৯; 20 | যদি(তোমার_বয়স <= ২০){ 21 | দেখাও("পড়াশোনায় মনোযোগ দাও"); 22 | }নাহলে যদি(তোমার_বয়স >= ২১ এবং তোমার_বয়স <= ২৫){ 23 | দেখাও("কাউকে ভাল লাগলে প্রেম করা শুরু করো"); 24 | }নাহলে যদি(তোমার_বয়স >= ২৬ এবং তোমার_বয়স <= ৩০){ 25 | দেখাও("বেশীদিন বাঁচবা না, বয়স যথেস্ট হইছে বিয়ে করে ফেলো"); 26 | }নাহলে{ 27 | দেখাও("মরনের চিন্তা করো, কি নিয়ে মরবা"); 28 | } 29 | ``` 30 | 31 | প্রোগ্রামটি দেখেই বোঝা যাচ্ছে আর কিছু পরিচিত সিনট্যাক্স দেখতে পাচ্ছেন মনে হয় কন্ডিশনের এক্সপ্রেশনে কিছু অপারেটর যা আমরা তুলনামূলক অপারেটর চ্যাপ্টারে দেখেছিলাম। 32 | -------------------------------------------------------------------------------- /docs/contribution.md: -------------------------------------------------------------------------------- 1 | # কন্ট্রিবিউশন 2 | 3 | ## পাবলিক কন্ট্রিবিউশন 4 | স্ট্যাবল রিলিজে পতাকার কোড ওপেন সোর্স করা হবে এবং পরবর্তী ভার্সনের জন্য কিছু চেক লিস্ট থাকবে যেগুলো সবার কন্ট্রিবিউশনে সর্ম্পূন করা হবে। এর আগে GitHub কোন প্রকার ডেভেলপমেন্ট কন্ট্রিবিউশন থাকছে না, শুধু ডকুমেন্টেশন থাকবে। এই মূহূর্তে ডেভেলপমেন্ট এর চেয়ে গুরুত্বপূর্ন বিষয় হলো প্রজেক্টটাকে ব্যাবহার উপযোগী করে তোলা যায় সেটাকে বড় করে দেখা । আইডিয়া, ডেভলপমেন্ট, ফিল্ড টেস্ট, সবার কাছে পোঁছে দেয়া, এ সম্পূর্ন বিষয় গুলো একা আমার পক্ষে সম্ভব নয়। পতাকা কে ব্যাবহার উপযোগী ও মূল উদ্দেশ্য বাস্তবায়ন করতে এই মূহূর্তে যে বিষয়গুলোতে আপনাদের কন্ট্রিবিউশন/ফিডব্যাক আশা করছি: 5 | 6 | 1. পতাকার সিন্ট্যাক্স কিভাবে আরো সহজ ভাবে উপস্থাপন করা যায় ? 7 | 2. মজার মজার কোড লিখে কোড রিপোজিটরীতে শেয়ার করা। 8 | 3. গেম এর লেভেল ডিজাইন দেয়া ( প্রোগ্রামিং প্রবলেম সেট করা ) । 9 | 4. নবীনদের প্রোগ্রামিং এর প্রতি আগ্রহ জম্মাতে এবং ব্যাবহার উপযোগী করার জন্য নতুন কি ফিচার নিয়ে আপনার ভাবনা শেয়ার করা। 10 | 5. পতাকায় বিদ্যমান যেকোন প্রকারের ত্রুটি সনাক্ত ও রিপোর্ট করা । 11 | 5. নতুন প্রোগ্রামারদের এটা ব্যবহার করতে দিয়ে আপনি কি রেজাল্ট পেলেন, নতুনদের এটা শিখতে কি কি সমস্যা হয় তা আমাদের সাথে শেয়ার করা । 12 | 13 | Feedback: http://potaka.io/feedback 14 |
15 | GitHub  : http://github.com/ikrum/potaka 16 | 17 | সকলের ফিডব্যাক এবং কন্ট্রিবিউশন পতাকা সবর্দা মূল্যায়ন করবে। 18 | 19 | ## টিম 20 | আমি [ইকরাম হোসেন](http://facebook.com/ikrum) (সিনিয়র সফ্টওয়্যার ইন্জিনিয়ার, টেলিনর হেল্থ) এবং আমার সাথে ছিল কমিউনিটির অনেক গুরুরা(হাসিন ভাই, মিজান ভাই, মাসনুন ভাই, জামিল ভাই .......) এবং আপনার মত অনেক গুনীরা, যাদের অনুপ্রেরনা, সাজেশন এবং আইডিয়ার সম্মিলিত রেজাল্ট হল পতাকা । শুরুটা অনেক কঠিন হলেও আজ আমি নিজেকে একা মনে করছি না। অনেকেই একত্রিত হচ্ছি কমিউনিটিকে একটা ভাল কিছু দিতে। 21 | 22 | আমার সাথে নতুন যে দুজন পতাকা ডেভলপমেন্টে কন্ট্রিবিউট করছেন: 23 | 24 | 1. [রাকিব হাসান অমিয়](https://www.facebook.com/rakib.h.amio) 25 | 2. [ওসমান গনী নাহিদ](https://www.facebook.com/nahidcool1994) 26 | 27 | যাদের গুরুত্বপূর্ন সাজেশন এবং আইডিয়া গুলো পতাকা ১.০ বেটা তে থাকছে, তাদের মধ্যে কয়েকজন হল: 28 | 29 | 1. আহমেদ চিশতি ভাই ( অরবিট্যাক্স ) 30 | 2. আই.কে মামুন ভাই ( দারাজ ) 31 | 3. হিশাম রুম্মান ভাই ( এল.আর গ্লোবাল ) 32 | 4. আরিফুল ইসলাম সুমন ভাই ( গেম ওভার স্টুডিও ) 33 | 5. হাসান আব্দুল্লাহ ভাই (মেগামাইন্ডস) 34 | 35 | সহায়তায় রয়েছেন সুমন ভাই এবং আনাম ভাই (LLC). আমাদের সাথে আপনার মতামত শেয়ার করতে ভুলবেন না। 36 | 37 | ### যোগাযোগ 38 | Email: [ikrum.bd@gmail.com](#) 39 | Facebook: http://facebook.com/ikrum 40 | -------------------------------------------------------------------------------- /docs/variable.md: -------------------------------------------------------------------------------- 1 | # ভ্যারিয়েবল 2 | ভ্যারিয়েবল হচ্ছে একটি পাত্র বা বাক্স যেখানে আপনি ভ্যালু বা ডাটা রাখতে পারবেন। ভ্যারিয়েবলে রাখা ডাটা বা ভ্যালু সর্বদাই পরিবর্তনশীল। প্রতিটি ভ্যারিয়েবলে একটা নাম থাকবে(আইডেন্টিফায়ার), আপনি যখন ওই নাম ধরে জিজ্ঞেস করবেন আপনাকে তখনকার ভ্যালুটা দিয়ে দিবে। ভ্যারিয়েবল নিয়ে আরো জানতে 3 | লিংক ১, লিংক ২ ভিজিট করুন। 4 | 5 | 6 | পতাকায় ভ্যারিয়েবল ডিক্লেয়ার করতে "ধরি" কিওয়্যার্ড ব্যবহার করা হয়। ভেরিয়বলের নাম বাংলা স্বরবর্ণ বা ব্যঞ্জনবর্ণ দিয়ে শুরু হবে নামে কোন স্পেস দেয়া যাবে না, সেক্ষেত্র আন্ডারস্কোর ( _ ) ব্যবহার করতে পারবেন। 7 | 8 | ### সিন্ট্যাক্স 9 | 10 | ``` 11 | ধরি ভ্যারিয়েবলের_নাম = ভ্যারিয়েবলের_মান; // উদাহরন: ধরি ক = ১০; 12 | ``` 13 | 14 | 15 | ## ডাটা টাইপ 16 | ভ্যারিয়েবল গুলা আবার অনেকগুলা টাইপের হতে পারে। যেমন সংখ্যা, বর্ণের সমষ্টি অথবা হ্যাঁ না টাইপ। উদাহরন: আপনার বয়স স্টোর করতে নাম্বার, নাম বা ঠিকানা স্টোর করতে বাংলা বর্ণমালার প্রয়োজন। পতাকা চার ধরনের ডাটা টাইপ সাপোর্ট করে: 17 | 18 | 1. নাম্বার, যেমন: ১,৩৪,৭৫৪ ইত্যাদি 19 | 2. লেখা, যেমন: “হ্যালো” 20 | 3. বুলিয়ান, যেমন: সত্য, মিথ্যা 21 | 4. অবজেক্ট, যেমন: { নাম: “পতাকা”, বয়স: “০” } 22 | 23 | ## এ্যারে / সেট 24 | একাধিক ভ্যালু বা ভ্যারিয়েবল কে একটি সেট বা সারিতে স্টোর করাই হল এ্যারে । যদি আপনাকে পাঁচটি ফলের নাম ভ্যারিয়েবলে রাখতে বলা হয় তাহলে হয়তো আপনি এভাবে লিখতে পারেন। 25 | 26 | ``` 27 | ধরি ফল_১ = "আম"; 28 | ধরি ফল_২ = "জাম"; 29 | ধরি ফল_৩ = "কলা"; 30 | ধরি ফল_৪ = "কাঁঠাল"; 31 | ধরি ফল_৫ = "তরমুজ"; 32 | 33 | দেখাও( ফল_৪ ); // কাঁঠাল 34 | ``` 35 | এভাবে পাঁচটি ভ্যালু পাঁচটি আলাদা ভ্যারিয়েবলে না রেখে একটি এ্যারেতে রাখতে পারি । এক্ষেত্রে মান গুলো তৃতীয় বন্ধনীর মাঝে লিখতে হবে এবং কমা দ্বার মান গুলো আলাদা থাকবে। এ্যারে ইন্ডেক্স শুন্য থেকে শুরু হয় । তাই প্রথম ভ্যালুটি শুন্যতম পজিশনে থাকবে এবং দ্বিতীয়টি ১ম পজিশনে থাকবে। 36 | 37 | ``` 38 | ধরি নাম_সমূহ = ["আম", "জাম", "কলা", "কাঁঠাল", "তরমুজ"]; 39 | দেখাও( নাম_সমূহ[০] ); // আম 40 | দেখাও( নাম_সমূহ[১] ); // জাম 41 | দেখাও( নাম_সমূহ[২] ); // কলা 42 | দেখাও( নাম_সমূহ[৩] ); // কাঁঠাল 43 | দেখাও( নাম_সমূহ[৪] ); // তরমুজ 44 | ``` 45 | 46 | ## রিজার্ভ কিওয়্যার্ড 47 | কোন রিজার্ভ কিওয়্যার্ড ভ্যারিয়েবলের নাম হিসেবে ব্যবহার করতে পারবেন না , রিজার্ভ কিওয়ার্ড গুলো নিচে দেয়া হলঃ 48 | 49 | | ধরি | যদি | নাহলে | এবং | অথবা | সত্য | মিথ্যা | চলবে | 50 | |:-----:|:------:|:-----:|:---:|:-------:|:-----:|:-----:|:----:| 51 | | ফাংশন | রিটার্ন | অসীম | বার | _ইন্ডেক্স | নাল | হয় | থাকে | 52 | | হতে | থেকে | চেয়ে | হ্যা | না | দেখাও | ইনপুট | টাইপ | 53 | 54 | 55 | 56 | ## উদাহরন 57 | ``` 58 | ধরি ক = ১০; 59 | ধরি খ = ২০; 60 | দেখাও( ক+খ ); // ৩০ 61 | 62 | ধরি মেসেজ = "আমি একজন গর্বিত বাঙ্গালি"; 63 | দেখাও( মেসেজ ); 64 | 65 | ধরি মানুষ = { 66 | 67 | } 68 | ``` 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Potaka / পতাকা() 2 | A sentence based easy "Bangla Programming Language" for kids and beginners. Visit http://potaka.io to have a look. 3 | 4 | ## Documentation 5 | 6 | | English | বাংলা | 7 | |:-------------: |:--------------: | 8 | | [Introduction](docs/introduction_en.md) | [পতাকা পরিচিতি](docs/introduction.md) | 9 | | [Variable](docs/variable_en.md) | [ভ্যারিয়েবল](docs/variable.md) | 10 | | [Operators](docs/operators_en.md) | [অপারেটর](docs/operators.md) | 11 | | [Condition](docs/condition_en.md) | [কন্ডিশন](docs/condition.md) | 12 | | [Loop](docs/loop_en.md) | [লুপ](docs/loop.md) | 13 | | [Function](docs/function_en.md) | [ফাংশন](docs/function.md) | 14 | | [Comment](docs/comment_en.md) | [কমেন্ট](docs/comment.md) | 15 | | [Api Reference](docs/api_reference_en.md)| [এপিআই রেফারেন্স](docs/api_reference.md)| 16 | | [FAQ](docs/faq_en.md) | [প্রশ্নোত্তর](docs/faq.md) | 17 | 18 | ## Potaka In News 19 | ### English News 20 | * [Global Voices](https://globalvoices.org/2016/08/30/theres-finally-a-programming-language-in-bengali-script-thanks-to-potaka/) 21 | * [Dhaka Tribune](http://www.dhakatribune.com/feature/tech/2016/08/20/bangla-programming-language-potaka-launched/) 22 | * [Hifi Public](http://hifipublic.com/2016/08/22/potaka-first-bangla-programming-language/) 23 | * [The Daily Observer](http://www.observerbd.com/details.php?id=30803) 24 | * [The Financial Express](http://www.thefinancialexpress-bd.com/2016/08/31/44160/POTAKA,-Bangla-programming-language-launched) 25 | * [Intellect](http://www.intellect.com.bd/details/515/potaka-the-first-bangla-programming-language) 26 | 27 | ### Bangla News 28 | * [BD News 24](http://bangla.bdnews24.com/tech/article1203516.bdnews) 29 | * [Jugantor](http://www.jugantor.com/online/it-world/2016/08/22/22889/বাংলায়-প্রোগ্রামিং-ভাষা-‘পতাকা’) 30 | * [Amader Shomoy](http://www.dainikamadershomoy.com/todays-paper/features/technology-time/32993/প্রোগ্রামিং-লিখি-বাংলা-ভাষায়) 31 | * [Tech Shohor](http://techshohor.com/news/66417) 32 | * [Daily Jagoron](http://dailyjagoran.com/scitech/bangla-programming-language-launched/) 33 | * [Priyo Tech](http://tech.priyo.com/news/2016/8/21/32938-%E0%A6%AC%E0%A6%BE%E0%A6%82%E0%A6%B2%E0%A6%BE-%E0%A6%AD%E0%A6%BE%E0%A6%B7%E0%A6%BE%E0%A7%9F-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%97%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A6%BF%E0%A6%82-%E0%A6%95%E0%A6%B0%E0%A6%BE-%E0%A6%AF%E0%A6%BE%E0%A6%AC%E0%A7%87-%E0%A6%AA%E0%A6%A4%E0%A6%BE%E0%A6%95%E0%A6%BE%E0%A7%9F) 34 | 35 | ## Contact 36 | Email: [ikrum.bd@gmail.com](#) 37 | Facebook: [www.facebook.com/ikrum](http://facebook.com/ikrum) 38 | Phone: +880 1764-722369 39 | -------------------------------------------------------------------------------- /docs/introduction_en.md: -------------------------------------------------------------------------------- 1 | # Potaka 2 | "Potaka" is a programming language for the new learners. All the syntax of "Potaka" is written in Bengali. The syntaxes are organized in such a way so that people can read the code as a meaningful Bengali sentence. In other words, "Potaka" discloses a native Bengali sentence into programming logics. The main goal of "Potaka" is, giving the basic concept of programming and motivating the beginners to learn to program. "Potaka" comes with a simple game for the kids, that they can solve by using programming logics, which surely enhance their interest towards programming. It also contains a code repository which is open source and anyone can contribute to it. 3 | 4 | ``` 5 | দেখাও("থাকবো নাকো বদ্ধ ঘরে দেখবো এবার জগতটাকে"); 6 | ``` 7 | 8 | ## Why potaka has built? 9 | 10 | In first world countries, kids and youngs can start to learn to program from the every early stage of their education. But very few of us (Bangladeshis) have got the opportunity to do so. Most of the students are introduced to the programming not before they start their university life. As they do not have any basic idea about programming, they try to memorize the codes to pass the examinations. This is very shameful and they are deprived of tasting the art of programming. Suddenly, it comes to their realization that, they need to have minimum knowledge about programming to get a good job. 11 | 12 | At present, the higher secondary level (HSC) students are introduced to the C programming language as per their curriculum. There is no doubt it is a very good initiative. But the problem is, the scope of learning is limited to the examination papers and the books authorized by the education board. To get good numbers in the examination, they used to memorize the codes and write them down to their examination papers. The things related to the programming, they don't understand, they try to avoid those things. This lack of knowledge due to lack of interest leads them not to do programming or choose it as a profession. That's why for most of the students of HSC level, learning programming is a very tough ask. Not only for the HSC students but also for many university students, they memorize the codes before the exam night and deliver them in the exam hall. 13 | 14 | Why they are afraid of programming? These are the following reasons we have collected from our field test: 15 | 1. It seems like understanding the concept of conditional statements, loop and array are hard for the students. When they try to memorize the concept of conditional statements, they find it very difficult when they need to memorize the rest of the things as well. Then they stop to think about the logic building which kills their interest in programming. 16 | 2. It is very important for the new learners to visualize the things in their learning process. They hardly have any idea which line of code is executing and why. They do not have the combined view of their coding. 17 | -------------------------------------------------------------------------------- /docs/operators.md: -------------------------------------------------------------------------------- 1 | # অপারেটর 2 | ভ্যারিয়েবলে মান এসাইন, দুটি ভ্যালুকে তুলনা করা কিংবা বিভিন্ন গানিতিক অপারেশন সর্ম্পূন করার জন্য বিভিন্ন অপারেটর ব্যবহার করা হয়। যেমন: 3 | 4 | ## তুলনা মূলক অপারেটর 5 | তুলনা মূলক স্ট্যাটমেন্ট এ বাক্যের সৌন্দর্য বৃদ্ধিতে একটি অপশনাল কিওয়্যার্ড "হয়" ব্যবহার করা হয়। 6 | 7 | | অপারেটর | বিবরন | উদাহরন | 8 | |:-----------------------------:|:--------------------------------:|:--------------------------------:| 9 | | এর সমান | দুটি মান সমান কি না | যদি( ক এর মান খ এর সমান হয় ); | 10 | | == | দুটি মান সমান কি না | যদি( ক == খ) | 11 | | এর সমান না হয় | দুটি মান সমান ভিন্ন কি না | যদি( ক এর মান খ এর সমান না হয় ); | 12 | | != | দুটি মান সমান ভিন্ন কি না | যদি( ক != খ) | 13 | | ( হতে, থেকে, চেয়ে )(বড়, বেশি) | একটির মান অপরটির থেকে বড় কি না | যদি(৩ থেকে ৪ বড় হয়) | 14 | | > | একটির মান অপরটির থেকে বড় কি না | যদি(৪>৩) | 15 | | ( হতে, থেকে, চেয়ে )(ছোট, কম) | একটির মান অপরটির থেকে ছোট কি না | যদি(৪ থেকে ৩ ছোট হয়) | 16 | | < | একটির মান অপরটির থেকে ছোট কি না | যদি(৩<৪) | 17 | | >= | বড় অথবা সমান | যদি( ক >= খ ) | 18 | | <= | ছোট অথবা সমান | যদি( খ<=ক ) | 19 | 20 | ## লজিকাল অপারেটর 21 | | অপারেটর | বিবরন | উদাহরন | 22 | |:-------:|:-------------:|:---------------------------:| 23 | | এবং | আবশ্যক কন্ডিশন | যদি( ক == ১০ এবং খ == ২০); | 24 | | && | আবশ্যক কন্ডিশন | যদি( ক == ১০ && খ == ২০); | 25 | | অথবা | অপশনাল কন্ডিশন | যদি( ক == ১০ অথবা খ == ২০); | 26 | | || | অপশনাল কন্ডিশন | যদি( ক == ১০ || খ == ২০); | 27 | | ! | না বোধক | যদি( ক != ১০) | 28 | 29 | ## বুলিয়ান অপারেটর 30 | | অপারেটর | উদাহরন | 31 | |:-------:|:-------------------:| 32 | | সত্য | যদি( গল্প সত্য হয়); | 33 | | হ্যা | ধরি পরিচিত = হ্যা; | 34 | | মিথ্যা | যদি( গল্প মিথ্যা হয়); | 35 | | না | ধরি পরিচিত = না; | 36 | 37 | ## গানিতিক অপারেটর 38 | | অপারেটর | বিবরন | উদাহরন | 39 | |:-------:|:------------------:|:-------------------:| 40 | | + | যোগ | ক = ১০+২০; // ৩০ | 41 | | - | বিয়োগ | খ = ২৫ - ৫; // ২০ | 42 | | × | গুন | গ = ৫×৫; // ২৫ | 43 | | * | গুন | গ = ৫*৫; // ২৫ | 44 | | ÷ | ভাগ | ব = ১০০÷২০; // ৫ | 45 | | / | ভাগ | ব = ১০০/২০; // ৫ | 46 | | % | ভাগশেষ | ভ = ১৪%৩; // ২ | 47 | | ++ | ইনক্রীমেন্ট বা বৃদ্ধি | প = ১০;
প++ ; // ১১ | 48 | | - - | ডিক্রীমেন্ট বা হ্রাস | ম = ১০;
ম- - ; // ৯ | 49 | -------------------------------------------------------------------------------- /docs/function.md: -------------------------------------------------------------------------------- 1 | # ফাংশন 2 | প্রোগ্রামিং এর ভাষায় ফাংশন হলো একটি নির্দিষ্ট ধরনের কাজ করে এমন কতগুলো ইন্সট্রাকশনের সমষ্টি। যেমন "দেখাও()" একটি ফাংশন যার কাজ হল আউপুট কনসোলে লেখা দেখানো। অনুরুপ ভাবে আপনি চাইলে আপনার ইচ্ছা মত যে কোন কাজের জন্য ফাংশন লিখে ফেলতে পারেন । 3 | 4 | ## কেন প্রয়োজন 5 | ধরুন আপনাকে একটি বড় প্রোগ্রাম লিখতে হচ্ছে যেখানে বার বার আপনাকে কয়েকটি সংখ্যার গড় বের করতে হবে। গড় বের করার জন্য প্রদত্ত সংখ্যাগুলোকে যোগ করে মোট যতটি সংখ্যা আছে তা দিয়ে ভাগ করলেই আমরা গড় পাই। কিন্তু প্রোগ্রামের মধ্যে যতবার আপনাকে গড় বের করতে হবে প্রতিবার তার জন্য একই ধরনের কোড বার বার লিখাটা বেশ ঝামেলা এবং সময়ের অপচয়। আর এভাবে লিখতে থাকলে প্রোগ্রামটির কোডের গঠন ও বেশ অগোছালো হয়ে যায়। 6 | 7 | এই বিষয়টি আমরা সমাধান করতে পারি সহজেই গড় বের করার জন্য একটি ফাংশন লিখে। ফাংশন লিখলে আমরা একবারেই ঠিক করে দেব কিভাবে গড় হিসাব করতে হয় এবং তারপরে আমরা যেখানেই গড় বের করতে যাবো সেখানেই আমরা এই ফাংশনটি কল করতে পারবো এবং সহজেই গড় পেয়ে যাবো। একই সাথে আমাদের প্রোগ্রামটির কোডও বেশ গোছানো থাকবে কারণ আমরা বার বার একই ধরনের কোড লিখবো না। 8 | 9 | ## সিন্ট্যাক্স 10 | ``` 11 | // 'ফাংশন' কিওয়্যার্ড ব্যবহার করে ফাংশন ডিফাইন করা 12 | 13 | ফাংশন ফাংশনের_নাম(প্যারামিটার){ 14 | 15 | .... 16 | ফাংশন বডি 17 | .... 18 | 19 | 20 | রিটার্ন ভ্যালু; 21 | } 22 | ``` 23 | 24 | ### ফাংশনের_নাম 25 | এখানে আমাদের ফাংশনের নাম লিখতে হবে। ফাংশনের নাম হতে হবে অর্থপূর্ণ যাতে নাম দেখেই ধারনা করা যায় যে ফাংশনটি কী কাজ করবে। যেমন দুটি সংখ্যার মধ্যে বড় সংখ্যাটি বের করার জন্য যদি আমরা একটি ফাংশন লিখি তবে সেটির নাম আমরা দিতে পারি "বৃহত্তম" বা "বড়_সংখ্যা" । 26 | 27 | ### প্যারামিটার 28 | এখানে ফাংশনটি কাজ করার জন্য প্রয়োজনীয় ডাটা আমরা দেব। যেমন দেখাও() ফাংশনে আমরা কোন ডাটা দিলে প্রোগ্রামটি সেই ডাটাকে আউপুটে দেখায়। যেমন: দেখাও("হ্যালো"); 29 | আবার বৃহত্তম নির্ণয়ের জন্য ফাংশন লিখলে কোন কোন সংখ্যার মধ্যে বৃহত্তম সংখ্যা বের করতে হবে সেটি বলে দিতে হবে। প্যারামিটারের মাধ্যমে আমরা সেসব ডাটা ওই ফাংশনের কাছ পাঠাতে পারি। আবার কোনো কিছু পাঠাতে না চাইলে সেটি খালিও রাখতে পারি। 30 | 31 | ### ফাংশন বডি 32 | ফাংশনটি কীভাবে কী কাজ করবে সেটি বডিতে বলে দিতে হবে। মানে কোড লিখতে হবে আর কি। 33 | 34 | ### রিটার্ন ভ্যালু 35 | ফাংশনটি কাজ শেষ করে, তাকে যে জায়গা থেকে কল করা হয়েছে সে জায়গায় ফিরে যায়। ফেরার সময় আমরা কোনো মান পাঠাতে পারি। যেমন "বৃহত্তম()" ফাংশনে আমরা চাই সে বৃহত্তম সংখ্যা বের করবে। তো বৃহত্তম সংখ্যাটি বের করে তো সেটি ফেরত পাঠাবার ব্যাবস্থা রাখতে হবে? বৃহত্তম সংখ্যাটির মান যদি "ক" হয়, তবে আমরা রিটার্ন ক; স্টেটমেন্ট দিয়ে সেটির মান ফেরত পাঠাব। 36 | 37 | ``` 38 | ফাংশন বয়স(){ // ফাংশনের নাম বয়স এবং ফাংশন বডিতে কোন কোড নেই 39 | রিটার্ন ২০; // ফাংশনকে কল করলে সে রিটার্ন হিসেবে ২০ পাবে। 40 | } 41 | 42 | দেখাও( বয়স() ); // আউটপুট কনসোলে ২০ প্রিন্ট হবে 43 | ``` 44 | 45 | ## বৃহত্তম সংখ্যা নির্নয় 46 | ``` 47 | /* 48 | * বৃহত্তম সংখ্যা নির্নয়ের ফাংশন 49 | */ 50 | 51 | ফাংশন বৃহত্তম(ক, খ){ // প্যারামিটার ক এবং খ 52 | যদি(ক থেকে খ বড় হয়){ 53 | রিটার্ন খ; 54 | }নাহলে{ 55 | রিটার্ন ক; 56 | } 57 | } 58 | 59 | ধরি বড়_নাম্বার = বৃহত্তম(১২,৪৫); // ক=১২, খ = ৪৫ 60 | দেখাও("বৃহত্তম নাস্বার টি হল:" + বড়_নাম্বার ); 61 | ``` 62 | 63 | ### রেফারেন্স 64 | * http://c.howtocode.com.bd/functions.html 65 | * http://cpbook.subeen.com/2011/09/function-programming-book.html 66 | -------------------------------------------------------------------------------- /docs/api_reference.md: -------------------------------------------------------------------------------- 1 | # এপিআই রেফারেন্স 2 | 3 | ## এ্যারে 4 | এ্যারে নিয়ে কাজ করতে অনেক ধরনের জরুরী ফাংশনালিটি প্রয়োজন তাদের মধ্যে কিছু বেটা ভার্সনে ইম্পলিমেন্ট করা হয়েছে। 5 | 6 | কি, পুশ, পপ, ইন্ডেক্স, সাইজ 7 | ### এ্যারে সাইজ 8 | এ্যারে তে আমরা একই টাইপের একাধিক ভ্যালু রাখতে পারি , এভাবে [১,২,৩,৪,৫] অথবা ['ক','খ','গ','ঘ'] , এ্যারের কিছু প্রোপার্টি রয়েছে যেমন আমরা যদি চাই এ্যারে টির সাইজ কত তাহলে [১,২,৩,৪,৫].সাইজ() দিয়ে বের করতে পারি । 9 | 10 | ### পুশ 11 | আমরা পুশ বলতে কি বুঝি? খাটি বাংলায় ধাক্কা মারা। তাই না? চলো দেখি এই পুশ দিয়ে আমরা কি করতে পারি। 12 | ধরি একটা অ্যারে আছে যার মান [১, ২, ৩, ৪] 13 | আমরা এখন এর মধ্যে একটা মান পুশ করব। ধরি মানটা ৫। 14 | তাহলে আমাদের কোডটা হবেঃ 15 | ``` 16 | [১, ২, ৩, ৪].পুশ(৫); 17 | 18 | ``` 19 | এই ছোট কোডটুকুর আউটপুট আসবে [১, ২, ৩, ৪, ৫]। তারমানে আমরা আমাদের অ্যারেতে সব শেষে সংখ্যাটি পুশ করলাম। 20 | 21 | ### পপ 22 | তেমনি আমরা এ্যারে এর একটি আইটেম মুছে দিতে চাইলে [১,২,৩,৪,৬].পপ() এভাবে শেষের আইটেম টি (৬) মুছে যাবে । 23 | 24 | ### ইন্ডেক্স 25 | এ্যারে কোন আইটেম সার্চ এর জন্যে আমরা ইন্ডেক্স দিয়ে সার্চ করতে পারি । 26 | 27 | ``` 28 | 29 | ধরি ফল = ['আম','কলা','আঙ্গুর','লিচু','কাঠাল']; 30 | দেখাও("আমরা এ্যরেটির সাইজ দেখিঃ "); 31 | দেখাও(ফল.সাইজ()+"টি ফল আছে"); 32 | দেখাও("গরমের দিন কাঁঠাল খাওয়া যাবে না আমরা কাঁঠাল টিকে ডিলিট করে দেই"); 33 | ফল.পপ(); 34 | দেখাও("এখন আমাদের ফল আছেঃ "+ফল); 35 | দেখাও("আমরা আরো একটি ফল যোগ করি "); 36 | ফল.পুশ('এপেল'); 37 | দেখাও(ফল); 38 | দেখাও("আমাদের পছন্দের ফলের তালিকার প্রথম ফলটিঃ "+ফল[০]); 39 | //বিঃদ্রঃ আমাদের এ্যারে ইনডেক্স শুরু হয় শুন্য থেকে তাই আমরা তালিকার প্রথম ফলটি সার্চ করার জন্যে ইন্ডেক্স শুন্য ব্যবহার করেছি । 40 | 41 | ``` 42 | 43 | ## লেখা / স্ট্রিং 44 | 45 | লেখা বা স্ট্রিং হচ্ছে বর্ণের সমস্টি যেমন আমাদের নাম একটি স্ট্রিং "আলম" , পুরো নাম "হিরো আলম" এখানে দুটি শব্দ এটি ও একটি স্ট্রিং । স্ট্রিং অপারেশনের জন্যে কিছু প্রোপার্টি রয়েছে যেমনঃ 46 | ### সাইজ() 47 | আমরা চাইলে স্ট্রিং এর সাইজ বের করতে পারি,কতটি বর্ণ আছে একটি স্ট্রিং এ সেটি বের করার জন্যে "আলম".সাইজ() এভাবে করতে পারি। 48 | 49 | ### ইন্ডেক্স() 50 | স্ট্রিং এর কোন পজিশন এর বর্ণ বের করতে ইন্ডেক্স দিয়ে সার্চ করে বের করতে পারি । 51 | 52 | ### কপি() 53 | স্ট্রিং কপি আরো একটা মজার জিনিস রয়েছে আমরা একটি স্ট্রিং থেকে পুরো ভ্যালুটি বা ইন্ডেক্স দিয়ে কিছু ভ্যালু অন্য স্ট্রিং এ কপি করতে পারি । 54 | 55 | ``` 56 | 57 | ধরি ক = "হিরো আলম"; 58 | ধরি খ = ক.কপি(); 59 | ধরি গ = ক.কপি(০,২); 60 | দেখাও("ক = "+ক + " খ = "+খ +" গ="+গ); 61 | দেখাও("ক এর প্রথম অক্ষর = "+ক[০]); 62 | 63 | ``` 64 | ## নাম্বার বা সংখ্যা নিয়ে কাজ করা 65 | ``` 66 | /* 67 | * _নাম্বার() 68 | * লেখা বা স্ট্রিং থেকে নাম্বার এ রুপান্তর 69 | */ 70 | 71 | ধরি ন = _নাম্বার("২৩৪") 72 | দেখাও( _টাইপ( ন ) ); // নাম্বার 73 | 74 | // দশমিক সংখ্যা থেকে পূর্ণসংখ্যা রুপান্তর 75 | দেখাও( _পূর্ণসংখ্যা(১২.৫৪৬৭৫৩) ); // ১২ 76 | দেখাও( _পূর্ণসংখ্যা("৫.৯") ); // ৫ 77 | ``` 78 | 79 | ## গনিত 80 | পতাকায় রয়েছে গনিতের বহু ব্যবহৃত বর্গমূল ফাংশন এবং আমাদের জানা পাই( π ) এর মান । 81 | 82 | ### বর্গমূল 83 | বর্গমূল ফাংশন দিয়ে স্কয়ার রুটের মান বের করা যায় যেমন: _বর্গমূল(৮১) এর মান হবে ৯ 84 | 85 | ``` 86 | দেখাও(_বর্গমূল(৮১)); // ৯ 87 | ``` 88 | ### পাই 89 | আমরা জানি পাই ( π ) এর মান ৩.১৪১৬... পতাকাতে_পাই লিখলে এই ভ্যালুটি পাওয়া যাবে। 90 | ``` 91 | দেখাও("বলতো বল্টু ৯ এর বর্গমূল কত ? "); 92 | দেখাও("লল পতাকায় দেখঃ "+_বর্গমূল(৯)); 93 | দেখাও("পাই এর সাথে গুন করলে কত হবে ? "); 94 | দেখাও("এটা কোন ব্যাপার ! " +_বর্গমূল(৯)*_পাই); 95 | ``` 96 | 97 | ## সময় 98 | 99 | পতাকাতে_সময়() ফাংশন দিয়ে বর্তমান সময় দেখা যাবে । যেমনঃ 100 | 101 | ``` 102 | দেখাও("আমি যখন এই কথাটা লিখতেছিলাম তখনকার সময়ঃ"+_সময়()); 103 | ``` 104 | 105 | ## অন্যান্য 106 | 107 | ### টাইপ() 108 | টাইপ একটি ফাংশন রয়েছে এর মাধ্যেমে আমরা আমাদের ভেরিয়েবলের টাইপ বা ডাটা টাইপ কি সেটা জানতে পারবো এটা কি সংখ্যা নাকি লিখা । 109 | 110 | ``` 111 | ধরি নাম = "রহিম"; 112 | দেখাও("নাম কি টাইপের ভ্যলু ? "+_টাইপ(নাম)); 113 | ``` 114 | 115 | ### লেখা থেকে নাম্বার 116 | 117 | ``` 118 | দেখাও(_টাইপ("১২")); // লেখা 119 | দেখাও(_টাইপ(_নাম্বার("১২"))); // নাম্বার 120 | 121 | ধরি ক = ইনপুট(); // ইনপুট নেয়ার জন্য । এবং এটি স্ট্রিং রিটার্ন করে 122 | ধরি খ = ইনপুট(); 123 | 124 | দেখাও( _নাম্বার(ক)+_নাম্বার(খ) ); 125 | ``` 126 | -------------------------------------------------------------------------------- /docs/loop.md: -------------------------------------------------------------------------------- 1 | # লুপ 2 | লুপ হচ্ছে এমন একটি কমান্ড যার সাহায্যে একটি কাজ অনেকবার করা যায়। একটি লেখা যদি আপনি কয়েকবার প্রিন্ট করতে চান তাহলে হয়তো আপনি নিচের মত একটা প্রোগ্রাম লিখে ফেলতে পারবেন । 3 | 4 | ``` 5 | // "প্রোগ্রামিং অনেক মজার" লেখাটি চার বার প্রিন্ট হবে। 6 | দেখাও("প্রোগ্রামিং অনেক মজার"); 7 | দেখাও("প্রোগ্রামিং অনেক মজার"); 8 | দেখাও("প্রোগ্রামিং অনেক মজার"); 9 | দেখাও("প্রোগ্রামিং অনেক মজার"); 10 | ``` 11 | 12 | উপরের প্রোগ্রামটিতে আপনি একই কোড ৪ বার লিখলেন, বিষয়টা কোন ব্যাপারই না। কিন্তু যখন আপনাকে বলা হবে ১০ লক্ষ বার প্রিন্ট করতে তখন হয়তো প্রোগ্রামিং বিষয় আপনার জন্য আর মজার থাকছে না। ঘাবড়াবার কিছুই নেই, এই সমস্যা সমাধানের জন্য প্রতিটি প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি মজার ফিচার রয়েছে যাকে আমারা লুপ বলি। 13 | 14 | ## লুপ এর সিন্ট্যাক্স 15 | ``` 16 | লুপ( কতবার_ঘুরবে? ){ 17 | // কোড ..... 18 | } 19 | ``` 20 | 21 | 22 | একটি লুপ ব্লকের (দ্বিতীয় বন্ধনীর মধ্যে) মধ্যে যে কোড গুলো লিখবেন সেগুলো কতবার রিপিট হবে সেটা আপনি বলে দিলেই সম্পুর্ন কোড টি ততবার ঘুরবে। এবার দেখি লুপ দিয়ে কিভাবে একটি লেখা ৪ বার প্রিন্ট করা যায়। 23 | 24 | ``` 25 | লুপ( ৪ বার ){ 26 | দেখাও("প্রোগ্রামিং অনেক মজার"); // এই লাইন টি ৪ বার রান হবে, অর্থাৎ ৪ বার প্রিন্ট করবে। 27 | } 28 | ``` 29 | 30 | ছোটবেলায় আমাদের টিচাররা প্রায়ই একটা বাড়ির কাজ দিত : "হাতের লেখা সুন্দর করতে হবে" এটা ১০০ বার লিখে আনতে হবে। এখন আমি যদি এটার জন্য একটা প্রোগ্রাম বানাতে চাই তাহলে সেটা হবে এমন: 31 | 32 | ``` 33 | //হাতের লেখা সুন্দর করার প্রোগ্রাম 34 | লুপ( ১০০ বার ){ 35 | দেখাও("হাতের লেখা সুন্দর করতে হবে"); 36 | } 37 | ``` 38 | 39 | ## লুপ এর ইন্ডেক্স 40 | প্রোগ্রামিং এ ইন্ডেক্স বলতে পজিশন বা লোকেশনকে নির্দেশ করে। লুপ এ ইন্ডেক্স বলতে বুঝি যে এই মূহূর্তে কোড ব্লক টি কততম বার এক্সিকিউট হতে যাচ্ছে। পতাকায় লুপ ব্লকের মাঝে _ইন্ডেক্স নামে একটি রিড-অনলি ভ্যারিয়েবল আছে যা লুপের বর্তমান পজিশন নির্দেশ করে। 41 | 42 | নোট: _ইন্ডেক্স এর মান ০ থেকে শুরু হয় 43 | 44 | ``` 45 | // ০ থেকে ৯ পর্যন্ত প্রিন্ট করার প্রোগ্রাম 46 | লুপ(১০ বার){ 47 | দেখাও(_ইন্ডেক্স); 48 | } 49 | ``` 50 | 51 | ## ইনফিনিট লুপ 52 | কতবার লুপটি ঘুরবে তা উল্ল্যেখ না থাকলে এটি ইনফিনিট বা অসীম লুপ হিসেবে ধরা হবে, কোড ব্লকটি আজীবন ঘুরতে থাকবে। অন্যান্য ল্যাঙ্গুয়েজ এ ইনফিনিট লুপ অনেকটা এমন: while(true){ } 53 | 54 | সতর্কতা: 55 | 56 | ইনফিনিট লুপ না জেনে ব্যবহার না করাই উত্তম । ইনফিনিট লুপ ব্যবহারের ক্ষেত্রে অবশ্যই সেখান থেকে বের হওয়ার ব্যবস্থা রাখতে হবে। 57 | 58 | ## থামো বা ব্রেক স্টেটমেন্ট 59 | একটি লুপের মাঝে যখনই "থামো;" ব্যবহার করবেন তখনই লুপটি বন্ধ হয়ে যাবে, অর্থাৎ আপনি লুপ থেকে বের হয়ে যাবেন। 60 | 61 | ``` 62 | // ইনফিনিট লুপ 63 | লুপ(){ 64 | ধরি বয়স = _ইন্ডেক্স + ১; 65 | যদি(বয়স ৮০ হয়){ 66 | দেখাও("এ দুনিয়া থেকে বিদায় নিলাম"); 67 | থামো ; // লুপ বন্ধ করা 68 | }নাহলে{ 69 | দেখাও("কফি খাই কোড করি"); 70 | } 71 | } 72 | দেখাও("লুপ শেষ"); 73 | 74 | /* আউটপুট: 75 | ৭৯ বার "কফি খাই কোড করি" প্রিন্ট হবে 76 | তারপর "এ দুনিয়া থেকে বিদায় নিলাম" প্রিন্ট হবে 77 | তারপর "লুপ শেষ" প্রিন্ট হবে 78 | */ 79 | ``` 80 | 81 | ## কন্টিনিউ স্টেটমেন্ট 82 | কন্টিনিউ স্টেটমেন্ট অনেকটা ব্রেক স্টেটমেন্ট এর মত । তবে এটি লুপ থামিয়ে দেয় না বরং একটি লুপকে পরবর্তী কোড রান করতে বাধা দেয় এবং পরবর্তী লুপ রান করে। সহজভাবে বলতে গেলে এটি অনেকটা SKIP বাটনের মত কাজ করে। কন্টিনিউ স্ট্যাটমেন্ট এ "চলবে" কিওয়্যার্ডটি ব্যবহার করা হবে। তবে পতাকার স্ট্যাবল রিলিজে এই কিওয়্যার্ডটি পরিবর্তন হতে পারে। 83 | 84 | ``` 85 | লুপ(১০ বার){ 86 | যদি(_ইন্ডেক্স % ২ == ০ ){ 87 | চলবে; // পরবর্তী লাইন গুলো রান হবে না, আরেকটি লুপ শুরু হবে। 88 | } 89 | দেখাও(_ইন্ডেক্স + ১); 90 | } 91 | 92 | // আউটপুট: ২,৪,৬,৮,১০ 93 | // ১ থেকে ১০ পর্যন্ত জোড় সংখ্যা গুলো প্রিন্ট হবে। 94 | 95 | ``` 96 | 97 | ## রেগুলার লুপ 98 | পতাকার শর্ট লুপে অনেক ধরনের কাজ সহজ ভাবে করা যাবে না। তাই শর্ট লুপের পাশাপাশি থাকছে একটি কমন লুপ যেটি সকল ল্যাঙ্গুয়েজে বিদ্যমান। স্ট্যাবল ভার্সনে এই লুপটি আরো সহজে উপস্থাপন করা হবে। 99 | 100 | ``` 101 | লুপ( এসাইনমেন্ট স্টেটমেন্ট; কন্ডিশন স্টেটমেন্ট; ইনক্রীমেন্ট বা ডিক্রীমেন্ট স্টেটমেন্ট) { 102 | // কোড 103 | } 104 | ``` 105 | 106 | এসাইনমেন্ট স্টেটমেন্ট: এটি লুপ শুরু হওয়ার আগে এক্সিকিউট হয়। এখানে ভ্যারিয়েবলের মান এসাইন করা হয়। 107 | 108 | কন্ডিশন স্টেটমেন্ট: এখানে লুপটি কতবার চলবে তার কন্ডিশন দিতে হবে। এই স্টেটমেন্ট প্রতিবার এক্সিকিউট হবে এবং যতক্ষন কন্ডিশন সত্য (TRUE) হবে ততক্ষন লুপটি চলবে। 109 | 110 | ইনক্রীমেন্ট বা ডিক্রীমেন্ট স্টেটমেন্ট: আপনার কোড ব্লকটি এক্সিকিট হবার পর প্রতিবার এটি এক্সিকিউট হবে। এখানে ভ্যারিয়েবলের মান বাড়াতে বা কমাতে পারবেন। 111 | 112 | ``` 113 | লুপ( ধরি ই = ১; ই<৪ ; ই++ ){ 114 | দেখাও(ই+" নং লুপ চলমান"); 115 | } 116 | 117 | /* আউটপুট: 118 | ১ নং লুপ চলমান 119 | ২ নং লুপ চলমান 120 | ৩ নং লুপ চলমান 121 | */ 122 | ``` 123 | -------------------------------------------------------------------------------- /docs/introduction.md: -------------------------------------------------------------------------------- 1 | # পতাকা 2 | নবীনদের জন্য একটি সহজ বাক্যস্বরূপ বাংলা প্রোগ্রামিং ল্যাঙ্গুয়েজ। পতাকার সিন্ট্যাক্সগুলো এমন ভাবে সাজানো হয়েছে যেন যে কেউ একটি পুরো স্টেটমেন্ট পড়লে মনে হবে এটি একটি সহজাত বাংলা বাক্য। অন্যকথায় বলা যায়, একটি সহজাত বাক্যকে প্রোগ্রামিং এর ভাষায় প্রকাশ করবে পতাকা। নবীনদের জন্য সহজ বাংলায় প্রোগ্রামিংয়ের ধারনা দেয়া ও প্রোগ্রামিংয়ের প্রতি প্রেরনা জাগিয়ে তোলাই পতাকার প্রাথমিক উদ্দেশ্য। কোড রিপোজিটরী এবং ছোটদের জন্য ভিজুয়াল গেম এর মাধ্যমে প্রোগ্রামিং শিক্ষায় আগ্রহী করে তুলতে পতাকার সূচনা করা হয়। 3 | 4 | ``` 5 | দেখাও("থাকবো নাকো বদ্ধ ঘরে দেখবো এবার জগতটাকে"); 6 | ``` 7 | 8 | ## কেন পতাকা? 9 | উন্নত দেশগুলোর মত শৈশব থেকেই প্রোগ্রামিং এর সাথে পরিচয় হওয়ার সৌভাগ্য আমাদের দেশের খুব কম মানুষেরই হয়। বেশিরভাগই বিশ্ববিদ্যালয়ে এসে প্রথমবারের মত প্রোগ্রামিং এর সাথে পরিচিত হন। অনেকে আবার ভয়ে এর ধারের কাছে ঘেষে না। বিশ্ববিদ্যালয়ে পড়াশোনার শেষের দিকে এসে তারা উপলব্ধি করে যে চাকুরী পেতে হলে একটুখানী প্রোগ্রামিং এর ধারনা থাকা আবশ্যক। 10 | 11 | একাদশ-দ্বাদশ শ্রেনীতে আইসিটি বইতে সি প্রোগ্রামিং দেয়া হলেও সেটা শুধু পাঠ্যপুস্তক আর পরীক্ষার খাতায় সীমাবদ্ধ। কোড মুখস্ত করে পরীক্ষা দিয়ে হয়তো ভালো নাম্বার পাওয়া যায় কিন্তু প্রোগ্রামিং এর স্বাদ পাওয়া যায় না। ছাত্র-ছাত্রীরা যে বিষয় গুলো বোঝেনা সেগুলোকে অনেক ভয় পায় এবং সেগুলো পীড়াদায়ক মনে করে। কখনো আবার ভাল জ্ঞান না থাকায় অনেকেই প্রোগ্রামিংটাকে মজাদার করে তুলতে না পারায় এবং হাজারো সাবজেক্ট এর ভিড়ে প্রোগ্রামিং বোঝাটা আর হয়ে উঠে না। তাই একাদশ-দ্বাদশ শ্রেনীর অনেক শিক্ষার্থীদের জন্য প্রোগ্রামিং একটা অভিশাপের নাম। শুধু একাদশ-দ্বাদশ শ্রেনী নয় বিশ্ববিদ্যালয়েও অনেকের কাছেই প্রোগ্রামিং একটি আতংকের নাম, দেখা যায় পরীক্ষার রাতে পাশ করার জন্যে কোড মুখস্ত করে পরীক্ষা দেয়। 12 | 13 | প্রোগ্রামিং শিখতে এত ভয় কিসের? কিছু ফিল্ড স্টাডি করার পর আমি যে সমস্যাগুলো খুজে পাই: 14 | 15 | 1. কন্ডিশন, লুপ এবং এ্যারে’র মত ব্যাসিক প্রোগ্রামিং সিন্ট্যাক্স গুলো কিভাবে কাজ করে তা বুঝতে খুব অাসুবিধে হয় । একটা বুঝলেও পরেরটা দিলে মাথায় গোল পাকিয়ে যায়। ফলে নিজের চিন্তা গুলোকে প্রোগ্রামিং এ রুপ দিতে ব্যার্থ হচ্ছে সাথে প্রোগ্রামিং এর প্রতি আগ্রহও হারাচ্ছে। 16 | 2. কোড ভিজুয়াইলজ করতে পারে না। কোন লাইনটা কখন কেন রান হচ্ছে এবং তার আউটপুট কি আসছে তার একটি সমন্বিত ভিউ তাদের মাথায় কাজ করে না। 17 | 3. বুঝতে অনেক সমস্যা থাকায় কিংবা কালো স্ক্রিনের আউটপুটে কোন মজা না থাকায় প্রোগ্রামিং নিয়ে বসে থাকার আগ্রহ থাকে না। 18 | 4. রিসোর্স এর অভাব। কি শিখবো, কিভাবে শিখবো, কোনটা আগে শিখবো কোন গাইডলাইন পায় না। উদাহরন: আমি লুপ দিয়ে ১ থেকে ১০ পর্যন্ত প্রিন্ট করা শিখলাম, তারপর এটা দিয়ে আর কি করা যেতে পারে? কোন ধরনের সমস্যা সমাধান করা যেতে। আবার শুরুতেই কোন কঠিন কোন সমস্যা সমাধান করতে গেলে হতাশ হয়ে যায়। 19 | 20 | এই সব সমস্যাগুলোর সমাধান ও নবীনদের প্রোগ্রামিং এর প্রতি অনিহা দূর করার উদ্দেশ্য নিয়েই পতাকার পথ চলা শুরু। 21 | 22 | ## পতাকার ফিচার 23 | ### বাংলায় প্রোগ্রামিং 24 | পতাকা কোডের প্রতিটি লাইন হবে সম্পূর্ন বাংলায়, মোটামুটি দৈনন্দিন ব্যবহৃত একটি বাক্যের মত। স্বভাবতই আমরা ইংরেজী বা অন্যান্য ভাষার চাইতে তুলনামূলক বাংলায় ভালভাবে উপলব্ধি করতে পারি এবং মনোভাব প্রকাশ করতে পারি। তাই বাংলায় প্রোগ্রামিং শেখাটা নবীনদের জন্য সহায়ক হবে। আমি মনে করি, পতাকা একটি সহজ প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে বিবেচনা না করে বরং সহজে প্রোগ্রামিং আয়ত্ত করার একটি মাধ্যম হিসেবে বিবেচনা করা উচিত। 25 | 26 | ### কোড এডিটর 27 | কোড লিখার জন্য থাকছে কোড হাইলাইটিং সহ একটি চমৎকার কোড এডিটর। আপনার চিন্তা চেতনাকে প্রোগ্রামিং রুপ দেয়া এবং সেটাকে বাংলায় লিখার জন্যে পতাকায় যে কোন ইউনিকোড টুল (অভ্র / ইউনিবিজয়) ব্যবহার করতে পারবেন। অভ্র / বিজয় পিসিতে ইন্সটল করা না থাকলেও সমস্যা নেই, এডিটর এ বিল্ট-ইন ফোনেটিক বাংলা (অভ্র) লেখার সুবিধা রয়েছে। তাছাড়া এডিটরের ডানে থাকা কিওয়্যার্ড গুলো ক্লিক করলেই তা ইনডেন্টেশন সহ অটে-টাইপ হয়ে যাবে, ফলে সিন্টেক্স ভুলে যাওয়ার চিন্তা নেই। রয়েছে সুন্দর ইরর রিপোর্টিং সিস্টেম, কোন লাইনে কেন ইরর হয়েছে তা বাংলায় বলে দেবে। তাছাড়াও থাকবে অটো কোড সাজেশন। 28 | 29 | ### ভিজুয়াল গেম (পতাকা প্লে) 30 | কোড লিখে খেলা যাবে প্রোগামিং গেম। শুরুতেই থাকবে একটি টিটোরিয়াল সিরিজ, যেখানে গেম এর মাধ্যমে প্রোগ্রামিং এর বেসিক কনসেপ্ট (ভেরিয়েবল, কন্ডিশন, লুপ, ফাংশন) গুলো সিকোয়েনশিয়ালি শিখানো হবে। আপনার কোড এর আউপুট আপনি গেম এর আউটপুট এ দেখতে পাবেন এবং কোথাও ভুল করলেও সেটা সেখানে দেখতে পারবেন। ফলে প্রোগ্রামিং শেখার ক্ষেত্রে আপনি তুলনামূলক বেশি সময় মনযোগ ধরে রাখতে পারবেন। গেমে এর লেভেলগুলো সাজানো থাকবে বিভিন্ন প্রোগ্রামিং প্রবলেম দিয়ে, যেগুলো সলভ করে প্রোগ্রামিং এর স্কিল ঝালাই করতে পারবেন। এবং এগুলোর ভিত্তিতে আপনাকে র‌্যাংকিং করা হবে। 31 | 32 | ### কোড রিপোজিটরী 33 | একটি পাবলিক কোড রিপোজিটরী থাকবে যেখানে বিভিন্ন প্রোগ্রামিং সমস্যার (যেমন: প্রাইম নাম্বার বের করা) সমাধান সাবমিট করতে পারবেন । বিভিন্ন ক্যাটাগরী অনুযায়ী আপনি অন্যদের সমাধান দেখতে পারবেন। আপনার কোড এর সাথে ওই কোডের পারফরমেন্স তুলনা করতে পারবেন। কোড শেয়ার করতে পারবেন, কোড এর এলগরিদম এবং ভুল-ত্রুটি নিয়েও আলোচনা করতে পারবেন। 34 | 35 | ## পতাকা কাদের জন্য নয় 36 | প্রোগামিং মানে কোন ল্যাঙ্গুয়েজ এর সিন্ট্যাক্স শেখা নয় বরং একটি সমস্যাকে কিভাবে, কি কি পদ্ধতিতে সমাধান করা যায় সেটা ধারনা করার ক্ষমতা। আপনি কোন ল্যাঙ্গুয়েজে কোড লিখে সমাধান করলেন বা কোন ভাষায় মেশিনকে বুঝাচ্ছেন নাকি ভিজুয়্যাল ডায়াগ্রাম একে সলভ করলেন এটা লক্ষনীয় বিষয় নয় বরং আপনি যেকোন ভাষায় রুপ দিতে পারার ক্ষমতাটাই মূখ্য বিষয়। বাংলা প্রোগ্রামিং অনেকের জন্য একটি সহজাত মাধ্যম হতে পারে। পতাকার উদ্দ্যেশ্য সিন্ট্যাক্স শিখানো নয় বরং প্রোগ্রামিং আসলে কি তার একটি প্রাথমিক স্বাদ দেয়া, যাতে আপনি অন্য যে কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ সহজেই বুঝতে পারেন। 37 | 38 | ইতিমধ্যেই যারা প্রোগ্রামিং এর বেসিক জিনিস গুলোতে দক্ষ তাদের জন্য পতাকা নয়। সি/সি++ কিংবা অন্য যেকোন প্রোগ্রামিং ল্যাঙ্গুয়েজ এর সিনট্যাক্স দেখে যারা ভয় পায় বা সর্বোপরি প্রোগ্রামিং বিষয়টা বুঝতে যাদের সমস্যা হয় এবং কিশোর কিশোরীদের প্রাথমিক প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবেই পতাকা ভূমিকা রাখতে পারে। আর হ্যা প্রোগ্রামিং এ আপনার পদার্পন যদি সদ্য শুরু হয়ে থাকে এবং আপনি সহজেই শিখতে চান তাহলে পতাকা আপনার জন্যে। 39 | 40 | ## স্ট্যাবল রিলিজে যা যা থাকছে 41 | 42 | * বাংলা প্রবলেম সলভিং প্লাটফর্ম 43 | * কোড সাজেশন 44 | * গেম বিল্ডার 45 | * কোডের মান এবং রান টাইম অনুযায়ী পদক 46 | * কোড এবং এলগরিদম নিয়ে আলোচনা এবং সোশাল শেয়ারিং সুবিধা 47 | * ..... আপনার ফিডব্যাক ..... 48 | 49 | 50 | ## বেটা ভার্সন 51 | পতাকার বর্তমান ভার্সনে সকল ফিচার সমূহ যুক্ত করা হয়নি। স্ট্যাবল রিলিজে নতুন অনেক কিছু যুক্ত হতে পারে আবার কিছু ফিচার বাদ পড়তে পারে। ফিল্ড টেস্ট এবং আপনাদের ফিডব্যাক এর ভিত্তি করেই স্ট্যাবল রিলিজের ফিচার সমূহ নির্ধারন করা হবে। 52 | --------------------------------------------------------------------------------