0% found this document useful (0 votes)
25 views74 pages

BPG401 CH1

Uploaded by

superozimer2007
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views74 pages

BPG401 CH1

Uploaded by

superozimer2007
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 74

‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫البرمجة ( ‪) 1‬‬
‫الفصل األول‪ :‬البرنامج الحاسوبي‬

‫‪-0-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫رقم الرفحة‬ ‫العنهان‬


‫‪6‬‬ ‫‪ .1‬الحاسهب ‪ -‬اآللة‬
‫‪ .2‬تطهر العتاد الحاسهبي والديمقراطية المعرفية من معمهماتية "الُنخبة" إلى معمهماتية‬
‫‪11‬‬
‫الجميع‬
‫‪15‬‬ ‫‪ .3‬نعم التذغيل‬
‫‪16‬‬ ‫‪ .4‬الحاسهب ونعام التذغيل‬
‫‪18‬‬ ‫‪ .5‬الترنيفات الرئيدة ألنهاع نعم التذغيل وتطهرها‬
‫‪19‬‬ ‫‪ .6‬ترميز المعمهمات‬
‫‪23‬‬ ‫‪ .7‬البرامج الحاسهبية‬
‫‪25‬‬ ‫‪ .8‬لغات البرمجة‬
‫‪26‬‬ ‫‪ .9‬المغات البرمجية عالية المدتهى‪ :‬لمحة تاريخية‬
‫‪27‬‬ ‫‪ .11‬المغات البرمجية عالية المدتهى‪ :‬المغات اإلجرائية (‪)1‬‬
‫‪29‬‬ ‫‪ .11‬المغات البرمجية عالية المدتهى‪ :‬المغات اإلجرائية (‪)2‬‬
‫‪31‬‬ ‫‪ .12‬المغات البرمجية عالية المدتهى‪ :‬المغات الهظيفية‬
‫‪31‬‬ ‫‪ .13‬المغات البرمجية عالية المدتهى‪ :‬المغات المنطقية‬
‫‪31‬‬ ‫‪ .14‬المغات البرمجية عالية المدتهى‪ :‬المغات الغرضية التهجه‬
‫‪32‬‬ ‫‪ .15‬المترجمات‬
‫‪33‬‬ ‫‪ .16‬أسئمة‬
‫‪35‬‬ ‫‪ .17‬التطهير المنهجي لمبرمجيات‬
‫‪36‬‬ ‫‪ .18‬استراتيجيات وضع الحمهل البرمجية‬
‫‪38‬‬ ‫‪ .19‬المخططات التدفقية‬
‫‪41‬‬ ‫‪ .21‬الخهارزميات‬
‫‪43‬‬ ‫‪ .21‬لغة الخهارزميات (‪)pseudo code‬‬
‫‪44‬‬ ‫‪ .22‬التعميمات األساسية لمغة الخهارزميات (‪)pseudo code‬‬
‫‪45‬‬ ‫‪ .23‬تعميمة القراءة ‪read‬‬
‫‪46‬‬ ‫‪ .24‬تعميمة الكتابة ‪write‬‬
‫‪48‬‬ ‫‪ .25‬تعميمة اإلسناد‬
‫‪51‬‬ ‫‪ .26‬التعميمة الذرطية‬
‫‪54‬‬ ‫‪ .27‬التعميمة التكرارية ‪while‬‬

‫‪-1-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪61‬‬ ‫‪ .28‬منهجية كتابة نعام برمجي‬


‫‪63‬‬ ‫‪ .29‬أمثمة كالسيكية عامة وهامة‬
‫‪69‬‬ ‫‪ .31‬أسئمة‬
‫‪71‬‬ ‫‪ .31‬نذاط‬

‫‪-2-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الكممات المفتاحية‪:‬‬
‫ترميز‪ُ ،‬مترجػ‪ ،‬لغة برمجة‪ ،‬خؽارزمية‪ ،‬لغة اآللة‪ ،‬لغة برمجة إجرائية‪ ،‬لغة برمجة غرضية التؽجه‪ ،‬ترػسيػ‬
‫مؼ القسة إلى القاعدة‪ ،‬لغة الخؽارزميات‪.‬‬

‫ممخص‪:‬‬
‫يدتعرض هذا القدػ مفهؽـ البرنامج الحاسؽبي مؼ خالؿ عرضه لسراحل تطؽر العتػا الحاسػؽبي الرػم ‪،‬‬
‫الترميػػز‪ ،‬ولغػػات البرمجػػة السدػػتخدمة لتطػػؽير األنعسػػة البرمجيػػة‪ ،‬ا ضػػا ة إلػػى‬ ‫وأنعسػػة تذػػغيمه‪ ،‬وأسػػالي‬
‫م ارحػل تطػؽر مشهجيػػات وأ وات ترػسيػ وبشػػا هػذ األنعسػػة مػؼ خػػالؿ التركيػز عمػى "لغػػة الخؽارزميػات"‬
‫‪ Code Pseudo-‬ك ػػة اة مد ػػاعدة عم ػػى تر ػػسيػ البػ ػرامج الر ػػغيرة الحج ػػػ‪ ،‬أو التعبي ػػر عشه ػػا عم ػػى نح ػػؽ‬
‫مدػػتقل عػػؼ لغػػة البرمجػػة‪ .‬كسػػا يدػػتعرض أنسػػا لغػػات البرمجػػة وأنؽاعهػػا كمغػػات البرمجػػة ا جرائيػػة ولغػػات‬
‫البرمجة الغرضية التؽجه‪.‬‬

‫أهداف تعميمية‪:‬‬
‫ي هذا الفرل عمى‪:‬‬ ‫يتعرؼ الطال‬
‫‪ ‬نعاـ التذغيل‪ ،‬البرنامج الحاسؽبي‬
‫‪ ‬السترجػ‬
‫‪ ‬أنسا الترميز‬
‫‪ ‬أنسا لغات البرمجة‬
‫‪ ‬مفهؽـ الخؽارزمية وأمثمة عشها‬
‫‪ ‬مشهجية تطؽير البرمجيات‬
‫‪ ‬لغة الخؽارزميات‬
‫‪ ‬السخططات التد قية‬

