Programming Structure

34
27 / 4 / 2008

Transcript of Programming Structure

Page 1: Programming Structure

27 / 4 / 2008

Page 2: Programming Structure

2

) Structured Programming( البرمجة المھیكلة

:المقدمة

ان اختراع الحاسوب في نھایة االربعینات وتمیزه عن االنسان بالسرعة والدقة وقابلیة خزن ود الالحقة لھذا واسترجاع البیانات والمعلومات ساھم وبشكل اساسي في تطور الحیاة وعبر العق

االنجاز العظیم تطورت تقنیات المعدات والبرمجیات وادى الى ظھور مصطلح ما یسمى ولقد . Software والبرمجیات Hardware الذي یشمل المعدات ITبتكنولوجیا المعلومات

الذي ITالمختصون ھذا التطور حیث قاموا بتطویر نظم اعمال تعمل بمساعدة ال استغل وھذه النظم سمیت بنظم . رض تطویر المنتجات والخدمات التي یحتاجھا االنسان في حیاتھ لغ

. المعلومات والتي شملت جمیع مجاالت الحیاة ان االنسان في وقتنا الحاضر یتعامل ویستخدم ھذه النظم مثل نظام معلومات االنترنت والحكومة

والتعلیم واالعالم وعقد المؤتمرات االلكترونیة والھجرة والجوازات والضرائب والمرورواالعمال االلكترونیة مثل التسویق والمحاسبة واالدارة وكذلك لدعم القرارات الستراتیجیة او

او عن العامل كما ھو استخدام االنسان االلي في صناعة السیاراتالتخاذ قرار روتیني او البدیل .بة او التسویق البدیل عن الموظف كما ھو الحال في نشاطات المحاس

ان التطور المستمر في نظم االعمال نتیجة لتطویر واستخدام نظم المعلومات ساھم وبشكل كبیر حیث یستطیع االنسان التقدم الى وظیفة او حجز تذكرة في طائرة او ,في تغییر نمط حیاتنا

الل نظام التسوق او حتى انجاز بعض االعمال من بیتھ او من اي مكان آخر في العالم ومن خ .االنترنت

لقد اصبح بید المدراء اداة فعالة لمساعدتھم في تنفیذ الفعالیات االداریة مثل التخطیط والرقابة .والتطویر وادارة الموارد البشریة والمالیة

تكنولوجیا المعلومات وكذلك االدارة الفعالة لكن التطویر الیتم والینجح إال بفھم الدور الذي تلعبھ .وھذا امر مھم بالنسبة للمدراء ولآلخرین , تكنولوجیا لھذه ال

: ان نظم المعلومات تعتمد وتستخدم موارد اساسیة وھي موارد االفراد وتشمل المختصون وھم االفراد المسؤولین عن تشغیل وادارة نظام - 1

وكذلك . ة والمستفیدون من موظفین وزبائن في البیئة الداخلیة والخارجیة للمنظم, المعلومات المختصون في بناء وتطویر ھذه النظم مثل المحللین والمبرمجین ومھندسوا االجھزة

.والبرمجیات . موارد االجھزة وتشمل اجھزة الحواسیب والشبكات - 2 موارد البرمجیات وتشمل نظم التشغیل والبرمجیات االساسیة والمساعدة االخرى وكذلك - 3

.م البنوك البرمجیات التطبیقیة مثل نظ موارد البیانات وھي الموارد االساسیة التي تتطلب العنایة الفائقة في ادارتھا من ناحیة - 4

.تنظیم خزنھا ودقتھا وسھولة استرجاعھا

للبیانات مصادر متعددة وان المصدر االساسي لھا ھو االنسان الذي یقوم بتجمیع ھذه البیانات من ربھ في المجاالت العلمیة واالقتصادیة واالجتماعیة واي مجال خالل مشاھداتھ ومالحظاتھ وتجا

فإن مصادر البیانات تكون من البیئة الداخلیة او من البیئة اما على مستوى المنظمات . آخر وتشمل بیانات البیئة الداخلیة االدارات المختلفة واالقسام والشعب والعاملین . الخارجیة للمنظمة

الخ ...... ,ة مثل اوامر الشراء والجرد المخزني والفواتیر والمبیعات في مختلف نشاطات المنظم . وھذه البیانات تدون في سجالت او على شكل تقاریر او محاضر عمل

Page 3: Programming Structure

3

اما بیانات البیئة الخارجیة فإن مصدرھا الزبائن والموردین والقوانین الحكومیة التي تتعلق بنشاط , والسوق وآلیة العرض والطلب وردود افعال العمل ومالحظات منظمات المجتمع المدني

والدوریات العلمیة والمتخصصة والحسابات الختامیة للشركات والنقد الموجھھ في االعالم كما یجب تبویب وتصنیف وتحلیل , للمنتجات والخدمات واخیرا المواقع االلكترونیة للمنظمات

.نھا بصورة صحیحةبیانات ھذه المصادر توخیا للدقة ولغرض االستفادة م

Information Technology= IT

H / W S / W

البرمجیات االساسیة : اوال المعدات نظم التشغیل -1 الحواسیب واالجھزة الملحقة - 1 البرمجیات المساعدة: ثانیا الشبكات-2 ).Word , access , Excel (-1 االقمار الصناعیة -3 .قواعد البیاناتل االساسیة برمجیاتال -2 المحطات االرضیة-4 . ++C مترجم لغة مثلت مترجمات اللغا-3 اجھزة االتصال السلكي والالسلكي-5 االجھزة المتخصصة -6 البرمجیات التطبیقیة: ثالثا الكابالت المحوریة وذات االلیاف الزجاجیة -7

نظام معلومات االنترنت -1 نظام معلومات الحكومة االلكترونیة -2

نظام المعلومات االداریة -3 نظام المعلومات التسویقیة -4

نظم المعلومات المحاسبیة -5 نظم المعلومات االنتاجیة -6

ادارة اعمال البنوك نظم معلومات-7 نظم معلومات ادارة الھجرة والجوازات -8 نظم المعلومات الجغرافیة -9 نظم المعلومات االقتصادیة -10 نظم المعلومات الصحیة -11

م عن بعد نظم معلومات التعلی-12 نظم معلومات ادارات الداخلیة -13

نظم معلومات البولیس الدولي-14 نظم معلومات النیابة العامة -15 نظم معلومات المحاماه-16

نظم معلومات المحاكم- 17

Page 4: Programming Structure

4

:یعرف نظام المعلومات

بأنھ النظام الذي یستخدم تكنولوجیا المعلومات في خزن ومعالجة البیانات الستخراج معلومات

تساعد على دعم قرار او اتخاذ قرار روتیني من قبل النظام او تنفیذ مھمة كبدیل للعامل مفیدة .او الموظف كما یعمل االنسان االلي

من مجموعة من برامج مترابطة مع بعض تستخدم من قبل یتكون نظام المعلومات حیث یقوم موظف الھجرة والجوازات , المتخصصین وعامة الناس النجاز االعمال المطلوبة

ویقوم المواطن بالتعامل مع نظام معلومات الحكومة ,بتدقیق معلومات المغادرین والقادمین من خالل نوافذ ة الكھرباء من مكان سكنھ االلكترونیة للتقدیم على وظیفة او دفع اجور قائم

.النظام او المواقع االلكترونیة

مھنة ومھارة تستخدم التفكیر المنطقي والسلیم لحل مشكلة معینة وال عالقة للبرمجة : البرمجة بلغات البرمجة

عدة سلسلة من االجراءات المنطقیة المترابطة لحل مشكلة او متطلب او وظیفة بمسا: البرنامج

.الحاسوب

ھو الشخص الذي یستخدم التفكیر المنطقي والسلیم لحل مشكلة او متطلب او وظیفة : المبرمج .ویكون محترف بطرق ولغات البرمجة

طرق البرمجة المعتمدة عالمیا : Structured programmingالبرمجة المھیكلة - 1 Object – Oriented programmingالبرمجة الشیئیة - 2 Visual – programmingجة المرئیة البرم - 3

علما انھ لم یتم إلغاء اي من الطرق اعاله ، وانما الطریقة الثالثة تستند الى الثانیة ، .والطریقة الثانیة تشمل االولى

).سنقوم بدراسة وتطبیق الطریقة االولى و الثالثة : ( مالحظة

Structured programming: البرمجة المھیكلة تم تنفیذ اعمال متنوعة منھا حل , عد اختراع الحاسبات واستخدامھا منذ نھایة االربعینات ب

بعد ذلك تم ) . 0,1( ولغة الحاسوب Assemblyمسائل ریاضیة باستخدام لغات التجمیع تطویر لغات البرمجة العلیا لتصبح قریبة من لغة االنسان وظھرت مجموعة منھا

) COBOL , FORTRAN وتوسعت التطبیقات لتشمل تطبیقات نظم )1958ي عام ف .االعمال

