You are on page 1of 206

‫تطبيقات في برمجة الحاسب‬ ‫‪2‬‬

‫المحتوى‬
‫الصفحة‬ ‫الموضوع‬
‫‪6‬‬ ‫الباب األول ‪ :‬لغات البرمجة‬
‫‪7‬‬ ‫‪ .1‬لغات البرمجة‬
‫‪7‬‬ ‫‪ .2‬تصنيف لغات البرمجة‬
‫‪8‬‬ ‫‪ ‬لغات برمجة ذات مستوى منخفض ‪Low Level Languages‬‬
‫‪9‬‬ ‫‪ ‬لغات برمجة ذات مستوى عالي ‪High Level Languages‬‬
‫‪11‬‬ ‫‪ ‬لغات الجيل الرابع ‪Fourth Generation Languages‬‬
‫‪12‬‬ ‫‪ ‬اللغات الطبيعية أو لغات الجيل الخامس‪Natural Language‬‬
‫‪11‬‬ ‫‪ ‬لغات اإلنترنت ‪Internet Language‬‬
‫‪11‬‬ ‫الباب الثاني ‪ :‬هياكل البيانات المتقدمة‬
‫‪16‬‬ ‫‪ .1‬مفهوم هياكل البيانات‬
‫‪17‬‬ ‫‪ .2‬أهمية هياكل البيانات‬
‫‪18‬‬ ‫‪ .1‬أنواع هياكل البيانات‬
‫‪19‬‬ ‫‪ .4‬أشهر هياكل البيانات‬
‫‪28‬‬ ‫الباب الثالث ‪ :‬البرمجة الشيئية‬
‫‪29‬‬ ‫‪ .1‬مقدمة‬
‫‪13‬‬ ‫‪ .2‬معنى البرمجة الشيئية ‪OOP‬‬
‫‪11‬‬ ‫‪ .1‬المقارنة بين أسلوب البرمجة الهيكلية والكائنية‬
‫‪11‬‬ ‫‪ .4‬بعض المفاهيم األساسية في البرمجة الشيئية‬
‫‪19‬‬ ‫‪ .1‬مزايا البرمجة الشيئية‬
‫‪3‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الصفحة‬ ‫الموضوع‬
‫‪43‬‬ ‫الباب الرابع‪ :‬االتصال بقواعد البيانات‬
‫‪41‬‬ ‫‪ .1‬تعريف قواعد البيانات‬
‫‪41‬‬ ‫‪ .2‬نظم قواعد البيانات‬
‫‪42‬‬ ‫‪ .1‬مكونات نظم قواعد البيانات‬
‫‪41‬‬ ‫‪ .4‬نظم إدارة قواعد البيانات‬
‫‪41‬‬ ‫‪ .1‬مكونات قاعدة البيانات‬
‫‪41‬‬ ‫‪ .6‬مبادئ تصميم قواعد البيانات‬
‫‪41‬‬ ‫‪ .7‬أدوات البحث لالتصال بقواعد البيانات‬
‫‪49‬‬ ‫الباب الخامس ‪ :‬بيئة تطبيقات االنترنت‬
‫‪13‬‬ ‫‪ .1‬اإلنترنت ‪Internet‬‬
‫‪13‬‬ ‫‪ .2‬مميزات شبكة األنترنت‬
‫‪11‬‬ ‫‪ .1‬خدمات اإلنترنت‬
‫‪17‬‬ ‫‪ .4‬تطبيقات اإلنترنت‬
‫‪18‬‬ ‫‪ .1‬عملية برمجة تطبيقات اإلنترنت‬
‫‪19‬‬ ‫‪ .6‬لغات برمجة تطبيقات اإلنترنت‬
‫‪61‬‬ ‫الباب السادس ‪ :‬وجهة التطبيق الرسومية‬
‫‪62‬‬ ‫‪ .1‬واجهات التطبيق الرسومية‬
‫‪61‬‬ ‫‪ .2‬مزايا واجهات التطبيق الرسومية‬
‫‪61‬‬ ‫‪ .1‬لغات البرمجة لواجهات التطبيق الرسومية‬
‫‪61‬‬ ‫‪ .4‬الفرق بين واجهة األنترنت وواجهة التطبيق الرسومية‬
‫تطبيقات في برمجة الحاسب‬ ‫‪4‬‬

‫الصفحة‬ ‫الموضوع‬
‫‪61‬‬ ‫الباب السابع ‪ :‬حل المشكالت ‪Problem Solving‬‬
‫‪66‬‬ ‫‪Program Development Steps‬‬ ‫‪ .1‬خطوات صياغة وتطوير البرامج‬
‫‪73‬‬ ‫‪Flow Charts‬‬ ‫‪ .2‬مخططات سير العمليات‬
‫‪83‬‬ ‫الباب الثامن ‪ :‬أساسيات البرمجة بلغة ‪C++‬‬
‫‪81‬‬ ‫‪ .1‬مقدمة‬
‫‪81‬‬ ‫‪ .2‬تشغيل المترجم (برنامج) للغة ‪C++‬‬
‫‪81‬‬ ‫‪ .1‬هيكل البرنامج‬
‫‪91‬‬ ‫‪ .4‬أنواع البيانات األساسية‬
‫‪132‬‬ ‫الباب التاسع‪ :‬جمل التحكم ‪Control Statements‬‬
‫‪131‬‬ ‫‪ .1‬مقدمة‬
‫‪131‬‬ ‫‪ .2‬جملة الشرط ‪If Statement‬‬
‫‪136‬‬ ‫‪ .1‬جملة الشرط ‪if …. Else‬‬
‫‪139‬‬ ‫‪ .4‬جملة ‪switch‬‬
‫‪116‬‬ ‫الباب العاشر‪ :‬الحلقات التكرارية ‪Looping‬‬
‫‪117‬‬ ‫‪ .1‬مقدمة‬
‫‪117‬‬ ‫‪ .2‬حلقة التكرار ‪For‬‬
‫‪127‬‬ ‫‪ .1‬حلقة التكرار ‪While‬‬
‫‪113‬‬ ‫‪ .4‬حلقة التكرار ‪Do … While‬‬
‫‪112‬‬ ‫‪ .1‬التحكم بالحلقات‬
‫‪5‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الصفحة‬ ‫الموضوع‬
‫‪142‬‬ ‫الباب الحادي عشر ‪ :‬المصفوفات ‪Array‬‬
‫‪141‬‬ ‫‪ .1‬المصفوفات ذات البعد الواحد ‪One-Dimensional Arrays‬‬
‫‪111‬‬ ‫‪ .2‬المصفوفات ذات البعدين ‪Two-Dimensional Arrays‬‬
‫‪161‬‬ ‫معجم مصطلحات‬
‫‪162‬‬ ‫تدريبات‬
‫‪236‬‬ ‫المراجع‬
‫تطبيقات في برمجة الحاسب‬ ‫‪6‬‬

‫الباب األول‬

‫لغات البرمجة‬

‫الموضوع‪:‬‬

‫‪ .1‬لغات البرمجة‬

‫‪ .2‬تصنيف لغات البرمجة‬

‫‪ ‬لغات برمجة ذات مستوى منخفض ‪Low Level Languages‬‬

‫‪ ‬لغات برمجة ذات مستوى عالي ‪High Level Languages‬‬

‫‪ ‬لغات الجيل الرابع ‪Fourth Generation Languages‬‬

‫‪ ‬اللغات الطبيعية أو لغات الجيل الخامس‪Natural Language‬‬

‫‪ ‬لغات اإلنترنت ‪Internet Language‬‬


‫‪7‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب األول‬

‫لغات البرمجة‬

‫‪ .1‬لغات البرمجة‪:‬‬

‫‪ ‬تعريف البرمجة ‪ :Programming‬من الممكن تعريف البرمجة بأنها‬


‫عملية كتابة تعليمات وأوامر لجهاز الحاسب أو أي جهاز آخر‪ ،‬لتوجيهه‬
‫وإعالمه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من األعمال‬
‫المطلوبة‪.‬‬

‫‪ ‬لغات البرمجة ‪ : Programming Languages‬هي مجموعة‬


‫القواعد التي توفر طريقة صياغة تعليمات البرنامج‪.‬‬

‫‪ .2‬تصنف لغات البرمجة‪:‬‬

‫‪ ‬لغات برمجة ذات مستوى منخفض ‪Low Level Languages‬‬

‫‪ ‬لغات برمجة ذات مستوى عالي ‪High Level Languages‬‬

‫‪ ‬لغات الجيل الرابع ‪Fourth Generation Languages‬‬

‫‪ ‬اللغات الطبيعية أو لغات الجيل الخامس‪Natural Language‬‬

‫‪ ‬لغات اإلنترنت ‪.Internet Language‬‬


‫تطبيقات في برمجة الحاسب‬ ‫‪8‬‬

‫‪ ‬لغات برمجة ذات مستوى منخفض ‪: Low Level Languages‬‬

‫سميت باللغات المنخفضة المستوى نظ اًر ألن المبرمجين يكتبون أوامر‬


‫البرنامج بمستوى قريب من مستوى فهم اآللة (الحاسب)‪ ،‬حيث تستخدم هذه‬
‫اللغة (‪ )1, 0‬في كتابة البرامج‪.‬‬
‫تعتبر لغات البرمجة ذات المستوى المنخفض من أوائل لغات البرمجة‬
‫ومنها‪:‬‬
‫أ‪ -‬لغة اآللة ‪: Machine Language‬‬
‫وتسمى "اللغة الثنائية" حيث إنها تتكون من سلسلة من ‪ 0‬و ‪ ،1‬وهي اللغة‬
‫الوحيد التي يفهمها الحاسب اآللي‪ ،‬حيث تحول جميع اللغات إلى لغة اآللة‪،‬‬
‫حتى تتمكن معدات الحاسب اآللي من التفاهم معها‪ ،‬وألنها تتكون من صفر‬
‫وواحد‪ ،‬لذا فقد تميزت هذه اللغة بالصعوبة نظ اًر لما تتطلبه من حفظ ودقة‬
‫في كتابة سلسلة طويلة من صفر وواحد بترتيب معين‪ ،‬مما ينتج عنه أخطاء‬
‫كثيرة من الترميز‪ ،‬ويجب أن يحدد المبرمج كل شي‪ ،‬فكل خطوة يجب أن‬
‫ينفذها البرنامج يجب أن ترمز‪ ،‬لذا فالمبرمج يجب أن يكون على علم بتركيب‬
‫الحاسب الداخلي‪ ،‬والعناوين الرقمية لمواقع التخزين‪ ،‬سواء للبيانات أو‬
‫التعليمات‪ ،‬كما أن لكل جهاز لغة آلة تختلف عن الجهاز اآلخر بحسب‬
‫النوع والتركيب مما يعني أنه يجب كتابة البرنامج بشكل كامل مره أخرى‬
‫عن الرغبة في تنفيذه على جهاز آخر‪.‬‬
‫‪9‬‬ ‫تطبيقات في برمجة الحاسب‬

‫ب‪ -‬لغة التجميع ‪: Assembly language‬‬


‫ظهرت لغة التجميع بوصفها أول لغة ترميز‪ ،‬تستخدم الرموز ‪Symbolic‬‬
‫‪ Code‬للتعبير عن تعليمات لغة اآللة‪ ،‬وذلك لمواجهة صعوبة الترميز بلغة‬
‫اآللة‪ ،‬ولغة التجميع لغة قريبة من لغة اآللة التي يفهمها الحاسب اآللي‪،‬‬
‫ويتم استعمال مختصرات ورموز يسهل حفظها وكتابتها لكل تعليمة من‬
‫تعليمات لغة اآللة‪ ،‬ولغة التجميع كما في لغة اآللة مصممة للعمل على‬
‫حاسب معين‪ ،‬مما يوفر قدرة أكبر على استغالل موارد الحاسب اآللي ووحدة‬
‫المعالجة المركزية بشكل أفضل‪ ،‬ويقوم البرنامج المسمى المجمع‬
‫‪ Assembler‬بترجمة البرنامج المكتوب بلغة المجمع إلى لغة اآللة‪.‬‬

‫‪ ‬لغات البرمجة ذات المستوى العالي ‪: High Level Languages‬‬

‫سميت بهذا االسم ألنه أصبح بإمكان المبرمج كتابة البرنامج دون معرفة‬
‫تفاصيل كيفية قيام الحاسب بهذه العمليات‪ ،‬كمواقع التخزين وتفاصيل‬
‫الجهاز الدقيقة‪ ،‬وتعبيرات لغات المستوى العالي هي تعبيرات شبيهة إلى‬
‫درجة كبيرة باللغة الطبيعية التي يستخدمها اإلنسان في حياته للتواصل‪،‬‬
‫والتخاطب مع اآلخرين‪.‬‬
‫ومن مميزات اللغات العليا التي تميزها من لغات المستوى البسيط‪ ،‬باإلضافة‬
‫إلى ما سبق‪ ،‬أن هذه اللغات غير مرتبطة بجهاز معين ‪ .‬أي يمكننا تنفيذ‬
‫البرنامج المكتوب بلغة من لغات المستوى العالي‪ ،‬كالفورتران أو الكوبول أو‬
‫تطبيقات في برمجة الحاسب‬ ‫‪01‬‬

‫البيسك على أكثر من جهاز‪ ،‬كما يمكن استخدام أكثر من لغة ترجمة على‬
‫حاسب معين ‪ .‬كذلك‪ ،‬فإن اكتشاف األخطاء وتصحيحها أصبح أكثر سهولة‬
‫بسبب سهولة قراءة البرامج وتتبعها وفهمها‪.‬‬
‫تسمى اللغات كالكوبول والفورتران والبيسك باللغات العليا الموجهة نحو‬
‫إجراءات الحل‪ ،Procedure - Oriented Languages ،‬وهي اللغات‬
‫التي يعطي فيها المبرمج التعليمات خطوة خطوة‪.‬‬
‫ويمر البرنامج المكتوب بلغات المستوى العالي بثالث مراحل قبل أن يكون‬
‫جاه اًز للتنفيذ‪:‬‬
‫‪ -1‬الترجمة ‪ : Translation‬تحويل البرنامج المكتوب بلغة المستوى العالي إلى‬
‫لغة اآللة ‪.‬‬
‫ربط الروتينات المكتبية الكائنة بالمكتبة‪ ،‬والتعليمات‬ ‫‪ -2‬الربط ‪:Linking‬‬
‫الضرورية بالبرنامج‪.‬‬
‫‪ -1‬التحميل ‪ : Loading‬يقوم البرنامج بتحميل شفرة الهدف والروتينات المكتبية‪،‬‬
‫والتعليمات على الذاكرة الرئيسة بغرض التنفيذ‪.‬‬
‫وكانت اللغات تصنف حسب قوتها إلى لغات أعمال‪ ،‬أو لغة علمية أو‬
‫لغات مبتدئين‪ ،‬وفي وقتنا الحاضر‪ ،‬فإن معظم اللغات يمكن استخدامها‬
‫بكفاءة في تطبيق أنواع التطبيقات كافة‪ ،‬ومن أشهر لغات المستوى العالي‬
‫لغة السي ‪. C‬‬
‫‪00‬‬ ‫تطبيقات في برمجة الحاسب‬

‫لغة السي ‪: C‬‬


‫طورت هذه اللغة في معامل ‪ Bell‬من قبل ‪ Dennis Ritchie‬وهي تطوير‬
‫لنسخة قديمه تسمى ‪ B‬من لغة ‪ BCPL‬التي ظهرت عام ‪1969‬م ‪ .‬لذا‬
‫سميت هذه النسخة الالحقة بـ ‪ ، C‬وتشتهر لغة ‪ C‬باستخدامها كلغة برمجة‬
‫نظم ‪ System Software‬حيث تستخدم لكتابة برامج النظم التشغيلية ‪،‬‬
‫إذ إنها تعد لغة قريبة‪ ،‬وتشبه إلى حد كبير لغة التجميع ‪ Assembly‬وتمتاز‬
‫بسرعتها الكبيرة‪ ،‬كما تملك مجموعة جيدة من التعليمات‪ ،‬كما أنها لغة قابلة‬
‫للنقل من جهاز إلى آخر لصغر الجزء الواجب نقله منها‪ ،‬وتعد لغة ‪ C‬من‬
‫وازداد اهتمام محترفي‬ ‫اللغات التركيبية ‪Structured Language‬‬
‫البرمجة بلغة الـ ‪ ،C‬والنسخ المحسنة منها ‪ C++‬إذ إن معظم التطبيقات‬
‫تكتب بها‪.‬‬