‫‪-3-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫المخطط‪:‬‬
‫‪ .1‬الحاسؽب – اآللة‬
‫"الشخبة" إلى معمؽماتية الجسيع‬
‫‪ .2‬تطؽر العتا الحاسؽبي والديسقراطية السعر ية مؼ معمؽماتية ُ‬
‫‪ .3‬نعػ التذغيل‬
‫‪ .4‬الحاسؽب ونعاـ التذغيل‬
‫‪ .5‬الترشيفات الرئيدة ألنؽاع نعػ التذغيل وتطؽرها‬
‫‪ .6‬ترميز السعمؽمات‬
‫‪ .7‬البرامج الحاسؽبية‬
‫‪ .8‬لغات البرمجة‬
‫‪ .9‬المغات البرمجية عالية السدتؽى‪ :‬لسحة تاريخية‬
‫‪ .11‬المغات البرمجية عالية السدتؽى‪ :‬المغات ا جرائية (‪)1‬‬
‫‪ .11‬المغات البرمجية عالية السدتؽى‪ :‬المغات ا جرائية (‪)2‬‬
‫‪ .12‬المغات البرمجية عالية السدتؽى‪ :‬المغات الؽظيفية‬
‫‪ .13‬المغات البرمجية عالية السدتؽى‪ :‬المغات السشطقية‬
‫‪ .14‬المغات البرمجية عالية السدتؽى‪ :‬المغات الغرضية التؽجه‬
‫‪ .15‬السترجسات‬
‫‪ .16‬أسئمة‬
‫‪ .17‬التطؽير السشهجي لمبرمجيات‬
‫‪ .18‬استراتيجيات وضع الحمؽؿ البرمجية‬
‫‪ .19‬السخططات التد قية‬
‫‪ .21‬الخؽارزميات‬
‫‪ .21‬لغة الخؽارزميات )‪(pseudo code‬‬
‫‪ .22‬التعميسات األساسية لمغة الخؽارزميات )‪(pseudo code‬‬
‫‪ .23‬تعميسة الق ار ة ‪read‬‬
‫‪ .24‬تعميسة الكتا ة ‪write‬‬
‫‪ .25‬تعميسة ا سشا‬
‫‪ .26‬التعميسة الذرطية‬
‫‪ .27‬التعميسة التك اررية ‪while‬‬
‫‪ .28‬مشهجية كتا ة نعاـ برمجي‬

‫‪-4-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .29‬أمثمة كالسيكية عامة وهامة‬


‫‪ .31‬أسئمة‬
‫‪ .31‬نذا‬

‫‪-5-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .1‬الحاسهب ‪ -‬اآللة‬
‫يبػػدأ تػػاريع السعمؽماتيػػة وعمػػؽـ الحاسػػؽب مػػع اخت ػراع أ وات األتستػػة والحدػػاب التػػي ارتػػب تطؽرهػػا بثال ػػة‬
‫كرية أساسية جرى التعبير عشها بثال ة أنسا مؼ اآلالت‪:‬‬ ‫خطؽ‬
‫‪ ‬اآللة الحاسبة‬
‫‪ ‬األوتؽمات‬
‫‪ ‬اآللة القابمة لمبرمجة‬

‫يبػػدأ تػػاريع السعمؽماتيػػة وعمػػؽـ الحاسػػؽب مػػع اخت ػراع أ وات األتستػػة والحدػػاب التػػي ارتػػب تطؽرهػػا بثال ػػة‬
‫كريػػة أساسػػية مثمػػظ مػػا يشتعػػر ا ندػػاف مػػؼ اآللػػة التػػي يخترعهػػا ويطؽرهػػا‪ ،‬وجػػرى التعبيػػر عشهػػا‬ ‫خطػػؽ‬
‫بثال ة أنسا مؼ اآلالت‪ :‬اآللة الحاسبة‪ ،‬األوتؽمات‪ ،‬اآللة القابمة لمبرمجة‪.‬‬

‫‪-6-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫اآللة الحاسبة‪:‬‬
‫اخترع ‪ Pascal‬ي القرف الدا ع عذر آلة حداب عاها ‪ La Pascaline‬لتشفيذ عسميتي الجسع والطرح‪،‬‬
‫الرػػيشي القػػديػ والػػذم يرجػػع تاريخػػه إلػػى مئػػات األعػؽاـ قبػػل السػػيال ‪.‬‬ ‫وقػػد اعتسػػد ػػي بشائهػػا عمػػى السحدػ‬
‫ومع نهاية القرف الدا ع عذر َّ‬
‫حدؼ ‪ Leibniz‬آلة اسكاؿ إضا ة عسميتي الزرب والقدسة عميها‪.‬‬

‫ال اسكاليؼ‬

‫آلة ليبشيتز‬

‫‪-7-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫األوتهمات‪:‬‬
‫بدأ تطؽير اآلالت السيكانيكية التي كانظ تُدتخدـ ي العسميات العدكرية و ػي الدػاعات الفمكيػة مشػذ القػرف‬
‫الثاني عذر السيال م واستسرت هذ اآلالت السيكانيكية التطؽر حتػى القػرف الثػامؼ عذػر‪ .‬وتعهػر نسػا ج‬
‫‪ Leonardo‬لمكثيػػر مػػؼ اآلالت‬ ‫‪De‬‬ ‫عسمهػػا ػػي الترػػاميػ التػػي تركهػػا ‪Vinci‬‬ ‫هػػذ اآلالت وأسػػالي‬
‫العدكرية والسدنية‪.‬‬

‫ترسيػ ا شذي‬

‫‪-8-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫اآلالت القابمة لمبرمجة‪:‬‬


‫بدأ مفهؽـ اآلالت القابمة لمبرمجة العهؽر مع اختراع آالت حياكة الشديج‪ .‬وقد شهد هػذا الشػؽع مػؼ اآلالت‬
‫قف ػزة عمػػى يػػد ‪ Jaquard‬الػػذم عػػاش بػػيؼ عػػامي ‪ 1752‬و‪ 1834‬وصػػسػ أوؿ آلػػة حياكػػة قابمػػة لمبرمجػػة‬
‫(ميكانيكياً)‪ ،‬حيث استُعسمظ نفس التقشية عدها لبشا العديد مؼ اآلالت الحربية‪.‬‬
‫وقد نتجظ العمؽـ السعمؽماتية عؼ اندماج األ كار والسعارؼ التي جرى تحريمها مؼ تطػؽير اآلالت اآلنفػة‬
‫الذكر‪.‬‬

‫نؽؿ جاكار القابل لمبرمجة‬

‫‪-9-‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .2‬تطووهر العتوواد الحاسووهبي والديمقراطيووة المعرفيووة موون معمهماتيووة "الُنخبووة" إلووى معمهماتيووة‬
‫الجميع‬

‫الجيل الرابع‬ ‫الجيل الثالث‬ ‫الجيل الثاني‬ ‫الجيل األول‬


‫منذ عام ‪1974‬‬ ‫‪1973-1966‬‬ ‫‪1965-1955‬‬ ‫‪1954-1945‬‬
‫‪VLSI‬‬ ‫دمجة متكاممة‬
‫ارات ُم َ‬ ‫ترانزيدتؽرات‬ ‫فرغة‬
‫صسامات ُم ّ‬
‫‪(Integrated‬‬ ‫)‪(Transistors‬‬ ‫)‪(Tubes‬‬ ‫المكهنات‬
‫)‪Circuits‬‬
‫‪VLSI‬‬ ‫دمجة متكاممة‬
‫ارات ُم َ‬ ‫‪Ferrite Core‬‬ ‫‪Ferrite Core‬‬
‫‪(Integrated‬‬ ‫‪memory‬‬ ‫‪Memory‬‬ ‫الذواكر‬
‫)‪Circuits‬‬
‫زمن‬
‫‪ 10-9‬انية‬ ‫‪ 10-6‬انية‬ ‫‪ 10-3‬انية‬ ‫‪ 10-2‬انية‬
‫المعالجة‬
‫االشتراؾ‬ ‫عدة برامج مع‬ ‫برنامج وحيد مع‬ ‫بدائي‬
‫السعالج مع‬ ‫معالجة برنامج واحد‬ ‫معالجة برنامج‬ ‫نعام‬
‫معالجة عدة‬ ‫واحد‬ ‫التذغيل‬
‫برامج آف واحد‬

‫مػ ّػر تطػػؽر الحاسػػؽب عػػدة م ارحػػل يجػػرم عػػا ًة ترػػشيفها تحػػظ إسػػػ أجيػػاؿ الحاسػػؽب‪ ،‬وتُ َ‬
‫قدػػػ هػػذ األجيػػاؿ‬
‫إلى‪:‬‬

‫الجيل األول (‪:)1954-1945‬‬


‫تحريكهػا‪ .‬كسػا كانػظ‬ ‫فرغػة‪ ،‬وكانػظ ضػخسة حيػث يرػع‬
‫الس َّ‬
‫الرػسامات ُ‬ ‫استخدمظ ارات هذ الحؽاسي‬
‫تعميسات نعاـ التذغيل تُخزَّف اخمياً‪ ،‬وكاف ال بػد مػؼ إضػا ة صػسامات وأسػالؾ حديديػة جديػدة عشػد بػروز‬
‫الحاجة ضا ة تطبيقات جديدة‪.‬‬
‫قامػػظ شػػركة ‪ IBM‬بترػػشيع أوؿ حاسػػؽب ضػػخػ و سػػسه ‪ .IBM701‬كسػػا شػػهد عػػاـ ‪ 1951‬ترػػشيع أوؿ‬
‫حاسػ ػػؽب أميريكػ ػػي تجػ ػػارم‪ ،‬وهػ ػػؽ ‪ UNIVAC-1‬والػ ػػذم كػ ػػاف الهػ ػػدؼ مشػ ػػه تجسيػ ػػع السعمؽمػ ػػات الدػ ػػكانية‬
‫ا حرائية‪ .‬كاف حاسؽب ‪ UNIVAC-1‬يحتاج إلى طابق بشا ضخػ‪ ،‬وكاف وزنه سانية أطشاف‪ ،‬ويحتؽم‬
‫فرغ‪.‬‬
‫عمى أكثر مؼ سانية آالؼ صساـ ُم َّ‬

‫‪- 10 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الػػدوؿ‬ ‫الس اركػػز العدػػكرية الكبػػرى ػػي ع ػ‬ ‫ػػي لػػغ الؽقػػظ كػػاف اسػػتخداـ الحاسػػؽب محرػػؽ اًر ػػي ع ػ‬
‫الععسى‪.‬‬

‫مؼ الجيل األوؿ‬ ‫حاس‬

‫‪- 11 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الجيل الثاني (‪:)1965-1955‬‬


‫الترانزيدػػتؽرات ػػي تشفيػػذ العسميػػات الحدػػابية‪ ،‬واحتػػؽت عمػػى اكػرة مغشاطيدػػية‪،‬‬ ‫اسػػتخدمظ هػػذ الحؽاسػػي‬
‫واستخدمظ أقراصاً وأشرطة مجدولة مسغشطة لتخزيؼ السعطيػات‪ .‬وقػد سػسذ هػذا الترػسيػ بتخػزيؼ البػرامج‪،‬‬
‫وأصبذ إمكاف مدير الشعاـ إ خاؿ تعميسات التشفيذ‪ ،‬اعتسا اً عمى لؽحة مفاتيذ‪ .‬وقد ظهػرت ػي هػذ الفتػرة‬
‫أولػػى لغػػات البرمجػػة كالػ ػ ‪ Fortran‬التػػي كانػػظ تُدػػتخدـ ػػي تشفيػػذ األعسػػاؿ الحدػػابية‪ ،‬والػ ػ ‪ Cobol‬والتػػي‬
‫خدـ ي أتستػة عػ األعسػاؿ ا اريػة والسكتبيػة‪ .‬حيشهػا‪ ،‬كانػظ الػدوؿ الكبيػرة والغشيػة قػ قػا رة‬ ‫كانظ تُدتَ َ‬
‫عمى اقتشا واستخداـ األ وات الحاسؽبية‪.‬‬

‫مؼ الجيل الثاني‬ ‫حاس‬

‫الجيل الثالث (‪:)1973-1966‬‬


‫لػػ تكػؼ متؽا قػة يسػا بيشهػا‪ ،‬حيػث‬ ‫الستكاممػة‪ .‬لكػؼ الحؽاسػي‬
‫دمجػة و ُ‬
‫الس َ‬
‫استخدمظ هػذ الحؽاسػي الػدارات ُ‬
‫كانػػظ الطر يػػات مرػػسسة لالسػػتخداـ عمػػى حاسػػؽب وحيػػد وال تعسػػل مػػع أم حاسػػؽب آخػػر‪ ،‬وكػػاف يتؽج ػ‬
‫لكي تعسل عمى حاسؽب آخر‪.‬‬ ‫إعا ة كتا ة وترجسة نعػ التذغيل الخاصة ةحد الحؽاسي‬
‫أنتجػظ شػركة ‪ )Digital Equipment Corporation( DEC‬األميريكيػة حاسػؽب ‪ .PDP-8‬كػاف هػذا‬
‫أوؿ حاسػػؽب حجػػػ صػػغير ندػػبياً‪ ،‬وكػػاف هد ػػه الػػتحكػ ػػي عسميػػات السعالجػػة الرػػشاعية والعمسيػػة‪ ،‬إال أف‬
‫التطبيقات األخرى ات األغراض السختمفة بدأت عد لغ التؽا ر ي األسؽاؽ تدريجياً‪.‬‬
‫كسػػا طػػؽرت شػػركة ‪ AT&T‬األميريكيػػة التعػػاوف مػػع مختب ػرات ‪ Bell‬نعػػاـ التذػػغيل ‪ ،UNIX‬والػػذم يعتسػػد‬
‫عمػػى تعػػد السدػػتخدميؼ‪ .‬وهػػؽ نعػػاـ التذػػغيل "األب" ألنعسػػة تذػػغيل مشتذ ػرة ومذػػهؽرة ػػي وقتشػػا الحػػالي‪:‬‬
‫‪.Linux, Android‬‬

‫‪- 12 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مشذ لغ الؽقظ‪ ،‬صار الحاسؽب ي متشاوؿ عد أكبر مؼ الدوؿ والبمداف وصار ا مكاف اقتشػاؤ مػؼ قبػل‬
‫الجامعات والسؤسدات الحكؽمية والخاصة الكبيرة الستخدامه ي األعساؿ العمسية‪.‬‬

‫مؼ الجيل الثالث‬ ‫حاس‬

‫الجيل الرابع (منذ عام ‪:)1974‬‬


‫دمجػػة ات األحجػػاـ الرػػغيرة جػػداً‪ ،‬وكانػػظ سػػرعاتها عاليػػة‪،‬‬
‫الس َ‬
‫تسيػػزت هػػذ الحؽاسػػي الػػدارات الستكاممػػة ُ‬
‫وكانظ األجهزة التي تحؽيها مؽ ؽقة‪ ،‬ولها شاشات مرئية‪ ،‬ومداحات تخزيؼ واسعة‪.‬‬
‫حازت شركة مايكروسؽ ظ عمى رخرة الستخداـ نعػاـ ‪ ،UNIX‬وبػدأت بتطػؽير ندػخة مػؼ نعػاـ ‪Xenix‬‬
‫الذخرية‪.‬‬ ‫لمحؽاسي‬
‫ػي عػاـ ‪ ،1980‬اعتسػػدت شػركة ‪ IBM‬عمػى مهشدسػػيؼ هسػا ‪ Paul Allen‬و‪ Bill Gates‬البتكػار نعػػاـ‬
‫تذػػغيل حاسػػؽب شخرػػي جديػػد حيػػث قػػامؽا ذ ػ ار حقػػؽؽ نعػػاـ تذػػغيل دػػي اسػػتخدمؽ كشسػػؽ ج لشعػػاـ‬
‫حقػؽؽ‬ ‫تذغيل مبػدئي يػدعى ‪ .DOS‬وقػد سػسحظ ‪ IBM‬لكػل مػؼ ‪ Paul Allen‬و‪ Bill Gates‬ا حتفػا‬
‫تدػػؽيق نعػػاـ التذػػغيل ‪ ،MS-DOS‬إضػػا ة إلػػى حػػق اسػػتخداـ ا سػػػ التجػػارم ‪ .DOS‬كػػاف نعػػاـ ‪MS-‬‬

‫‪- 13 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ DOS‬أو‪ Microsoft Disk Operating System‬ػي البدايػة نعػاـ تذػغيل دػي ‪ ،‬مرػسساً لتذػغيل‬
‫برن ػ ػػامج واح ػ ػػد‪ ،‬ػ ػػي آف واح ػ ػػد‪ ،‬ولسد ػ ػػتخدـ وحي ػ ػػد‪ .‬ػ ػػي ع ػ ػػاـ ‪ ،1984‬س ػ ػػؽقظ ش ػ ػػركة ‪ Apple‬حاس ػ ػػؽب‬
‫‪ Apple Macintosh‬واجهػات بيانيػة رسػؽمية‬ ‫‪ Macintosh‬عمػى نطػاؽ واسػع‪ .‬وقػد اسػتخدمظ حؽاسػي‬
‫تعسل السؤشر‪ ،‬بدالً مؼ لؽحة السفاتيذ‪ ،‬كسا كاف األمػر عميػه ػي نعػاـ ‪ .DOS‬ػي نفػس الؽقػظ أصػدرت‬
‫‪ Microsoft‬الشدخة األولى مؼ نعاـ ‪ )windows 3( Windows‬وطؽرته عبر عقديؼ لتحؽله مؼ نعػاـ‬
‫خاص حاسؽب شخري إلى نعاـ تذغيل يسكؼ استخدامه ضسؼ شبكات حاسؽبية ي السؤسدات‪.‬‬
‫و ػػي عػػاـ ‪ 1991‬طػػؽر ‪ Linus Torvald‬نعػػاـ التذػػغيل ‪ LINUX‬السجػػاني و الػػشب البرمجػػي السفتػػؽح‬
‫الذخرية والسذا ه لشعاـ ‪ UNIX‬مؼ حيث السكؽنات‪ ،‬بهػدؼ محاربػة احتكػار‬ ‫الذم يعسل عمى الحؽاسي‬
‫الذخرية‪.‬‬ ‫‪ Microsoft‬ألنعسة الحؽاسي‬
‫ي عررنا هذا‪ ،‬أصبذ الحاسؽب أ اة متؽ رة لمجسيع ولػ يعد مقتر اًر عمى مجسؽعة األخرائييؼ ق !!!‬

‫‪ IBM‬مؼ الجيل ال ار ع‬ ‫حاس‬

‫‪- 14 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .3‬نعم التذغيل‬
‫تعريف‪:‬‬
‫يدير‪/‬يذغل عتا الحاسؽب حيث يؽ ر البرمجيات والتطبيقات الزرورية‬ ‫ِّ‬ ‫عرؼ نعاـ التذغيل ةنه برنامج‬ ‫ُي َّ‬
‫لتذػػغيل هػػذ العتا يػػات‪ ،‬كسػػا يعسػػل كؽسػػي بػػيؼ السدػػتخدـ والحاسػػؽب حيػػث يدػػسذ لمسدػػتخدـ اسػػتثسار‬
‫مؽار الحاسؽب (الذاكرة ووحدة السعالجة ذكل رئيدي) وتطبيقاته‪.‬‬

‫أسمهب ترميم نعام التذغيل‪:‬‬


‫يختمػػت ترػػسيػ نعػػاـ التذػػغيل حدػ البيئػػة التػػي ُيفتػػرض أف يعسػػل عميهػػا‪ ،‬إ ُيرػػسػ نعػػاـ التذػػغيل الػػذم‬
‫يعسػػل عمػػى السخػ ِّػدمات عمػػى نحػػؽ يدػػتطيع يػػه اسػػتثسار العتا يػػات الذػػكل األمثػػل‪ ،‬ػػي حػػيؼ يرػػسػ نعػػاـ‬
‫السعػ ّػد لمعسػػل عمػػى الحاسػػبات الذخرػػية ليػػدعػ تطبيقػػات متشؽعػػة‪ .‬التػػالي نالحػ اخػػتالؼ وجهػػة‬ ‫التذػػغيل ُ‬
‫الترػػسيػ لتك ػػؽف إم ػػا مالئسػػة ُ‬
‫لمسد ػػتخدـ الشه ػػائي ػػي حال ػػة الحؽاسػ ػ الذخرػػية‪ ،‬أو عال ػػة ػػي اس ػػتثسارها‬
‫ِ‬
‫السخدمات‪.‬‬ ‫لمعتا يات ي حالة‬
‫ّ‬

‫‪- 15 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .4‬الحاسهب ونعام التذغيل‬


‫مكؽنات الشعاـ الحاسؽبي‪:‬‬
‫‪ ‬العتا يات‬
‫‪ ‬نعاـ التذغيل‬
‫‪ ‬التطبيقات‬
‫‪ ‬السدتخدميؼ‬
‫ويبيؼ تؽضع نعاـ التذغيل ضسؼ تمغ البشية‪:‬‬
‫يسثل الذكل التالي بشية تؽضيحية لمشعاـ الحاسؽبي‪ُ ،‬‬

‫مدتخدـ‬ ‫مدتخدـ ‪3‬‬ ‫مدتخدـ ‪2‬‬ ‫مدتخدـ ‪1‬‬

‫نعاـ قاعدة معطيات‬ ‫مترفذ وب‬ ‫مترجػ‬ ‫محرر نرؽص‬

‫التطبيقات‬

‫نعام التذغيل‬

‫العتا‬

‫يتػؽلى نعػاـ التذػغيل مهسػة ا شػراؼ والسراقبػة وتػػؽ ير البيئػة السالئسػة لمتطبيقػات والسدػتخدميؼ لكػي ُيشفػػذوا‬
‫أعسالهػ ويدتثسروا مؽار الحاسؽب وتطبيقاته‪ .‬إ تذكل العتا يات ي الشعاـ الحاسؽبي السؽار التي يجرم‬
‫االعتس ػػا عميهػػػا عشػػػد اس ػػتثسار الحاسػػػؽب‪ ،‬وهػ ػػي تذ ػػسل وحػػػدة السعالجػ ػػة السركزي ػػة‪ ،‬وال ػػذاكرة‪ ،‬وتجهي ػ ػزات‬

‫الدخل‪/‬خرج وغيرها‪ ،‬ي حيؼ تُ ِّ‬


‫عبر التطبيقات عؼ األ وات التي يدتخدمها السدتثسروف الستثسار السؽار ‪.‬‬

‫‪- 16 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫تحكػ‪ ،‬وكشؽاة لتذغيل التطبيقات الحاسؽبية‪:‬‬


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

‫‪- 17 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .5‬الترنيفات الرئيدة ألنهاع نعم التذغيل وتطهرها‬


‫‪ ‬نعػ السهسة الؽحيدة‬
‫‪ ‬نعػ السهسات الستعد ة ونعػ السذاركة بزمؼ السعالج‬
‫الذخرية‬ ‫‪ ‬نعػ الحؽاسي‬
‫‪ ‬الشعػ السؽزعة‬
‫تطػػؽ اًر كبي ػ ار مشػػذ أف نذػػةت وحتػػى اآلف‪ ،‬س ػؽا كػػاف لػػغ التطػػؽر يػػؤ ر عمػػى‬ ‫تطػػؽرت نعػػػ إ ارة الحؽاسػػي‬
‫طبيعة نعاـ التذغيل حد اته‪ ،‬أو كاف يعبر عؼ جيل آخر مؼ األنعسػة يقػدـ خػدمات مغػايرة أكثػر تطػؽ اًر‬
‫وتشؽعاً مؼ حيث عسها لمتطبيقات السختمفة وما تقدمه مؼ مهسات‪ ،‬تجارية كانظ أـ عمسية‪.‬‬
‫لق ػػد م ػػرت ورة حي ػػاة نع ػػػ التذ ػػغيل العدي ػػد م ػػؼ الس ارح ػػل ب ػػدأت م ػػؼ خ ػػالؿ ال ػػشعػ ات السهس ػػة الؽحي ػػدة‪،‬‬
‫وتطػػؽرت عػػد لػػغ لترػػبذ نعسػاً تػػدعػ عػػدة مهسػػات ػػي آف واحػػد‪ ،‬ػػػ بػػدأت تتذػػارؾ ػػالسؽار كالسعػػالج أو‬
‫الذخرية التي انتذرت انتذا اًر واسعاً بيؼ السدتخدميؼ‪.‬‬ ‫الذاكرة‪ ،‬وت ار ق لغ مع تطؽر أجياؿ الحؽاسي‬

‫تُ ِّ‬
‫عبػػر نعػػػ السهسػػة الؽحيػػدة عػػؼ نعػػػ التذػػغيل البدػػيطة التػػي كػػاف الحاسػػؽب يهػػا يقػػؽـ بتشفيػػذ تطبيػػق واحػػد‬
‫قػ ‪ ،‬وتُسِثّػػل هػػذ الػػشعػ الذػػكل األوؿ لػػشعػ التذػػغيل عشػػد بدايػػة ظهؽرهػػا‪ ،‬حيػػث كانػػظ الحاسػػبات ػػي لػػغ‬
‫الؽقظ ات حجػؽـ ضػخسة جػداً وكانػظ تُػدار مػؼ خػالؿ واجهػات تعميسػات خاصػة‪ ،‬أمػا أ وات الػدخل‪/‬خرج‬
‫قد كانظ تتسثل قارئات البطاقات السثقبة وسؽاقات األشرطة السسغشطة‪ ،‬كسا كانػظ وسػائ التخػزيؼ تتسثػل‬
‫عسؽماً البطاقات السثقبة واألشرطة السسغشطة‪.‬‬

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

‫‪- 18 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫اتراؿ مشاس كذبكة محمية أو خطؽ هاتت أو أية وسيمة أخرى‪ُ .‬يطمق عمػى هػذا الشػؽع مػؼ الػشعػ اسػػ‬
‫الشعػ السؽزعة‪ .‬يسكؼ أف تختمت السعالجات السكؽنة لمشعػاـ السػؽزع حجسػاً أو أ ا ً ‪ ،‬ػيسكؼ أف تكػؽف عبػارة‬
‫رػػات‪ ،‬كسػػا يسكػػؼ ا شػػارة إليهػػا ةسػػسا‬
‫عػػؼ معالجػػات أو محطػػات عسػػل أو حؽاسػ شخرػػية أو حتػػى مش ّ‬
‫مختمفة كسؽاقع وب أو كعقػد شػبكية‪ ،‬حيػث تختمػت التدػسية حدػ الدػياؽ الػذم يػتػ يػه ا شػارة إلػى تمػغ‬
‫السعالجات‪.‬‬

‫‪ .6‬ترميز المعمهمات‬
‫تعريف‪:‬‬
‫خزنة ي الحاسؽب عمى شكل سمدمة مػؼ ‪ 0‬و‪( 1‬المغػة الثشائيػة)‪ ،‬وبسػا أف ا ندػاف ال‬ ‫تكؽف السعمؽمات الس َّ‬
‫ُ‬
‫يػػتكمػ المغ ػػة الثشائي ػػة‪ ،‬نحت ػػاج لترجسػػة تعميس ػػات السد ػػتثسر السكتؽب ػػة بمغ ػػة برمجيػػة خاص ػػة‪ ،‬إل ػػى ه ػػذ المغ ػػة‬
‫الثشائية‪ .‬لذا ُن ِّ‬
‫عرؼ الترميػز عمػى أنػه تػا ع تقابػل بػيؼ معمؽمػة‪ ،‬وبػيؼ سمدػمة مػؼ ‪ 0‬و‪ 1‬تسثػل هػذ السعمؽمػة‬
‫وتكؽف قابمة لمتخزيؼ ضسؼ اآللة‪.‬‬

‫‪(American‬‬ ‫‪Standard‬‬ ‫‪Code‬‬ ‫‪for‬‬ ‫ترميوووز المحوووارف‪ :‬الترميوووز ‪ASCII‬‬


‫)‪ ،Information Interchange‬والترميز ‪(Universal Code) UNICODE‬‬
‫الستَّبعػػة ػػي األنعسػػة الحاسػػؽبية‪ .‬يدػػسذ الترميػػز ‪ASCII‬‬‫يعتبػػر الترميػػز ‪ ASCII‬أحػػد أهػػػ أسػػالي الترميػػز ُ‬
‫السعػ ّػدؿ بترميػػز أم محػػرؼ عمػػى ‪ 8‬بػػظ‪ .‬لػػذا يسكششػػا اعتسػػا اً عمػػى مثػػل هػػذا الترميػػز‪ ،‬تسثيػػل ‪28‬‬
‫ذػػكمه ُ‬
‫محرؼ (أم ‪ 256‬محرؼ) مسا يدسذ بتسثيػل األ جػديات األوروبيػة كا نكميزيػة‪ ،‬والفرندػية‪ ،‬وا سػبانية‪...،‬‬
‫الع‪ ،‬ا ضا ة إلى السحارؼ الخاصة كاألرقاـ وأحرؼ التشقي وغيرها‪.‬‬
‫ج ػػرى إ خ ػػاؿ تع ػػديالت حديث ػػة عم ػػى أنعس ػػة الترمي ػػز ض ػػسؼ األنعس ػػة الحاس ػػؽبية حي ػػث س ػػسحظ بتسثي ػػل‬
‫السحارؼ عمى ‪ 16‬بظ‪ ،‬وُ عيػظ ػالترميز العسػؽمي )‪ ،(Unicode: Universal Code‬مسػا سػاعد عمػى‬
‫تؽ ير إمكانية تسثيل ‪ 65536‬حرؼ‪ ،‬وأ ى لفتذ السجاؿ أمػاـ تسثيػل األحػرؼ العربيػة‪ ،‬والرػيشية‪ ،‬والكؽريػة‬
‫وغيرها‪.‬‬

‫‪- 19 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪- 20 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫ترميز األعداد الرحيحة‪ :‬الترقيم‬


‫يسكػػؼ ترميػػز األعػػدا الرػػحيحة كسحػػارؼ‪ ،‬إال أف مثػػل هػػذا الترميػػز سػ ُػيعِّقد تشفيػػذ العسميػػات الحدػػابية عمػػى‬
‫هػػذ األعػػدا ضػػسؼ األنعسػػة الحاسػػؽبية‪ .‬الشتيجػػة‪ ،‬يسكػػؼ لمحاسػػؽب التعامػػل مػػع القػػيػ الرقسيػػة عمػػى نحػػؽ‬
‫أسهل إ ا جرى وضع ترميز خاص لها‪ .‬ندعؽ هذا الترميز الترقيػ‪.‬‬
‫عا ًة‪ ،‬يجرم التعامػل مػع القػيػ الرقسيػة الرػحيحة كقػيػ ِعذػرية‪ :‬ػالرقػ ‪ ،5‬والػرقػ ‪ ،8‬والػرقػ ‪ 90‬هػي أرقػاـ‬
‫صػحيحة مسثمػة عمػى قاعػدة التػرقيػ ِ‬
‫الع ّذػرم حيػػث تكػؽف األرقػاـ محرػؽرة بػيؼ ‪ 0‬و‪ 9‬وتكػؽف قػيػ األعػػدا‬
‫محدؽبة و ق القاعدة العذرية‪ .‬عشدما نكت العد ‪ 5769‬و ق القاعدة ِ‬
‫الع ّذرية‪ ،‬يذػير ترتيػ األرقػاـ إلػى‬
‫قؽة الرقػ ‪ 10‬السرتبطة الرقػ وهي ي حالتشا‪:‬‬
‫‪5  103‬‬
‫‪7  102‬‬
‫‪6  101‬‬
‫‪9  100‬‬
‫وتكؽف قاعدة احتداب القيسة العذرية السؽا قة لهذ االرتباطات مؼ األعمى إلى األسفل‪:‬‬
‫‪(5 * 103) + (7 * 102) + (6 * 21) + (9 * 100) = 5769‬‬
‫يسكششا تعسيػ هذ القاعدة عمى أم قاعدة ‪ b‬مهسا تكػؼ ‪ b‬سػؽا كانػظ ‪ b=2‬أو ‪ b=10‬أو ‪ .b=16‬عشػدما‬
‫تكؽف ‪ b=10‬ندعؽ قاعدة الترقيػ‪ ،‬قاعدة ِعذرية‪ ،‬وتكؽف األرقاـ التي تؤلت األعدا محرػؽرة بػيؼ ‪ 0‬و‪،9‬‬
‫شائية‪ ،‬وتكؽف األرقاـ التػي تؤلػت األعػدا محرػؽرة بػيؼ ‪0‬‬
‫وعشدما تكؽف ‪ b=2‬ندعؽ قاعدة الترقيػ‪ ،‬قاعدة ُ ّ‬
‫سانية وتكؽف األرقاـ التي تؤلت األعدا محرؽرة بػيؼ‬‫و‪ ،1‬وعشدما تكؽف ‪ b=8‬ندعؽ قاعدة الترقيػ قاعدة ُ ّ‬
‫‪ 0‬و‪.7‬‬
‫الشتيجة‪ ،‬تكؽف ارتباطات األرقاـ التي تؤلت العد ‪ 10010‬السسثل شائياً كسا يمي مؼ اليدار إلى اليسيؼ‪:‬‬
‫‪1  24‬‬
‫‪0  23‬‬
‫‪0  22‬‬
‫‪1  21‬‬
‫‪0  20‬‬
‫وتكؽف قاعدة احتداب القيسة العذرية السؽا قة لهذ االرتباطات مؼ األعمى إلى األسفل‪:‬‬
‫‪(1 * 24) + (0 * 23) + (0 * 22) + (1 * 21) + (0 * 20) = 18‬‬

‫‪- 21 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫تمارين‪:‬‬
‫القيػ العذرة السؽا قة لمقيػ الثشائية التالية‪:‬‬ ‫احد‬
‫)‪10000000 ( 128‬‬
‫)‪10000010 ( 130‬‬
‫)‪10000011 ( 131‬‬
‫)‪11111111 ( 255‬‬
‫)‪11111110 ( 254‬‬

‫‪- 22 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .7‬البرامج الحاسهبية‬
‫حدابية ومشطقية‪ ،‬و لغ استخداـ إحدى لغات‬ ‫تجرم كتا ة البرامج الحاسؽبية عمى شكل تعميسات وتراكي‬
‫إلػى سالسػل مػؼ الرمػؽز الرقسيػة الثشائيػة ‪0,1‬‬ ‫البرمجة‪ ،‬مثل ‪ .C#‬وتجرم ترجسة هذ التعميسػات والتراكيػ‬
‫التي تعبر عؼ ترميز يفهسه الحاسؽب وتدعى لغة اآللة‪.‬‬
‫تتزػسؼ عسميػة البرمجػػة كتا ػة مجسؽعػة مػػؼ التعميسػات عمػػى نحوه متدمدوول‪ ،‬حيػث يجػػرم الحرػؽؿ عمػػى‬
‫الشتيجػػة السطمؽبػػة عشػػد تشفيػػذ التعميمووات المتدمدوومة ػػي الحاسػػؽب‪ .‬ويجػػرم تخ ػزيؼ الب ػرامج عمػػى القػػرص‬
‫وتحسيمها ي الذاكرة الرئيدية عشد بد تشفيذ البرنامج و لغ لمبد عسمية التشفيذ‪.‬‬ ‫الرم‬
‫تكػػؽف وحػػدة السعالجػػة السركزيػػة مدػػؤولة عػػؼ معالجػػة التعميسػػات المغػػة الثشائيػػة ‪ 0,1‬الشاتجػػة عػػؼ عسميػػة‬
‫ترجسة البرنامج‪ ،‬هذ التعميسات هي ما ندسيه لغة اآللة‪ .‬يجرم التشفيذ مؼ خالؿ‪:‬‬
‫‪ ‬نقػػل السعطيػػات ضػػسؼ وحػػدة السعالجػػة‪ :‬أم مػػؼ وحػػدة السعالجػػة إلػػى الػػذاكرة‪ ،‬أو مػػؼ الػػذاكرة إلػػى‬
‫وحدة السعالجة‪ ،‬أو مؼ وحدة السعالجة إلى الطر يات‬
‫‪ ‬تشفيذ العسميات الحدابية‬
‫‪ ‬تشفيذ العسميات السشطقية‬

‫كيف يعمل الحاسهب؟‬


‫إليغ مثاالً ي غاية البداطة‪:‬‬
‫سسي حاسػؽب ألنػه عسمػه األساسػي الحدػاب‪ :‬أريػد حدػاب مجسػؽع قػيػ متحػؽليؼ‪ ،‬يحؽيػاف أعػدا ‪ ،‬ووضػع‬
‫( َّ‬
‫الشاتج ي متحؽؿ الث)‬
‫‪C= A+B‬‬
‫ستكرس خانات اكرة لمستحؽالت ‪ A, B, C‬عمى التؽالي‪.‬‬
‫طريقة تشفيذ العسمية الحدابية التفريمية (معب اًر عشها بمغة رمزية ا نكميزية) هي كالتالي‪:‬‬
‫‪LOAD A, R1‬‬
‫‪LOAD B, R2‬‬
‫‪ADD R1,R2,R3‬‬
‫‪STORE R3,C‬‬
‫عمػ ػػه لمقيػ ػػاـ ػ ػػالسطمؽب (جسػ ػػع‬ ‫إنهػ ػػا عمي ػ ػاً مجسؽعػ ػػة تعميسػ ػػات (‪ )instruction‬تحػ ػػد لمحاسػ ػػؽب مايج ػ ػ‬
‫متحؽليؼ)‪ ،‬وهذا شرحها‪:‬‬
‫‪ .1‬اشحؼ (انقل) قيسة الستحؽؿ ‪ A‬مؼ الذاكرة إلى الدجل ‪R1‬‬
‫‪ .2‬اشحؼ (انقل) قيسة الستحؽؿ ‪ B‬مؼ الذاكرة إلى الدجل ‪R2‬‬

‫‪- 23 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .3‬اجسع قيسة الدجل ‪ R1‬و‪ R2‬وضع الشتيجة ي ‪R3‬‬


‫خزف قيسة الدجل ‪ R3‬ي خانة الذاكرة ‪C‬‬
‫‪ّ .4‬‬
‫األ هاف" لجسع عد يؼ)؟‬ ‫نعػ كل هذا لجسع عد يؼ (هذ هي طريقة الحاسؽب "أسطؽرة الذكا ي ع‬
‫ما ن ار عمياً ي اكرة الحاسؽب (قسشا ةخذ لقطة قبل التشفيذ) هؽ ما يمي‪:‬‬
‫الستحؽالت ‪ A, B, C‬كرسظ لها خانات الذاكرة العشاويؼ ‪ 10, 11, 12‬عمى التؽالي‪.‬‬
‫وتحتؽم عمى القيػ ‪ 0, 64, 128‬عمى التؽالي‪.‬‬
‫وتسثيمها الشعاـ الثشائي (عمى التؽالي)‪:‬‬

‫‪0000 0000 0000 0000 0000 0000 0100 0000‬‬


‫‪0000 0000 0000 0000 0000 0000 1000 0000‬‬
‫‪0000 0000 0000 0000 0000 0000 0000 0000‬‬

‫أما التعميسات األربع ةخذت الذكل الثشائي التالي‪:‬‬

‫‪1010 0000 0000 0000 0000 0000 0001 0100‬‬


‫‪1011 0000 0000 0000 0000 0000 0010 0100‬‬
‫‪0000 0000 0000 0000 0011 0010 0001 0010‬‬
‫‪1100 0000 0000 0000 0000 0000 0011 0101‬‬

‫‪- 24 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .8‬لغات البرمجة‬
‫هشػػاؾ نؽعػػاف مػػؼ المغػػات البرمجيػػة السدػػتخدمة ػػي الحؽاس ػ ‪ :‬المغػػات مشخفزػػة السدػػتؽى والمغػػات عاليػػة‬
‫السدتؽى‪.‬‬
‫(نس وحدة السعالجػة‪ ،‬نسػ الشؽاقػل وسػعتها‪... ،‬‬ ‫ترتب المغات البرمجية مشخفزة السدتؽى العتا الرم‬
‫ػتخدـ رمػػؽ اًز تسثػػل عسميػػات الحاسػػؽب‪ ،‬ويتؽج ػ ترجسػػة كا ػػة الرمػػؽز‬ ‫جسػػع وتَدػ ِ‬
‫ِ‬
‫الس ّ‬
‫الػػع) وتػػدعى عػػا ًة بمغػػة ُ‬
‫جسػػع إلػػى لغػػة اآللػػة السسثمػػة بترميػػز خػػاص وسالسػػل شائيػػة (مؤلفػػة مػػؼ ‪ 0‬و‪ .)1‬تجػػرم‬ ‫ِ‬
‫الس ّ‬‫السكتؽبػػة بمغػػة ُ‬
‫الس َج ِسعات‪.‬‬
‫عسمية الترجسة استخداـ برامج خاصة تُدعى ُ‬
‫أم ػػا المغ ػػات البرمجي ػػة عالي ػػة السد ػػتؽى تك ػػؽف مد ػػتقمة ع ػػؼ العت ػػا الر ػػم ‪ ،‬حي ػػث تج ػػرم كتا ػػة البػ ػرامج‬
‫بتعميس ػػات وعب ػػارات مذ ػػابهة لمغ ػػة ا نكميزي ػػة‪ .‬وله ػػذ المغ ػػات ع ػػدة أص ػػشاؼ‪ :‬المغ ػػات ا جرائي ػػة‪ ،‬والمغ ػػات‬
‫ترجسػة كا ػة الشرػؽص السكتؽبػة بمغػة برمجػة عاليػة السدػتؽى‬ ‫الؽظيفية‪ ،‬والمغات غرضية التؽجػه‪ .‬ويتؽجػ‬
‫إلػػى لغػػة اآللػػة السسثمػػة دالسػػل شائيػػة (مؤلفػػة مػػؼ ‪ 0‬و‪ .)1‬تجػػرم عسميػػة الترجسػػة اسػػتخداـ بػرامج خاصػػة‬
‫السترجسات‪.‬‬
‫تُدعى ُ‬

‫‪- 25 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .9‬المغات البرمجية عالية المدتهى‪ :‬لمحة تاريخية‬


‫تزسؼ المغات البرمجية عالية السدتؽى تحقيق مجاؿ واسع مؼ السهاـ البرمجية السختمفة‪.‬‬
‫لقد جرى تطؽير العديد مؼ لغات البرمجة السختمفة عمى مػر الدػشيؼ بهػدؼ تمبيػة االحتياجػات الستغيػرة ػي‬
‫تقشيات السعمؽمات‪:‬‬
‫‪ ‬عاـ ‪ :1958‬لغة ‪Fortran‬‬
‫‪ ‬عاـ ‪ :1964‬لغة ‪BASIC‬‬
‫‪ ‬عاـ ‪ :1980‬لغة ‪ADA‬‬
‫‪ ‬عاـ ‪ :1971‬لغة ‪Pascal‬‬
‫‪ ‬عاـ ‪ :1972‬لغة ‪C‬‬
‫‪ ‬عاـ ‪ :1986‬لغة ‪C++‬‬
‫‪ ‬عاـ ‪ :1991‬لغة ‪Visual Basic‬‬
‫‪ ‬عاـ ‪ :1995‬لغة ‪Java‬‬
‫‪ ‬عاـ ‪ :2001‬لغة ‪C#‬‬
‫تزسؼ المغات البرمجية عالية السدتؽى تحقيق مجاؿ واسع مػؼ السهػاـ البرمجيػة السختمفػة‪ .‬بػالرغػ مػؼ أف‬
‫مععػ المغات البرمجية عالية السدتؽى قد صسسظ خريرا لسجاالت تطبيقية عامة‪ ،‬كمغة ‪ Fortran‬التي‬
‫خدمظ ػي تطبيقػات محػد ة التػي اسػتُ ِ‬
‫خدمظ ػي حػل السذػاكل الرياضػية‬ ‫صسسظ كمغػة عامػة‪ ،‬إال أنهػا اسػتُ ِ‬
‫ُ‬
‫والحدابية‪.‬‬
‫لقد جرى تطؽير العديد مؼ لغات البرمجة السختمفة عمى مػر الدػشيؼ بهػدؼ تمبيػة االحتياجػات الستغيػرة ػي‬
‫تقشيػػات السعمؽمػػات‪ .‬فػػي عػػاـ ‪ 1964‬قػػاـ كػػل مػػؼ ‪ John Kemeny‬و‪ Thomas Kurtz‬مػػؼ جامعػػة‬
‫‪ Dartmouth‬بتط ػػؽير لغ ػػة ‪ BASIC‬السؽجه ػػة لكا ػػة األغػ ػراض‪ .‬و ػػي عػ ػاـ ‪ 1980‬ط ػػؽرت و ازرة ال ػػد اع‬
‫األميريكية لغة ‪ ADA‬وهي لغة خاصة ببرمجػة الحؽاسػ ‪ ،‬وتزػسشظ هػذ المغػة إمكانيػات خاصػة بترػسيػ‬
‫‪ Niklaus‬لغ ػػة البرمج ػػة‬ ‫أنعس ػػة اعي ػػة لتؽجي ػػه الق ػػذائت العد ػػكرية‪ .‬و ػػي ع ػػاـ ‪ 1971‬ابتك ػػر ‪Wirth‬‬
‫‪ ،Pascal‬وابتكػر ‪ Dennis Ritchie‬عػاـ ‪ 1972‬لغػة البرمجػة ‪ C‬ػي مختبػرات شػركة ‪ Bell‬األميركيػػة‪.‬‬
‫وجػػرى تطػػؽير لغػػة ‪ C++‬اعتسػػا اً عمػػى لغػػة ‪ C‬ػػي مختبػرات ‪ Bell‬التا عػػة لذػػركة ‪ AT&T‬األميريكيػػة عػػاـ‬
‫‪ 1986‬وبات ػ ػػظ تعتب ػ ػػر واح ػ ػػدة م ػ ػػؼ أكث ػ ػػر المغ ػ ػػات البرمجي ػ ػػة ات التؽج ػ ػػه الغرض ػ ػػي اس ػ ػػتخداماً‪ .‬وط ػ ػػؽرت‬
‫‪ Microsoft‬عاـ ‪ 1991‬لغة ‪ Visual Basic‬التي تعػد قؽيػة ػي تطػؽير واجهػات برمجيػة تعسػل ػي بيئػة‬
‫نعػػػ ‪ .Windows‬وتبعتهػػا ػػي عػػاـ ‪ 1995‬شػػركة ‪ Sun Microsystems‬األميريكيػػة بتطؽيرهػػا لمغػػة‬
‫‪ Java‬التي تدعػ برمجيات االنترنيظ‪ ،‬سا ي لغ مايدعى ‪.Java Applets‬‬

‫‪- 26 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫و ي عاـ ‪ 2001‬أصدرت ‪ Microsoft‬لغة البرمجة ‪ C#‬لتكؽف المغة األساسية لها ي بشا التطبيقات ػي‬
‫القرف الحا م والعذريؼ‪ .‬وستكؽف هذ المغة هي أ اتشا ي تطبيق مبا ى البرمجة‪.‬‬

‫‪ .11‬المغات البرمجية عالية المدتهى‪ :‬المغات اإلجرائية (‪)1‬‬

‫‪- 27 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثال عن برنامج بمغة إجرائية هي لغة ‪FORTRAN‬‬

‫***‪C *** FORTRAN‬‬


‫‪integer I,J,K‬‬
‫'‪write(*,*) 'Good Day‬‬
‫‪I =1‬‬
‫‪K=0‬‬
‫‪if (I.EQ.10) goto 100‬‬
‫‪01 read(*,*) J‬‬
‫‪K=K+J‬‬
‫‪I=I+1‬‬
‫‪goto 10‬‬
‫‪011..continue‬‬

‫‪write(*,*) K‬‬
‫‪end‬‬

‫يعؽ أصل لغات البرمجة ا جرائية جسيعها إلى لغة ‪ FORTRAN‬والتي جرى تدؽيقها كمغة برمجة ألوؿ‬
‫مرة عاـ ‪ .1958‬وقد تخررظ المغة ي الحداب العمسي‪.‬‬
‫تعتسد لغات البرمجة ا جرائية عمى تقديػ العسل الذم يشفذ البرنامج إلى مجسؽعػة مػؼ األعساؿ‪/‬التعميسػات‬
‫التي ندعؽها إجرائيات‪ .‬أمػا التعميسػات عمػى األساسػية هػي عسميػة ا سػشا التػي‬ ‫الست ار طة ببعزها البع‬
‫تعبر عؼ نقل قيسة إلى الذاكرة‪ ،‬وتعميسات التحكػ سدار البرنامج (التعميسة الذرطية ‪ ،if‬والحمقة ‪ while‬أو‬
‫‪.)goto‬‬
‫إ يسكؼ عمى سبيل السثاؿ تقدػيػ برنػامج يعبػر عػؼ آلػة حاسػبة دػيطة‪ ،‬إلػى مجسؽعػة إجرائيػات تسثػل كػل‬
‫مشهػػا عسميػػة حدػػابية محػػد ة (جسػػع‪ ،‬طػػرح‪ ،‬ضػػرب‪ ،‬قدػػسة)‪ .‬وخػػالؿ تشفيػػذ العسميػػة الحدػػابية‪ ،‬يجػػرم إسػػشا‬
‫عبر عػؼ أمػاكؼ ػي الػذاكرة يجػرم تخػزيؼ‬ ‫القيػ السطمؽب تشفيذ العسمية عميها إلى رمؽز ندعؽها متحؽالت وتُ ِّ‬
‫عبر عؼ حجػ الذاكرة السحجؽزة لهذ القيػ (نس عد صحيذ‪ ،‬أو نسػ‬ ‫القيػ يها وتكؽف لها أنسا محد ة تُ ِّ‬
‫عػػد حقيقػػي‪ ،‬أو سمدػػمة محػػارؼ‪ ... ،‬الػػع)‪ ،‬ولتكػرار تشفيػػذ مجسؽعػػة مػػؼ التعميسػػات يسكػػؼ اسػػتخداـ الحمقػػة‬
‫معتسديؼ عمى تعميسة ‪ if‬و‪ goto‬كسا ػي السثػاؿ الدػابق‪ .‬يقػؽـ السثػاؿ حدػاب مجسػؽع عذػرة أعػدا يػدخمها‬
‫السدتخدـ‪.‬‬

‫‪- 28 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .11‬المغات البرمجية عالية المدتهى‪ :‬المغات اإلجرائية (‪)2‬‬


‫تتمخب السكؽنات األساسية لسععػ المغات ا جرائية سا يمي‪:‬‬
‫‪ ‬التعميسات‬
‫السعر ات‬
‫‪ ‬أنسا السعطيات و ّ‬
‫‪ ‬العسميات‬
‫‪ ‬الدخل والخرج‬
‫‪ ‬التؽا ع وا جرائيات‬

‫التعميمات‪:‬‬
‫لمغػ ػػات البرمجيػ ػػة معجػ ػػػ محػ ػػد مػ ػػؼ الكمسػ ػػات والتعميسػ ػػات الخاصػ ػػة‪ ،‬كمسػ ػػات مثػ ػػل ‪ Main‬أو‪Program‬‬
‫وتعميسات مثل …‪.if, while, for‬‬

‫أنماط المعطيات‪:‬‬
‫تعبر أنسا السعطيات عؼ أنؽاع السعطيات التي نتعامل معهػا (عد يػة‪ ،‬حر يػة‪ ،‬مشطقيػة‪ )...‬ويػرتب الػشس‬
‫حجػػػ محػػد مػػؼ خانػػات الػػذاكرة‪ ،‬شس ‪/‬أنسػػا األعػػدا الرػػحيحة ‪ Integer‬عمػػى سػػبيل السثػػاؿ‪ ،‬تةحػػذ ‪16‬‬
‫بػػظ أو ‪ 32‬بػػظ‪ .‬أم هػػذ هػػي مدػػاحة الػػذاكرة السخررػػة لتخػزيؼ عػػد صػػحيذ‪ .‬نػػدعؽ األنسػػا األساسػػية‬
‫(أع ػ ػ ػػدا ص ػ ػ ػػحيحة‪ ،‬أع ػ ػ ػػدا حقيقي ػ ػ ػػة‪ ،‬مح ػ ػ ػػارؼ‪ ،‬ق ػ ػ ػػيػ مشطقي ػ ػ ػػة) األنس ػ ػ ػػا البد ػ ػ ػػيطة‪ ،‬ػ ػ ػػي ح ػ ػ ػػيؼ ن ػ ػ ػػدعؽ‬
‫السركبة‪.‬‬
‫السرفؽ ات‪/‬الجداوؿ وسالسل السحارؼ األنسا ُ‬

‫العمميات‪:‬‬
‫تؽجػػد‪ ،‬ا ضػػا ة إلػػى التعميسػػات‪ ،‬رمػػؽز أخػػرى تػػدعى العسميػػات يػػتػ اسػػتخدامها ل شػػارة إمػػا إلػػى عسميػػة‬
‫حدابية ‪ ،+,-*,/‬أو إلى عالقة مشطقية ‪.and, or, not‬‬

‫‪- 29 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الدخل والخرج‪:‬‬
‫يتػ تشفيذ عسمية الدخل استخداـ تعميسػات محػد ة مثػل ‪ ،READ, INPUT‬كسػا يجػرم تشفيػذ عسميػة الخػرج‬
‫استخداـ تعميسات محد ة مثل ‪ WRITE‬أو ‪.PRINT‬‬
‫السبػرمج بتعريػ‬
‫خدـ ػي إ خػاؿ السعطيػات هػؽ لؽحػة السفػاتيذ‪ ،‬إال إ ا قػاـ ُ‬ ‫يكؽف الؽسي اال تراضي ُ‬
‫السدتَ َ‬
‫خدـ ي إخراج السعطيات‪ ،‬غالباً ما يكؽف شاشة الحاسؽب ما لػ‬ ‫السدتَ َ‬
‫وسي آخر‪ .‬أما الؽسي اال تراضي ُ‬
‫يقػ السبرمج بتعري وسي آخر‪.‬‬

‫اإلجرائيات والمكتبات‪:‬‬
‫تتكؽف ا جرائية مؼ سمدػمة مػؼ التعميسػات التػي تُع ّػد جػز اً مػؼ البرنػامج‪ ،‬لكشهػا تكػؽف مدػتقمة عػؼ الدمدػمة‬
‫الرئيدػػية لتعميسػػات البرنػػامج التػػي يجػػرم تشفيػػذها‪ .‬ال تذػػكل ا جرائيػػة حػػد اتهػػا برنامج ػاً مدػػتقالً‪ ،‬ويجػػرم‬
‫استدعاؤها بؽساطة البرنامج الرئيدي حيؼ الحاجة لها ق ‪ .‬تستمغ كل لغة برمجة مجسؽعة مؼ ا جرائيات‬
‫عر ة ُمدبقاً ضسؼ لؽائذ جاهزة ندعؽها مكتبات برمجية‪.‬‬
‫الس َّ‬
‫ُ‬

‫‪ .12‬المغات البرمجية عالية المدتهى‪ :‬المغات الهظيفية‬


‫عر ػة‬
‫الس َّ‬
‫تعتسد العسميات ي المغات الؽظيفية عمى تؽا ع رياضية ومشطقيػة وعمػى وجػؽ قػامؽس مػؼ التؽا ػع ُ‬
‫السبرمج‪.‬‬
‫ُمدبقاً وعمى آلية لبشا تؽا ع جديدة مؼ قبل ُ‬
‫إ تقؽـ لغة ‪ (List Processing) LISP‬مثالً وهػي إحػدى المغػات الؽظيفيػة‪ ،‬التعامػل مػع كا ػة عشاصػر‬
‫البرنامج عمى أنها جز مؼ سمدمة وتؽ ر التؽا ع الالزمة لسعالجة هذ الدالسل ومدحها‪.‬‬
‫عمػػى سػػبيل السثػػاؿ يجػػرم التعبيػػر عػػؼ عسميػػة عمػػى عػػد يؼ صػػحيحيؼ الذػػكل )‪ (op 2 3‬حيػػث يجػػرم‬
‫التعامػػل مػػع التعبيػػر الدػػابق عمػػى أنػػه سمدػػمة مػػؼ ‪ 3‬عشاص ػر‪ ،‬ويجػػرم تشسػػي ال ػرقسيؼ ‪ 2‬و‪ 3‬واعتبارهسػػا‬
‫نتيجػػة‬ ‫عػد يؼ صػحيحيؼ مباشػرًة‪ ،‬ويجػػرم التعامػل مػع أسػػ التػػا ع ‪ op‬عمػى أنػه رمػز خػػاص يسكػؼ تعريػ‬
‫تطبيقه عمى عد يؼ صحيحيؼ ي مكاف آخر‪.‬‬
‫عر ة ُمدبقاً مثػل عسميػة الجسػع عمػى عػد يؼ صػحيحيؼ مثػل ‪ 2‬و‪ 3‬الذػكل‬
‫كسا يسكؼ التعبير عؼ عسمية ُم ّ‬
‫)‪.(+ 23‬‬

‫‪- 30 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .13‬المغات البرمجية عالية المدتهى‪ :‬المغات المنطقية‬


‫جرى اشتقاؽ المغات السشطقية وعمػى أرسػها لغػة ‪ (PROgraming in LOGic) PROLOG‬مػؼ مفػاهيػ‬
‫الذكا الرشعي وتقشياته‪.‬‬
‫السبرمج عمى التفكير ةسػمؽب السشطػق الػذم يعتسػد عمػى االنطػالؽ مػؼ مجسؽعػة مػؼ‬
‫تجبر المغة السشطقية ُ‬
‫عر ػة‬
‫الس َّ‬
‫السقػدمات ُ‬
‫السقدمات لمؽصؽؿ إلى مجسؽعة مؼ الشتائج التي يسكؼ أف تُربذ بدورها مقدمات تُغشي ُ‬
‫ُمدبقاً‪.‬‬
‫و(س ػػق ار‬
‫السق ػػدمتيؼ‪( :‬ك ػػل إند ػػاف ػػاف)‪ُ ،‬‬
‫ُ‬ ‫اعتس ػػا اً عم ػػى ه ػػذا السب ػػدأ يسك ػػؼ اس ػػتخداـ لغ ػػة مشطقي ػػة تعريػ ػ‬
‫إنداف)‪ ،‬ويسكؼ اعتسا اً عمػى برنػامج معتسػد عمػى االسػتدالؿ السشطقػي خػاص التشفيػذ‪ ،‬اسػتخالص الشتيجػة‬
‫اف)‪ ،‬حيث يسكؼ إضا ة الشتيجة إلى السقدمات غشائها‪.‬‬ ‫وهي (سق ار‬
‫ندعؽ البرنامج الذم يدتخمب الشتائج مؼ السقدمات بمحرك استدالل‪.‬‬

‫‪ .14‬المغات البرمجية عالية المدتهى‪ :‬المغات الغرضية التهجه‬


‫تعتسد البرمجة الغرضية التؽجه عمى أساس بشا الشعػاـ البرمجػي عمػى شػكل مجسؽعػة مػؼ األغػراض التػي‬
‫تتؽاصل يسا بيشها مؼ خالؿ رسائل اعتسا اً عمى تؽا ع و جرائيات مرتبطة األغراض ندعؽها الطرائق‪.‬‬
‫يكا ئ مفهؽـ الغرض ي الترسيػ الغرضي التؽجه مفهػؽـ المتحوهل ػي المغػة ا جرائيػة العا يػة‪ ،‬ػي حػيؼ‬
‫مفهؽـ الرف ػي المغػة الغرضػية التؽجػه‪ ،‬ور الونمط ػي المغػة ا جرائيػة (غالبػاً يكػا ئ نسػ م َّ‬
‫ركػ‬ ‫يمع‬
‫ُ‬
‫مثل التدجيمة)‪.‬‬
‫تُعتبر لغات مثل ‪ C# ،Java ،C++‬مؼ أشهر المغات الغرضية التؽجه‪.‬‬

‫‪- 31 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .15‬المترجمات‬
‫يدعى البرنامج الذم يقؽـ السبرمج كتابته إحػدى المغػات البرمجيػة‪ ،‬إسػػ البرنوامج المرودر أو البرنػامج‬
‫األصػػمي‪ .‬ولكػػي يػػتسكؼ الحاسػػؽب مػػؼ تشفيػػذ البرنػػامج‪ ،‬يشبغػػي عمػػى السبػػرمج أف يقػػؽـ بترجسػػة البرنػػامج إلػػى‬
‫لغة اآللة وبشا برنامج تنفيذ مكا ئ لمبرنامج السردرم‪.‬‬

‫تجػػرم عسميػػة الترجسػػة بؽسػػاطة ُمتووورجم خػػاص بمغػػة البرمجػػة ُ‬


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

‫‪- 32 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .16‬أسئمة‬
‫أوالً‪ -‬حد المغات ا جرائية مؼ بيؼ المغات التالية‪:‬‬
‫‪C++ )a‬‬
‫‪Pascal )b‬‬
‫‪COBOL )c‬‬
‫‪Java )d‬‬
‫‪C# )e‬‬

