المحاضرة الثانية
الفصل الثالث سودوكود (Pseudocode)
مقدمة : Pseudocode : هو طريقة لعرض خطوات حل مسألة معينة باستخدام أوامر مختصرة. Pseudocode : هو طريقة لعرض خطوات حل مسألة معينة باستخدام أوامر مختصرة. والـ Pseudocode يعني الكود الزائف او الكود غير الحقيقي (false code) ، وذلك لأنه برنامج غير مكتوب بإحدى لغات البرمجة. والـ Pseudocode يعني الكود الزائف او الكود غير الحقيقي (false code) ، وذلك لأنه برنامج غير مكتوب بإحدى لغات البرمجة.
مكونات الـ Pseudocode ((Components كلمات Words كلمات Words مقاطع Clauses مقاطع Clauses جمل Statements جمل Statements
مثال على الـ Pseudocode : سلعة معروضة للبيع بسعر 120 جنيه إذا كانت الكمية أكثرمن 19 وبسعر 150 جنيه إذا كانت الكمية أقل. فما إجمالي سعر بيع الكمية من السلعة؟ الحل : المتغيرات في المسألة : (Qty) وتعني الكمية المباعة (T) وتعني إجمالي سعر الكمية المباعة من السلعة
خريطة التدفق للمسألة : Start Read Qty Is Qty > 19? Yes No T = Qty * 120 T = Qty * 150 Print T End
الـ Pseudocode المناظر لخريطة التدفق السابقة 1- If quantity sold is greater than 19 Then Calculate Total = Quantity * 120 Else Else Calculate Total = Quantity * Print Total
قواعد وقيود السودكود Pseudocode rules & constraints 1. اختيار اسماء متغيرات ذات معنى بحيث يعكس اسم المتغير محتوياته. The names of variables being used should describe what the variable represents 2. كتابة الأوامر بطريقة سهلة وواضحة. All statements should be written in a easy to understand. way that is
بنية تركيب الـ Pseudocode Pseudocode logic structure أوامر متتالية Sequence أوامر متتالية Sequence الاختيار والتشعب Selection الاختيار والتشعب Selection التكرار Iterations التكرار Iterations
أوامر متتالية Sequence : أوامر متتالية Sequence : تنفذ الأوامر واحداً تلو الآخر بنفس ترتيب كتابتها ما لم يخل الترتيب. الاختيار والتشعب Selection : الاختيار والتشعب Selection : يمكن كتابة أمر الاختيار باستعمال جملة If statement ، حيث إنها تقدم بديلين لتنفيذ أحدهما حيث يتم اختبار صحة حالة معينة، فإذا كانت صحيحة يتم تنفيذ البديل الأول أما إذا كانت غير صحيحة فيتم تنفيذ البديل الثاني. وتسمى الحالة الأول الصحيحة (True) وغير الصحيحة (False) وعلى يتم تنفيذ الأختيار بالأمر If – Then – Else If condition being test is True Then (condition is true) يتم تنفيذ الأوامر في حالة صحة الحالة Else (condition is false) يتم تنفيذ الأوامر في حالة عدم صحة الحالة
يتم صياغة الاختبار على حالة معينة بحيث لا يخرج نتيجة الاختبار عن False أو True ولكي يحدث هذا يعد الاختبار مقارنة بين قيمتين وذلك باستخدام أدوات المقارنة وهي : أكبر من (>) ، أصغر من ( =) أكبر من (>) ، أصغر من ( =) ، أصغر منها أو تساويها (<=) ، تساويها (=) مثال على If statement: M = 25 N = 12 If ( M >= N ) Then Statement 1 Else Statement 2 End If Statement 3 في المثال السابق سوف ينتج عنه تنفيذ الجملة statement1 وتتبعها الجملة satement3 وذلك للتالي الأوامر
التكرار Iterations : التكرار Iterations : يستخدم التكرار في البرامج إذا أردنا أن يتم تكرار تنفيذ أمر معين ( أو مجموعة من الأوامر ) عدد محدد من المرات أو إلى تحقيق شرط معين. ويوضح الشكل التالي جزء من خريطة تدفق حيث (Sum) هو مجموع أول 100 رقم طبيعي، (N) هو عدد الأرقام
الـ Pseudocode المناظر لخريطة التدفق السابقة 1- Initialize the sum: Sum = 0 2- Initialize the number of terms N: N = 0 3- Increment the number of terms N 4- Add the new term to Sum: Sum = Sum + N 5- If (N = 100 ) Then Go to step 6 Else Perform steps 3 through step 4 until N = 100 End If 6- Stop Processing
مزايا وعيوب السودو كود Advantages & disadvantages of Pseudocode مزاياه : سهل الفهم Simple سهل الفهم Simple لا يستعمل رموزاً خاصة No special symbols لا يستعمل رموزاً خاصة No special symbols لا يستعمل قواعد خاصة No specific syntax لا يستعمل قواعد خاصة No specific syntax من السهل تحويله إلى برنامج باستخدام إحدى لغات البرمجة من السهل تحويله إلى برنامج باستخدام إحدى لغات البرمجة Easy to translate to High-Level Language عيوبه : قد يكون طويلاً بعض الشئ في حالة المسائل المعقدة It can be quite lengthy for complex problems.
أمثلة على السودو كود المثال الأول اكتب سودوكود لإيجاد الرقم الأكبر من بين 3 أرقام هي A,B,C اكتب سودوكود لإيجاد الرقم الأكبر من بين 3 أرقام هي A,B,C Write a pseudocode to find the largest of three numbers A, B, and C.
المثال الثاني اكتب سودوكود لقراءة عمري هاني وهشام، ثم كتابة اسم أكبرهما. اكتب سودوكود لقراءة عمري هاني وهشام، ثم كتابة اسم أكبرهما. Write a pseudocode to read the ages of Hany and Hesham, then it prints the name of the elder.
1- Input Hany s age and Hesham s age 2- If Hany s age > Hesham s age Then Print Hany is elder Print Hany is elder Else If Hany s age = Hesham s age Then If Hany s age = Hesham s age Then Print Both is equal Print Both is equal Else Print Hesham is elder Print Hesham is elder End If 3- Stop processing
المثال الثالث اكتب سودوكود لقراءة درجة الحرارة بالفهرنهايتF° ثم تحويلها إلى درج مئوية C° باستخدام الصيغة الرياضية: اكتب سودوكود لقراءة درجة الحرارة بالفهرنهايتF° ثم تحويلها إلى درج مئوية C° باستخدام الصيغة الرياضية: Write a pseudocode that reads a temperature in Fahrenheit °F degrees and convert it into Celsius °C degrees, using the formula
1- Initialize Celsius Degree C : C = 0 2- Input (Read) Fahrenheit Degree F 2- Input (Read) Fahrenheit Degree F 3- C = 5/9 * (F – 32) 4- Print the value of C 5- Stop processing
المثال الرابع اكتب سودوكود لقراءة نصف قطر كرة r ثم حساب حجمها V ومساحة سطحها A باستخادم الصيغ الرياضية: اكتب سودوكود لقراءة نصف قطر كرة r ثم حساب حجمها V ومساحة سطحها A باستخادم الصيغ الرياضية: حيث إن : وفي حالة ما إذا كانت قيمة نصف القطر سالبة، يجب أن يقوم البرنامج بطباعة رسالة تحذيرية تنص على أن قيمة نصف القطر يجب أن تكون موجبة، ثم إنهاء البرنامج
1- Initialize Volume V : V = 0 2- Initialize Area A : A = 0 2- Input (Read) Radius r 2- Input (Read) Radius r 3- If r < 0 Then Print Print the radius should be positive Else V = (4 / 3) * (22 / 7) * (r ^ 3) A = 4 * (22 / 7) * (r ^ 2) Print The Volume of Ball is V Print The Volume of Ball is V Print The Area of Ball is A Print The Area of Ball is A End If 5- Stop Processing
الفصل الرابع مقدمة عن البرمجة الشيئية Introduction to Object Oriented Programming (OOP)
مقدمة لغات البرمجة متعددة ومتطورة، وكانت في بدايتها مثل (C, BASIC, FORTRAN,COBOL) تستخدم أسلوب تقليدي في البرمجة وهذا الأسلوب يعتمد على التحديد الدقيق لترتيب تنفيذ الأوامر وإجراء العمليات. في البرمجة الشيئية (OOP) تنفيذ الأوامر لا يتبع التسلسل المنطقي، وذلك لأن كل فعل من المشغل (User) يتسبب في حدوث حدث معين (Event) وهذا بدوره يدفع برنامج معين أو جزء آخر من البرنامج إلى العمل علماً بأن هذا الجزء مكتوب مسبقاً ومرتبط بهذا الحدث
البرمجة بالكائنات (The Object Model) الكائن (Object) الكائن (Object) الخصائص (Properties) الخصائص (Properties) الوسائل (Methods) الوسائل (Methods) الأحداث (Events) الأحداث (Events)
الكائن (Object) هو شئ له وجود، والكائن الواحد يمكن أن يتكون من عدد من الكائنات (Objects) هو شئ له وجود، والكائن الواحد يمكن أن يتكون من عدد من الكائنات (Objects) كل كائن له خصائص (Properties) ووسائل (Methods) وأحداث (Events) وكل كائن (Object) يتبع فئة معينة (Class) كل كائن له خصائص (Properties) ووسائل (Methods) وأحداث (Events) وكل كائن (Object) يتبع فئة معينة (Class) أمثلة على بعض الكائنات : أمثلة على بعض الكائنات : جهاز الكمبيوتر جهاز الكمبيوتر السيارة السيارة قلم الحبر قلم الحبر فالسيارة مثلاً كائن (Object) يتكون من كائنات (Objects) مثل الموتور وكذلك الموتور يتكون من كائنات أخرى. وفي البرمجة الشيئية يمكن اعتبار النوافذ (Windows) أمثلة للكائنات.
الخاصية (Property): تحدد شكل وسمة الكائن وكل كائن له مجموعة من الخصائص. الخاصية (Property): تحدد شكل وسمة الكائن وكل كائن له مجموعة من الخصائص. لكل كائن خصائص معينة تميزه وتحدد ملامحه مثل اسمه، وحجمه، ولونه ومكانه. لكل كائن خصائص معينة تميزه وتحدد ملامحه مثل اسمه، وحجمه، ولونه ومكانه. مثال : السيارة لها خصائص متعددة مثل : النوع، الماركة، اللون، عدد الأبواب إلخ. مثال : السيارة لها خصائص متعددة مثل : النوع، الماركة، اللون، عدد الأبواب إلخ. الخصائص (Properties)
الكائن (Object) الخاصية (Property) قيمة الخاصية (Value) السيارةNameBMW1 ColorRed Doors4 في بعض الأحيان قد يحتاج الشخص إلى معرفة إحدى خصائص الكائن ( قيمة الخاصية ) أو تغيير قيمة الخاصية فمثلاً لتغيير خاصية لون السيارة التي بأعلى إلى اللون الأزرق فنقولها هكذا : السيارة BMW1 نريد تغيير لونها (Color) إلى الأزرق (Blue) ويتم ذلك برمجيا بالصورة التالية : ObjectName.Property = Value
BMW1.Color = Blue ومعنى السطر السابق هو أن الكائن الذي اسمه (BMW1) نريد تغيير خاصية الـ (Color) له ونجعل قيمتها (Blue).
الوسائل (Methods): هي الوظائف والأفعال التي تكون مصاحبة للكائن (Object). الوسائل (Methods): هي الوظائف والأفعال التي تكون مصاحبة للكائن (Object). الوسائل (Methods): هي وصف لسلوك معين مصاحب للكائن، أي هي أفعال محددة مسبقاً لكل كائن. الوسائل (Methods): هي وصف لسلوك معين مصاحب للكائن، أي هي أفعال محددة مسبقاً لكل كائن. مثال : سيارة (Object) BMW1 (ObjectName) لونها أحمر (Property) وتسير في الشارع (Method). مثال : سيارة (Object) BMW1 (ObjectName) لونها أحمر (Property) وتسير في الشارع (Method). ويتم تنفيذ الوسيلة عن طريق مناداة الوسيلة، ويتم ذلك برمجياً كالتالي : ويتم تنفيذ الوسيلة عن طريق مناداة الوسيلة، ويتم ذلك برمجياً كالتالي :ObjectName.Method()BMW1.Move() الوسائل (Methods)
الحدث (Event): هو عبارة عن الفعل الذي يقع على الكائن ويستجيب له. الحدث (Event): هو عبارة عن الفعل الذي يقع على الكائن ويستجيب له. كل كائن (Object) له أحداث معينة (Events) تقع عليه ويستجيب لها، حيث يمكن للمبرمج وضع مجموعة معينة من الأوامر التي يتم تنفيذها عند وقوع حدث معين. كل كائن (Object) له أحداث معينة (Events) تقع عليه ويستجيب لها، حيث يمكن للمبرمج وضع مجموعة معينة من الأوامر التي يتم تنفيذها عند وقوع حدث معين. مثال : إنسان يمشي في الشارع اسمه أحمد وأمطرت السماء عليه بغزارة فأسرع لتفادي الأمطار وارتدى ملابس ثقيلة. مثال : إنسان يمشي في الشارع اسمه أحمد وأمطرت السماء عليه بغزارة فأسرع لتفادي الأمطار وارتدى ملابس ثقيلة. الكائن (Object): إنسانالخاصية (Property): الاسم قيمة الخاصية (Value): أحمدالحدث (Event): سقوط الأمطار الوسائل (Methods): يمشي، يسرع، يرتدي فسقوط الأمطار يمثل حدث (Event) واستجابة هذا الكائن ( الإنسان ) للحدث بشكل معين مثل الإسراع لتفادي الأمطار وارتداء ملابس ثقيلة هي عبارة عن وسائل (Methods). الأحداث (Events)
مثال : عند فتح ملف نصي والتعديل فيه وعند الضغط على علامة الإغلاق (×) فإن صندوق الحوار يظهر للتأكد منك على حفظ الملف أو عدم الحفظ أو إلغاء الأمر مثال : عند فتح ملف نصي والتعديل فيه وعند الضغط على علامة الإغلاق (×) فإن صندوق الحوار يظهر للتأكد منك على حفظ الملف أو عدم الحفظ أو إلغاء الأمر ماذا حدث؟ ! عند ضغطك على الإغلاق فإنك بذلك قمت بتشغيل حدث إغلاق الملف فوجد تغيير في الملف ولم يحفظ بعد واستجابة لهذا الحدث تم تنفيذ وسيلة عرض صندوق الحوار التالي : ماذا حدث؟ ! عند ضغطك على الإغلاق فإنك بذلك قمت بتشغيل حدث إغلاق الملف فوجد تغيير في الملف ولم يحفظ بعد واستجابة لهذا الحدث تم تنفيذ وسيلة عرض صندوق الحوار التالي : وفي لغة الـ Visual Basic تظهر الأحداث بوضوح، فمثلاً النموذج (Form) لها أحداث كثيرة تقع عليها من غلق النموذج ، حركة الماوس على النموذج إلخ وفي لغة الـ Visual Basic تظهر الأحداث بوضوح، فمثلاً النموذج (Form) لها أحداث كثيرة تقع عليها من غلق النموذج ، حركة الماوس على النموذج إلخ
مقارنة بين النموذج (Form1) وجهاز الكاسيت (Cassette) : وجه المقارنة خصائص Properties حجم Size لون Color مستوى الصوت Volume تضخيم الصوت Base وسائل Methods فتح Open() إغلاق Close() تشغيل Play() إيقاف Stop() أحداث Events الضغط بالفأرة Click صوت الموسيقي Play Music
الفئة (Class): هي عبارة عن قالب أو مخطط يتم منه إنشاء كائن معين، وهو يمثل جميع الخصائص والوظائف التي سوف يحتويها الكائن بعد ذلك. الفئة (Class): هي عبارة عن قالب أو مخطط يتم منه إنشاء كائن معين، وهو يمثل جميع الخصائص والوظائف التي سوف يحتويها الكائن بعد ذلك. أما الكائن (Object) فهو يمثل وحدة مستقلة تم إنشاؤها من الفئة (Class) وهي التي تستخدم فعلاً لأداء الوظائف المختلفة للفئة (Class). أما الكائن (Object) فهو يمثل وحدة مستقلة تم إنشاؤها من الفئة (Class) وهي التي تستخدم فعلاً لأداء الوظائف المختلفة للفئة (Class). الفئة أو التصنيف (Class)
مثال إذا أردت أن تبني منزلاً فإنك تطلب أولاً من المهندس عمل رسم هندسي ( قالب أو نموذج ) للمنزل الذي تريده وعندما تريد أن تسكن فإنك تسكن المنزل الحقيقي المبني وليس المنزل الذي على الرسم. إذا أردت أن تبني منزلاً فإنك تطلب أولاً من المهندس عمل رسم هندسي ( قالب أو نموذج ) للمنزل الذي تريده وعندما تريد أن تسكن فإنك تسكن المنزل الحقيقي المبني وليس المنزل الذي على الرسم. فالرسم الهندسي للمنزل يعتبر فئة أو تصنيف Class والمنزل الحقيقي المبني بالفعل يعتبر كائن من هذا التصنيف Object وأنك إذا أردت بناء منزل آخر مثل منزلك فإنك تستعين بالـرسم الهندسي (Class) مرة أخرى لتنفيذ المنزل (Object) فالرسم الهندسي للمنزل يعتبر فئة أو تصنيف Class والمنزل الحقيقي المبني بالفعل يعتبر كائن من هذا التصنيف Object وأنك إذا أردت بناء منزل آخر مثل منزلك فإنك تستعين بالـرسم الهندسي (Class) مرة أخرى لتنفيذ المنزل (Object)
الرسم الهندسي للمنزل المنزل بالفعل بعد بناءه
يحتوي التصنيف (Class) على خصائص (Properties) ووظائف (Methods) وأحداث (Events) وهي التي سوف يتضمنها بعد ذلك أي كائن سوف يتم إنشاءه من هذا التصنيف. يحتوي التصنيف (Class) على خصائص (Properties) ووظائف (Methods) وأحداث (Events) وهي التي سوف يتضمنها بعد ذلك أي كائن سوف يتم إنشاءه من هذا التصنيف. فعند استخدام قالب الرسم الهندسي لبناء منزل ممكن أن نبني منزلاً لونه أبيض وآخر لونه أصفر وآخر لونه بني وهذا ما نسميه في البرمجة خصائص الكائن (Object Properties). فعند استخدام قالب الرسم الهندسي لبناء منزل ممكن أن نبني منزلاً لونه أبيض وآخر لونه أصفر وآخر لونه بني وهذا ما نسميه في البرمجة خصائص الكائن (Object Properties). House1.Color = Yellow
مثال صمم أحمد على ورقة شكلاً لمكتبة ثم أرسلها إلى ورشة نجارة وقامت الورشة بتصنيعها من الخشب والزجاج وبعض الأدوات الأخرى. صمم أحمد على ورقة شكلاً لمكتبة ثم أرسلها إلى ورشة نجارة وقامت الورشة بتصنيعها من الخشب والزجاج وبعض الأدوات الأخرى. أكمل مستخدماً الكلمات الآتية لجعل الجملة صحيحة : أكمل مستخدماً الكلمات الآتية لجعل الجملة صحيحة : Class – Event – Property - Object ما قام أحمد بتصميمه يعتبر ما قام أحمد بتصميمه يعتبر أما المكتبة التي قامت الورشة بإنتاجها تعتبر أما المكتبة التي قامت الورشة بإنتاجها تعتبر طول المكتبة 2 متر يعتبر طول المكتبة 2 متر يعتبر Class Object Property
بعض المصطلحات الهامة في البرمجة الشيئية مفهوم التغليف (Encapsulation) مفهوم التغليف (Encapsulation) مفهوم التوريث (Inheritance) مفهوم التوريث (Inheritance)
مفهوم التغليف (Encapsulation) التغليف : يعني إخفاء بيانات داخل الكائن أو التصنيف بحيث لا يتم الوصول إليها إلا بصلاحيات معينة. التغليف : يعني إخفاء بيانات داخل الكائن أو التصنيف بحيث لا يتم الوصول إليها إلا بصلاحيات معينة. أمثلة : أمثلة : – جهاز الهائتف المحمول الذي نستخدمه لا نعرف تفاصيل عمله، ومع ذلك فنحن نستخدمه ونتعامل معه في حدود المسموح لنا، وهو بذلك يمثل مفهوم التغليف من حيث عدم ظهور المعلومات الداخلية للهاتف.... وهكذا.
وكذلك في جهاز الكمبيوتر عند إخفاء الملفات الهامة لعدم العبث بها أو حذفها عن طريق الخطأ. وكذلك في جهاز الكمبيوتر عند إخفاء الملفات الهامة لعدم العبث بها أو حذفها عن طريق الخطأ. أما في البرمجة الشيئية يمكنك إنشاء زر Button وبالتالي يمكنك تعديل بعض خواصه مثل لونه واسمه ونصه.. ، ولكن لا يمكن إضافة خواص جديدة له. أما في البرمجة الشيئية يمكنك إنشاء زر Button وبالتالي يمكنك تعديل بعض خواصه مثل لونه واسمه ونصه.. ، ولكن لا يمكن إضافة خواص جديدة له.
مفهوم التوريث (Inheritance) التوريث : يقصد به أن تصنيف (Class) معين (Derived) يرث (Inherit) خصائص ووظائف تصنيف آخر (Base) وهذا التصنيف الجديد يكون لديه جميع خصائص التصنيف الأساسي بالإضافة إلى خصائص الإضافية. التوريث : يقصد به أن تصنيف (Class) معين (Derived) يرث (Inherit) خصائص ووظائف تصنيف آخر (Base) وهذا التصنيف الجديد يكون لديه جميع خصائص التصنيف الأساسي بالإضافة إلى خصائص الإضافية. أمثلة : أمثلة : – هب أنك مهندس معماري وطلب أحد الأشخاص منك رسم هندسي لفيلا وقد أعجب التصميم صاحب هذا الشخص وطلب منك تصميم فيلا مثلها مع إضافة حمام سباحة في سطح الفيلا، ماذا كنت ستفعل؟
الذي سوف تفعله هو أنك تأخذ نسخة من نفس الرسم الهندسي للفيلا ثم تضيف إلى الرسم حمام السباحة في السطح كمثال. الذي سوف تفعله هو أنك تأخذ نسخة من نفس الرسم الهندسي للفيلا ثم تضيف إلى الرسم حمام السباحة في السطح كمثال. فيكون الرسم الهندسي الأول للفيلا يمثل (Base Class) أو (Parent Class) والرسم الهندسي الثاني يمثل (Derived Class) أو (Child Class) فيكون الرسم الهندسي الأول للفيلا يمثل (Base Class) أو (Parent Class) والرسم الهندسي الثاني يمثل (Derived Class) أو (Child Class)
الغرض من التغليف Encapsulation: الغرض من التغليف Encapsulation: الحفاظ على بيانات التصنيف وحمايتها و التركيز فقط على ما يراد استخدامه فعلاً. الغرض من التوريث Inheritance: الغرض من التوريث Inheritance: هو إعادة استعمال ما تم تصميمه من فئات (Classes) والتعديل فيها حسب الحاجة بدلاً من إعادة كتابة الفئة من جديد، وهذا من أهم مميزات البرمجة الشيئية.