مسابقة مسومس الكبرى للبرمجة - المرحلة الثالثة

[ منتدى البرامج والهواتف الذكية ]


مشاهدة نتائج الإستطلاع: هل تريد أن تكون درجة المفاضلة درجة واحدة فقط كما هي أم درجتان

المصوتون
11. أنت لم تصوت في هذا الإستطلاع
  • درجة واحدة كما هي

    0 0%
  • درجتان

    5 45.45%
  • الامر لا يشكل فارقا معي

    6 54.55%
النتائج 1 إلى 20 من 46

مشاهدة المواضيع

  1. #1

    الصورة الرمزية إسلام 2006

    تاريخ التسجيل
    Oct 2006
    المـشـــاركــات
    5,906
    الــــدولــــــــة
    مصر
    الــجـــــنــــــس
    ذكر
    الـتـــقـــــيـيــم:

    Smile مسابقة مسومس الكبرى للبرمجة - المرحلة الثالثة






    كيف حالكم أيها الكرام؟

    أسأل الله تعالى أن تكونوا بخير ^___^

    وكيف هو استعدادكم للمرحلة الثالثة؟ P:

    أظن أن بعضكم متشوق لها والبعض الاخر يريد رميي من الشباك بسبب سؤال المرحلة الثانية

    في البداية اعتذر عن التأخر في وضع هذه المرحلة بسبب ظروفي الحالية، حيث أن معظم الأشياء والإنشغالات تأتي كلها دفعة واحدة وتذهب دفعة واحدة أيضا أحيانا << اعتدت ذلك

    لن أطيل عليكم كثيرا فيكفي ما ضاع من وقت ولنبدأ معا ومع:



    قبل البدء لي تعليقات بسيطة أردت أن اقول بعضها في المرحلة الثانية ونسيت ^^"


    التعليق الأول: طبعا بعضكم ما شاء الله قام بعمل أشياء جميلة وابتكر طرق جيدة جدا لحل المراحل الماضية، لكن المشكلة أن هناك اشياء لا تتضح جيدا إلا مع تمحيص دقيق جدا، وتعلمون مع هذا الكم من المتسابقين وأيضا مع تشعب الأسئلة أحيانا قد يفوتني شيئ ما لذا برجاء توضيح بعض الأشياء التي قمت بعملها ولو بندبذة بسيطة جدا للفت نظري اليها في نفس ملف الtext المرفق به اسم المبرمج ومعلومات البرنامج

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

    كيف يكون واضحا؟

    يكون كذلك بشيئين اساسيين:

    أولا وضع الكومينتات (comments): وتعليقا على ذلك أذكر أحد المهندسيين المتمكنين جدا الذي كانوا يعلموننا مواد البرمجة كان يقول، لكي تعلم هل الكومينتات التي كتبتها كافية وجيدة أم لا يجب أن يكون الكود لديك يغلب عليه اللون الأخضر

    يعني بكلامه أن تكون الكومينتات الموضوعة على الكود اكثر من الكود نفسه لتضمن أن الكود واضح تماما لمن يقرأه ولا
    إشكال فيه، هذا أولا

    ثانيا: يجب تسمية متغيرات البرنامج بأسماء واضحة: وهذه النقطة بالذات لم أراها في الكثيرين، حتى أنني لم أراها في أكواد بعض المحترفين

    لا مشكلة أبدا في تسمية متغير بإسم طويل جدا ضمانا لأن يتم فهم طبيعة هذا المتغير بالضبط

    لو رأيتم بعض المتغيرات التي كنت أسميها لظننتم انني اكتب موضوع تعبيير

    انظروا لإسم هذا الأوبجيكت على سبيل المثال:


    EnglishSoorahNameComboBox


    اقتبسته لكم من برنامج رينيمر

    وهو اسم لtextbox في البرنامج

    طبعا انا لست مقياسا لكي أقول لكم افعلوا مثلي ^^" لكني اتحدث عن أن هذا ما تعلمناه، نريد اسماءا تدل على وظيفة هذا المتغير او الأوبجيكت الذي تم عمله

    لذا سأجعل جزءا من درجتي واجهة البرنامج على هذه الجزئية، فهي عموما تعتبرا جزءا من الواجهة لأنها تجمل الكود وتجعله مفهوما

    كما أنها غير أساسية لذا لن أضع عليها جزءا من درجة البرنامج الأساسية بإذن الله تعالى


    التعليق الثاني: أفكر في جعل درجة المفاضلة درجتين لكل من المرحلة الثانية والثالثة بدلا من ردجة واحدة بسبب أن الفروقات ستكون صغيرة جدا، يعني وارد ان تجد فرقا بين مبرمجين عبارة عن 0.05 درجة XD فشكلها لن يكون لطيفا، على الأقل درجتان ستجعل هناك فارقا بربع درجة مثلا وسيكون مقبولا نوعا ما، لكن أردت اخذ رأيكم في هذا الامر أولا فليس من حقي تغيير أمر قد اتفقت عليه معكم في البداية ثم اقوم بتغييره فيما بعد إلا برضاكم فما رأيكم؟


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

    تكلمت كثيرا ^^" لذا سأبدأ معكم الان ومع:




    تم التغيير قليلا في السؤال وتصعيبه أكثر بسبب طلب البعض منكم دون تغيير فكرته الأساسية التي كنت قد وضعتها في البداية لذا ان كنتم ستلومون على أحد فلا تلوموني أنا

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


    نظام العد الروماني :

    يحتوي نظام العد الروماني على لمحة من فكرة القيمة المكانية – كما سنرى – ويعتقد أن أساس النظام العددي الروماني هو العد بالأصابع يدل على ذلك أن الكلمة اللاتينية للأصبع هي Jigitusوتستخدم الآن كلمة مشتقة منها هي digit التي تستخدم في وصف أي رمز من رموزهم العددية. وقد كتب الرومان الأعداد من واحد إلى أربعة كما يلي:

    أما رمز خمسة فقد كان علامة على شكل V ولعلها تمثل الفجوة بين الإبهام وبقية الأصابع كما بالشكل أدناه :

    وقد نشأت عندهم فكرة القيمة المكانية مرتبطة بهذا الرمز؛ فلكي يتجنبوا التضخم في كتابة العدد I أربعة مرات هكذا IIII وضعوا I إلى يسار V وطبقت نفس الفكرة في رموز أخرى، وأصبح مفهوما أنه إذا كتب الرمز إلى يسار رمز آخر قيمته أكبر فإن العدد يدل على الفرق بين الرمزين وإذا كتب على يمينه فإنالعدد يدل على مجموع الرمزين ، وقد نشأ هذا التعبير بالأصابع عن الأعداد 6 ، 7 ، 8 كما بالشكل:


    وللتعبير عن العدد 9 كتب I على يسار الرمز الدال على عشرة وهو X ولعله مأخوذ من وضع اليدين متقاطعتين. وإذن فالعدد 9 يكتب هكذا IX ثم العدد 10 يكتب X ثم العدد 11 ويدل عليه الرمز XI حيث يوضع الرمز المعبر عن العدد واحد على يمين رمز العشرة ليدل ذلك على مجموع الرقمين وهكذا، وبذلك فإن الأرقام الرومانية الأولى هي:



    الأرقام الرومانية الأولى .........IX. VIII. VII. VI. V. IV. III. II. I
    ما يقابلها من الأرقام المعاصرة ..1. 2 ..3 ...4 ..5 ..6 ...7 .....8 .....9
    الأرقام الرومانية الأولى ......... XVI XIII XII XI.. X
    ما يقابلها من الأرقام المعاصرة...10 .11 .12 . 13 ..14


    وهكذا إلى عشرين XX ثم ثلاثين XXX

    ولتجنب تكرار رمز أربع مرات للدلالة على 40 هكذا XXXX وضع رمز L للدلالة على العدد خمسين ويعتقد أنه النصف الأسفل من حرف C الدال على مائة وهو الحرف الأول من كلمة Centum ( أي مائة )، وعلى ذلك فإن العدد 40 يكتب هكذا XL بينما تدل LX على العدد ستين، كذلك فإن XC تدل على 90 بينما CX تدل على مائة وعشرة ( 110 ) ثم استخدم حرف M للدلالة على العدد ألف ( 1000 ) ربما لأن M هو الحرف الأول من كلمة Mille اللاتينية بمعنى ألف ( 1000 ) وقبل ذلك كان يتم التعبير عن العدد 1000 بالحرف ( فاي ) اليوناني ثم كتب بصورة بسيطة هكذا (I) وهذا تحور إلى M للدلالة على 1000 أما العدد 500 فقد كان يتم التعبير عنه بالرمز وهو كما ترى الجزء الأيمن من حرف ( I ) فاي في صورته البسيطة ثم تحور الرمز الدال على خمسمائة إلى حرف D. والجدول التالي يبين باختصار الرموز الأساسية لنظام العد الروماني:


    ..I..V.. X.... L... C..... D..... M
    1.. 5.. 10.. 50..100...500...1000

    وعلى ذلك فإن العدد MCDVIII يدل على 1408 ، والعدد MMCCCXXIV يدل على 2324 ، والعام 1999 يدل عليه العدد MCMXCIX وهكذا ..

    وقد ظل النظام الروماني سائدا في أوربا حتى دخول النظام العربي الخوارزمي - ] نسبة إلى محمد بن موسى الخوارزمي مؤسس علم الجبر ( من 164 هـ إلى 235 هـ) [ - (في القرن العاشر الميلادي) وظل النظامان يتنافسان في أوروبا قرابة أربعة قرون إلى أن ساد النظام العربي لسهولته في تسجيل الأعداد وفي إجراء العمليات الحسابية دون حاجة إلى المعداد الذي كان يستخدم في ظل النظام الروماني. ( والمعداد هو جهاز عند الرومان يستخدم لتمثيل الأعداد الرومانية وحسابها ).



    عند كتابة الرقم الروماني فإن جاء الرقم الأصغر عن يمين الرقم الأكبر معنى ذلك أن نقوم بإضافة هذا الرقم الصغير الى الكبير

    اما إن جاء الرقم الصغير عن يسار الكبير فمعناه أن نقوم بطرح الصغير من الكبير

    لذا رقم 4 يمثل هكذا IV أي أن الواحد الذي هو I أتى عن يسار الخمسة التي هي V لذا طرح الواحد من الخمسة وبذلك حصلنا على 4

    أيضا عند تكرار أي رقم لا يكرر أكثر من ثلاث مرات وبدل ذلك تستخدم عملية الطرح

    ما معنى ذلك؟


    عند كتابة رقم 3 مثلا فإننا نكتبها هكذا III


    لذا عند كتابة 4 لا نقوم بتكرار الواحد 4 مرات


    بل نستخدم طريقة الطرح السابقة بكتابة I عن يسار V


    وموضوع التكرار هذا يستخدم في جميع الأرقام حتى رقم ألف والذي يمثل M

    بعدها عند تمثيل رقم مثل 10000 مثلا فإننا سنضطر لتكرار الـ M عشر مرات بسبب عدم وجود حرف أكبر من الـ M

    لذا لا بأس بتكرار الـ M في هذه الحالة أكثر من 3 مرات كما في الأرقام السابقة



    المطلوب:

    قم ببرمجة برنامج يقوم بعمل الآتي:

    1 - تحويل أي رقم من رقم عربي (الرقم العادي المستخدم في اللغة الإنجليزية وهو عربي الأصل للأسف) إلى رقم روماني
    2 - تحويل أي رقم روماني إلى عربي
    3 - آلة حاسبة مبسطة تأخذ رقمين رومانيين (رسميا ليس مطلوبا اكثر من رقمين) وتقوم بعمل العمليات التالية عليهم:
    جمع - طرح - ضرب - قسمة
    وتخرج الناتج برقم روماني أيضا

    اذن مدخلات البرنامج هي واحدة من ثلاثة:

    1 - رقم عربي
    2 - رقم روماني
    3 - رقمين رومانيين مع امكانية لاختيار العملية الحسابية المطلوب إجراءها

    أما مخرجات البرنامج فهي:

    بالنسبة للنقطة 1 فالمخرج هو رقم روماني
    بالنسبة للنقطة 2 فالمخرج هو رقم عربي
    بالنسبة للنقطة 3 فالمخرج هو ناتج العملية الحسابية على هيئة رقم روماني

    ملاحظات بسيطة عن الأرقام الرومانية:

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

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

    اتركها لإبداعاتكم الفكرية

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


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





    1 - يمنع ارسال الإجابات على الخاص، بل يتم ارسالها على الإيميل التالي:
    msoms.programming.solutions@gmail.com
    ويكون عنوان الإيميل المرسل هو اسم العضو واسم المرحلة هكذا (إسلام 2006 - المرحلة الثالثة)
    وأي إجابات ترسل على الخاص لن يلتفت لها

    2 - عند وجود استفسار معين عن المسابقة أرجو سؤاله هاهنا وليس على الخاص أيضا

    3 - تم وضع استفتاء عن المدة التي تريدونها كفترة للمرحلة الاولى وما إذا كانت أسبوعا أو أسبوعين وإن كنت أفضل شخصيا أن تكون لمدة أسبوع واحد لاعتقادي بأنكم ستحتاجون إلى أسبوعين في الأسئلة القادمة لذا الأفضل ان تكون أسبوعا واحدا حتى لا يؤثر ذلك على دراستكم فيما بعد اذا ما جدت اكثر او حتى لا تكون قريبة من اختباراتكم لمن يدرس ^_^

    4 - سيتم اعتماد نتيجة الإستفتاء نهاية يوم الأربعاء القادم ووضع آخر موعد للتسليم بناء على نتيجته

    5 - يتم إرسال الإجابات على الإيميل السابق في ملف مضغوط بصيغة rar واسم الملف المضغوط هو نفسه اسم العضو ويشمل الملف الملفات الاتية:

    - ملف txt يكتب فيه الاتي:

    أ - إسم العضو في أعلى الملف
    ب - رقم المرحلة
    ج - تم عمل البرنامج بواسطة (اسم اللغة وإصدارها) (visual basic .net 2003) مثلا
    د - تحتاج لؤية الكود برنامج visual studio dotnet 2003 مثلا
    هـ - تحتاج لتشغيل البرنامج حزمة dotnet framework 1.1

    - الملفات التي تم كتابة الكود فيها

    - ملفات البرنامج الذي قمت ببرمجته بصيغة قابلة للتنفيذ (exe مثلا)

    6 - يمنع الغش بالطبع في كتابة الكود وتذكروا ان المسابقة للإرتقاء بمستواكم الى الأعلى وليس للمفاضلة بينكم لذا اجعل هدفك اسمى من ذلك ^_^

    7 - يمنع استخدام اكواد جاهزة او مكتبات جاهزة لعمل الوظيفة المطلوبة في البرنامج، بل يجب عمل الكود من برمجتك الخاصة ^_^

    8 - في حالة لم تكمل كتابة الكود او لم يعمل معك البرنامج الذي برمجته قم بإرسال ما تم انجازه مع ذلك ولا تمتنع عن الإرسال وسوف يتم وضع درجة لك على ما تم انجازه

    9 - في حالة نوى احد الإنسحاب او انه يفكر في هذا الأمر فالأفضل ان يقول ذلك الان لأن هناك من تم منعهم من المسابقة بسبب اكتمال العدد، فإن كنت لا تنوي الإكمال فنرجو ترك الفرصة لغيرك ممن كانوا يتمنون الإشتراك ولم يستطيعوا لذلك

    10 - اجعل برنامجك متقنا جدا وخالٍِ من الأخطاء قدر الإمكان وضع في حسبانك أنه يمكن أن يتم اختبار برنامجك بأي معطيات ممكنة (واللبيب بالإشراة يفهم ) فاجعل برنامجك كأنما ستقوم ببيعه لتقوم بالإرتقاء ببرامجك إلى اقصى درجة ممكنة في المستقبل بحيث تضاهي بها البرامج الكبرى

    11 - يمنع على غير المشاركين الذي قاموا بتسجيل أسماءهم في موضوع التسجيل السابق الموجود هنا والذين تم قبولهم فقط وكتابة أسماءهم المشاركة هنا إلا بشرط واحد وهو أن يقوم أحد المتسابقين بالإنسحاب من المسابقة سواء بعدم إرسال الأجوبة أو بإخبارنا بالإنسحاب شفهيا ليتم استبداله بأحد الأعضاء غير المشاركين
    وسيتم قبول البديلون بترتيب من قام بعمل البرنامج وأرسل الإجابة أولا إلى الإيميل أعلاه

    12 - تم وضع درجتين إضافيتين على التزام الشروط المطلوبة عند ارسال الإجابة كما هي لأن البعض لم يلتزم بها واتعبني سواء في معرفة صاحب الكود من خلال عنوان رسالة الإيميل او بعدم كتابته لإسمه على الملف المضغوط أو اي شيئ شبيه آخر لذا وجب التنبيه
    وقد حصل الجميع على الدرجتين كاملة غير منقوصة في المرحلة الاولى حيث لم يتم التنبيه على الامر لكن سيتم المحاسبة من المرحلة الثانية، أرجو منكم مراعاة أن عدد المتسابقين كبير والبحث في هذه الأمور متعب جدا لذا رفقا باللجنة المصححة

    13 - هناك درجة زائدة (إسمها درجة تفاضلية) ليست من أصل المجموع لكن ستضاف للدرجة النهائية أيضا بحيث لو قلنا ان مجموع الثلاث مراحل سيكون 30 درجة فمع الدرجتين الإضافيتين تلك (واحدة للمرحلة الثانية وواحدة للمرحلة الثالثة) ستكون الدرجة النهائية 32 من 30

    اذن فسوف تضاف لمجموع النهائي بعكس درجة الواجهة التي تضاف لتحسين المجموع فقط ^.^

    14 - بالنسبة لواجهة البرنامج والدرجتين المعتمدتين عليها: أنا لم أقصد أن يقوم البعض بعمل واجهات خرافية حيث ظن البعض أني طلبت ذلك، لا أبدا، يمكنكم عمل اشياء بسيطة دون جهد يذكر لتحسين الواجهة كاستخدام مكتبة تحسي واجهة او وضع صورة كخلفية او اطار مكون من النجوم في حالة الكونسول ابليكيشن (البرمجة على الشاشة السوداء) وما شابه ذلك

    أشياء بسيطة قد تعني الكثير وتعطيك درجة الواجهة كاملة، فكل هدفي هو أن اشعر باهتمام المتسابق بشكل الواجهة
    كما أن الدرجتين ستشتملان على الـ comments وتسمية الـ variables والـ objects بأسماء جيدة ومفهومة

    هذا مالدي الان وأرجو منكم التصويت في الإستطلاع ^.^



    سيكون ذلك يوم الإثنين الموافق 21 ديسمبر عام 2009 م الموافق 4 محرم عام 1431 هـ أي بعد ثلاثة أسابيع تماما من نهاية عيد الأضحى المبارك أعاده الله تعالى علينا وعليكم باليمن والبركات، وتبدأ هذه الأسابيع الثلاثة من خامس يوم العيد وهو اليوم الموافق 1 ديسمبر 2009 وتنتهي يوم 21



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

    حقا استمتعت كثيرا وتمنيت مشاركتكم في المسابقة أيضا كذلك ^_^"

    أرجو منكم ان تسامحوني إن كنت قد قصرت في حقكم أو تكلمت كلاما جارحا في حق أحدكم او فعلت شيئا أغضب أحدكم مني فيعلم الله تعالى مقدار معزتكم جميعا في قلبي وكيف أعتبركم جميعا اخوتي وأخواتي

    كما أتمنى وأسأل الله تعالى أن اكون قد قدمت هذه المسابقة على الوجه اللائق وألا أكون قد قصرت في شيئ منها

    شاكر لكم جميعا حسن تواجدكم واجتهادكم وسائلا الله تعالى أن اكون قد اسهمت بتلك المنافسة في عمل شيئ ولو بسيط في سبيل التقدم بالبرمجة العربية والرقي بها إلى الأمام


    في امان الله تعالى ولا تنسوني إخوتي وأخواتي من دعوة صالحة بظهر الغيب خاصة في هذه الأيام المباركة



    ملاحظات مهمة جدا من تقديم الأعضاء:


    هناك نقطة هامة لم تذكرها وهو عملية طرح العدد الصغير من العدد الكبير جدا...
    مثلا:عندما نريد أن نكتب 99 لا نكتبها IC فطرح رقم صغير جدا مثل الواحد إلى عدد كبير جدا خطأ...ولذلك تكتب 99 هكذا XCIX حيث XC هي 90 و IX هي 9...وهكذا عندما نريد كتابة 999 مثلا نكتبها هكذا CMXCIX حيث تعني(1000-100 100-10 10-1) =(900 90 9) =(999)
    برنامج للتحويل من ارقام رومانية لعربية والعكس للتحميل:

    هنا
    التعديل الأخير تم بواسطة إسلام 2006 ; 20-12-2009 الساعة 02:51 PM

الكلمات الدلالية لهذا الموضوع

المفضلات

المفضلات

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
Loading...