‫انياً‪ -‬حد المغات الغرضية التؽجه مؼ بيؼ المغات التالية‪:‬‬


‫‪C++ )a‬‬
‫‪Pascal )b‬‬
‫‪PROLOG )c‬‬
‫‪Java )d‬‬
‫‪LISP )e‬‬

‫مؼ بيؼ العشاصر التالية‪:‬‬ ‫الثاً‪ -‬حد العشرر الغري‬


‫‪ )a‬متحؽؿ‬
‫‪ )b‬غرض‬
‫‪ )c‬نس‬
‫‪ )d‬إجرائية‬
‫‪ )e‬مكتبة إجرائيات‬

‫ِ‬
‫فدػر )‪،(Interpreter‬‬
‫لسعشػى كمسػة ُم ّ‬ ‫السترجػ‪ ،‬وحاوؿ استخداـ ا نترنظ البحث عؼ تعري‬
‫عرؼ ُ‬
‫ار عاً‪ّ -‬‬
‫السفدرات‪.‬‬ ‫السفدر وأع مثاالً عؼ ع‬ ‫ؽ‬
‫ُ‬ ‫السترجػ و ُ‬
‫وحد الفر بيؼ ُ‬

‫‪- 33 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫خامداً‪ -‬حد التدمدل الزمشي التاريخي لعهؽر المغات التالية مؼ األقدـ إلى األحدث‪:‬‬
‫‪PASCAL ‬‬
‫‪FORTRAN ‬‬
‫‪C ‬‬
‫‪JAVA ‬‬
‫‪COBOL ‬‬
‫‪C# ‬‬

‫األجهبة‬
‫الجهاب‬ ‫الدؤال‬
‫‪ B‬و‪C‬‬ ‫أوالا‬
‫‪ A‬و‪D‬‬ ‫ثانيا‬
‫‪B‬‬ ‫ثالثا‬

‫‪- 34 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .17‬التطهير المنهجي لمبرمجيات‬


‫يسكششا الشعر إلى عل البرمجة عمى أنه محاولة تحؽيل الفعل ا نداني إلى عل آلي تشفذ اآللة‪.‬‬
‫جػػرى تطػػؽير مجػػاؿ واسػػع مػػؼ تقشيػػات التحميػػل والترػػسيػ البرمجيػػة التػػي سػػعظ إلػػى تسكػػيؼ السبػػرمجيؼ مػػؼ‬
‫التخطي لمكيفية التي ستعسل بها برامجهػ قبل البد البرمجة الفعمية‪.‬‬
‫تَتَّبػػع عسميػػة تطػػؽير نعػػاـ برمجػػي ػػي عرػرنا الحػػالي مشهجيػػة واضػػحة تعتسػػد بدايػ ًة عمػػى السعر ػػة والخب ػرة‬
‫التي يستمكها ا نداف عؼ السذكمة التي سشحمها استخداـ الشعاـ البرمجػي‪ ،‬وتدػعى ػي غايتهػا إلػى تحديػد‬
‫عمػػى هػػذا الشعػػاـ تشفيػػذها حتػػى يقػػدـ لشػػا حػالً لمسذػػكمة السطروحػػة‪ .‬لػػذا يسكششػػا‬ ‫األ عػػاؿ الدقيقػػة التػػي يتؽجػ‬
‫الشعر إلى عل البرمجة عمى أنه محاولة تحؽيل الفعل ا نداني إلى عل آلي تشفذ اآللة‪.‬‬
‫وحدسػػه التشعيسػػي الػػذم‬
‫السبػػرمج َ‬
‫تاريخيػاً‪ ،‬كانػػظ عسميػػة تطػػؽير البرمجيػػات تعتسػػد ػػي بػػداياتها عمػػى عاليػػة ُ‬
‫حل مشهجػي لهػا‪ .‬إال أف‬ ‫كاف يداعد ي وضع ترؽر واضذ لمسذكمة‪ ،‬و ي وضع الخطؽات الدقيقة لبشا ّ‬
‫ّ‬
‫الحػػدس والتشعػػيػ الذخرػػي مالبثػػظ أف تحؽلػػظ إلػػى آليػػات مشهجيػػة‬ ‫هػػذ األ عػػاؿ التػػي كانػػظ تعتسػػد عمػػى َ‬
‫محد ة وجرى تطؽير مجاؿ واسع مؼ تقشيات التحميل والترسيػ البرمجية التي سعظ إلى تسكيؼ السبرمجيؼ‬
‫مؼ التخطي لمكيفية التي ستعسل بها برامجهػ قبل البد البرمجة الفعمية‪.‬‬
‫عسؽماً‪ ،‬تسر عسمية تطؽير نعاـ برمجي عدة مراحل أهسها‪:‬‬
‫‪ .1‬هػ احتياجات السدتخدـ بدقة ووضؽح‪.‬‬
‫‪ .2‬كتا ة وصت الشعاـ البرمجي السطمؽب (أم تؽصيفه)‪ .‬حيث يجرم وضع التؽصيت ي مرحمة‬
‫تعاوناً و يقاً بيؼ محممي الشعاـ مؼ جهة ومدتخدميه مؼ جهة أخرى‪.‬‬ ‫تحميل الشعاـ ويتطم‬
‫يتزسؼ التؽصيت شرحاً لكا ة عسميات السعالجة التي يشفذها الشعاـ سا يها‪:‬‬
‫الدخل‬ ‫‪ ‬تعري‬
‫الخرج‬ ‫‪ ‬تعري‬
‫‪ ‬الؽصت التفريمي لمسمفات التي يحتاجها الشعاـ‪ ،‬وبشيتها‪ ،‬واأل وات‪ ،‬والؽسائ التي ستُدتخدـ‬
‫لتخزيشها‬
‫‪ ‬الؽصت التفريمي لمتقارير‪ ،‬والجداوؿ‪ ،‬والسخططات التي سيجرم وضعها‬
‫‪ .3‬استخداـ أ وات الترسيػ والتحميل‪ ،‬سا ي لغ السخططات التد قية وغيرها والتي تبيؼ تد ق‬
‫األمؽر‬ ‫التشبه خالؿ هذ السرحمة إلى ع‬ ‫السعطيات والعالقات الستبا لة ي البرنامج‪ .‬يج‬
‫الهامة التي يشبغي أخذها عيؼ االعتبار‪:‬‬
‫‪ ‬شكل واجهة السدتخدـ‬
‫‪ ‬ندق ممفات السعطيات‬

‫‪- 35 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ ‬إمكانيػػة تقدػػيػ البرنػػامج إلػػى إجرائيػػات وواحػػدات‪ ،‬و مكانيػػة تؽزيػػع العسػػل عمػػى أعزػػا ريػػق‬
‫البرمجة‬
‫‪ .4‬كتا ة تعميسات و جرائيات الشعاـ‪.‬‬
‫‪ .5‬اختبار جسيع مكؽنات وواجهات الشعاـ‪ ،‬قبل وضعه ي حيز التشفيذ الكامل بهدؼ التحقق مؼ‬
‫نجاحه وعسمه الذكل السطمؽب‪.‬‬
‫الشعاـ‪ ،‬يتزسؼ السمفات التشفيذية وممحقاتها‪.‬‬ ‫‪ .6‬إنذا تطبيق خاص إعدا وتشري‬

‫‪ .18‬استراتيجيات وضع الحمهل البرمجية‬


‫حل برمجي‪:‬‬
‫تتزسؼ استراتيجية وضع ّ‬
‫‪ ‬التعرؼ عمى السذكمة وتةطيرها‬
‫السقتَرح‬
‫لمحل ُ‬
‫‪ ‬وضع ترسيػ ّ‬
‫الحل‬
‫‪ ‬تشفيذ مجسؽعة مؼ االختبارات عمى ّ‬
‫‪ ‬التؽ يق‬

‫التعرف عمى المذكمة وتأطيرها‪:‬‬


‫اال ت ارض ػػات الت ػػي يسك ػػؼ اس ػػتخدامها‬ ‫ه ػػذ السرحم ػػة هسػ ػاً ك ػػامالً لمسذ ػػكمة‪ ،‬حي ػػث يسك ػػؼ تعريػ ػ‬ ‫تتطمػ ػ‬
‫واال تراضات غير السسكشة‪ ،‬و لغ بهدؼ اختبار الحل عمى الشحؽ السالئػ‪ .‬عمى سبيل السثاؿ‪ ،‬عشػد كتابتشػا‬
‫لبرنػػامج حدػػاب الستؽسػ الحدػػابي لسجسؽعػػة مػػؼ األرقػػاـ تبػػدو السذػػكمة واضػػحة ندػػبياً حػػيؼ وضػػع عػ‬
‫اال تراضات عمى األرقاـ التي يشبغي إ خالها مثل‪:‬‬
‫‪ ‬تحديد نس األرقاـ (صحيحة‪ ،‬حقيقية)‬
‫السدتخدـ محر اً آخر (حرؼ ما)‬
‫‪ ‬ضرورة إظهار رسالة خطة ي حاؿ أ خل ُ‬
‫‪ ‬تحديد نؽع األرقاـ الرحيحة (سالبة‪ ،‬مؽجبة أـ مختمطة)‬
‫كامػل الفرضػيات عشػد‬ ‫لذا‪ ،‬ال بد مؼ القياـ بتحميل شامل لفهػ السذكمة تساماً حيث يسكؼ صياغة تعريػ‬
‫انتها التحميل‪ .‬وتتزسؼ الفرضيات‪ ،‬ا ضا ة لمحاالت التي كرناها ي مثالشا الدابق‪:‬‬
‫‪ ‬المغة البرمجية التي يشبغي استخدامها‬
‫معالجتها‬ ‫‪ ‬كسية السعطيات التي يتؽج‬

‫‪- 36 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

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

‫الحل‪:‬‬
‫تنفيذ مجمهعة من االختبارات عمى ّ‬
‫ويذ ػػسل اس ػػتخداـ معطي ػػات االختب ػػار لمتحق ػػق ي ػػدوياً م ػػؼ تعميس ػػات البرن ػػامج‪ ،‬حي ػػث يسك ػػؼ مقارن ػػة الشت ػػائج‬
‫الستؽقعة مشها مع الشتائج الفعمية التي يقؽـ البرنامج بتشفيذها‪.‬‬

‫التهثيق‪:‬‬
‫أف يتزسؼ تؽ يق البرنامج‪:‬‬ ‫يج‬
‫‪ ‬تؽصيت الشعاـ وتؽصيت الدخل والخرج‪ ،‬والخطؽ العريزة ألقدامه‬
‫‪ ‬ترسيػ البرنامج‪ ،‬سا ي لغ بشى السعطيات والخؽارزميات معب اًر عشهػا سخططػات أو بمغػة قريبػة‬
‫مؼ لغات البرمجة‬
‫‪ ‬البرنامج الشهائي التفريل‪ ،‬ويتزسؼ خطة االختبارات‪ ،‬وسجالت االختبار‬
‫ويعد التؽ يق أم اًر أساسياً لألسباب التالية‪:‬‬
‫عطا السدتخدـ كرة عؼ كيفية إعدا معطيات البرنامج وطريقة تفدير الخرج‬ ‫‪‬‬
‫‪ ‬لتدهيل عسمية صيانة البرنامج‬
‫‪ ‬لتدهيل التعديالت السدتقبمية التي تهدؼ إلى تطؽير البرنامج‬

‫‪- 37 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .19‬المخططات التدفقية‬
‫تُعتََبػػر السخططػػات التد قيػػة إحػػدى أ وات الترػػسيػ السرئػػي لألنعسػػة البرمجيػػة وخرؽص ػاً الرػػغير مشهػػا‪.‬‬
‫خدـ السخططات التد قية رمؽ اًز خاصة بها ندتعرضها يسا يمي‪:‬‬ ‫وتُدتَ ِ‬

‫‪- 38 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثال ‪:1‬‬
‫صسػ السخط التد قي الذم يسثل برنامجاً يداعد ي حداب مجسؽع األعدا مؼ ‪ 1‬إلى ‪.50‬‬
‫الحل‪:‬‬
‫ّ‬

‫مثال ‪:2‬‬
‫صسػ السخط التد قي الذم يسثل برنامجػاً يدػاعد ػي إيجػا العػد األكبػر مػؼ بػيؼ ال ػة أعػدا ‪A, B, C‬‬
‫يدخمها الس ِ‬
‫دتخدـ‪.‬‬ ‫ُ‬ ‫ُ‬
‫الحل‪:‬‬
‫ّ‬

‫‪- 39 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثال ‪:3‬‬
‫صػػسػ السخطػ التػػد قي الػػذم يسثػػل برنامجػاً يدػػاعد ػػي حدػػاب !‪ N( N‬عػػاممي) حيػػث ‪ N‬هػػؽ عػػد ُيدخمػػه‬
‫الس ِ‬
‫دتخدـ‪.‬‬ ‫ُ‬
‫)‪(N! = N * (N-1) * (N-2) * (N-3) * … * 3 * 2 * 1‬‬
‫الحل‪:‬‬
‫ّ‬

‫‪- 40 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

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

‫الخهارزمية‪:‬‬
‫يتػ حل أم مدةلة برمجية مؼ خالؿ تشفيذ سمدمة من األفعال وفق ترتيب معين‪ ،‬إنها خطة الحل‪ ،‬ونطمق‬
‫عميها تدسية الخؽارزمية ‪ ،Algorithm‬وتتزسؼ خطؽات حل مدةلة عبر تحديد‪:‬‬
‫‪ .1‬األفعال الهاجب تنفيذها‪.‬‬
‫إتباعه مؼ أجل تشفيذ األ عاؿ الدا قة‪.‬‬ ‫‪ .2‬الترتيب الؽاج‬
‫أف تكؽف األفعال وترتيب التشفيذ مؽصفاً عمى وجه ال يدعه إلى المبس أو التأويل‪.‬‬ ‫يج‬

‫خهارزميات عامة (إنجاز عمل ما)‬


‫‪ ‬مثاؿ ‪ :1‬خؽارزمية تذغيل برنامج حاسؽبي‪:‬‬
‫‪ .1‬اضغ عمى زر التذغيل‪.‬‬
‫‪ .2‬انتعر ظهؽر شاشة االستقباؿ‪.‬‬
‫عرؼ عؼ نفدغ‪ :‬أ خل إسػ حدا غ وكمسة مرورؾ‪.‬‬ ‫‪ .3‬إ ا كاف مؼ الزرورم أف تُ ِّ‬
‫‪ .4‬ا حث عؼ أيقؽنة البرنامج الذم تريد تذغيمه وانقر عميها نقرتيؼ الفةرة‪.‬‬
‫الحػػاالت‪ :‬شاشػػة االسػػتقباؿ قػػد تكػػؽف الذاشػػة‬ ‫(الح ػ هشػػا أف األ عػػاؿ قػػد تكػػؽف ممتبدوووة حد ػ‬
‫البياني ػػة‪ :‬أيقؽن ػػات ونؽا ػػذ‪ ،....‬وق ػػد تك ػػؽف الذاش ػػة الد ػػؽ ا ‪ :‬نر ػػية قػ ػ ‪ ،‬وبالت ػػالي خؽارزميتش ػػا ال‬
‫تغطػػي جسيػػع الحػػاالت!! ولكشهػػا تشفػػذ السطمػػؽب أم تذػػغيل برنػػامج حاسػػؽبي‪ ،‬ػػي الحالػػة األكثػػر‬
‫شيؽعاً)‪.‬‬

‫‪ ‬مثاؿ ‪ :2‬خؽارزمية تحزير بيزة مقمية‪:‬‬


‫‪ .1‬ضع الؽعا عمى الشار‪.‬‬
‫‪ .2‬أضت مقدار نرت ممعقة صغيرة مؼ الزبدة‪.‬‬
‫‪ .3‬انتعر وباف الزبدة‪.‬‬
‫‪ .4‬اكدر البيزة وضع محتؽاها ضسؼ الؽعا ‪.‬‬

‫‪- 41 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .5‬انتعر حتى تشزج البيزة‪.‬‬


‫الخط ػؽات يغيػػر ػػي إنجػػاز العسػػل السطمػػؽب مػػؼ الخؽارزميػػة وقػػد يعطػػي نتػػائج‬ ‫(الح ػ أف ترتي ػ‬
‫قبػػل الزبػػدة‪ ،‬لسػػا حرػػمشا عمػػى‬ ‫خاطئػػة‪ ،‬مػػؽ وضػػعشا الخطػػؽة ‪ 4‬قبػػل الخطػػؽة ‪2‬ي أم وضػػع البػػي‬
‫"العجة" المذيذة!!)‪.‬‬

‫خهارزميات حاسهبية‬
‫هشػػا يكػػؽف التعبيػػر عػػؼ الخؽارزميػػة خطؽات‪/‬أ عػػاؿ محػػد ة ال لػػبس يػػه وقابمػػة لالنتقػػاؿ لبرنػػامج لمتشفيػػذ مػػؼ‬
‫قبل الحاسؽب‪.‬‬
‫مثاؿ‪ :‬خؽارزمية تحديد العد األكبر مؼ مجسؽعة أعدا ‪:‬‬
‫التؽصيت الدقيق‪ :‬مجسؽعة األعدا يدخمها السدتخدـ وتُ َّ‬
‫حد نهاية السجسؽعة قيسة خاصة ولتكؼ ‪.999‬‬
‫تحديد متحؽالت السدةلة‪( :‬كسا ي السدةلة الحدابية الرياضية حتى البديطة)‬
‫‪ K‬لمقيسة التي يدخمه السدتخدـ ‪ KMAX‬لقيسة العد األكبر‬
‫خطؽات (تعميسات) الخؽارزمية‪:‬‬
‫‪ .1‬أ خل العد األوؿ إلى الستحؽؿ ‪KMax‬‬
‫‪ .2‬أ خل العد التالي إلى الستحؽؿ ‪K‬‬
‫إلى الخطؽة ‪6‬‬ ‫‪ .3‬إ ا (‪ K‬تداوم ‪ )999‬ا ه‬
‫‪ .4‬إ ا ‪ K‬أكبر مؼ ‪ KMax‬أسشد ‪ K‬إلى ‪KMAX‬‬
‫إلى الخطؽة ‪2‬‬ ‫‪ .5‬ا ه‬
‫"قيسة العد األكبر"‪KMax ،‬‬ ‫‪ .6‬اكت‬
‫ك ػرة الحػػل هػػي كالتػػالي‪ ،‬تػػدخل العػػد األوؿ‪ ،‬تعتبػػر األكبػػر (‪ )1‬إلػػى أف يثبػػظ العكػػس‪ :‬أم تكػػرر إ خػػاؿ‬
‫ػدخل أكبػر‬
‫الس َ‬ ‫ف‬
‫ػدخل ‪ K‬مػع مػؼ اعتبرتػه األكبػر ‪ KMAX‬ػإف كػاف ُ‬
‫الس َ‬
‫أعدا السجسؽعة (‪ ،)2‬تقػار العشرػر ُ‬
‫تجعمه يحل مكاف مؼ اعتبرته األكبر )‪ ،(4‬وهكذا حتى نهاية السجسؽعة‪.‬‬

‫‪- 42 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .21‬لغة الخهارزميات )‪(pseudo code‬‬


‫لغػػة الخؽارزميػػات هػػي عبػػارة عػػؼ لغػػة مرػػطشعة سعشػػى أنهػػا لغػػة لمتعبيػػر عػػؼ الب ػرامج ولكشهػػا ليدػػظ لغػػة‬
‫برمج ػػة عمي ػػة‪ .‬تد ػػاعد السب ػػرمجيؼ عم ػػى التعبي ػػر ع ػػؼ الخؽارزمي ػػات‪ :‬خطػ ػؽات الح ػػل‪ ،‬ومد ػػار أو تدمد ػػل‬
‫تشفيذها‪.‬‬
‫سػػشقؽـ ػػي هػػذا الفرػػل عػػرض لغػػة خؽارزميػػات تفيػػدنا ػػي التعبيػػر ذػػكل "طبيعػػي" عػػؼ خطؽاتشػػا ومدػػارنا‬
‫لحل مدةلة بؽاسطة الحاسؽب‪.‬‬
‫تذبه لغة الخؽارزميات لغة تفكيرنا ي لغتشا الستداولة‪ ،‬هي لغة مبدػطة ومفهؽمػة‪ ،‬ولكػؼ مػؤطرة ومهيكمػة‪،‬‬
‫ستدهل لشا يسا عد االنتقاؿ إلى لغة برمجية عمية عالية السدتؽى‪.‬‬

‫معنى كممة ‪pseudo code‬‬


‫تدػػتخدـ كمسػػة ‪ code‬ػػي ا نكميزيػػة ػػي سػػياؽ عمػػؽـ الحاسػػؽب لمداللػػة عمػػى الترميػػز لمحاسػػؽب أو لكػػل مػػا‬
‫الترميػز) لمداللػة‬ ‫هؽ تعميسات لغات برمجة‪ ،‬ومؼ هشا استخداـ السرطمذ ‪( pseudo code‬شبه أو قريػ‬
‫أنها لغة قريبة أو شبيهة بمغات البرمجة‪.‬‬
‫ال يسكؼ تشفيذ البرامج السكتؽبة بمغة الخؽارزميات عمى الحاس ‪ ،‬لكشهػا تدػاعد السبػرمج كثيػ اًر عمػى التفكيػر‬
‫ببرنامجه قبل محاولة كتابته ةية لغة برمجة‪.‬‬

‫‪- 43 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .22‬التعميمات األساسية لمغة الخهارزميات )‪(pseudo code‬‬


‫يسكؼ التعبير عؼ خطؽات ومدار حل مدةلة بؽاسطة الحاسؽب أو تؽصػيت خؽارزميػة بؽاسػطة التعميسػات‬
‫الخسدة األساسية التالية‪:‬‬
‫‪ .1‬تعميسة الق ار ة أو إ خاؿ السعطيات‪.‬‬
‫‪ .2‬تعميسة الكتا ة أو إظهار الشتائج‪.‬‬
‫‪ .3‬تعميسة ا سشا أو وضع قيػ ي متحؽؿ‪.‬‬
‫‪ .4‬التعميسة الذرطية‪.‬‬
‫‪ .5‬التعميسة التك اررية‪.‬‬
‫الح أف هذ التعميسات هي تجريد ونعرة عالية السدتؽى لسا يسكؼ أف يقؽـ ه الحاسؽب‪ ،‬التعميسات ‪-1‬‬
‫و‪ -2‬هػػي لمػػدخل والخػػرج‪ .‬والتعميسػػة ‪ -3‬لمتعامػػل مػػع الستح ػؽالت أم خانػػات الػػذاكرة‪ .‬أمػػا التعميسػػات ‪-4‬‬
‫عسػػل الحاسػػؽب أف تشفيػػذ التعميسػػات هػػؽ ضػػسشياً‬ ‫و‪ -5‬هػي لمػػتحكػ سدػػار التشفيػػذ‪ ،‬وكسػػا عر شػػا مػػؼ مبػا‬
‫تدمدمي‪ ،‬إ ا أر نا تغيير تدمدل التشفيذ هاتاف التعميسيتاف هسا الؽسيمة‪.‬‬
‫سشذرح كل مؼ هذ التعميسات األساسية‪ ،‬لشدتؽع جيداً عسا تعبر عمياً ذكل قيق‪.‬‬
‫وسشدتخدـ كمسة متحهل وخانة ذاكرة لشفس الداللة‪ .‬و ي أمثمتشا األولى سيكؽف مععػ استخدامشا لستحؽالت‬
‫عد ية صحيحة (‪.)integer‬‬
‫‪ ،identifier‬نس ‪ ،type‬خانة اكرة يذػغمها ‪memory‬‬ ‫(يعرؼ المتحهل ‪ variable‬بثال ية‪ :‬اسػ تعري‬
‫َّ‬
‫‪.)allocation‬‬
‫ولشركػػز مع ػاً‪ ،‬ألػػيس رائع ػاً أف نػػدرؾ أنػػه يكفيشػػا ‪ 5‬تعميسػػات أساسػػية لمتعبيػػر عػػؼ أم حػػل لسدػػةلة بؽاسػػطة‬
‫الحاسؽب‪.‬‬

‫‪- 44 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .23‬تعميمة القراءة ‪read‬‬


‫هي إعطا قيسة مؼ الدخل (مؼ لؽحة السفاتيذ) لؽضعها ي خانة اكرة‪.‬‬

‫نعطي شكالً نعامياً لهذ التعميسة‪:‬‬


‫اق أر متحؽؿ أو متحؽالت‬

‫وهي عبارة عؼ أمر يقؽؿ خذ القيسة (القيػ) السؽجؽ ة ي الدخل وضعها ي خانة (خانات) اكرة الستحؽؿ‬
‫(الستحؽالت)‪.‬‬

‫أمثمة‪:‬‬
‫اق أر ‪N‬‬

‫ضع القيسة التي تُعطى مؼ الدخل ي خانة الذاكرة ‪N‬‬


‫اق أر ‪a, b, c‬‬

‫ضع القيػ التي تُعطى مؼ الدخل ي خانات الذاكرة ‪a, b, c‬‬


‫يجػ التشؽيػػه أف تشفيػذ الحاسػػؽب لتعميسػة القػ ار ة يكػػؽف انتعػار السدػػتخدـ حتػى يػػدخل قػيػ ويزػػغ مفتػػاح‬
‫ا خاؿ ‪.Enter‬‬

‫رسػ تؽضيحي لعسمية ق ار ة القيسة ‪.5‬‬

‫‪- 45 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .24‬تعميمة الكتابة ‪write‬‬


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

‫مؼ متحؽالت و ؽابظ وتؽا ع وعسميات‪ ،‬و ي‬ ‫والريغة أو التعبير (‪ :)formula, expression‬هي تركي‬
‫الحالة البديطة يكؽف التعبير متحؽالً ق أو ابتاً ق ‪.‬‬
‫إ ف تعميسة الكتا ة هي أمر يقؽؿ أظهر قيسة التعبير عمى وحدة الخػرج‪ .‬وكسػا ػي تعميسػة الػدخل يسكػؼ أف‬
‫مؼ تعميسة الكتا ة اظهار أكثر مؼ قيسة (عدة صيغ)‪.‬‬ ‫نطم‬

‫أمثمة‪:‬‬
‫‪ ‬متحؽالت‬
‫‪N‬‬ ‫اكت‬

‫أظهر القيسة السؽجؽ ة ي خانة الذاكرة ‪ N‬عمى الخرج‪.‬‬


‫ؽابظ‬ ‫‪‬‬

‫‪20‬‬ ‫اكت‬

‫ستعهر القيسة ‪ 20‬عمى الخرج‪.‬‬


‫‪ ‬تؽا ع‬
‫)‪Cos(0‬‬ ‫اكت‬

‫ستعهر القيسة ‪ 1‬عمى الخرج‪.‬‬


‫‪ ‬عسميات‬
‫‪N*2‬‬ ‫اكت‬

‫قيسة التعبير ‪ N*2‬وأظهرها عمى الخرج‪.‬‬ ‫احد‬


‫إف كانظ ‪ N‬تداوم ‪ 6‬ديعهر عمى الخرج القيسة ‪.12‬‬
‫نزيت إمكانية هامة لتعميسة الكتا ة هي كتا ة نب أو سمدمة حر ية‪.‬‬
‫“‪”Programming is going well‬‬ ‫اكت‬

‫‪- 46 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫يعهر الشب كسا هؽ تساماً عمى الخرج ‪Programming is going well‬‬


‫(الحروؼ الكبيرة والرغيرة والفراغات تعهر كسا هي محد ة بيؼ عالمتي التشريب)‬
‫وكي نختػ عػؼ حػاالت تعميسػة الكتا ػة‪ :‬يسكػؼ أف نػدع تعميسػة الكتا ػة تعهػر حسيػع الحػاالت الدػا قة بػشفس‬
‫التعميسة‪ ،‬ق أ رل بيؼ األشيا التي أريد كتابتها فاصمة‪،‬‬
‫‪a, b, c‬‬ ‫اكت‬

‫أظهر القيػ السؽجؽ ة ي خانات الذاكرة ‪a, b, c‬‬


‫‪“The result is “ , 2*N‬‬ ‫اكت‬

‫و ي حالة ‪ N‬تسمغ القيسة ‪.6‬‬


‫ُستعهر تعميسة الكتا ة ما يمي‪:‬‬
‫‪The result is 12‬‬

‫‪- 47 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .25‬تعميمة اإلسناد‬
‫وهي إسشا قيسة صيغة لستحؽؿ (لخانة اكرة)‬
‫نعطي شكالً نعامياً لهذ التعميسة‪:‬‬

‫صيغة أو تعبير ← متحؽؿ‬

‫أمثمة‪:‬‬
‫مثاؿ ‪:1‬‬
‫لديشا ي خانتي الذاكرة ‪ t, i‬القيػ الخزنة (‪.)t = 10, i=25‬‬
‫عشد تشفيذ تعميسة ا سشا التالية‪:‬‬

‫‪i←t‬‬
‫تربذ ي الخانة ‪ i‬القيسة ‪10‬أيزاً‪ .‬أو نقؽؿ أف الستحؽؿ ‪ t‬يداوم ‪.10‬‬
‫وبتشفيذ ا سشا ‪:‬‬

‫‪i ← i + 4*t‬‬
‫تربذ قيسة ‪ i‬تداوم ‪.50‬‬

‫مثاؿ ‪:2‬‬
‫حداب قيسة التا ع‪ y = x2 - 16 :‬ي حالة ‪ ،x=4‬نكت ‪:‬‬

‫‪x←4‬‬

‫‪y ← x2 - 16‬‬
‫ما هي قيسة الستحؽؿ ‪ y‬بهذا ا سشا ؟‬

‫‪- 48 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثاؿ ‪:3‬‬
‫مجسؽعة العبارات أو التعميسات التي تدسذ حداب التا ع ‪ y=x3-9‬و ظهار الشتيجة مؼ أجل قػيػ ‪x‬‬ ‫اكت‬
‫يجرم إ خالها‪.‬‬

‫إق أر ‪x‬‬

‫‪y ← x2-9‬‬

‫‪y‬‬ ‫اكت‬

‫و ا أر نا إظهار الشتيجة عمى نحؽ معبر أكثر‪ ،‬ندتبدؿ تعميسة الكتا ة‪ ،‬التعميسة التالية‪:‬‬

‫‪”x=”, x ,” y=”, y‬‬ ‫اكت‬


‫ما هؽ شكل ا ظهار مؼ أجل قيسة الدخل ‪3‬؟‬

‫‪- 49 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .26‬التعميمة الذرطية‬
‫و يها تتحد التعميسات التالية ي التشفيذ بشا ً عمى اختبار شر ‪.‬‬
‫وتر ةحد الذكميؼ التالييؼ‪:‬‬
‫‪ .1‬التعميسة الذرطية البديطة أو التشفيذ ذر ‪if‬‬
‫‪ .2‬التعميسة الذرطية االختيارية أو التشفيذ اختيار بيؼ مداريؼ و قاً لمذر ‪if else‬‬

‫التعميمة الذرطية البديطة ‪if‬‬


‫نعطي شكالً نعامياً لهذ التعميسة‪:‬‬

‫و ي هذ التعميسة يجرم اختبار الذر إف محققاً (صحيحاً) تُ َّشفذ مجسؽعػة التعميسػات‪ ( .‬ػالطبع يسكػؼ أف‬
‫تقترر مجسؽعة التعميسات عمى تعميسة واحدة كسا ي أمثمتشا السبدطة)‪.‬‬
‫و ف لػ يكؼ الذر محققاً ما الذم يجرم برأيغ؟‬
‫الج ػؽاب‪ :‬ػػالطبع لػػؼ َّ‬
‫تشفػػذ مجسؽعػػة التعميسػػات‪ ،‬وسػػيشتقل التشفيػػذ إلػػى التعميسػػة التاليػػة‪ ،‬عػػد كامػػل التعميسػػة‬
‫الذرطية‪ .‬ألػ نقل أف تشفيذ التعميسات هؽ ضسشياً تدمدمي‪.‬‬
‫ما معنى شرط؟‬
‫الذػػر هػػؽ السعشػػى السػػةلؽؼ لػػديغ‪ ،‬أم أمػػر يسكػػؼ البػػظ ذػػةنه‪ :‬محقػػق أو غيػػر محقػػق (نعػػػ أو ال) (صػػذ‬
‫‪ true‬أو خطة ‪.)false‬‬

‫‪- 50 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫التالي‪:‬‬ ‫ويسكؼ أف نعطي الذر ‪ condition‬التعري‬


‫أم صيغة تُقيَّػ برح أو خطأ‪ ،‬وهي غالباً تتزسؼ السقارنة (التراجذ أو السداواة) ‪ :‬أكبر‪ ،‬أصغر‪ ،‬يداوم‪.‬‬
‫كسا يسكؼ أف تتزسؼ أ وات التركي (العطت) السشطقي‪( :‬و‪ ،and :‬أو‪ ،or :‬ال‪.)not :‬‬

‫أمثمة‪:‬‬
‫مثاؿ ‪:1‬‬

‫إذا ( ‪ )N > 0‬نِّفذ‬

‫بداية‬

‫‪a ← s/N‬‬

‫نهاية‬
‫نريد مؼ هذ التعميسة هشا أف نقدػ عمى قيسة الستحؽؿ ‪ N‬ذر أف تكؽف ‪ N‬أكبر مؼ الرفر‪.‬‬
‫وبتعبير آخر‪ :‬إ ا كانظ ‪ N‬أكبر مؼ الرفر‪ ،‬عشدها نِّفذ تعميسة ا سشا لمتعبير ‪ s/N‬إلى الستحؽؿ ‪.a‬‬

‫مثاؿ ‪:2‬‬
‫نريد إ خاؿ (ق ار ة) عالمة ما ة ونريد كتابتها ق إ ا كانظ ي السجاؿ مؼ ‪ 0‬إلى ‪.100‬‬
‫ليكؼ ‪ x‬الستحؽؿ الذم نكرسه لمعالمة‪.‬‬

‫اق أر ‪x‬‬

‫إذا ( ‪ x ≥ 0‬و ‪ ) x ≤100‬ن ّفذ‬

‫بداية‬
‫اكتب ‪x‬‬

‫نهاية‬

‫‪- 51 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫التعميمة الذرطية االختيارية ‪if else‬‬

‫ي هذ التعميسة يجرم االختيار بيؼ مدارم تشفيػذ‪ :‬إمػا تشفيػذ مجسؽعػة تعميسػات ‪ 1-‬ػي حػاؿ كػاف الذػر‬
‫محققاً (صحيحاً) أو تشفيذ مجسؽعة تعميسات ‪ 2-‬ي الحالة السعاكدة‪.‬‬

‫مثاؿ ‪:1‬‬

‫نريػػد مػػؼ هػػذ التعميسػػة هشػػا أف تقدػػػ عمػػى قيسػػة الستحػػؽؿ ‪ N‬ذػػر أف تكػػؽف ‪ N‬ال تدػػاوم الرػػفر‪ ،‬و ال‬
‫نعهر عبارة تدؿ عمى الخطة‪.‬‬

‫‪- 52 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثاؿ ‪:2‬‬
‫إليغ هذا السثاؿ السشتهي البداطة‪ ،‬ولكشه سيعمسشا‪ ،‬أمؽر عديدة‪ :‬نريد قػ ار ة عػد يؼ‪ ،‬وكتا ػة السقارنػة بيشهسػا‬
‫(أكبر‪ ،‬أصغر‪ ،‬يداوم)‪.‬‬
‫أمثمة عؼ التشفيذ‪:‬‬
‫خل ‪ 3‬و‪ 10‬خرج ‪10 > 3‬‬
‫خل ‪ 15‬و‪ 10‬خرج ‪10 < 15‬‬
‫خل ‪ 10‬و‪ 10‬خرج ‪10=10‬‬
‫الخؽارزمية‪:‬‬

‫إف مػػا كتبشػػا هشػػا هػػؽ شػػكل مهيكػػل ومػػؤطر لسػػا تفكػػر ػػه ذ ػ ػػكل طبيعػػي‪ :‬إمػػا العػػد األوؿ (‪ )a‬أكبػػر مػػؼ‬
‫الثاني (‪ )b‬و ال هؽ أصغر مشه أو يداويه‪ ،‬إ ا كاف أصغر كتبشا لغ و ال هؽ حتساً يداويه‪.‬‬
‫الحػ ػ هش ػػا ت ػػداخل التعميس ػػات ػػي مد ػػتؽيات أو هياك ػػل‪ .‬التعميس ػػات الت ػػي تشف ػػذ اخ ػػل التعميس ػػة الذ ػػرطية‬
‫االختيارية هي بدورها تعميسة شػرطية‪ ،‬وهػذ بػدورها يسكػؼ أف تةخػذ أم تعميسػة سػا يهػا التعميسػة الذػرطية‪.‬‬
‫بهذا يسكششا أف نبػدأ ا راؾ أف هػذ البشػى أو التعميسػات الخؽارزميػة األساسػية يسكشهػا أف تجعمشػا نعبػر عػؼ‬
‫حمؽلشا (مهسا كانظ متذعبة) بتسييز الحاالت السختمفة عمى نحؽ مهيكل ومؤطر‪.‬‬

‫تنهيه هام‪:‬‬
‫تدػػسى التعميسػػة الذػػرطية أيزػاُ‪ ،‬بتعميسػػة التفريووع‪ .‬ألف مدػػار الػػتحكػ ػػي تشفيػػذ البرنػػامج يتفػػرع عشػػدها إلػػى‬
‫االختيار بيؼ مداريؼ و قاً لذر ‪.‬‬

‫‪- 53 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .27‬التعميمة التكرارية ‪while‬‬


‫تدتعسل لتكرار تشفيذ مجسؽعػة مػؼ التعميسػات‪ ،‬يػرتب هػذا التكػرار بتحقػق شػر ‪ ،‬إ يختبػر الذػر ػإف كػاف‬
‫الذر محققاً (صحيحاً) تشفذ مجسؽعة التعميسات ويكرر تشفيذ هذ التعميسات ما اـ الذر محققاً‪.‬‬
‫نعطي شكالً نعامياً لهذ التعميسة‪:‬‬

‫كرر‬
‫مادام ( شر ) ّ‬
‫بداية‬
‫مجسؽعة تعميسات‬
‫نهاية‬

‫تدسى هذ التعميسة أيزاً‪ ،‬مػؼ بػيؼ بشػى الػتحكػ ‪ ،control structure‬الحمقػة التك ارريػة‪ .‬إ أنػه ػي حػاؿ‬
‫تحقػػق الذػػر تشفػػذ مجسؽعػػة التعميسػػات‪ ،‬ليعػػؽ التشفيػػذ إلػػى اختبػػار الذػػر مػػؼ جديػػد‪ ،‬لتشفػػذ التعميسػػات مػػؼ‬
‫جديػػد مػػا اـ الذػػر محقق ػاً‪ .‬وتبقػػى هػػذ الحمقػػة أو التك ػرار مدػػتس اًر ػػي تشفيػػذ مجسؽعػػة التعميسػػات واختبػػار‬
‫الذر ‪ ،‬حتى يربذ الذر غير محقق‪ ،‬عشدها يشتقل التشفيذ‪ ،‬إلى التعميسة التالية لتعميسة التكرار‪.‬‬

‫‪- 54 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثاؿ ‪:1‬‬
‫كتا ة جدوؿ الزرب لمعد ‪.7‬‬
‫الفكرة الخؽارزمية‪:‬‬
‫هي ما تقؽـ ه عمياً بيدؾ‪ .‬تكرار كتا ة أسطر مؼ الذكل‪:‬‬
‫‪7x1=7‬‬
‫‪7 x 2 = 14‬‬
‫‪..............‬‬
‫‪7 x 10 = 70‬‬
‫أم تكرار كتا ة‪ 7 x i = 7*i :‬حيث ‪ i‬تبدأ القيسة ‪ 1‬وتتزايد لتتؽقت عشد القيسة ‪.10‬‬
‫خؽارزمية الحل‪:‬‬

‫‪i←1‬‬

‫مادام ( ‪ ) i ≤ 10‬كرر‬

‫بداية‬

‫اكتب ‪7, ” x”, i ,”= ”, 7*i‬‬

‫‪i ← i +1‬‬

‫نهاية‬

‫ي كثيػر مػؼ حػاالت التكػرار ندػتخدـ متحػؽالً يت ازيػد مػع تشفيػذ التكػرار‪ ،‬مثػل حالػة ‪ i‬ػي مثالشػا‪ ،‬ندػسي مثػل‬
‫(يعد مرات التكرار)‪ ،‬وبسا أف التكرار هؽ حمقة ندسيه أيزاً عدا الحمقة التك اررية‪.‬‬
‫ّ‬ ‫هذا الستحؽؿ عدا‬

‫‪- 55 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثاؿ ‪:2‬‬
‫السطمؽب حداب مجسؽع األعدا ‪1, 2, 3,... M‬‬
‫حيث ‪ M‬تُعطى كدخل‪.‬‬
‫اآلف وقد اكتسمظ لػديشا التعميسػات الخؽارزميػة األساسػية‪ ،‬وقػد ا عيشػا أنهػا كا يػة لشعبػر عػؼ حػل أم مدػةلة‪،‬‬
‫لشبدأ التفكير خؽارزمية الحل بهذ التعميسات‪.‬‬
‫السهػػ أف نبػدأ بتؽصػيت السدػةلة جيػداً‪ ،‬ويكػؽف لػغ بتحديػد السعطيػات والشتػائج ذػكل قيػق‪ ،‬ويكػؽف الحػػل‬
‫(الخؽارزمية) سحاولة بشا الخطؽات لسعالجة السعطيات وصؽالً إلى الشتائج‪.‬‬
‫المعطيات‪ M :‬عد صحيذ مؽج ‪.‬‬
‫النتائج‪ :‬مجسؽع األعدا ‪ 1, 2, 3,... M‬ولشجعل لهذا السجسؽع متحؽالً ‪.S‬‬
‫الخؽارزمية‪:‬‬
‫العالقة بيؼ ‪ S‬و‪ M‬هي‪S=1+2+...+M :‬‬
‫آ ‪ ،‬إف الحل بديهي هشا‪ ،‬ما هي إال تعميسة إسشا وأحرل عمى السطمؽب‪ ،‬أم‪:‬‬

‫اق أر ‪M‬‬

‫‪S ← 1+2+3+...M‬‬

‫اكتب ‪S‬‬

‫ما رأيغ!!!‬
‫الطبع لؼ يكؽف هذا الحل مقبؽؿ خؽارزمياً ألنه لؼ يكؽف مقبؽؿ برمجياً وال حاسؽبياً‪.‬‬
‫ال يسكؼ أف تكػؽف تعميسػة ا سػشا مقبؽلػة بهػذا الذػكل‪ :‬أيػة صػيغة رياضػية هػذ السكتؽبػة ب ػ ‪ !....+M‬هػذا‬
‫يسكؼ أف يعبر عؼ كرة مفهؽمة لشا‪ ،‬ولكشه غير قابل لمحداب‪.‬‬

‫ولكؼ نتا ع نفس الفكرة ةسمؽب مختمت قميالً‪ ،‬نجسع إلى الستحؽؿ القيسة ‪ 1‬ػ ‪ 2‬ػ ‪ 3‬حتى ‪.M‬‬
‫وجدنا بداية الفكرة‪ S ← S + i :‬حيػث سػيكؽف ‪ i‬هػؽ الستحػؽؿ الػذم يةخػذ ‪ ....،2 ،1‬حتػى ‪ .M‬ولكػؼ لػػ‬
‫نتخمب عد مؼ هذ الشقا المعيشة ‪.M,...,..‬‬
‫ال ليدظ بهذ الرعؽبة‪ ،‬إنها قػيػ متحػؽؿ عػدا يت ازيػد ذػكل تكػرارم‪ ،‬نكػرر زيا تػه قيسػة ‪ 1‬إلػى أف يرػل‬
‫إلى القيسة ‪ .M‬أم شر التكرار (‪.)i ≤ M‬‬

‫‪- 56 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫خؽارزمية الحل‪:‬‬

‫اق أر ‪M‬‬

‫‪S←0‬‬

‫‪i←1‬‬

‫مادام ( ‪ ) i ≤ M‬كرر‬

‫بداية‬

‫‪S←S+i‬‬

‫‪i ← i +1‬‬

‫نهاية‬

‫اكتب ‪S‬‬

‫لشتةكد مؼ صحة الخؽارزمية و لغ اختبارها يدوياً مؼ أجل قيػ مختمفة لمستحؽؿ ‪:M‬‬
‫الدخل‪M=1 :‬‬

‫‪M‬‬ ‫‪S‬‬ ‫‪i‬‬ ‫تكرار‬ ‫شرط ‪i ≤ M‬‬


‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫صذ‬
‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫خطة‬

‫الخرج أو الشتيجة‪S = 1 :‬‬

‫الدخل‪M=3 :‬‬

‫‪M‬‬ ‫‪S‬‬ ‫‪i‬‬ ‫تكرار‬ ‫شرط ‪i ≤ M‬‬


‫‪3‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫صذ‬
‫‪3‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫صذ‬
‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫صذ‬
‫‪3‬‬ ‫‪6‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫خطة‬

‫‪- 57 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الخرج أو الشتيجة‪S = 6 :‬‬


‫التعميسػػات‬ ‫إف خؽارزميػػة الحػػل ليدػػظ وحيػػدة‪ ،‬حتػػى إف كانػػظ ػػي كرتهػػا واحػػدة‪ ،‬الدقػػة ػػي القػػيػ وترتي ػ‬
‫يسكؼ أف يعطيشا حمؽالً مختمفة‪.‬‬

‫اق أر ‪M‬‬

‫‪S←1‬‬

‫‪i←1‬‬

‫مادام ( ‪ ) i < M‬كرر‬

‫بداية‬

‫‪i ← i +1‬‬

‫‪S←S+i‬‬

‫نهاية‬

‫اكتب ‪S‬‬

‫وقد أشرنا إلى التغييرات عؼ الخؽارزمية الدا قة‪.‬‬


‫اختبر الخؽارزمية عمى قيػ الدخل الدا قة‪.‬‬ ‫تدري‬
‫الجؽاب‬
‫الدخل‪M=3 :‬‬

‫‪M‬‬ ‫‪S‬‬ ‫‪i‬‬ ‫تكرار‬ ‫شرط ‪i < M‬‬


‫‪3‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫صذ‬
‫‪3‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫صذ‬
‫‪3‬‬ ‫‪6‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫خطة‬

‫الخرج أو الشتيجة‪S = 6 :‬‬

‫‪- 58 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مالحعة هامة جدا‪:‬‬


‫إف كاف الذر محققاً ائساً‪ ،‬أم كاف صحيحاً وال يتغير ي متحؽالته شي ‪ ،‬سا ا يحرل؟؟؟‬
‫الجػؽاب‪ :‬إنهػػا أكبػر األخطػػا البرمجيػػة‪ ،‬نػدخل حمقػػة النهائيػة‪ ،‬أم يدػػتسر تكػرار تشفيػذ مجسؽعػػة التعميسػػات‬
‫ال تؽقت‪.‬‬
‫كيت نشتبه إلى مثل هذا الخطة؟‬
‫إف لػ تكؼ مجسؽعػة التعميسػات ال تحسػل ػي طياتهػا أم تعػديل عمػى أم مػؼ الستحػؽالت السزػسشة الذػر‬
‫هشاؾ حتساً حمقة ال نهائية‪.‬‬

‫مثاؿ‪:‬‬

‫اق أر ‪M‬‬

‫‪S←0‬‬

‫‪i←1‬‬

‫مادام ( ‪ ) i ≤ M‬كرر‬

‫بداية‬

‫‪S←S+i‬‬

‫‪i ← i +1‬‬

‫نهاية‬

‫اكتب ‪S‬‬

‫‪- 59 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الح ما الذم يحرل لؽ نديشا تعميسة تغيير الستحؽؿ ‪:i‬‬


‫الدخل‪M=1 :‬‬

‫‪M‬‬ ‫‪S‬‬ ‫‪i‬‬ ‫تكرار‬ ‫شرط ‪i ≤ M‬‬


‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫صذ‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫صذ‬
‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫صذ‬
‫‪1‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫صذ‬
‫‪1‬‬ ‫…‬ ‫‪1‬‬ ‫صذ‬
‫‪1‬‬ ‫‪1‬‬ ‫صذ‬
‫‪1‬‬ ‫‪1‬‬ ‫صذ‬
‫النهاية‬
‫‪1‬‬ ‫(أعمى قيسة مسكشة‬ ‫‪1‬‬ ‫صذ‬
‫حاسؽبياً)‬

‫هذا ما ندسيه حمقة تكرار النهائية‪.‬‬

‫‪- 60 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .28‬منهجية كتابة نعام برمجي‬


‫ا مكػػاف التؽصػػل إلػػى حػػل لسععػػػ السذػػاكل عػػد معر تهػػا وتفهسهػػا‪ .‬ومػػؼ السشػػاهج الذػػائعة ػػي لػػغ مػػشهج‬
‫الترػػسيػ مػػؼ القسػػة إلػػى القاعػػدة الػػذم ُيعػ ِّػرؼ عسميػػة معالجػػة عامػػة تدػػاعد ػػي ا نطػػالؽ مػػؼ مذػػكمة كبيػرة‬
‫معقدة إلى مجسؽعة مؼ السذكالت األصغر‪ ،‬حيث تكؽف قابمية حػل هػذ األجػ از أسػهل مػؼ حػل السذػكمة‬
‫األصمية عة واحدة‪ .‬هذا وتتزسؼ عسمية الترسيػ سجسمها كل مسا يمي‪:‬‬
‫‪ ‬وضع تؽصيت مفرل يحد خل وخرج الشعاـ البرمجي والفرضيات األساسية الخاصة ه‬
‫‪ ‬التعبيػػر عػػؼ خؽارزميػػة الحػػل لكػػل قدػػػ مػػؼ أقدػػاـ الشعػػاـ البرمجػػي بمغػػة الخؽارزميػػات ‪pseudo-‬‬
‫‪ code‬أو السخططات التد قية ‪flowcharts‬‬
‫‪ ‬نقل التعبير عؼ الخؽارزمية إلى لغة برمجية‬

‫مالحعة هامة‪:‬‬
‫مؼ الدائد مشذ بداية الدبيعشيات التعبير بمغة الخؽارزميػات ‪ pseudo-code‬وتفزػيمها عمػى السخططػات‬
‫التد قية ‪ flowcharts‬لدببيؼ‪:‬‬
‫‪ .1‬السخططات التد قية تؽحي استخداـ تعميسة القفز ‪ goto‬وقد أ بتظ الدراسات تة يرها الدمبي عمى‬
‫سهؽلة ق ار ة البرامج و هسها واختبارها وصيانتها‪.‬‬
‫‪ .2‬انتذار ما ندسيه البرمجة السهيكمة ‪ structured programming‬السؽجؽ ة ي مععػ لغات‬
‫البرمجة السشتذرة‪Pascal, Basic, C, C++, Java, C# :‬‬

‫إف التعبيػر بمغػة الخؽارزميػػات‪ ،‬هػؽ تعبيرنػا عػػؼ الحػل كمسػػات مفهؽمػة الداللػة‪ ،‬وهيكميػػة واضػحة‪ ،‬ال تػػدعؽ‬
‫لاللتبػػاس‪ .‬وهػػي كسػػا كرنػػا ‪ pseudo-code‬شػػبيهة ال ػ ‪ code‬أم ػػالشب البرمجػػي ػػي لغػػات البرمجػػة‪.‬‬
‫يها كسا نفكر ال قيؽ قؽاعدية صارمة تفرضها لغػات البرمجػة‪ .‬هػي مدػؽ ة البرمجػة ( الؽرقػة‬ ‫ولكؼ نكت‬
‫" ةية "لغة برمجة"‪ .‬لذلغ اخترنا مثالً‪ ،‬وخرؽصػي ػي بدايػة‬ ‫والقمػ)‪ ،‬ولكشها مدؽ ة مفهؽمة قابمة "لمتبيي‬
‫البرمجة أف نعِّبر سفر ات المغة العربية‪ ،‬لغة تفكيرنا‪.‬‬
‫عد أف تتةقمػ مع لغة برمجة وتتعرؼ اللة التعميسػات األساسػية‪ ،‬يسكشػغ اسػتخداـ المفوردات اإلنكميزيوة إ ا‬
‫كاف لغ أكثر راح ًة لغ‪ ،‬ولكؼ ضسؼ نفس الذكل السؤطر والسهيكل الذم كرنا ‪.‬‬
‫مثاؿ‪( Pseudo-Code :‬تعبير عؼ خؽارزمية المغة ا نكميزية)‬

‫‪- 61 -‬‬
‫ البرنامج الحاسؽبي‬:‫الفرل األوؿ‬ )1( ‫مقرر البرمجة‬

‫حل معا لة مؼ الدرجة الثانية‬

read a,b,c;

delta  b2  4  a  c

if delta<0
begin
write “No Real Solution”
end

if delta = 0
begin
write “One Solution”
b
x
2a
write x
end

if delta >0
begin
write “Two Solutions”
b  delta
x1 
2a
b  delta
x2 
2a
write x1,x2
end

- 62 -
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .29‬أمثمة كالسيكية عامة وهامة‬


‫مثال ‪:1‬‬
‫حداب القاسػ السذترؾ األععػ لعد يؼ صحيحيؼ مؽجبيؼ‪.‬‬
‫القاسػػػ السذػػترؾ األععػػػ لعػػد يؼ صػػحيحيؼ هػػؽ أكبػػر عػػد صػػحيذ يسكػػؼ نقدػػػ عميػػه العػػد يؼ ( وف ػػاقي‬
‫طبعاً)‪.‬‬
‫لمعد يؼ‪ 16 ،12 :‬هؽ ‪ .4‬لمعد يؼ‪ 45 ،75 :‬هؽ ‪ .15‬لمعد يؼ‪ 3 ،10 :‬هؽ ‪..... .1‬‬

‫خهارزمية إقميدس‪:‬‬
‫خؽارزمية رائعة ال تحتاج إلى أية عسميات قدسة أو ضرب‪.‬‬
‫وهي كالتالي‪ ،‬نطرح األصغر مؼ األكبر ونزعه مكانه‪ ،‬نكرر لغ حتى يتداوى العد اف‪.‬‬
‫لشطبق لغ عمى العد يؼ ‪75, 45‬‬

‫‪A‬‬ ‫‪B‬‬
‫‪75‬‬ ‫‪45‬‬
‫‪30‬‬ ‫‪45‬‬
‫‪30‬‬ ‫‪15‬‬
‫‪15‬‬ ‫‪15‬‬

‫لشعبر عؼ هذ الخؽارزمية بمغة الخؽارزميات‪:‬‬


‫السعطيات (الدخل)‪:‬‬
‫‪ a, b‬عد اف صحيحاف مؽجباف‪.‬‬
‫الخرج (الشتيجة)‪:‬‬
‫‪ g‬القاسػ السذترؾ األععػ‪.‬‬

‫‪- 63 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الخؽارزمية‪:‬‬

‫إنها خؽارزمية رائعة وبديطة‪ ،‬واستخدمشا يها جسيع التعميسػات الخؽارزميػة األساسػية ( خػل‪ ،‬خػرج‪ ،‬إسػشا ‪،‬‬
‫تعميسة شرطية‪ ،‬تعميسة تك اررية)‪.‬‬

‫سؤاؿ‪:‬‬
‫هل تتغير الشتيجة إ ا غيرنا تعميسة ا سشا ‪ g ← a‬التعميسة ‪.g ← b‬‬

‫الجؽاب‪:‬‬
‫ال تغيير‪ ،‬ألف هذ التعميسة تمي تعميسة التكرار‪ ،‬التي ال نشتقل إلى ما عدها إال عد عػدـ تحقػق الذػر (‪a‬‬
‫ال تداوم ‪ .)b‬وبالتالي عشد وصؽلشا إلى تعميسة ا سشا ‪ ،‬تكؽف قيسة ‪ a‬و‪ b‬متداويتاف الزرورة‪.‬‬

‫‪- 64 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثال ‪:2‬‬
‫حداب العد األكبر بيؼ مجسؽعة أعدا يدخمها السدتخدـ‪.‬‬
‫المعطيات‪ :‬مجسؽعة األعدا التي يجرم إ خالها‪.‬‬
‫النتيجة‪ :‬العد األكبر‪.‬‬
‫لشتةمل قميالً‪ ،‬هل السدةلة مؽصفة جيداً؟ ما السقرؽ سجسؽعة‪ ،‬ما هؽ عد عشاصػر السجسؽعػة‪ ،‬أو كيػت‬
‫لشا أف نعرؼ أف السجسؽعة التي يجرم إ خالها قد انتهظ‪.‬‬
‫إ ف‪ ،‬لتحديػػد السجسؽعػػة التػػي نػػدخمها‪ ،‬نعطػػي أوالً عػػد العشاصػػر‪ ،‬ػػػ العشاصػػر‪ .‬أو نقػػؽـ إ خػػاؿ العشاصػػر‬
‫ونرطمذ عمى رمز يدؿ عمى نهاية السجسؽعة (عشرر غير مةلؽؼ مثل ‪.)999‬‬
‫ولشفكر معاً بالخهارزمية‪:‬‬
‫أرجؽ أال تبدأ التفكير حػل مدػةلة بؽاسػطة الحاسػؽب‪ ،‬ال بمغػة الخؽارزميػات‪ ،‬وقطعػاً ػي السدػتقبل ال تفكػر‬
‫عمػى مدػؽ تغ‬ ‫بمغة برمجة معيشة‪ ،‬بل ع تفكيرؾ الطبيعي الحدسي يتمسس ويتخيل السدةلة وارسػ وشػط‬
‫والسهػ جداً أف تكؽف قا اًر عمى حل السدةلة يدوياً ( ي الحاالت البديطة)‪ ،‬تذكر لؼ يقدـ الحاسؽب الحل‪.‬‬
‫نؤكد لغ أف تفكيرؾ العا م لمحل يسكؼ جهد قميل صػياغته بمغػة خؽارزميػة‪ ،‬سػيسكؼ يسػا عػد نقمهػا جهػد‬
‫قميل أيزاً إلى أية لغة برمجة عالية السدتؽى‪.‬‬
‫فػػي مدػػةلتشا هشػػا‪ ،‬تخيػػل أنػػغ تريػػد معر ػػة الذػػخب األطػػؽؿ بػػيؼ مجسؽعػػة أشػػخاص يػػر وف إلػػى غر تػػغ‬
‫إال عد اً محد و جداً مؼ السجسؽعة‪ ،‬أم ال تدتطيع الشعر‬ ‫التتالي‪ ،‬وبالطبع ال يسكؼ لغر تغ أف تدتؽع‬
‫إليهػ جسيعاً لتقؽؿ بشعرة خاطفة هذا هؽ األطؽؿ‪.‬‬
‫الحل هؽ كالتالي‪ ،‬تدخل العشرر األوؿ‪ ،‬تعتبر األطؽؿ إلى أف يثبظ العكس‪ ،‬أم تكػرر إ خػاؿ العشاصػر‪،‬‬
‫تقارف العشرر السدخل مع مؼ اعتبرته األطؽؿ إف كاف أطؽؿ مشػه تجعمػه يحػل مكانػه‪ ،‬وهكػذا حتػى نهايػة‬
‫السجسؽعة‪.‬‬
‫إنها الخؽارزمية‪ ،‬وما عميشا إال التعبير عسا كتبشا خطؽات محد ة‪ ،‬وبهيكمية واضحة و قيقة ال لػبس يهػا‪،‬‬
‫عد أف نحد الستحؽالت السعبرة عسا نعالجه‪.‬‬
‫يه العشرر األكبر‪.‬‬ ‫ليكؼ ‪ k‬هؽ عشرر السجسؽعة السدخل‪ ،‬و‪ kmax‬هؽ الستحؽؿ الذم نحتف‬

‫‪- 65 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫الخؽارزمية‪:‬‬

‫اس ػ ػػتخدمشا الع ػ ػػد ‪999‬‬ ‫اق أر ‪k‬‬

‫ليالً لشهاية السجسؽعة‬


‫‪kmax ← k‬‬

‫ما اـ ( ‪ k‬ال يداوم ‪ ) 999‬كرر‬

‫إ ا (‪ ) k > kmax‬نِّفذ‬

‫إ ا كػ ػػاف العػ ػػد األكبػ ػػر هػ ػػؽ ‪999‬‬


‫‪kmax ← k‬‬
‫اق أر ‪k‬‬
‫نتيجة‬ ‫السجسؽعة خالية ال نكت‬

‫إ ا ( ‪ kmax‬اليداوم ‪ ) 999‬نِّفذ‬
‫‪”max= ”, kmax‬‬ ‫اكت‬

‫تػػدري ‪ :‬اختبػػر الخؽارزميػػة يػػدوياُ ػػي حػػاالت مجسؽعػػات مختمفػػة‪( .‬ال تػػشس اختبػػار الحػػاالت الحديػػة‪ :‬حالػػة‬
‫مجسؽعة مؼ عشرر واحد‪ ،‬وحالػة السجسؽعػة الخاليػة حيػث الػدخل هشػا يقترػر قػ عمػى نهايػة السجسؽعػة‬
‫أم ‪.)999‬‬

‫‪- 66 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫مثال ‪:3‬‬
‫كتا ة برنامج لحل معا الت مؼ الدرجة الثانية‪.‬‬
‫معر ة‬ ‫عمى الذكل ‪ ، a.x 2  b .x  c  0‬لذا إف حمها يتطم‬ ‫سا أف معا لة مؼ الدرجة الثانية تُكت‬
‫‪ 3‬عشاصر هي‪ a :‬و‪ b‬و‪ c‬إ ًا‪:‬‬
‫خل البرنامج‪ :‬الث أعدا حقيقية هي ‪ c ،b ، a‬تسثل أمثاؿ حدو السعا لة‪.‬‬
‫حل وحيد‪ ،‬أو حميؼ‪ ،‬أو اليكؽف لها‬
‫حل السعا لة‪ ،‬سؼ السسكؼ أف يكؽف لمسعا لة ّ‬
‫سا أف السطمؽب هؽ ّ‬
‫حمؽؿ‪ .‬إ اً‪:‬‬
‫خرج البرنامج‪ :‬إحدى الحاالت التالية‪:‬‬
‫حل حقيقي‪.‬‬
‫‪ .1‬رسالة تعمؼ عدـ وجؽ ّ‬
‫الحل‪.‬‬
‫‪ .2‬رسالة تعمؼ عؼ وجؽ حل وحيد مع إظهار ّ‬
‫‪ .3‬رسالة تعمؼ عؼ وجؽ حميؼ مع إظهار الحّميؼ‪.‬‬
‫معالجتها‪ ،‬والحقيقة أنه ال تؽجد أية رضيات عمى قيػ ‪ a‬و ‪b‬‬ ‫لشدةؿ نفدشا اآلف عؼ الفرضيات التي يج‬
‫و ‪c‬التي يسكؼ أف تكؽف أم أعدا حقيقية (سالبة أو مؽجبة‪ ،‬صحيحة أو ةج از كدرية!)‪ ،‬ولكؼ الذر‬
‫الزسشي والؽحيد هؽ ‪ a≠0‬ألف السعا لة مؼ الدرجة الثانية‪.‬‬
‫خؽارزمية الحل‪:‬‬
‫( ي هذا السثاؿ سشعبر عؼ الخؽارزمية سفر ات المغة ا نكميزية)‬

‫‪- 67 -‬‬
‫ البرنامج الحاسؽبي‬:‫الفرل األوؿ‬ )1( ‫مقرر البرمجة‬

read a,b,c;

delta b 2  4  a c

if delta<0
begin
write “No Real Solution”
end

if delta = 0
begin
write “One Solution”
b
x
2a
write x
end

if delta >0
begin
write “Two Solutions”
b  delta
x1
2a
b  delta
x 2
2a
write x1,x2
end

- 68 -
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .31‬أسئمة‬
‫رذ أو خطة‪:‬‬ ‫‪ .1‬أج‬
‫‪ )1‬ترتب البرامج السكتؽبة بمغات عالية السدتؽى العتا‬
‫مؼ كتابتها بمغات ات مدتؽى مشخف‬ ‫‪ )2‬تكؽف كتا ة البرامج بمغات عالية السدتؽى أصع‬
‫‪ )3‬يكػػؽف تذػػغيل البػرامج السكتؽبػػة بمغػػات عاليػػة السدػػتؽى أ طػػة مػػؼ البػرامج السكتؽبػػة بمغػػات ات‬
‫مدتؽى مشخف‬
‫‪ )4‬يكؽف ترحيذ البرامج السكتؽبة بمغات عالية السدتؽى أسهل مؼ البرامج السكتؽبػة بمغػات ات‬
‫مدتؽى مشخف‬
‫‪ )5‬يتحكػ نعاـ التذغيل السؽار الحاسؽبية‬
‫‪ )6‬إف نعاـ التذغيل هؽ ‪Windows‬‬
‫‪ )7‬يعد نعاـ التذغيل جز اً مؼ العتا‬
‫‪ )8‬يسكؼ تحسيل أكثر مؼ برنامج ي الذاكرة ي آف واحد‬
‫‪ )9‬يسكؼ تشفيذ وتذغيل أكثر مؼ برنامج ي آف واحد‬
‫يسكؼ أف تدتخدـ عدة برامج الطا عة ي آف واحد‬ ‫‪)01‬‬

