RSS

Category Archives: حاسوب

النظام العددي الثنائي Binary system

الحاسوب, ذلك الجهاز الذي يقوم بتلك الحسابات الخارقة, ويقوم بالتخزين والاسترجاع, والمحاكاة والتنفيذ, ذلك الجهاز الذي قلما تجد منزلاً لا يحتويه, الذي أصبح ضرورة من ضروريات الحياة اليومية ! , ألم تتساءل يوماً: ” سبحان الله, كيف يقوم بكل هذا ؟”
في موضوعنا هذا, سنتحدث بشكل مُبسط ومختصر عن أهم أساسيات عمل الحاسب الآلي, وهي الأعداد الثنائية (Binary number ), والتي تعتبر – تجاوزاً – لغة الحاسب الآلي, فكما يوجد للعرب لغة تتكون أبجدياتها من 28 حرفاً ( أ – ي ) , وللإنجليز لغة تتكون أبجدياتها من 26 حرفاً ( A – Z ) , كذلك الحاسب يمتلك لغة تتكون أبجدياتها من حرفين ( 0 , 1 ) , أو ( ON , OFF ) , أو بمعنى أكثر وضوحاً ( يوجد تيار , لا يوجد تيار ), وهذه اللغة كما ذكرنا تعرف باسم: الأعداد الثنائية… 

* تمثيل الأعداد الثنائية:

