الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مكرونة الإسبكّتي و علاقتها بالبرمجة:

بدأه ♥ حُوريّة ♥ في 16 ديسمبر 2007 · 21 رد · 6,193 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

شيفرة الإسبكتي Spaghetti Code, عبارة عن مصطلح تقني يصف ذلك النص البرمجي الذي يكون صعب القراءة, الفهم, و صعب المراس والتتبع من قبل المبرمجين(قراء البرنامج), و ذلك لأن شيفرة الإسبكتي قد تكون غير منظمة و قد تكون مقسمة إلى عدة أقسام بعضها يكون مختص بأعلى الملف البرمجي و البعض الآخر بأسفل منه.

(لوووول,,, فكرتوا انها مكرونة عن جد؟؟) ان شاء الله رايحة اعمل لغة تعمل بشاميل :pwease:

يمكننا كتابة شيفرة من هذا النوع بواسطة لغة C++ و لكننا غير مضطرين لهذا الشيء. عموماً هناك تصريح يسمى goto في هذه اللغة مسؤول عن كتابة برامج او أجزاء من البرنامج بصغية الإسبكتي(مثل المكرونة ملتوي و مطبق على بعض, لكن أكل مكرونة الإسبكتي مي صعبة و مملة مثل تتبع وقراءة شيفرة الإسبكتي "يم يم").

التصريح goto يقوم بأمر البرنامج إلى الإنتقال إلى عنوان جزء ما في الرنامج. هذا العنوان نكون كتبناه مسبقاً في البرنامج بواسطة طريقة الرقعة الإسمية label. على سبيل المثال البرنامج التالي الذي يقوم بالعد من 1 إلى 5مكتوب بلغة C++ يقوم بشرح كيفية عمل goto :

  1. //Spaghetti Code
  2.  
  3. #include <iostream>
  4.  
  5. using std::cout;
  6.  
  7. using std::endl;
  8.  
  9. int main()
  10.  
  11. {
  12.  
  13. int count = 0;
  14.  
  15. start: //This is known as a label named with "start"
  16.  
  17. //count from 1 to 5
  18.  
  19. count++;
  20.  
  21. cout << count << endl;
  22.  
  23. if( count >= 5 )
  24.  
  25. goto exit; //here is the usage of goto statement.
  26.  
  27. goto start; // and here too.
  28.  
  29. exit: // This is another label named with "exit"
  30.  
  31. cout << "end of the program..." << endl;
  32.  
  33. return 0;
  34.  
  35. }
  36.  
  37.  
  38.  
  39.  

التصريح goto والذي يعني إذهب إلى... ثم يليه العنوان الذي نريد من البرنامج الإنتقال إليه مثل start و exit. لاحظوا انا مجزئة البرنامج إلى جزئين (داخل الإجراء الرئيسي) جزء معنون بـ start و جزء معنون بـ exit ولاحظوا كمان علامة الكولون : عند نهاية كل عنوان. لاحظوا إن البرنامج ينزل عادي من أعلى إلى اسفل و رح يقوم بتعريف وتعين قيمة استهلالية للمتغير count نزولا بزيادة هذا المتغير و طباعة قيمته الجديدة(بعد الزيادة) ثم يتحقق من الشرط عن ما لو كان المتغير count اكبر من أو يساوي العدد 5؟ لو نعم: رح ينتقل البرنامج إلى جزء البرنامج المعنون بـ exit و لو لا: رح ينتقل البرنامج إلى السطر التالي و اللي بيكون تصريح goto آخر للإنتقال إلى الجزء المعنون بـ start مرة أخرى.

انا متعمدة اكتب امثلتي ببرامج بسيطة مثل هذا البرنامج (العد من 1 إلى 5) ليسهل التركيز على الموضوع الرئيسي وليس البرنامج نفسه. لهذا السبب ركزوا على عمل goto وبس. و انا موثقة البرنامج بتعليقات عند كل سطر تقريباً و لكن باللغة الإنجليزية البحتة.

ملاحظة: يمكننا كتابة البرنامج السابق بكل بساطة بواسطة جملة التكرار for أو أي جملة تكرار أخرى.