ولعدم وجود ھكذا طریقةمعاییرلقد ابتدأ المبرمجون بتصمیم و كتابة البرامج بدون اعتماد اي ( تتجاوز قدحیث كان المبرمج یصمم وینفذ برنامج عدد خطواتھ. في تلك الفترة معتمدة والفھم والتعدیل والفحص وكذلك في كتابة ت في التصمیمھذا ادى الى صعوباخطوة و ) 5000

وعلى ضوء ذلك قام الباحثون بوضع وتنفیذ اسس لطریقة برمجة تتجاوز مشاكل . البرنامج في بدایة طریقة البرمجة المھیكلةحیث تم االعالن عن , عمل المبرمجین في تلك الفترة

:لتالیةوالتي تعتمد المبادئ االستینات من القرن الماضي

Page 5: Programming Structure

5

اي تجزئة البرنامج الكبیر الى مجموعة برامج فرعیة , MODULARITY التجزئھ - 1

) . Program Structure( تترابط فیما بینھا لتكون ھیكل البرنامج الكبیر 2 - TOP-down structuring انسیابیة التصمیم من االعلى الى االسفل وھذا یعني

.لى االسفل ومن التجرید الى التفاصیل بأسلوب متوازن ومتأني تجزئة التصمیم من االعلى ا3 - step-wise refinement . 4 - one entry point. 5 - one Exit point. 6 - No Go to .

:ھذه الطریقة وفرت الفوائد التالیة easy to design سھولة التصمیم –1 .من قبل المبرمج او شخص آخر easy to understand سھولة فھم البرنامج – 2 easy to update سھولة صیانة وتعدیل البرنامج الحقا – 4 . easy to test and easy to debug الخطأ الفحص و تحدید سھولة– 5

وادت الى وبناء برامج موثوقة النجاز البرامج الالزموھذه المزایا ادت الى اختصار الوقت .و الطریقة معتمدة حتى یومنا الحاضر . موارد االخرى الھدر بالجھود والتقلیل

) .علما ان الطرق االحدث تضمنت ھذه الطریقة (

constructs Structured programming تراكیب البرمجة المھیكلة )IF , ELSE ( 1واالختیار االشرط – Selection

)for , while , do while ( 2الدوران – repetition sequence – 3التتابع ) تسلسل االوامر حسب ترتیبھا المنطقي ( recursion - 4التكرار ) برنامج یستدعي نفسھ (

: انواع لغات البرمجة high-level languagesاللغات العلیا = أ

. C++ , JAVA , BASIC , MATLAB مثل وھي قریبة من لغة االنسان

assembly languagesاللغات التجمیعیة = ب .تتمیز بالصعوبة مابین االنسان واآللة

low-level languageاللغات الدنیا = ج . وتكون صعبة على االنسان )0,1( وھي لغة الحاسوب

Page 6: Programming Structure

6

: الخطوات العامة للبرمجة

مواصفات ومتطلبات العمل او المھمة او المشكلة او استالم المشكلة موثقة و تتضمن - 1 . المطلوب تنفیذھا بمساعدة الحاسوب المسألة

.یقوم المبرمج بفھم معمق للمشكلة حیث یحدد الھدف من البرنامج - 2 حیث یقوم input – process – outputیعتمد المبرمج مبدأ عمل الحاسوب - 3

.بتحدید المدخالت والمخرجات والمعالجة وكذلك تحدید اسماء متغیراتھا ).التفكیر المنطقي السلیم (تصمیم فكرة الحل منطقیا - 4 :المعتمدة عالمیا ) ادناه ( تمثیل وتوثیق التصمیم باستخدام االدوات - 5

algorithm الخوارزمیة –أ flowchart المخطط االنسیابي -ب

فحص الخوارزمیة والمخطط االنسیابي باستخدام بیانات عشوائیة من واقع المشكلة - 6 .للتأكد من صحة الحل

یحول المخطط االنسیابي ++Cبعد ان یتعلم المبرمج احدى لغات البرمجة مثل - 7 . ++Cالى برنامج بلغة والخوارزمیة

.م فحص البرنامج بنفس طریقة فحص المخطط والخوارزمیة یت - 8 تنجز الخطوات السابقة اعاله بدون الحاجة الى الحاسوب وعند االنتھاء من الخطوة

والتي ال نكون قد انجزنا البرنامج واآلن تبدأ مراحل العمل على الحاسوب) 8 ( حیث یتم ادخال وترجمة , لمطلوب النجاز العمل كلیا من الزمن ا% 10 تتجاوز

.الحاسوب وتنفیذ البرنامج بمساعدة

-:الجانب العملي

وحفظھ بأسم مثل ونقوم بادخال البرنامج ++Cنقوم بتشغیل الحاسوب ونحمل نظام - 9P1.CPP " ) P " یعني اسم البرنامج ، والرقم واحد ھو تسلسل البرامج المنجزة

) .قبل المبرمج من ++C اوامر نظام قائمة الموجود ضمن Compileاستخدام امر الترجمة - 10

