بسم الله الرحمن الرحيم اليوم إن شاء الله بدنا
نستكمل في chapter 5 يمكن احنا ال section الأول
لجيناه معروف بالنسبة إلينا أخدناه زمان اللي هو كيف
نعمل translator تحديدا كيف نعمل syntax directed
definition ويمكن توقفنا عند المثال هذا الموجود
بداية section 5 يا بنات كان في مثال اللي هو كيف
أحسب ال value بتاعة ال infix عند ال root مش هيك
ولا لأوكان بالنسبالي أن هذا مثال أخدناه في أول
الفصل طب شو الرسم اللي على اللوحة دي؟ أو شو الجدول
اللي على اللوحة؟ أو شو ال syntax directly ال
definition اللي على اللوحة ده؟ إيش قلنا شو هذا
تبعيش؟ هو نفسه ال infix اللي بحسب قيمته عند ال
root لكن شال ال left recursionمظبوط قول الاشياء
الـ Left Recursion علشان يهيؤله الـ predictive
بارسة هاي بس هو نفسه يعني تغير شكلا ولم يتغير
مضمونا هذا بيوصف infix و بتحسب القيمة عند ال route
طبعا كيف جدريطلع ال semantic rules هاي حكينا فيه
قانون موجود في آخر ال chapter كيف لو أنا عندي
grammar مع ال rules و في عندي left recursion كيف
بقدر أشيل ال left recursion و أعدل ال semantic
rules بحيث تكون انها يعني متكافئة مع ال grammar
اللي موجود عندىبالكامل كيف أقدر أغيره وهذا القانون
في آخر الشبطن ان شاء الله موجود تمام؟ لكن الآن
هناخده احنا كمسلم ان هذا خلاص ال syntax direct
definition جديد شكله لكنه مضمونا معروف بحسب قيمة
ال infix عند ال root تمام؟ و بدنا نجرب ناخد مثال
الان بدنا نقول مثلا تلاتة ضرب خمسة كيف بدنا نعمل
ال annotated parsing tree ايش هتقوليلي انت؟كيف
نعمل تلاتة ضارب خمسة يا بنات؟ هتقوليلي أول إشي ال
T عبارة عن إيش؟ F T bar مشيك؟ و ال F هذا عبارة عن
إيش؟ عبارة عن digit و ال digit عبارة عن تلاتة طيب
ال T bar عبارة عن إيش؟ ضارب F T bar و ال F هذا
عبارة عناللي هي خمسة وخلصناها طبعا عارفة لو في ضرب
ستة ضرب سبعة كنت هكمل ال T bar هاي ضرب F T bar ضرب
F T bar فكل مرة هذه بتضيف رقم جديد لكن انا لأنه
المثال تبعي تلتة ضرب خمسة خلاص هقول ال T bar هذي
عبارة عن إيش عبارة عن إمسنو الان انا هيك ايش سويت
عملت parsing tree عاديةالان عشان اعمل annotated
parsing tree لازم اعرف ايش ال attributes و كيف
بحلها طيب قبل ما نحل ال attributes الموجودة هنا من
نوع inherited ولا من نوع synthesized ايش رأيكم؟ في
الأول ايش ال synthesized attributes اللي هو ال
attribute اللي بيتمد على الأبناءمظبوط او لا؟ طب
ايش ال inherited attribute اللي بعتمد على الأبناء
أو على الأخوة أو على ال parent؟ او على نفسه واضحة؟
الان كيف اعرف ان هادول ال attributes اللي هان
inherited ولا synthesized تعالى مسكيهم بالدور من
الأول الان اول ما ببدأ هنابيقول لي ال T bar لها
value طبعا المسمى ماعندي فيه مشكلة يسميه inherited
يسميه value يسميه N1 يسميه X يسميه whatever ماعندي
مشكلة لكن أنا المعلومة اللي وصلتني أن هذه ال T bar
لها value لها قيمة وعشان أحسبها بتعتمد على مين؟
على الأخيبقى واضح ان هذا ال attribute تعتبر من نوع
inherited عشان هيك هو فضل يسميه inه اختصار لكلمة
inherited لكن مش بالضرورة كان يسميه هيك بس هو حاب
يسميه inherited عشان تعرفي ان هذا مش synthesized
بتمشي على بناء فقطواضحة كيف عرفت؟ انه لجيت هذا
الأخ او هذا ال attribute بعتمد على الأخ اللي هو ال
F وبالتالي أصبح inherited طب كملي بنفس القانية
الآن بحكي T dot Val بحكي عن أي attribute؟ لمن؟ لل
T ولا لل F ولا .. لمن فيها دول؟ ال T dot Val بحكي
عن ال T يعني بحكي عن تحت ال up ايش تساوي كقيمة؟
بتساوي value معينة لل ابنلحظة هذه مختلفة عن هذه
وكأنه بيقولي ان الـ T bar لها اتنين attributes
واحد سماه N وواحد سماه Sin كمان مش بحنشوف ايش جسبت
يعني لكن انا عرفت المعلومة من هنا ان الـ T bar لها
خمتين مختلفتين X1 X2 and 1 and 2 واحنا ماعناه
مشكلة يكون ال .. ال .. ال non terminal له أكتر من
ال attribute مش هي اللي قلناها قبل هيك؟ طيب نرجع
لموضوعنا الآن الـ T ضد ذال لمين بيحكي؟ عن الأبو،
صح؟ تساوي إيش؟قيمة الإبن، إذا هذا النوع إيش؟
Synthesized لأن الـ up تتمد على الإبن، هاي ال up
تتمد على الإبن، فهذا من النوع Synthesized طيب،
كاملة، الآن في ال production اللي وراها بتكلم عن
مين الآن؟ طبعا الإبنات ال T one bar مش هذا non
-territorial هو نفسه ال T لكن بيميز ال up عن الإبن
زي ما قلنا زمان، فبحط الواحد أو الإتنين للتمييز
فالآن هو بتكلم عن ال attribute مين؟ تبع مين هنا؟
بتاع الإبن يعني بيقول ال value هذه بتاعة الإبن
تساوي مين ال value بتاعة الأبو يعني واضح أنه
بيعتمد على الأبو و بيعتمد على الأخو يعني عشان أعرف
ال inherited هذه لازم أكون عارف هاي أخو و لازم
أكون عارف ال parent إذا هذا من نوع إيش بيكون
inherited كمان عشان هيك إيش سما inheritedطيب، كم
ليه؟ الان بيتكلم عن الـ T bar dot sin لمين ال T
bar dot sin؟ يعني مين؟ الابو، مش حاطط واحد هنا
عشان يقول الابن قيمة ال sin بتاعة الابو تساوي قيمة
ال sin تاعة الابن هذا inherited ولا synthesized؟
synthesized طيب، كم ليه؟لما تي بار بيعطيني إبسلون
خلاص بيقوللي الـ T bar dot sin تساوي ال T bar dot
n بيتمد على نفسه يعني مافيش مشاكل هذا synthesize
بيتمد على نفسه أو على الأبناء لما بيكون على الإخوة
أو ال parent بيصيرInherited أخر واحدة الـ F2D خلاص
الـ value بتاعت الأب بتساوي القيمة بتاعت الإبن إذا
واضح إن ال attributes الموجودين عندي هان منوعين في
منهم synthesized و في منهم inherited تمام؟ الآن
تعالوا نبدأ نشتغل علشان أنا أحل ال attributes
تتوقعي لو عملت bottom up traversal ولا عملت depth
traversal بظبط في هذا المثال اه ولا لأ و ليش؟ ليش
بظبطش؟في inherited values صح ولا لأ؟ هم لو كانوا
كلهم من نوع synthesized زي زمان يعني بعتمدوا دايما
على الأبناء فخلاص ال bottom up أنا بشوف الأبناء في
الأول يعني بتظبط ال bottom up بتسير أو ال depth
traversal بشوف الأبناء في الأول برضه بتظبط لكن هنا
الوضع مختلف هنا بعضهم synthesized وبعضهم بعتمدش
على الأبناء بعضهم بعتمد لازم أزور الأخو لازم أزور
الأبو إذا بطلت ال bottom up أو ال depth traversal
اتفيدني هناشوفتي كيف؟ إذا ما بقدرش أمشي بنفس
الترتيب طب كيف بدي أحلها؟ الآن أنا بدي أحلها ك
human بعد شوية بنتكلم كيف ك systematic نشتغل طيب ك
human بدي أحاول أمسك ال attribute اللي بنحل اللي
بيتمد على الإبن عشان أخلص منه و بعدين أشوف الأخوة
و الأمور هاي و الأبو يعني مثلا لما ال F بيعطيني
digit إيش بيقوللي في الحالة هاي؟ بيقوللي في
attribute لل Fاسمه VAL بدى يساوي قيمته شو؟ ال
digit يعني بالعربي بدى اقول هنا ياش F dot VAL ايش
تساوي يا بنات؟ تلاتة فهذه الحلقة هذه من النوع ال
synthesizer السهل هذا اللي بتنبغي على الأبناء على
طول ممكن انا اجي مباشرة ك human و اخلص من الحاجات
اللي زيها و اقول هنا ياش F dot VAL dot VAL تساوي
خمسة خلص من الحاجات السهلة طيب واحدة بتفكر تيجي
هناإنها بتفكر أن ال bottom up يظبط فهنا نشوف إيش
هيصير لما ال T bar بتعطيني epsilon إيش بيقول
القوانين هنا تعالي تطلعي معايا بيقولك ال sin تاعة
ال T bar بتساوي ال inherited تاعة ال T bar صح؟
يعني هنا فيه sin أنا لسه مش عارفه صح؟ وفي
inherited أنا برضه لسه إيش؟مش عارفه، يبقى واضح إنه
مابظبطش فيها ال bottom-up هذي، يبقى أكيد لازم أزور
ناس قبله عشان أعرف القيم هذه و أجيبها و بعدين
أكمل، صح ولا لأ؟ و هنا بتبين معاكي إنها مش
synthesized، يعني أنا مش هقدر أحلها، طب إيش بدي
أسوي في الحالة هذه؟ بدي trail and error، أقعد
أجرب، أقول طب جرب خد من هنا، جرب خد من هنا، عبال
ما أقدر أحلها كلها، شوفتي كيف؟ فالآن لقيت إنه أنا
ال T برا للإبس و مش قادر أحلواحدة هتقول طب خليني
أجرب لما ال T bar بتطلق ضرب F T إيش بصير مثلا أنا
بجرب تجارب في الآخر هتشوف كيف الصح لأن لو أخدنا T
bar ضرب F T bar إيش بقولك هنا بقولك قيمة ال
inherited بتاعة الأبن مظبوط؟ يعني عن مين بتكلم في
الحالة هذه؟ على هذه اللي أنا بتحسبها إيش تساوي
inherited الأبو طب أنا مش عارف inherited الأبو لسه
شوفت كيف؟ يعني واضح أنه كمان مش هقدر أحسب هان قبل
ما أحسب هان، عشانك ممكن لحالي أتسلسل و أقول طب
خليني أجرب ال production هاي، يعني أنت زي هيك شوي
شوي بتطلع معاكي في النهاية عارف لو كانت كلها
synthesized كان أنا تعبتش التعب هذا، كان أنا أقول
بوتم أب خلصنا، جبت تلافين سا خلصنا، لكن لأنه فيهم
inheritedبصير لأ لازم ازور دايما ال notes اللي
بتخليني احسن قيمة ال inherited value في الأول اللي
هم غالبا بيكونوا اخوة او بيرن طيب الان انا بس
واردكوا ك exam اللي لو بدت من تحت بدت من هم الظبط
كتير تعالوا نجرب طب لو أخدنا T F T bar ايش بيصير
هاي تعالوا جربوا T F T bar ايش بيقوللي هنا
inherited meanالـ T bar يعني .. يعني انهرتت مين في
هدول؟ ها دي شيف؟ انهرتت ال .. مش لما أقول T
بتعطينا F T bar إيش بقول ليه؟ انهرتت ال T bar صح؟
مالها؟ بتساوي ال value بتاعة الأخو اللي جنبي يعني
أيوة هذه هتصيري الآن إيش؟ تلاتةشوفتي كيف؟ طبعا هو
ليش بعمل هيك يا بنات الفكرة انه انا عشان هذه خمسة
مش النتيجة ان تكون تلاتة في خمسة خمستعاش طب كيف
بده يعرف؟ لازم يجيبها من برالأنه لما غيرت انا ال
algorithm لما غيرت ال grammar اتغيرت ال rules
فالتلاتة هذه برا منعزلة عشان ايه كانش بروح بسوي
برحلها لهان و بدخلها جوا عشان يضرب تلاتة في خمسة
فهذه كمان شوية هنشوفها لهم في ال simulation خلينا
بس نكمل بنفس القلية انه والله لما انا عملت ال T F
T bar جالي بشكل واضح وصريح ال inherited بتاع هذا
الإبن يساوي ال F dot value اللي هو الأخو، هذا، اذا
انا عرفت هذاالان كاملة في كمان قانون جنبها
semantic rule تاني ايش بيقول ال T dot val عن مين
بيحكي؟ عن ال up T dot val تساوي السن تاع مين؟ يعني
كأنه هذا له كمان سن انا عايش؟ مش عارفه لكن واضح ان
انا عرفته اعرفتهاصح؟ لأن هذا بتساوي هذا فلو قدرت
أعرف هذا بعرف وين بعرف هنا صح ولا لأ طيب الآن
تعالوا نرجع تاني أنا الحسبت هذه وحسبت هذه وخلصت
وخلصت اللي فوق الآن مضطرة أرجع لهذه تاني أشوف
القصة كمان مرة تعالوا نرجعي تاني لما تي بار
بتعطيني ضرب أف تي بار إيش بيقول هذا بيقول
inherited القبلاللي هي مين؟ اللي هي هاي لأن أنا
ماكنتش أحسبها قبل شوية إيش هتساوي inherited الابن
هاي؟ بتساوي inherited الأبو المحسوبة اللي هيها،
تلاتة، مظبوط؟ ضرب ال value بتاعة ال F اللي جنبي
اللي هي خمسة فبصير تلاتة في خمسة، خمستاشر إذا هاد
الآن خلاص مالها انحسبتالان بتقدّكي معلومة مهمة
عارفة لو الـ T هي طلعت ضرب F تي ال T اللي تحت ايش
هتصير مش فيه F جديدة بتتنضرب افترض انك كنت عامل
تلاتة في خمسة في ستة الخمسة عشر هي اللي انا حسبتها
هتنضرب في الستة فهيرحلها تحت يضربها في ستة و لو
عامل ضرب سبعة هيرحليه نتيجة كلية و يضرب في سبعة و
دال سؤال زي هيك ماشي لكن انا السؤال قد خلص بس
تلاتة في خمسةطيب خلينا نكمل احنا على كل حوال
..الان انا حسبت هاي من هانا مظبوط؟ كم ليه؟ ايش
بيقولي هانا؟ بيقولي synthesized الأبو بيساوي
synthesized الأبن هذا يعني هتقوليلي هذا ال
synthesized بيساوي هذا يعني لو عرفت أنا هاي بعرفها
لكن لسه أنا مش عرفت لكن أكيد لو عرفت هاي هتعرفي
هاي هتعرفي هاي صح؟ لأن هدا بيساوي هداوتوب ويقولي
هذا بيساوي ال synthesizer قبل لكن لسه أنا مش عارف
بدي حاول أحلها طيب انقرش ضال علي production
ماخدتهاش ال T إبسلون ال T عطتني إبسلون لما ال T
بتعطيني إبسلون ايش بيقولي عاد بيقول ال synthesizer
تبعتها بتساوي ال inherited تبعتها يعني هتصير ال
synthesizer 15
و هذي إيش هتساوي؟ خمستاشر و هذي إيش هتساوي؟
خمستاشر و خلصت .. الآن بس هنا في ملاحظة تبدأ
تنتبهي لها الملاحظة الأولى اللي أنا اتكلمت عنها
قبل شوية أنه كل ما أنا بزيد بتصير الأرقام اللي فوق
أشمالها تنزل لتحت و تنضرب في ال F تنزل لتحت و
تنضرب في ال F و كأنه النتيجة النهائية وين بتتجمع؟
تحت هذه مرحلة مهمة لكن لأنني بديها عند ال route
اضطريت اعمل variable تاني يطلعها لفوق فصرت اقوله
الاب يساوي قيمة الإبن الاب يساوي قيمة الإبن الاب
يساوي قيمة الإبن لغاية هذا يعني كمان مرة ليش انا
لل T bar استخدمت two variablesالـ variable الأول
استخدمته اللي هو ال inherited عشان كل مرة يغذي
القيمة للي تحت عشان تنظر الفئاف و تنزلها و تنظر
الفئاف و تنزلها عارفين لو هو مش طالب النتيجة عند
ال root كان بلزمنيش شيء خلاص بلاقي جواب النهائي
وين في الآخر تحت لكن لأن هو بده النتيجة عند ال
rootاضطرت أعمل كمان attribute عشان بعد ما يخلص
الحسبة أرجعه فوق، كيف أرجعه فوق؟ الأب يساوي الإبن،
الأب يساوي الإبن، الأب يساوي الإبن فبتطلع لحالها
لفوق، فعشان هي كانت سمينها synthesizedبينما التاني
inherited يبقى هل أنا بحاجة للتنتين هذول ال
inherited و ال synthesized؟ الجواب على حسب السؤال
إذا السؤال مش طالب النتيجة عند ال root خلاص و أين
ما تكون النتيجة في الشجرة بلزمنيش ال synthesized
خلاص مانحناجي نتيجتي في الآخر ال inherited وين؟
تحت في الشجرة لكن إن كان السؤال زي ما بناخد لأ بدي
أشوف النتيجة فوق عند ال rootالان انا صرت ملزم اضيف
attribute تاني من نوع synthesize عشان ارحلها و
ارجع فيها لفوق وهي اللي صار زي ما انت شايفها لما
قولنا تلاتة في خمسة اخد التلاتة و ضربها في الخمسة
و جاب الناتج الان افرض يضرب ستة في ستة و يحط النتج
تحتفي سبعة هيضربها سوا ويحطها تحت خلصنا الآن طب
انا بتطلعها فوق شايفة كيف رجعها فوق لما تصير
epsilon يعني خلاص خلصنا خلاص ال synthesized يساوي
ال inherited و ال synthesized بيساوي ال
synthesized و ال synthesized بيساوي ال synthesized
لما تطلع لحالة فوق شوفتي كيف طلعها فوقهذه من آخر
لما نخلص سواهم عشان يلقطها في الـSynthesize
Attribute وبدأيش يطلقها في الـVariable التاني اللي
احنا سميناه Synthesize طبعا انت مش بضرورة تسمي نفس
التسميات أنا قادر أسمي T.N1 اللي هي بتتنزل القيم
تحتو T dot N two اللي بتطلع القيام فوق بس هو أخذ
أسماء related انه اللي على شكل inherited بيحب
يسميها اختصار N I N H اختصار ال inherited و اللي
هي ال synthesized بيحب يسميها ايش Sin عشان تتعلم
ان هاي synthesized و هاي inherited بس مش أكتر لكن
انت حرة في التسميةواضحت هاي كيف اشتغلنا؟ طبعا يا
بناتي اللي اشتغلتها انا هادى الـ Notated Parsing
Tree بس زمان كانت سهلة ع السريع من تحت لفوق كنت
تحليها اليوم لأ بدك تتفكري مين .. كيف أحل .. إيش
ال production اللي أخده في الأول فتشوفت قعدنا نجرب
أكتر من مرة جربنا هال بعدين قولنا طلعنا هال بعدين
رجعنا هال بعدين جينا هال صح ولا لأ فبدك تنتبهي
للقصة هاي طبعا كيف العملية ال systematic بتتم كمان
شوية هنتكلم في الموضوع هذالكن أنا الآن بهمني أن
تستوعب الصورة أنه لو بكون في inherited بيبطل ال
depth traversal بيبطل ال bottom-up يجيب معايا في
الأمثلة هذه لازم أزور بطريقة معينة اللي أقدر أحل
فيها ال notes الآن أي سؤال في المكان هذا عشان هيك
ال section الأول خلص نروح للsection التاني اللي مش
فاهم أي إشي هنا يسألني إذا مش فاهم ليش ال two
attributes يسألني إذا مش فاهم إيش يعني inherited
إيش يعني synthesizedجاب للسؤال معلش عشان توضح اكتر
لو قولت ضرب ستة يا بنات، لو قولت ضرب ستة، إيش كان
حيصير؟ هاد ال T كانت هتعمل إيش؟ T ضرب F T bar، ال
F هاد إيش هتصير؟ ستة، أيوة، الآن ال inherited هاي
تساوي الستة في ال inherited اللي فوقصار 6×15 يعني
90، لأن هذه صارت إبسلونهتنحط في الـ Synthesize و
سيكون الـ Synthesize هذا بيساوي الـ Synthesize
اللي تحت و Synthesize اللي تحت و تطلع التسائل اللي
فوق و كل ما بتزيدي تحت بيصير كل مرة يضرب، يضرب،
يضرب لكن آخر واحدة فقط اللي ما بتحط الـ Epsilon
يعني خلصنا الجواب جاهز الأن بنقله على Synthesize و
أنا ليش قلت بنقله؟ لأنه في السؤال طالبين نطلع
القيمة عند الـ Root عارف لو مش طالبين نطلع عند الـ
Root؟ هذا مابلزمنيش خلاص هذا الـ Synthesizeبلزمنيش
ال synthesize خلاص بلاقي جوابي وين في الآخر؟ في ال
inherited بس هو لإنه بدويا عنده ال root اضطرت
أنقله على ال synthesize و أصير أطلعه بطريقة الاب
يارت الإبن والاب يارت الإبن او يعتمد على الإبن و
هكذا باختصار اه سؤال خلاص ما مضحك في أسئلة بنات
واضح السؤال طيب ال synthesize بعتمد بس على نفسه و
على الأبناء بس صحيح ال inherited على الأباءو نفسه
ال synthesizer كله .. اه يعني ال synthesizer هو في
النهاية inherited لكن مش العكس يعني .. بس ثم خلاص
قاعدة المصطلحين مختلفين على أساس انه inherited على
الأخوة أو على الأبناء أو على ال parent فهمتي كيف؟
بينما ال synthesizer فقط على الأبناء في
أسئلة؟ طيب الآن بدنا نستكمل الدارس كيف نستكمل
الدارس؟evaluation orders يعني بدي يعلمني كيف بشكل
systematicأعمل زيارات للـ Node و أحل الـ annotated
يعني مابديش أقعد كل شوية أحذر ابدأ من هنا طب ابدأ
من هنا طب ابدأ من هنا طب ابدأ من هنا طب ابدأ من
ابدأ من هنا طب ابدأ من هنا طب ابدأ من هنا طب ابدأ
من هنا طب ابدأ من هنا طب ابدأ من هنا طب ابدأ من
هنا طب ابدأ من هنا طب ابدأ من هنا طب ابدأ من هنا
طب ابدأ من هنا طب ابدأ من هنا طب ابدأ من هنا طب
ابدأ من هنا طب ابدأ من هنا طب ابدأ من هنا طب
dependency و ال tree و قصص كتير أخدته و notes و مش
عارف إيش لكن على كل الأحوال على كل الأحوال ما
تقلقوش احنا هنشرح اللي بهمنا هنا الآن يا بنات لو
أنا عندي production زي هيكوعندي semantic زي هيك
كيف أعمل dependency graph لها دول عشان أعمل
dependency graph لازم تعمل في الأول ال tree و
عليها تعمل ال dependency زي قبل شوية كيف تشتغل ال
annotated كنت ترسم بالأسود ال tree و بعدين بالأحمر
تقول أيش اتحلي عليها وهي نفس الفكرة لما بتعمل
dependency graph تحط في الخلفية ال tree و بعدين
عليها هنشتغلونعمل ال dependency الآن افترضي انه بس
ال grammar كله تبعنا جملة واحدة زي production
واحدة كيف نعمل ال tree؟ هتقوليلي E عبارة عن إيش؟ E
زائد T مظبوط؟ أيوة الآن تعالى أفهمك إيش اللي هيصير
هذا الآنكم attribute موجود عندها؟ هتقوليلي تلاتة
هتقوليلي ال E هذه لها attribute صح؟ اسمه Val كيف
هتعبر عنه في ال dependency؟ هتيجي تقولي ال E هاي
اللي هي ال parent ويعمل دويرة زي هيك واسمها ايش؟
Val هيك انا حطيت ال attribute الأول ك node لأن كل
attribute يمثل node عندكالان في كمان attribute
لمن؟ لل إي و لا لل إبن يعني لل إي هاي وهذا كمان
ايش هتماليله؟ كمان note هيصاروا تنتين طب هل في
ضايق ال attributes؟ ا في ال T الهفالعليها جهانة
إيش هسوي؟ Note قال بعد ما بتحطي ال note الآن بتحطي
ال أسهم مين باعتمد على مين الآن الأبو باعتمد على
مين على ال E1 فبرسمها زي هيك يا بنات شايف السهم
اللي زي هيك؟ هذا إيش معناه السهم؟ إنه لازم أعرف
هاي حتى أقدر أعرف هاي ال deal يعني لازم أعرفه قبل
الرقص عشان أنا أعرف هاي عشان أعرف هاي هل بس هيك؟
والله في إشي تاني برضه ال E بتاعتمد على مين؟أتدوا
دفع عشان هيك هي رسمتيش الرسم اللي بالأسود بنسميها
dependency graph انه خلاص ورجتني مين بعتمد على مين
مين لازم أعرف قبل مين خلصت القصة يعني لازم أحل هاي
و بعدين أحل هذا ال attribute عشان أقدر أحل هذا ال
attribute شوفتي كيف مقطع ال dependency سهل خلاص
attribute بعتمد على مين حطيهم نوت ال attributes و
منهم قسمخلاص بيعرفني، طب هذا شو لزومه؟ هذا كمان
شوية هيساعدني مين أزور قبل مين عشان أحل ال
attributes تبعتي، هناخد مثال كمان شوية واضحة كيف
بنرسم؟ ماتعكسيش، إيش معنى هاي؟ طبعا مش مهم الأماكن
الدوائر يا بنات، يعني لو بتاخد الدويرة هذا وحطها
في الزاوية هناك مش مشكلة، المهم أنه لازم السهمين
يروحوا عليها، مش مشكلة، بس احنا بنفضل دايما نحطها
جنبالـ non-terminal تبعها عشان أكون عارف مالأخبطش
لكن أنا حورف إن هي الرسمة اللي بدور عليها اللي
بالأسود اللي بالأحمر هذه بس مخطوطة كخلفية عشان
أقدر أحدد عليها ال notes و مين بيتميد علي مين مش
أكتر زي هذا أنا اللي بالأسود عشان أقدر أحدد مين
اللي بدي أحسبهم بالأحمر الأحمر هو المطلوب في ال
annotated تمام؟ طيب لو عندي هيك وعندي هيك وهادي X
وهادي Y والسهم هيك إيش هتفهميه؟ إنه لازم أحلي ال X
عشان أعرف ال Yعكست السهم لازم اعرف ال Y عشان احلي
ال X باختصار طيب تعالوا الان ناخد مثال بدنا نعمل
الان dependency graph للتلاتة ضارب خمسة يعني على
نفس المثال اللي كنا نشتغل بدنا نعمل dependency
graph يعني الان انا مرشح السؤال يكون اعملي بارسينج
تري مرشح السؤال يكون اعملي annotated parsing tree
اللي بالأحمر مرشح السؤال يكون زي اللي هنتعلمه جديد
الآن اعملي dependency graphالحلو في الـ Dependency
Graph عشان تعمليها بدك تعمل نفس فكرة الـ annotated
أن الخلفية تكون parsing tree بعدين تشتغل عليها
Dependency واضحيت؟ طيب الأن نجي على سؤالنا اعمل
Dependency ل 3 ضارب 5 طبعا 5 أهمي ليش؟ بالأحمر لأن
الأحمر هذا مش سؤالي هذا اللي بالأحمر هذا ال
annotated حلو
يعني خليني أنزل بس هذه كانتأيوة إذا لما بقوللي
أعمل dependency graph ل 3 ضارب 5 ال step الأولى
بدي أعمل ال tree العادية في الأول ال tree العادية
الخلفية ال notated ال عفوًا ال tree ال parsing
التالتة درهين عملتها خلاص الآن تعالوا نشتغل لل
notes كيف نشتغل؟ بدك تاخد في الترتيب production و
production مش شرط .. بشكل عشوائي بأي شكل بديكي
يعني على سبيل المثال لما القف بتعطيني digit اتطلع
عليها ايش .. ايش .. ايش فيها notes و مين بعتمد على
مين تعالي تطلعي
طبعا مش شرط تبدأ زيه مهانة ابدأ من أين ما بديك بس
احنا دايما بنفضل مرات بكون البداية من الأطراف من
ال leaves مرات تكون أسهل لجيتها مش ظابط بسيبها
برجعلها بعدين لإن ممكن تكون هي synthesize و ارتاح
و أخلص شوفتي كيف؟ لكن مش غلط يعني ابدأ من أين ما
بديك على كل حوالي يعني طيب الان انا بترجع لمين
انا؟ لل grammar لازم بعد مترسم ترجع لمين؟ لل
grammar عشان تقدر تحلي
هي ال grammar أول
حاجة أقول إنه تطلع على مين؟ لما ال F بتطلعلي digit
إيش بيقول هنا السؤال؟ كم attribute عندي؟ اتنين
واحد لل digit واحد لل value تحت ال F هايهم هذا
الأول يعني وحط اسمها عندها عشان ما تلخبطيش لإن
الاسم كمان شوية تحتاجيه تعرف أن أنت هي هاي و عندك
نقطة لمين؟لل digit و بعدين بتحط الاسهم ايش السهم
افلة digit هيك خلصت بتاعة الافلة digit طالما في
زيها في الرسم خلصي منهم على طول انك خلص عرفتيها
فانا على طول باجي بقوله هنا اسمها Val وهذه digit
بنحلش قيم بناتها بنعمل dependency graph بحلش بقولش
خمسة بقولش تلاتة ماليش دعوة انا برسم notes واسهم
فقط هي ال dependency graph بحلش وهنا ايشلسه هام
خلاص و لو كل الدائرة روحتلها F digit خلصتهم بخلصهم
لأنه خلاص شفت هذه الحالة كيف الآن تعالوا نفكر لما
قال ال T F T bar ايش بديه يسوي قاللي ال T bar هاي
اللي هي الإبن هذا له value اسمها inherited صح؟
حطيها وين هذا؟ اللي هي هالي صح؟ هيها بالأحمر ايش
اسمها؟inherited و إيش كمان؟ و ال F دي إلها value،
مظبوط؟ بدي أحطلها دويرة، وينها؟ هاي، محتوطة،
مظبوطة أو لا؟ و بعدين إيش هعمل عشان أخلص اللي فوق
مرة واحدة؟ السهم، يعني في ناس بحبوا يحطوا ال notes
في الأول كلهم و بعدين يحطوا القسم أنا بحب على
السريع، إذا بيّن الندين والسهم بخلص على السريع،
الأن ماخلصناش من ال rules بتاعة هاي، كاملةإيش
بقولك كمان؟ بقولك الأبو إله قيمة اسمها Val بدي
أعبر عنها بدورة و أسميها Val و بقولك كمان الإبن
إله قيمة اسمها سن يعني بدي أعبر عنها بدورةواسمها
ال sin واش أعمل؟ أسهم هيك ليش أسهم هيك؟ لأنه عشان
أعرف البال لازم أعرف قبلها ال sin فهذه بتعبر عنها
بهذا السهم أنا يقعد بشكل في ال dependency طيب الآن
هنفس لمين؟ لما ال T بتعطيني ضرب F T bar إيش بيصير؟
تعالوا نشوفالـ T عططني ضرب اف تي بار اول اشي
بيقوللي الإبن هذا في انه inherited يبقى على طول
بدأ اروح على الإبن هذا اعمله ايش note واسميها
inherited بعدين كملي و بيقولك كمان في الأبو انه
note اسمه inherited الأبو هيه هيه شايفة الأبو هيه
اتطلع على الأبو محتوطة هيه مش هحطها محتوطةو بعدين
عندك ايش ال F اللي هي الأخو فيه له node اسمها Val
اللي جانبيها الان تعالي نحط الأسهم عشان أعرف قيمة
ال inherited بتاعة الأبن لازم أعرف ال inherited
بتاع الأبو و ال Val بتاع الأخو يعني كيف هتمثلها
هيك و هيك صح ولا لأ ان عشان أعرف ال inherited بتاع
الأبن لازم أعرف inherited الأبوو لازم اعرف van
الأخو شوفتي كيف؟ هبصير ايش؟ زي هيك شوفتي؟ طبعا في
ناس على طول كانوا من أول ما حطوا ال node و ال node
نزلوا الخط في ناس بيشتغلوا زي هيك و في ناس بيحطوا
ال nodes و بعدين بيش؟ بيوصلوا طيب، الآن ما خلصناش،
انا خلصنا مين؟ هاي، لكن كم ليه؟ ايش كم ليه؟ بقولك
T bar يعني لمين السن هاي؟ للأب، يعني حاجة للأب هذا
وينه؟ اللي هو هاي، همحتوطةمظبوط؟ إيش تساوي سن
الإبن؟ يعني الإبن كمان إيه إيه إيش؟ سن و بعدين أنا
عايز أعمل .. شوفتي كيف؟ خلاص .. هي .. هي .. هي سن
و هي سن محطوطة و هي تبدي عليها هذي لأن هي اللي
لازم أعرفها عشان أعرفها هذي .. كيف؟ عشان أعرف قيمة
الأب لازم أعرف قيمة الإبنطيب، الآن مين ضال علينا
عشان نخلص رسمتنا؟ اللي هو الـT bar بتعطي إبسلون مش
هي أخر production استخدمته؟ وين الـT bar بتعطي
الإبسلون؟ الـT bar .. أه .. وين؟ أه هيها إيش
بيقوللي؟ بيقوللي هذه الـT bar إلها سن وإلها
inherited بديك تحط النودين إلها هذه الـT bar إلها
سن وإلها inherited محتوطين ومين بيعتمد عالميا؟السن
لازم يعرف ال inherited قبله عشان كيف همثل؟ خلاص
الرسم هي كجهزة الرسم الآن خلصت اللي مرسومة بالأحمر
اسمها dependency graph إيش بتسوي ال dependency هذه
باختصار؟ بتقوللي مين لازم أحسب قبل مين عشان أقدر
أحسب حساباتي يعني الواضح أني لازم أحسب هذه بعدين
هذه عشان أقدر أحسب هذهو بعدين لازم أحسب هذه قبل أن
أذهب لهذه و بعدين لازم أحسب هذه وهذه قبل أن أذهب
لهذه و بعدين لهذه و بعدين .. يعني واضح مين لازم
أحسب مين لازم أحل عشان أخلص ال annotated لو بدي
أعمل annotated طيب الآن السؤال بنات ركزه شوية
السؤال كيف بدي أزور ال notesعلشان أقدر أحل بدون
مشاكل قال لي الآن بعد ما انت عملت ال dependency
بده تعمل حاجة اسمها ordering ايش يعني ordering؟
يعني مين أول note بدك تشوفها؟ مين تاني note بدك
تشوفها؟ مش أنا عندي يمكن عشر أو أحد عشر note هنا،
رتبهم، مين أول؟ مين تاني؟ مين تالت؟ مين الرابع؟
افرضي أجت فلانة قالت أنا بدي أزور هذه في الأول
وبعدين بدي أزور هذه في التاني بدي أشوف شغلها صح
ولا غلط وبعدين بدي أزور هذه في التالت وبعدين بدي
أزور هذه في الرابع وبعدين بدي أزور هذه في الخامس
اعتبر مافيش اشي باقي طبعا شغلها هذه صح ولا غلط صح
ليش صح لأن انت هتوصل لخمسة هتكون تلاتة مريت عليها
وبالتالة عشان احسن قيمة هذه بتكون شوفتي هذه الان
إذا انت صرت في تلاتة هذي بتتمد على هذي بتكون مريت
على هذي زمانطيب شفت انت كيف؟ فإيش بيقوللي؟ بيقوللي
الشرط اللي لازم انت تلتزمي فيه لازم رأس السهم يكون
الرقم اللي عليه أكبر من الرقم اللي عادل السهم إيش
معناه أنه لازم أكون شوفت ال deal تبعه فيه الأول
قبل ما أوصل عشان انا أقدر أحله يعني المقصد اللي
هنقوله أنت ما تفكر أنه في order واحد للحلهي اختارت
هذا ال order واحد اتنين تلاتة اربعة خمسة ممكن تيجي
فلانة تقول انا بدي ازاي هيك تقولها ايش بدك تقول
مثلا انا مابديش اعمل زي ما هي عملت هنقولها ايش بدك
تقول انا بدي هيك بدي واحد بدي اتنين بدي تلاتة بدي
اربعةبدي خمسة .. بدي ستة .. برضه هذه صح لأن انت مش
هتوصل لستة إلا تكوني شوفتي خمسة و شوفتي تلاتة يعني
بيكونوا خلصوا هدول حسب القيمة إذا كل هذا صح أي
order بيحافظ على الشرط إن رأس السهم الرقمي اللي
عليه يكون أكبر من ال delta السهم إذا مافيش أي
مشاكل طب إيش رأيك في هذا ال order؟ لو عامل أنا
التسعة هنا و عشر هنابنفعش لأنه لما زور تسعة طب هذا
لسه مزورتش طب هذا مستحيل أعلى كله بهذا صح ولا لأ
تنفعش لكن هذا تسعة و هذا عشرة ايش بيصير بتظبط فأي
order بدك إياه بتقدر على طول تعمله بدني المشاكل
طيب وضحت الآن يا بنات ليش احنا اتعرفنا على ال
order علشان اعرف ال notes كيف ازورهم عشان احل طب
زمان ليش ما اتعرفتش على ال order يعني زمان لما
أخدت في الشبات اللي الأولى لإن كنت انا ملبوط مقطع
صح؟ فكنت أشوف دايما ال leaves كنت أشوف دايما
الأبناء قبل الأب فكانت تنعلم اليوم الوضع اختلف صار
هذي بتعتبط على هذي هذي بتعتبط على هذي هذي بتعتبط
على اللي تحت هنا صار لازم أنا أعمل dependency
بعدين ordering بعدين تنفيذ خلاص أي order بتحطيه
سليم بتشتغل عليهو إيه كانت بترتاحي؟ يعني أنا لو
بدى أرجع أحلي ال annotated اللي قبل شوية مش هتعب
ليش؟ لأنه قاعد يغششني مين شوف أول و مين شوف تالت
ومين شوف تالت يعني بقولي خلص هذه و بعدين خلص هذه و
بعدين خلص هذه و بعدين خلص هذه فبصير بمشي كل إشي
بلاقي جاهز قدامي لما خلص كل ال annotated بدل قاعد
تجرب قبل شوية كتير واضحة؟ في أي سؤال؟ طيب شطين
ممتازين bravoمتحانكوا على التمانية ان شاء الله
تمانية و ده .. خلّيه سبعة و نص صحينة دي رجالكوا
سبعة و نص صحين بيخلّيني خلّيه
سبعة و نصبخليه ستة وش وش .. بخليه ستة ديلي بالك
صدقين بخليه خمسة كمان خلوش ه .. ديلي بالكم .. خلوش
.. ديلي بالكم باجي لحالي و بسفرك و بروح على طول
طيب .. طيب .. طيب .. البلجين مش مشكلة وراهم جاهزين
طيب الرسمة بتاعة الكتاب هي نفس اللي رسمناها قبل
شوية هيها
طبعا هي ال dependency graph شرحه وبعدين هي ال
dependency graph هي نفس الرسمة اللي رسمناها قبل
شوية هي نفس ال dependency اللي رسمناها بس أنا عامل
order معين هو عامل order معين شايفينه تمام هال
order وفيه مشاكل؟أنا كيف أقرر؟ دايما أشوف كل
الأسهم طول ما في رقم على رأس أكبر من رقمنا على
الدالي مافي مشاكل لاجيت ال .. لأ، على طول في مشكلة
تمام طبعا هو عمل أكتر من order في مثال الكتاب قال
بظبط كذا و بظبط كذا و بظبط كذا و بعدها حكي ال
conclusion اللي أنا قلته طيب، القال يا بنات في
حاجة اسمها as attributed و في حاجة اسمها ال
attributedإيش بقصد في ال as-attributed؟ قالك إذا
كل ال attributes من نوع synthesized هذا بنسميه ..
ال grammar هذا .. ال definition هذا بنسميه as
-attributedباختصار يعني أنا المطلوب مني عشان أحدد
S ولا مش S أطلعلك كل ال attributes ال semantic
rules اللي في ال grammar إذا كلهم بيعتمدوا على
أبناء كلهم بيعتمدوا على أبناء زي زمان S attributed
و ال S attributed على طول بتلحل بال depth
traversal و بتلحل بال bottom up خلصناإن لجيت بعض
ال attributes إيش inherited و إيش مش inherited ال
synthesizer بتبطل .. لسه ما قلتش ال بتبطل it's
attributed لكن ممكن تكون ال أو ممكن ما تكونش ال
إيش شرط إنها تكون ال attributed انتبهي بقولك إذا
كان في inheritedلازم يكون يعتمد على الإخوة اللي
على شماله أو ال parent إذا اعتمد على الأخ اللي على
اليمين هذا مش ال attributed طبعا إيش بقصد ب ال
attributed يا بناها؟ يعني إنه من الشمال اليمين
بتظبط معاه إحنا مش عملية ال parsing لما كنا نعملها
مش بنمشي من الشمال اليمين فانت تخيلي إن أنا عندي
ABC خلاص؟انت هتشوف ال B قبل ال C صح؟ فجالك لو ال C
بتعتمد على ال B فاش مشاكل ليش؟ لأنه انا هشوف ال B
على كل حوالي و بعدين هروح لل C فلما ال C بتعتمد
على أخوه اللي على شماله فهدي بنسميها ال attributed
يعني من شمال ليمين بتخلص لكن لو كان العكس بتكونش
ال attributed كيف العكس؟ يعني افترض ال B بتعتمد
على ال C طب انا هوصل ال Bفي ال .. في ال .. في ال
parsing و لسه ماشوفتش ال C إذا هذه مش ill
attributed هذه بدها نظام تاني خاص في التعامل معاها
شوفتي كيف أما ال top down و ال left to right بظبط
مع ال ill attributed طب الخلاصة أنا كيف أحكم إن
هذا ill attributed ولا مش ill attributed بشوف كل
ال attributesإذا كلهم synthesized خلصنا as
attributed طب بعضهم inherited بشوفوا بعتمد على مين
طيب على أبوه فيش مشاكل طب على أخو مين يا أخو فيهم
أه بعتمد على أخو اللي عشماله فيش مشاكل ال
attributed طب أخو اللي علي يمينه بطلت ال
attributed وصارت حاجة تانية class تانية ان شاء
الله و ان شاء الله كلهم بعتمدوا على الأخ و العشمال
إلا واحد قال يمين بطل كل ال syntax هذا بطل كله ال
attributedبكون الـ Attributed إذا كلهم انطبق عليهم
القرار طيب تعالوا نشوف هل هذا المثال S Attributed
ولا L Attributed ولا لا L ولا S فاكرولي فيها
الـ attributed طب تعالى نشوف الان هنا الإبنبعتمد
على أخه اللي وين؟ على شماله، إذا بطلت S بطلت S،
ممكن تبقى L وممكن لأ، هي الآن مشروع L طب شوف اللي
تحتها، الإبن اعتمد على أخه وعلى أبوه أخوه اللي على
الشمال، إذا هذه ال attributed ما خالفش الشروط،
اعتمد على الأب أو الأخوة اللي على الشمال، إذا ال
attributed طب تعالوا نشوف المثال اللي وراها
إيش رأيكوا فيها هذه ال ولا أس ولا لا ال ولا أس؟
تعالوا نشوف الأبو باعتمد على الأبناء يعني لحد
اللحظة مشروع أس ومشروع ال لأنه الأب باعتمد على
الأبناء، بدا أكملالأخو الان function بدلالة يعني
باعتمد على مين باعتمد على الأبو و باعتمد على ال c
اللي عيمينه اذا مش ال عارفة لو هذه مش موجودة يعني
بس باعتمد على الأبو خلاص بتصير ال attribute ال
لأنه باعتمد على الأبو طالما الأبو او الأخو بيصير
ال I inherited الا إذا اعتمد على الأبوالابن بيتم
دعو الاب وهذا inherited الاب بيتم دعو الاب
synthesized خلاص
خدوا break خلونا الآن نخلص ال break خلونا في ربع
ساعة نخلص برضه المحاضرة ان شاء الله طيب الآن بدنا
ناخد مجرد سؤال ممكن تتبري exercise يعني مافيش في
إيش إيانية جديدة مجرد مثال جديد طيب إيش بيقول
السؤال؟بدنا نعمل syntax directed definition لل
declaration إيش بتنقصد بال declaration يا بنات؟
يعني لما بتعرفي انت في language مش بتكتبي int x أو
ممكن تكتبي int x y z.y.z صح ولا لأ؟ إيش يعني لما
تعملي float x.y.z يعني ال x و ال y و ال z ما لهم
صاروا من نوع float طيب السؤالطب إيش دخل ال
translation؟ إيش دخل ال definition؟ مانت خلاص ما
أنا بقدر أعمل grammar لل syntax هذا طالما أنا بقول
definition إيش تتوقعي ال action اللي لازم نعمله؟
انسيلي هذا انسيلي هذا انت لما واحد يقولك int x
خلاص هو ك syntax مظبوط إيش بتتوقعي فيه action بدي
أسويه؟ بدي أخذل إن نوع ال x انتجر، بسفلوت Y بدي
أخزن إنه نوع Y فلوت بس مش أكتر طب كيف بدي أخزن؟
أنا ما بدي أخاف من أسئلة زي هذه يعني بمعنى خلاص
مديش أعمل والله code و أعمل hash table و bot خلاص
بقدر أقول function اسمها add و أكتب تعريف ال
function و هاد ال function عبارة عن تخزين لقيمة ال
type جوا كده و خلاصنايعني سهل الأمور بتكون سهلة
جدا ما تتعجدي في الأمور لما بتحسي بدك تعملي action
في السؤال بده استبزه خطوات عبري عنها ب function
صغيرة و على الهامش على جانب أوصي في ال function
قولي ال function هذه بتكون بواحد اتنين تلاتة بعد
ان كدرت تعمليها ب C و الله بتجيبها that's fine
it's okay فانت ما تخافي من صيغة سؤال و الله كيه
بده أروح أخزن ال type خلاص بعمل function اسمها
أخزن typeشوفت كيف؟ فالأمور سهلة خالص ما تجليجي من
الموضوع هذا بتاع ال actions طيب، الآن نرجع لسؤالنا
أول شي أنا بدي أعرف ال declaration ال declaration
عبارة عن شو؟ type و list check مش قابلة قلت int
list float list check يعني ال declaration ببساطة
هي عبارة عن type ثم list طيب ال type هذه ال T شو
هي؟ float doubleإنتجار whatever طب ال list أخدناها
زمان مش أخدنا exercise كيف تعمل list of
identifiers ال list عبارة عن list فاصلة ID أو ID
خلصنا هيك .. هيك خلص منين؟ ال syntax، ال grammar
الآن بتسينا أفكر بعد كده، عند كل production إيش
بدي أعمل؟ اللي هو ال rules تبعته أول شي راكزيليها،
شايفة؟ هاي ك grammar مش في مشاكلالـ declaration هو
بدي جي type ثم list ال type هو integer أو float أو
double أو whatever ال list هي list فاصلة ID أو ID
خلصت هيك ال grammar خلصت الآن تعالى نفكر في ال
rules شوية عشان نفكر في ال rules شوية أنا بس بدي
أسألك على شجة هنا لما احنا بنقول ال list بتعطيني
list فاصلة IDو ال D بتعطيني TL سؤال شو نوع ال ID
بدي يكون؟ مش بدي يكون ال type يعني واضح أن ال type
بدي يورث قيمته لل L و ال L بدي يعطيها لل ID و
يعطيها لإبنه ليش لإبنه؟ لأن ابنه ممكن يشي أعمليعمل
ID تاني فواضح أنه أنا بلزمني attribute لل L ياخد
قيمة ال attribute تاعت ال T وكل مرة يعطيها لل ID
ويعطيها لإبن ال L ويبقى العملية مستمرة صح أو لا؟
فهذا من نوع إيش بنسميه inherited إذا واضح أن ال L
هذه لازم يكون فيها inherited attribute عشان ياخد
القيمة من برة ويورثها للأبناء طب السؤال هل هذه ال
L بلزمها كمان synthesize attribute؟احنا الان مش
مطلوب نعمل نتيجة عند ال route صح؟ انا بس مطلوب انه
لما بيجي ال ID يحط في ال ايش؟ في الجدول لما بيجي
ال ID يحط في الجدول اذا انا مابلزمني attribute
يطلع النتيجة عند ال route عارف لو هو طالب مني حاجة
تروح عند ال route بعمل كمان لل ال زي ما عملنا قبل
شويةSynthesize و بيصير في الآخر أخد قيمة ال
inherited و أرجعها لكن هنا ليش ماعملش inherited و
synthesize زي أول اكتفى بال inherited لأنه هنا مش
ملزم يرجعش لل root هنا بس ع المطرح لجأ ايدي حط
قيمته لجأ ايدي حط قيمته خلاص خلاص شوفتي ليش هنا
مضافش synthesize و قبل شوية في ال infix هناك اضاف
لأن هناك كان السؤال طالع ال root النتيجة فضطر يضيف
اشي زيادة مضحكت؟ طيب تعالوا نشوف الآنبشكل واضح
تعالى نشوف لما
ال T بيعطي Int ايش هتعمل رولك بالها هتقول ال T dot
I تساوي انتجار صح هاي لما ال D بتعطي T مش هيكا ها
IntX Y Z مش هاد ال T مش هاد ال list مش كيمة ال T
بتروح لل list صح ولا لأ عشانك انا في الأول لازم
اعرف كيمة ال T أساسا شو هي ال Tما هي قيمة الـ T
التي أريد أن أدعيها للـ List للباقي؟ لذلك عندما
نقول هنا T يعطيني Int لازم الـ T هذه يكون لـ Value
اللي هي قيمة الـ Type فما هي الـ Type هنا؟ Integer
طب وعندما تكون float ما هي؟ float إذا الـ T هذه
انعرفت ما هي قيمتها؟ لذلك عندما D تعطيني TL ما
تتوقع أن نفعل؟أكيد أقول ال type هذه تاعت ال T
راحلها للأقل خلاص وما تعملش أكتر من هيك عشانك لاحظ
ايش سوى قال ال L هذه في لها value تاخد قيمة ال
value تاعت تاعت تاعت تاعت تاعت تاعت تاعت تاعت تاعت
تاعت تاعت تاعت تاعت تاعت تاعت تاعت تاعت تاعت تاعت
تاعت تاعت
تاعت تطيب ممتاز تعالى الآن لما ال ال بتعطينا ال
فاصلة اي دي ايش حضرتك بدك تسوي اكيد تسوي حاجتين
تقولي ال type بتاع ال ال هذايساوي ال type بتاع
الأبو صح؟ هذه أول حاجة عشان لو بده يكمل ايش الحاجة
التانية ال ID اللي طلع بدك تحطي نوعه الأبو ال type
بتاع الأبو ايش ال type بتاع ال ID بتاعه مش ال L
inherited عشانك ايش بيسوي بقولك لما ال L بتعطيني
ال ID ركزي في الأول عليه هذه نسيلي هذه شوية أول
حاجة ال ID هذه وضحت ان هذه ال ID قيمتها ال
inherited بتاعة النوعطب ايش ال action بتاعنا نسوي
انه الابن هذا بدي اخد مين ال type بتاع الأبو قالك
الابن ال inherited بتاعه بتساوي ال inherited الابو
و هضلها طب لما ال ال تعطينا ال ID يعني اخر واحدة
ال ال بتعطينا ال ID و خلاص ماضلش ال تورث خلاص
هيقول ال ID هذه ال type ال ID ال ال ابو هذه ال
type ال ID ال dot L شوفت كده يعني سهل ان انت تحطي
الخطوات الاصطناعية الاصطناعية
الاصطناعية الاصطناعية الاصطناعية الاصطناعية
الاصطناعية
الاصطناعية الاصطناعية الاصطناعية الاصطناعية
الاصطناعية الاصطناعية الاصطناعية
الاصطناعية الاصطناعية الاصطناعية الاصطناعية
الاصطناعية الاصطناعية الاصطجابنا وراها dependency،
في أي سؤال هنا؟ في حد مش فاهم إيش هنا؟ حد مش فاهم
حاجة هنا، جابنا وراها dependency؟ هاي اللي قولنا
عنها، دي مجرد function إنها خلاص بتاخد ال ID و
بتاخد ال node و بتحطهم في الجدول، خلاصنا ماليش
دعوة، مضحك؟ طيب تعالوا نشتغل dependency، نرسم
الخلفية بالأحمر و بعدين بالأسود نعمل ال nodes
هتقوليلي ال D عبارة عن إيش؟ T و List و ال type
عبارة عن إيش في ال note و ال L L فاصلة ID L فاصلة
IDالـ ID الان الرسمة جهزة الان بقى إيش نعمل نمسك
كل production نشوف مين هم ال attributes نحط عليهم
دوائر و نحط الأسهم تعالى نبدأ مثلا من الـ T أعطت
float إيش بقول الـ T أعطت float في عند اتنين
attributes ال float نفسه و ال type تاع ال T و
السهم يعني هتيجي تقوليلي هنا هنا في دويرة اسمها
type بظبطو هنا في دورة تمثل الـ float النوع و هنا
في إيش سهل طيب تعالوا نكمل لما ال D بتعطيني ال T
لجان
ال L هذه لها attribute اسمه inherited هذه بدي أحطه
اسمه inherited و ال T هذه لها attribute اسمه type
هي محطوط و هيصير عندي إيشسهم هيك الآن لما ال ال
بيطيني ال فاصلة ID اول اشي ال ال ابن هذا اله
inherited و ال ابه اله inherited تعالى نتطلع ال اب
موجود وهي inherited من؟ ال ابن و هيك السهم انه
لازم هذا يدي قيمة هذا و في كملة و في كمانAt time
هذه الـ function يا بنات بتمثلها زي هيك دويرة تمثل
الـ function نظبط هذه الـ function بتعتمد على مين؟
هذه الـ function بتعتمد على مين؟ هي على ال ID وعلى
مين ال L؟ وعلى الأبو عشان هيك هذه ال ID وهذه الأبو
هتعمل هيكو تعمل هيك هذه ال function عشان أقدر
أنفذها لازم أكون أعرف ال ID اللي بده أحطله ال
value تحت ال type و لازم أكون أعرف ال type شوفتي
كيف خلصت من مين من ال .ID الآن هنعيد ال ال .ID نفس
الفكرة عيدي في inherited للأبن اللي هو هذا و في
inherited للأبو هي موجودو بعدين بدنا نعمل ال
function ال function هاي دوارة ال function طبعا
بنات انا ممكن احط دوارة في اخر الدنيا ماليش داعي و
اين مابديك حطيها حطيها المهم ان في دوارة تمثل ال
function و هاد عشان تنعمل بدها تكون عارفة ال ID
اللي بدك تجيها و تكون عارفة ال inherited اللي
كتبناها مش ال inherited هاي
الان اشضر علي اخر اشي الال بيعطيني ID مافيش شي غير
ايش فانكشن هي ها هتاخد من اين؟ من ال ID و ال
inherited اللي انا حسبته هذه الرسم اللي بالاسود هي
ال dependency المفروض الاردنسي يشتغل بعدين
orderingترتيب الذكية و بعدين حلي ال notes طبعا هي
رسمة الكتاب هي نفس رسمتنا بس ما اختلف شكل بسيط هي
رسمة الكتاب الكتاب طبعا متعود بيحط بدل ال notes
بيحط الأرقام على طول خلاص بعمل order على طول رسمتي
و رسمة الكتاب شبه بعض بس اللهم يمكنك ترفعي حد لفوق
شوية بس اما هى اتطلع اقارنيه اذا جيت فيه اختلاف
قوليلي اختلاف .. لا لا اتطلع شوفوا و قولولي اذا
فيه اختلاف و قولوليبس خلص خلص خلاص في أيه أسئلة؟
في أيه أسئلة؟ يعطيكم العافية