أعتقد الآن أنك تتساءل: ” ماذا يعني للحاسب يوجد تيار أم لا ؟ وماذا يفهم من ذلك ؟ ” , في الحقيقة كما هو الحال في لغة العرب فالألف لوحدها قد لا تعني شيئاً وكذلك الحال مع أختها الباء, ولكن عندما نجمعهم سويةً تتشكل لنا جملة مفهومة عند العرب وهي (أب) , وكذلك هو الحال مع الحاسب فمن خلال تشكيل مجموعة من الـ(1 , 0 ( يتمثل لنا رقم أو كلمة معينة, فعلى سبيل المثال: عندما نريد تمثيل العدد واحد بواسطة الأعداد الثنائية فإنه يتم تمثيله بهذا الشكل ( 01 )…

ومما تجدر الإشارة إليه, إننا عندما نريد أن نمثل عدداً ما, فإننا نكون محصورين بعدد معين من الـBit , وكل واحد أو صفر هو في الحقيقة عبارة عن ( one bit ) , وللتوضيح أكثر سنمثل الآن العدد واحد بواسطة ( 5 bit ) والتي ستكون بالشكل التالي (00001) 

كما ذكرنا, إننا محصورين بعدد معين من الـBit عندما نريد تمثيل عدداً ما, وليتضح الموضوع بشكل أكبر الآن سنمثل العدد 15 بالأرقام الثنائية والتي تكون كالتالي (1111) , نلاحظ إنه تم تمثيلها بواسطة (4 bit) , إذاً عندما أطلب منك أن تمثل لي العدد 15 بواسطة (3 bit) هل تستطيع ؟ .. في الحقيقة لا تستطيع وذلك لأنك لا تمتلك عدداً كافياً من الـBit, فكما لاحظنا إن العدد 15 يحتاج إلى (4 bit) أو أكثر لتمثيله لذا الـ(3 bit) لا تستطيع أن تقوم بهذه العملية…

قد تتساءل: ” كيف لي أن أعرف الأعداد التي أستطيع تمثيلها بواسطة عدد معين من الـBit ؟ ” , هناك معادلة رياضية بسيطة للإجابة على هذا السؤال, فمثلاً: عندما يكون لديك ( n bit ) حيث n هو رقم موجب متغير, فإنك تستطيع تمثيل الأعداد من العدد صفر إلى العدد (2^n) – 1, – حيث علامة ^ تعني مرفوع إلى الأس n – ولنجرب مثالاً عملياً على ذلك, ولنفرض إننا نريد أن نعرف الأعداد التي نستطيع تمثيلها بواسطة ( 3 bit ), فمن خلال المعادلة نجد إنها من العدد صفر إلى العدد سبعة…

– الأرقام الثنائية التي نستطيع تمثيلها بواسطة (3 bit –

* من الثنائي إلى العشري:

والآن قد تتساءل لتقول: ” ما هذا ؟ كيف سأحفظ مجموعات مكونة من الصفر والواحد لأعرف ماذا تعني؟ “, نجيبك بهدوء لنقول لك: يا أخي العزيز هّون عليك فليس هناك داعٍ للحفظ, توجد هناك عملية حسابية صغيرة نستطيع من خلالها معرفة العدد العشري من العدد الثنائي, ولنأخذ على سبيل المثال هذا العدد الثنائي (011001), في الحقيقة أنا الآن لا أعلم ماذا يُمثل هذا الرقم في الأعداد العشرية ! , ولكن أنا وأنت بعد قليل سنكتشف ماذا يمثل هذا الرقم, بالطريقة التالية:-

كما ترى, العملية بسيطة جداً, مجرد حسابات بالطريقة ذاتها مع إي رقم ثنائي أخر , ولتثبيت المعلومات سنقوم بهذه العملية مع العدد الثنائي (1111) والذي قلنا سابقاً إنه يمثل العدد 15 , لنرى هل ما قلناه كان صحيحاً أم لا ؟…

2^3 + 2^2 + 2^1 + 2^0 = 8 + 4 + 2 + 1 = 15

* من العشري للثنائي:

جميل جداً, ولكن بالتأكيد سنواجه مشكلة أخرى وهي: كيفية معرفة العدد الثنائي الذي يمثله ذلك العدد العشري؟, ولكن لا تخف بواسطة عمليات قسمة بسيطة نستطيع استخلاص العدد الثنائي من العشري, وذلك بقسمة العدد العشري على اثنين, في حالة لا يوجد باقي للقسمة يصبح العدد صفر, وفي حالة وجود باقي للقسمة يصبح العدد واحد, وهكذا نكرر عملية القسمة إلى أن نصل إلى الناتج صفر..أعلم إن الموضوع يبدو معقداً قليلاً , ولكن بالمثال العملي التالي ستتضح الفكرة – بأذن الله -, ولنفرض إننا نريد معرفة العدد الثنائي الذي يمثل العدد 41 , ببساطة نقوم بعمليات القسمة السابق ذكرها للحصول على الناتج:


كما رأينا, الطريقة بسيطة جداً والأمر مماثل لأي عدد عشري أخر نرغب في تمثيله ثنائياً, ولتأكد من صحة الحل نقوم بطريقة التحويل من العدد الثنائي للعشري للناتج الذي حصلنا ( 101001 ) عليه لنرى هل هو مطابق للعد 41 أم لا ؟ , وعند تطبيق هذه الطريقة نجد إن الناتج عبارة عن جمع لـ( 32 + 8 + 1) والذي يكافئ العدد 41…

* جمع الأعداد الثنائية:

والآن بعد أن تعرفنا على مجموعة من أهم الأساسيات في عالم الأعداد الثنائية, سننتقل إلى واحدة من أهم العمليات التي يُمكن تطبيقها على الأعداد الثنائية وهي عملية ( الجمع ) , فلنفرض مثلاً إن لدينا ( 3 bit ) وإننا نريد أن نجمع العدد 1 مع العدد 2 بواسطة الأرقام الثنائية, وأيضاً نريد أن نجمع العدد 3 مع العدد 3, كيف نقوم بهذه العملية ؟..ببساطة, نقوم بالطريقة التالية:

ماذا حدث؟ في المثال الأول ( 1 + 2 ) , أضفنا ( 1 + 0 = 1 ) , وأيضاً ( 0 + 1 = 1 ) , وأخيراً ( 0 + 0 = 0 ) , وبالتالي أصبح الناتج ( 011 ) , ولكن ماذا حدث في المثال الآخر ؟ أولاً ( 1 + 1 = 2 ) ولكن كيف؟ لا يوجد الرقم 2 في الأعداد الثنائية ! , إذاً لنراجع معاً كيفية الجمع في الأعداد العشرية ولنجمع مثلاً: 19 + 11 , في المرة الأولى نجمع (9+1=10) , ولكن في الحقيقة نحن نضع 0 , ويبقى معنا في اليد واحد نضيفه في عملية الجمع التالية والتي هي ( 1 + 1 = 2) , ونضيف عليها الـ1 الذي معنا باليد فيصبح لدينا العدد (30) , وكذلك نفعل مع الأعداد الثنائية ( 1 + 1 = 0 ) ولكن يبقى معنا واحد نضيفه في عملية الجمع التالية والتي هي ( 1 + 1 + 1 = 1 ) وكذلك يبقى لدينا في اليد واحد نضيفه في عملية الجمع التالية ( 0 + 0 + 1 = 1 ) , وهاهي الطريقة مع أي عدد ثنائي آخر…

* تمثيل الأعداد الثنائية السالبة:

تحدثنا عن الأعداد الثنائية ( الموجبة ) , ولكن ماذا عن الأعداد السالبة ؟ , هناك ثلاثة طرق للتعامل مع الأعداد الثنائية السالبة وهي ( sign magnitude ) , ( one’s complement ) , ( two’s complement ) , سنتحدث الآن عن الطريقة المُثلى للتعامل وهي الأخيرة (two’s complement ), والتي سنقوم بالتعامل معها بالشكل التالي:

نقوم بتمثيل العدد الموجب أولاً ( بالطريقة السابقة ) , ومن ثم نقوم بقلب جميع الأعداد ( الصفر للواحد , الواحد للصفر ), وأخيراً نُضيف إليها واحد فنحصل بالتالي على تمثيل العدد السالب, وليتضح الأمر لنفرض إننا نريد تمثيل العدد ( -1 ) والعدد (-3) بواسطة ( 3 bit ) – أنظر للشكل التالي – :

كما رأينا, الطريقة ثابتة مع أي عدد ثنائي أخر نرغب في تمثيله بالشكل السالب, ولكن هناك عدد من الملاحظات المهمة أثناء تعاملنا مع الأعداد السالبة والتي لابد أن تنتبه لها وهي كالآتي:-

– كما رأينا في تمثيل الأعداد الثنائية الموجبة, كنا محصورين بعدد معين من الـbit , وتعرفنا على المعادلة التي تخبرنا بالأعداد التي نستطيع تمثليها بواسطة عدد معين من الـbit , في تمثيل الأعداد الثنائية السالبة سيتكرر الأمر ذاته, ولكن مع اختلاف طفيف بالمعادلة , لماذا ؟ .. لأننا بواسطة ذلك العدد من الـbit , لن نُمثل فقط الأعداد الموجبة , ولكن سنقوم بتمثيل الأعداد الموجبة والسالبة معاً وذلك باستخدام المعادلة التالية: ولنفرض إن لدينا (n bit) , إذاً الأعداد التي نستطيع تمثيلها هي:

 من ( -2^(n-1) ) إلى ( 2^(n-1) – 1 ), ذلك يعني إن الأعداد التي نستطيع تمثيلها بواسطة (3 bit) في الـ(two’s complement ), هي من: ( -2^2 ) إلى ( ( 2^2) – 1) أي: من -4 إلى 3 , ونلاحظ هنا الاختلاف بين تمثيل الأعداد الموجبة والسالبة, حيث كانت الأعداد التي نستطيع تمثيلها بواسطة (3bit) في الأعداد الموجبة هي: من 0 إلى 7
– في نظام الـ(two’s complement ), نستطيع تمييز هل العدد سالب أم موجب من خلال النظر إلى الخانة الأولى من اليسار, فإن كان الرقم بـ0 , فهو في الحقيقة يمثل عدد موجب, وإن كان الرقم بـ1 , فإنه يمثل عدداً سالباً..


– لنستطيع معرفة العدد الثنائي السالب ماذا يمثل في النظام العشري, لا نستطيع استخدام الطريقة التي تعرضنا لها سابقاً (التحويل من ثنائي لعشري ) مباشرةً , ولكن نرى إن كان العدد سالباً ( بالنظر إلى أول خانة على اليسار كما ذكرنا ) , نقوم بعملية الـ(two’s complement ) له, وذلك من خلال القلب والإضافة بواحد – كما ذكرنا – لنحصل على العدد الموجب الذي يمثله ذلك العدد السالب, وبعد ذلك نقوم بالعملية السالف ذكرها وهي: التحويل من ثنائي لعشري, فعلى سبيل المثال نريد أن نعرف العدد السالب التالي ( 1011 ) ماذا يمثل؟ — أنظر للشكل التالي: 

– أخيراً, انتبه ألا تختلط عليك الأمور, فمثلاً عندما أسالك ماذا يمثل العدد التالي ( 111 ) , في الحقيقة الأمر يعتمد على النظام الذي تتعامل معه, فعندما تتعامل مع أرقام ثنائية موجبة فقط فالعدد السابق يمثل العدد 7 , بينما يمثل العدد -1 في نظام الـ(two’s complement ) -كما رأينا سابقاً –

بينما العدد 7 نمثله بالـ(two’s complement ), بالشكل التالي (0111), وبالتالي يجب أن تعرف أولاً مع أي نظام تعمل, لتستطيع التعامل مع الأرقام بالشكل الصحيح..

– قد تتساءل: ” لماذا تعاملنا في بادئ الأمر مع الأعداد الثنائية الموجبة, والآن تعاملنا مع الأعداد الثنائية السالبة, ألا يجدر بنا أن نتعامل معهم بطريقة واحدة ؟ ” , في الحقيقة هناك أنظمة لا تحتاج إلى أعداد ثنائية سالبة, وبالتالي نحن نحجز مساحة للأعداد الثنائية السالبة وهي في الحقيقة لن تستخدم, وبمعنى أوضح: كما ذكرنا سابقاً الـ(3 bit) في الأعداد الثنائية الموجبة نستطيع تمثيل الأعداد فيها إلى العدد 7, بينما عندما نتعامل مع نظام الـ(two’s complement ), لن نستطيع تمثيل إلا للعدد 3 ! , وليصبح الموضوع أكثر وضوحاً, تخيل معي أنك مهندسٌ إلكتروني وطُلب منك أن تُصمم آلة حاسبة, بالتأكيد ستقوم باستعمال نظام الـ(two’s complement ), لأن آلتك الحاسبة ستحتاج إلى أعداد موجبة وسالبة, بينما تخيل لو إنه طُلب منك أن تصمم ساعة إلكترونية, بالتأكيد ستتعامل مع الأعداد الثنائية الموجبة فقط, ومن هنا يكمن الفرق…

Advertisements
 
تعليق واحد

Posted by في 2011/10/21 in حاسوب

 

مقدمة فى برمجة الحاسبات (Computer Programming)

مقدمة فى برمجة الحاسبات (Computer Programming)

1. ما هو الحاسب الالــى ( الكمبيوتر)
2. مما يتكون الحاسب الالـى
§ وحدة إدخال البيانات (Input Unit)
§ وحدة معالجـة البيانات (Processing Unit)
§ وحدة إخراج البيانات (Output Unit)
§ وحدة الذاكــرة الرئيسية المؤقتة (Main Memory Unit)
§ وحدة الحساب والمنطق (Arithmetic And Logical Unit )
§ وحدة تخزين البيانات (Secondary Storage Unit) 
3. كيف يعمل الحاسب الألى
§ ماذا يعنى مصطلح (Hardware)
§ ماذا يعنى مصطلح (Software)
§ أنظمــة تشغيل الحاسب الألى وكيف تتطورت.
4. ما ذا يعنى تطوير برنامج حاسب الى (Computer Program)
1- لغــة الألــة (Machine Language)
 2- لغة الرموز (Assembly Language)
3- اللغات الراقية (High Level Languages)
5.ما هى المراحل التى يمر بها البرنامج قبل ان يكون جاهزاً للعمل.
  1- مرحلة كتابة وتحرير البرنامج (Editing)
  2- مرحلة تحويل البرنامج إلى أوامر يفهمها الحاسب (Compilation)
  3- مرحلة ربط البرنامج بما يحتاجه من أوامر ووظائف خارجية (Linking)
 -4 مرحلة تحميل البرنامج إلى الذاكرة الرئيسية لتنفيذه (Loading)
  5-مرحلة تنفيذ اوامرالبرنامج فعلياً. (Execution)

1. ما هو الحاسب الالــى ( الكمبيوتر)    [1]

الحاسب الالـى هو جهاز متطور صُمم ليساعد الأنسان فى أداء العمليات الحسابية والمنطقيــة المعقدة والتى تحتاج إلى وقت طويل ومجهود كبير لإنجازها. ليس معنى ذلك ان الإنسان لا يستطيع ان يؤدى المهام التى يؤديها الحاسب بل ان الصحيح ان الحاسب دون علم الانسان وخبرته ليس له قيمة. ولكن الحاسب لديه سرعة جبارة فى اداء المهام التى يسندها اليه الانسان , حيث ان سرعة الحاسب تقدر بملايين أضعاف سرعة الانسان. لذلك كان استخدام الحاسب ضرورياً لتوفير الوقت والجهد والتكاليف.وتتلخص طبيعة عمل الحاسب فى انه يقوم بمعالجة البيانات التى يدخلها الإنسان إليـه من مصادر متعددة وفى صور مختلفة وهو ما يطلق عليه فى علم الحاسب (Data) إلى معلومات قيمة ومفيده وهو ما يطلق عليه فى علم الحاسب (Information) مع إمكانية حفظ وتخزين كم هائل من هذه البيانات او المعلومات. فمثلاً لو اردنا ان نجعل الحاسب يقوم بعملية حسابية مثل الجمع أو الضرب او ما شابه من العمليات المعروفة , توجب علينا أولاً ان نعطيه أطراف العمليه الحسابيه ثم نبين له كيف سيقوم بحساب هذه العملية ثم نوجهه الى كيفية انتفاعنا بالناتج من هذه العملية (هل نريده ان يعرض لنا هذا الناتج على الشاشة ام نريده ان يطبعها لنا على ورقة ام نريده ان يحفظ النتيجة لحين إستغلالها فى وقت أخر). وهنا يجب ان نوضح بعض المصطلحات التى يستخدمها محترفى الحاسب الالى مثل :

1- البيانات (Data) هى كل ما يتم إدخاله الى الحاسب الألى ليقوم بتحويله الى شئ مفيد للمستخدم بعد معالجتها ببرامج الحاسب المختلفة. أو لغرض تخزينها فى صورة الكترونية يتم إستخدامها وتحويلها فيما بعد الى أشياء مهمة وذات قيمة . ويمكن تصورها كالمادة الخام التى دون معالجتها بالشكل الصحيح لا تمثل قيمة فى حد ذاتها. وللبيانات (Data) أشكال وصور مختلفة فممكن ان تكون البيانات نصوص أو ارقام وممكن ان تكون صوراً أو مقاطع فيديو وممكن ان تكون مادة صوتية وهكذا الى أخره من الصور المختلفة.
2- المعالجــة (Processing) وهو ما يتم على البيانات الخام المدخلة إلى الكمبيوتر من أجل تحويلها الى معلومات قيمة ومفيدة للمستخدم. وتتم معالجة البيانات بواسطة برامج الحاسب المختلفة والت صممت لتتعامل مع البيانات حسب طبيعتها و الصورة التى اُدخلت بها الى الحاسب.

3- المعلومات (Information) وهى الناتج المفيد القيم الذى تم انتاجه بعد معالجة البيانات الخام التى ادخلت الى الحاسب مسبقاً. وهذه المعلومات يمكن الاستفاده منها بالشكل الذى يرغبه المستخدم فمثلاً يمكن ان تكون معروضة على الشاشة وممكن ان تكون مطبوعة أو حتى من الممكن أن تكون مخزنة ومحفوظة لحين إستغلالها فى اى وقت.

مما يتكون الحاسب الالـى

تُقســم أجزاء ومكونات الحاسب منطقيا أو حسب طبيعة عملها الى ستة وحدات رئيسية وهى كالأتــى: 

1- وحدة إدخال البيانات (Input Unit)

وهى الوحدة المسئولة عن إستقبال البيانات مع إختلاف طبيعتها وصورها وتوصيلها إلى الوحدات الأخرى لتتم معالجتها. ويتم إستقبال البيانات من خلال أجهزة إدخال البيانات المناسبة لنوعية وصورة البيانات المدخلة الى الحاسب فمثلاً تستخدم لوحة المفاتيح (Key Board) إذا كانت البيانات المدخلة فى صورة نصوص أو أرقام, ويستخدم المايكروفون (MIC) إذا كانت البيانات فى صورة مادة صوتية . ويستخدم المصور الضوئى (Scanner) فى حالة إذا كانت البيانات فى صورة صور ضوئية أو صور ورقية. وهكذا كلما أختلفت نوعية البيانات يختلف الجهاز الذى يستخدم فى إدخالها إلى الحاسب. وكلما تطور الحاسب نجد ان هناك أجهزة إدخال جديدة ظهرت لتناسب الانواع المختلفة من البيانات.

2- وحدة الحساب والمنطق (Arithmetic and Logical Unit – ALU)

وهى الوحدة المسئولة عن إجراء العمليات الحسابية والمنطقية مثل عمليات الضرب ,القسمة,الجمع والطرح وغيرها من العمليات الحسابية المعروفة مع ذيادة تعقيدهـا. بالإضافة إلى مسئولية هذه الوحدة عن القرارات المنطقية مثل المقارنة بين عنصرين أو قيمتين وتحديد ما إذا كانو متساويين أم أن أحدهما أكبر من الأخر.

3- وحدة الذاكرة الرئيسية (Main Memory Unit)

وهى المكان الذى يتم فيه تخزين البيانات المدخلة عبر أجهزة إدخال البيانات بشكل مؤقت لحين معالجتها وإجراء العمليات الحسابية والمنطقية عليها. وايضاً تستخدم لتخزين المعلومات الناتجة من عملية المعالجة لحين إخراجها إلى المستخدم أو لحين تخزينها وحفظها بشكل دائم فى وحدات التخزين الدائمة (Secondary Storage). وتتميز هذه الذاكرة الرئيسية بأنها قليلة السعة إذا ما قورنت بوحدات التخزين الدائمة (Secondary Storage) ولكنها فى نفس الوقت سريعة جداً فى التخزين أو فى استرجاع البيانات والمعلومات المخزنة عليها. 

4- وحدة التخزين الدائم للبيانات (Secondary Storage Unit)
وتستخدم هذه الوحدة لتخزين البيانات والمعلومات بشكل دائم يُمكن من إستخدامها والاستفادة منها فى أى وقت لاحق. وتتميز هذه الوحدة التخزينية بالسعــة الضخمة التى تمكن من حفظ بلايين المعلومات وتنظيمها بالشكل المرغوب فيه ولمدد طويلة. كما تتميز أيضاً بتنوع أشكالها فمثلاً هناك ما يعرف بالهارد ديسك
 (Hard Desk) والذى يعتبر الصورة البديهية لوحدات التخزين الدائمة وعادة لا يخلو اى جهاز حاسب اّلى من هذه الوحدة وتتميز بسعتها الكبيرة جداً والتى لا تكف الشركات العاملة فى مجال تصنيعها عن زيادة أحجامها بشكل مستمر وسريع جداً. وهناك ما يعرف بالإسطوانات (Compact Drive – CD) التى تعتمد على تكنولوجيا الليز فى التسجيل عليها والقراءة منها. وهناك العديد من الأشكال الأخرى التى تُستخدم لحفظ البيانات والمعلومات بشكل ثابت يُمكن من نقلها من مكان إلى أخر.

5- وحدة التحكم المركزية (Central processing Unit – CPU )

تعتبر هذه الوحدة هى المدير لجهاز الحاسب الالى وهى المنسق لعمل الوحدات الأخرى. يمكن ان تتخيل هذه الوحدة كما لوكانت مديراً لاوركسترا تعزف سيمفونية أو لحناً . فكلاً من العازفين يستطيع ان يعزف بمفرده ولكن لن يؤدى هذا الى لحن بديعاً او عملاً فنياً ذو قيمة, ولكن ستتزاحم الأصوات وتشُز النغمات. ولكن بوجود القائد ينتظم العمل وينتج إنتاجاً مفيداً ذو قيمة. وهكذا هو دور وحدة التحكم, فهى التى تأمر وحدة إدخال البيانات (Input Unit) بأن تأخذ مدخلات وان تحفظها فى الذاكرة الرئيسية (Main Memory) بل و تحدد لها فى أى مكان فى الذاكرة سيكون التخزين.وهى التى تأمر وحدة الحساب والمنطق(ALU) بأن تأخذ البيانات المخزنة فى الذاكرة الرئيسية فى أماكن محددة وأن تُجرى عليها عمليات حسابية أو منطقية معينة. وهى التى تأمر وحدة إخراج البيانات(Output Unit) بإخراج النتائج والمعلومات الى المستخدم فى الصورة التى يرغبها المستخدم , وهى التى تقوم بحفظ الملفات والمعلومات بشكل دائم على وحدة التخزين الدائمة(Secondary Storage) وهى التى تستدعي هذه البيانات المخزنة مرة أخرى فى حالة الرغبة فى تعديلها أو إستغلالها فى غرض أخر. وهكذا فهى بالفعل العقل المدبر والمتحكم فى كل شئون الحاسب الالـى.
6- وحدة إخراج البيانات (Output Unit)

هذه الوحدة هى المسئولة عن إخراج المعلومات النهائية بعد ان تمت عليها عمليات المعالجة او مايسمى (Processing) . ويمكن ان تخرج هذه المعلومات فى صور مختلفة حسب رغبة المستخدم وحسب توفرأجهزة إخراج البيانات المناسبة (Output Devices). فمثلاً ممكن ان يكون إخراج البيانات فى صورة عرض على الشاشة او فى صورة طباعة على الطابعة او فى صورة رسومات على اجهزة الرسم الهندسى او غيرها من الاشكال المتعددة.

كيف يعمل الحاسب الألى

كما ذكرنا فى تعريفنا للحاسب الألى انه جهاز متطور صُمم ليساعد الأنسان فى أداء العمليات الحسابية والمنطقيــة المعقدة والتى تحتاج إلى وقت طويل ومجهود كبير لإنجازها. وكغيره من الأجهزة يتكون الحاسب الألى من مجموعة كبيرة من الأجزاء والوحدات التى تؤدى كل منها وظيفة ودور محددين. و يُطلق المتخصصين فى مجال الحاسب الألى على هذه الأجزاء مُجمعة مصطلح (Hardware). إذا فكلمة ال (Hardware) تعنى كل الاجزاء الاجهزة والمكونات الاساسية للحاسب الألى وتشمل على سبيل المثال لا الحصر (لوحة المفاتيح – المؤشر-جهاز قراءة الاسطوانات المدمجة- الشاشة – إلخ…) بالإضافة إلى الإجهزة الإضافية المكملة مثل (الطابعــة, السماعات, المايكروفون – إلخ …) .
ولكن كل هذه الأجهزة تحتاج الى أوامر لتشغيلها وحسن إستغلالها للوصول إلى الفائدة منها, فهى وحدها لاتمثل قيمة فى حد ذاتها لذا كان من الضرورى وجود برامج تشغيل لكل هذه الأجهزة. ويطلق المتخصصين فى مجال الحاسب الالى على هذه البرامج مصطلح (Software). إذاً فكلمة (Software) تعنى كل البرامج والاوامر التى تستخدم لتشغيل أجزاء ومكونات الحاسب وايضاً تشمل البرامج التى تعمل على معالجة البيانات المدخلة للحصول على نتائج ومعلومات مفيدة للمستخدم.
 أنظمـة تشغيل الحاسبات وكيف تتطورت
 كما اتضح لنا ان اجزاء ومكونات الحاسب الالى المختلفة الـ (Hardware) لاتعمل بمفردها ولكن تحتاج الى اوامر وبرامج لتديرها وتوظفها كما ينبغى. ولم تكن الحاسبات الالية بهذا التطور والقوة التى عليها الان فقد كانت متواضعة السرعة والسعة التخزينية وكانت تستطيع ان تؤدى وظيفة واحدة فى الوقت الواحد. بمعنى انك لو أردت ان تؤدى اكثر من عمليه حسابية مثلاً فإنه يستلزم عليك ان تأخذ دورك وتنتظر حتى يفرغ الحاسب من أداء المهمة التى شرع فيها وهكذا. لذلك كان الناس يأتون بما يريدون تنفيذه من مهام ويسلمونها للشخص المسئول عن تشغيل الحاسب والذى عادة ما يطلق عليه الـ (Computer Operator) والذى بدوره يدخل البيانات الخاصة بكل عملية إلى الحاسب الالى فى دورها بعد انتهاء الحاسب من أداء المهمة الحالية. فتخيل كيف كانت صعوبة الامر إذا اردت ان تنفذ عشرات او مئات المهام. بمرورالوقت أتضح ان إعتمادنا على العنصر البشرى الـ (Computer Operator) فى الأنتقال بين المهام التى يقوم بأداءها الحاسب الالى قد يضيع الكثير من الوقت فبدأ إشتغال العلماء بأن يعتمدوا على برنامج يقوم هو بإدارة عملية تنفيذ المهام وأطلقوا عليه إسم نظام التشغيل (Operating System) . ويمكننا تعريف نظام التشغيل (Operating System) على انه نظام اّلى(Software) لإدارة كل شئون الحاسب الالى مثل تنفيذ البرامج والاوامـر والتنسيق بين المهام لضمان استمرار عمل الحاسب بشكل منتظم ومحكم.
 تطوير برامج الحاسب الألــى 

برامج الحاسب الالى هى عبارة عن مجموعة مسلسلة من الاوامر التى يقوم الحاسب بتنفيذها لأداء مهمة أو أكثر. عادة مايكون هناك بيانات مدخلة للبرنامج ليقوم بمعالجتها وإخراج معلومات ونتائج ذات قيمة لمستخدم هذا البرنامج.

كيف يتم كتابة برامج الحاسب الالى 

يتم كتابة برامج الحاسب الالى بإستخدام لغات البرمجة (Programming languages) والتى هى عبارة عن مجموعة كبيرة من الاوامر والجمل التى يستخدمها المبرمج او مطور البرنامج للتعبيرعن الاشياء والمهام التى يطلب من الحاسب تنفيذها. فهى كأى لغة بها كلمات وجمل يستخدمها مجموعة من البشر للتواصل بينهم وللتعبير عن كل ما يحتاجه أحدهم من الاخر. وقد مرت لغات البرمجة بعدة مراحل حتى تصل إلى المستوى الراقى الذى هى عليه الأن. وسنسرد أهم هذه المراحل فيما يلى :

لغة الألــة (Machine Language) 

وهى اللغة التى يفهما الحاسب الالى وينفذها مباشرة عن طريقة وحدة التحكم المركزية الخاصة به او ما يسمـى (Central Processing Unit ). وهى مرتبطة فى شكل ومعنى أوامرها بنوع الحاسب الذىستنفذ عليه هذه الاوامر بمعنى ان لكل نوع من انواع الحواسب لغة الة خاصة به لان هذه اللغات عادة ما يضع قواعدها واوامرها مصنعوا أجهزة الحاسب انفسهم.واوامر لغة الالة فى طبيعتها عبارة عن نصوص رقمية تتكون من رقمين 1 , 0 وهى الشكل الذى تفهمه اجزاء الحاسب وتخاطب بعضها بإستخدامه. وبما ان الحاسب لايفهم إلا لغة الالة المكونة من 1 , 0 توجب على مطور البرامج إستخدام نفس اللغة ليخبرالحاسب بما يريده وهو ما كان امراً فى غاية المشقة وهو ما جعل عدد المطورين للبرامج قليل جداً وبالتالى عدد البرامج الحاسوبية المطورة قليل جداً. 

لغـة الرمـوز (Assembly Languages) 

نتيجة لصعوبة التعامل بلغة الالـة (Machine Language) إتجه مطوروا البرامج الى تسهيل مهتهم فى التعامل مع الحاسب فبدلاً من إستخدام الأوامر الصعبة المكونة من 1 , 0 بدأو فى استخدام إختصارات إنجليزية سهلة للتعبير عن الاوامر الصعبة فى لغة الالـة وبعد كتابة البرنامج بإستخدام هذه الاختصارات والرموز يقوم برنامج أخر بعمل المترجم فيقوم بفك هذه الرموز وتحويل هذه الاختصارات الى لغـة الالة حتى يفهمهاالحاسب. ويطلق على هذا البرنامج المترجم (Assembler) . ونتيجة لهذا التقدم الكبير نسبياً فى هذا الوقت تطورت صناعة البرمجيات شيئاً فشيئاً لكنها ما زالت مهنة شاقة وبها الكثير من ضياع الوقت حيث انه كان يستلزم لتنفيذ مهمة واحدة كتابة الكثير من الأوامر فى صورة عدد كبير من الخطوات.

اللغات الراقيــة (High Level Languages)  

بمرور الوقت اصبح طموح مطورى البرامج يتعدى كل ما انجزوه وبدأو فى تطوير لغات برمجة تشبه اللغة التى يتحاورون بها فى حياتهم العادية وهو ما أطلق عليه مصطلح(High Level Languages) وتتميز هذه اللغات بأنها سهلة الإتقان وتستطيع بإستخدام جملة واحدة تنفيذ الكثير من الأوامر مما ادى بإستخدامها إلى زيادة الإنتاج من البرامج والتطبيقات التى يحتاجها الناس فى حياتهم اليومية. ولكن كما اتفقنامسبقاً ان الحاسب لا يفهم إلا لغة الالــة, لذا لابد من وجود مترجم يحول الجمل والاوامر المكتوبة بهذه اللغات الراقية الى لغة الالــة. ويطلق على هذا الببرنام المترجم (Compiler). وسوف نتعامل فى هذه السلسلة من المقالات مع لغة ال (C) كمثال للغات الراقيـة.

ما هى المراحل التى يمر بها البرنامج قبل ان يكون جاهزاً للتنفيذ

1- مرحلة كتابة وتحرير البرنامج (Editing)

يمر البرنامج بعدة مراحل قبل ان يكون جاهزاً للتنفيذ بداية بمرحلـة كتابة البرنامج او ما يطلق عليها مرحلة التحرير للبرنامج (Editing) وعادة ما تتم هذه المرحلة بإستخدام برامج تحريرمخصصة لكتابة البرامج والتطبيقات بلغة برمجة معينة وتسمى (Editors) وعادة ما تكون هذه البرامج مجهزة بالعديد من الوسائل المساعدة التى تجعل مرحلة الكتابة سهلة وشبه نمطية وخالية من الاخطاء النصية فى اوامر لغة البرمجة المستخدمة وهو ما يُطلق عليه (Syntax Errors). وهذه المساعدات بدورها تجعل المبرمج يصرف اهتمامه الى التفكير فى وضع الحل المناسب للمشكلة التى من أجلها كتب البرنامج دون الانشغال بأعمال التنسيق.
2- مرحلة تحويل البرنامج إلى أوامر يفهمها الحاسب (Compilation)
بعد الانتهاء من كتابة البرنامج والتأكد من سلامته من الأخطاء النصية للاوامر والجمل, يتم تحويل البرنامج الى اللغة التى يفهما الحاسب الالى او ما يسمى بلغـة الالـة (Machine Language) لانه كما ذكرنا مسبقاً ان اللغات الراقية (High Level Languages) التى يُكتب بها البرامج هى لغات لا يفهما الحاسب الالى وإنما تُستخدم لتسهيل كتابة البرامج . ويقوم بدور الترجمة والتحويل الى لغة الالــة برنامج يسمى (Compiler).

3- مرحلة ربط البرنامج بما يحتاجه من أوامر و وظائف خارجية (Linking)

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

4-مرحلة تحميل البرنامج إلى الذاكرة الرئيسية لتنفيذه (Loading)

بعد ترجمة البرنامج من لغات البرمجة الراقية (High Level Languages) الى لغة الالة التى يفهمها الحاسب وبعد تجهيزالبرنامج بكل ما يحتاج اليه من اوامر ووظائف خارجية, اصبح البرنامج جاهزاً للتنفيذ ولكن حتى يتسنى لوحدة التحكم المركزية او ما يطلق عليه ال (Centeral Processing Unit) لابد من تحميله من وحدة التخزين الدائمــة (Secondary Storage) إلـى وحدة الذاكرة الرئيسية القريبة من وحدة المعالجة حتى يتم التنفيذ بسرعة.

5-مرحلة تنفيذ أوامر البرنامج فعلياً (Execution)

وهى المرحلة النهائية وفيها يتم تنفيذ اوامر البرنامج بالترتيب واحداً تلو الاخر حتى الانتهاء منها جميعاً وخلال هذه المرحلة يقوم المعالج او ما يسمى بالـ (Processor) بتوجيه وحدات الادخال الى استقبال البيانات اللازمة من المستخدم من خلال أجهزة الإدخال, ويوجه وحدات الاخراج الى اخراج المعلومات الى المستخدم عبر اجهزة الإخراج المناسبة وهكذا حتى ينتهى البرنامج.

 

المراجِع
C How To Program 5th Edition ISBN: 0132404168 © 2007, pp. 1112 by Deitel
http://www.deitel.com/Books/C/CHowtoProgram5e/tabid/1704/Default.aspx

 
أضف تعليق

Posted by في 2011/10/21 in حاسوب