ما هو النوع الترتيبي؟ أنواع البيانات الترتيبية في باسكال

05.04.2019

الباب الثاني. أنواع البيانات.

§7. أنواع البيانات. الأنواع الترتيبيةلغة باسكال.

أنواع البيانات.

في الفقرة الثانية، تعلمنا القليل عن أنواع البيانات. كان هذا ضروريًا لبدء البرمجة. في هذا القسم سوف نلقي نظرة تفصيلية على جميع أنواع البيانات الموجودة في باسكال.

أولاً، دعونا نكتشف ما هو مصطلح "أنواع البيانات" نفسه. وللقيام بذلك، قمنا بإدراج عدد من الجوانب، والتي سبق أن تم ذكر بعضها في الفقرة الثانية.

تتكون الذاكرة في الكمبيوتر من خلايا أولية يمكن أن تحتوي فقط على واحد أو صفر. كل خلية لها عنوانها الفريد. حجم الذاكرة في خلية واحدة يسمى قليلا. ويطلق على حجم الذاكرة الذي يبلغ 8 خلايا بايت. 1024 بايت تشكل كيلو بايت. و1024 كيلو بايت تساوي ميجا بايت واحد. 1024 ميجا بايت– واحد جيجا بايت، و1024 جيجا بايت- تيروبايت واحد.

السؤال ذو الصلة الذي يجب أن يتبادر إلى ذهنك هو لماذا يوجد 1024 بايت في الكيلوبايت الواحد. والحقيقة هي أن البادئة، على سبيل المثال، كيلو، في الحياة العادية تعني أنه يجب ضرب الرقم بالألف. على سبيل المثال، 5 كيلومترات– هذا 5000 متر. لكن عند الإشارة إلى مقدار الذاكرة، فإن البادئة كيلو تعني أنه يجب ضرب الرقم في 1024. وهذا الرقم لم ينشأ بمحض الصدفة، فهو يساوي اثنين أس عشرة. وفي وقت من الأوقات، وافق المبرمجون الأوائل وقرروا تسمية سعة الذاكرة البالغة 1024 بايت بواحد كيلو بايت. وبناءً على ذلك، فإن 1 كيلو بايت مضروبًا في كيلو بايت واحد يساوي ميغا بايت واحد. وواحد ميجا بايت مضروبًا في واحد ميجا بايت يساوي واحد جيجا بايت. وما إلى ذلك وهلم جرا.

كان السبب في هذا الترتيب هو بنية أجهزة الكمبيوتر نفسها. وكان من الملائم للمبرمجين الأوائل استخدام هذا الرقم بالذات.

على سبيل المثال، يمكننا حساب عدد الخلايا الأولية الموجودة فيها ذاكرة الوصول العشوائيغيغابايت واحد. غيغابايت واحد– هذا هو 1024 ميغا بايت. ميجا بايت واحدهذا هو 1024 كيلو بايت. وعليه فإن الجيجابايت الواحدة تحتوي على 1024 × 1024 = 1048576 كيلو بايت. اضرب في 1024 مرة أخرى واحصل على 1073741824 بايت. دعونا نضرب هذا الرقم في 8نحصل على 8589934592 بت. هذا هو عدد خلايا الذاكرة الأولية الموجودة في غيغابايت واحد من ذاكرة الوصول العشوائي.

هيا لنذهب. لنتخيل أننا بحاجة إلى معالجة 24 خلية ذاكرة أولية، أو بمعنى آخر، 24 بت. يمكن تمثيل محتويات هذه الخلايا كقائمة. على سبيل المثال، يمكن أن يكون مثل هذا:

فكر الآن في كيفية فهم ما هو مكتوب هنا من هذه القائمة التي تبدو فوضوية. ربما هذا هو تاريخ ميلاد شخص ما، أو هنا اسم شخص ما. يمكن أن يكون أي شيء هنا من اسم الشخص إلى التصوير الرقمى. يرجى ملاحظة أن هذا هو المكان الذي يأتي منه اسم التصوير الرقمي. أولئك. يتم تخزين التصوير الفوتوغرافي رقميا.

لكي يتمكن الكمبيوتر من فهم المعلومات المسجلة في الذاكرة، هناك أنواع من البيانات. على سبيل المثال، إذا قسمنا هذه القائمة إلى 4 مجموعات مكونة من 8 بتات، فسنحصل على 4 بايت من المعلومات. من أجل الوضوح، دعونا نعيد كتابة القائمة بمسافات:

00000001 00000010 00010100 00001101

على سبيل المثال، يمكننا أن نعتبر هذه القائمة على النحو التالي: هناك أربعة أرقام ثنائية في المجموع. لنفترض أن الرقم الأول سيشير إلى يوم الشهر، والثاني- الشهر الثالث - أول رقمين من السنة، والرابعثاني رقمين من السنة. على التوالى هذه القائمةلقد اعتبرناه بمثابة نوع من التاريخ. في هذه الحالة، نحن نفهم ما تعنيه هذه القائمة الفوضوية التي تبدو بلا معنى من الآحاد والأصفار.

من حيث المبدأ، يمكننا قراءة هذه القائمة بالطريقة التي نريدها. يمكنك الحصول على قطعتين، واحدة أو خمس. يمكن أن تعني هذه القائمة أيضًا أي شيء، والشيء الرئيسي هو أننا يجب أن نتفق مسبقًا على كيفية قراءتها وماذا ستعني.

هذا الترتيب هو بالضبط ما هي أنواع البيانات. أولئك. استخدام نوع معيننحن "نتفق مع الكمبيوتر" على ذلك كمية معينة منقليلا سوف يدل عدد معينأو رسالة أو أي شيء آخر.

عن أرقام ثنائيةلن نتحدث الآن، لأن في هذه المرحلةهذا غير ضروري. الشيء الرئيسي الذي يجب أن تفهمه هو أنه إذا كنت تريد استخدام عدد صحيح، على سبيل المثال، فيجب عليك اختيار نوع عدد صحيح، إن وجد رقم كسريفالنوع حقيقي، وإذا كان رمزًا فالنوع char، وهكذا.

الآن دعنا ننتقل إلى دراسة أنواع البيانات. في باسكال، يمكن دمج عدد من الأنواع في مجموعات بناءً على خصائص معينة. يوجد أدناه رسم تخطيطي يوضح جميع الأنواع والمجموعات بوضوح.

