Mohammed Ahmed13
-
المساهمات
246 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
3
إجابات الأسئلة
-
إجابة Mohammed Ahmed13 سؤال في برنامج لإيجاد جميع الأعداد الأولية المزدوجه الأصغر من 100 بلغة الجافا كانت الإجابة المقبولة
أهلا بك،
يمكن تنفيذ المطلوب بالشكل التالي:
public class MyClass{ // دالة لمعرفة ما إذا كان الرقم أولي static boolean isPrime(int n) { // إذا كان الرقم أصغر من 1 فهو غير أولي لأن الأعداد الأولية تبدأ من 2 if (n <= 1) return false; // نقوم بالمرور على جميع الأعداد الأصغر من الرقم المراد التحقق منه for (int i = 2; i < n; i++) // إذا كان هنالك عدد أصغر يقبل القسمة على الرقم المتحقق منه فهو غير أولي if (n % i == 0) return false; // إذا قمنا بتجاوز جميع الحالات فهذا يعني أن العدد أولي return true; } public static void main(String []args){ // حلقة للمرور على جميع الأعداد بين 2 و 100 for(int i = 2; i < 100; i++){ // إذا كان العدد الحالي أولي والعدد الذي يليه بمنزلتين أولي أيضا نقوم بطباعتهما if(isPrime(i) && isPrime(i + 2)){ System.out.println("(" + i + "," + (i + 2) + ")"); } } } }
-
إجابة Mohammed Ahmed13 سؤال في الحلقات المتداخلة كانت الإجابة المقبولة
وعليكم السلام، أهلا بك،
الكود يستخدم لطباعة شكل هرمي باستخدام الرمز * كالآتي:
لديك ثلاثة حلقات for تستخدم لطباعة الشكل بالترتيب التالي:
الحلقة الأولى الأساسية: for (int i = 1; i <= n; i++) وهي تقوم بتكرار مابداخلها عدد n مرة وتستخدم لطباعة طوابق الشكل الهرمي اعتماداً على قيمة n (عدد الطوابق).
الحلقة الثانية: for (int k = 1; k <= n - i; k++){ System.out.print(" "); } وتستخدم لعمل المسافات في البداية قبل طباعة النجوم المستخدمة لعمل الشكل الهرمي، ويلاحظ أنها تتكرر n - i مرة، أي تتم طباعة المسافات اعتماداً على قيمة i (تعداد الطابق الهرمي) بحيث تتم طباعة المسافات بشكل متناقص كل مرة عند طباعة طابق هرمي جديد من الأعلى للأسفل.
الحلقة الثالثة: System.out.print("*"); for (int j = 1; j < (i * 2) - 1; j++) { System.out.print("*"); } بعد إكمال طباعة المسافات، تتم طباعة نجم وحيد أولاً ومن ثم طباعة عدد زوجي من النجوم كل مرة ابتداءً بعدد 2 من النجوم في الطابق الثاني (أسفل العلوي) ومن ثم بشكل متزايد 4، 6، 8 لدى كل طابق جديد. ويمكن كذلك تبسيط الحلقة الثالثة بالشكل التالي:
for (int j = 1; j < (i * 2); j++) { System.out.print("*"); } بحيث يتم الاستغناء عن طباعة النجم المنفرد في البداية ومن ثم طباعة عدد فردي من النجوم في كل طابق بعدد نجم وحيد في الطابق العلوي ومن ثم 3، 5، 7 في الطوابق اللاحقة وهكذا.
وأخيراً بعد إكمال طباعة النجوم يتم عمل سطر جديد في نهاية الحلقة للطابق الجديد في الهرم باستخدام السطر:
System.out.println();
-
إجابة Mohammed Ahmed13 سؤال في ما شرح هذا الكود ؟؟ جافا سكريبت كانت الإجابة المقبولة
أهلا بك،
الكود عبارة عن مكون React تم تطويره باستخدام أسلوب الـ Hooks والتي تمكنك من تخزين بيانات داخل المكونات التي تستعمل الدوال Functions بدلاً عن الـ Class.
في البداية تم تعريف عدد من المتغيرات بالصورة التالية:
const [messages, setMessages] = useState(initialMessages); const [refreshing, setRefreshing] = useState(false); يتم تمرير القيمة الأولية لمتغير البيانات للدالة الخاصة بـ useState والتي هي initialMessages لمتغير messages و false لمتغير refreshing. والدالة تقوم بإرجاع متغيرين الأول هو المتغير نفسه الذي يتم فيه تخزين البيانات وهنا هما messages, refreshing والآخر عبارة عن دالة يمكن إستعمالها لتحديث قيمة المتغير وهما setMessages, setRefreshing.
بعدها تم تعريف دالة داخل المكون تختص بحذف الرسائل داخل المتغير messages الذي تم تعريفه سابقاً، وهو مصفوفة Array محتوية على عدد من الكائنات Objects تمثل الرسائل بالشكل التالي:
const handleDelete = (message) => { setMessages(messages.filter(m => m.id !== message.id)); } داخل كل كائن بمصفوفة messages توجد id مميزة للرسالة وعند الرغبة في حذف رسالة معينة تستعمل هذه الـ id بحيث يتم عمل تصفية Filter لعناصر المصفوفة جميعاً من خلال الشرط:
m.id !== message.id أي يتم إبقاء جميع الرسائل ماعدا الرسالة ذات الـ id المراد حذفها. ومن ثم أخيراً يتم تحديث الرسائل من خلال استخدام الدالة setMessages.
-
إجابة Mohammed Ahmed13 سؤال في كيف أغير صورة صفحتى الشخصية فى أكاديمية حسوب ؟؟ كانت الإجابة المقبولة
أهلا بك،
الصورة الشخصية داخل الأكاديمية مرتبطة بحساب حسوب الخاص بك، يمكنك تعديل صورة حسابك الشخصي على منصة حسوب من خلال النقر هنا.
-
إجابة Mohammed Ahmed13 سؤال في أريد تغيير لون الخط فى برنامج VS Code كانت الإجابة المقبولة
أهلا بك،
يمكنك تغيير ألوان النصوص من خلال النقر على زر القائمة العلوية File ومن ثم Preferences وأخيرا Color Theme (أو النقر على الأزرار Ctrl + K + T معاً). وبعدها يمكنك اختيار اللون المناسب من القائمة المنسدلة.
يمكنك تحميل ثيماث أخرى من متجر الإضافات الخاص بفجيوال ستوديو كود أيضاً من خلال النقر على أيقونة Extensions على يسار الشاشة.
-
إجابة Mohammed Ahmed13 سؤال في ما هو environment variables و exit values و command line arguments في بايثون كانت الإجابة المقبولة
أهلا بك،
Environment Variables هي متغيرات يتم تعريفها خارج الكود وتحديداً عبر موجه الأوامر او الترمينال، ويتم استخدامها عندما ترغب في تعريف متغيرات ترغب التحكم بها من دون الحوجة إلى تعديل السورس كود، كمثال تعريف متغير للبيانات الخاصة بالتحقق مثل اسم المستخدم أو كلمة المرور لقاعدة بيانات ما. Command line arguments هي طريقة اخرى لتمرير البيانات اثناء تشغيل الكود، ويتم استعمالها عند الرغبة في إعطاء البرنامج مدخلات مختلفة كل مرة عند التشغيل. Exit Values هي قيم عددية يتم إرجاعها من الدوال الرئيسية داخل الكود ووظيفتها تحديد هل إذا تم تنفيذ الكود بشكل صحيح أو حدث خطأ ما وقت التنفيذ، عموماً العدد 0 يعني أن البرنامج تم تنفيذه بشكل صحيح بدون حدوث مشاكل، أما أي قيم عددية مختلفة كـ 1 مثلاً فتعني وجود مشكلة أثناء تشغيل الكود. فائدة الـ Escape Character هي استخدام الرموز المحجوزة مسبقاً مثل الأقواس فلديها وظائف محددة داخل الـ Regex، إذا رغبت في ادخال قوس ضمن النص يجب عليك اسباقه ب \ من أجل التأكيد أن القوس جزء من السلسلة النصية. -
إجابة Mohammed Ahmed13 سؤال في برمجه لغه السي بلس بلس كانت الإجابة المقبولة
مرحباً بك،
يمكن تنفيذ المطلوب كالآتي:
#include <iostream> using namespace std; class SumProd { private: double c; public: double a, b; SumProd(){ a = 0; b = 0; c = 0; cout << "default SumProd constructor called"; } SumProd(double a_val, double b_val, double c_val) { a = a_val; b = b_val; c = c_val; } double sum(){ return a + b + c; } double product(){ return a * b * c; } void print_c(){ cout << c << endl; } }; int main() { SumProd obj(2, 4, 6); obj.print_c(); cout << obj.sum() << endl; cout << obj.product() << endl; return 0; }
-
إجابة Mohammed Ahmed13 سؤال في برنامج C++ لاختبار الأعداد الأولية كانت الإجابة المقبولة
مرحباً بك، يمكن تنفيذ المطلوب كالآتي:
#include <iostream> using namespace std; bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i < n; i++) if (n % i == 0) return false; return true; } int main(void) { int numbers[10]; for(int i = 0; i < 10; i++) cin >> numbers[i]; for(int i = 0; i < 10; i++) if(isPrime(numbers[i])) cout << numbers[i] << endl; return 0; }
-
إجابة Mohammed Ahmed13 سؤال في متى يتم استخدام الاسكي كود في طرق التشفير القديمة؟ كانت الإجابة المقبولة
وعليكم السلام، مرحباً بك مهدي.
كمثال لأحد خوارزميات التشفير القديمة، شيفرة القيصر تعتمد على تحريك الحروف في السلسلة الأبجدية لعدد من الخانات المحددة. بالنسبة لمراعاة ما إذا كانت الحروف كبيرة أو صغيرة فهذا يعتمد تماماً على طريقة تطويرك للشيفرة، فبعض التطويرات لشيفرة القيصر مثلا تعامل جميع الحروف كأنها صغيرة عند التشفير، ولكن يمكنك بسهولة إضافة بعض الشروط عند التشفير من أجل مراعاة أحجام الحروف.
أما بالنسبة لتشفير الرموز فأغلب الخوارزميات القديمة مثل قيصر لا تدعم تشفيرها، ويتم إبقاء الرمز كما هو في الشيفرة، ولكن باستخدام شيفرة آسكي يمكن بسهولة إعتبار جميع الرموز الخاصة عند التشفير.
بالنسبة إذا كانت قيمة mod أكبر من 26 فالإجابة هي أن ذلك لن يحصل أبدا، ويرجع ذلك لتعريف عملية ال modulo (%) وهو باقي قسمة عددين، كتوضيح:
0 % 26 = 0 1 % 26 = 1 . . . 25 % 26 = 25 26 % 26 = 0 27 % 26 = 1 نلاحظ أنه بعد وصول المقسوم إلى العدد 26 فإن باقي القسمة يعود ليتكرر من الصفر مجدداً، وبهذا يمكنك التأكد أنه إذا تم إستخدام قيمة مفتاح كبيرة عند التشفير، فناتج الmodulo لن يتجاوز ال 25 أبداً. جدير بالذكر انه تم استخدام 26 من أجل تعداد حروف اللغة الإنجليزية فقط، لكن عند تشفير آسكي يتم استخدام 128 من أجل تعداد جميع الرموز في آسكي.
تحياتي لك.
-
إجابة Mohammed Ahmed13 سؤال في ماهي البرامج المطلوبة للبدء في برمجة JavaScript كانت الإجابة المقبولة
من أجل البرمجة باستخدام JavaScript كل ما تحتاجه هو محرر نصي لكتابة الكود الخاص بك وربطه بصفحة html ومن ثم تشغيلها في المتصفح.
أرشح لك واحد من أفضل المحررات النصية للبرمجة Visual Studio Code والذي يمكنك تنزيله عن طريق النقر هنا.
تحياتي لك.
-
إجابة Mohammed Ahmed13 سؤال في ترتيب تنفيذ مستمعات العناصر المتداخلة في DOM كانت الإجابة المقبولة
مرحباً بك @Hussein Aoda.
يتم تنفيذ المستمع الخاص بالعنصر المعني الذي تم النقر عليه أولاً ومن ثم العنصر الذي يحتوي عليه بغض النظر عن ترتيبهم في الكود.
أي أنه إذا كان لديك مثلاً button بداخل الـ body والذي هو بدوره جزء من الـ document، وقمت بتسجيل مستمع لكل واحد منهم، فإنه عند النقر المستمع الخاص بالزر سوف يتم تنفيذه أولا ومن ثم المستمع الخاص بالـ body وأخيراً المستمع الخاص بالـ document.
السبب وراء هذا الترتيب بتحليلي قد يكون إعطاء العنصر الذي تم التركيز أو النقر عليه أولوية في التنفيذ لتحسين الأداء. فمثلاً بدون هذا الترتيب، لو كان لديك عدة مستمعات متداخلة في الصفحة فعند تنفيذ سلسلة المستمعات الوصول للمستمع الأخير قد يتطلب وقتاً مع انه المعني الرئيسي بعملية النقر مثلاً.
تحياتي لك.