• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

Khaled Alshaya

المشرفون
  • عدد المشاركات

    2,052
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة Khaled Alshaya

  1. أهلاً بك أخي بندر :) ربما كلامي كان غامضاً قليلاً, و لكن لم أقصد أن معنى البرنامج سيتغير. ماقصدته أن عملية الترجمة ليست عملية reversible كما يعتقد البعض إلا في الـ toy compilers. كان هناك سؤال في SO حول الموضوع, و من كلام الـ gurus يبدو أن الموضوع أعقد مما تصورته أنا في البداية. كان هناك شخص يسأل, بأنه قام بترجمة الكود مرات متتالية و تغاضى عن الـ timestamps الموضوعة في الـ executable النهائي, و مع ذلك نتج كود مختلف! الذي تم توضيحه أن المترجمات قد تقوم بتفعيل بعض الـ optimizations في حالة وجود ذاكرة في لحظة من اللحظات و قد تقوم بعدم تطبيقها لعدم توفر ذاكرة كافية. بالنسبة للمسافة فسأعقد الموضوع قليلاً و أقول بأنها تعتمد على قواعد اللغة نفسها :P في ++C ربما تكون المسافة غير مؤثرة و لكنها في Python مؤثرة في نحو اللغة. تحياتي...
  2. بالنسبة لي أجد أنني أكتب كود سيء مقارنة بالذي أكتبه في المشاريع الشخصية, ربما لأن هناك deadline و متطلبات للتعلم بشكل سريع فتركز على إنتاج code that just works على عكس المشاريع الشخصية حيث يمكن أن تجد الوقت للقراءة و التطبيق و بدء المشروع من جديد إن لم يعجبك الناتج الأولي.
  3. و عليكم السلام و رحمة الله و بركاته, عزيزي, الكلام يطول لبعد الأسئلة عن بعضها و لكن باختصار. هل تعلم يا صديقي أنك لو قمت بترجمة الملف ثم قمت بتعديل مسافة فيه لا تؤثر على الكود إطلاقاً ثم قمت بترجمة البرنامج مرة أخرى قد لا ينتج الكود نفسه بالضبط؟! طبعاً هذا غير وارد الحدوث إلا نادراً جداً و لكنه قد يحصل. عملية الترجمة ليست عملية deterministic إلا نظرياً. بينما في الحقيقة المترجمات تتأثر بكمية الذاكرة الموجودة في غيرها من العوامل و قد يوثر ذلك على تفعيل عملية Internal Optimization مكلفة. تحياتي...
  4. [مخالف - طلب حل : ]ثلاث مصفوفات ؟؟

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  5. احترامي و تقديري لمجهوداتك أستاذنا, و لكني عندي سؤال خارج عن الموضوع قليلاً. هل النشر في المجلات العملية له وزن أكبر من المؤتمرات أم العكس؟
  6. سوال حول !n فی ProjectEuler

    و عليكم السلام و رحمة الله و بركاته, نحتاج إلى التعامل مع عدد خانات كبير جداً مقارنة بأي نوع أعداد في ++C. يمكنك استخدام مكتبة Arbitrary Precision Integers أو أن تقوم بكتابة الـ Implementation بنفسك. حسب ما يظهر لدي, فأنا قمت بحل السؤال بواسطة مكتبة MAPM :P. أذكر أني كتبت موضوعاً عن كيفية إعداد المكتبة للعمل, و هذا الكود الذي وجدته ضمن الأكود التي لدي لحل السؤال(لا تخف quick/dirty و لكن يعطي الإجابة الصحيحة :wink: ): char numberString[2048] = {0}; MAPM number = 100, fact = 0; MAPM sum = 0; fact = number.factorial(); fact.toIntegerString( numberString ); for( int i = 0; i < strlen( numberString ); i++ ) sum += numberString[i] - '0'; std::cout << sum; تحياتي...
  7. A chain is only as strong as its weakest link و بشكل عام, مستوى وعي مستخدمي Linux يفوق مستوى وعي مستخدمي Windows بمراحل. بالطبع هناك خبراء في إدارة الـ Windows و هذا لا يحتاج إلى كلام, و معهم سيكون النظام آمن كما يمكن أن يكون نظام Linux آمن مع الغالبية من مستخدميه. عدا عن ذلك, فأنا كمستخدم(منذ كان لدى عمي MS-DOS و حتى Windows 7) و مستخدم Linux(منذ أربع سنوات, متقطعة و لكن أعمل على Ubuntu Minimal منذ سنة بشكل جيد) فأرى أن Linux أسهل من ناحية الفهم و تطبيق عمليات الحماية. كم مستخدم Windows يستخدم جهازه بحساب ذو صلاحيات كاملة بشكل يومي؟ ربما الجميع! تحياتي...
  8. الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  9. السلام عليكم ... لا أعتقد أن هناك خطأ في التصميم بقدر ما هو رأي أو فكر معين يحبذ شيء على شيء. القضية برأيي أن الأخ سلطان كان يقصد بأن تحديد الـ Optional Parameter في الـ Constructor عبارة Implementation Leakage, أي أننا خالفنا مبدأ الـ Encapsulation بهذه الطريقة. المفروض, أن لا يتم وضع قيمة الـ Optional Parameter في الـ Declaration و إنما يكون في الـ Definition فقط, و هذا سيسمح لنا بتغييره لاحقاً لأن واجهة الكائن الرسمية هي الـ Declaration. كما قلت سابقاً, البعض قد يرى أنها طريقة أفضل لتوثيق تصرف الكائن, و البعض الآخر قد يرى أنها مخالفة لمبدأ الـ Encapsulation. ليس هناك مشكلة في الكود. لو قمت باستخدام الفئة, ستحصل على Link error. لأنه بالفعل هناك constructor معلن للفئة, و لكنه غير معرف في أي مكان يستطيع الـ Linker الوصول إليه(هو غير معرف أساساً!). تحياتي...
  10. مشكلة في الكلاس

    و عليكم السلام و رحمة الله و بركاته, هناك طريقتان لكتابة الـ class في ++C. الأولى, هي كتابة الـ Definition مباشرة و أحياناً يسمى هذا inline definition: // point.hpp class point { public: point(int x_, int y_) : x(x_), y(y_) { } int getx() { return x; } int gety() { return y; }; private: int x, y; }; و هناك الطريقة الأخرى, بحيث يتم فصل الـ Declaration عن الـ Definition و هذا يسمى أحياناً بالـ Separate Compilation. ما يحصل هو أننا نضع الـ Declaration في ملف و الـ definition في ملف آخر: // point.hpp class point { public: point(int x_, int y_); int getx(); int gety(); private: int x, y; }; // point.cpp #include "point.hpp" point::point(int x_, int y_) : x(x_), y(y_) { } int point::getx() { return x; } int point::gety() { return y; } لكل طريقة مزايا و عيوب. بالنسبة لي شخصياً, فأنا أفضل الطريقة الأولى. تحياتي...
  11. الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  12. الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  13. أنا أريد الانضمام للمشروع. هل من الممكن أن نأخذ فكرة عن قائد المشروع حتى نعرف من نتعامل, ربما لا نكون قد المستوى؟ باختصار أعطنا نبذة عن ماذا تعرفه, و هل سبق لك العمل على أنظمة تشغيل أخرى؟ هل تستطيع بناء نواة Linux من الصفر على سبيل المثال(أنا لا أعرف!)؟ لن يركب المبرمجون في سفينة ربانها مجهول.
  14. [مخالف - طلب حل : ]حل سؤال

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  15. السلام عليكم و رحمة الله , يقال أن هناك صنفان من المبرمجين! صنف يفهم المؤشرات و التعاودية Pointers and Recursion و صنف لا يستطيع فهمها, نطرح اليوم مثالاً قد يضحك البعض و أنا منهم :lol: , جميعنا يعرف المصفوفات, و ربما منذ أول شهر تعلمنا فيه اللغة استخدمنا المصفوفات و اعتقدنا أنها كانت نهاية المطاف في مثل هذا المفهوم البسيط المسمى المصفوفات في "++C/C" انظر إذاً للمثال التالي, و قل لي بالله عليك كيف يمكن أن تفسر التالي : int x[2] = { 1, 2 }; if( x[1] == 1[x] ) std::cout << "True"; // this line will be printed arabs;) لا أعتقد أن هناك شيئاً غريباً سوى: 1[x] :blink: الكود صحيح مئة بالمئة :lol: لا تخف فأنت مبرمج ++C/C ..... تحياتي .....
  16. اضحك مع ++c/c !

    باسكال بها مؤشرات أصلاً!!!
  17. العثور على الـ Spaces في الـ Strings

    و عليكم السلام و رحمة الله و بركاته, هذا مثال مع النصوص العادية و النصوص "wide": #include <cstddef> #include <cassert> #include <cctype> #include <cwctype> #include <string> #include <algorithm> int main() { std::string text = "Arab Team 2000!"; std::wstring wtext = L"الفريق العربي للبرمجة"; std::size_t spaces, wspaces; spaces = std::count_if(text.begin(), text.end(), std::isspace); wspaces = std::count_if(wtext.begin(), wtext.end(), std::iswspace); assert(spaces == 2 && wspaces == 2); } لا تنسى أن تحفظ الملف بأي صيغة unicode لأنه يحتوي على محارف عربية.
  18. [مخالف - طلب حل : ]مساعدة

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  19. نقاش بخصوص UML

    و ما دخل UML بلغات البرمجة؟ UML هي طرق لعمل Modeling! و ليست لغة برمجة. يمكنك تسمية الـ Actors بأسماء عربية و الـ Usecases التي يقوم بها كل Actor أيضاً. و لكن لماذا؟
  20. أخ sufian2020, للأسف كلامك خاطئ. ربما عند الكلام عن المنتجات النهائية لتلك الشركات, سيكون كلامك صحيحاً. و لكن إذا تكلمت عن الـ Infrastructure فلا أعتقد أن هناك وجه للصحة في كلامك. Adobe من أكبر الداعمين للمصدر المفتوح(لا أقصد GNU و إنما ما يسمى Liberal Licenses مثل Boost License و MIT License) و أصلاً الـ Infrastructure التي تستخدمها في جميع الـ Product Line التي تملكها مبنية على مكتبات أطلقتها للمجتمع. حزمة مكتبات ASL الشهيرة! و من ضمنها التحفة الفنية الموجودة في Boost و المسماةGIL: Generic Image Library و الآن هناك نقاش محتدم في الـ Mailing List حول إضافة GIL_IO التي تضيف إلى المكتبة الرئيسية استيراد و تصدير ما نعرفه و ما لا نعرفه من image formats على شتى المنصات و أنظمة التشغيل! هذه هي فائدة إطلاق الكود للمجتمع, لأنه هو من سيتعني بمكتبتك إن كان تستاهل, و سيطورها بشكل لا تحلم به. لولا مجمتع المبرمجين من أين ستحصل Adobe على هذه الموثوقية في برامجها؟ هل تعلم عدد الـ Bugs التي تم اكتشافها عن طريق مبرمجين استخدموا GIL في برامجهم أو للتجربة لا أكثر؟ أما حكاية Microsoft فأنت تتكلم عن إمبراطورية كاملة! يعني بالعربي حالة شاذة. تحياتي...
  21. [مخالف - طلب حل : ]الرجاء المساعدة

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  22. طبعاً يمكنك تقديم Patch لـ Linux و سيتم طحنه قبل قبوله, و لكن في النهاية يقوم Linus شخصياً بعمل Patching للـ Kernel الرسمية, لذلك لا أعتقد أن ذلك ممكن في حالة Linux على الأقل.
  23. السلام عليكم ... ملاحظة بسيطة يا جماعة, هناك فرق بين اللغة و الـ Implementation. هناك مواصفات و هناك Development Environment. بالنسبة للأولى فهناك أنواع عديدة و لكن ما يهمنا هنا: C/Cpp: مواصفات من قبل ISO و أخرى من ANSI و هذا يعني أن هذه اللغات لا يملكها أحد(تملكها ISO و ANSI و كلاهما عبارة عن جهات تطلقان مواصفات في الـ Public Domain). باختصار, حتى Ritchie و Stroustrup عبارة عن أعضاء مثلهم مثل غيرهم, و حصل كثيراً أن رفضت طلباتهم.(الـ Concepts لم يتم ضمها لـ Cpp0x رغم أن Stroustrup عمل عليها ست سنوات, و تم تأجيل النظر فيها للنسخة البعد قادمة). #C: هي أيضاً في الـ Public Domain و لكن من قبل ISO و ECMA. و هذا يعني أن Microsoft لا تملكها فعلياً مثلها مثل C. الموضوع أن كلا جهات المواصفات القياسية تطلب التنازل الكامل لصالح الـ Public Domain حتى آخر قطرة. و هذا ينطبق على الـ VM المسماة CLI الخاصة بـ NET. أيضاً, و لكن الكثير لا يعرفون ذلك.(انظر الملاحظة في النهاية). Java: ليست Standards في الـ Public Domain و لكن عبارة عن لجنة كانت ترعاها Sun و أصبحت Oracle هي الراعية لها. باختصار Oracle الآن تملك Java و إن كان بطريقة غير مباشرة. رغم أن #C و CLI عبارة ممتلكات عمومية, إلا أن DotNET Framework و هو الجزء الأكثر أهمية في المعادلة ليس ملكية عمومية. لنظرة خاطفة حول هذا الموضوع من جهة ++C على الأقل, و لماذا تم عمل Standardization لها: http://www2.research.att.com/~bs/bs_faq.html#why-ATT تحياتي...
  24. ما الفرق بين التطابق و التساوى

    (ملاحظة منذ البداية, لست رياضياً و لكن الاساتذة يمكن أن يصححوا لنا). معنى المعاملات يختلف بحسب السياق. و لكن إذا أردت الكلام على مستوى العلاقات Relations بين الفئات Sets فإن العلاقة التي تكون Reflexive و Symmetric و Transitive فإنها تعرف على أنها علاقة تكافؤ. لنفترض أن لدينا Relation اسمها R. العلاقة R بكل بساطة مبنية على فئة S. الفئة S بها عناصر, و العلاقة R تقوم بالربط بين تلك العناصر مثل التالي: S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} R = {(0, 5), (1, 6), (2, 7), (3, 8), (4, 9), (5, 0), (6, 1), (7, 2), (8, 3), (9, 4)} العلاقة بكل بساطة, هي الحالة العامة للدوال. أي أن الدوال عبارة عن حالات خاصة من العلاقات. نأتي للجزء الأول, العلاقة تكون Reflexive عندما: (x, x) is in R, for each x in S قد تكون العلاقة Irrflexive و هذا يعني أن: (x, x) is NOT in R, for each x in S بالنسبة للمثال الذي طرحناه في الأعلى, فإن R عبارة Irreflexive Relation. بالتالي R ليست علاقة تكافؤ. بالنسبة للـ Symmetry فتعني: if (x, y) is in R, then (y, x) is in R too العلاقة R عبارة عن Symmetric Relation. أما الخاصية الأخيرة, و هي كالتالي: if (x, y) is in R and (y, z) is in R, then (x, z) is in R بالنسبة لـ R فهي Transitive. في النهاية المثال المطروح حول العلاقة R لا يمثل علاقة تكافؤ, لأن R ليست Reflexive. بمعنى آخر, أو بطريقة كتابة أخرى مبسطة بشكل أصح: x != x هذا الذي أفهمه, أما عن أي معامل فيجب أن يكون معرفاً على مستوى الفئات و العلاقات حتى نحدد ماذا تقصد "بالفرق". ببساطة, لم تعطنا تعريفين للمعاملين. عذراً لأساتذتنا لعدم استخدام Latex لأني على عجل :) تحياتي,