يمكنك استخدام هذا المخطط في البداية للاختيار النوع الصحيح، في المستقبل سوف نتذكره من تلقاء نفسه. وأيضًا سيتضح لك منطق دمج الأنواع في مجموعات.

الأنواع الترتيبية.

خصوصية الأنواع الترتيبية هي أن المتغير من أي نوع ترتيبي له عدد محدود من القيم المحتملة وأن عدة متغيرات من أي نوع ترتيبي يمكن ترتيبها بترتيب تنازلي أو تصاعدي، أي. تنظيم (ومن هنا الاسم). وأيضًا حقيقة أن المتغيرات من الأنواع الترتيبية فقط هي التي يمكن أن تكون معلمة لحلقة For to do.

أنواع كاملة.

كما ذكرنا من قبل، فإن المتغير من النوع الصحيح يحتوي على عدد صحيح. لقد درسنا بالفعل نوع البايت من الأعداد الصحيحة. يمكن أن يحتوي متغير من هذا النوع على عدد صحيح من 0 إلى 255 ضمناً. يشغل 1 بايت من ذاكرة الكمبيوتر. إذا أردنا رقمًا سالبًا أو رقمًا أكبر من 255، فيمكننا استخدامه نوع عدد صحيح. يمكن أن يحتوي المتغير من هذا النوع على أعداد صحيحة من -32768 إلى +32767 ضمناً. ومع ذلك، فإن مثل هذا المتغير سوف يشغل 2 بايت في الذاكرة.

اسم

ترجمة

الأسماء باللغة الروسية

مقاس

مشغول

الذاكرة بالبايت

يتراوح

قيم

من

قبل

بايت

بايت

ShortInt

عدد صحيح قصير

كلمة

كلمة

65 535

عدد صحيح

جميع

32 768

32 767

LongInt

عدد صحيح طويل

2 147 483 648

2 147 483 647

لسهولة التذكر، يوفر الجدول ترجمات لأسماء الأنواع. في عمود نطاق القيمة، تقع الأرقام المعطاة ضمن هذا النطاق. على سبيل المثال، يمكن أن يحتوي متغير من النوع Integer على الرقم 32,767، ولكن لا يمكن أن يحتوي على الرقم 32,768.

إذا قمت بإعلان متغير من أي نوع، فلن يحدث أي فرق ما هو الرقم المكتوب فيه، 0 أو، على سبيل المثال، 199. في أي حال، سوف يشغل نفس عدد البايتات في الذاكرة. ولذلك، يجب عليك اختيار نوع البيانات على أساس ما القيمة القصوىيمكن أن تؤخذ بواسطة متغير أثناء تشغيل هذا البرنامج. يعد ذلك ضروريًا حتى لا تشغل ذاكرة إضافية.

ومن الجدير بالذكر أيضًا أن العمليات ذات الأعداد الكبيرة قد تستغرق وقتًا أطول من العمليات ذات الأعداد الصغيرة. لذلك، يجب ألا تستخدم، على سبيل المثال، نوع LongInt إذا كنت تعلم أن المتغير لن يقبل قيمًا أكبر من 32,767.

بالطبع في برنامج صغير، والتي ستعمل بقوة الكمبيوتر الحديث، اختيار النوع الخاطئ (الأكبر حجما) لن يؤثر على تشغيل هذا البرنامج، ولكن، برامج كبيرةيمكن أن تؤثر هذه الرقابة على أداء البرنامج ككل. على سبيل المثال، سينتظر المستخدم النتيجة ليس 3 ثوانٍ، بل 10. بالطبع، إذا انتظرها مرة واحدة يوميًا، فلن ينزعج بشكل خاص، ولكن إذا كان عليه أن يتلقى النتائج طوال اليوم بأكمله، فتخيل كم عدد النتائج التي سيحصل عليها إذا اخترت نوع البيانات بشكل صحيح. الأمر نفسه ينطبق على أنواع البيانات، والتي سيتم دراستها لاحقا.

باستخدام المتغيرات ذات الأنواع الصحيحة، يمكنك إجراء أي عمليات حسابية تمت مناقشتها في الفقرة 3. ومع ذلك، لا يمكن دائمًا تعيين قيمة هذه العملية لمتغير من النوع الصحيح. على سبيل المثال، إذا قسمنا 10 على 3، نحصل على رقم كسري. لذلك، كن حذرًا عند اختيار أنواع البيانات.

بدلاً من عملية القسمة، يمكن إجراء العمليتين التاليتين باستخدام الأعداد الصحيحة:

شعبة - تقسيم صحيح. (نحصل على القيمة من القسمة كما لو كانت بدون الجزء الكسري)؛

عصري - الحصول على ما تبقى من قسمة عدد صحيح.

نعلم جميعًا كيفية إجراء القسمة المطولة. ولفهم هاتين العمليتين يمكن إعطاء الشكل التالي:

إذا استخدمنا الترميز كما هو الحال في الرياضيات العادية، فإن:

9 شعبة 4 = 2؛

أنا، و: عدد صحيح؛

يبدأ

رايتلن( "أدخل عددين صحيحين");

قراءة (ط، و)؛