‫ما يمي و ق التتالي الزمشي الرحيذ‪:‬‬ ‫‪ .2‬رت‬


‫‪ )1‬االختبارات‬
‫‪ )2‬البرمجة‬
‫‪ )3‬كتا ة تؽصيت البرنامج‬
‫‪ )4‬التؽ يق‬
‫‪ )5‬الترسيػ‬
‫‪ )6‬هػ السذكمة‬

‫‪- 69 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫األجهبة‬
‫رذ أو خطة‪:‬‬ ‫‪ .1‬أج‬

‫خطة‬ ‫‪1‬‬
‫خطة‬ ‫‪2‬‬
‫صذ‬ ‫‪3‬‬
‫صذ‬ ‫‪4‬‬
‫صذ‬ ‫‪5‬‬
‫خطة‬ ‫‪6‬‬
‫خطة‬ ‫‪7‬‬
‫صذ‬ ‫‪8‬‬
‫صذ‬ ‫‪9‬‬
‫صذ‬ ‫‪11‬‬

‫ما يمي و ق التتالي الزمشي الرحيذ‪:‬‬ ‫‪ .2‬رت‬

‫هػ السذكمة‬ ‫‪1‬‬


‫كتا ة تؽصيت البرنامج‬ ‫‪2‬‬
‫الترسيػ‬ ‫‪3‬‬
‫البرمجة‬ ‫‪4‬‬
‫االختبارات‬ ‫‪5‬‬
‫التؽ يق‬ ‫‪6‬‬

