تعلم البرمجة بلغة C للمبتدئين : 6 الحسابات الاساسية و انشاء برنامج آلة حاسبة

Header Ads

تعلم البرمجة بلغة C للمبتدئين : 6 الحسابات الاساسية و انشاء برنامج آلة حاسبة

لو انكم تتذكرون معي في المقدمة للدورة لقد قلت لكم ان الكمبيوتر هو مجرد آلة حاسبة كبيرة , ان كنت تسمع الموسيقى , تشاهد فيلم او تلعب العاب فيديو الكمبيوتر في هذه الاثناء يقوم بعمليات حسابات لا اكثر .
في هذا الفصل السادس من دورة تعلم البرمجة بلغة C , سوف نتعلم اغلب الحسابات التي بامكان جهاز الكمبيوتر القيام بها , و سوف نستعمل كل ما تعلمناه الى حد الان من الدروس السابقة لانشاء برنامج او تصميم آلة حاسبية بسيطة  .
تعلم البرمجة بلغة C للمبتدئين : 6 الحسابات الاساسية و انشاء برنامج  آلة حاسبة

الفكرة الاساسية من هذا الطور هي اجراء عمليات حسابية باستعمال المتغيرات , مثل اضافة متغيرات في ما بينها , مضاعفتها , تسجيل البيانات في متغيرات اخرى و هكذا .

الحسابات الأساسية

حتى و ان كان الجزء الاول من الدرس ممل بالنسبة لكم , لكنه ضروري للفهم السليم و عليك التركيز جيدا تابع معي 😉 .

عليكم معرفة شئ اخر بالاضافة الى ان الكمبيوتر هو مجرد آلة حاسبة كبيرة هو في نفس الوقت آلة حاسبة بدائية 😔 ,  حيث انه لا يستطيع القيام الا بحسابات اولية مثل :
* الجمع 
* الطرح
* الضرب 
* القسمة 
* Modulo ( لم اجد لها ترجمة بالعربية لكنني سوف اساعدكم للتعرف عليها ان كنتم لا تعلمون ما هي )

لو انكك تريد القيام بحسابات رياضية معقدة على الكمبيوتر ( مثل معادلات , الاس , الجدر .. الخ ) يجب عليك برمجتها , بمعنى يجب ان تشرح للكمبيوتر كيف يقوم بها .
مع لغة البرمجة C توجد دالة ( functions ) رياضية جاهزة لن تطر الى اختراعها ( هنالك من قام بالعمل مكانك و حضر لك ما تحتاجه احمد الله على هذا 😄 ) .

عملية الجمع 

فل نرى مع بعضنا كيف يمكن استعمال عملية الجمع .
لاستعمال عملية الجمع سوف نستعمل رمز زائد + ( نعم انا لا امزح 😇 )
يجب ان تضع نتيجة الحساب في متغير , ادا سوف نقوم بانشاء متغير مثلا result ( الترجمة الحرفية لكلمة نتيجة بالانجليزية ) , و نجعلها من نوع int و نقوم بعملية حسابية في الجمع كالتالي : 


اعتقد ان التعرف على النتيجة سهل و اي شخص يمكن معرفة ان قيمة المتغير result بعد تشغيل البرنامج هذا هي رقم 8 .
طبعا ان قمت بتشغيل البرنامج على هذا الشكل لن يظهر شئ على الشاشة , ان اردت ان ترى قيمة المتغير result على الشاشة يجب ان تضيف printf , مثل ما تعلمناه في الدروس السابقة على هذا الشكل :


