القائمة الرئيسية

الصفحات

كذب عليك من قال أن خوارزميات البرمجة صعبة

 


الخوارزميات (algorithm) هي ثلاث خطوات منطقية لازمة لحل مشكل ما أو تنفيذ أمر ما ، ونسبت إلى العالم المسلم محمد بن موسى الخورازمي ولذلك تكنى بابو علم الحاسوب .

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

دعونا أولا نتعرف الخوارزميات الثلاث التي ابتكرها الخوارزمي لحل مشكل  وهي :   التسلسل والاختيار والتكرار  .

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

التسلسل :
لابد في البرمجة اتباع التسلسل في كتابة كود ، يعني لا يمكن تنفيذ أمر مطلوب قبل اعطاء قيمة سابقة فمثلا اذا كنت تريد طباعة متغير لا يمكن طباعنه قبل اعطاء قيمة للمتغير ، 

المهم لا داعي لمعرفة التسلسل أكثر لأنه أصلا في الحقيقة شيء تتبعه في البرمجة بدون ملاحظته .

الاختبار أو الشرط
الاختبار باختصار هو كلمة شرطية معروفة كثيرا في جميع أنواع البرمجة ألا وهي الامر  (if) مع (else) 
if تعني (إذا كان)
else تعني (وإلا)

أظن أن الامر واضح وساوضح اكثر بلغتنا كيف يتم البرمجة فمثلا اذا طبقت الكلمة الانجليزية بالعربية في شرط ما على البرمجة سيكون على الشكل التالي :

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

إذاكان اكس=5 اطبع ثري  وإلا اطبع فولس  (اتمنى تخرج لغة برمجة باللغة العربية ) ، وهذ الامر يكتب في الحقيقة على الشكل التالي مثلا في لغة PHP

if(x==5) {
   echo true ;
}else{
   echo false ;
}

دعونا نتعرف الان اكثر لماذا يجد الكثير صعوبة في معرفة الخوارزميات اكثر حول كلمات الشرط 


في الحقيقة في البرمجة قد تكون طرق اكثر في تنفيذ الشرط  هناك امر يستخدم في أغلب انواع البرمجة يجمع بين التكرار والاختبار وهو while أو ما يسمى بـ while loop وهي كلمة شرطية تكرارية تعني (ما دام ) ولن يتم الانتقال الى الامر التالي حتى يتحقق شرط ما ويقوم بتخطي الامر while ويكتب على الشكل التالي في حالة كانت البرمجة بالعربي :

اكس تساوي واحد ;
ما دام (اكس اصغر من مئة ) {
قم بزيادة واحد على اكس ;
  نفذ الامر هذا حتى يتم تحقيق الشرط ;
}

أرأيتم البرمجة بالعربية كم واضحة وهذا الأمر في الحقيقة يكتب على لغة php على الشكل التالي :

x = 1 ;
while (x < 100) {
x = x + 1 ;
  code to be executed;
}

هناك أمر شرطي أخر يستخدم بكثرة في انواع البرمجة في حالة كان يتطلب تحقق شرط اكثر من مرة وهو switch مع case .

يعني تعطي قيمة داخل switch 

وتبدأ تقول ان كانت تساوي كذا وكذا نفذ الامر وهكذ عن طريق الامر case وتكتب على الشكل التالي في بي اتش بي :

switch (n) {

  case label1:
    code to be executed if n=label1;
    break; 

  case label2:
    code to be executed if n=label2;
    break;

  case label3:
    code to be executed if n=label3;
    break;

  default:
    code to be executed if n is different from all labels;

}

break اخرج من الشرط او switch اذا تحقق الشرط .

default تعني اذا لم يتحقق اي شرط نفذ هذا الامر .

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

التكرار 
اكثر امر استخداما في جميع انواع البرمجة هو الامر for ويقال لها ايضا for loop، يطبق هذا الامر في التكرار في البرمجة حتى يتم تحقيق شرط ، وتعتمد سرعة التكرار على سرعة البروسيسور لديك في الجهاز او الهاتف وكذلك سرعة الانترنت .
قد يكتب الامر على الشكل التالي في php

<?php
for ($x = 0; $x <= 10; $x++) {
  echo "The number is: $x <br>";
}
?>

شرح الأمر :
بعد التصريح بالامر for تعطي قيمة 0 لاكس في التالي يتحقق من اكس هل اصغر او يساوي 10 وفي التالي يتم اضافة 1 على اكس ويعيد تنفيذ الامر حتى يصبح الشرط غير صحيح وتصبح اكس اكبر من 10 لأن اكس في الاول تم اعطاؤها صفر وتم اضافة واحد وهكذا يتم اضافة واحد الى ان تصبح اكبر من 10 ويتم الانتقال الى الامر التالي والخرو ج من فور يعني سينفذ الامر   echo "The number is: $x <br>";  عشر مرات.

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

اكتفي بهذا القدر إلى درس قادم وأي تعقيدات في فهم الخوارزميات اترك تعليق للإجابة على سؤالك .



هل اعجبك الموضوع :

تعليقات



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