‫‪- 70 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫‪ .31‬نذاط‬
‫إف السدائل ي هذا الشذا مؼ الشؽع البدي ‪ ،‬وال شغ أنػغ تدػتطيع الحرػؽؿ عمػى الحػل دػهؽلة بؽاسػطة‬
‫أ وات الجدول ػػة مث ػػل ‪ ،Excel‬ولك ػػؼ اله ػػدؼ هش ػػا ت ػػدريبغ عم ػػى التعبي ػػر ع ػػؼ الح ػػل اس ػػتخداـ التعميس ػػات‬
‫األساسية (الخسدة) بمغة الخؽارزميات‪.‬‬
‫تدمد ػػل تشفي ػػذ‬ ‫ع ػػد تعبي ػػرؾ ع ػػؼ الح ػػل‪ ،‬ح ػػاوؿ أف تن ّفوووذ الخؽارزمي ػػة يووودويا بتغيي ػػر ق ػػيػ الستحػ ػؽالت حدػ ػ‬
‫التعميسػػات‪ .‬ابػػدأ التشفيػػذ عمػػى عيشػػة صػػغيرة مػػؼ قػػيػ الػػدخل‪ ،‬تةكػػد مػػؼ قيسػػة الخػػرج اسػػتخداـ ‪ Excel‬إف‬
‫أر ت‪.‬‬