حين تستعمل الكود كامل بمعنى تضع الاسطر الاولة # و البقية مثل ما صرنا نعرف سوف تحصل على النتيجة في الشاشة 
ان وجدت النتيجة 0 فانت قمت بحدف العملية الحسابية و وضعت مكانها  printf , نعم اعلم ان الكثير لا يزال يعاني رغم كل هذه الشروحات المفصلة 😔 .
نحن نعطي قيمة 0 للمتغير result في السطر 
;int result = 0
بعدها نقوم بالعملية الحسابية في السطر 
;result = 5 + 3
و في الاخير نضيف  printf لكي تظهر لنا النتيجة حين تشغيل البرنامج في السطر 
;(printf ("5 + 2 = %d", result 

ادا برنامجنا يكون كالتالي :


و النتيجة التي سوف تظهر حين تشغيل البرنامج من زر build and run هي :



نعم 8 هنا قام الكمبيوتر بالعملية الحسابية لوحده و باستعمال printf  اظهرها لنا على الشاشة , بقية الكتابة في البرنامج غير مهمة مثل ما شرحنا في السابق هي تعطيك معلومات مثل الوقت الذي استغرقة البرنامج في الاشتغال و تطلب منك النقر على زر في لوحة المفاتيح لغلق البرنامج .

هذا كل شئ بالنسبة لعملية الجمع , بقية العمليات الحسابية هي نفس الشئ , فقط الرمز يتغير , اليك جدول الرموز المستعملة في كل العمليات الحسابية في لغة البرمجة C : 


لا توجد صعوبة تذكر لهذه العمليات الحسابية , الا في العمليتين الاخخيرتين ( القسمة و ال modulo ) , علينا الشرح اكثر في هذه العمليتين بالذات تابع معي 

عملية القسمة 

القسمة تشتغل بطريقة طبيعة حين لا يكون فيها الباقي , مثلا 6 / 3 تساوي 2 , اذا قمت بهذه العملية في برنامجك سوف تحصل على النتيجة الصحيحة لا مشكلة تذكر حتى الان .

الان نقوم بعملية قسمى فيها ما بعد الفاصلة اي فيها الباقي , مثلا 5 / 2 النتيجة الطبيعية هي 2.5 , لكن في برنامجك شاهد ما سوف يحدث حين تستعمل الكود بهذه العملية مثل كود عملية الجمع باستخدام اشارة التقسيم :


النتيجة سوف تكون كالتالي : 


هنا عندنا مشكلة كبيرة , طلبنا من الكمبيوتر حساب 5 / 2 و كنا ننتضر ان نحصل على النتيجة 2.5 , لكن الجهاز يعطينا 2 😑 .
هل جهازنا غبي الى هذه الدرجة ؟ 
الحقيقة هي ان جهازك حين يرى الارقام 5 و 2 هو يقوم بعملية تقسيم للاعداد الكاملة التي تسمى  : 
خوارزمية تقسيم ( Euclidean division ) 
حيث انه يقتطع النتيجة و لا يبقي الا على الاعداد الكاملة ( في المثال 2 ) 

قد يقول احدكم : انا اعلم ما هو السبب , مثل ما تعلمناه في الدروس السابقة int للاعداد الكاملة لو ان المتغير result كان يستعمل double سوف يتمكن من تخزين الاعداد العشرية ! 

شكرا على المتابعة الجيدة ياصديقي ( هذا ان انتبه لها احدكم 😒 و طرح على نفسه هذا الحل الشئ الذي اشك فيه كثيرا 😂 ) .

الحقيقة ان هذا ليس هو السبب  الوحيد , حتى و ان قمت باستخدام double مع المتغير result سوف ترى بنفسك ان النتيجة تبقى 2 , هذا راجع الى ان الاعداد في العملية نفسها هي اعداد كاملة فتلقائيا الكمبيوتر يجيبك باعداد كاملة .

ان اردنا من الكمبيوتر ان يعطينا الجواب الصحيح في هذه العملية بالذات يجب علينا تحويل الاعداد المستعملة فيها من كاملة الى عشرية , بمعنى نكتبها كالتالي : 5.0 و 2.0 ( مثل ما قلنا في السابق لغة البرمجة C لا نستعمل الفاصلة بل النقطة )

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


النتيجة التي تحصل عليها هي : 


في هذه الحالة النتيجة صحيحة , حتى و ان اظهر لنا الكثير من الاصفار في الاخير ( فاليفعل ما يشاء ) لا يهمنا لان الصفر في الاخير بعد الفاصلة لا يحتسب . 

هذه الخاصية من قسمة عدد كامل مهمة جدا , يجب ان تحفظها جيدا لان بالنسبة للكمبيوتر عمليات حسابية مثل :
5 / 2 = 2
10 / 3 = 3 
4 / 5 = 0 
هي اعداد كاملة , الامر محير لكنها طبيعته مع مثل هذه الاعداد .

لو انك تريد الحصول على النتائج الصحيحة في برنامجك يجب ان تحولها الى اعداد عشرية مثل :
5.0 / 2.0 = 2.5
10.0 / 3.0 = 3.33333
4.0 / 5.0 = 0.8

في الحقيقة حين تقوم بعملية 5 / 2 جهازك يُجيب على السؤال التالي :
كم يوجد من 2 في 5 ؟ 
الاجابة هي مرتين بمعنى 2 .
ايضا مع العملية الاخرى كم من 3 موجودة في 10 ؟ الجواب هو ثلاث مرات اي انه يظهر لك 3 في النتيجة .

السؤال يطرح نفسه كيف نفعل للحصول على الباقي فقط ؟ هنا يدخل دور عملية Modulo 

عملية Modulo

المودولو "Modulo" هي عملية حسابية تعطيك ما تبقى من التقسيم , ربما انت لم تستعملها من قبل , او انك لم تسمع بها ابدا لكن بالنسبة للكمبيوتر هي عملية حسابية اساسية مثل العمليات الاربعة الاخرى , و يسعملها خصوصا في حل الاشكالية التي وقعنا بها ليجيب عن السؤال المطروح .

مثل ما هو موضح في الجدول رمز ال  modulo هو % و هذه بعض الامثلة لعمليات تستعمله : 
5 % 2 = 1
14 % 3 = 2
4 % 2 = 0

modulo العملية  5 % 2 هو باقي عملية القسمة 5 تقسيم  2 , بمعنى نحصل على 1 .
الكمبيوتر يحسب كالتالي 5  =  2 * 2 + 1 ( 1 هو ما يعطيك اياه الكمبيوتر اي باقي القسمة ) 
مثلا 14 % 3 حسابها هو 14 = 3 * 4 + 2 ( modulo العملية الحسابية هو رقم 2 ) 
و اخر مثال هو في حالة 4 % 2 هنا التقسيم يكون صحيح ادا لا يوجد باقي في هذه الحالة نتيجة ال modulo تكون 0 .
هذا كل ما يخص عملية حساب ال modulo لا يوجد اي شئ صعب فيها .

و اخيرا انتهينا من دروس الرياضيات 😃 , لن اقوم بازعاجك اكثر من هذا القدر لقد تطرقنا الى جميع الاساسيات في الحساب .

حسابات بين المتغيرات و انشاء الة حسابية

الان ما يمكن أن يكون مثيرة للاهتمام بعد ان تعلمت العمليات الحسابية الخمسة التي يعرفها الكمبيوتر هو ان تتدرب على عمليات حسابية بين عدة متغيرات فيما بينها .

لا شئ يمنعنا من القيام بمايلي : 


number تعني عدد , هذا السطر في الكود يقوم بجمع المتغيرات  number1 و number2 و يخزن النتيجة في المتغير result .

و هنا تبداء الامور المشوقة و التي يجب ان تنال اهتمامك , هل تعلم ما يمكنك فعله الان ؟ 
انت قادر على انشاء الة حاسبة صغيرة , نعم انا لا امزح انت الان تمتلك المستوى لبرمجة او انشاء برنامج الة حاسبة بسيطة 😎 .

تخيل معي برنامج يطلب من المستخدم ادخال عددين , هذين العددين تقوم بتخزينهما في متغيرين .
بعدها تقوم بعملية حسابية لهذين المتغيرين , ثم تقوم بتخزين النتيجة في متغير نسميه result , لا يتبقى عليك الا اظهار النتيجة على الشاشة , لينبهر المستخدم ( صديقك 😄 ) الذي لم يكن ليجد الحل بطريقة اخرى الا عبر برنامجك الرائع ( الذي هو في الحقيقة مجرد الة حاسبة بدائية , لكنه من اول برامجك التي تصنعها بنفسك ادا هو حتما برنامج رائع 😍 ) . 

جرب القيام بذالك لوحدك قبل ان اعرض عليك source code الالة الحاسبة و خمن كيف سوف يكون مع كل المعارف التي جمعنها الى الان  سوف تكون مراجعة جيدة لجميع الدروس .

الكود "source code" هو كالتالي : 


شاهد كيف يعمل البرنامج بعد التشغيل 


ادا سوف نحصل على هذا الشكل النهائي من برنامجنا بعد ان يدخل المستعمل الاعداد 5 و 3 ( مثلا ) 


نعم هذا اول برنامج لنا في الدورة لديه حقا نفع و فائدة 💪 , برنامجنا هذا قادر على جمع عددين و اظهار النتيجة للمستخدم .
يمكنك التجربة على اي اعداد ( في حين لا تتخطى امكانيات نوع int ) , جهازك يمكنه الحساب بسرعة البرق , عادي جدا لان حسابات مثل التي يطلبها منه برنامجك يقوم بمليارات من امثالها في الثانية دون ان يشعر بالتعب .

نصيحتي هي ان تتدرب على باقي العمليات الحسابية ( الضرب , الطرح ... الخ ) و تكتب الكود بنفسك لتتعلم من كثرة الممارسة , لن يكون الامر صعب فقط تغير الرمز .
يمكنك ايضا اضافة متغير ثالث مثلا number3 , و تقوم بعملية جمع او طرح ثلاث اعداد في نفس الوقت لن يكون هنالك اي مشكلة جهازك قادر على القيام بذالك بسهولة كبيرة .


الى هنا نكون قد انتهينا من الجزء الاول للدرس السادس في الدروة , ارجوا ان ينال اعجابكم و اهم شئ هو ان يكون مفهوم للجميع تابعونا سوف نتعلم المزيد من الامور الشيقة في البرمجة .

ليست هناك تعليقات