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

ما الفرق بين هذا البرنامجين

بدأه m ahmed في 2 يونيو 2014 · 5 رد · 488 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

a, b, c = 1, 1, 1

while c < 11:

print(b, end = ' ')

a, b, c = b, a + b, c + 1

#output

#1 2 3 5 8 13 21 34 55 89

a, b, c = 1, 1, 1

while c < 11:

print(b, end = ' ')

a = b;

b = a + b

c = c + 1

#output

#1 2 4 8 16 32 64 128 256 512

#2

الفرق بين البرنامجين يكمن هنا:

a, b, c = b, a + b, c + 1a = b;    b = a + b    c = c + 1

في البرنامج الأول تغيير قيم كل من a  b ِc

 

تتم في وقت واحد لذا

فإن b يأخذ قيمة a قبل القديمة أي قبل تنفيذ  a=b

 

أما في الحالة الثانية

 

تغيير القمة لا يتم بوقت واحد

 

ينفذ أمر بعد الآخر

 

هذه الطريقة تمكننا من تغيير قسمة متغيرين من دون إستعمال متغير ثالث

a=2b=3a,b=b,a
1
#3

طيب كيف و print قبل المتغيرات حتى لو كان في البرنامج الاول المتغيرات تاخذ القيم في وقت واحد والثاني واحد تلو الاخر print لن تطبع الا بعد مايتم تعيين قيمة المتغيرات!

هل كلامي صحيح ؟
 

تم تعديل هذه المشاركة بواسطة m ahmed في 2 يونيو 2014 في 21:13

#4

المشكلة ليست في print

 

كما قلت لك الأمر متعلق بما ذكرته فقط

 

المتغييرات ذات علاقة ببعضها البعض لذا بين أن تنفذ مع بعض أو واحدة تلو الأخرى فالنتيحة تختلف

 

سأشرح أكثر لك

 

في البرنامج الأول b تأ خذ القيمة القديمة ل a + القيمة الموجودة فيها(قيمة b  القديمة)

 

أما في البرنامج الثاني

a = b;    b = a + b

b تأخذ القيمة الجديدة ل a  و التي هي b  و تضيفها بقسمتها السابقة(قيمة b  القديمة)

 

يمكننا إستبدال هذين السطرين ب:

b=b*2

و النتيجة ستبقي نفسها

 

يا أخى بما أنك مبرمج فأنا بالتأكيد تعرف أن ترتيب العمليات يغير النتيجة

 

مثلا

 في هذا البرنامج نغير قيمة b  ثم نغير قيمة  a 

a=1b=1for i in range(10):    b=a+b    a=a+bprint a,b#17711 10946

أما هنا فنغير قيمة  a أولا

a=1b=1for i in range(10):    a=a+b    b=a+bprint a,b#17711 10946

كما تلاحط النتيجة تختلف

 

إن لم تفهم هذا فراجع أولويات العمليات

#5

أخي شكرا لك ع المساعدة، لكنك ربما لم تفهمني بشكل جيد

ماتعنيه مفهوم وواضح بالنسبة لي لكن سؤالي مختلف بعض الشيء

#6

أجبتك عن سؤالك في ردي الأول

 

لكنك بعدما رديت علي لاحضت أنك لا تفهم الأوليات

 

 لذا شرحت لك في ردي الثاني

 

على العموم  وضح أكثر إن لم أكن قد وفقت في فهم مرادك

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

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

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

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

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