‫‪ ‬لغات الجيل الرابع )‪: Fourth-Generation language (4GL‬‬

‫سميت بهذا االسم نسبة إلى الجيل التي ظهرت فيه‪ ،‬مثل هذه اللغات التي‬
‫تتصف بقلة التعليمات التي يكتبها المبرمج لتحقيق هدف ما ‪ ،‬فما كان‬
‫يتطلب مئات األسطر من لغة بيسك أو اآلالف من لغة كوبول باستخدام‬
‫عدد بسيط من األسطر في هذه اللغات‪ ،‬تمتاز هذه اللغات بعدة مزايا‪:‬‬
‫‪ .1‬إنها لغة موجهة للنتائج أي إن المبرمج يهتم بطلب ما يريده من الحاسب‪،‬‬
‫دون أن يوجهه لكيفية القيام بذلك‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪02‬‬

‫‪ .2‬زادت من اإلنتاجية‪ ،‬ألن كتابة البرامج وصيانتها أكثر سهولة‪.‬‬


‫سهلة االستخدام‪ ،‬وتتطلب قليالً من التدريب على استخدامها‪ ،‬سواء كان‬
‫للبرمجة أو غيرها‪.‬‬
‫‪ .1‬لم يعد المستخدم بحاجة إلى التفكير في األجهزة أو هيكلية البرنامج‪.‬‬
‫وقد بدأت لغات الجيل الرابع باالنتشار بين المبرمجين‪ ،‬وبشكل كبير جداً‬
‫لما توفره لغات البرمجة هذه من سهولة في معاملة الملفات‪ ،‬وربط هذه‬
‫الملفات بعضها مع بعض بغرض التحديث أو طباعة التقارير‪.‬‬
‫كما توفر هذه اللغات قوة في المشاركة في الموارد البرمجية وخصوصاً‬
‫الملفات‪ ،‬ومن أمثال هذه اللغات لغة ‪ Dbase‬من ‪ ، Borland‬ولغة‬
‫‪ Foxpro‬من ‪ ، Microsoft‬و ‪ Oracle‬من ‪ ، Ingress‬وتستخدم لغة‬
‫في‬ ‫االستفسار المهيكلة ‪SQL Structured Query Language‬‬
‫عمليات بناء قواعد المعلومات وتحديثها‪ ،‬وتوفير الحماية الالزمة لها‪.‬‬

‫‪ ‬اللغات الطبيعية أو لغات الجيل الخامس ‪Natural Language‬‬

‫ويقصد بها لغة اإلنسان أي إيجاد لغة مبرمجة نستطيع بها توجيه الحاسب‬
‫للقيام بما نريد من أعمال‪ ،‬وذلك باستخدام التعبيرات الشائعة (اطبع تقري اًر‬
‫يحوي اسم الطالب والدرجة)‪ ،‬فالمستخدم ما عليه سوى طباعة األمر أو‬
‫إمالئه للحاسب الذي يلبي الطلب‪.‬‬
‫‪03‬‬ ‫تطبيقات في برمجة الحاسب‬

‫فالمستخدم يستطيع إمالء النص وكتابته بعبارات متعدد تحمل المعنى نفسه‪،‬‬
‫كأن يقول (اطبع االسم والدرجة لجميع الطالب) أو (اطبع اسم الطالب‬
‫ودرجة االختبار للجميع)‪ ،‬فالطلبان لهما المعنى نفسه‪ ،‬وإن اختلفا في‬
‫الصياغة‪ ،‬فلغات البرمجة هذه قادرة على فهم تراكيب الجمل المختلفة‪ ،‬وإن‬
‫اختلفت اللهجات أو كان هناك أخطاء لغوية‪ ،‬وإذا لم يفهم الحاسب المقصود‬
‫يقوم بتقديم أسئلة لمزيد من الوضوح والوصول إلى الهدف‪.‬‬
‫واألبحاث في مجال اللغات الطبيعية هو من المجاالت التي يبحثها علم‬
‫الذكاء االصطناعي ‪ . AI‬إذ إن فهم اللغة الطبيعية يحتاج إلى كثير من‬
‫الخبرات والعالقات في ربط الجمل وتحليل كل جملة الستنتاج المعنى‬
‫الصحيح‪ ،‬ومن ثم تقديم رد الفعل المناسب‪.‬‬

‫‪ ‬لغات اإلنترنت‪:‬‬

‫لغة ‪ : HTML‬وهي إحدى اللغات المستخدمة إلنشاء صفحات الويب ‪www‬‬


‫وهي عبارة عن لغة تحوي مجموعة من األوامر تؤدي إلى تكوين صفحات‬
‫الويب‪ ،‬إن إنشاء صفحة بواسطة تركيبة ‪ Ascii‬على منسق الكلمات يمكن‬
‫أن تحول إلى صفحة على الويب بإضافة بعض أوامر ‪. Html‬‬
‫إن أوامر ‪ Html‬تمكن المستخدم من تنفيذ عدد من العمليات على صفحات‬
‫الويب منها‪:‬‬
‫‪ ‬تحديد حجم النص وطريقة عرضه‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪04‬‬

‫‪ ‬إنشاء الروابط مع الوثائق والمستندات األخرى‪.‬‬


‫‪ ‬إنشاء نماذج تفاعلية مع الصفحة‪.‬‬
‫‪ ‬توفير الدعم للوسائط المتعددة كالفيديو والصوت والصورة‪.‬‬
‫لغة جافا ‪ : Java‬وهي من اللغات المستخدمة لالنترنت ولصفحات الويب‬
‫وتهدف لغة البرمجة هذه إلى إضافة الحيوية إلى صفحات‬ ‫في ‪www‬‬
‫الويب عبر النصوص المتحركة والرسوم التي تتحرك بشكل تفاعلي والوسائط‬
‫المتعددة‪.‬‬
‫ولغة جافا طورت من قبل شركة ‪ Sun Microsystems‬على غرار لغة‬
‫‪ C++‬وتقوم الوثائق المنشئة بلغة الترميز النصي ‪ Html‬باستدعاء برامج‬
‫جافا كما يكن تشغيلها بصورة منفردة‪.‬‬
‫‪05‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب الثاني‬

‫هياكل البيانات ‪Data Structure‬‬

‫الموضوع‪:‬‬

‫‪ .1‬مفهوم هياكل البيانات‬

‫‪ .2‬أهمية هياكل البيانات‬

‫‪ .1‬أنواع هياكل البيانات‬

‫أ‪ -‬هياكل بيانات ثابتة ساكنة‪(STATIC) :‬‬

‫ب‪ -‬هياكل بيانات ديناميكية‪(DYNAMIC):‬‬

‫‪ .4‬أشهر هياكل البيانات‬


‫تطبيقات في برمجة الحاسب‬ ‫‪06‬‬

‫الباب الثاني‬
‫هياكل البيانات‬

‫‪ .1‬مفهوم هياكل البيانات ‪: Data Structure‬‬

‫مفهوم هياكل البيانات ‪ – Data Structure‬تعني بنية أو هيكل البيانات‬


‫والتي تتيح ترتيب وتخزين البيانات في الكمبيوتر وتهيئتها إلستخدامها بشكل‬
‫سليم وبكفاءة عند التعامل معها والتعديل عليها‪.‬‬
‫وتستند هياكل البيانات ‪ Data Structure‬على قدرة الكمبيوتر في تخزين‬
‫البيانات في الذاكرة وتحديد نوع البيانات المناسب لكل تطبيق حتى يعمل ال‬
‫‪ Code‬أو الـ ‪ Algorithm‬بطريقة فعالة سليمة‪.‬‬
‫فبطبيعة الحال يحدث في مجال تطوير البرمجيات أن البيانات يزداد حجمها‬
‫وتزداد صعوبة تخزينها حتى أصبحت إدارة هذه البيانات والبحث فيها مسأل ًة‬
‫وبناء عليه صار‬
‫تتطلب سرع ًة فائق ًة للحفاظ على كفاءة وأداء وعمل التطبيقات‪ً ،‬‬
‫ٍ‬
‫كفاءة تحقق لنا القدرة على تخزين‬ ‫ٍ‬
‫مناسبة وذات‬ ‫من الضروري إيجاد طر ٍق‬
‫عة ٍ‬
‫ودقة عالية‪.‬‬ ‫بشكل يمكننا من إدارتها وإجراء العمليات عليها بسر ٍ‬
‫ٍ‬ ‫البيانات‬
‫يمكن تعريف هياكل البيانات بأنها ‪ :‬دراسة طرق تمثيل المبرمجين للبيانات‬
‫وعالقة البيانات باالجهزة (وخصوصا ذاكرة الكمبيوتر التي تخزن فيها البيانات)‬
‫كما تشمل طرق تنظيم المعلومات ‪ ,‬والخوارزميات الكفؤة في الوصول لها وطرق‬
‫التعامل معها او تداولها ( كاالضافة والحذف والتحديث والترتيب والبحث ‪..‬والخ)‬
‫‪07‬‬ ‫تطبيقات في برمجة الحاسب‬

‫وتكمن قوة المهندسين والمبرمجين في قدرتهم على اختيار هياكل البيانات‬


‫المناسبة للمسألة التي هم بصدد حلها‪.‬‬

‫‪ .2‬أهمية هياكل البيانات ‪:‬‬

‫ٍ‬
‫بمعدل هائل نتجت مشاكل كثيرة‬ ‫تعقيدا والبيانات تزداد‬
‫نظر ألن التطبيقات تزداد ً‬
‫ًا‬
‫ٍ‬
‫برمجية ذات‬ ‫ٍ‬
‫حلول‬ ‫يتم مواجهتها في التطبيقات وتقوم األبحاث بمحاو ٍ‬
‫الت إليجاد‬
‫ٍ‬
‫كفاءة عالية مثل هياكل البيانات ‪.‬‬
‫تسمح هياكل البيانات للمبرمجين بإدارة البيانات بالطرق األكثر فعالية والتي‬
‫تعزز أداء الخوارزمية‪ .‬وتسمح بتنفيذ نهج علمي على األنظمة التقليدية ‪.‬عندما‬
‫يتعلق األمر بجوانب مثل سرعة المعالجة أو المعالجة أو الطلبات المتعددة‬
‫والبحث من خالل العديد من السجالت‪ ،‬فإن هياكل البيانات تثبت فائدتها‪.‬‬
‫وأيضا تسمح باالستخدام الفعال للذاكرة‪ .‬وتعمل هياكل البيانات على تحسين‬
‫عادة في المواقف التي تتضمن معالجة‬
‫ً‬ ‫تأثير‬
‫استخدام الذاكرة‪ ،‬ويحدث هذا ًا‬
‫مجموعات بيانات ضخمة‪.‬‬
‫هياكل البيانات قابلة إلعادة االستخدام بحيث يمكن دمجها كحزمة‬
‫)‪ (package‬واحدة في مكتبة‪ ،‬ويمكن استخدام هذه المكتبات في مواقف‬
‫مختلفة من قبل مختلف أصحاب المصلحة حسب الحاجة‪.‬‬
‫مما يسمح للمستخدم بتحديد بنية البيانات‬
‫إنها تتيح حلوًال متعددة لمشكلة معينة‪ّ ،‬‬
‫التي ستحل المشكلة بأفضل طريقة‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪08‬‬

‫ونلخص أهمية هياكل البيانات فيما يلي ‪:‬‬


‫‪ ‬التحكم في توزيع البيانات والتعرف على طبيعتھا وبنائھا األساسي‬
‫بنسق ٍ‬
‫معين في الذاكرة‪.‬‬ ‫ٍ‬
‫ٍ‬
‫ومتماسكة من ناحية البناء والمنطق‪.‬‬ ‫بناء برامج ٍ‬
‫قوية‬ ‫‪‬‬
‫تمكن المبرمج من إبداع طر ٍق مبتكرٍة في كتابة البرامج المختلفة‪.‬‬ ‫‪‬‬
‫‪ ‬اختصار زمن التخزين واسترجاع البيانات من الذاكرة‪.‬‬

‫‪ .3‬أنواع هياكل البيانات ‪: Data Structure‬‬

‫‪ -1‬هياكل بيانات ثابتة ساكنة)‪: (STATIC‬‬


‫ٍ‬
‫حد‬
‫كالجداول والسجالت)‪ ، (records‬وعند التصريح بها يجب تعيين ّ‬
‫أعلى لحجم البيانات المدخلة فال تقبل اإلضافة فوق حجمھا المحدد‪.‬‬
‫‪ -2‬هياكل بيانات دیناميكية )‪: (DYNAMIC‬‬
‫أي متحركة متغيرة وتنقسم إلى نوعين‪:‬‬
‫ٍ‬
‫متتال‪ ،‬مثل‪:‬‬ ‫أ‪ .‬هياكل بيانات خطية‪ :‬وھي التي تنتظم فيها البيانات في خ ٍّ‬
‫ط‬
‫الملفات‪ ،‬والقوائم)‪ ، (lists‬والطوابير)‪ ، (queues‬والمكدسات)‪، (stacks‬‬
‫والمجموعات )‪. (sets‬‬
‫ب‪ .‬هياكل بيانات غير خطية‪ ،‬مثل‪ :‬األشجار )‪ (trees‬والخرائط)‪. (graphs‬‬
‫‪09‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .4‬أشهر هياكل البيانات ‪: Data Structure‬‬

‫أ‪ -‬المصفوفة ‪:Array‬‬


‫المصفوفة هي أبسط أنواع بنية البيانات‪ .‬إنه نوع بيانات خطي‪ .‬تحتوي‬
‫المصفوفة على عدة قيم من نفس نوع البيانات (عدد صحيح ‪ ،‬عدد عشري‬
‫‪ ،‬سلسلة ‪ ،‬إلخ)‪ .‬عادة ما تكون المصفوفة ذات حجم ثابت‪ .‬بعد تحديد حجم‬
‫المصفوفة في البداية ‪ ،‬ال يمكن زيادة حجم المصفوفة‪.‬‬
‫تتكون المصفوفة من عدة عناصر ‪ ،‬يتم تحديد كل منها بواسطة فهرس‬
‫مصفوفة أو مفتاح‪ .‬يمكنك إجراء أي نوع من العمليات الحسابية باستخدام‬
‫فهرس‪.‬‬
‫دعونا ننظر في مجموعة من األعداد الصحيحة بحجم ‪ .13‬يمكن تصور‬
‫تنظيم العناصر على النحو التالي‪:‬‬
‫‪25 13 0 -16 14 38 -65 42 97 38‬‬
‫إذا أطلقنا على هذه المصفوفة أسم ”‪ ، “a‬فيمكن الوصول إلى القيمة ‪ 14‬كـ‬
‫[‪ ، ]5‬حيث ُيطلق على ‪ 5‬اسم فهرس المصفوفة أو مفتاح‪.‬‬
‫في العديد من لغات البرمجة ‪ُ ،‬يشار إلى المركز األول بالفهرس ‪ .3‬في مثل‬
‫هذه الحالة ‪ ،‬يمكن الوصول إلى القيمة ‪ 14‬باعتبارها ]‪[4‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪21‬‬

‫تعد المصفوفات من بين أقدم وأهم هياكل البيانات ويتم استخدامها بواسطة‬
‫أيضا لتنفيذ العديد من هياكل البيانات‬
‫كل برنامج تقري ًبا‪ .‬يمكن استخدامها ً‬
‫األخرى ‪ ،‬مثل القوائم المرتبطة‪.‬‬
‫بعض تطبيقات المصفوفة‪:‬‬
‫ورقة األسئلة البسيطة عبارة عن مجموعة من األسئلة المرقمة مع تخصيص‬
‫بعض العالمات لكل منها ‪.‬تُستخدم المصفوفات ثنائية األبعاد (المصفوفات‬
‫ثنائية األبعاد) ‪ ،‬المعروفة باسم المصفوفة ‪ ،‬في معالجة الصور‪ .‬يتم‬
‫أيضا في معالجة الكالم ‪ ،‬حيث تكون كل إشارة كالم عبارة عن‬
‫استخدامه ً‬
‫مصفوفة‪.‬‬
‫ب‪ -‬قائمة مرتبطة ‪List‬‬
‫القائمة المرتبطة هي مجموعة من المعلومات ‪ /‬البيانات مرتبطة ببعضها‬
‫غالبا ما تسمى‬
‫غالبا ما تسمى البيانات بالعقد‪ً .‬‬
‫البعض بواسطة مراجع‪ً .‬‬
‫المراجع روابط أو مؤشرات‪ .‬يمكن للعقد تخزين أي نوع من البيانات (عدد‬
‫صحيح ‪ ،‬عدد عشري ‪ ،‬سلسلة)‪ .‬على عكس المؤشرات في المصفوفات ‪،‬‬
‫ال يمكن زيادة المؤشرات الموجودة في القائمة المرتبطة أو إنقاصها (الجمع‬
‫والطرح)‪.‬‬
‫‪20‬‬ ‫تطبيقات في برمجة الحاسب‬

‫بعض تطبيقات القائمة المرتبطة‪:‬‬


‫‪ ‬ترتبط الصور ببعضها البعض بحيث يستخدم برنامج عارض الصور‬
‫قائمة مرتبطة لعرض الصور السابقة والتالية باستخدام الزرين السابق‬
‫والتالي‪.‬‬
‫‪ ‬يمكن الوصول إلى صفحات الويب باستخدام روابط ‪ URL‬السابقة‬
‫والتالية المرتبطة باستخدام قائمة مرتبطة‪.‬‬
‫أيضا قائمة مرتبطة للتبديل بين الموسيقى‪.‬‬
‫‪ ‬تستخدم مشغالت الموسيقى ً‬
‫لتتبع األدوار في لعبة متعددة الالعبين ‪ ،‬يتم استخدام قائمة دائرية‬ ‫‪‬‬

‫مرتبطة‪.‬‬

‫جـ‪ -‬المكدس ‪Stack‬‬


‫أيضا بنية بيانات خطية ممثلة بمكدس‬
‫المكدس هو ً‬
‫فعلي حقيقي أو كومة‪ .‬في حالة المكدس ‪ ،‬يتم إدراج‬
‫العناصر وحذفها في نهاية واحدة تسمى الجزء العلوي‬
‫من المكدس‪.‬‬
‫يمكن توضيح المفهوم األساسي للمكدس من خالل التفكير في مجموعة‬
‫البيانات الخاصة بك على أنها مجموعة من الكتب حيث يمكنك فقط إزالة‬

‫العنصر العلوي من المكدس إلزالة الكتب منه‪ً .‬‬


‫أيضا ‪ ،‬يمكنك وضع كتاب‬
‫تطبيقات في برمجة الحاسب‬ ‫‪22‬‬

‫جديد في األعلى فقط‪ .‬يسمى هذا النوع من الوصول إلى البيانات ‪“Last‬‬
‫أيضا بقوائم ‪: LIFO‬‬
‫‪In First Out”.‬هذا هو السبب في تسمية الحزم ً‬
‫يمكن إجراء ثالث عمليات على مكدسات‪:‬‬
‫‪ ‬إدخال (“دفع”) عنصر في كومة‪.‬‬
‫‪ ‬حذف (“ظهرت”) عنصر من المكدس‪.‬‬
‫‪ ‬عرض محتويات العنصر األعلى في المكدس (“نظرة خاطفة”)‪.‬‬
‫بعض تطبيقات المكدس‪:‬‬
‫‪.‬‬ ‫‪ ‬تحويل ‪ infix‬إلى تعبيرات ‪postfix‬‬
‫‪ ‬يتم تنفيذ عمليات التراجع واإلعادة من خالل الحزم‪.‬‬
‫‪ ‬يتم تحليل الصيغ في اللغات باستخدام مكدسات‪.‬‬
‫‪ ‬يتم استخدام المكدس في العديد من األجهزة االفتراضية مثل ‪JVM‬‬
‫)‪. (Java Virtual Machine‬‬
‫د‪ -‬الطوابير ‪Queues‬‬
‫قائمة االنتظار هي بنية بيانات خطية ‪ ،‬يتم فيها إدراج العناصر من طرف‬
‫يسمى “الذيل” ويتم حذف العناصر الموجودة من الطرف اآلخر المسمى‬
‫“الرأس”‪ .‬يسمى هذا النوع من عملية وضع العناصر وإزالتها ‪“First In‬‬
‫”‪ First Out‬وبالتالي فإن قائمة االنتظار هي بنية ‪ FIFO‬يتم فيها إخراج‬
‫جدا على قائمة‬
‫العنصر الذي تم إدخاله أوالً أوالً‪ .‬من األمثلة الشائعة ً‬
‫‪23‬‬ ‫تطبيقات في برمجة الحاسب‬

‫االنتظار طوابير األشخاص الذين ينتظرون عند عدادات البنك ‪ ،‬وعدادات‬

‫الحجز ‪ ،‬وما إلى ذلك‪ .‬يتم تقديم أول شخص في الصف الذي يذهب أوالً‬
‫أوالً بينما يتم تقديم آخر شخص في الصف األخير‪.‬‬

‫تسمى عملية إضافة عنصر إلى قائمة االنتظار ”‪ “enqueuing‬وعملية إزالة‬


‫عنصر من قائمة انتظار تسمى‪“dequeuing”.‬‬
‫بعض تطبيقات القائمة المرتبطة‪:‬‬
‫‪ ‬يستخدم نظام التشغيل قائمة انتظار لجدولة المهام‪.‬‬
‫‪ ‬يمكن استخدام للتعامل مع االزدحام في قائمة انتظار الشبكات‪.‬‬
‫االنتظار‪.‬‬ ‫يتم ترتيب حزم البيانات في االتصال بتنسيق قائمة‬ ‫‪‬‬

‫ه‪ -‬الرسم البياني ‪Graphs‬‬


‫الرسم البياني هو بنية بيانات خطية حيث يمكن للمرء أن ينتقل من عقدة‬
‫إلى أخرى بعدة طرق مختلفة‪ .‬تتكون بنية بيانات الرسم البياني من مجموعة‬
‫محدودة من األزواج المرتبة ‪ ،‬تسمى الحواف أو األقواس ‪ ،‬لكيانات معينة‬
‫تطبيقات في برمجة الحاسب‬ ‫‪24‬‬

‫تسمى العقد أو الرؤوس‪ .‬كما هو الحال في الرياضيات ‪ ،‬يقال أن الحافة‬


‫)‪ (x,y‬تشير أو تنتقل من ‪ x‬إلى ‪ ، y‬على سبيل المثال حافة (جانب)‬
‫مثلث تصل بين رأسيها‪.‬‬
‫قد تكون العقد جزًءا من بنية الرسم‬
‫البياني أو قد تكون كيانات خارجية‬
‫ممثلة بمؤشرات أو مراجع عدد‬
‫صحيح‪ .‬قد ترتبط بنية بيانات الرسم‬
‫أيضا بكل حافة ببعض قيم‬
‫البياني ً‬
‫الحافة ‪ ،‬مثل تسمية رمزية أو جدول‬
‫بيانات رقمي‪.‬‬
‫بعض تطبيقات الرسم البياني ‪:‬‬
‫‪ ‬تستخدم واجهة برمجة تطبيقات الرسم البياني في ‪ Facebook‬بنية‬
‫الرسوم البيانية‪.‬‬
‫أيضا مفهوم الرسوم‬
‫‪ ‬يستخدم الرسم البياني المعرفي من ‪ً Google‬‬
‫البيانية‪.‬‬
‫‪ ‬تستخدم خوارزمية ‪( Dijkstra‬أقصر خوارزمية مسار) بنية رسم بياني‬
‫للعثور على أقصر مسار بين العقد‪.‬‬
‫بيانيا‪.‬‬
‫رسما ً‬‫يستخدم نظام المالحة ‪(GPS‬نظام تحديد المواقع العالمي) ً‬ ‫‪‬‬
‫‪25‬‬ ‫تطبيقات في برمجة الحاسب‬

‫و‪ -‬شجرة ‪Tree‬‬

‫الشجرة هي واحدة من أقوى هياكل البيانات وأكثرها ً‬


‫تقدما‪ .‬يتم استخدامه في‬
‫الذكاء االصطناعي )‪ (AI‬والتصميم‪ .‬الشجرة عبارة عن بنية بيانات هرمية‬
‫غير خطية تتصل فيها العقد في الحواف‪.‬‬
‫في الشجرة على عكس هياكل البيانات الخطية ‪ ،‬يمكن للمرء أن ينتقل من‬

‫عقدة إلى أخرى بعدة طرق مختلفة‪ .‬تتكون الشجرة من عقد (تحتوي على‬
‫البيانات) وحواف تربط العقد‪.‬‬
‫من أجل إجراء أي عملية على شجرة ‪ ،‬تحتاج إلى الوصول إلى العقدة‬
‫أيضا‬
‫المحددة‪ .‬تسمى عملية الوصول إلى عقدة من أعلى عقدة (تسمى ً‬
‫الجذر) اجتياز الشجرة‪.‬‬
‫هناك ثالثة أنواع من عمليات اجتياز األشجار‪:‬‬
‫‪ : Inorder ‬أوال وقبل كل شيء تتم زيارة العقدة اليسرى أو الشجرة‬
‫الفرعية اليسرى ‪ ،‬ثم تتم زيارة الجذر ‪ ،‬و ًا‬
‫أخير تتم زيارة العقدة اليمنى أو‬
‫الشجرة الفرعية اليمنى‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪26‬‬

‫‪ ‬الطلب المسبق‪ :‬أوالً وقبل كل شيء تتم زيارة الجذر ‪ ،‬ثم تتم زيارة‬
‫العقدة اليسرى أو الشجرة الفرعية اليسرى ‪ ،‬و ًا‬
‫أخير تتم زيارة العقدة اليمنى‬
‫أو الشجرة الفرعية اليمنى‪.‬‬
‫‪ ‬الطلب الالحق‪ :‬أوالً وقبل كل شيء تتم زيارة العقدة اليسرى أو الشجرة‬
‫الفرعية اليسرى ‪ ،‬ثم العقدة اليمنى أو الشجرة الفرعية اليمنى ‪ ،‬و ًا‬
‫أخير‬
‫تتم زيارة الجذر‪.‬‬
‫بعض تطبيقات الشجرة‪:‬‬
‫‪ ‬يستخدم محلل ‪ XML‬خوارزميات الشجرة‪.‬‬
‫‪ ‬يتم استخدام خوارزمية قائمة على القرار في التعلم اآللي والتي تعمل‬
‫على خوارزمية الشجرة‪.‬‬
‫أيضا هياكل بيانات الشجرة للفهرسة‪.‬‬
‫‪ ‬تستخدم قواعد البيانات ً‬
‫أيضا هياكل الشجرة‪.‬‬
‫‪ ‬يستخدم خادم اسم المجال )‪ً (DNS‬‬
‫ز‪ -‬جدول تجزئة‬
‫جدول التجزئة هو مصفوفة حيث يشير كل فهرس إلى قائمة مرتبطة على‬
‫أساس قيمة التجزئة‪ .‬قيمة التجزئة هي قيمة تحددها دالة تجزئة‪ .‬تحدد دالة‬
‫بناء على البيانات التي تخزنها‪ .‬يسمح هذا بالوصول إلى‬
‫التجزئة قيمة فريدة ً‬
‫دائما مكان البحث عن البيانات‪.‬‬
‫البيانات في وقت ثابت ألن الكمبيوتر يعرف ً‬
‫‪27‬‬ ‫تطبيقات في برمجة الحاسب‬

‫بعض تطبيقات جدول التجزئة‪:‬‬


‫عادة ما تكون البيانات المخزنة في قواعد البيانات من تنسيق قيمة المفتاح‬
‫ً‬
‫والتي تتم من خالل جداول التجزئة‪.‬‬
‫شيئا ما ليتم البحث فيه في ‪ Google Chrome‬أو‬
‫في كل مرة نكتب ً‬

‫متصفحات أخرى ‪ ،‬فإنه يولد اإلخراج المطلوب ً‬


‫بناء على مبدأ التجزئة‪.‬‬
‫في أجهزة الكمبيوتر الخاصة بنا ‪ ،‬لدينا ملفات مختلفة مخزنة فيها ‪ ،‬يحتوي‬
‫كل ملف على جزأين مهمين للغاية من المعلومات وهما اسم الملف ومسار‬
‫الملف‪ .‬إلجراء اتصال بين اسم الملف ‪ ،‬يتم استخدام جداول تجزئة مسار‬
‫الملف المقابل‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪28‬‬

‫الباب الثالث‬

‫البرمجة الشيئية‬

‫‪Object Oriented Programming‬‬

‫الموضوع‪:‬‬

‫مقدمة‬ ‫‪.1‬‬

‫معنى البرمجة الشيئية‬ ‫‪.2‬‬

‫بعض المفاهيم األساسية في البرمجة الشيئية‬ ‫‪.3‬‬

‫مزايا البرمجة الشيئية‬ ‫‪.4‬‬


‫‪29‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب الثالث‬

‫البرمجة الشيئية‬

‫‪Object Oriented Programming‬‬


‫‪ -1‬مقدمة ‪:‬‬

‫تتعدد لغات البرمجة التي تم تطويرها حتى اليوم ‪ .‬وكل واحدة من هذه اللغات‬
‫تعد مناسبة أكثر من غيرها حسب طبيعة التطبيق الذي يتم من أجله كتابة‬
‫البرنامج فهناك لغات تناسب التطبيقيات الهندسية ‪ ،‬وأخرى تناسب التطبيقات‬
‫التجارية وهكذا‪ .‬ولكن السمة المشتركة لمعظم هذه اللغات مثل‬
‫(‪ ) C,PASCAL,FORTRAN,BASIC‬هو إنها تستخدم األسلوب التقليدي‬
‫للبرمجة ‪ .‬وهذا األسلوب يعتمد على تحديد الدقيق لترتيب تنفيذ األوامر وإجراء‬
‫العمليات‪.‬‬
‫أما في البرمجة الشيئية يوجد اختالف حيث ان تنفيذ األوامر يتببع التسلسل‬
‫المنطقي‪ .‬فلم يعد على المبرمج أن يحدد أسلوب األستجابة لطلبات المشغل‪.‬‬
‫ولكن بدل من هذا فإن المشغل يستطيع عن طريق الضغط على ازرار معينة‬
‫على الشاشة ان يحصل على استجابة لما يريده ‪ .‬وذلك ألن كل فعل من المشغل‬
‫يتسبب في حدوث حدث معين وهذا بدوره يدفع برنامج معين أو جزء من برنامج‬
‫تطبيقات في برمجة الحاسب‬ ‫‪31‬‬

‫إلى العمل علما بأن هذا البرنامج أو الجزء المراد تشغيله يكون مكتوبا مسبقاً‬
‫ومرتبطاً بهذا الحدث‪.‬‬
‫فمثال إذا ضغط المشغل على زر معين إلجراء عملية حسابية فإن ضغط‬
‫على هذا الزر يتسبب في حدوث ( حدث الضغط على الزر) وهذا بدوره‬
‫يجعل البرنامج يقوم بتنفيذ الجزء الخاص بإجراء العملية الحسابية ‪.‬‬

‫‪ -2‬معنى البرمجة الشيئية ‪: OOP‬‬

‫عبارة عن أسلوب جديد في البرمجة من حيث وحدة بناء البرنامج ومن حيث‬
‫الخصائص الجديدة التي يسمح بها هذا األسلوب حيث يعتبر وحدة بناء البرنامج‬
‫هو الصف ‪ Class‬الذي يتكون من البيانات ومعها الدوال (العمليات ) التي‬
‫على هذه البيانات‪ .‬تعني البرمجة المرئية حاجة المستخدم إلى إنشاء تطبيقاته‬
‫الخاصة تحت نظام ويندوز‪ ،‬إذ إنه البد له من لغة برمجة جيدة تعينه على‬
‫إنشاء تلك التطبيقات وتعتبر فيجوال بيسك من اللغات العالمية العالية المستوى‪،‬‬
‫والتي تتميز بالسهولة في االستخدام‪ ،‬ويجد فيها المبرمجون غايتهم لكتابة معظم‬
‫التطبيقات العاملة تحت‪ .‬كما إنها أداة قوية وفعالة لتطوير تطبيقات متوافقة مع‬
‫بيئة ويندوز التي توفر بيئة تطوير متكاملة سهلة االستخدام يمكن من خاللها‬
‫إنشاء الحلول في زمن قياسي عن طريق فلسفة البرمجة المرئية‪.‬‬
‫ولهذا الغرض ولتحقيق السهولة والبساطة‪ ،‬تم تصمم الشاشات ونوافذ البرنامج‬
‫عن طريق نقرات وتحريكات خفيفة بالفأرة‪.‬‬
‫‪30‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ -3‬المقارنة بين أسلوب البرمجة الهيكلية و الكائنية‪:‬‬

‫كان األسلوب الشائع في تصميم البرامج القوية هو أسلوب البرمجة الهيكلية‬


‫الذي يعتمد على بناء هيكل البيانات دون االهتمام بالعمليات التي يمكن تطبيقها‬
‫على البيانات‪ ،‬بعد ذلك بدأ المبرمجون في الكشف عن اسلوب جديد للبرمجة‬
‫يجمع البيانات والعمليات في بنية واحدة وذلك للعالقة الوثيقة بين البيانات‬
‫والعمليات وكان هذا األسلوب هو اسلوب البرمجة الكائنية ‪.‬‬

‫‪ -4‬بعض المفاهيم األساسية في البرمجة الشيئية ‪:OOP‬‬

‫المفاهيم األربعة األساسية للبرمجة الشيئية )‪:(OOP‬‬


‫‪ ‬التغليف )‪(encapsulation‬‬
‫التجريد )‪(abstraction‬‬ ‫‪‬‬
‫الوراثة )‪(inheritance‬‬ ‫‪‬‬
‫تعدد األشكال )‪(Polymorphism‬‬ ‫‪‬‬
‫أوال‪ :‬التغليف)‪: (Encapsulation‬‬
‫فلنقل أن عندنا تطبيق به بعض األشياء المختلفة منطقياً تتواصل مع‬
‫بعضها بعضاً طبقاً للقواعد المحدده بالتطبيق‪.‬‬
‫يتحقق التغليف )‪ (encapsulation‬عندما تبقي األشياء )‪(objects‬‬
‫حالتها )‪ (state‬خاصه )‪ (private‬بداخل فئتها ‪ (class),‬بما يعني أن‬
‫تطبيقات في برمجة الحاسب‬ ‫‪32‬‬

‫األشياء األخرى ال تقدر على اإلتصال المباشر لهذه الحاله ‪(state),‬‬


‫والبديل هو القدرة على الوصول لقمائمة من الوظائف العامه ‪public‬‬
‫‪ functions - called methods‬لذلك تدير وتتحكم األشياء‬
‫)‪ (objects‬بحالتها الخاصه )‪ (state‬عن طريق ‪ methods‬وال يمكن‬
‫ألي فئة أخرى التغيير فيها ما لم يسمح بذلك و إذا كنت تريد التواصل مع‬
‫األشياء فيجب أن تستعمل الـ ‪ methods‬المتوفره ولكن المفترض أنك ال‬
‫تقدر على تغيير الحاله)‪ (state‬فلنقل انك تبني ‪( tiny Sims game‬لعبه‬
‫صغيره) بها بشر وبها قطه يتواصلون مع بعضهم البعض ونحن نريد ان‬
‫نطبق مبدا التغليف )‪ (encapsulation‬لذلك سنغلف كل ما يتعلق‬
‫بالقطه )‪ (all cat logic‬في فئه تسمى القطة )‪ (Class Cat‬مما يمكن‬
‫ان يبدو كهذا‪.‬‬
‫‪33‬‬ ‫تطبيقات في برمجة الحاسب‬

‫يمكنك أن تطعم القطة ولكن ال يمكنك التحكم مباشرًة في كمية الجوع عند هذه‬
‫القطة‪ .‬وهنا حاالت )‪ (states‬للقطة قد تم انشائها أنها خاصه ‪(private‬‬
‫كالمزاج )‪ (mood‬والجوع )‪ (hunger‬والطاقة )‪(energy‬‬ ‫)‪variables‬‬
‫وعندها أيضا ‪ method‬تسمى )(‪ meaw‬وهي الوحيده القادره على أن تنفذها‬
‫ال يمكن ألي فئه )‪ (class‬أخرى أن تقول لها أن تنفذها‪.‬‬
‫وما يقدرون على فعله (الفئات االخرى) يتم تعريفه في ‪public methods‬‬
‫كالنوم) ‪ ( sleep‬واللعب ) )(‪ ( play‬واإلطعام ))(‪ (feed‬كل واحد منهم يمكن‬
‫له تغيير حالته الداخليه (الحاله الخاصه بفئته) بطريقة ما ويمكن أيضاً أن‬
‫يستدعي )(‪ meaw‬وبهذا يكون قد تحقق التواصل ما بين الحاالت الخاصه‬
‫والطرق العامة )‪ (the private state and public methods‬وهذا هو‬
‫مبدأ التغليف)‪(Encapsulation‬‬
‫ثانيا ‪ :‬التجريد ‪Abstraction‬‬
‫يمكن أن يتم اعتبار مبدأ التجريد )‪ (Abstraction‬هو امتداد لمبدأ التغليف‬
‫)‪ (Encapsulation‬غالبا ما تكون البرامج في التصميم المبني على األشياء‬
‫)‪ (object-oriented design‬كبيرة للغاية واألشياء )‪ (objects‬المنفصله‬
‫تتواصل مع بعضها البعض كثي ار لذلك يكون الحفاظ على قاعدة بيانات كهذه‬
‫لسنوات أمر صعب مع وجود تغييرات طوال هذه السنوات‪.‬‬
‫والتجريد )‪ (abstraction‬هو المبدأ الذي يهتم لتسهيل حل هذه المشكله‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪34‬‬

‫تطبيق التجريد يعني أن األشياء يجب أن تعرض آلية من مستوى عالي‬


‫‪ level mechanism) (high-‬الستخدامها فقط‪.‬‬
‫هذه اآللية يجب أن تخفي التفاصيل المنفذة داخلياً وتعرض فقط العمليات‬
‫المرتبطة بهذا الشئ‪.‬‬
‫فكر في ألة تحضير قهوة تصنع أشياء كثيرة وتصنع ضوضاء مزعجة بالداخل‬
‫ولكن كل ما يجب عليك فعله هو وضع القهوه وضغط الزر‪.‬‬
‫هذه اآلليه يجب أن تكون سهلة اإلستخدام وناد اًر ما يتم تغييرها‪ .‬فكر فيها‬
‫كأنها مجموعة صغيرة من ‪ public methods‬والتي يمكن ألي فئة أخرى أن‬
‫تتعامل معها بدون "معرفة" كيفية عملها من الداخل‪.‬‬
‫تطبيق أخر من الحياة العملية؟‬
‫فكر كيف تستخدم هاتفك‪:‬‬
‫‪35‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الهواتف المحمولة معقدة ولكن سهلة اإلستخدام‪.‬‬


‫أنت تتفاعل مع هاتفك عن طريق ضغطات قليلة والذي يحدث بالداخل أنت ال‬
‫تعرفه‪ .‬ال يجب عليك أن تعرف (حتى تستخدمه) ألن التفاصيل الداخلية مخفية‬
‫ما يجب عليك فقط هو مجموعه من األفعال (كالنقر على الشاشه او ما شابه)‪.‬‬
‫التغييرات في التنفيذ كتحديث النظام )‪ (software update‬ناد اًر ما يؤثؤ على‬
‫مبدأ التجريد‪.‬‬

‫ثالثا ‪ :‬الوراثة ‪Inheritance‬‬


‫حسناً لقد رأينا التغليف )‪ (encapsulation‬والتجريد )‪ (abstraction‬وكيف‬
‫يمكن أن يساعدونا على أن نطور وننفذ قاعدة بيانات كبرى‪.‬‬
‫ولكن هل تعرف مشكلة أخرى في هذه الطريقه من التصميم ‪(OOP‬‬
‫)‪Design‬؟‬
‫غالباً ما تكون األشياء متشابهه جداً ويتشاركون في أشياء كثيرة ولكنهم ال‬
‫يتشاركون في التنفيذ الداخلي‪.‬‬
‫لذلك كيف يمكننا أن نعيد إستخدام ما هو مشترك ونستخرج ما هو فريد من‬
‫نوعه في فئة منفصله)‪ (separate class‬؟‬
‫افضل طريقة لفعل هذا هي الوراثة‪.‬‬
‫والتي تعني أنك تصنع فئه إبن )‪ (child class‬مشتق من فئة أخرى وهي‬
‫الفئة األب)‪ . (parent class‬الفئة اإلبن )‪ (child class‬تعيد استخدام كل‬
‫تطبيقات في برمجة الحاسب‬ ‫‪36‬‬

‫الحقول )‪ (fields‬كالمتغيرات ‪ variables‬والطرق )‪ methods‬من األب‬


‫)‪ ) class‬وهو الجزء المشترك ويمكن أن ينفذ الجزء الزائد‬ ‫‪(parent‬‬
‫عليه الجزء المخصوص لهذا اإلبن‪.‬‬
‫على سبيل المثال‪:‬‬

‫المعلم الخاص هو فئه من المعلم والمعلم هو فئه من البشر‪.‬‬


‫اذا كان برنامجنا يريد أن يدير المعلم الخاص والعام ‪(public and private‬‬
‫)‪ teachers‬وأيضا فئات أخرى من البشر كالطالب فيمكننا أن ننفذ هذا‬
‫التسلسل الهرمي‪.‬‬
‫بهذه الطريقة كل الفئات اإلبن )‪ (child classes‬تضيف ما هو مهم لها بينما‬
‫تعيد إستخدام ما هو متشابه مع الفئه األب‪(parent classes).‬‬
‫‪37‬‬ ‫تطبيقات في برمجة الحاسب‬

‫رابعا ‪ :‬تعدد األشكال‪Polymorphism‬‬


‫نحن اآلن قد وصلنا ألصعب مصطلح وهو الـ ‪ Polymorphism‬وهو ما يعني‬
‫تعدد األشكال في اليونانية‪.‬‬
‫لذلك نحن نعرف قوة الوراثة )‪ (inheritance‬ونسخدمها بسعاده ولكن هنا يوجد‬
‫مشكلة‪.‬‬
‫لنقل أنه يوجد فئة أب )‪ (parent class‬وبعض الفئات األبناء ‪(child‬‬
‫)‪ classes‬ترث منه أحياناً نريد أن نستعمل مجموعة من هذة الفئات أو طريقة‬
‫)‪ (method‬في الفئه األب )‪ (parent class‬ولكن نريد أن نستعملها لإلبن‬
‫أيضا‪ .‬يمكن أن يتم حل هذا عن طريق تعدد األشكال‪(polymorphism).‬‬
‫تعدد األشكال )‪ (polymorphism‬يمنحك الطريقة الستخدام فئه ابن ‪(child‬‬
‫)‪class‬كأبيها بالضبط لذلك ال يوجد ارتباك لخلط األنواع ولكن كل فئة ابن‬
‫)‪(child class‬تحافظ على طرقها )‪ (methods‬الخاصه كما هي‪.‬‬
‫عادة عن طريق تعريف فئة األب كواجهة )‪(parent interface‬‬
‫ً‬ ‫هذا يحدث‬
‫لكي يتم اعادة استخدامها‪ .‬وهي التي تحدد مجموعة الطرق المشتركه وبعدها‬
‫ينفذ كل ابن طرقه الخاصه من هذه الطرق العامه‪ .‬في اي وقت تتوقع مجموعه‬
‫)‪ (as list‬او طريقة أن يكون هناك نسخة )‪ (instance‬من األب الذي به‬
‫الطرق المشتركة )‪ (common methods‬تهتم االلغه بتقييم التنفيذ الصحيح‬
‫للطريقة العامه )‪ (common methods‬بدون األخذ في اإلعتبار أي إبن قد‬
‫تم تمريره‪ (which child is passed).‬ألق نظرة على هذه الرسمة لتنفيذ‬
‫تطبيقات في برمجة الحاسب‬ ‫‪38‬‬

‫األشكال الهندسية والذين يعيدوا استخدام واجهة مشتركه لحساب المساحه‬


‫والمحيط‪:‬‬

‫مثلث و دائرة ومربع اآلن يمكن استخدامهم في المجموعه نفسها‪.‬‬


‫‪Figure‬‬ ‫هذه األشكال الثالثة ترث الفئه األب والتي تسمى ب‬
‫مختلطه‬ ‫قائمه‬ ‫انشاء‬ ‫على‬ ‫القدره‬ ‫تعطيك‬ ‫‪Interface‬‬
‫من ‪ triangles‬و ‪ circles‬و ‪ rectangles‬و معاملتهم كأنهم نفس الشئ‪.‬‬
‫لذا اذا استدعينا قائمه لحساب المساحه لكل عنصر نجد أن الطريقة الصحيحة‬
‫قد تم استدعائها وتنفيذها‪ .‬فمثال اذا كان العنصر هو مثلث فسيتم استدعاء‬
‫الطريقة الخاصه لحساب المساحه بالمثلث )(‪ CalculateSurface‬وبالمثل‬
‫‪39‬‬ ‫تطبيقات في برمجة الحاسب‬

‫اذا كانت دائرة سيتم استدعاء الطريقة الخاصه بالدائره لحساب‬


‫المساحة )(‪ CalculateSurface‬وهكذا‪.‬‬
‫اذا كان لديك طريقة )‪ (method‬والتي تعمل على شكل معين بإستخدام معامل‬
‫معين في هذا الشكل فال يجب عليك أن تعيد كتابتها مره ثالث مره (مره للمثلث‬
‫‪Figure‬‬ ‫ومره للمربع ومره للدائرة) يمكنك أن تكتبها مره وأن تقبل شكالً‬
‫ك ‪ argument‬ال يهم اذا كنت ترسل مثلثاً أو دائرة أو مربع طالما أنهم‬
‫ينفذون )(‪ CalculateParamter‬فال يهم ما هو نوعهم ‪.‬‬

‫‪ -5‬مزايا البرمجة الشيئية ‪: OOP‬‬

‫‪ ‬قابلة إلعادة االستخدام‪ ،‬حيث يمكن استخدام )‪ (objects‬عبر برمجيات‬


‫متعددة ‪.‬‬
‫‪ ‬يسمح بسلوك خاص ب )‪ (Class‬معين‪ ،‬من خالل تعدد األشكال‬
‫)‪. (polymorphism‬‬
‫غالبا ما تحتوي )‪(Classes‬‬
‫‪ ‬من األسهل تصحيح األخطاء البرمجية‪ً ،‬‬
‫على جميع المعلومات القابلة للتطبيق عليها ‪.‬‬
‫‪ ‬تأمين وحماية المعلومات‪ ،‬من خالل التغليف)‪. (Encapsulation‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪41‬‬

‫الباب الرابع‬

‫االتصال بقواعد البيانات‬

‫‪ .1‬تعريف قواعد البيانات‬


‫‪ .2‬نظم قواعد البيانات‬
‫‪ .3‬مكونات نظم قواعد البيانات‬
‫‪ .4‬نظم إدارة قواعد البيانات‬
‫‪ .5‬مكونات قاعدة البيانات‬
‫‪ .6‬مبادئ تصميم قواعد البيانات‬
‫‪ .7‬أدوات البحث لالتصال بقواعد البيانات‬
‫‪40‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب الرابع‬

‫االتصال بقواعد البيانات‬

‫‪ .1‬تعريف قواعد البيانات‪:‬‬

‫تعرف قواعد البيانات بأنها مجموعة من البيانات المرتبطة وذات الصلة مرتبة‬
‫بطريقة معينة بحيث يمكن البحث فيها وتحديثها بسهولة ويتم فيها تحاشي‬
‫تكرار البيانات‪ .‬إضافة إلى تميز هذه البيانات باستقالل نسبي عن البرامج‬
‫المسئولة عن المعالجة الخاصة بهذه البيانات ‪ ،‬وتشكل االستقاللية عن‬
‫البرامج نقطة هامة يستفاد منها عند تطوير األنظمة ‪ ،‬وإعـادة الهيكلة عند‬
‫الحاجة إلى متطلبات جديدة أو بناء نظام جديد‪.‬‬
‫وتعرف قواعد البيانات الرقمية على الشبكة بأنها " ‪ :‬مجموعة من البيانات‬
‫المرتبطة والمنظمة في الصورة االلكترونية التي يمكن الدخول عليها‬
‫ومعالجتها بواسطة برمجيات كمبيوتر متخصصة" ‪.‬‬
‫‪ .2‬نظم قواعد البيانات ‪Systems Database:‬‬

‫نظام قاعدة البيانات هو نظام إحصائي للحفظ والتسجيل‪ .‬بمعنى آخر هو‬
‫نظـام يستخدم الكمبيوتر الغرض العام منه هو تخزين البيانات والسماح‬
‫للمستخدمين باسترجاع وتحديث هذه البيانات عند الحاجة إليها‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪42‬‬

‫‪ .3‬مكونات نظم قواعد البيانات‪:‬‬

‫تتكون نظم قواعد البيانات من عدة مكو نات ‪ ،‬تتجمع ‪ ،‬لتشكل منظومة‬
‫متكاملة ومترابطة على النحو التالي‪:‬‬
‫‪ ‬البيانات ‪ :Data‬تعتبر البيانات النقطة التي تعمل حول محورها جميع‬
‫مكونـات أنظمـة قواعـد البيانـات ‪ ،‬والبيانات يتم إدخالها وتخزينها جميعاً‬
‫في قاعدة بيانات فردية في األنظمة األكبر سوف يكون كل منهما‬
‫متداخال ومتشاركا‪.‬‬
‫األجهزة وملحقاتها ‪ : Hard Ware‬أن مكونات األجهزة وملحقاتها‬ ‫‪‬‬

‫للنظام تتكون من أجهزة التخزين الثانوية واألجهزة المرتبطة بوجود ذاكرة‬


‫رئيسية والتي يتم استخدامها لتدعيم تنفيذ برامج النظام لقاعدة البيانات‪.‬‬
‫‪ ‬البرامج ‪ : Software‬لما كانت قاعدة البيانات تساعد في تحقيق‬
‫مجموعة من األهداف المـؤثرة علـى األنـشطة الرئيسية في مجاالت‬
‫تطبيقات التجهيز اآللي للبيانات ‪ ،‬فإنه يلزم وجود نظم معينة لتنظيم‬
‫وإدارة البيانات المخزنة ولذلك ال بد من توفير عدد من البرامج التي‬
‫تشمل أنظمـة البرمجـة الخاصـة بقواعد البيانات إضافة إلى البرامج‬
‫الخاصة بأجهزة الحاسب الشخصية والشبكات‪.‬‬
‫‪43‬‬ ‫تطبيقات في برمجة الحاسب‬

‫)‪Database Management Systems (DBMS‬‬ ‫‪ .4‬نظم إدارة قواعد البيانات‪:‬‬

‫ويعرف نظام إدارة قاعدة البيانات بأنه عبارة عن ‪ ( :‬برنامج وظيفته إجراء‬
‫المالءمـة بـين قاعدة البيانات والمستخدم حيث يدير هذا النظام كل متطلبات‬
‫أعمال قاعدة البيانات) ‪ ،‬وبهذا يبقى المستخدم بمعزل عن التفاصيل الفيزيائية‬
‫لملفات قاعدة البيانات ولموضـعها وتنـسيقها وهي تطوير لنظم إدارة الملفات‬
‫مثل هذه النظم التي تتحكم في هيكل أو بناء قاعدة البيانـات فضال عن‬
‫التحكم في سبل الوصول للبيانات المخزنة في قاعدة البيانات‪.‬‬
‫‪ .5‬مكونات قاعدة البيانات‪:‬‬

‫وتتكون قاعدة البيانات من أربعة عناصر‪:‬‬


‫أ‪ .‬الجداول ‪ :Tables‬وهي العنصر األساسي في كل قواعد البيانات ‪،‬‬
‫وتحتوي على البيانات مرتبة في سـجالت وحقول‬
‫‪ o‬سجل البيانات ‪ :Record‬هو عبارة عن سطر واحد من الجدول‬
‫يحتوي على مجموعة مـن الحقول المرتبطة ‪ ،‬أو بمعنى آخر هو‬
‫مجموعة البيانات المخزنة في الحقول والتي تخص عنصر واحد ‪.‬‬
‫ويعتبر السجل الوحدة المتداولة من البيانات التي تزودنا بالمعلومات‬
‫الصحيحة‪ ،‬وتتعلـق بحدث أو موضوع معينه وهي تعامل كوحدة‬
‫واحدة ‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪44‬‬

‫‪ o‬حقل البيانات ‪: Field‬هو عنصر محدد داخل السجل ويرتبط بنوعية‬


‫خاصة من المعلومات ‪ ،‬ويمكن القول بأنه اللغة األساسية في قواعد‬
‫البيانات ‪ ،‬وهو مخصص لتخزين بيـان واحـد أو معلومة واحدة ‪.‬‬
‫مثال ‪ :‬حقول البيانات الخاصة بكتاب معين (اسم الكتاب ‪ /‬المؤلف‬
‫‪ /‬الناشر ‪ /‬تاريخ النشر ‪)...‬‬
‫‪Graphical User Interface‬‬ ‫ب‪ .‬الشكل (النموذج) ‪ : Form‬وهو قد يسمى‬
‫)‪ (GUI‬ويتم إنشاؤه عادة لمساعدة المستخدم فـي إدخال البيانات في‬
‫جداول قاعدة البيانات‪.‬‬
‫جـ‪ .‬االستعالم (االستفهام) ‪ : Query‬وهو يستخدم الستخالص بيانات‬
‫محددة من جدول ما ويكتب بلغـة ‪ ، SQL‬وتعتبـر نتيجـة االستعالم هي‬
‫قاعدة بيانات فرعية ‪ ،‬وبمجرد حصول المحلل على قاعدة البيانات‬
‫الفرعيـة فـي صورة ملفات نصية ‪ ،‬يأخذ المحلل المعلومات الموجودة بها‬
‫ويضعها في البرنامج الخاص بهم ‪ ،‬واستخالص التقارير لمتخذي‬
‫الق اررات‪.‬‬
‫د‪ .‬التقرير ‪ :Report‬هو تقديم مكتوب لتحليل بيانات وقد يكون بسيطا‬
‫كقائمة من السجالت بإجماليات فرعيـة ‪ ،‬أو كالعالقات الحسابية األخرى‬
‫بين عناصر هذه البيانات‪.‬‬
‫‪45‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .6‬مبادئ تصميم قواعد البيانات‪:‬‬


‫‪ -‬تحديد المطلوب من قاعدة البيانات‪.‬‬
‫‪ -‬أن تكون الجداول صغيرة وأن تكون سهلة ويمكن تعديلها في المستقبل‪.‬‬
‫‪ -‬أن يحتوى الجدول على مجمو عة بيانات واحدة متجانسة حتى يسهل‬
‫التعامل معها ‪ ،‬مثال ‪ :‬في قاعدة بيانات العمالء ‪ ،‬جدول لبيانات العميل‬
‫الشخصية ‪ ،‬وجدول ألوامر الشراء ‪ ،‬وجدول ثالث لألصناف ‪ ...‬وهكذا‬
‫‪ -‬الكثير يستخدم التقارير الستخراج البيانات وتجميعها ولذلك من المناسب‬
‫أن تتجنب الحقـول التي تشتمل على ناتج عمليات حسابية أو إجماليات‪.‬‬

‫ولتنظيم محتويات شبكة االنترنت وخاصة الشبكة العنكبوتية العالمية وسهولة‬


‫عملية استرجاع المعلومات‪ ،‬تستخدم أدوات البحث ‪Search tools‬‬
‫للحصول على المعلومات التي يحتاجها الباحث بسهولة في ماليين‬
‫الصفحات والمواقع الموجودة على الشبكة وتظهر نتائج عملية البحث بطـرق‬
‫مرنة وسهلة‪.‬‬
‫‪ .7‬أدوات البحث لالتصال بقواعد البيانات ‪:‬‬

‫وتعرف أدوات البحث ‪ Search tools‬داخل شبكة االنترنت بصورة عامة‬


‫على أنهـا قواعـد بيانات تحتوي على جزء من وثائق الشبكة العنكبوتية‪،‬‬
‫والبحث داخل هذه القواعد يشبه فهـرس مكتبة ضخمة تسمح للباحث أن يجد‬
‫تطبيقات في برمجة الحاسب‬ ‫‪46‬‬

‫الكتاب الذي يريده ‪ ،‬بمجرد معرفة بعض الكلمات في هـذه الكتب والبحث‬
‫عنها‪ ،‬وتنقسم أدوات البحث إلى‪:‬‬
‫أ‪ .‬محركات البحث ‪ :Search engine‬هي البرنامج الذي يبحث في‬
‫فهرس ما يحتوي على ماليين الصفحات للحصول على وثـائق مطابقة‬
‫لموضوعات البحث ‪ ،‬ثم يقوم بتصنيفها‪.‬‬
‫وتتكون محركات البحث من أربعة مكونات رئيسية‪:‬‬
‫‪ o‬البرنامج اآللي (الروبوت( ‪: Robots‬هي برامج كمبيوتر تجوب‬
‫أنحاء الـشبكة العنكبوتيـة والمواقع المختلفة عبر الوصالت من وصلة‬
‫إلى أخرى تجمع معلومات إلضافتها في قاعـدة البيانات الخاصة‬
‫بالمحرك‪ ،‬وكذلك تبحث عن المحدث من الصفحات ‪.‬‬
‫‪ o‬قاعدة بيانات ‪ :‬حيث تشكل جميع البيانات المخزنة حول صفحات‬
‫الويب وتتضمن مجموعـة بيانات الصفحات التي تم التعرف عليها‬
‫من قبل الروبوت وكذلك تستقبل المواقع المضافة عن طريق‬
‫الناشرين أنفسهم ‪.‬‬
‫‪ o‬المفهرس ‪ :‬يقوم برنامج الفهرسة بفحص المعلومات المخزنة في‬
‫قاعـدة البيانـات وينـشئ جداول تحتوي قوائم مرتبة أبجديا بالكلمات‬
‫الرئيسية الهامة داخل الصفحات التي تم العثـور عليها من الروبوت‬
‫(بعد تصفية الكلمات الشائعة) لكي تستخدم لمطابقة السجالت‪.‬‬
‫‪ o‬برنامج االسترجاع ‪ :‬هو برنامج للتفاعل مع الباحث عبر االنترنت‬
‫يتيح له أن يستعلم عـن كلمات معينة داخل الفهرس حيث يجلب له‬
‫‪47‬‬ ‫تطبيقات في برمجة الحاسب‬

‫قائمة بعناوين الصفحات التي تحتـوي الكلمـات المستعلم عنها ( التي‬


‫تطابق االستعالم )‪.‬‬
‫ب‪ .‬أدلة البحث ‪ :Search directories‬هي تمثل بصفة عامة األدوات‬
‫التي توفر مصادر معلومات مصنفة حـسب مجموعـة مـن التقسيمات‬
‫الموضوعية حيث أنها تعتمد على مواضيع محددة مثل ‪ :‬أخبار –‬
‫تاريخ – تعلـيم ‪ ...‬الخ ‪ ،‬ثم تتفرع إلى مواضيع أكثر تخصصا بشكل‬
‫هرمي يبدأ بالمواضيع العامة إلـى المواضـيع الفرعية ‪ ،‬ويقوم مجموعة‬
‫من المكتبيين والخبراء المتخصصين بجدولة وتنظيم البيانـات داخـل‬
‫قواعد البيانات الخاصة بأدلة البحث‪.‬‬
‫ومما سبق يتضح أهمية قواعد البيانات في بناء أدوات البحث حيث تعمل‬
‫قواعـد البيانـات على تأمين البيانات التي بداخ لها فتمنع تدمير أو تغيير‬
‫هذه البيانات باإلضـافة إلـى سـرية المعلومات الموجودة بها مع توفر هذه‬
‫المعلومات‪.‬‬
‫ويمكن تحديث أي من المعلومات المخزنة داخل قواعد البيانات بطريقة‬
‫نشطة وباستم اررية ‪ ،‬كما أنها تعمل على ربط وتوفيق كل البحوث المرتبطة‬
‫داخل قواعد البيانات وبالتالي سهولة إيجاد المعلومات التي تجيب عن‬
‫االستعالمات المختلفة للباحثين‪.‬‬
‫واإلنترنت ال تحتوي فقط على النصوص ولكن يمكن تخزين العديد من‬
‫المعلومـات بأشـكال متعددة من الملفا ت سواء كانت ملفات نصية أو ملفات‬
‫وسائط ‪( Media‬الصور والفيديو والصوت ) ومحركات البحث المختلفة‬
‫يمكنها التعامل مع هذه الملفات وإجراء عمليات التخزين واالسترجاع‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪48‬‬

‫وتعرف كل من هذه الملفات بامتدادها ومن الملفات النصية التي تستخدمها‬


‫محركات البحـث ‪ HTML‬وملفات ميكروسوفت وغيرها‪ ،‬كما يوجد ملفـات‬
‫‪ PDF‬ويطلـق عليها البعض ملفات مختلطة ألنها عبارة عن وثائق يقرأها‬
‫برنامج ‪ Reader Acrobat Adobe‬وهي ليست ملفات نصية‪ .‬وتعتبر‬
‫ملفات الصور أكثر ملفات الوسائط ‪ Media‬استخداما ومن أكثر النسق‬
‫المستخدمة في ملفات الصور على اإلنترنت النسق ‪ GIF‬والنسق ‪JPEG‬‬
‫ويمكن فتح هذه الصور بسهولة كمـا أن كال من المتصفحين نت سكيب‬
‫‪ Netscape‬وإنترنت إكسبلورر ‪ ،Explorer Internet‬قادر على فتح‬
‫هذه الصور لمشاهدتها ‪،‬وكل من هذين النسقين يتم ضغط البيانات فيه‬
‫بهدف تقليص المساحة التي يحجزها في ذاكرة الكمبيوتر‪ .‬أما ملفات الفيديو‬
‫أكثرها استخداما النسق التالية ‪ avi , mov, mpg‬أما ملفات الصوت‬
‫‪. mp3 , wav , au‬‬ ‫أكثرها استخداما النسق التالية‬
‫‪49‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب الخامس‬
‫بيئة تطبيقات األنترنت‬

‫‪ .1‬اإلنترنت ‪Internet‬‬
‫‪ .2‬مميزات شبكة األنترنت‬
‫‪ .3‬خدمات اإلنترنت‬
‫‪ .4‬تطبيقات اإلنترنت‬
‫‪ .5‬عملية برمجة تطبيقات اإلنترنت‬
‫‪ .6‬لغات برمجة تطبيقات اإلنترنت‬
‫تطبيقات في برمجة الحاسب‬ ‫‪51‬‬

‫الباب الخامس‬
‫بيئة تطبيقات األنترنت‬
‫‪ .1‬اإلنترنت ‪Internet‬‬

‫ربط شبكة اإلنترنت ما بين ماليين الشبكات الخاصة والعامة في المؤسسات األكاديمية‬
‫والحكومية ومؤسسات األعمال وتتباين في نطاقها ما بين المحلي والعالمي وتتصل‬
‫بتقنيات مختلفة‪ ،‬من األسالك النحاسية واأللياف البصرية والوصالت الالسلكية‪ ،‬كما‬
‫تتباين تلك الشبكات في بنيتها الداخلية تقني ًا وإداري ًا‪ ،‬إذ تدار كل منها بمعزل عن‬
‫األخرى المركزياً وال تعتمد أياً منها في تشغيلها على األخريات‪.‬‬
‫وتحمل شبكة اإلنترنت اليوم قد اًر عظيماً من البيانات والخدمات‪ ،‬ربما كان أكثرها‬
‫شيوعاً اليوم صفحات النصوص الفائقة المنشورة على ِ‬
‫الويب‪ ،‬كما أنها تحمل خدمات‬
‫وتطبيقات أخرى مثل البريد وخدمات التخاطب الفوري‪ ،‬وبرتوكوالت نقل‬
‫الملفات‪ ،‬واالتصال الصوتي وغيرها‪.‬‬
‫وكمثل الطفرات في وسائل االتصال عبر التاريخ أضحت لشبكة اإلنترنت اليوم آثا ار‬
‫اجتماعية وثقافية في جميع بقاع العالم‪ ،‬وقد أدى ذلك إلى تغيير المفاهيم التقليدية‬
‫لعدة مجاالت مثل العمل والتعليم والتجارة وبروز شكل آخر لمجتمع المعلومات‪.‬‬

‫‪ -2‬مميزات شبكة األنترنت‪:‬‬

‫‪ ‬توفر تقنية اتصاالت سريعة‪.‬‬


‫‪ ‬توفر تقنيات وبرمجيات حاسب متقدمة‪.‬‬
‫‪ ‬تعدد اللغات المستخدمة في الشبكة‪.‬‬
‫‪50‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ ‬تنوع استخداماتها في جميع المجاالت‪.‬‬


‫‪ ‬ذات أهمية في أسلوب حياتنا المعاصرة‪.‬‬
‫‪ ‬السرعة وبالتالي توفير الوقت والجهد على الباحث‪.‬‬
‫‪ ‬منع احتكار المعلومات‪.‬‬

‫‪ -3‬خدمات اإلنترنت‪:‬‬

‫‪ ‬البريد اإللكتروني ‪:‬إلرسال واستقبال الرسائل ونقل الملفات مع أي شخص له‬


‫عنوان بريدي بصورة سريعة جدا ال تتعدى دقائق‪.‬‬
‫‪ ‬قوائم العناوين البريدية ‪ :‬تشمل إنشاء وتحديث قوائم العناوين البريدية لمجموعات‬
‫من األشخاص لهم اهتمامات مشتركة ‪.‬‬
‫‪ ‬خدمة المجموعات اإلخبارية‪ :‬تشبه خدمة القوائم البريدية باختالف أن كل عضو‬
‫يستطيع التحكم في نوع المقاالت التي يريد استالمها‪.‬‬
‫‪ ‬خدمة االستعالم الشخصي‪ :‬يمكن االستعالم عن العنوان البريدي ألي شخص‬
‫أو هيئة تستخدم اإلنترنت والمسجلين لديها‪.‬‬
‫‪ ‬خدمة المحادثات الشخصية‪ :‬يمكن التحدث مع طرف آخر صوتا وصورة‬
‫وكتابة‪.‬‬
‫‪ ‬خدمة الدردشة الجماعية ‪ :‬تشبه الخدمة السابقة إال انه يمكن التحدث مع أكثر‬
‫من شخص في نفس الوقت حيث يمكن تنظيم مؤتمر لعدد من األفراد‪.‬‬
‫‪ ‬خدمة تحويل أو نقل الملفات ‪ : FTP‬لنقل الملفات من حاسب إلى آخر وهي‬
‫اختصار (‪.)FILE TRANSFER PROTOCOL‬‬
‫‪ ‬خدمة األرشيف اإللكتروني )‪ : )Archie‬يمكن البحث عن ملفات معينة قد‬
‫تكون مفقودة في برامجك المستخدمة في حاسبك ‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪52‬‬

‫‪ ‬خدمة شبكة االستعالمات الشاملة )‪ :)Gopher‬يسمح للمستخدم بتشغيل‬