وتكتمل الترجمة 0,1 الى لغة الحاسوب ++Cلترجمة البرنامج من اللغة العلیا .صفر= بشرط ان یكون عداد االخطاءالقواعدیة

++C نظام تنفیذ البرنامج من خالل استخدام امر التنفیذ الموجود ضمن اوامر - 11 .وادخال البیانات ومشاھدة الناتج

Page 7: Programming Structure

7

:الخوارزمیة والمخطط االنسیابي

عبارة عن خطوات مترابطة منطقیا یستخدمھا المبرمج لتمثیل الحل ویجب ان تبدأ ببدایة : الخوارزمیة .وتنتھي بنھایة وتكتب باللغة العربیة او االنجلیزیة او االنجلیزیة المھیكلة

المبرمج لتمثیل الحل وذلك باستخدام رسوم تساعده على عبارة عن مخطط یستخدمھ: المخطط االنسیابي ویتكون من مجموعة رموز معیاریة حددت من قبل دائرة السیطرة تصور مرئي لخطوات الحل الالزمة

.ANSIالنوعیة االمریكیة 1-

2-

3 -

4 -

5 - 6 -

یستخدم لتمثیل البدایة والنھایة

یستخدم لتعریف المتغیرات

عملیات یستخدم لل

یستخدم لالدخال واالخراج

یتحقق الیتحقق

شرط

IF STATEMENTیستخدم لتمثیل الشرط

وترابط عناصر المخطط تحدید انسیابیة الحل في تستخدم االسھم

. مع بعض

Page 8: Programming Structure

8

