الرتبة (برمجة الحاسوب)

في برمجة الحاسوب ، يُستخدم مصطلح "الرتبة " عادةً كمرادف لمصطلح "عدد الأبعاد" (أو يشير إليه)؛ [ 1 ] وبالتالي، فإن المصفوفة ثنائية الأبعاد لها رتبة 2 ، والمصفوفة ثلاثية الأبعاد لها رتبة 3 ، وهكذا. وبالتحديد، لا يمكن تقديم تعريف رسمي ينطبق على جميع لغات البرمجة ، لأن لكل لغة مفاهيمها ودلالاتها ومصطلحاتها الخاصة؛ بل قد لا يكون المصطلح مناسبًا، أو على العكس، قد يُستخدم بمعنى محدد جدًا في سياق لغة معينة.

في حالة لغة APL ينطبق المفهوم على كل معامل؛ والثنائيات ("الدوال الثنائية") لها رتبة يسارية ورتبة يمينية .

يوضح المربع أدناه بدلاً من ذلك كيفية تعريف رتبة نوع ورتبة تعبير المصفوفة (بأسلوب شبه رسمي) للغة C++ ويوضح طريقة بسيطة لحسابها في وقت الترجمة.

#include <type_traits> #include <cstddef> /* رتبة نوع * ------------- * * لتكن رتبة النوع T هي عدد أبعاده إذا * كان مصفوفة؛ صفرًا خلاف ذلك (وهو الاصطلاح المعتاد) */ template < typename T > struct rank { static const std :: size_t value = 0 ; };template < typename T , std :: size_t N > struct rank < T [ N ] > { static const std :: size_t value = 1 + rank < T >:: value ; };template < typename T > constexpr auto rank_v = rank < T >:: value ;/* رتبة التعبير * * ليكن رتبة التعبير هي رتبة نوعه */template < typename T > using unqualified_t = std :: remove_cv_t < std :: remove_reference_t < T >> ;template < typename T > auto rankof ( T && expr ) { return rank_v < unqualified_t < T >> ; }

بالنظر إلى الكود أعلاه، يمكن حساب رتبة النوع T في وقت الترجمة بواسطة

rank < T >:: value

أو الشكل المختصر

rank_v < T >

يمكن حساب رتبة التعبير باستخدام

rankof ( expr )

انظر أيضاً

مراجع