بسم الله الرحمن الرحيم في أخر المحاضرة الماضية
بدأنا فيجزئية جديدة لموضوع الـ String أو بمعنى أخر
كيفية التعامل مع النصوص في البرمجة أنواع ال
variables اللي اتكلمنا عليهم في المحاضرات السابقة
كانت بتتكلم عن ال primitive types وكانت بتركز على
التعامل مع الأرقام سواء كانت الأرقام صحيحة أو
floating point أو ال character أو البولين هذه كانت
ال primitive types أو الأنواع الأساسية لأن في
أنواع تانية اسمها ال class typeباختصار شديد ال
class type هي أنواع أكثر تعقيدا مركبة لأنها
فعليا تتضمن أو تستخدم داخلها ال primitive types من
ضمن الأنواع المركبة من ضمنها اللي هي نوع اسمه ال
stringبداية المحاضرة الماضية أريكم كيف ننشأ String
جديد طريقة إنشاء String زي ما تنشأ متغير كيف تنشأ
متغير تضع ال data type و بعدين فراغ اسم المتغير او
ال identifier و ممكن تعطله قيمة لل String نفس
الحاجة تضع ال data type تبعها اللي هو بنسميه
String ويكون capital عكس ل primitive typesكانت
small لهذا الـ String Capital إذا حط اسم الـ
String البداكية مثلا اسم المتغير name تمام، هيك
أنا أعرفت String ممكن تعطيله قيمة يساوي مثلا أحمد
طلع القيمة بين double quotation هذا طريق التعريف
String الطريقة التانية أنك تقوله new String
وتعطيله قيمة بالشكل هذايعني يا الطريقة هذه يا اما
ممكن مباشرة انك تحط فيه القيمة طيب
شفنا كمان ان انت ممكن تعمل يعني تنشئ string تانية
last
name وstring
تالتة full name
you saw name plus last
name لأن
زي ما نتعامل مع انتجر أو variable من نوع انتجر و
نعمل assignment state من نوع البيانات من variable
ل variable برضه نفس الحاجة ممكن نعملها بال string
هنا فعليا انا بعمل string جديد اسمها full name
بتاخد القيمة الموجودة في ال name و ال last name بس
ايش بتعمل بينهم جمعطبعا هذه ليست عملية جمع هيسميها
ربط إذا كنت تستخدم ما بين الـ strings فبنسميها
عملية ربط طبعا ممكن أنت تربط مثلا تحط هنا مسافة
طبعا لو حطيت هنا رقم إيش بيصير؟ هيربط مع ال string
رقم عادي هيربط معاه هيحول الرقم إيش؟String ويربط
معاه شفنا هذا كلام لما عملنا system dot out لما
جربناها كنا نحط ال string مع أرقام يربط للرقم و
يحاولوا ضمنيا لل string طيب
نيجي
الآن لبعض
الأمور الجديدة اللي لو أنا جيت على name وعملت dot
هيطلعلي قائمة شايفين القائمة اللي طلعت يا جماعةطيب
هذه القائمة ماكنتش تطلع لما كنت انا اعرف primitive
type وليكن مثلا integer x يساوي خمسة لو جيت وعملت
x dot ماطلعليش حاجة طبعا لكن عند ال name لو
ضغط dot هيطلعلي قائمة كبيرة ايش
القائمة هذه الموجودة هذه يا جماعة احنا بنسميها
methodsاو دوال او ايش هي كلمة method بالانجليزي
طريقة صح ولا لأ بس هنا الترجمة الحرفية بتاعتها
بالعرب بنسميها دالة او وظيفة معينة تمام method
يعني وظيفة فعليا هذا ال method بنلاقيهاش في
الأنواع ال primitive بنلاقيها في الأنواع المركبة
لأن هم عاملين نوع مركب و عاملين بعض الدوال اللي
بتساعدني في تنفيذ بعض المهام شائعة الاستخدامطب
خلينا نفهم أو نطلع الدوال هذه اول دالة او اذا اذا
طلعت انت على كل الدوال الدالة تتكون من حاجتين اسم
الدالة تمام وفي عندنا قسين و بين القسين في عندنا
قيمة معينةاسم الدالة وفيه قوسين و بين القوسين ممكن
يكون في عنده قيمة ممكن تكون بين القوسين فاضي طيب
اشهد ليش مرات بيكون فاضي يعني هذه و هذه مثلا
القوسين مالهم فاضي هذه و هذه في بينهم قيم معينة
طيب اشهد خلينا الآن عشان نفهم هذا الكلام ناخد أول
methodطبعا الان هذه عاملة زى ان انت لما تكتب بيعمل
filtering بناء على الكلام اللى بتكتبه مثلا المهام
اللى موجودة بتبدأ هذه كلها بحرف ال C شايفينها و
بعدين ابجديا لو انت كتبت حرف ال L مثلا هيجيبلك كل
المهام اللى بتبدأ بحرف ال L بدي اخد انا مهمة اول
مهمة بدي اتكلم عنها اللى هى اسمها length شايفينها
يا جماعة length طب ايش يعني كلمة lengthالطول طبعا
ال length هذه باختصار شديد بتجيبلي طول ال string
طول ال string يعني النص اللي أنا كتبته قدش طوله طب
من اسمها length طيب
بين
القسين إيش مكتوب؟ فاضي طيب أصلا إيش فايدة القسين؟
الان بعض المهام يا جماعة بعض المهام عشان تشتغل
بلزمها input مثلا system.out.println println
بتذكرين كيف كنا نكتبها كنا نكتب println ونفتح قصين
صح ولا وإيش كنا نكتب بين القصين الحاجة اللي بدك
تطبعها صح ولا لو ماكتبتش أي حاجة بين القصين إيش
هيطلع عليك؟هيطلع عليك error اصلا بيقولك لازم تحط
حاجة فالان هذا ال println لازمها input لان انت
بتقوله اطبع اطبع ايش لازم تعطيله حاجة الان هذا ال
method مايحتاج input ليش لان هي بده تحسب طول اي
stringاللي انت name بالظبط انا مش هادي تابع ال
length تابع لمين ل name يعني name ضد length هيحسب
لطول النص الموجود وين في name هل لازمها مدخلات
اخرى عشان تحسب او عشان تعمل العملية المطلوبة لأ
فهذه method مدام القسيم فاضيين معناه انه مش لازمها
اي مدخلات في method الثاني هنشوفهم الآن بلزمهم
مدخلات
لسة ما خلصناش يبقى ال method لها اسم لها مدخل
المدخل هنا في الحالة هذه في ال link فاضي لها حاجة
تانية هنا شايفينها ايش مكتوب هنا انت ايش هذا ال
انت لأ هذا ال انت القيمة المرجعة من الوظيفة هذه
القيمة المرجعة ايش يعني يعني الآن ال link هذه
هتحسب لك طول النص ايش هترجعلكرقم صح ولا لأ هيكون
نوع ايش انت اكيد لازم ترجع رقم مش انا بقول طول
النص برجع رقم في method تانية ممكن ترجع حاجات
مختلفة ممكن ترجع نص تمام ممكن ترجع .. ماترجعش حاجة
حد قلت هنجرب يبقى اي method يا جماعة اللي لها تلت
مكونات أساسية اسمها و المدخل لها و المخرج منها
تمام هذا ال method اسمها link مدخلهاولا حاجة
المخرج منها integer طب تعالى نجربها طب انا كتبت
هيك name dot length انتبه تانى كمان ان ال method
دايما تنفذ على مين على النص اللى بتستدعيها على ال
string اللى بتستدعيها يعني اللي انا لو عندى string
تانى اسمها x بتقوللي x dot length هينفذ ال length
على ال x طبعا هذا name dot length
طيب الان ماشي انا بدي اخد القيمة و اطبعها مثلا
name.length لو انا اجيت بين القسين هنا و قلت له
system.out.println و كتبت هذا كله ما بين القسين
شايفين كيف name.length كلها حاطيتها ما بين القسين
هو ايش هيعملها يا جماعة هييجي يحسب او يقول name
.length ايش بترجع هذه كلهابترجع انتجر هيطبع على
قيمة الانتجر فانا الآن لو جيت قلت له run هيطبع ليه
خمسة خمسة هذا تقول النص تعالي على النص هنا و قوله
ايش هيطبع
على تسعة ليش تسعة لأن الفاضي هذا اكتبر character
طيب نرجع
لـ name.length مثلًا لأن أنا قلت إن الـ length هذه
بترجع رقم تمام؟ ممكن عشان نحفظ الرقم هذا و نستخدمه
بعدين أن نيجي هنا في الأول قبل الـ name.length و
نعرف integer N مثلا أو X يساوي name.length هذه
assignment statement صح ولا؟ و احنا بنعرف ال
assignment statement بحسب اللي موجود على اليمين و
بحطه في الشماللأن انا عرفت لما استخدمت name dot
length ان ال links بترجع integer فحطيت عليها
الشمال متغير عشان المرجع من ال links ينحط وين في
ال N فاهمين ليش انا عرفت ال N هذا لأن انا عرفت ان
ال links بترجع قيمة فانا حطيت علي شمالها متغير N
عشان ياخد القيمة اللي هترجع من ال linksالان system
.out.println ايه طبع
ليه 9 طيب شوف الان مثال هذا string
first
name
طيب مين يقولني إيش ال code هذا بيعمل؟
بيجيب
طول ال string الأولى و طول ال string التانى و
بيجمعهم مع بعض و بحط الناتج في متغير اسم ال link و
بطبع عليه link تبقى معايا يا جماعة هنا أنا كم
string عندي في البرنامج هذا؟ مان متغيرينالـ String
ما هي في هذا variable الـ first name variable نوعه
String طب هذا الـ String الأولى و هذا التاني لأن
هذه ال summit statement قلنا في الأول بنعمل اللي
على اليمين إيش عملت أنا هنا قلت ال first name dot
dot length هذه نتيجة إيش integer صح ولا زائد قلت
ال last name dot length هذه برضه بترجع integerاللي
هو قيمته كمية تلاتة و تلاتة ستة تمانية تمام فالان
هيجمع التلاتة زائد التمانية خمسة
زائد تمانية تلت عاش الناتج هيحط وين في متغير اسم
ال length طبعا دلبرة هذا متغير هذا integer غير ال
length هذه هذا method تمام و هبقى يقولي نفس الاسم
لأ هذه ده لا و هذا متغير حتى ممكن عشان ما تخبطوش
يسمي ايش X
هذه الناتج 13 طيب
واضح يا جماعة ايش ال length هذه هذي بتجيب لك طول
النص واحد بيقول طب ايش هذي بنستفيد منها لها
تطبيقات كتيرالان في كتير من البرامج ال editing
الكتابة بحددلك حجم معين للنص شوفته مثلا في ال SMS
بيصير يعد كام message بتكتب مرات في ال email كام
نص مرات في نماذج على ال web بتلاقي بيحددلك مثلا
لازم تكتب 100 حرف او 500 حرف او وانت بتكتب ويعدلك
كام حرف انت قاعد تكتب كيف انا بدي اجيب حجم النص
اللي انا بكتبه باستخدام ال method length
طيب تعالى نشوف دالة تانى كيف بستخدم الدوال لازم
اكتب اسم ال string في الاول اللي هو ايش اسم ال
string first name و بعمل dot الدوال مابتطلعش يا
جماعة اني لما اكتب اسم المتغير طيب جربنا احنا دالة
اسمها length اللي هبقى نجرب دالة تانى اسمها two
to lower case و to upper case هذي شايفينها to
lower case من اسمها ايه شان ال to lower case الان
بالظبط احرف صغيرة الان احرف الكتابة يا جماعة يا
اما lower case يا اما upper case يا اما capital يا
اما small فلما اقول to lower case بروح للنص كله
بيخليه كلهsmall letter لما أقوله to uppercase بروح
للنص كله و بيخليه كله capital طيب سواء lowercase
او uppercase اتطلع على الدالة او ال method اسم
الدالة to lowercase طبعا و لاحظ دايما يا جماعة
لحتى الآن أسماء الدول تبدأ ب small ولا capital
small هو غالبا أسماء الدول تبدأ ب small زي
المتغيرات طيب الدالة هذه to lowercase بتاخد input
لأتاخد input مش لازمها input لان هي بتشتغل عمين
على محتوى ال first name صح أو لا مش لازمها مدخل
إضافي طب إيش مخرجها مخرجها نص النص المعدل يعني
منطقيا هو مسك الدالة وعمل to uppercase عمل to
uppercase عمين على النص طني نص جديد يعني هذه بترجع
نص جديدعشان هيك المخرج تبعها نص تعالوا نجربها انا
روحت عليها خلينا نقول to upper case to upper او
lower الاتنين نفس الحاجة هي هالدالة مابتاخدش حاجة
و بترجع ال string الان هدا بترجع ال string مدام ها
بترجع يبقى بده حط على شمالهامتغير الـ String عشان
يحفظ النتيجة المرجعة من الـ method فبدا أجه هنا
أقول له String result يساوي زي هيك تعالي
نشوف النتيجة، إيش بدنا نعمل؟ بدنا نطبع ال result
system.out.println result تمام،
هي النتيجة، شايفين النتيجة؟ إيش مكتوب؟ أحمد كلها
capital
الان سؤالي لو انا حطيت هنا integer بمشي الحال ولا
لا؟ بمشي ولا بمشيش؟ لماذا؟
بمشي ولا بمشيش؟ المخرج تبع ال to upper case ايه
ايش قلنا؟ string بنفع ال string اللي بحطها في
integer؟ ولا أمرهاصح أو لا يا جماعة ال string لا
يمكنني أن أضعه في integer فبدون أن أقوم بإزالة ال
comment لكي نرى النتيجة فهو يقول لي غلط اضغط
المؤشر على هذا هو لحاله يكتب لي جملة انتم مش
شايفينها هنا اسمها incompatible types غير
متوافقة مهم يا جماعة تفهم ال error أنا عشان هيك
أفرجك ال errorعشان لو مر عليك بعد هيك ما تقولش ولا
طالع أحمر وانا مش عارف ليش وفضلك ساعة تجرب عشان
تشيل الأحمر بينما أنت لو قرأت هو بيقولك إيش نوع
الخطأ اللي طالع Incompatible types يعني هذه لازم
تكون string طيب بدي أجرب تجربة تانية بدي أقول
system.out.println firstname يعني أنا بطبع الآن ال
resultو إيش؟ و ال first name تعالوا نشوف إيش اللي
هيطبع ليه على الشاشة طيب
ال result إيش طبعها؟ اللي هي في الأول أحمد كبلر ال
first name زي ما هي إيش بنستنتج من هذه؟ بنستنتج إن
ال method بتعدلش على ال string الأساسية بترجعلك
string جديدةطبعا لماذا بتعدل؟ لأنه بيكون عارف ان
انت ممكن تكون النص الأساسي ماله محتاجه و بدك تحتفظ
فيه فهي ت upper case تاخد نسخة من ال string بتعدل
عليها و بترجعلك string جديدة واضح هذه يا جماعة؟
طيب تجربة تانية
طب انا هنا ايش عملت؟ ايش اختلفت عن المرة الماضية؟
ايوة طيب
احنا حكينا يا جماعة ان to upper case مابتغيرش على
first name صح؟ بتاخد نسخة منها و بتعملك إلى
capital لان انا ايش عملت؟ النتيجة اللي طلعت ارجعت
حطيت هوينفي ال first name عشان اعدل على قيمة ال
first name يعني باختصار شديد هيك طبعا لو وجدت طبع
هاي طبعة لك احمد او ال first name صارت كلها
capital
هذه عاملة يا جماعة زي احنا لما كنا اش نعمل كنا
نقوله x يساوي x زائد خمسة مثلاأنا هنا لما .. لما
ضفت خمسة على ال X تتخزنش .. والنتيجة كلها روحت ..
خزنتها تانية على ال X عشان أعدّل قيمة ال X تمام؟
يعني أنا بعدلش على قيمة المتغير إلا لما يكون موجود
على الشمال تمام؟ أنا هنا حطيت ال first name على
الشمال على أساس نتيجة ال lower case و upper case
ترجع تنحط في ال string نفسها
طيب زي ال two uppercase فيها نميذ التاني اسمها two
lower case ايش بتعمل؟ بتجيب كلها small letter واحد
بيقول هي أصلا small letter بيضالها small letter
هنا الحرف الأول capital فيصير small فانا روحت على
ال first name عملت لها two lower case هذه رجعتلي
ال string small letter و الناتج حطيته تانيالـ
first name تعالى نشوف النتيجة الان هذه طبعا لأحمد
كلها small letter طبعا
الان كام دلة أخدنا؟ 10-10 ال length و to lower
case و to upper case كل الدولة اللي احنا شفناها
تاخدش اي قيمة هل بتاخد input؟ لأ على ايش بتشتغل؟
على ال string اللي استدعت الدلةالدولة بترجع بيانات
من أنواع مختلفة ال length بترجع integer ال to
lower و ال to upper بترجع string طب تعالى نجرب
امثلة اخرى لان
first name و تعالى اعمل dot تعالى لان نشوف دالة
جديدة اسمها car at
كار ات هذا الدالة اسمها كار ات بتاخد ايش انتجر
بترجع ايش كار بتاخد انتجر و بترجع كاركتر طب ايش
هذا الدالة كار ات طلعوا معايا يا جماعة عشان نفهم
هذا
جملة hello كيف اللص هذا بتخزن في الذاكرة لان احنا
حكينا يا جماعة انه ال string هذا مش نوع primitive
فعليا هذا ال string انا لما انشئها بروح بخزنها
كمجموعة من characters في الذاكرةقُلنا إن كل
الأنواع المعقدة أو المُركّبة في نهاية تترجم لـ
primitive types في الذاكرة يعني فعلياً الـ string
هذه شكلها في الذاكرة كالتالي لو فرضنا إن هذه
الذاكرة، مش هيك برسمها كذا في المقدمة؟ مقسمة إيش؟
أقسام، sales، كل sale إليها address مش هيك أخدته؟
لأن فعلياً هذا ال hello كل saleتاخد حرف واحد HELLO
هيك شكل تخزينها في الذاكرة الان
ايضا هو ايش في
ال Java احيانا بلزمني امر على الحروف يعني انا
انشأت ال string طب افرض انا محتاج الحرف الاول
الحرف التاني الحرف الأخيرليش ملزمني أجيب الأحرف؟
عشان مثلا أبحث عنها مثلا أنت بدك تعمل بكرة أحد
الواجبات اللي هيكون معانابرنامج بطلب من المستخدم
يدخل password جديدة لأن ال password مرات بيكون
عليها قيود انه لازم مثلا ماتبدأش برقم اكتر من تمان
حروف يكون فيها capital و small يكون فيها رمز من
الرموز صح ولا انت لما تعمل برنامج زي هيك لازم
تخليه مر على الحروف حرف حرف عشان تفحص عشان تشوف
يتحقق فيه الأمور هذه ولا لأ فلأن احنا كيف بدنا نمر
على الحروف هذه عشان نقرأهاالـ java بتوفر لمثل
اسمها car at من اسمها ايش يعني car at الحرف
الموجود فيه ايش يعني at فيه الحرف فيه لأن هذه
الدالة بدها بيانات ليش بدها بيانات لأن انت طالب
حرف اي حرف بدك بدها رقم الحرف مين الحرف اللي انت
بدك هي ايش بترجع car
واضحة يا جماعة؟ شوفوا كيف الـ methods ال input و
ال output بيخلف بناءً على وظيفة ال method ال
length بدهاش حاجة لأنها بتحسب طول النص اللي
بتستدعي عليه ال method صح؟ و بترجعلك طول النص اللي
هو integer to upper case و to lower case برضه
بدهاش أي input لأنها بتشتغل على النص نفسه تمام؟
بتحوله كله upper أو كله lower و بترجعلك نص جديد في
التغيير الجديد هذا ال method caratانت بتقول طلبني
حرف اي حرف بدك لازم تحددله ايش بترجع الحرف اللي
انت طلبته طيب ايش محطوط بين القصين هنا انتجر ايه
يعني هذا بتفهم انه ايش نوع البيانات اللي بدوا
إياها انتجر ايش هو الانتجر المطلوب شوف لما تنشأ اي
string بيرقم الحروف بتاعتها ابتداء من صفر من صفر
يعني اول حرفماذا يكون؟ لا نقول رقمه في حاجة يسميها
بالانجليزي index index يعني مثل مؤشر تمام فمؤشر
الحرف الأول دايما ببدأ من رقم صفر التاني واحد
اتنين تلات اربع دايما يا جماعة في الكمبيوتر العد
ببدأ من واحد زي ما احنا اتعلمنا الكمبيوتر دايما
ببدأ العد فيه من صفر تمام فأول حرف رقمه صفر اخر
حرف ايش رقمه؟
بالظبط طوله ناقص واحد يعني لو أنا عندي النص خمس
حروف أخر حرف رقمه أربع صح ولا يا جماعة طيب الآن لو
أنا مثلا عندي أسماء بيدرتبهم لازم أعرف أول حرف صح
ولا يا جماعة كيف الترتيب ال .. ال .. ال .. ال ..
ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال
.. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال ..
ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال
.. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال ..
ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال
.. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال ..
ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال .. ال
.. ال .. ال .. ال .. الفمثلا هذه أحد التطبيقات انك
تجيب أول حرف مثلا هذه لازمك للترتيب لان نجي ل ال
first name ان نجيب أول حرف موجود فيه نقول car at
هو لحاله كتب لصفر عشان انا لو ما كتبتش حاجة بطلع
الإرهار بيقول هذي بدها input انت ماعطى ال input
المطلوب فتعالي حط صفر مثلاأه تمام الان لاحظ هذا
النص معلمنيه بالأصفر اش هنا كلمة أصفر؟ اش فارق
التعليم بالأحمر عن التعليم بالأصفر؟ هذا شغل IDE
الأحمر خطأ بمشيش البرنامج بدونه الأصفر حاجة مش خطأ
لأ ولا في أصح منها تمام بس مش منطقية مش خطأ معناه
البرنامج بيشتغل تمامهي مقبولة بالنسبة للكمبيلر لكن
منطقيا ممكن تكون مش مقبولة كإش يعني مش مقبولة ان
انت بتقوله جبت الحرف الأول طب إيش عملت فيه لا انت
طبعته ولا انت أخدته خزنته في متغير عشان تستخدمه
ماعملتش فيه حاجة هذه زي اللي جبت انت كارت و رميته
في الهواءهل استفدنا من الـ character اللي جبناه؟
هل طبعناه؟ هل خزّنناه في متغير؟ ماعملناش حاجة ممكن
تبقى ليه شروط؟ ماشي لو خزّنناه خلاص بكون أنا .. هو
زي بنبهني بقول انت استدعت method لكن مخرجها
مااستفدتش منه تعالي انت حط .. حط الماوس على السهم
هذي تمام؟ هو بكتبلك كلام تعالي نقراي ايش بقول لك
should check the method return valuecheck the
method بتاعك ايش يعني افحص او يعني انتبه على
القيمة المرجعة انت هنا ما استخدمتهاش لان انت
خيارين ايش القيمة المرجعة نوعها حكينا character
فايش بنعمل بنعرف متغير على الشمال من نوع القيمة
المرجعة ايش نوع القيمة المرجعة character و تعالى
الان قلله system.out.println وكتب هنا C
فاهمين الحاجة يا جماعة تعالى اعمل run هاي طبع ليه؟
طبع ليه ايه؟
car b firstname.car at 1 لحظة
شوية اشوف هنا
وهو ال insert طيب هاي ال system بدّي أقوم باطباع
في نفس ال ..
إيش أنا قاعد باطبع؟ C فاصلة B هاي
الطبعة ل A فاصلة H واضحة جمال أنا قاعد باطبع
الحروف بتاعة ال ..الجملة طيب
car firstname
.car at 10
في أصلا حرف مكانه عشرة؟ لأ تعالي أعمل run طلعلك
error كتبلك بالأحمر error تمام تعالي نقرأ ال error
جالك
في exception جالك هنا نوع ال error هي اسمه string
index out of bound كويس أنه نفهم الخطأ string
index out of rangeقولنا ان ال index هو عبارة عن
ايش؟ المؤشر out of range خارج النطاق كلها فانت
حاطيت مكان مش موجود اصلا عشان هيك طلع لك خطأ واضحة
يا جماعة الكار ات؟ طبعا احنا حكينا يا جماعة ان انت
ممكن تحط القيمة المرجعة في متغيرو تطبعها و ممكن
كمان مباشرة انك تاخد استدعاء الدالة و تحطه داخل ال
system.out يعني هنا ايش اللي بيصير بين القسين هو
اول حاجة بنفذ اللي موجود بين القسين بروح لاسم ال
string و بنفذ كرقة اش مرجع الحرف الاول و بطبعههنا
طبعا ايش عملت؟ أنا ماخدهاش في متغير و طبعت المتغير
لأ حطيت استدعاء الدالة داخل ال system.out.println
واحد بيقول لي هذا يمين أحسن هذا ولا اللي قبله؟
مافيش حاجة أحسن من اللي .. لأن أنا اللي قبل أرتب
لأنه أنا باخد في متغير و ممكن أستفيد منه بعد هيك و
أستخدمه تمام؟ هنا لو أنت مش محتاج متغير خلاص
النتيجة بتتطبعها زي ما هي تستخدم الطريقة هذه تخيل
طبعة ليه؟ الـAطيب شوف الآن الفكرة هذه لو انا قلت
يا جماعة بضطبع الحرف الأخير ايش بنعمل؟ الحرف
الأخير اذا كان بيقول car C بقوله بروح ل first name
و بقوله طب أنا طول النص عندي قداش؟ خمسة صح؟ الحرف
الأخير ايش بيكون رقمه؟ أربعة car at أربعة
و بعدين نقول System.out.println C طبعا
للدي صح طبعا لو حطيت خمسة ايش بيكون الحل غلط error
فاش حرف ماكانوا خمسة تمام لأنه بيبدأ العد من صفر
طيب افرض ان انا غيرت النص هذا نص طويل اه علي مثلا
عمر عبداللههكذا انا غيرت النص هذا هلجت هيطلعلي
error ليش اربع مش موجودة في النطاق هذا تمام ايوة
تمام
ممتاز هي زميلكوا حلها قالك انا النص هذا ممكن يتغير
ممكن افرض هذا النص بداخل المستخدم ممكن يدخل اسم
كبير او صغير فكيف انا البرنامج بتخليه يتعامل مع
النص بغض النظر كم طول الاسم اسمالكم يقول فكر شوية
احنا أخدنا تو ميثود بتجيب طول النص فبروح بعرف ايش
اسم ال method first name dot length هذه بتجيب طول
النصوبعدين بجي بعرف متغير هنا اسمه L مثلا او N
بخزن فيه طول النصف الان بجي بقوله طبعا ممكن تقوله
هنا L يساوي L ناقص واحد زي ما أخدنا ايش هذي بعمل
انا هنا بنقص ال L بواحد او ممكن تقوله بمشي الحلم و
بمشيش او L ناقص يساوي1 بمشي الحلو او لا انا جيب
طول النص بعدين طرحت منه واحد ليش طرحت منه واحد
عشان يجيب مكان اخر في فرق ما بين طول النص و مكان
اخر حرف طول النص عشرة بس مكان اخر حرف تسعة تمام
بعدين بقول كارقة صح
يا جماعة تمام و بعدين اقبعهذا طبعا لأ غير الناس
أيش ما يكون هاي
عبد الله اعمل run هاي طبعا لك اتش واضحة
تهدأ يا جماعة كيف شوف كيف انا استفدت من مخرج
method كمدخل لمثل تاني تماميعني انا في الأول جيب
الطول والنص انا قلت بدي اطبع اخر حرف نتعلم يا
جماعة التفكير المنطقي قبل ما نكتب code لازم نفكر
انا قلت بدي مكان اخر حرف بدي افكر دايما في الدوال
اللي بتساعدني اخر حرف او احنا درسنا انه عشان تجيب
حرف بتستخدم ال method Karat طب Karat بديها ايش
بديها مكان اخر حرفطب كيف نجيب مكان أخر حرف؟ النص
مختلف ممكن يكون نص كبير و نص صغير لكن احنا بنعرف
أن مكان أخر حرف هو طول النص ناقص واحد و احنا خدنا
دالة بتجيب طول النص اللي هي ال link فروحت سا دعيت
ال link عشان يجيب طول النص و طرحت منها واحد عشان
يجيب مكان أخر حرف و بعدين قلت له car at و أعطيته
مكان أخر حرف واضح؟
ناخد دالة تانية تعالى نشوف دالة تانية first
name dot
طيب هذه دالة كويسة تعالوا يا جماعة نشوف النص هذا
طيب
بدك تكتب نص هال gate و النص هذا يا جماعة ال method
اللي بناخدها ال gate اسمها طبعا في text هال gate
text nano فاضيفي ميثود اسمها text.replaceall
replace all إيش هي كلمة replace بالإنجليزي إيش هي
كلمة replace استبدل إيش بتتوقع هذا ال method بتعمل
بتبدل نص مكان نص هي هتطلع إيش .. إيش بتاخد بتاخد
حاجتينالنص اللي بدك تشيله والنص اللي بدك تحطه
مكانه تمام؟ وإيش بترجع؟ النص الجديد بعد التعديل
تعالوا ناخد مثال سريع
طب هذا النص Jerusalem is the capital of Israel and
Israel is an independent state هذا النص بدنا نعمل
فيه استبدال لإيش لإزرائيل بنحط بدلها Palestine طب
على هذا الاستبدال احنا بلزمنا في حالات كتير صح و
لا يا جماعة افرض انا بيجي عند نص بده اشيل منه
كلمات معينة تغيير كلمات في نص معينأو مرات مثلا في
برامج تشات بتلاقي الكلمات الخارجة عن النص ايش
بيعمل؟ حُط بدالها نجل مثلا أو بشيلها هذا استبدال
لأن هذا النص بدأ استبدل في كلمة إزرائيل
بالباليستاين ماعليك إلا تيجي للنص text بتعمل dot
تستدعي ال method اسمها replace all تعطلوا النص
اللي بدوا يستبدله وبعدين
تعطلوا النص لجديد
هك هي استبدل كيف نعرف إن استبدل ولا لا system
.out.print للمين طب
ماشي تعالي نطبع طلع النص استبدل مستبدلش ليش؟ من
يقول ليش؟ ايوة لأن أصلا هذا النص لسه معلم لي
بالأصفرأيش بيقوللي؟ بيقوللي أنت النص المرجع ما
استخدمتهوش و قولنا يا جماعة أن أي method أنا
بستدعيها to lower case, to upper case, length,
place ما بتعدلش عن نص الأصلي بترجع نص جديد
أه فتعالى هنا تقوله string x مثلا هيك انت النص
المعدل هيتخزن وين؟ في ال x ليش ال x حطت ال string؟
لأن هو حكى لي ان replace all بترجع ال string ماشي
يا جماعة؟ فعشان ايك انا حطت ال string x و الأن
بطبع ال x
تعالى اعمل run وهي النص المعدة لو كان طول النص ان
شاء الله مليون صفحة وفيه الكلمة هذه هروح يستبدلها
من كلها ماشي
لحظة شوية الان كنت هعملها انا هلجأت انا حطيت x
ممكن نحط بدل ال x عشان نوفر متغير ال text نفسه ايش
فارق يعني انا بدل ما يكون عندى text و اعمل متغير
جديد x خليته ياخد ال textو يستبدل الكلمة و يرجع
لنص جديد و الناتج الجديد رجعت خزانته تاني في الـ X
في ال text ايش فارق عن قبل؟ ولا حاجة الفارق ان انا
هنا عدلت عن نص الأساسي تمام؟ لكن في اللي قبل انا
احتفظت في النص الأساسي و جيبت نص جديد تمام؟ مين
أفضل هذه او هذه حسب البرنامج مرات انت بلزمك انك
تحتفظ في النص الأساسي و تجيب نص معدن و مرات بلزمك
خلاص بلزمكاش النص الأساسيبتعدّل عليه هرجعت
أنا لمطبع text هيجرزن is the capital of Palestine
ممكن
استبدل هذه مثلا مرات بقول أنا بتدمح كلمة من النص
تمام ولا حاجة شيء حط هذا فعض هيك مافيش method
اسمها delete تمام بس ال replay اسم بتنفع
ماشي .. ما هو .. زي ما قلت حسب اللي بدك إياه يعني
أنت أنا مرقت ال scenario اللي بشرحلكي أو المثال مش
عامل كتير تمام؟ بس يعني في حين .. عشان تعرف أن ال
delete مش موجود بس في replace on هيك هيستبدل كل
الكلمات بحاجة فاضية تمام؟ هاي النص الجديد شايفين
كيف شال الكلمة هذا فهذا للاستبدال أو مثلا ممكن نحط
نجوم زي هيك
واضح يا جماعة؟ method أخيرة سهلة نخلص فيها طيب
في method x dot concat
هذه شايفين method هذه؟اسمها Concatenate
Concatenate اختصارا لكلمة Concatenate الكلمات يا
جماعة مهمة Concatenate
Concatenate معناها ربط او اربط احنا
كيف اتعلمنا ان نربط الجمال X زائد هذه نفس عمر
الزائد هي هيبس بطريقة أخرى يعني انا لو قلتله x
concat طبعا هذا ال method إيش بتاخد و إيش بترجع؟
بتاخد string طب إيش ال string اللي بتاخدها؟ ال
string اللي بتاخدها تربطها مع ال string الأساسية
اللي استدعيتها عن طريقها ال method أنا استدعيت ال
method عن طريق أي string x ومررتلها لما أقول كلمة
مررتلها إيش يعني إيه؟ يعني بعتت كمدخل لل method
string yاستدعيت كنكات عن طريق ال X و مررتلها Y
هيربط ال Y في مين؟ في ال X في آخر ال X تمام؟ هاي
كنكات بحط هنا Y مرة تانية كنكات ايش برجع؟ string
جديدة ما هو انا دايما .. يعني ايش النتيجة؟ بديهية
لما اربط two strings ايش الناتج؟ string جديدة فهاي
كنكات اعطله Yهك معناها هي نفسها تماما تكافئ X زائد
Y ليش علمليها بالأصفر؟ لأ أنا مستفدتش منه تمام؟
string result و
بعدين أحكيله system dot out dot println
هذا أحمد عليه ربطهم في بعض ممكن تجي تعمل اشي زي
هيك اش يعني ربط لل X بمين بمسافة زائد Y يعني
ما هو المسافة زائد Y صارت هي كلها stink
الكون كانت زي ما قلت ممكن ماتستخدمهاش ممكن
تستبدلها بإيش ب X زائد Y بتمشي
تمام هي نفس ال X زائد Y طيب نستكفل اليوم بالقدر
هذا اليوم أخدنا عدد من ال methods على ال string
المرة الجاي لسه هنكمل في ال methods بتاعة ال
string