‫المدألة األولى‪:‬‬
‫نريد كتا ة برنامج حداب الستؽس الحدابي‪:‬‬
‫‪n‬‬
‫‪x i‬‬
‫‪Average  i 1‬‬
‫‪n‬‬
‫تعبػػر ‪ xi‬عػػؼ معػػدالت طػػالب صػػت مػػؼ صػػفؽؼ الجامعػػة اال ت ارضػػية‪ .‬مػػع العمػػػ أف عػػد طػػالب‬
‫حيػػث ّ‬
‫(السذار إليه الستحؽؿ ‪ُ )n‬يعطى مؼ الدخل‪ ،‬وأف السعدالت محدؽبة مؼ ‪ 100‬عالمػة وأف‬ ‫الرت الؽاحد ُ‬
‫السدتخدـ يقؽـ إ خاؿ السعدالت عشد تشفيذ البرنامج‪.‬‬
‫ُ‬
‫حد عشد تؽصيفغ ومعالجتغ لمسطمؽب‪:‬‬
‫‪ .1‬خل البرنامج‪.‬‬
‫‪ .2‬خرج البرنامج‪.‬‬
‫معالجتها‪.‬‬ ‫‪ .3‬الفرضيات األساسية التي يج‬
‫‪ .4‬خؽارزمية الحل بمغة الخؽارزميات‪.‬‬