‫واالستفادة من خدمات الكثير من الموارد األخرى مثل خدمة نقل الملفات وخدمة‬
‫المشاركة في قوائم العناوين البريدية حيث يفهرس المعلومات الموجودة علي‬
‫الشبكة‬
‫‪ ‬خدمة االستعالمات واسعة النطاق (‪ :)WAIS‬تسمي هذه الخدمة باسم حاسباتها‬
‫الخادمة نفسها وهي أكثر ذكاء ودقة وفاعلية من األنظمة األخرى حيث تبحث‬
‫داخل الوثائق أو المستندات ذاتها عن بعض الكلمات المحورية أو الدالة التي‬
‫يحددها المستخدم ثم تقدم نتائج البحث في شكل قائمة بأسماء المواقع التي‬
‫تحتوي علي المعلومات المطلوبة‪.‬‬
‫‪ ‬خدمة الدخول عن بعد )‪ :)Telnet‬تسمح باستخدام برامج وتطبيقات في‬
‫الحاسب اآللي اآلخر ‪.‬‬
‫‪ ‬الصفحة اإلعالمية العالمية )‪ :World Wide Web (www‬وتسمي أيضا‬
‫الويب (‪ )Web‬تجمع معا كافة الموارد المتعددة التي تحتوي عليها اإلنترنت‬
‫للبحث عن كل ما تريد في الشبكات المختلفة وإحضارها بالنص والصوت‬
‫والصورة و الويب نظاما فرعيا من اإلنترنت لكنها النظام األعظم من األنظمة‬
‫األخرى فهي النظام الشامل باستخدام الوسائط المتعددة ‪.‬‬
‫وسوف نستعرض بعض خدمات األنترنت في حياتنا اليومية‪:‬‬

‫أ‪ .‬البريد اإللكتروني ‪:Email‬‬

‫هو وسيلة لتبادل رسائل رقمية عبر الشبكة أو غيرها من شبكات حاسب متواصلة‪.‬‬
‫في بداياته كان التراسل بالبريد يوجب دخول كال من الراسل والمرسل إليه إلى الشبكة‬
‫في الوقت ذاته لتنتقل الرسالة بينهما آليا‪ ،‬كما هو الحال في محادثات التراسل اللحظي‬
‫‪53‬‬ ‫تطبيقات في برمجة الحاسب‬

‫المعروفة اليوم‪ ،‬إال أن البريد اإللكتروني الحقا أصبح مبنيا على مبدأ التخزين والتمرير‪،‬‬
‫حيث تُحفظ الرسائل الواردة‬
‫بريد‬ ‫صناديق‬ ‫في‬
‫المستخدمين ليطلعوا عليها‬
‫في الوقت الذي يشاؤون‪.‬‬
‫الشكل المقابل يوضح طريقة‬
‫عمل البريد من خالل‬
‫خطوات مرقمة‪ ،‬فعندما تريد‬
‫إرسال رسالة فإنها تحتاح‬
‫إلى برنامج عميل مثل ‪ Microsoft outlook‬وتضع عنوان المستقبل وبعد أن تضغط‬
‫زر إرسال يقوم برنامج العميل بتنسيق الرسالة على هيكل بريد إلكتروني ويكون على‬
‫صيغة معينة وبعدها يقوم البرنامج بإرسال الرسالة بواسطة بروتوكول إرسال البريد‬
‫البسيط )إلى عميل اإلرسال( خادم الرسائل ‪ MTA‬وهو هنا‪smtp.a.org‬‬
‫‪ ‬وهو يبحث عن العنوان ‪ b.org‬فيقوم بمراسلة سيرفر‪ns.b.org‬‬
‫‪ ‬يقوم الخادم ‪ ns.b.org‬بإرسال عنوان موزع البريد )‪ (Mail exchange‬ويكون‬
‫غالبا ‪ mx.b.org‬إلى خادم ‪a.org‬‬
‫‪ ‬يقوم ‪ a.org‬بإرسال الرسالة إلى ‪ mx.b.org‬بواسطة بروتوكول ‪SMTP‬‬
‫‪ ‬يقوم ‪ mx.b.org‬بوضع الرسالة في صندوق‪POP‬‬
‫‪ ‬يقوم بجلب الرسالة بواسطة النظام ‪ ) POP3‬بروتوكول مكتب البريد من صندوق‬
‫بريده)‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪54‬‬

‫ب‪ .‬التخزين السحابي ‪:Cloud storage‬‬

‫يمكننا تعريف التخزين السحابي على أنه عبارة عن أجهزة حاسب ضخمة تحتوي على‬
‫مساحة تخزين هائلة يقوم المستخدمون برفع ملفاتهم عليها ليتم تخزينها‪ ،‬كما تقوم‬
‫الشركات بإنشاء برامج عليها وهو ما يصطلح عليه بالحوسبة السحابية فأنت مثال‬
‫عندما تكون بحاجة لبرنامج الوورد تقوم بتحميله على جهاز الحاسب الخاص بك حتى‬
‫تتمكن من استخدامه أما في الحوسبة السحابية فتقوم شركة مايكروسوفت بتحميل‬
‫برنامج الوورد على خوادم ‪ Servers‬الشركة ثم تقوم بإطالق هذا البرنامج على موقعها‬
‫اإللكتروني حتى يتمكن جميع المستخدمين الذين يملكون حسابات في خدمة التخزين‬
‫السحابي الخاصة بها من استخدام هذا البرنامج ‪ ،‬وبهذا لن تكون مضط ار لحمل جهاز‬
‫الحاسب معك في كل تنقالتك حيث يمكن االتصال من أي جهاز حاسب ودخول‬
‫حسابك على شركة التخزين السحابي لتقوم بالبدء في استخدام هذه البرامج ‪ ،‬باإلضافة‬
‫إلى وصولك إلى ملفاتك التي قمت بتخزينها في الخوادم‪.‬‬
‫و تجدر اإلشارة إلى وجود نوعين من خدمات التخزين السحابي ‪ :‬واحدة مجانية و‬
‫أخرى يمكن استخدامها مقابل دفع مبلغ مالي دفعة واحدة أو بشكل شهري أو سنوي‪.‬‬
‫ويجب التذكير أن جميع ملفاتكم التي يتم رفعها على الشركة ال يمكن لغيرك االطالع‬
‫عليها إال إذا قمت بمنح بيانات حسابك إلى شخص آخر‪ .‬ألن الشركات التي تقدم‬
‫هذه الخدمات ‪ ،‬عندما تقوم بالتسجيل لديها ‪ ،‬تقوم بمنحك مساحة تخزينية خاصة‬
‫بك ‪ ،‬ال يمكن أن يصل إليها أي شخص آخر فتصبح وكأنها جهاز الحاسب الخاص‬
‫بك‪.‬‬
‫‪55‬‬ ‫تطبيقات في برمجة الحاسب‬

‫مزايا التخزين السحابي‪:‬‬


