বিবৃতি বনাম বিবৃতি


431

আমি সি # এর সাথে জিজ্ঞাসা করছি, তবে আমি অন্যান্য ভাষাতে এটির একই ধারণা করি।

মতামত এবং বিবৃতি এবং পার্থক্য কি একটি ভাল সংজ্ঞা আছে?


4
আপনি যে উত্তরটি অস্পষ্ট বলে বেছে নিয়েছেন তা আমি পেয়েছি। একটি অভিব্যক্তিও কিছু করে - এটি একটি মানকে মূল্যায়ন করে। আমি একটি দ্ব্যর্থহীন উত্তর সরবরাহ করেছি।
শেলবি মুর তৃতীয়

4
@ শেলবিমুরআইআইআই - অ-দ্বিপাক্ষিক এবং ভুলও। গৃহীত উত্তরটি একটি অনানুষ্ঠানিকভাবে শব্দযুক্ত, তবে সেই শব্দটি বোঝা সহজ করে তোলে - এবং সর্বাধিক গুরুত্বপূর্ণভাবে, এটি যে অর্থটি প্রকাশ করে তা হ'ল সঠিক।
জাস্টিন মরগান

@ জাস্টিনমোরগান দুঃখের বিষয়, গৃহীত উত্তরের সংজ্ঞাগুলিও স্পষ্টতই ভুল (বেশিরভাগ সমসাময়িক ভাষায় সি-এর মতো ভাষাগুলির জন্য "" একটি মানকে "/" কোডের একটি লাইন ") মূল্যায়িত করে: মতামতকে অবমূল্যায়িত প্রসঙ্গে ব্যবহার করা যেতে পারে এবং বিবৃতিতে কিছুই নেই লাইন সঙ্গে করতে। এমনকি কিছু ব্যাখ্যা রয়েছে, সংক্ষিপ্ত উত্তরটি বিভ্রান্তিকর এবং বিভ্রান্তিকর।
ফ্র্যাঙ্কএইচবি

উত্তর:


520

অভিব্যক্তি: এমন কিছু যা মূল্যকে মূল্যায়ন করে। উদাহরণ: 1 + 2 / এক্স
বিবৃতি: কোডের একটি লাইন যা কিছু করে। উদাহরণ: গোটো 100

ফোরট্রানের মতো প্রথম দিকের সাধারণ-উদ্দেশ্যমূলক প্রোগ্রামিং ভাষায়, পার্থক্যটি স্ফটিক-স্পষ্ট ছিল। ফরটারনে, একটি বিবৃতি কার্যকর করার এক ইউনিট ছিল, যা আপনি করেছিলেন। একে "লাইন" না বলা একমাত্র কারণ হ'ল কখনও কখনও এটি একাধিক লাইন বিস্তৃত ছিল। নিজস্বভাবে একটি অভিব্যক্তি কিছুই করতে পারে না ... আপনাকে এটি একটি ভেরিয়েবলের জন্য নির্ধারণ করতে হয়েছিল।

1 + 2 / X

ফরটারনে একটি ত্রুটি, কারণ এটি কিছুই করে না। আপনাকে এই অভিব্যক্তিটি দিয়ে কিছু করতে হবে:

X = 1 + 2 / X

ফরটারনের ব্যাকরণ ছিল না কারণ আমরা জানি এটি আজ — আলগোল -60 সংজ্ঞার অংশ হিসাবে ব্যাকাস-নওর ফর্ম (বিএনএফ) সহ সেই ধারণাটি আবিষ্কার করা হয়েছিল। সেই মুহূর্তে শব্দার্থক পার্থক্য ("একটি মান" বনাম "কিছু করতে" থাকে) সিনট্যাক্সে অন্তর্ভুক্ত ছিল : এক ধরণের বাক্যটি একটি প্রকাশ ছিল এবং অন্যটি ছিল একটি বিবৃতি এবং পার্সার তাদের আলাদা করে বলতে পারত।

পরবর্তী ভাষার ডিজাইনাররা এই পার্থক্যটি অস্পষ্ট করেছেন: তারা সিনট্যাক্টিক এক্সপ্রেশনগুলিকে জিনিসগুলি করার অনুমতি দেয় এবং তারা সিন্থেটিক বক্তব্যগুলিকে মঞ্জুরি দেয় যার মান রয়েছে। প্রাচীনতম জনপ্রিয় ভাষার উদাহরণ যা এখনও বেঁচে আছে সি হ'ল সি এর ডিজাইনাররা বুঝতে পেরেছিল যে আপনাকে কোনও অভিব্যক্তি মূল্যায়ন করতে এবং ফলাফলটি ফেলে দিতে দেওয়া হলে কোনও ক্ষতি করা হয়নি। সি-তে, প্রতিটি সিন্ট্যাক্টিক এক্সপ্রেশনটি কেবলমাত্র একটি প্রান্তে সেমিকোলনটি টেক করে একটি বিবৃতিতে পরিণত করা যেতে পারে:

1 + 2 / x;

সম্পূর্ণরূপে বৈধ বিবৃতি যদিও সম্পূর্ণ কিছুই ঘটবে না। একইভাবে, সি-তে, একটি এক্সপ্রেশনটির পার্শ্ব-প্রতিক্রিয়া থাকতে পারে .এটি কিছু পরিবর্তন করতে পারে।

1 + 2 / callfunc(12);

কারণ callfuncকেবল দরকারী কিছু করতে পারে।

একবার আপনি কোনও অভিব্যক্তিকে বিবৃতি হিসাবে মঞ্জুরি দেওয়ার পরে আপনি অ্যাসাইনমেন্ট অপারেটরটিকে (=) এক্সপ্রেশন হিসাবে অনুমতি দিতে পারেন। এজন্য সি আপনাকে পছন্দ মতো কাজ করতে দেয়

callfunc(x = 2);

এটি এক্স = 2 (2 থেকে x এর মান নির্ধারণ করে) এক্সপ্রেশনটি মূল্যায়ন করে এবং তারপরে (2 )টিকে ফাংশনে পাস করে callfunc

অভিব্যক্তি এবং বিবৃতিগুলির এই অস্পষ্টতা সমস্ত সি-ডেরিভেটিভস (সি, সি ++, সি #, এবং জাভা) এ দেখা যায়, যার এখনও কিছু বিবৃতি রয়েছে (যেমন while) তবে যা প্রায় কোনও প্রকাশকে বিবৃতি হিসাবে ব্যবহার করতে দেয় (সি # কেবলমাত্র অ্যাসাইনমেন্টে, কল, ইনক্রিমেন্ট এবং হ্রাস অভিব্যক্তি বিবৃতি হিসাবে ব্যবহার করা যেতে পারে; স্কট উইসনিউস্কির উত্তর দেখুন )।

দুটি "সিনট্যাকটিক বিভাগ" (যা জিনিস বিবরণ এবং প্রকাশের সাজানোর প্রযুক্তিগত নাম) হ'ল প্রচেষ্টা অনুলিপি হতে পারে। উদাহরণস্বরূপ, সি এর দুটি শর্তসাপেক্ষ রয়েছে, বিবৃতি ফর্ম

if (E) S1; else S2;

এবং এক্সপ্রেশন ফর্ম

E ? E1 : E2

এবং কখনও কখনও লোকেরা সেই অনুলিপি চায় যা সেখানে নেই: উদাহরণস্বরূপ, স্ট্যান্ডার্ড সিতে, কেবলমাত্র একটি বিবৃতি একটি নতুন স্থানীয় ভেরিয়েবল ঘোষণা করতে পারে — তবে এই ক্ষমতাটি যথেষ্ট কার্যকর যে GNU সি সংকলক একটি GNU এক্সটেনশন সরবরাহ করে যা একটি ঘোষণার জন্য একটি এক্সপ্রেশনকে সক্ষম করে স্থানীয় পরিবর্তনশীল পাশাপাশি।

অন্যান্য ভাষার ডিজাইনাররা এই জাতীয় সদৃশ পছন্দ করেন নি এবং তারা তাড়াতাড়ি দেখেছিল যে যদি অভিব্যক্তিগুলির পাশাপাশি পার্শ্ব প্রতিক্রিয়াগুলির পাশাপাশি মানগুলিও থাকতে পারে তবে বিবৃতি এবং অভিব্যক্তির মধ্যে সিনট্যাক্টিক পার্থক্য এতটা কার্যকর নয় — তাই তারা এ থেকে মুক্তি পেয়েছে they । হাস্কেল, আইকন, লিস্প এবং এমএল হ'ল এমন ভাষা যা সিনট্যাকটিক স্টেটমেন্ট দেয় না — তাদের কেবল প্রকাশ রয়েছে। এমনকি শ্রেণিবদ্ধ কাঠামোযুক্ত লুপিং এবং শর্তসাপেক্ষ ফর্মগুলিকে এক্সপ্রেশন হিসাবে বিবেচনা করা হয় এবং তাদের মান রয়েছে - তবে খুব আকর্ষণীয় নয়।


9
যদি আমি এখানে আপনার ভুল ব্যাখ্যা করছি না, আপনি বলে মনে করছেন যে "(সেটফ (তৃতীয় ফু) 'হংস)" একটি বিবৃতি, কোনও বিবৃতি নয়, কারণ এটি লিস্প, যার "বিবৃতি নেই," এবং কারণ লিস্প সি এর চেয়ে এক দশকেরও বেশি বয়স্ক, এটি "[প্রকাশ এবং বক্তব্যগুলির মধ্যে] লাইনগুলি অস্পষ্ট করার জন্য প্রথম দিকের জনপ্রিয় ভাষা"। আমাকে এর বিশদ ব্যাখ্যা করতে পার?
সিজেএস

2
@ কার্ট সাম্পসন, আপনি কি আলাদা প্রশ্ন হিসাবে জিজ্ঞাসা করেছেন?
কেলি এস ফরাসি

5
যদি আমি ভুল না হলে, callfunc(x = 2);পাসের xকরতে callfuncনা 2। যদি xএকটি ভাসা হয়, callfunc(float)ডাকা হবে, না callfunc(int)। আর সি ++ যদি আপনি পাস x=yকরার func, এবং funcএকটি রেফারেন্স লাগে এবং পরিবর্তন, তবে পরিবর্তনটি xনা y
গ্যাব্রিয়েল

উপরের উত্তরে, এটি লেখা আছে যে "হাস্কেল, ... সমস্ত ভাষাগুলির সিন্থেটিক স্টেটমেন্ট নেই - তাদের কেবল প্রকাশ রয়েছে"। আমি কৌতূহল যে কেন whereহেস্কেল-এ ধারাটি একটি বিবৃতি হিসাবে নয়, একটি অভিব্যক্তি হিসাবে বিবেচিত হয়। learnyouahaskell.com/syntax-in-funitions#where
skgbanga

@ এসএসজিবাংগা আমি বিশ্বাস করি whereযে আসলে ফাংশন ঘোষণার একটি অংশ, প্রকাশ বা বিবৃতি নয়।
আকংকা

22
  • একটি অভিব্যক্তি হ'ল এমন কিছু যা মান দেয়: 2 + 2
  • একটি বিবৃতি প্রোগ্রাম কার্যকরকরণের অন্যতম "ব্লক"।

নোট করুন যে সি তে, "=" আসলে অপারেটর, যা দুটি কাজ করে:

  • ডান হাতের subexpression এর মান প্রদান করে।
  • ডান হাতের subexpression এর মানটি বাম হাতের ভেরিয়েবলটিতে অনুলিপি করে।

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

statement
    : labeled_statement
    | compound_statement
    | expression_statement
    | selection_statement
    | iteration_statement
    | jump_statement
    ;

expression_statement
    : ';'
    | expression ';'
    ;

http://www.lysator.liu.se/c/ANSI-C-grammar-y.html


2
একটি বিবৃতি কী তা সম্পর্কে ভুল যুক্তি। একটি ঘোষণামূলক প্রোগ্রাম এছাড়াও কার্যকর করতে পারে, কিন্তু একটি ঘোষণামূলক প্রোগ্রামের কোন বিবৃতি নেই। একটি বিবৃতি "পার্শ্ব প্রতিক্রিয়া" হয় এবং করে , অর্থাত্ আবশ্যক। cf. আমার উত্তর
শেলবি মুর তৃতীয়

15

একটি এক্সপ্রেশন এমন একটি জিনিস যা একটি মান ফেরত দেয়, যেখানে বিবৃতি দেয় না।

উদাহরন স্বরূপ:

1 + 2 * 4 * foo.bar()     //Expression
foo.voidFunc(1);          //Statement

দুজনের মধ্যে বড় চুক্তিটি হল আপনি এক সাথে অভিব্যক্তিগুলি শৃঙ্খলাবদ্ধ করতে পারেন, যেখানে বিবৃতি শৃঙ্খলিত করা যায় না।


6
নিশ্চিত বিবৃতি শৃঙ্খলাবদ্ধ হতে পারে। {stmt1; stmt2; stmt3; a একটি চেইন, এবং এটি নিজেই একটি (যৌগিক) বিবৃতি।
হিউ অ্যালেন

5
foo.voidFunc(1);শূন্য মান সহ একটি অভিব্যক্তি। whileএবং ifবিবৃতি হয়।
tzot

আমি জবানবন্দি না দেওয়ার বিষয়ে আগ্রহী "যদি (x> 1) ফিরে আসার মতো কিছু হবে;" একসাথে দুটি বক্তব্য শৃঙ্খলিত বিবেচনা করা হবে?
সাইমন তেউসি

1
@ সিমোনটিউসি আমি বিশ্বাস করি এটি returnএকটি সাবস্টেটমেন্ট হিসাবে বিবেচিত হয়।
রাস্তাজেদি

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

9

আপনি এটি উইকিপিডিয়ায় খুঁজে পেতে পারেন তবে এক্সপ্রেশনগুলির কিছু মূল্যকে মূল্যায়ন করা হয়, অন্যদিকে বিবৃতিগুলির মূল্যায়নের কোনও মূল্য নেই।

সুতরাং, মতামত বিবৃতিতে ব্যবহার করা যেতে পারে, তবে অন্যভাবে নয়।

মনে রাখবেন যে কয়েকটি ভাষা (যেমন লিস্প, এবং আমি বিশ্বাস করি রুবি, এবং আরও অনেকগুলি) বিবৃতি বনাম প্রকাশের মধ্যে পার্থক্য করে না ... এই জাতীয় ভাষায়, সমস্ত কিছুই একটি অভিব্যক্তি এবং অন্যান্য অভিব্যক্তি দিয়ে শৃঙ্খলিত হতে পারে।


8

বিবৃতি বনাম বিবৃতিগুলির সামঞ্জস্যতা (চেইনিবিলিটি) -এর গুরুত্বপূর্ণ পার্থক্যের ব্যাখ্যার জন্য, আমার প্রিয় উল্লেখটি জন ব্যাকাসের টুরিং অ্যাওয়ার্ড পেপার, ভ্যান নিউম্যান স্টাইল থেকে প্রোগ্রামিং মুক্ত করা যায়?

অপরিহার্য ভাষাগুলি (ফোর্টরান, সি, জাভা, ...) প্রোগ্রামিং কাঠামোগত করার জন্য বিবৃতিগুলিকে জোর দেয় এবং চিন্তা-ভাবনার একধরণের মত প্রকাশ করে। ক্রিয়ামূলক ভাষাগুলি এক্সপ্রেশনকে জোর দেয়। বিবৃতি সম্পূর্ণরূপে নির্মূল করা যায় না তার চেয়ে খাঁটি কার্যকরী ভাষাগুলির মধ্যে এরকম শক্তিশালী এক্সপ্রেশন থাকে।


5

এক্সপ্রেশনগুলি একটি মান পাওয়ার জন্য মূল্যায়ন করা যেতে পারে, যেখানে বিবৃতিগুলি কোনও মান দেয় না (তারা টাইপ বাতিল করে দেয় )।

ফাংশন কল এক্সপ্রেশন এছাড়াও অবশ্যই বিবৃতি হিসাবে বিবেচনা করা যেতে পারে, কিন্তু যদি না এক্সিকিউশন পরিবেশের প্রত্যাবর্তিত মান ধরে রাখার জন্য একটি বিশেষ অন্তর্নির্মিত চলক না থাকে, এটি পুনরুদ্ধারের কোনও উপায় নেই।

বক্তব্য-ভিত্তিক ভাষাগুলির সমস্ত প্রক্রিয়া বিবৃতিগুলির তালিকা হওয়া প্রয়োজন। এক্সপ্রেশন-ওরিয়েন্টেড ভাষাগুলি, যা সম্ভবত সমস্ত কার্যকরী ভাষা হ'ল এক্সপ্রেশনগুলির তালিকা বা এলআইএসপি-র ক্ষেত্রে, একটি দীর্ঘ এস-এক্সপ্রেশন যা অভিব্যক্তির একটি তালিকা উপস্থাপন করে।

যদিও উভয় প্রকারই রচনা করা যায়, যতক্ষণ না টাইপগুলি মেলে ততক্ষণ বেশিরভাগ প্রকাশগুলি নির্বিচারে রচনা করা যায়। প্রতিটি বিবৃতিতে অন্য বিবৃতি রচনা করার নিজস্ব পদ্ধতি রয়েছে, যদি তারা এগুলি করতে পারে তবে। অগ্রণী এবং যদি বিবৃতিগুলির মধ্যে একটি একক স্টেটমেন্টের প্রয়োজন হয় বা সমস্ত অধীনস্থ বিবৃতিগুলি একের পর এক স্টেটমেন্ট ব্লকে চলে যায়, যদি না সাবস্টেটমেন্টগুলি তার নিজস্ব সাবস্টেটমেন্টগুলির অনুমতি দেয়।

বিবৃতিতে প্রকাশগুলিও অন্তর্ভুক্ত থাকতে পারে, যেখানে কোনও অভিব্যক্তি সত্যই কোনও বিবৃতি অন্তর্ভুক্ত করে না। যদিও একটি ব্যতিক্রম ল্যাম্বডা এক্সপ্রেশন হবে যা কোনও ফাংশনকে উপস্থাপন করে এবং এতে ফাংশনটি আইক্লিট করতে পারে এমন কিছু অন্তর্ভুক্ত করতে পারে যদি না ভাষা কেবল পাইথনের একক-এক্সপ্রেশন ল্যাম্বডাসের মতো সীমিত ল্যাম্বডাসের অনুমতি দেয়।

একটি এক্সপ্রেশন-ভিত্তিক ভাষায়, আপনার সমস্ত প্রয়োজন একটি ফাংশনটির জন্য একক অভিব্যক্তি, যেহেতু সমস্ত নিয়ন্ত্রণ কাঠামো একটি মান দেয় (তাদের অনেকগুলি শূন্যস্থান ফেরত দেয়)। ফাংশনটিতে সর্বশেষ-মূল্যায়ন করা এক্সপ্রেশনটি রিটার্নের মান হওয়ায় কোনও রিটার্নের বিবৃতি দেওয়ার দরকার নেই।


একটি বিবৃতি টাইপ নীচের প্রকার। Voidনীচের ধরণের নয়। আমার উত্তর দেখুন ।
শেলবি মুর তৃতীয়

1
নয় নাল টাইপ নীচে প্রকার (একক মান null)? ইউনিট প্রকারেরvoid মতো আর হবে না (তবে এর একক মানটি অ্যাক্সেসযোগ্য)?
মার্ক সিডেড

যদি voidকোনও ফাংশনের রিটার্ন টাইপ হয় যা কখনই ফিরে আসে না (উদাঃ একটি throwত্রুটিযুক্ত ফাংশন ) তবে এটি নীচের প্রকার । তা না হলে voidহয় ইউনিট টাইপ । আপনি সঠিক যে একটি বিবৃতি যে পরিবর্তন করতে পারে না, ইউনিট টাইপ আছে। তবে একটি বিবৃতি যা ডাইভারেজ করতে পারে তা হ'ল নীচের প্রকার। হ্যালটিং উপপাদনের কারণে আমরা সাধারণত প্রমাণ করতে পারি না যে কোনও ফাংশন ডাইভার্জ করে না, তাই আমি মনে করি ইউনিটটি ফিকশন। নীচের ধরণের কোনও মান থাকতে পারে না, সুতরাং এর একক মান থাকতে পারে না null
শেলবি মুর তৃতীয়

1
আমি তিন বছর আগে যা বলেছিলাম তা সম্পর্কে, আমি এখনও জানি না যে আমি এখনও বিবৃতিটিকে শূন্য প্রকারের বা কোনও প্রকারের মতো মনে করি কিনা । বিবৃতি-ভিত্তিক ভাষাগুলিতে যার সাথে আমি পরিচিত, কেবলমাত্র মান এবং যে কোনও কিছু সঞ্চয় করে বা প্রত্যাবর্তন করে (যেমন, এক্সপ্রেশন, ভেরিয়েবল, সদস্য এবং ফাংশন) এর ধরণ থাকতে পারে। আমি সাধারণত নীচের ধরণেরটি খালি সেট হিসাবে মনে করি (কোনও মান নেই) এবং তাই যা কিছু অনটোলজিকাল অস্তিত্ব নেই এই ধরণের থাকবে। একটি nullমান হ'ল একটি ছদ্মবেশ যা বোঝায় যে একটি রেফারেন্স এমন কোনও কিছুকে বোঝায় যা বিদ্যমান নেই।
মার্ক সিডেড

1
চিহ্নিত করুন আমি আপনার প্রতিক্রিয়ার যৌক্তিকতা প্রশংসা। আপনি মূলত এই শব্দগুলি আমার মুখের বাইরে নিয়ে এসেছিলেন এবং আমি আশা করি এটি পরিষ্কার হয়ে গেছে যে আমি আপনাকে স্বীকার করেছিলাম যে আপনি ইউনিট পয়েন্ট বাড়াতে সঠিক ছিলেন। আমি মনে করি আমরা একমত। আমি এটি উল্লেখ করে বিরক্ত করতে যাচ্ছি না, তবে মনে হয় এখানকার কিছু লোক মনে করে যে আমি নেতিবাচক হয়েছি। আমি কেবল সত্যবাদী হওয়ার চেষ্টা করছি।
শেলবি মুর III

4

সহজভাবে: একটি অভিব্যক্তি একটি মানকে মূল্যায়ন করে, একটি বিবৃতি দেয় না।


সুতরাং একটি বিবৃতি কি করে? কিছু নেই?
শেলবি মুর III

1
এটি কিছু করতে পারে তবে এটি কোনও কিছুর সাথে মূল্যায়ন করে না। অর্থাৎ, আপনি এর ফলাফলটি একটি ভেরিয়েবলের জন্য বরাদ্দ করতে পারবেন না, যেখানে আপনি একটি এক্সপ্রেশন দিয়ে করতে পারেন।
ম্যাথু শিংকেল

এবং তার জন্য একটি বিবৃতিতে অবশ্যই পার্শ্ব প্রতিক্রিয়া থাকতে হবে, যেহেতু আমার ভারী নিচে ভোট দেওয়া উত্তরগুলি জানিয়েছে। একটি বিবৃতি সম্ভবত অন্য কোন ইউটিলিটি থাকতে পারে? এমনকি যদি কোনও এনও-ওপিকে একটি বিবৃতি হিসাবে বিবেচনা করা হত (এটি ব্যাকরণে কেবল "বিবৃতি" তবে শব্দার্থক স্তরে নয় কারণ এটি বিশ্লেষণের পরে মুছে ফেলা হয় এবং শব্দার্থ যা আমরা এখানে আলোচনা করছি), এটি ব্যাখ্যা করবে না যে হেক একটি বিবৃতি সাধারণ ইউটিলিটি হয়।
শেলবি মুর III

1
@ শেলবিমোরআইআইআই বিবৃতিতে কিছু করার বা পার্শ্ব প্রতিক্রিয়া হওয়ার দরকার নেই। যেমন, {}একটি বিবৃতি। শব্দটিকে ভীতিজনক উক্তিতে রাখলে তা পরিবর্তন হয় না। বিবৃতি শব্দার্থবিজ্ঞান সহ সিনট্যাক্টিক নির্মাণ। "শব্দার্থক স্তর" বলে কোনও জিনিস নেই - আপনি সম্ভবত মৃত্যুদন্ডের কথা উল্লেখ করছেন । আপনি বলছেন আপনি নির্ভুল হওয়ার চেষ্টা করছেন তবে আপনি এতে ব্যর্থ হয়েছেন। "ডাউন ভোটারদের অজ্ঞতা" সম্পর্কে আপনার অভিযোগ খাঁটি বিজ্ঞাপন হোমনেম; অবতীর্ণদের মানসিক অবস্থা সম্পর্কে আপনার কাছে কোনও তথ্য নেই।
জিম বাল্টার

হ্যাঁ, বৌদ্ধিকভাবে অসাধু ব্যতীত সবাই ভুল। {}সি # ভাষা বর্ণনায় একটি বিবৃতি হিসাবে সংজ্ঞায়িত করা হয়।
জিম বাল্টার

4

এক্সপ্রেশন ভিত্তিক ভাষা সম্পর্কে কিছু জিনিস:


সর্বাধিক গুরুত্বপূর্ণ: সবকিছুই একটি মান দেয়


কোড ব্লক এবং এক্সপ্রেশনকে সীমিত করার জন্য কোঁকড়া বন্ধনী এবং ধনুর্বন্ধনীগুলির মধ্যে কোনও পার্থক্য নেই, যেহেতু সবকিছুই একটি অভিব্যক্তি। এটি যদিও লেজিক স্কোপিং প্রতিরোধ করে না: উদাহরণ হিসাবে উদাহরণস্বরূপ, এর সংজ্ঞাটি যে সংজ্ঞাযুক্ত এবং এর মধ্যে থাকা সমস্ত বিবৃতি রয়েছে তার জন্য একটি স্থানীয় পরিবর্তনশীল সংজ্ঞায়িত করা যেতে পারে।


একটি অভিব্যক্তি ভিত্তিক ভাষায়, সমস্ত কিছুই একটি মান দেয়। এটি প্রথমে কিছুটা অদ্ভুত হতে পারে - কী (FOR i = 1 TO 10 DO (print i))ফিরে আসে?

কয়েকটি সহজ উদাহরণ:

  • (1) আয় 1
  • (1 + 1) আয় 2
  • (1 == 1) আয় TRUE
  • (1 == 2) আয় FALSE
  • (IF 1 == 1 THEN 10 ELSE 5) আয় 10
  • (IF 1 == 2 THEN 10 ELSE 5) আয় 5

আরও কয়েকটি জটিল উদাহরণ:

  • কিছু জিনিস, যেমন কিছু ফাংশন কলগুলির সত্যিকার অর্থে ফিরে আসার অর্থবোধক মূল্য থাকে না (এমন জিনিসগুলি যা কেবলমাত্র পার্শ্ব প্রতিক্রিয়া তৈরি করে?) কল করা OpenADoor(), FlushTheToilet()বা TwiddleYourThumbs()কোনও ধরণের জাগতিক মান, যেমন ঠিক আছে, হয়ে গেছে বা সাফল্য ফিরে আসবে।
  • একাধিক আনলিংকড এক্সপ্রেশন যখন একটি বৃহত্তর অভিব্যক্তির মধ্যে মূল্যায়ন করা হয়, বৃহত্তর এক্সপ্রেশনটিতে মূল্যায়িত শেষ জিনিসটির মান বৃহত প্রকাশের মান হয়ে যায়। উদাহরণস্বরূপ (FOR i = 1 TO 10 DO (print i)), লুপটির মান "10" হয়, এটি (print i)প্রতিবার স্ট্রিং হিসাবে ফিরে আসার কারণে 10 বার অভিব্যক্তিটি মূল্যায়িত করে। রিটার্নের মাধ্যমে চূড়ান্ত সময় 10, আমাদের চূড়ান্ত উত্তর

ভাবভিত্তিক ভাষার ভিত্তিতে সবচেয়ে বেশি লাভ করার জন্য প্রায়শই এটির মানসিকতার সামান্য পরিবর্তন প্রয়োজন, যেহেতু সবকিছুই একটি অভিব্যক্তি হ'ল এটি অনেক কিছুই 'ইনলাইন' করা সম্ভব করে তোলে

দ্রুত উদাহরণ হিসাবে:

 FOR i = 1 to (IF MyString == "Hello, World!" THEN 10 ELSE 5) DO
 (
    LotsOfCode
 )

অ এক্সপ্রেশন-ভিত্তিকের জন্য একেবারে বৈধ প্রতিস্থাপন

IF MyString == "Hello, World!" THEN TempVar = 10 ELSE TempVar = 5 
FOR i = 1 TO TempVar DO
(    
    LotsOfCode  
)

কিছু ক্ষেত্রে, অভিব্যক্তি-ভিত্তিক কোডের অনুমতি দেওয়া লেআউটটি আমার কাছে অনেক বেশি প্রাকৃতিক বোধ করে

অবশ্যই, এটি পাগল হতে পারে। ম্যাক্সস্ক্রিপ্ট নামে অভিব্যক্তি-ভিত্তিক স্ক্রিপ্টিং ভাষায় শখের প্রকল্পের অংশ হিসাবে, আমি এই দৈত্য লাইনটি নিয়ে আসতে সক্ষম হয়েছি

IF FindSectionStart "rigidifiers" != 0 THEN FOR i = 1 TO (local rigidifier_array = (FOR i = (local NodeStart = FindsectionStart "rigidifiers" + 1) TO (FindSectionEnd(NodeStart) - 1) collect full_array[i])).count DO
(
    LotsOfCode
)

2

একটি বিবৃতি একটি অভিব্যক্তি একটি বিশেষ ক্ষেত্রে, voidটাইপ সঙ্গে একটি। ভাষাগুলির বিভিন্নভাবে আচরণের প্রবণতা প্রায়শই সমস্যার কারণ হয় এবং সেগুলি যথাযথভাবে সাধারণীকরণ করা ভাল।

উদাহরণস্বরূপ, সি # তে আমাদের Func<T1, T2, T3, TResult>জেনেরিক প্রতিনিধিদের খুব দরকারী ওভারলোডেড সেট রয়েছে। তবে আমাদের পাশাপাশি একটি উপযুক্ত Action<T1, T2, T3>সেটও রাখতে হবে এবং এই দুর্ভাগ্য বিভাজনকে মোকাবেলার জন্য সাধারণ উদ্দেশ্যে উচ্চতর অর্ডার প্রোগ্রামিংকে নিয়মিত নকল করতে হয়।

তুচ্ছ উদাহরণ - এমন একটি ফাংশন যা অন্য ফাংশনে ফোন করার আগে রেফারেন্সটি বাতিল হয় কিনা তা পরীক্ষা করে:

TResult IfNotNull<TValue, TResult>(TValue value, Func<TValue, TResult> func)
                  where TValue : class
{
    return (value == null) ? default(TValue) : func(value);
}

সংকলক TResultহওয়ার সম্ভাবনা নিয়ে কাজ করতে পারে void? হ্যাঁ. এটির জন্য যা করতে হবে তা হল রিটার্নটি অনুসরণ করা একটি মত প্রকাশের মতো void। ফলাফলটি default(void)ধরণের হবে void, এবং যে ফানক পাস হচ্ছে তা ফর্মের Func<TValue, void>হতে হবে (যা সমান হবে Action<TValue>)।

অন্যান্য বেশ কয়েকটি উত্তর ইঙ্গিত দেয় যে আপনি মত প্রকাশের সাথে আপনার মত বিবৃতি শৃঙ্খলা করতে পারবেন না, তবে আমি নিশ্চিত নই যে এই ধারণাটি কোথা থেকে এসেছে। আমরা ;বাইনারি ইনফিক্স অপারেটর হিসাবে বিবৃতি দেওয়ার পরে উপস্থিত হওয়ার কথা ভাবতে পারি , দুটি ধরণের এক্সপ্রেশন নিয়ে voidএবং এগুলিকে একক অভিব্যক্তিতে মিশ্রিত করি void


একটি বিবৃতি প্রকাশের একটি বিশেষ ক্ষেত্রে নয়। কিছু ভাষায় (যেমন সর্বাধিক সি উত্তরাধিকারী), এটি আসলে অন্যান্য চারপাশে।
আকংকা

2

বিবৃতি -> ক্রমানুসারে
অভিব্যক্তিগুলি অনুসরণ করার নির্দেশাবলী -> মূল্যায়ন যা কোনও মান দেয়

বিবৃতিগুলি মূলত পদক্ষেপগুলির মতো বা অ্যালগরিদমের নির্দেশাবলীর মতো, বিবৃতি কার্যকর করার ফলাফলটি নির্দেশ পয়েন্টারের বাস্তবায়ন (এসেম্বলারে তথাকথিত)

এক্সপ্রেশনগুলি বোঝায় না এবং প্রথম দর্শনে মৃত্যুদণ্ড কার্যকর করার আদেশ দেয় না, তাদের উদ্দেশ্য হ'ল মূল্য মূল্যায়ন এবং প্রত্যাবর্তন। অত্যাবশ্যক প্রোগ্রামিং ভাষায় একটি অভিব্যক্তির মূল্যায়নের একটি আদেশ থাকে তবে এটি কেবল আবশ্যক মডেলটির কারণে, তবে এটি তাদের সারাংশ নয়।

বিবৃতি উদাহরণ:

for
goto
return
if

(এঁরা সকলেই অন্য লাইনে মৃত্যুদণ্ড কার্যকর করার লাইন (বিবৃতি) এর অগ্রগতি বোঝায়)

এক্সপ্রেশন উদাহরণ:

2+2

(এটি কার্যকর করার ধারণা বোঝায় না, তবে মূল্যায়নের)


পার্শ্ব প্রতিক্রিয়া সম্পর্কে কি?
অস্টিন হেনলি

@ অস্টিনহেনলে এর জন্য কোনও প্রয়োজন নেই। আসলে, একটি অভিব্যক্তি অবশ্যই একটি পার্শ্ব প্রতিক্রিয়া হতে পারে।
আকাংকা

1

বিবৃতি ,

একটি বিবৃতি একটি প্রক্রিয়াভিত্তিক বিল্ডিং-ব্লক যা থেকে সমস্ত সি # প্রোগ্রাম নির্মিত হয়। একটি বিবৃতি একটি স্থানীয় পরিবর্তনশীল বা ধ্রুবক ঘোষণা করতে পারে, একটি পদ্ধতি কল করতে পারে, একটি বস্তু তৈরি করতে পারে, বা একটি ভেরিয়েবল, সম্পত্তি বা ক্ষেত্রের জন্য একটি মান নির্ধারণ করতে পারে।

কোঁকড়া ধনুর্বন্ধনী দ্বারা বেষ্টিত একটি সিরিজের বিবৃতি কোডের একটি ব্লক গঠন করে। একটি পদ্ধতি বডি কোড ব্লকের একটি উদাহরণ।

bool IsPositive(int number)
{
    if (number > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

সি # এর বিবৃতিতে প্রায়শই প্রকাশ থাকে। সি # তে একটি এক্সপ্রেশন হ'ল কোডের একটি খণ্ড যা আক্ষরিক মান, একটি সাধারণ নাম, বা একটি অপারেটর এবং এর অপারেশন সমন্বিত।

প্রকাশ ,

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

int i = 5;
string s = "Hello World";

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


আমি বরং if(number >= 0) return true; else return false;আরও ভাল লিখতে চাই bool? IsPositive(int number) { if(number > 0) return true; else if(number < 0) return false; else return null;}:)
মাহদি তাহসিলদারি

1

আমি statementশব্দের আনুষ্ঠানিক যুক্তি অর্থে এর অর্থ পছন্দ করি । এটি এমন একটি যা গণনাতে এক বা একাধিক ভেরিয়েবলের স্থিতি পরিবর্তন করে, তাদের মান (মান) সম্পর্কে সত্য বা মিথ্যা বিবৃতি সক্ষম করে।

আমার ধারণা, কম্পিউটারে বিশ্বে এবং বিজ্ঞানে সর্বদা বিভ্রান্তি থাকবে যখন নতুন পরিভাষা বা শব্দের প্রবর্তন করা হয়, বিদ্যমান শব্দগুলি 'পুনরুদ্ধার' হয় বা ব্যবহারকারীরা যা বর্ণনা করছেন তার জন্য বিদ্যমান, প্রতিষ্ঠিত বা 'যথাযথ' পরিভাষা সম্পর্কে অজ্ঞ


1

আমি এখানে উত্তরগুলির সাথে সত্যই সন্তুষ্ট নই। আমি সি ++ (আইএসও ২০০ 2008) এর ব্যাকরণের দিকে চেয়েছিলাম । তবে সম্ভবত যুক্তিবাদী ও প্রোগ্রামিংয়ের স্বার্থে উত্তর দুটি উপাদানকে আলাদা করতে যথেষ্ট হতে পারে (যদিও বাস্তবতা আরও জটিল দেখায়)।

একটি বিবৃতি শূন্য বা আরও প্রকাশ করে, তবে এটি অন্যান্য ভাষার ধারণাও হতে পারে। ব্যাকরণের জন্য এটি বর্ধিত ব্যাকাস নওর ফর্ম (বিবৃতিতে অংশ):

statement:
        labeled-statement
        expression-statement <-- can be zero or more expressions
        compound-statement
        selection-statement
        iteration-statement
        jump-statement
        declaration-statement
        try-block

আমরা অন্যান্য ধারণাটি দেখতে পারি যা সি ++ তে বিবৃতি হিসাবে বিবেচিত হয়।

  • এক্সপ্রেশন-স্টেটমেন্ট গুলি স্ব-ব্যাখ্যা করে থাকে (একটি বিবৃতি শূন্য বা আরও বেশি ভাব নিয়ে গঠিত হতে পারে , ব্যাকরণটি সাবধানে পড়ুন, এটি মুশকিল)
  • caseউদাহরণস্বরূপ একটি লেবেলযুক্ত বিবৃতি
  • নির্বাচন-বিবৃতি গুলি হয় if if/else,case
  • পুনরাবৃত্তির-বিবৃতি গুলি হয় while, do...while,for (...)
  • লাফ-বিবৃতি গুলি হয় break, continue, return(অভিব্যক্তি আসতে পারেন),goto
  • ঘোষণা-বিবৃতি হ'ল ঘোষণার সেট
  • ট্রাই-ব্লক হল try/catchব্লককে প্রতিনিধিত্বকারী স্টেটমেন্ট
  • এবং ব্যাকরণ আরও কিছু হতে পারে

এটি এক্সপ্রেশনটি প্রকাশের অংশটি দেখায়:

expression:
        assignment-expression
        expression "," assignment-expression
assignment-expression:
        conditional-expression
        logical-or-expression assignment-operator initializer-clause
        throw-expression
  • এক্সপ্রেশন বা প্রায়শই অ্যাসাইনমেন্ট থাকে
  • শর্তাধীন প্রকাশ (শব্দসমূহ বিভ্রান্তিকর) অপারেটরদের ব্যবহার বোঝায় ( +, -, *, /, &, |, &&, ||, ...)
  • থ্রো-এক্সপ্রেশন - আহ? throwদফা একটি অভিব্যক্তি অত্যন্ত

0

বিবৃতি ব্যাকরণগতভাবে সম্পূর্ণ বাক্য। এক্সপ্রেশন হয় না। উদাহরণ স্বরূপ

x = 5

"এক্স 5 হিসাবে পাওয়া যায়" হিসাবে পড়ে এটি একটি সম্পূর্ণ বাক্য। কোড

(x + 5)/9.0

"এক্স প্লাস 5 সমস্ত 9.0 দ্বারা বিভক্ত" পড়েছে এটি সম্পূর্ণ বাক্য নয়। বিবৃতি

while k < 10: 
    print k
    k += 1

একটি সম্পূর্ণ বাক্য। লক্ষ্য করুন যে লুপ শিরোনামটি নয়; "যখন কে <10," একটি অধস্তন ধারা।


whileএকটি অভিব্যক্তি কিছু ভাষা যেমন স্কালার is আপনি টাইপিংয়ের সাথে ব্যাকরণকে বিবাদ দিচ্ছেন। আমার উত্তর দেখুন ।
শেলবি মুর তৃতীয়

স্ক্যালায় লুপটি এখানে রয়েছে: টিউটোরিয়ালসপয়েন্ট / স্কেলা / স্কালা_মোহরে_ লুপ এইচটিএম এর প্রাকটিক এবং কোনও শরীরের লুপটি ব্যাকরণগতভাবে সম্পূর্ণ বাক্য নয়। এটি সম্পূর্ণ প্রকাশ নয়। আপনার অভিব্যক্তি হিসাবে এটি সম্পূর্ণ করতে শরীরের প্রয়োজন।
ncmathadist

একটি whileএকটি শরীরের সাথে এখনও Scala একটি অভিব্যক্তি। এটি যদি কোনও পার্শ্ব-প্রতিক্রিয়া তৈরি করে তবে এটি একটি বিবৃতিও হতে পারে, যা আমার প্রচুর নিম্নচিকিত উত্তরটি মঞ্জুরি দেয় (একটি অভিব্যক্তিটি একটি বিবৃতিও হতে পারে)। আমার উত্তরটি একমাত্র সঠিক। যারা বুঝতে পারে না তাদের পাঠকদের জন্য দুঃখিত Sorry
শেলবি মুর III

ব্যাকরণগতভাবে সম্পূর্ণ বলতে কী বোঝ? সি তে, (x + 5)/9.0অবশ্যই বিবৃতি হিসাবে একা দাঁড়িয়ে থাকতে পারে। এছাড়াও, যদি ব্যাকরণগতভাবে সম্পূর্ণ হয়, আপনি একটি বৈধ প্রোগ্রাম বলতে চাইছেন, সি একক প্রোগ্রাম হিসাবে একা স্টেটমেন্টগুলিকে অনুমতি দেয় না।
আকাংকা

ব্যাকরণগতভাবে সম্পূর্ণ: একটি সম্পূর্ণ বাক্য গঠন করে।
ncmathsadist

0

এখানে আমি পাওয়া সহজ উত্তরগুলির সংক্ষিপ্তসার।

মূলত অ্যান্ডারস ক্যাসরগ দ্বারা উত্তর দেওয়া হয়েছে

একটি বিবৃতি কোডের একটি সম্পূর্ণ লাইন যা কিছু ক্রিয়া করে, যখন একটি অভিব্যক্তি কোডের এমন কোনও বিভাগ যা কোনও মূল্যকে মূল্যায়ন করে।

অপারেটরগুলি ব্যবহার করে এক্সপ্রেশনগুলি "অনুভূমিকভাবে" আরও বড় এক্সপ্রেশনগুলিতে সংযুক্ত করা যেতে পারে, অন্যদিকে বিবৃতিগুলি কেবল একের পর এক লেখার মাধ্যমে বা ব্লক কনস্ট্রাক্টের সাহায্যে "উল্লম্বভাবে" সংযুক্ত করা যায়।

প্রতিটি অভিব্যক্তি একটি বিবৃতি হিসাবে ব্যবহার করা যেতে পারে (যার প্রভাবটি প্রকাশের মূল্যায়ন করতে এবং ফলস্বরূপ মানটিকে উপেক্ষা করে) তবে বেশিরভাগ বক্তব্যকে এক্সপ্রেশন হিসাবে ব্যবহার করা যায় না।

http://www.quora.com/Python-programming-language-1/Whats-the-difference-between-a-statement-and-an-expression-in-Python


0

এই ধারণাগুলির ডি-ফ্যাক্টো ভিত্তিটি হ'ল:

অভিব্যক্তি : একটি সিনট্যাকটিক বিভাগ যার উদাহরণটি একটি মান হিসাবে মূল্যায়ন করা যেতে পারে।

বিবৃতি : একটি সিনট্যাকটিক বিভাগ যার উদাহরণটি একটি অভিব্যক্তির মূল্যায়নের সাথে জড়িত থাকতে পারে এবং মূল্যায়নের ফলাফলের মান (যদি থাকে) উপলভ্য নয় তবে এটি উপলব্ধ।

প্রথম দশকগুলিতে ফরটারনের প্রাথমিক প্রসঙ্গটি ছাড়াও, স্বীকৃত উত্তরে প্রকাশের বক্তব্য এবং বিবৃতি উভয়ই স্পষ্টতই ভুল:

  • এক্সপ্রেশন মূল্যবান অপারেশন হতে পারে। এগুলি থেকে কখনই মূল্যবোধ তৈরি হয় না।
    • অ-কঠোর মূল্যায়নে Subexpressions অবশ্যই নির্মূল করা যেতে পারে।
      • বেশিরভাগ সি-জাতীয় ভাষায় শর্তসাপেক্ষে কিছু subexpression মূল্যায়ন পার্শ্ব প্রতিক্রিয়া সত্ত্বেও চূড়ান্ত ফলাফল পরিবর্তন না করে তথাকথিত শর্ট সার্কিট মূল্যায়নের নিয়ম রয়েছে।
    • সি এবং কিছু সি-এর মতো ভাষার অমূল্য অপারেন্ডের ধারণা রয়েছে যা ভাষা নির্দিষ্টকরণে এমনকি আদর্শিকভাবে সংজ্ঞায়িত করা যেতে পারে। এই ধরনের নির্মাণগুলি অবশ্যই মূল্যায়ণগুলি এড়াতে ব্যবহৃত হয়, সুতরাং স্থির প্রসঙ্গ তথ্য (উদাহরণস্বরূপ প্রকার বা প্রান্তিককরণের প্রয়োজনীয়তা) প্রোগ্রামটি অনুবাদ হওয়ার পরে আচরণ পরিবর্তন না করে স্ট্যাটিকভাবে আলাদা করা যেতে পারে।
      • উদাহরণস্বরূপ, sizeofঅপারেটরের অপারেন্ড হিসাবে ব্যবহৃত একটি এক্সপ্রেশন কখনও মূল্যায়ন হয় না।
  • বিবৃতি লাইন নির্মাণের সাথে কোন সম্পর্ক নেই। ভাষার বর্ণনার উপর নির্ভর করে তারা ভাবের চেয়ে আরও কিছু করতে পারে।
    • পুরানো ফোরট্রানের প্রত্যক্ষ বংশধর হিসাবে আধুনিক ফোরট্রানের এক্সিকিউটেবল স্টেটমেন্ট s এবং অযৌক্তিক বক্তব্যগুলির ধারণাগুলি রয়েছে ।
    • একইভাবে, সি ++ অনুবাদকে একটি অনুবাদ ইউনিটের শীর্ষ-স্তরের উপশ্রেণী হিসাবে হিসাবে সংজ্ঞায়িত করে। সি ++ এ ঘোষণা একটি বিবৃতি। (এটি সি তে সত্য নয়) এছাড়াও রয়েছে প্রকাশ-বিবৃতি ফোরট্রান এর এক্সিকিউটেবল বিবৃতিগুলির মতো গুলি।
    • অভিব্যক্তিগুলির সাথে তুলনার স্বার্থে, কেবলমাত্র "কার্যকর" বক্তব্যগুলি গুরুত্বপূর্ণ। তবে আপনি এই সত্যটি অগ্রাহ্য করতে পারবেন না যে বিবৃতিগুলি ইতিমধ্যে সাধারণভাবে এই জাতীয় ভাষায় অনুবাদ ইউনিট গঠন করে r সুতরাং, আপনি দেখতে পাচ্ছেন যে বিভাগের সংজ্ঞাগুলি অনেকগুলি পৃথক হয়। এই ভাষাগুলির মধ্যে কেবল (সম্ভবত) সংরক্ষিত সাধারণ সম্পত্তি হিসাবে রয়েছে যে বিবৃতিগুলি বর্ণনামূলক ক্রমে (বেশিরভাগ ব্যবহারকারীর জন্য, বাম থেকে ডান এবং উপরে থেকে নীচে) ব্যাখ্যা করা হবে বলে আশা করা যায়

(বিটিডাব্লু, আমি সি সম্পর্কে উপকরণ সম্পর্কিত উত্তরটিতে [উদ্ধৃতি প্রয়োজন] যুক্ত করতে চাই কারণ ডিএমআর এর মতামত আছে কিনা তা আমি স্মরণ করতে পারি না। মনে হয় না, অন্যথায় সি এর নকশায় কার্যকারিতা সদৃশ করার কোনও কারণ থাকতে হবে না : উল্লেখযোগ্যভাবে, কমা অপারেটর বনাম, বিবৃতি।)

(নীচের যুক্তিটি মূল প্রশ্নের সরাসরি প্রতিক্রিয়া নয়, তবে ইতিমধ্যে এখানে উত্তর দেওয়া কিছু পরিষ্কার করা দরকার বলে মনে করি))

তবুও, এটি সন্দেহজনক যে সাধারণ-উদ্দেশ্যমূলক প্রোগ্রামিং ভাষাগুলিতে আমাদের একটি নির্দিষ্ট "স্টেটমেন্ট" দরকার:

  • বিবরণগুলিতে স্বাভাবিক ডিজাইনে প্রকাশের চেয়ে বেশি শব্দার্থক ক্ষমতা থাকার গ্যারান্টি নেই।
    • অনেকগুলি ভাষা ইতিমধ্যে পরিষ্কার, ঝরঝরে এবং সামঞ্জস্যপূর্ণ সামগ্রিক নকশাগুলি পেতে বিবৃতিগুলির ধারণাটি সাফল্যের সাথে ছেড়ে দিয়েছে।
      • এই জাতীয় ভাষায়, এক্সপ্রেশনগুলি পুরানো শৈলীর বক্তব্যগুলি যা করতে পারে তা করতে পারে: এক্সপ্রেশনগুলি মূল্যায়ন করা হয় তখন কেবল অব্যবহৃত ফলাফলগুলি ফেলে দিন, হয় ফলাফলগুলি স্পষ্টভাবে অনির্দিষ্ট করে রেখে (যেমন আর এনতে আরএস প্রকল্পে), বা একটি বিশেষ মান (যেমন হিসাবে) ইউনিট প্রকারের মান) সাধারণ অভিব্যক্তি মূল্যায়ন থেকে উত্পাদনযোগ্য নয়।
      • এক্সপ্রেশন মূল্যায়নের লিক্সিক অর্ডার বিধিগুলি সুস্পষ্ট সিকোয়েন্স কন্ট্রোল অপারেটর (উদাহরণস্বরূপ beginস্কিম) বা monadic কাঠামোর সিনট্যাকটিক চিনি দ্বারা প্রতিস্থাপিত হতে পারে ।
      • অনুরূপ সিনট্যাকটিক কার্যকারিতা পেতে অন্যান্য ধরণের "স্টেটমেন্টগুলি" এর লেজিক অর্ডার বিধিগুলি সিনট্যাকটিক এক্সটেনশন (উদাহরণস্বরূপ হাইজেনিক ম্যাক্রোগুলি ব্যবহার করে) হিসাবে নেওয়া যেতে পারে। (এবং এটি আসলে আরও কিছু করতে পারে ))
    • বিপরীতে, বিবৃতিতে এ জাতীয় প্রচলিত নিয়ম থাকতে পারে না, কারণ তারা মূল্যায়নের বিষয়ে রচনা করেন না: "সাবস্টেটমেন্ট মূল্যায়ন" এর মতো সাধারণ ধারণা নেই। (যদি কোনও হয় তবে আমার সন্দেহ যে এক্সপ্রেশন মূল্যায়নের বিদ্যমান নিয়মগুলি থেকে অনুলিপি এবং পেস্ট করার চেয়ে আরও অনেক বেশি কিছু হতে পারে))
      • সাধারণত, ভাষাগুলি সংরক্ষণের ভাষাগুলিতেও গণনা প্রকাশের জন্য এক্সপ্রেশন থাকে এবং সেই উপশ্রেণীর জন্য প্রকাশের মূল্যায়ণগুলিতে সংরক্ষিত বিবৃতিগুলির একটি শীর্ষ-স্তরের উপশ্রেণী থাকে। উদাহরণস্বরূপ, সি ++ এর উপ-বিভাগ হিসাবে তথাকথিত এক্সপ্রেশন-বিবৃতি রয়েছে এবং এই জাতীয় প্রেক্ষাপটে পূর্ণ-এক্সপ্রেশন মূল্যায়নের সাধারণ ক্ষেত্রে সুনির্দিষ্ট করার জন্য ফেলে দেওয়া-মূল্য প্রকাশের মূল্যায়ন বিধিগুলি ব্যবহার করে। সি # এর মতো কিছু ভাষা ব্যবহারের কেসগুলি সহজ করার জন্য প্রসঙ্গগুলি পরিমার্জন করতে পছন্দ করে তবে এটি স্পেসিফিকেশনটি আরও ফুলে যায়।
  • প্রোগ্রামিং ভাষার ব্যবহারকারীদের জন্য, বিবৃতিগুলির তাত্পর্য তাদের আরও বিভ্রান্ত করতে পারে।
    • ভাষাগুলি এবং বিবৃতিগুলির বিধিগুলি পৃথক করার জন্য একটি ভাষা শেখার জন্য আরও প্রচেষ্টা প্রয়োজন।
    • নিষ্পাপ লেজিকাল অর্ডার ব্যাখ্যার আরও গুরুত্বপূর্ণ ধারণাটি আড়াল করে: এক্সপ্রেশন মূল্যায়ন। (এটি সম্ভবত সবার চেয়ে সমস্যাযুক্ত))
      • এমনকি বিবৃতিতে সম্পূর্ণ প্রকাশের মূল্যায়নগুলি লিক্সিক ক্রমের সাথে সীমাবদ্ধ, সুব এক্সপ্রেসনগুলি (অগত্যা) নয়। বিবৃতিতে জুড়ে থাকা কোনও নিয়ম ছাড়াও শেষ পর্যন্ত ব্যবহারকারীদের এটি শিখতে হবে। (বিবেচনা করুন কীভাবে কোনও নবাগত পয়েন্টটি ++i + ++iসি-এর অর্থহীন get
      • জাভা এবং সি # এর মতো কিছু ভাষা স্বেচ্ছাসেবীগুলির মূল্যায়নের ক্রমকে মূল্যায়নের বিধি অজ্ঞতার অনুমতি হিসাবে বাধা দেয়। এটি আরও বেশি সমস্যাযুক্ত হতে পারে।
        • এটি ইতিমধ্যে অভিব্যক্তি মূল্যায়নের ধারণাটি শিখেছে এমন ব্যবহারকারীদের কাছে অতি স্পষ্ট মনে হয়েছে। এটি ভাষা ডিজাইনের অস্পষ্ট মানসিক মডেল অনুসরণ করতে ব্যবহারকারী সম্প্রদায়কে উত্সাহিত করে।
        • এটি ভাষার স্পেসিফিকেশনকে আরও বেশি করে ফুলে যায়।
        • আরও জটিল আদিমাগুলি প্রবর্তনের আগে মূল্যায়নের উপর অদ্বিতীয়তাবাদের অভিব্যক্তিটি অনুপস্থিত করে অপ্টিমাইজেশনের পক্ষে ক্ষতিকারক।
      • সি ++ এর মতো কয়েকটি ভাষা (বিশেষত সি ++ 17) উপরের সমস্যার সমঝোতা হিসাবে মূল্যায়নের নিয়মের আরও সূক্ষ্ম প্রসঙ্গটি নির্দিষ্ট করে।
        • এটি ভাষার স্পেসিফিকেশনকে প্রচুর ব্লাস্ট করে।
        • এটি পুরোপুরি গড় ব্যবহারকারীদের সরলতার বিপরীতে চলে ...

তাহলে বিবৃতি কেন? যাইহোক, ইতিহাস ইতিমধ্যে একটি জগাখিচুড়ি। দেখে মনে হচ্ছে বেশিরভাগ ভাষা ডিজাইনাররা তাদের পছন্দটি সাবধানতার সাথে নেন না।

সবচেয়ে খারাপ এটি এমনকি কিছু ধরণের সিস্টেম উত্সাহ দেয় (যারা পিএল ইতিহাসের সাথে যথেষ্ট পরিচিত নন) কিছু ভুল ধারণা যে টাইপ সিস্টেমে অপারেশনাল শব্দার্থবিজ্ঞানের নিয়মের আরও প্রয়োজনীয় ডিজাইনের সাথে গুরুত্বপূর্ণ জিনিসগুলি আবশ্যক।

গুরুতরভাবে, প্রকারের উপর নির্ভর করে যুক্তি অনেক ক্ষেত্রে খারাপ হয় না, তবে বিশেষত এই বিশেষ ক্ষেত্রে গঠনমূলক নয়। এমনকি বিশেষজ্ঞরা জিনিসগুলি স্ক্রু করতে পারেন।

উদাহরণস্বরূপ, কেউ অনস্বীকৃত ধারাবাহিকতার ofতিহ্যগত চিকিত্সার বিরুদ্ধে কেন্দ্রীয় যুক্তি হিসাবে ভাল-টাইপিং প্রকৃতির উপর জোর দেয় । যদিও উপসংহারটি কিছুটা যুক্তিসঙ্গত এবং রচিত ফাংশনগুলি সম্পর্কে অন্তর্দৃষ্টি ঠিক আছে ( তবে এখনও প্রয়োজনীয়তার পক্ষে অনেকটা নির্বোধ ), এই যুক্তিটি কার্যকর নয় কারণ এটি _Noreturn any_of_returnable_typesএনকোড করার মতো (সি 11 তে) অনুশীলনে "পার্শ্ব চ্যানেল" পদ্ধতির সম্পূর্ণ উপেক্ষা করে Falsumএবং কঠোরভাবে বলতে গেলে, অপ্রত্যাশিত রাষ্ট্রযুক্ত একটি বিমূর্ত মেশিন "ক্র্যাশ হওয়া কম্পিউটার" এর মতো নয়।


0

একটি বিবৃতি-ভিত্তিক প্রোগ্রামিং ভাষায়, একটি কোড ব্লককে বিবৃতিগুলির তালিকা হিসাবে সংজ্ঞায়িত করা হয়। অন্য কথায়, একটি বিবৃতি সিনট্যাক্সের একটি অংশ যা কোনও সিনট্যাক্স ত্রুটির কারণ না করে আপনি কোনও কোড ব্লকের ভিতরে রাখতে পারেন।

উইকিপিডিয়া একইভাবে শব্দ বিবৃতি সংজ্ঞায়িত করে

কম্পিউটার প্রোগ্রামিংয়ে, একটি বিবৃতি একটি অত্যাবশ্যক প্রোগ্রামিং ভাষার একটি সিনট্যাক্টিক ইউনিট যা সম্পাদিত হওয়ার জন্য কিছু পদক্ষেপ প্রকাশ করে। এই জাতীয় ভাষায় রচিত একটি প্রোগ্রাম এক বা একাধিক বক্তব্যের ক্রম দ্বারা গঠিত হয়

পরবর্তী বিবৃতি লক্ষ্য করুন। (যদিও এই ক্ষেত্রে "একটি প্রোগ্রাম" প্রযুক্তিগতভাবে ভুল কারণ সি এবং জাভা উভয়ই এমন কোনও প্রোগ্রামকে প্রত্যাখ্যান করে যা বিবৃতিতে কিছুই ধারণ করে না।)

উইকিপিডিয়া শব্দ এক্সপ্রেশন হিসাবে সংজ্ঞা দেয়

প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি অভিব্যক্তি একটি সিনট্যাকটিক সত্তা যা এর মূল্য নির্ধারণের জন্য মূল্যায়ন করা যেতে পারে

এটি যাইহোক, মিথ্যা, কারণ কোটলিনে throw new Exception("")এটি একটি অভিব্যক্তি, তবে যখন মূল্যায়ন করা হয়, এটি কেবল একটি ব্যতিক্রম ছুঁড়ে দেয়, কখনই কোনও মান দেয় না।

স্ট্যাটিক্যালি টাইপড প্রোগ্রামিং ল্যাঙ্গুয়েজে প্রতিটি এক্সপ্রেশনের একটি প্রকার থাকে। এই সংজ্ঞাটি অবশ্য গতিময় টাইপ করা প্রোগ্রামিং ভাষায় কাজ করে না।

ব্যক্তিগতভাবে, আমি একটি বাক্য সংশ্লেষের টুকরো হিসাবে সংজ্ঞায়িত করি যা একটি অপারেটর বা ফাংশন কলগুলির সাথে আরও বড় এক্সপ্রেশন অর্জনের জন্য রচনা করা যেতে পারে। এটি প্রকৃতপক্ষে উইকিপিডিয়া দ্বারা অভিব্যক্তির ব্যাখ্যার অনুরূপ:

এটি এক বা একাধিক ধ্রুবক, ভেরিয়েবল, ফাংশন এবং অপারেটরগুলির সংমিশ্রণ যা প্রোগ্রামিং ভাষা ব্যাখ্যা করে (তার পূর্ববর্তীতা এবং সংস্থার নির্দিষ্ট বিধি অনুসারে) এবং উত্পাদন করতে গণনা ("প্রত্যাবর্তন", রাষ্ট্রীয় পরিবেশে) অন্য মান

তবে, সমস্যাটি সি প্রোগ্রামিং ভাষায়, একটি ফাংশন এক্সিকিউটিভ দেওয়া যেমন:

void executeSomething(void){
    return;
}

কি executeSomething()একটি অভিব্যক্তি বা এটি একটি পুনারাবৃত্তি? আমার সংজ্ঞা অনুসারে, এটি একটি বিবৃতি কারণ মাইক্রোসফ্ট এর সি রেফারেন্স ব্যাকরণে সংজ্ঞায়িত হয়েছে,

আপনি কোনওভাবেই টাইপ শূন্য রয়েছে এমন একটি এক্সপ্রেশনটির (অস্তিত্বহীন) মানটি ব্যবহার করতে পারবেন না, বা শূন্য অভিব্যক্তি (অন্তর্নিহিত বা স্পষ্ট রূপান্তর দ্বারা) শূন্যতা ব্যতীত কোনও প্রকারে রূপান্তর করতে পারবেন না

তবে একই পৃষ্ঠাটি স্পষ্টভাবে নির্দেশ করে যে এই জাতীয় বাক্য গঠনটি একটি অভিব্যক্তি।


-6

আমার পূর্ববর্তী উত্তরটি উন্নত করতে এবং যাচাই করার জন্য, প্রযোজ্য ক্ষেত্রে কম্পিউটার বিজ্ঞানের ধরণের তত্ত্ব থেকে প্রোগ্রামিং ভাষার শর্তগুলির সংজ্ঞা ব্যাখ্যা করা উচিত।

এক্সপ্রেশনের বটম টাইপ ব্যতীত অন্য প্রকার থাকে, অর্থাত এর একটি মান থাকে। একটি বিবৃতিতে ইউনিট বা নীচের প্রকার রয়েছে।

এ থেকে এটি অনুসরণ করে যে কোনও বিবৃতি কেবল তখনই কোনও প্রোগ্রামে প্রভাব ফেলতে পারে যখন এটি কোনও পার্শ্ব-প্রতিক্রিয়া তৈরি করে, কারণ এটি হয় কোনও মান ফেরত দিতে পারে না বা এটি কেবল ইউনিট প্রকারের মান দেয় যা হয় অনির্দিষ্টযোগ্য (কিছু ভাষায় যেমন একটি সি এর void) বা (যেমন স্কালায়) বিবৃতিটির বিলম্বিত মূল্যায়নের জন্য সংরক্ষণ করা যেতে পারে।

স্পষ্টতই একটি @pragmaবা একটির /*comment*/কোনও প্রকার নেই এবং এভাবে বিবৃতি থেকে পৃথক করা হয়। সুতরাং একমাত্র বিবৃতি যে কোনও পার্শ্ব প্রতিক্রিয়া থাকবে না একটি অপারেশন হবে। অ-অপারেশন কেবল ভবিষ্যতের পার্শ্ব প্রতিক্রিয়াগুলির জন্য স্থানধারক হিসাবে কার্যকর। একটি বিবৃতি কারণে অন্য যে কোন ক্রিয়া একটি পার্শ্ব প্রতিক্রিয়া হতে পারে। আবার একটি সংকলক ইঙ্গিত, যেমন @pragma, কোনও বিবৃতি নয় কারণ এর কোনও প্রকার নেই।


2
পার্থক্যটির ধরণের অভিব্যক্তির কোনও সম্পর্ক নেই। সিন্ট্যাক্টিক্যালি সংজ্ঞায়িত বিবৃতিগুলির অনেক ভাষায় মোটেই কোনও প্রকার নেই। যদিও আমি তত্ত্ব শর্ত একটি টাইপ দায়িত্ব অর্পণ করা বিরুদ্ধে নই, বিভিন্ন চিকিত্সা @pragmaবা /*comment*/কথাটি অসঙ্গত হয়।
ফ্র্যাঙ্কএইচবি

-11

সর্বাধিক অবিকল এক বিবৃতিতে একটি থাকতে হবে "পার্শ্ব প্রতিক্রিয়া" (অর্থাত হতে অনুজ্ঞাসূচক ) এবং একটি অভিব্যক্তি আবশ্যক আছে একটি মান টাইপ (অর্থাত না নীচে টাইপ)।

এক বিবৃতিতে ধরণ ইউনিট টাইপ, কিন্তু কারণে স্থগিত করার উপপাদ্য ইউনিট কথাসাহিত্য তাই বলে দেয় নীচে টাইপ


Voidসঠিকভাবে নীচের ধরণের নয় (এটি সমস্ত সম্ভাব্য ধরণের উপপ্রকার নয়)। এটি এমন ভাষাগুলিতে বিদ্যমান যাগুলির মধ্যে সম্পূর্ণ শব্দ টাইপ সিস্টেম নেই । এটি একটি স্নোবিশ বিবৃতি মত শোনাতে পারে, তবে বৈকল্পিক টিকা হিসাবে সম্পূর্ণতা এক্সটেনসিবল সফ্টওয়্যার লেখার জন্য গুরুত্বপূর্ণ critical

আসুন দেখুন উইকিপিডিয়া এই বিষয়ে কি বলে।

https://en.wikipedia.org/wiki/Statement_(computer_science)

কম্পিউটার প্রোগ্রামিংয়ে একটি বিবৃতি হ'ল একটি অত্যাবশ্যক প্রোগ্রামিং ভাষার সর্বনিম্ন স্ট্যান্ড্যালোন উপাদান যা পরিচালিত হওয়ার জন্য কিছু পদক্ষেপ প্রকাশ করে।

অনেক ভাষা (যেমন সি) বিবৃতি এবং সংজ্ঞাগুলির মধ্যে পার্থক্য তৈরি করে, কেবলমাত্র এক্সিকিউটেবল কোড সম্বলিত একটি বিবৃতি এবং একটি সনাক্তকারী হিসাবে ঘোষণাকারী সংজ্ঞা সহ, যখন একটি অভিব্যক্তি কেবল একটি মানকে মূল্যায়ন করে।


5
একটি বিবৃতিতে কোনও পার্শ্ব প্রতিক্রিয়া হওয়া উচিত নয়। উদাহরণস্বরূপ, পাইথনে passএকটি বিবৃতি। এটি কোনও অপশন নয় এবং এটি কোনও কিছুর সাথে মূল্যায়ন করে না।
ম্যাথু শিনকেল

9
-1 এটি ভুল। একটি বিবৃতি নেই আছে একটি পার্শ্ব প্রতিক্রিয়া আছে। সি # ভাষা নির্দিষ্টকরণের 1.5 বিভাগ দেখুন । কেবলমাত্র এটি নির্দিষ্ট করে না যে বিবৃতিগুলির অবশ্যই পার্শ্ব-প্রতিক্রিয়া থাকতে হবে, তবে এটি বেশ কয়েকটি বিবৃতিও তালিকাভুক্ত করে যার কোনও পার্শ্ব প্রতিক্রিয়া থাকতে পারে না
নাল ইউজারএক্সেপশন

2
আমি এই বিভাগটি পড়েছি ঘোষণা, এক্সপ্রেশন, নির্বাচন, Iteration এবং ঝাঁপ বিবৃতি সব পার্শ্ব প্রতিক্রিয়া তৈরি করতে পারে। তবে যদি আরটি এক্সপ্রেশন থাকে তবে তা বিবৃতি নয়। আমি বুঝতে পারি স্পেসিফিকেশনটি বিবৃতিগুলির সাথে ভাবের সমীকরণ করা হয়, তবে এই প্রশ্নটি তাদের মধ্যে পার্থক্য জানতে চেয়েছিল। সুতরাং হয় প্রশ্নের কোনও উত্তর নেই, বা আপনি সি # স্পেসকে খুব আক্ষরিকভাবে নিচ্ছেন। শীর্ষ ভোট প্রাপ্ত উত্তরগুলি আমি যা করেছি তা বলার চেষ্টা করছে। তবে "কিছু করে" অর্থহীন। "পার্শ্ব-প্রতিক্রিয়া" হ'ল "কিছু করে" বলার অর্থপূর্ণ উপায়। আমাদের ভাবতে হবে, কেবল পুনরায় সাজানো উচিত নয়।
শেলবি মুর তৃতীয়

13
@ শেলবিমুরIIII আপনি ঠিক বলেছেন অফিসিয়াল ডকুমেন্টেশন ভুল । মার্ক গ্র্যাভেল এবং জন স্কিটি, যারা সম্ভবত এরিক লিপার্টের বাইরে এসওতে সক্রিয় সর্বাধিক সম্মানের সি # পোস্টার, তারা ভুল । আমি এবং অন্যরা যারা আপনাকে হ্রাস করেছে এবং আমাদের অবস্থান ব্যাখ্যা করে মন্তব্যগুলি রেখে গেছে তা ভুল । তুমি ঠিক. আপনি স্পষ্টত একমাত্র ব্যক্তি যিনি জানেন যে তারা কী বিষয়ে কথা বলছেন, যেহেতু আপনি সমস্ত এসও এর চেয়ে বেশি বুদ্ধিমান।
নালুউজারএক্সেপশন

3
স্টেটমেন্ট, এক্সপ্রেশন, কাস্ট, রূপান্তর ইত্যাদির মত ধারণাগুলির যথাযথ সংজ্ঞা জেনে প্রতিদিনের প্রোগ্রামিং কার্যগুলির 99.999% এর উপর শূন্য প্রভাব পড়ে। ভাবুন যে । এছাড়াও: বেশিরভাগ লোক হাস্কেল এবং স্কালাল সম্পর্কে চিন্তা করে না।
নাল ইউজারএক্সেপশন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.