Gs101 spring 2017 اساسيات برمجة محاضرة 1

Page 1

‫جامعة سبها‬ ‫كلية تقنية املعلومات‬ ‫قسم االتجاه العام‬

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‬مجهولة)‬


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.