محاضرات لغة سي الفصل الاول PDF
Document Details

Uploaded by TopUnity
Al Mashreq University
علاء عبد علي هادي
Tags
Summary
هذه المحاضرات من قسم تكنولوجيا المعلومات والاتصالات في السنة الأولى، تقدم نظرة عامة على لغة البرمجة C++، بما في ذلك مقدمة في البرمجة أنواع البرامج، مستويات البرمجة، ومستويات لغات البرمجة.
Full Transcript
مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ الجزء النظري ) المحاضرة رقم ( ٠١ البرمجة بلغة )...
مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ الجزء النظري ) المحاضرة رقم ( ٠١ البرمجة بلغة )(C ++ مقدمة عن البرمجة Introduction البرمجة ):(Programming عبارة عن مجموعة من اﻷسس والمبادئ والنظريات التي تتﻼئم مع البيئات العملية "مبادئ علم الحاسوب". البرنامج ):(Program تعريف عام :هو مجموعة من التعليمات " "Codesواﻻوامر المرتبة لحل مشكلة معينة. تعريف اخر :مجموعة من اﻻكواد المكتوبة بلغة من لغات البرمجة . الحزم ) : ( package مجموعة من البرامج الجاهزة والمترابطة فيما بينها والتي تؤدي وظائف متعددة وتعمل تحت بيئة واحدة . البرامج الجاهزة :يعني ﻻيتم التعديل عليها فهي صيغة نهائية مثل ) . ( windows , office package ١ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ أنواع البرامج ):(program type أنظمة التشغيل ).(operating system – OS (١ لغات البرمجة ).(Programing Languages (٢ التطبيقات ).(Application (٣ المفسرات /المترجمات ).(Compilers (٤ مستويات البرمجة: وهي مستويات يمر عليها المبرمج خﻼل رحلته التعليمية البرمجية: (١التقليديــــة :وهي مرحلة كتابة برامجه بطريقة عشوائية ﻻتعتمد علﻰ أساس ونظريات وهيكلة ،فما يهم المبرمج هو الوصول لحل المشكلة فقط . عيوب هذه الطريقة : ﻻ يمكن اكتشاف الخطأ في البرنامج. ﻻ يمكن تطوير البرنامج بسهولة. تطوير البرنامج يزيد حجم البرنامج بشكل كبير. (٢الهيكلـــــة :وهي مرحلة يقوم فيها المبرمج بتقسيم برنامجه الﻰ هياكل تساعد علﻰ اكتشاف اﻷخطاء والتطوير كما أعطت إمكانيات كثيرة. (٣الكائنيــــة :وهي مرحلة يقوم فيها المبرمج بهيكلة برنامجه الﻰ كائنات كل كائن يتخصص في حل مشكﻼت في مجال معين ،ويحتوي الكائن علﻰ طرق " دوال " مترابطة تجعل من الكائن يمتلك ذكاء في تحديد اﻻستجابة المطلوبة تلقائيا. مستويات البرمجة ٢ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ مستويات لغات البرمجة ):(Programming Language Level (١المستوى اﻷدنﻰ ) : Lowest Language Level ( L.L.L L.L.L يتعامل هذا المستوى مع الدوائر المنطقية ويتكون من : لغة اﻻلة ).(Assembler لغة التجميع ).(Micro Assembly عيوبه: صعوبة كتابة البرمجيات او فهمها ﻻنها تتعامل مع رموز النظام الثنائي .( 0/1 )Binary Code لغة قريبة من اﻻلة وبعيدة عن اﻻنسان. تحتاج الى متخصصين في الحاسوب. من هذا نستنتج ان هذا المستوى يحتاج الﻰ )نظام ادخال – ثنائي( ويكون نظام الحفظ )النظام العشري( ونظام العرض )سادس عشر(. ٣ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ (٢المستوى المتوسط ) : Midst Language Level ( M.L.L ظهر هذ ا المستوى ثم اختفﻰ بسرعة بسبب سرعة التطوير الﻰ المستويات العليا حيث دمجت وصنفت لغاته في المستوى العالي ويتكون من اللغات التالية: C C++ ومن مميزاته :هي انه قريب من الحاسوب ومن اﻻنسان. (٣المستوى العالي ) : Highest Language Level ( H.L.L تتكون من التالي: Basic ) Pascal ومن استخداماتها في المجاﻻت العلمية(. ) Fortran تستخدم في المجاﻻت الفيزيائية والرياضيات(. ) Cobol تستخدم في المجال التجاري(. ) Java تدخل في عدة مجاﻻت ومنا المواقع واﻷنظمة التفاعلية(. المميزات: (١قريبة جدا من لغة اﻻنسان )مما ساعد علﻰ انتشارها(. (٢سهلة الفهم والكتابة. (٣لغات هيكلية. (٤لغات متخصصة )كل لغة تهتم بجانب معين ،وبالتالي يمكن اﻻستفادة من اللغات المختلفة بحسب نوع المشكلة المراد حلها. ٤ ﻣﺪﺭﺱ ﺍﳌﺎﺩﺓ :ﻋﻼء ﻋﺒﺪ ﻋﻠﻲ ﻫﺎﺩﻱ ﻗﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﻴﺎ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﻻﺗﺼﺎﻻﺕ -ﺍﻟﺴﻨﺔ ﺍﻻﻭﱃ -ﻣﺎﺩﺓ ﺍﻟﱪﳎﺔ ﺑﻠﻐﺔ C++ الجزء النظري ) المحاضرة رقم (٠٢ ما هي لغة البرمجة ) ( C++ من منا لم يفكر يو ًما بينما يعمل على أحد التطبيقات أو يستخدم أحد مواقع اﻹنترنت عن مقدار العمل الذي استغرق ﻹنجاز هذا التطبيق؟! محتارا بين اللغات المتعددة ،هل ً ً طويﻼ من منا لم يشغل تفكيره ولو للحظة أن يغامر بدخول هذا العالم الواسع؟! أكثرنا أمضى وقت ًا ً يستحسن أن أتعلم الجافا Javaأم سي بلس بلس C++؟ ربما تكون لغة سي شارب C#أكثر متعة! ما ميزات كل لغةٍ؟! سنقوم هنا بالحديث عن إحدى هذه اللغات التي شكلت حجر اﻷساس في الكثير من التطبيقات التي نعتمد عليها في حياتنا اليومية ،سندرس لغة البرمجة سي بلس بلس . C++ تعريف لغة البرمجة سي بلس بلس: C++ هي لغة برمجة كائني ٍة متعددة اﻷغراض ،ومهيكلة.اخترعت من قبل العالم ) برايان ستروستروب( في مختبرات بيل .وهي لغةٌ مماثلةٌ للغة البرمجة السي Cالتي قام باختراعها العالم ) دينيس ريتشي ( في أوائل سبعينيات القرن الماضي ،إﻻ أنها أكثر أمانًا من سابقتها وتتضمن العديد من التقنيات الحديثة كالبرمجة كائنية التوجه ) .( Object Oriented programming - OOP تاريخ سي بلس بلس : C++ يعود تاريخ هذه اللغة إلى عام ، ١٩٧٩إذ قام بإنشائها برايان ستروستروب أثناء عمله في مختبرات بيل.في الواقع عمل عليها كنسخ ٍة مطور ٍة من لغة سي cوسميت بدايةً سي مع الصفوف ) ، ( C with classesوكانت % ٩٩من برامج سي تعمل عليها دون تغيير في الشيفرة المصدرية. تم تغيير اسم اللغة عام ١٩٨٣إلى اﻻسم المعروف حال ًيا وهو سي بلس بلس ) C++دﻻلة على معامل الزيادة في اللغة وهو .(++ومع الوقت تم إضافة العديد من الميزات حتى تطورت ووصلت إلى شهرتها الحالية. مزايا لغة سي بلس بلس : C++ نتيجة الى اﻻهتمام الذي حظيت به اللغة منذ نشأتها فقد تميزت عن سابقتها بالعديد من المزايا التي جعلت منها لغةً مرموقةً بين أشباهها. وسنذكر بعض مزاياها تلك: لغة كائنية التوجه. (١ محمولة. (٢ متعددة المهام. (٣ شاملة. (٤ قوية ،إذ تستعمل في العديد من أنظمة التشغيل. (٥ تعتبر من اللغات الرائدة في تطوير المشاريع الكبيرة والمعقدة. (٦ لغة ) ( C++ورثت مزايا لغة سي إﻻ أنها أضافت العديد من اﻷنماط البرمجية الهامة ،كالتغليف ، Encapsulationالوراثة ،Inheritanceتعددية اﻷشكال ، Polymorphismالتجريد abstractionوالصفوف . classes تدعم لغة C++المقومات اﻷربعة للبرمجة الكائنية .التغليف -إخفاء البيانات -الوراثة -تعددية اﻷشكال . (١التغليف Encapsulationوإخفاء البيانات : تدعم C++صفة التغليف و إخفاء البيانات عبر إنشاء أنواع جديدة تسمى بالصفوف Classesو من ثم يقوم الصف المحدد بالعمل ككائن مغلف تماما و يستعمل كوحدة متكاملة بحيث يبقى عمله الداخلي مخفيا و ﻻ يحتاج المستعمل إلى فهم هذا العمل المخبأ ،وانما ينبغي أن يعرف كيفية استعماله فقط . (٢الوراثة و إعادة اﻻستعمال : Inheritance توفر C++دعما فعاﻻ ﻹعادة اﻻستعمال من خﻼل الوراثة . inheritanceيمكن إعﻼن نموذج جديد يكون امتدادا لصف موجود و اشتقاقا منه .ونسمي الصف الجديد صفا مشتقا أحيانا . ٥ ﻣﺪﺭﺱ ﺍﳌﺎﺩﺓ :ﻋﻼء ﻋﺒﺪ ﻋﻠﻲ ﻫﺎﺩﻱ ﻗﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﻴﺎ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﻻﺗﺼﺎﻻﺕ -ﺍﻟﺴﻨﺔ ﺍﻻﻭﱃ -ﻣﺎﺩﺓ ﺍﻟﱪﳎﺔ ﺑﻠﻐﺔ C++ (٣التعددية الشكلية : Polymorphism إن دالة الرسم واحدة ،و لكن أطوارها متعددة بحسب نوع الفصيلة .و هذا هو أحد المبادئ اﻻقتصادية في لغة سي ++لتوفير الوقت و الجهد :استخدام نفس الدالة لتحقيق مهام مختلفة . عيوب لغة سي بلس بلس: C++ ﻻ تخلو أي لغ ٍة من بعض نقاط الضعف أو العيوب البسيطة ربما ،لذا يجب علينا التنويه لها: (١تعتبر لغة سي بلس بلس غير آمنة. (٢معقدة بالنسبة للمتعلمين حديثًا. (٣صعبة التعامل والتصحيح عند استخدامها في تطبيقات الويب. (٤ﻻ تدعم استعادة الموارد . Garbage collection (٥ﻻ توفر الكثير من الدعم للمبرمج. (٦ﻻ يوجد مكتباتٌ افتراضيةٌ خاصةٌ بها لتصميم الواجهات الرسومية. بعض التطبيقات التي استخدمت سي بلس بلس C++في تصميمها: كبير ،ومنها ي ٍ اﻵن ،فمنها ما اعتمد على اللغة بشك ٍل ٍ استخدمت هذه اللغة في العديد من البرامج والتطبيقات التي نستخدمها بشك ٍل يوم ّ ت مجتمع ٍة في تطويره.لكن القوة التي تتمتع بها هذه اللغة جعلتها تحتل مكانًا في برمجة معظم البرامج الناجحة والقوية ما دخلت عدة لغا ٍ منها: Firmwareبرامج أنظمة اﻵﻻت والهواتف المحمولة. أنظمة التشغيل مثل Windowsو. Apple معظم برامج Adobeمثل الفوتوشوب photoshopوأليستريتور Illustratorوالبريمير . Premier تطبيقات غوغل Google Applications:تمت كتابة بعض تطبيقات غوغل بواسطة C++مثل نظام الملفات وغوغل كروم .Google Chrome. متصفح اﻹنترنت . Mozila – Firefox برنامج النمذجة ثﻼثية اﻷبعاد . Autodesk Maya أمازون . Amazon البريد اﻹلكتروني) .( Email هل لغة البرمجة C++هي مفتوحة المصدر . open sources نتيجة انتشارها الكبير والتطويرات التي قام بها العديد من المبرمجين فقد توافرت منها العديد من البرمجيات المفتوحة المصدر ،ويمكن ي ٍ كان اﻻطﻼع على الشيفرة المصدرية للعديد من التطبيقات بسهولةٍ. ﻷ ّ ** مراحل حياة البرنامج ** حينما ن كتب برنامجا في السي فإنك تمر بعدة مراحل لكي ترى نتيجة البرنامج ،وهذه المراحل ثابتة وهي تمثل كالتالي: (١ﻣرحلة التحرير :editing في هذه المرحلة تقوم أنت بكتابة البرنامج وتحريره . (٢ﻣرحلة التجميع: وهي تضم ﻣرحلتين تعتبر أساسا هما: -ترﺟمة compiling -ربط البرناﻣج linking (٣ﻣرحلة التنفيذ :executing وتلك كانت المراحل اﻷساسية التي يمر بها البرنامج لكي يظهر النتيجة ولكن هنالك مرحلة رابعة تتم فقط في حالة وجود أخطاء في البرنامج وهي (٤ﻣرحلة اكتشاف اﻷخطاء : debugging ٦ ﻣﺪﺭﺱ ﺍﳌﺎﺩﺓ :ﻋﻼء ﻋﺒﺪ ﻋﻠﻲ ﻫﺎﺩﻱ ﻗﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﻴﺎ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﻻﺗﺼﺎﻻﺕ -ﺍﻟﺴﻨﺔ ﺍﻻﻭﱃ -ﻣﺎﺩﺓ ﺍﻟﱪﳎﺔ ﺑﻠﻐﺔ C++ وﻻ يوجد داعي لشرح هذه المرحلة ،فأنت بالطبع سوف تكتشفها عند كتابة برنامج ،ليس معنى كﻼمي هو التأكيد على وجود اﻷخطاء في كتابة البرامج ولكن هذا شيء طبيعي ما دمت تتعلم لغة السي ………فأنت ستواجهك أخطاء كثيرة عند كتابة البرامج فأنت في طور تعلم لغة السي فمع تطبيق البرامج واكتشاف اﻷخطاء وتصحيحها سوف تتعود مع مرور الوقت على اكتشاف أخطائك بنفسك لكي تتجنبها مستقبﻼ. الخوارزﻣيات :Algorithm ما هي الخوارزميات Algorithms -؟ الخوارزميات تعرف باللغة اﻹنجليزية ) ،(Algorithmsوتعرف أيضا بـ حل المشكﻼت ،Problem Solving -ومن خﻼل هذا المسمى يمكنك تعريف الخوارزمية بأنها مجموعة من الخطوات التي يتم تطبيقها على مجموعة من البيانات المتاحة والتي تعرف بـ المدخﻼت - ،Inputsلتحصل منها على نتيجة )حل المشكلة( وهو ما يعرف بـ المخرجات ،Output -وهذه الخطوات ببساطة هي الخوارزمية، والشكل التالي يوضح الفكرة أكثر: ما هي طرق /خطوات كتابة الخوارزمية؟ يتم حل أي مشكلة )تصميم الخوارزمية( في أربع خطوات رئيسية ،ولكي تتمكن من فهم كل خطوة جيدا سوف أطرح مشكلة برمجية بسيطة ونقوم بحل المشكلة من خﻼل تطبيق خطوات كتابة الخوارزمية : (١تعريف المشكلة (٢كتابة الخوارزمية (٣مراجعة الخوارزمية (٤تحويل الخوارزمية الى برنامج السؤال //اكتب خوارزمية للحصول على المتوسط الحسابي لرقمين وقم بطباعة النتيجة (١تعريف المشكلة :Problem Definition - يعتبر تعريف أو تحديد المشكلة هو أولى خطوات الحل للمشكلة ،حيث يتم تحديد المدخﻼت والمخرجات بكل دقة ووضوح على شكل متغيرات ،Variables -فيتوجب عليك كمبرمج أن تقوم بتحديد المفاهيم الخاصة بالمشكلة على هيئة متغيرات ذات إسم محدد ونوع بيانات محدد ،حيث يتم اﻹشارة إلى هذه البيانات في الخوارزمية من خﻼل اﻹسم ،ونوع البيانات يحدد العمليات التي يمكن إجراؤها على البيانات ،يوجد العديد من أنواع البيانات ولكن يمكنك أن تصنف البيانات في نوعين رئيسيين وهم البيانات الرقمية والبيانات النصية. في هذه الخطوة عادة ما يتم إنشاء جدول بالبيانات ،Data Table -بحيث يحتوي هذا الجدول على تصنيفين رئيسيين وهم متغيرات المدخﻼت ،Input Variables -متغيرات النتيجة .Output Variables - وبتطبيق هذه الخطوة على المثال ،نحصل على جدول البيانات التالي المدخﻼت: Xالرقم اﻷول Yالرقم الثاني المخرجات: averageالمتوسط الحسابي للرقمين ٧ ﻣﺪﺭﺱ ﺍﳌﺎﺩﺓ :ﻋﻼء ﻋﺒﺪ ﻋﻠﻲ ﻫﺎﺩﻱ ﻗﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﻴﺎ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﻻﺗﺼﺎﻻﺕ -ﺍﻟﺴﻨﺔ ﺍﻻﻭﱃ -ﻣﺎﺩﺓ ﺍﻟﱪﳎﺔ ﺑﻠﻐﺔ C++ (٢تصميم /كتابة الخوارزمية Writing an Algorithm - في هذه الخطوة يجب على المبرمج التفكير في طريقة حل المشكلة ،ثم تقسيم هذه الطريقة على مجموعة خطوات ،بحيث تقوم كل خطوة بإجراء عملية واحدة فقط ،ويجب اﻷخذ في اﻻعتبار ترتيب هذه الخطوات ،ﻷن الكمبيوتر يقوم بتنفيذ هذه الخطوات واحدة تلو اﻷخرى بالترتيب الذي يقوم بكتابته المبرمج ،ويجوز للمبرمج أن يقوم بتعريف متغيرات جديدة لتساعده في حل المشكلة ،وفي هذه الحالة تسمى هذه المتغيرات بـ متغيرات البرنامج ،Program Variables -وهذه المتغيرات ﻻ تعد من المدخﻼت وﻻ من المخرجات.وقبل أن نبدأ في كتابة الخوارزمية يجب أن تعلم أن هناك طريقتين لكتابة الخوارزمية ،وهم كالتالي: الطريقة الكتابية -شبيهة الكود : Pseudo Code - وفي هذه الطريقة يقوم المبرمج بكتابة خطوات حل المشكلة )الخوارزمية( في تسلسل مرقم أو غير مرقم ،وتكتب كل خطوة في سطر مستقل ،ويستخدم المبرمج اللغة التي يتحدث بها سواء كانت العربية أو اﻹنجليزية لكتابة تسلسل الخطوات ،ومن أهم مميزات هذه الطريقة هي المرونة ،حيث يمكن للمبرمج كتابة أفكارة على شكل خطوات باللغة اﻷساسية التي يستخدمها في حياته اليومية ،وعادة الخوارزميات المكتوبة جيدا بهذه الطريقة يسهل تحويلها إلى أكواد أو أوامر للكمبيوتر ،والعيب الرئيسي في هذه الطريقة أنه مع كبر حجم الخوارزمية يصبح من الصعب تتبع خطواتها ومراجعتها ،وأيضا من عيوب هذه الطريقة أنها ﻻ تمكن المبرمجين الذين يتحدثون بلغة مختلفة عن التي كتبت بها الخوارزمية من فهمها.وبتطبيق هذه الطريقة على المثال نحصل على الخوارزمية التالية: Start إبدأ Read: X, Y إقرأ المدخﻼت: X, Y sum = X + Y sum = X + Y average = sum / 2 average = sum / 2 Write: average إطبع المتغير: average End النهاية المخطط اﻹنسيابي -خريطة التدفق :Program Flowchart - وفي هذه الطريقة أيضا يقوم المبرمج بكتابة خطوات حل الخوارزمية ولكن بإستخدام مجموعة من اﻷشكال الهندسية اﻷساسية بحيث كل شكل يمثل خطوة من خطوات حل المشكلة ،ويوجد معيار سائد ومتبع ﻹستخدام هذه اﻷشكال. من مميزات استخدام هذه الطريقة أنها مباشرة وبسيطة ويسهل فيها تتبع خطوات الخوارزمية ،وأيضا يمكن فهم الخوارزمية المكتوبة بهذه الطريقة من أي مبرمج أي كانت اللغة التي يتحدث بها ،ومن أهم عيوب هذه الطريقة أنه يصعب تحويلها إلى أكواد إذا كنت تستخدم لغات برمجة مثل الـ ،Cويصعب كتابة الخوارزميات المعقدة بهذه الطريقة. ٨ ﻣﺪﺭﺱ ﺍﳌﺎﺩﺓ :ﻋﻼء ﻋﺒﺪ ﻋﻠﻲ ﻫﺎﺩﻱ ﻗﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﻴﺎ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﻻﺗﺼﺎﻻﺕ -ﺍﻟﺴﻨﺔ ﺍﻻﻭﱃ -ﻣﺎﺩﺓ ﺍﻟﱪﳎﺔ ﺑﻠﻐﺔ C++ المخطط اﻻنسيابي لخوارزمية المتوسط الحسابي لرقمين (٣مراجعة الخوارزمية Tracing the Algorithm - في هذه الخطوة نقوم باختبار الخوارزمية التي قمنا بكتابتها ،وذلك من خﻼل إدخال بيانات معروفة النتيجة مسبقا ،خطوة بخطوة لقياس مدى صحة وكفاءة الخوارزمية ،وبتطبيق ذلك على المثال سوف نستخدم الرقمين ٧و ٣حيث معروف أن المتوسط الحسابي الخاص بهم هو الرقم ،٥ويتم ذلك على خطوات منفصلة كالتالي (١إدخال البيانات بحيث يصبح المتغير Xيساوي الرقم ،٧والمتغير Yيساوي الرقم . ٣ (٢حساب حاصل جمع الرقمين Xو Yوتخزين نتيجة الجمع في المتغير ،sumلتصبح قيمته تساوي الرقم .١٠ (٣حساب قيمة المتوسط الحسابي وذلك بقسمة قيمة المتغير sumعلى العدد ٢وهو مجموع البيانات التي تم إدخالها ،ثم تخزين النتيجة في المتغير ،averageوالتي سوف تصبح ٥وهو حاصل قسمة الرقم ١٠على الرقم . ٢ (٤طباعة قيمة المتغير .average (٥إنهاء البرنامج. عند قراءة الخطوات السابقة قد تشعر ببعض الملل وذلك ﻷنك كإنسان بمجرد أن يطلب منك حساب المتوسط الحسابي للرقمين ٧و ٣قد تجيب مباشرة بأن النتيجة هي ،٥ولكن القاعدة اﻷساسية لتعلم الخوارزميات ) ،هي فكر مثل الكمبيوتر ( ،الكمبيوتر يجب إعطاؤه التعليمات واحدة تلو اﻷخرى بالترتيب وبالتفصيل حتى يتمكن من حساب أو حل أو تطبيق أي خوارزمية ،وذلك هو الهدف اﻷساسي من تعلم الخوارزميات للبرمجة. (٤تحويل الخوارزمية إلى برنامج للحاسوب Writing Code - لكي يتم عمل البرنامج يجب تحويل الخوارزمية الى برنامج بلغة ) ( C++وحسب ما سوف نتعلمه ﻻحقا . ٩ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ الجزء النظري ) المحاضرة رقم (٠٣ المخططات اﻻنسيابية Flowchart المخططات اﻻنسيابية ) (Flowchartوجدت كضرورة لتسهيل عمل المبرمج عندما تتعقد الخوارزمية أي تزداد خطواتها ومقارناتها ، يتم استخدام المخططات اﻻنسيابية لزيادة التوضيح بالنسبة للخوارزمية حيث تصف المخططات طريقة الحل بصورة اسهل وبتسلسل أوضح خاصة عندما تكون المشكلة معقدة نسبيا ،حيث ان كتابة الخوارزمية بجمل متعاقبة يكون صعب واحتمال الخطأ فيها كبير لذلك يستخدم المخطط اﻻنسيابي . المخطط اﻻنسيابي ):(Flowchart هو وصف تصويري )او تمثيل صوري( للخوارزمية يوضح حل المشكلة )السؤال( من البداية الى النهاية بشكل أكثر وضوحا وأسهل فهما مع إخفاء التفاصيل ﻹعطاء الصورة العامة للحل ،والمخطط اﻻنسيابي يتكون نتيجة استخدام مجموعة من اﻻشكال كل شكل يوضح عملية معينة وتربط هذه اﻻشكال بخطوط واسهم توضح اتجاه سير تنفيذ العمليات. ويطلق على المخططات اﻻنسيابية تسميات أخرى مثل )خرائط سير العمليات او خرائط التتابع(. فوائد استخدام المخططات اﻻنسيابية: تمكن المبرمج من اﻻلمام الكامل بالمسألة المراد حلها والسيطرة على كل اجزائها بحيث تساعده على اكتشاف اﻷخطاء المنطقية (١ ) (Logic errorوالتي تعتبر من اهم اﻷخطاء التي تجهد المبرمج ومن ثم تصحيحها. توضيح سير العمليات وتسلسل تنفيذها. (٢ تعتبر المخططات اﻻنسيابية وسيلة مناسبة ومساعدة في كتابة ومتابعة البرامج ذات التفرعات الكثيرة. (٣ تساعد المبرمج وبسهولة على تعديل برنامج ما ،فبمجرد النظر الى المخطط اﻻنسيابي نظرة سريعة يدرك ماهية المسألة وإمكانية (٤ التعديل. يعتبر اﻻحتفاظ برسوم المخططات اﻻنسيابية لحلول مسائل معينة امرا مهما اذ يعتبر مرجعا مهما يمكن استخدامه لحل مسائل أخرى (٥ مشابهة دون الحاجة الى الرجوع الى المبرمج اﻷول باعتبار ان الحلول اﻷولى قد صيغت في خطوات واضحة بسيطة ومفهومة. تعتبر المخططات اﻻنسيابية من الوسائل واﻷدوات الهامة لتوثيق البرنامج. (٦ ١٠ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ اﻻشكال المستخدمة في رسم المخططات اﻻنسيابية: ١١ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ أنواع المخططات اﻻنسيابية: (١المخططات اﻻنسيابية البسيطة )(Simple flow chart (٢المخططات اﻻنسيابية المتفرعة )(Branched flow chart (٣المخططات اﻻنسيابية ذات الحلقات )(Loop flow chart المخططات اﻻنسيابية البسيطة )(Simple flow chart يخلو هذا النوع من التفرعات والتكرار وانما يحتوي على مجموعة أوامر واحداث متسلسلة ،ويكون الشكل العام لهذا النوع كما في ادناه: مثال :اوجد مجموع عددين واطبع ناتج الجمع ممثل ذلك باستخدام الخوارزمية والمخطط اﻻنسيابي؟ المخططات اﻻنسيابية المتفرعة ):(Branched flow chart يتضمن هذا النوع اتخاذ القرارات او مفاضلة بين خيارين او أكثر وهناك اسلوبين في تنفيذ القرار: أ( قرار ذو تفرعين ب( قرار ذو ثﻼث تفرعات وتمثل التفرعات في اﻻشكال اﻻنسيابية كما في ادناه: ١٢ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ مثال :ارسم مخطط انسيابي لقراءة قيمتين معلومتين واختيار اكبرهما؟ المخططات اﻻنسيابية ذات الحلقات )(Loop flow chart نحتاج لهذا النوع من المخططات ﻻعادة تنفيذ عملية او مجموعة من العمليات في مسألة معينة )البرنامج( عددا محددا او غير محدد من المرات، ويكون الشكل العام لمثل هذه المخططات كما يلي: مثال :اكتب خوارزمية وارسم مخطط انسيابي ﻹيجاد حاصل مجموع اﻻعداد الزوجية لغاية ) (nمن اﻻعداد؟ واجب ) : ( ١اكتب خوارزمية وارسم المخطط اﻻنسيابي لترتيب قيمتين ترتيبا تصاعديا ؟ ١٣ مدرس اﳌادة :عﻼء عبد علي هادي قسم تكنولوجيا اﳌعلومات واﻻتصاﻻت -السنة اﻻوﱃ -مادة الﱪﳎة بلغة C++ الجزء النظري )المحاضرة رقم (٠٤ ماذا يجري فعليا في الحاسوب )كيف يقوم الحاسوب بتمثيل وتنفيذ الجملة البرمجية داخل الحاسوب( يتكون البرنامج في لغة البرمجة C++من المكونات التالية: (١الملفات الرأسية (٢المتغيرات واﻻعﻼنات (٣جسم البرنامج لغة سي ++هي من اللغات عالية المستوى وتستخدم كلمات انجليزية تقريبا ً بمعناها اﻷصلي ولهذا تتطلب برنامجا ً يسمى مترجم " "Compilerليقوم بتحويل اﻷوامر في C++إلى لغة اﻵلة فالكمبيوتر ﻻيفهم اللغات عالية المستوى بشكل مباشر ,وهناك أداة اخرى نحتاج إليها وهي المربط أو Linkerوهو أداة تقوم بتجميع ملفات obj.الناتج من عملية الترجمة إلى ملف تنفيذي ويكون عادة باﻻمتداد .exeأو مكتبات الربط الديناميكية , dll.وأداة أخرى وهي محرر النصوص والذي سنكتب فيه السطور البرمجية مثل برنامج المفكرة الموجود على نظام الويندوز ،في الماضي كانت هذه البرامج متوفرة كل واحد على حدة ويتم ربط البرنامج وترجمته عن طريق أسطر أوامر ، consoleأما اليوم فهي موجودة في برنامج واحد يحتوي على محرر النصوص والمترجم والمربط في آن واحد ولهذا يسمونه بيئة التطوير المتكاملة أو ) Integrated Development Environmentاختصارا ً , (IDEومن أشهرها بيئة الفيجوال ستوديو Microsoft Visual Studioالمقدمة من شركة ميكروسوفت ,كذلك يمكنك استخدام برنامج . Code block ادناه مثال لبرنامج مكتوب بلغة البرمجة ) : ( C++ >#include number; / */هل numberيساوي if (number == 5) /* 5 { ;"cout