‫مثاؿ عؼ خل‪/‬خرج البرنامج‪:‬‬


‫‪2‬‬
‫‪70‬‬
‫‪60‬‬
‫الخرج‬
‫‪65‬‬

‫‪- 71 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫المدألة الثانية‪:‬‬
‫نريد كتا ة برنامج حداب ا نحراؼ السعيارم‪:‬‬
‫‪n‬‬
‫‪ (x i‬‬ ‫) ‪ Average‬‬
‫‪S tan dardDeviation ‬‬ ‫‪i 1‬‬
‫‪n‬‬
‫تعب ػػر ‪ xi‬ع ػػؼ مع ػػدالت ط ػػالب ص ػػت م ػػؼ ص ػػفؽؼ الجامع ػػة اال ت ارض ػػية‪ ،‬ويعب ػػر ‪ Average‬ع ػػؼ‬
‫حي ػػث ّ‬
‫(السذػػار إليػه ػػالستحؽؿ ‪ُ )n‬يعطػػى‬
‫الستؽسػ الحدػػابي لمسعػدالت‪ .‬مػػع العمػػػ أف عػد طػػالب الرػت الؽاحػػد ُ‬
‫السدػػتخدـ يق ػػؽـ إ خ ػاؿ السع ػػدالت عشػػد تشفي ػػذ‬
‫مػػؼ ال ػػدخل وأف السعػػدالت محد ػػؽبة مػػؼ ‪ 100‬عالم ػػة وأف ُ‬
‫البرنامج‪.‬‬
‫حد عشد تؽصيفغ ومعالجتغ لمسطمؽب‪:‬‬
‫‪ .1‬خل البرنامج‪.‬‬
‫‪ .2‬خرج البرنامج‪.‬‬
‫معالجتها‪.‬‬ ‫‪ .3‬الفرضيات األساسية التي يج‬
‫‪ .4‬خؽارزمية الحل بمغة الخؽارزميات‪.‬‬

