قد نحتاج في برامجنا إلى تعامل مع الحروف (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(...)
تقوم هذه الدّالة
بالتثبّت إن كان الحرف كتب بالأحرف فراغ espaceisSpace
بالتالي كل المتغيّرالمذكورة تكون الإجابة لا
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()
تحوّل دالة
إلى كروف صغيرة minusculetoLowerCase
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
لأكثر تفاصيل شاهد هذا الفيديو
أي إستفسار أو تعليق إضغط على هذا الرّابط