أنواع البيانات الصحيحة والحقيقية في باسكال. توربو باسكال. أنواع البيانات. أنواع البيانات الصحيحة في باسكال

تعد معرفة وفهم أنواع البيانات جزءًا لا يتجزأ من البرمجة.

سنتعرف في هذا الدرس على أنواع البيانات في لغة البرمجة Turbo Pascal.

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

هيكل أنواع البيانات في باسكال:

أنواع بسيطة من اللغة
تتضمن الأنواع البسيطة الأنواع الترتيبية والحقيقية والسلسلة والعنوان (المؤشر). تحدد جميعها نوع قيمة واحدة فقط.

الأنواع الترتيبيةتتميز بحقيقة أن كل منها لديه عدد محدود من القيم الممكنة، والتي يتم من خلالها إنشاء ترتيب خطي. يمكن ربط كل قيمة ببعض الأعداد الصحيحة - رقمها التسلسلي.

أنواع الأعداد الصحيحة- تشير إلى مجموعات من الأعداد الصحيحة في نطاقات مختلفة. هناك خمسة أنواع من الأعداد الصحيحة، تختلف في نطاق القيم الصالحة وحجم ذاكرة الوصول العشوائي (RAM) التي تشغلها. يتم تحديد أنواع الأعداد الصحيحة بواسطة معرفات: Byte، ShortInt، Word، Integer، LongInt؛ وتظهر خصائصها في الجدول التالي.

تتم كتابة قيم الأنواع الصحيحة في البرنامج بالطريقة المعتادة:
123 4 -3 +345 -699
إن وجود فاصلة عشرية في تدوين عدد صحيح أمر غير مقبول. سيكون من الخطأ كتابة عدد صحيح مثل هذا:
123.0
بالإضافة إلى التدوين العشري المعتاد، من الممكن كتابة الأعداد الصحيحة بتنسيق سداسي عشري باستخدام البادئة $، على سبيل المثال:
$01AF $FF $1A $F0A1B
حالة الحروف A، B، ...، F لا يهم.

العمليات الصالحة:

  • - تكليف؛
  • - جميع العمليات الحسابية: +، -، *، /، div، mod (مع القسمة العادية [/] تكون النتيجة حقيقية!)
  • - مقارنة<, >, >=, <=, <>, =.
نوع منطقي- يتكون من قيمتين فقط: خطأ (خطأ) وصحيح (صحيح). الكلمتان False وTrue معرفتان في اللغة وهما في الواقع ثوابت منطقية. حالة الحروف في كتابتها غير مهمة: خطأ = خطأ. القيم من هذا النوع هي نتيجة تقييم التعبيرات الشرطية والمنطقية والمشاركة في جميع أنواع العوامل الشرطية للغة.
العمليات الصالحة:
  • - تكليف؛
  • - مقارنة:<, >, >=, <=, <>, =;
  • - العمليات المنطقية: NOT، OR، AND، XOR
