You are on page 1of 47

‫المحاضرة الثانية‬

‫الفصل الثالث‬
‫سودوكود (‪)Pseudocode‬‬
‫مقدمة‪:‬‬
‫• ‪ : Pseudocode‬هو طريقة لعرض خطوات‬
‫حل مسألة معينة باستخدام أوامر مختصرة‪.‬‬

‫• والـ ‪ Pseudocode‬يعني الكود الزائف او‬


‫الكود غير الحقيقي (‪ ،)false code‬وذلك ألنه‬
‫برنامج غير مكتوب بإحدى لغات البرمجة‪.‬‬
Pseudocode ‫مكونات الـ‬
(Components(
Words ‫• كلمات‬
Clauses ‫• مقاطع‬
Statements ‫• جمل‬
‫مثال على الـ ‪: Pseudocode‬‬
‫سلعة معروضة للبيع بسعر ‪ 120‬جنيه إذا كانت الكمية أكثرمن‬
‫‪ 19‬وبسعر ‪ 150‬جنيه إذا كانت الكمية أقل ‪ .‬فما إجمالي سعر‬
‫بيع الكمية من السلعة؟‬

‫الحل‪:‬‬
‫المتغيرات في المسألة‪:‬‬
‫(‪ )Qty‬وتعني الكمية المباعة‬
‫(‪ )T‬وتعني إجمالي سعر الكمية المباعة من السلعة‬
:‫خريطة التدفق للمسألة‬
Start

Read Qty

Yes
Is Qty > 19? T = Qty * 120

No

T = Qty * 150 Print T End


‫ المناظر لخريطة التدفق‬Pseudocode ‫الـ‬
‫السابقة‬

1- If quantity sold is greater than 19 Then


Calculate Total = Quantity * 120
Else
Calculate Total = Quantity * 150
2- 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 ‫• أوامر متتالية‬


Selection ‫• االختيار والتشعب‬
Iterations ‫• التكرار‬
‫• أوامر متتالية ‪: Sequence‬‬
‫تنفذ األوامر واحدا ً تلو اآلخر بنفس ترتيب كتابتها ما لم يخل الترتيب‪.‬‬
‫• االختيار والتشعب ‪: 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‬‬
‫يستخدم التكرار في البرامج إذا أردنا أن يتم تكرار تنفيذ أمر‬
‫معين (أو مجموعة من األوامر) عدد محدد من المرات أو‬
‫إلى تحقيق شرط معين‪.‬‬
‫ويوضح الشكل التالي جزء من خريطة تدفق حيث (‪ )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‬‬ ‫•‬
‫ال يستعمل رموزا ً خاصة ‪No special symbols‬‬ ‫•‬
‫ال يستعمل قواعد خاصة ‪No specific syntax‬‬ ‫•‬
‫من السهل تحويله إلى برنامج باستخدام إحدى لغات البرمجة‬ ‫•‬
‫‪Easy to translate to High-Level Language‬‬
‫عيوبه‪:‬‬
‫قد يكون طويالً بعض الشئ في حالة المسائل المعقدة‬
‫‪It can be quite lengthy for complex problems.‬‬
‫أمثلة على السودو كود‬

‫المثال األول‬
‫اكتب سودوكود إليجاد الرقم األكبر من بين ‪ 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”
Else
If Hany’s age = Hesham’s age Then
Print “Both is equal”
Else
Print “Hesham is elder”
End If
End If
3- Stop processing
‫المثال الثالث‬
‫اكتب سودوكود لقراءة درجة الحرارة بالفهرنهايت‬
‫“ باستخدام‬C°” ‫“ ثم تحويلها إلى درج مئوية‬F°”
:‫الصيغة الرياضية‬

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”
3- C = 5/9 * (F – 32)
4- Print the value of C
5- Stop processing
‫المثال الرابع‬
‫اكتب سودوكود لقراءة نصف قطر كرة ”‪ “r‬ثم حساب‬
‫حجمها ”‪ “V‬ومساحة سطحها ”‪ “A‬باستخادم الصيغ‬
‫الرياضية‪:‬‬

‫حيث إن‪:‬‬
‫وفي حالة ما إذا كانت قيمة نصف القطر سالبة‪ ،‬يجب أن‬
‫يقوم البرنامج بطباعة رسالة تحذيرية تنص على أن قيمة‬
‫نصف القطر يجب أن تكون موجبة‪ ،‬ثم إنهاء البرنامج‬
1- Initialize Volume “V”:
V=0
2- Initialize Area “A”:
A=0
2- Input (Read) Radius “r”
3- If r < 0 Then
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 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( ‫• الكائن‬
)Properties( ‫• الخصائص‬
)Methods( ‫• الوسائل‬
)Events( ‫• األحداث‬
‫الكائن (‪)Object‬‬
‫هو شئ له وجود‪ ،‬والكائن الواحد يمكن أن يتكون من عدد من الكائنات‬ ‫•‬
‫(‪)Objects‬‬
‫كل كائن له خصائص (‪ )Properties‬ووسائل (‪ )Methods‬وأحداث‬ ‫•‬
‫(‪ )Events‬وكل كائن (‪ )Object‬يتبع فئة معينة (‪)Class‬‬
‫أمثلة على بعض الكائنات‪:‬‬ ‫•‬
‫‪ ‬جهاز الكمبيوتر‬
‫‪ ‬السيارة‬
‫‪ ‬قلم الحبر‬

‫فالسيارة مثالً كائن (‪ )Object‬يتكون من كائنات (‪ )Objects‬مثل‬


‫الموتور وكذلك الموتور يتكون من كائنات أخرى‪.‬‬
‫وفي البرمجة الشيئية يمكن اعتبار النوافذ (‪ )Windows‬أمثلة‬
‫للكائنات‪.‬‬
‫الخصائص (‪)Properties‬‬
‫• الخاصية (‪ :)Property‬تحدد شكل وسمة الكائن‬
‫وكل كائن له مجموعة من الخصائص‪.‬‬
‫• لكل كائن خصائص معينة تميزه وتحدد مالمحه مثل‬
‫اسمه‪ ،‬وحجمه‪ ،‬ولونه ومكانه‪.‬‬
‫• مثال‪:‬السيارة لها خصائص متعددة مثل‪ :‬النوع‪،‬‬
‫الماركة‪ ،‬اللون‪ ،‬عدد األبواب‪......‬إلخ‪.‬‬
‫قيمة الخاصية‬ ‫الخاصية‬ ‫الكائن‬
‫(‪)Value‬‬ ‫(‪)Property‬‬ ‫(‪)Object‬‬
‫‪BMW1‬‬ ‫‪Name‬‬
‫السيارة‬
‫‪Red‬‬ ‫‪Color‬‬
‫‪4‬‬ ‫‪Doors‬‬

‫في بعض األحيان قد يحتاج الشخص إلى معرفة إحدى خصائص‬


‫الكائن (قيمة الخاصية) أو تغيير قيمة الخاصية فمثالً لتغيير خاصية‬
‫لون السيارة التي بأعلى إلى اللون األزرق فنقولها هكذا‪:‬‬
‫السيارة ‪ BMW1‬نريد تغيير لونها (‪ )Color‬إلى األزرق (‪)Blue‬‬
‫ويتم ذلك برمجيا بالصورة التالية‪:‬‬
‫‪ObjectName.Property = Value‬‬
‫‪BMW1.Color = Blue‬‬

‫ومعنى السطر السابق هو أن الكائن الذي اسمه‬


‫(‪ )BMW1‬نريد تغيير خاصية الـ (‪ )Color‬له ونجعل‬
‫قيمتها (‪.)Blue‬‬
‫الوسائل (‪)Methods‬‬
‫• الوسائل (‪ :)Methods‬هي الوظائف واألفعال التي تكون‬
‫مصاحبة للكائن (‪.)Object‬‬
‫• الوسائل (‪ :)Methods‬هي وصف لسلوك معين مصاحب‬
‫للكائن‪ ،‬أي هي أفعال محددة مسبقا ً لكل كائن‪.‬‬
‫• مثال‪ :‬سيارة (‪)ObjectName( BMW1 )Object‬‬
‫لونها أحمر (‪ )Property‬وتسير في الشارع (‪.)Method‬‬
‫• ويتم تنفيذ الوسيلة عن طريق مناداة الوسيلة‪ ،‬ويتم ذلك برمجيا ً‬
‫كالتالي‪:‬‬
‫)(‪ObjectName.Method‬‬
‫)(‪BMW1.Move‬‬
‫األحداث (‪)Events‬‬
‫• الحدث (‪ :)Event‬هو عبارة عن الفعل الذي يقع على الكائن ويستجيب‬
‫له‪.‬‬
‫• كل كائن (‪ )Object‬له أحداث معينة (‪ )Events‬تقع عليه ويستجيب‬
‫لها‪ ،‬حيث يمكن للمبرمج وضع مجموعة معينة من األوامر التي يتم‬
‫تنفيذها عند وقوع حدث معين‪.‬‬
‫• مثال‪ :‬إنسان يمشي في الشارع اسمه أحمد وأمطرت السماء عليه بغزارة‬
‫فأسرع لتفادي األمطار وارتدى مالبس ثقيلة‪.‬‬
‫الخاصية (‪ :)Property‬االسم‬ ‫الكائن (‪ :)Object‬إنسان‬
‫الحدث (‪ :)Event‬سقوط األمطار‬ ‫قيمة الخاصية (‪ :)Value‬أحمد‬
‫الوسائل (‪ :)Methods‬يمشي‪ ،‬يسرع‪ ،‬يرتدي‬
‫فسقوط األمطار يمثل حدث (‪ )Event‬واستجابة هذا الكائن (اإلنسان)‬
‫للحدث بشكل معين مثل اإلسراع لتفادي األمطار وارتداء مالبس ثقيلة‬
‫هي عبارة عن وسائل (‪.)Methods‬‬
‫مثال‪ :‬عند فتح ملف نصي والتعديل فيه وعند الضغط على عالمة‬ ‫•‬
‫اإلغالق (×) فإن صندوق الحوار يظهر للتأكد منك على حفظ الملف‬
‫أو عدم الحفظ أو إلغاء األمر‬
‫ماذا حدث؟! عند ضغطك على اإلغالق فإنك بذلك قمت بتشغيل حدث‬ ‫•‬
‫إغالق الملف فوجد تغيير في الملف ولم يحفظ بعد واستجابة لهذا‬
‫الحدث تم تنفيذ وسيلة عرض صندوق الحوار التالي‪:‬‬

‫وفي لغة الـ ‪ Visual Basic‬تظهر األحداث بوضوح‪ ،‬فمثالً النموذج‬ ‫•‬
‫(‪ )Form‬لها أحداث كثيرة تقع عليها من غلق النموذج ‪ ،‬حركة‬
‫الماوس على النموذج‪.......‬إلخ‬
‫مقارنة بين النموذج (‪ )Form1‬وجهاز الكاسيت‬
‫(‪: )Cassette‬‬

‫وجه المقارنة‬

‫مستوى الصوت ‪Volume‬‬ ‫حجم ‪Size‬‬ ‫خصائص‬


‫تضخيم الصوت ‪Base‬‬ ‫لون ‪Color‬‬ ‫‪Properties‬‬
‫تشغيل )(‪Play‬‬ ‫فتح )(‪Open‬‬ ‫وسائل ‪Methods‬‬
‫إيقاف )(‪Stop‬‬ ‫إغالق )(‪Close‬‬
‫صوت الموسيقي ‪Play Music‬‬ ‫الضغط بالفأرة ‪Click‬‬ ‫أحداث ‪Events‬‬
‫الفئة أو التصنيف (‪)Class‬‬
‫• الفئة (‪ :)Class‬هي عبارة عن قالب أو مخطط يتم‬
‫منه إنشاء كائن معين‪ ،‬وهو يمثل جميع الخصائص‬
‫والوظائف التي سوف يحتويها الكائن بعد ذلك‪.‬‬
‫• أما الكائن (‪ )Object‬فهو يمثل وحدة مستقلة تم‬
‫إنشاؤها من الفئة (‪ )Class‬وهي التي تستخدم فعالً‬
‫ألداء الوظائف المختلفة للفئة (‪.)Class‬‬
‫مثال‬
‫• إذا أردت أن تبني منزالً فإنك تطلب أوالً من المهندس عمل‬
‫رسم هندسي (قالب أو نموذج) للمنزل الذي تريده وعندما‬
‫تريد أن تسكن فإنك تسكن المنزل الحقيقي المبني وليس‬
‫المنزل الذي على الرسم‪.‬‬
‫• فالرسم الهندسي للمنزل يعتبر فئة أو تصنيف ‪Class‬‬
‫والمنزل الحقيقي المبني بالفعل يعتبر كائن من هذا التصنيف‬
‫‪ Object‬وأنك إذا أردت بناء منزل آخر مثل منزلك فإنك‬
‫تستعين بالـرسم الهندسي (‪ )Class‬مرة أخرى لتنفيذ‬
‫المنزل (‪)Object‬‬
‫المنزل بالفعل بعد بناءه‬

‫الرسم الهندسي للمنزل‬


‫• يحتوي التصنيف (‪ )Class‬على خصائص (‪)Properties‬‬
‫ووظائف (‪ )Methods‬وأحداث (‪ )Events‬وهي التي‬
‫سوف يتضمنها بعد ذلك أي كائن سوف يتم إنشاءه من هذا‬
‫التصنيف‪.‬‬
‫• فعند استخدام قالب الرسم الهندسي لبناء منزل ممكن أن نبني‬
‫منزالً لونه أبيض وآخر لونه أصفر وآخر لونه بني وهذا ما‬
‫نسميه في البرمجة خصائص الكائن ( ‪Object‬‬
‫‪.)Properties‬‬
‫‪House1.Color = Yellow‬‬
‫مثال‬
‫• صمم أحمد على ورقة شكالً لمكتبة ثم أرسلها إلى ورشة‬
‫نجارة وقامت الورشة بتصنيعها من الخشب والزجاج‬
‫وبعض األدوات األخرى‪.‬‬
‫• أكمل مستخدما ً الكلمات اآلتية لجعل الجملة صحيحة‪:‬‬
‫‪Class – Event – Property - Object‬‬
‫• ما قام أحمد بتصميمه يعتبر ‪Class‬‬
‫‪..............‬‬
‫‪Object‬‬
‫‪........‬‬‫• أما المكتبة التي قامت الورشة بإنتاجها تعتبر‪.....‬‬
‫• طول المكتبة ‪ 2‬متر يعتبر ‪...............‬‬
‫‪Property‬‬
‫بعض المصطلحات الهامة في البرمجة‬
‫الشيئية‬

‫•مفهوم التغليف (‪)Encapsulation‬‬


‫•مفهوم التوريث (‪)Inheritance‬‬
‫مفهوم التغليف (‪)Encapsulation‬‬
‫• التغليف‪ :‬يعني إخفاء بيانات داخل الكائن أو التصنيف‬
‫بحيث ال يتم الوصول إليها إال بصالحيات معينة‪.‬‬
‫• أمثلة‪:‬‬
‫– جهاز الهائتف المحمول الذي نستخدمه ال نعرف تفاصيل‬
‫عمله‪ ،‬ومع ذلك فنحن نستخدمه ونتعامل معه في حدود‬
‫المسموح لنا‪ ،‬وهو بذلك يمثل مفهوم التغليف من حيث‬
‫عدم ظهور المعلومات الداخلية للهاتف‪ ....‬وهكذا‪.‬‬
‫• وكذلك في جهاز الكمبيوتر عند إخفاء الملفات الهامة‬
‫لعدم العبث بها أو حذفها عن طريق الخطأ‪.‬‬
‫• أما في البرمجة الشيئية يمكنك إنشاء زر ‪Button‬‬
‫وبالتالي يمكنك تعديل بعض خواصه مثل لونه واسمه‬
‫ونصه‪ ،..‬ولكن ال يمكن إضافة خواص جديدة له‪.‬‬
‫مفهوم التوريث (‪)Inheritance‬‬
‫• التوريث‪ :‬يقصد به أن تصنيف (‪ )Class‬معين‬
‫(‪ )Derived‬يرث (‪ )Inherit‬خصائص ووظائف‬
‫تصنيف آخر (‪ )Base‬وهذا التصنيف الجديد يكون‬
‫لديه جميع خصائص التصنيف األساسي باإلضافة إلى‬
‫خصائص اإلضافية‪.‬‬
‫• أمثلة‪:‬‬
‫– هب أنك مهندس معماري وطلب أحد األشخاص منك رسم‬
‫هندسي لفيال وقد أعجب التصميم صاحب هذا الشخص وطلب‬
‫منك تصميم فيال مثلها مع إضافة حمام سباحة في سطح الفيال‪،‬‬
‫ماذا كنت ستفعل؟‬
‫• الذي سوف تفعله هو أنك تأخذ نسخة من نفس الرسم‬
‫الهندسي للفيال ثم تضيف إلى الرسم حمام السباحة في السطح‬
‫كمثال‪.‬‬
‫• فيكون الرسم الهندسي األول للفيال يمثل (‪ )Base Class‬أو‬
‫(‪ )Parent Class‬والرسم الهندسي الثاني يمثل‬
‫(‪ )Derived Class‬أو (‪)Child Class‬‬
‫• الغرض من التغليف ‪:Encapsulation‬‬
‫الحفاظ على بيانات التصنيف وحمايتها و التركيز فقط‬
‫على ما يراد استخدامه فعالً‪.‬‬
‫• الغرض من التوريث ‪:Inheritance‬‬
‫هو إعادة استعمال ما تم تصميمه من فئات (‪)Classes‬‬
‫والتعديل فيها حسب الحاجة بدالً من إعادة كتابة الفئة‬
‫من جديد‪ ،‬وهذا من أهم مميزات البرمجة الشيئية‪.‬‬

You might also like