.المطلوب تصمیم وتنفیذ برنامج لجمع عددین واظھار الناتج ) : 1(مثال

: نبدأ بحل المشكلة وكما یلي حسب خطوات عمل المبرمج المذكورة سابقا

االدخال والمعالجة واالخراجفي د المتغیرات المستخدمة بعد الفھم المعمق للمشكلة نقوم بتحدی -1 . input process output اعتمادا على مبدأ عمل الحاسوب

االدخال متغیرات

Aتفرض العدد االول ھو Bتفرض العدد الثاني ھو

االخراج متغیرات

Cالناتج ھو

متغیرات المعالجة C = A + B

تمثیل الحل باستخدام الخوارزمیھ والمخطط االنسیابي – 2 الخوارزمیة–أ

البدایة -1 A , B , C تعریف المتغیرات – 2 A , B ادخال البیانات في – 3

C = A + B عملیة الجمع – 4 C طباعة الناتج – 5 النھایة – 6

) FLOWCHART ( المخطط االنسیابي –ب

بدایة

A , B , Cتعریف

A ,Bادخال

C = A + B

Cاعة طب

النھایة

Page 9: Programming Structure

9

-: افتراضیة قریبة من واقع المشكلة كالتالي بعد ذلك نقوم بفحص المخطط االنسیابي بأخذ قیم

A = 5 , B = 6 , 11= المجموع

RAM .غیرات المعرفة في الخوارزمیة او المخطط والتي تحتوي على اسماء المت ذاكرة الحاسوب

اظھار الناتج على الشاشة

حیث یتم الفحص اعتمادا على تسلسل اجراءات المخطط او الخوارزمیة ویتم ادخال قیم المتغیرات ومعالجتھا .ت المصمم حسب خطوا

C B A

– 5ادخال

– 6ادخال

11عرض الناتج

KB

Page 10: Programming Structure

10

: وحسب الھیكل التالي ++ Cبعد التأكد من صحة التصامیم نقوم بتحویل التصمیم الى برنامج مكتوب بلغة

C ++مكتوب بلغة ) 1(ھیكل برنامج المثال

منطقة تعریف الملفات القیاسیة المخزونة مع داخل الحاسوب ++Cنظام

منطقة تعریف المتغیرات

منطقة العملیات

خطوات البرنامج وبعد التأكد من الناتج نقوم ونقوم بعملیة الفحص بنفس الطریقة السابقة اعتمادا على تسلسل :بما یلي

.تشغیل الحاسوب = 1 . ++Cتحمیل نظام = 2 ahmed1.cpp. او اسم آخرمبرمج او اسم متخصصل بأسم اادخال البرنامج وحفظھ = 3. لعلیا الى لغة حیث حیث یترجم البرنامج من اللغة ا compileیقوم المبرمج بعملیة الترجمة باستخدام امر = 4

بأسم ) 0,1( صفر وتتكون نسخة جدیدة بلغة الحاسوب = اذا كان عداد االخطاء ) 0,1( الحاسوب ahmed1.obj.

.ahmed1.EXEتتكون نسخة جدیدة حیث نقوم بعملیة تحمیل وتنفیذ البرنامج على الحاسب = 5

:انواع ملفات البرنامج المخزونة داخل الحاسوب . وھذا الملف یكون من قبل المبرمج ahmed1.cpp مثل source programصدر ملف الم= أ

من ++C وھذا الملف یكون من قبل نظام ahmed1.opj مثل object programملف الھدف = ب .Compileخالل أمر الترجمة

من قبل نظام وھذا الملف یكون ahmed1.EXE مثل Executable programملف التنفیذ = ج C++ من خالل أمر التنفیذ RUN .

# include < iostream. h >

int a , b , c ;

Void main ( ) } بدایة العملیات

Cin >> a ;ادخال Cin >> b ; ادخال c = a + b ;تطبیق المعادلة

Cout << c ; اخراج { نھایة العملیات

Page 11: Programming Structure

11

.برنامج لحساب مساحة المستطیل ): 2(مثال

.لحساب مساحة المستطیل نحتاج الى الطول والعرض

االدخال متغیرات المخطط االنسیابي L= الطول

W= العرض

االخراجمتغیرات AREA = المساحة

متغیرات المعالجة

AREA = L * W

الخوارزمیة البدایة= 1 L , W , AREA تعریف المتغیرات= 2 L , W ادخال البیانات في = 34 =AREA = L * W AREAطباعة = 5 النھایة = 6

C ++البرنامج بلغة

# include < iostream .h > Int L,W,AREA; Void main ( )

{ Cin >> L ; Cin >> W ;

AREA = L * W ; Cout << AREA ;

}

البدایة

L , W , AREAتعریف

L , W ادخال

AREA = L * W

AREAطباعة

النھایة

Page 12: Programming Structure

12

برنامج لحساب مساحة مثلث ) :3(مثال

2) / طول القاعدة * االرتفاع = ( مساحة المثلث

االدخال متغیرات b= لقاعدة ا

المخطط االنسیابي h = االرتفاع

االخراج متغیرات area= المساحة

المعالجةمتغیرات

Area = 1/2 * b * h

:الخوارزمیة

البدایة -1 h , b , area تعریف المتغیرات -2 h , b خال البیانات في اد -34- Area = 1/2 * b * h areaطباعة -5 النھایة -6

:الفحص

.3= وارتفاعھ 2= افتراض مثلث قاعدتھ

2/1* طول القاعدة * طول االرتفاع = مساحتھ = 2 * 3 * 2/1 = 3

-2ادخال -3ادخال

3 اخراج

Area b h

RAM الشاشة

3 3 2

البدایة

h , b , areaتعریف

b , h ادخال

Area = 1/2 * b * h

AREAطباعة

النھایة

KB

Page 13: Programming Structure

13

للمقارنة بین عددین وطباعة العدد االكبر تصمیم برنامج : ) 4 (مـثـال

a= العدد االول

b= العدد الثاني

:الخوارزمیة

البدایة - 1 a , bتعریف المتغیرات - 2 a , b إدخال البیانات في - 3 " A is LARGEST " اطبع a > b اذا كان - 4

" B is LARGEST " والعكس اطبع . b او aالعدد االكبر إما طباعة - 5 النھایة - 6

:الفحص

افترض ان a = 4العدد b = 6 العدد 6االكبر ھو العدد یعتبر

) :4(تابع مثال

B A

-4 -6

6 IS LARGEST

RAM

الشاشة

6 4

KB

Page 14: Programming Structure

14

:المخطط االنسیابي

C++البرنامج مكتوب بلغة

# include < iostream.h >

Int a , b ; Void main ( )

{ Cin>>a ; Cin>>b ; If ( a>b)

Cout << " a is largest "; Else

Cout << " b is largest "; }

لذا یجب a , b ال یحقق الحل المطلوب في حالة تساوي العددین و المخطط ھذا البرنامج- :مالحظة

. اعادة تصمیم المخطط وكتابة البرنامج

:مثل

فكر في ایجاد حل ؟

6 6

Define a , b

INPUT a , b

IF A>B

طباعة A is

largest

طباعة B is

largest

YES NO

START

END

b a

Page 15: Programming Structure

15

تحدید العدد زوجي ام فردي ؟ صمم مخطط ل: ) 5 (مـثـال

:المخطط االنسیابي

:الفحص

افترض ان

N = 5

Define N

ENTER N

IF (N mod2) = zero

Print " even "

Print " odd "

YES NO

START

END

زوجي فردي

N

-5

Odd 5

RAM

الشاشة

5

KB

Page 16: Programming Structure

16

:مالحظةان الفرق بین العدد الزوجي والعدد الفردي ھو ان العدد الزوجي یقبل القسمة

2 اما العدد الفردي فال یقبل القسمة على 2على . والباقي صفر2 الزوجي یقبل القسمة على اي ان العدد

.1= یكون الباقي 2والعدد الفردي عندما یقبل القسمة على

3 = ( mod 2 6) =الناتج صفر= الباقي

( mod 2 7 ) = 3= الناتج 1= الباقي

C++ مكتوب بلغة ) 5( المثال برنامج

# include < iostream.h > Int n ;

Void main ( ) { Cin>>n ; If ( (n %2 )==0 )

Cout << " the number is even "; Else

Cout << " the number is odd"; }

-:االخطاء القواعدیة بالبرنامج اعاله **

.بعض الحروف مكتوبة بالشكل الكبیر -1

" . ;"ال یفضل وجود فراغ قبل -2

صمم مخطط انسیابي لتحدد ھل العدد یساوي صفر او اكبر من صفر او اصغر من ): 6(مثال صفر ؟

Page 17: Programming Structure

17

10( أو أصغر من ) 10( صمم برنامج ألدخال أي عدد و قارن ھل ھو أكبر من : ) 7 (مـثـال

. و أطبع النتائج)

Define N

START

ENTER N

IF N = ZERO

PRINT " ZERO "

IF N>ZERO

PRINT POSITIVE " "

END

NO Yes

YesNO

PRINT NEGATIVE " "

Page 18: Programming Structure

18

:الخوارزمیة

البدایة - 7 Aتعریف المتغیرات - 8 A إدخال البیانات في - 9

" A LARGER THAN 10 " اطبع A > 10 اذا كان -10 " A LESS THAN 10 " والعكس اطبع

10 من طباعة النتائج ھل أكبر أو أصغر -11 النھایة -12

:المخطط االنسیابي

. المطلوب تحویر المخطط اعاله الخذ حالة التساوي بنظر االعتبار- :مالحظة

برنامج للمقارنة بین ثالثة أعداد و طباعة األكبر صمم :)8 (مـثـال .

Define A

INPUT A

IF A>10

"A LARGER THAN 10 "

"A LESS THAN 10 "

YES NO

START

END

Display Display

Page 19: Programming Structure

19

للطالب الذي اجتاز وبنجاح المواد الخمسة GPAصمم برنامج لحساب معدل ) :9 (مـثـال .المسجلة للفصل السابق :تعریف متغیرات االدخال

Define A,B,C

START

INPUT A,B,C

IF A>(B&C)

PRINT A IS

LARGEST

IF B>(A&C)

PRINT B IS LARGEST

END

NO Yes

Yes

PRINT C IS LARGEST

Page 20: Programming Structure

20

Aالمادة األولى Bالمادة الثانیة C المادة الثالثة

Dالمادة الرابعة Eالمادة الخامسة

:تعریف متغیرات االخراج AVRالمعدل

:تعریف متغیرات المعالجة SUM = A + B + C + D + E

AVR = SUM / 5

)المخــطط االنسیـــابي ( )تابع) : ( 9(مثال

ستخدمة و الفائدة منھا لتقلیل المتغیرات الم FOR LOOPبإستخدام طریقة ال ) 9( اعادة تصمیم المثال

.في البرنامج و كذلك تقلیل خطوات تصمیم و كتابة البرنامج

START

Define A,B,C,D,E,SUM,AVR

INPUT A,B,C,D,E

SUM = A+B+C+D+E

AVR = SUM / 5

PRINT AVR

END

Page 21: Programming Structure

21

:تعریف متغیرات االدخال

)i = 0( عداد المقررات , A= المقرر

:تعریف متغیرات االخراج AVRالمعدل

:تعریف متغیرات المعالجة

= 0 SUM i = 0

AVR

) :FOR LOOPباستخدام طریقة ال (C++مكتوب بلغة ) 9(برنامج المثال

# include < iostream . h > int a , sum=0 , i=0 ,AVR ;

START

زیادة العدد

INPUT A

i= i+1

SUM = SUM+A

IF i=5

AVR = SUM/ 5

PRINT AVR

END

NO

YES

Define A,SUM=0,i=0,AVR

ادخال عالمة مادة واحدة لكل مرة

جمع العالمة مع المجموع

5= اذا كان العدد

:مالحظة ھذا البرنامج یعمل

. من المواد على اي عدد

Page 22: Programming Structure

22

void main ( ) بدایة البرنامج }For ( i=0 ; i < 5 ; i++ )

الدوران بدایة }Cin >> a ; Sum = sum + a ;

