تمرين - الأخطاء الشائعة
#31
B.M.AbdelAziZ كتب :بارك الله فيك على التعقيب، ماكنت افكر فيه هو عدد صحيح موجب الذي نفسه هو عدد طبيعي وعندما كتبت اخطأت وكتبت عدد طبيعي موجب، تحدث معي هذه الاخطاء غالبا عندما اكتب بتسرع وانا اعمل فكثيرا تجد كلمة بدل اخرى أو حرف بدلا حرف أخر...

لا عليك يا استادنا عادي
اصلا الاجابة صحيحة عندما كتبت بالفرنسية
un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs.
انت اخطات سهوا في الترجمة
على كل حال بارك الله فيك على المعلومات
الرد
#32
تمرين اكتب دالة تتحقق من نص مدخل اذا كان النص يساوي احد القيم التالية :
'aaa'
'bbb'
'ccc'
ترجع قمية True


الطالب 1
PHP كود :
CheckStr(s: string):Boolean;
begin
  Result 
:= False;
  if 
s = 'aaa' then Result := True;
  if 
s = 'bbb' then Result := True;
  if 
s = 'ccc' then Result := True;
end; 
الطالب 2
PHP كود :
CheckStr(s: string):Boolean;
begin
  Result 
:= True;
  if 
not (s = 'aaa') then Result := False;
  if 
not (s = 'bbb') then Result := False;
  if 
not (s = 'ccc') then Result := False;
end; 

الطالب 3
PHP كود :
CheckStr(s: string):Boolean;
begin
  
if s = 'aaa' then Result := True else
  if 
s = 'bbb' then Result := True else
  if 
s = 'ccc' then Result := True else
  
Result := False;
end; 

نكتفي عند هذا الحد هناك حلول اخرى لكن لا احبب ان اثقل عليكم

ما هو احسن حل و لماذا ؟
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#33
لا يوجد أحسن خل
لأنه هناك حلان خاطئان

الحل الأول خطأ

لو كان المتغير = aaa
فإنه عند الشرط الثالث فإن result ستساوى false مخالف للحقيقة

الحل الثانى خطأ

لو كان المتغير = aaa
فإنه عند الشرط الثالث فإن result ستساوى false مخالف للحقيقة

الحل الثالث فقط هو الصحيح

الحل الأمثل سيكون بإستغلال التعليمة or
الرد
#34
السلام عليكم

حسنا كتبت الكود دون تجريب مع ذلك يبقى التمرين قائم
خالد على22
انت مخطأ الحل الاول صحيح جرب لو كان المتغير aaa ستعيد القيمة True غير مخالف للحقيقة كما تقول
الحل الثالث صحيح جرب كذلك ذلك
معك حق الحل الثاني خطأ...
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#35
السلام عليكم
احسن حل برايي هو الحل 1 لانه الاسرع في التنفيد ، فسرعه تنفيد حلقة if .....then اسرع من تنفيد حلقة
if.... then.. else كما في اجابة الطالب رقم 3 اما اجابة الطالب 2 فهي خاطئة ولو عدل في الحل واعتبرناها صحيحة فتعليماتها تحتوي على not اي ان المعالج (ِCPU ) يقوم بعملين اولهما تنفيد التعليمة
if (s = 'aaa') ثم عملية النفي ب not ما يعني ان المعالج سيستغرق وقت اضافي لمعالجة تعليمات الدلة في الحل 2 .
طبعا الفرق في زمن التنفيد لا يظهر جليا في دوال او برامج من 3 او 4 تعليمات لكن في برامج من مئات الاسطر البرمجية يظهر الفرق والله اعلم واعدروني ان اخطات .
الرد
#36
السلام عليكم اخ بسام معك حق في كل ما قلته لكن تعلمية if/then/else احسن من if/then لانه مع تعليمة if/then/else لن ينفذ التعلميات التاليةاذا تحقق الشرط من البداية لكن مع تعلمية if/then سينفذ التعليمات التالية سواء تحقق الشرط او لم يتحقق ...نعم اخطأ الطالب 2 مرتين الخطأ الاول هو احتماله لوجود الصحيح اكثر من الخاطئ و هذا خطأ لانه عدد القضايا الصحيحة 3 و عدد القضايا الخائطة لا نهاية له مما اضطره بعد ذلك الى استخدام not و الخطأ الثاني كان عليه الخروج باستخدام exit او استخدام المعاملات المنطقية ليصبح الكود صحيح
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#37
بارك الله فيك على المعلومات القيمة
اسف لم اركز مع التعليمة if ..then ..else :confused: شكرا للتوضيح والتنبيه في انتظار اسئلة اخرى
الرد
#38
s.fateh كتب :السلام عليكم

حسنا كتبت الكود دون تجريب مع ذلك يبقى التمرين قائم
خالد على22
انت مخطأ الحل الاول صحيح جرب لو كان المتغير aaa ستعيد القيمة true غير مخالف للحقيقة كما تقول
الحل الثالث صحيح جرب كذلك ذلك
معك حق الحل الثاني خطأ...

حسنا
لنفاضل بين الكود الأول و الثالث

الثالث أفضل
لأنه جمع الثلاثة شروط فى مقطع شرطى واحد

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم