جامعة سبها كلية تقنية املعلومات قسم االتجاه العام
Sebha University Faculty of Information Technology General Trend Department
GS101: اساسيات البرمجة Programming Fundamentals اعداد مبروكه علي معيوف.د
7102 خريف
نموذج توصيف املقرر عنوان املقرر
رمز املادة
اساسيات البرمجة
GS101
نوع
الفصل الوحدات
املقرر اجباري
1
Programming Fundamentals
تاريخ اعتماد املقرر
املحاضر
3
الساعات
مقررات
التدريسية
تمهيدية
نظري
عملي
2
1
-
املوسم الدراس ي كل الفصول
2017
الوصف العام للمقرر يرمي هذا املقرر الى فهم و استيعاب اساسيات البرمجة املتمثلة في التعريفات العامة ملصطلحات البرمجة ،و اساليب حل املسائل برمجيا عن طريق تصميم ً الخوارزميات و الشفرات الزائفة لتحويلها الحقا الحد لغات البرمجة مثل لغة .C++ اهداف املقرر
محاضرة 2 ،1
.1التعرف على املفاهيم االساسية للبرمجة مثل املصطلحات املتداولة و التعريفات العامة. .2تمكين الطالب من فهم و استيعاب اساليب حل املسائل و تصميم الخوارزميات لها. .3التعرف على انواع البيانات االساسية و أهم االوامر و االنشاءات البرمجية و امكانية تطبيقها بلغة .C++ عرض محتويات املقرر تمهيد البرمجة :مفهوم البرمجة ،معنى البرنامج املشكلة (املسألة) problem املشكلة البرمجية :معنى املشكلة او املسألة (البرمجية) اصول حل املشكلة (املسألة)
محاضرة 5 ،4 ،3
محاضرة 8 ،7 ،6
طرق حل املسائل البرمجية :الجزء االول الخوارزميات Algorithms التعبير عن الخوارزميات oاللغة الطبيعية natural language oاملخططات االنسيابية Flow Chart oالشفرة الزائفة pseudo code تصميم الخوارزمية oتصميم اعلى-اسفل Top-Down Design oالبيانات و عالقتها باملشكلة oانواع البيانات و كيفية التعامل معها. امثلة متنوعة. طرق حل املسائل البرمجية :الجزء الثاني البرمجة و ملحقاتها لغات البرمجة programming language لغة C++ تعريفها ،مزاياها ،عيوبها ،الفرق بينها و بين برمجة الكائنات بلغة .C++ ترجمة البرنامج االجرائي بلغة .C++ خطوات كتابة برنامج بلغة C++ تضمين ملف header دالة main التعليقات جمل اإلخراج جمل اإلدخال انواع البيانات في لغة C++ الثوابت و املتغيرات (اإلعالن عنها في البرنامج) البيانات االولية oانواعها ،حجمها ،كيفية تمثيلها في الذاكرة
oالتعامل مع البيانات األولية االدخال ،املعالجة (العمليات الحسابية ،العمليات املنطقية ،العمليات العالئقية) ،االخراج البيانات املرجعية oاملؤشرات (كيفية تمثيلها في الذاكرة) oالتعامل مع املؤشرات (االدخال ،املعالجة ،االخراج) أمثلة على ما سبق محاضرة 11 ،11 ،9جمل التحكم جملة if جملة if else جملة switch أمثلة على ما سبق جمل التكرار جملة for جملة while جملة do…while اإلستمرار في التكرار ()continue الخروج من التكرار ((break محاضرة 12
أمثلة على ما سبق املصفوفات في لغة C++ تعربف املصفوفات أنواع املصفوفات oاملصفوفات ذات البعد الواحد (اإلدخال ،املعالجة ،االإخراج) أمثلة على ما سبق
محاضرة 14 ،13
الدوال تعريف الدوال في لغة C++و الشكل العام لها اإلعالن عن الدوال انواع الدوال oالدوال من نوع void oالدوال التي ترجع قيمة return value معامالت الدوال parameters جسم الدالة function body استدعاء الدوال
العملي
امثلة على ما سبق يصاحب املواضيع املذكورة اعاله تطبيق عملي لكل ما تم ذكره ،بواقع ساعة اسبوعيا ليتمكن الطالب من إنهاء العمل املطلوب أثناء املحاضرة
التحصيل املتوقع
طرق التدريس
.1فهم اساسيات البرمجة .2امكانية حل املشاكل برمجيا بالطرق املختلفة. .3القدرة على التفكير املنطقي لحل أي مشكلة و ترجمته الى سلوك (الخوارزمية) .4تعزيز مفهوم البرمجة عن طريق التطبيق العملي باستخدام احد لغات البرمجة (لغة .)C++ املحاضرات التمارين التطبيقية التطبيقات العملية
جدول اعمال السنة واالمتحان النهائي النسبة %
التقييم
االسبوع املستحق
11
الحضور و الواجبات و املشاركة
طوال فترة الفصل
31
امتحان نصفى
وفقا لتوفر املكان
61
االمتحان نهائى
حسب جدول االمتحانات
املراجع االنجليزية [1] R. G. Dromey, 1982, How to Solve it by Computer. Prentice Hall International, INC., London. [2] Alex, F., Bielajew, 2016, Introduction to Computers and Programming using C++ & MATLAB.
.1تمهيد ً ً ً ً ً يتطلب حل املشاكل حاسوبيا تفكيرا عميقا و تخطيطا دقيقا و دقة منطقية و انتباه ملحتوى املشكلة الختالف البيئة املراد حل املشكلة عليها و هي جهاز الحاسب .Computer deviceو لحل املشكلة ً ُ حاسوبيا البد من اتباع طريقة معينة يتفهمها الحاسوب (البرمجة) تمرر اليه في شكل مجموعة من الخطوات (تعليمات )instructionsالواضحة و الخالية من الغموض باستخدام احد لغات البرمجة (برنامج .(program البرمجة :بصفة عامة ،هي عملية تنظيم او تخطيط او جدولة مجموعة من االحداث في شكل برنامج (مثل اعداد البرنامج اليومي او برامج املؤتمرات او برامج القنوات الفضائية). ً حاسوبيا :هي عملية إعداد برنامج مكون من مجموعة من التعليمات املكتوبة بأحد لغات البرمجة (اللغات الراقية مثل )Java ،VB ،C++التي يمكن للحاسب ترجمتها الى اللغة التي يفهمها (لغة االلة )machine languageلحل مشكلة ما. املشكلة (املسألة) problem بصفة عامة :ش يء ما يحتاج الى حل ،أو تساؤل ما يحتاج الى دراسة و تفسير، ً ً حاسوبيا :سؤال ما يمكن حله حاسوبيا عن طريق كتابة برنامج له. معنى البرنامج: ً ً بصفة عامة :هو مجموعة من التعليمات املرتبة ترتيبا منطقيا لتحقيق هدف ما. ً ً ُ البرنامج (الحاسوبي) :هو مجموعة من التعليمات ( )coded instructionsاملرتبة ترتيبا منطقيا تعطى للحاسب (أو اي جهاز آخر) لألداء التلقائي ملهمة ما. املبرمج :هو الشخص الذي ُيعد البرنامج (يكتب البرنامج بأي لغة برمجة) من اجل حل مشكلة ما ً حاسوبيا ،حيث يقوم املبرمج بكتابة البرنامج في محرر نصوص ( )editorثم ترجمته ( )compileو تنفيذه ( )runعلى اي بيئة برمجة (مثل Visual C++ :IDEsاو .)NetBeans ً املشكلة البرمجية :هي طلب حل السؤال برمجيا (مثل :اكتب برنامج)...................
اصول حل املشكلة (املسألة) ُيعد حل املسائل العلمية من االمور املعقدة التي ال تشجع اي كان على حلها .لذلك معظم الناس يكتسبون مهارات متواضعة لحل املسائل العلمية خالل فترة الدراسة (املرحلة االساسية و املتوسطة). ً ً اال ان طبيعة االنسان تلعب دورا كبيرا في قدرته على حل املسائل العلمية ،لكن هناك مجموعة من املراحل العامة املمكن اتباعها للوصول الى مستوى افضل و اكتساب خبرة اكثر .هذه املراحل هي: التحليل ،التصميم ،التنفيذ و االختبار. املرحلة االولى :التحليل النجاح في حل اي مشكلة ما يكمن في فهم هذه املشكلة ( ،) understand the problemو ال يمكن فهم املشكلة اال بعد تعريفها ،بمعنى آخر ،البد من تحديد ما الذي يجب فعله قبل تحديد الطريقة املستخدمة لفعل ذلك. التحليل :يعني فصل العناصر االساسية للمكون عن بعضها البعض و دراسة كل عنصر على حدة و تحديد مستوى كل عنصر و عالقته بالعناصر االخرى. اذن ،لتحليل املشكلة (السؤال البرمجي) ،يتم تحديد عناصر السؤال البرمجي بالشكل التالي: ) output( .0ما املطلوب من السؤال؟ )input( .7ما هي معطيات السؤال؟ )processing( .3ما هي العمليات املمكنة للحصول على output؟ مالحظة ( : )0اذا كانت املشكلة كبيرة ،يمكن تقسيمها الى مجموعة من املشاكل الفرعية ( sub )problemsو يتم التعامل معها ٌ كل على حدة (في الغالب عندما يحتوي السؤال البرمجي على اكثر من مطلوب .)outputs مالحظة ( :)7يمكن تطبيق مثال محدد لفهم املشكلة اكثر. مالحظة ( :)3يمكن ايجاد سؤال مشابه للسؤال املعطى لتقريب الحل.
املرحلة الثانية :التصميم ُيقصد بالتصميم وصف الحل املقترح للمشكلة ،بمعنى آخر ،صياغة الحل و التعبير عنه بطريقة واضحة و مفهومة على شكل مجموعة من الخطوات املتتالية (ترتيب تسلسلي )sequential orderو ً ً ً املرتبة ترتيبا منطقيا بحيث يسهل الحقا تحويلها الى برنامج حاسوبي. ُيسمى وصف الحل و التعبير عنه في صورة مستقلة عن اي لغة برمجةُ ،يسمى بالخوارزمية .Algorithm اذن ،تعريف الخوارزمية؟؟؟ هل الخوارزمية برنامج؟؟؟ ما الفرق بين البرنامج الحاسوبي و الخوارزمية؟ الخوارزميات Algorithms ً ُ تسمى الخطوات املرتبة منطقيا لحل مشكلة حاسوبية أو مسألة رياضية بالخوارزمية نسبة الى العالم املسلم محمد ابو موس ى الخوارزمي (بلدة خوارزم). يمكن التعبير عن الخوارزمية بعدة طرق: .0اللغة الطبيعية :natural languageحيث يتم وصف الحل باستخدام كلمات اللغة العادية ممزوجة بالعمليات املطلوبة لتحقيق الحل. .7االشكال و الرسوم :flowchartsحيث يتم وصف الحل باستخدام رسومات هندسية (اشكال هندسية) لها معنى محدد. .3الشفرة الزائفة :pseudo codeحيث يتم وصف الحل باستخدام كلمات اللغة العادية ممزوجة بتعليمات برمجية و عمليات حسابية و هي اقرب للبرنامج الحاسوبي منها الى اللغة الطبيعية.
تصميم الخوارزمية Algorithm Design ً الخوارزمية هي الهدف االساس ي في حل املسائل حاسوبيا و التي بدورها قابلة للتحويل الى برنامج حاسوب صحيح و فعال .اذن ،البد من تصميم الخوارزمية بطريقة صحيحة تضمن تحقيق املطلوب (.)outputs تأتي مرحلة التصميم للخوارزمية بعد تعريف و فهم املشكلة و تكوين فكرة واضحة عن الحل (التحليل) ،حيث يتم التفكير في تقنيات معينة لتصميم الخوارزميات و التي بدورها تعتمد على قدرة الفرد في التفكير املنطقي السليم لسرد الحل. o o o o o
خصائص الخوارزميات: يجب ان تحقق الخوارزمية الهدف (الحل املرجو )solutionاو تؤدي مهمة معينة .task لكل خوارزمية خطوات محددة تبدأ بخطوة بداية ( .1ابدأ) و تنتهي بخطوة نهاية ( .nتوقف). يمكن ان يكون للخوارزمية معطيات inputو مخرجات .output يمكن ان تحتوي الخوارزمية على معالجة .processing يمكن شرح كل خطوة بصيغة فعل االمر (كأننا نخاطب الحاسوب).
تصميم اعلى-اسفل Top-Down Design يمكن تجزئة الحل الى حلول جزئية اذا كان الحل كبير و مركب (مثل نوع العدد :فردي او زوجي و مجموع االعداد املقروءة) .بمعنى آخر ،تقسيم الخطوة املركبة التي تحتوي على اكثر من مهمة الى ُ خطوات فرعية او جزئية حتى تحوي الخطوة الواحدة على مهمة واحدة .هذه الطريقة تسمى تصميم اعلى-اسفل. البيانات و عالقتها باملشكلة ً من اهم القرارات التي يمكن اتخاذها لحل املشكلة حاسوبيا هي كيفية اختيار هيكلية البيانات ( data )structureاملناسبة للحل .كل برنامج يعمل operatesعلى بيانات ،on dataلذلك ،طريقة اختيار البيانات و تنظيمها يؤثر بشكل كبير و عميق في الحل النهائي للمشكلة.
انواع البيانات و كيفية التعامل معها يتعامل الحاسوب مع البيانات بطريقة مختلفة عن الواقع .و يتعرف عليها وفق تصريح مسبق لها، ً فالبيانات الصحيحة تختلف كليا عن البيانات الحقيقية و كذلك البيانات الحرفية و الرموز ،و الشكل التالي يوضح انواع البيانات في الحاسوب. االنواع :typesو تعني نوع البيانات املستخدمة في البرنامج ( )data typeسواءا كانت ُ ثابتة constantأو متغيرة .variableو توجد انواع عديدة تستخدم في معظم لغات البرمجة .و من اهم االنواع ما يلي: Types references data type pointer array struct class
Primitives data type real logical symbols float true char double false String
Integer short int long byte
ً أوال :الثوابت :Constantsهي اسماء تعطى ملواقع في الذاكرة ذات قيم ثابتة و ال يمكن أن تتغير خالل ُ فترة تنفيذ البرنامج .و تستخدم في حال التصريح بالقيم الثابتة املتعارف عليها مثل ،pi=3.14و قيم االوزان و تحويل العمالت. ً ثانيا :املتغيرات :variablesهي اسماء تعطى ملواقع في الذاكرة ذات قيمة غير معروفة ،و قابلة للتغيير خالل فترة تنفيذ البرنامج. *مالحظة :يجب تسمية البيانات املستخدمة في الحل (الخوارزمية) بأسماء مميزة و فريدة (غير مكررة).
**امثلة متنوعة: ً .0يشكو احد الطالب من قلة تنظيم الوقت خصوصا في فترة الدراسة .اكتب خوارزمية لتنظيم يومه الدراس ي. ُ .7سجلت درجات الحرارة ملدينة سبها لثالثة ايام على التوالي .اكتب خوارزمية لطباعة متوسط هذه الدرجات. .3بفرض قيمة x=10اكتب خوارزمية لحل املعادلة التالية: y = 2x + 5 (اعد كتابة الخوارزمية السابقة اذا كانت قيمة xمجهولة)