درس إحترافي عدد 10:أحرف (Caractères) و سلسلة من الأحرف(Chaîne de caractères)

قد نحتاج في برامجنا إلى تعامل مع الحروف (Character ) أو سلسلة من الحروف (String ) كالبحث عن حرف في وسط الكلمة أو الجمع بين الأحرف أو الحذف حرف أو فراغ… لإظهارها على الشاشة مثلا
في هذا الدرس سنتعرّف كيفيّة التعامل مع الحروف و الكلمات

1-حروف

لتعريف بمتغييّر بأنّه حرف نستعمل char

char c1='d',c2='5',c3='@'

تمّ تعريف C1 و C2 و C3 بأنّه حرف و لا يتمّ التعريف بهذا الشكل

char c1="d"

const char c10='X'

تمّ تعريف بالمتغيّر c10 على إنّه حرف و قيمته X لا يمكن تغيير القيمة لأنّه ثابت (constante)

isAlphaNumeric(...)

تقوم الدّالة isAlphaNumeric بالتثبّت إن كان الحرف ينتمي إلى هذه المجموعة a..z A..Z 0..9
بالتالي المتغيّر c2 و c1 وc10 تكون الإجابة بنعم و بالنسبة للمتغيّر c3 تكون لا

isAlpha(...)

تقوم هذه الدّالة isAlpha بالتثبّت بأن كان الحرف ينتمي إلى هذه المجموعة a..z A..Z
بالتالي المتغيّر c1 وc10 تكون الإجابة بنعم و بالنسبة للمتغيّر c2 وc3 و تكون لا

isLowerCase(...)

تقوم هذه الدّالة isLowerCase بالتثبّت إن كان الحرف كتب بالأحرف صغيرة minuscule تعني من a..z
بالتالي المتغيّر c1 تكون الإجابة بنعم و بالنسبة للبقيّة تكون لا

isUpperCase(...)

تقوم هذه الدّالة isUpperCase بالتثبّت إن كان الحرف كتب بالأحرف كبيرة majuscule تعني من A..Z
بالتالي المتغيّرc10 تكون الإجابة بنعم و بالنسبة للبقيّة تكون لا

isPunct(...)

تقوم هذه الدّالة isPunct بالتثبّت إن كان الحرف كتب بالأحرف مثل نقطة الإستفهام “؟” و نقطة التعجّب” !”و @ و# …
بالتالي المتغيّرc3 تكون الإجابة بنعم و بالنسبة للبقيّة تكون لا

isSpace(...)

تقوم هذه الدّالة isSpace بالتثبّت إن كان الحرف كتب بالأحرف فراغ espace
بالتالي كل المتغيّرالمذكورة تكون الإجابة لا

2- الكلمات

String chaine1, chaine2, chaine3, chaine4

تعريف بالمتغّراتchaine1, chaine2, chaine3, chaine4 بمتغيّر مجموعة حروف

chaine1 = "Arduino ";
chaine2 = "pour";
chaine3 = " les eleves";

تعيين بالمتغير الأوّل chaine1 بقيمة “Arduino ” و تعيين بالمتغير الثاني chaine2 بقيمة “pour ” و تعيين بالمتغير الثالث chaine3 بقيمة “les eleves “
يمكن أن يكون في القيمة حروف و أرقام و أعداد و نقاط تعجّب …

chaine4=chaine1+chaine2+chaine3;