نوع الحرف (شار)- هذا نوع بيانات يتكون من حرف واحد (علامة، حرف، رمز). يمكن أن تكون قيمة Char أي حرف من مجموعة أحرف ASCII. إذا كان للرمز تمثيل رسومي، فسيتم كتابته في البرنامج بين علامات اقتباس مفردة (فواصل عليا)، على سبيل المثال:
"ث" "س" "." "*" " "-(فضاء)
لتمثيل الفاصلة العليا نفسها، يتم مضاعفة صورتها: """".
إذا لم يكن للحرف تمثيل رسومي، على سبيل المثال، حرف جدولة أو حرف إرجاع إلى أول السطر، فيمكنك استخدام نموذج مكافئ لكتابة قيمة الحرف، يتكون من البادئة # ورمز ASCII للحرف:
#9 #32 #13
العمليات الصالحة:
  • - تكليف؛
  • - مقارنة:<, >, >=, <=, <>، =. أكبر حرف هو الذي يحتوي على رقم ASCII أكبر.
نوع السلسلة (سلسلة، سلسلة [ن])- يحدد نوع البيانات هذا تسلسلات الأحرف - السلاسل. تحدد المعلمة n الحد الأقصى لعدد الأحرف في كل سطر. إذا لم يتم تحديده، فسيتم افتراض n=255. تتم كتابة قيمة من النوع "سلسلة" في البرنامج على شكل سلسلة من الأحرف المحاطة بعلامات اقتباس مفردة (فواصل عليا)، على سبيل المثال
"هذه سلسلة"
"1234" هو أيضًا سلسلة، وليس رقمًا
"" - سطر فارغ

العمليات الصالحة:
  • - تكليف؛
  • - الإضافة (التسلسل، الاندماج)؛ على سبيل المثال، S:= "Winter"+" "+"وصل!";
  • - مقارنة:<, >, >=, <=, <>، =. تعتبر السلاسل متساوية إذا كانت بنفس الطول ومكافئة لكل حرف.
أنواع حقيقية- تشير إلى مجموعات من الأعداد الحقيقية في نطاقات مختلفة. هناك خمسة أنواع حقيقية، تختلف في نطاق القيم المسموح بها وحجم ذاكرة الوصول العشوائي المشغولة. يتم تحديد الأنواع الحقيقية بواسطة معرفات: Real، Single، Double، Extended، Comp؛ وتظهر خصائصها في الجدول التالي.

نوع شركاتعلى الرغم من تصنيفه على أنه نوع حقيقي، إلا أنه في الواقع عدد صحيح يحتوي على نطاق كبير جدًا من القيم.
يمكن كتابة قيم الأنواع الحقيقية في البرنامج بعدة طرق:
1.456 0.000134 -120.0 65432
+345 0 -45 127E+12
-1.5E-5 -1.6E+12 5E4 0.002E-6

سيكون من الخطأ كتابة رقم حقيقي مثل هذا:
.5 (الصحيح 0.5)
12. (الصحيح 12.0 أو 12)

يتم كتابة العدد الحقيقي في صورة النقطة العائمة (الشكل العلمي) على شكل زوج
<мантисса>ه<порядок>
تُفهم هذه التسمية على أنها "الجزء العشري مضروبًا في عشرة إلى قوة تساوي الترتيب". على سبيل المثال،
-1.6E+12 يقابل -1.61012

العمليات الصالحة:
- تكليف؛
- جميع العمليات الحسابية: +، -، *، /؛
- مقارنة:<, >, >=, <=, <>, =.

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

النطاق أو (النوع المقيد) ليس نوعًا لغة محددًا مسبقًا (مثل Integer أو Char) وبالتالي لا يوجد به معرف مرتبط به. هذا النوع هو مدخلات المستخدم. باستخدامه يمكننا تحديد نوع جديد يحتوي على قيم فقط من نطاق فرعي محدود لبعض الأنواع الأساسية. يمكن أن يكون النوع الأساسي فقط نوعًا صحيحًا ونوع Char (حرف) وأي نوع من أنواع التعداد التي يقدمها المبرمج.

لإدخال نوع جديد - نطاق - تحتاج إلى الإشارة في وصف نوع TYPE إلى حظر اسم النوع المُدخل وحدود النطاق من خلال رمز النطاق الخاص ".." (نقطتان على التوالي):
يكتب
القرن = 1..21؛ (نطاق فرعي من النوع الصحيح)
CapsLetters = "A"."Z"; (نطاق فرعي من النوع Char)

أنواع اللغات المنظمة

تتضمن الأنواع المنظمة ما يلي: المصفوفة، والسجل، والمجموعة، والملف، وما إلى ذلك. تحدد جميعها نوع (أو أنواع) بعض هياكل البيانات.

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

يتم تحديد نوع المصفوفة من خلال البناء:
صفيف [نطاق] من ElementType؛

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

TYPE Vector = مجموعة حقيقية؛ VAR V1: المتجه؛ V2: مجموعة من البايتات؛
هنا يتم تعريف المتغير V1 باستخدام نوع Vector الموصوف أعلاه؛ يتم إنشاء نوع المتغير V2 مباشرة في مرحلة وصفه.

كنوع عنصر مصفوفة، يمكنك أيضًا تحديد مصفوفة، وبالتالي تكوين هياكل متعددة الأبعاد. على سبيل المثال، سيبدو وصف البنية ثنائية الأبعاد (المصفوفة) كما يلي:
VAR M1: مصفوفة من البايتات؛ يمكن كتابة نفس الشيء بشكل أكثر إحكاما: VAR M2: array of Byte;
هنا تتمتع المصفوفتان M1 وM2 بنفس البنية تمامًا - مصفوفة مربعة بحجم 3x3.

يتم الوصول إلى عنصر المصفوفة عن طريق تحديد فهرسه، على سبيل المثال:

رايتلن(V1); (عرض العنصر الأول من الصفيف V1) readln(M2); (إدخال العنصر الثالث من الصف الثاني من المصفوفة M2)
وبهذا ينتهي الدرس الخاص بأنواع البيانات، حيث تم نسخ النص ولصقه بالكامل تقريبًا (سيكون الرابط أدناه)، لأنه لا أرى فائدة من سرد هذه المادة بكلماتي الخاصة. إذا كان الفرق بين أنواع البيانات واضحا قليلا على الأقل، فهذا جيد بالفعل.

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

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

يتم وصف المتغيرات قبل رمز البرنامج الرئيسي. يشار هنا إلى أسماء المتغيرات ونوع البيانات المخزنة فيها.

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

يحدد نوع المتغير البيانات التي يمكن تخزينها في موقع الذاكرة المرتبط به.

اكتب المتغيرات عدد صحيحيمكن ربطه فقط بقيم الأعداد الصحيحة التي تقع عادة في النطاق -32768 إلى 32767. لدى باسكال أنواع أعداد صحيحة أخرى (بايت، لونجينت).

اكتب المتغيرات حقيقيتخزين الأعداد الحقيقية (الكسرية).

عامل منطقيةالنوع (المنطقي) (المنطقي) يمكن أن يأخذ قيمتين فقط - حقيقي(1، صحيح) أو خطأ شنيع(0، خطأ).

نوع الحرف (شار)يمكن أن تأخذ القيم من تسلسل محدد من الأحرف.

نوع الفاصل الزمنييحددها المستخدم ويتم تشكيلها فقط من الأنواع الترتيبية. يمثل مجموعة فرعية من القيم في نطاق معين.

يمكنك إنشاء نوع البيانات الخاص بك ببساطة عن طريق سرد القيم التي يمكن أن يأخذها متغير من هذا النوع. هذا هو ما يسمى نوع البيانات المعدودة.

كل ما سبق هو أنواع بيانات بسيطة. ولكن هناك أيضًا أنواعًا معقدة ومنظمة تعتمد على أنواع بسيطة.

مجموعة مصفوفةهي بنية تشغل مساحة واحدة في الذاكرة وتتكون من عدد ثابت من المكونات من نفس النوع.

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

سِجِلّهو هيكل يتكون من عدد ثابت من المكونات تسمى الحقول. يمكن أن تكون البيانات الموجودة في الحقول المختلفة للسجل من أنواع مختلفة.

مجموعاتتمثل مجموعة من أي عدد من العناصر، ولكن من نفس النوع المذكور.

ملفاتبالنسبة لباسكال، فهي عبارة عن تسلسلات من نفس نوع البيانات المخزنة على أجهزة الذاكرة الخارجية (على سبيل المثال، القرص الصلب).

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

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

يمكن أن تحتوي المتغيرات على بيانات مختلفة تمامًا. على سبيل المثال، يمكن لمتغير واحد تخزين اسم شخص ما، ويمكن لمتغير آخر تخزين سنة ميلاده، ويمكن لمتغير ثالث تخزين طوله، وما إلى ذلك. يتم تمثيل هذه البيانات المختلفة بواسطة الكمبيوتر بطرق مختلفة. الاسم عبارة عن سلسلة من الأحرف، وسنة الميلاد عدد صحيح، والطول عدد حقيقي (على سبيل المثال، الارتفاع 1.72 م).

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

أنواع البيانات القياسية الرئيسية للغة Turbo Pascal مذكورة أدناه:

  1. عدد صحيح- بيانات عددية في النطاق من -32768 إلى 32767، وتشغل بايتين في الذاكرة؛
  2. حقيقي- أرقام حقيقية في المدى من 2,9´10 -39 (2,9E-39) إلى 1,7´10 38 (1,7E38)، وتشغل ستة بايتات؛
  3. شار- حرف منفصل، بايت واحد؛
  4. خيط- سلسلة من الأحرف، عدد الأحرف في السطر (طول السلسلة) محدود بالرقم N بين قوسين مربعين، ويستهلك N+1 بايت (إذا لم يتم تحديد الرقم N، فإن الحد الأقصى لطول السطر هو 255 حرفًا)؛
  5. منطقية- النوع المنطقي، له قيمتان: FALSE (خطأ) وTRUE (صحيح)، بايت واحد.

لاحظ أنه يتم تصنيف الأنواع INTEGER وCHAR وBOOLEAN على أنها ترتيبي أنواع ترتيبية.

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

مثال لوصف المتغيرات من أنواع مختلفة:

دلفي / باسكال

فار أ، ب، ج: عدد صحيح؛ المجموع: حقيقي؛ ألفا، بيتا: شار؛ S:سلسلة؛ S_1: سلسلة؛ ر: منطقية؛

أ، ب، ج: عدد صحيح؛

المجموع: حقيقي؛

ألفا، بيتا: شار؛

S: سلسلة [25]؛

S_1: سلسلة؛

ر: منطقية؛

لاحظ أن المتغير S_1 عبارة عن سلسلة أحرف، لكن تعريفه لا يحدد طولًا. في هذه الحالة، يقوم المترجم نفسه بتعيين الحد الأقصى للطول الممكن - 255 حرفا.

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

يتراوح

الحجم بالبايت

اختصار
عدد صحيح
لونجينت

2147483648 .. 2147483647

بايت
كلمة

أنواع البيانات الحقيقية

يتراوح

عدد الشخصيات الهامة

الحجم بالبايت

حقيقي

2.9´10 -39 .. 1.7´10 3 8

أعزب

1.5´10 – 45 .. 3.4´10 3 8

مزدوج

5.0´10 -3 24 .. 1.7´10 3 08

ممتد

3.4´10 -4932 .. 1.1´10 49 32

شركات

2 63 +1 .. 2 63 -1

ما نوع البيانات للاستخدام

قد تقول أن هناك العديد من الأنواع المختلفة، فما هو النوع الذي يجب أن تستخدمه؟
ذلك يعتمد على المهمة الموكلة إليك. على سبيل المثال، تحتاج إلى متغير تخزن فيه طول شخص معين (القيمة الحقيقية): في هذه الحالة يكفي استخدام النوع SINGLE. إذا كنت تستخدم بعض المتغيرات لحساب عدد كائنات معينة (قيمة عددية موجبة)، فاكتشف ما إذا كان هذا الرقم يمكن أن يكون أكبر من 255، وإذا لم يكن كذلك، فاستخدم BYTE، إذا كان ذلك ممكنًا، فلا يمكنك الاستغناء عن WORD، وفي بعض قد تكون هناك حاجة أيضًا إلى حالات LONGINT.

لمعرفة المزيد حول الأنواع المختلفة، اضغط على Shift+F1 في Turbo Pascal (ستظهر نافذة فهرس تعليمات)، ثم حدد الكائن الذي تهتم به (على سبيل المثال، اكتب "type" أو "real").

المحاضرة 2

أساسيات البرمجة.

مقدمة إلى باسكال. أنواع البيانات. عمليات.

أبجدية اللغةباسكال

تتكون أي لغة طبيعية من عناصر مثل الرموز والكلمات والعبارات والجمل. تحتوي لغة البرمجة أيضًا على عناصر مشابهة: الرموز، الكلمات، التعبيرات (العبارات)، العوامل (الجمل).

يتم تشكيل الكلمات من مجموعة من الرموز. التعبيرات - هذه هي مجموعات من الكلمات، والمشغلين - هذه هي مجموعات من الكلمات والتعبيرات. رموز اللغة هي علامات أولية (حروف) تستخدم في تأليف بعض النصوص. لذا فإن مجموعة هذه الرموز تشكل أبجدية اللغة.

تتكون أبجدية باسكال من:

1. الحروف الكبيرة والصغيرة من الأبجدية اللاتينية، والتي تتضمن الأحرف التالية:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - أحرف كبيرة ؛

A b c d e f g h i j k l m n o p q r s t u v w x y z - أحرف صغيرة ؛

2. الأرقام العربية العشرية: 0 1 2 3 4 5 6 7 8 9؛

3. أرقام ست عشرية (مكونة من أرقام وأحرف عشرية من A إلى F)؛

4. 32 حرفًا كبيرًا وصغيرًا من الأبجدية الروسية؛

5. أحرف خاصة:

يمكن لمجموعات الأحرف الخاصة أن تشكل أحرفًا مركبة:

: = المهمة؛

< >غير متساوي؛

>= أكبر من أو يساوي؛

<= меньше или равно;

مدى من القيم؛

(* *) أو () - تعليق.

هيكل برنامج باسكال

لكي يتمكن مترجم Passal من فهم الإجراءات المتوقعة منه بشكل صحيح، يجب تنسيق برنامجك بما يتوافق تمامًا مع بناء الجملة (قواعد بناء البرنامج) لهذه اللغة.

يمكن أن يتكون أي برنامج باسكال من الكتل التالية (يتم تمييز الأجزاء الاختيارية بين قوسين مربعين فيما يلي):

برنامج<имя_программы>;

[الاستخدامات<имена_подключаемых_модулей>;]

[ ملصق<список_меток>;]

[ مقدار ثابت<имя_константы> = <значение_константы>;]

[ يكتب<имя_типа> = <определение_типа>;]

[فار<имя_переменной> : <тип_переменной>;]

[ إجراء<имя_процедуры> <описание_процедуры>;]

[ وظيفة<имя_функции> <описание_функции>;]

البدء (بداية الجزء الرئيسي من البرنامج)

<операторы>

نهاية. (*نهاية الجزء الرئيسي من البرنامج*)

لم تعد الإصدارات اللاحقة من مترجمات لغة باسكال تتطلب تحديد اسم البرنامج، أي سطر البرنامج<имя_программы>; يمكن حذف. ولكن هذا ممكن فقط إذا كان البرنامج بأكمله موجودًا في ملف وحدة نمطية واحد. إذا كان البرنامج يتكون من عدة قطع مستقلة - وحدات، فيجب أن يكون لكل منها رأس (برنامج أو وحدة).

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

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

توجيهات المترجم

السطر الذي يبدأ بالرموز ($ ليس تعليقًا، ولكنه توجيه مترجم - أمر خاص تعتمد عليه عملية تجميع البرنامج وتنفيذه. سننظر في التوجيهات في تلك الأقسام التي تتعلق بها "بالمعنى".

على سبيل المثال، يقوم السطر ($I-,Q+) بتعطيل التحقق من صحة الإدخال/الإخراج ولكنه يمكّن التحكم في تجاوز سعة الحساب.

معرفات

تسمى الأسماء المعطاة لكائنات البرنامج (الثوابت، والأنواع، والمتغيرات، والوظائف والإجراءات، والبرنامج بأكمله) بالمعرفات. يمكن أن تتكون فقط من أرقام وأحرف لاتينية وعلامة "_" (شرطة سفلية). ومع ذلك، لا يمكن أن يبدأ الرقم اسمًا. يمكن أن تكون المعرفات بأي طول، ولكن إذا كان هناك اسمان لهما نفس أول 63 حرفًا، فسيتم اعتبار الأسماء متطابقة.

يمكنك إعطاء أي اسم لكائنات برنامجك، لكن يجب عليك التأكد من أنها مختلفة عن الكلمات المحجوزة التي يستخدمها باسكال، لأن المترجم لن يقبل المتغيرات بأسماء "أجنبية".

فيما يلي قائمة بالكلمات المحجوزة الأكثر شيوعًا:

تنفيذ صفيف shl

سلسلة واجهة الحالة

تسمية ثابت ثم

يستخدم مؤشر الملف

الإجراء البعيد فار

للبرنامج في حين

سجل إلى الأمام مع

تكرار الدالة xor

المتغيرات وأنواع البيانات

المتغير هو كائن برنامج يمكن أن تتغير قيمته أثناء تشغيل البرنامج.

نوع البيانات هو سمة من سمات نطاق القيم التي يمكن أن تتخذها المتغيرات التي تنتمي إلى نوع البيانات هذا.

يجب وصف جميع المتغيرات المستخدمة في البرنامج في قسم var خاص باستخدام القالب التالي:

فار<имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>;

<имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;

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

الثوابت

الثابت هو كائن تكون قيمته معروفة قبل بدء تشغيل البرنامج.

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

هناك ثلاثة أنواع من الثوابت في باسكال:

الثوابت غير المسماة (الأرقام والأرقام، الرموز والسلاسل، المجموعات)؛

الثوابت غير المكتوبة المسماة؛

الثوابت المكتوبة المسماة.

الثوابت غير المسماة

الثوابت غير المسماة ليس لها أسماء، وبالتالي لا تحتاج إلى الإعلان عنها.

يتم تحديد نوع الثابت غير المسمى تلقائيًا، افتراضيًا:

أي تسلسل من الأرقام (ربما يسبقه علامة "-" أو "+"، أو مقسم بنقطة واحدة) ينظر إليه من قبل المترجم على أنه ثابت غير مسمى - رقم (عدد صحيح أو حقيقي)؛

يتم التعامل مع أي تسلسل من الأحرف المحاطة بفواصل عليا على أنه ثابت غير مسمى - سلسلة؛

أي تسلسل من الأعداد الصحيحة أو الرموز مفصولة بفواصل، ومحاطة بأقواس مربعة، يُنظر إليه على أنه ثابت غير مسمى - مجموعة.

بالإضافة إلى ذلك، هناك ثوابتان خاصتان صحيح وكاذب يتعلقان بنوع البيانات المنطقية.

تتضمن أمثلة استخدام الثوابت غير المسماة عوامل التشغيل التالية:

حقيقي 2:= 12.075 + س;

string4:= "abc" + string44;

set5:= *set55;

boolean6:= صحيح؛

الثوابت غير المكتوبة

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

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

الثوابت المكتوبة

الثوابت المسماة المكتوبة هي متغيرات (!) بقيمة أولية تكون معروفة بالفعل عند بدء تشغيل البرنامج. لذلك، أولاً، لا يمكن استخدام الثوابت المكتوبة لتحديد ثوابت وأنواع بيانات ومتغيرات أخرى، وثانياً، يمكن تغيير قيمها أثناء تشغيل البرنامج.

يتم وصف الثوابت المكتوبة باستخدام القالب التالي:

مقدار ثابت<имя_константы> : <тип_константы> = <начальное_значение>;

توضح الأمثلة أدناه كيفية القيام بذلك:

const n: عدد صحيح = -10؛

ب: منطقية = صحيح؛

سنقدم أمثلة على الثوابت المكتوبة من الأنواع الأخرى بينما ندرس أنواع البيانات المقابلة.

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

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

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

من أجل راحة المبرمجين، يحتوي Pascal على العديد من أنواع البيانات القياسية، بالإضافة إلى القدرة على إنشاء أنواع بيانات جديدة بناءً على الأنواع الموجودة (قياسية أو محددة مرة أخرى بواسطة المبرمج نفسه)، والتي تسمى مُنشأة.

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

أنواع البيانات الترتيبية (المنفصلة).

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

أنواع البيانات المنظمة

أنواع البيانات الحسابية

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

منطقي

رمزي

حقيقي

نيتيبيزي

مؤشر مفهرسة

أنواع مبنية

قابل للقائمة

الأسبوع = (su، mo، tu، we، th، fr،sa)؛

المؤشر المكتوب

مجموعة مصفوفة

سلسلة سلسلة

سجل سجل

إجرائية

هدف

الفاصل الزمني (المدى)

أنواع البيانات المبنية بواسطة المبرمج

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

من بين أنواع البيانات الأساسية، تبرز الأنواع الترتيبية. ويمكن تبرير هذا الاسم بطريقتين:

1. يمكن ربط كل عنصر من النوع الترتيبي برقم (ترتيبي) فريد. ترقيم القيم يبدأ من الصفر. الاستثناء هو أنواع البيانات القصيرة والعددية والطويلة. يتزامن ترقيمها مع قيم العناصر.

2. بالإضافة إلى ذلك، يتم تعريف عناصر أي نوع ترتيبي (بالمعنى الرياضي للكلمة)، والذي يعتمد بشكل مباشر على الترقيم. وبالتالي، بالنسبة لأي عنصرين من النوع الترتيبي، يمكن للمرء أن يقول بالضبط أي منهما أصغر وأيهما أكبر.

الإجراءات القياسية التي تتعامل مع أنواع البيانات الترتيبية

يتم تعريف الوظائف والإجراءات التالية فقط للأنواع الترتيبية:

1. تقوم الدالة ord(x) بإرجاع الرقم الترتيبي لقيمة المتغير x (نسبة إلى النوع الذي ينتمي إليه المتغير x).

2. تقوم الدالة pred(x) بإرجاع القيمة التي تسبق x (لا تنطبق على العنصر الأول من النوع).

3. تقوم الدالة succ(x) بإرجاع القيمة التالية لـ x (لا تنطبق على العنصر الأخير من النوع).

4. يقوم الإجراء inc(x) بإرجاع القيمة التالية لـ x (بالنسبة لأنواع البيانات الحسابية، فهذا يعادل عامل التشغيل x:=x+1).

5. يقوم الإجراء inc(x,k) بإرجاع القيمة k التالية لـ x (بالنسبة لأنواع البيانات الحسابية، فهذا يعادل العامل x:=x+k).

6. يقوم الإجراء dec(x) بإرجاع القيمة التي تسبق x (بالنسبة لأنواع البيانات الحسابية، فهذا يعادل العامل x:=x-1).

7. يقوم الإجراء dec(x,k) بإرجاع قيمة k-e التي تسبق x (بالنسبة لأنواع البيانات الحسابية، فهذا يعادل العامل x:=x-k).

للوهلة الأولى، يبدو أن نتيجة استخدام الإجراء inc(x) هي تمامًا نفس نتيجة استخدام الدالة succ(x). إلا أن الفرق بينهما يظهر عند حدود المدى المسموح به. لا تنطبق وظيفة succ(x) على الحد الأقصى للعنصر من النوع، ولكن الإجراء inc(x) لن ينتج عنه أي خطأ، ولكن، وفقًا لقواعد إضافة الآلة، سيضيف العنصر التالي إلى رقم العنصر . الرقم، بطبيعة الحال، سوف يخرج عن النطاق، وبسبب الاقتطاع، سوف يتحول إلى عدد الحد الأدنى لقيمة النطاق. اتضح أن الإجراءين inc() و dec() ينظران إلى أي نوع ترتيبي كما لو كان "مغلقًا في حلقة": مباشرة بعد القيمة الأخيرة تأتي القيمة الأولى مرة أخرى.

دعونا نشرح كل ما قيل مع مثال. لنوع البيانات

اكتب ستة عشر = 0..15؛

محاولة إضافة 1 إلى الرقم 15 ستعطي النتيجة التالية:

سيتم قطع الوحدة الأولية، وبالتالي يتبين أن inc(15)=0.

يتم ملاحظة موقف مماثل عند الحد الأدنى للنطاق المسموح به لنوع البيانات الترتيبي التعسفي للإجراء dec(x) والدالة pred(x):

dec(min_element)= max_element

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

1. النوع المنطقي له قيمتان: false و true، وتحملهما المساواة التالية:

أورد(خطأ)=0، أورد(صحيح)=1، خطأ

بريد (صحيح) = خطأ، نجاح (خطأ) = صحيح،

المؤتمر الوطني العراقي (صحيح) = خطأ، المؤتمر الوطني العراقي (خطأ) = صحيح،

ديسمبر (صحيح) = خطأ، ديسمبر (خطأ) = صحيح.

2. يحتوي نوع الحرف char على 256 حرف ASCII ممتد (على سبيل المثال، "a"، "b"، "i"، "7"، "#"). رقم الحرف الذي يتم إرجاعه بواسطة الدالة ord() هو نفس رقم الحرف الموجود في جدول ASCII.

3. دعونا نلخص أنواع البيانات الصحيحة في الجدول:

نوع البيانات

عدد البايتات

يتراوح

2147483648..2147483647

4. يتم تحديد أنواع البيانات المُعدادة في قسم النوع من خلال إدراج عناصرها بشكل صريح. على سبيل المثال:

نوع الأسبوع = (الأحد، الاثنين، الثلاثاء، الأربعاء، الخميس، الجمعة، السبت)

تذكر أنه بالنسبة لهذا النوع من البيانات:

المؤتمر الوطني العراقي (السبت) = الشمس، ديسمبر (الشمس) = السبت.

5. يتم تعريف أنواع البيانات الفاصلة فقط من خلال حدود نطاقها. على سبيل المثال:

اكتب الشهر = 1..12؛

بودني = mon..fri;

6. يتم وصف أنواع البيانات التي أنشأها المبرمج في قسم النوع وفقًا للنمط التالي:

يكتب<имя_типа> = <описание_типа>;

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

اكتب lat_bukvy = "a".."z"،"A".."Z";

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

اكتب int = عدد صحيح؛

يمكنك تقصير نص البرنامج قليلا.

أنواع البيانات الحقيقية

تذكر أن أنواع البيانات هذه حسابية وليست ترتيبية.

نوع البيانات

عدد البايتات

النطاق (القيمة المطلقة)

1.5*10-45..3.4*1038

2.9*10-39..1.7*1038

5.0*10-324..1.7*10308

3.4*10-4932..1.1*104932

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

سننظر في أنواع البيانات هذه (إلى جانب العمليات المحددة لها) بشكل أكبر على مدار عدة محاضرات.

العمليات والتعبيرات

عمليات حسابية

لنتحدث عن العمليات - الإجراءات القياسية المسموح بها لمتغيرات نوع أو آخر من أنواع البيانات الأساسية. سيكون الأساس هو العمليات الحسابية والمنطقية.

ملاحظة: جميع العوامل المدرجة أدناه (باستثناء "-" الأحادي وليس) تتطلب معاملين.

1. العمليات المنطقية (و- المنطقية AND، أو - المنطقية OR، غير المنطقية NOT، xor - الحصري OR) تنطبق فقط على قيم النوع المنطقي. كما أنها تؤدي إلى قيم منطقية. فيما يلي جداول القيم لهذه العمليات:

صحيح كاذب صحيح

كاذبة كاذبة كاذبة

صحيح كاذب كاذب

2. عمليات المقارنة (=،<>, >, <, <=, >=) تنطبق على جميع الأنواع الأساسية. نتائجها هي أيضًا قيم منطقية.

3. العمليات الحسابية للأعداد الصحيحة تنطبق فقط على أنواع الأعداد الصحيحة. والنتيجة هي عدد صحيح يعتمد نوعه على أنواع المعاملات.

a div b - قسمة a على b بالكامل (ربما ليست هناك حاجة لتذكيرك بأن القسمة على 0 محظورة، لذلك في مثل هذه الحالات تولد العملية خطأ). ستكون النتيجة نوع بيانات مشتركًا مع الأنواع التي تنتمي إليها المعاملات.

على سبيل المثال، (shortint div byte = عدد صحيح). يمكن تفسير ذلك بهذه الطريقة: العدد الصحيح هو الحد الأدنى من النوع الذي يعتبر كل من البايت والاختصار مجموعات فرعية منه.

a mod b - أخذ الباقي عند قسمة a على b. يتم تحديد نوع النتيجة، كما في الحالة السابقة، حسب أنواع المعاملات، و0 هي قيمة غير قانونية لـ b. على عكس نمط التشغيل الرياضي، الذي تكون نتيجته دائمًا رقمًا غير سالب، يتم تحديد علامة نتيجة نمط التشغيل "المبرمج" من خلال علامة المعامل الأول الخاص به. وبالتالي، إذا كان في الرياضيات (-2 mod 5) = 3، فلدينا (-2 mod 5) = -2.

a shl k - إزاحة قيمة a بمقدار k بت إلى اليسار (وهذا يعادل ضرب قيمة المتغير a في 2k). ستكون نتيجة العملية من نفس نوع المعامل (المعاملات) الأول.

a shr k - يقوم بإزاحة قيمة a بواسطة k بت إلى اليمين (وهذا يعادل قسمة قيمة المتغير a على 2k بالكامل). ستكون نتيجة العملية من نفس نوع المعامل (المعاملات) الأول.

و،أو،لا،xor - عمليات حسابية ثنائية تعمل مع بتات التمثيل الثنائي للأعداد الصحيحة، وفقًا لنفس قواعد العمليات المنطقية المقابلة.

4. العمليات الحسابية العامة (+، -، *، /) تنطبق على جميع أنواع العمليات الحسابية. تنتمي نتيجتها إلى نوع بيانات مشترك بين كلا المعاملين (الاستثناء الوحيد هو عملية التقسيم الكسري /، والنتيجة دائمًا هي نوع بيانات حقيقي).

عمليات أخرى

هناك عمليات أخرى خاصة بقيم بعض أنواع بيانات باسكال القياسية. سننظر في هذه العمليات في الأقسام المناسبة:

#، في، +، *، : راجع المحاضرة 5 "الرموز. خطوط. الجموع"

@، ^: راجع المحاضرة 7 "العناوين والمؤشرات"

الوظائف الحسابية القياسية

تتضمن العمليات الحسابية أيضًا وظائف حسابية قياسية. نحن نقدم قائمة بهم مع وصف موجز في الجدول.

وظيفة

وصف

نوع الوسيطة

نوع النتيجة

القيمة المطلقة (المعامل) لعدد

علم الحساب

نفس نوع الوسيطة

ظل قوسي (بالراديان)

علم الحساب

حقيقي

جيب التمام (بالراديان)

علم الحساب

حقيقي

الأس (السابق)

علم الحساب

حقيقي

أخذ الجزء الكسري من الرقم

علم الحساب

حقيقي

أخذ الجزء الكامل من الرقم

علم الحساب

حقيقي

اللوغاريتم الطبيعي (الأساس هـ)

علم الحساب

حقيقي

التحقق مما إذا كان الرقم فرديًا

معنى الرقم

حقيقي

التقريب إلى أقرب عدد صحيح

علم الحساب

التقريب للأسفل - إلى أقرب عدد صحيح أصغر

علم الحساب

جيب (بالراديان)

علم الحساب

حقيقي

التربيع

علم الحساب

حقيقي

الجذر التربيعي

علم الحساب

حقيقي

التعبيرات الحسابية

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

يمكن أن تكون معاملات أي عملية متغيرات أو ثوابت أو استدعاءات دالة أو تعبيرات مبنية على أساس عمليات أخرى. كل ذلك معًا يسمى تعبيرًا.

أمثلة على التعبيرات الحسابية:

(x<0) and (y>0) - تعبير تكون نتيجته من النوع المنطقي؛

z shl abs(k) - المعامل الثاني هو استدعاء للدالة القياسية؛

(x mod k) + min(a,b) + trunc(z) - مزيج من العمليات الحسابية واستدعاءات الوظائف؛

غريب(round(x/abs(x))) - تعبير "متعدد الطوابق".

ترتيب الحساب

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

الجدول 2.1. الأولويات (للجميع) عمليات باسكال

أنواع بيانات لغة باسكال: التصنيف والأوصاف. أنواع البيانات الحسابية والترتيبية، والإجراءات معها. التعبيرات الحسابية: الوظائف والعمليات وترتيب الإجراءات. توافق نوع البيانات والتحويلات.

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

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

لراحة المبرمجين، لدى باسكال العديد من أنواع البيانات القياسية، بالإضافة إلى القدرة على إنشاء أنواع جديدة.

عند إنشاء أنواع جديدة من البيانات بناءً على البيانات الموجودة (المعيارية أو التي يحددها المبرمج نفسه)، يجب أن نتذكر أن أي بناء يجب أن يبنى على أساس جيد. لذلك، الآن سوف نتحدث عن هذا "الأساس".

قائم على أنواع البيانات الأساسيةتم بناء جميع الأنواع الأخرى من لغة باسكال والتي تسمى: إنشاؤه.

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

يتم وصف أنواع البيانات التي أنشأها المبرمج في القسم يكتبوفقا للنموذج التالي:

يكتب<имя_типа> = <описание_типа>;

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

اكتب Lat_Bukvy = "a" .. "z"، "A" .. "Z"؛

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

اكتب Int = عدد صحيح؛

يمكنك تقصير نص البرنامج قليلاً.

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

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

من بين أنواع البيانات الأساسية، أبرزها أنواع ترتيبية. ويمكن تبرير هذا الاسم بطريقتين:

الإجراءات القياسية التي تعالج أنواع البيانات الترتيبية

فقط للكميات أنواع ترتيبيةتم تحديد الوظائف والإجراءات التالية:

  1. وظيفة أورد(خ)إرجاع الرقم الترتيبي لقيمة المتغير x (نسبة إلى النوع الذي ينتمي إليه المتغير x).
  2. وظيفة بريد(خ)تُرجع القيمة التي تسبق x (لا تنطبق على العنصر الأول من النوع).
  3. وظيفة نجاح(خ)تُرجع القيمة التالية لـ x (لا تنطبق على العنصر الأخير من النوع).
  4. إجراء شركة(خ)ترجع القيمة التالية x (for أنواع البيانات الحسابيةوهذا يعادل العامل x:= x + 1).
  5. إجراء شركة(س، ك)تُرجع القيمة k التالية لـ x (for أنواع البيانات الحسابيةوهذا يعادل العامل x:= x + k).
  6. إجراء ديسمبر(خ)تُرجع القيمة التي تسبق x (for أنواع البيانات الحسابيةوهذا يعادل العامل x:= x - 1).
  7. إجراء ديسمبر(س، ك)تُرجع قيمة k–e التي تسبق x (for أنواع البيانات الحسابيةوهذا يعادل العامل x:= x - k).

للوهلة الأولى، يبدو كما لو أن نتيجة تطبيق الإجراء شركة(خ)يتزامن تماما مع نتيجة تطبيق الوظيفة نجاح(خ). إلا أن الفرق بينهما يظهر عند حدود المدى المسموح به. وظيفة نجاح(خ)لا ينطبق على الحد الأقصى للعنصر من النوع، ولكن هنا هو الإجراء شركة(خ)لن ينتج عنها أي خطأ، ولكن، وفقًا لقواعد الإضافة الآلية، ستضيف الوحدة التالية إلى رقم العنصر. سيتجاوز الرقم بالطبع النطاق وسيتحول بسبب الاقتطاع إلى رقم الحد الأدنى لقيمة النطاق. وتبين أن الإجراءات شركة() و ديسمبر() إنهم ينظرون إلى أي نوع ترتيبي كما لو كان "مغلقًا في حلقة": مباشرة بعد النوع الأخير، تأتي القيمة الأولى مرة أخرى.

دعونا نشرح كل ما قيل مع مثال. لنوع البيانات

اكتب ستة عشر = 0 .. 15 ;

محاولة إضافة 1 إلى الرقم 15 ستؤدي إلى النتيجة التالية:

1 1 1 1 1 1 0 0 0 0

سيتم قطع الوحدة الأولية، وبالتالي اتضح ذلك شركة(15)=0 .

ويلاحظ وجود موقف مماثل عند الحد الأدنى للنطاق المسموح به لنوع البيانات الترتيبي التعسفي لهذا الإجراء ديسمبر(خ)والوظائف بريد(خ):

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

دعونا الآن وصف أنواع البيانات الترتيبيةبالتفصيل.

  1. نوع منطقي منطقيةلها قيمتان: خطأ وصحيح، وتحقق لهما المساواة التالية:
  2. لنوع الحرف شاريتضمن 256 حرفًا جدول ASCII الموسع(على سبيل المثال، "أ"، "ب"، "أنا"، "7"، "#"). رقم الحرف الذي تم إرجاعه بواسطة الدالة أورد() ، يطابق رقم هذا الرمز في جدول ASCII.
  3. أنواع البيانات الصحيحةلنضعها في جدول:
  4. قابل للقائمةيتم تحديد أنواع البيانات في القسم يكتبمن خلال سرد عناصرها بشكل واضح. على سبيل المثال:

    اكتب الأسبوع = (الأحد، الاثنين، الثلاثاء، الأربعاء، الخميس، الجمعة، السبت)؛ 0 1 2 3 4 5 6

    تذكر أنه بالنسبة لهذا النوع من البيانات:

  5. أنواع البيانات الفاصلةيتم تحديدها فقط من خلال حدود نطاقها. على سبيل المثال:

    اكتب الشهر = 1 .. 12 ؛
    بودني = الإثنين .. الجمعة؛

  6. يستطيع المبرمج إنشاء أنواع بيانات خاصة به، وهي عبارة عن مزيج من عدة أنواع قياسية. على سبيل المثال:

    اكتب Valid_For_Identifiers = "a" .. "z" , "A" .. "Z" , "_" , "0" .. "9" ؛

يتكون هذا النوع من الجمع بين عدة فترات، وفي هذه الحالة يتم تغيير ترتيب الحروف اللاتينية: إذا كان في النوع القياسي