নাম
expr - একটি অভিব্যক্তি মূল্যায়ন
সংক্ষিপ্তসার
expr ARG ? আর্গ আর্গ … ?
যোগসূত্র ARG এর (তাদের মধ্যে বিভাজক স্পেস যোগ করা), ফলাফল Tcl এক্সপ্রেশন হিসাবে মূল্যায়ন করে এবং মান প্রদান করে। Tcl এক্সপ্রেশনগুলিতে অনুমোদিত অপারেটরগুলি সি এক্সপ্রেশনগুলিতে অনুমোদিত অপারেটরদের একটি উপসেট, এবং তাদের একই অর্থ এবং সংশ্লিষ্ট সি অপারেটর হিসাবে অগ্রাধিকার রয়েছে। এক্সপ্রেশন প্রায় সবসময় সাংখ্যিক ফলাফল (পূর্ণসংখ্যা বা ভাসমান-বিন্দু মান) ফলন। উদাহরণস্বরূপ, অভিব্যক্তি
EXP 8.2 + 6
মূল্যায়ন 14.2। Tcl এক্সপ্রেশনগুলি ক্রপ এক্সপ্রেশন থেকে ভিন্ন যা অপারেশনগুলি নির্দিষ্ট করা হয়। এছাড়াও, Tcl এক্সপ্রেশনগুলি অ সংখ্যাসূচক ক্রিয়াকলাপ এবং স্ট্রিং তুলনাগুলিকে সমর্থন করে।
Operands
একটি Tcl এক্সপ্রেশন অপারেড, অপারেটর, এবং বন্ধনী সমন্বয় গঠিত। হোয়াইট স্পেস অপারেড এবং অপারেটর এবং বন্ধনীগুলির মধ্যে ব্যবহার করা যেতে পারে; এটা অভিব্যক্তি এর নির্দেশাবলী দ্বারা উপেক্ষা করা হয়। যেখানে সম্ভব, operands পূর্ণসংখ্যা মান হিসাবে ব্যাখ্যা করা হয়। ইন্টিগ্রার মান দশমিক (স্বাভাবিক ক্ষেত্রে), অকটাল (যদি অপারেডের প্রথম চরিত্র হয়) তে নির্দিষ্ট করা যেতে পারে0), বা হেক্সাডেসিমেল (যদি অপারেডের প্রথম দুটি অক্ষর থাকে0x)। যদি কোন অপারেডের উপরে দেওয়া পূর্ণসংখ্যা ফরম্যাটগুলির মধ্যে একটি না থাকে, তবে এটি সম্ভব হলে এটি একটি ভাসমান-পয়েন্ট নম্বর হিসাবে বিবেচিত হয়। কোনও ANSI-compliant সি কম্পাইলার দ্বারা গৃহীত উপায়ে ভাসমান-বিন্দু সংখ্যা নির্দিষ্ট করা যেতে পারে (যেটি ছাড়াচ, এফ, ঠ, এবংএল সর্বাধিক ইনস্টলেশনের অনুমতি হবে না)। উদাহরণস্বরূপ, নিম্নলিখিত সমস্ত বৈধ ভাসমান-বিন্দু সংখ্যা: 2.1, 3., 6e4, 7.91e + 16। যদি কোন সংখ্যাসূচক ব্যাখ্যা সম্ভব না হয়, তবে একটি অপারেড স্ট্রিং হিসাবে ছেড়ে দেওয়া হয় (এবং শুধুমাত্র অপারেটরগুলির একটি সীমিত সেট এটি প্রয়োগ করা যেতে পারে)।
অপারেশন নিম্নলিখিত কোন উপায়ে উল্লেখ করা যেতে পারে:
1
সংখ্যাসূচক মান হিসেবে, পূর্ণসংখ্যা বা ভাসমান-বিন্দু।
2
একটি Tcl পরিবর্তনশীল হিসাবে, মান ব্যবহার করে$ স্বরলিপি। পরিবর্তনশীল এর মান অপারেড হিসাবে ব্যবহার করা হবে।
3
দ্বি উদ্ধৃতির মধ্যে আবৃত একটি স্ট্রিং হিসাবে। এক্সপ্রেশন পার্সার কোটগুলির মধ্যে তথ্যগুলিতে ব্যাকস্ল্যাশ, পরিবর্তনশীল এবং কমান্ড প্রতিস্থাপন সম্পাদন করবে এবং ফলাফলটি কার্যকর হিসাবে ব্যবহার করবে
4
ধনুর্বন্ধনী মধ্যে আবৃত একটি স্ট্রিং হিসাবে। খোলা বন্ধনী এবং মিলে বন্ধ বোস মধ্যে অক্ষর কোন বিকল্প ছাড়া অপারেড হিসাবে ব্যবহার করা হবে।
5
বন্ধনী একটি Tcl কমান্ড হিসাবে। কমান্ডটি কার্যকর হবে এবং এর ফলাফল অপারেড হিসাবে ব্যবহার করা হবে।
6
একটি গাণিতিক ফাংশন হিসাবে যার আর্গুমেন্টের উপরের অপারেশনগুলির জন্য উপরের ফর্মগুলির মধ্যে রয়েছেপাপ ($ x) এর। সংজ্ঞায়িত ফাংশন একটি তালিকা জন্য নিচে দেখুন।
যেখানে প্রতিস্থাপন উপরে থাকে (উদাঃ উদ্ধৃত স্ট্রিংগুলির ভিতরে), তারা এক্সপ্রেশন এর নির্দেশাবলী দ্বারা সঞ্চালিত হয়। যাইহোক, এক্সপ্রেশন প্রসেসর বলা হয়ে যাওয়ার আগে কমান্ড পার্সার দ্বারা অতিরিক্ত বিকল্প স্তর ইতিমধ্যে সঞ্চালিত হতে পারে। নিম্নরূপ আলোচনা করা হয়েছে, কমান্ড পার্সার সামগ্রীতে প্রতিস্থাপনগুলি সম্পাদন করা থেকে বিরত রাখার জন্য সাধারণত ধনুর্বন্ধনীগুলি এক্সপ্রোজ করা ভাল।
সহজ এক্সপ্রেশন কিছু উদাহরণের জন্য, পরিবর্তনশীল অনুমানএকটি মান 3 এবং পরিবর্তনশীল আছেখমান 6 আছে। তারপরে নিচের লাইনের বাম দিকের কমান্ডটি লাইনের ডান দিকের মানটি উত্পন্ন করবে:
EXP 3.1 + $ A6.1 এক্সপ 2 + "$ A। $ B" 5.6 এক্সপ 4 * লম্বা "6 2" 8 এক্সপ {{ওয়ার্ড এক} <"ওয়ার্ড $ A"} 0
অপারেটর
বৈধ অপারেটরগুলি অগ্রাধিকারের হ্রাসের ক্রম অনুসারে গোষ্ঠীভুক্ত করা হয়েছে:
- + ~ !
ইউনিনারি বিয়োগ, unary প্লাস, বিট-বুদ্ধিমান না, যৌক্তিক নয়। এই অপারেশনগুলির মধ্যে কোনও স্ট্রিং অপারেডগুলিতে প্রয়োগ করা যাবে না এবং বিট-বুদ্ধিমানটি কেবল পূর্ণসংখ্যাগুলিতে প্রয়োগ করা যাবে না।
* / %
গুণ, ভাগ, বাকি। এই অপারেশনগুলির মধ্যে কোনও স্ট্রিং অপারেডগুলিতে প্রয়োগ করা যাবে না এবং অবশিষ্টটি শুধুমাত্র পূর্ণসংখ্যাগুলিতে প্রয়োগ করা যেতে পারে। বাকি অংশটি ডিভাইজারের চেয়ে সর্বদা একই চিহ্ন এবং ডিভিলারের চেয়ে একেবারে কম মূল্যের থাকবে।
+ -
যোগ করুন এবং বিয়োগ করুন। কোন সংখ্যাসূচক অপারেশন জন্য বৈধ।
<< >>
বাম এবং ডান শিফট। পূর্ণসংখ্যা অপারেশন শুধুমাত্র জন্য বৈধ। একটি ডান শিফট সবসময় সাইন বিট propagates।
< > <= >=
বুলিয়ান কম, বৃহত্তর, কম বা সমান, এবং বৃহত্তর বা সমান। শর্তটি যদি সত্য হয় তবে প্রতিটি অপারেটর 1 টি উৎপন্ন করে, 0 অন্যথায়। এই অপারেটর স্ট্রিং এবং সংখ্যাসূচক অপারেন্ডগুলিতে প্রয়োগ করা যেতে পারে, যা ক্ষেত্রে স্ট্রিং তুলনা ব্যবহৃত হয়।
== !=
বুলিয়ান সমান এবং সমান নয়। প্রতিটি অপারেটর একটি শূন্য / এক ফলাফল উত্পন্ন করে। সমস্ত অপারেড ধরনের জন্য বৈধ।
&
বিট-বুদ্ধিমান এবং। পূর্ণসংখ্যা অপারেশন শুধুমাত্র জন্য বৈধ।
^
বিট-ভিত্তিক একচেটিয়া OR। পূর্ণসংখ্যা অপারেশন শুধুমাত্র জন্য বৈধ।
|
বিট অনুযায়ী OR। পূর্ণসংখ্যা অপারেশন শুধুমাত্র জন্য বৈধ।
&&
যৌক্তিক এবং। উভয় অপারেটিং যদি অ-শূন্য হয় তবে 0 ফলাফলটি তৈরি করে। বুলিয়ান এবং সংখ্যাসূচক (পূর্ণসংখ্যা বা ভাসমান-বিন্দু) শুধুমাত্র বৈধ।
||
লজিক্যাল OR। উভয় অপারেটিং শূন্য থাকলে 0 টি ফলাফল তৈরি করে, অন্যথায় 1। বুলিয়ান এবং সংখ্যাসূচক (পূর্ণসংখ্যা বা ভাসমান-বিন্দু) শুধুমাত্র বৈধ।
এক্স ? Y : z- র
যদি তারপর, সি হিসাবে হিসাবে যদি এক্স অ শূন্য মূল্যায়ন, তারপর ফলাফল মান Y । অন্যথায়, ফলাফল মান z- র । দ্য এক্স অপারেড একটি সাংখ্যিক মান থাকতে হবে।
প্রতিটি অপারেটর দ্বারা উত্পাদিত ফলাফল সম্পর্কে আরও বিস্তারিত জানার জন্য সি ম্যানুয়াল দেখুন। বাইনারি অপারেটর গোষ্ঠীগুলি একই অগ্রাধিকার স্তরের মধ্যে বাম থেকে ডানে। উদাহরণস্বরূপ, কমান্ড
EXP 4 * 2 <7
আয় 0।
দ্য&&, ||, এবং?: অপারেটরদের `অলস মূল্যায়ন 'আছে, যেমন সি তে, যার অর্থ হল ফলাফলগুলি নির্ধারণ করার জন্য অপারেশনগুলির মূল্যায়ন করা হয় না। উদাহরণস্বরূপ, কমান্ড
EXP {$ ভি? একটি: বি}
শুধুমাত্র একএক অথবাB আসলে মান উপর নির্ভর করে মূল্যায়ন করা হবে$ বনাম। উল্লেখ্য, যাইহোক, এটি শুধুমাত্র সত্য যদি সমগ্র অভিব্যক্তিটি ধনুর্বন্ধনীগুলির মধ্যে আবদ্ধ থাকে; অন্যথায়, Tcl পার্সার উভয় মূল্যায়ন করা হবেএক এবংB আগে invokingexpr কমান্ড।
গণিত ফাংশন
Tcl এক্সপ্রেশন মধ্যে নিম্নলিখিত গাণিতিক ফাংশন সমর্থন করে:
ABS ক্ষুদ্র ভারী দণ্ডলগ ইন করুনবর্গমূল ACOS ডবলLOG10srand , asin মেপুঃPowকষা একটি কষা মেঝের্যান্ড্TANH ATAN2 fmodবৃত্তাকার ছাদের নিচের পিঠ নির্মাণ করা hypotপাপ কোসাইন্ int- এSinh
ABS ( ARG )
পরম মান প্রদান করে ARG . ARG হয় পূর্ণসংখ্যা বা ভাসমান বিন্দু হতে পারে, এবং ফলাফল একই ফর্ম ফিরে।
ACOS ( ARG )
এর চাপ কোসাইন ফিরে ARG , পরিসীমা 0, পাই রেডিয়ানস। ARG পরিসীমা হতে হবে -1,1।
aSIN ( ARG )
এর চাপ সাইন ফেরত ARG , পরিসীমা -পিআই / 2, পাই / 2 রেডিয়ানস। ARG পরিসীমা হতে হবে -1,1।
একটি কষা( ARG )
এর চাপ টানেন্ট ফেরত ARG , পরিসীমা -পিআই / 2, পাই / 2 রেডিয়ানস।
ATAN2 ( এক্স, Y )
এর চাপ টানেন্ট ফেরত Y / এক্স , পরিসীমা -পিআই, পাই রেডিয়ানস। এক্স এবং Y উভয় হতে পারে না 0।
ছাদের নিচের পিঠ নির্মাণ ( ARG )
কম নয় পূর্ণতম পূর্ণসংখ্যা মান প্রদান করে ARG .
কোসাইন্ ( ARG )
এর কোসাইন ফিরে ARG , রেডিয়ান মধ্যে মাপা।
COSH ( ARG )
এর hyperbolic কোসাইন প্রদান করে ARG । ফলাফল একটি overflow কারণ হবে, একটি ত্রুটি ফিরে।
ডবল ( ARG )
যদি ARG একটি ভাসমান মান, আয় ARG , অন্যথায় পরিবর্তিত ARG ভাসমান এবং রূপান্তর মান ফেরত।
EXP ( ARG )
সূচক সূচক ARG , ই হিসাবে সংজ্ঞায়িত ** ARG । ফলাফল একটি overflow কারণ হবে, একটি ত্রুটি ফিরে।
মেঝে ( ARG )
বৃহত্তর অবিচ্ছেদ্য মান চেয়ে বেশি না ARG .
fmod ( এক্স, Y )
বিভাজক বিন্দু বিন্দু ফেরত দেয় এক্স দ্বারা Y । যদি Y 0, একটি ত্রুটি ফিরে।
hypot ( এক্স, Y )
ডান-কোণে ত্রিভুজের হাইপোটেন্যুজের দৈর্ঘ্যটি গণনা করে ( এক্স * এক্স + Y * Y ).
iNT ( ARG )
যদি ARG একটি পূর্ণসংখ্যা মান, আয় ARG , অন্যথায় পরিবর্তিত ARG ছাঁটাই দ্বারা পূর্ণসংখ্যা এবং রূপান্তর মান প্রদান করে।
লগ ইন করুন ( ARG )
প্রাকৃতিক লগারিদম প্রদান করে ARG . ARG একটি ইতিবাচক মান হতে হবে।
LOG10 ( ARG )
বেস 10 লগারিদম প্রদান করে ARG . ARG একটি ইতিবাচক মান হতে হবে।
Pow ( এক্স, Y )
মান গণনা করে এক্স ক্ষমতা উত্থাপিত Y । যদি এক্স নেতিবাচক, Y একটি পূর্ণসংখ্যা মান হতে হবে।
RAND ()
শূন্য থেকে একের কম একটি ভাসমান বিন্দু সংখ্যা প্রদান করে, বা গাণিতিক পদগুলিতে, পরিসর 0,1। বীজ মেশিনের অভ্যন্তরীণ ঘড়ি থেকে আসে বা srand ফাংশন সঙ্গে ম্যানুয়াল সেট করা হতে পারে।
বৃত্তাকার ( ARG )
যদি ARG একটি পূর্ণসংখ্যা মান, আয় ARG , অন্যথায় পরিবর্তিত ARG বৃত্তাকার দ্বারা পূর্ণসংখ্যা এবং রূপান্তর মান প্রদান করে।
পাপ ( ARG )
এর sine ফিরে ARG , রেডিয়ান মধ্যে মাপা।
SINH ( ARG )
এর hyperbolic Sine ফিরে ARG । ফলাফল একটি overflow কারণ হবে, একটি ত্রুটি ফিরে।
sQRT ( ARG )
এর বর্গমূল রুট ARG . ARG অ-নেতিবাচক হতে হবে।
srand ( ARG )
দ্য ARG , যা একটি পূর্ণসংখ্যা হতে হবে, র্যান্ডম সংখ্যা জেনারেটরের জন্য বীজ পুনরায় সেট করতে ব্যবহৃত হয়। যে বীজ থেকে প্রথম র্যান্ডম সংখ্যা প্রদান করে। প্রতিটি ইন্টারপ্রেটার তার নিজস্ব বীজ আছে।
TAN ( ARG )
এর টানেন্ট প্রদান করে ARG , রেডিয়ান মধ্যে মাপা।
TANH ( ARG )
এর hyperbolic টানেন্ট ফিরে ARG .
এই পূর্বনির্ধারিত ফাংশন ছাড়া, অ্যাপ্লিকেশন ব্যবহার করে অতিরিক্ত ফাংশন সংজ্ঞায়িত করতে পারেTcl_CreateMathFunc().
ধরন, ওভারফ্লো, এবং যথার্থ
সমস্ত অভ্যন্তরীণ computations পূর্ণসংখ্যার জড়িত সি টাইপ সঙ্গে সম্পন্ন করা হয় দীর্ঘ , এবং ভাসমান-বিন্দু জড়িত সমস্ত অভ্যন্তরীণ computations সি টাইপ সঙ্গে সম্পন্ন করা হয় ডবল । যখন একটি স্ট্রিংকে ভাসমান-বিন্দুতে রূপান্তর করা হয়, এক্সপোনেণ্ট ওভারফ্লো সনাক্ত হয় এবং Tcl ত্রুটিতে পরিনত হয়। স্ট্রিং থেকে পূর্ণসংখ্যা রূপান্তর করার জন্য, ওভারফ্লো সনাক্তকরণ স্থানীয় সি লাইব্রেরিতে কিছু রুটিন আচরণের উপর নির্ভর করে, তাই এটি অবিশ্বস্ত হিসাবে গণ্য করা উচিত। কোন ক্ষেত্রে, পূর্ণসংখ্যা ওভারফ্লো এবং অধঃপতন সাধারণত মধ্যবর্তী ফলাফলের জন্য নির্ভরযোগ্যভাবে সনাক্ত করা হয় না। ভাসমান-বিন্দু ওভারফ্লো এবং নিম্ন প্রবাহ হার্ডওয়্যার দ্বারা সমর্থিত ডিগ্রী সনাক্ত করা হয়, যা সাধারণত বেশ নির্ভরযোগ্য।
পূর্ণসংখ্যা, ভাসমান-বিন্দু এবং স্ট্রিং অপারেডগুলির জন্য অভ্যন্তরীণ উপস্থাপনাগুলির মধ্যে রূপান্তরটি স্বয়ংক্রিয়ভাবে প্রয়োজন অনুসারে করা হয়। গাণিতিক গণনাগুলির জন্য, কিছু ভাসমান-বিন্দু সংখ্যা প্রবর্তিত না হওয়া পর্যন্ত পূর্ণসংখ্যা ব্যবহার করা হয়, যার পরে ভাসমান-বিন্দু ব্যবহার করা হয়। উদাহরণ স্বরূপ,
EXP 5/4
আয় 1, যখন
EXP 5 / 4.0 EXP 5 / (স্ট্রিং দৈর্ঘ্য "abcd" + 0.0)
উভয় ফিরে 1.25। ভাসমান-বিন্দু মান সবসময় `` সঙ্গে.'বা একটিই যাতে তারা পূর্ণসংখ্যা মান মত দেখতে হবে না। উদাহরণ স্বরূপ,
EXP 20.0 / 5.0
আয়4.0, না4.
স্ট্রিং অপারেশনস
স্ট্রিং মান তুলনা অপারেটরদের অপারেটিং হিসাবে ব্যবহার করা যেতে পারে, যদিও অভিব্যক্তি মূল্যায়নকারী এটি পূর্ণ করতে পূর্ণসংখ্যা বা ভাসমান-বিন্দু হিসাবে তুলনা করার চেষ্টা করে। যদি তুলনার অপারেডগুলির মধ্যে একটি স্ট্রিং এবং অন্যটির সাংখ্যিক মান থাকে তবে সংখ্যাসূচক অপারেডটি সি ব্যবহার করে স্ট্রিং-এ রূপান্তরিত হয়। , sprintf বিন্যাস স্পেসিফিকেশন% d টি পূর্ণসংখ্যা এবং জন্য% ছ ভাসমান বিন্দু মান জন্য। উদাহরণস্বরূপ, কমান্ড
expr {"0x03"> "2"} expr {"0y" <"0x12"}
উভয় ফেরত 1. প্রথম তুলনা পূর্ণসংখ্যা তুলনা করে সম্পন্ন করা হয়, এবং দ্বিতীয় অপারেটিং স্ট্রিং রূপান্তর করা হয় পরে স্ট্রিং তুলনা ব্যবহার করে দ্বিতীয় হয়18। যতটা সম্ভব সম্ভব মান হিসাবে মান বিবেচনা করার Tcl এর প্রবণতা কারণে, এটি সাধারণত অপারেটর ব্যবহার করার মত একটি ভাল ধারণা নয়==যখন আপনি সত্যিই স্ট্রিং তুলনা করতে চান এবং অপারেডগুলির মানগুলি নির্বিচারে হতে পারে; এটা ব্যবহার করার ক্ষেত্রে এই ক্ষেত্রে ভালদড়ি পরিবর্তে কমান্ড।
কর্মক্ষমতা বিবেচনা
সেরা গতি এবং ছোট স্টোরেজ প্রয়োজনীয়তা জন্য ধনুর্বন্ধনী এক্সপ্রেশন। এই Tcl বাইটকোড কম্পাইলার সর্বোত্তম কোড জেনারেট করতে পারবেন।
উপরে উল্লিখিত হিসাবে, এক্সপ্রেশন দুইবার প্রতিস্থাপিত হয়: একবার Tcl প্যাসারার দ্বারা এবং একবার দ্বারা expr কমান্ড। উদাহরণস্বরূপ, কমান্ড
একটি সেট 3 সেট বি {$ একটি + 2} EXP $ বি * 4
ফেরত 11, একাধিক নয় 4. এটি কারণ Tcl পার্সার প্রথম বিকল্প হবে$ A + 2 পরিবর্তনশীল জন্যখ, এরপরexpr কমান্ড অভিব্যক্তি মূল্যায়ন করা হবে$ A + 2 * 4.
সর্বাধিক এক্সপ্রেশন প্রতিস্থাপন একটি দ্বিতীয় রাউন্ড প্রয়োজন হয় না। হয় তারা ধনুর্বন্ধনী মধ্যে আবদ্ধ হয় বা, যদি না, তাদের পরিবর্তনশীল এবং কমান্ড প্রতিস্থাপন সংখ্যা বা স্ট্রিং যা নিজেদের প্রতিস্থাপন প্রয়োজন হয় উত্পাদন। যাইহোক, কয়েকটি অসংগঠিত এক্সপ্রেশন প্রতিস্থাপনগুলির দুইটি রাউন্ড দরকার কারণ, বাইটিকোড কম্পাইলারকে এই পরিস্থিতি পরিচালনা করতে অতিরিক্ত নির্দেশনাগুলি নির্বাহ করতে হবে। সবচেয়ে ব্যয়বহুল কোড কমান্ড প্রতিস্থাপন ধারণকারী unbraced এক্সপ্রেশন জন্য প্রয়োজন বোধ করা হয়। এক্সপ্রেশন এক্সিকিউট করা প্রতিটি সময় নতুন কোড জেনারেশন দ্বারা এই এক্সপ্রেশন অবশ্যই প্রয়োগ করা আবশ্যক।
কীওয়ার্ড
গাণিতিক, বুলিয়ান, তুলনা, অভিব্যক্তি, অস্পষ্ট তুলনা
গুরুত্বপূর্ণ: ব্যবহার মানুষ কমান্ড ( % মানুষ ) আপনার কম্পিউটারে কোন কমান্ড ব্যবহার করা হয় তা দেখতে।