يمكن الجمع بين المتغيّرات من نفس النوع (مجموعة حروف) و نتحصّل كقيمة للمتغيّر chaine4 تساوي “Arduino pour les eleves” (ملاحظة إستعملت حروف إنقليزيّة ولم إستعمل حروف فرنسيّة (élevés)

chaine4=chaine4+"2020"

إضافة للمتغير chaine4 كلمة و ليس عدد 2020

chaine4 = chaine4 + '@';

يمكن الجمع بين مجموعة الحروف و الحرف و لا يمكن الجمع بين الأحرف فقط إلا إذا قمنا بتحويلها إلى مجموعة حروف
chaine4 = 'A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o' هذا خطأ
chaine4 =String()+'A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o' هذا صحيح
chaine4 =chaine1+'A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o' هذا صحيح
chaine4 =String('A') +String( 'r')+ String('d')+ String('u')+ String('i')+ String('n')+ String('o') هذا صحيح
c1 =String('A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o') هذا صحيح
لأن c1 من نوع حرف
CHAINE4 =""+'A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o' هذا خطأ لإن في لغة C هناك إختلاف في إسم المتغيّر بالنسبة الحروف الصغيرة و الحروف الكبيرة
CHAINE4 وchaine04 وChaine4 و cHaine4 وchainE4 …

chaine4 = chaine4 + millis()

يمكن جمعها ما دالة millis و التي وظيفتها بالتعرّف على المدّة الزمنيّة المستغرقة منذ بداية تشغيل الجهاز إلى هذا السطر

Serial.println("\nL15:"+chaine4);

\n تترك سطر فارغ بين الجملتين

+=

chaine4 = "arduino";
chaine4 += " facile";

و قي نفسها” facile” كلمة chaine4 تعني أن نصيف إلى قيمة السابقة للمتغيّر
chaine4 =chaine4+ ” facile”

chaine4.toUpperCase()

تحوّل دالة toUpperCase إلى كروف كبيرة Majuscule

chaine4.toLowerCase()

تحوّل دالة toLowerCase إلى كروف صغيرة minuscule

chaine4.charAt(15)

لإستخراج حرف من كلمة حسب (رقمه حرف الأوّل رقمة 0) نستعمل دالة charAt و يجب وضع القيمة في متغيّر من نوع حرف char

chaine4.setCharAt(2, '@')

لتغيير حرف مثال رقم 2 (تبدأ الأرقام من 0)بـ @ نستعمل الدّالة setCharAt

chaine4.length()

لمعرفة عدد الأحرف في الكلمة نستعمل دالة length و القيمة المستخرجة عدديّة

chaine4.replace('a', 'A');

دالة replace تقوم بتغيير كل الحروف (مثال الحرف a) بحرف A

chaine4= chaine4.substring(4)

لقطع الكلمة نستعمل الدّالة substring مرفوق برقم بداية القطع

chaine4.substring(7,12);

لأخذ جزء من الكلمة مثال من حرف بعد 7 إلى حرف قبل 12

chaine4.trim();

قد يكتب المستعمل كلمة و بسهو يضيف فراغ في أوّل الكلمة أو في آخر الكلمة.فإنّ دالة trim تحذف هذه الفراغات

Serial.write(65)

هناك مجموعة من الحروف مصنّفة كل حرف له رقم خاص تسمّى code ascii
مثلا حرف َA رقمه 65 فإن دالة Serial.write(65) تعطينا حرف A
لمشاهدة جدرل على موقع arduino

كود كامل

void setup() {
Serial.begin(9600);
}
void loop() {
char c1='d',c2='5',c3='@';
const char c10='X';
if (isAlphaNumeric(c1)) {
Serial.println("L01: ALPHANUMERIQUE");
}
if (isAlpha(c1)) {
Serial.println("L02: ALPHABETIQUE");
}
if (isLowerCase(c1)) {
Serial.println("L03= MINUSCULE");
}
if (isUpperCase(c1)) {
Serial.println("L04= MAJUSQULE");
}
if (isPunct(c3)) {
Serial.println("L05: PONCTIATION");
}
if (isSpace(c1)) {
Serial.println("L06:ESPACE");
}
String chaine1, chaine2, chaine3, chaine4;
chaine1 = "Arduino ";
chaine2 = "pour";
chaine3 = " les eleves";
chaine4=chaine1+chaine2+chaine3;
Serial.println("L07:"+chaine4);
chaine4=chaine4+"2020";
Serial.println("L08:"+chaine4);
chaine4 = chaine4 + '@';
Serial.println("L09:"+chaine4);
chaine4 =String()+'A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o';
Serial.println("L10:"+ chaine4);
chaine4 =chaine1+'A' + 'r'+ 'd'+ 'u'+ 'i'+ 'n'+ 'o';
Serial.println("L11:"+chaine4);
chaine4 =String('A') +String( 'r')+ String('d')+ String('u')+ String('i')+ String('n')+ String('o');
Serial.println("L12:"+chaine4);
chaine4 = "millis() value: ";
chaine4 = chaine4 + millis();
Serial.println("L13:"+chaine4);
Serial.println("\nL14:"+chaine4);
chaine4 = "arduino";
chaine4 += " facile";
Serial.println("L15:"+chaine4);
chaine4.toUpperCase();
Serial.println("L16:"+chaine4);
chaine4.toLowerCase();
Serial.println("L17:"+chaine4);
chaine4="arduino";
c1 = chaine4.charAt(2);
Serial.println(String("L18:")+String(c1));
chaine4.setCharAt(2, '@');
Serial.println("L19:"+chaine4);
Serial.println(String("L20:")+ String(chaine4.length()));
chaine4="arduino pour les eleves";
chaine4.replace('a', 'A');
Serial.println( String("L21:")+chaine4);
chaine4= chaine4.substring(4);
Serial.println("L22:"+chaine4);
chaine4="arduino pour les eleves";
chaine4= chaine4.substring(7,12);
Serial.println("L23:"+chaine4);
chaine4=" aa ";
Serial.println("L24:"+String( chaine4.length()));
chaine4.trim();
Serial.println("L25:"+ String(chaine4.length()));
Serial.print("L26: ") ;Serial.write(65);
while(true);
}

من مخرجات البرنامج

L01: ALPHANUMERIQUE
L02: ALPHABETIQUE
L03= MINUSCULE
L05: PONCTIATION
L07:Arduino pour les eleves
L08:Arduino pour les eleves2020
L09:Arduino pour les eleves2020@
L10:Arduino
L11:Arduino Arduino
L12:Arduino
L13:millis() value: 155

L14:millis() value: 155
L15:arduino facile
L16:ARDUINO FACILE
L17:arduino facile
L18:d
L19:ar@uino
L20:7
L21:Arduino pour les eleves
L22:ino pour les eleves
L23: pour
L24:5
L25:2
L26: A

لمشاهدة التمرين على موقع TinKerCad

لأكثر تفاصيل شاهد هذا الفيديو

أي إستفسار أو تعليق إضغط على هذا الرّابط