‫هناك العديد من المزايا األخرى للتخزين السحابي غير خدمة تخزين الملفات أهمها‪:‬‬
‫‪ ‬إمكانية است خدامها في ميدان التعليم بتكلفة صغيرة أو بشكل مجاني ( الفصول‬
‫االفتراضية )‪.‬‬
‫‪ ‬مزامنة الملفات‪ :‬فأنت عندما ترفع ملف أو تقوم بتعديله يمكن أن تصل إلى هذا‬
‫الملف من أي جهاز حاسب أو لوحي أو نقال تستخدمه‪.‬‬
‫‪ ‬مشاركة الملفات‪ :‬كما تعلم فإن حجم الرسالة اإللكترونية ال يمكن أن‬
‫يتجاوز ‪ 25MB‬هذا يعتبر مشكلة لألشخاص الذين يرسلون ملفات كبيرة ‪ ،‬لهذا‬
‫يمكنك رفع الملفات الكبيرة على مواقع التخزين السحابي ثم تقوم بإرسال رابطها‬
‫عبر البريد اإللكتروني‪.‬‬
‫‪ ‬العمل المشترك‪ :‬تمكن خدمة التخزين السحابي الخاصة بـ ‪Google Drive‬‬
‫المستخدمين من تعديل الملفات بشكل مشترك وهذه الخدمة مفيدة جدا للطالب‬
‫الذين ينجزون أعمال تتطلب التواجد في نفس الوقت ‪ ،‬وكذلك المهنيون الذين‬
‫يقومون بإنجاز دراسات أو تنفيذ أعمال أو تطوير مشاريع ذات صبغة مشتركة‬
‫دون الحاجة للتواجد الفعلي في نفس المكان‪.‬‬
‫‪ ‬أخذ نسخة إضافية من الملفات والبيانات‪ :‬إذا كانت لديك ملفات أو بيانات مهمة‬
‫فاألفضل أن تقوم بعمل نسخة احتياطية عليها في حالة سرقة أو تعطل جهاز‬
‫الكمبيوتر الخاص بك أو بالعمل ‪.‬‬
‫‪ ‬حفظ و مشاركة الصور‪ :‬جميعنا لدينا صور مهمة نرغب في االحتفاظ بها وأغلبنا‬
‫سبق له و أن فقد صو ار تمنى لو احتفظ بها ‪ .‬لهذا من األفضل أن نقوم بحفظ‬
‫هذه الصور في عدة أماكن ‪ .‬ويعتبر موقع ‪ flickr‬أشهر موقع يقدم خدمة تخزين‬
‫و مشاركة الصور مع األصدقاء أو مع بعض أو جميع األشخاص ‪ .‬أما إذا كنت‬
‫تطبيقات في برمجة الحاسب‬ ‫‪56‬‬

‫ترغب في تخزين الصور فقط دون مشاركتها فيمكنك االحتفاظ بها في مواقع‬
‫التخزين السحابي األخرى‪.‬‬
‫‪ ‬تدفع مقابل ما تستخدمه فقط‪.‬‬
‫‪ ‬ال تحتاج الشركات إلى شراء عتاد جديد – قرص صلب جديد مثال‪ ,-‬وبذلك تقلص‬
‫حجم قسم تكنولوجيا المعلومات لديها‪.‬‬
‫‪ ‬تقلل من تكاليف صيانة البيانات ‪ ،‬كالنسخ االحتياطي‪.‬‬
‫‪ ‬مرونة عالية في المساحة حيث تستطيع زيادة أو تقليص مساحة التخزين دون‬
‫الحاجة إلى شراء أقراص صلبة جديدة‪.‬‬
‫‪ ‬الحوسبة السحابية تسمح لك بالوصول إلى جميع تطبيقاتك وخدماتك من أي مكان‬
‫و في أي زمان عبر اإلنترنت‪ ،‬ألن المعلومات ليست مخزنة على قرصك الصلب‬
‫بل على أجهزة الشركة المقدمة للخدمة‪.‬‬
‫‪ ‬تخفيض التكاليف على الشركات‪ ،‬حيث لم يعد من الضروري شراء أسرع أجهزة‬
‫حاسب آلي أو أفضلها من حيث الذاكرة أو أعالها من حيث مساحة القرص‬
‫الصلب‪ ،‬بل يمكن ألي جهاز الحاسب عادي وباستخدام أي متصفح للويب‬
‫الوصول للخدمات السحابية التي تستخدمها الشركة (تحرير مستندات‪ ،‬تخزين‬
‫ملفات‪ ،‬تحرير صور‪ .. ،‬إلخ)‪.‬‬
‫‪ ‬ضمان عمل الخدمة بشكل دائم‪ ،‬حيث تلتزم الشركة المقدمة لخدمة التخزين‬
‫السحابي بالتأكد من أن الخدمة تعمل على مدار الساعة بأفضل شكل ممكن‪.‬‬
‫البنى التحتية الضخمة التي تقدمها الخدمات السحابية للقيام‬
‫‪ ‬االستفادة من ُ‬
‫باالختبارات والتجارب العلمية‪ .‬فبعض الحسابات المعقدة تحتاج إلى سنوات‬
‫إلجرائها على أجهزة الحاسب اآللي العادية‪ ،‬بينما تتيح شركات مثل جوجل وآمازون‬
‫سحاباتها المؤلفة من آالف الخادمات المرتبطة بعضها ببعض إلجراء مثل هذه‬
‫العمليات الحسابية في دقائق أو ساعات‪.‬‬
‫‪57‬‬ ‫تطبيقات في برمجة الحاسب‬

‫سلبيات التخزين السحابي‪:‬‬


‫‪ ‬بشكل بديهي‪ ،‬تحتاج التطبيقات السحابية إلى اتصال باإلنترنت‪ ،‬حيث سيؤثر‬
‫انقطاعك عن اإلنترنت على إمكانية إنجاز عملك‪ ،‬لكن الشركات بدأت تتدارك‬
‫هذا‪ ،‬وبفضل بعض تقنيات ‪ HTML‬و جافاسكربت الحديثة بات باإلمكان بناء‬
‫تطبيقات ويب يمكن أن تعمل دون اتصال باإلنترنت‪ ،‬ثم القيام بالمزامنة لدى‬
‫عودة االتصال‪ ،‬لكن ما زلنا بحاجة إلى المزيد من الوقت كي تتطور هذه التطبيقات‬
‫والتقنيات بشكل أكبر‪.‬‬
‫‪ ‬مخاوف أمنية ‪ :‬يخشى البعض من وضع كل معلوماته وملفاته لدى الشركات‬
‫المقدمة للخدمات السحابية‪ ،‬فلو تعرضت الخدمة لعملية اختراق ناجحة‪ ،‬قد يتمكن‬
‫المخترق من الحصول على معلومات المستخدمين‪ ،‬إضافة إلى أن إمكانية بيع‬
‫معلوما تك من طرف الشركة المقدمة للخدمة أو االستفادة منها ستشكل مشكلة‬
‫حقيقية‪ .‬فالضمان الوحيد لك إذن هو اللجوء إلى الشركات الكبيرة الموثوقة و‬
‫ذات السمعة الجيدة في هذا المجال‪.‬‬
‫‪ ‬معظم التطبيقات السحابية لم تصل بعد إلى مستوى تطبيقات سطح المكتب‬
‫التقليدية‪.‬‬
‫‪ .4‬تطبيقات اإلنترنت‬

‫مكون من مجموعة من األوامر التي تنبني على لغة من لغات‬


‫هو عبارة عن تطبيق ّ‬
‫البرمجة‪ ،‬يقوم المبرمج بإعداده لتلبية هدف ورؤية خاصة‪.‬‬
‫ويمكن القول أيضاً بأنه‪ :‬تطبيق يعمل ضمن محددات بيئة االنترنت‪ .‬ويقوم على أسس‬
‫برمجة قام بتنفيذها المبرمج بشكل يتيح التفاعل مع الجمهور المستخدم‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪58‬‬

‫‪ .5‬عملية برمجة تطبيقات اإلنترنت‬

‫برمجة تطبيقات األنترنت ليست بالعملية الكالسيكية‪ ،‬بل تعتبر من أعقد العمليات‪،‬‬
‫ولكن الصعوبة التي يجدها المبرمج في عملية برمجة تطبيقات األنترنت ومحتوى الذي‬
‫تعرضه تأتي بالعديد من الفوائد منها‪:‬‬
‫‪ )1‬عملية برمجة تطبيقات األنترنت توفر للمبرمج الرؤى الشخصية التي يتمكن من‬
‫خاللها من اخراج االبداع واألفكار الجديدة التي لديه‪.‬‬
‫‪ )2‬في عملية برمجة تطبيقات األنترنت يكون المبرمج قد وفر على نفسه عناء‬
‫التحديث الدائم لتطبيقات األنترنت‪ ،‬السيما تطبيقات األنترنت التي يتم تزويدها‬
‫بمحتوى مستمر ليعرض عليها‪ ،‬فكل ما يتم بعد عملية البرمجة هو وضع المحريين‬
‫للمحتوى‪ ،‬وإعطاء المبرمج أمر النشر‪ ،‬ومن ثم يقوم التطبيق نفسه بالتحديث حالة‬
‫التطبيق‪.‬‬
‫‪ )1‬عملية برمجة تطبيقات الويب تأتي ضمن أهدافها التسهيل على الجماهير من‬
‫الوصول إلى المعلومات المطلوبة‪ .‬فنجد أن تطبيقات األنترنت ذات قابلية القراءة‬
‫المتقدمة تكون ذات سرعة في إظهار العناوين بمجرد البحث عنها في محرك‬
‫قوقل‪.‬‬
‫‪ )4‬تعطي عملية برمجة تطبيقات األنترنت الجماهير إمكانية القيام بالنسخ واللصق‬
‫والحفظ للمحتوى المنشور‪.‬‬
‫‪ )1‬يمكن االعتماد على عملية برمجة تطبيقات األنترنت في الوصول إلى تحسين‬
‫محركات البحث من قبل المبرمجين‪.‬‬
‫‪ )6‬المبرمج المتميز يقوم بعملية استغالل برمجة تطبيقات األنترنت من الناحية‬
‫الشكلية إلى جانب مضمون البرمجة نفسها‪ .‬وذلك من خالل قيام المبرمج بإعطاء‬
‫التطبيق تصميمات جمالية وألوان جذابة‪.‬‬
‫‪59‬‬ ‫تطبيقات في برمجة الحاسب‬

‫تتم عملية برمجة تطبيقات األنترنت‪:‬‬


‫دخولك عالم البرمجة يعني أنك ستتعامل مع مسلمات أساسية في عملية متكاملة لها‬
‫مدخالت ومخرجات‪ ،‬وهذه المسلمات تختلف من طبيعة برمجة لبرمجة أخرى‪ ،‬ولكن‬
‫تشترك في الغالب في الخطوات التالية‪:‬‬
‫‪ )1‬أول ما يتعلق بعملية برمجة تطبيقات األنترنت هو لغات البرمجة‪ .‬حيث أن لغات‬
‫البرمجة هي المكون األساسي الذي يشكل البيئة الداخلية والخارجية للتطبيق‪.‬‬
‫‪ )2‬برنامج يقوم بعملية كتابة لغة البرمجة وتصميم تطبيقات األنترنت بشكل متكامل‪.‬‬
‫وقد تكون في الغالب هذه البرنامج عبارة عن مواقع إلكترونية يتوفر عليها قوالب‬
‫جاهزة لبرمجة وتصميم تطبيقات األنترنت‪.‬‬
‫‪ )1‬بعد القيام بعملية برمجة تطبيقات األنترنت‪ ،‬تأتي عملية اختيار المبرمج للشكل‬
‫العام لهذه التطبيقات‪ ،‬والتصميمات التي يراها المبرمج مناسبة‪.‬‬
‫‪ )4‬يصبح لتطبيقات األنترنت لكل تطبيق منها رابطه الخاص به على محركات البحث‬
‫بعد تمكين االستضافة‪.‬‬
‫‪ .6‬لغات برمجة تطبيقات اإلنترنت‬

‫من أهم األمور التي تنبني عليها البرمجة بشكل عام‪ ،‬هي لغات البرمجة‪ ،‬إذ يقوم‬
‫المبرمج بعملية اتباع لخصائص إحدى لغات البرمجة وكتابة األوامر للحصول في‬
‫النهاية على التطبيقات‪ ،‬وفي عملية برمجة تطبيقات األنترنت‪ ،‬و كذلك تعد لغات‬
‫البرمجة من محددات تقديم الدعم لتطبيقات األنترنت‪ ،‬والمبرمج المتميز يقوم بعملية‬
‫االختيار واالستخدام الصحيحة لهذه اللغات‪ ،‬ومن أهم اللغات المستخدمة في عملية‬
‫برمجة تطبيقات األنترنت‪:‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪61‬‬

‫أوالً‪ :‬لغة البرمجة ‪: Python‬‬


‫يقوم المبرمج باستخدام هذه اللغة بشكل مرن وسهل في البرمجة‪ ،‬وذلك ألن لغة‬
‫‪ Python‬تعتبر من أسهل لغات البرمجة التي يمكن استخدامها في عملية برمجة‬
‫تطبيقات الويب‪ ،‬و كذلك تعتبر هذه اللغة مواكبة للتطورات العصر الحديث‪.‬‬
‫ثانياً ‪ :‬لغة البرمجة ‪: Php‬‬
‫من لغات البرمجة المجانية‪ ،‬وتعتبر هذه اللغة األكثر مناسبة بالنسبة للمبرمجين‬
‫المبتدئين‪ ،‬وذلك ألنها تستخدم البرمجة النصية‪ ،‬وتقوم هذه اللغة بعملية برمجة‬
‫‪ ،‬وتعتبر مناسبة‬ ‫تطبيقات وصفحات الويب من المبنية على لغة ‪HTML‬‬
‫لتطبيقات الويب وإعداد التصميمات الخاصة بمواقع االنترنت‪ ،‬ولكن يؤخذ عليها‬
‫أنها تحتاج وقت طويل للتحميل‪.‬‬
‫ثالث ًا‪ :‬لغة البرمجة ‪: Swift‬‬
‫من لغات البرمجة التي تعتبر ذات مصدر مفتوح وتتبع هذه اللغة لشركة ‪Apple‬‬
‫الشهيرة‪ ،‬ولها مميزات عدة على نظام‪ ، IOS‬وتعد من أكثر اللغات المحمية‪.‬‬
‫رابعاً‪ :‬لغة البرمجة ‪: SQL‬‬
‫من مزايا هذه اللغة أنها ذ ات سعة كبيرة وقدرة عالية في التخزين‪ ،‬و كذلك يمكن‬
‫االعتماد على هذه اللغة في تحصين تطبيقات‪ Web‬وحمايتها من القرصنة‪.‬‬
‫خامساً‪ :‬لغة البرمجة ‪: Ruby‬‬
‫من لغات البرمجة التي قامت اليابان بعملية انتاجها لتخدم برمجة التطبيقات السهلة‬
‫والشيقة‪ ،‬ويمكن لهذه اللغة القيان بتنفيذ تطبيقات‪ Web‬متكاملة‪ ،‬كما أن هذه اللغة‬
‫تعتبر سهلة على المبرمجين إذ يمكن للمبرمج القيام بعملية برمجة تطبيقات الويب‬
‫بشكل كامل من خالل صفحات قليلة باستخدام هذه اللغة‪.‬‬
‫‪60‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب السادس‬
‫واجهة التطبيق الرسومية‬

‫‪ -1‬واجهات التطبيق الرسومية‬


‫‪ -2‬مزايا واجهات التطبيق الرسومية‬
‫‪ -3‬لغات البرمجة لواجهات التطبيق الرسومية‬
‫‪ -4‬الفرق بين واجهة األنترنت وواجهة التطبيق الرسومية‬
‫تطبيقات في برمجة الحاسب‬ ‫‪62‬‬

‫الباب السادس‬
‫واجهة التطبيق الرسومية‬

‫‪ .1‬واجهات التطبيق الرسومية‪:‬‬

‫واجهة التطبيق الرسومية‪ ،‬تسمح للمستخدم بالتفاعل مع برنامج كمبيوتر باستخدام‬


‫جهاز تأشير يعالج الصور الصغيرة على شاشة الكمبيوتر‪ ،‬تسمى الصور الصغيرة‬
‫باأليقونات‪ ،‬ويمكن استخدام أنواع مختلفة من أجهزة التأشير‪ ،‬مثل الماوس أو قلم‬
‫الكتابة أو إصبع اإلنسان على شاشة اللمس‪.‬‬
‫كثير عن البرنامج الذي تستخدم واجهة سطر‬
‫تختلف برامج واجهة التطبيق الرسومية ًا‬
‫األوامر التي تتلقى مدخالت المستخدم من األحرف المكتوبة على لوحة المفاتيح‪،‬‬
‫وعاد ًة ما تقوم البرامج التي تستخدم واجهة سطر األوامر بتنفيذ سلسلة من المهام‬
‫بترتيب محدد مسبًقا ثم تنتهي‪.‬‬
‫ومع ذلك‪ ،‬يقوم برنامج واجهة التطبيق الرسومية بإنشاء الرموز وعناصر التي يتم‬
‫عرضها للمستخدم‪ ،‬ثم ينتظر ببساطة حتى يتفاعل معها المستخدم‪ ،‬ترتيب تنفيذ المهام‬
‫بواسطة البرنامج يكون تحت سيطرة المستخدم‪ ،‬وليس سيطرة البرنامج‪ ،‬هذا يعني أن‬
‫برنامج واجهة التطبيق الرسومية يجب أن يتتبع “حالة” معالجته ويستجيب بشكل‬
‫صحيح ألوامر المستخدم التي يتم تقديمها بأي ترتيب يختاره المستخدم‪ ،‬يسمى هذا‬
‫النمط من البرمجة “البرمجة المدفوعة بالحدث”‪ ،‬في الواقع‪ ،‬بحكم التعريف‪ ،‬فإن جميع‬
‫برامج واجهة التطبيق الرسومية هي برامج مدفوعة باألحداث‪.‬‬
‫‪63‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .2‬مزايا واجهات التطبيق الرسومية‬

