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

أسس كتابة الخوارزميات في ال Matlab

بدأه بن العيد في 29 سبتمبر 2007 · 2 رد · 15,246 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في الأسبوع الفارط قدمت سلسلة تمارين وحلول في الMatlab وكانت بمثابة تقديم لأسس كتابة الخوارزميات, في هذا الموضوع أعود لذلك بمزيد من التفاصيل والأمثلة التي من شأنها إن شاء الله أن تيسر كتابة الخوارزميات لحل إشكاليات متراوحة الصعوبات. والمقصود هنا بأسس كتابة الخوارزميات هو تنفيذ بعض التعليمات دون غيرها وفق شروط معينة, تكرار تنفيذ أوامر عدد معين من المرات أو إختيارت ترجمة جزء من الكود حسب الإختيار.

الشرط في البرمجة هو متغير يكون له إحدى النوعان صواب أو خطأ وهو ما يعرف في البرمجة بشكل عام ب Boolean.

if/esle

في هذا الجزء من الدرس نختبر ما إن كان الشرط الصحيح فيقوم ببعض التعليمات وإن كان عكس ذلك يقوم بتنفيذ تعليمات أخرى. ليس إجباري أن يكون الجزء الثاني متواجد ولكن إضافته تيسر تتبع الإستثناآت في ترجمة الكود أو تنفيذ تعليمات أخرى.

if condition
  statements A
else
 statements B
end

هنا تجسيد لعمل الخوارزمية حيث الجزء "خروج" يعني الخروج من ركن إختبار الشرط الذي تم تحديده وليس بالضرورة خروج من البرنامج.

post-91400-1191089276_thumb.jpg

مثال:

a=10;

  % if without else
 if(a==10)
  disp('Yes a is equal to 10');
 end

 % if with else
if(a==20)
	disp('Yes, a is equal to 10');
  else
  disp('No, a is different to 10');
end

من الممكن القيام بإختبار على شرط ما داخل إختبار آخر. إذا تحقق الشرط الأول يتم المرور الى الشرط الثاني المتواجد داخله والذي يفهمه المترجم على أنه جزء من تعليمات الشرط الأول.

if condition1
   if condition2
	 statements A
   end
  else statements B
end

post-91400-1191088425_thumb.jpg

b=14;
   clc
if((a<15) & (a>2))
	 if(b˜=14)
	   disp('Second conditions satisfied');
	 end
		 disp('First conditions satisfied');
   else
	 disp('no conditions satisfied');
end

if/esleif/else

أحيانا تتداخل الشروط وتترابط ببعضها ويصبح الكود السابق غير ناجع بما فيه الكفاية, لذلك أقدم في هذا الجزء من الدرس نوعية أخرى من الخوارزمية تستجيب لذلك.

if condition1
	statements A
 elseif condition2
	 statements B
 elseif condition3
	 statements C
	   ...
 else
	 statements E
 end

post-91400-1191091367_thumb.jpg

مثال:

a=input('Please enter a number: ');
   if(a==20)
	  disp('a is equal to 20');
   elseif (a==15)
	   disp('a is equal to 15');
	elseif (a==10)
	   disp('a is equal to 10');
	else
	  disp('unexpected a');
 end

post-91400-1191435560_thumb.jpg

لإجتناب مثل هذا العمل الآلي والمضني خاصة عند تعدد الشروط, يوفر الماطلاب كباقي لغات البرمجة إمكانية إستعمال طريقة الSwitch. كلتا الطريقتين توفر نفس النتيجة وهو ما يعلله الرسم التجسيدي للخوارزميتين ولكن في الطريقة الأولى يتم إختبار كافة الشروط الى أن يصل الى الشرط الناجح في حين أن الطريقة الثانية يتم الإنتقال مباشرة إلى الحالة المعنية أو "التلقائي" إذا لم تستجب أي حالة من الحالات المستعرضة لقيمة المتغير المعني.

Switch

switch Input
  case val_A
	  statements  A
  case val_B
	  statements B
  case val_C
	 statements C
	   ...
  otherwise
	statements Z
end

post-91400-1191086959_thumb.jpg

مثال:

a=input('Please select a number');
 switch a
  case 1   
	disp('you selected 1.')
  case 2
	disp('you selected 2.')
  case 3
	disp('you selected 3.')
  case 4
  disp('you selected 4.')
  otherwise
  disp('Unknown selection.')
end

for

تمكن إستعمال الكلمة المفتاح for من إجتناب إعادة كتابة تعليمات ما عدة مرات ويكفي كتابة تلك التعليمات داخل نص الحلقة وتحديد عدد مرات التكرار المرموز له ب "ح" في الرسم الموالي. عند بدأ تنفيذ الحلقة يأخذ متغير الحلقة "س" القيمة الأولية المسندة ويزيدها (ينقص منها) الخطوة حتي يصل الى قيمة الحد "ح". القيمة التلقائية للخطوة تساوي 1 ويمكن تعديلها كما هو في المثال.

مثال:

for i=0:.1:10
   a=i
 end

post-91400-1191438106_thumb.jpg

while condition,
 Statements
 end

مثال:

 
 a=input('Please choose a number a: ');
  while a<0,
   a=input('Please choose a postive number a: ');
  end

while

تم تعديل هذه المشاركة بواسطة Ben_Laiid في 3 أكتوبر 2007 في 23:14

1
#2

بارك الله فيك شكرا على التوضيح

#3

اشكرك اخي على التوضيح

لكن لدي استفسار .. هل يمكنني استخدام فور في المقارنة بين صورتين هل هما متطابقتان ام لا ؟؟

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