الدوران نھایة {AVR = sum / 5 ; Cout << " the average = " << AVR ; البرنامج نھایة {

) :whileباستخدام امر الدوران ( C++مكتوب بلغة ) 9(برنامج المثال

# include < iostream . h > int a , sum=0 , i=0 ,AVR ; void main ( )

بدایة البرنامج }While ( i < 5 )

} دورانبدایة ال Cin >> a ;

Sum = sum + a ;

i = i + 1 ; {نھایة الدوران

AVR = sum / 5 ; Cout << " the average = " << AVR ; البرنامج نھایة {

c++لغــــــــــــــة

-: من ثالثة اجزاء رئیسیة c++یتكون البرنامج المكتوب بلغة

Page 23: Programming Structure

23

header library تعریف الملفات القیاسیة -1

variables definition تعریف المتغیرات -2

main program البرنامج الرئیسي -3

<include<iostream.h # / تعریف الملفات القیاسیة

Variables definition / تعریف المتغیرات

() Void main /البرنامج الرئیسي

} بدایة البرنامج

العملیات التي ینفذھا البرنامج

{ نھایة البرنامج

++c .بلغة ھذه االجزاء الثالثھ تترابط مع بعض لتكون ھیكل البرنامج المكتوب -:مالحظھ

. فقط small lettersویكتب البرنامج بصیغة

1- #include<……….> یعني ھذا السطر من البرنامج اننا سوف نقوم بتعریف الملفات القیاسیة

تعني تعریف <include<iostream.h# المنتجة من قبل الشركة مثال ++Cالمخزونة في مكتبة نظام

.االدخال واالخراج الملف القیاسي ألسناد عملیات

. لتبلیغھ باننا نطلب استخدام الملف processorتعني ان ھذا االمر موجھ الى ال ) #(و

. عند تصمیم اي برنامج یجب تحدید المتغیرات التي سوف تستخدم في ھذا البرنامج : تعریف المتغیرات -2

القیمھ التي سوف یاخذھا عند تنفیذ اعتمادا على(data type)ویجب ان نبلغ البرنامج عن نوع كل متغیر

.البرنامج وتتم ھذه العملیھ في ھذه المرحلھ من البرنامج

-: یجب كتابتھ بالصوره التالیةc++لتعریف اي متغیر بلغة

Data type variable name;

اسم المتغیر نوع المتغیر

-:فیمكن تعریفھم بالطریقة التالیھ) ( data type واذا كان ھناك اكثر من متغیر بنفس ال

Data type , variable1 name , variable2 name… variable n name;

; int a , b : مثل

-) :data types (انواع المتغیرات

Page 24: Programming Structure

24

1- integer ویرمز لھ في لغة c++ ) (int ویقصد بھ ان المتغیر من نوعinteger یمكن ان یاخذ اعداد

.واذا دخلت كسور سوف تھملصحیحھ فقط عند تنفیذ البرنامج من دون كسور

2- float ویرمز لھ في لغة c++ (float)ن المتغیر من نوع ویقصد بھ اfloat یقبل االرقام الصحیحھ

.واالرقام الكسریة في نفس الوقت

3- character ویرمز لھ في لغة c++ (char) ویقصد بھ انھ متغیر من نوع character اي انھ قد

1یكون حرف معین او رمز معین من الرموز الموجوده على لوحة المفاتیح ویحجز موقع بالذاكره حجمھ

byteاي انھ یقبل حرف واحد او رمز واحد فقط في عملیة االدخال .

-) :variables names(اسماء المتغیرات

-:لتحدید اسم المتغیر یجب اتباع القواعد التالیة

(1a) ان ال یبدأ اسم المتغیر برقم مثل - 1

ال یمكن ترك مسافة بین احرف األسم -2

)a_b( مثل under score ما عدا ,-,:,$,*)( الرموز مثل ال یمكن استخدام-3

حرف كحد اقصى 32طول االسم یتراوح بین حرف الى -4

.++C محجوزة الستخدامات لغة keywordال یمكن استخدام اسماء -5

keywords++ C

try signed new Float continue asm

typedef sizeof operator For default auto union static friend private delete Break

unsigned struct goto Protected do case virtual switch if public double catch

void template inline Register else char volatile this int Return enum class while throw long short extern const

) : output operations & input (عملیات األدخال واألخراج

Page 25: Programming Structure

25

الى المتغیر KBحیث یقوم بأدخال القیمة من ) cin ( نستخدم االمر++cألدخال قیمة الي متغیر بلغة -1

-:الموجود بعدھا وتكتب بھذه الطریقة

Cin>>a; . a ووضعھا بالمتغیر باخذ القیمة المدخلة (cin)ھنا سوف یقوم ایعاز

(cout) االخراج لة معینة على الشاشھ نستخدم امر لطباعة قیمة اي متغیر على الشاشة او لطباعة رسا-2

-:حیث یقوم بطباعة محتویات متغیر على الشاشھ ویكتب بھذه الطریقةCout<<a;

-: على الشاشھ اما في ھذه الحالة(a) بطباعة قیمة المتغیر cout الطباعھ ھنا سوف یقوم امرCout<<"a";

في ('' '') على الشاشھ اي في حالة طباعة رسالھ معینھ نكتب الرسالة بین ال (a)سوف یقوم بطباعة حرف .coutایعاز ال

. ''hi every one'' اكتب برنامج لطباعة رسالة ترحیب ) :10(مثال

#include<iostream.h> Void main() { Cout<<''hi every one''; }

):arithmetic operations (یات الریاضیة العمل

-:نستطیع كتابة المعادالت الریاضیة باستخدام العملیات الحسابیة التالیة

+ addition الجمع - subtraction الطرح * multiplication الضرب / division القسمة

% Remainder باقي القسمة

.لحساب مساحة مربع c++ اكتب برنامج بلغة ) :11( مثال #include<iostream.h> Int a, area; Void main () { Cout<<'' enter the value of a''; Cin>>a; Area=a*a; Cout<<area; }

اكتب برنامج الدخال عالمات طالب للفصل الدراسي االول وحساب معدلھ ) :12( مثال .مواد ) 5(ھي وطباعة المعدل علما ان عدد الدروس المسجلھ

Page 26: Programming Structure

26

#include<iostream.h> Float a,b,c,d,e,sum,avg; Void main () { Cout<<''enter the first mark''; Cin>>a; Cout<<''enter the second mark''; Cin>>b; Cout<<''enter the third mark''; Cin>>c; Cout<<''enter the forth mark''; Cin>>d; Cout<<''enter the fifth mark''; Cin>>e;

Sum=a+b+c+d+e;

Avg=sum/5;

Cout<<''the average = :''<<avg ; }

