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

استفسار بخصوص الاغورثم في السي بلس بلس

بدأه smiley girl في 7 مايو 2009 · 5 رد · 843 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

كيف حالك إن شاء الله دائمــاً بخير ؟

سؤالي هو بخصوص الاغورثم

انا أدرس الآن الالغورثم بلغة السي بلس بلس

والى الآن لم أكتشف الفائدة من دراسته..

لا أرى أنه أوضح من الأكواد أبدا ..بل على العكس احب أن أكتب كود بلغة السي بلس بلس ولا أحب أن أكتب

الألغورثم..أريد فقط أن يقنعني أحد بسبب دراسة هذه الماده

لأني الى الآن لم أجد الاجابة الكافية..

أرجوكم لا تهملوا سؤالي لأنه مهم جدا بالنسبة لي

وسيفتح لي مدارك كثيرة..

#2

السلام عليكم ....

هل تقصدين الـ Algorithms ؟

إذا كان كذلك ففهمك لهذه المادة أهم بسنين ضوئية من معرفتك بـ ++C أو أي لغة برمجة أخرى..

لاحظي أن دراسة الـ Computer Science ليست هي نفسها البرمجة رغم الخلط الكبير بينهما....

علوم الحاسوب هو علوم "حل المشاكل", و لكي نحل المشكلة يجب أن نستوعبها, و بعد أن نستوعبها يجب أن نعرف ماهو المطلوب بالضبط, ثم نقوم "بحل المسألة",

حل المسألة لا يعني بأي شكل من الأشكال "كتابة الكود", الكود نفسه نكتبه "للحصول على الإجابة", و بدون حل للمسألة لايمكننا الحصول على الإجابة,

الآن لماذا نكتب الخوارزميات بالـ Pseudo Code ؟!

الحقيقة أن الخوارزميات تعريفها العلمي, هو أنها مجموعة من الخطوات "المعرفة", لحل مشكلة معينة, و هذه الخطوات تنتهي عند خطوة معينة :)

الـ Pseudo Code في الحقيقة خطأ أن نطلق عليه اسم الخوارزمية, لأنه ليس "معرف" بشكل دقيق و علمي,

ماذا أقصد "بمعرف" ؟

حسناً "معرف" تعني أن الآلة التي سنقوم بكتابة الخوارزمية عليها, تحتوي على عمليات أساسية محددة بشكل دقيق دون لبس,

فمثلاً من أوائل علماء الحاسوب و أهمهم Turing, تخيل أن لديه آلة تستطيع تطبيق عدة عمليات, و بنى فوق تلك العمليات علميات أعقد و أعقد,

تلك الآلة كانت آلة وهمية, أي كانت في عقل Turing فقط, و كان يتخيل أنه لو كانت تلك تستطيع تطبيق العمليات مرة واحدة, أي لاوجود لشيء اسمه الزمن :)

فمالذي أستطيع حسابه و ما الذي لا أستطيع حسابه :)

++C هي آلة وهمية كغيرها من لغات البرمجة :)

نحتاج إلى حل المسألة ثم نقوم بكتابة الحل بلغة ++C :)

الآن لماذا لا نقوم بكتابة خوازميتنا مباشرة على آلة ++C :) هذا سؤال إجابته أن العقل البشري لا يستطيع فعل ذلك لأنه يحب التفكير بحرية و لا يريد التقيد بآلة معينة :)

و لذلك نقوم بكتابة حلنا بلغة خليط من اللغات الطبيعية و اللغات الحاسوبية :)

حتى لو افترضنا أننا نستطيع التعبير عن حلنا بلغة كـ ++C فإن ذلك يعني أن هناك صعوبة شديدة جداً في نقل الحل لآلة وهمية أخرى, أي لغة برمجة أخرى, لأننا افترضنا وجود عمليات في آلة معينة :)

علماء الحاسوب "الكبار" عندما يقومون بتأليف خوارزمية, فإنهم لاينشرونها بالـ Pseudo Code, و لكنهم يقومون بتأليف آلة وهمية من عقولهم, يقومون بتعريف الخوارزمية عليها,

أتمنى أن تصل الفكرة, الموضوع كبير جداً :)

تحياتي ...

#3

جزاك الله خيرا على التوضيح..

وما استخلصته منه أنني عندما أكتب Pseudo Code فإني أكتب الحل بشكل عام بدون تحديد للغة

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

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

يعني باختصار لو لم يكن هناكPseudo Code لما تطورت البرامج بصورة سريعة..أرجوك وضح لي بطريقة أبسط من السابق

لأني لا استطيع فهم ماده غير مقتنعه بها تماما :tantrum:

#4

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

الخوارزميات من أهم المواد لطالب علوم الحاسوب ولأي مبرمج أيضا ،، فكل ما زادت معرفتك بخوارزميات أكثر كلما ازداد وزنك كمبرمج :) .. وهو مجال متشعب كثيرا ، فهناك خوارزميات تتعامل مع النصوص string algoritms وهناك خوارزميات خاصه بالترتيب sorting algorithms وهناك خوارزميات خاصه بالتشفير Cryptography ، وهكذا أي تخصص في الحاسب ستجد العديد من الخوارزميات المختصه به ،،

هذه الخوارزميات تختلف عن بعضها في أمور كثيره سواء في طريقه التطبيق- recusrion,iteration- أو فكره الخوارزميه -divide and conquer , greedy algorithms , dynamic programming- أو حتى في سرعه الخوارزميه وتعقيدها الزمن big-o notation أو حتى في وصولها للحل -excat , approximate- وأمور أخرى ،، لذلك أختيار الخوارزميه المناسبه للمشكله التي بين يديك أمر مطلوب لحل المشكله بأفضل وأسرع طريقه ممكنه ،، ومن هنا سوف تبدأ دراستك لمجموعه من الخوارزميات وتعرف أين-كيف تستخدم الخوارزميات ومتى لا تستخدمها ..

بالنسبه للpseudo-code فهو عباره عن طريقه high level لوصف الخوارزميه ،، فبدل أن تكتب الخوارزميه باستخدام لغه برمجه معينه يمكنك كتابته على شكل pseudo-code وبالتالى يمكن لأي مبرمج فهم الخوارزميه ومن ثم يطبقها باللغه التي يريدها ،،

ولا يوجد معيار ثابت لكتابه هذا الكود المزيف -الا في حال كان هناك مترجم لpseudo-code :P - ، بالتالي يمكنك كتابته بأي شكل مهما كان ، فالأهم هو أن يفهم المبرمجين الفكره وليست طريقه التطبيق بالضبط بعدها يقوم أي مبرمج بتطبيق الفكره بلغته التي يجيدها ،،

بالتوفيق :).

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

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

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

#5

جزيتم خير الجزاء..

جعلها الله في موازين حسناتكم..

أشكركم كثيرا وأتمنى لكم التوفيق..

تحياتي الخالصة :happy:

#6

صحيح ... اجاباتكم جميلة جداً

Wajdy Essam و Khaled.Alshaya

... شكرا جزيلا

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

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

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

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

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