أوكي!!! تخيلوا لو كان البرنامج مليان بإذهب إلى... و مليان عنواين وأجزاء !!! كيف رح نقدر نتبع البرنامج و نفهمه أو نراجعه او نعدله في وقت لاحق؟؟؟ هذا هو ما يعرف بشيفرة الإسبكتي و هي غير محبذة تقنياً و برمجياً و يجب الإبتعاد عنها بقدر الإمكان (لأنها تزيد غموض البرنامج و تعسر عملية تتبعه).

أوكي! مؤلف لغة C++ و هو العالم Bjaren Stroustrup ترك goto هذي بالرغم من اكتفاء اللغة هذي بطرق وتقنيات تغني تماماً عن استخدام goto اللي بدورها تجعل من الشيفرة مكرونة إسبكتي و هي طريقة غير مرغوب فيها برمجياً. يا ترى لماذا؟؟؟

اوكي! لأنه ذكي و حاب يجعل من لغة C++ لغة غنية بقدر الإمكان بكل أسلوب برمجي ممكن, ومن بينها أسلوب كتابة البرامج بطريقة الإسبكتي هذي. حتى لو كانت مستمدة من لغة C لكن هو تركها على ماهي عليه.

اوكي! انتهينا من العيب الكامن بالتصريح goto ومشكلة شيفرة الإسبكتي في ما سبق... خلونا هنا نتعرف على فائدة التصريح goto و بش ممكن تنفعنا في لغة C++. !!

اوكي! كلنا نعرف إن الأمر break يقوم بإخراج البرنامج من البلوك الداخلي إلى البلوك الخارجي الحاضن له مباشرة ( بلوك يعني block هو كل ما بين الأقواس المجعدة {…}.). لكن لو كان عندنا مجموعة بلوكات متداخلة و معششة داخل بعض Nested Blocks, و نريد الخروج مباشرة من أقصى بلوك داخلي إلى آخر بلوك خارجي يحتويه؟؟؟

هنا يأتي الدور المفيد والنافع للتصريح goto. على سبيل المثال لو كان لدينا مجموعة بلوكات معششة واحدة داخل الآخرى, نكتب عنوان يليها مباشرة ثم نقوم بكتابة التصريح goto إذهب إلى العنوان...داخل أقصى بلوك داخلي نريد الخروج منه. وسيقوم البرنامج بالخروج مباشرة إلى حيث العنوان. وهذه لا يمكن تنفيذها بواسطة الأمر break. شاهد المقصوصة التالية:

  1.  
  2.  
  3. //Example:
  4.  
  5.  
  6. for( ) {
  7.  
  8. for( ) {
  9.  
  10. while( ) {
  11.  
  12. if( ) goto stop;
  13.  
  14. .
  15.  
  16. }
  17.  
  18. }
  19.  
  20. }
  21.  
  22. stop:
  23.  
  24. cout << "Error in program.n";
  25.  
  26.  
  27.  
  28.  

المثال بالأعلى من كتاب C++ from the GROUND UP لـ Herbert Schildt.

الآن يخرج البرنامج إلى جزء البرنامج المعنون بـ stop مباشرة وليس مثل الأمر break الذي سيخرج إلى البلوك الحاضن مباشرة لهذا البلوك.

يا ريت اكون وصلت الفكرة و تعريف شيفرة الإسبكتي على النحو المراد!!

مع تمنياتي لكم بالتوفيق

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 4 يوليو 2008 في 20:40 — السبب: تغير صندوق الشيفرة للجديد

−1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#2

ما شاء الله اختي رغد :.

صحيح اعرف هذه الشفره من قبل لكن بهذا الاسم اول مره تمر عليه !

شكراً لكي.

tvquran_6.gif

#3

شكرا اخت رغد ..

اثريتي المنتدى بمعلومات جميلة غائبه عن اغلب الاعضاء ..

ولكن لو جئنا لنتكلم قليلا عن goto . . . صحيح ان مبتكر اللغة (C++) ترك هذا الايعاز موجودا فيها رغم ان اللغة بامكانها الاستغناء عنه ولكن هذا الايعاز لا يستعمل لانه يدل على تخلف البرنامج الذي يستعمله بكثرة .. ولكن في اشد الحالات واضرها التي نحتاج لمثل هذا الايعاز هو المثال الثاني الذي وضعتيه انتي ..