: relational operationعملیات المقارنة

-:نستطیع كتابة عملیات المقارنة باستخدام الرموز التالیة

= = equal یساوي = ! Not equal الیساوي > Less than اصغر

= > Less than or equal ياصغر او یساو < Greater than اكبر

= < Greater than or equal اكبر او یساوي

else / If : .تنفذ عملیة معینة ي حالة وجود شرط معین على اساسھ تستخدم لعملیات المقارنة او ف

نفذ ما بعد الشرط صحیح یفإذا كان , ( true & false ) على مبدأ الصح والخطأ if / elseیعتمد مبدأ عمل ) . else( نفذ ما بعد ال اما اذا كان الشرط خطأ فی, مباشرة ) if(ال

If ( condition ) تحقق الشرط / Action 1 العملیة التي تنفذ في حالة الشرط الصحیح

Else عكس ذلك

Action 2 /العملیة التي تنفذ في حالة الشرط خطأ

) :13(مثال اكبر ؟ع رسالة تبلغ المستخدم اي الرقمین للمقارنة بین عددین واطب ++Cاكتب برنامج بلغة

#include<iostream.h>

Page 27: Programming Structure

27

Int a,b ; Void main ( ) { Cout << " enter the first number " ; Cin >> a ; Cout << " enter the second number " ; Cin >> b ; If (a>b) Cout << " a is greater than b " ; Else If (a<b) Cout << " b is greater than a " ; Else Cout << " a equal b " ; }

) :14(مثال -: في ھو احسب الراتب الصافي لموظف اذا علمت ان الراتب الصا

االستقطاعات –العالوات + الراتب االساسي = الراتب الصافي او اقل ؟) 1000(ثم اطبع رسالة تبلغ المستخدم ھل الراتب اكثر من

#include<iostream.h> Float a,b,c,d ; Void main ( ) { Cout << " enter the basic salary " ; Cin >> a ; Cout << " enter the allowance " ; Cin >> b ; Cout << " enter the deduction " ; Cin >> c ; d = a + b – c ; If ( d > 1000 ) Cout << " the net salary is greater than 1000 " ; Else If ( d < 1000 ) Cout << " the net salary is less than 1000 " ; Else Cout<< " the net salary = 1000 ; }

Page 28: Programming Structure

28

: loopمفھوم الدوران لتكرار عملیة معینة اكثر من مرة في نفس البرنامج وذلك بدال من تكرار ++Cیستخدم ھذا المفھوم بلغة

نبلغھ بعدد المرات المراد تكرارھا او LOOPكتابتھا في البرنامج حیث نكتب العملیة مرة واحدة ونعمل بلغة LOOPیقوم الكومبیوتر بتكرار العملیة وھناك عدة طرق لتمثیل ال یتحدد التكرار من خالل شرط حیث

C++ واھمھا : -

1=FOR LOOP

. LOOPیجب تعریف متغیر في البرنامج الستخدامھ للعداد في ال : مالحظة : كاآلتي ++C في لغة FOR LOOPتتمثل

FOR ) القیمة التي یبدأ منھا العداد ;داد القیمة التي ینتھي بھا الع ;زیادة العداد (

{ العملیات المراد تكرارھا

}

) : 15( مثال عالمات لطالب خالل الفصل الدراسي ثم احسب ) 5( یقوم بادخال ++Cاكتب برنامج بلغة

واطبع المعدل .use for loop) استخد م احدى تراكیب الدوران (

#include<iostream.h> Float a , sum = 0 , avg , I ; Void main ( ) { For ( I = 1 ; I < 6 ; I ++ ) { Cout << " enter the mark " ; Cin >> a ; Sum = sum + a ; } Avg = sum / 5 ; Cout << " the average = " << avg ; }

2 = while loop

Page 29: Programming Structure

29

While ) اوعدم تحقق شرطالقیمة التي یتوقف بھا العداد (

{ العملیة المراد تكرارھا

زیادة العداد او تغییر حالة الشرط

}

یجب تحدید القیمة التي یبدأ بھا العداد مع المتغیرات :مالحظة

) :16( مثال ؟ ) while loop( نفس المثال السابق باستخدام

#include<iostream.h> Float a , sum = 0 , avg , I=0 ; Void main ( ) { While ( I < 5 ) { Cout << " enter the mark " ; Cin >> a ; Sum = sum + a ; I ++ ; } Avg = sum / 5 ; Cout << " the average = " << avg ; }

3 = while loop /do

Do {

العملیة المراد تكرارھا زیادة العداد

while { ) القیمة التي ینتھي بھا العداد (

.یجب تحدید القیمة التي یبدأ بھا العداد مع المتغیرات : مالحظة

) :17( مثال

Page 30: Programming Structure

30

؟ do/while loopنفس المثال السابق باستخدام

#include<iostream.h> Float a , sum = 0 , avg , I=0 ; Void main ( ) { Do { Cout<<"enter the mark"; Cin>>a; Sum=sum+a; I ++;

} While ( I < 5 ) Avg = sum / 5 ; Cout << " the average = " << avg ; }

case / Switch : .تستخدم في حالة وجود اكثر من احتمال صحیح من الممكن ان یتنفذ في البرنامج

Switch ( selector ) { Case 1 : Action 1 ; Break ;

Case 2: Action 2 ; Break ;

Case n ; Action n ; Break ;

Default : Action ; }

Page 31: Programming Structure

31

) :18( مثال یعمل كبوابة امن الكترونیة تسمح بمرور كلمات المرور التالیة فقط ++Cامج بلغة اكتب برن

في حالة الرقم المدخل صحیح " Pass "و اطبع رسالة ) 4000 و 2000 و 1000( في حالة الرقم المدخل خطأ ؟ " not allowed "ورسالة

#include<iostream.h> Int a ; Void main ( )

} بدایة البرنامج Cout << " enter the password "; Cin >> a; If ( a = = 1000) a = 1 ; Else If ( a = = 2000) a= 2; else if ( a == 4000 )

