النصوص (السلاسل النصية ) :
النص عبارة عن سلسلة أو مصفوفة من الحروف أو العناصر الرمزية توضع بين علامتي تتصيص
مزدوجتين ""؛ فأي كلمة وأي أرقام متتابعة أو أية رموز أخرى يمكن أن تكون سلسلة نصية.
ولأن النص كما أسلفنا هو مصفوفة من الحروف فإنه بمعرفتنا لدليل أو رقم ترتيب أي حرف في المصفوفة
يمكننا التحكم فيه كيفما أردنا ؛ وفي لغة سي # فإن دليل أول عنصر في سلسلة نصية هو الصفر وثاني عنصر
أما طول النص فهو يحدد بعدد العناصر المكونة له ؛ فمثلا كلمة "سلسلة" طولها 5 ؛ كما أن دليل آخر حرف
فيها هو 4 أو هو طول الكلمة - 1 .
المتغير يحتوي على هذه القيمة //:/0018]70111[161 18م "حو
الدوال التي تتعامل مع النصوص :
في شرح الدوال سنفترض بأن 8 متغير نصي ؛ وأن ؛ و زأرقام أو متغيرات صحيحة .
قبل شرح الدوال أود الإشارة إلى أن معامل الجمع + يمكننا من جمع سلسلتين نصيتين مع ودمجهما في سلسلة
الدالة 105000 :
هي دالة عامة نقوم بتحويل أي متغير أو تعبير إلى سلسلة نصية ؛ والمثال التالي يوضح
الفئة 001761 :
فئة بها دوال أعضاء وظيفتها التحويل بين الأنواع ؛ وسنحتاجها للتحويل من النوع النصي إلى الصحيح
الدالة (0ئ )6005/11 :
الدالة (1:0607)60 :
تقوم بإرجاع رقم ترتيب أول ظهور للنص »و في النص الذي نتعامل معه ؛ فمثلا :
الدالة (وب) و11 :
تقوم بإدخال أو حشر السلسلة 0و في السلسلة و عند رقم الترتيب 1 :
المتغير العضو 160861 :
يقوم بإرجاع طول النص .
باع 1-510
الدالة (زيت)76٠ 186010 :
تقوم بحذف أو إزالة مجموعة حروف من السلسة التي نتعامل معها بداية من الدليل ز بعدد ز من الحروف :
وإذا أردنا أن نحذف من الحرف © إلى نهاية السلسلة نكتب التالي:
الدالة (1866)5171,50:2م6 :
تقوم باستبدال النص 801 بالنص 502 أينما وجد في السلسلة و :
تالالد وري
الدالة (60و)1نام5 :
تقوم تقسيم السلسلة و إلى مجموعة سلاسل يفصل بينها رقم ترتيب 8 ؛ ويتم استقبال السلاسل الجزئية الناتجة
الدالة )56001511711 :
الدالة (زمنع 505070 :
تقوم باستخلاص سلسلة فرعية من السلسلة و بطول زمن الحروف ابتداء من الحرف ذي رقم الترتيب 1 .
الدالة 0ع«م101 :
تقوم بتحويل الحروف الكبيرة في السلسلة إلى حروف صغيرة .
0" دود
والدالة 1010080 عكسها .
الدالة 10 :
تقوم بإزالة الفراغات من بداية ونهاية السلسلة ؛ والدالة 1710054:10 تزيل الفراغات من البداية فقط ؛ و
12000 من النهاية فقط .
وبهذا ننتهي من الدوال ؛ وأشير إلى أنه يمكن ربط السلاسل باستخدام المعامل +:
بل الجلطوادي
تمارين في معالجة النصوص :
تمرين 1:
في هذا التمرين سنقوم بتغيير جملة خبرية إلى جملة استفهامية :
الشرح :
في أول سطر عرفنا المتغير النصي » وأعطيناه القيمة المبينة .
في السطر الثاني قمنا بطباعة قيمة المتغير 8 .
السطر الثالث فيه نبدأً في تحويل الجملة ؛ إذ أن الجملة الخبرية تنتهي بالنقطة فإننا نقوم بالبحث عنها وحذفها
من النص ؛ وهذا ما يفعله السطر الثالث ؛ وكان بالإمكان إزالتها بالجملة التالية لو كانت هي آخر حرف في
الجملة - لاحظ أني تعمدت وضع فراغ في نهاية الجملة -.
في السطر الرابع عرفنا متغيرآً نصيآً جديداً 50 وأعطيناه قيمة ؛ والتي هي نص جزئي من المتغير 9 ؛ هذا
ستبداً من 1 التي تنتهي بها الكلمة 11:5 وليس هذا هو المطلوب ؛ وهذا سبب وجود الفراغ الأمامي ؛ أما
الفراغ الاخير فلو أنه كانت ثمة كلمة تدأ ب وز فإنها لن تؤخذ في الاعتبار ؛ ولأن الجملة التي لدينا لا تحتوي
على كلمة مثل هذه فإنه غير ضروري .
في السطر الخامس قمنا بإزالة النص "18 ” من المتغير 5 ولم نزل النص " 19 " لأننا لو فعلنا فإن كلمة 0001
في السطر السادس أعطينا للمتغير 8 قيمة المتغير 80# - مزالة منه الفراغات في البداية والنهاية - مع فراغ مع
قيمة و الحالية .
في السطر السابع قمنا بإزالة الفراغات من بداية ونهاية السلسلة و هذه الفراغات تكون قد نتجت من عملية
الاقتطاع والتبديل .
في السطر الثامن حولنا كل حرف كبير في السلسلة الجديدة الناتجة إلى حرف صغير .
العاش .
في السطر الحادي عشر أضفنا الحرف "7" إلى نهاية السلسة كي تدل على الاستفهام .
وفي السطر الثاني عشر نقوم بطباعة السلسلة الناتجة .
تمرين 2 :
في هذا التمرين ستكون لدينا السلسلة التالية :10+9+8+7+6+5+4+3+2+1" وسنقوم بمعالجتها لنحصل
على ناتج الجمع :
حدس ]11
الشرح :
تتكرر الحلقة ما دام المتغير 8 يحتوي على إشارة الجمع .
أول سطر في الحلقة يستخلص نص جزئيا من المتغير 8 ؛ هذا النص بيدا من أول حرف في المتغير 8 إلى
أول ظهور لعلامة الجمع + مع عدم دخولها في النص الجزئي ؛ ثم يقوم بتحويله إلى عدد صحيح ثم يضيفه
إلى المتغير الصحيح 8010
في السطر الثاني يقوم بإزالة النص الجزئي السابق من المتغير 6 مع علامة الجمع الأولى .
ثم تتكرر الحلقة إلى أن يصبح المتغير و غير محتو على علامة الجمع وحينها تصبح قيمته "10"؛ وبلطيع
هذه القيمة لم تضف إلى المتغير 07 في الحلقة ؛ ولذا فإن أول سطر بعد نهاية الحلقة يقوم بإضافتها .
في التمرين السابق قمنا بالمطلوب ولكن الحل كان معقدآ ؛ أو يمكن القول أنه لم يكن معقداآ ولكن شة حل أبسط
وأسهل منه .
وهنا أشير إلى أن معالجة النصوص ليست استخداما للدوال فقط بل إنها أفكار أولآ ؛ مع معرفة أي دالة هي
الأفضل في أداء المراد ومن ثم استخدامها هي هو الأولى .
فمتلآ في المثال السابق لو أننا قمنا بتقسيم السلسلة باستخدام الدالة 51:40 عند كل إشارة + لكان أبسط
ولاستغنينا عن الدالتين 18000780 و (110*010 والكود التالي يوضح ذلك :
تبسيط كان قبل الوصول إليه أقرب إلى المستحيل ؛
تمرين 3:
في هذا التمرين سنحسب ناتج العبارة "1+23*4*5*6+7+8*9+10" بطريقتين :
بغت 0ح1ت0؟ ]11
(-ز:0<زيا - 10:0
وبحدزنام
*)001د1. سا :خطاع معا عاق( * )10001 .نا )7 متلع 51517.16
الكود السابق يقوم بالمطلوب ؛ ولكن انظر إلى بساطة الكود التالي :
:1+23*4*5*6+7+8*9+0 "حو عصاة