ولكن بالنسبه لشفرة الاسبكتي فاتوقع انها شفرة غير مفيدة .. لانها تجعل البرنامج مبعثر وحتى صاحبه يكرهه .. ويمكن استخدام شفرة الاسبكتي من دون goto .. لان شفرة الاسبكتي اساسها بعثرة كود البرنامج فتجعل قمة كود البرنامج في اسفله والعكس ايضا ..

نستطيع استخدام الدوال بحد ذاتها بالبعثرة .. فكل جملة نبرمج دالة واحدة قبل الmain والاخرى بعد main ونستدعي هذه ونترك تلك وكل واحده لها وضيفه حتى لو كانت بسيطة ولكن بالناتج النهائي عند تتبع البرنامج سنلاحظ انه كل دقيقة نخرج من دالة لندخل باخرى الى ان ننتهي بعدم فهم للبرنامج وهو المطلوب من هذه الشفرة ..

هذه مقالة ممكن ان تثري الموضوع ايضا

www.computerhope.com/jargon/s/spaghett.htm

كما وان التعريف المستخدم لهذه الشفرة من قبل بعض المواقع والمراجع عند دراستي لها كان ..

spaghetti code: n.
Code with a complex and tangled control structure, esp. one using many GOTOs, exceptions, or other ‘unstructured’ branching constructs. Pejorative. The synonym kangaroo code has been reported, doubtless because such code has so many jumps in it.

ارجو ان توافقي على اضافتي هذه وهي ايضا لتزيد من المعلومات التي في الموضوع وليفيد اكبر قدر من الاعضاء ..

بارك الله فيك اخت رغد على المعلومات الجميلة وواصلي نشاطك ..

تحياتي العطري ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#4

في بداياتي البرمجية كان البرنامج الذي أكتبه بلغة البيسك مقسم إلى قسمين

قسم جمل منوعة و قسم آخر لا يحتوي إلا على جمل ال GoTo

يعني البرنامج أبو 30 سطر 15 Goto

والباقي أوامر أخرى .

وقد لاحظت في تلك الفترة أنني كنت أعشق المعكرونة

#5

أهم شيء أن المكرونة تطلع شغالة :D

#6
اقتباس
أهم شيء أن المكرونة تطلع شغالة

و صلصتها خفيفه :D

استخدام ال GoTo او ما يسمى حديثا بال Labels Reference من اسوأ الاستخدامات البرمجه من ناحية ال Execution Time و ال Program Performance ... تماما كما قضية استخدام ال Recursion ...

It's hard to stay in such ridiculous situation

#7

شاكرة تعليقاتكم هذي اخواني.

لاحظ يا أخ سنان انا ذاكرة التعريف في البداية بصفة عامة و بعدينه حددت بأن من ابرز الأشياء اللي ممكن تخلي الشيفرة مكرونة اسبكتي هو استخدام التصريح goto وطريقة العنوان labels, تجزئة الشيفرة إلى اجزاء معنونة. وعموماً شاكرة الإضافة تبعتك يا أخ لأنها فيها زيادة فعلاً.

أما بالنسبة إن المهم الشيفرة او البرنامج يعمل والسلام مثل (أهم شيء المكرونة تكون شغالة) فهذا مفهوم خطأ لأنه رح ترفضه مفاهيم كثيرة بهندسة البرمجيات لاحقاً. طيب انا كيف رايحة اقدر اقرأ الشيفرة تبعتك يا خالد واللي مكتوبة مثل الإسبكتي هذي؟ وكيف رايحة افهم واتتبع خطوات البرنامج واعدل فيه؟ :wacko:

و بالتالي هناك نصائح تؤيد فكرة المشرف خالد بحالة (لو) كان مو مهم تكون الشيفرة مقروءة | و حالة اننا نريد الشيفرة تتنفذ بشكل أسرع!! ففي هذي الحالة يُفضل استخدام الإسبكتي goto عادي

