انتقل إلى المحتوى الرئيسي

نوع البيانات

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

تحديد نوع البيانات بوضوح هو أحد الفلسفات الأساسية لتصميم Wave. Wave هو نظام قوي تمامًا في الأنواع. تتطلب جميع إعلانات var/fun وتهيئة المتغير نوعًا صريحًا، ولا يتم دعم الاستنتاج المعتمد على السياق للنواع. لذلك، إذا لم يكن هناك نوع مثل var x = 1;، فسيفشل الترجمة. يمكنك من خلال ذلك التعبير بوضوح عن نية الكود واكتشاف الأخطاء مبكرًا خلال زمن التجميع، مما يضمن استخدامًا فعالًا للذاكرة وتنفيذًا مستقرًا.


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

يستخدم نوع الأعداد الصحيحة لتخزين القيم الصحيحة. في Wave يتم عادة استخدام i32 (عدد صحيح 32 بت مع ماركة) و u32 (عدد صحيح 32 بت بدون ماركة)، ولكن يمكنك تحديد حجم بيت العدد بشكل دقيق عند الحاجة.

تتوفر أنواع الأعداد الصحيحة مع العلامة من i8 إلى i1024، بينما يمكن استخدام أنواع الأعداد الصحيحة بدون العلامة من u8 إلى u1024. يمكن من خلال ذلك تلبية مجموعة واسعة من المتطلبات بدءًا من العمليات الحسابية البسيطة إلى العمليات بالأعداد الصحيحة الكبيرة، معالجة التشفير، وبرمجة النظم ذات المستوى المنخفض.

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

var a: i32 = 100;
var b: u32 = 200;

نوع الفاصلة العائمة

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

يقدم Wave أنواع الفاصلة العائمة من f32 إلى f128 مما يتيح للمستخدم الاختيار مباشرة بين دقة الحساب والأداء. يمكن من خلال ذلك التعامل مع عمليّات الأعداد الحقيقية لمجموعة متنوعة من الاستخدامات بدءًا من الحسابات العددية العامة حتى الحسابات العلمية الدقيقة.

فيما يلي مثال على استخدام نوع الفاصلة العائمة.

var pi: f32 = 3.14;
var e: f64 = 2.71828;

نوع السلسلة النصية

يستخدم نوع السلسلة النصية للتعامل مع بيانات النص. في Wave، يتم استخدام الكلمة المفتاحية str لإعلان سلسلة نصية، ويتم التعبير عن الحرف النصّي باستخدام علامات التنصيص المزدوجة (").

تُستخدم السلسلة النصية بشكل واسع في البرامج لطباعة الرسائل، ومعالجة إدخال المستخدم، والتعامل مع البيانات المستندة إلى النص.

فيما يلي مثال أساسي لاستخدام نوع السلسلة النصية.

var text: str = "Hello Wave";

نوع البوليان

نوع البوليان هو نوع بيانات يعبر عن القيم الصحيحة (True) أو الخاطئة (False). في Wave، يتم استخدام نوع bool، ويتم تعيين القيم كـ true أو false.

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

var isActive: bool = true;
var isAvailable: bool = true;

نوع الحرف

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

يتم تمثيل الأحرف بالنصوص الحرفية باستخدام علامات الاقتباس الفردية (').

var letter: char = 'A';

نوع البايت

يُستخدم نوع البايت لتخزين البيانات بحجم 1 بايت. هذا النوع مفيد في الحالات التي تتطلب معالجة بيانات منخفضة المستوى مثل معالجة البيانات الثنائية، وإدخال وإخراج الملفات، والبرمجة الشبكية.

في Wave، يتم الإعلان عن نوع البايت باستخدام الكلمة الرئيسية byte.

var byteData: byte = 0xFF;

نوع المؤشر

يُستخدم نوع المؤشر للإشارة مباشرة إلى عناوين الذاكرة. في Wave، يتم إعلان نوع المؤشر بصيغة ptr<T>.

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

var ptr: ptr<T> = &someVariable;

النص الحرفي null

في Wave، null هو نص حرفي رسمي.

  • null ليس معرفًا مميزًا. (صيغة غير صحيحة var null = ...)
  • القيمة null يمكن أن تُسنَد فقط إلى النوع ptr<T>.
var p: ptr<i32> = null;  // OK

// var n: i32 = null; // ERROR
// var b: bool = null; // ERROR

نوع المصفوفة

يُستخدم نوع المصفوفة لتخزين قيم متعددة من نفس نوع البيانات بترتيب متتابع. في Wave، تُعلن المصفوفة بصيغة array<نوع, حجم>، ويتم تحديد حجم المصفوفة بوضوح أثناء وقت الترجمة.

من خلال ذلك، تصبح بنية الذاكرة واضحة، ويكون الوصول مستقرًا.

var numbers: array<i32, 5> = [1, 2, 3, 4, 5];

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