‫تمثل ميزة واجهة التطبيق الرسومية في التحسن الكبير في قابلية االستخدام بالنسبة‬
‫للشخص العادي‪ ،‬تستفيد ميزات واجهة التطبيق الرسومية من االستعارات المألوفة‪،‬‬
‫مثل السحب واإلفالت )‪ (drag-and-drop‬لنقل الملفات‪ ،‬واستخدام الرموز المألوفة‪،‬‬
‫مثل سلة المهمالت للملفات المحذوفة‪ ،‬مما يخلق بيئة تكون فيها عمليات الكمبيوتر‬
‫بديهية ويسهل إتقانها دون أي الممارسة المسبقة أو المعرفة بآالت الحوسبة أو اللغات‪،‬‬
‫تعد تطبيقات واجهة المستخدم الرسومية ذاتية الوصف‪ ،‬وعادة ما تكون التعليقات‬
‫شجع اإلشارات المرئية قابلية االكتشاف وتوجهها‪.‬‬
‫فورية‪ ،‬وتُ ّ‬

‫‪ .3‬لغات البرمجة لواجهات التطبيق الرسومية‬

‫في حين أن هناك العديد من لغات البرمجة المرئية المختلفة مع مزاياها الفريدة لتطوير‬
‫تصميم واجهة التطبيق الرسومية‪ ،‬يمكن اعتبار )‪ (C#‬أو )‪ (Java‬خيارين مفضلين‬
‫نظر لقدرتهما على تشغيل واجهات المستخدم الرسومية في وقت واحد في المتصفح‬
‫ًا‬
‫وتطبيق سطح مكتب‪ ،‬تتضمن الخيارات األخرى )‪ (Python‬و‬
‫)‪ (HTML/JavaScript‬و ( ‪.) C / C++‬‬

‫‪ .4‬الفرق بين واجهة األنترنت وواجهة التطبيق الرسومية‬

‫تشير واجهة مستخدم األنترنت‪ ،‬أو واجهة المستخدم الرسومية المستندة إلى الويب‪،‬‬
‫إلى التفاعل بين المستخدم والبرنامج الذي يعمل على خادم ويب‪ ،‬حيث تكون واجهة‬
‫المستخدم هي متصفح الويب ويتم تنزيل صفحة الويب وعرضها‪ ،‬تتيح تقنيات مثل‬
‫تطبيقات في برمجة الحاسب‬ ‫‪64‬‬

‫) ‪ (Flash / Silverlight/ JavaScript/ Java‬تفاعالت مثل السحب واإلفالت‪،‬‬


‫وتشغيل الصوت والرسم على الشاشة‪ ،‬والوصول إلى لوحة المفاتيح والماوس‪.‬‬
‫بينما تعد واجهات التطبيق الرسومية على الويب مستقلة عن النظام األساسي‪ ،‬وال‬
‫نظر لطبيعة عدم‬
‫تتطلب تثبيتًا أو تطوير برامج منفصلة‪ ،‬وسهلة التحديث والمراقبة؛ ًا‬
‫االعتماد على المستخدم لنشر التحديثات‪ ،‬وتوفر واجهة التطبيق تجربة نابضة بالحياة‪،‬‬
‫وهي منخفضة التكلفة‪ ،‬وتتطلب فقط اتصال الكمبيوتر باإلنترنت‪.‬‬
‫‪65‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب السابع‬

‫حل المشكالت‬

‫‪Problem Solving‬‬

‫‪ -1‬خطوات صياغة وتطوير البرامج‬


‫‪Defining the Problem‬‬ ‫أ‪ -‬تحدید وتعريف المشكلة‬
‫‪Design the Program‬‬ ‫ب‪ -‬تصميم البرنامج‬
‫‪Coding the Program‬‬ ‫ت‪ -‬صياغة البرنامج‬
‫‪Program Debugging and Testing‬‬ ‫ث‪ -‬اختبار البرنامج وتصحيح األخطاء‬
‫‪Documenting the Program‬‬ ‫ج‪ -‬توثيق البرنامج‬

‫‪Flow Charts‬‬ ‫‪ -2‬مخططات سير العمليات‬


‫تطبيقات في برمجة الحاسب‬ ‫‪66‬‬

‫الباب السابع‬

‫حل المشكالت‬

‫‪Problem Solving‬‬

‫‪ -1‬خطوات صياغة وتطوير البرامج ‪:Program Development Steps‬‬

‫مخطط یبين خطوات صياغة وتطوير البرامج‬


‫‪67‬‬ ‫تطبيقات في برمجة الحاسب‬

‫أ‪ .‬تحدید وتعريف المشكلة ‪Defining the Problem‬‬


‫في هذه الخطوة يقوم المبرمج بتحديد وتعريف المشكلة وتتضمن هذه الخطوة‬
‫تحديد التالي بالترتيب‪:‬‬
‫‪ .1‬الهدف من البرنامج (حساب ارباح‪ ،‬فواتير استهالك الماء والكهرباء‪،‬‬
‫أو حساب معدل الطالب التراكمي)‬
‫‪ .2‬نوع وحجم المخرجات ووسائل اإلخراج (تقارير – فواتير – شيكات –‬
‫نقود‪.)...‬‬
‫‪ .1‬نوع وحجم البيانات المدخلة ووسائل اإلدخال‪.‬‬
‫‪ .4‬مستخدمي البرامج والمستفيدين منه‪.‬‬

‫ب‪ .‬تصميم البرنامج ‪Design the Program‬‬


‫‪ ‬يتم هنا تحديد المواصفات والخطوات الدقيقة والمرتبة منطقيا والتي تم‬
‫فهمها ودراستها في الخطوة األولى‪.‬‬
‫‪ ‬ويتم ذلك بإستخدام عدة طرق منها مخطط سير العمليات ‪Flowchart‬‬
‫ويطلق عليها أيضاً خرائط التدفق وهي مجموعة من الرموز المتعارف‬
‫عليها تستخدم لتوضيح الخطوات المنطقية الالزمة لحل مشكلة ما‪.‬‬
‫ت‪ .‬صياغة البرنامج ‪Coding the Program‬‬
‫‪ ‬بعد االنتهاء من تصميم البرنامج يتم اختيار إحدى لغات البرمجة‬
‫المناسبة لصياغة أوامر البرنامج ‪ Coding‬وذلك باالستعانة بخريطة‬
‫التدفق ‪ Flow Chart‬أو غيرها‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪68‬‬

‫‪ ‬يجب عند صياغة البرنامج اتباع قواعد صيانة لغة البرمجة المستخدمة‬
‫حيث ان لكل لغة برمجة قواعد خاصة بها وال يعمل البرنامج اذا كان‬
‫هنالك اخطاء امالئية او اخطاء في قواعد اللغة ‪.Syntax Errors‬‬
‫ث‪ .‬اختبار البرنامج وتصحيح األخطاء ‪Program Debugging and Testing‬‬

‫‪ ‬يسمى البرنامج بعد صياغتة باحدى لغات البرمجة البرنامج المصدر‬


‫‪ Source Program‬وال يتم تنفيذه مباشرة على الحاسب بل يتم ترجمته‬
‫الى برنامج مكتوب بلغة اآللة ‪.Object Program‬‬
‫‪ ‬تسمى عملية تحويل البرنامج المصدر الى برنامج الهدف‬
‫بالترجمة ‪ Compilation‬ويقوم بها برنامج يسمى المترجم ‪.Compiler‬‬

‫‪ ‬خالل عملية الترجمة ‪ Compilation‬قد تظهر اخطاء في صياغة‬


‫البرنامج المصدر ينبغي على المبرمج تصحيحها‪.‬‬
‫‪ ‬هناك ثالث انواع من األخطاء‪:‬‬
‫‪ ‬اخطاء في قواعد اللغة ‪ :Syntax Errors‬اخطاء امالئية في كتابة‬
‫األوامر‪.‬‬
‫‪ ‬اخطاء منطقية ‪ :Logical Errors‬ال يكتشفها الحاسب وتظهر عند‬
‫تنفيذ البرنامج على عينه من البيانات فنحصل على نتائج خاطئه او‬
‫‪69‬‬ ‫تطبيقات في برمجة الحاسب‬

‫غير متوقعة‪ ،‬ويقوم المبرمج بتتبع خطوات البرنامج لمعرفة مصدر‬


‫الخطأ وتصحيحه وتسمى هذه العملية ‪.Tracing‬‬
‫‪ ‬اخطاء اثناء التشغيل ‪ :Run-Time Errors‬تظهر عند تنفيذ‬
‫البرنامج مثل عدم حجز مساحة كافية للمدخالت او الدخول في دوران‬
‫بال نهاية‪ ،‬وتظهر رسالة بنوع األخطاء‪.‬‬
‫ج‪ .‬توثيق البرنامج ‪Documenting the Program‬‬
‫في هذه المرحلة تتم كتابة وصف تفصيلي لصياغة البرنامج‪ ،‬ويشمل‬
‫هذا التوثيق أصل المشكلة وخطوات الحل وخرائط الحل وتعليمات‬
‫التشغيل ومتطلبات التشغيل والمدخالت والمخرجات وكيفية التحكم في‬
‫البرنامج في المواقف المختلفة‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪71‬‬

‫‪ -4‬مخططات سير العمليات ‪Flow Charts‬‬


‫‪70‬‬ ‫تطبيقات في برمجة الحاسب‬

‫أمثلة ‪:‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪72‬‬
‫‪73‬‬ ‫تطبيقات في برمجة الحاسب‬
‫تطبيقات في برمجة الحاسب‬ ‫‪74‬‬

‫‪c^2‬‬
‫‪75‬‬ ‫تطبيقات في برمجة الحاسب‬
‫تطبيقات في برمجة الحاسب‬ ‫‪76‬‬
‫‪77‬‬ ‫تطبيقات في برمجة الحاسب‬
‫تطبيقات في برمجة الحاسب‬ ‫‪78‬‬
‫‪79‬‬ ‫تطبيقات في برمجة الحاسب‬
‫تطبيقات في برمجة الحاسب‬ ‫‪81‬‬

‫الباب الثامن‬
‫أساسيات البرمجة بلغة ‪C++‬‬
‫‪The basics of programming in C++‬‬

‫الموضوع‪:‬‬

‫‪ .1‬مقدمة‬

‫‪ .2‬تشغيل المترجم (برنامج) للغة ‪C++‬‬

‫‪ .3‬هيكل البرنامج‬

‫‪ .4‬أنواع البيانات األساسية‬


‫‪80‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب الثامن‬
‫أساسيات البرمجة بلغة ‪C++‬‬
‫‪The basics of programming in C ++‬‬

‫‪ .1‬مقدمة‪:‬‬

‫تعتبر لغة ‪ C++‬من أشهر اللغات التي تتمتع بطابع القوة والمرونة إلنتاج‬
‫أسرع برامج وأفضلها أداءاً‪ .‬وعلى الرغم من وجود العديد من لغات البرمجة‬
‫األخرى إال أنها تفتقر شمولية لغة ‪ C++‬وقوتها‪ ،‬فاللغة ‪ C++‬تتميز بقابليتها‬
‫على معالجة التطبيقات الكبيرة والمعقدة‪ ،‬والقوة في صيانة البرامج المكتوبة‬
‫بها مما يوفر وقتاً في تصميم البرامج وتطويرها‪.‬‬
‫أسلوب البرمجة الكائنية ‪Object Oriented‬‬ ‫تعتمد اللغة ‪C++‬‬
‫)‪ ،Programming (OOP‬والذي تم تطويره بسبب قيود كانت أساليب‬
‫البرمجة القديمة المتمثلة في اللغات اإلج ارئية تفرضها على المبرمجين‪.‬‬

‫‪ .2‬تشغيل المترجم (برنامج) للغة ‪:C++‬‬

‫كما نعلم أن لغة ‪ C++‬تحتاج إلى مترجم (‪ )Compiler‬لتنفيذ البرامج‬


‫المكتوبة بلغة ‪ ،C++‬وسوف نتعرف على كيفية تشغيل برنامج أحد مترجمات‬
‫لغة ‪.C++‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪82‬‬

‫تشغيل ‪: Visual C++‬‬

‫لتشغيل برنامج ‪ Visual C++‬نتبع التالي‪:‬‬

‫أبدأ ‪ >--‬البرامج ‪Visual C++ 6.0 >--‬‬

‫ثم بعد ذلك ستظهر لنا الشاشة التالية‪:‬‬

‫نختار من هذه الشاشة كما هو موضح القائمة ‪ File‬ثم بعد ذلك نختار من‬
‫القائمة ‪ New‬لتظهر لنا الشاشة التالية‪:‬‬
‫‪83‬‬ ‫تطبيقات في برمجة الحاسب‬

‫نختار التطبيق الموجود باألسفل ثم نختار إنهاء كما هو موضح باألسفل‪.‬‬


‫تطبيقات في برمجة الحاسب‬ ‫‪84‬‬

‫اآلن ستظهر لنا شاشة كتابة البرنامج (الكود) كالشكل التالي‪ ،‬ثم نقوم بكتابة‬
‫البرنامج (الكود)‪.‬‬

‫بعد ذلك نختار من القائمة ‪ Build‬ثم نختار ‪ Execute.exe‬ليطبق لنا‬


‫المشروع أو بالنقر من لوحة المفاتيح على الزر ‪. F5‬‬

‫بعد تنفيذ البرنامج ستظهر لنا النتائج كما في الشكل التالي‪:‬‬


85 ‫تطبيقات في برمجة الحاسب‬

: Structure of a program ‫ هيكل البرنامج‬.3


‫من المحتمل أن أفضل طريقة لبدء تعلم لغة برمجة هي عن طريق كتابة‬
:‫ البرنامج األول‬، ‫برنامج لذلك‬
//This program will display a message on the
screen.
#include<iostream>
using namespace std;
int main ( )
{
cout << "Hello World \n";
return 0;
}
: ‫مخرجات البرنامج‬
Hello World
‫تطبيقات في برمجة الحاسب‬ ‫‪86‬‬

‫التعليقات ‪: Comments‬‬
‫‪//This program will display a message on the‬‬
‫‪screen.‬‬
‫يبدأ هذا السطر من البرنامج بالشرطة المزدوجة (‪ )//‬الدالة على أن بقية‬
‫السطر عبارة عن تعليق )‪ ،(comment‬تضاف التعليقات إلى البرامج‬
‫لتساعد المبرمج أو أي شخص آخر قد يحتاج إلى قراءة البرنامج على فهم‬
‫ما الذي يفعله البرنامج‪ ،‬لذا من المستحسن أن يبدأ كل برنامج في لغة ‪C++‬‬
‫بتعليق يوضح الغرض الذي من أجله كتب البرنامج‪.‬‬
‫تستخدم الشرطة المزدوجة (‪ )//‬إذا كان التعليق يمتد لسطر واحد فقط ‪line‬‬
‫‪. comment‬‬
‫هنالك نوع آخر من التعليقات يتيح لنا كتابة تعليقات تمتد إلى عدة أسطر‬
‫نستطيع كتابة التعليق السابق على الصورة‪:‬‬
‫‪/* Program 1-1:‬‬
‫‪This program will display a message on the screen‬‬
‫‪*/‬‬

‫توجيهات قبل المعالج ‪:Preprocessor Directive‬‬


‫>‪#include<iostream‬‬
‫أنت عندما تريد أن تقوم بعمل ما فإنك ستحتاج إلى أدوات قادرة على تنفيذ‬
‫هذا العمل‪ ،‬فإذا أردت مثالً أن تكتب‪ ،‬فإنك بحاجة إلى أدوات هي الورقة و‬
‫‪87‬‬ ‫تطبيقات في برمجة الحاسب‬

‫القلم‪ ،‬وعندما تريد أن تصنع صندوقاً خشبياً فإنك بحاجة إلى أدوات هي‬
‫(مطرقة و منشار و مسامير و الخشب) و الـ ‪ iostream‬هو عبارة عن‬
‫ملف اسمه ‪ iostream Input Output Stream‬و يعني مجاري الدخل‬
‫والخرج أو تيار الدخل و الخرج و الحقة هذا الملف هي ‪ h Header‬و‬
‫تعني رأسي و هذا الملف الرأسي ‪ iostream‬يحوي على األدوات الالزمة‬
‫لتنفيذ عمليات الدخل التي تتم من الفأرة أو لوحة المفاتيح و غيرها من أدوات‬
‫الدخل‪ ،‬وتستخدم لتنفيذ عمليات الخرج مثل الشاشة و غيرها من أدوات‬
‫الخرج‪ ،‬وبالتالي كلما أردت أن تكتب برنامج يستخدم أدوات الدخل أو الخرج‬
‫فإنك بحاجة إلى األدوات الموجودة في الملف ‪ iostream‬حتى يعمل‬
‫البرنامج بشكل صحيح‪ ،‬لذلك يجب عليك أن تضيفه إلى كل برامجك التي‬
‫ستكتبها الحقاً‪ ،‬ورأيت كيف تتم اإلضافة عن طريق الكلمة المفتاحية‬
‫‪ include‬و باستخدام اإلشارة هاش ‪ #‬و األقواس > < ونكتب بداخل هذه‬
‫األقواس اسم الملف الذي نريد إضافته إلى برنامجنا‪ ،‬وتسمى هذه الملفات‬
‫الرأسية باسم المكتبات أي أنت اآلن قمت بإضافة المكتبة ‪ iostream‬إلى‬
‫برنامجك‪.‬‬

‫الدالة ) (‪: main‬‬


‫يبدأ تشغيل أي برنامج ‪ C++‬من دالة تدعي ) (‪ main‬وهي دالة مستقلة‬
‫ينقل نظام التشغيل التحكم إليها‪ ،‬وهي جزء أساسي في برنامج ‪. C++‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪88‬‬

‫األقواس بعد تشير إلى أن ‪ main‬هي عبارة عن دالة‪ ،‬قد يحتوى برنامج‬
‫‪ C++‬على أكثر من دالة إحداهما بالضرورة هي‪.main‬‬
‫يبدأ تنفيذ البرنامج من الدالة ‪ main‬حتى لو لم تكن هي األولى في سياق‬
‫البرنامج‪.‬‬
‫يتم حصر جسم الدالة ‪ main‬باألقواس } {‪.‬‬

‫اإلخراج إلى الشاشة ‪:‬‬


‫;'' ‪cout<<'' welcome to C++ !\n‬‬
‫هذه العبارة ‪ statement‬تجبر الحاسب أن يظهر على الشاشة النص‬
‫المحصور‬
‫بين عالمتي االقتباس '' ''‪ .‬ويسمى هذا النص ثابت نصي‪.‬‬
‫أحيانا يضاف لها األمر ‪ <<endl‬وهو وسيلة في ‪ C++‬لالنتقال إلى سطر‬
‫جديد وهو يعمل تماما كما يعمل المؤثر ‪. \n‬‬
‫‪ ‬يجب أن تنتهي كل عبارة في برنامج ‪ C++‬بفاصلة منقوطة ( ; )‪.‬‬

‫مثال‪:‬‬
‫‪// Output‬‬
‫>‪#include <iostream‬‬
‫) ( ‪int main‬‬
‫;‪using namespace std‬‬
‫{‬
‫‪89‬‬ ‫تطبيقات في برمجة الحاسب‬

‫;"‪cout << 9<< " is an integer.\n‬‬


‫;"‪cout << 'b' << "is a character.\n‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج ‪:‬‬
‫‪9 is an integer.‬‬
‫‪b is a character‬‬

‫مثال‪ :‬ما مخرجات البرنامج التالي‪:‬‬


‫‪// This program displays output on the //screen‬‬
‫>‪#include<iostream‬‬
‫) ( ‪int main‬‬
‫{‬
‫;‪cout<<11‬‬
‫;‪cout<<22<<33‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج ‪:‬‬
‫‪332211‬‬
‫حيث يلتصق كل الخرج ببعضه البعض ‪ ،‬لذا من الجيد أن يكون لدينا طرق‬
‫في التحكم بطريقة تنسيق المخرجات‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪91‬‬

‫تنسيقات مخرجات البرنامج‪:‬‬


‫‪\n‬‬ ‫‪newline‬‬
‫‪\r‬‬ ‫‪carriage return‬‬
‫‪\t‬‬ ‫‪tab‬‬
‫‪\v‬‬ ‫‪vertical tab‬‬
‫‪\b‬‬ ‫‪backspace‬‬
‫‪\f‬‬ ‫)‪form feed (page feed‬‬
‫‪\a‬‬ ‫)‪alert (beep‬‬
‫'\‬ ‫)'( ‪single quote‬‬
‫"\‬ ‫)"( ‪double quote‬‬
‫?\‬ ‫)?( ‪question mark‬‬
‫\\‬ ‫)\( ‪backslash‬‬
‫العبارة ‪:return 0‬‬
‫تكتب العبارة ‪ return 0‬في نهاية الدالة ) (‪ main‬ويشير إلى أن البرنامج‬
‫انتهى نهاية صحيحة وسيبدو لنا سبب تضمين هذه العبارة واضحا عندما‬
‫نتعرف على الدوال في ‪. C++‬‬
‫مثال‪ :‬اكتب برنامج يستقبل رقمين من المستخدم ويجمعهما ويعرض ناتج الجمع‬
‫‪// Addition program‬‬
‫>‪#include<iostream‬‬
‫>‪#include<conio.h‬‬
‫;‪using namespace std‬‬
‫) ( ‪int main‬‬
‫‪90‬‬ ‫تطبيقات في برمجة الحاسب‬

‫{‬
‫;‪int A, B, sum‬‬
‫;"‪cout <<"Enter first number\n‬‬
‫;‪cin >> A‬‬
‫;"‪cout <<"Enter second number \n‬‬
‫;‪cin >> B‬‬
‫;‪sum= A+B‬‬
‫;‪cout <<"sum="<<sum<<endl‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج ‪:‬‬
‫‪Enter first number‬‬
‫‪7‬‬
‫‪Enter second number‬‬
‫‪2‬‬
‫‪sum= 9‬‬
‫‪ .4‬أنواع البيانات األساسية‪:‬‬
‫عند كتابة البرنامج‪ ،‬نقوم بتخزين المتغيرات في ذاكرة الحاسب لدينا‪ ،‬ولكن يجب‬
‫على الحاسب أن يعرف نوع البيانات التي نريد تخزينها فيها ‪ ،‬حيث أنه لن يشغل‬
‫نفس مقدار الذاكرة لتخزين رقم بسيط من تخزين حرف واحد أو عدد كبير ‪ ،‬وأنها‬
‫لن تفسر بنفس الطريقة‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪92‬‬

‫يتم تنظيم الذاكرة في أجهزة الحاسب لدينا بالبايت‪ ،‬البايت هو الحد األدنى من‬

‫الذاكرة التي يمكننا إدارتها في ‪ ، C++‬يمكن أن تخزن البايت كمية صغيرة ً‬


‫نسبيا‬
‫من البيانات مثل حرف واحد أو عدد صحيح صغير (بشكل عام عدد صحيح بين‬
‫‪ 0‬و ‪ ،)255‬باإلضافة إلى ذلك يمكن للحاسب التعامل مع أنواع البيانات األكثر‬
‫تعقيدا التي تأتي من تجميع عدة وحدات بايت‪ ،‬مثل األرقام الطويلة أو األرقام‬
‫ً‬
‫غير الصحيحة‪.‬‬
‫الجدول التالي يبين أنواع البيانات و حجم األماكن التي تحجز لها في‬
‫الذاكرة حسب مقاييس ‪. C++‬‬

‫الحجم‬ ‫المعنى‬ ‫نوع البيانات‬


‫‪ 1‬بايت‬ ‫بولياني‪Boolean‬‬ ‫‪bool‬‬
‫‪ 1‬بايت‬ ‫حرف‪character‬‬ ‫‪char‬‬
‫‪ 1‬بايت‬ ‫حرف بإشارة‪+/-‬‬ ‫‪signed char‬‬
‫‪ 1‬بايت‬ ‫حرف بدون إشارة‬ ‫‪unsigned char‬‬
‫‪ 2‬بايت‬ ‫حرف موسع‪wide character‬‬ ‫‪wchar_t‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح‪integer‬‬ ‫‪int‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح بإشارة‪+/-‬‬ ‫‪signed int‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح بدون إشارة‬ ‫‪unsigned int‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح قصير‬ ‫‪short int‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح قصير بإشارة‬ ‫‪signed short int‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح قصير بدون إشارة‬ ‫‪unsigned short int‬‬
‫‪ 4‬بايت‬ ‫عدد صحيح طويل‬ ‫‪long int‬‬
‫‪ 4‬بايت‬ ‫عدد صحيح طويل بإشارة‬ ‫‪signed long int‬‬
‫‪93‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ 4‬بايت‬ ‫عدد صحيح طويل بدون إشارة‬ ‫‪unsigned long int‬‬


‫‪ 4‬بايت‬ ‫عدد حقيقي بدقة عادية‬ ‫‪float‬‬
‫‪ 8‬بايت‬ ‫عدد حقيقي بدقة مزدوجة‬ ‫‪double‬‬
‫‪ 8‬بايت‬ ‫عدد حقيقي بدقة مزدوجة طويل‬ ‫‪long double‬‬

‫اإلعالن عن المتغيرات ‪:‬‬


‫من أجل استخدام متغير في ‪ ،C++‬يجب علينا أوالً أن نعلن عنه أي نحدد‬
‫نوع البيانات الذي نريده‪ ،‬حيث اننا عند كتابة أي برنامج بلغة ‪ C++‬نحتاج‬
‫لتخزين المعلومات الواردة للبرنامج في ذاكرة الحاسب تحت عناوين يطلق‬
‫عليها أسماء المتغيرات‪ ،‬وبما أن أنواع البيانات المراد تخزينها تكون عادة‬
‫مختلفة مثل القيم الحقيقية أو الصحيحة أو الرمزية فإننا نحتاج أن نعلم‬
‫المترجم في بداية البرنامج عن أنواع المتغيرات التي نريد استخدامها فمثالً ‪:‬‬
‫;‪int a‬‬
‫;‪float mynumber‬‬
‫تم اإلعالن وحجز مكان بالذاكرة للمتغير ‪ a‬و المتغير ‪ mynumber‬حيث‬
‫ان نوع البيانات التي تخزن في المتغير ‪ a‬هو عدد صحيح‪ ،‬بينما المتغير‬
‫‪ mynumber‬فمن النوع ‪ float‬أي يخزن فيه قيم عشرية‪.‬‬
‫يمكن تعريف المتغيرات في أي مكان في البرنامج لكن يجب تعريفها قبل‬
‫استعمالها‪ ،‬يمكن تعريف المتغيرات التي تنتمي إلى نفس النوع في سطر‬
‫واحد‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪94‬‬

‫قواعد تسمية المتغيرات ‪:‬‬


‫‪ .1‬كتابة المتغيرات باللغة الالتينية‪.‬‬
‫‪ .2‬لغة ‪ C++‬له حساسية للحرف الكبيرة والصغيرة ( بمعنى أن ‪Area‬‬
‫تختلف عن ‪)area‬‬
‫‪ .1‬يجب أال يزيد عدد أحرف المتغير عن ‪ 216‬حرفا‪ .‬وبعد ذلك يتم تجاهل‬
‫الحروف اإلضافية‪.‬‬
‫‪ .4‬ال يسمح باستخدام الحروف الخاصة‪… ,@ ,# ,! ,$‬‬
‫‪ .1‬يجب أن يبدأ أي متغير بحرف هجائي‪ ،‬وال يبدأ بعدد‪.‬‬
‫‪ .6‬ال يسمح بأن يكون اسم المتغير آلمة من الكلمات المحجوزة مثل ‪cin‬‬
‫‪, cout , if‬‬
‫أمر إدخال البيانات ‪: cin‬‬
‫‪cin>>A‬‬
‫هذه العبارة تخزن الرقم الذي يكتبه المستخدم من لوحة المفاتيح في متغير‬
‫يدعي ‪A‬‬
‫يمكن استعمال عامل الحصول عدة مرات في نفس العبارة‪:‬‬
‫‪cin>>A>>B‬‬
‫هذه الجملة تطلب من المستخدم إدخال المتغير ‪ A‬والمتغير ‪ B‬بحيث يفصل‬
‫بين القيمتين الضغط على مفتاح ‪ space‬أو مفتاح ‪ tab‬أو مفتاح ‪.Enter‬‬
‫‪95‬‬ ‫تطبيقات في برمجة الحاسب‬

‫العوامل الحسابية‪:‬‬
‫وظيفتها‬ ‫األداة‬
‫للطرح أو كأشاره سالبة‬ ‫‪-‬‬
‫للجمع‬ ‫‪+‬‬
‫للضرب‬ ‫*‬
‫للقسمة‬ ‫‪/‬‬
‫لباقي القسمة الصحيحة‬ ‫‪%‬‬
‫للنقصان بمقدار ‪1‬‬ ‫‪--‬‬
‫للزيادة بمقدار ‪1‬‬ ‫‪++‬‬
‫أولويات التنفيذ للعمليات الحسابية‪:‬‬
‫هذه القاعدة مهمة في فهم وترتيب أولويات العمليات الحسابية في التعبيرات‬
‫والمعامالت الحسابية‪ ،‬كما يجريها وينفذها الحاسب‪ ،‬وتنص القاعدة على أن‬
‫األولوية األولى تعطى للعمليات الموجودة بين القوسين ومن اليسار إلى‬
‫اليمين‪ ،‬وبالنسبة للعمليات الحسابية فالرفع إلى الس أوال‪ ،‬والضر (أو القسمة)‬
‫ثانيا‪ ،‬والجمع (أو الطرح) أخي اًر والمثال التالي يوضح القاعدة‪:‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪96‬‬

‫ألن الجمع داخل األقواس يجري أوالً حسب األولوية ثم يقسم ‪ A‬على نتيجة‬
‫القوس‪.‬‬
‫مثال‪:‬‬

‫تنفيذ العمليات حسب الخطوات التالية‪:‬‬


‫تأخذ األقواس األولوية األولى‪ ،‬وتنفذ العمليات داخلها حسب األولوية أيضا‪.‬‬
‫العملية األولى‪ :‬رفع ‪ X‬إلى األس ‪ M‬لتصبح كمية واحدة‪.‬‬
‫العملية الثانية‪ :‬ضرب ‪ K‬في ‪ F‬لتصبح كمية واحدة‪.‬‬
‫العملية الثالثة‪ :‬طرح نتيجة العملية األولى من نتيجة العملية الثانية وتصبح‬
‫النتيجة كمية واحدة‪.‬‬
‫‪97‬‬ ‫تطبيقات في برمجة الحاسب‬

‫العملية الرابعة‪ :‬تقسم ‪ B‬على نتيجة العملية الثالثة وتصبح النتيجة كمية‬
‫واحدة‪.‬‬
‫العملية الخامسة‪ :‬تطرح نتيجة العملية الرابعة من ‪ A‬وتصبح النتيجة كمية‬
‫واحدة‪.‬‬
‫عوامل التعيين الحسابي‪:‬‬
‫باستعمال عوامل التعيين الحسابي يمكن إعادة كتابة تعبير مثل‪:‬‬
‫‪ x= x+3‬على النحو ‪x+=2‬‬
‫يأخذ عامل التعيين الحسابي =‪ +‬القيمة الموجودة على يمينه ويضيفها إلى‬
‫المتغير الموجود على يساره‪ .‬هناك تعيين حسابي لكل من العومل الحسابية‬
‫التالية‪:‬‬
‫‪a+= b‬‬ ‫→‬ ‫‪a= a+ b‬‬
‫‪a-= b‬‬ ‫→‬ ‫‪a= a- b‬‬
‫‪a*= b‬‬ ‫→‬ ‫‪a= a* b‬‬
‫‪a/= b‬‬ ‫→‬ ‫‪a= a/ b‬‬
‫‪a%= b‬‬ ‫→‬ ‫‪a= a% b‬‬
‫مثال‪ :‬ما مخرجات البرنامج التالي عندما ‪. n=20‬‬
‫>‪#include<iostream‬‬
‫;‪using namespace std‬‬
‫) ( ‪int main‬‬
‫{‬
‫;‪int n‬‬
‫تطبيقات في برمجة الحاسب‬ 98

cin >> n;
cout<< “ n after adding 5 = “ << a+= 5 <<endl;
cout<< “ n after a subtracting 5 = “ << a-= 5
<<endl;
cout<< “ n after dividing by 5 = “ << a/= 5
<<endl;
cout<< “ n after multiplying by 5 = “ << a*= 5
<<endl;
cout<< “ n mod 5 = “ << a %= 5 <<endl;
return 0;
}
20 ‫مخرجات البرنامج إذا أدخلنا‬
20
n after adding 5 = 25
n after a subtracting 5 = 15
n after dividing by 5 = 4
n after multiplying by 5 = 100
n mod 5 = 0
: ‫عوامل التزاید والتناقص‬
‫ لزيادة‬- - ‫ و‬+ + ‫ أنها تستعمل األداتين الحسابيتين‬C++ ‫من مزايا لغة‬
:‫ والمثال التالي يبين طريقة االستعمال‬، 1 ‫ أو إنقاصها بمقدار‬1 ‫القيم بمقدار‬
99 ‫تطبيقات في برمجة الحاسب‬

:‫ ما مخرجات البرنامج التالي‬: ‫مثال‬

#include <iostream>
using namespace std;
int main()
{
int n = 4, k = 2;
cout << ++n << endl;
cout << n << endl;
cout << n++ << endl;
cout << n << endl;
cout << -n << endl;
cout << n << endl;
cout << -- n << endl;
cout << n << endl;
cout << n --<< endl;
cout << n << endl;
return 0;
}
‫تطبيقات في برمجة الحاسب‬ ‫‪011‬‬

‫مخرجات البرنامج ‪:‬‬


‫‪5‬‬
‫‪5‬‬
‫‪5‬‬
‫‪6‬‬
‫‪-6‬‬
‫‪6‬‬
‫‪5‬‬
‫‪5‬‬
‫‪5‬‬
‫‪4‬‬
‫العوامل العال ئقية‪:‬‬
‫يرجع اسم األدوات العالئقية إلى العمليات المختصة بالقيم التي بينها‬
‫عالقات وهو أجراء عمليات مقارنة منطقية بين كميات حسابية أو رمزية‪،‬‬
‫وتكون نتيجته منطقية وهي أما نعم )‪ (true‬أو )‪ ،(false‬وفي لغة ‪C++‬‬
‫تعامل النتيجة ال ( ‪ )False‬على أنها صفر (‪ )0‬وتأخذ النتيجة نعم (‪)true‬‬
‫أي قيمة غير الصفر والمشهور أنها (‪.)1‬‬
‫ويبين لنا الجدول التالي األدوات العالئقية‪:‬‬
‫‪010‬‬ ‫تطبيقات في برمجة الحاسب‬

‫العوامل المنطقية‪:‬‬
‫يمكن العمل على القيم صحيح‪/‬خطأ بواسطة العوامل المنطقية ‪ ،‬كما موضح‬
‫في الجدول التالي‪:‬‬

‫مثال‬ ‫الرابط المنطقي‬ ‫الرمز‬


‫‪A>0 && A<1‬‬ ‫‪AND‬‬ ‫&&‬
‫‪A==1 ||A== 0‬‬ ‫‪OR‬‬ ‫||‬
‫‪!A‬‬ ‫‪NOT‬‬ ‫!‬

‫يكون التعبير )&&( ‪ and‬صحيحاً فقط إذا كان التعبيرين الموجودان على‬
‫جانبي العامل && صحيحين بينما يؤدي العامل )||( ‪ or‬إلى نتيجة صحيحة‬
‫إذا كان أحد التعبيرين أو كليهما صحيحاً‪ ،‬العامل )!( ‪ not‬يعكس تأثير‬
‫المتغير الذي يليه أي أن التعبير ‪ !A‬صحيح إذا كان المتغير ‪ A‬خطأ‬
‫والعكس‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪012‬‬

‫الباب التاسع‬

‫جمل التحكم ‪Control Statements‬‬


‫الموضوع‪:‬‬

‫‪ .1‬مقدمة‬

‫‪ .2‬جملة الشرط ‪If Statement‬‬

‫‪ .3‬جملة الشرط ‪if …. Else‬‬

‫‪ .4‬جملة ‪switch‬‬
‫‪013‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب التاسع‬

‫جمل التحكم ‪Control Statements‬‬


‫‪ .1‬مقدمة‪:‬‬

‫عادة يتم تنفيذ األوامر حسب تسلسل ورودها في البرنامج‪ ،‬ويسمى هذا بالتنفيذ‬
‫التتابعي )‪ .( Sequential Execution‬لكننا سنتعرض لبعض أوامر ‪C++‬‬
‫والتي تجعل التنفيذ ينتقل ألمر أخر قد ال تكون التالية في تسلسل البرنامج‪،‬‬
‫ويسمى هذا بنقل التحكم ‪.Transfer of control‬‬

‫تنقسم أوامر التحكم في ‪ C++‬إلى قسمين‪ :‬أوامر التحكم الشرطية والتي سوف‬
‫نعرضها في هذا الباب‪ ،‬والنوع الثاني وهو أوامر التحكم التك اررية والتي سنعرضها‬
‫في الباب التالي‪.‬‬

‫‪ .2‬جملة الشرط ‪: If Statement‬‬

‫تأخذ هذه الجملة الشكل العام التالي‪:‬‬

‫) ‪if ( Expression‬‬
‫{‬
‫;‪Statements‬‬
‫;‪Statements‬‬
‫;‪…..‬‬
‫}‬
‫تطبيقات في برمجة الحاسب‬ ‫‪014‬‬

‫يقوم أمر ‪ if‬الشرطية هنا‪ ،‬بنقل تسلسل تنفيذ البرنامج إلى الجملة‬
‫‪ statement1‬عندما يتحقق الشرط ‪ Condition‬وتكون نتيجته ‪ ، true‬وإذا‬
‫لم يتحقق الشرط‪ ،‬أي تكون النتيجة ‪ ،false‬فإن التنفيذ ينتقل فو ار إلى الجملة (‬
‫أو سلسلة الجمل ) ‪ statment2‬ويعد استعمال ‪ else‬في ‪ C++‬اختياريا‪ ،‬أي‬
‫يمكن حذفها دون أن تتأثر الجملة الشرطية تركيبا واداء ويكون شكلها العام على‬
‫النحو التالي‪:‬‬
‫;‪if (condition) statement1‬‬
‫;‪else statment2‬‬
‫وفي هذه الحالة ستنفذ الجملة ‪ statement1‬أن تحقق الشرط ‪ condition‬وإال‬
‫فإن التنفيذ ينتقل إلى سطر ‪ C++‬التالي لجملة ‪. if‬‬
‫مثال‪:‬‬
‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫) ( ‪int main‬‬
‫{‬
‫;‪int num1 , num2‬‬
‫"‪cout << " Enter two integers, and I will tell you\n‬‬
‫;" ‪<<" the relation ships they satisfy:‬‬
‫;‪cin >> num1>> num2‬‬
‫)‪if (num1== num2‬‬
‫;‪cout << num1 << " is equal to " << num2 << endl‬‬
015 ‫تطبيقات في برمجة الحاسب‬

if (num1!= num2)
cout << num1 << " is not equal to " << num2 << endl;
if (num1< num2)
cout << num1 << " is less than " << num2 << endl;
if (num1> num2)
cout << num1 << " is greater than " << num2 << endl;
if (num1<= num2)
cout << num1 << " is less than or equal to " << num2
<< endl;
if (num1>= num2)
cout << num1 << " is greater than or equal to " <<
num2
<< endl;
return 0;
}
num2=7 ،num1=3 ‫مخرجات البرنامج عندما ندخل‬
Enter two integers , and I will tell you
The relation ships they satisfy: 3 7
3 is not equal to 7
3 is less than 7
3 is less than or equal to 7
‫تطبيقات في برمجة الحاسب‬ 016

: if …. Else ‫ جملة الشرط‬.3


if ( Expression )
{
Statements;
Statements;
…..;
}
else
{
Statements;
Statements;
…..;
}
‫ المعرفة على النحو‬Y ‫ ليحسب القيمة المطلقة لـ‬C++ ‫ اكتب برنامج بلغة‬:‫مثال‬
:‫التالي‬
𝑥 ;𝑥 ≥ 0
Y= |x|={
−𝑥 ; 𝑥 < 0

#include <iostream>
using namespace std;
int main ()
{
int x;
017 ‫تطبيقات في برمجة الحاسب‬

cin>>x;
if (x>=0)
cout<<x;
else
cout<<-x;
return 0;
}
:‫ لتكون مخرجات البرنامج‬X=10 ‫في المثال أعاله سوف ندخل الرقم‬
10
. m ‫ يقبل القسمة على‬n ‫ أكتب برنامج لتحديد إذا كان العدد‬:‫مثال‬
# include <iostream>
using namespace std;
int main ()
{
int m,n;
cout<<"enter two numbers :";
cin>>m>>n;
if (m%n == 0)
cout<<"n divided by m";
else
cout<<"n not divided by m";
return 0; }
‫تطبيقات في برمجة الحاسب‬ 018

:‫مخرجات البرنامج‬
enter two numbers 5 3
n not divided by m
‫ إلى راتب الموظف إذا كان يقل عن راتبه‬% 8 ‫ اكتب برنامج يضيف‬:‫مثال‬
‫ إذا كان راتبه أكثر من ذلك؟‬% 3 ‫ جنيه و‬3000 ‫عن‬
# include <iostream>
using namespace std;
int main (){
float salary;
cout<<"ENTER SALARY";
cin>>salary;
if (salary<3000)
salary=salary+(salary*0.08);
else
salary=salary+(salary*0.03);
cout<<"NEW_salary="<<salary;
return 0;}
:‫مخرجات البرنامج‬
Enter salary :2500
New_salary=2700
Enter salary :5000
New_salary=5150
019 ‫تطبيقات في برمجة الحاسب‬

:switch ‫ جملة‬.4

:‫ الشكل العام التالي‬C++‫ في‬switch ‫تأخذ جملة‬


Switch (Variable name)
{
case constant1 : statement1; break;
case constant2 : statement2; break;
.
.
case constant n : statement n; break;
default : last statement;
}

switch ‫الشكل التالي يوضح طريقة عمل األمر‬


‫تطبيقات في برمجة الحاسب‬ 001

‫ أكتب برنامج يق أر عددين ويطلب من المستخدم إدخال رمز العملية‬: ‫مثال‬


‫الحسابية ثم يجري هذه العملية على عددين ؟‬
# include <iostream>
using namespace std;
int main (){
int num1,num2;
cout<<"Enter two numbers";
cin>>num1>>num2;
char option;
cout<<” Enter the operation symbol ”;
switch (option){
case '+':
cout<<num1 + num2;
break;
case '-':
cout<<num1 - num2;
break;
case '/':
cout<<num1 / num2;
break;
case '*':
cout<<num1 * num2;
‫‪000‬‬ ‫تطبيقات في برمجة الحاسب‬

‫;‪break‬‬
‫;"‪default: cout<<" error‬‬
‫;‪return 0‬‬
‫}‬
‫}‬

‫مخرجات البرنامج ‪:‬‬


‫‪Enter two numbers : 50‬‬ ‫‪60‬‬
‫‪Enter the operation symbol : +‬‬
‫‪110‬‬
‫ملحوظة ‪ :‬فائدة األمر ‪ break‬إذا تحقق الشرط (على سبيل المثال) عند ‪case‬‬
‫‪ 2‬فإنه البرنامج يتوقف عند الـ ‪ , Break‬لكن اذا لم يوجد األمر‬
‫‪ Break‬فإنه يقوم بتنفيذ الحاالت التالية للحالة التي تحقق عندها‬
‫الشرط و لم يوجد بها ‪.break‬‬
‫مثال‪ :‬ما مخرجات البرنامج التالي‪:‬‬
‫>‪# include <iostream‬‬
‫;‪using namespace std‬‬
‫)( ‪int main‬‬
‫{‬
‫;‪int a=2‬‬
‫)‪switch (a‬‬
‫{‬
‫تطبيقات في برمجة الحاسب‬ ‫‪002‬‬

‫‪case 1:‬‬
‫;"‪cout<<"\n the value is one‬‬
‫;‪break‬‬
‫‪case 2:‬‬
‫;"‪cout<<"\n the value is two‬‬
‫‪case 3:‬‬
‫;"‪cout<<"\n the value is three‬‬
‫; ‪break‬‬
‫;‪return 0‬‬
‫}‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪the value is two‬‬
‫‪the value is three‬‬
‫مثال‪ :‬أكتب برنامج للعمليات البنكية للتحكم في عمليات السحب النقدي واإليداع‬
‫واالستعالم عن الرصيد وإغالق الحساب والخروج من نظام الصراف‪.‬‬
‫(نفرض أن حساب المستخدم يحتوي على ‪ 1000‬جنية )‬
‫في هذا البرنامج يوجد خمس عمليات هم ‪:‬‬
‫‪ -1‬استعالم (‪)q‬‬ ‫‪ -2‬ايداع(‪)d‬‬ ‫‪ -1‬سحب (‪)w‬‬
‫‪ -1‬خروج (‪)e‬‬ ‫‪ -4‬اغالق (‪)c‬‬
‫>‪# include <iostream‬‬
‫;‪using namespace std‬‬
003 ‫تطبيقات في برمجة الحاسب‬

int main ()
{
int balance,amount ;
char ch;
balance=1000;
cout<<"\n Withdrawal (w) " ;
cout<<"\n Deposit (d)" ;
cout<<"\n Query (q) " ;
cout<<"\n Close (c) " ;
cout<<"\n Exit (e) " ;
cout<<"\n Enter your selection : " ;
cin>>ch;
switch (ch)
{
case 'w':
{
cout<<"Enter your amount :" ;
cin>>amount;
if (amount<= balance)
{
balance = balance - amount;
cout<<"\n new balance : "<<balance;
}
else
cout<<"your balance is not enough";
‫تطبيقات في برمجة الحاسب‬ 004

}
break;
case 'd':
{
cout<<"Enter your amount :";
cin>>amount;
balance = balance + amount;
cout<<"\n your balance : "<<balance;
}
break;
case 'q':
{
cout<<"\n your balance : "<<balance;
}
break;
case 'c':
{
cout<<"Take the cash";
balance = 0;
cout<<"\n your balance : "<<balance;
}
break;
case 'e':
{
cout<<"Thank you";
005 ‫تطبيقات في برمجة الحاسب‬

}
break;
}
Return 0;
}
: ‫تنفيذ البرنامج‬
Withdrawal (w)
Deposit (d)
Query (q)
Close (c)
Exit (e)
Enter your selection : w
Enter your amount : 200
New balance : 800
‫تطبيقات في برمجة الحاسب‬ ‫‪006‬‬

‫الباب العاشر‬
‫الحلقات التكرارية ‪Looping‬‬

‫الموضوع‪:‬‬
‫‪ .1‬مقدمة‬
‫‪ .2‬حلقة التكرار ‪For‬‬
‫‪ .1‬حلقة التكرار ‪While‬‬
‫‪ .4‬حلقة التكرار ‪Do … While‬‬
‫‪ .1‬التحكم بالحلقات‬
‫‪ ‬األمر ‪Continue‬‬
‫‪ ‬األمر ‪break‬‬
‫‪ ‬األمر ) (‪exit‬‬
‫‪ ‬األمر ‪goto‬‬
‫‪007‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب العاشر‬
‫الحلقات التكرارية‬

‫‪ .1‬مقدمة‪:‬‬
‫عددا من أساليب التكرار (حلقات) التي تستخدم لتكرار أجزاء‬
‫توفر لغة ‪ً C++‬‬
‫من البرنامج قدر ما تدعو الحاجة‪ ،‬لتحديد عدد مرات تكرار الحلقة تفحص‬
‫كل حلقات ‪ C++‬ما إذا كان تعبير ما يساوى صحيح (‪ )true‬أو خطأ (‬
‫‪ )false‬يبلغها هذا ما إذا كان عليها التكرار مرة إضافية أخرى أو التوقف‬
‫فور‪ .‬هنالك ثالثة أنواع من حلقات التكرار في لغة ‪ C++‬هم ‪:‬‬
‫ًا‬
‫‪ .1‬حلقة التكرار ‪For‬‬
‫‪ .2‬حلقة التكرار ‪While‬‬
‫‪ .1‬حلقة التكرار ‪Do … While‬‬

‫‪ .2‬حلقة التكرار ‪: For‬‬

‫الشكل العام للحلقة ‪: for‬‬


‫;‪for ( initial-value; condition; increment ) statement‬‬
‫الشكل التالي يوضح طريقة عمل حلقة ‪: for‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪008‬‬

‫تقوم جملة ‪ for‬هنا مبتدئة بقيمة العداد االبتدائية ‪ initial-value‬بتنفيذ‬


‫الجملة ‪ statement‬أول مرة‪ ،‬وفي المرة التالية تزداد القيمة االبتدائية للعداد‬
‫بمقدار الزيادة ‪ increment‬ثم تنفذ جملة ‪ statement‬مرة ثانية ‪...‬‬
‫وهكذا حتى يستكمل الشرط ‪ condition‬أمر إنهاء عمليات التكرار والخروج‬
‫من حلقة ‪. for‬‬
‫واألمثلة التالي توضح كيفية استعمال حلقات التكرار بجملة ‪. for‬‬
009 ‫تطبيقات في برمجة الحاسب‬

. 10 ‫ إلى‬1 ‫ اكتب برنامج يقوم بطباعة األعداد من‬:‫مثال‬


// using the for repetition structure
#include<iostream>
using namespace std;
int main( )
{
for ( int I = 1; I<= 10; I++)
cout << I <<endl ;
return 0;
}
:‫مخرجات البرنامج‬
1
2
3
4
5
6
7
8
9
10
‫تطبيقات في برمجة الحاسب‬ 021

.‫" أربعة مرات‬Damnhour" ‫ اكتب برنامجا يقوم بطباعة كلمة‬:‫مثال‬


#include<iostream>
using namespace std;
int main( )
{
for ( int i=1 ; i <= 5 ; i ++ )
cout << " \ n Damnhour " ;
return 0;
}
:‫مخرجات البرنامج‬
Damnhour
Damnhour
Damnhour
Damnhour

.‫ اكتب برنامجا لعد القيم السالبة المدخلة من عشر قيم مدخلة‬:‫مثال‬


#include<iostream>
using namespace std;
int main( )
{
int num, ncount=0;
for(int i=1 ; i<=10;i++)
020 ‫تطبيقات في برمجة الحاسب‬

{
cout<<"Enter the number:";
cin>>num;
if(num<0)
ncount++;
}
cout<<"ncount="<<ncount;
return 0;
}
:‫مخرجات البرنامج‬
Enter the number: -8
Enter the number:5
Enter the number:-7
Enter the number:-6
Enter the number:4
Enter the number:5
Enter the number:8
Enter the number:7
Enter the number:-9
Enter the number:2
ncount= 4
‫تطبيقات في برمجة الحاسب‬ 022

:‫ اكتب برنامج يقوم بحساب قيمة المعادلة التالية‬:‫مثال‬


S= + + + ⋯ +
1 1 1 1
2 4 6 100
#include<iostream>
using namespace std;
int main( )
{
float s=0;
for ( float i=2 ; i < =100 ; i=i+2)
s=s+1/i;
cout << "The sum = "<<s;
return 0;
}
:‫مخرجات البرنامج‬
The sum = 2.2496

.‫ ألي عدد يدخله المستخدم‬factorial ‫ اكتب برنامجا يطبع المضروب‬:‫مثال‬


n × ... × 3 × 2 ×1 = n! ‫حيث أن مضروب‬
#include<iostream>
using namespace std;
int main()
{
int n,f=1,i;
023 ‫تطبيقات في برمجة الحاسب‬

cin>>"Enter the number=">>n;


for(i=1;i<=n;i++)
{
f=f*i;
}
cout<<"\n the factorial="<<f;
return 0;
}
:‫مخرجات البرنامج‬
Enter the number= 4
The factorial=24
: ‫ واحدة‬for ‫ تعريف متغيرين في حلقة‬
:‫ ما مخرجات البرنامج التالي‬:‫مثال‬
#include<iostream>
using namespace std;
int main( )
{
int j,s;
for (j=0 , s=0; j<10; ++ j , s+=j)
cout <<s<<' ';
return 0 ;
}
‫تطبيقات في برمجة الحاسب‬ ‫‪024‬‬

‫مخرجات البرنامج ‪:‬‬


‫‪0 1 3 6 10 15 21 28 36 45‬‬

‫مثال ‪ :‬ما مخرجات البرنامج التالي‪:‬‬


‫>‪#include<iostream‬‬
‫;‪using namespace std‬‬
‫) (‪int main‬‬
‫; ‪int sum‬‬
‫‪for ( int‬‬ ‫; ‪i=1,j=1 ; i<=5‬‬ ‫) ‪i++ , j++‬‬
‫; ‪cout << i << "+" << j << "=" << i+j << endl‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج ‪:‬‬
‫‪1+1=2‬‬
‫‪2+2=4‬‬
‫‪3+2=6‬‬
‫‪4+4=8‬‬
‫‪5 + 5 = 10‬‬

‫في البرنامج أعاله تم تعريف متغيرين ‪ i‬و ‪ j‬تتزايد قيمهم بنفس القيمة (ألنهم‬
‫في حلقة واحدة) و في كل قيمة جديدة لهما يتم حساب مجموع القيمتين حتى‬
‫تتوقف الحلقة عندما تصبح ‪ i‬أكبر من ‪. 5‬‬
025 ‫تطبيقات في برمجة الحاسب‬

:‫ المتداخلة‬for ‫ حلقات‬
:‫ المتداخلة الشكل العام التالي‬for ‫تأخذ الحلقات‬
for (initial-value; condition; increment)
for (initial-value; condition; increment)
for (initial-value; condition; increment)
statements;
:‫ ما مخرجات البرنامج التالي‬:‫مثال‬
#include<iostream>
using namespace std;
int main( )
{
int i,j;
for (i=1 ; i<3;++i)
{
for (j=1 ; j<4;++j)
cout << i*j<<"\t" ;
}
return 0;
}
:‫مخرجات البرنامج‬
1 2 3 2 4 6
‫تطبيقات في برمجة الحاسب‬ 026

:‫ اكتب برنامج لطباعة الشكل التالي‬:‫مثال‬


*
**
***
****

#include<iostream>
using namespace std;
int main( )
{
int i,j;
for (i=1 ; i<=4; i++)
{
for (j=1 ; j<=i; j++)
cout << "*";
cout << "\n";
}
return 0;
}
‫‪027‬‬ ‫تطبيقات في برمجة الحاسب‬

‫مثال‪ :‬ما مخرجات البرنامج التالي‪:‬‬


‫>‪#include<iostream‬‬
‫;‪using namespace std‬‬
‫) (‪int main‬‬
‫{‬
‫;‪int i,j‬‬
‫)‪for (i = 1, j=1 ; i <= 3 ; i ++ , j+=2‬‬
‫;‪cout << i + j << endl‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪2‬‬
‫‪5‬‬
‫‪8‬‬

‫‪ .3‬حلقة التكرار ‪while‬‬

‫توفر حلقة ‪ while‬تكرار فعل جزء من البرنامج إلى أن يتغير شرط ما‪.‬‬
‫الشكل العام لحلقة ‪: while‬‬

‫{ ) ‪while ( Condition‬‬
‫)‪statement(loop body‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪028‬‬

‫‪step‬‬
‫}‬
‫الشكل التالي يوضح طريقة عمل حلقة ‪:while‬‬

‫ملحوظة ‪:‬‬
‫‪ -‬إذا تم االستغناء عن ‪ step‬وكانت قيمة الـ ‪ Condition‬صواب فهذا‬
‫يؤدي إلى دوران ال نهائي‪.‬‬
‫‪ -‬يجب تعريف عداد لجملة ‪ while‬خارجها وإعطاء قيمة أولية ويفضل‬
‫أن يكون قيمة جملة ‪ while‬مباشرة‪.‬‬
‫مثال‪ :‬اكتب برنامج بلغة ‪ C++‬يحسب قيمة المعادلة التالية‪:‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪99‬‬
‫‪S= + + + ⋯ +‬‬
‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪100‬‬

‫>‪#include<iostream‬‬
‫;‪using namespace std‬‬
029 ‫تطبيقات في برمجة الحاسب‬

int main( )
{
double s,x;
s=.5;
x=2.0;
while(x<=99)
{
s=s+x/(x+1.0);
x=x+1.0;
}
cout<<"s= "<<s<<endl;
return 0;
}
:‫تنفيذ البرنامج‬
S=94.8126

.‫ ألي عدد يدخله المستخدم‬factorial ‫ اكتب برنامجا يطبع المضروب‬:‫مثال‬


n × ... × 3 × 2 ×1 = n! ‫ حيث أن مضروب‬، while ‫باستخدام‬
#include<iostream>
using namespace std;
int main( )
{
‫تطبيقات في برمجة الحاسب‬ ‫‪031‬‬

‫;‪int n , fact=1, i=1‬‬


‫;”‪cout<<”Enter Number:‬‬
‫;‪cin>>n‬‬
‫)‪while (i<=n‬‬
‫{‬
‫;‪fact *=i‬‬
‫;‪i++‬‬
‫}‬
‫;‪cout<<”factorial=” <<fact‬‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪Enter the number= 4‬‬
‫‪The factorial=24‬‬

‫‪ .4‬حلقة التكرار ‪do … while‬‬


‫تتميز حلقة ‪ do … while‬أنها تنفذ العملية أوالً ‪ ،‬ثم تكرر العملية طالما‬
‫الشرط متحقق‪ ،‬بمعنى أنه إذا لم يتحقق الشرط فإنها ستنفذ العملية مرة واحدة‬
‫على األقل‪.‬‬
‫الشكل العام لحلقة ‪: do… while‬‬
‫{ ‪do‬‬
‫)‪statement(loop body‬‬
‫‪step‬‬
‫‪030‬‬ ‫تطبيقات في برمجة الحاسب‬

‫;) ‪} while ( Condition‬‬


‫الشكل التالي يوضح طريقة عمل حلقة ‪:do…while‬‬

‫ملحوظة ‪:‬‬
‫‪ -‬يجب تعريف عداد وإعطاء قيمة أولية قبل جملة ‪ do while‬فهو الذي‬
‫سوف يتغير قيمته إما بالزيادة أو النقصان بواسطة استخدام ‪.step‬‬
‫‪ -‬يجب أن تنتهي جملة ‪ do while‬بفاصلة منقوطة (;) ‪.‬‬
‫‪ -‬سيتم تنفيذ الجملة أو الجمل التابعة لجملة ‪ do while‬مرة واحدة على‬
‫األقل‪.‬‬
‫‪ -‬إذا كان هناك أكثر من جملة مراد تكررها يجب وضعها ضمن } {‪.‬‬
‫مثال‪ :‬اكتب برنامج بلغة ‪ C++‬يقوم بطباعة األعداد من ‪ 1‬إلي‪. 10‬‬
‫باستخدام ‪do.. while‬‬
‫>‪#include<iostream‬‬
‫;‪using namespace std‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪032‬‬

‫( )‪int main‬‬
‫{‬
‫;‪int c = 1‬‬
‫‪do‬‬
‫{‬
‫;" "<<‪cout << c‬‬
‫;‪c++‬‬
‫;)‪}while (c <= 10‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪1 2 3 4 5 6 7 8 9 10‬‬

‫‪ .5‬التحكم بالحلقات‪:‬‬
‫تعمل الحلقات عادة بشكل جيد إال أننا في بعض األوقات نحتاج للتحكم بعمل‬
‫الحلقات‪ ،‬األوامر ‪ go to ، exit ، break ، continue‬توفر هذه المرونة‬
‫المطلوبة‪.‬‬
‫‪ ‬األمر ‪: continue‬‬
‫تعيد العبارة ‪ continue‬التنفيذ إلى أعلى الحلقة‪.‬‬
‫الشكل التالي يوضح كيفية عمل العبارة ‪: continue‬‬
033 ‫تطبيقات في برمجة الحاسب‬

:‫ ما مخرجات البرنامج التالي‬:‫مثال‬

// continue loop example


#include<iostream>
using namespace std;
int main) (
{
for (int n=10; n>0; n--)
{
if (n==5) continue;
cout << n << ", ";
}
cout << "break!\n";
}
:‫مخرجات البرنامج‬
10, 9, 8, 7, 6, 4, 3, 2, 1, break!
‫تطبيقات في برمجة الحاسب‬ 034

‫ يقوم بحساب القسمة لعددين وتكرر تنفيذ عملية‬C++ ‫ اكتب برنامج بلغة‬:‫مثال‬
‫القسمة أكثر من مرة وإذا كان القاسم يساوي صفر فإنه يطلب من البرنامج‬
.‫إدخال قاسم ومقسوم جديدين‬
#include<iostream>
using namespace std;
int main) (
{
int dividend , divisor;
char ch;
do
{
cout << "Enter dividend:\n ";
cin>>dividend;
cout<< "Enter divisor:\n ";
cin>>divisor;
if( divisor == 0)
{
cout<<" Divisor can't be zero\n" ;
continue;
}
cout <<"Quotient is: "<< dividend/divisor;
cout<<" Do another (y/n)?\n";
cin>>ch;
}
035 ‫تطبيقات في برمجة الحاسب‬

while (ch! = 'n');


}
:‫مخرجات البرنامج‬
Enter dividend:12
Enter divisor:3
Quotient is:4
Do another (y/n)?y

Enter dividend:15
Enter divisor:0
Divisor can't be zero
Do another (y/n)?n
‫ ما عدا التي تقبل‬100 ‫ إلى‬1 ‫ اكتب برنامج يطبع جميع األعداد من‬:‫مثال‬
‫ بدون باق‬6 ، 4 ، 2 ‫القسمة على‬
#include <iostream>
using namespace std;
int main()
{
int number;
for (number=1; number<=20;++ number)
{
if (number%2) // for ood values
‫تطبيقات في برمجة الحاسب‬ ‫‪036‬‬

‫;‪continue‬‬
‫)‪else if (number%4‬‬
‫;‪continue‬‬
‫)‪else if (number%6‬‬
‫;‪continue‬‬
‫‪else‬‬
‫;"‪cout<< number<<"\t‬‬
‫}‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪1 3 5 7 9 11 13‬‬ ‫‪15‬‬ ‫‪17‬‬ ‫‪19‬‬

‫‪ ‬األمر ‪: break‬‬

‫وظيفة األمر ‪ break‬هي إيقاف بنية أو حلقة تكرار عند تحقق شرط أو شروط‬
‫معينة ‪ ،‬وعند تنفيذها يتم القفز إلى سلسلة الجمل التالية للبنية أو حلقة التكرار‪،‬‬
‫وتستعمل ‪ break‬أيضا في إيقاف حلقة التكرار الالنهائي‪ ،‬أو الخروج منها إلى‬
‫الجمل التي تليها‪.‬‬
‫الشكل التالي يوضح كيفية عمل العبارة ‪: break‬‬
037 ‫تطبيقات في برمجة الحاسب‬

:‫ ما مخرجات البرنامج التالي‬:‫مثال‬


#include<iostream>
using namespace std;
int main) (
{
int i;
for (i=1;i<100;++i)
{
cout<<i<<"\t";
if (i==10)
break;
}
return 0;
}
:‫مخرجات البرنامج‬
1 2 3 4 5 6 7 8 9 10
‫تطبيقات في برمجة الحاسب‬ 038

‫ يطبع مجموع األعداد المدخله عن طريق‬C++ ‫ اكتب برنامج بلغة‬:‫مثال‬


0 ‫المستخدم غير معلوم عددهم ويتوقف البرنامج عندما يدخل المستخدم الرقم‬

#include <iostream>
using namespace std;
int main()
{
float number, sum = 0.0;
// test expression is always true
while (true)
{
cout << "Enter a number: ";
cin >> number;
if (number != 0.0)
{
sum += number;
}
else
{
// terminates the loop if number equals 0.0
break;
}
039 ‫تطبيقات في برمجة الحاسب‬

}
cout << "Sum = " << sum;
return 0;
}
:‫مخرجات البرنامج‬
Enter a number: 5
Enter a number:7
Enter a number:3
Enter a number:-8
Enter a number:3
Enter a number:0

: exit( ) ‫ األمر‬
.‫تعمل هذه الدالة على إيقاف (أو الخروج من) البرنامج مباشرة‬
: ‫مثال‬
#include <iostream>
using namespace std;
int main()
{

char ch;
‫تطبيقات في برمجة الحاسب‬ ‫‪041‬‬

‫;‪cin>>"Enter the character:" <<ch‬‬


‫)'‪if (ch!='A‬‬
‫;)‪exit(1‬‬
‫;‪cout<<" The character is: \n"<<ch‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪Enter the character: A‬‬
‫‪The character is : A‬‬

‫‪Enter the character: Z‬‬


‫خروج من البرنامج‬

‫‪ ‬األمر ) (‪: goto‬‬


‫من المعروف أن معظم لغات البرمجة الحديثة‪ ،‬تحرص في غالب األحيان أال‬
‫تستعمل جملة ‪ goto‬من أجل التأكيد على المبرمج أن يتعامل مع برامجه بطريقة‬
‫هيكلية ‪ structured‬ذاتية المداخل والمخارج‪ ،‬والعمليات دون التدخل من‬
‫المبرمج باستخدام األمر ‪ goto‬أي أذهب إلى أي سطر بالبرنامج في هذه‬
‫الحالة يعتمد على نفسه‪.‬‬
‫مثال‪ :‬ما مخرجات البرنامج التالي عندما ‪x=8‬‬
‫>‪#include <iostream‬‬
040 ‫تطبيقات في برمجة الحاسب‬

using namespace std;


int main()
{
int x;
cout<<"Enter x:"<<endl;
cin>>x;
if (x<10) goto negative;
negative: cout<<"value is under 10"<<endl;
return 0;
}
: ‫مخرجات البرنامج‬
Enter x: 8
Value is under 10
‫تطبيقات في برمجة الحاسب‬ ‫‪042‬‬

‫الباب الحادي عشر‬


‫المصفوفات ‪Array‬‬

‫الموضوع‪:‬‬
‫‪ .1‬مقدمة‬
‫‪ .2‬المصفوفات ذات البعد الواحد ‪One-Dimensional Arrays‬‬

‫‪ .1‬المصفوفات ذات البعدين ‪Two-Dimensional Arrays‬‬


‫‪043‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الباب الحادي عشر‬


‫المصفوفات ‪Array‬‬

‫‪ .1‬المصفوفات ذات البعد الواحد ‪:One-Dimensional Arrays‬‬


‫المصفوفات هي مجموعة من العناصر ذات النوع نفسه‪ ،‬و التي تخزن‬
‫متتابعة مرقمة‪.‬‬
‫أن طرق التعامل مع أسماء المتغيرات والثوابت العددية والرمزية‪ ،‬التي وردت‬
‫سابقاً‪ ،‬تعد صالحة للتعامل مع عدد محدود من هذه الثوابت والمتغيرات‪،‬‬
‫سواء في عمليات اإلدخال واإلخراج أو في العمليات الحسابية والمنطقية‪،‬‬
‫وعندما يصبح عدد المتغيرات كبي ار جدا‪ ،‬تصبح تلك الطرق غير عملية ‪،‬‬
‫فمثال لو أردنا إدخال مائة قيمة للمتغيرات ‪ x1,x2,x3, ….. ,x100‬فكم‬
‫الحيز المطلوب من البرنامج لعمليات اإلدخال واإلخراج والعمليات الحسابية‬
‫والمنطقية لهذه المتغيرات؟‬
‫هذا من جهة‪ ،‬ومن جهة أخرى ‪ :‬فأننا نوفر مخزنا خاصا لكل متغير نتعامل‬
‫معه‪ ،‬أثناء تنفيذ البرنامج‪ ،‬ولذلك لحفظ قيمته في مخزن‪ ،‬ومن ثم الستعمال‬
‫قيمته في عمليات أخرى تالية‪ ،‬ومن ناحية ثالثة ‪ ،‬فإن من الصعوبة بمكان‪،‬‬
‫بل من المستحيل استعمال اسم المتغير العددي أو الرمزي كمصفوفة ذات‬
‫بعدين‪ ،‬وثالثة أبعاد ‪...‬الخ‪.‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪044‬‬

‫لألسباب الثالثة الواردة أعاله ‪ ،‬جاءت فكرة استعمال متغير جماعي يضم‬
‫تحت اسمه عددا من العناصر يسمى بالمتغير الرقمي ‪subscripted‬‬
‫‪ ، variable‬ويتم ترقميه بين قوسين مربعين ] [ يوضع بينهما قيمة العداد‬
‫المرقم ‪ ، subscript‬وقد نسميه الدليل ‪ index‬أحيانا فمثالً‪:‬‬
‫]‪ a[n] ...a[2], a[1], a[0‬تابع للمتغير ] [‪. a‬‬
‫وكل عنصر من هذه العناصر له عنوان في الذاكرة ‪. address‬‬
‫الشكل العام لالعالن عن مصفوفة‪:‬‬
‫;]‪Type-specifier array-name[size‬‬

‫فمثال لإلعالن عن مصفوفة ‪ a‬عدد عناصرها ‪ 13‬عناصر‪:‬‬


‫;]‪int a[10‬‬
‫اسم المصفوفة ‪ ، a‬وقد حجز لها ‪ 10‬موقعا بالذاكرة من النوع الصحيح‬
‫مثال‪ :‬يستخدم البرنامج التالي حلقة ‪ for‬لتمهيد عناصر المصفوفة ‪ n‬عند ‪0‬‬
‫وطباعة عناصر المصفوفة‪.‬‬
‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫) (‪int main‬‬
045 ‫تطبيقات في برمجة الحاسب‬

{
int n[10];
for (int i=0; i<10;i++) // initialize array
n[i] = 0;
cout << “Element value” << endl;
for (i=0 ; i< 10; i++) // print array
cout <<n[i]<<endl;
return 0;
}
:‫مخرجات البرنامج‬
Element value
0
0
0
0
0
0
0
0
0
0

:‫ ما مخرجات البرنامج التالي‬:‫مثال‬


#include <iostream>
using namespace std;
int main( )
{
‫تطبيقات في برمجة الحاسب‬ ‫‪046‬‬

‫;]‪int x[5], y[5‬‬


‫;‪int I‬‬
‫)‪for (I=0;I<5;++I‬‬
‫{‬
‫;‪x[I]=I‬‬
‫;‪y[I]=I*I‬‬
‫;]‪cout<<endl<<x[I]<<y[I‬‬
‫}‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج‪:‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪4‬‬
‫‪3‬‬ ‫‪9‬‬
‫‪4‬‬ ‫‪16‬‬
‫إعطاء قيمة أولية للمصفوفة ذات البعد الواحد ‪Array Initialization‬‬
‫مثال على إدخال عدة عناصر من مصفوفة الدرجات ] [‪grade‬‬
‫}‪int grade[5]={80,90,54,50,95‬‬
‫ومثال على إدخال قيم عناصر المصفوفة الرمزية ] [‪name‬‬
‫”‪char name[4]=“abc‬‬
‫‪047‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الحظ أن المتغير ] [‪ name‬مكون من أربعة عناصر بينما تم إعطاؤه ثالثة‬


‫عناصر فقط والسبب أن العنصر الرابع بالنسبة إلى المعطيات الرمزية يكون‬
‫خاليا‪.‬‬
‫مثال‪ :‬ما مخرجات البرنامج التالي‪:‬‬
‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫{) (‪int main‬‬
‫;}‪int a[6]={10,20,30,40,50,60‬‬
‫;‪int I‬‬
‫)‪for(I=0;I<6;I++‬‬
‫;‪cout<<a[I]<<endl‬‬
‫};‪return 0‬‬
‫مخرجات البرنامج‪:‬‬

‫‪10‬‬
‫‪20‬‬
‫‪30‬‬
‫‪40‬‬
‫‪50‬‬
‫‪60‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪048‬‬

‫مثال‪ :‬اكتب برنامج يقوم بإيجاد مجموع ‪ ،‬ومعدل درجات الطالب في ‪ 1‬مواد‬
‫وهذه الدرجات كالتالي ‪80 , 76 , 80 , 96 , 60 :‬‬
‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫) (‪int main‬‬
‫{‬
‫;}‪int a[5]={ 80 , 76 , 80 , 96 , 60‬‬
‫;‪int s=0,i‬‬
‫)‪for(i=0;i<5;i++‬‬
‫;]‪s=s+a[i‬‬
‫;‪float avg=s/5‬‬
‫;‪cout<<s<<endl<<avg<<endl‬‬
‫;‪return 0‬‬
‫}‬
‫مخرجات البرنامج ‪:‬‬
‫‪392‬‬
‫‪78‬‬

‫عنوان عناصر المصفوفة في الذاكرة ‪:‬‬

‫ذكرنا من قبل أن آي متغير أو عنصر يحتل موقعا من الذاكرة يستعمل‬


‫عادة مؤش ار لكل متغير أو عنصر‪ ،‬ليكون دليال على استعمال هذه المتغيرات‬
‫‪049‬‬ ‫تطبيقات في برمجة الحاسب‬

‫والعناصر بسهولة ويسر‪ ،‬والمثال التالي يوضح هذه العملية بالنسبة‬


‫للمصفوفة ذات بعد واحد‪.‬‬
‫يمكن تمثيل عناصر المصفوفة ‪ X‬المعلن عنها ‪ ،‬مع عناوينها بالشكل‬
‫التوضيحي التالي ( من اليسار إلى اليمين)‪.‬‬

‫األول‬ ‫الثاني‬ ‫الثالث‬ ‫الرابع‬ ‫الخامس‬


‫]‪X[0‬‬ ‫]‪X[1‬‬ ‫]‪X[2‬‬ ‫]‪X[3‬‬ ‫]‪X[4‬‬
‫‪10‬‬ ‫‪20‬‬ ‫‪30‬‬ ‫‪40‬‬ ‫‪50‬‬ ‫عنوان الذاكرة‬

‫قيمة العنصر‬

‫إذا فرضنا أن عنوان موقع العنصر األول ]‪ X[0‬في الذاكرة هو ‪، 100‬‬


‫فإن عناوين العناصر األخرى تكون على التوالي ‪104 , 103 , 102 ,‬‬
‫‪. 101‬‬

‫مثال‪ :‬ما مخرجات البرنامج التالي ‪:‬‬


‫‪// Histogram printing program‬‬
‫>‪#include <iostream‬‬
‫>‪#include <iomanip‬‬
‫;‪using namespace std‬‬
‫{ ) (‪int main‬‬
‫تطبيقات في برمجة الحاسب‬ 051

const int arraySize = 10;


int n[arraySize] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };
cout << "Element" << setw( 13 ) << "Value" << setw(
17 ) << "Histogram" << endl;
for ( int i = 0; i < arraySize ; i++ ) {
cout << setw( 7 ) << i << setw( 13 ) << n[ i ] <<
setw(9);
for ( int j = 0; j < n[ i ]; j++ ) // print one bar
cout << '*';
cout << endl; }
return 0; }
: ‫مخرجات البرنامج‬
Element Value Histogram
0 19 *******************
1 3 ***
2 15 ***************
3 7 *******
4 11 ***********
5 9 *********
6 13 *************
7 5 *****
8 17 *****************
9 1 *
050 ‫تطبيقات في برمجة الحاسب‬

: ‫ملحوظة‬
‫ وذلك ألننا استخدمنا‬#include <iomanip> ‫في البرنامج السابق تم إضافة‬
‫ والذي يعني ضبط‬setw(13) ‫ التهيئة‬cout ‫في تهيئة مخرجات األمر‬
13 ‫ أي أن القيمة التي ستتم طباعتها ستكون على بعد‬13 ‫عرض الحقل عند‬
.‫من القيمة التي تمت طباعتها قبلها‬

:‫ ما مخرجات البرنامج التالي‬:‫مثال‬


// Treating character arrays as strings
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
char string1[ 20 ], string2[] = "string literal";
cout << "Enter a string: ";
cin >> string1;
cout << "string1 is: " << string1 << "\nstring2 is: " <<
string2
<< "string1 with spaces between characters is:\n";

for ( int i = 0; string1[ i ] != '\0'; i++ )


cout << string1[ i ] << ' ';
cin >> string1; // reads "there"
‫تطبيقات في برمجة الحاسب‬ 052

cout << "\nstring1 is: " << string1 << endl;


cout << endl;
return 0;
}
:‫مخرجات البرنامج‬
Enter a string: Hello there
string1 is: Hello
string2 is: string literal
string1 with spaces between characters is:
Hello
string1 is: there

:‫ اكتب برنامج يقوم بترتيب القيم التالية ترتيبا تصاعديا‬:‫مثال‬


2 6 4 8 10 12 89 68 45 37
// program sorts an array's values into
// ascending order
#include <iostream>
#include <iomanip>
using namespace std;
int main( ){
const int arraySize = 10;
int a[ arraySize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
int i, hold;
cout << "Data items in original order\n";
053 ‫تطبيقات في برمجة الحاسب‬

for ( i = 0; i < arraySize; i++ )


cout << setw( 4 ) << a[ i ];
for ( int pass = 0; pass < arraySize - 1; pass++ )
for ( i = 0; i < arraySize - 1; i++ ) // one pass
if ( a[ i ] > a[ i + 1 ] ) { // one comparison
hold = a[ i ]; // one swap
a[ i ] = a[ i + 1 ];
a[ i + 1 ] = hold; }
cout << "\nData items in ascending order\n";
for ( i = 0; i < arraySize; i++ )
cout << setw( 4 ) << a[ i ];
cout << endl;
return 0; }
:‫مخرجات البرنامج‬
Data items in original order
2 6 4 8 10 12 89 68 45 37
Data items in ascending order
2 4 6 8 10 12 37 45 68 89
‫ قيم ويطبع‬13 ‫ يقوم المستخدم بإدخال‬C++ ‫ اكتب برنامج بلغة‬: ‫مثال‬
.‫البرنامج أكبر قيمة من القيم المدخلة‬
#include <iostream>
using namespace std;
int main( ){
int i,max = 0;
‫تطبيقات في برمجة الحاسب‬ 054

int list[10];
for(i=0; i<10; i++){
cout<<"Number"<<" "<<i+1<<"=";
cin>>list[i];}
for(i=0; i<10; i++)
if(max < list[i])
max = list[i];
cout <<"Maximum value=" << max;
return(0);}
:‫مخرجات البرنامج‬
Number 1= 5
Number 2= 7
Number 3= 18
Number 4 = 14
Number 5 = 6
Number 6 = 5
Number 7 = 16
Number 8 = 18
Number 9 = 19
Number 10 = 9
Maximum value= 19
‫‪055‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .2‬المصفوفات ذات البعدين ‪:Two-Dimensional Arrays‬‬


‫تشبه المصفوفة ذات البعدين في طريقة تعاملها‪ ،‬المصفوفة ذات البعد الواحد‬
‫إال أن لها عدادين ‪ index2‬دليلين إحداهما عداد الصفوف واألخر عداد‬
‫لألعمدة ويأخذ اإلعالن عن المصفوفة الشكل العام التالي‪:‬‬
‫;]‪Type-specifier array_name [index 1][index 2‬‬
‫فمثال المصفوفة‪:‬‬
‫;]‪int x[2][3‬‬
‫وهي مصفوفة صحيحة العناصر ‪ int‬ابعادها هي عدد الصفوف = ‪، 2‬‬
‫وعدد األعمدة=‪3‬‬
‫مثال‪ :‬اكتب برنامج بلغة ‪ C++‬إلدخال عناصر مصفوفة ذات بعدين ‪3 × 2‬‬
‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫) (‪int main‬‬
‫{‬
‫;‪int num [2][3],i,j‬‬
‫) ‪for ( i=0;i<=1;i++‬‬
‫) ‪for ( j=0 ; j<=2 ; j++‬‬
‫{‬
‫; "‪cout <<"Enter number:‬‬
‫; ] ‪cin >> num [ i ][ j‬‬
‫}‬
‫};‪return 0‬‬
‫تطبيقات في برمجة الحاسب‬ 056

:‫مخرجات البرنامج‬
Enter number:5
Enter number:8
Enter number:9
Enter number:10
Enter number:-9
Enter number:82

3×3 ‫ يحسب مجموع مصفوفتين من الدرجة‬C++ ‫ اكتب برنامج بلغة‬:‫مثال‬


. ‫ويطبع ناتج الجمع‬
#include <iostream>
using namespace std;
int main( )
{
int i,j;
int b[5][5];
int a[5][5];
int c[5][5];
cout<<"The array A=\n";
for( i=0;i<=2;i++)
for( j=0;j<=2;j++)
{
cin>>a[i][j];
057 ‫تطبيقات في برمجة الحاسب‬

}
cout<<"The array B=\n";
for ( i=0;i<=2;i++)
for ( j=0;j<=2;j++)
{
cin>>b[i][j];
}
for ( i=0;i<=2;i++)
for ( j=0;j<=2;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
cout<<"the sum=\n";
for( i=0;i<=2;i++)
{
for ( j=0;j<=2;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
return 0;
}
‫تطبيقات في برمجة الحاسب‬ ‫‪058‬‬

‫مخرجات البرنامج‪:‬‬
‫‪The array A:‬‬
‫‪2 3 1‬‬
‫‪5 6 4‬‬
‫‪7 8 9‬‬

‫‪The array B:‬‬


‫‪5 4 6‬‬
‫‪2 3 1‬‬
‫‪0 1 5‬‬

‫‪The sum:‬‬
‫‪7 7 7‬‬
‫‪7 9 5‬‬
‫‪7 9 14‬‬
‫مثال‪ :‬اكتب برنامج بلغة ‪ C++‬لحساب مجموع عناصر الصف الثاني ومجموع‬
‫عناصر العمود الثالث في مصفوفة ‪ 3×3‬ويطبع ناتج الجمع‪.‬‬
‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫) (‪int main‬‬
‫{‬
‫;]‪int a[5][5‬‬
‫;‪int i,j,sum_r,sum_c‬‬
‫;‪sum_r=sum_c=0‬‬
059 ‫تطبيقات في برمجة الحاسب‬

cout<<"The array\n";
for ( i=0;i<3;i++)
for ( j=0;j<3;j++)
cin>>a[i][j] ;
for ( i=0;i<3;i++)
sum_c=sum_c+a[i][2];
for ( j=0;j<3;j++)
sum_r=sum_r+a[1][j];
cout<<"sum_r="<<sum_r<<" "<<"sum_c="<<sum_c;
return 0;
}
:‫مخرجات البرنامج‬
2 3 5
8 9 2
1 5 8
sum_r=19 sum_c=15

Array Initialization ‫إعطاء قيمة أولية للمصفوفة ذات البعدین‬


‫ طالب في أمتحان‬3 ‫مثال على إدخال عدة عناصر من مصفوفة درجات‬
:‫ مقررات كالتالي‬4
int grade[3][4]={ {80,90,54,50},
{95,52,46,98},
{81,98,56,72}}
‫تطبيقات في برمجة الحاسب‬ 061

‫ يقوم بطباعة أكبر قيمة من عناصر المصفوفة‬C++ ‫ اكتب برنامج بلغة‬:‫مثال‬


20 13 15
A = [19 28 78]
25 17 5

#include <iostream>
using namespace std;
int main( )
{
int i,j,max = 0;
int list[3][3]={{20,13,15},
{19,28,78},
{25,17,5}};
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if(max < list[i][j])
max = list[i][j];
cout <<"Maximum value=" << max;
return(0);
}
:‫مخرجات البرنامج‬
Maximum value= 78
‫‪060‬‬ ‫تطبيقات في برمجة الحاسب‬

‫معجم مصطلحات‬
‫تطبيقات في برمجة الحاسب‬
‫كود صلب‪Hardcode‬‬ ‫الخوارزمية‪Algorithm‬‬
‫الحلقة‪loop‬‬ ‫برنامج‪Program‬‬
‫حلقة النهائية‪Endless loop‬‬ ‫واجهة برمجة التطبيقات‪API‬‬
‫التكرار‪Iteration‬‬ ‫الوسيطة‪Argument‬‬
‫الكلمات األساسية‪Keywords‬‬ ‫الكود القياسي األمريكي لتبادل المعلومات‪ASCII‬‬
‫ال شيء‪Null‬‬ ‫التعبير المنطقي‪Boolean‬‬
‫المعامل‪Operand‬‬ ‫الخطأ‪Bug‬‬
‫عامل التشغيل‪Operator‬‬ ‫الحرف‪CHAR‬‬
‫المتغير‪Variable‬‬ ‫الشيء‪object‬‬
‫المؤشر‪Pointer‬‬ ‫البرمجة الشيئية‪OOP‬‬
‫اللغة عالية المستوى‪HLL‬‬ ‫الفئة‪Class‬‬
‫اللغة منخفضة المستوى ‪Low-level programming‬‬ ‫‪A‬‬ ‫األوامر‪command-‬‬ ‫سطر‬ ‫واجهة‬
‫‪language‬‬ ‫)‪line interface (CLI‬‬
‫لغة اآللة‪Machine language‬‬ ‫الكود‪Code‬‬
‫لغة التمييز‪Markup language‬‬ ‫التجميع‪Compilation‬‬
‫الحزمة‪Package‬‬ ‫العبارات الشرطية‪Conditionals‬‬
‫وقت التشغيل‪Runtime‬‬ ‫الثوابت‪Constants‬‬
‫الخلفية‪Backend‬‬ ‫نوع البيانات‪Data types‬‬
‫الواجهة األمامية‪Front-end‬‬ ‫المصفوفة‪Array‬‬
‫جانب الخادم‪Server-side‬‬ ‫اعالن‪Declaration‬‬
‫مصدر البيانات ‪Data Source‬‬ ‫استثناء‪Exception‬‬
‫البيان‪Statement‬‬ ‫التعبير‪Expression‬‬
‫بناء الجملة‪Syntax‬‬ ‫إطار العمل‪Framework‬‬
‫الرمز المميز‪Token‬‬ ‫البريد اإللكتروني ‪Email‬‬
‫أيقونة ‪Icon‬‬ ‫مترجم ‪Compiler‬‬
‫مصفوفة ‪Array‬‬ ‫مفسر ‪ٌٌInterpreter‬‬
‫ترميز ‪Encoding‬‬ ‫السحابة اإللكترونية ‪Cloud Computing‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪062‬‬

‫تدريبات‬
‫‪ )1‬ضع عالمة ( ✓ ) أمام العبارات الصحيحة وعالمة ( × ) أمام العبارات الخاطئة‪:‬‬
‫)‬ ‫(‬ ‫‪ -1‬من العمليات التى يستطيع الكمبيوتر أن يقوم بها إدخال البيانات‪.‬‬
‫)‬ ‫(‬ ‫‪ -2‬االتجاه الطبيعى لخريطة التدفق يكون من أعلى إلى أسفل‪.‬‬
‫)‬ ‫(‬ ‫‪ -3‬اليستطيع الكمبيوتر تكرار تنفيذ امر أو مجموعة أوامر عدة مرات‪.‬‬
‫)‬ ‫(‬ ‫‪ -4‬لغة اآللة هى لغة تتكون من رقمين فقط هما ( ‪) 0 , 1‬‬
‫)‬ ‫(‬ ‫‪ -5‬ال يوجد فرق بين المترجم )‪ (Compiler‬والمفسر)‪. (Interpreter‬‬
‫)‬ ‫(‬ ‫‪ -6‬تساعد خرائط التدفق بعد رسمها تتبع خطوات الحل الكتشاف األخطاء‪.‬‬
‫)‬ ‫(‬ ‫‪ -7‬يتم انشاء التصنيف ) ‪ ( Class‬من الكائن) ‪. (Object‬‬
‫)‬ ‫‪ -8‬المترجم يقوم بتحويل البرنامج بالكامل إلى لغة اآللة قبل أن يبدأ فى تنفيذ (‬
‫أى أمر‪.‬‬
‫)‬ ‫(‬ ‫‪ -9‬من مميزات خرائط التدفق كفاءة إصالح البرنامج ‪.‬‬
‫)‬ ‫(‬ ‫‪ -11‬أولى خطوات حل المسألة هى إيجاد العالقات بين المتغيرات‪.‬‬
‫)‬ ‫(‬ ‫‪ -11‬البرنامج عبارة مجموعة من التعليمات (األوامر )‪.‬‬
‫)‬ ‫(‬ ‫‪ -12‬يقوم المفسر بتحويل البرنامج بالكامل الى لغة اآللة‪.‬‬
‫)‬ ‫‪ -13‬ل غات البرمجة هى لغات تكتب بالحروف االنجليزية ولكن بقواعد (‬
‫تختلف من لغة ألخرى‪.‬‬
‫)‬ ‫‪ -14‬من األخطاء الشائعة بين المبرمجين محاولة كتابة البرنامج بدون إعداد (‬
‫‪ Algorithm‬صحيح له‬
‫)‬ ‫‪ -15‬خرائط التدفق من الوسائل الفعالة لتوضيح خطوات حل مشكلة معينة‪( .‬‬
‫)‬ ‫‪ -16‬البيانات هى الحقائق المجردة التى يتم تجميعها بواسطة نظام (‬
‫المعلومات‪.‬‬
‫)‬ ‫(‬ ‫‪ -17‬الكمبيوتر ال يستطيع إجراء العمليات الحسابية على البيانات ‪.‬‬
‫‪063‬‬ ‫تطبيقات في برمجة الحاسب‬

‫)‬ ‫(‬ ‫‪ -18‬عند تحقق الشرط فى جملة ‪ IF‬يتم تنفيذ األوامر بعد كلمة ‪ELSE‬‬
‫)‬ ‫(‬ ‫تسمى لغة اآللة باللغة عالية المستوى‬ ‫‪-19‬‬
‫)‬ ‫(‬ ‫مرحلة البرمجة تسبق مرحلة كتابة الخوارزم‬ ‫‪-21‬‬
‫)‬ ‫الخوارزم هى طريقة لحل المسألة تهدف إلى تقديم الحل على صورة (‬ ‫‪-21‬‬
‫خطوات مرتبة ترتيبا منطقيا لتصل الى الحل‬
‫)‬ ‫فى البرمجة الشيئية ‪ OOP‬يقسم البرنامج الى وحدات تعرف بالكائنات (‬ ‫‪-22‬‬
‫)‬ ‫(‬ ‫نظام المعلومات يقوم بتجميع وتخزين البيانات فقط‬ ‫‪-23‬‬
‫)‬ ‫(‬ ‫لغة البرمجة ‪ C++‬يمكن استخدامها للبرمجة االجرائية‬ ‫‪-24‬‬
‫)‬ ‫(‬ ‫من اللغات التي ال تحتاج الى مترجم لغة التجميع‬ ‫‪-25‬‬
‫)‬ ‫البرمجة هي إعطاء األوامر والتعليمات للحاسب بلغة يفهمها وذلك ألداء (‬ ‫‪-26‬‬
‫مهمة معينة‬
‫)‬ ‫الحاسب يفهم اللغات منخفضة المستوى فقط بينما يحتاج إلى مترجم (‬ ‫‪-27‬‬
‫لفهم اللغات عالية المستوى‬
‫)‬ ‫(‬ ‫تعد لغات البرمجة بالكائنات من اللغات عالية المستوى‬ ‫‪-28‬‬
‫)‬ ‫(‬ ‫تستخدم لغة جافا في تطبيقات سطح المكتب‬ ‫‪-29‬‬
‫)‬ ‫(‬ ‫جهاز الحاسب اآللي دون برمجة ال فائدة منه‬ ‫‪-31‬‬
‫)‬ ‫مستخدم البرنامج يتعامل مع الواجهة للبرنامج‪ ،‬وال تظهر له األوامر (‬ ‫‪-31‬‬
‫البرمجية التي كتبها المبرمج‬
‫)‬ ‫يمكن تمثيل العالقة بين الطالب و المدرسين في مثال قاعدة بيانات (‬ ‫‪-32‬‬
‫المدرسة‬
‫)‬ ‫(‬ ‫المكون االساسي ألي قاعدة بيانات التاريخ والوقت‬ ‫‪-33‬‬
‫)‬ ‫(‬ ‫تتمثل البيانات األساس للمعلومات‬ ‫‪-34‬‬
‫)‬ ‫الربط ‪ Linking‬هو يقوم البرنامج بتحميل شفرة الهدف والروتينات (‬ ‫‪-35‬‬
‫المكتبية‪ ،‬والتعليمات على الذاكرة الرئيسة بغرض التنفيذ‪.‬‬
‫)‬ ‫(‬ ‫‪ -36‬يتكون السجل من مجموعة من الملفات‬
‫)‬ ‫(‬ ‫‪ -37‬لغات الجيل الخامس هي اللغات التي تتصف بقلة التعليمات التي يكتبها‬
‫المبرمج لتحقيق هدف ما‬
‫تطبيقات في برمجة الحاسب‬ ‫‪064‬‬

‫)‬ ‫(‬ ‫‪ -38‬لغة ‪ HTML‬وهي إحدى اللغات المستخدمة إلنشاء صفحات الويب‬
‫‪www‬‬
‫)‬ ‫‪ -39‬هياكل البيانات تستخدم للتحكم في توزيع البيانات والتعرف على (‬
‫معين في الذاكرة‪.‬‬
‫ٍ‬ ‫ق‬
‫طبيعتها وبنائها األساسي بنس ٍ‬
‫)‬ ‫‪ -41‬هياكل البيانات الديناميكية كالجداول والسجالت)‪ ، (records‬وعند (‬
‫حد أعلى لحجم البيانات المدخلة ‪.‬‬ ‫التصريح بها يجب تعيين ٍ‬
‫)‬ ‫(‬ ‫‪ -41‬المصفوفة هي أبسط أنواع بنية البيانات‪.‬‬
‫)‬ ‫(‬ ‫‪ -42‬قائمة االنتظار هي بنية بيانات غير خطية‬
‫)‬ ‫(‬ ‫‪ -43‬يتم ترتيب حزم البيانات في االتصال بتنسيق قائمة االنتظار‬
‫)‬ ‫‪ -44‬الرسم البياني هو بنية بيانات خطية حيث يمكن للمرء أن ينتقل من عقدة (‬
‫إلى أخرى بعدة طرق مختلفة‪.‬‬
‫)‬ ‫(‬ ‫‪ -45‬الشجرة هي واحدة من أقوى هياكل البيانات وأكثرها تقد ًما‪.‬‬
‫)‬ ‫‪ -46‬البرمجة الشيئية ‪ OOP‬قابلة إلعادة االستخدام‪ ،‬حيث يمكن استخدام (‬
‫)‪(objects‬عبر برمجيات متعددة ‪.‬‬
‫)‬ ‫نظام إدارة قاعدة البيانات عبارة عن برنامج وظيفته إجراء المالءمـة (‬ ‫‪-47‬‬
‫بـين قاعدة البيانات والمستخدم ‪.‬‬
‫)‬ ‫الجدول عنصر محدد داخل السجل ويرتبط بنوعية خاصة من (‬ ‫‪-48‬‬
‫المعلومات‪.‬‬
‫)‬ ‫الشكل (النموذج) ‪ Form‬يستخدم الستخالص بيانات محددة من جدول (‬ ‫‪-49‬‬
‫ما‪.‬‬
‫)‬ ‫التخزين السحابي عبارة عن أجهزة حاسب ضخمة تحتوي على مساحة (‬ ‫‪-51‬‬
‫تخزين هائلة يقوم المستخدمون برفع ملفاتهم عليها ليتم تخزينها‬
‫‪065‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )2‬اختر اإلجابة الصحيحة‪:‬‬


‫‪ .1‬تسمى "اللغة الثنائية" حيث إنها تتكون من سلسلة من ‪ 0‬و ‪ ،1‬وهي اللغة‬
‫الوحيد التي يفهمها الحاسب اآللي‪.‬‬
‫أ‪ -‬لغة التجميع‬
‫ب‪ -‬لغة اآللة‬
‫جـ‪ -‬لغة ‪C‬‬
‫د‪ -‬لغة الفورتران‬
‫‪ .2‬هي أول لغة ترميز‪ ،‬تستخدم الرموز للتعبير عن تعليمات لغة اآللة‪.‬‬
‫أ‪ -‬لغة التجميع‬
‫ب‪ -‬لغة اآللة‬
‫جـ‪ -‬لغة ‪C‬‬
‫د‪ -‬لغة الفورتران‬
‫‪ .1‬هي تحويل البرنامج المكتوب بلغة المستوى العالي إلى لغة اآللة ‪.‬‬
‫أ‪ -‬التحميل‬
‫ب‪ -‬الربط‬
‫جـ‪ -‬الترجمة‬
‫د‪ -‬كل ما سبق‬
‫‪ .4‬هي اخطاء امالئية في كتابة أوامر البرنامج‪.‬‬
‫أ‪Run-Time Errors-‬‬
‫ب‪Syntax Errors -‬‬
‫جـ‪Logical Errors -‬‬
‫د‪Not Error -‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪066‬‬

‫‪ .1‬ال يكتشفها الحاسب وتظهر عند تنفيذ البرنامج على عينه من البيانات‬
‫فنحصل على نتائج خاطئه او غير متوقعة‪.‬‬
‫أ‪Run-Time Errors-‬‬
‫ب‪Syntax Errors -‬‬
‫جـ‪Logical Errors -‬‬
‫د‪Not Error -‬‬
‫‪ .6‬تظهر عند تنفيذ البرنامج مثل عدم حجز مساحة كافية للمدخالت او‬
‫الدخول في دوران بال نهاية‪.‬‬
‫أ‪Run-Time Errors-‬‬
‫ب‪Syntax Errors -‬‬
‫جـ‪Logical Errors -‬‬
‫د‪Not Error -‬‬
‫‪ .7‬في هذه المرحلة تتم كتابة وصف تفصيلي لصياغة البرنامج‪.‬‬
‫أ‪ -‬اختبار البرنامج وتصحيح األخطاء‬
‫ب‪ -‬صياغة البرنامج‬
‫جـ‪ -‬تصميم البرنامج‬
‫د‪ -‬تحديد وتعريف المشكلة‬
‫‪ .8‬يعرف البرنامج على انه‬
‫أ‪ -‬من اللغات المتعدمة لكتابة البرامج‬
‫ب‪ -‬مفهوم متبع لكتابة البرامج بلغة االله‬
‫جـ‪ -‬سلسلة من االوامر مكتوبة بلغة برمجية معينة لتنفيذ مهمة محددة‬
‫د‪ -‬مجموعة من االوامر تكتب لوتنفذ داخل الحسب االلي‬
‫‪067‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .9‬من اللغات عالية المستوى‬


‫أ‪ -‬االجرائية –الكائنات‬
‫ب‪ -‬اآللة‬
‫جـ‪ -‬التجميع‬
‫د‪ -‬التجميع –اآللة‬
‫‪ .13‬يقوم بالتاكد من صحة البرنامج ويحول البرنامج لصيغة التنفيذ‬
‫أ‪ -‬البرنامج‬
‫ب‪ -‬مستخدم البرنامج‬
‫جـ‪ -‬جهاز الحاسب االلي‬
‫د‪ -‬المبرمج‬
‫‪ .11‬مساحة المستطيل =العرض * المستطيل ‪ ،‬تعد هذه العبارة من أوامر‬
‫أ‪ -‬االدخال‬
‫ب‪ -‬التكرار‬
‫جـ‪ -‬االخراج‬
‫د‪ -‬الحساب‬
‫‪ .12‬من اللغات التي ال تحتاج الى مترجم‬
‫أ‪C++ -‬‬
‫ب‪ -‬التجميع‬
‫جـ‪ -‬االلة‬
‫د‪ -‬الجافا‬
‫‪ .11‬تحديد الخطوات المتبعة للوصول إلى الحل لضمان صحة الحل‬
‫أ‪ -‬صياغة حل المسائل‬
‫تطبيقات في برمجة الحاسب‬ ‫‪068‬‬

‫ب‪ -‬الخوارزمية‬
‫جـ‪ -‬البرنامج‬
‫د‪ -‬فهم المسألة وتحديد عناصرها‬
‫‪ .14‬مثال على اسم صحيح للمتغيرات‬
‫أ‪C*B -‬‬
‫ب‪A23 -‬‬
‫جـ‪If -‬‬
‫د‪2DF -‬‬
‫‪ .11‬هي مجموعة من المتغيرات لها االسم نفسه ونوع البيانات نفسه ويتم‬
‫تعريفها في جملة واحدة‬
‫أ‪ -‬المصفوفة‬
‫ب‪ -‬الثابت‬
‫جـ‪ -‬االدوات‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ ، M = 2 * 6 + 9 .16‬ما نتيجة تنفيذ العملية االتية على جهاز الحاسب‬
‫أ‪22 -‬‬
‫ب‪12 -‬‬
‫جـ‪21 -‬‬
‫د‪11 -‬‬
‫‪ .17‬ما هي الدالة الوحيدة التي يجب أن تحتويها جميع برامج‪ C ++‬؟‬
‫) ( ‪main‬‬ ‫أ‪-‬‬
‫ب‪void ( ) -‬‬
069 ‫تطبيقات في برمجة الحاسب‬

system ( ) -‫جـ‬
start ( ) -‫د‬
‫ ؟‬C ++ ‫ ما ناتج البرنامج التالي بلغة‬.18
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
char s1[6] = “Hello”;
char s2[6] = “World”;
char s3[12] = s1 + “ “ + s2;
cout<<s3;
return 0;
}
Hello-‫أ‬
World-‫ب‬
Error-‫جـ‬
Hello World -‫د‬
‫ ؟‬C ++ ‫ ما ناتج البرنامج التالي بلغة‬.19
int x = 8;
// x = 3;
cout<<x<<endl;
3 -‫أ‬
8 -‫ب‬
Error -‫جـ‬
X -‫د‬
‫؟‬temp ‫ ما هو نوع المتغير‬.23
var temp = 14.55;
‫تطبيقات في برمجة الحاسب‬ ‫‪071‬‬

‫أ‪double -‬‬
‫ب‪boolean -‬‬
‫جـ‪string -‬‬
‫د‪integer -‬‬
‫‪ .21‬ما هو بديل ‪x = x + 5‬؟‬
‫;‪x+=5‬‬ ‫أ‪-‬‬
‫;‪x=y+5‬‬ ‫ب‪-‬‬
‫;‪x-=4‬‬ ‫جـ‪-‬‬
‫‪x=+5‬‬ ‫د‪-‬‬
‫‪ .22‬ما ناتج البرنامج التالي بلغة ‪ C ++‬؟‬
‫)‪for (int n=10; n>0; n- -‬‬
‫{‬
‫;‪if (n==4) continue‬‬
‫} ;‪cout<<n<<endl‬‬
‫‪10,9,8,7,6,4,3,2,1‬‬ ‫أ‪-‬‬
‫‪10,9,8,7,6,5,4,3,2,1‬‬ ‫ب‪-‬‬
‫‪10,9,8,7,6,5,3,2,1‬‬ ‫جـ‪-‬‬
‫‪10,9,8,7,6,5,4,3,2,1,0‬‬ ‫د‪-‬‬
‫‪ .21‬تستخدم دالة ‪ .......‬لعرض المعلومات على الشاشة‪.‬‬
‫‪printf‬‬ ‫أ‪-‬‬
‫ب‪scanf -‬‬
‫جـ‪readline -‬‬
‫‪if‬‬ ‫د‪-‬‬
‫‪070‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .24‬تستخدم دالة ‪ .......‬للحصول على البيانات من لوحة المفاتيح‪.‬‬


‫‪printf‬‬ ‫أ‪-‬‬
‫ب‪scanf -‬‬
‫جـ‪readline -‬‬
‫‪if‬‬ ‫د‪-‬‬
‫‪ .21‬إلدخال سطر جديد ‪ New line‬في برنامج‪ ، C ++‬أي من العبارات‬
‫التالية يمكن استخدامها؟‬
‫‪\n‬‬ ‫أ‪-‬‬
‫‪\r‬‬ ‫ب‪-‬‬
‫‪\a‬‬ ‫جـ‪-‬‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ .26‬أي مما يلي هو الصيغة الصحيحة لإلعالن عن مصفوفة؟‬
‫أ‪init array [ ] -‬‬
‫ب‪int array [5]; -‬‬
‫جـ‪array[5]; -‬‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ .27‬أي مما يلي ُيعد الصيغة الصحيحة لطباعة عنوان العنصر األول؟‬
‫أ‪array[0]; -‬‬
‫ب‪array[1]; -‬‬
‫جـ‪array[2]; -‬‬
‫د‪ -‬ال شئ مما سبق‬
‫تطبيقات في برمجة الحاسب‬ 072

‫ ؟‬C ++ ‫ ما ناتج البرنامج التالي بلغة‬.28


#include < stdio.h >
using namespace std;
int main(){
int array[] = {10, 20, 30};
cout << -2[array];
return 0;}
-15 -‫أ‬
-30 -‫ب‬
Compiler error -‫جـ‬
Garbage value -‫د‬
‫ ؟‬C ++ ‫ ما ناتج البرنامج التالي بلغة‬.29
#include <iostream>
#include <string>
using namespace std;
int main(){
cout<<rank<int[10]>::value; // Case A
cout<<rank<char[10][10]>::value; // Case B
cout<<rank<string[10][10][10]>::value; //Case C
return 0;}
121 -‫أ‬
321 -‫ت‬
123 -‫جـ‬
010 -‫د‬
‫ ؟‬C ++‫ ما هي أداة الترقيم المستخدمة لتجميع مجموعة من جمل‬.13
{ } -‫أ‬
[ ] -‫ث‬
) ( -‫جـ‬
/ -‫د‬
‫‪073‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .11‬أحد اوامر التكرار في لغة ‪C++‬‬


‫‪for‬‬ ‫أ‪-‬‬
‫‪while‬‬ ‫ب‪-‬‬
‫‪do-while‬‬ ‫جـ‪-‬‬
‫كل ما سبق‬ ‫د‪-‬‬
‫‪ .12‬سميت بـ‪ ..............‬نظ اًر ألن المبرمجين يكتبون أوامر البرنامج‬
‫بمستوى قريب من مستوى فهم اآللة (الحاسب)‪.‬‬
‫أ‪ -‬لغات منخفضة المستوى‬
‫ب‪ -‬لغات عالية المستوى‬
‫جـ‪ -‬لغات متوسطة المستوى‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ .................. .11‬أن يقوم البرنامج بتحميل شفرة الهدف والروتينات‬
‫المكتبية‪ ،‬والتعليمات على الذاكرة الرئيسة بغرض التنفيذ‪.‬‬
‫أ‪ -‬الترجمة‬
‫ب‪ -‬الربط‬
‫جـ‪ -‬التحميل‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ .......... .14‬تحويل البرنامج المكتوب بلغة المستوى العالي إلى لغة اآللة‪.‬‬
‫أ‪ -‬الترجمة‬
‫ب‪ -‬الربط‬
‫جـ‪ -‬التحميل‬
‫تطبيقات في برمجة الحاسب‬ ‫‪074‬‬

‫د‪ -‬ال شئ مما سبق‬


‫‪ .11‬إنها لغة موجهة للنتائج أي إن المبرمج يهتم بطلب ما يريده من‬
‫الحاسب‪ ،‬دون أن يوجهه لكيفية القيام بذلك‪.‬‬
‫أ‪ -‬لغات منخفضة المستوى‬
‫ب‪ -‬لغات الجيل الخامس‬
‫جـ‪ -‬لغات الجيل الرابع‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ ........ .16‬هي إحدى اللغات المستخدمة إلنشاء صفحات الويب ‪www‬‬
‫أ‪ -‬لغة ‪C++‬‬
‫ب‪ -‬لغة ‪HTML‬‬
‫جـ‪ -‬لغة الفورتران‬
‫د‪ -‬ال شئ مما سبق‬
‫ٍ‬
‫متتال‬ ‫‪ ................. .17‬وھي التي تنتظم فيها البيانات في خ ٍّ‬
‫ط‬
‫أ‪ -‬هياكل بيانات ثابتة ساكنة‬
‫ب‪ -‬هياكل بيانات ديناميكية‬
‫جـ‪ -‬هياكل بيانات تقليدية‬
‫د‪ -‬ال شئ مما سبق‬
‫‪...... .18‬هي بنية بيانات خطية ‪ ،‬يتم فيها إدراج العناصر من طرف يسمى‬
‫“الذيل”ويتم حذف العناصر الموجودة من الطرف اآلخر المسمى“الرأس”‪.‬‬
‫أ‪ -‬المصفوفة ‪Array‬‬
‫ب‪ -‬قائمة مرتبطة ‪List‬‬
‫‪075‬‬ ‫تطبيقات في برمجة الحاسب‬

‫جـ‪ -‬المكدس ‪Stack‬‬


‫د‪ -‬الطوابير ‪Queues‬‬
‫‪ .............. .19‬هو بنية بيانات خطية حيث يمكن للمرء أن ينتقل من‬
‫عقدة إلى أخرى بعدة طرق مختلفة‪.‬‬
‫أ‪ -‬المصفوفة ‪Array‬‬
‫ب‪ -‬قائمة مرتبطة ‪List‬‬
‫جـ‪ -‬الرسم البياني ‪Graphs‬‬
‫د‪ -‬الطوابير ‪Queues‬‬
‫‪……… .43‬عبارة عن بنية بيانات هرمية غير خطية تتصل فيها العقد في‬
‫الحواف‪.‬‬
‫أ‪ -‬شجرة ‪Tree‬‬
‫ب‪ -‬قائمة مرتبطة ‪List‬‬
‫جـ‪ -‬الرسم البياني ‪Graphs‬‬
‫د‪ -‬الطوابير ‪Queues‬‬
‫‪………… .41‬النقطة التي تعمل حول محورها جميع مكونـات أنظمـة قواعـد‬
‫البيانـات‬
‫أ‪ -‬البيانات ‪Data‬‬
‫ب‪ -‬األجهزة وملحقاتها ‪Hard Ware‬‬
‫جـ‪ -‬البرامج ‪Software‬‬
‫د‪ -‬ال شئ مما سبق‬
‫تطبيقات في برمجة الحاسب‬ ‫‪076‬‬

‫‪ .42‬برنامج وظيفته إجراء المالءمـة بـين قاعدة البيانات والمستخدم حيث‬


‫يدير هذا النظام كل متطلبات أعمال قاعدة البيانات‬
‫أ‪ -‬الجداول اإللكترونية‬
‫ب‪ -‬نظم إدارة قاعدة البيانات‬
‫جـ‪ -‬معالجة النصوص‬
‫د‪ -‬ال شئ مما سبق‬
‫‪ ......... .41‬هو تقديم مكتوب لتحليل بيانات وقد يكون بسيطا كقائمة من‬
‫السجالت بإجماليات فرعيـة ‪ ،‬أو كالعالقات الحسابية األخرى بين عناصر‬
‫هذه البيانات‪.‬‬
‫أ‪ -‬الجداول ‪Tables‬‬
‫ب‪ -‬الشكل (النموذج)‪Form‬‬
‫جـ‪ -‬االستعالم (االستفهام)‪Query‬‬
‫د‪ -‬التقرير ‪Report‬‬
‫‪........... .44‬وهي العنصر األساسي في كل قواعد البيانات ‪ ،‬وتحتوي‬
‫على البيانات مرتبة في سـجالت وحقول‬
‫أ‪ -‬الجداول ‪Tables‬‬
‫ب‪ -‬الشكل (النموذج)‪Form‬‬
‫جـ‪ -‬االستعالم (االستفهام)‪Query‬‬
‫د‪ -‬التقرير ‪Report‬‬
‫‪077‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ .41‬وهي برامج كمبيوتر تجوب أنحاء الـشبكة العنكبوتيـة والمواقع المختلفة‬


‫عبر الوصالت من وصلة إلى أخرى تجمع معلومات إلضافتها في قاعـدة‬
‫البيانات الخاصة بالمحرك‪ ،‬وكذلك تبحث عن المحدث من الصفحات ‪.‬‬
‫أ‪ -‬البرنامج اآللي‪Robots‬‬
‫ب‪ -‬قاعدة بيانات‬
‫جـ‪ -‬المفهرس‬
‫د‪ -‬برنامج االسترجاع‬
‫‪...... .46‬هو برنامج للتفاعل مع الباحث عبر االنترنت يتيح له أن يستعلم‬
‫عـن كلمات معينة داخل الفهرس حيث يجلب له قائمة بعناوين الصفحات‬
‫التي تحتـوي الكلمـات المستعلم عنها‪.‬‬
‫أ‪ -‬البرنامج اآللي‪Robots‬‬
‫ب‪ -‬قاعدة بيانات‬
‫جـ‪ -‬المفهرس‬
‫د‪ -‬برنامج االسترجاع‬
‫‪........... .47‬هي تمثل بصفة عامة األدوات التي توفر مصادر معلومات‬
‫مصنفة حـسب مجموعـة مـن التقسيمات الموضوعية حيث أنها تعتمد على‬
‫مواضيع محددة ‪.‬‬
‫أ‪ -‬محركات البحث‬
‫ب‪ -‬برنامج االسترجاع‬
‫جـ‪ -‬أدلة البحث‬
‫د‪ -‬ال شئ مما سبق‬
‫تطبيقات في برمجة الحاسب‬ ‫‪078‬‬

‫‪ .48‬ومن أكثر النسق المستخدمة في ملفات الصور على اإلنترنت النسق‬


‫‪...........‬‬
‫أ‪BMP -‬‬
‫ب‪DOC -‬‬
‫جـ‪GIF -‬‬
‫د‪XLM -‬‬
‫‪………. .49‬إلرسال واستقبال الرسائل ونقل الملفات مع أي شخص له‬
‫عنوان بريدي بصورة سريعة جدا ال تتعدى دقائق‬
‫أ‪ -‬المجموعات اإلخبارية‬
‫ب‪ -‬البريد اإللكتروني‬
‫جـ‪ -‬االستعالم الشخصي‬
‫د‪ -‬ال شئ مما سبق‬
‫‪............ .13‬تشبه خدمة القوائم البريدية باختالف أن كل عضو يستطيع‬
‫التحكم في نوع المقاالت التي يريد استالمها‪.‬‬
‫أ‪ -‬المجموعات اإلخبارية‬
‫ب‪ -‬البريد اإللكتروني‬
‫جـ‪ -‬االستعالم الشخصي‬
‫د‪ -‬ال شئ مما سبق‬
‫‪079‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )3‬عرف كال من ‪:‬‬


‫‪ .1‬البرمجة ‪:‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ .2‬لغات البرمجة ‪:‬‬
‫‪..........................................................................‬‬
‫‪ )4‬يمر البرنامج المكتوب بلغات المستوى العالي بثالث مراحل قبل أن يكون‬
‫جاه اًز للتنفيذ ‪ ،‬اذكرها‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )5‬رتب خطوات صياغة وتطوير البرنامج ترتيبا صحيحا‬

‫‪....................................1‬‬
‫‪ .1‬توثيق البرنامج‬
‫‪ .2‬تصميم البرنامج‬
‫‪....................................2‬‬
‫‪ .1‬اختبار البرنامج‬
‫‪....................................3‬‬
‫‪ .4‬صياغة البرنامج‬
‫‪....................................4‬‬
‫‪ .1‬تحديد وتعريف المشكلة‬
‫‪....................................5‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪081‬‬

‫‪ )6‬صل اإلجابة الصحيحة من العمود ( ‪ ) A‬بالعمود ( ‪) B‬‬


‫(‪)B‬‬ ‫(‪)A‬‬
‫‪ .1‬لغات برمجة ذات ( ) مثل هذه اللغات التي تتصف بقلة‬
‫التعليمات التي يكتبها المبرمج‬ ‫مستوى منخفض‬
‫لتحقيق هدف ما‬
‫‪ .2‬لغات برمجة ذات مستوى ( ) تستخدم الرموز للتعبير عن تعليمات‬
‫لغة اآللة‪ ،‬وذلك لمواجهة صعوبة‬ ‫عالي‬
‫الترميز بلغة اآللة‪.‬‬
‫( ) لغة مبرمجة نستطيع بها توجيه‬ ‫‪ .1‬لغات الجيل الرابع‬

‫الحاسب للقيام بما نريد من أعمال‪،‬‬


‫وذلك باستخدام التعبيرات الشائعة‬
‫) وهي عبارة عن لغة تحوي مجموعة‬ ‫‪ .4‬اللغات الطبيعية أو لغات (‬
‫من األوامر تؤدي إلى تكوين‬ ‫الجيل الخامس‬
‫صفحات الويب‪.‬‬
‫) تحويل البرنامج المكتوب بلغة‬ ‫(‬ ‫‪ .1‬لغات اإلنترنت‬
‫المستوى العالي إلى لغة اآللة‪.‬‬
‫‪ .6‬لغة التجميع‬
‫) لغات شبيهة إلى درجة كبيرة باللغة‬ ‫(‬
‫الطبيعية التي يستخدمها اإلنسان‬
‫في حياته‪ ،‬وتحتاج إلى مترجم‪.‬‬
‫) المبرمجين يكتبون أوامر البرنامج‬ ‫(‬
‫بهذه اللغات بمستوى قريب من‬
‫مستوى فهم اآللة (الحاسب)‪ ،‬حيث‬
‫تستخدم هذه اللغة (‪ )1, 0‬في كتابة‬
‫البرامج‪.‬‬
‫‪080‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )7‬اذكر فوائد استخدام مخططات سير العمليات‪.‬‬


‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )8‬أرسم مخطط سير العمليات لتحدید العدد األكبر من ثالث أعداد مدخله‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬

‫‪ )9‬أرسم مخطط سير العمليات لحساب مجموعة األعداد من ‪ 1‬إلى ‪100‬‬


‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪082‬‬

‫‪ )11‬أرسم مخطط سير العمليات لحساب المضروب ‪N‬‬


‫𝑵 ×‪𝑵! = 𝟏 × 𝟐 × 𝟑 × … . .‬‬ ‫حيث أن‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )11‬أرسم مخطط سير العمليات لحساب المعادلة التالية‪:‬‬
‫𝟐𝒚 ‪𝒓 = √𝒙𝟐 +‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪083‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )12‬أرسم مخطط سير العمليات لحساب المعادلة التالية‪:‬‬


‫‪2‬‬
‫𝑥 {=𝐹‬ ‫‪𝑥≥0‬‬
‫‪𝑥+3 𝑥 <0‬‬

‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪084‬‬

‫أساسيات البرمجة بلغة ‪C++‬‬


‫‪The basics of programming in C++‬‬
‫‪ )1‬أحسب القيم التالية حسب أولويات التنفيذ في لغة ‪C++‬‬
‫‪a.‬‬ ‫‪2/2*3‬‬
‫‪b.‬‬ ‫)‪2 / pow(3, 2‬‬
‫‪c.‬‬ ‫)‪Pow((2 / 3) , 2‬‬
‫‪d.‬‬ ‫‪2+3*4-4‬‬
‫‪e.‬‬ ‫‪Pow(2 , 2) * 3 / 4 + 3‬‬
‫‪f.‬‬ ‫)‪Pow(2 , (2 * 3)) / (4 + 3‬‬
‫‪g.‬‬ ‫‪2*3+4‬‬
‫‪h.‬‬ ‫))‪Pow(2 , pow(3 , 2‬‬
‫‪i.‬‬ ‫)‪Pow(-4 ,2‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪085‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )2‬حول التعبيرات الرياضية التالية إلى تعبيرات بلغة ‪C++‬‬


‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬
‫‪…………………………………………………………..‬‬

‫‪ )3‬حول الجمل التالية إلى جمل بلغة ‪C++‬‬