Writeln(i, "/" ,f, "= ,i div f, " المتبقي " ,i mod f);

نهاية.

____________________________________________________

أدخل عددين صحيحين

13/5=2 الباقي 3

هناك أيضًا وظيفة أخرى للعمل مع الأنواع الصحيحة– Odd، والتي تُرجع True إذا كان الرقم فرديًا وFalse إذا كان الرقم زوجيًا. مثال:

فار ط: عدد صحيح؛

يبدأ

أنا:= 10؛

إذا كان فرديًا (i) فاكتبln("الرقم " ,i, " غريب." )

else writeln("الرقم ",i," زوجي.");

نهاية.

___________________________________________________

الرقم 10 زوجي.

تجدر الإشارة إلى الفروق الدقيقة التالية: إذا كان متغير من النوع الصحيح له القيمة الأخيرة للنطاق، فعند زيادة هذا المتغير بمقدار واحد، فإنه سيأخذ القيمة الأولى للنطاق. والعكس صحيح– إذا كانت القيمة الأولى، ثم عند التناقص بمقدار واحدآخر شيء. على سبيل المثال، إذا كان المتغير A من النوع Byte له القيمة 255، فإن A+1 ستكون مساوية لـ 0. أو إذا تمت زيادته بمقدار اثنين، فإن A+2=1. مثال آخر: إذا كان A=250، فإن A+20=14. مثال آخر، إذا كانت A=0، فإن A-1=255. في مثل هذه الحالات، لا يقوم المترجم بإنشاء خطأ. لن تكون هناك أخطاء عند تنفيذ البرنامج أيضًا. أنت فقط لا تحصل عليه القيمة الصحيحة. يجب أن يكون هذا الظرف أيضًا معيارًا لاختيار النوع الصحيح.

كما ذكرنا من قبل، يمكنك استخدام متغير من أي نوع ترتيبي في حلقة For to do. ومع ذلك، هناك تحذير واحد. إذا حددت بعد الكلمة رقمًا يتجاوز القيم المحتملة لنوع المتغير الذي يظهر بعد الكلمة For، فلن يتم تنفيذ هذه الحلقة مطلقًا. في هذه الحالة، سيتم تنفيذ عامل التعيين الموجود بعد الكلمة For فقط، ولن تتلقى أية رسائل خطأ. على سبيل المثال:

ب: بايت؛

يبدأ

ب:= 2 ;

Writeln(ب);

بالنسبة لـ b:=- 5 إلى 5، قم بعمل Writeln(b);

Writeln(ب);

نهاية.

______________________________

لاحظ أنه لم يتم تنفيذ رمز الحلقة وتم ضبط b على 251. ماذا حدث؟ في حلقة For to do، حاولنا تعيين قيمة للمتغير b خارج نطاق "العمل" لنوع البايت. ماذا فعل الكمبيوتر؟ بدا وكأنه يفعل ما يلي: التعبير الحسابي: ب = 0-5. وما حدث قد تم وصفه في الفقرة السابقة. أولئك. b أصبح يساوي 251، كما يتبين من نتيجة البرنامج.

الآن يجب أن يكون واضحًا سبب عدم تنفيذ رمز الحلقة ولو مرة واحدة. قبل تنفيذ كود الحلقة، تتم مقارنة قيمة المتغير بما يظهر بعد الكلمة to. في هذه الحالة، تبين أن المتغير b المزيد من العدد 5.

إخراج الأعداد الصحيحة كجدول.

لنفكر في مشكلة تمت صياغتها على النحو التالي: من الضروري عرض جدول بالأرقام من 1 إلى 100. يجب أن يحتوي كل سطر على 10 أرقام، لذلك يجب أن يكون هناك 10 أعمدة.

لحل المشكلة، سنفكر كما يلي: يمكننا استخدام إجراءات الكتابة والكتابة لإخراج كل رقم على حدة بالتسلسل المطلوب. ومع ذلك، نحتاج إلى أتمتة هذه العملية بحيث يستغرق الكود أقل عدد ممكن من الأسطر. ولذلك نحن بحاجة إلى استخدام حلقة. في هذه الحالة، عند العمل مع الأعداد الصحيحة، أفضل طريقةتناسبها لحلقةلكى يفعل.

دعونا نحاول استخدام هذه الحلقة لطباعة عشرة أرقام من 1 إلى 10 في سطر واحد:

فار ط: عدد صحيح؛

يبدأ

لأني: = 1 إلى 10 افعل

اكتب (ط: 4)؛

نهاية.

________________________________________

1 2 3 4 5 6 7 8 9 10

يرجى ملاحظة أنه تم تحديد 4 أحرف لعرض المتغير i على الشاشة. وذلك بحيث يتم فصل الرقم الأخير 100 عن الرقم 99 السابق له بمسافة واحدة.

قمنا بتنظيم الإخراج التلقائي لـ 10 أرقام في سطر واحد. الآن علينا أن نفكر في كيفية عرض جميع الأرقام المائة. للقيام بذلك، نحن بحاجة للذهاب إلى خط جديد. لنفعل ذلك وفقًا للشرط التالي: إذا كان الرقم قابلاً للقسمة على 10 بدون باقي، فاستدعي إجراء Writeln:

فار ط: عدد صحيح؛

يبدأ

لأني: = 1 إلى 100 افعل

يبدأ

اكتب (ط: 4)؛

إذا (i mod 10) = 0 ثم writeln;

نهاية ؛

نهاية.

_________________________________________

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

لماذا أعطيت مثالا على هذا البرنامج. أولاً، سيتعين عليك الانسحاب بشكل متكرر قوائم مختلفةعلى شكل جداول، وهذا البرنامج هو مثال لكيفية القيام بذلك. ثانيًا، أردت أن أوضح كيفية حدوث عملية تطوير البرمجيات. أولاً، قمنا بكتابة برنامج لطباعة سطر واحد وتأكدنا من أنه يعمل بشكل صحيح. ثم قمنا بتحسين البرنامج، وبدأ في عرض القائمة بأكملها. هذا هو بالضبط كيف تحدث عملية تطوير البرمجيات. في البداية، يتم تنفيذ بعض الإجراءات الأولية، ثم تصبح أكثر تعقيدًا ويتم إضافة إجراءات جديدة. وفي كل مرة يتم فحص البرنامج للتأكد من وظائفه.

في هذا القسم، نظرنا إلى أنواع البيانات. لقد تعلمنا ما هي الأنواع الموجودة في باسكال. لقد درسنا الأنواع بأكملها وتعلمنا كيفية عرض القائمة تلقائيًا على الشاشة.

مهام.

1. يقوم المستخدم بإدخال عدد صحيح دون استخدام الدالة الفردية لتحديد ما إذا كان الرقم زوجي أم لا.

2. لدينا 4 أرقام. في السطر الأول، اطبع الأعداد التي تقبل القسمة على 3 بدون باقي، في السطر الثاني– التي تقبل القسمة على ثلاثة مع وجود الباقي. إذا لم يكن هناك أرقام قابلة للقسمة بدون باق أو قابلة للقسمة بباقي، فاعرض الرسالة المناسبة. في السطر الثالث، تحت الرقم الذي يقبل القسمة على الباقي، اطبع الباقي عند القسمة على 3.

3. قم بإنشاء وظيفتك الخاصة لتحديد ما إذا كان الرقم زوجيًا أم لا بناءً على عملية التعديل، بالإضافة إلى برنامج يوضح مثالاً لاستخدام هذه الوظيفة.

4. عرض الأرقام الزوجية فقط من 1 إلى 100 على شكل جدول. يجب أن يحتوي الجدول على 9 أعمدة.

حل.

فار ط: عدد صحيح؛

يبدأ

الكتابة( "أدخل عددًا صحيحًا.");

قراءة (أنا)؛

إذا (i mod 2 )= 0 ثم writeln("الرقم " ,i, " زوجي." )

نهاية.

______________________________________________________

أدخل عددًا صحيحًا.

الرقم 57 غريب

فار i,k,l,m: عدد صحيح ;

S1، s2: لونجينت؛

يبدأ

أنا:= 3 ;ك:= 45 ;ل:= 21 ;م:= 1 ;

رايتلن( "لدينا الأرقام التالية:",i, " " ,k, " " ,l, " " ,m);

S1:= 0 ;s2:= 0 ;

إذا (i mod 3 ) = 0 ثم s1:=s1+ 1 else s2:=s2+ 1 ;

إذا (k mod 3 ) = 0 ثم s1:=s1+ 1 else s2:=s2+ 1 ;

إذا (l mod 3 ) = 0 ثم s1:=s1+ 1 else s2:=s2+ 1 ;

إذا (m mod 3 ) = 0 ثم s1:=s1+ 1 else s2:=s2+ 1 ;

إذا كان s1 = 0 فاكتب ( "لا يوجد عدد يقبل القسمة على 3 بدون باقي.")

وإلا أكتب( "يقبل القسمة على 3 بدون باقي:");

إذا (i mod 3) = 0 ثم اكتب(i, " ");

إذا (k mod 3 ) = 0 ثم اكتب(k, " " );

إذا (l mod 3) = 0 ثم اكتب(l, " ");

إذا (m mod 3 ) = 0 ثم اكتب(m, " ");

اكتب.

إذا كان s2 = 0 فاكتب ( "لا يوجد أعداد تقبل القسمة على 3 مع وجود الباقي.")

وإلا أكتب( "" يقبل القسمة على 3 مع وجود الباقي "");

إذا (أنا مود 3)<>0 ثم اكتب(i: 4);

إذا (ك مود 3)<>0 ثم اكتب(ك: 4);

إذا (ل مود 3)<>0 ثم اكتب(ل: 4);

إذا (م مود 3)<>0 ثم اكتب(م: 4 );

اكتب.

اكتب("الباقي:");

إذا (أنا مود 3)<>0 ثم اكتب ((i mod 3 ): 4 );

إذا (ك مود 3)<>0 ثم اكتب ((k mod 3 ): 4 );

إذا (ل مود 3)<>0 ثم اكتب ((l mod 3 ): 4 );

إذا (م مود 3)<>0 ثم اكتب ((m mod 3 ): 4 );

نهاية.

_________________________________________________________________________

لدينا الأرقام التالية: 3 45 21 1

مقسومًا على 3 بدون الباقي: 3 45 21

القسمة على 3 والباقي: 1

المتبقي: 1

الدالة chetnost(i: integer): منطقية؛

يبدأ

إذا (i mod 2) = 0 فإن chetnost:= صحيح

آخر شيتنوست:= خطأ ;

نهاية ؛

فار ط: عدد صحيح؛ ب:منطقية؛

يبدأ

الكتابة( "أدخل عددا صحيحا");

قراءة (أنا)؛

ب:=تشيتنوست(i);

إذا كان b ثم writeln("الرقم " ,i, " زوجي." )

else writeln("الرقم ",i," غريب.");

نهاية.

_____________________________________________

أدخل عددًا صحيحًا

الرقم 3 غريب

فار ط: عدد صحيح؛

الأنواع الترتيبية هي تلك التي تتوافق مع البيانات التي تدعم مفاهيم "القيمة السابقة" و"بواسطة". القيمة التالية" على سبيل المثال، بالنسبة للعدد الصحيح 5، يمكننا بالتأكيد أن نقول أنه يسبقه الرقم 4، والرقم التالي هو الرقم 6. ومن ناحية أخرى، من المستحيل تحديد الرقم الذي يسبق الرقم الحقيقي 5.0 مباشرة.

يحدد الكائن Pascal الأنواع الترتيبية التالية:

- أنواع كاملة؛

- أنواع الشخصيات؛

- أنواع منطقية.

- أنواع محدودة.

بالنسبة للأنواع الترتيبية، يتم تعريف عدد من الوظائف التي تعكس تفاصيل هذه البيانات. وترد قائمة بهذه الوظائف في الجدول 6.1.

الجدول 6.1 - وظائف أنواع البيانات الترتيبية

استمرار الجدول 6.1

6.1.1.1 أنواع البيانات الصحيحة

يتم استخدام أنواع البيانات الصحيحة لتمثيل الأعداد الصحيحة. الأنواع التي توفر الاداء العالي، نكون عدد صحيحو أساسي. يشغل كلا النوعين 4 بايت في الذاكرة ويأخذان قيمًا في النطاق: for Integer -2147483648..2147483647, for كاردينال 0..4294967295. في الحالات التي تتطلب نطاقًا أكبر من الأرقام، يمكنك استخدام النوع int64.

يجب أن نتذكر أن العمليات الحسابية مع الأعداد الصحيحة لها خصائصها الخاصة. العملية المستخدمة للتقسيم هي شعبة، الذي يقوم بتقسيم الأعداد الصحيحة. يمكن العثور على باقي قسمة عدد صحيح على عدد صحيح باستخدام العملية عصري.

بالنسبة للبيانات الصحيحة، يمكنك أيضًا استخدام العمليات المنطقية، مثل و، أو، XOR. سيتم تحديد النتيجة من خلال تطبيق العملية المناسبة على كل زوج من البتات المقابلة للتمثيل الثنائي للأرقام. عند إجراء مثل هذه العمليات، غالبا ما يتم استخدام التمثيل الست عشري للأرقام. علامة الرقم السداسي العشري هي علامة $ قبل الرقم، على سبيل المثال $FF يقابله عدد عشري 255، و100 دولار تتوافق مع الرقم العشري 256.

يمكنك أيضًا استخدام عمليات نقل الرموز الثنائية لرقم إلى اليسار ( shl) صحيح ( shr) على رقم معينالتصريفات. التحول إلى اليمين بمقدار بت واحد يتوافق مع تقسيم صحيحالأرقام في 2. الإزاحة إلى اليسار بمقدار مكان واحد يتوافق مع الضرب في 2. على سبيل المثال، نتيجة لتنفيذ التعليمة $FF shr 4، نحصل على النتيجة $0F.

6.1.1.2 أنواع بيانات الأحرف

تم تصميم أنواع الأحرف لتمثيل الشخصيات. هناك نوعان من الرموز التي يمكنك استخدامها في Object Pascal:

– يتوافق نوع Char مع مجموعة مكونة من 256 حرفًا، حيث يتم ترتيب الأحرف وفقًا لجدول ترميز ANSI (المخطط الوطني الأمريكي) الكود القياسي للحصول على معلوماتتبادل). كل حرف من هذا النوع يستهلك 1 بايت. يتم تحديد المراسلات بين الكود والحرف المقابل له من خلال ما يسمى بجدول ترميز الأحرف. يتم استخدام النصف الأول من الجدول (الرموز من 0 إلى 127) لأحرف التحكم والأرقام، حروف لاتينيةوالرموز الأكثر شيوعاً، مثل علامات الترقيم ورموز العمليات الحسابية وغيرها. يتم استخدام النصف الثاني من الجدول (الرموز من 128 إلى 255). الأبجديات الوطنيةورموز أخرى.

- نوع WideChar يتوافق مع مجموعة أحرف يونيكود، حيث يشغل كل حرف 2 بايت، وبطبيعة الحال، يمكن أن يحتوي جدول الرموز هذا على جدا قائمة كبيرةالشخصيات. وهي تتوافق مع الرموز الموجودة في النطاق من 0 إلى 65535. أول 256 حرفًا في هذه المجموعة تتوافق مع أحرف ANSI مع الرموز المقابلة.

في لدينا العمل المختبريسوف نستخدم نوع Char فقط. يتم عرض جزء من جدول ترميز الأحرف أدناه في الجدول 6.2.

الجدول 6.2 - تشفير بعض أحرف ANSI

رمز شفرة التمثيل الثنائي التمثيل الست عشري
رمز مفقود 0000 0000 $00
فضاء 0010 0000 $20
! 0010 0001 $21
0011 0000 $30
0011 0001 $31
0011 0010 $32
0011 0011 $33
أ 0100 0001 $41
ب 0100 0010 $42
ج 0100 0011 $43
أ 0110 0001 $61
ب 0110 0010 $62
أ $C0
ب $C1
أ 1110 0000 $E0
ب 1110 0001 $E1
أنا 1111 1111 $FF

انتبه لترتيب الرموز في الجدول. يسمح هذا الترتيب بترتيب الكلمات والمعرفات ترتيب ابجديباستخدام رمز الحرف.

