الخميس، 1 أكتوبر 2020

برمجة الحاسوب - سلاسل النصية strings

برمجة الحاسوب - سلاسل النصية strings 





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

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

char ch1 = 'ab';
char ch2 = '10';

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

#include <stdio.h>

main() {
   int number[5] = {10, 20, 30, 40, 50};
   int i = 0;
        
   while( i < 5 ) {
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

number[0] = 10
number[1] = 20
number[2] = 30
number[3] = 40
number[4] = 50

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

#include <stdio.h>

main() {
   char ch[5] = {'H', 'e', 'l', 'l', 'o'};
   int i = 0;
        
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

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

ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

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

#include <stdio.h>

main() {
   char ch[5] = "Hello";
   int i = 0;
    
   /* Print as a complete string */
   printf("String = %s\n", ch);  

   /* Print character by character */
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

هنا ، استخدمنا٪ s لطباعة قيمة السلسلة الكاملة باستخدام اسم المصفوفة ch ، وهو في الواقع بداية عنوان الذاكرة الذي يحمل متغير ch كما هو موضح أدناه -

عرض السلسلة في C / C ++

على الرغم من أنه غير مرئي من الأمثلة المذكورة أعلاه ، إلا أن برنامج C داخليًا يعين حرفًا فارغًا '\ 0' باعتباره الحرف الأخير من كل سلسلة. يشير إلى نهاية السلسلة ويعني أنه إذا كنت تريد تخزين سلسلة أحرف مكونة من 5 أحرف في مصفوفة ، فيجب عليك تحديد حجم مصفوفة من 6 كممارسة جيدة ، على الرغم من أن C لا تشكو من ذلك.

إذا تم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

String = Hello
ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

مفاهيم السلسلة الأساسية

بناءً على المناقشة أعلاه ، يمكننا استنتاج النقاط المهمة التالية حول السلاسل في لغة برمجة C -

  • يتم تمثيل السلاسل في لغة C كمصفوفات من الأحرف.

  • يمكننا تكوين سلسلة في برمجة C عن طريق تخصيص حرف بحرف في مصفوفة من الأحرف.

  • يمكننا تكوين سلسلة في برمجة لغة سي عن طريق تعيين سلسلة كاملة محاطة بعلامة اقتباس مزدوجة.

  • يمكننا طباعة حرف سلسلة بحرف باستخدام مصفوفة منخفضة أو سلسلة كاملة باستخدام اسم مصفوفة بدون خط منخفض.

  • الحرف الأخير من كل سلسلة هو حرف فارغ ، أي "\ 0" .

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

سلاسل في جافا

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

فيما يلي البرنامج المكافئ المكتوب بلغة جافا. تستخدم Java المعامل الجديد لإنشاء متغيرات سلسلة كما هو موضح في البرنامج التالي.

يمكنك محاولة تنفيذ البرنامج التالي لرؤية الإخراج -

public class DemoJava {
   public static void main(String []args) {
      String str = new String("Hello");  
      System.out.println( "String = " + str );
   }
}

عند تنفيذ البرنامج أعلاه ، فإنه ينتج النتيجة التالية -

String = Hello

الأوتار في بايثون

يعد إنشاء سلاسل في Python أمرًا بسيطًا مثل تخصيص سلسلة في متغير Python باستخدام علامات اقتباس مفردة أو مزدوجة.

يوجد أدناه برنامج بسيط يقوم بإنشاء سلسلتين ويطبعهما باستخدام وظيفة print () -

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1 = ", var1
print "var2 = ", var2

عند تنفيذ البرنامج أعلاه ، فإنه ينتج النتيجة التالية -

var1 =  Hello World!
var2 =  Python Programming

لا تدعم بايثون نوع الحرف ؛ يتم التعامل مع هذه كسلاسل بطول واحد ، وبالتالي تعتبر أيضًا سلسلة فرعية.

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

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

عندما يتم تنفيذ الكود أعلاه ، فإنه ينتج النتيجة التالية -

var1[0]:  H
var2[1:5]:  ytho

التسميات: