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

لأهل الخبرة في عمل المحاكاه

بدأه Abo Osama في 25 أكتوبر 2008 · 4 رد · 1,067 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله ...

يا مبرمجين أنا عندي اشكال في البرمجة ياليت لو تفزعون لي وتساعدوني

أوكي

أعلمكم السالفة من البداية

أنا عندي مشروع عمل محاكاة لشبكة لا سلكية تمام

لنفترض أن الشبكة تتكون من خمسة أجهزه ..... من ( أ )... ( هـ )

ونفرض أن وقت المحاكاة 300 ثانية

طبعا موجود خوازم امشي عليه في عملية المحاكاة

الخوازم يقول الجهاز اللي يبي يرسل يتأكد من المستقبل هل فاضي ( يعني ما هو جالس يستقبل بيانات من جهاز ثاني) قبل ما تتم عملية الارسال

طيب نفرض بعد 2 ثانية من بدايةعملية المحاكاة الجهاز ( أ ) بدأ يرسل للجهاز ( ب ) تمام

وبعد ثانيتين ( يعني عند الثانية الرابعة ) جاء جهاز (ج ) يبغى يرسل للجهاز ( ب )

طبعا الجهاز ( ج ) بيأخر الارسال لين ينتهي جهاز (ب ) من استقبال البيانات من ( أ )

تمام .....

السوال هو

كيف اكتب برنامج بحيث أن يخلي عملية اختيار الارسال والاستقبال بشكل عشوائي

يعني مثلا بعد 3.5 ثانية جهاز ( د ) بدأ يرسل إلى الجهاز ( هـ )

ثم عند الثانية 9 جهاز ( أ ) يرسل إلى ( د )

وهكذا

السؤال بصيغة ثانية

هل فيه طريقة أتحكم من خلالها بالوقت في البرنامج

يعيني في الثانية الفلانية .... اجعل الجهاز يبدأ يرسل

وفي الثانية الفلانية يكون الجهاز الفلاني انتهى من الارسال

طبعا للتبسيط لنفرض أن مدة الارسال ثابت

أرجو أن الصورة وضحة

وإذا كان في غموض

أنا موجود

يعطيكم ألف عافية وما قصرتوا

#2

طبعاً ممكن. جميع لغات الكمبيوتر الحديثة فيها مولدات أرقام عشوائية Random number generator.

#3

يعيطك العافية وما قصرت

بس .... أوكي عندي كود يعطي أرقام عشوائية

المشكلة ليست في ايجاد ارقام عشائية

المشكلة هي كيف أجعل أكثر من جهاز يقوم بالارسال أو الاستقبال في نفس الوقت

يعيني ما هي الخوارزمية التي تمكني من تمثيل أرسال أو استقبال في نفس الوقت

#4

اجعل في البرنامج 2 Thread ، واحد للأستقبال واحد للأرسال .. حق الأستقبال وظيفته استقبال الرساله القادمه من أي جهاز ويطبعها لديه في الشاشه ... أما Thread الأرسال وظيفته الأرسال الى جهاز ما (يتم أختياره عشوائيا) ولكن قبل أن يرسل يتحقق من ذلك الجهاز هل هو مشغول أم لا ،

كيف تستطيع التأكد ، هنا عليك أن تجد طريقه مناسبه ، مثلا أعمل متغير bool في أي جهاز ، في حال كان الجهاز مشغول اجعلها false ، واذا كان عاطل اجعله true .. الأن عندما يقوم Thread الإرسال بارسال لجهاز ، يتحقق من هذا المتغير في ذلك الجهاز ، هل هو true اذا كان كذلك أبدا الإرسال وغير قيمه ذلك المتغير الى false حتى لا يقوم جهاز أخر بالإرسال ... واذا كان false فضع هذه المهمه في صف الأنتظار أو جعل الThread الحالي Sleep الى أن يتنهي ذلك الجهاز من العمل وتبدأ هنا بالإرسال ..

هذا بشكل عام جدا ، والتطبيق يختلف من بيئه لأخرى ، ومن لغه أخرى ، لكن جميع اللغات تدعم مفهوم الThread ..

بالتوفيق ،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#5

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

ثم تحدد لكل جهاز الثانية الخاصة به لعملية الأرسال

أو يمكنك التأكد كل مدة ولتكن 1 ثانية من أن الجهاز المستقبل توقف أو أنتهى من أستقبال البيانات من جهاز آخر ثم تتم عملية الأرسال له

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…