يمكن كتابة ثوابت الأحرف طرق مختلفة. بالنسبة لمعظم الأحرف، يمكنك استخدام صورة لهذا الحرف محاطة بعلامات اقتباس مفردة. على سبيل المثال، "1"، "z"، "*". رموز خاصةومن الملائم تمثيلهم باستخدام الكود الخاص بهم، كعدد صحيح يسبقه علامة #. على سبيل المثال، #0، #8، #13. بالإضافة إلى ذلك، يمكن الحصول على أي حرف باستخدام الدالة chr()، التي تمرر رمز الحرف كوسيطة. على سبيل المثال، يُرجع chr(65) الحرف الكبير 'A'، بينما يُرجع chr(255). حرف صغير"أنا" باللغة السيريلية.

يمكن إجراء التحويل العكسي، أي تحويل الحرف إلى رمز، باستخدام الدالة ord(). على سبيل المثال، ord('0') سيُرجع 48.

عند إدخال أحرف فردية من مكونات فئة TEdit، يجب أن تضع في اعتبارك ذلك خاصية النصمن هذه المكونات لا يُرجع حرفًا، بل سلسلة من الأحرف. للحصول على حرف فردي من هذه السلسلة، استخدم الرقم التسلسلي للحرف في السلسلة، واكتبه بين قوسين مربعين بعد اسم سلسلة الأحرف. على سبيل المثال، Edit1.text.

تنطبق جميع عمليات المقارنة على الرموز. في هذه الحالة، تتم مقارنة رموز الأحرف. ولذلك، فإن "b" > "B"، و"a" في السيريلية أكبر من "a" اللاتينية.

يتم ترتيب مجموعات الأحرف التي تتوافق مع الحروف لتسهيل عملية التحويل الحروف الكبيرةللصغار والعكس. الفرق في ترميز الحروف الكبيرة والصغيرة والأبجدية اللاتينية والروسية هو 20 دولارًا أو 32 دولارًا. لذلك، لتحويل حرف صغير إلى حرف كبير، يكفي طرح 32 من الكود الخاص به، وقد لا يتم تذكر الرقم 32 ، حيث يمكن الحصول عليه عن طريق طرح الكود الحرف الكبيرمن الرمز الصغير المقابل. على سبيل المثال، أمر(ض) – أمر(ز)، أو أمر(أ) - أمر(أ).

الميزة الخاصة للترميز الرقمي هي أن الجزء الأقل أهمية من الحرف الرقمي يتوافق مع القيمة العدديةالخامس التمثيل الثنائي. يتيح لك ذلك تحويل رمز الحرف الخاص بالأرقام بسهولة إلى أرقام مقابلة باستخدام عملية منطقيةوالأقنعة $0F. على سبيل المثال، نتيجة للعملية أمر(‘5’) وسيؤدي $0F إلى الرقم 5.

لتحويل رموز الأرقام إلى أرقام مقابلة، يمكنك استخدام حقيقة أن رموز الأرقام تتبع بعضها البعض في جدول الترميز بترتيب تصاعدي لقيم هذه الأرقام.

فيما يلي خياران لمثل هذا التحويل.

الخيار الأول يستخدم الفرق في رموز الصفر والرقم المحدد والذي يتوافق مع القيمة الرقمية لرمز الرقم

فارج:شار; ن:عدد صحيح؛

ن:= أورد(ج)- 48; // وهو ما يعادل ord(c) –ord('0');

يستخدم الإصدار الثاني من هذا التحويل العملية و$0F مع قناع $0F.

مقدار ثابتقناع = $0F؛ // ثابت يساوي عدد ثنائي 00001111

فارج:شار; ن:عدد صحيح؛

ن:= أمر(ج) وقناع؛ // قناع يزيل القضمة العالية

6.1.1.3 نوع البيانات المقيدة.

بالنسبة للأنواع الترتيبية، يمكنك تحديد نطاق فرعي لقيمها المحتملة - سيكون هذا هو النوع المحدود.

يتم تحديد نطاق القيم من النوع المحدود بتعبير النموذج:<минимальное значение>..<максимальное значение>.

على سبيل المثال:

يكتب TCaps = 'A'..'Z';

فار bigLetter: TCaps؛ الشهر: 1..12؛

في هذه الأمثلة، يمكن لمتغير bigLetter قبول الأحرف اللاتينية الكبيرة فقط، ويمكن لمتغير الشهر قبول القيم من 1 إلى 12 فقط.

يتم استخدام الأنواع المقيدة، على سبيل المثال، عند الإعلان عن المصفوفات.

لدى مترجم Object Pascal خيار لتمكين التحقق من النطاق عند تعيين قيمة لمتغير من النوع المقيد - ($ص+). يمكن تشغيله في المكان الموجود في برنامجك حيث تحتاج إلى البدء في التحقق من النطاق، وإيقاف تشغيله في أي مكان باستخدام هذا الخيار ($R-). إذا حاولت تعيين متغير من نوع محدود لقيمة خارج النطاق الفرعي المحدد، فسيتم طرح استثناء مع الرسالة "خطأ في التحقق من النطاق".

يمكن استخدام نوع الفاصل الزمني لتحديد مجموعة من البيانات من هذا النوع عن طريق تضمين الفاصل الزمني أقواس مربعة. على سبيل المثال، يمكن تحديد الكثير من الحروف الروسية بهذه الطريقة ["a".."ya"]. لتحديد ما إذا كان رمز معين ينتمي إلى مجموعة محددة بهذه الطريقة، يمكنك استخدام العملية في، الذي يعود حقيقي،إذا كان الرمز ينتمي إلى المجموعة وخطأ إذا كان لا ينتمي إليها. على سبيل المثال، نتيجة تقييم التعبير "5" في['0'..'9']، سيكون حقيقي.

أنواع بسيطة

ترتيبي

حقيقي

التاريخ والوقت

دعابة الدماغ

رمزي

قابل للقائمة

نطاق النوع

الشكل 1 - أنواع البيانات البسيطة

الأنواع الترتيبية

تختلف الأنواع الترتيبية من حيث أن لكل منها عددًا محدودًا من القيم المحتملة. يمكن ترتيب هذه القيم بطريقة معينة وبالتالي ربطها ببعض الأعداد الصحيحة - الرقم الترتيبي للقيمة.

يتم عرض الوظائف المصممة للعمل مع الأنواع الترتيبية في الجدول 1.

الجدول 1 - وظائف العمل مع الأنواع الترتيبية.

أنواع الأعداد الصحيحة

يعتمد نطاق القيم المحتملة لأنواع الأعداد الصحيحة على قيمها التمثيل الداخلي، والتي يمكن أن تستغرق بايتًا واحدًا أو اثنين أو أربعة أو ثمانية بايت. يسرد الجدول 2 أنواع الأعداد الصحيحة الرئيسية.

الجدول 2 - أنواع الأعداد الصحيحة

اسم

الطول، بايت

مدى من القيم

2147483648 … +2147483647

0 … 2147483647

0 … 4294967295

263 … 263 -1

ملحوظةيقوم Object Pascal بتنفيذ عملية صب الكتابة تلقائيًا. على سبيل المثال، حيث يكون من المقبول استخدام متغير كوسيطة نوع الكلمة، يُسمح باستخدام متغير من النوع Byte، ولكن ليس العكس. قاعدة عامةلذلك، بدلاً من نوع واحد من متغيرات الأعداد الصحيحة، يمكنك استخدام نوع آخر من متغيرات الأعداد الصحيحة إذا كانت نطاقات القيم الخاصة بها متداخلة

إلى صديق.

يوضح الجدول 3 بعض الوظائف للعمل مع المتغيرات الصحيحة.

الجدول 3 - وظائف العمل مع الأعداد الصحيحة

عند العمل مع الأعداد الصحيحة، فإن نوع النتيجة سوف يتوافق مع نوع المعاملات، وإذا كانت المعاملات من أنواع صحيحة مختلفة، فإن النوع العام سوف يتوافق مع كلا المعاملات. على سبيل المثال، لأنواع ShortInt وWord النوع العامسيكون عددا صحيحا.

بشكل افتراضي، لا يقوم المترجم بإنشاء رمز التحقق الذي يتحكم مخرج ممكنالقيم خارج النطاق المقبول مما قد يؤدي إلى عطلالبرامج. على سبيل المثال، عند تشغيل البرنامج في القائمة 1، ستعرض الشاشة صفرًا بدلاً من 65536.

القائمة 1

($IFDEF FPC) ($MODE DELPHI)

(وحدة تحكم APPTYPE) this.programInOutPrg; فار س: كلمة؛ يبدأ

لتمكين التحكم في تجاوز السعة، يجب عليك تحديد توجيه المحول البرمجي ($Q+) لتعطيل التحكم - ($Q-).

بدلاً من ($Q+) يمكنك استخدام($OVERFLOWCHECKS ON) وبدلاً من ($Q-) ($OVERFLOWCHECKS OFF)

قم بتعديل البرنامج في القائمة 1 لوضع التوجيه ($Q+) في السطر الأول. قم بتشغيله، يجب أن يتعطل البرنامج.

بالنسبة للمتغيرات الصحيحة، فمن الأكثر أمانًا استخدام النوع الصحيح، بدءًا من النطاق

القيم من هذا النوع كبيرة بما يكفي لفئة واسعة من المشاكل. من الأفضل تعطيل التحقق خارج النطاق في النسخة النهائية من البرنامج، لأنه يقلل من أداء البرنامج.

أنواع منطقية

يمكن للمتغير المنطقي أن يأخذ قيمتين فقط: True وFalse. يتم عرض الأنواع المنطقية في الجدول 4.

الجدول 4 - الأنواع المنطقية

للعمل مع الأنواع المنطقية، استخدم اكتب منطقيةوأضيفت أنواع أخرى إلى Object Pascal للتوافق مع البرامج المكتوبة بلغات برمجة أخرى.

نوع الحرف

تم تصميم نوع الحرف، كما يوحي اسمه، لتخزين رمز الحرف. البنية الداخلية للنوع هي نفس البنية الداخلية للأعداد الصحيحة غير الموقعة. يدعم Object Pascal نوعين من الأحرف: AnsiChar وWideChar. وتظهر خصائص هذه الأنواع في الجدول 5.

