|
|
(4 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) |
سطر 1: |
سطر 1: |
− | <noinclude>{{DISPLAYTITLE: صفحة الصنف <code>ConditionVariable</code> في روبي}}</noinclude> | + | <noinclude>{{DISPLAYTITLE: الصنف <code>ConditionVariable</code> في روبي}}</noinclude> |
| [[تصنيف: Ruby]] | | [[تصنيف: Ruby]] |
| + | [[تصنيف: Ruby Class]] |
| [[تصنيف: Ruby ConditionVariable]] | | [[تصنيف: Ruby ConditionVariable]] |
− | يمكن تمثيل الأعداد العقدية (تُسمّى أيضًا أعدادًا مركبة) كزوج مكون من عدد حقيقي ووحدة تخلية (العدد <code>i</code>) ؛ وفق الشكل <code>a+bi</code>، حيث <code>a</code> هو الجزء الحقيقي، و <code>b</code> هو الجزء التخيلي و <code>i</code> هو الوحدة الخيالية.
| + | توسع كائنات الصنف <code>ConditionVariable</code> عمل الصنف <code>[[Ruby/Mutex|Mutex]]</code>. فمن الممكن باستخدام المتغيرات الشرطية إيقاف مهمة حرجة (critical section) في أثناء تنفيذها إلى حين إتاحة مورد ما. |
| | | |
− | العدد الحقيقي <code>a</code> يساوي رياضياتيًا العدد العقدي <code>a+0i</code>.
| + | إليك المثال التالي:<syntaxhighlight lang="ruby"> |
| + | mutex = Mutex.new |
| + | resource = ConditionVariable.new |
| | | |
− | يمكن إنشاء الأعداد العقدية بطريقة حرفية، وأيضا باستخدام التوابع <code>Kernel#Complex</code> أو <code>::rect</code> أو :<code>:polar</code> أو <code>#to_c.</code> إليك الأمثلة التالية:<syntaxhighlight lang="ruby">
| + | a = Thread.new { |
− | 2+1i #=> (2+1i)
| + | mutex.synchronize { |
− | Complex(1) #=> (1+0i)
| + | # Thread 'a' now needs the resource |
− | Complex(2, 3) #=> (2+3i)
| + | resource.wait(mutex) |
− | Complex.polar(2, 3) #=> (-1.9799849932008908+0.2822400161197344i)
| + | # 'a' can now have the resource |
− | 3.to_c #=> (3+0i)
| + | } |
− | </syntaxhighlight>يمكنك أيضا إنشاء الكائنات العقدية من الأعداد من النوع <code>float</code> أو من السلاسل النصية كما توضح الأمثلة التالية:<syntaxhighlight lang="ruby">
| + | } |
− | Complex(0.3) #=> (0.3+0i)
| + | |
− | Complex('0.3-0.5i') #=> (0.3-0.5i)
| + | b = Thread.new { |
− | Complex('2/3+3/4i') #=> ((2/3)+(3/4)*i)
| + | mutex.synchronize { |
− | Complex('1@2') #=> (-0.4161468365471424+0.9092974268256817i)
| + | # Thread 'b' has finished using the resource |
| + | resource.signal |
| + | } |
| + | } |
| | | |
− | 0.3.to_c #=> (0.3+0i)
| |
− | '0.3-0.5i'.to_c #=> (0.3-0.5i)
| |
− | '2/3+3/4i'.to_c #=> ((2/3)+(3/4)*i)
| |
− | '1@2'.to_c #=> (-0.4161468365471424+0.9092974268256817i)
| |
− | </syntaxhighlight>تُصنّف الأعداد العقدية إلى مضبوطة (exact) و غير مضبوطة:<syntaxhighlight lang="ruby">
| |
− | Complex(1, 1) / 2 #=> ((1/2)+(1/2)*i)
| |
− | Complex(1, 1) / 2.0 #=> (0.5+0.5i)
| |
| </syntaxhighlight> | | </syntaxhighlight> |
− | ==الثوابت==
| |
− | ===[[Ruby/Complex/I|الثابت التخيلي <code>I</code>]]===
| |
− | يمثل الثابت <code>i</code> العدد التخيلي للأعداد العقدية.
| |
| ==توابع الصنف العامة (Public Class Methods)== | | ==توابع الصنف العامة (Public Class Methods)== |
− | ===[[Ruby/Complex/polar|التابع <code>polar</code>]]=== | + | ===[[Ruby/ConditionVariable/new|<code>new</code>]]=== |
− | يعيد التابع <code>polar</code> عددا عقديا وفق الشكل القطبي (polar form).
| + | ينشئ نسخة جديدة من الصنف <code>ConditionVarialbe</code>. |
− | ===[[Ruby/Complex/rect|التابع <code>rect</code>]]===
| |
− | يعيد التابع <code>rect</code> عددا عقديا وفق الشكل الجبري أو المستطيلي (rectangular form).
| |
− | ===[[Ruby/Complex/rectangular|التابع <code>rectangular </code>]]===
| |
− | يعيد التابع <code>rectangular</code> عددا عقديا وفق الشكل الجبري أو المستطيلي (rectangular form).
| |
| ==توابع الكائن العامة (Public Instance Methods)== | | ==توابع الكائن العامة (Public Instance Methods)== |
− | ===[[Ruby/Complex/star|المعامل <code>*</code>]]=== | + | ===[[Ruby/ConditionVariable/broadcast|<code>broadcast</code>]]=== |
− | يؤدي المعامل <code>*</code>عملية الضرب على الأعداد العقدية.
| + | يوقظ جميع المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. |
− | ===[[Ruby/Complex/exp|المعامل <code>**</code>]]===
| + | ===[[Ruby/ConditionVariable/signal|<code>signal</code>]]=== |
− | يؤدي المعامل <code>**</code>عملية الأسّ (exponentiation) على الأعداد العقدية.
| + | يوقظ أول مهمة فرعية من بين المهام الفرعية (threads) التي تنتظر القفل (lock) المعيّن. |
− | ===[[Ruby/Complex/plus|المعامل <code>+</code>]]===
| + | ===[[Ruby/ConditionVariable/wait|<code>wait</code>]]=== |
− | يؤدي المعامل <code>+</code>عملية الجمع على الأعداد العقدية.
| + | يحرِّر القفل المطبَّق على الكائن <code>[[Ruby/Mutex|mutex]]</code> ثم ينتظر، ثم يستعيد (reacquires) القفل عند الإستيقاظ. |
− | ===[[Ruby/Complex/-|المعامل <code>-</code>]]===
| |
− | يؤدي المعامل <code>-</code>عملية الطرح على الأعداد العقدية.
| |
− | ===[[Ruby/Complex/negation|معامل النفي <code>-</code>]]===
| |
− | يعيد معامل النفي <code>-</code> نفي (مقابل) العدد العقدي.
| |
− | ===[[Ruby/Complex/div|المعامل <code>/</code>]]===
| |
− | يؤدي المعامل <code>/</code>عملية القسمة على الأعداد العقدية.
| |
− | ===[[Ruby/Complex/equality operator|المعامل <code>==</code>]]=== | |
− | يتحقق المعامل <code>==</code>من تساوي عددين عقديين.
| |
− | ===[[Ruby/Complex/abs|التابع <code>abs</code>]]===
| |
− | يعيد التابع <code>abs</code> منظم (القيمة المطلقة) للعدد العقدي الذي استدعي معه.
| |
− | ===[[Ruby/Complex/abs2|التابع <code>abs2</code>]]===
| |
− | يعيد التابع <code>abs2</code> مربع القيمة المطلقة للعدد العقدي الذي استدعي معه.
| |
− | ===[[Ruby/Complex/angle|التابع <code>angle</code>]]===
| |
− | يعيد التابع <code>angle</code> الجزء الزاوري (angle part) للشكل القطبي للعدد العقدي الذي استدعي معه.
| |
− | ===[[Ruby/Complex/arg|التابع <code>arg</code>]]===
| |
− | يعيد التابع <code>arg</code> منظم (arg part) العدد العقدي الذي استدعي معه وفق الشكل القطبي.
| |
− | ===[[Ruby/Complex/arg|التابع <code>arg</code>]]===
| |
− | يعيد التابع <code>conj</code> مرافق العدد العقدي.
| |
− | ===[[Ruby/Complex/arg|التابع <code>conjugate</code>]]===
| |
− | يعيد التابع <code>conjugate</code> مرافق العدد العقدي.
| |
− | ===[[Ruby/Complex/denominator|التابع <code>denominator</code>]]===
| |
− | يعيد التابع <code>denominator</code> قاسم (denominator) العدد العقدي، أي المضاعف المشترك الأصغر (lcm) للجزءين الحقيقي والتخيلي.
| |
− | ===[[Ruby/Complex/fdiv|التابع <code>fdiv</code>]]=== | |
− | يقوم التابع <code>fdiv</code> بعملية القسمة على العدد العقدي.
| |
− | ===[[Ruby/Complex/finite|التابع <code>finite?</code>]]===
| |
− | يتحقق التابع <code>finite?</code> مما إذا كانت القيمة المطلقة (absolute part) للشكل القطبي للعدد العقدي الذي استُدعي معه منتهيًا (finite).
| |
− | ===[[Ruby/Complex/imag|التابع <code>imag</code>]]===
| |
− | يعيد التابع <code>imag</code> الجزء التخيلي للعدد العقدي.
| |
− | ===[[Ruby/Complex/imaginary|التابع <code>imaginary</code>]]===
| |
− | يعيد التابع <code>imaginary</code> الجزء التخيلي (imaginary part) للعدد العقدي.
| |
− | ===[[Ruby/Complex/infinite|التابع <code>infinite?</code>]]===
| |
− | يعيد التابع <code>infinite?</code> قيمة بحسب ما إذا كانت القيمة المطلقة (absolute part) للشكل القطبي للعدد العقدي منتهية أو غير منتهية (infinite).
| |
− | | |
− | [[Ruby/Complex/inspect|التابع <code>inspect</code>]]
| |
− | | |
− | يعيد التابع <code>inspect</code> العدد العقدي على شكل سلسلة نصية لأجل التفتيش (inspection).
| |
− | | |
− | [[Ruby/Complex/magnitude|التابع <code>magnitude</code>]]
| |
− | | |
− | يعيد التابع <code>magnitude</code> الجزء المطلق (absolute part) للشكل القطبي للعدد العقدي.
| |
− | ===[[Ruby/Complex/numerator|التابع <code>numerator</code>]]===
| |
− | يعيد التابع <code>numerator</code> مقام (numerator) العدد العقدي.
| |
− | ===[[Ruby/Complex/phase|التابع <code>phase</code>]]===
| |
− | يعيد التابع <code>phase</code> الجزء الزاوي (angle part) للشكل القطبي للعدد العقدي الذي استُدعي معه.
| |
− | ===[[Ruby/Complex/quo|التابع <code>quo</code>]]===
| |
− | يؤدي التابع <code>quo</code>عملية القسمة على الأعداد العقدية.
| |
− | ===[[Ruby/Complex/rationalize|التابع <code>rationalize</code>]]===
| |
− | يعيد التابع <code>rationalize</code> القيمة الجذرية (rational ) المقابلة للعدد العقدي. ينبغي أن يكون الجزء التخيلي معدوما.
| |
− | | |
− | [[Ruby/Complex/real|التابع <code>real</code>]]
| |
− | | |
− | يعيد التابع <code>real</code> الجزء الحقيقي (real part) للعدد العقدي.
| |
− | | |
− | === [[Ruby/Complex/real-3F|التابع <code>real? </code>]] ===
| |
− | يعيد التابع <code>real?</code> القيمة <code>false</code> دائمًا.
| |
− | | |
− | === [[Ruby/Complex/to c|التابع <code>to_c</code>]] ===
| |
− | يعيد التابع <code>to_c</code> العدد العقدي نفسه.
| |
− | | |
− | === [[Ruby/Complex/to f|التابع <code>to_f</code>]] ===
| |
− | يعيد التابع <code>to_f</code> العدد العقدي الذي استدعي معه على شكل عدد من النوع <code>float</code> إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي العدد 0 تمامًا، وإلا فسيطلق الخطأ <code>RangeError</code>).
| |
− | | |
− | === [[Ruby/Complex/to i|التابع <code>to_i</code>]] ===
| |
− | يعيد التابع <code>to_i</code> العدد العقدي الذي استدعي معه على شكل عدد صحيح من النوع <code>integer</code> إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي العدد 0 تمامًا، وإلا فسيطلق الخطأ <code>RangeError</code>).
| |
− | | |
− | === [[Ruby/Complex/to s|التابع <code>to_s</code>]] ===
| |
− | يعيد التابع <code>to_s</code> العدد العقدي الذي استدعي معه على شكل سلسلة نصية.
| |
− | ===[[Ruby/Complex/to r|التابع <code>to_r</code>]]===
| |
− | يعيد التابع <code>to_r</code> القيمة الجذرية (rational ) المقابلة للعدد العقدي. ينبغي أن يكون الجزء التخيلي معدوما.
| |
| ==مصادر== | | ==مصادر== |
− | <span> </span>
| + | *[http://ruby-doc.org/core-2.5.1/ConditionVariable.html قسم الصنف ConditionVariable في توثيق روبي الرسمي.] |
− | *[http://ruby-doc.org/core-2.5.1/Complex.html قسم الصنف Complex في توثيق روبي الرسمي.] | |