اذهب إلى المحتوى

Kais Hasan

الأعضاء
  • المساهمات

    2378
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    24

كل منشورات العضو Kais Hasan

  1. كما ذكر المدرب محمد، لا يجب عليك نشر السؤال مباشرة، اذكر ما الذي قمت به و ما المشاكل التي واجهتك. يمكنك حل التمرين بسهولة لو أسقطته على الواقع، مثلاً تخيل أنه لديك كأس عصير برتقال و كأس عصير فراولة، و تريد التبديل بينهما، كيف ستقوم بذلك؟ في حال حللت هذه المشكلة سيصبح من السهل عليك حل المشكلة البرمجية التي لديك.
  2. يمكنك استعمال مكتبة arabic-reshaper بالإضافة إلى مكتبة python-bidi، يمكن تنزيل المكتبتين السابقتين كما يلي: pip install arabic-reshaper pip install python-bidi بعد ذلك نقوم بوضع النص الذي نريده ضمن متغير و لنفترض أن اسمه text و نقوم بما يلي: import arabic_reshaper from bidi.algorithm import get_display text = 'نص باللغة العربية' reshaped_text = arabic_reshaper.reshape(text) bidi_text = get_display(reshaped_text) ثم نقوم بعمل render للمتحول bidi_text بدلاً من text، أي أن بقية البرنامج تكون نفس حالة اللغة الانكليزية، فقط نقوم باستعمال هذه التوابع لإصلاح المشاكل مع اللغة العربية. طبعاً يجب عليك استعمال خط يدعم اللغة العربية، الخط arial يدعمها، يمكنك البحث دائماً فيما إذا كان خط ما يدعم اللغة العربية أم لا.
  3. هناك إطار عمل يستعمل javascript للقيام بإنشاء الألعاب ثلاثية الألعاب، اسمه babylon.js، و يحوي الكثير من الميزات التي لا توجد في غيره أو يكون تحقيقها أصعب، بعض هذه الميزات: يحوي على ميزات تجعله يستعمل كرت الشاشة بشكل أفضل و أقوى مما يعطي تجربة أفضل. متعدد المنصات، حيث يمكنك كتابة كود للعبة بحيث يعمل سواء على windows أو على الموبايل بغض النظر عن نظام التشغيل، الأمر الذي يسهل عليك العمل، حيث أنك بدون ذلك ستضطر لإعادة كتابة التطبيق من أجل كل منصة على حدا. يحوي على واجهة لضبط إعدادات التحريك بدلاً من الطرق المعقدة الموجودة في بقية الأطر. يحتوي على مخططات توضح الأداء و الخلل في حال وجوده. خيارات الشفافية للأغراض أسهل بكثير باستعمال هذا الإطار. يسمح بالتعامل مع الواقع الافتراضي. و الكثير من الميزات الأخرى، يمكنك الذهاب إلى الموقع الخاص بهذا الإطار لتعلم المزيد عنه، كما أن الموقع يحوي على رابط لألعاب تمت صناعتها باستعمال هذا الإطار، مما يمنحك فكرة عن ما يمكنك القيام به.
  4. تقريباً الحل صحيح، لكنك هنا تقوم بكل العمليات بغض النظر عما يريده المستخدم لبرنامجك، عليك القيام بإدخال العملية ك char و القيام باستعمال العبارات الشرطية if..else أو switch للقيام باختيار العملية المناسبة لما اختاره المستخدم. ثانياً أنت تقوم هنا بإدخال الأعداد على أنها أعداد صحيحة، هل هذا ما هو مطلوب منك؟ قد يكون المطلوب أعداد حقيقية و عندها عليك استعمال double، تأكد من ذلك. ثالثاً، عملية القسمة غير صحيحة، عندما تقوم بتقسيم عددين من النوع int فالناتج سيكون من النوع int، أي في حال أدخل المستخدم 6 و 4 فسيكون الناتج 1 بدلاً من 1.5، عليك القيام بتحويل أحد العددين إلى double كما يلي: (double)num1/num2 كما أنه عليك اختبار فيما إذا كان num2 هو الصفر، ﻷن ذلك سيسبب أخطاء في الكود ﻷنه لا يجوز التقسيم على صفر.
  5. يمكننا القيام بذلك عن طريق استعمال الدالة blit مع تمرير الصندوق الخاص بالنص و وضع مركزه في منتصف الشاشة. يمكن كتابة ذلك كما يلي: font = pygame.font.Font(None, 25) text = font.render("You win!", True, BLACK) text_rect = text.get_rect(center=(SCREEN_WIDTH/2, SCREEN_HEIGHT/2)) screen.blit(text, text_rect) في أول سطرين نقوم بكتابة النص و يكون المتغير text يمثل هذا النص. في السطر الثالث قمنا بجلب الصندوق الخاص بالنص عن طريق الدالة get_rect و مررنا لها المركز ليكون منتصف الشاشة، حيث أن منتصف الشاشة يكون لها إحداثيات x تساوي العرض على 2 و إحداثيات y تساوي الارتفاع على 2. ثم نقوم باستعمال الدالة blit لرسم ما سبق.
  6. إن المخططات بشكل عام هدفها تصميمي، و بالتالي سؤال متى يجب عليك استعمالها يعتمد على ما تريد القيام به، هل يحتاج تصميم مسبق أم لا. في بداية تعلم البرمجة من المفيد القيام بمخططات حتى لأبسط البرامج، أي حتى لو أنه لديك برنامج يقوم بطباعة فيما إذا كان العدد فردي أم زوجي، فإنه من المفيد في بداية تعلمك البرمجة أن تقوم برسم المخطط له، هذا يضمن أنك تفهم الأفكار البرمجية و التي هي بشكل عام مشتركة بين كل اللغات. في مراحل لاحقة من رحلتك في تعلم البرمجة فإنه يصبح من غير المنطقي أن تقوم برسم مخططات ﻷمور و برامج بسيطة، لكن أي برنامج معقد عليك رسم مخطط له، فإن هذا يفصل ما بين التصميم العام و بين برمجة الأجزاء، حيث أنه في البرنامج الصغير تكون الأجزاء قريبة من الحجم للبرنامج العام، لكن عند وجود برنامج كبير فإن الأجزاء تكون صغيرة مقارنة بالبرنامج الكلي، و بالتالي عند برمجتك لجزء لن تكون لديك الفكرة الكلية للبرنامج ما لم تقم برسم مخطط له.
  7. نعم يمكنك إضافتها إلى مشروعك، لا داعي لإنشاء مشروع جديد، من السهل جداً إضافتها يمكنك الإطلاع على الرابط الذي أرفقته.
  8. هناك حزمة تدعى chatify تستطيع إضافتها إلى تطبيقك و تتيح لك ميزات كثيرة خاصة بالدردشة، يمكنك الإطلاع عليها من هنا. بعض الميزات التي توفرها هذه الحزمة: نظام دردشة للمستخدمين. لائحة المعارف و لائحة المفضلة. ميزة البحث. إمكانية إضافة ملفات إلى الرسالة. بالإضافة إلى الكثير من الميزات الأخرى.
  9. بالإضافة إلى ما ذكره المدرب أسامة، أود إضافة أنه من الجيد أن تقوم بمحاولة كتابة أمثلة خاصة بك باستعمال التعليمات و المعلومات التي تعلمتها، أي لنفرض أنك تعلمت عن العبارات الشرطية، قم بكتابة مثال ترغب به يستعمل العبارات الشرطية. هذه الطريقة تسمح لك باختبار التعليمات بشكل ممتع كما أنها ستجعلك تحاول التعديل في التعليمات و هذا يؤدي إلى فهم أكبر لغاية كل تعليمة و كيفية استعمالها. أيضاً لا تركز على حفظ التعليمات، فدائماً يمكنك الذهاب و البحث عن تعليمة في حال نسيتها، المهم هو أن تفهم كيفية كتابة البرامج في بايثون و المفاهيم العامة المرتبطة بهذه اللغة، و التعليمات ما هي إلا وسيلة مساعدة لتحقيق ذلك، و بالتالي عليك التركيز على الأفكار بشكل أساسي، و ستتعود على التعليمات بمرور الوقت.
  10. بشكل عام عندما نريد التعامل مع هكذا تطبيقات نقوم باللجوء إلى ال API التي قامت هذه التطبيقات بتوفيرها، يمكنك الإطلاع على ال API الخاصة بالواتساب من هنا، يجب أن تجد أي شيء تريده هناك.
  11. هناك الكثير من الأمور المهمة للتصميم، سأشارك معك بعض مما أجده نافعاً. في البداية من الجيد أن تكوني على إطلاع على المخططات المستعملة لكتابة التصاميم، مثل UML هذه المخططات يتم إعطاءها في مقرر هندسة البرمجيات، في حال لم تكوني على إطلاع عليها يمكنك الإطلاع على مقالات حسوب فهناك بعض المقالات الجيدة. عند معرفة ما سبق يجب أن نقوم في البداية بتحديد المتطلبات التي نريدها، أي ما الذي نريد تقديمه في هذا المشروع و نحاول أن نقوم بعصف ذهني، و يمكن أن يأخذ هذا الأمر أكثر من يوم، لا داعي للعجلة، فالخطأ في هذه المرحلة غير جيد و من الأفضل أخذ وقت كافي لتجنب هكذا أخطاء. بعد تحديد المتطلبات يجب علينا محاولة تجميع المتطلبات المتشابهة معاً، و محاولة تنظيم ما سبق، أي كما نقوم في البرمجة بتقسيم البرنامج الكبير إلى مجموعة من ال modules التي تحتوي على توابع و كلاسات لها صفات عامة مشتركة أو تقوم بأشياء مترابطة. يفضل القيام بالخطوة السابقة بشكل تجريدي، أي بدون كتابة مخطط فعلي، بعد ذلك يمكننا التحول إلى كتابة مخطط فعلي، لقد وجدت أنه في هذه المرحلة من المفيد أن تكوني على دراية ببعض المخططات المشهورة لتصميم الكود يطلق على هكذا شيء اسم design patterns، أجد من المفيد في بعض الأحيان الاستعانة ببعض من التصاميم، كما أنها بشكل عام تعطيك فكرة عن كيفية التفكير عند تصميم كود ما. شخصياً أقوم بكتابة كل شيء على ورقة، أقسم البرنامج إلى مكونات، بحيث أحدد العلاقات بين كل مكون و آخر و ما الذي يجب أن يقوم كل مكون بتقديمه للمكون الآخر، ثم أقوم بمحاولة تصميم كل مكون، ما هي التوابع المطلوبة و هل أحتاج إلى كلاسات أو ما إلى هنالك، و كل تابع ما الذي يقوم بأخذه و ما الذي يقوم بإعادته، كل هذا على الورق. خلال هذه العملية أحاول قدر الإمكان أن تكون الحلول التي أقوم بتصميمها بسيطة و قابلة للتوسع، حيث أن التعديل هو عملية لا مفر منها و بالتالي التصميم الجيد الذي يأخذ بعين الاعتبار قابلية التوسع و التعديل و مرونته هو الأفضل، من أحد الطرق لتحقيق ذلك هو التأكد بأن الخطوات مفصولة بشكل جيد، بحيث أنه يمكن التعديل على خطوة ما بدون النظر حتى إلى الخطوة الأخرى، فقط نريد الإبقاء على ما نعيده للخطوة الأخرى و لكن آلية عملها لا تهمنا، هذا الفصل محبذ. بعد ذلك من الجيد القيام بكتابة كود بسيط جداً لتحقيق التصميم و التأكد أن كل الأمور على ما يرام، ثم نحاول التحسين في حال كان ذلك مطلوب. أيضاً من الجيد كتابة اختبارات، حيث أن الاختبارات تساعد على التأكد من صحة الكود، شخصياً أتبع الطريقة التي تقول بأن نكتب الاختبارات قبل كتابة الكود حتى، و ذلك يعطيني فكرة واضحة عن الكود الذي أريد كتابته، و أتأكد أنه فعلاً ما أريده، حيث أن الاختبارات ستمثل ما الذي أريد لكودي القيام به.
  12. يمكنك توسيط صورة عن طريق كتابة قاعدة css كما يلي: .center { display: block; margin-left: auto; margin-right: auto; width: 50%; } و من ثم علينا وضع الصنف center في مكون ال html الذي يمثل الصورة التي نريد توسيطها، أي كما يلي مثلاً: <img src="..." ... class="center"> السؤال الأول غير مفهوم تماماً، هل تقصد مثلاً أن يكون لديك صورة لقطة في حديقة و تريد تغيير الخلفية التي هي الحديقة أم ماذا؟
  13. في حال كانت هذه أول لغة برمجة لك، فينبغي عليك تعلم أساسيات البرمجة و التفكير البرمجي، كيفية تقسيم البرنامج إلى مهام و تنفيذ كل مهمة كسلسلة من التعليمات، مفهوم البنى الشرطية و الحلقات. بالإضافة إلى ما ذكره زميلي في التعليق السابق، فإنك تحتاج إلى معرفة لا بأس بها بأساسيات الحاسوب، أعتقد أن دورة علوم الحاسوب التي تقدمها أكاديمية حسوب تناسبك، يمكنك الإطلاع عليها من الرابط التالي: كما أنك ذكرت أدوات تخص التواصل الاجتماعي بالإضافة إلى ال crawling و هذا يستلزم معرفة بسيطة بأساسيات الويب و ذلك لتعرف كيفية التخاطب مع البرامج و واجهات التطبيق البرمجية API لما تريد التعامل معه.
  14. لم تقومي باستدعاء التابع، ما زلتي تستعملين strrev، استبدليها بالتابع الذي كتبته
  15. يبدو أن المشكلة من تابع العكس، لقد بحثت قليلاً و تبين أنه لا يدعم ال utf-8، قومي باستبداله بالتابع التالي: function mb_strrev($str){ $r = ''; for ($i = mb_strlen($str); $i >= 0; $i--) { $r .= mb_substr($str, $i, 1); } return $r; } هذا التابع يقوم بعملية العكس و يدعم ال utf-8.
  16. في التاغ meta لقد قمتي بوضع كود خاص بنسخ قديمة من html، هل يمكنك تجربة استبدال السطر 6 بما يلي: <meta charset="UTF-8">
  17. نعم النقطة غير مطلوبة. يبدو أن المتصفح لا يقوم باختيار الترميز المناسب، هل يمكنك مشاركة ملفات المشروع حتى يمكنني مساعدتك بشكل أفضل؟
  18. يبدو أن Autorun غير موجود هنا، من فضلك قومي بالنقر بالزر الأيمن على المجلد الذي قمتي بفتحه، يفترض أن يكون هناك خيار new string و من هنا قومي بإضافة Autorun و قيمته كما ذكرت في الجواب الأول، في حال لم يظهر أرفقي لقطة شاشة لما ظهر.
  19. إن السبب هو أن هذه الأحرف غير معروفة لل cmd لديكي، و بالتالي يتم وضع إشارات استفهام مكانها، سأفترض أنك تستعملين ويندوز، عندها يمكنك تغيير ذلك كما يلي: نذهب إلى البحث و نبحث عن run و نقوم بالضغط على ما يظهر، و نقوم بكتابة regedit. نقوم بالذهاب إلى [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun] نغير القيمة الموجودة إلى @chcp 65001>nul. في حال لم تجدي ما قمت بذكره في الخطوة 2 يمكنك القيام بإضافة خيار، قومي بذلك و ضعي ما مذكور في الخطوة 2 و قيمته تكون ما هو موجود في الخطوة 3. ما سبق و ذكرته من أجل ويندوز، في حال كنتي تستعملين نظام تشغيل آخر لا تترددي بإعادة السؤال. في حال كنت عند أي خطوة مما سبق و لم تعرفي ما الذي يجب فعليه يمكنك أخذ لقطة شاشة و مشاركتها و سنساعدك في إكمال الخطوات.
  20. ما الذي قمت بمحاولة القيام به؟ يجب عليك المحاولة و نحن سنساعدك، و لكن إعطاءك الحل مباشرة لن يساعدك على تطوير مهاراتك البرمجية. إن التحويل هو عملية بسيطة، قم بالأول بمعرفة كم كيلو متر موجود، عن طريق التقسيم على الرقم مليون (حيث أن الكيلو متر هو الف متر و المتر هو الف ميلمتر)، بعدها يمكنك طرح عدد الكيلومترات ضرب ما يمثله الكيلو متر من القيمة الأصلية، ثم تحاول حساب عدد المترات بنفس الطريقة و لكن بالطبع باستعمال التحويل المناسب الخاص بالمتر و هكذا. حاول القيام بذلك و قم بمشاركة محاولاتك في حال الخطأ وسنساعدك بها.
  21. يجب وضع فراغ بين النقطة و add
  22. الخطأ هو أنك لم تقومي بإضافة شيء حتى يتم عمل commit له، لاحظي عندما قمتي بعملية add ظهر خطأ و ذلك ﻷنك كتبتي: git add و لكن هذا لا يحدد أي شيء ليتم إضافته، عندما نريد تحديد كل شيء نكتب نقطة بعد add، أي كما يلي: git add . قومي بكتابة هذه التعليمة ليتم إضافة التغييرات و من ثم commit ليتم تثبيتها.
  23. يمكن حل هذه المشكلة بكثير من الطرق، أسرع طريقة تعتمد على المصفوفات و حساب قوى المصفوفة، و هي طريقة معقدة قليلاً، سأشرح لك طريقة أبسط و تصلح حتى لو أردت إيجاد رقم فيوناتشي المليون. في حال أردنا فقط حساب رقم واحد يمكن الاستغناء عن التخزين، لكن سأفرض أنك تريد برنامج سريع لإيجاد أي رقم فيبوناتشي بين ال 1 و المليون، عندها يمكنك تهيئة مصفوفة طولها مليون (أو مصفوفة فارغة في حال كنت تستعمل مصفوفة ديناميكية). نهيأ المصفوفة عند الدليل 0 بأول عدد فيبوناتشي و هو ال 0، و نهيأ المصفوفة عند الدليل 1 بثاني عدد فيبوناتشي و هو ال 1، ثم نقوم بالمرور بحلقة و في كل مرة يكون العنصر i هو مجموع العنصرين i-1, i-2 و الذين موجودان حتماً. مثال عن طريق البايثون: def f(): a = [0, 1] for i in range(2, 1000000): a.append(a[i-1] + a[i-2]) return a fib = f() # الآن يمكننا الوصول إلى أي عدد كما يلي print(fib[1000])
  24. ضمنها، تذكر في حال أدخل المستخدم حرف A يجب عليك اختبار العدد فيما إذا كان زوجي أو لا، قم بكتابة ال switch و ستدرك ذلك بسهولة.
  25. الشروط الأساسية التي تختبر الحرف المدخل يجب أن تكون باستعمال switch حسب ما تم ذكره في السؤال، و لكن ستحتاج ال if لاختبار فيما إذا كان العدد المدخل زوجي أم فردي.
×
×
  • أضف...