‫‪ .1‬أضف ‪ 1‬إلى المتغير ‪ x‬وخزنها الناتج في المتغير ‪x‬‬
‫‪ .2‬أضف المتغير ‪ y‬إلى مكعب المتغير ‪ x‬وخزن الناتج في المتغير ‪x‬‬
‫‪ .1‬لو المتغير ‪ d‬أكبر من الصفر ‪ ،‬ضع المتغير ‪ x‬يساوي المتغير ‪b‬‬
‫‪ .4‬أقسم مجموع المتغيرين ‪ a , b‬بحاصل ضرب المتغيرين ‪ c , d‬وخزن‬
‫الناتج في المتغير ‪x‬‬
‫تطبيقات في برمجة الحاسب‬ 086

...................................................................... .1
...................................................................... .2
...................................................................... .3
...................................................................... .4

C++ ‫) أي مما یلي ال يصلح ان يكون اسم لمتغير في لغة‬4

r2d2 - 5xr - if - ahmed4 - x+r


..........................................................................

: ‫) ما مخرجات البرنامج التالي‬5

#include <iostream>
using namespace std;
int main()
{
int n = 6, k = 4;
cout << ++n << endl;
cout << n << endl;
cout << n++ << endl;
cout << n << endl;
cout << -n << endl;
cout << n << endl;
087 ‫تطبيقات في برمجة الحاسب‬

cout << -- n << endl;


cout << n << endl;
cout << n --<< endl;
cout << n << endl;
return 0;
}
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
‫تطبيقات في برمجة الحاسب‬ ‫‪088‬‬