‫‪- 72 -‬‬
‫الفرل األوؿ‪ :‬البرنامج الحاسؽبي‬ ‫مقرر البرمجة (‪)1‬‬

‫المدألة الثالثة‪:‬‬
‫فرض أف لديغ معا لة مدتقيػ‪:‬‬
‫‪ax  by  c‬‬
‫تعبػػر ‪ a,b,c‬عػػؼ قػػيػ صػػحيحة أوحقيقيػػة‪ ،‬ػػي حػػيؼ يعبػػر كػػل مػػؼ ‪ x‬و‪ y‬عػػؼ متحػػؽليؼ‪ ،‬إ يعبػػر ‪ x‬عػػؼ‬
‫(السحؽر ‪.)OY‬‬ ‫السعبر عؼ محؽر التراتي‬
‫ّ‬ ‫محؽر الفؽاصل (السحؽر ‪ )OX‬ويكؽف ‪ y‬هؽ الستحؽؿ‬
‫‪ x‬و‪y‬‬ ‫نقؽؿ عؼ نقطة )‪ (x0,y0‬أنها مشتسية إلى السدتقيػ ‪ ax+by=c‬إ ا تحققظ معا لة السدتقيػ بتعػؽي‬
‫بػ ‪ x0‬و‪ y0‬عمى الترتي ‪ ،‬كسايمي‪:‬‬
‫‪a  x 0 b  y 0 c‬‬
‫عمى سبيل السثاؿ‪ ،‬ومؼ أجل السدتقيػ ‪ 5x  4 y  13‬تكؽف الشقطة )‪ (1,2‬مشتسية إلى السدتقيػ ألف‪:‬‬
‫‪5 1  4  2  13‬‬
‫السطمؽب كتا ة خؽارزمية التحقق مؼ انتسا نقطة إلى مدتقيػ حيث تحد ‪:‬‬
‫‪ .1‬خل البرنامج (مداعدة‪ :‬السدتقيػ والشقطة)‪.‬‬
‫‪ .2‬خرج البرنامج (مداعدة‪ :‬انتسا أو عدـ انتسا )‪.‬‬
‫معالجتها ي البرنامج‪.‬‬ ‫‪ .3‬الفرضيات األساسية التي يج‬
‫‪ .4‬التعبير عؼ الحل بمغة الخؽارزميات‪.‬‬

‫‪- 73 -‬‬

You might also like