الجدول 5 - أنواع الشخصيات

وصف

رمز الحرف في ترميز ANSI. جدول الرموز لهذا المعيار

يتكون من 256 حرفًا، مع تحديد أول 128 حرفًا بدقة

يتم تعريفها بواسطة المعيار، ويمكن أن تحتوي الـ 128 المتبقية على أي منها

حرف او رمز. الى الجزء الثاني جدول الكودتوضع عادة

رموز الحروف الهجائية الوطنية. العيب في هذا

تمثيل الشخصيات هو أنه من المستحيل عرضها

المزيد من الشخصيات في وقت واحد

من 2 الحروف الهجائية.

الحرف بتنسيق UNICODE. يحتوي جدول الرموز على 65536

الشخصيات. يحتوي هذا الجدول على رموز جميع الحروف الهجائية.

شار1

هو اسم مستعار لنوع AnsiChar

لتحويل رمز الحرف إلى حرف، يجب عليك استخدام الوظيفة التالية

وظيفة حقوق الإنسان (X: بايت): شار

للتحويل العكسي، استخدم الدالة

1 في الكائن نوع باسكالشار أساسي. في الإصدارات القادمةيمكن أن يصبح نوع Char اسمًا مستعارًا لنوع WideChar.

وظيفة الترتيب (X:شار): بايت؛

يمكن تحديد ثابت نوع الحرف بطريقتين. اضبط الحرف على ونقلت واحدةأو تحديد رمز الحرف. الإدخالان التاليان متساويان.

الفصل: = "أ" ;

الفصل:=#97; //97 - رمز الحرف "أ".

على سبيل المثال

فار تش:شار; الكود: بايت؛

ابدأ الفصل: = "أ" ؛

الفصل:=chr(32); //32 - يتوافق مع رمز مفتاح المسافة

نهاية.

نوع التعداد

يتم تحديد النوع المُعدّد من خلال تعداد القيم التي يمكنه تلقيها. يتم تسمية كل قيمة بواسطة معرف ما وتقع في قائمة مؤطرة بين قوسين.

<имя типа>= (معرف، معرف، معرف،...);

هنا "اسم النوع" هو معرف Object Pascal، و"id" هو معرف Object Pascal.

على سبيل المثال، نوع يصف مجموعة ثابتة من الألوان

إن استخدام الأنواع المذكورة يجعل البرامج أكثر وضوحًا ويزيد من موثوقية البرامج. دعونا نحدد الأنواع التالية:

اكتب TColors = (أحمر، أخضر، أبيض، أصفر)؛

Tdays=(الاثنين، الثلاثاء، الأربعاء)؛

المتغيرات المحددة

فار col:TColors;

ثم يُسمح بالعوامل التالية

col:=Succ(green);

day:=Pred(الثلاثاء);

ولكن غير مقبول

الحد الأقصى لعدد القيم المذكورة يعتمد على التنفيذ. حاليًا، يبلغ حجم متغير التعداد 4 بايت، وهو ما يتوافق مع 232 قيمة مختلفة، مما يعني أن نوع التعداد هو LongWord داخليًا.

كما ذكر أعلاه، يمكنك وضع تعريف النوع مباشرة بعد النقطتين، على سبيل المثال

var col: (أحمر، أخضر، أبيض، أصفر)؛ اليوم: (الإثنين، الثلاثاء، الأربعاء)؛

نطاق النوع

نوع النطاق هو مجموعة فرعية من بعض الأنواع الترتيبية الأساسية. يتم تعريف نوع النطاق من خلال حدود قيمه.

<мин. зн.> .. <макс. зн.>

يقوم D Pascal بتوسيع CF Pascal بشكل كبير عن طريق إضافة أنواع بيانات جديدة إلى الرموز والملفات. تصف أنواع البيانات الترتيبية كائنات بسيطة وغير قابلة للتجزئة. يحتوي النوع المذكور على مجموعة ثابتة من الكائنات المسماة. نوع منطقييحتوي على كائنين فقط - TRUE وFALSE. نوع عدد صحيحينفذ الأعداد الصحيحة الإيجابية والسلبية. أخيرًا، جزء من النوع يمكن أيضًا أن يكون بدوره نوعًا، أو نوع نطاق. بالطبع، تتضمن الأنواع عمليات تحدد ما يمكن فعله بالكائنات. بالنسبة للمنطق والعدد الصحيح وما إلى ذلك. هذه العمليات مفهومة جيدًا بشكل حدسي.

تصف أنواع البيانات مجموعات من القيم والعمليات التي يمكن تطبيقها عليها. أنواع البيانات المقدمة بواسطة CF Pascal هي CHAR وTEXT. قيم اكتب شارهي مجموعة رموز باسكال الصالحة والعمليات على هذه القيم هي عوامل مقارنة:

= < > <= >= <>

التي تكون قيمها المقابلة عمليات رياضيةمما يعكس المواضع المختلفة للأحرف في التسلسل الأبجدي. قيم نوع البيانات TEXT هي تسلسلات من السلاسل، كل سطر عبارة عن سلسلة من الأحرف. العمليات على البيانات التالية:

إعادة تعيين إعادة كتابة قراءة كتابة كتابة OEF EOLN

توفر أنواع البيانات فوائد التجريد, تكرارو المصادقة.

أنواع البيانات مجردة خصائص مهمةبيانات. على سبيل المثال، لفهم المقارنة

'أ'< ‘B’

ليست هناك حاجة لمعرفة كيفية تمثيل هذه الرموز في آلة باسكال. يحدد تسلسل الفرز معنى هذه العمليات. لا يحتاج المستخدم إلى معرفة عدد البتات التي تمثل قيمة الحرف، أو ما يحدث للبتات الزائدة، أو ما إذا كانت قيمة البت الخاصة بالحرف صالحة بأكثر من ل أإلخ.

تنفذ الوحدات نوعًا من تجريد البيانات، لكن أنواع البيانات تقدم أكثر من ذلك. إعلان اكتب المتغيراتتسمح لك البيانات بتخزين ومعالجة أي عدد من قيم النوع من خلال هذه المتغيرات. كل استخدام لمتغير في البرنامج يمنحنا ضمانًا بأنه سيتم تطبيق العمليات الصالحة فقط عليه.

يشير سياق المعامل في البرنامج إلى نوع المعامل؛ وهذا النوع الضمني عبارة عن معلومات زائدة عن الحاجة يمكن التحقق منها مقابل نوع المعامل المعلن لمنع العمليات على قيم من النوع الخاطئ. خذ بعين الاعتبار جزء البرنامج التالي:

نوع البرنامج (الإدخال، الإخراج)؛

نظرًا لأن عامل التشغيل = محدد في CF Pascal فقط لمعاملات الأحرف، فإن ظهور Ch وF كمعاملين يشير إلى أنهما من نوع CHAR. تمت كتابة Ch بشكل صحيح، ولكن تم تعريف F كنص، لذلك سيتم اكتشاف عدم التطابق.


هناك نوعان من أنواع البيانات في D Pascal: أنواع البيانات البسيطة وأنواع البيانات المجمعة. لا يمكن أن تتكون قيم الأنواع البسيطة من أجزاء أصغر يمكن معالجتها بشكل فردي. CHAR هو نوع بسيط. قيم أنواع معقدةيتم تشكيل البيانات من خلال الجمع بين قيم الأنواع البسيطة. نص - نوع مركبلأن أسطر الملف تتكون من أحرف.

يتم ترتيب قيم الأنواع البسيطة، أي أنه لكل زوج من القيم من هذا النوع x، y، يكون هناك خيار واحد فقط ممكن: x< y, x = y, x >ذ. لذلك تسمى هذه الأنواع ترتيبية.

يحتوي باسكال على ثلاثة أنواع ترتيبية محددة مسبقًا، والتي يتم تحديدها بواسطة المعرفات CHAR وINTEGER وBOOLEAN. بالإضافة إلى الأنواع الترتيبية المحددة مسبقًا، يوفر باسكال للمبرمج طريقتين لتعريف الأنواع الترتيبية الجديدة، وهما:

  1. أنواع التعداد التي تكون قيمها معرفات فريدة.
  2. أنواع النطاقات التي تكون قيمها قيمًا متسلسلة لنوع ترتيبي آخر.

أي أنه يمكن تعريف أنواع البيانات الترتيبية الجديدة عن طريق تعداد ثوابت النوع أو عن طريق تحديد أن قيم النوع هي نطاق فرعي من القيم النوع الموجود. بناء الجملة للدلالة على هذه الأنواع الترتيبية هو كما يلي:

<обозначение типа> ::= <идентификатор типа> | <نوع جديد>

<идентификатор типа> ::= <идентификатор>

<новый тип> ::= <перечислимый тип> | <тип диапазон>

طرق الوصف ل<перечислимый тип>و<тип диапазон>سيتم تقديمها في الأقسام ذات الصلة أدناه.

عندما يتم تعريف نوع جديد، قد يتم إعطاؤه اسمًا في إعلان النوع. يجب أن يسبق هذا الإعلان إعلان متغيرات الكتلة.

<блок> ::= <раздел объявлений типов> <раздел объявлений переменных>

<раздел объявлений процедур> <раздел операторов>

<раздел объявлений типов>::= النوع<объявления типов> |

هذه القاعدة تبين ذلك<раздел объявлений типов>قد يكون فارغًا (كما كان الحال في جميع البرامج من قبل هذا المكان)

<объявления типов> ::= <объявления типов> <объявление типа> | <объявление типа>

<объявление типа> ::=<идентификатор > = <обозначение типа>

تنص قاعدة السياق المصاحبة لقواعد بناء الجملة هذه على وجود بعض المعرفات فقط<объявлением типа>:

CR لاستخدامها ك<идентификатор типа>, <идентификатор>يجب أن تكون قد ظهرت من قبل في<объявлениях типов>.

هكذا ل

يعد كل من T1 وT2 معرفات للنوع ويمكن استخدامه في الكتلة الحاليةللإعلان عن المتغيرات والمعلمات الرسمية، كما تم استخدام CHAR سابقًا.

الأنواع الترتيبية

الموضوع 3. بنية نوع البيانات. إجراءات موحدةوالوظائف المطبقة على الأعداد الصحيحة، أرقام حقيقية. منطقي، حرف، أنواع معدودة، نوع النطاق. أمثلة.

أنواع البيانات

أي بيانات، أي. تتميز الثوابت والمتغيرات والقيم الوظيفية أو التعبيرات بأنواعها. يحدد النوع مجموعة القيم الصالحة التي يمكن أن يمتلكها الكائن، بالإضافة إلى مجموعة العمليات الصالحة التي يمكن تطبيقها عليه. بالإضافة إلى ذلك، يحدد النوع أيضًا تنسيق التمثيل الداخلي للبيانات في ذاكرة الكمبيوتر.

يتميز Turbo Pascal ببنية متفرعة لأنواع البيانات.

أنواع بسيطة

1. تتميز الأنواع الترتيبية بحقيقة أن كل منها لديه عدد محدود من القيم الممكنة. يمكن ترتيب هذه القيم بطريقة معينة، وبالتالي يمكن ربط رقم معين بكل منها - الرقم الترتيبي للقيمة.

2. الأنواع الحقيقية، بالمعنى الدقيق للكلمة، لها أيضًا عدد محدود من القيم، والتي يتم تحديدها من خلال تنسيق التمثيل الداخلي للرقم الحقيقي.

الأنواع الترتيبية

تتضمن الأنواع الترتيبية أنواعًا صحيحة ومنطقية وشخصية وتعدادًا ونطاقًا. ترجع الدالة ORD(X) القيمة الترتيبية للتعبير X وتنطبق على أي نوع ترتيبي. بالنسبة للأنواع الصحيحة، تقوم الدالة بإرجاع قيمة X نفسها، أي. ORD(X)=X لـ X التي تنتمي إلى أي نوع عدد صحيح.

يعطي ORD(X) لنوع الحرف عددًا صحيحًا في النطاق من 0 إلى 255، وبالنسبة للنوع المُعدَّد، يعطي ORD(X) رقمًا في النطاق من 0 إلى 65535. يحتفظ نوع النطاق بجميع خصائص النوع الترتيبي الأساسي فتكون نتيجة تطبيق الدالة ORD عليه (X) تعتمد على خصائص هذا النوع. يمكنك أيضًا تطبيق الوظائف على الأنواع الترتيبية:

PRED (X) - تُرجع القيمة السابقة للنوع الترتيبي، أي. ORD(PRED (X))= ORD(X)-1;

SUCC(X) - تُرجع القيمة الترتيبية التالية (والتي تتوافق مع رقم سري ORD (X)+1)، أي.