‫‪ )6‬اكتب برنامجـاً بلغة ‪ C++‬يقوم بحساب سعة (حجم) خزان مكعب الشكل‬
‫إذا علمت أن ارتفاع الخزانات ثابت و يساوي ‪ 2‬متر‪.‬‬
‫حيث ان حجم الخزان = الطول × العرض × االرتفاع‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )7‬اكتب برنامج بلغة ‪ C++‬يقوم بتحويل مبلغ یدخله المستخدم بالجنية‬
‫المصري إلى ما يعادله بالدوالر األمريكي‪ ،‬إذا علمت أن‬
‫الدوالر=‪18.9‬جنية‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪089‬‬ ‫تطبيقات في برمجة الحاسب‬

‫جمل التحكم ‪Control Statements‬‬


‫‪ )1‬اكتب برنامج بلغة ‪ C++‬ليحسب قيمة ‪ F‬المعرفة على النحو التالي‪:‬‬
‫‪2‬‬
‫𝑥 {=𝐹‬ ‫‪𝑥≥0‬‬
‫‪𝑥+3 𝑥 <0‬‬

‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )2‬اكتب برنامج بلغة ‪ C++‬يضيف ‪ %10‬إلى ارتب الموظف إذا كان راتبه‬
‫يقل عن ‪ 2000‬جنيه و ‪ %5‬إذا كان راتبه أكثر من ذلك‪ ،‬ويطبع الراتب‬
‫بعد اإلضافة‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )3‬اكتب برنامج بلغة ‪ C++‬يحسب زكاة مبلغ ما یدخله المستخدم علماً أن‬
‫الزكاة ال تجب في أقل من ‪ 2000‬جنية‪.‬‬
‫حيث أن زكاة المال = المبلغ المدخر × ‪%2.5‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪091‬‬

‫‪ )4‬اكتب برنامج بلغة ‪ C++‬يحدد إذا كان العدد الذي یدخله المستخدم سالباً‬
‫أم موجباً أم صفر‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )5‬اكتب برنامج بلغة ‪ C++‬يقوم المستخدم بإدخال عدد صحيح فإذا كان‬
‫العدد موجب وزوجي يقوم بطباعة العبارة "‪ "Positive and even‬وإذا‬
‫كان غير ذلك يقوم بطباعة " ‪." Error‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪090‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )6‬اكتب برنامج بلغة ‪ C++‬يقوم بإدخال عددین صحيحين وثم طباعة العدد‬
‫األكبر‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪ )7‬أكتب برنامج يق أر عددین ويطلب من المستخدم إدخال رمز العملية‬
‫الحسابية ثم يجري هذه العملية على العددین ؟‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ 092

:‫) ما مخرجات البرنامج التالي‬8


# include <iostream>
using namespace std;
int main ()
{
int num=4;
int total = 0;
switch (num)
{
case 1:
case 2: total = 5;
case 3: total = 10;
case 4: total = total + 3;
case 8: total = total + 6;
default: total = total + 4;
}
cout << total << endl;
return 0;
}
..........................................................................
..........................................................................
‫‪093‬‬ ‫تطبيقات في برمجة الحاسب‬

‫الحلقات التكرارية ‪Looping‬‬


‫‪ )1‬اكتب برنامج بلغة ‪ C++‬لطباعة المخرجات التالية‪:‬‬

‫‪1‬‬
‫‪22‬‬
‫‪333‬‬
‫‪4444‬‬
‫‪55555‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ 094

:‫ لحساب المتسلسلة التالية‬C++ ‫) اكتب برنامج بلغة‬2


Sum=3/(3+5)+5/(5+7)+7/(7+9)+….+19/(19+21)
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
..........................................................................
:‫) ما مخرجات البرامج التالية‬3
#include<iostream> 1
……………………………………………
using namespace std; ……………………………………………
int main() ……………………………………………
{ int i,j,n,k; ……………………………………………
n=5; ……………………………………………
for(i=1;i<=n;i+=2) ……………………………………………
{ ……………………………………………
for(k=i;k<n;k+=2) ……………………………………………
cout<<" " ; ……………………………………………
for(j=i;j>0;j--) ……………………………………………
cout<<"*" ; ……………………………………………
cout<<"\n" ; ……………………………………………
} ……………………………………………
return 0; ……………………………………………
}
095 ‫تطبيقات في برمجة الحاسب‬

#include <iostream> ……………………………………………


using namespace std; ……………………………………………
int main () ……………………………………………
{ ……………………………………………
for (int n=10; n>0; n--) ……………………………………………
{ ……………………………………………
if (n==3) continue; ……………………………………………
cout << n << ", "; ……………………………………………
} ……………………………………………
cout << "break!\n"; ……………………………………………
return 0; ……………………………………………
} ……………………………………………
……………………………………………
……………………………………………

#include <iostream> ……………………………………………


using namespace std; ……………………………………………
int main () ……………………………………………
{ ……………………………………………
for (int n=10; n>0; n--) ……………………………………………
{ ……………………………………………
if (n==7) break; ……………………………………………
cout << n << ", "; ……………………………………………
} ……………………………………………
cout << "break!\n"; ……………………………………………
return 0; ……………………………………………
} ……………………………………………
……………………………………………
……………………………………………
‫تطبيقات في برمجة الحاسب‬ 096

#include <iostream> …………………………………


using namespace std; …………………………………
int main () …………………………………
{ …………………………………
for (int n=10; n>0; n--) { …………………………………
if (n==5) exit(1); …………………………………
cout << n << ", "; …………………………………
} …………………………………
cout << "break!\n"; …………………………………
return 0; …………………………………
} …………………………………
…………………………………
…………………………………
…………
…………………………………
…………………………………
// Using the do/while …………
…………………………………
repetition structure
…………………………………
#include <iostream.h>
…………………………………
int main()
…………………………………
{
…………………………………
int counter = 1;
…………………………………
do {
…………………………………
cout << counter << " ";
…………………………………
} while ( ++counter <= 10 );
…………………………………
cout << endl;
…………………………………
return 0;
…………………………………
}
…………………………………
…………………………………
…………
‫‪097‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )4‬اكتب برنامج يطبع جميع األعداد من ‪ 1‬إلى ‪ 100‬ما عدا التي تقبل‬
‫القسمة على ‪ 5 ، 2‬بدون باق‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ 098

Array ‫المصفوفات‬
:‫) ما مخرجات البرامج التالية‬1
#include<iostream>
…………………………………
using namespace std;
int main( ) …………………………………
{ …………………………………
int x[4], y[4]; …………………………………
for (int i=0;i<4;i++) …………………………………
{ …………………………………
x[i]=i; …………………………………
y[i]=i*i; …………………………………
cout<<endl<<x[i]<<" "<<y[i]; …………………………………
} …………………………………
cout<<endl; …………………………………
} …………………………………
…………………………………
#include<iostream> …………………………………
using namespace std; …………
…………………………………
int main( ) …………………………………
{ …………………………………
int array[2][3] =
…………………………………
{ {1, 2, 3}, {4, 5, 6} };
int i, j, s=0; …………………………………
for (i = 0; i < 2; i++) …………………………………
{ …………………………………
for (j = 0; j < 3; j++) …………………………………
cout<<array[i][j] <<" "; …………………………………
} …………………………………
s=array[0][2]+array[1][1]; …………………………………
cout<<"\n The result="<<s; …………………………………
return 0;} …………………………………
…………………………………
…………
‫‪099‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )2‬اكتب برنامج بلغة ‪ C++‬بحساب وطباعة أجمالي ومتوسط المرتبات‬


‫لخمس موظفين حيث اعطيت المرتبات قيم ابتدائية كالتالي‪:‬‬
‫}‪{100,50,50,100,50‬‬

‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪211‬‬

‫‪ )3‬اكتب برنامج بلغة ‪ C++‬لترتيب عناصر مصفوفة مكونة من ‪ 5‬عناصر‬


‫ترتيبا تصاعديا‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪210‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )4‬اكتب برنامج بلغة ‪ C++‬لقراءة مصفوفة مكونة من ‪ 15‬عنصر ثم يطبع‬


‫العنصر األكبر من بين عناصر المصفوفة‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ ‫‪212‬‬

‫‪ )5‬أكتب برنامج بلغة ‪ C++‬إلدخال مصفوفة أحادية ثم يحسب مجموع‬


‫األعداد الزوجية ومجموع األعداد الفردية‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪213‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )6‬في احد الفصول الدراسية كانت نتائج ثالثة طالب كما هو موضح بالجدول‬
‫التالي‪:‬‬
‫الفيزياء‬ ‫الرياضيات‬ ‫لغة ‪C++‬‬
‫‪78‬‬ ‫‪80‬‬ ‫‪77‬‬ ‫الطالب األول‬
‫‪87‬‬ ‫‪90‬‬ ‫‪80‬‬ ‫الطالب الثاني‬
‫‪80‬‬ ‫‪90‬‬ ‫‪89‬‬ ‫الطالب الثالث‬
‫المطلوب ‪ :‬كتابة برنامج بلغة ‪ C++‬إلدخال درجات الثالث طالب للثالث مواد‬
‫دراسية ثم طباعتها ‪.‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ 214

:‫) ما مخرجات البرامج التالية‬7


#include<iostream>
using namespace std;
int main( )
{
int a[5]={1,2,3,4,5};
int i;
cout<<"\n----------------------\n";
for ( i = 1; i <= 5; i++ )
{
cout <<'\t' << a[5- i ] << " ";
}
cout<<"\n---------------------\n";
return 0;
}
..........................................................................
..........................................................................
#include<iostream>
using namespace std;
int main( )
{
int a[5]={1,2,3,4,5};
int i;
cout<<"\n---------------------\n";
for ( i = 1; i <= 5; i++ )
if (i%2==0) cout <<'\t' << a[i] << " ";
cout<<"\n---------------------\n";
return 0;
}
..........................................................................
..........................................................................
‫‪215‬‬ ‫تطبيقات في برمجة الحاسب‬

‫‪ )8‬اكتب برنامج بلغة ‪ C++‬يقوم بطباعة أكبر قيمة من عناصر المصفوفة‬


‫𝟓‬ ‫𝟕‬ ‫𝟐‬
‫𝟖[=‪A‬‬ ‫]𝟓𝟏 𝟎𝟏‬
‫𝟓𝟏‬ ‫𝟐𝟐 𝟕‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫‪..........................................................................‬‬
‫تطبيقات في برمجة الحاسب‬ 216

‫المراجع‬

1. Harvey Deitel and Paul Deite, " C++ How to program ",
2012.

2. Juan Soulié, "C++ Language Tutorial", 2007.

3. Bjarne Stroustrup, "The C++ Programming


Language",1985.

4. Bjarne Stroustrup," C++ Programming Languge",2017.

5. Peter Brass, “Advanced Data Structure”, 2008.

6. Matt Weisfeld, “The Object-Oriented Thought Process”,


2019

7.
، 79 ‫ مجلة لغـةةةةةةةةةة العـةةةةةةةةةصةةةر ع‬، ‫ قواعد البيانات ووظائفها وأنماطها‬، ‫أحمد خيري‬
2117، ‫ األهرام للكمبيوتر واالنترنت واالتصاالت‬، ‫القـاهرة‬

You might also like