a = 3 ; Else

a = 4 ; Switch (a)

} بدایة Case 1 : Cout<< " pass"; Break ; Case 2 : Cout << " pass"; Break ; Case 3 : Cout << " pass "; Break ; Default: Cout << " not allowed " ;

{ نھایة { نھایة البرنامج

Page 32: Programming Structure

32

) Array: ( المصفوفات

والمصفوفة تتكون , عبارة عن ھیكل بیانات یستخدم لخزن عدد من البیانات الرقمیة او الحرفیة

من مجموعة من خالیا خزنیة متجانسة بنوع البیانات ومتساویة بالحجم الخزني وتعرف .د تعریفھا المصفوفة بأسم متغیر واحد مع تحدید عدد الخالیا عن

تستخدم المصفوفات لخزن اعداد كبیرة من البیانات وتساعدنا على اختصار تصمیم وكتابة البرنامج وكذلك اختصار عدد المتغیرات المتجانسة المراد تعریفھا ویمكن تعریف مصفوفة ذات

.بعد واحد او بعدین او ثالث ابعاد

: یتم التعامل مع المصفوفات كما یلي

-: صفوفة تعریف الم - 1 : صیغة التعریف

Data-type variable name [number of cells]; ; int a[10] -أ

الكسور وال یوجد وھذا یعني مصفوفة ذات بعد واحد تتكون من عشرة خالیا رقمیة ال تقبل .فیھا قیمة ابتدائیة

float a[10] ; -ب

. وال توجد فیھا قیمة ابتدائیة ة تقبل الكسور وھذا یعني مصفوفة ذات عشرة خالیا رقمی

a

-: تعریف المصفوفة محددة المحتویات - 2 ) مصفوفة محتویاتھا صفر ( ; int a[10] = {0} -أ

int a[10] = {3,4,5,12,13,14,16,20,9,8};

a

-:لخزن في المصفوفة وھذا یتم بحالتین عملیات ا - 3

9 8 7 6 5 4 3 2 1 0

8 9 20 16 14 13 12 5 4 3

Page 33: Programming Structure

33

KBادخال وخزن بیانات عن طریق - أ

For ( i=0; i<10; i++ ) {

Cin>>a[i] ; }

خزن بیانات عن طریق المعالجة عند تنفیذ البرنامج - بb=1;

for ( i=0; i<10; i++ ) { a[i]=b; b=b+2; }

طبع محتویات المصفوفة -جـ For ( i=0; i<10; i++ )

{ Cout<<i+1<<" "<< "the value = "<<a[i] ;

}

:مثال

Page 34: Programming Structure

34

درستھا واحسب واطبع المعدل ؟ عالمة تمثل المقررات التي40اكتب برنامج الدخال وخزن

# include <iostream.h> int i, sum=0, AVR, mark ; int a[40]; void main( ) { For ( i=0; i<40; i++ ) {

Cin >> a[i]; ادخال العالمات Cout<< endL;

} For ( i=0; i<40; i++ )

{ Sum=sum+a[i] جمع محتویات المصفوفة }

AVR = sum / 40; حساب المعدل Cout<<" the GPA = " << AVR; طبع المعدل

}