يعني الأخ محمد أكرم مخطيء بخصوص سرعة زمن تنفيذ البرنامج او الجزء المكتوب بطريقة الإسبكتي goto هذي. على العكس التصريح goto اسرع في التنفيذ من جُمل التكرار العادية مثل for, while, ...etc !

يا ترى لش؟

أوكي, لأنه عبارة عن قفز غير مشروط Unconditional Jumping. وهذا يعني إن المعالج المركزي CPU ما راح يقوم بعملية التحقق من شرط معين داخل وحدة الحساب والمنطق تبعته ALU.

يعني يا محمد ليس هناك عيب موجود بالتصريح goto متعلق بوقت تنفيذ البرنامج, على العكس اسرع من جمل التكرار الباقيات.

:ty:

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#8
اقتباس
أما بالنسبة إن المهم الشيفرة او البرنامج يعمل والسلام مثل (أهم شيء المكرونة تكون شغالة) فهذا مفهوم خطأ لأنه رح ترفضه مفاهيم كثيرة بهندسة البرمجيات لاحقاً. طيب انا كيف رايحة اقدر اقرأ الشيفرة تبعتك يا خالد واللي مكتوبة مثل الإسبكتي هذي؟ وكيف رايحة افهم واتتبع خطوات البرنامج واعدل فيه؟ wacko.gif

و بالتالي هناك نصائح تؤيد فكرة المشرف خالد بحالة (لو) كان مو مهم تكون الشيفرة مقروءة | و حالة اننا نريد الشيفرة تتنفذ بشكل أسرع!! ففي هذي الحالة يُفضل استخدام الإسبكتي goto عادي

:resentful:

في الحقيقة كنت أمزح, و لكني فهمت من كلامك أن هذه التعليمات و غيرها مما شابهها لا يجب استخدامها في برامجنا على الاطلاق, فأنا لست معك في هذا الاتجاه.

أنا أعلم أن هندسة البرمجيات تشجع على كثير من العادات التي يجب اتباعها للحصول على الفائدة الأكبر من البرمجة ( البرنامج و الكود على حد سواء ) أولاً و أخيراً,

و لكن يبقى الـ Optimization من المراحل التي يجب أن يمر بها أي كود للحصول على أفضل أداء, و هذه التحسينات أحياناً لا يمكن الحصول عليها إلا "بتعقيد" الكود, و تعقيد هنا تشير إلى عدم وضوح الكود أو الطريقة من خلال تتبعها و خصوصاُ من المبتدئين أمثالي , فعلى سبيل المثال برنامج كـ Mathematica يستخدم Arbitrary Precision Numbers , هل تعتقدين أنه يستخدم طرق سهلة الفهم من أجل سهولة تطويره لاحقاُ في إجراء العمليات على هذا النوع من الأعداد,

لا يمكن أن أتصور أنه يستخدم العمليات الحسابية و الـ For loops في دالة لمعرفة إذا كان العدد power of two :calc:

بدلاً من ذلك يمكنهم استعمال بعض البهارات, و خصوصاُ عملية التفكير في تفاصيل الـ low level للحصول على أداء أفضل و ربما بسطر واحد في C.

في الحقيقة كثيراُ ما يستخدم المبرمجون لغة الاسمبلي لكي تكون عملية الـ Optimization أكثر كفاءة, و خصوصاً في الـ System Specific Solutions ,

بالنسبة للـ Performance فليس هناك فرق يمكن ملاحظته حتى على Motorola 68K 16MH بالمناسبة :P

و أما دورة أو دورتين فرق لكل تعليمة فهذا لا يمكن أن يذكر إلا في حالة تكرار الاستدعاءات بشكل مهول بحيث يصبح انشاء frame على الـ stack عبئاً, و هذا بالطبع يحصل في حالة الـ Recursion على سبيل المثال.

إن شاء الله في الحلقة الثانية من سلسة تطبيقات على مستوى الـ Bit سوف نرى كيف يمكننا عمل "ريجيم" للكود لكي يصبح أكثر رشاقة و كفاءة, بالطبع سيصبح "مكرونة" بدلاُ من الشكل المرتب الممل للكود الذي يشبه الهمبرجر في الشكل و الطعم

post-89451-1197871884_thumb.jpg

بالمناسبة الأكل و الكود بدون بهارات ليس لهما طعم :D

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 17 ديسمبر 2007 في 09:14

#9

فى انتظار

فتة العيد وعلاقتها بالبرمجة

انا عندى مقال عن الرز المحمر وعلاقته بالبرمجه

كله لصالح العيد

#10

ألف شكر أختي رغد ...... جداً معلومه رائعه ومفيدة .... والأسبكتي أسم على مسمى أكواد متشابكة !!!

ونحن متشوقون لما ستقدمينه بالأيام القادمه .....

تم تعديل هذه المشاركة بواسطة ++C++ في 17 ديسمبر 2007 في 15:10

#11

في حالات ضيقة جدا يمكن الإستفادة من هذه التقنية في لغة الـسي ++

وذلك على حساب وقت التطوير وسرعة تسليم الأنظمة والمشاريع البرمجية.

ولا يمكن أن نبرر اي استخدام جزافي لتصريح goto في وقتنا هذا ( البرمجة الحديثة )

إلا في حالة البرامج الفردية ( القائم على تطويرها وصيانتها شخص واحد ) والمراد منها

التعقيد فقط.

سر بقاء هذه العبارة هو الحالات النادرة جدا التي تحلها هه العبارة وذلك كما ورد في مثالك

الثاني ( استخدامها بشكل غير مجازف فيه وللغرض فقط ).

اكثر من درس ايجابيات وسلبيات استخدام هذه المفتاحية هما جاكوبيني وبوم, ووجدو

أن الإستغناء عنها بشكل كامل هو الأفضل وفي السبعينيات خرجو بقرا الإستغناء عنها

والإعتماد بشكل كامل وتام على حلقات التكرار وعبارات الإختيار.

رغم هذا كله , goto معترف إلى بها إلى الآن كمفتاحية مشتركة بين لغة السي والسي ++.

خارج المجال :

يذكرني هذا بأحد الكتاب في احد المنتديات, عندما تحدث أدنى مكاشفة وتفتح الحوارات الصريحة

الشفافة يخرج عن الموضوعية وينتقل الحدث إلى أماكن اخرى ويصبح الحوار معكرونة اسبقتي , وكل

هذا من أجل الهروب عن الإجابة .... طريقة غير ذكية :)

تم تعديل هذه المشاركة بواسطة BjarneStudent في 17 ديسمبر 2007 في 19:17

وليس يبني العلا الا نديٌ ووغى , همـا المعارج للأسنى من الرتب

#12

serving-set.jpg

مشكورين , وهذا شوي ملاعق للمكرونة

تم تعديل هذه المشاركة بواسطة الفدرالي في 17 ديسمبر 2007 في 19:38

أتراك عين والعيون لها مدى *** ماجاوزته ولامدى لمداكا

إن لم تكن عيني تراك فإنني *** في كل شيء أستبين علاكا

يامنبت الأزهار عاطرة الشذى *** هذا الشذى الفواح نفح شذاكا

يامجري الأنهار ماجريانها *** الا انفعالة قطرة لنداكا

يارب هذا العصر الحد عندما *** سخرت ياربي له نعماكا

او مادرى الانسان ان جميع ما *** وصلت اليه يداه من نعماكا

لو شئت ياربي هوى صاروخه *** او لو أردت لماستطاع حراكا

فليرض عني الناس او فيسخطوا *** انا لم اعد اسعى لغير رضاكا

ذقت الهوى مرا ولم اذق الهوى *** يارب حلوا قبل ان اهواكا

يارب عدت الى رحابك تائبا *** مستسلما مستمسكا بعراكا

اتردني وترد صادق توبتي؟ *** حاشاك ترفض تائبا حاشاكا

فأقبل دعائي واستجب لرجاوتي*** ماخاب يوما من دعا ورجاكا

ياايها الإنسان مهلا مالذي *** بالله جل جلاله أغراكا؟

فاسجد لمولاك القدير فإنما *** لابد يوما تنتهي دنياكا

---------------------------------------------------------------

لا إله إلا أنت سبحانك إني كنت من الظالمين

#13

لوووول نورا , شو رايك تعملي فتة العيد انتي بلغة جافا و نخلي المنتدى اطباق خيرية :lol:

-------------------------

العفو يا ++C++ و شاكرة تشجيعك هذا

-------------------------

و انا ماني قاصدة عدم استخدامها (على الإطلاق) يا خالد, لأني ذاكرة مثال جيد لكفية استخدامها وذاكرة الاسباب الجيدة بالنصائح لإستخدامها ايضاً. الخبراء(و ليس أنا) يعني ينصحوا بعدم المبالغة فيها أو اللجوء إليها بدون الحاجة الماسّة.

عموماً المشرف BjarenStudent جاب الفايدة بإجاز وشاكرة دعمه للموضوع بالافكار هذي

كاتبة الموضوع عشان افيدكم لكن أصبحت المستفيدة الأولى من الموضوع بكثير من المعلومات الموجودة بردودكم

مع تمنياتي لكم بالتوفيق

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#14

ياجماعة متنا من الجوع

والمكرونة عالية السعرات جدا ليس بسبب المكرونة نفسها ولكن بسبب التعقيدات التي تضاف الي كود طبخ المكرونة من صالصة طماطم وبهارات وجبن وربما لحم مفروم

انا اخصائي تغذية ولست مبرمج ولكني مبتدا فيجول بيسيك جبت معايا طبق وشوكة ودخلت علي الموضوع فطلع ++ C

وهذا اعقد من المكرونة الفوسيللي (الحلزونية )بعد سلقها

المهم هل ممكن تنفيذ هذا الطبق قصدي الكود في فيجوال أم لا

وما هي المكونات وطريقة العمل

شكرا

طريقة طرح الموضوع لذيده جدا ومشهية وخفيفة الظل

ياريت ما تنسوش تعطوني الوصفة بالفيجوال ولو كود صغير وقولولي كيف تتم البعثرة ومالكم صالح انا اقوم بالموضوع

أي سؤال في التغذية او الحميات انا تحت امركم

انا بنام هنا في المنتدي بعد أنتهاء الدوام من بالعيادة

مشكرين

#15

أنا جاى زيارة دخلت المنتدى لقيت ريحت مكرونة حسيت بخيانة فى المنتدى

بتاكلو وسايبنى

Comming Soon

#16

اين ذهب سؤالي عن كود الإسباجيتي وهل يمكن تطبيقة بالفيجوال بيسيك هو انا عن غير مسموح ام ماذا

#17
يوسف دايت كتب:
اين ذهب سؤالي عن كود الإسباجيتي وهل يمكن تطبيقة بالفيجوال بيسيك هو انا عن غير مسموح ام ماذا

أي لغة تدعم تعليمة او صيغة

goto

فهي لغة ممكن عمل مكرونة(شيفرة) اسبكتي spaghetti بها

,.,.,.,.,,,.

اطيب المُنى

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 27 يونيو 2008 في 07:23

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#18

شكرا لك أخت رغد

وشكرا علي وجبة المكرونة البرمجية الرائعة ذات المذاق الطيب

#19

هذه هي نفس الشفرة لكن بدون الاسباغتي


using namespace std;
void main()
{
int count;
for(count = 1; count <= 5; count++)
{
cout << count << endl;
}
cout << "end of the program..." << endl;
}
 #include <iostream>

#20

شكرا لك على الموضوع الرائع

معلومات قيمة جداً

بارك الله فيكم

في البرمجة بلغة Assembly لابد من استخدام Labels ، خاصة في عمل loops

فهذا هذا المفهوم هو نفسه ما يسمى بال اسبكتي ؟

#21
مجلـد جديـد كتب:
شكرا لك على الموضوع الرائع

معلومات قيمة جداً

بارك الله فيكم

في البرمجة بلغة Assembly لابد من استخدام Labels ، خاصة في عمل loops

فهذا هذا المفهوم هو نفسه ما يسمى بال اسبكتي ؟

تقريباً هيك ولكن مش بالصلصة(goto):happy:, يعني لغة اسمبلي من نوع Unstructured Programming Language يعني مش مهيكلة او منظمة لهيكل معين

,.,.,.,.,.,.,.

اطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#22

كلام جميل

مواضيع مشابهة